roadmodel 0.2.72__tar.gz → 0.2.73__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {roadmodel-0.2.72 → roadmodel-0.2.73}/PKG-INFO +1 -1
- {roadmodel-0.2.72/roadmodel/data → roadmodel-0.2.73/docs}/catalog.json +1 -1
- {roadmodel-0.2.72 → roadmodel-0.2.73}/pyproject.toml +1 -1
- {roadmodel-0.2.72/docs → roadmodel-0.2.73/roadmodel/data}/catalog.json +1 -1
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/__init__.py +1 -1
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/recommend.py +8 -2
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/scoring.py +8 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/.gitignore +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/LICENSE +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/NOTICE +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/README.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/docs/benchmarks.json +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/docs/context-windows.json +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/docs/model-selector.txt +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/docs/model-tier-cost-scale.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/docs/settings-display.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/docs/templates/phase-roadmap-template.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/docs/templates/planning-kit-how-to-use.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/docs/templates/project-roadmap-template.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/docs/templates/prompt-phase-roadmap.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/docs/templates/prompt-project-roadmap.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/docs/user-context.example.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/hatch_build.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/infra/README.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/infra/gcp-killswitch/README.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/infra/supabase/README.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/roadmodel/data/benchmarks.json +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/roadmodel/data/context-windows.json +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/roadmodel/data/model-selector.txt +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/roadmodel/data/model-tier-cost-scale.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/roadmodel/data/phase-roadmap-template.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/roadmodel/data/planning-kit-how-to-use.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/roadmodel/data/project-roadmap-template.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/roadmodel/data/prompt-phase-roadmap.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/roadmodel/data/prompt-project-roadmap.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/roadmodel/data/settings-display.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/roadmodel/data/user-context.example.md +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/scripts/agent_context.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/scripts/agent_rules.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/scripts/update_projects.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/scripts/updater_lock.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/scripts/upgrade_fleet.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/scripts/worktree_memory.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/__main__.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/cli.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/config.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/cost.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/errors.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/mcp_server.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/providers/__init__.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/providers/anthropic.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/providers/google.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/providers/openai.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/providers/openai_compatible.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/providers/registry.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/usage.py +0 -0
- {roadmodel-0.2.72 → roadmodel-0.2.73}/src/roadmodel/user_context.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: roadmodel
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.73
|
|
4
4
|
Summary: BYO-key CLI that recommends the right AI model, platform, and settings for a prompt.
|
|
5
5
|
Project-URL: Homepage, https://roadmodel.ai
|
|
6
6
|
Project-URL: Repository, https://github.com/nathanramoscfa/roadmodel
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "4",
|
|
3
3
|
"output_contract_version": 2,
|
|
4
|
-
"generated_at_utc": "2026-10-
|
|
4
|
+
"generated_at_utc": "2026-10-07T19:13:30Z",
|
|
5
5
|
"source_doc_sha256": {
|
|
6
6
|
"model-selector.txt": "6a75e2265459fa7302cb80d0faf5ec2aad575034fc29866238cd1579c001cc2d",
|
|
7
7
|
"model-tier-cost-scale.md": "2b3b0eb82237eb5cb5bf468a3fe971bcaf0160ad7d0bc700698d2c16640bc41d"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "4",
|
|
3
3
|
"output_contract_version": 2,
|
|
4
|
-
"generated_at_utc": "2026-10-
|
|
4
|
+
"generated_at_utc": "2026-10-07T19:13:30Z",
|
|
5
5
|
"source_doc_sha256": {
|
|
6
6
|
"model-selector.txt": "6a75e2265459fa7302cb80d0faf5ec2aad575034fc29866238cd1579c001cc2d",
|
|
7
7
|
"model-tier-cost-scale.md": "2b3b0eb82237eb5cb5bf468a3fe971bcaf0160ad7d0bc700698d2c16640bc41d"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# src/roadmodel/__init__.py
|
|
2
|
-
__version__ = "0.2.
|
|
2
|
+
__version__ = "0.2.73"
|
|
@@ -1487,12 +1487,18 @@ def _fit_row_to_input(
|
|
|
1487
1487
|
"""The row with every model whose context window cannot hold the task's
|
|
1488
1488
|
material left out (scoring.too_small_for), and what the check found. The
|
|
1489
1489
|
table is computed before the engine reads the task, so the row is
|
|
1490
|
-
recomputed here when a model its frontier draws on is too small
|
|
1491
|
-
|
|
1490
|
+
recomputed here when a model its frontier draws on is too small. When the
|
|
1491
|
+
material is larger than every known window, or none left fits, the row
|
|
1492
|
+
stands and ``fits`` says so."""
|
|
1492
1493
|
small = set(scoring.too_small_for(input_tokens))
|
|
1493
1494
|
drawn = {p.candidate.model_id for p in [*row.frontier, *row.points]}
|
|
1494
1495
|
excluded = sorted(small & drawn)
|
|
1495
1496
|
report: dict[str, Any] = {"input_tokens": input_tokens, "excluded": excluded, "fits": True}
|
|
1497
|
+
if scoring.nothing_fits(input_tokens):
|
|
1498
|
+
# Larger than every known window: no pick holds it, and one whose
|
|
1499
|
+
# window is unknown would stand only by default.
|
|
1500
|
+
report["fits"] = False
|
|
1501
|
+
return row, report
|
|
1496
1502
|
if not excluded:
|
|
1497
1503
|
return row, report
|
|
1498
1504
|
refit = scoring.ladder(
|
|
@@ -330,6 +330,14 @@ def context_windows() -> dict[str, int]:
|
|
|
330
330
|
return {str(k): v for k, v in models.items() if isinstance(v, int) and v > 0}
|
|
331
331
|
|
|
332
332
|
|
|
333
|
+
def nothing_fits(input_tokens: int, windows: dict[str, int] | None = None) -> bool:
|
|
334
|
+
"""True when no model with a known context window can hold
|
|
335
|
+
``input_tokens`` of material: the material is larger than any model
|
|
336
|
+
takes, and a model whose window is unknown is no answer."""
|
|
337
|
+
known = windows if windows is not None else context_windows()
|
|
338
|
+
return bool(known) and len(too_small_for(input_tokens, known)) == len(known)
|
|
339
|
+
|
|
340
|
+
|
|
333
341
|
def too_small_for(input_tokens: int, windows: dict[str, int] | None = None) -> list[str]:
|
|
334
342
|
"""The catalog ids whose context window cannot hold ``input_tokens`` of
|
|
335
343
|
material with CONTEXT_HEADROOM to spare. A model with no known window is
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|