aiterm-mcp 0.37.3 → 0.37.4

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/CHANGELOG.md CHANGED
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.37.4] - 2026-09-19
11
+
12
+ ### 修正
13
+
14
+ - HomebrewのNode更新後にCodex Desktopの中継起動が終了コード127で失敗する問題を修正した。MCP登録と中継launcherは、削除されるCellarの版別実体ではなく、同じformulaの`opt`経由でNodeを起動する。`node@22`等の選択を維持し、GUIのPATHへ依存しない。
15
+ - 既存の登録とlauncherは、更新後の`aiterm-setup --json`で修復できる。
16
+
10
17
  ## [0.37.3] - 2026-09-13
11
18
 
12
19
  ### 修正
@@ -1685,7 +1692,8 @@ prototype (preserved under `prototype/python/` as the porting source and referen
1685
1692
  `ubuntu-latest` for Node 18/20/22, publishing to npm on `v*` tags with
1686
1693
  provenance.
1687
1694
 
1688
- [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.3...HEAD
1695
+ [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.4...HEAD
1696
+ [0.37.4]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.3...v0.37.4
1689
1697
  [0.37.3]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.2...v0.37.3
1690
1698
  [0.37.2]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.1...v0.37.2
1691
1699
  [0.37.1]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.0...v0.37.1
package/README.ja.md CHANGED
@@ -42,6 +42,7 @@ Ubuntu/Debianはsudoとaptでtmuxを準備する。必要な公式package mana
42
42
  既存設定の他サーバーを保持し、JSON設定は変更前の`.aiterm-backup`を残す。
43
43
  結果の`status`は`ready`/`unsupported`/`failed`/`restart_required`。未検出のAIは`not_detected`とし、全AI未検出は成功にしない。
44
44
  登録先はglobal packageのNodeとMCP入口の絶対パスで、npm一時cacheやsource checkoutは登録しない。
45
+ HomebrewのNodeは更新後も有効な`opt`のパスをMCP登録とCodex中継に使う。旧版の登録でNode更新後に起動できなくなった場合も、更新後の`aiterm-setup --json`で修復できる。
45
46
  更新後も同じ入口を実行し、MCP clientを再起動する。npm install自体はユーザー設定を変更しない。
46
47
  公開JSONは`schema: "aiterm.setup-result.v1"`、全体の`status`、端末の`backend`、
47
48
  AI別の`integrations`と選択機能の`codex_steer`を持つ。失敗時は`reason_code`を付け、終了コードはreadyなら0、再起動待ちは3、それ以外は2となる。
@@ -197,7 +198,7 @@ runtime-error store は canonical dotagents config の `collection.enabled: true
197
198
  場合だけ収集し、既定OFF、network送信は行いません。tag起点CIのnpm provenance(OIDC Trusted
198
199
  Publishing)で公開し、GitHub Release が Official MCP Registry を再登録します。
199
200
 
200
- **状態:** 開発継続中 · 現行公開版 **v0.37.3** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
201
+ **状態:** 開発継続中 · 現行公開版 **v0.37.4** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
201
202
 
202
203
  ### 更新と巻き戻し
203
204
 
package/README.md CHANGED
@@ -42,6 +42,7 @@ Ubuntu/Debianはsudoとaptでtmuxを準備する。必要な公式package mana
42
42
  既存設定の他サーバーを保持し、JSON設定は変更前の`.aiterm-backup`を残す。
43
43
  結果の`status`は`ready`/`unsupported`/`failed`/`restart_required`。未検出のAIは`not_detected`とし、全AI未検出は成功にしない。
44
44
  登録先はglobal packageのNodeとMCP入口の絶対パスで、npm一時cacheやsource checkoutは登録しない。
45
+ HomebrewのNodeは更新後も有効な`opt`のパスをMCP登録とCodex中継に使う。旧版の登録でNode更新後に起動できなくなった場合も、更新後の`aiterm-setup --json`で修復できる。
45
46
  更新後も同じ入口を実行し、MCP clientを再起動する。npm install自体はユーザー設定を変更しない。
46
47
  公開JSONは`schema: "aiterm.setup-result.v1"`、全体の`status`、端末の`backend`、
47
48
  AI別の`integrations`と選択機能の`codex_steer`を持つ。失敗時は`reason_code`を付け、終了コードはreadyなら0、再起動待ちは3、それ以外は2となる。
@@ -211,7 +212,7 @@ collection is off by default and performs no network I/O. It ships via
211
212
  tag-triggered CI with npm provenance (OIDC Trusted Publishing); the GitHub
212
213
  Release re-registers the Official MCP Registry entry.
213
214
 
214
- **Status:** actively maintained · current public release **v0.37.3** · runs on Linux · WSL2 · macOS · native Windows (tmux on POSIX, the tmux-CLI-compatible [psmux](https://github.com/psmux/psmux) on native Windows — no WSL required) · MIT · see the [CHANGELOG](CHANGELOG.md).
215
+ **Status:** actively maintained · current public release **v0.37.4** · runs on Linux · WSL2 · macOS · native Windows (tmux on POSIX, the tmux-CLI-compatible [psmux](https://github.com/psmux/psmux) on native Windows — no WSL required) · MIT · see the [CHANGELOG](CHANGELOG.md).
215
216
 
216
217
  ### Update and rollback
217
218
 
@@ -14,6 +14,7 @@ import { readRuntimeProcesses } from "./process-runtime.js";
14
14
  import { installRelayLogin, removeRelayLogin } from "./codex-relay-login.js";
15
15
  import { windowsCodexRuntime } from "./windows-codex-setup.js";
16
16
  import { configureRelay } from "./codex-relay-setup.js";
17
+ import { setupNodeExecutable } from "./setup-node.js";
17
18
  function command(executable, args) {
18
19
  const result = spawnSync(executable, args, { encoding: "utf8", timeout: 15_000 });
19
20
  if (result.error || result.status !== 0)
@@ -150,5 +151,7 @@ export async function configureCodexSteer(action = "status", overrides = {}) {
150
151
  if (runtime.platform !== "darwin") {
151
152
  return action === "enable" ? { status: "unsupported", reason_code: "codex_steer_platform_unsupported" } : { status: "disabled" };
152
153
  }
154
+ if (action === "enable")
155
+ runtime.node = setupNodeExecutable(runtime.node);
153
156
  return configureRelay(action, runtime);
154
157
  }
@@ -0,0 +1,16 @@
1
+ import { accessSync, constants } from "node:fs";
2
+ import { SetupError } from "./setup-platform.js";
3
+ // HomebrewのCellar実体は更新で消える。保存する起動先には同じformulaのoptを使う。
4
+ export function setupNodeExecutable(executable = process.execPath) {
5
+ const brew = /^(.*)\/Cellar\/(node(?:@\d+)?)\/[^/]+\/bin\/node$/.exec(executable);
6
+ if (!brew)
7
+ return executable;
8
+ const node = `${brew[1]}/opt/${brew[2]}/bin/node`;
9
+ try {
10
+ accessSync(node, constants.X_OK);
11
+ }
12
+ catch {
13
+ throw new SetupError("node_runtime_unavailable", "HomebrewのNode起動先を実行できません。Nodeの導入状態を確認してください");
14
+ }
15
+ return node;
16
+ }
package/dist/setup.js CHANGED
@@ -10,6 +10,7 @@ import { prepareBackend, runSetupCommand, SetupError } from "./setup-platform.js
10
10
  import { configureIntegrations } from "./setup-integrations.js";
11
11
  import { configureCodexSteer } from "./setup-codex-relay.js";
12
12
  import { readRelayConfig } from "./codex-relay-config.js";
13
+ import { setupNodeExecutable } from "./setup-node.js";
13
14
  export function globalRegistration(run = runSetupCommand) {
14
15
  const root = run(process.platform === "win32" ? "npm.cmd" : "npm", ["root", "-g"]).trim();
15
16
  if (!isAbsolute(root) || /[\r\n]/u.test(root))
@@ -19,7 +20,7 @@ export function globalRegistration(run = runSetupCommand) {
19
20
  if (realpathSync(installedRoot) !== realpathSync(packageRoot)) {
20
21
  throw new SetupError("global_package_required", "npm install -g aiterm-mcp後にaiterm-setupを実行してください。一時npm cacheやsource checkoutは登録しません");
21
22
  }
22
- return { command: process.execPath, args: [join(installedRoot, "dist", "index.js")] };
23
+ return { command: setupNodeExecutable(), args: [join(installedRoot, "dist", "index.js")] };
23
24
  }
24
25
  export async function verifySetupRuntime(registration) {
25
26
  const client = new Client({ name: "aiterm-setup", version: "1.0.0" });
package/docs/DESIGN.md CHANGED
@@ -76,6 +76,10 @@ Steerを選択したmacOS・Windows Desktopでは、MCP processの祖先にあ
76
76
  Steer設定がある場合にqueueへ自動退避することはない。
77
77
 
78
78
  `aiterm-setup`の`--codex-steer enable|disable|status`が選択導入を所有する。
79
+ MCP登録とmacOSの中継launcherへ保存するNodeの起動先は`src/setup-node.ts`が決める。
80
+ HomebrewのCellar実体は同じformulaの`opt/<formula>/bin/node`へ変換し、実行できることを確認する。
81
+ `node@22`等のformulaを維持し、GUIのPATH探索や別のNodeへの自動切替は行わない。
82
+ Homebrew以外の起動先は変更しない。既存の版別パスは`aiterm-setup --json`で再生成する。
79
83
  設定とPOSIX launcherは`~/.config/aiterm-mcp/codex-relay/`、一時socketは`/tmp/aiterm-codex-<uid>/`へ置く。
80
84
  launcherはNodeのstdio中継を起動してから公式CLIへ同じPIDでexecし、Desktopとの親子関係・署名・通常環境を保つ。
81
85
  Python・独自App Server・認証情報のコピーは使わない。中継はRPCと承認応答を透過搬送し、追加clientは承認へ応答しない。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiterm-mcp",
3
- "version": "0.37.3",
3
+ "version": "0.37.4",
4
4
  "mcpName": "io.github.kitepon/aiterm-mcp",
5
5
  "description": "Persistent terminal MCP with one harness-based launcher for Claude Code, Codex CLI, Grok CLI, and Cursor Agent CLI, plus durable PTYs for SSH, containers, and REPLs.",
6
6
  "keywords": [