wenox-cli 1.0.9 → 1.1.1
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/bin/wenox.js +126 -46
- package/package.json +1 -1
- package/requirements-wenox.txt +50 -36
package/bin/wenox.js
CHANGED
|
@@ -56,8 +56,35 @@ function checkPython() {
|
|
|
56
56
|
const python = process.platform === 'win32' ? 'python' : 'python3';
|
|
57
57
|
const child = spawn(python, ['--version'], { stdio: 'pipe' });
|
|
58
58
|
|
|
59
|
+
let versionOutput = '';
|
|
60
|
+
child.stdout.on('data', (data) => {
|
|
61
|
+
versionOutput += data.toString();
|
|
62
|
+
});
|
|
63
|
+
|
|
59
64
|
child.on('close', (code) => {
|
|
60
|
-
|
|
65
|
+
if (code === 0) {
|
|
66
|
+
// Extract version number
|
|
67
|
+
const versionMatch = versionOutput.match(/Python (\d+)\.(\d+)\.(\d+)/);
|
|
68
|
+
if (versionMatch) {
|
|
69
|
+
const major = parseInt(versionMatch[1]);
|
|
70
|
+
const minor = parseInt(versionMatch[2]);
|
|
71
|
+
|
|
72
|
+
console.log(chalk.cyan(`🐍 Python ${major}.${minor} detected`));
|
|
73
|
+
|
|
74
|
+
if (major === 3 && minor >= 14) {
|
|
75
|
+
console.log(chalk.green('✅ Python 3.14+ detected - using optimized package versions'));
|
|
76
|
+
} else if (major === 3 && minor >= 10) {
|
|
77
|
+
console.log(chalk.yellow('⚠️ Python 3.10-3.13 detected - some packages may need updates'));
|
|
78
|
+
} else {
|
|
79
|
+
console.log(chalk.red('❌ Python 3.10+ is required for WENOX'));
|
|
80
|
+
resolve(false);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
resolve(true);
|
|
85
|
+
} else {
|
|
86
|
+
resolve(false);
|
|
87
|
+
}
|
|
61
88
|
});
|
|
62
89
|
|
|
63
90
|
child.on('error', () => {
|
|
@@ -83,65 +110,118 @@ function checkAider() {
|
|
|
83
110
|
|
|
84
111
|
async function installAider() {
|
|
85
112
|
console.log(chalk.cyan('📦 Installing WENOX Enterprise Environment...'));
|
|
86
|
-
console.log(chalk.yellow('🔧
|
|
113
|
+
console.log(chalk.yellow('🔧 Installing Python 3.14 compatible packages'));
|
|
87
114
|
|
|
88
115
|
const python = process.platform === 'win32' ? 'python' : 'python3';
|
|
89
116
|
const pip = process.platform === 'win32' ? 'pip' : 'pip3';
|
|
90
117
|
|
|
91
118
|
return new Promise((resolve, reject) => {
|
|
92
|
-
//
|
|
93
|
-
console.log(chalk.cyan('
|
|
119
|
+
// First, upgrade pip and setuptools for Python 3.14 compatibility
|
|
120
|
+
console.log(chalk.cyan('🔧 Upgrading pip and setuptools for Python 3.14...'));
|
|
94
121
|
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
const child = spawn(pip, [
|
|
122
|
+
const upgradeChild = spawn(pip, [
|
|
98
123
|
'install',
|
|
99
|
-
'
|
|
100
|
-
|
|
101
|
-
'
|
|
102
|
-
'
|
|
124
|
+
'--upgrade',
|
|
125
|
+
'pip',
|
|
126
|
+
'setuptools',
|
|
127
|
+
'wheel'
|
|
103
128
|
], {
|
|
104
129
|
stdio: 'inherit',
|
|
105
130
|
shell: true
|
|
106
131
|
});
|
|
107
132
|
|
|
108
|
-
|
|
109
|
-
if (
|
|
110
|
-
console.log(chalk.
|
|
111
|
-
console.log(chalk.cyan('🎯 All packages match the developer environment'));
|
|
112
|
-
resolve();
|
|
113
|
-
} else {
|
|
114
|
-
console.log(chalk.yellow('⚠️ Some packages failed, trying fallback installation...'));
|
|
115
|
-
|
|
116
|
-
// Fallback: just install aider-chat with exact version
|
|
117
|
-
const fallbackChild = spawn(pip, [
|
|
118
|
-
'install',
|
|
119
|
-
'aider-chat==0.16.0',
|
|
120
|
-
'openai==1.109.1',
|
|
121
|
-
'anthropic==0.76.0',
|
|
122
|
-
'--force-reinstall'
|
|
123
|
-
], {
|
|
124
|
-
stdio: 'inherit',
|
|
125
|
-
shell: true
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
fallbackChild.on('close', (fallbackCode) => {
|
|
129
|
-
if (fallbackCode === 0) {
|
|
130
|
-
console.log(chalk.green('✅ WENOX core packages installed successfully!'));
|
|
131
|
-
resolve();
|
|
132
|
-
} else {
|
|
133
|
-
reject(new Error('Failed to install WENOX dependencies'));
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
fallbackChild.on('error', (err) => {
|
|
138
|
-
reject(err);
|
|
139
|
-
});
|
|
133
|
+
upgradeChild.on('close', (upgradeCode) => {
|
|
134
|
+
if (upgradeCode !== 0) {
|
|
135
|
+
console.log(chalk.yellow('⚠️ Pip upgrade failed, continuing anyway...'));
|
|
140
136
|
}
|
|
137
|
+
|
|
138
|
+
// Install from our Python 3.14 compatible requirements file
|
|
139
|
+
console.log(chalk.cyan('📋 Installing WENOX packages (Python 3.14 compatible)...'));
|
|
140
|
+
|
|
141
|
+
const requirementsPath = path.join(__dirname, '..', 'requirements-wenox.txt');
|
|
142
|
+
|
|
143
|
+
const child = spawn(pip, [
|
|
144
|
+
'install',
|
|
145
|
+
'-r',
|
|
146
|
+
requirementsPath,
|
|
147
|
+
'--upgrade',
|
|
148
|
+
'--force-reinstall'
|
|
149
|
+
], {
|
|
150
|
+
stdio: 'inherit',
|
|
151
|
+
shell: true
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
child.on('close', (code) => {
|
|
155
|
+
if (code === 0) {
|
|
156
|
+
console.log(chalk.green('✅ WENOX Enterprise Environment installed successfully!'));
|
|
157
|
+
console.log(chalk.cyan('🎯 All packages are Python 3.14 compatible'));
|
|
158
|
+
resolve();
|
|
159
|
+
} else {
|
|
160
|
+
console.log(chalk.yellow('⚠️ Some packages failed, trying core installation...'));
|
|
161
|
+
|
|
162
|
+
// Fallback: install core packages only
|
|
163
|
+
const fallbackChild = spawn(pip, [
|
|
164
|
+
'install',
|
|
165
|
+
'aider-chat==0.16.0',
|
|
166
|
+
'openai==1.109.1',
|
|
167
|
+
'anthropic==0.76.0',
|
|
168
|
+
'litellm==1.81.3',
|
|
169
|
+
'pydantic>=2.0.0',
|
|
170
|
+
'--upgrade',
|
|
171
|
+
'--force-reinstall'
|
|
172
|
+
], {
|
|
173
|
+
stdio: 'inherit',
|
|
174
|
+
shell: true
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
fallbackChild.on('close', (fallbackCode) => {
|
|
178
|
+
if (fallbackCode === 0) {
|
|
179
|
+
console.log(chalk.green('✅ WENOX core packages installed successfully!'));
|
|
180
|
+
console.log(chalk.cyan('🎯 Ready to use WENOX CLI'));
|
|
181
|
+
resolve();
|
|
182
|
+
} else {
|
|
183
|
+
console.log(chalk.red('❌ Installation failed. Trying minimal installation...'));
|
|
184
|
+
|
|
185
|
+
// Last resort: just aider-chat
|
|
186
|
+
const minimalChild = spawn(pip, [
|
|
187
|
+
'install',
|
|
188
|
+
'aider-chat==0.16.0',
|
|
189
|
+
'--upgrade'
|
|
190
|
+
], {
|
|
191
|
+
stdio: 'inherit',
|
|
192
|
+
shell: true
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
minimalChild.on('close', (minimalCode) => {
|
|
196
|
+
if (minimalCode === 0) {
|
|
197
|
+
console.log(chalk.green('✅ WENOX minimal installation completed!'));
|
|
198
|
+
console.log(chalk.yellow('⚠️ Some features may be limited'));
|
|
199
|
+
resolve();
|
|
200
|
+
} else {
|
|
201
|
+
reject(new Error('Failed to install WENOX dependencies. Please check your Python installation.'));
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
minimalChild.on('error', (err) => {
|
|
206
|
+
reject(err);
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
fallbackChild.on('error', (err) => {
|
|
212
|
+
reject(err);
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
child.on('error', (err) => {
|
|
218
|
+
reject(err);
|
|
219
|
+
});
|
|
141
220
|
});
|
|
142
221
|
|
|
143
|
-
|
|
144
|
-
|
|
222
|
+
upgradeChild.on('error', (err) => {
|
|
223
|
+
console.log(chalk.yellow('⚠️ Pip upgrade failed, continuing with installation...'));
|
|
224
|
+
// Continue with main installation even if upgrade fails
|
|
145
225
|
});
|
|
146
226
|
});
|
|
147
227
|
}
|
|
@@ -221,7 +301,7 @@ async function main() {
|
|
|
221
301
|
// Handle help flag
|
|
222
302
|
if (process.argv.includes('--help') || process.argv.includes('-h')) {
|
|
223
303
|
console.log(`
|
|
224
|
-
${chalk.
|
|
304
|
+
${chalk.bold(chalk.cyan('WENOX CLI'))} - Claude API Enterprise Platform
|
|
225
305
|
|
|
226
306
|
${chalk.bold('Usage:')}
|
|
227
307
|
wenox [options] [files...]
|
package/package.json
CHANGED
package/requirements-wenox.txt
CHANGED
|
@@ -1,41 +1,55 @@
|
|
|
1
|
-
# WENOX Enterprise Environment -
|
|
1
|
+
# WENOX Enterprise Environment - Python 3.14 Compatible Versions
|
|
2
|
+
# Core WENOX dependencies
|
|
2
3
|
aider-chat==0.16.0
|
|
3
|
-
openai==
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
4
|
+
openai==1.109.1
|
|
5
|
+
anthropic==0.76.0
|
|
6
|
+
litellm==1.81.3
|
|
7
|
+
|
|
8
|
+
# Essential dependencies with Python 3.14 compatibility
|
|
9
|
+
aiohttp==3.13.3
|
|
10
|
+
aiosignal==1.4.0
|
|
11
|
+
attrs==25.4.0
|
|
12
|
+
certifi==2026.1.4
|
|
13
|
+
charset-normalizer==3.4.4
|
|
14
|
+
diskcache==5.6.3
|
|
15
|
+
frozenlist==1.8.0
|
|
16
|
+
gitdb==4.0.12
|
|
17
|
+
GitPython==3.1.46
|
|
18
|
+
grep-ast==0.9.0
|
|
19
|
+
idna==3.11
|
|
20
|
+
jsonschema==4.26.0
|
|
21
|
+
markdown-it-py==4.0.0
|
|
22
|
+
multidict==6.7.1
|
|
23
|
+
networkx==3.6.1
|
|
24
|
+
numpy==2.2.6
|
|
25
|
+
pathspec==1.0.4
|
|
26
|
+
prompt-toolkit==3.0.52
|
|
27
|
+
Pygments==2.19.2
|
|
28
|
+
requests==2.32.5
|
|
29
|
+
rich==13.9.4
|
|
30
|
+
scipy==1.17.0
|
|
31
|
+
smmap==5.0.2
|
|
32
|
+
sounddevice==0.5.5
|
|
33
|
+
soundfile==0.13.1
|
|
34
|
+
tiktoken==0.12.0
|
|
35
|
+
tqdm==4.67.1
|
|
36
|
+
urllib3==2.6.3
|
|
37
|
+
wcwidth==0.5.0
|
|
38
|
+
yarl==1.22.0
|
|
36
39
|
backoff==2.2.1
|
|
37
|
-
|
|
40
|
+
ConfigArgParse==1.7.1
|
|
38
41
|
mdurl==0.1.2
|
|
39
42
|
PyYAML==6.0.3
|
|
40
43
|
tree-sitter==0.25.2
|
|
41
|
-
tree-sitter-
|
|
44
|
+
tree-sitter-language-pack==0.13.0
|
|
45
|
+
|
|
46
|
+
# Additional compatibility packages
|
|
47
|
+
pydantic==2.12.5
|
|
48
|
+
pydantic_core==2.41.5
|
|
49
|
+
typing_extensions==4.15.0
|
|
50
|
+
packaging==25.0
|
|
51
|
+
anyio==4.12.1
|
|
52
|
+
sniffio==1.3.1
|
|
53
|
+
httpcore==1.0.9
|
|
54
|
+
httpx==0.28.1
|
|
55
|
+
distro==1.9.0
|