claude-connect 0.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 wmcarlosv
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,175 @@
1
+ # Claude Connect
2
+
3
+ CLI en Node.js para conectar `Claude Code` con proveedores externos desde una interfaz de consola.
4
+
5
+ ## Estado actual
6
+
7
+ La app ya soporta:
8
+
9
+ - `Kimi` por `API key`
10
+ - `DeepSeek` por `API key`
11
+ - `Qwen` por `OAuth` o `Token`
12
+ - catálogo local en SQLite sembrado automáticamente desde código
13
+ - creación, edición y eliminación de conexiones
14
+ - activación reversible sobre la instalación real de `Claude Code`
15
+ - detección automática de rutas en Linux y Windows
16
+ - gateway local Anthropic-compatible para `Qwen`
17
+ - limpieza y restauración reversible de credenciales de `claude.ai` para evitar `Auth conflict`
18
+ - navegación con `Volver` en pantallas y salida por doble `Esc`
19
+
20
+ ## Uso
21
+
22
+ Arranque local:
23
+
24
+ ```bash
25
+ npm start
26
+ ```
27
+
28
+ Para exponer el comando globalmente:
29
+
30
+ ```bash
31
+ npm link
32
+ claude-connect
33
+ ```
34
+
35
+ Instalación desde npm:
36
+
37
+ ```bash
38
+ npm install -g claude-connect
39
+ claude-connect
40
+ ```
41
+
42
+ Ejecución sin instalación global:
43
+
44
+ ```bash
45
+ npx claude-connect
46
+ ```
47
+
48
+ Requisito:
49
+
50
+ - Node.js 22 o superior
51
+
52
+ ## Flujo principal
53
+
54
+ 1. `Nueva conexion`
55
+ 2. elegir proveedor
56
+ 3. elegir modelo
57
+ 4. elegir tipo de conexión: `OAuth` o `Token`
58
+ 5. guardar perfil local
59
+ 6. `Activar en Claude`
60
+ 7. usar `claude`
61
+
62
+ Al activar:
63
+
64
+ - `Kimi` usa `https://api.kimi.com/coding/`
65
+ - `DeepSeek` usa `https://api.deepseek.com/anthropic`
66
+ - `Qwen` usa el gateway local `http://127.0.0.1:4310/anthropic`
67
+
68
+ ## Dónde se guarda cada cosa
69
+
70
+ Claude Connect guarda estado local fuera del repo. Por defecto:
71
+
72
+ ```text
73
+ Linux: ~/.claude-connect
74
+ Windows: %APPDATA%\claude-connect
75
+ ```
76
+
77
+ Ahí viven:
78
+
79
+ - perfiles
80
+ - tokens OAuth
81
+ - API keys gestionadas por la app
82
+ - estado del switch de Claude
83
+ - estado y logs del gateway
84
+
85
+ El catálogo SQLite local se genera automáticamente en:
86
+
87
+ ```text
88
+ storage/claude-connect.sqlite
89
+ ```
90
+
91
+ Importante:
92
+
93
+ - esa base ya no se versiona en git
94
+ - el catálogo se reconstruye desde `src/data/catalog-store.js`
95
+ - un `git pull` no debería volver a darte conflicto por la base SQLite
96
+
97
+ ## Switch de Claude Code
98
+
99
+ La activación modifica la configuración real detectada de Claude Code y guarda un snapshot reversible.
100
+
101
+ Archivos implicados:
102
+
103
+ - `settings.json` de Claude
104
+ - `~/.claude.json`
105
+ - `.credentials.json` de Claude
106
+
107
+ Esto permite:
108
+
109
+ - activar `Kimi`, `DeepSeek` o `Qwen`
110
+ - evitar conflicto entre `claude.ai` y `ANTHROPIC_API_KEY`
111
+ - restaurar la sesión original con `Revertir Claude`
112
+
113
+ ## Proveedores
114
+
115
+ ### Kimi
116
+
117
+ - modelo: `kimi-for-coding`
118
+ - auth: `Token`
119
+ - base URL: `https://api.kimi.com/coding/`
120
+ - activación directa en Claude Code
121
+
122
+ ### DeepSeek
123
+
124
+ - modelos: `deepseek-chat`, `deepseek-reasoner`
125
+ - auth: `Token`
126
+ - base URL de activación: `https://api.deepseek.com/anthropic`
127
+ - activación directa en Claude Code
128
+
129
+ ### Qwen
130
+
131
+ - modelo: `qwen3-coder-plus`
132
+ - auth: `OAuth`, `Token`
133
+ - OAuth con device flow oficial de `Qwen Code`
134
+ - gateway local requerido para integrarlo con Claude Code
135
+
136
+ URL de autorización típica:
137
+
138
+ ```text
139
+ https://chat.qwen.ai/auth?user_code=XXXXX&client=qwen-code
140
+ ```
141
+
142
+ ## Navegación
143
+
144
+ - `Tab` vuelve a la pantalla anterior cuando aplica
145
+ - `Volver` aparece como opción visible en listas
146
+ - `Esc` una vez avisa
147
+ - `Esc` dos veces sale
148
+
149
+ ## Desarrollo
150
+
151
+ Pruebas:
152
+
153
+ ```bash
154
+ npm test
155
+ ```
156
+
157
+ Entrada principal:
158
+
159
+ - `src/wizard.js`
160
+
161
+ Catálogo:
162
+
163
+ - `src/data/catalog-store.js`
164
+
165
+ Switch de Claude:
166
+
167
+ - `src/lib/claude-settings.js`
168
+
169
+ OAuth Qwen:
170
+
171
+ - `src/lib/oauth.js`
172
+
173
+ Gateway local:
174
+
175
+ - `src/gateway/server.js`
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { spawn } from 'node:child_process';
4
+ import { fileURLToPath } from 'node:url';
5
+ import process from 'node:process';
6
+ import { run } from '../src/index.js';
7
+
8
+ const alreadyRestarted = process.env.CLAUDE_CONNECT_NO_WARNINGS === '1';
9
+
10
+ if (!alreadyRestarted && !process.execArgv.includes('--no-warnings=ExperimentalWarning')) {
11
+ const scriptPath = fileURLToPath(import.meta.url);
12
+ const child = spawn(process.execPath, ['--no-warnings=ExperimentalWarning', scriptPath, ...process.argv.slice(2)], {
13
+ env: {
14
+ ...process.env,
15
+ CLAUDE_CONNECT_NO_WARNINGS: '1'
16
+ },
17
+ stdio: 'inherit'
18
+ });
19
+
20
+ child.on('exit', (code, signal) => {
21
+ if (signal) {
22
+ process.kill(process.pid, signal);
23
+ return;
24
+ }
25
+
26
+ process.exit(code ?? 0);
27
+ });
28
+
29
+ child.on('error', (error) => {
30
+ const message = error instanceof Error ? error.message : String(error);
31
+ console.error(`\nclaude-connect: ${message}`);
32
+ process.exit(1);
33
+ });
34
+ } else {
35
+ run().catch((error) => {
36
+ const message = error instanceof Error ? error.message : String(error);
37
+ console.error(`\nclaude-connect: ${message}`);
38
+ process.exitCode = 1;
39
+ });
40
+ }
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "claude-connect",
3
+ "version": "0.1.0",
4
+ "description": "CLI para configurar Claude Code con proveedores de modelos externos",
5
+ "author": "wmcarlosv",
6
+ "type": "module",
7
+ "homepage": "https://github.com/wmcarlosv/claude-connect#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/wmcarlosv/claude-connect.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/wmcarlosv/claude-connect/issues"
14
+ },
15
+ "bin": {
16
+ "claude-connect": "./bin/claude-connect.js"
17
+ },
18
+ "files": [
19
+ "bin/claude-connect.js",
20
+ "src/",
21
+ "README.md",
22
+ "LICENSE"
23
+ ],
24
+ "scripts": {
25
+ "start": "node --no-warnings=ExperimentalWarning ./bin/claude-connect.js",
26
+ "test": "node --no-warnings=ExperimentalWarning --test",
27
+ "prepublishOnly": "npm test"
28
+ },
29
+ "engines": {
30
+ "node": ">=22.0.0"
31
+ },
32
+ "keywords": [
33
+ "cli",
34
+ "claude",
35
+ "claude-code",
36
+ "anthropic",
37
+ "deepseek",
38
+ "kimi",
39
+ "qwen",
40
+ "terminal"
41
+ ],
42
+ "license": "MIT"
43
+ }