aiterm-mcp 0.37.2 → 0.37.3

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,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.37.3] - 2026-09-13
11
+
12
+ ### 修正
13
+
14
+ - WindowsのMSIX仮想AppDataにAitermがある場合、Codex Desktopの中継起動が`MODULE_NOT_FOUND`で失敗する問題を修正した。起動済みの中継が自身の実体パスを後続processへ渡す。
15
+
10
16
  ## [0.37.2] - 2026-09-13
11
17
 
12
18
  ### 修正
@@ -1679,7 +1685,8 @@ prototype (preserved under `prototype/python/` as the porting source and referen
1679
1685
  `ubuntu-latest` for Node 18/20/22, publishing to npm on `v*` tags with
1680
1686
  provenance.
1681
1687
 
1682
- [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.2...HEAD
1688
+ [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.3...HEAD
1689
+ [0.37.3]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.2...v0.37.3
1683
1690
  [0.37.2]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.1...v0.37.2
1684
1691
  [0.37.1]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.0...v0.37.1
1685
1692
  [0.37.0]: https://github.com/kitepon/aiterm-mcp/compare/v0.36.0...v0.37.0
package/README.ja.md CHANGED
@@ -65,6 +65,7 @@ Windowsはユーザー環境変数`CODEX_CLI_PATH`で起動設定を維持しま
65
65
  解除・旧版への巻き戻し前は`aiterm-setup --codex-steer disable`を実行してCodexを再起動してください。
66
66
  SteerはmacOS・Windowsの公式Codex Desktopと同梱CLI 0.154以上に対応します。Steer有効時の宛先は中継で起動したDesktopに限ります。
67
67
  Windowsでは公式Desktopが展開した実行ファイルを照合し、認証付きのローカル接続へ中継します。
68
+ Windowsの仮想AppDataからの起動にも対応し、中継へ実際の保存先を引き継ぎます。
68
69
  Aitermのpackageがlauncher・中継・設定・親への配送を含み、gpt-connectorやdotagentsの導入は不要です。
69
70
  両OSで公式CodexをDesktopの直接の子として保ち、中継は公式Codexの子として動きます。
70
71
  有効化時は元の起動設定を保存してAitermのlauncherを設定し、解除時に元へ戻します。選択後に他から変更された値は上書きしません。
@@ -196,7 +197,7 @@ runtime-error store は canonical dotagents config の `collection.enabled: true
196
197
  場合だけ収集し、既定OFF、network送信は行いません。tag起点CIのnpm provenance(OIDC Trusted
197
198
  Publishing)で公開し、GitHub Release が Official MCP Registry を再登録します。
198
199
 
199
- **状態:** 開発継続中 · 現行公開版 **v0.37.2** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
200
+ **状態:** 開発継続中 · 現行公開版 **v0.37.3** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
200
201
 
201
202
  ### 更新と巻き戻し
202
203
 
package/README.md CHANGED
@@ -65,6 +65,7 @@ Windowsはユーザー環境変数`CODEX_CLI_PATH`で起動設定を維持しま
65
65
  解除・旧版への巻き戻し前は`aiterm-setup --codex-steer disable`を実行してCodexを再起動してください。
66
66
  SteerはmacOS・Windowsの公式Codex Desktopと同梱CLI 0.154以上に対応します。Steer有効時の宛先は中継で起動したDesktopに限ります。
67
67
  Windowsでは公式Desktopが展開した実行ファイルを照合し、認証付きのローカル接続へ中継します。
68
+ Windowsの仮想AppDataからの起動にも対応し、中継へ実際の保存先を引き継ぎます。
68
69
  Aitermのpackageがlauncher・中継・設定・親への配送を含み、gpt-connectorやdotagentsの導入は不要です。
69
70
  両OSで公式CodexをDesktopの直接の子として保ち、中継は公式Codexの子として動きます。
70
71
  有効化時は元の起動設定を保存してAitermのlauncherを設定し、解除時に元へ戻します。選択後に他から変更された値は上書きしません。
@@ -210,7 +211,7 @@ collection is off by default and performs no network I/O. It ships via
210
211
  tag-triggered CI with npm provenance (OIDC Trusted Publishing); the GitHub
211
212
  Release re-registers the Official MCP Registry entry.
212
213
 
213
- **Status:** actively maintained · current public release **v0.37.2** · 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).
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).
214
215
 
215
216
  ### Update and rollback
216
217
 
@@ -14,6 +14,7 @@ ${windowsNativeProcessSource}
14
14
  [DataContract] public sealed class LaunchPlan {
15
15
  [DataMember] public string directory;
16
16
  [DataMember] public string endpoint;
17
+ [DataMember] public string relay;
17
18
  [DataMember] public string[] arguments;
18
19
  }
19
20
  public static class AitermLauncher {
@@ -45,7 +46,7 @@ public static class AitermLauncher {
45
46
  if(plan.directory==null) return server.Wait();
46
47
  // 中継は公式CLIのjobを継承する。launcherは終了監視だけを担い、JSON-RPCを通さない。
47
48
  using(var bridge=AitermNativeProcess.Start(server.Pid,${literal(node)},new string[] {
48
- ${literal(relay)},"--serve",${literal(binary)},plan.directory,plan.endpoint,server.Pid.ToString()
49
+ plan.relay,"--serve",${literal(binary)},plan.directory,plan.endpoint,server.Pid.ToString()
49
50
  },false,null)) {
50
51
  int code=bridge.Wait();
51
52
  lifetime.Dispose();
@@ -4,7 +4,7 @@ import { once } from "node:events";
4
4
  import { randomBytes, randomUUID } from "node:crypto";
5
5
  import { join } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
- import { writeFileSync, rmSync } from "node:fs";
7
+ import { writeFileSync, rmSync, realpathSync } from "node:fs";
8
8
  import WebSocket from "ws";
9
9
  import { ensurePrivateDirectory, makeFilePrivate } from "./windows-codex-state.js";
10
10
  import { readWindowsProcesses } from "./windows-codex-connection.js";
@@ -15,6 +15,8 @@ export async function prepareWindowsRelay(root, args) {
15
15
  const serverArgs = codexServerArguments(args);
16
16
  if (!serverArgs)
17
17
  return { directory: null, endpoint: null, arguments: args };
18
+ // MSIXの仮想AppData名はnative子から見えないため、起動済みの自身の実体を渡す。
19
+ const relay = realpathSync.native(fileURLToPath(import.meta.url));
18
20
  const directory = join(root, randomUUID());
19
21
  ensurePrivateDirectory(directory);
20
22
  try {
@@ -28,7 +30,7 @@ export async function prepareWindowsRelay(root, args) {
28
30
  const port = reservation.address().port;
29
31
  await new Promise((resolve, reject) => reservation.close(error => error ? reject(error) : resolve()));
30
32
  const endpoint = "ws://127.0.0.1:" + port;
31
- return { directory, endpoint, arguments: [...serverArgs, "--listen", endpoint, "--ws-auth", "capability-token", "--ws-token-file", tokenFile] };
33
+ return { directory, endpoint, relay, arguments: [...serverArgs, "--listen", endpoint, "--ws-auth", "capability-token", "--ws-token-file", tokenFile] };
32
34
  }
33
35
  catch (error) {
34
36
  rmSync(directory, { recursive: true, force: true });
package/docs/DESIGN.md CHANGED
@@ -89,6 +89,9 @@ Windows標準の.NET Frameworkでlauncherを作り、`CreateProcessW`の親proce
89
89
  公式CLIをDesktopの直接の子、中継Nodeを公式CLIの直接の子として起動する。
90
90
  launcherは終了監視だけを担い、JSON-RPCを通さない。Windowsには同一PIDでのexecがないためPIDは変わるが、
91
91
  公式binary、起動元との直接の親子関係、通常の環境とstdioは維持する。
92
+ MSIXの仮想AppDataはnative子へ同じ論理パスを渡しても見えない場合があるため、準備processが
93
+ 自身の`realpathSync.native`を起動計画へ返し、後続の中継Nodeはその実体を起動する。
94
+ 解決は起動時に行い、設定時の保存先で固定しない。
92
95
  公式Desktopが展開した4実行ファイルを配布元のSHA-256と照合し、AitermがCodexをコピー・再配布しない。
93
96
  公式CLIの認証付きloopback WebSocketを使い、本人専用ACLのtokenと接続記録をAitermのsessions下へ置く。
94
97
  Windowsのprocess情報はprocess-runtimeが所有し、接続はPID・開始時刻・実行ファイル・token引数で照合する。
package/docs/RELEASE.md CHANGED
@@ -43,6 +43,10 @@ Codex Steerを変更した場合は、公式バイナリを指定した`test/cod
43
43
  Windowsは`AITERM_TEST_CODEX_BINARY`に公式Desktopの実行fileを指定し、
44
44
  `test/windows-codex.test.mjs`で単独launcher、ACL、親識別、元の起動設定の保存と解除も確認する。
45
45
  同じ環境変数で`test/codex-relay-official.test.mjs`の実行中Steer・終了後再開・承認中継・EOFを確認できる。
46
+ Windowsの中継起動を変更した場合は、公式Desktopが入った端末で`AITERM_TEST_CODEX_PACKAGE`に
47
+ そのpackage family名を指定し、`test/windows-codex-msix.test.mjs`も実行する。公式の
48
+ `Invoke-CommandInDesktopPackage`で仮想AppDataからのinitialize・EOFを確認し、稼働中Desktopや
49
+ ユーザー設定は変更しない。packageと公式binaryを指定しないCIではこの実機試験をskipする。
46
50
  Linuxの未対応Steer選択が理由付きで停止することもCIで確認する。
47
51
 
48
52
  setupを変更した場合は、公開packageのglobal install後に`aiterm-setup --json`を実行し、
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiterm-mcp",
3
- "version": "0.37.2",
3
+ "version": "0.37.3",
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": [