devez-vibe 1.10.8 → 1.10.9

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/dvz.exe CHANGED
Binary file
package/bin/dvz.js CHANGED
@@ -1,35 +1,35 @@
1
- #!/usr/bin/env node
2
-
3
- import { existsSync, readFileSync } from "node:fs";
4
- import { spawn } from "node:child_process";
5
- import { dirname, isAbsolute, join } from "node:path";
6
- import { fileURLToPath } from "node:url";
7
-
8
- const packageExecutable = join(dirname(fileURLToPath(import.meta.url)), "dvz.exe");
9
- const pointer = process.env.LOCALAPPDATA
10
- ? join(process.env.LOCALAPPDATA, "DevezVibe", "current-executable.txt")
11
- : "";
12
-
13
- let executable = packageExecutable;
14
- try {
15
- const candidate = pointer ? readFileSync(pointer, "utf8").trim() : "";
16
- if (isAbsolute(candidate) && existsSync(candidate)) executable = candidate;
17
- } catch {
18
- // A missing or incomplete pointer falls back to the npm-packaged executable.
19
- }
20
-
21
- const child = spawn(executable, process.argv.slice(2), { stdio: "inherit" });
22
- child.on("error", (error) => {
23
- console.error(`Devez Vibe 실행 실패: ${error.message}`);
24
- process.exit(1);
25
- });
26
- child.on("exit", (code, signal) => {
27
- if (signal) process.kill(process.pid, signal);
28
- else process.exit(code ?? 1);
29
- });
30
-
31
- for (const signal of ["SIGINT", "SIGTERM", "SIGHUP"]) {
32
- process.on(signal, () => {
33
- if (!child.killed) child.kill(signal);
34
- });
35
- }
1
+ #!/usr/bin/env node
2
+
3
+ import { existsSync, readFileSync } from "node:fs";
4
+ import { spawn } from "node:child_process";
5
+ import { dirname, isAbsolute, join } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+
8
+ const packageExecutable = join(dirname(fileURLToPath(import.meta.url)), "dvz.exe");
9
+ const pointer = process.env.LOCALAPPDATA
10
+ ? join(process.env.LOCALAPPDATA, "DevezVibe", "current-executable.txt")
11
+ : "";
12
+
13
+ let executable = packageExecutable;
14
+ try {
15
+ const candidate = pointer ? readFileSync(pointer, "utf8").trim() : "";
16
+ if (isAbsolute(candidate) && existsSync(candidate)) executable = candidate;
17
+ } catch {
18
+ // A missing or incomplete pointer falls back to the npm-packaged executable.
19
+ }
20
+
21
+ const child = spawn(executable, process.argv.slice(2), { stdio: "inherit" });
22
+ child.on("error", (error) => {
23
+ console.error(`Devez Vibe 실행 실패: ${error.message}`);
24
+ process.exit(1);
25
+ });
26
+ child.on("exit", (code, signal) => {
27
+ if (signal) process.kill(process.pid, signal);
28
+ else process.exit(code ?? 1);
29
+ });
30
+
31
+ for (const signal of ["SIGINT", "SIGTERM", "SIGHUP"]) {
32
+ process.on(signal, () => {
33
+ if (!child.killed) child.kill(signal);
34
+ });
35
+ }
package/package.json CHANGED
@@ -1,50 +1,50 @@
1
- {
2
- "name": "devez-vibe",
3
- "version": "1.10.8",
4
- "type": "module",
5
- "description": "Stable terminal UI for Codex and Claude Agent SDK",
6
- "keywords": [
7
- "codex",
8
- "cli",
9
- "tui",
10
- "terminal",
11
- "app-server",
12
- "claude-agent-sdk"
13
- ],
14
- "homepage": "https://github.com/MrHoje/Devez-vibe#readme",
15
- "bugs": "https://github.com/MrHoje/Devez-vibe/issues",
16
- "repository": {
17
- "type": "git",
18
- "url": "git+https://github.com/MrHoje/Devez-vibe.git"
19
- },
20
- "license": "MIT",
21
- "bin": {
22
- "dvz": "bin/dvz.js"
23
- },
24
- "files": [
25
- "bin/dvz.js",
26
- "bin/dvz.exe",
27
- "bridge/claude-agent-sdk-bridge.mjs",
28
- "install-skills.mjs",
29
- "prepare-search-deps.mjs",
30
- "skills/luna-loop/",
31
- "skills/insane-search/",
32
- "README.md",
33
- "LICENSE"
34
- ],
35
- "os": [
36
- "win32"
37
- ],
38
- "cpu": [
39
- "x64"
40
- ],
41
- "engines": {
42
- "node": ">=18"
43
- },
44
- "scripts": {
45
- "postinstall": "node install-skills.mjs && node prepare-search-deps.mjs"
46
- },
47
- "dependencies": {
48
- "@anthropic-ai/claude-agent-sdk": "0.3.302"
49
- }
50
- }
1
+ {
2
+ "name": "devez-vibe",
3
+ "version": "1.10.9",
4
+ "type": "module",
5
+ "description": "Stable terminal UI for Codex and Claude Agent SDK",
6
+ "keywords": [
7
+ "codex",
8
+ "cli",
9
+ "tui",
10
+ "terminal",
11
+ "app-server",
12
+ "claude-agent-sdk"
13
+ ],
14
+ "homepage": "https://github.com/MrHoje/Devez-vibe#readme",
15
+ "bugs": "https://github.com/MrHoje/Devez-vibe/issues",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/MrHoje/Devez-vibe.git"
19
+ },
20
+ "license": "MIT",
21
+ "bin": {
22
+ "dvz": "bin/dvz.js"
23
+ },
24
+ "files": [
25
+ "bin/dvz.js",
26
+ "bin/dvz.exe",
27
+ "bridge/claude-agent-sdk-bridge.mjs",
28
+ "install-skills.mjs",
29
+ "prepare-search-deps.mjs",
30
+ "skills/luna-loop/",
31
+ "skills/insane-search/",
32
+ "README.md",
33
+ "LICENSE"
34
+ ],
35
+ "os": [
36
+ "win32"
37
+ ],
38
+ "cpu": [
39
+ "x64"
40
+ ],
41
+ "engines": {
42
+ "node": ">=18"
43
+ },
44
+ "scripts": {
45
+ "postinstall": "node install-skills.mjs && node prepare-search-deps.mjs"
46
+ },
47
+ "dependencies": {
48
+ "@anthropic-ai/claude-agent-sdk": "0.3.302"
49
+ }
50
+ }
@@ -1,42 +1,42 @@
1
- // insane-search 스킬이 첫 호출에서 받는 파이썬 패키지를 설치 시점에 미리 깔아 둔다.
2
- // 준비는 어디까지나 선택적이다. 파이썬이 없거나 설치가 실패해도 안내만 남기고 정상 종료해서
3
- // devezVibe 설치 자체가 깨지지 않게 한다. 스킬은 첫 사용 때 다시 설치를 시도하므로 손해가 없다.
4
- import { spawnSync } from "node:child_process";
5
-
6
- // SKILL.md의 의존성 가드와 같은 조합이다. 한쪽만 바뀌면 첫 호출에서 다시 설치가 돈다.
7
- const guard = 'import curl_cffi,bs4,yaml,pypdf,markdownify; v=curl_cffi.__version__.split("."); assert (int(v[0]),int(v[1]))>=(0,15)';
8
- const packages = ["curl_cffi>=0.15.0", "beautifulsoup4", "pyyaml", "pypdf", "markdownify"];
9
-
10
- function run(command, args) {
11
- return spawnSync(command, args, { encoding: "utf8", windowsHide: true, timeout: 300000 });
12
- }
13
-
14
- // Windows에는 python3가 없는 대신 실행하면 스토어를 여는 별칭이 잡혀 있을 수 있다.
15
- // 버전 출력을 실제로 확인해서 쓸 수 있는 실행기만 고른다.
16
- function findPython() {
17
- for (const candidate of ["python3", "python", "py"]) {
18
- const probe = run(candidate, ["-c", "import sys; print(sys.version_info[0])"]);
19
- if (probe.status === 0 && probe.stdout.trim() === "3") return candidate;
20
- }
21
- return null;
22
- }
23
-
24
- const python = findPython();
25
- if (!python) {
26
- console.log("insane-search 준비 건너뜀: 파이썬 3을 찾지 못했습니다. 설치하면 첫 사용 때 자동으로 준비됩니다.");
27
- process.exit(0);
28
- }
29
-
30
- if (run(python, ["-c", guard]).status === 0) {
31
- console.log("insane-search 의존성 준비 완료: 이미 설치되어 있습니다.");
32
- process.exit(0);
33
- }
34
-
35
- // --user는 관리자 권한 없이도 설치되게 하고, 가상환경에서는 pip가 알아서 무시한다.
36
- const install = run(python, ["-m", "pip", "install", "-U", "--user", "-q", ...packages]);
37
- if (install.status === 0 && run(python, ["-c", guard]).status === 0) {
38
- console.log("insane-search 의존성 준비 완료");
39
- } else {
40
- const detail = (install.stderr || install.stdout || "").trim().split("\n").pop() || "원인 미상";
41
- console.log(`insane-search 준비 건너뜀 (${detail}). 첫 사용 때 다시 시도합니다.`);
42
- }
1
+ // insane-search 스킬이 첫 호출에서 받는 파이썬 패키지를 설치 시점에 미리 깔아 둔다.
2
+ // 준비는 어디까지나 선택적이다. 파이썬이 없거나 설치가 실패해도 안내만 남기고 정상 종료해서
3
+ // devezVibe 설치 자체가 깨지지 않게 한다. 스킬은 첫 사용 때 다시 설치를 시도하므로 손해가 없다.
4
+ import { spawnSync } from "node:child_process";
5
+
6
+ // SKILL.md의 의존성 가드와 같은 조합이다. 한쪽만 바뀌면 첫 호출에서 다시 설치가 돈다.
7
+ const guard = 'import curl_cffi,bs4,yaml,pypdf,markdownify; v=curl_cffi.__version__.split("."); assert (int(v[0]),int(v[1]))>=(0,15)';
8
+ const packages = ["curl_cffi>=0.15.0", "beautifulsoup4", "pyyaml", "pypdf", "markdownify"];
9
+
10
+ function run(command, args) {
11
+ return spawnSync(command, args, { encoding: "utf8", windowsHide: true, timeout: 300000 });
12
+ }
13
+
14
+ // Windows에는 python3가 없는 대신 실행하면 스토어를 여는 별칭이 잡혀 있을 수 있다.
15
+ // 버전 출력을 실제로 확인해서 쓸 수 있는 실행기만 고른다.
16
+ function findPython() {
17
+ for (const candidate of ["python3", "python", "py"]) {
18
+ const probe = run(candidate, ["-c", "import sys; print(sys.version_info[0])"]);
19
+ if (probe.status === 0 && probe.stdout.trim() === "3") return candidate;
20
+ }
21
+ return null;
22
+ }
23
+
24
+ const python = findPython();
25
+ if (!python) {
26
+ console.log("insane-search 준비 건너뜀: 파이썬 3을 찾지 못했습니다. 설치하면 첫 사용 때 자동으로 준비됩니다.");
27
+ process.exit(0);
28
+ }
29
+
30
+ if (run(python, ["-c", guard]).status === 0) {
31
+ console.log("insane-search 의존성 준비 완료: 이미 설치되어 있습니다.");
32
+ process.exit(0);
33
+ }
34
+
35
+ // --user는 관리자 권한 없이도 설치되게 하고, 가상환경에서는 pip가 알아서 무시한다.
36
+ const install = run(python, ["-m", "pip", "install", "-U", "--user", "-q", ...packages]);
37
+ if (install.status === 0 && run(python, ["-c", guard]).status === 0) {
38
+ console.log("insane-search 의존성 준비 완료");
39
+ } else {
40
+ const detail = (install.stderr || install.stdout || "").trim().split("\n").pop() || "원인 미상";
41
+ console.log(`insane-search 준비 건너뜀 (${detail}). 첫 사용 때 다시 시도합니다.`);
42
+ }