@emend-ai/utim 1.46.12 → 1.46.14

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.
Files changed (2) hide show
  1. package/bin/utim.js +26 -23
  2. package/package.json +1 -1
package/bin/utim.js CHANGED
@@ -137,33 +137,36 @@ function installEngine(python) {
137
137
  '\nšŸ’” Termux detected. Preparing Android-compatible dependencies...\n\n'
138
138
  );
139
139
 
140
- // Step 1: upgrade pkg repo list
141
- spawnSync('pkg', ['update', '-y'], { stdio: 'pipe', shell: false, timeout: 30000 });
140
+ // Step 1: Install python-cryptography via pkg to avoid heavy cryptography C/Rust compilation
141
+ process.stderr.write('āš™ Installing python-cryptography via Termux package manager...\n\n');
142
+ spawnSync('pkg', ['install', '-y', 'python-cryptography'], {
143
+ stdio: 'inherit',
144
+ shell: false,
145
+ });
142
146
 
143
- // Step 2: install pydantic via Termux's own compiled package.
144
- // This is the ONLY reliable way to get pydantic-core on Android without
145
- // a Rust toolchain. pkg ships a prebuilt binary for aarch64-linux-android.
146
- process.stderr.write('āš™ Installing pydantic via Termux package manager...\n\n');
147
- const pkgResult = spawnSync(
148
- 'pkg', ['install', '-y', 'python-pydantic', 'python-cryptography'],
149
- { stdio: 'inherit', shell: false, timeout: 120000 }
147
+ // Step 2: Install pydantic-core using the Eutalix community shell installer script.
148
+ // This is the only bulletproof way to download the pre-compiled Android aarch64 wheel
149
+ // for Python 3.13+ without triggering compiling from Rust source.
150
+ process.stderr.write('\nāš™ Running precompiled pydantic-core Android wheel installer...\n\n');
151
+ spawnSync(
152
+ 'sh',
153
+ ['-c', 'curl -sL https://raw.githubusercontent.com/Eutalix/android-pydantic-core/main/install_pydantic_core.sh | bash'],
154
+ { stdio: 'inherit', shell: false, timeout: 180000 }
150
155
  );
151
156
 
152
- if (pkgResult.status !== 0) {
153
- process.stderr.write(
154
- '\n⚠ pkg install failed — will try pip with prebuilt wheel index as fallback...\n\n'
155
- );
156
- // Fallback: Eutalix prebuilt wheels (works for Python 3.11/3.12)
157
- spawnSync(
158
- python,
159
- ['-m', 'pip', 'install', '--upgrade', '--quiet',
160
- 'pydantic-core', 'pydantic',
161
- '--extra-index-url', 'https://eutalix.github.io/android-pydantic-core/'],
162
- { stdio: 'inherit', shell: false, timeout: 120000 }
163
- );
164
- }
157
+ // Step 3: Install pydantic v2 from the extra index (WITHOUT --upgrade, so it uses the local pre-built wheel)
158
+ process.stderr.write('\nāš™ Installing pydantic v2 (pre-compiled wheel)...\n\n');
159
+ spawnSync(
160
+ python,
161
+ [
162
+ '-m', 'pip', 'install',
163
+ 'pydantic',
164
+ '--extra-index-url', 'https://eutalix.github.io/android-pydantic-core/',
165
+ ],
166
+ { stdio: 'inherit', shell: false, timeout: 120000 }
167
+ );
165
168
 
166
- // Step 3: upgrade pip/setuptools/wheel
169
+ // Step 4: Upgrade pip/setuptools/wheel
167
170
  spawnSync(python, ['-m', 'pip', 'install', '--upgrade', '--quiet', 'pip', 'setuptools', 'wheel'], {
168
171
  stdio: 'pipe', shell: false, timeout: 60000,
169
172
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emend-ai/utim",
3
- "version": "1.46.12",
3
+ "version": "1.46.14",
4
4
  "description": "UTIM – Universal Terminal Intelligence Manager. An agentic AI coding assistant for your terminal.",
5
5
  "keywords": [
6
6
  "ai",