code-aide 1.12.2__tar.gz → 1.12.3__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.
Files changed (50) hide show
  1. {code_aide-1.12.2 → code_aide-1.12.3}/PKG-INFO +1 -1
  2. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/__init__.py +1 -1
  3. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/config.py +17 -5
  4. {code_aide-1.12.2 → code_aide-1.12.3}/.github/workflows/ci.yml +0 -0
  5. {code_aide-1.12.2 → code_aide-1.12.3}/.github/workflows/publish.yml +0 -0
  6. {code_aide-1.12.2 → code_aide-1.12.3}/.gitignore +0 -0
  7. {code_aide-1.12.2 → code_aide-1.12.3}/.gitlab-ci.yml +0 -0
  8. {code_aide-1.12.2 → code_aide-1.12.3}/.pre-commit-config.yaml +0 -0
  9. {code_aide-1.12.2 → code_aide-1.12.3}/AGENTS.md +0 -0
  10. {code_aide-1.12.2 → code_aide-1.12.3}/CLAUDE.md +0 -0
  11. {code_aide-1.12.2 → code_aide-1.12.3}/LICENSE +0 -0
  12. {code_aide-1.12.2 → code_aide-1.12.3}/README.md +0 -0
  13. {code_aide-1.12.2 → code_aide-1.12.3}/TODO.md +0 -0
  14. {code_aide-1.12.2 → code_aide-1.12.3}/pyproject.toml +0 -0
  15. {code_aide-1.12.2 → code_aide-1.12.3}/script-archive/README.md +0 -0
  16. {code_aide-1.12.2 → code_aide-1.12.3}/script-archive/amp-install.sh +0 -0
  17. {code_aide-1.12.2 → code_aide-1.12.3}/script-archive/claude-install.sh +0 -0
  18. {code_aide-1.12.2 → code_aide-1.12.3}/script-archive/cursor-install.sh +0 -0
  19. {code_aide-1.12.2 → code_aide-1.12.3}/specs/auto-migrate-deprecated-installs.md +0 -0
  20. {code_aide-1.12.2 → code_aide-1.12.3}/specs/claude-native-installer-migration.md +0 -0
  21. {code_aide-1.12.2 → code_aide-1.12.3}/specs/missing-coding-llm-cli-tools.md +0 -0
  22. {code_aide-1.12.2 → code_aide-1.12.3}/specs/pre-commit-uv-setup.md +0 -0
  23. {code_aide-1.12.2 → code_aide-1.12.3}/specs/remove-bundled-version-baseline.md +0 -0
  24. {code_aide-1.12.2 → code_aide-1.12.3}/specs/unify-upgrade-eligibility-with-shared-evaluator.md +0 -0
  25. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/__main__.py +0 -0
  26. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/commands_actions.py +0 -0
  27. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/commands_tools.py +0 -0
  28. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/console.py +0 -0
  29. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/constants.py +0 -0
  30. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/data/tools.json +0 -0
  31. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/detection.py +0 -0
  32. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/entry.py +0 -0
  33. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/install.py +0 -0
  34. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/install_types.py +0 -0
  35. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/operations.py +0 -0
  36. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/prereqs.py +0 -0
  37. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/status.py +0 -0
  38. {code_aide-1.12.2 → code_aide-1.12.3}/src/code_aide/versions.py +0 -0
  39. {code_aide-1.12.2 → code_aide-1.12.3}/tests/test_commands_actions.py +0 -0
  40. {code_aide-1.12.2 → code_aide-1.12.3}/tests/test_commands_tools.py +0 -0
  41. {code_aide-1.12.2 → code_aide-1.12.3}/tests/test_config.py +0 -0
  42. {code_aide-1.12.2 → code_aide-1.12.3}/tests/test_console.py +0 -0
  43. {code_aide-1.12.2 → code_aide-1.12.3}/tests/test_constants.py +0 -0
  44. {code_aide-1.12.2 → code_aide-1.12.3}/tests/test_detection.py +0 -0
  45. {code_aide-1.12.2 → code_aide-1.12.3}/tests/test_install.py +0 -0
  46. {code_aide-1.12.2 → code_aide-1.12.3}/tests/test_install_types.py +0 -0
  47. {code_aide-1.12.2 → code_aide-1.12.3}/tests/test_operations.py +0 -0
  48. {code_aide-1.12.2 → code_aide-1.12.3}/tests/test_status.py +0 -0
  49. {code_aide-1.12.2 → code_aide-1.12.3}/tests/test_versions.py +0 -0
  50. {code_aide-1.12.2 → code_aide-1.12.3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-aide
3
- Version: 1.12.2
3
+ Version: 1.12.3
4
4
  Summary: Manage AI coding CLI tools (Claude, Copilot, Cursor, Gemini, Amp, Codex)
5
5
  Project-URL: Homepage, https://github.com/dajobe/code-aide
6
6
  Project-URL: Repository, https://github.com/dajobe/code-aide
@@ -1,3 +1,3 @@
1
1
  """code-aide - Manage AI coding CLI tools."""
2
2
 
3
- __version__ = "1.12.2"
3
+ __version__ = "1.12.3"
@@ -135,15 +135,27 @@ def save_updated_versions(tools: dict) -> None:
135
135
  save_versions_cache(cache_data)
136
136
 
137
137
 
138
- def versions_cache_is_fresh() -> bool:
139
- """Return True if the versions cache exists and is less than 24h old."""
138
+ def versions_cache_is_fresh(tools: dict) -> bool:
139
+ """Return True if the versions cache exists, is recent, and complete."""
140
140
  cache_path = get_versions_cache_path()
141
141
  try:
142
142
  age = time.time() - os.path.getmtime(cache_path)
143
- return age < CACHE_MAX_AGE_SECONDS
143
+ if age >= CACHE_MAX_AGE_SECONDS:
144
+ return False
144
145
  except OSError:
145
146
  return False
146
147
 
148
+ # Check that every versionable tool has latest_version populated.
149
+ for tool_config in tools.values():
150
+ install_type = parse_install_type(tool_config.get("install_type"))
151
+ if install_type == InstallType.NPM:
152
+ if not tool_config.get("latest_version"):
153
+ return False
154
+ elif install_type in (InstallType.SCRIPT, InstallType.DIRECT_DOWNLOAD):
155
+ if tool_config.get("version_url") and not tool_config.get("latest_version"):
156
+ return False
157
+ return True
158
+
147
159
 
148
160
  def refresh_versions_cache(tools: dict) -> None:
149
161
  """Fetch latest versions from upstream and update tools dict in-place.
@@ -187,6 +199,6 @@ def refresh_versions_cache(tools: dict) -> None:
187
199
 
188
200
 
189
201
  def ensure_versions_cache(tools: dict) -> None:
190
- """Refresh versions cache if missing or stale, updating tools in-place."""
191
- if not versions_cache_is_fresh():
202
+ """Refresh versions cache if missing, stale, or incomplete."""
203
+ if not versions_cache_is_fresh(tools):
192
204
  refresh_versions_cache(tools)
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