claude-scionos 1.0.0 → 1.1.0

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/CHANGELOG.md ADDED
@@ -0,0 +1,45 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.1] - 2025-11-29
9
+
10
+ ### Added
11
+ - Git Bash detection for Windows users
12
+ - Clear error message when Git Bash is missing on Windows
13
+ - Troubleshooting section for Git Bash in README.md
14
+ - Section de dépannage pour Git Bash dans README.fr.md
15
+ - Support for `CLAUDE_CODE_GIT_BASH_PATH` environment variable
16
+
17
+ ### Fixed
18
+ - Windows users no longer blocked after entering token due to missing Git Bash
19
+ - Better error handling for Windows environment requirements
20
+
21
+ ### Improved
22
+ - User experience for Windows beta testers
23
+ - Documentation clarity for Windows-specific requirements
24
+ - Error messages now provide actionable solutions
25
+
26
+ ## [1.0.0] - 2025-11-28
27
+
28
+ ### Added
29
+ - Initial release
30
+ - Ephemeral and secure token handling (memory-only storage)
31
+ - Support for SNIA environment (`https://hubs02225.snia.ch`)
32
+ - Bilingual documentation (English and French)
33
+ - Command-line interface with `--version` flag
34
+ - Secure token input with masking
35
+ - Automatic cleanup on process exit
36
+ - Zero persistence (no files written to disk)
37
+
38
+ ### Security
39
+ - Tokens stored only in memory
40
+ - No configuration files created
41
+ - Automatic credential cleanup on exit
42
+ - Environment variable isolation
43
+
44
+ [1.0.1]: https://github.com/ScioNos/claude-scionos/compare/v1.0.0...v1.0.1
45
+ [1.0.0]: https://github.com/ScioNos/claude-scionos/releases/tag/v1.0.0
package/README.fr.md CHANGED
@@ -60,7 +60,7 @@ Avant d'utiliser `claude-scionos`, assurez-vous d'avoir :
60
60
  npm install -g @anthropic-ai/claude-code
61
61
  ```
62
62
 
63
- - Un **ANTHROPIC_AUTH_TOKEN** valide depuis [https://hubs02225.snia.ch/console/token](https://hubs02225.snia.ch/console/token)
63
+ - Un **ANTHROPIC_AUTH_TOKEN** valide depuis [https://routerlab.ch/keys](https://routerlab.ch/keys)
64
64
 
65
65
  ---
66
66
 
@@ -113,7 +113,7 @@ npx claude-scionos
113
113
  $ npx claude-scionos
114
114
 
115
115
  Claude Code (via ScioNos)
116
- To retrieve your token, visit: https://hubs02225.snia.ch/console/token
116
+ To retrieve your token, visit: https://routerlab.ch/keys
117
117
  ? Please enter your ANTHROPIC_AUTH_TOKEN: ********
118
118
 
119
119
  # Claude Code démarre...
@@ -134,7 +134,7 @@ npx claude-scionos -v
134
134
  1. **Vérification** : Vérifie que la commande `claude` est disponible dans votre PATH
135
135
  2. **Saisie du jeton** : Demande de manière sécurisée votre jeton d'authentification (entrée masquée)
136
136
  3. **Configuration de l'environnement** : Crée des variables d'environnement isolées :
137
- - `ANTHROPIC_BASE_URL` → `https://hubs02225.snia.ch`
137
+ - `ANTHROPIC_BASE_URL` → `https://routerlab.ch`
138
138
  - `ANTHROPIC_AUTH_TOKEN` → Votre jeton (mémoire uniquement)
139
139
  4. **Exécution** : Lance le processus Claude Code avec l'environnement personnalisé
140
140
  5. **Nettoyage** : Détruit automatiquement les informations d'identification à la sortie
@@ -157,7 +157,7 @@ Bien que `claude-scionos` assure une sécurité maximale en conservant les jeton
157
157
  ✅ **Bonnes pratiques :**
158
158
 
159
159
  - Ne partagez jamais votre `ANTHROPIC_AUTH_TOKEN` avec d'autres personnes
160
- - Récupérez un nouveau jeton pour chaque session depuis [https://hubs02225.snia.ch/console/token](https://hubs02225.snia.ch/console/token)
160
+ - Récupérez un nouveau jeton pour chaque session depuis [https://routerlab.ch/keys](https://routerlab.ch/keys)
161
161
  - Évitez d'exécuter sur des systèmes partagés/non fiables
162
162
  - Utilisez pour le développement local ou des pipelines CI/CD sécurisés
163
163
 
@@ -181,14 +181,44 @@ claude --version
181
181
 
182
182
  ---
183
183
 
184
+ #### Windows : Git Bash introuvable
185
+
186
+ **Problème :** Sur Windows, Claude Code nécessite git-bash pour fonctionner. Si vous voyez une erreur après avoir saisi votre jeton, ou si `claude-scionos` se ferme avec un avertissement Git Bash, c'est le problème.
187
+
188
+ **Solution :**
189
+
190
+ 1. **Installer Git pour Windows** (inclut Git Bash) :
191
+
192
+ Télécharger depuis : [https://git-scm.com/downloads/win](https://git-scm.com/downloads/win)
193
+
194
+ 2. **Alternative :** Si Git Bash est déjà installé mais non détecté, définissez la variable d'environnement :
195
+
196
+ ```bash
197
+ # Invite de commandes Windows
198
+ set CLAUDE_CODE_GIT_BASH_PATH=C:\Program Files\Git\bin\bash.exe
199
+
200
+ # PowerShell Windows
201
+ $env:CLAUDE_CODE_GIT_BASH_PATH="C:\Program Files\Git\bin\bash.exe"
202
+ ```
203
+
204
+ 3. **Redémarrez votre terminal** et relancez :
205
+
206
+ ```bash
207
+ npx claude-scionos
208
+ ```
209
+
210
+ **Note :** Git Bash est automatiquement inclus lors de l'installation de Git pour Windows. Après l'installation, `claude-scionos` le détectera automatiquement.
211
+
212
+ ---
213
+
184
214
  #### Échec de l'authentification du jeton
185
215
 
186
216
  **Problème :** Jeton invalide ou expiré.
187
217
 
188
218
  **Solution :**
189
- 1. Obtenez un nouveau jeton depuis [https://hubs02225.snia.ch/console/token](https://hubs02225.snia.ch/console/token)
219
+ 1. Obtenez un nouveau jeton depuis [https://routerlab.ch/keys](https://routerlab.ch/keys)
190
220
  2. Assurez-vous de copier le jeton complet (sans espaces supplémentaires)
191
- 3. Vérifiez votre connexion réseau à `hubs02225.snia.ch`
221
+ 3. Vérifiez votre connexion réseau à `routerlab.ch`
192
222
 
193
223
  ---
194
224
 
package/README.md CHANGED
@@ -60,7 +60,7 @@ Before using `claude-scionos`, ensure you have:
60
60
  npm install -g @anthropic-ai/claude-code
61
61
  ```
62
62
 
63
- - A valid **ANTHROPIC_AUTH_TOKEN** from [https://hubs02225.snia.ch/console/token](https://hubs02225.snia.ch/console/token)
63
+ - A valid **ANTHROPIC_AUTH_TOKEN** from [https://routerlab.ch/keys](https://routerlab.ch/keys)
64
64
 
65
65
  ---
66
66
 
@@ -113,7 +113,7 @@ npx claude-scionos
113
113
  $ npx claude-scionos
114
114
 
115
115
  Claude Code (via ScioNos)
116
- To retrieve your token, visit: https://hubs02225.snia.ch/console/token
116
+ To retrieve your token, visit: https://routerlab.ch/keys
117
117
  ? Please enter your ANTHROPIC_AUTH_TOKEN: ********
118
118
 
119
119
  # Claude Code starts...
@@ -134,7 +134,7 @@ npx claude-scionos -v
134
134
  1. **Verification**: Checks if `claude` command is available in your PATH
135
135
  2. **Token Input**: Securely prompts for your authentication token (masked input)
136
136
  3. **Environment Setup**: Creates isolated environment variables:
137
- - `ANTHROPIC_BASE_URL` → `https://hubs02225.snia.ch`
137
+ - `ANTHROPIC_BASE_URL` → `https://routerlab.ch`
138
138
  - `ANTHROPIC_AUTH_TOKEN` → Your token (memory only)
139
139
  4. **Execution**: Spawns Claude Code process with custom environment
140
140
  5. **Cleanup**: Automatically destroys credentials on exit
@@ -157,7 +157,7 @@ While `claude-scionos` ensures maximum security by keeping tokens in memory only
157
157
  ✅ **Best Practices:**
158
158
 
159
159
  - Never share your `ANTHROPIC_AUTH_TOKEN` with others
160
- - Retrieve a fresh token for each session from [https://hubs02225.snia.ch/console/token](https://hubs02225.snia.ch/console/token)
160
+ - Retrieve a fresh token for each session from [https://routerlab.ch/keys](https://routerlab.ch/keys)
161
161
  - Avoid running on shared/untrusted systems
162
162
  - Use for local development or secure CI/CD pipelines
163
163
 
@@ -181,14 +181,44 @@ claude --version
181
181
 
182
182
  ---
183
183
 
184
+ #### Windows: Git Bash not found
185
+
186
+ **Problem:** On Windows, Claude Code requires git-bash to run. If you see an error after entering your token, or if `claude-scionos` exits with a Git Bash warning, this is the issue.
187
+
188
+ **Solution:**
189
+
190
+ 1. **Install Git for Windows** (includes Git Bash):
191
+
192
+ Download from: [https://git-scm.com/downloads/win](https://git-scm.com/downloads/win)
193
+
194
+ 2. **Alternative:** If Git Bash is already installed but not detected, set the environment variable:
195
+
196
+ ```bash
197
+ # Windows Command Prompt
198
+ set CLAUDE_CODE_GIT_BASH_PATH=C:\Program Files\Git\bin\bash.exe
199
+
200
+ # Windows PowerShell
201
+ $env:CLAUDE_CODE_GIT_BASH_PATH="C:\Program Files\Git\bin\bash.exe"
202
+ ```
203
+
204
+ 3. **Restart your terminal** and run again:
205
+
206
+ ```bash
207
+ npx claude-scionos
208
+ ```
209
+
210
+ **Note:** Git Bash is automatically included when you install Git for Windows. After installation, `claude-scionos` will detect it automatically.
211
+
212
+ ---
213
+
184
214
  #### Token authentication fails
185
215
 
186
216
  **Problem:** Invalid or expired token.
187
217
 
188
218
  **Solution:**
189
- 1. Get a fresh token from [https://hubs02225.snia.ch/console/token](https://hubs02225.snia.ch/console/token)
219
+ 1. Get a fresh token from [https://routerlab.ch/keys](https://routerlab.ch/keys)
190
220
  2. Ensure you're copying the complete token (no extra spaces)
191
- 3. Check your network connection to `hubs02225.snia.ch`
221
+ 3. Check your network connection to `routerlab.ch`
192
222
 
193
223
  ---
194
224
 
@@ -0,0 +1,20 @@
1
+ import globals from 'globals';
2
+ import pluginJs from '@eslint/js';
3
+
4
+ export default [
5
+ {
6
+ languageOptions: {
7
+ globals: {
8
+ ...globals.node,
9
+ ...globals.builtin,
10
+ }
11
+ }
12
+ },
13
+ pluginJs.configs.recommended,
14
+ {
15
+ rules: {
16
+ 'no-console': 'off',
17
+ 'no-process-exit': 'off',
18
+ }
19
+ }
20
+ ];
package/index.js CHANGED
@@ -1,15 +1,20 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  import chalk from 'chalk';
4
4
  import { password } from '@inquirer/prompts';
5
5
  import spawn from 'cross-spawn';
6
+ import updateNotifier from 'update-notifier';
6
7
  import which from 'which';
7
8
  import process from 'node:process';
8
9
  import { createRequire } from 'node:module';
10
+ import fs from 'node:fs';
9
11
 
10
12
  const require = createRequire(import.meta.url);
11
13
  const pkg = require('./package.json');
12
14
 
15
+ // Initialize update notifier
16
+ updateNotifier({ pkg }).notify();
17
+
13
18
  // 0. Handle --version / -v flag
14
19
  if (process.argv.includes('--version') || process.argv.includes('-v')) {
15
20
  console.log(pkg.version);
@@ -19,19 +24,40 @@ if (process.argv.includes('--version') || process.argv.includes('-v')) {
19
24
  // 1. Check if "claude" command is available
20
25
  try {
21
26
  await which('claude');
22
- } catch (error) {
27
+ } catch {
23
28
  console.error(chalk.redBright("Error: 'claude' command not found. Please install Claude Code first: npm install -g @anthropic-ai/claude-code"));
24
29
  process.exit(1);
25
30
  }
26
31
 
27
- // 2. Intro
32
+ // 2. Check Git Bash on Windows
33
+ if (process.platform === 'win32') {
34
+ const possiblePaths = [
35
+ process.env.CLAUDE_CODE_GIT_BASH_PATH,
36
+ 'C:\\Program Files\\Git\\bin\\bash.exe',
37
+ 'C:\\Program Files (x86)\\Git\\bin\\bash.exe',
38
+ ].filter(Boolean);
39
+
40
+ const gitBashFound = possiblePaths.some(path => fs.existsSync(path));
41
+
42
+ if (!gitBashFound) {
43
+ console.log(chalk.red('\n❌ Git Bash is required on Windows\n'));
44
+ console.log(chalk.cyan('📥 Install Git for Windows:'));
45
+ console.log(chalk.white(' https://git-scm.com/downloads/win\n'));
46
+ console.log(chalk.cyan('⚙️ Or set the path manually:'));
47
+ console.log(chalk.white(' CLAUDE_CODE_GIT_BASH_PATH=C:\\Program Files\\Git\\bin\\bash.exe\n'));
48
+ console.log(chalk.yellow('💡 After installation, restart your terminal and try again.\n'));
49
+ process.exit(1);
50
+ }
51
+ }
52
+
53
+ // 3. Intro
28
54
  console.clear();
29
55
  console.log(chalk.cyan.bold("Claude Code (via ScioNos)"));
30
56
 
31
- // 3. Token info
32
- console.log(chalk.blueBright("To retrieve your token, visit: https://hubs02225.snia.ch/console/token"));
57
+ // 4. Token info
58
+ console.log(chalk.blueBright("To retrieve your token, visit: https://routerlab.ch/keys"));
33
59
 
34
- // 4. Token input
60
+ // 5. Token input
35
61
  const token = await password({
36
62
  message: "Please enter your ANTHROPIC_AUTH_TOKEN:",
37
63
  validate: (input) => {
@@ -43,16 +69,17 @@ const token = await password({
43
69
  mask: '*'
44
70
  });
45
71
 
46
- // 5. Environment configuration
72
+ // 6. Environment configuration
47
73
  const env = {
48
74
  ...process.env,
49
- ANTHROPIC_BASE_URL: "https://hubs02225.snia.ch",
75
+ ANTHROPIC_BASE_URL: "https://routerlab.ch",
50
76
  ANTHROPIC_AUTH_TOKEN: token,
51
77
  ANTHROPIC_API_KEY: "" // Force empty string
52
78
  };
53
79
 
54
- // 6. Launch Claude Code
55
- const child = spawn('claude', [], {
80
+ // 7. Launch Claude Code
81
+ const args = process.argv.slice(2);
82
+ const child = spawn('claude', args, {
56
83
  stdio: 'inherit',
57
84
  env: env
58
85
  });
package/package.json CHANGED
@@ -1,13 +1,15 @@
1
1
  {
2
2
  "name": "claude-scionos",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Ephemeral and secure runner for Claude Code CLI in SNIA environment",
5
+ "type": "module",
5
6
  "main": "index.js",
6
7
  "bin": {
7
8
  "claude-scionos": "index.js"
8
9
  },
9
10
  "scripts": {
10
11
  "test": "echo \"Error: no test specified\" && exit 1",
12
+ "lint": "eslint .",
11
13
  "release:patch": "npm version patch -m \"Chore: Bump version to %s\"",
12
14
  "release:minor": "npm version minor -m \"Chore: Bump version to %s\"",
13
15
  "release:major": "npm version major -m \"Chore: Bump version to %s\""
@@ -33,9 +35,15 @@
33
35
  },
34
36
  "private": false,
35
37
  "dependencies": {
36
- "@inquirer/prompts": "^8.0.1",
38
+ "@inquirer/prompts": "^8.0.2",
37
39
  "chalk": "^5.6.2",
38
40
  "cross-spawn": "^7.0.6",
41
+ "update-notifier": "^7.3.1",
39
42
  "which": "^6.0.0"
43
+ },
44
+ "devDependencies": {
45
+ "@eslint/js": "^9.39.1",
46
+ "eslint": "^9.39.1",
47
+ "globals": "^16.5.0"
40
48
  }
41
- }
49
+ }