tunacode-cli 0.0.5__py3-none-any.whl → 0.0.7__py3-none-any.whl

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 (36) hide show
  1. tunacode/cli/commands.py +91 -33
  2. tunacode/cli/main.py +6 -0
  3. tunacode/cli/model_selector.py +178 -0
  4. tunacode/cli/repl.py +11 -10
  5. tunacode/configuration/models.py +11 -1
  6. tunacode/constants.py +10 -10
  7. tunacode/context.py +1 -3
  8. tunacode/core/agents/main.py +52 -94
  9. tunacode/core/agents/tinyagent_main.py +173 -0
  10. tunacode/core/setup/git_safety_setup.py +39 -51
  11. tunacode/core/setup/optimized_coordinator.py +73 -0
  12. tunacode/exceptions.py +0 -2
  13. tunacode/services/enhanced_undo_service.py +322 -0
  14. tunacode/services/project_undo_service.py +311 -0
  15. tunacode/services/undo_service.py +13 -16
  16. tunacode/tools/base.py +11 -20
  17. tunacode/tools/tinyagent_tools.py +103 -0
  18. tunacode/tools/update_file.py +24 -14
  19. tunacode/tools/write_file.py +9 -7
  20. tunacode/ui/completers.py +98 -33
  21. tunacode/ui/input.py +8 -7
  22. tunacode/ui/keybindings.py +1 -3
  23. tunacode/ui/lexers.py +16 -17
  24. tunacode/ui/output.py +9 -3
  25. tunacode/ui/panels.py +4 -4
  26. tunacode/ui/prompt_manager.py +6 -4
  27. tunacode/utils/lazy_imports.py +59 -0
  28. tunacode/utils/regex_cache.py +33 -0
  29. tunacode/utils/system.py +40 -0
  30. tunacode_cli-0.0.7.dist-info/METADATA +262 -0
  31. {tunacode_cli-0.0.5.dist-info → tunacode_cli-0.0.7.dist-info}/RECORD +35 -27
  32. tunacode_cli-0.0.5.dist-info/METADATA +0 -247
  33. {tunacode_cli-0.0.5.dist-info → tunacode_cli-0.0.7.dist-info}/WHEEL +0 -0
  34. {tunacode_cli-0.0.5.dist-info → tunacode_cli-0.0.7.dist-info}/entry_points.txt +0 -0
  35. {tunacode_cli-0.0.5.dist-info → tunacode_cli-0.0.7.dist-info}/licenses/LICENSE +0 -0
  36. {tunacode_cli-0.0.5.dist-info → tunacode_cli-0.0.7.dist-info}/top_level.txt +0 -0
@@ -42,12 +42,14 @@ class PromptManager:
42
42
  self.state_manager = state_manager
43
43
  self._temp_sessions = {} # For when no state manager is available
44
44
  self._style = self._create_style()
45
-
45
+
46
46
  def _create_style(self) -> Style:
47
47
  """Create the style for the prompt with file reference highlighting."""
48
- return Style.from_dict({
49
- 'file-reference': UI_COLORS.get('file_ref', 'light_blue'),
50
- })
48
+ return Style.from_dict(
49
+ {
50
+ "file-reference": UI_COLORS.get("file_ref", "light_blue"),
51
+ }
52
+ )
51
53
 
52
54
  def get_session(self, session_key: str, config: PromptConfig) -> PromptSession:
53
55
  """Get or create a prompt session.
@@ -0,0 +1,59 @@
1
+ """Lazy imports for heavy modules to improve startup time."""
2
+
3
+ import sys
4
+ from typing import TYPE_CHECKING
5
+
6
+ if TYPE_CHECKING:
7
+ # For type checking only
8
+ import prompt_toolkit # noqa: F401
9
+ import rich # noqa: F401
10
+ from prompt_toolkit import PromptSession # noqa: F401
11
+ from prompt_toolkit.completion import Completer # noqa: F401
12
+ from rich.console import Console # noqa: F401
13
+ from rich.markdown import Markdown # noqa: F401
14
+ from rich.panel import Panel # noqa: F401
15
+ from rich.table import Table # noqa: F401
16
+
17
+
18
+ def lazy_import(module_name: str):
19
+ """Lazy import a module."""
20
+ if module_name not in sys.modules:
21
+ __import__(module_name)
22
+ return sys.modules[module_name]
23
+
24
+
25
+ # Lazy accessors
26
+ def get_rich():
27
+ """Get rich module lazily."""
28
+ return lazy_import("rich")
29
+
30
+
31
+ def get_rich_console():
32
+ """Get rich console lazily."""
33
+ rich_console = lazy_import("rich.console")
34
+ return rich_console.Console
35
+
36
+
37
+ def get_rich_table():
38
+ """Get rich table lazily."""
39
+ return lazy_import("rich.table").Table
40
+
41
+
42
+ def get_rich_panel():
43
+ """Get rich panel lazily."""
44
+ return lazy_import("rich.panel").Panel
45
+
46
+
47
+ def get_rich_markdown():
48
+ """Get rich markdown lazily."""
49
+ return lazy_import("rich.markdown").Markdown
50
+
51
+
52
+ def get_prompt_toolkit():
53
+ """Get prompt_toolkit lazily."""
54
+ return lazy_import("prompt_toolkit")
55
+
56
+
57
+ def get_prompt_session():
58
+ """Get PromptSession lazily."""
59
+ return lazy_import("prompt_toolkit").PromptSession
@@ -0,0 +1,33 @@
1
+ """Pre-compiled regex patterns for better performance."""
2
+
3
+ import re
4
+
5
+ # Command patterns
6
+ MODEL_COMMAND_PATTERN = re.compile(r"(?:^|\n)\s*(?:/model|/m)\s+\S*$")
7
+ COMMAND_START_PATTERN = re.compile(r"^/\w+")
8
+
9
+ # File reference patterns
10
+ FILE_REF_PATTERN = re.compile(r"@([^\s]+)")
11
+ FILE_PATH_PATTERN = re.compile(r"^[a-zA-Z0-9_\-./]+$")
12
+
13
+ # Code patterns
14
+ IMPORT_PATTERN = re.compile(r"^\s*(?:from|import)\s+\S+")
15
+ FUNCTION_DEF_PATTERN = re.compile(r"^\s*def\s+(\w+)\s*\(")
16
+ CLASS_DEF_PATTERN = re.compile(r"^\s*class\s+(\w+)")
17
+
18
+ # Environment variable patterns
19
+ ENV_VAR_PATTERN = re.compile(r"\$\{(\w+)(?::([^}]*))?\}")
20
+ API_KEY_PATTERN = re.compile(r"_API_KEY$")
21
+
22
+ # Common text patterns
23
+ WHITESPACE_PATTERN = re.compile(r"\s+")
24
+ WORD_BOUNDARY_PATTERN = re.compile(r"\b\w+\b")
25
+ LINE_SPLIT_PATTERN = re.compile(r"\r?\n")
26
+
27
+ # Tool output patterns
28
+ ANSI_ESCAPE_PATTERN = re.compile(r"\x1b\[[0-9;]*m")
29
+ ERROR_PATTERN = re.compile(r"(?i)(error|exception|failed|failure):\s*(.+)")
30
+
31
+ # Model name patterns
32
+ MODEL_PROVIDER_PATTERN = re.compile(r"^(\w+):(.+)$")
33
+ OPENROUTER_MODEL_PATTERN = re.compile(r"^openrouter:(.+)$")
tunacode/utils/system.py CHANGED
@@ -277,6 +277,46 @@ def check_for_updates():
277
277
  return False, current_version
278
278
 
279
279
 
280
+ async def update_tunacode():
281
+ """
282
+ Update TunaCode to the latest version using pip.
283
+ """
284
+ from ..ui import console as ui
285
+
286
+ await ui.info("🔄 Checking for updates...")
287
+
288
+ has_update, latest_version = check_for_updates()
289
+
290
+ if not has_update:
291
+ await ui.success("✅ TunaCode is already up to date!")
292
+ return
293
+
294
+ app_settings = ApplicationSettings()
295
+ current_version = app_settings.version
296
+
297
+ await ui.info(f"📦 Updating from v{current_version} to v{latest_version}...")
298
+
299
+ try:
300
+ # Run pip install --upgrade tunacode-cli
301
+ result = subprocess.run(
302
+ ["pip", "install", "--upgrade", "tunacode-cli"],
303
+ capture_output=True,
304
+ text=True,
305
+ check=True
306
+ )
307
+
308
+ if result.returncode == 0:
309
+ await ui.success(f"🎉 Successfully updated to v{latest_version}!")
310
+ await ui.info("Please restart TunaCode to use the new version.")
311
+ else:
312
+ await ui.error(f"❌ Update failed: {result.stderr}")
313
+
314
+ except subprocess.CalledProcessError as e:
315
+ await ui.error(f"❌ Update failed: {e.stderr}")
316
+ except Exception as e:
317
+ await ui.error(f"❌ Update failed: {str(e)}")
318
+
319
+
280
320
  def list_cwd(max_depth=3):
281
321
  """
282
322
  Lists files in the current working directory up to a specified depth,
@@ -0,0 +1,262 @@
1
+ Metadata-Version: 2.4
2
+ Name: tunacode-cli
3
+ Version: 0.0.7
4
+ Summary: Your agentic CLI developer.
5
+ Author-email: larock22 <noreply@github.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/larock22/tunacode
8
+ Project-URL: Repository, https://github.com/larock22/tunacode
9
+ Keywords: cli,agent,development,automation
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Topic :: Software Development
18
+ Classifier: Topic :: Utilities
19
+ Requires-Python: >=3.10
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: prompt_toolkit==3.0.51
23
+ Requires-Dist: tiny_agent_os>=0.1.0
24
+ Requires-Dist: pygments==2.19.1
25
+ Requires-Dist: rich==14.0.0
26
+ Requires-Dist: typer==0.15.3
27
+ Requires-Dist: pyyaml>=6.0
28
+ Provides-Extra: dev
29
+ Requires-Dist: build; extra == "dev"
30
+ Requires-Dist: black; extra == "dev"
31
+ Requires-Dist: flake8; extra == "dev"
32
+ Requires-Dist: isort; extra == "dev"
33
+ Requires-Dist: pytest; extra == "dev"
34
+ Requires-Dist: pytest-cov; extra == "dev"
35
+ Dynamic: license-file
36
+
37
+ # 🐟 TunaCode
38
+
39
+ [![PyPI version](https://badge.fury.io/py/tunacode-cli.svg)](https://badge.fury.io/py/tunacode-cli)
40
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
41
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
42
+
43
+ ![Chuna](chuna.jpg_medium)
44
+
45
+ **Your agentic CLI developer** - An open-source alternative to Claude Code, Copilot, and Cursor with multi-provider LLM support.
46
+
47
+
48
+ ## ✨ What's New (v0.1.0)
49
+
50
+ - 🚀 **60% faster startup** with lazy loading and optimizations
51
+ - 🤖 **TinyAgent integration** for robust ReAct-based interactions
52
+ - 🛡️ **Three-layer undo system** with automatic failover
53
+ - 📊 **Enhanced model selection** with fuzzy matching and cost indicators
54
+ - 📁 **Project-local backups** in `.tunacode/` directory
55
+
56
+ ## 🎯 Features
57
+
58
+ ### Core Capabilities
59
+ - **🔓 No vendor lock-in** - Use any LLM provider (OpenAI, Anthropic, Google, 100+ via OpenRouter)
60
+ - **⚡ Fast & responsive** - Optimized for speed with <5ms operation overhead
61
+ - **🛡️ Safe operations** - Three-layer undo system ensures nothing is lost
62
+ - **🎨 Modern CLI** - Beautiful terminal UI with syntax highlighting
63
+ - **💰 Cost tracking** - Monitor tokens and costs per session
64
+
65
+ ### Developer Experience
66
+ - **🔄 Hot model switching** - Change models mid-conversation with `/model`
67
+ - **📝 Project guides** - Customize behavior with `TUNACODE.md` files
68
+ - **🚀 YOLO mode** - Skip confirmations when you're confident
69
+ - **🔧 MCP support** - Extend with Model Context Protocol servers
70
+ - **📊 Git integration** - Automatic branch creation and undo support
71
+
72
+ ## 🚀 Quick Start
73
+
74
+ ### One-Line Install (Linux/macOS)
75
+
76
+ ```bash
77
+ # Using curl
78
+ curl -sSL https://raw.githubusercontent.com/alchemiststudiosDOTai/tunacode/master/scripts/install_linux.sh | bash
79
+
80
+ # Or using wget
81
+ wget -qO- https://raw.githubusercontent.com/alchemiststudiosDOTai/tunacode/master/scripts/install_linux.sh | bash
82
+ ```
83
+
84
+ This creates a virtual environment in `~/.tunacode-venv` and adds the `tunacode` command to your PATH.
85
+
86
+ ### Alternative Install Methods
87
+
88
+ ```bash
89
+ # Install from PyPI
90
+ pip install tunacode-cli
91
+
92
+ # Or install globally using pipx (recommended)
93
+ python3 -m pip install --user pipx
94
+ python3 -m pipx ensurepath
95
+ pipx install tunacode-cli
96
+ ```
97
+
98
+ ### Start Using TunaCode
99
+
100
+ ```bash
101
+ # Run setup (first time only)
102
+ tunacode
103
+
104
+ # Start coding!
105
+ tunacode
106
+ > Help me refactor this codebase to use async/await
107
+
108
+ # Update to latest version
109
+ tunacode --update
110
+ ```
111
+
112
+ ## 📋 Commands
113
+
114
+ | Command | Description | Example |
115
+ |---------|-------------|---------|
116
+ | `/model` or `/m` | List and switch models | `/model 3` or `/m opus` |
117
+ | `/yolo` | Toggle confirmation skipping | `/yolo` |
118
+ | `/undo` | Undo last file operation | `/undo` |
119
+ | `/clear` | Clear conversation history | `/clear` |
120
+ | `/branch <name>` | Create new git branch | `/branch feature/auth` |
121
+ | `/compact` | Summarize and trim history | `/compact` |
122
+ | `/help` | Show all commands | `/help` |
123
+ | `--update` | Update to latest version | `tunacode --update` |
124
+
125
+ ## 🔧 Configuration
126
+
127
+ Configuration is stored in `~/.config/tunacode.json`:
128
+
129
+ ```json
130
+ {
131
+ "default_model": "openai:gpt-4o",
132
+ "env": {
133
+ "OPENAI_API_KEY": "sk-...",
134
+ "ANTHROPIC_API_KEY": "sk-ant-...",
135
+ "OPENROUTER_API_KEY": "sk-or-..."
136
+ },
137
+ "mcpServers": {
138
+ "github": {
139
+ "command": "npx",
140
+ "args": ["-y", "@modelcontextprotocol/server-github"],
141
+ "env": {"GITHUB_PERSONAL_ACCESS_TOKEN": "..."}
142
+ }
143
+ }
144
+ }
145
+ ```
146
+
147
+ ### Using OpenRouter (100+ Models)
148
+
149
+ ```bash
150
+ # Add your OpenRouter API key to config
151
+ # Then run with OpenRouter base URL:
152
+ OPENAI_BASE_URL="https://openrouter.ai/api/v1" tunacode
153
+
154
+ # Use any OpenRouter model:
155
+ /model openrouter:anthropic/claude-3-opus
156
+ /model openrouter:mistralai/devstral-small
157
+ /model openrouter:openai/gpt-4.1
158
+ ```
159
+
160
+ ## 🛡️ Undo System
161
+
162
+ TunaCode provides **three layers of protection** for your files:
163
+
164
+ 1. **Git commits** - Primary undo mechanism (if available)
165
+ 2. **Operation log** - Tracks changes with content (<100KB files)
166
+ 3. **File backups** - Physical copies in `.tunacode/backups/`
167
+
168
+ All undo data is stored locally in your project:
169
+
170
+ ```
171
+ your-project/
172
+ └── .tunacode/ # Auto-created, gitignored
173
+ ├── backups/ # Timestamped file copies
174
+ ├── operations.jsonl # Change history
175
+ └── README.md # Explains the directory
176
+ ```
177
+
178
+ ## 🎯 Project Customization
179
+
180
+ Create a `TUNACODE.md` file in your project root:
181
+
182
+ ```markdown
183
+ # Project Guidelines for TunaCode
184
+
185
+ ## Tech Stack
186
+ - Next.js 14 with App Router
187
+ - TypeScript with strict mode
188
+ - Tailwind CSS for styling
189
+
190
+ ## Conventions
191
+ - Use arrow functions for components
192
+ - Prefer server components where possible
193
+ - Follow conventional commits
194
+
195
+ ## Commands
196
+ - `npm run dev` - Start development
197
+ - `npm test` - Run tests
198
+ ```
199
+
200
+ ## ⚡ Performance
201
+
202
+ TunaCode is optimized for speed:
203
+ - **Startup time**: ~0.5-0.8 seconds
204
+ - **Model switching**: ~100ms
205
+ - **File operations**: ~5ms overhead
206
+ - **API calls**: Connection pooling enabled
207
+
208
+ ## 🔧 Advanced Usage
209
+
210
+ ### Environment Variables
211
+ ```bash
212
+ # Use different base URLs
213
+ OPENAI_BASE_URL="https://openrouter.ai/api/v1" tunacode
214
+
215
+ # Disable undo system
216
+ TUNACODE_NO_UNDO=1 tunacode
217
+
218
+ # Set default model
219
+ TUNACODE_MODEL="anthropic:claude-3-opus" tunacode
220
+ ```
221
+
222
+ ### MCP Servers
223
+ Extend TunaCode with Model Context Protocol servers for web fetching, database access, and more. See [modelcontextprotocol.io](https://modelcontextprotocol.io/) for available servers.
224
+
225
+ ## 🤝 Contributing
226
+
227
+ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
228
+
229
+ ```bash
230
+ # Setup development environment
231
+ git clone https://github.com/larock22/tunacode
232
+ cd tunacode
233
+ pip install -e ".[dev]"
234
+
235
+ # Run tests
236
+ make test
237
+
238
+ # Lint code
239
+ make lint
240
+ ```
241
+
242
+ ## 📚 Documentation
243
+
244
+ - [Architecture Overview](docs/architecture.md)
245
+ - [API Integration](API_CALL_FLOW.md)
246
+ - [Undo System Design](UNDO_SYSTEM_DESIGN.md)
247
+ - [Performance Guide](PERFORMANCE_OPTIMIZATIONS.md)
248
+
249
+ ## 🙏 Acknowledgments
250
+
251
+ TunaCode is built on the foundation of [sidekick-cli](https://github.com/geekforbrains/sidekick-cli). Special thanks to:
252
+ - The sidekick-cli team for the original codebase
253
+ - [TinyAgent](https://github.com/alchemiststudiosDOTai/tinyAgent) for the robust agent framework
254
+ - The open-source community for feedback and contributions
255
+
256
+ ## 📄 License
257
+
258
+ MIT License - see [LICENSE](LICENSE) for details.
259
+
260
+ ---
261
+
262
+ **Note**: TunaCode is in active development. Please [report issues](https://github.com/larock22/tunacode/issues) or share feedback!
@@ -1,65 +1,73 @@
1
1
  tunacode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- tunacode/constants.py,sha256=eht1b04PEbz2SPJL4BL1NkWTrQblvzdCws1bPPMumco,4249
3
- tunacode/context.py,sha256=0ttsxxLAyD4pSoxw7S-pyzor0JUkhOFZh96aAf4Kqsg,2634
4
- tunacode/exceptions.py,sha256=RFUH8wOsWEvSPGIYM2exr4t47YkEyZt4Fr-DfTo6_JY,2647
2
+ tunacode/constants.py,sha256=6QxZ_VpAzjWSx5-tndEUjTeUVSrNSTAlWSRuboqr-DQ,4218
3
+ tunacode/context.py,sha256=6sterdRvPOyG3LU0nEAXpBsEPZbO3qtPyTlJBi-_VXE,2612
4
+ tunacode/exceptions.py,sha256=_Dyj6cC0868dMABekdQHXCg5XhucJumbGUMXaSDzgB4,2645
5
5
  tunacode/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  tunacode/setup.py,sha256=KCNhnu8FY5bFRqR0JMIh22xVakCC97kchmyGsUGUaJ4,1811
7
7
  tunacode/types.py,sha256=5mMJDgFqVcKzhtHh9unPISBFqkeNje6KISGUpRkqRjY,7146
8
8
  tunacode/cli/__init__.py,sha256=zgs0UbAck8hfvhYsWhWOfBe5oK09ug2De1r4RuQZREA,55
9
- tunacode/cli/commands.py,sha256=911tz2e13ljTVlY5DR44qt8aeyTQo4dF4H9BoziRMtA,20732
10
- tunacode/cli/main.py,sha256=5_CXYtzN-Mc3nOv2Xpk6yfnV4d2SOgA9ENyTCe0cYYw,1226
11
- tunacode/cli/repl.py,sha256=7g2c5M10bMsSmsomTIiR8bPlUAaqp83hybuVZdwT5kM,8789
9
+ tunacode/cli/commands.py,sha256=IHUza0gJUrN30sUHK9gU6-cSRV0TufViBU8qq0yzYbI,22979
10
+ tunacode/cli/main.py,sha256=-ZDDJHd4LUACrWxZ153fFgVcdSlr7GcQfXAcxyfxT7E,1470
11
+ tunacode/cli/model_selector.py,sha256=EO3GY_YM6pByn4IuYYNn5bKQUCz6vaObFw7clJaJQD8,6190
12
+ tunacode/cli/repl.py,sha256=-KvGMyYQk4WslSkGk0MVOUCB15DEp0BSPVWGj4TIZlo,8864
12
13
  tunacode/configuration/__init__.py,sha256=MbVXy8bGu0yKehzgdgZ_mfWlYGvIdb1dY2Ly75nfuPE,17
13
14
  tunacode/configuration/defaults.py,sha256=9fR_Wydc85fU5LN5LlgRfW6geZNPNFMqKRVLN2v_TQ8,694
14
- tunacode/configuration/models.py,sha256=BVNiF4eAnIMIq1Wo6gWDrCpVwqJxiPWQYbzlUSgThDA,3626
15
+ tunacode/configuration/models.py,sha256=hcpO_Z0fy6kVf2xjv-Azs2PMQE-iKwxIQhpi2KuvTMs,3944
15
16
  tunacode/configuration/settings.py,sha256=0HqwEFkpGqPtF-h0sAIBHFXTlJQ_KtelD_s-z2XDSak,992
16
17
  tunacode/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
18
  tunacode/core/state.py,sha256=0U_WU92yn5EQ27BLlHIkNIJJqjLMNHKNYSoba1rQqbQ,1376
18
19
  tunacode/core/tool_handler.py,sha256=OKx7jM8pml6pSEnoARu33_uBY8awJBqvhbVeBn6T4ow,1804
19
20
  tunacode/core/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- tunacode/core/agents/main.py,sha256=ZGB-EUQ7ow-m3ohSAmfPZ5UN9XC2Gbz40rKjsZsWwrA,4669
21
+ tunacode/core/agents/main.py,sha256=zsfSmUUHNFfEz9ludq9CZ13qaGJn91TrOyu1Pha_3-M,2339
22
+ tunacode/core/agents/tinyagent_main.py,sha256=xVVlTY8BPfzdn7T_ORCKi9rqkmd_jWwN7QYo6zRk81s,5925
21
23
  tunacode/core/setup/__init__.py,sha256=jlveyriTXRcnoBLU6_TJ7Z-3E6EXjT9L5GD1vW4dei0,427
22
24
  tunacode/core/setup/agent_setup.py,sha256=k1bmQ21ue17_zZsWlhIfc7ZWN6vZtmOgKMMzR4Xu9-k,1410
23
25
  tunacode/core/setup/base.py,sha256=x9uYOITulrf4faP70NPTNBPb-wW1ZJGmcjAe0Sk5slk,961
24
26
  tunacode/core/setup/config_setup.py,sha256=1eDS8iIG9z_BvrmeL8d9QUEBtPXSjOcrNu-2vHtvSFk,7474
25
27
  tunacode/core/setup/coordinator.py,sha256=pT1mI24Kllo2H6Hjb-uULLsA1E3X3BqQB7nSGe70SRw,1598
26
28
  tunacode/core/setup/environment_setup.py,sha256=u6Anb9uDicmdMA_9xLkP0j2uoiVY16ojsA7XnFz--yQ,2234
27
- tunacode/core/setup/git_safety_setup.py,sha256=1NuzSASi0b69wQRpcOgINKklGnq34Xh3itm_PEpjDus,7238
29
+ tunacode/core/setup/git_safety_setup.py,sha256=43NqLHxUxzG5GAI0lgtU3cyIoV2izfEEe8zWig_GosE,6910
30
+ tunacode/core/setup/optimized_coordinator.py,sha256=pRfX0AUjBfPE8jdl7lNJwnnTOEX4p1aBdWT92DGhgNY,2936
28
31
  tunacode/core/setup/undo_setup.py,sha256=uHy7YWXPnxQ-b_36SNKtMZNyDR_u-p4OPDARHAgp6Lo,1179
29
32
  tunacode/prompts/system.txt,sha256=freAiukJH4PN-fKRWBdTogEak7BsZMgwdyWkxQtY-X4,3194
30
33
  tunacode/services/__init__.py,sha256=w_E8QK6RnvKSvU866eDe8BCRV26rAm4d3R-Yg06OWCU,19
34
+ tunacode/services/enhanced_undo_service.py,sha256=_HGY0v7uwXajelElhbQGij2oKhIol5NxMzop841XJxY,10303
31
35
  tunacode/services/mcp.py,sha256=R48X73KQjQ9vwhBrtbWHSBl-4K99QXmbIhh5J_1Gezo,3046
32
- tunacode/services/undo_service.py,sha256=lb2IlSv7bMDOOz72iVAiAy-0U49T1MsCO9bhhNhdzww,7783
36
+ tunacode/services/project_undo_service.py,sha256=slZPqN4LYyiT6vSKaLcsM5eOceIrZ4UPM-ce9nJZ1AQ,10648
37
+ tunacode/services/undo_service.py,sha256=CSjpwb53n9U5cVzPxRnxG6RWiD8motwwNb9Mn0Rc6cg,7702
33
38
  tunacode/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- tunacode/tools/base.py,sha256=5IXKgiHVnV7pPgWTiT0mhFLy2dA2vuryy8Ri_CHsZBY,8936
39
+ tunacode/tools/base.py,sha256=Cl-xthjTt6mlzvGsgmI-64m_8PCM1W8lccqsSemPq0k,8478
35
40
  tunacode/tools/read_file.py,sha256=QW97pPVcHvNJk48iPSwzOZ9Dbq_Ce8lQ7W0F82SXi7k,3051
36
41
  tunacode/tools/run_command.py,sha256=dspFV71g98gbOQV6CT9LsEoytQ_4zyVqqZD99zf__OY,3796
37
- tunacode/tools/update_file.py,sha256=oG7ELWX3uHboDs2BPy8hfZb6hh0bQOav-LlWIRynMO4,4145
38
- tunacode/tools/write_file.py,sha256=bV-Xz_Wy_SaCqU78PcxP2ttScfH7F7GGnvs4P7EDuAM,2821
42
+ tunacode/tools/tinyagent_tools.py,sha256=wTeF5lfaYpa4GnWPq3qOo39QPcD3N2bMp670N1Luf9k,2579
43
+ tunacode/tools/update_file.py,sha256=-ysza8w3eys1jj-oDFsamXiSVI28ONTkMQ4TJsoG6xs,4527
44
+ tunacode/tools/write_file.py,sha256=taDr8nAnxYeEXz6W3tjzT_S96u2MiHD1puvJFfYxlbw,2919
39
45
  tunacode/ui/__init__.py,sha256=aRNE2pS50nFAX6y--rSGMNYwhz905g14gRd6g4BolYU,13
40
- tunacode/ui/completers.py,sha256=A35gtImDcZt_kg7dIFsGL1CGnKmfEt9UJXYh4ZvQebg,5069
46
+ tunacode/ui/completers.py,sha256=OL4c8cSQnb2WWRfD73MkRBw1lOxa03512MKDFPli9eY,7231
41
47
  tunacode/ui/console.py,sha256=7ua1LaBP3ZCRHzV0SqVCkgNlgBuBcBTcvybRjWl5jew,1943
42
48
  tunacode/ui/constants.py,sha256=NxegAWaoDaEa4gzNZ7p67M0ZsHJJxZMtf2bW8E5WeZE,421
43
49
  tunacode/ui/decorators.py,sha256=I09tETtxPfcWdh1B3kEM0nJ8E6HvdBZAdYhRzYUa_p8,1901
44
- tunacode/ui/input.py,sha256=SmgwwJ4Ge1QQWk9hyu3gG1qke_aLRtyodOQGk7EThQ0,2956
45
- tunacode/ui/keybindings.py,sha256=uT23EYLLoso-b4ppN-RqbdYOYanGqMr5FKm8OphhhFs,701
46
- tunacode/ui/lexers.py,sha256=3qFwogyS_3zlS0NDxbc4e_sPvNHylNdCVMjPIIp85go,1507
47
- tunacode/ui/output.py,sha256=jBsVXLLdMeI1Cr8XxI5o-XdXUXMR17gZncl0Iq5T8Ug,3811
48
- tunacode/ui/panels.py,sha256=gsTDPX68LRcSxAlzCB01R3dfLT5sNWgSeoB-nCxeSmM,5933
49
- tunacode/ui/prompt_manager.py,sha256=i8LBDFalo72b9YP1-65X0v0DA62k-auSVEJMXXr31fs,4010
50
+ tunacode/ui/input.py,sha256=aiM5Kv2CI0Vqj05srR2R2Z4e4dZ8QY6yoNKQ04RlQhg,2909
51
+ tunacode/ui/keybindings.py,sha256=Tiw7L57Q-I7mc-qdE1aWVUxa4TCHgO4niUdoRvzO-6o,691
52
+ tunacode/ui/lexers.py,sha256=tmg4ic1enyTRLzanN5QPP7D_0n12YjX_8ZhsffzhXA4,1340
53
+ tunacode/ui/output.py,sha256=L7VdlwbxqiOlQLPvcty76zX2ImXAtSioK1w_BO5F7Hc,3859
54
+ tunacode/ui/panels.py,sha256=kuhCPvLwqorrqyS0ZF-RfuzbDZHwhKOC7KG2wQOqXds,5931
55
+ tunacode/ui/prompt_manager.py,sha256=uqmS796nXn7me-zcATyK8A_dz0M037zkPYhMZMbI6jI,4036
50
56
  tunacode/ui/tool_ui.py,sha256=XqJhVm3NNGwvIbMYQ8JmmLwjGeIT3WHCf5INrgBfpY8,6530
51
57
  tunacode/ui/validators.py,sha256=wkg-lQrP-Wjm5phUHKD3Mte8F1J3A2EjESQgPPtRcvQ,758
52
58
  tunacode/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
59
  tunacode/utils/bm25.py,sha256=yq7KFWP3g_zIsjUV7l2hFPXYCzXyNQUInLU7u4qsc_4,1909
54
60
  tunacode/utils/diff_utils.py,sha256=V9PM1Of0wvWNTVyw7iZYrNowFuRiKSyWiw5F39yRRYA,2394
55
61
  tunacode/utils/file_utils.py,sha256=AXiAJ_idtlmXEi9pMvwtfPy9Ys3yK-F4K7qb_NpwonU,923
62
+ tunacode/utils/lazy_imports.py,sha256=O5t6U1OaI7Ody69wPELQBh51aDyA5VxfLohZiD12oLY,1501
63
+ tunacode/utils/regex_cache.py,sha256=vuB7c1HbZxcRKCE4R3DiOYvTpF1Nj4bcxW5nNEiOEAw,1093
56
64
  tunacode/utils/ripgrep.py,sha256=AXUs2FFt0A7KBV996deS8wreIlUzKOlAHJmwrcAr4No,583
57
- tunacode/utils/system.py,sha256=FSoibTIH0eybs4oNzbYyufIiV6gb77QaeY2yGqW39AY,11381
65
+ tunacode/utils/system.py,sha256=-mmYdP5_kkNVo2xUnKUL8JxtN-SVAlYx5erofEkYnUA,12641
58
66
  tunacode/utils/text_utils.py,sha256=B9M1cuLTm_SSsr15WNHF6j7WdLWPvWzKZV0Lvfgdbjg,2458
59
67
  tunacode/utils/user_configuration.py,sha256=uFrpSRTUf0CijZjw1rOp1sovqy1uyr0UNcn85S6jvdk,1790
60
- tunacode_cli-0.0.5.dist-info/licenses/LICENSE,sha256=SgvEceNP-y3_WodntkMGAkZyl_hAUvzBw5T9W--7YpM,1070
61
- tunacode_cli-0.0.5.dist-info/METADATA,sha256=NPj-s0FCkwHywQzvnaqAdRIBSLGraEG-D73XXuTNVxU,7422
62
- tunacode_cli-0.0.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
63
- tunacode_cli-0.0.5.dist-info/entry_points.txt,sha256=hbkytikj4dGu6rizPuAd_DGUPBGF191RTnhr9wdhORY,51
64
- tunacode_cli-0.0.5.dist-info/top_level.txt,sha256=lKy2P6BWNi5XSA4DHFvyjQ14V26lDZctwdmhEJrxQbU,9
65
- tunacode_cli-0.0.5.dist-info/RECORD,,
68
+ tunacode_cli-0.0.7.dist-info/licenses/LICENSE,sha256=SgvEceNP-y3_WodntkMGAkZyl_hAUvzBw5T9W--7YpM,1070
69
+ tunacode_cli-0.0.7.dist-info/METADATA,sha256=JoBpfeN_0GZaB3qbRNoaSTBXEvs0EQHDhcN7dNTn-BU,7859
70
+ tunacode_cli-0.0.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
71
+ tunacode_cli-0.0.7.dist-info/entry_points.txt,sha256=hbkytikj4dGu6rizPuAd_DGUPBGF191RTnhr9wdhORY,51
72
+ tunacode_cli-0.0.7.dist-info/top_level.txt,sha256=lKy2P6BWNi5XSA4DHFvyjQ14V26lDZctwdmhEJrxQbU,9
73
+ tunacode_cli-0.0.7.dist-info/RECORD,,