gitarsenal-cli 1.5.8 → 1.5.9
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/ascii_banner.txt +12 -0
- package/bin/gitarsenal.js +15 -6
- package/package.json +1 -1
- package/python/modal_auth_patch.py +1 -1
- package/python/modal_token_solution.py +1 -1
- package/python/__pycache__/credentials_manager.cpython-313.pyc +0 -0
- package/python/__pycache__/fetch_modal_tokens.cpython-313.pyc +0 -0
- package/python/__pycache__/modal_auth_patch.cpython-313.pyc +0 -0
- package/python/__pycache__/modal_token_solution.cpython-313.pyc +0 -0
- package/python/__pycache__/test_modalSandboxScript.cpython-313.pyc +0 -0
- package/python/test_nvcc.py +0 -80
package/ascii_banner.txt
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
╭─────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
2
|
+
│ │
|
3
|
+
│ ██████╗ ██╗████████╗ █████╗ ██████╗ ███████╗███████╗███╗ ██╗ █████╗ ██╗ ██████╗██╗ ██╗ │
|
4
|
+
│ ██╔════╝ ██║╚══██╔══╝██╔══██╗██╔══██╗██╔════╝██╔════╝████╗ ██║██╔══██╗██║ ██╔════╝██║ ██║ │
|
5
|
+
│ ██║ ███╗██║ ██║ ███████║██████╔╝███████╗█████╗ ██╔██╗ ██║███████║██║ ██║ ██║ ██║ │
|
6
|
+
│ ██║ ██║██║ ██║ ██╔══██║██╔══██╗╚════██║██╔══╝ ██║╚██╗██║██╔══██║██║ ██║ ██║ ██║ │
|
7
|
+
│ ╚██████╔╝██║ ██║ ██║ ██║██║ ██║███████║███████╗██║ ╚████║██║ ██║███████╗ ╚██████╗███████╗██║ │
|
8
|
+
│ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═══╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚══════╝╚═╝ │
|
9
|
+
│ │
|
10
|
+
│ GPU-Accelerated Development Environments │
|
11
|
+
│ │
|
12
|
+
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
package/bin/gitarsenal.js
CHANGED
@@ -16,12 +16,21 @@ const boxen = require('boxen');
|
|
16
16
|
updateNotifier({ pkg }).notify();
|
17
17
|
|
18
18
|
// Display banner
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
19
|
+
const fs = require('fs');
|
20
|
+
|
21
|
+
try {
|
22
|
+
const bannerPath = path.join(__dirname, '..', 'ascii_banner.txt');
|
23
|
+
const banner = fs.readFileSync(bannerPath, 'utf8');
|
24
|
+
console.log(chalk.green(banner));
|
25
|
+
} catch (error) {
|
26
|
+
// Fallback to simple banner if ASCII art file is not found
|
27
|
+
console.log(boxen(chalk.bold.green('GitArsenal CLI') + '\n' + chalk.blue('Create GPU-accelerated development environments'), {
|
28
|
+
padding: 1,
|
29
|
+
margin: 1,
|
30
|
+
borderStyle: 'round',
|
31
|
+
borderColor: 'green'
|
32
|
+
}));
|
33
|
+
}
|
25
34
|
|
26
35
|
// Set up main command
|
27
36
|
program
|
package/package.json
CHANGED
@@ -26,7 +26,7 @@ try:
|
|
26
26
|
print(f"✅ Using tokens from proxy server or defaults")
|
27
27
|
except ImportError:
|
28
28
|
# If the module is not available, use hardcoded tokens
|
29
|
-
print(f"⚠️ Using default tokens")
|
29
|
+
# print(f"⚠️ Using default tokens")
|
30
30
|
|
31
31
|
# Set environment variables
|
32
32
|
os.environ["MODAL_TOKEN_ID"] = TOKEN_ID
|
@@ -29,7 +29,7 @@ try:
|
|
29
29
|
print(f"✅ Using tokens from proxy server or defaults")
|
30
30
|
except ImportError:
|
31
31
|
# If the module is not available, use hardcoded tokens
|
32
|
-
print(f"⚠️ Using default tokens")
|
32
|
+
# print(f"⚠️ Using default tokens")
|
33
33
|
|
34
34
|
print("🔧 Modal Token Solution - Comprehensive Fix")
|
35
35
|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
package/python/test_nvcc.py
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
import subprocess
|
2
|
-
import time
|
3
|
-
import modal
|
4
|
-
|
5
|
-
app = modal.App()
|
6
|
-
|
7
|
-
# Use NVIDIA CUDA development image with full toolkit including nvcc
|
8
|
-
cuda_version = "12.8.1" # should be no greater than host CUDA version
|
9
|
-
flavor = "devel" # includes full CUDA toolkit with nvcc
|
10
|
-
operating_sys = "ubuntu24.04"
|
11
|
-
tag = f"{cuda_version}-{flavor}-{operating_sys}"
|
12
|
-
|
13
|
-
image = (
|
14
|
-
modal.Image.from_registry(f"nvidia/cuda:{tag}", add_python="3.12")
|
15
|
-
.entrypoint([]) # remove verbose logging by base image on entry
|
16
|
-
.apt_install("openssh-server", "vim", "nano", "htop", "git") # SSH and useful tools
|
17
|
-
.run_commands("mkdir -p /run/sshd") # SSH daemon requires this directory
|
18
|
-
.add_local_file("~/.ssh/id_rsa.pub", "/root/.ssh/authorized_keys", copy=True)
|
19
|
-
.run_commands("chmod 700 /root/.ssh && chmod 600 /root/.ssh/authorized_keys")
|
20
|
-
)
|
21
|
-
|
22
|
-
@app.function(
|
23
|
-
image=image,
|
24
|
-
gpu="any", # Request GPU access
|
25
|
-
timeout=3600, # Keep alive for 1 hour
|
26
|
-
cpu=2,
|
27
|
-
memory=8192
|
28
|
-
)
|
29
|
-
def start_cuda_container():
|
30
|
-
"""
|
31
|
-
Start a CUDA container with nvcc compiler and SSH access.
|
32
|
-
"""
|
33
|
-
|
34
|
-
# Start SSH daemon
|
35
|
-
print("Starting SSH daemon...")
|
36
|
-
subprocess.Popen(["/usr/sbin/sshd", "-D", "-e"])
|
37
|
-
|
38
|
-
# Verify CUDA installation
|
39
|
-
print("Verifying CUDA installation...")
|
40
|
-
try:
|
41
|
-
nvcc_output = subprocess.check_output(["nvcc", "--version"], text=True)
|
42
|
-
print("NVCC version:")
|
43
|
-
print(nvcc_output)
|
44
|
-
except Exception as e:
|
45
|
-
print(f"Error checking nvcc: {e}")
|
46
|
-
|
47
|
-
try:
|
48
|
-
nvidia_smi_output = subprocess.check_output(["nvidia-smi"], text=True)
|
49
|
-
print("GPU status:")
|
50
|
-
print(nvidia_smi_output)
|
51
|
-
except Exception as e:
|
52
|
-
print(f"Error checking nvidia-smi: {e}")
|
53
|
-
|
54
|
-
# Set up port forwarding for SSH
|
55
|
-
with modal.forward(port=22, unencrypted=True) as tunnel:
|
56
|
-
hostname, port = tunnel.tcp_socket
|
57
|
-
connection_cmd = f'ssh -p {port} root@{hostname}'
|
58
|
-
|
59
|
-
print("=" * 60)
|
60
|
-
print("🚀 CUDA Container Ready!")
|
61
|
-
print("=" * 60)
|
62
|
-
print(f"SSH into container: {connection_cmd}")
|
63
|
-
print(f"Hostname: {hostname}")
|
64
|
-
print(f"Port: {port}")
|
65
|
-
print("=" * 60)
|
66
|
-
print("Available tools:")
|
67
|
-
print("- nvcc (CUDA compiler)")
|
68
|
-
print("- nvidia-smi (GPU monitoring)")
|
69
|
-
print("- vim, nano, git, htop")
|
70
|
-
print("- Python 3.12")
|
71
|
-
print("=" * 60)
|
72
|
-
|
73
|
-
# Keep the container alive
|
74
|
-
print("Container running for 1 hour...")
|
75
|
-
time.sleep(3600)
|
76
|
-
|
77
|
-
# Start the container immediately
|
78
|
-
if __name__ == "__main__":
|
79
|
-
print("Starting CUDA container with nvcc...")
|
80
|
-
start_cuda_container.remote()
|