tunacode-cli 0.0.3__tar.gz → 0.0.5__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 tunacode-cli might be problematic. Click here for more details.

Files changed (71) hide show
  1. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/PKG-INFO +5 -1
  2. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/README.md +4 -0
  3. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/pyproject.toml +1 -1
  4. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/configuration/models.py +17 -2
  5. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/constants.py +1 -1
  6. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/exceptions.py +13 -13
  7. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/services/undo_service.py +5 -5
  8. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/types.py +2 -2
  9. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/utils/system.py +13 -13
  10. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode_cli.egg-info/PKG-INFO +5 -1
  11. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/LICENSE +0 -0
  12. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/setup.cfg +0 -0
  13. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/setup.py +0 -0
  14. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/__init__.py +0 -0
  15. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/cli/__init__.py +0 -0
  16. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/cli/commands.py +0 -0
  17. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/cli/main.py +0 -0
  18. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/cli/repl.py +0 -0
  19. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/configuration/__init__.py +0 -0
  20. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/configuration/defaults.py +0 -0
  21. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/configuration/settings.py +0 -0
  22. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/context.py +0 -0
  23. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/__init__.py +0 -0
  24. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/agents/__init__.py +0 -0
  25. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/agents/main.py +0 -0
  26. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/setup/__init__.py +0 -0
  27. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/setup/agent_setup.py +0 -0
  28. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/setup/base.py +0 -0
  29. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/setup/config_setup.py +0 -0
  30. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/setup/coordinator.py +0 -0
  31. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/setup/environment_setup.py +0 -0
  32. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/setup/git_safety_setup.py +0 -0
  33. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/setup/undo_setup.py +0 -0
  34. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/state.py +0 -0
  35. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/core/tool_handler.py +0 -0
  36. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/prompts/system.txt +0 -0
  37. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/py.typed +0 -0
  38. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/services/__init__.py +0 -0
  39. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/services/mcp.py +0 -0
  40. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/setup.py +0 -0
  41. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/tools/__init__.py +0 -0
  42. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/tools/base.py +0 -0
  43. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/tools/read_file.py +0 -0
  44. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/tools/run_command.py +0 -0
  45. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/tools/update_file.py +0 -0
  46. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/tools/write_file.py +0 -0
  47. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/__init__.py +0 -0
  48. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/completers.py +0 -0
  49. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/console.py +0 -0
  50. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/constants.py +0 -0
  51. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/decorators.py +0 -0
  52. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/input.py +0 -0
  53. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/keybindings.py +0 -0
  54. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/lexers.py +0 -0
  55. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/output.py +0 -0
  56. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/panels.py +0 -0
  57. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/prompt_manager.py +0 -0
  58. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/tool_ui.py +0 -0
  59. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/ui/validators.py +0 -0
  60. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/utils/__init__.py +0 -0
  61. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/utils/bm25.py +0 -0
  62. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/utils/diff_utils.py +0 -0
  63. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/utils/file_utils.py +0 -0
  64. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/utils/ripgrep.py +0 -0
  65. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/utils/text_utils.py +0 -0
  66. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode/utils/user_configuration.py +0 -0
  67. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode_cli.egg-info/SOURCES.txt +0 -0
  68. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode_cli.egg-info/dependency_links.txt +0 -0
  69. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode_cli.egg-info/entry_points.txt +0 -0
  70. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode_cli.egg-info/requires.txt +0 -0
  71. {tunacode_cli-0.0.3 → tunacode_cli-0.0.5}/src/tunacode_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tunacode-cli
3
- Version: 0.0.3
3
+ Version: 0.0.5
4
4
  Summary: Your agentic CLI developer.
5
5
  Author-email: larock22 <noreply@github.com>
6
6
  License-Expression: MIT
@@ -110,8 +110,12 @@ OPENAI_BASE_URL="https://openrouter.ai/api/v1" tunacode
110
110
  You can now switch to OpenRouter models using:
111
111
  ```
112
112
  /model openrouter:mistralai/devstral-small
113
+ /model openrouter:openai/gpt-4.1-mini
114
+ /model openrouter:codex-mini-latest
113
115
  ```
114
116
 
117
+ **Adding Custom OpenRouter Models**: You can use any OpenRouter model by editing your `~/.config/tunacode.json` file and adding the model to the configuration. TunaCode will automatically detect and use any model format `openrouter:provider/model-name`.
118
+
115
119
  ### MCP Support
116
120
 
117
121
  TunaCode supports Model Context Protocol (MCP) servers. You can configure MCP servers in your `~/.config/tunacode.json` file:
@@ -75,8 +75,12 @@ OPENAI_BASE_URL="https://openrouter.ai/api/v1" tunacode
75
75
  You can now switch to OpenRouter models using:
76
76
  ```
77
77
  /model openrouter:mistralai/devstral-small
78
+ /model openrouter:openai/gpt-4.1-mini
79
+ /model openrouter:codex-mini-latest
78
80
  ```
79
81
 
82
+ **Adding Custom OpenRouter Models**: You can use any OpenRouter model by editing your `~/.config/tunacode.json` file and adding the model to the configuration. TunaCode will automatically detect and use any model format `openrouter:provider/model-name`.
83
+
80
84
  ### MCP Support
81
85
 
82
86
  TunaCode supports Model Context Protocol (MCP) servers. You can configure MCP servers in your `~/.config/tunacode.json` file:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tunacode-cli"
7
- version = "0.0.3"
7
+ version = "0.0.5"
8
8
  description = "Your agentic CLI developer."
9
9
  keywords = ["cli", "agent", "development", "automation"]
10
10
  readme = "README.md"
@@ -52,10 +52,25 @@ class ModelRegistry:
52
52
  pricing=ModelPricing(input=1.10, cached_input=0.55, output=4.40)
53
53
  ),
54
54
  "openrouter:mistralai/devstral-small": ModelConfig(
55
- pricing=ModelPricing(input=0.0, cached_input=0.0, output=0.0)
55
+ pricing=ModelPricing(input=0.07, cached_input=0.035, output=0.10)
56
+ ),
57
+ "openrouter:codex-mini-latest": ModelConfig(
58
+ pricing=ModelPricing(input=1.50, cached_input=0.75, output=6.00)
59
+ ),
60
+ "openrouter:o4-mini-high": ModelConfig(
61
+ pricing=ModelPricing(input=1.10, cached_input=0.55, output=4.40)
62
+ ),
63
+ "openrouter:o3": ModelConfig(
64
+ pricing=ModelPricing(input=10.00, cached_input=5.00, output=40.00)
65
+ ),
66
+ "openrouter:o4-mini": ModelConfig(
67
+ pricing=ModelPricing(input=1.10, cached_input=0.55, output=4.40)
56
68
  ),
57
69
  "openrouter:openai/gpt-4.1": ModelConfig(
58
- pricing=ModelPricing(input=2.00, cached_input=0.50, output=8.00)
70
+ pricing=ModelPricing(input=2.00, cached_input=1.00, output=8.00)
71
+ ),
72
+ "openrouter:openai/gpt-4.1-mini": ModelConfig(
73
+ pricing=ModelPricing(input=0.40, cached_input=0.20, output=1.60)
59
74
  ),
60
75
  }
61
76
 
@@ -63,7 +63,7 @@ COMMAND_CATEGORIES = {
63
63
  }
64
64
 
65
65
  # System paths
66
- SIDEKICK_HOME_DIR = ".tunacode"
66
+ TUNACODE_HOME_DIR = ".tunacode"
67
67
  SESSIONS_SUBDIR = "sessions"
68
68
  DEVICE_ID_FILE = "device_id"
69
69
 
@@ -1,41 +1,41 @@
1
1
  """
2
- Sidekick CLI exception hierarchy.
2
+ TunaCode CLI exception hierarchy.
3
3
 
4
- This module defines all custom exceptions used throughout the Sidekick CLI.
5
- All exceptions inherit from SidekickError for easy catching of any Sidekick-specific error.
4
+ This module defines all custom exceptions used throughout the TunaCode CLI.
5
+ All exceptions inherit from TunaCodeError for easy catching of any TunaCode-specific error.
6
6
  """
7
7
 
8
8
  from tunacode.types import ErrorMessage, FilePath, OriginalError, ToolName
9
9
 
10
10
 
11
- class SidekickError(Exception):
12
- """Base exception for all Sidekick errors."""
11
+ class TunaCodeError(Exception):
12
+ """Base exception for all TunaCode errors."""
13
13
 
14
14
  pass
15
15
 
16
16
 
17
17
  # Configuration and Setup Exceptions
18
- class ConfigurationError(SidekickError):
18
+ class ConfigurationError(TunaCodeError):
19
19
  """Raised when there's a configuration issue."""
20
20
 
21
21
  pass
22
22
 
23
23
 
24
24
  # User Interaction Exceptions
25
- class UserAbortError(SidekickError):
25
+ class UserAbortError(TunaCodeError):
26
26
  """Raised when user aborts an operation."""
27
27
 
28
28
  pass
29
29
 
30
30
 
31
- class ValidationError(SidekickError):
31
+ class ValidationError(TunaCodeError):
32
32
  """Raised when input validation fails."""
33
33
 
34
34
  pass
35
35
 
36
36
 
37
37
  # Tool and Agent Exceptions
38
- class ToolExecutionError(SidekickError):
38
+ class ToolExecutionError(TunaCodeError):
39
39
  """Raised when a tool fails to execute."""
40
40
 
41
41
  def __init__(
@@ -46,21 +46,21 @@ class ToolExecutionError(SidekickError):
46
46
  super().__init__(f"Tool '{tool_name}' failed: {message}")
47
47
 
48
48
 
49
- class AgentError(SidekickError):
49
+ class AgentError(TunaCodeError):
50
50
  """Raised when agent operations fail."""
51
51
 
52
52
  pass
53
53
 
54
54
 
55
55
  # State Management Exceptions
56
- class StateError(SidekickError):
56
+ class StateError(TunaCodeError):
57
57
  """Raised when there's an issue with application state."""
58
58
 
59
59
  pass
60
60
 
61
61
 
62
62
  # External Service Exceptions
63
- class ServiceError(SidekickError):
63
+ class ServiceError(TunaCodeError):
64
64
  """Base exception for external service failures."""
65
65
 
66
66
  pass
@@ -89,7 +89,7 @@ class GitOperationError(ServiceError):
89
89
 
90
90
 
91
91
  # File System Exceptions
92
- class FileOperationError(SidekickError):
92
+ class FileOperationError(TunaCodeError):
93
93
  """Raised when file system operations fail."""
94
94
 
95
95
  def __init__(
@@ -59,7 +59,7 @@ def init_undo_system(state_manager: StateManager) -> bool:
59
59
  home_dir = Path.home()
60
60
 
61
61
  if cwd == home_dir:
62
- ui.warning(UNDO_DISABLED_HOME)
62
+ print(f"⚠️ {UNDO_DISABLED_HOME}")
63
63
  return False
64
64
 
65
65
  if not is_in_git_project():
@@ -100,11 +100,11 @@ def init_undo_system(state_manager: StateManager) -> bool:
100
100
  return True
101
101
  except subprocess.TimeoutExpired as e:
102
102
  error = GitOperationError(operation="init", message=UNDO_GIT_TIMEOUT, original_error=e)
103
- ui.warning(str(error))
103
+ print(f"⚠️ {str(error)}")
104
104
  return False
105
105
  except Exception as e:
106
106
  error = GitOperationError(operation="init", message=str(e), original_error=e)
107
- ui.warning(ERROR_UNDO_INIT.format(e=e))
107
+ print(f"⚠️ {ERROR_UNDO_INIT.format(e=e)}")
108
108
  return False
109
109
 
110
110
 
@@ -156,11 +156,11 @@ def commit_for_undo(
156
156
  error = GitOperationError(
157
157
  operation="commit", message="Git commit timed out", original_error=e
158
158
  )
159
- ui.warning(str(error))
159
+ print(f"⚠️ {str(error)}")
160
160
  return False
161
161
  except Exception as e:
162
162
  error = GitOperationError(operation="commit", message=str(e), original_error=e)
163
- ui.warning(f"Error creating undo commit: {e}")
163
+ print(f"⚠️ Error creating undo commit: {e}")
164
164
  return False
165
165
 
166
166
 
@@ -1,8 +1,8 @@
1
1
  """
2
- Centralized type definitions for Sidekick CLI.
2
+ Centralized type definitions for TunaCode CLI.
3
3
 
4
4
  This module contains all type aliases, protocols, and type definitions
5
- used throughout the Sidekick codebase.
5
+ used throughout the TunaCode codebase.
6
6
  """
7
7
 
8
8
  from dataclasses import dataclass
@@ -1,5 +1,5 @@
1
1
  """
2
- Module: sidekick.utils.system
2
+ Module: tunacode.utils.system
3
3
 
4
4
  Provides system information and directory management utilities.
5
5
  Handles session management, device identification, file listing
@@ -13,7 +13,7 @@ import uuid
13
13
  from pathlib import Path
14
14
 
15
15
  from ..configuration.settings import ApplicationSettings
16
- from ..constants import DEVICE_ID_FILE, ENV_FILE, SESSIONS_SUBDIR, SIDEKICK_HOME_DIR
16
+ from ..constants import DEVICE_ID_FILE, ENV_FILE, SESSIONS_SUBDIR, TUNACODE_HOME_DIR
17
17
 
18
18
  # Default ignore patterns if .gitignore is not found
19
19
  DEFAULT_IGNORE_PATTERNS = {
@@ -45,15 +45,15 @@ DEFAULT_IGNORE_PATTERNS = {
45
45
  }
46
46
 
47
47
 
48
- def get_sidekick_home():
48
+ def get_tunacode_home():
49
49
  """
50
- Get the path to the Sidekick home directory (~/.sidekick).
50
+ Get the path to the TunaCode home directory (~/.tunacode).
51
51
  Creates it if it doesn't exist.
52
52
 
53
53
  Returns:
54
- Path: The path to the Sidekick home directory.
54
+ Path: The path to the TunaCode home directory.
55
55
  """
56
- home = Path.home() / SIDEKICK_HOME_DIR
56
+ home = Path.home() / TUNACODE_HOME_DIR
57
57
  home.mkdir(exist_ok=True)
58
58
  return home
59
59
 
@@ -68,7 +68,7 @@ def get_session_dir(state_manager):
68
68
  Returns:
69
69
  Path: The path to the current session directory.
70
70
  """
71
- session_dir = get_sidekick_home() / SESSIONS_SUBDIR / state_manager.session.session_id
71
+ session_dir = get_tunacode_home() / SESSIONS_SUBDIR / state_manager.session.session_id
72
72
  session_dir.mkdir(exist_ok=True, parents=True)
73
73
  return session_dir
74
74
 
@@ -181,16 +181,16 @@ def get_cwd():
181
181
 
182
182
  def get_device_id():
183
183
  """
184
- Get the device ID from the ~/.sidekick/device_id file.
184
+ Get the device ID from the ~/.tunacode/device_id file.
185
185
  If the file doesn't exist, generate a new UUID and save it.
186
186
 
187
187
  Returns:
188
188
  str: The device ID as a string.
189
189
  """
190
190
  try:
191
- # Get the ~/.sidekick directory
192
- sidekick_home = get_sidekick_home()
193
- device_id_file = sidekick_home / DEVICE_ID_FILE
191
+ # Get the ~/.tunacode directory
192
+ tunacode_home = get_tunacode_home()
193
+ device_id_file = tunacode_home / DEVICE_ID_FILE
194
194
 
195
195
  # If the file exists, read the device ID
196
196
  if device_id_file.exists():
@@ -245,7 +245,7 @@ def cleanup_session(state_manager):
245
245
 
246
246
  def check_for_updates():
247
247
  """
248
- Check if there's a newer version of sidekick-cli available on PyPI.
248
+ Check if there's a newer version of tunacode-cli available on PyPI.
249
249
 
250
250
  Returns:
251
251
  tuple: (has_update, latest_version)
@@ -257,7 +257,7 @@ def check_for_updates():
257
257
  current_version = app_settings.version
258
258
  try:
259
259
  result = subprocess.run(
260
- ["pip", "index", "versions", "sidekick-cli"], capture_output=True, text=True, check=True
260
+ ["pip", "index", "versions", "tunacode-cli"], capture_output=True, text=True, check=True
261
261
  )
262
262
  output = result.stdout
263
263
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tunacode-cli
3
- Version: 0.0.3
3
+ Version: 0.0.5
4
4
  Summary: Your agentic CLI developer.
5
5
  Author-email: larock22 <noreply@github.com>
6
6
  License-Expression: MIT
@@ -110,8 +110,12 @@ OPENAI_BASE_URL="https://openrouter.ai/api/v1" tunacode
110
110
  You can now switch to OpenRouter models using:
111
111
  ```
112
112
  /model openrouter:mistralai/devstral-small
113
+ /model openrouter:openai/gpt-4.1-mini
114
+ /model openrouter:codex-mini-latest
113
115
  ```
114
116
 
117
+ **Adding Custom OpenRouter Models**: You can use any OpenRouter model by editing your `~/.config/tunacode.json` file and adding the model to the configuration. TunaCode will automatically detect and use any model format `openrouter:provider/model-name`.
118
+
115
119
  ### MCP Support
116
120
 
117
121
  TunaCode supports Model Context Protocol (MCP) servers. You can configure MCP servers in your `~/.config/tunacode.json` file:
File without changes
File without changes
File without changes