@pentoshi/clai 3.11.14 → 3.11.15
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/dist/tui/runtime.d.ts
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* Prefer re-exec under Bun when available; otherwise fall back with a clear hint.
|
|
4
4
|
*/
|
|
5
5
|
export declare function isBunRuntime(): boolean;
|
|
6
|
-
/** Resolve `bun` on PATH (cross-platform). */
|
|
6
|
+
/** Resolve `bun` on PATH or local clai/bun bin dirs (cross-platform). */
|
|
7
7
|
export declare function findBunExecutable(): string | undefined;
|
|
8
|
+
/** Automatically install Bun into ~/.clai/bin if missing (cross-platform). */
|
|
9
|
+
export declare function autoInstallBun(): string | undefined;
|
|
8
10
|
export declare function openTuiRuntimeHint(): string;
|
|
9
11
|
/**
|
|
10
12
|
* If we are not already under Bun, re-launch this process with Bun using the
|
package/dist/tui/runtime.js
CHANGED
|
@@ -3,26 +3,33 @@
|
|
|
3
3
|
* Prefer re-exec under Bun when available; otherwise fall back with a clear hint.
|
|
4
4
|
*/
|
|
5
5
|
import { spawnSync } from "node:child_process";
|
|
6
|
-
import { accessSync, constants } from "node:fs";
|
|
6
|
+
import { accessSync, chmodSync, constants, existsSync } from "node:fs";
|
|
7
7
|
import { delimiter, join } from "node:path";
|
|
8
|
+
import { homedir } from "node:os";
|
|
8
9
|
export function isBunRuntime() {
|
|
9
10
|
return typeof globalThis.Bun !== "undefined";
|
|
10
11
|
}
|
|
11
|
-
/** Resolve `bun` on PATH (cross-platform). */
|
|
12
|
+
/** Resolve `bun` on PATH or local clai/bun bin dirs (cross-platform). */
|
|
12
13
|
export function findBunExecutable() {
|
|
14
|
+
const binName = process.platform === "win32" ? "bun.exe" : "bun";
|
|
13
15
|
const fromEnv = process.env.BUN_INSTALL
|
|
14
|
-
? join(process.env.BUN_INSTALL, "bin",
|
|
16
|
+
? join(process.env.BUN_INSTALL, "bin", binName)
|
|
15
17
|
: undefined;
|
|
18
|
+
const claiBin = join(homedir(), ".clai", "bin", binName);
|
|
19
|
+
const bunHomeBin = join(homedir(), ".bun", "bin", binName);
|
|
16
20
|
const candidates = [
|
|
17
21
|
fromEnv,
|
|
22
|
+
claiBin,
|
|
23
|
+
bunHomeBin,
|
|
18
24
|
...(process.env.PATH ?? "")
|
|
19
25
|
.split(delimiter)
|
|
20
26
|
.filter(Boolean)
|
|
21
|
-
.map((dir) => join(dir,
|
|
27
|
+
.map((dir) => join(dir, binName)),
|
|
22
28
|
].filter((p) => Boolean(p));
|
|
29
|
+
const checkMode = process.platform === "win32" ? constants.F_OK : constants.X_OK;
|
|
23
30
|
for (const path of candidates) {
|
|
24
31
|
try {
|
|
25
|
-
accessSync(path,
|
|
32
|
+
accessSync(path, checkMode);
|
|
26
33
|
return path;
|
|
27
34
|
}
|
|
28
35
|
catch {
|
|
@@ -31,6 +38,51 @@ export function findBunExecutable() {
|
|
|
31
38
|
}
|
|
32
39
|
return undefined;
|
|
33
40
|
}
|
|
41
|
+
/** Automatically install Bun into ~/.clai/bin if missing (cross-platform). */
|
|
42
|
+
export function autoInstallBun() {
|
|
43
|
+
if (process.env.CLAI_NO_BUN_AUTO_INSTALL === "1")
|
|
44
|
+
return undefined;
|
|
45
|
+
const targetDir = join(homedir(), ".clai");
|
|
46
|
+
const binName = process.platform === "win32" ? "bun.exe" : "bun";
|
|
47
|
+
const targetBin = join(targetDir, "bin", binName);
|
|
48
|
+
const env = {
|
|
49
|
+
...process.env,
|
|
50
|
+
BUN_INSTALL: targetDir,
|
|
51
|
+
};
|
|
52
|
+
console.log(" [clai] Setting up Bun runtime for OpenTUI (~/.clai/bin)...");
|
|
53
|
+
try {
|
|
54
|
+
if (process.platform === "win32") {
|
|
55
|
+
spawnSync("powershell", [
|
|
56
|
+
"-NoProfile",
|
|
57
|
+
"-ExecutionPolicy",
|
|
58
|
+
"Bypass",
|
|
59
|
+
"-Command",
|
|
60
|
+
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; irm https://bun.sh/install.ps1 | iex",
|
|
61
|
+
], { env, stdio: "inherit", windowsHide: true });
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const res = spawnSync("sh", ["-c", "curl -fsSL https://bun.sh/install | bash"], { env, stdio: "inherit" });
|
|
65
|
+
if (res.status !== 0) {
|
|
66
|
+
spawnSync("sh", ["-c", "wget -qO- https://bun.sh/install | bash"], { env, stdio: "inherit" });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (existsSync(targetBin)) {
|
|
70
|
+
if (process.platform !== "win32") {
|
|
71
|
+
try {
|
|
72
|
+
chmodSync(targetBin, 0o755);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// ignore
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return targetBin;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// try fallback check below
|
|
83
|
+
}
|
|
84
|
+
return findBunExecutable();
|
|
85
|
+
}
|
|
34
86
|
export function openTuiRuntimeHint() {
|
|
35
87
|
return [
|
|
36
88
|
"OpenTUI needs the Bun runtime (Node/tsx cannot load the native renderer).",
|
|
@@ -55,7 +107,10 @@ export function reexecWithBunIfNeeded(entryPath) {
|
|
|
55
107
|
return false;
|
|
56
108
|
if (process.env.CLAI_FORCE_NODE === "1")
|
|
57
109
|
return false;
|
|
58
|
-
|
|
110
|
+
let bun = findBunExecutable();
|
|
111
|
+
if (!bun && process.stdout.isTTY) {
|
|
112
|
+
bun = autoInstallBun();
|
|
113
|
+
}
|
|
59
114
|
if (!bun)
|
|
60
115
|
return false;
|
|
61
116
|
if (!entryPath)
|
package/dist/tui/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/tui/runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/tui/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* AUTO-GENERATED by scripts/sync-version.mjs — do not edit by hand.
|
|
3
3
|
* Source of truth: package.json "version".
|
|
4
4
|
*/
|
|
5
|
-
export declare const VERSION: "3.11.
|
|
6
|
-
export declare const VERSION_TAG: "v3.11.
|
|
5
|
+
export declare const VERSION: "3.11.15";
|
|
6
|
+
export declare const VERSION_TAG: "v3.11.15";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* AUTO-GENERATED by scripts/sync-version.mjs — do not edit by hand.
|
|
3
3
|
* Source of truth: package.json "version".
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = "3.11.
|
|
6
|
-
export const VERSION_TAG = "v3.11.
|
|
5
|
+
export const VERSION = "3.11.15";
|
|
6
|
+
export const VERSION_TAG = "v3.11.15";
|
|
7
7
|
//# sourceMappingURL=version.generated.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pentoshi/clai",
|
|
3
|
-
"version": "3.11.
|
|
3
|
+
"version": "3.11.15",
|
|
4
4
|
"description": "A fast, cross-platform AI CLI assistant with ask and agent modes for shell tasks, file operations, and cybersecurity workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"prepublishOnly": "npm run build",
|
|
47
47
|
"precompile": "node scripts/sync-version.mjs",
|
|
48
48
|
"compile": "node scripts/embed-prompts.mjs && bun run scripts/build.ts",
|
|
49
|
+
"postinstall": "node scripts/postinstall.mjs",
|
|
49
50
|
"install:opentui-platforms": "node scripts/install-opentui-platforms.mjs",
|
|
50
51
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
51
52
|
"pretest": "node scripts/sync-version.mjs",
|