triflux 4.0.0 → 4.0.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.
Files changed (2) hide show
  1. package/bin/triflux.mjs +20 -8
  2. package/package.json +61 -61
package/bin/triflux.mjs CHANGED
@@ -1570,13 +1570,24 @@ function cmdUpdate() {
1570
1570
  if (stoppedHubInfo?.pid) {
1571
1571
  info(`실행 중 hub 정지 (PID ${stoppedHubInfo.pid})`);
1572
1572
  }
1573
- const npmCmd = isDev ? "npm install -g triflux@dev" : "npm update -g triflux";
1574
- const result = execSync(npmCmd, {
1575
- encoding: "utf8",
1576
- timeout: 60000,
1577
- stdio: ["pipe", "pipe", "ignore"],
1578
- }).trim().split(/\r?\n/)[0];
1579
- ok(`${isDev ? "npm install -g triflux@dev" : "npm update -g triflux"} — ${result || "완료"}`);
1573
+ const npmCmd = isDev ? "npm install -g triflux@dev" : "npm install -g triflux@latest";
1574
+ let result;
1575
+ try {
1576
+ result = execSync(npmCmd, {
1577
+ encoding: "utf8",
1578
+ timeout: 90000,
1579
+ stdio: ["pipe", "pipe", "pipe"],
1580
+ }).trim().split(/\r?\n/)[0];
1581
+ } catch (retryErr) {
1582
+ // Windows: 자기 자신의 파일 잠금으로 첫 시도 실패 가능 → 1회 재시도
1583
+ info("첫 시도 실패, 재시도 중...");
1584
+ result = execSync(npmCmd, {
1585
+ encoding: "utf8",
1586
+ timeout: 90000,
1587
+ stdio: ["pipe", "pipe", "pipe"],
1588
+ }).trim().split(/\r?\n/)[0];
1589
+ }
1590
+ ok(`${npmCmd} — ${result || "완료"}`);
1580
1591
  updated = true;
1581
1592
  break;
1582
1593
  }
@@ -1611,7 +1622,8 @@ function cmdUpdate() {
1611
1622
  if (stoppedHubInfo && startHubAfterUpdate(stoppedHubInfo)) {
1612
1623
  info("업데이트 실패 후 hub 재기동 시도");
1613
1624
  }
1614
- fail(`업데이트 실패: ${e.message}`);
1625
+ const stderr = e.stderr?.toString().trim();
1626
+ fail(`업데이트 실패: ${e.message}${stderr ? `\n ${stderr.split(/\r?\n/)[0]}` : ""}`);
1615
1627
  return;
1616
1628
  }
1617
1629
 
package/package.json CHANGED
@@ -1,61 +1,61 @@
1
- {
2
- "name": "triflux",
3
- "version": "4.0.0",
4
- "description": "CLI-first multi-model orchestrator for Claude Code — route tasks to Codex, Gemini, and Claude",
5
- "type": "module",
6
- "bin": {
7
- "triflux": "bin/triflux.mjs",
8
- "tfx": "bin/triflux.mjs",
9
- "tfl": "bin/triflux.mjs",
10
- "tfx-setup": "bin/tfx-setup.mjs",
11
- "tfx-doctor": "bin/tfx-doctor.mjs"
12
- },
13
- "files": [
14
- "bin",
15
- "hub",
16
- "skills",
17
- "!**/failure-reports",
18
- "scripts",
19
- "hooks",
20
- "hud",
21
- ".claude-plugin",
22
- ".mcp.json",
23
- "README.md",
24
- "README.ko.md",
25
- "LICENSE"
26
- ],
27
- "scripts": {
28
- "setup": "node scripts/setup.mjs",
29
- "postinstall": "node scripts/setup.mjs",
30
- "test": "node --test --test-force-exit --test-concurrency=1 \"tests/**/*.test.mjs\" \"scripts/__tests__/**/*.test.mjs\"",
31
- "test:unit": "node --test --test-force-exit --test-concurrency=1 tests/unit/**/*.test.mjs",
32
- "test:integration": "node --test --test-force-exit --test-concurrency=1 tests/integration/**/*.test.mjs",
33
- "test:route-smoke": "node --test scripts/test-tfx-route-no-claude-native.mjs"
34
- },
35
- "engines": {
36
- "node": ">=18.0.0"
37
- },
38
- "repository": {
39
- "type": "git",
40
- "url": "git+https://github.com/tellang/triflux.git"
41
- },
42
- "homepage": "https://github.com/tellang/triflux#readme",
43
- "author": "tellang",
44
- "license": "MIT",
45
- "dependencies": {
46
- "@modelcontextprotocol/sdk": "^1.27.1",
47
- "better-sqlite3": "^12.6.2",
48
- "systray2": "^2.1.4"
49
- },
50
- "keywords": [
51
- "claude-code",
52
- "plugin",
53
- "codex",
54
- "gemini",
55
- "cli-routing",
56
- "orchestration",
57
- "multi-model",
58
- "triflux",
59
- "tfx"
60
- ]
61
- }
1
+ {
2
+ "name": "triflux",
3
+ "version": "4.0.1",
4
+ "description": "CLI-first multi-model orchestrator for Claude Code — route tasks to Codex, Gemini, and Claude",
5
+ "type": "module",
6
+ "bin": {
7
+ "triflux": "bin/triflux.mjs",
8
+ "tfx": "bin/triflux.mjs",
9
+ "tfl": "bin/triflux.mjs",
10
+ "tfx-setup": "bin/tfx-setup.mjs",
11
+ "tfx-doctor": "bin/tfx-doctor.mjs"
12
+ },
13
+ "files": [
14
+ "bin",
15
+ "hub",
16
+ "skills",
17
+ "!**/failure-reports",
18
+ "scripts",
19
+ "hooks",
20
+ "hud",
21
+ ".claude-plugin",
22
+ ".mcp.json",
23
+ "README.md",
24
+ "README.ko.md",
25
+ "LICENSE"
26
+ ],
27
+ "scripts": {
28
+ "setup": "node scripts/setup.mjs",
29
+ "postinstall": "node scripts/setup.mjs",
30
+ "test": "node --test --test-force-exit --test-concurrency=1 \"tests/**/*.test.mjs\" \"scripts/__tests__/**/*.test.mjs\"",
31
+ "test:unit": "node --test --test-force-exit --test-concurrency=1 tests/unit/**/*.test.mjs",
32
+ "test:integration": "node --test --test-force-exit --test-concurrency=1 tests/integration/**/*.test.mjs",
33
+ "test:route-smoke": "node --test scripts/test-tfx-route-no-claude-native.mjs"
34
+ },
35
+ "engines": {
36
+ "node": ">=18.0.0"
37
+ },
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "git+https://github.com/tellang/triflux.git"
41
+ },
42
+ "homepage": "https://github.com/tellang/triflux#readme",
43
+ "author": "tellang",
44
+ "license": "MIT",
45
+ "dependencies": {
46
+ "@modelcontextprotocol/sdk": "^1.27.1",
47
+ "better-sqlite3": "^12.6.2",
48
+ "systray2": "^2.1.4"
49
+ },
50
+ "keywords": [
51
+ "claude-code",
52
+ "plugin",
53
+ "codex",
54
+ "gemini",
55
+ "cli-routing",
56
+ "orchestration",
57
+ "multi-model",
58
+ "triflux",
59
+ "tfx"
60
+ ]
61
+ }