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 +45 -0
- package/README.fr.md +36 -6
- package/README.md +36 -6
- package/eslint.config.js +20 -0
- package/index.js +37 -10
- package/package.json +11 -3
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://
|
|
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://
|
|
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://
|
|
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://
|
|
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://
|
|
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 à `
|
|
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://
|
|
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://
|
|
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://
|
|
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://
|
|
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://
|
|
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 `
|
|
221
|
+
3. Check your network connection to `routerlab.ch`
|
|
192
222
|
|
|
193
223
|
---
|
|
194
224
|
|
package/eslint.config.js
ADDED
|
@@ -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
|
|
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.
|
|
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
|
-
//
|
|
32
|
-
console.log(chalk.blueBright("To retrieve your token, visit: https://
|
|
57
|
+
// 4. Token info
|
|
58
|
+
console.log(chalk.blueBright("To retrieve your token, visit: https://routerlab.ch/keys"));
|
|
33
59
|
|
|
34
|
-
//
|
|
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
|
-
//
|
|
72
|
+
// 6. Environment configuration
|
|
47
73
|
const env = {
|
|
48
74
|
...process.env,
|
|
49
|
-
ANTHROPIC_BASE_URL: "https://
|
|
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
|
-
//
|
|
55
|
-
const
|
|
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.
|
|
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.
|
|
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
|
+
}
|