kangentic 0.30.0 → 0.32.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/README.md +3 -1
- package/bin/kangentic.js +42 -22
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -25,7 +25,9 @@ npx kangentic /path/to/your/project
|
|
|
25
25
|
3. Installs per platform:
|
|
26
26
|
- **Windows:** Runs NSIS installer silently to `%LOCALAPPDATA%\Programs\Kangentic\`
|
|
27
27
|
- **macOS:** Extracts .zip to `~/Applications/Kangentic.app`
|
|
28
|
-
- **Linux:** Installs .
|
|
28
|
+
- **Linux:** Installs .rpm on RPM-family systems (`sudo dnf install` on Fedora/RHEL,
|
|
29
|
+
`sudo zypper install` on openSUSE, falling back to `sudo rpm -i`) or .deb elsewhere
|
|
30
|
+
(`sudo apt install`, falling back to `sudo dpkg -i`); prompts for password
|
|
29
31
|
4. Launches the app
|
|
30
32
|
|
|
31
33
|
## Updates
|
package/bin/kangentic.js
CHANGED
|
@@ -31,7 +31,7 @@ function getPlatformInfo() {
|
|
|
31
31
|
return { platform: 'darwin', arch, extension: 'zip' };
|
|
32
32
|
}
|
|
33
33
|
if (platform === 'linux') {
|
|
34
|
-
return { platform: 'linux', arch: 'x64'
|
|
34
|
+
return { platform: 'linux', arch: 'x64' };
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
return null;
|
|
@@ -83,22 +83,8 @@ function getArtifactFilename(platformInfo) {
|
|
|
83
83
|
return `Kangentic-${version}-${platformInfo.arch}-mac.zip`;
|
|
84
84
|
}
|
|
85
85
|
if (platformInfo.platform === 'linux') {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
execFileSync('which', ['rpm'], { stdio: 'ignore' });
|
|
89
|
-
const hasApt = (() => {
|
|
90
|
-
try {
|
|
91
|
-
execFileSync('which', ['apt'], { stdio: 'ignore' });
|
|
92
|
-
return true;
|
|
93
|
-
} catch {
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
})();
|
|
97
|
-
if (!hasApt) {
|
|
98
|
-
return `kangentic-${version}-1.x86_64.rpm`;
|
|
99
|
-
}
|
|
100
|
-
} catch {
|
|
101
|
-
// not rpm-based, use deb
|
|
86
|
+
if (commandExists('rpm') && !commandExists('apt')) {
|
|
87
|
+
return `kangentic-${version}-1.x86_64.rpm`;
|
|
102
88
|
}
|
|
103
89
|
return `kangentic_${version}_amd64.deb`;
|
|
104
90
|
}
|
|
@@ -206,14 +192,39 @@ function installMacOS(artifactPath) {
|
|
|
206
192
|
console.log('Installation complete.');
|
|
207
193
|
}
|
|
208
194
|
|
|
195
|
+
function commandExists(command) {
|
|
196
|
+
try {
|
|
197
|
+
execFileSync('which', [command], { stdio: 'ignore' });
|
|
198
|
+
return true;
|
|
199
|
+
} catch {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
209
204
|
function installLinux(artifactPath) {
|
|
210
205
|
console.log('Installing Kangentic...');
|
|
211
206
|
if (artifactPath.endsWith('.deb')) {
|
|
212
|
-
|
|
213
|
-
|
|
207
|
+
if (commandExists('apt')) {
|
|
208
|
+
console.log('Running: sudo apt install (you may be prompted for your password)');
|
|
209
|
+
execFileSync('sudo', ['apt', 'install', '-y', artifactPath], { stdio: 'inherit' });
|
|
210
|
+
} else {
|
|
211
|
+
console.log('Running: sudo dpkg -i (you may be prompted for your password)');
|
|
212
|
+
execFileSync('sudo', ['dpkg', '-i', artifactPath], { stdio: 'inherit' });
|
|
213
|
+
}
|
|
214
214
|
} else if (artifactPath.endsWith('.rpm')) {
|
|
215
|
-
|
|
216
|
-
|
|
215
|
+
if (commandExists('dnf')) {
|
|
216
|
+
console.log('Running: sudo dnf install (you may be prompted for your password)');
|
|
217
|
+
execFileSync('sudo', ['dnf', 'install', '-y', artifactPath], { stdio: 'inherit' });
|
|
218
|
+
} else if (commandExists('zypper')) {
|
|
219
|
+
// openSUSE ships zypper, not dnf. Without this branch it falls through to `rpm -i`,
|
|
220
|
+
// which enforces Requires without resolving them - the exact install failure this
|
|
221
|
+
// launcher path exists to avoid.
|
|
222
|
+
console.log('Running: sudo zypper install (you may be prompted for your password)');
|
|
223
|
+
execFileSync('sudo', ['zypper', '--non-interactive', 'install', artifactPath], { stdio: 'inherit' });
|
|
224
|
+
} else {
|
|
225
|
+
console.log('Running: sudo rpm -i (you may be prompted for your password)');
|
|
226
|
+
execFileSync('sudo', ['rpm', '-i', artifactPath], { stdio: 'inherit' });
|
|
227
|
+
}
|
|
217
228
|
}
|
|
218
229
|
console.log('Installation complete.');
|
|
219
230
|
}
|
|
@@ -432,4 +443,13 @@ if (require.main === module) {
|
|
|
432
443
|
}
|
|
433
444
|
|
|
434
445
|
// Exported for testing
|
|
435
|
-
module.exports = {
|
|
446
|
+
module.exports = {
|
|
447
|
+
isInstalled,
|
|
448
|
+
getVersionMarkerPath,
|
|
449
|
+
writeVersionMarker,
|
|
450
|
+
getInstallPath,
|
|
451
|
+
getTempDir,
|
|
452
|
+
getPlatformInfo,
|
|
453
|
+
getArtifactFilename,
|
|
454
|
+
installLinux,
|
|
455
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kangentic",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"description": "Install and launch Kangentic -- visual agent orchestration for Claude Code",
|
|
5
5
|
"bin": {
|
|
6
6
|
"kangentic": "bin/kangentic.js"
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
],
|
|
21
21
|
"author": {
|
|
22
22
|
"name": "Kangentic",
|
|
23
|
+
"email": "hello@kangentic.com",
|
|
23
24
|
"url": "https://github.com/Kangentic"
|
|
24
25
|
},
|
|
25
26
|
"license": "AGPL-3.0-only",
|