tunacode-cli 0.0.13__py3-none-any.whl → 0.0.14__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.
- tunacode/cli/commands.py +205 -14
- tunacode/cli/repl.py +41 -2
- tunacode/configuration/defaults.py +1 -0
- tunacode/constants.py +1 -1
- tunacode/core/agents/main.py +218 -2
- tunacode/core/state.py +10 -2
- tunacode/prompts/system.txt +22 -0
- tunacode/tools/grep.py +760 -0
- tunacode/tools/read_file.py +15 -10
- tunacode/tools/run_command.py +13 -7
- tunacode/tools/update_file.py +9 -10
- tunacode/tools/write_file.py +8 -9
- {tunacode_cli-0.0.13.dist-info → tunacode_cli-0.0.14.dist-info}/METADATA +50 -14
- {tunacode_cli-0.0.13.dist-info → tunacode_cli-0.0.14.dist-info}/RECORD +18 -17
- {tunacode_cli-0.0.13.dist-info → tunacode_cli-0.0.14.dist-info}/WHEEL +0 -0
- {tunacode_cli-0.0.13.dist-info → tunacode_cli-0.0.14.dist-info}/entry_points.txt +0 -0
- {tunacode_cli-0.0.13.dist-info → tunacode_cli-0.0.14.dist-info}/licenses/LICENSE +0 -0
- {tunacode_cli-0.0.13.dist-info → tunacode_cli-0.0.14.dist-info}/top_level.txt +0 -0
tunacode/tools/read_file.py
CHANGED
|
@@ -7,12 +7,17 @@ Provides safe file reading with size limits and proper error handling.
|
|
|
7
7
|
|
|
8
8
|
import os
|
|
9
9
|
|
|
10
|
-
from tunacode.constants import (
|
|
11
|
-
|
|
10
|
+
from tunacode.constants import (
|
|
11
|
+
ERROR_FILE_DECODE,
|
|
12
|
+
ERROR_FILE_DECODE_DETAILS,
|
|
13
|
+
ERROR_FILE_NOT_FOUND,
|
|
14
|
+
ERROR_FILE_TOO_LARGE,
|
|
15
|
+
MAX_FILE_SIZE,
|
|
16
|
+
MSG_FILE_SIZE_LIMIT,
|
|
17
|
+
)
|
|
12
18
|
from tunacode.exceptions import ToolExecutionError
|
|
13
19
|
from tunacode.tools.base import FileBasedTool
|
|
14
|
-
from tunacode.types import
|
|
15
|
-
from tunacode.ui import console as default_ui
|
|
20
|
+
from tunacode.types import ToolResult
|
|
16
21
|
|
|
17
22
|
|
|
18
23
|
class ReadFileTool(FileBasedTool):
|
|
@@ -22,7 +27,7 @@ class ReadFileTool(FileBasedTool):
|
|
|
22
27
|
def tool_name(self) -> str:
|
|
23
28
|
return "Read"
|
|
24
29
|
|
|
25
|
-
async def _execute(self, filepath:
|
|
30
|
+
async def _execute(self, filepath: str) -> ToolResult:
|
|
26
31
|
"""Read the contents of a file.
|
|
27
32
|
|
|
28
33
|
Args:
|
|
@@ -45,7 +50,7 @@ class ReadFileTool(FileBasedTool):
|
|
|
45
50
|
content = file.read()
|
|
46
51
|
return content
|
|
47
52
|
|
|
48
|
-
async def _handle_error(self, error: Exception, filepath:
|
|
53
|
+
async def _handle_error(self, error: Exception, filepath: str = None) -> ToolResult:
|
|
49
54
|
"""Handle errors with specific messages for common cases.
|
|
50
55
|
|
|
51
56
|
Raises:
|
|
@@ -71,17 +76,17 @@ class ReadFileTool(FileBasedTool):
|
|
|
71
76
|
|
|
72
77
|
|
|
73
78
|
# Create the function that maintains the existing interface
|
|
74
|
-
async def read_file(filepath:
|
|
79
|
+
async def read_file(filepath: str) -> str:
|
|
75
80
|
"""
|
|
76
81
|
Read the contents of a file.
|
|
77
82
|
|
|
78
83
|
Args:
|
|
79
|
-
filepath
|
|
84
|
+
filepath: The path to the file to read.
|
|
80
85
|
|
|
81
86
|
Returns:
|
|
82
|
-
|
|
87
|
+
str: The contents of the file or an error message.
|
|
83
88
|
"""
|
|
84
|
-
tool = ReadFileTool(
|
|
89
|
+
tool = ReadFileTool(None) # No UI for pydantic-ai compatibility
|
|
85
90
|
try:
|
|
86
91
|
return await tool.execute(filepath)
|
|
87
92
|
except ToolExecutionError as e:
|
tunacode/tools/run_command.py
CHANGED
|
@@ -7,14 +7,20 @@ Provides controlled shell command execution with output capture and truncation.
|
|
|
7
7
|
|
|
8
8
|
import subprocess
|
|
9
9
|
|
|
10
|
-
from tunacode.constants import (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
from tunacode.constants import (
|
|
11
|
+
CMD_OUTPUT_FORMAT,
|
|
12
|
+
CMD_OUTPUT_NO_ERRORS,
|
|
13
|
+
CMD_OUTPUT_NO_OUTPUT,
|
|
14
|
+
CMD_OUTPUT_TRUNCATED,
|
|
15
|
+
COMMAND_OUTPUT_END_SIZE,
|
|
16
|
+
COMMAND_OUTPUT_START_INDEX,
|
|
17
|
+
COMMAND_OUTPUT_THRESHOLD,
|
|
18
|
+
ERROR_COMMAND_EXECUTION,
|
|
19
|
+
MAX_COMMAND_OUTPUT,
|
|
20
|
+
)
|
|
14
21
|
from tunacode.exceptions import ToolExecutionError
|
|
15
22
|
from tunacode.tools.base import BaseTool
|
|
16
23
|
from tunacode.types import ToolResult
|
|
17
|
-
from tunacode.ui import console as default_ui
|
|
18
24
|
|
|
19
25
|
|
|
20
26
|
class RunCommandTool(BaseTool):
|
|
@@ -89,7 +95,7 @@ class RunCommandTool(BaseTool):
|
|
|
89
95
|
|
|
90
96
|
|
|
91
97
|
# Create the function that maintains the existing interface
|
|
92
|
-
async def run_command(command: str) ->
|
|
98
|
+
async def run_command(command: str) -> str:
|
|
93
99
|
"""
|
|
94
100
|
Run a shell command and return the output. User must confirm risky commands.
|
|
95
101
|
|
|
@@ -99,7 +105,7 @@ async def run_command(command: str) -> ToolResult:
|
|
|
99
105
|
Returns:
|
|
100
106
|
ToolResult: The output of the command (stdout and stderr) or an error message.
|
|
101
107
|
"""
|
|
102
|
-
tool = RunCommandTool(
|
|
108
|
+
tool = RunCommandTool(None) # No UI for pydantic-ai compatibility
|
|
103
109
|
try:
|
|
104
110
|
return await tool.execute(command)
|
|
105
111
|
except ToolExecutionError as e:
|
tunacode/tools/update_file.py
CHANGED
|
@@ -11,8 +11,7 @@ from pydantic_ai.exceptions import ModelRetry
|
|
|
11
11
|
|
|
12
12
|
from tunacode.exceptions import ToolExecutionError
|
|
13
13
|
from tunacode.tools.base import FileBasedTool
|
|
14
|
-
from tunacode.types import
|
|
15
|
-
from tunacode.ui import console as default_ui
|
|
14
|
+
from tunacode.types import ToolResult
|
|
16
15
|
|
|
17
16
|
|
|
18
17
|
class UpdateFileTool(FileBasedTool):
|
|
@@ -23,7 +22,7 @@ class UpdateFileTool(FileBasedTool):
|
|
|
23
22
|
return "Update"
|
|
24
23
|
|
|
25
24
|
async def _execute(
|
|
26
|
-
self, filepath:
|
|
25
|
+
self, filepath: str, target: str, patch: str
|
|
27
26
|
) -> ToolResult:
|
|
28
27
|
"""Update an existing file by replacing a target text block with a patch.
|
|
29
28
|
|
|
@@ -75,7 +74,7 @@ class UpdateFileTool(FileBasedTool):
|
|
|
75
74
|
return f"File '{filepath}' updated successfully."
|
|
76
75
|
|
|
77
76
|
def _format_args(
|
|
78
|
-
self, filepath:
|
|
77
|
+
self, filepath: str, target: str = None, patch: str = None
|
|
79
78
|
) -> str:
|
|
80
79
|
"""Format arguments, truncating target and patch for display."""
|
|
81
80
|
args = [repr(filepath)]
|
|
@@ -96,20 +95,20 @@ class UpdateFileTool(FileBasedTool):
|
|
|
96
95
|
|
|
97
96
|
|
|
98
97
|
# Create the function that maintains the existing interface
|
|
99
|
-
async def update_file(filepath:
|
|
98
|
+
async def update_file(filepath: str, target: str, patch: str) -> str:
|
|
100
99
|
"""
|
|
101
100
|
Update an existing file by replacing a target text block with a patch.
|
|
102
101
|
Requires confirmation with diff before applying.
|
|
103
102
|
|
|
104
103
|
Args:
|
|
105
|
-
filepath
|
|
106
|
-
target
|
|
107
|
-
patch
|
|
104
|
+
filepath: The path to the file to update.
|
|
105
|
+
target: The entire, exact block of text to be replaced.
|
|
106
|
+
patch: The new block of text to insert.
|
|
108
107
|
|
|
109
108
|
Returns:
|
|
110
|
-
|
|
109
|
+
str: A message indicating the success or failure of the operation.
|
|
111
110
|
"""
|
|
112
|
-
tool = UpdateFileTool(
|
|
111
|
+
tool = UpdateFileTool(None) # No UI for pydantic-ai compatibility
|
|
113
112
|
try:
|
|
114
113
|
return await tool.execute(filepath, target, patch)
|
|
115
114
|
except ToolExecutionError as e:
|
tunacode/tools/write_file.py
CHANGED
|
@@ -11,8 +11,7 @@ from pydantic_ai.exceptions import ModelRetry
|
|
|
11
11
|
|
|
12
12
|
from tunacode.exceptions import ToolExecutionError
|
|
13
13
|
from tunacode.tools.base import FileBasedTool
|
|
14
|
-
from tunacode.types import
|
|
15
|
-
from tunacode.ui import console as default_ui
|
|
14
|
+
from tunacode.types import ToolResult
|
|
16
15
|
|
|
17
16
|
|
|
18
17
|
class WriteFileTool(FileBasedTool):
|
|
@@ -22,7 +21,7 @@ class WriteFileTool(FileBasedTool):
|
|
|
22
21
|
def tool_name(self) -> str:
|
|
23
22
|
return "Write"
|
|
24
23
|
|
|
25
|
-
async def _execute(self, filepath:
|
|
24
|
+
async def _execute(self, filepath: str, content: str) -> ToolResult:
|
|
26
25
|
"""Write content to a new file. Fails if the file already exists.
|
|
27
26
|
|
|
28
27
|
Args:
|
|
@@ -54,7 +53,7 @@ class WriteFileTool(FileBasedTool):
|
|
|
54
53
|
|
|
55
54
|
return f"Successfully wrote to new file: {filepath}"
|
|
56
55
|
|
|
57
|
-
def _format_args(self, filepath:
|
|
56
|
+
def _format_args(self, filepath: str, content: str = None) -> str:
|
|
58
57
|
"""Format arguments, truncating content for display."""
|
|
59
58
|
if content is not None and len(content) > 50:
|
|
60
59
|
return f"{repr(filepath)}, content='{content[:47]}...'"
|
|
@@ -62,19 +61,19 @@ class WriteFileTool(FileBasedTool):
|
|
|
62
61
|
|
|
63
62
|
|
|
64
63
|
# Create the function that maintains the existing interface
|
|
65
|
-
async def write_file(filepath:
|
|
64
|
+
async def write_file(filepath: str, content: str) -> str:
|
|
66
65
|
"""
|
|
67
66
|
Write content to a new file. Fails if the file already exists.
|
|
68
67
|
Requires confirmation before writing.
|
|
69
68
|
|
|
70
69
|
Args:
|
|
71
|
-
filepath
|
|
72
|
-
content
|
|
70
|
+
filepath: The path to the file to write to.
|
|
71
|
+
content: The content to write to the file.
|
|
73
72
|
|
|
74
73
|
Returns:
|
|
75
|
-
|
|
74
|
+
A message indicating the success or failure of the operation.
|
|
76
75
|
"""
|
|
77
|
-
tool = WriteFileTool(
|
|
76
|
+
tool = WriteFileTool(None) # No UI for pydantic-ai compatibility
|
|
78
77
|
try:
|
|
79
78
|
return await tool.execute(filepath, content)
|
|
80
79
|
except ToolExecutionError as e:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tunacode-cli
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.14
|
|
4
4
|
Summary: Your agentic CLI developer.
|
|
5
5
|
Author-email: larock22 <noreply@github.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -58,13 +58,14 @@ Dynamic: license-file
|
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
61
|
-
### Recent Updates
|
|
61
|
+
### Recent Updates (v0.0.14)
|
|
62
62
|
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
63
|
+
- **🔧 JSON Tool Parsing Fallback**: Automatic recovery when API providers fail with structured tool calling
|
|
64
|
+
- **⚡ Enhanced Reliability**: Fixed parameter naming issues that caused tool schema errors
|
|
65
|
+
- **🔄 Configuration Management**: New `/refresh` command to reload config without restart
|
|
66
|
+
- **🧠 Improved ReAct Reasoning**: Enhanced iteration limits (now defaults to 20) and better thought processing
|
|
67
|
+
- **🛠️ New Debug Commands**: `/parsetools` for manual JSON parsing, `/iterations` for controlling reasoning depth
|
|
68
|
+
- **📊 Better Error Recovery**: Multiple fallback mechanisms for various failure scenarios
|
|
68
69
|
|
|
69
70
|
### Core Features
|
|
70
71
|
|
|
@@ -75,17 +76,18 @@ Dynamic: license-file
|
|
|
75
76
|
### **Multi-Provider Support**
|
|
76
77
|
|
|
77
78
|
- Anthropic Claude
|
|
78
|
-
- OpenAI GPT
|
|
79
|
+
- OpenAI GPT
|
|
79
80
|
- Google Gemini
|
|
80
81
|
- OpenRouter (100+ models)
|
|
81
82
|
- Any OpenAI-compatible API
|
|
82
83
|
|
|
83
84
|
### **Developer Tools**
|
|
84
85
|
|
|
85
|
-
-
|
|
86
|
+
- 6 core tools: bash, grep, read_file, write_file, update_file, run_command
|
|
86
87
|
- MCP (Model Context Protocol) support
|
|
87
88
|
- File operation confirmations with diffs
|
|
88
89
|
- Per-project context guides (TUNACODE.md)
|
|
90
|
+
- JSON tool parsing fallback for API compatibility
|
|
89
91
|
|
|
90
92
|
</td>
|
|
91
93
|
<td width="50%">
|
|
@@ -104,6 +106,7 @@ Dynamic: license-file
|
|
|
104
106
|
- Async throughout
|
|
105
107
|
- Modular command system
|
|
106
108
|
- Rich UI with syntax highlighting
|
|
109
|
+
- ReAct reasoning patterns
|
|
107
110
|
|
|
108
111
|
</td>
|
|
109
112
|
</tr>
|
|
@@ -268,6 +271,8 @@ Learn more at [modelcontextprotocol.io](https://modelcontextprotocol.io/)
|
|
|
268
271
|
|
|
269
272
|
## Commands Reference
|
|
270
273
|
|
|
274
|
+
### Core Commands
|
|
275
|
+
|
|
271
276
|
| Command | Description |
|
|
272
277
|
| -------------------------------- | -------------------------------- |
|
|
273
278
|
| `/help` | Show available commands |
|
|
@@ -281,13 +286,43 @@ Learn more at [modelcontextprotocol.io](https://modelcontextprotocol.io/)
|
|
|
281
286
|
| `/dump` | Show message history (debug) |
|
|
282
287
|
| `exit` | Exit application |
|
|
283
288
|
|
|
289
|
+
### Debug & Recovery Commands
|
|
290
|
+
|
|
291
|
+
| Command | Description |
|
|
292
|
+
| -------------------------------- | -------------------------------- |
|
|
293
|
+
| `/thoughts` | Toggle ReAct thought display |
|
|
294
|
+
| `/iterations <1-50>` | Set max reasoning iterations |
|
|
295
|
+
| `/parsetools` | Parse JSON tool calls manually |
|
|
296
|
+
| `/fix` | Fix orphaned tool calls |
|
|
297
|
+
| `/refresh` | Reload configuration from defaults |
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Reliability Features
|
|
302
|
+
|
|
303
|
+
### JSON Tool Parsing Fallback
|
|
304
|
+
|
|
305
|
+
TunaCode automatically handles API provider failures with robust JSON parsing:
|
|
306
|
+
|
|
307
|
+
- **Automatic Recovery**: When structured tool calling fails, TunaCode parses JSON from text responses
|
|
308
|
+
- **Multiple Formats**: Supports inline JSON, code blocks, and complex nested structures
|
|
309
|
+
- **Manual Recovery**: Use `/parsetools` when automatic parsing needs assistance
|
|
310
|
+
- **Visual Feedback**: See `🔧 Recovered using JSON tool parsing` messages during fallback
|
|
311
|
+
|
|
312
|
+
### Enhanced Error Handling
|
|
313
|
+
|
|
314
|
+
- **Tool Schema Fixes**: Consistent parameter naming across all tools
|
|
315
|
+
- **Orphaned Tool Call Recovery**: Automatic cleanup with `/fix` command
|
|
316
|
+
- **Configuration Refresh**: Update settings without restart using `/refresh`
|
|
317
|
+
- **ReAct Reasoning**: Configurable iteration limits for complex problem solving
|
|
318
|
+
|
|
284
319
|
---
|
|
285
320
|
|
|
286
321
|
## Customization
|
|
287
322
|
|
|
288
323
|
### Project Guides
|
|
289
324
|
|
|
290
|
-
Create a `TUNACODE.md` file your project root to customize TunaCode's behavior:
|
|
325
|
+
Create a `TUNACODE.md` file in your project root to customize TunaCode's behavior:
|
|
291
326
|
|
|
292
327
|
```markdown
|
|
293
328
|
# Project Guide
|
|
@@ -337,13 +372,14 @@ src/tunacode/
|
|
|
337
372
|
│ └── tool_handler.py # Tool execution and validation
|
|
338
373
|
│
|
|
339
374
|
├── services/ # External Services
|
|
340
|
-
│
|
|
341
|
-
│ └── undo_service.py # Undo operations (beta)
|
|
375
|
+
│ └── mcp.py # Model Context Protocol integration
|
|
342
376
|
│
|
|
343
377
|
├── tools/ # AI Agent Tools
|
|
344
378
|
│ ├── base.py # Tool base classes
|
|
379
|
+
│ ├── bash.py # Enhanced shell command execution
|
|
380
|
+
│ ├── grep.py # Parallel content search tool
|
|
345
381
|
│ ├── read_file.py # File reading tool
|
|
346
|
-
│ ├── run_command.py #
|
|
382
|
+
│ ├── run_command.py # Basic command execution tool
|
|
347
383
|
│ ├── update_file.py # File modification tool
|
|
348
384
|
│ └── write_file.py # File creation tool
|
|
349
385
|
│
|
|
@@ -360,7 +396,7 @@ src/tunacode/
|
|
|
360
396
|
│ └── validators.py # Input validation
|
|
361
397
|
│
|
|
362
398
|
├── utils/ # Utility Functions
|
|
363
|
-
│ ├── bm25.py # BM25 search algorithm(beta)
|
|
399
|
+
│ ├── bm25.py # BM25 search algorithm (beta)
|
|
364
400
|
│ ├── diff_utils.py # Diff generation and formatting
|
|
365
401
|
│ ├── file_utils.py # File system operations
|
|
366
402
|
│ ├── ripgrep.py # Code search utilities
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
tunacode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
tunacode/constants.py,sha256=
|
|
2
|
+
tunacode/constants.py,sha256=BOVIWHNIfskD3863sTZRjTb0mTMmYVQuUXbViQsoc3o,3807
|
|
3
3
|
tunacode/context.py,sha256=0ttsxxLAyD4pSoxw7S-pyzor0JUkhOFZh96aAf4Kqsg,2634
|
|
4
4
|
tunacode/exceptions.py,sha256=RFUH8wOsWEvSPGIYM2exr4t47YkEyZt4Fr-DfTo6_JY,2647
|
|
5
5
|
tunacode/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
tunacode/setup.py,sha256=dYn0NeAxtNIDSogWEmGSyjb9wsr8AonZ8vAo5sw9NIw,1909
|
|
7
7
|
tunacode/types.py,sha256=5mMJDgFqVcKzhtHh9unPISBFqkeNje6KISGUpRkqRjY,7146
|
|
8
8
|
tunacode/cli/__init__.py,sha256=zgs0UbAck8hfvhYsWhWOfBe5oK09ug2De1r4RuQZREA,55
|
|
9
|
-
tunacode/cli/commands.py,sha256=
|
|
9
|
+
tunacode/cli/commands.py,sha256=PVibeHVoukKYq1YGQOFVJlsjMMJuzbr_8HVUpuNDxWc,26015
|
|
10
10
|
tunacode/cli/main.py,sha256=mmJ-x5fUcW2349fz-85LSiNRf0hvKOw0TQfxtPWWbDg,1760
|
|
11
|
-
tunacode/cli/repl.py,sha256=
|
|
11
|
+
tunacode/cli/repl.py,sha256=BR2TNTNf1g14V278loSA3JysiaYrM2nXhL6BxmVqUuI,10942
|
|
12
12
|
tunacode/cli/textual_app.py,sha256=EdeeKjIikrtj-3FleBtP5DX5KwnMjc_bPepUB5DDkvw,13202
|
|
13
13
|
tunacode/cli/textual_bridge.py,sha256=QoPNSCVwdzVoNE5WzcZiH0jk2JopAoEvCRXGifwCzYU,6417
|
|
14
14
|
tunacode/configuration/__init__.py,sha256=MbVXy8bGu0yKehzgdgZ_mfWlYGvIdb1dY2Ly75nfuPE,17
|
|
15
|
-
tunacode/configuration/defaults.py,sha256=
|
|
15
|
+
tunacode/configuration/defaults.py,sha256=7UdHP50NmnZWlx0f1PGV4JZIpmQem191vWisGky6AVA,688
|
|
16
16
|
tunacode/configuration/models.py,sha256=XPobkLM_TzKTuMIWhK-svJfGRGFT9r2LhKEM6rv6QHk,3756
|
|
17
17
|
tunacode/configuration/settings.py,sha256=KoN0u6GG3Hh_TWt02D_wpRfbACYri3gCDTXHtJfHl2w,994
|
|
18
18
|
tunacode/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
-
tunacode/core/state.py,sha256=
|
|
19
|
+
tunacode/core/state.py,sha256=djkU7dL7kns74vUxgL6q_PyCD9qLElxgUk_8KpM4tJo,1379
|
|
20
20
|
tunacode/core/tool_handler.py,sha256=OKx7jM8pml6pSEnoARu33_uBY8awJBqvhbVeBn6T4ow,1804
|
|
21
21
|
tunacode/core/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
-
tunacode/core/agents/main.py,sha256=
|
|
22
|
+
tunacode/core/agents/main.py,sha256=GMOtF7wvLqRXYHH_tvTnRdLkIDnuufGrC3fJ6SZcEw4,14118
|
|
23
23
|
tunacode/core/setup/__init__.py,sha256=lzdpY6rIGf9DDlDBDGFvQZaSOQeFsNglHbkpq1-GtU8,376
|
|
24
24
|
tunacode/core/setup/agent_setup.py,sha256=trELO8cPnWo36BBnYmXDEnDPdhBg0p-VLnx9A8hSSSQ,1401
|
|
25
25
|
tunacode/core/setup/base.py,sha256=cbyT2-xK2mWgH4EO17VfM_OM2bj0kT895NW2jSXbe3c,968
|
|
@@ -27,16 +27,17 @@ tunacode/core/setup/config_setup.py,sha256=pAa6nLNuJPsMzDMxwZj_d0DxvT-rIJuPxflV4
|
|
|
27
27
|
tunacode/core/setup/coordinator.py,sha256=Rdudp2znfAV240HdXjvXPAn_4VZt_pNZBgEY8v_uPHw,1652
|
|
28
28
|
tunacode/core/setup/environment_setup.py,sha256=n3IrObKEynHZSwtUJ1FddMg2C4sHz7ca42awemImV8s,2225
|
|
29
29
|
tunacode/core/setup/git_safety_setup.py,sha256=6sAQ0L74rRpayR7hWpnPyGKxCzW1Mk-2gm1BLt-fRyg,7170
|
|
30
|
-
tunacode/prompts/system.txt,sha256=
|
|
30
|
+
tunacode/prompts/system.txt,sha256=wZkP3vTv4h8ukBUkCZ9yR-oZt-ZcdvIRPxl1uN3AHIk,4030
|
|
31
31
|
tunacode/services/__init__.py,sha256=w_E8QK6RnvKSvU866eDe8BCRV26rAm4d3R-Yg06OWCU,19
|
|
32
32
|
tunacode/services/mcp.py,sha256=R48X73KQjQ9vwhBrtbWHSBl-4K99QXmbIhh5J_1Gezo,3046
|
|
33
33
|
tunacode/tools/__init__.py,sha256=l5O018T-bUjCSy7JSupJoKojZp07uAz3913qDFVdCzM,29
|
|
34
34
|
tunacode/tools/base.py,sha256=UioygDbXy0JY67EIcyEoYt2TBfX9-n9Usf_1huQ4zOE,7046
|
|
35
35
|
tunacode/tools/bash.py,sha256=h8pUzfp7n2aVtAJcUICJOJV0FBTphifZdYrzHLvrZjA,8781
|
|
36
|
-
tunacode/tools/
|
|
37
|
-
tunacode/tools/
|
|
38
|
-
tunacode/tools/
|
|
39
|
-
tunacode/tools/
|
|
36
|
+
tunacode/tools/grep.py,sha256=sqwZEsBCWV0LEz1J1Jc9sGBALf9MxLFc61Xg7nSwCNU,28299
|
|
37
|
+
tunacode/tools/read_file.py,sha256=zt45qNPLFGn7JJb3iQAAFcLjXQDx1jruzOoOhxCfME8,2983
|
|
38
|
+
tunacode/tools/run_command.py,sha256=mJeuazhEQBeNaWgvYp4XZYilWRqotXLeTOA2jx0nOnI,3719
|
|
39
|
+
tunacode/tools/update_file.py,sha256=-kla9849xYPD3GZCBwGeH4e2o_OMGT6A_0zvcPUoso8,3985
|
|
40
|
+
tunacode/tools/write_file.py,sha256=prL6u8XOi9ZyPU-YNlG9YMLbSLrDJXDRuDX73ncXh-k,2699
|
|
40
41
|
tunacode/ui/__init__.py,sha256=aRNE2pS50nFAX6y--rSGMNYwhz905g14gRd6g4BolYU,13
|
|
41
42
|
tunacode/ui/completers.py,sha256=E3dUe3jHsrIwqWWfWQGCHWnnpo6NJAZXBhlzY3yDKPw,5051
|
|
42
43
|
tunacode/ui/console.py,sha256=2Su2y9o5zQVmOP-V1SMhTqMjqsiAMXXY-iB9QNHkvxM,1890
|
|
@@ -58,9 +59,9 @@ tunacode/utils/ripgrep.py,sha256=AXUs2FFt0A7KBV996deS8wreIlUzKOlAHJmwrcAr4No,583
|
|
|
58
59
|
tunacode/utils/system.py,sha256=FSoibTIH0eybs4oNzbYyufIiV6gb77QaeY2yGqW39AY,11381
|
|
59
60
|
tunacode/utils/text_utils.py,sha256=B9M1cuLTm_SSsr15WNHF6j7WdLWPvWzKZV0Lvfgdbjg,2458
|
|
60
61
|
tunacode/utils/user_configuration.py,sha256=uFrpSRTUf0CijZjw1rOp1sovqy1uyr0UNcn85S6jvdk,1790
|
|
61
|
-
tunacode_cli-0.0.
|
|
62
|
-
tunacode_cli-0.0.
|
|
63
|
-
tunacode_cli-0.0.
|
|
64
|
-
tunacode_cli-0.0.
|
|
65
|
-
tunacode_cli-0.0.
|
|
66
|
-
tunacode_cli-0.0.
|
|
62
|
+
tunacode_cli-0.0.14.dist-info/licenses/LICENSE,sha256=Btzdu2kIoMbdSp6OyCLupB1aRgpTCJ_szMimgEnpkkE,1056
|
|
63
|
+
tunacode_cli-0.0.14.dist-info/METADATA,sha256=14VXnSgm6XqCQHSwaiVI0nT_2usAuqtpKM9bKbV3v6I,14633
|
|
64
|
+
tunacode_cli-0.0.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
65
|
+
tunacode_cli-0.0.14.dist-info/entry_points.txt,sha256=hbkytikj4dGu6rizPuAd_DGUPBGF191RTnhr9wdhORY,51
|
|
66
|
+
tunacode_cli-0.0.14.dist-info/top_level.txt,sha256=lKy2P6BWNi5XSA4DHFvyjQ14V26lDZctwdmhEJrxQbU,9
|
|
67
|
+
tunacode_cli-0.0.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|