vaal-code 0.6.950__tar.gz → 0.6.970__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.
- {vaal_code-0.6.950 → vaal_code-0.6.970}/PKG-INFO +1 -1
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/__init__.py +1 -1
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/repl.py +25 -36
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal_code.egg-info/PKG-INFO +1 -1
- {vaal_code-0.6.950 → vaal_code-0.6.970}/README.md +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/pyproject.toml +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/setup.cfg +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/tests/test_all.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/__main__.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/__init__.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/agent.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/auto_fix.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/bootstrap.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/branching.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/bridge.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/buddy.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/changelog.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/clipboard.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/code_review.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/collaborative.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/command_palette.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/config.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/context.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/cost_tracker.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/cot_display.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/deps.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/env_manager.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/error_explain.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/font_screen.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/generate_icon.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/history.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/hooks.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/image_input.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/init_project.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/interactive.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/keybindings.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/llm.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/login_screen.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/logout_screen.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/mcp_client.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/memory.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/migration.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/model_manager.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/multiline.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/notifications.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/oauth.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/output_styles.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/permissions.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/plans.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/plugins.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/preview_overlay.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/preview_server.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/progress.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/providers.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/raw_input.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/remote_control.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/scheduler.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/self_repair.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/server.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/session.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/skills.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/split_pane.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/ssh_remote.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/task_manager.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/terminal_profile.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/terminal_theme.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/theme.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/theme_screen.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/tool_executor.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/undo_system.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/user_config.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/vim_mode.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/voice.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/core/watch_mode.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/__init__.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/agent_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/api_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/bash_tool.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/db_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/diff_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/file_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/git_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/interaction_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/lsp_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/memory_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/notebook_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/plugin_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/regex_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/registry.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/search_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/sql_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/ssh_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/todo_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal/tools/web_tools.py +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal_code.egg-info/SOURCES.txt +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal_code.egg-info/dependency_links.txt +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal_code.egg-info/entry_points.txt +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal_code.egg-info/requires.txt +0 -0
- {vaal_code-0.6.950 → vaal_code-0.6.970}/vaal_code.egg-info/top_level.txt +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""Vaal — Local LLM coding assistant CLI."""
|
|
2
|
-
__version__ = "0.6.
|
|
2
|
+
__version__ = "0.6.970"
|
|
@@ -1148,7 +1148,7 @@ def run_repl(model: str = DEFAULT_MODEL, permission_mode: str = DEFAULT_PERMISSI
|
|
|
1148
1148
|
}
|
|
1149
1149
|
|
|
1150
1150
|
def print_prompt_line():
|
|
1151
|
-
"""Print separator
|
|
1151
|
+
"""Print separator with buddy on right, like Claude Code."""
|
|
1152
1152
|
from .buddy import get_buddy, render_sprite
|
|
1153
1153
|
|
|
1154
1154
|
try:
|
|
@@ -1157,51 +1157,40 @@ def run_repl(model: str = DEFAULT_MODEL, permission_mode: str = DEFAULT_PERMISSI
|
|
|
1157
1157
|
term_w = 80
|
|
1158
1158
|
|
|
1159
1159
|
buddy = get_buddy()
|
|
1160
|
+
sep_w = min(term_w - 2, 70)
|
|
1161
|
+
|
|
1160
1162
|
if not buddy:
|
|
1161
|
-
_write(f"\033[2m{'─' *
|
|
1163
|
+
_write(f"\033[2m{'─' * sep_w}\033[0m\n")
|
|
1162
1164
|
return
|
|
1163
1165
|
|
|
1164
1166
|
sprite = render_sprite(buddy)
|
|
1165
1167
|
bname = buddy.get("name", "")
|
|
1166
1168
|
sprite_w = max(len(s) for s in sprite)
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
#
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
# `-vvvv-´
|
|
1175
|
-
# ───────────────────────────── Dragon
|
|
1176
|
-
|
|
1177
|
-
# Top separator + sprite lines
|
|
1178
|
-
num_sprite = len(sprite)
|
|
1179
|
-
total = num_sprite + 2 # top sep + sprite lines + bottom sep with name
|
|
1180
|
-
|
|
1181
|
-
# Print blank lines first so cursor math works
|
|
1182
|
-
for _ in range(total):
|
|
1183
|
-
_write("\n")
|
|
1184
|
-
# Move back to top
|
|
1185
|
-
_write(f"\033[{total}A")
|
|
1186
|
-
|
|
1187
|
-
# Line 0: top separator + sprite[0]
|
|
1188
|
-
_write(f"\033[2m{'─' * line_w}\033[0m")
|
|
1189
|
-
if num_sprite > 0:
|
|
1190
|
-
_write(f"\033[{right_col}G\033[2m{sprite[0]}\033[0m")
|
|
1169
|
+
rcol = term_w - sprite_w - 1
|
|
1170
|
+
|
|
1171
|
+
# Print top separator
|
|
1172
|
+
_write(f"\033[2m{'─' * (rcol - 2)}\033[0m")
|
|
1173
|
+
# First sprite line on same row
|
|
1174
|
+
if sprite:
|
|
1175
|
+
_write(f"\033[{rcol}G\033[2m{sprite[0]}\033[0m")
|
|
1191
1176
|
_write("\n")
|
|
1192
1177
|
|
|
1193
|
-
#
|
|
1194
|
-
|
|
1195
|
-
|
|
1178
|
+
# Middle sprite lines (these are below the > prompt line)
|
|
1179
|
+
# We DON'T print them — they'd interfere with typing
|
|
1180
|
+
# Instead save them to render after user submits
|
|
1181
|
+
# For now just show top line + name on the separator
|
|
1196
1182
|
|
|
1197
|
-
# Bottom
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1183
|
+
# Bottom separator with remaining sprite + name
|
|
1184
|
+
# Actually — just do it simple: sprite on right of top sep only
|
|
1185
|
+
# Rest of sprite below, then bottom sep
|
|
1186
|
+
|
|
1187
|
+
for i in range(1, len(sprite)):
|
|
1188
|
+
_write(f"\033[{rcol}G\033[2m{sprite[i]}\033[0m\n")
|
|
1202
1189
|
|
|
1203
|
-
#
|
|
1204
|
-
_write(f"\033[{
|
|
1190
|
+
# Name + bottom separator on same line
|
|
1191
|
+
_write(f"\033[2m{'─' * (rcol - 2)}\033[0m")
|
|
1192
|
+
pad = max(0, (sprite_w - len(bname)) // 2)
|
|
1193
|
+
_write(f"\033[{rcol + pad}G\033[2;3m{bname}\033[0m\n")
|
|
1205
1194
|
|
|
1206
1195
|
# Check if any models are installed — if not, open model selector
|
|
1207
1196
|
from .llm import list_models as _check_models
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|