tunacode-cli 0.0.35__py3-none-any.whl → 0.0.37__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 (32) hide show
  1. tunacode/cli/commands/__init__.py +62 -0
  2. tunacode/cli/commands/base.py +99 -0
  3. tunacode/cli/commands/implementations/__init__.py +38 -0
  4. tunacode/cli/commands/implementations/conversation.py +115 -0
  5. tunacode/cli/commands/implementations/debug.py +189 -0
  6. tunacode/cli/commands/implementations/development.py +77 -0
  7. tunacode/cli/commands/implementations/model.py +61 -0
  8. tunacode/cli/commands/implementations/system.py +216 -0
  9. tunacode/cli/commands/registry.py +236 -0
  10. tunacode/cli/repl.py +91 -30
  11. tunacode/configuration/settings.py +9 -2
  12. tunacode/constants.py +1 -1
  13. tunacode/core/agents/main.py +53 -3
  14. tunacode/core/agents/utils.py +304 -0
  15. tunacode/core/setup/config_setup.py +0 -1
  16. tunacode/core/state.py +13 -2
  17. tunacode/setup.py +7 -2
  18. tunacode/tools/read_file.py +8 -2
  19. tunacode/tools/read_file_async_poc.py +18 -10
  20. tunacode/tools/run_command.py +11 -4
  21. tunacode/ui/console.py +31 -4
  22. tunacode/ui/output.py +7 -2
  23. tunacode/ui/panels.py +98 -5
  24. tunacode/ui/utils.py +3 -0
  25. tunacode/utils/text_utils.py +6 -2
  26. {tunacode_cli-0.0.35.dist-info → tunacode_cli-0.0.37.dist-info}/METADATA +17 -17
  27. {tunacode_cli-0.0.35.dist-info → tunacode_cli-0.0.37.dist-info}/RECORD +31 -21
  28. tunacode/cli/commands.py +0 -893
  29. {tunacode_cli-0.0.35.dist-info → tunacode_cli-0.0.37.dist-info}/WHEEL +0 -0
  30. {tunacode_cli-0.0.35.dist-info → tunacode_cli-0.0.37.dist-info}/entry_points.txt +0 -0
  31. {tunacode_cli-0.0.35.dist-info → tunacode_cli-0.0.37.dist-info}/licenses/LICENSE +0 -0
  32. {tunacode_cli-0.0.35.dist-info → tunacode_cli-0.0.37.dist-info}/top_level.txt +0 -0
tunacode/ui/panels.py CHANGED
@@ -3,6 +3,7 @@
3
3
  from typing import Any, Optional, Union
4
4
 
5
5
  from rich.box import ROUNDED
6
+ from rich.live import Live
6
7
  from rich.markdown import Markdown
7
8
  from rich.padding import Padding
8
9
  from rich.panel import Panel
@@ -10,11 +11,30 @@ from rich.pretty import Pretty
10
11
  from rich.table import Table
11
12
 
12
13
  from tunacode.configuration.models import ModelRegistry
13
- from tunacode.constants import (APP_NAME, CMD_CLEAR, CMD_COMPACT, CMD_DUMP, CMD_EXIT, CMD_HELP,
14
- CMD_MODEL, CMD_YOLO, DESC_CLEAR, DESC_COMPACT, DESC_DUMP, DESC_EXIT,
15
- DESC_HELP, DESC_MODEL, DESC_MODEL_DEFAULT, DESC_MODEL_SWITCH,
16
- DESC_YOLO, PANEL_AVAILABLE_COMMANDS, PANEL_ERROR,
17
- PANEL_MESSAGE_HISTORY, PANEL_MODELS, UI_COLORS)
14
+ from tunacode.constants import (
15
+ APP_NAME,
16
+ CMD_CLEAR,
17
+ CMD_COMPACT,
18
+ CMD_DUMP,
19
+ CMD_EXIT,
20
+ CMD_HELP,
21
+ CMD_MODEL,
22
+ CMD_YOLO,
23
+ DESC_CLEAR,
24
+ DESC_COMPACT,
25
+ DESC_DUMP,
26
+ DESC_EXIT,
27
+ DESC_HELP,
28
+ DESC_MODEL,
29
+ DESC_MODEL_DEFAULT,
30
+ DESC_MODEL_SWITCH,
31
+ DESC_YOLO,
32
+ PANEL_AVAILABLE_COMMANDS,
33
+ PANEL_ERROR,
34
+ PANEL_MESSAGE_HISTORY,
35
+ PANEL_MODELS,
36
+ UI_COLORS,
37
+ )
18
38
  from tunacode.core.state import StateManager
19
39
  from tunacode.utils.file_utils import DotDict
20
40
 
@@ -55,6 +75,79 @@ async def agent(text: str, bottom: int = 1) -> None:
55
75
  await panel(title, Markdown(text), bottom=bottom, border_style=colors.primary)
56
76
 
57
77
 
78
+ class StreamingAgentPanel:
79
+ """Streaming agent panel using Rich.Live for progressive display."""
80
+
81
+ def __init__(self, bottom: int = 1):
82
+ self.bottom = bottom
83
+ self.title = f"[bold {colors.primary}]●[/bold {colors.primary}] {APP_NAME}"
84
+ self.content = ""
85
+ self.live = None
86
+
87
+ def _create_panel(self) -> Panel:
88
+ """Create a Rich panel with current content."""
89
+ markdown_content = Markdown(self.content or "Thinking...")
90
+ panel_obj = Panel(
91
+ Padding(markdown_content, (0, 1, 0, 1)),
92
+ title=f"[bold]{self.title}[/bold]",
93
+ title_align="left",
94
+ border_style=colors.primary,
95
+ padding=(0, 1),
96
+ box=ROUNDED,
97
+ )
98
+ return Padding(
99
+ panel_obj,
100
+ (
101
+ DEFAULT_PANEL_PADDING["top"],
102
+ DEFAULT_PANEL_PADDING["right"],
103
+ self.bottom,
104
+ DEFAULT_PANEL_PADDING["left"],
105
+ ),
106
+ )
107
+
108
+ async def start(self):
109
+ """Start the live streaming display."""
110
+ from .output import console
111
+
112
+ self.live = Live(self._create_panel(), console=console, refresh_per_second=4)
113
+ self.live.start()
114
+
115
+ async def update(self, content_chunk: str):
116
+ """Update the streaming display with new content."""
117
+ self.content += content_chunk
118
+ if self.live:
119
+ self.live.update(self._create_panel())
120
+
121
+ async def set_content(self, content: str):
122
+ """Set the complete content (overwrites previous)."""
123
+ self.content = content
124
+ if self.live:
125
+ self.live.update(self._create_panel())
126
+
127
+ async def stop(self):
128
+ """Stop the live streaming display."""
129
+ if self.live:
130
+ self.live.stop()
131
+ self.live = None
132
+
133
+
134
+ async def agent_streaming(content_stream, bottom: int = 1):
135
+ """Display an agent panel with streaming content updates.
136
+
137
+ Args:
138
+ content_stream: Async iterator yielding content chunks
139
+ bottom: Bottom padding for the panel
140
+ """
141
+ panel = StreamingAgentPanel(bottom=bottom)
142
+ await panel.start()
143
+
144
+ try:
145
+ async for chunk in content_stream:
146
+ await panel.update(chunk)
147
+ finally:
148
+ await panel.stop()
149
+
150
+
58
151
  async def error(text: str) -> None:
59
152
  """Display an error panel."""
60
153
  await panel(PANEL_ERROR, text, style=colors.error)
tunacode/ui/utils.py ADDED
@@ -0,0 +1,3 @@
1
+ from rich.console import Console as RichConsole
2
+
3
+ console = RichConsole()
@@ -67,8 +67,12 @@ def expand_file_refs(text: str) -> Tuple[str, List[str]]:
67
67
  import os
68
68
  import re
69
69
 
70
- from tunacode.constants import (ERROR_FILE_NOT_FOUND, ERROR_FILE_TOO_LARGE, MAX_FILE_SIZE,
71
- MSG_FILE_SIZE_LIMIT)
70
+ from tunacode.constants import (
71
+ ERROR_FILE_NOT_FOUND,
72
+ ERROR_FILE_TOO_LARGE,
73
+ MAX_FILE_SIZE,
74
+ MSG_FILE_SIZE_LIMIT,
75
+ )
72
76
 
73
77
  pattern = re.compile(r"@([\w./_-]+)")
74
78
  expanded_files = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tunacode-cli
3
- Version: 0.0.35
3
+ Version: 0.0.37
4
4
  Summary: Your agentic CLI developer.
5
5
  Author-email: larock22 <noreply@github.com>
6
6
  License-Expression: MIT
@@ -26,9 +26,7 @@ Requires-Dist: pygments==2.19.1
26
26
  Requires-Dist: rich==14.0.0
27
27
  Provides-Extra: dev
28
28
  Requires-Dist: build; extra == "dev"
29
- Requires-Dist: black; extra == "dev"
30
- Requires-Dist: flake8; extra == "dev"
31
- Requires-Dist: isort; extra == "dev"
29
+ Requires-Dist: ruff; extra == "dev"
32
30
  Requires-Dist: pytest; extra == "dev"
33
31
  Requires-Dist: pytest-cov; extra == "dev"
34
32
  Requires-Dist: pytest-asyncio; extra == "dev"
@@ -70,7 +68,7 @@ Choose your AI provider and set your API key:
70
68
  # OpenAI
71
69
  tunacode --model "openai:gpt-4o" --key "sk-your-openai-key"
72
70
 
73
- # Anthropic Claude
71
+ # Anthropic Claude
74
72
  tunacode --model "anthropic:claude-3.5-sonnet" --key "sk-ant-your-anthropic-key"
75
73
 
76
74
  # OpenRouter (100+ models)
@@ -82,13 +80,14 @@ Your config is saved to `~/.config/tunacode.json` (edit directly with `nvim ~/.c
82
80
  ### Recommended Models
83
81
 
84
82
  Based on extensive testing, these models provide the best performance:
83
+
85
84
  - `google/gemini-2.5-pro` - Excellent for complex reasoning
86
85
  - `openai/gpt-4.1` - Strong general-purpose model
87
86
  - `deepseek/deepseek-r1-0528` - Great for code generation
88
87
  - `openai/gpt-4.1-mini` - Fast and cost-effective
89
88
  - `anthropic/claude-4-sonnet-20250522` - Superior context handling
90
89
 
91
- *Note: Formal evaluations coming soon. Any model can work, but these have shown the best results in practice.*
90
+ _Note: Formal evaluations coming soon. Any model can work, but these have shown the best results in practice._
92
91
 
93
92
  ## Start Coding
94
93
 
@@ -98,16 +97,16 @@ tunacode
98
97
 
99
98
  ## Basic Commands
100
99
 
101
- | Command | Description |
102
- | ------- | ----------- |
103
- | `/help` | Show all commands |
104
- | `/model <provider:name>` | Switch model |
105
- | `/clear` | Clear message history |
106
- | `/compact` | Summarize conversation |
107
- | `/branch <name>` | Create Git branch |
108
- | `/yolo` | Skip confirmations |
109
- | `!<command>` | Run shell command |
110
- | `exit` | Exit TunaCode |
100
+ | Command | Description |
101
+ | ------------------------ | ---------------------- |
102
+ | `/help` | Show all commands |
103
+ | `/model <provider:name>` | Switch model |
104
+ | `/clear` | Clear message history |
105
+ | `/compact` | Summarize conversation |
106
+ | `/branch <name>` | Create Git branch |
107
+ | `/yolo` | Skip confirmations |
108
+ | `!<command>` | Run shell command |
109
+ | `exit` | Exit TunaCode |
111
110
 
112
111
  ## Performance
113
112
 
@@ -122,11 +121,12 @@ Multiple file reads, directory listings, and searches execute concurrently using
122
121
  - **Streaming UI**: Currently working on implementing streaming responses for better user experience
123
122
  - **Bug Fixes**: Actively addressing issues - please report any bugs you encounter!
124
123
 
125
- *Note: While the tool is fully functional, we're focusing on stability and core features before optimizing for speed.*
124
+ _Note: While the tool is fully functional, we're focusing on stability and core features before optimizing for speed._
126
125
 
127
126
  ## Safety First
128
127
 
129
128
  ⚠️ **Important**: TunaCode can modify your codebase. Always:
129
+
130
130
  - Use Git branches before making changes
131
131
  - Review file modifications before confirming
132
132
  - Keep backups of important work
@@ -1,33 +1,42 @@
1
1
  tunacode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- tunacode/constants.py,sha256=OnQYL4TeNFuMCo_7x9FGWmjQCSDOB544wPPs9oOKk-8,4074
2
+ tunacode/constants.py,sha256=ri3tiaz69KDnxnTdQDQxcz85_qXe4P3JE7KafTpDroU,4074
3
3
  tunacode/context.py,sha256=6sterdRvPOyG3LU0nEAXpBsEPZbO3qtPyTlJBi-_VXE,2612
4
4
  tunacode/exceptions.py,sha256=mTWXuWyr1k16CGLWN2tsthDGi7lbx1JK0ekIqogYDP8,3105
5
5
  tunacode/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- tunacode/setup.py,sha256=dYn0NeAxtNIDSogWEmGSyjb9wsr8AonZ8vAo5sw9NIw,1909
6
+ tunacode/setup.py,sha256=XPt4eAK-qcIZQv64jGZ_ryxcImDwps9OmXjJfIS1xcs,1899
7
7
  tunacode/types.py,sha256=BciT-uxnQ44iC-4QiDY72OD23LOtqSyMOuK_N0ttlaA,7676
8
8
  tunacode/cli/__init__.py,sha256=zgs0UbAck8hfvhYsWhWOfBe5oK09ug2De1r4RuQZREA,55
9
- tunacode/cli/commands.py,sha256=r-WYp5ajzkZfFjiLXuK9pfB5ugq3HWQyhRB8Usr567k,31668
10
9
  tunacode/cli/main.py,sha256=PIcFnfmIoI_pmK2y-zB_ouJbzR5fbSI7zsKQNPB_J8o,2406
11
- tunacode/cli/repl.py,sha256=ELnJBk3Vn2almXmmCIjGfgi7J5kNNVnO0o4KNYGXF9Q,14556
10
+ tunacode/cli/repl.py,sha256=SoW5QiMohHB6BLuP8grCdNrrJq-HTF80p6RFmoMMeqk,17227
12
11
  tunacode/cli/textual_app.py,sha256=14-Nt0IIETmyHBrNn9uwSF3EwCcutwTp6gdoKgNm0sY,12593
13
12
  tunacode/cli/textual_bridge.py,sha256=LvqiTtF0hu3gNujzpKaW9h-m6xzEP3OH2M8KL2pCwRc,6333
13
+ tunacode/cli/commands/__init__.py,sha256=YMrLz7szrmseJCRZGGX6_TyO3dJU8_QDCOFEhRAztzo,1634
14
+ tunacode/cli/commands/base.py,sha256=GxUuDsDSpz0iXryy8MrEw88UM3C3yxL__kDK1QhshoA,2517
15
+ tunacode/cli/commands/registry.py,sha256=d2dSAKrz_c02zU2AKtWghqPmm-p7XG_L81yj9nI1qu8,8152
16
+ tunacode/cli/commands/implementations/__init__.py,sha256=sRFG2aktjtWt-M0Co_GdeLjODiVjEFqHDcLyyVabj8M,917
17
+ tunacode/cli/commands/implementations/conversation.py,sha256=EsnsZB6yyVI_sbNNMvk37tCz3iAj4E85R9ev696qeqg,4683
18
+ tunacode/cli/commands/implementations/debug.py,sha256=TdP72Dpd3Nq3lwwyj0qZEdbSjDDmRyFu-0t6ttPFNno,6769
19
+ tunacode/cli/commands/implementations/development.py,sha256=kZRdVgReVmGU0uijFxtPio2RYkTrYMufOwgI1Aj1_NU,2729
20
+ tunacode/cli/commands/implementations/model.py,sha256=uthx6IX9KwgwywNTDklkJpqCbaTX9h1_p-eVmqL73WQ,2245
21
+ tunacode/cli/commands/implementations/system.py,sha256=2cGw5iCJO3aNhXTFF28CgAIyLgslvHmpfyL2ZHVB6oQ,7903
14
22
  tunacode/configuration/__init__.py,sha256=MbVXy8bGu0yKehzgdgZ_mfWlYGvIdb1dY2Ly75nfuPE,17
15
23
  tunacode/configuration/defaults.py,sha256=lNeJUW1S8zj4-XTCkMP9UaDc-tHWXLff9K8t0uPA_oE,801
16
24
  tunacode/configuration/models.py,sha256=XPobkLM_TzKTuMIWhK-svJfGRGFT9r2LhKEM6rv6QHk,3756
17
- tunacode/configuration/settings.py,sha256=lm2ov8rG1t4C5JIXMOhIKik5FAsjpuLVYtFmnE1ZQ3k,995
25
+ tunacode/configuration/settings.py,sha256=KoN0u6GG3Hh_TWt02D_wpRfbACYri3gCDTXHtJfHl2w,994
18
26
  tunacode/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
27
  tunacode/core/code_index.py,sha256=jgAx3lSWP_DwnyiP5Jkm1YvX4JJyI4teMzlNrJSpEOA,15661
20
- tunacode/core/state.py,sha256=PHGCGjx_X03I5jO-T1JkREQm4cwYEXQty59JJlnk24c,1608
28
+ tunacode/core/state.py,sha256=d2xUa7sRYizVc1mkaQN4aU034VSeh9nxQadzpL-aRas,1810
21
29
  tunacode/core/tool_handler.py,sha256=BPjR013OOO0cLXPdLeL2FDK0ixUwOYu59FfHdcdFhp4,2277
22
30
  tunacode/core/agents/__init__.py,sha256=UUJiPYb91arwziSpjd7vIk7XNGA_4HQbsOIbskSqevA,149
23
- tunacode/core/agents/main.py,sha256=-QwKSKoPLdD-JlKPjwMUSxNu_TSrj-pdUleWR2FN-A0,39441
31
+ tunacode/core/agents/main.py,sha256=BkAyqSr-xgENdyEmrPrx-E21ljclSU36EJh675Vhttk,41173
32
+ tunacode/core/agents/utils.py,sha256=VaNsPB2l1dAP-VlS_QLRKvCb4NW0pXNRoxkh12AGXAg,10744
24
33
  tunacode/core/background/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
34
  tunacode/core/background/manager.py,sha256=rJdl3eDLTQwjbT7VhxXcJbZopCNR3M8ZGMbmeVnwwMc,1126
26
35
  tunacode/core/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
36
  tunacode/core/setup/__init__.py,sha256=lzdpY6rIGf9DDlDBDGFvQZaSOQeFsNglHbkpq1-GtU8,376
28
37
  tunacode/core/setup/agent_setup.py,sha256=trELO8cPnWo36BBnYmXDEnDPdhBg0p-VLnx9A8hSSSQ,1401
29
38
  tunacode/core/setup/base.py,sha256=cbyT2-xK2mWgH4EO17VfM_OM2bj0kT895NW2jSXbe3c,968
30
- tunacode/core/setup/config_setup.py,sha256=LnIGZrqDCWUhiMhJMnKX1gyaZhy6pKM8xf_fy_t9B3U,14516
39
+ tunacode/core/setup/config_setup.py,sha256=xOQcjlFEL7HtGXH7wtpu83S6oA9K02wLYR1r-cWINpI,14449
31
40
  tunacode/core/setup/coordinator.py,sha256=oVTN2xIeJERXitVJpkIk9tDGLs1D1bxIRmaogJwZJFI,2049
32
41
  tunacode/core/setup/environment_setup.py,sha256=n3IrObKEynHZSwtUJ1FddMg2C4sHz7ca42awemImV8s,2225
33
42
  tunacode/core/setup/git_safety_setup.py,sha256=CRIqrQt0QUJQRS344njty_iCqTorrDhHlXRuET7w0Tk,6714
@@ -40,23 +49,24 @@ tunacode/tools/bash.py,sha256=mgZqugfDFevZ4BETuUv90pzXvtq7qKGUGFiuDxzmytk,8766
40
49
  tunacode/tools/glob.py,sha256=TSgVK79ewZgGw8ucYkkiHgVqRgkw-wZrhP8j52nm_gQ,10334
41
50
  tunacode/tools/grep.py,sha256=jboEVA2ATv0YI8zg9dF89emZ_HWy2vVtsQ_-hDhlr7g,26337
42
51
  tunacode/tools/list_dir.py,sha256=1kNqzYCNlcA5rqXIEVqcjQy6QxlLZLj5AG6YIECfwio,7217
43
- tunacode/tools/read_file.py,sha256=BqHxPspZBYotz5wtjuP-zve61obsx98z5TU-aw5BJHg,3273
44
- tunacode/tools/read_file_async_poc.py,sha256=0rSfYCmoNcvWk8hB1z86l32-tomSc9yOM4tR4nrty_o,6267
45
- tunacode/tools/run_command.py,sha256=2TtndMIeOWHQRC2XwkxUDVb06Ob-RHKSheBdluH3QgQ,4433
52
+ tunacode/tools/read_file.py,sha256=z2omev9xzj4-0GG9mRssD13rj-Aa1c-pszFi2Z7Hxvk,3268
53
+ tunacode/tools/read_file_async_poc.py,sha256=2v2ckLQlwahgPGWGdE2c5Es37B35Y7zWdseZwT46E1E,6453
54
+ tunacode/tools/run_command.py,sha256=7UvXjFQI1Av4vceXx48MbQCTrsFNj4PlygTAAhNDYIA,4376
46
55
  tunacode/tools/update_file.py,sha256=bW1MhTzRjBDjJzqQ6A1yCVEbkr1oIqtEC8uqcg_rfY4,3957
47
56
  tunacode/tools/write_file.py,sha256=prL6u8XOi9ZyPU-YNlG9YMLbSLrDJXDRuDX73ncXh-k,2699
48
57
  tunacode/ui/__init__.py,sha256=aRNE2pS50nFAX6y--rSGMNYwhz905g14gRd6g4BolYU,13
49
58
  tunacode/ui/completers.py,sha256=Jx1zyCESwdm_4ZopvCBtb0bCJF-bRy8aBWG2yhPQtDc,4878
50
- tunacode/ui/console.py,sha256=LTEWQLdRP0JkhbEPIHIDrSX3ZZld9iJI2aZ3-eGliOc,1930
59
+ tunacode/ui/console.py,sha256=YXNFlnV7n4wyaIy-VohzIMJJ71C7fzgcjuLheNIO-QU,2079
51
60
  tunacode/ui/constants.py,sha256=A76B_KpM8jCuBYRg4cPmhi8_j6LLyWttO7_jjv47r3w,421
52
61
  tunacode/ui/decorators.py,sha256=e2KM-_pI5EKHa2M045IjUe4rPkTboxaKHXJT0K3461g,1914
53
62
  tunacode/ui/input.py,sha256=6LlEwKIXYXusNDI2PD0DDjRymQgu5mf2v06TsHbUln0,2957
54
63
  tunacode/ui/keybindings.py,sha256=h0MlD73CW_3i2dQzb9EFSPkqy0raZ_isgjxUiA9u6ts,691
55
64
  tunacode/ui/lexers.py,sha256=tmg4ic1enyTRLzanN5QPP7D_0n12YjX_8ZhsffzhXA4,1340
56
- tunacode/ui/output.py,sha256=wCLvAZb-OeKyLeR7KxD9WSW_GkHk0iX0PDAJilR0Upw,4508
57
- tunacode/ui/panels.py,sha256=_8B1rGOhPnSLekGM4ZzDJw-dCuaPeacsaCmmCggqxwE,5950
65
+ tunacode/ui/output.py,sha256=kjVklUZumGwjV8LeB7aX1WjcwAbURnuudZZY1t4qsN4,4499
66
+ tunacode/ui/panels.py,sha256=IZpiWBb7jVXaycH5BPAnqTCs2-_ccJYq2V55MxkVHzQ,8199
58
67
  tunacode/ui/prompt_manager.py,sha256=U2cntB34vm-YwOj3gzFRUK362zccrz8pigQfpxr5sv8,4650
59
68
  tunacode/ui/tool_ui.py,sha256=S5-k1HwRlSqiQ8shGQ_QYGXQbuzb6Pg7u3CTqZwffdQ,6533
69
+ tunacode/ui/utils.py,sha256=P3RVc1j9XfRfLn3cEkaZnLD-pJKN_p27xmuaV4evHPo,73
60
70
  tunacode/ui/validators.py,sha256=MMIMT1I2v0l2jIy-gxX_4GSApvUTi8XWIOACr_dmoBA,758
61
71
  tunacode/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
72
  tunacode/utils/bm25.py,sha256=yq7KFWP3g_zIsjUV7l2hFPXYCzXyNQUInLU7u4qsc_4,1909
@@ -66,12 +76,12 @@ tunacode/utils/import_cache.py,sha256=q_xjJbtju05YbFopLDSkIo1hOtCx3DOTl3GQE5FFDg
66
76
  tunacode/utils/ripgrep.py,sha256=AXUs2FFt0A7KBV996deS8wreIlUzKOlAHJmwrcAr4No,583
67
77
  tunacode/utils/security.py,sha256=e_zo9VmcOKFjgFMr9GOBIFhAmND4PBlJZgY7zqnsGjI,6548
68
78
  tunacode/utils/system.py,sha256=FSoibTIH0eybs4oNzbYyufIiV6gb77QaeY2yGqW39AY,11381
69
- tunacode/utils/text_utils.py,sha256=zRBaorvtyd7HBEWtIfCH1Wce1L6rhsQwpORUEGBFMjA,2981
79
+ tunacode/utils/text_utils.py,sha256=IiRviMqz5uoAbid8emkRXxgvQz6KE27ZeQom-qh9ymI,2984
70
80
  tunacode/utils/token_counter.py,sha256=nGCWwrHHFbKywqeDCEuJnADCkfJuzysWiB6cCltJOKI,648
71
81
  tunacode/utils/user_configuration.py,sha256=Ilz8dpGVJDBE2iLWHAPT0xR8D51VRKV3kIbsAz8Bboc,3275
72
- tunacode_cli-0.0.35.dist-info/licenses/LICENSE,sha256=Btzdu2kIoMbdSp6OyCLupB1aRgpTCJ_szMimgEnpkkE,1056
73
- tunacode_cli-0.0.35.dist-info/METADATA,sha256=4ck_-g8eF10l6md95_EaEK1Sd4UmqmRAUEJacINtDA8,4943
74
- tunacode_cli-0.0.35.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
75
- tunacode_cli-0.0.35.dist-info/entry_points.txt,sha256=hbkytikj4dGu6rizPuAd_DGUPBGF191RTnhr9wdhORY,51
76
- tunacode_cli-0.0.35.dist-info/top_level.txt,sha256=lKy2P6BWNi5XSA4DHFvyjQ14V26lDZctwdmhEJrxQbU,9
77
- tunacode_cli-0.0.35.dist-info/RECORD,,
82
+ tunacode_cli-0.0.37.dist-info/licenses/LICENSE,sha256=Btzdu2kIoMbdSp6OyCLupB1aRgpTCJ_szMimgEnpkkE,1056
83
+ tunacode_cli-0.0.37.dist-info/METADATA,sha256=1DdlPYbydBr_Wcjnzr6lpCUxSRCE5R7qatJVSqJjj1w,5064
84
+ tunacode_cli-0.0.37.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
85
+ tunacode_cli-0.0.37.dist-info/entry_points.txt,sha256=hbkytikj4dGu6rizPuAd_DGUPBGF191RTnhr9wdhORY,51
86
+ tunacode_cli-0.0.37.dist-info/top_level.txt,sha256=lKy2P6BWNi5XSA4DHFvyjQ14V26lDZctwdmhEJrxQbU,9
87
+ tunacode_cli-0.0.37.dist-info/RECORD,,