gitarsenal-cli 1.9.85 → 1.9.86
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.
- package/.venv_status.json +1 -1
- package/kill_claude/TUI_IMPROVEMENTS.md +1 -1
- package/kill_claude/claude_code_agent.py +11 -11
- package/kill_claude/tools/__pycache__/bash_output_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/bash_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/edit_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/exit_plan_mode_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/glob_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/grep_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/kill_bash_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/ls_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/multiedit_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/notebook_edit_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/read_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/task_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/todo_write_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/web_fetch_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/web_search_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/write_tool.cpython-313.pyc +0 -0
- package/package.json +1 -1
- package/python/test_modalSandboxScript.py +12 -11
package/.venv_status.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"created":"2025-08-20T12:
|
|
1
|
+
{"created":"2025-08-20T12:56:37.874Z","packages":["modal","gitingest","requests","anthropic"],"uv_version":"uv 0.8.4 (Homebrew 2025-07-30)"}
|
|
@@ -109,7 +109,7 @@ When you run `query "read main.py"`, you now see:
|
|
|
109
109
|
|
|
110
110
|
### Enhanced Todo Management
|
|
111
111
|
Todo lists are now displayed as professional tables with:
|
|
112
|
-
- Status indicators (⏳ Pending, 🔄 In Progress,
|
|
112
|
+
- Status indicators (⏳ Pending, 🔄 In Progress, ✓ Completed)
|
|
113
113
|
- Organized columns
|
|
114
114
|
- Clean borders and styling
|
|
115
115
|
|
|
@@ -444,7 +444,7 @@ The following {len(TOOL_SCHEMAS)} tools are loaded and available:
|
|
|
444
444
|
todo_table.add_column("Task", style="cyan")
|
|
445
445
|
|
|
446
446
|
for i, todo in enumerate(todos, 1):
|
|
447
|
-
status_emoji = {"pending": "⏳ Pending", "in_progress": "🔄 In Progress", "completed": "
|
|
447
|
+
status_emoji = {"pending": "⏳ Pending", "in_progress": "🔄 In Progress", "completed": "✓ Completed"}.get(todo.get("status", "pending"), "❓ Unknown")
|
|
448
448
|
content = todo.get("content", "No description")
|
|
449
449
|
if len(content) > 80:
|
|
450
450
|
content = content[:80] + "..."
|
|
@@ -557,7 +557,7 @@ The following {len(TOOL_SCHEMAS)} tools are loaded and available:
|
|
|
557
557
|
|
|
558
558
|
# Success panel
|
|
559
559
|
success_panel = Panel(
|
|
560
|
-
f"
|
|
560
|
+
f"✓ [bold green]Tool {tool_name} completed successfully[/bold green]",
|
|
561
561
|
border_style="green",
|
|
562
562
|
padding=(0, 1)
|
|
563
563
|
)
|
|
@@ -566,7 +566,7 @@ The following {len(TOOL_SCHEMAS)} tools are loaded and available:
|
|
|
566
566
|
console.print(result_panel)
|
|
567
567
|
else:
|
|
568
568
|
console.print(Panel(
|
|
569
|
-
"
|
|
569
|
+
"✓ [bold green]Tool completed successfully[/bold green]\n[dim](no output)[/dim]",
|
|
570
570
|
title=f"Tool {tool_name}",
|
|
571
571
|
border_style="green",
|
|
572
572
|
padding=(0, 1)
|
|
@@ -577,7 +577,7 @@ The following {len(TOOL_SCHEMAS)} tools are loaded and available:
|
|
|
577
577
|
|
|
578
578
|
except Exception as e:
|
|
579
579
|
console.print(Panel(
|
|
580
|
-
f"
|
|
580
|
+
f"✗ [bold red]Tool {tool_name} failed:[/bold red]\n{str(e)}",
|
|
581
581
|
border_style="red",
|
|
582
582
|
padding=(0, 1)
|
|
583
583
|
))
|
|
@@ -929,7 +929,7 @@ The following {len(TOOL_SCHEMAS)} tools are loaded and available:
|
|
|
929
929
|
break
|
|
930
930
|
except Exception as e:
|
|
931
931
|
console.print(Panel(
|
|
932
|
-
f"[bold red]
|
|
932
|
+
f"[bold red]✗ Error:[/bold red] {str(e)}",
|
|
933
933
|
border_style="red"
|
|
934
934
|
))
|
|
935
935
|
|
|
@@ -1007,7 +1007,7 @@ The following {len(TOOL_SCHEMAS)} tools are loaded and available:
|
|
|
1007
1007
|
config_table = Table(show_header=False, box=None)
|
|
1008
1008
|
config_table.add_column("Setting", style="yellow")
|
|
1009
1009
|
config_table.add_column("Value", style="green")
|
|
1010
|
-
config_table.add_row("API Key", "
|
|
1010
|
+
config_table.add_row("API Key", "✓ Set" if self.api_key else "✗ Missing")
|
|
1011
1011
|
config_table.add_row("Model", "claude-sonnet-4-20250514")
|
|
1012
1012
|
config_table.add_row("Working Directory", self.working_dir)
|
|
1013
1013
|
config_table.add_row("Git Repository", "Yes" if self.is_git_repo else "No")
|
|
@@ -1061,7 +1061,7 @@ def interactive(
|
|
|
1061
1061
|
agent.interactive_mode()
|
|
1062
1062
|
except ValueError as e:
|
|
1063
1063
|
console.print(Panel(
|
|
1064
|
-
f"[bold red]
|
|
1064
|
+
f"[bold red]✗ Configuration Error:[/bold red]\n{str(e)}\n\n" +
|
|
1065
1065
|
"[yellow]To fix this:[/yellow]\n" +
|
|
1066
1066
|
"1. Get your Anthropic API key from: https://console.anthropic.com/\n" +
|
|
1067
1067
|
"2. Set environment variable: [cyan]export ANTHROPIC_API_KEY=your_key_here[/cyan]\n" +
|
|
@@ -1072,7 +1072,7 @@ def interactive(
|
|
|
1072
1072
|
raise typer.Exit(1)
|
|
1073
1073
|
except Exception as e:
|
|
1074
1074
|
console.print(Panel(
|
|
1075
|
-
f"[bold red]
|
|
1075
|
+
f"[bold red]✗ Error:[/bold red] {str(e)}",
|
|
1076
1076
|
border_style="red"
|
|
1077
1077
|
))
|
|
1078
1078
|
raise typer.Exit(1)
|
|
@@ -1109,7 +1109,7 @@ def query(
|
|
|
1109
1109
|
|
|
1110
1110
|
except ValueError as e:
|
|
1111
1111
|
console.print(Panel(
|
|
1112
|
-
f"[bold red]
|
|
1112
|
+
f"[bold red]✗ Configuration Error:[/bold red]\n{str(e)}\n\n" +
|
|
1113
1113
|
"[yellow]To fix this:[/yellow]\n" +
|
|
1114
1114
|
"1. Get your Anthropic API key from: https://console.anthropic.com/\n" +
|
|
1115
1115
|
"2. Set environment variable: [cyan]export ANTHROPIC_API_KEY=your_key_here[/cyan]\n" +
|
|
@@ -1120,7 +1120,7 @@ def query(
|
|
|
1120
1120
|
raise typer.Exit(1)
|
|
1121
1121
|
except Exception as e:
|
|
1122
1122
|
console.print(Panel(
|
|
1123
|
-
f"[bold red]
|
|
1123
|
+
f"[bold red]✗ Error:[/bold red] {str(e)}",
|
|
1124
1124
|
border_style="red"
|
|
1125
1125
|
))
|
|
1126
1126
|
raise typer.Exit(1)
|
|
@@ -1137,7 +1137,7 @@ def setup():
|
|
|
1137
1137
|
system_info.add_row("Platform", os.uname().sysname if hasattr(os, 'uname') else 'unknown')
|
|
1138
1138
|
system_info.add_row("Working Directory", os.getcwd())
|
|
1139
1139
|
system_info.add_row("Git Repository", "Yes" if os.path.exists('.git') else "No")
|
|
1140
|
-
system_info.add_row("API Key Status", "
|
|
1140
|
+
system_info.add_row("API Key Status", "✓ Set" if os.getenv('ANTHROPIC_API_KEY') else "✗ Missing")
|
|
1141
1141
|
|
|
1142
1142
|
# Setup instructions
|
|
1143
1143
|
setup_instructions = """[bold yellow]1. Get your API key:[/bold yellow]
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -322,7 +322,8 @@ def ssh_container_function(ssh_password=None, repo_url=None, repo_name=None, set
|
|
|
322
322
|
# Process complete lines immediately
|
|
323
323
|
while '\n' in stdout_buffer:
|
|
324
324
|
line, stdout_buffer = stdout_buffer.split('\n', 1)
|
|
325
|
-
|
|
325
|
+
# Add subtle color to agent output for better readability
|
|
326
|
+
print(line, flush=True) # Use default terminal colors
|
|
326
327
|
elif stream == process.stderr:
|
|
327
328
|
chunk = stream.read(1024)
|
|
328
329
|
if chunk is not None and chunk:
|
|
@@ -816,32 +817,32 @@ def show_usage_examples():
|
|
|
816
817
|
|
|
817
818
|
print("Basic Container Creation with Agent")
|
|
818
819
|
print("┌────────────────────────────────────────────────────────────────────────┐")
|
|
819
|
-
print("│ gitarsenal --gpu A10G --repo
|
|
820
|
+
print("│ gitarsenal --gpu A10G --repo https://github.com/username/repo.git │")
|
|
820
821
|
print("│ # Agent will intelligently clone and setup the repository │")
|
|
821
822
|
print("└────────────────────────────────────────────────────────────────────────┘\n")
|
|
822
823
|
|
|
823
824
|
print("With Persistent Storage")
|
|
824
825
|
print("┌────────────────────────────────────────────────────────────────────────────────────┐")
|
|
825
|
-
print("│ gitarsenal --gpu A10G --repo
|
|
826
|
+
print("│ gitarsenal --gpu A10G --repo https://github.com/username/repo.git \\ │")
|
|
826
827
|
print("│ --volume-name my-persistent-volume │")
|
|
827
828
|
print("└────────────────────────────────────────────────────────────────────────────────────┘\n")
|
|
828
829
|
|
|
829
830
|
print("With Multiple GPUs")
|
|
830
831
|
print("┌────────────────────────────────────────────────────────────────────────────────────┐")
|
|
831
832
|
print("│ gitarsenal --gpu A100-80GB --gpu-count 4 \\ │")
|
|
832
|
-
print("│ --repo
|
|
833
|
+
print("│ --repo https://github.com/username/repo.git │")
|
|
833
834
|
print("└────────────────────────────────────────────────────────────────────────────────────┘\n")
|
|
834
835
|
|
|
835
836
|
print("Intelligent Repository Setup (default)")
|
|
836
837
|
print("┌────────────────────────────────────────────────────────────────────────────────────┐")
|
|
837
|
-
print("│ gitarsenal --gpu A10G --repo
|
|
838
|
+
print("│ gitarsenal --gpu A10G --repo https://github.com/username/repo.git │")
|
|
838
839
|
print("│ # Agent analyzes repo and sets up environment automatically │")
|
|
839
840
|
print("└────────────────────────────────────────────────────────────────────────────────────┘\n")
|
|
840
841
|
|
|
841
842
|
print("With Manual Setup Commands (Advanced)")
|
|
842
843
|
print("┌────────────────────────────────────────────────────────────────────────────────────┐")
|
|
843
844
|
print("│ gitarsenal --gpu A10G --setup-commands \"pip install torch\" \"python train.py\" │")
|
|
844
|
-
print("│ # Only use when not providing --repo
|
|
845
|
+
print("│ # Only use when not providing --repo (bypasses Agent) │")
|
|
845
846
|
print("└────────────────────────────────────────────────────────────────────────────────────┘\n")
|
|
846
847
|
|
|
847
848
|
print("Development Mode (Skip Authentication)")
|
|
@@ -863,16 +864,16 @@ def show_usage_examples():
|
|
|
863
864
|
print(" • Without --gpu: Shows interactive GPU selection menu")
|
|
864
865
|
print()
|
|
865
866
|
print("Repository Setup Behavior:")
|
|
866
|
-
print(" • With --repo
|
|
867
|
-
print(" • Without --repo
|
|
868
|
-
print(" • Legacy --setup-commands: Only used when --repo
|
|
867
|
+
print(" • With --repo Agent intelligently clones and sets up repository")
|
|
868
|
+
print(" • Without --repo: Manual container setup (no automatic repository setup)")
|
|
869
|
+
print(" • Legacy --setup-commands: Only used when --repo not provided")
|
|
869
870
|
print()
|
|
870
871
|
print("Examples:")
|
|
871
872
|
print(" # Intelligent repository setup (recommended):")
|
|
872
|
-
print(" gitarsenal --gpu A10G --repo
|
|
873
|
+
print(" gitarsenal --gpu A10G --repo https://github.com/username/repo.git")
|
|
873
874
|
print()
|
|
874
875
|
print(" # Development mode (skip authentication):")
|
|
875
|
-
print(" gitarsenal --skip-auth --gpu A10G --repo
|
|
876
|
+
print(" gitarsenal --skip-auth --gpu A10G --repo https://github.com/username/repo.git")
|
|
876
877
|
print()
|
|
877
878
|
print(" # Manual setup (advanced users):")
|
|
878
879
|
print(" gitarsenal --gpu A10G --setup-commands \"pip install torch\" \"python train.py\"")
|