gitarsenal-cli 1.9.88 → 1.9.90

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 CHANGED
@@ -1 +1 @@
1
- {"created":"2025-08-21T04:45:52.473Z","packages":["modal","gitingest","requests","anthropic"],"uv_version":"uv 0.8.4 (Homebrew 2025-07-30)"}
1
+ {"created":"2025-08-21T10:21:15.428Z","packages":["modal","gitingest","requests","anthropic"],"uv_version":"uv 0.8.4 (Homebrew 2025-07-30)"}
package/bin/gitarsenal.js CHANGED
@@ -1240,7 +1240,7 @@ async function runContainerCommand(options) {
1240
1240
  }
1241
1241
 
1242
1242
  // Prompt for GPU count if not already specified via CLI
1243
- if (!options.gpuCount || gpuCount === 1) {
1243
+ if (!options.gpuCount) {
1244
1244
  const gpuCountAnswers = await inquirer.prompt([
1245
1245
  {
1246
1246
  type: 'list',
@@ -58,6 +58,16 @@ Usage notes:
58
58
  - If you _still_ need to run `grep`, STOP. ALWAYS USE ripgrep at `rg` first, which all Claude Code users have pre-installed.
59
59
  - IMPORTANT: Always use `uv pip` instead of just `pip` when running pip commands. For example, use `uv pip install package_name` instead of `pip install package_name`.
60
60
  - Create and activate a virtual environment using `uv venv` before running any Python package installations or commands using uv.
61
+ - **Python Version Management**: When encountering Python version compatibility issues or errors, use `pixi` to install the required Python version and create a new environment:
62
+ - Install required Python version: `pixi init myproject && cd myproject && pixi add python=3.x`
63
+ - Activate the environment: `pixi shell`
64
+ - This resolves version conflicts and ensures clean Python environment setup
65
+ - **JavaScript/Node.js Package Management**: Always prefer `bun` over `npm` for all JavaScript/Node.js operations for faster performance:
66
+ - Use `bun install` instead of `npm install`
67
+ - Use `bun add <package>` instead of `npm install <package>`
68
+ - Use `bun run <script>` instead of `npm run <script>`
69
+ - Use `bun create <template>` instead of `npx create-*` commands
70
+ - Only fall back to npm if bun is not available or encounters compatibility issues
61
71
  - Add "--privileged" flag to Docker run command to resolve overlayfs and iptables permission issues during container initialization.
62
72
  - For repository setup workflows: Print all commands needed for clone/setup/run process at start, then execute them sequentially. Print completion count (e.g., "Executed 5/7 commands"). Assume Linux OS for all commands.
63
73
  - TESTING MODE: For ML training and inference commands, always use minimal/quick parameters to enable fast testing:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitarsenal-cli",
3
- "version": "1.9.88",
3
+ "version": "1.9.90",
4
4
  "description": "CLI tool for creating Modal sandboxes with GitHub repositories",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -672,7 +672,15 @@ def create_modal_ssh_container(gpu_type, repo_url=None, repo_name=None, setup_co
672
672
  "ssh-keygen -A",
673
673
  "sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config",
674
674
  "sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config",
675
- "echo 'export PATH=/usr/local/cuda/bin:$PATH' >> /root/.bashrc"
675
+ "echo 'export PATH=/usr/local/cuda/bin:$PATH' >> /root/.bashrc",
676
+
677
+ # Install Bun (JavaScript runtime and package manager)
678
+ "curl -fsSL https://bun.com/install | bash",
679
+ "echo 'export PATH=/root/.bun/bin:$PATH' >> /root/.bashrc",
680
+
681
+ # Install Pixi (modern package management tool)
682
+ "curl -fsSL https://pixi.sh/install.sh | sh",
683
+ "echo 'export PATH=/root/.pixi/bin:$PATH' >> /root/.bashrc",
676
684
 
677
685
  # Create base directories (subdirectories will be created automatically when mounting)
678
686
  "mkdir -p /python",
@@ -1065,7 +1073,7 @@ if __name__ == "__main__":
1065
1073
  parser.add_argument('--yes', action='store_true', help='Automatically confirm prompts (non-interactive)')
1066
1074
 
1067
1075
  parser.add_argument('--gpu', default='A10G', help='GPU type to use')
1068
- parser.add_argument('--gpu-count', type=int, default=1, help='Number of GPUs to use (default: 1)')
1076
+ parser.add_argument('--gpu-count', type=int, default=None, help='Number of GPUs to use (default: 1)')
1069
1077
  parser.add_argument('--repo-url', help='Repository URL')
1070
1078
 
1071
1079
  # Authentication-related arguments
@@ -1219,7 +1227,7 @@ if __name__ == "__main__":
1219
1227
  # Display configuration after GPU selection
1220
1228
  print("\nšŸ“‹ Container Configuration:")
1221
1229
  print(f"Repository URL: {args.repo_url or 'Not specified'}")
1222
- gpu_count = getattr(args, 'gpu_count', 1)
1230
+ gpu_count = args.gpu_count if args.gpu_count is not None else 1
1223
1231
  if gpu_count > 1:
1224
1232
  print(f"GPU Type: {gpu_count}x {gpu_type}")
1225
1233
  else:
@@ -1274,8 +1282,8 @@ if __name__ == "__main__":
1274
1282
  sys.exit(1)
1275
1283
 
1276
1284
  # Ask about GPU count if not specified
1277
- gpu_count = getattr(args, 'gpu_count', 1)
1278
- if not hasattr(args, 'gpu_count') or args.gpu_count == 1:
1285
+ gpu_count = getattr(args, 'gpu_count', None)
1286
+ if gpu_count is None:
1279
1287
  try:
1280
1288
  gpu_count_input = input("? How many GPUs do you need? (1-8, default: 1): ").strip()
1281
1289
  if gpu_count_input:
@@ -1287,6 +1295,9 @@ if __name__ == "__main__":
1287
1295
  except ValueError:
1288
1296
  print("āš ļø Invalid GPU count. Using default: 1")
1289
1297
  gpu_count = 1
1298
+ else:
1299
+ # User pressed enter without input, use default
1300
+ gpu_count = 1
1290
1301
  except KeyboardInterrupt:
1291
1302
  print("\nšŸ›‘ Setup cancelled.")
1292
1303
  sys.exit(1)
@@ -1393,7 +1404,7 @@ if __name__ == "__main__":
1393
1404
  timeout_minutes=args.timeout,
1394
1405
  ssh_password=ssh_password,
1395
1406
  interactive=args.interactive,
1396
- gpu_count=getattr(args, 'gpu_count', 1),
1407
+ gpu_count=args.gpu_count if args.gpu_count is not None else 1,
1397
1408
  analysis_data=analysis_data, # Pass parsed analysis_data instead of raw args.analysis_data
1398
1409
  )
1399
1410