claude-dev-cli 0.8.7__tar.gz → 0.9.0__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.

Potentially problematic release.


This version of claude-dev-cli might be problematic. Click here for more details.

Files changed (42) hide show
  1. {claude_dev_cli-0.8.7/src/claude_dev_cli.egg-info → claude_dev_cli-0.9.0}/PKG-INFO +1 -1
  2. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/pyproject.toml +1 -1
  3. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/__init__.py +1 -1
  4. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/cli.py +25 -0
  5. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/config.py +15 -6
  6. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0/src/claude_dev_cli.egg-info}/PKG-INFO +1 -1
  7. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/tests/test_config.py +1 -1
  8. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/LICENSE +0 -0
  9. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/MANIFEST.in +0 -0
  10. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/README.md +0 -0
  11. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/setup.cfg +0 -0
  12. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/commands.py +0 -0
  13. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/context.py +0 -0
  14. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/core.py +0 -0
  15. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/history.py +0 -0
  16. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/plugins/__init__.py +0 -0
  17. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/plugins/base.py +0 -0
  18. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/plugins/diff_editor/__init__.py +0 -0
  19. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/plugins/diff_editor/plugin.py +0 -0
  20. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/plugins/diff_editor/viewer.py +0 -0
  21. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/secure_storage.py +0 -0
  22. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/template_manager.py +0 -0
  23. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/templates.py +0 -0
  24. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/toon_utils.py +0 -0
  25. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/usage.py +0 -0
  26. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/warp_integration.py +0 -0
  27. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli/workflows.py +0 -0
  28. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli.egg-info/SOURCES.txt +0 -0
  29. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli.egg-info/dependency_links.txt +0 -0
  30. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli.egg-info/entry_points.txt +0 -0
  31. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli.egg-info/requires.txt +0 -0
  32. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/src/claude_dev_cli.egg-info/top_level.txt +0 -0
  33. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/tests/test_cli.py +0 -0
  34. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/tests/test_commands.py +0 -0
  35. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/tests/test_context.py +0 -0
  36. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/tests/test_core.py +0 -0
  37. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/tests/test_diff_editor.py +0 -0
  38. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/tests/test_history.py +0 -0
  39. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/tests/test_secure_storage.py +0 -0
  40. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/tests/test_template_manager.py +0 -0
  41. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/tests/test_toon_utils.py +0 -0
  42. {claude_dev_cli-0.8.7 → claude_dev_cli-0.9.0}/tests/test_usage.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-dev-cli
3
- Version: 0.8.7
3
+ Version: 0.9.0
4
4
  Summary: A powerful CLI tool for developers using Claude AI with multi-API routing, test generation, code review, and usage tracking
5
5
  Author-email: Julio <thinmanj@users.noreply.github.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "claude-dev-cli"
7
- version = "0.8.7"
7
+ version = "0.9.0"
8
8
  description = "A powerful CLI tool for developers using Claude AI with multi-API routing, test generation, code review, and usage tracking"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -9,7 +9,7 @@ Features:
9
9
  - Interactive and single-shot modes
10
10
  """
11
11
 
12
- __version__ = "0.8.7"
12
+ __version__ = "0.9.0"
13
13
  __author__ = "Julio"
14
14
  __license__ = "MIT"
15
15
 
@@ -579,6 +579,31 @@ def config_list(ctx: click.Context) -> None:
579
579
  if cfg.description:
580
580
  console.print(f" {cfg.description}")
581
581
  console.print(f" API Key: {cfg.api_key[:15]}...")
582
+
583
+ # Show default model
584
+ console.print(f"\n[dim]Default model: {config.get_model()}[/dim]")
585
+
586
+
587
+ @config.command('set-model')
588
+ @click.argument('model')
589
+ @click.pass_context
590
+ def config_set_model(ctx: click.Context, model: str) -> None:
591
+ """Set the default Claude model.
592
+
593
+ Examples:
594
+ cdc config set-model claude-sonnet-4-20250514
595
+ cdc config set-model claude-3-5-sonnet-20241022
596
+ cdc config set-model claude-opus-4-20250514
597
+ """
598
+ console = ctx.obj['console']
599
+
600
+ try:
601
+ config = Config()
602
+ config.set_model(model)
603
+ console.print(f"[green]✓[/green] Default model set to: {model}")
604
+ except Exception as e:
605
+ console.print(f"[red]Error: {e}[/red]")
606
+ sys.exit(1)
582
607
 
583
608
 
584
609
  @main.group()
@@ -108,7 +108,7 @@ class Config:
108
108
  default_config = {
109
109
  "api_configs": [],
110
110
  "project_profiles": [],
111
- "default_model": "claude-3-5-sonnet-20241022",
111
+ "default_model": "claude-sonnet-4-5-20250929",
112
112
  "max_tokens": 4096,
113
113
  "context": ContextConfig().model_dump(),
114
114
  "summarization": SummarizationConfig().model_dump(),
@@ -288,17 +288,26 @@ class Config:
288
288
  current = cwd
289
289
  while current != current.parent:
290
290
  config_file = current / ".claude-dev-cli"
291
- if config_file.exists():
292
- with open(config_file, 'r') as f:
293
- data = json.load(f)
294
- return ProjectProfile(**data)
291
+ if config_file.exists() and config_file.is_file():
292
+ try:
293
+ with open(config_file, 'r') as f:
294
+ data = json.load(f)
295
+ return ProjectProfile(**data)
296
+ except (json.JSONDecodeError, IOError):
297
+ # Skip invalid project config files
298
+ pass
295
299
  current = current.parent
296
300
 
297
301
  return None
298
302
 
299
303
  def get_model(self) -> str:
300
304
  """Get default model."""
301
- return self._data.get("default_model", "claude-3-5-sonnet-20241022")
305
+ return self._data.get("default_model", "claude-sonnet-4-20250514")
306
+
307
+ def set_model(self, model: str) -> None:
308
+ """Set default model."""
309
+ self._data["default_model"] = model
310
+ self._save_config()
302
311
 
303
312
  def get_max_tokens(self) -> int:
304
313
  """Get default max tokens."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-dev-cli
3
- Version: 0.8.7
3
+ Version: 0.9.0
4
4
  Summary: A powerful CLI tool for developers using Claude AI with multi-API routing, test generation, code review, and usage tracking
5
5
  Author-email: Julio <thinmanj@users.noreply.github.com>
6
6
  License: MIT
@@ -115,7 +115,7 @@ class TestConfig:
115
115
  data = json.load(f)
116
116
 
117
117
  assert data["api_configs"] == []
118
- assert data["default_model"] == "claude-3-5-sonnet-20241022"
118
+ assert data["default_model"] == "claude-sonnet-4-5-20250929"
119
119
  assert data["max_tokens"] == 4096
120
120
 
121
121
  def test_load_existing_config(self, config_file: Path) -> None:
File without changes
File without changes
File without changes