aiterm-mcp 0.61.11 → 0.61.12

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,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.61.12] - 2026-10-24
11
+
12
+ ### Validation scope
13
+
14
+ - Linux full validation passed (1579 passed, 46 skipped, 0 failed). The affected native execution path passed its focused macOS gate (110 passed, 0 failed). The same focused gate on hosted Windows passed 23 tests and skipped 87 POSIX-only cases; this patch does not enable POSIX execution checkpoints on Windows or replace the Windows full acceptance recorded for 0.61.11. All fixtures use isolated metadata and CLI substitutes, without production seats or delivery replay.
15
+
16
+ ### Fixed
17
+
18
+ - A newly connected participant in the opt-in POSIX native execution entry waits within the existing bounded metadata admission before committing its declared roles for its first asynchronous request. Previously, deferred enrollment tried a synchronous lock first and could return `EXECUTION_BUSY` while a concurrent metadata writer was about to finish. Scope and actor checks, synchronous refusal, removed-registration refusal and immediate-stop snapshots are preserved; no input or failed request is replayed.
19
+
20
+ ### Tests
21
+
22
+ - Isolated cold-participant fixtures cover dispatch under a held writer, read-only registration, concurrent first requests, scope or actor changes while waiting, and refusal after registration removal. These reproduce and repair the product defect without assigning a cause to historical deliveries whose original native receipt was not retained.
23
+
10
24
  ## [0.61.11] - 2026-10-24
11
25
 
12
26
  ### Validation scope
@@ -2807,7 +2821,8 @@ prototype (preserved under `prototype/python/` as the porting source and referen
2807
2821
  `ubuntu-latest` for Node 18/20/22, publishing to npm on `v*` tags with
2808
2822
  provenance.
2809
2823
 
2810
- [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.61.11...HEAD
2824
+ [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.61.12...HEAD
2825
+ [0.61.12]: https://github.com/kitepon/aiterm-mcp/compare/v0.61.11...v0.61.12
2811
2826
  [0.61.11]: https://github.com/kitepon/aiterm-mcp/compare/v0.61.10...v0.61.11
2812
2827
  [0.61.10]: https://github.com/kitepon/aiterm-mcp/compare/v0.61.9...v0.61.10
2813
2828
  [0.61.9]: https://github.com/kitepon/aiterm-mcp/compare/v0.61.8...v0.61.9
package/README.ja.md CHANGED
@@ -209,7 +209,7 @@ runtime-error store は canonical dotagents config の `collection.enabled: true
209
209
  場合だけ収集し、既定OFF、network送信は行いません。tag起点CIのnpm provenance(OIDC Trusted
210
210
  Publishing)で公開し、GitHub Release が Official MCP Registry を再登録します。
211
211
 
212
- **状態:** 開発継続中 · 現行公開版 **v0.61.11** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
212
+ **状態:** 開発継続中 · 現行公開版 **v0.61.12** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
213
213
 
214
214
  ### 更新と巻き戻し
215
215
 
@@ -753,7 +753,7 @@ CLIが終了した結果不明の空起動には、BellTeam native入口の `age
753
753
 
754
754
  ## 人が覗く
755
755
 
756
- POSIXの明示native実行構成では、検証済みcallerへ通常メッセージが届く間も、そのcallerから別席への送信を継続できる。callerの世代や各requestのslotは書き換えない。agentの貼付け・Enterはmetadata mutexの競合を入力前に待ち、不明な操作・世代交代・停止では入力を止める。BellTeamは閉じた席をpromptなしの明示管理`agent_launch`で再作成できる。promptを送る呼出しには元の実行参照が必要である。
756
+ POSIXの明示native実行構成では、検証済みcallerへ通常メッセージが届く間も、そのcallerから別席への送信を継続できる。callerの世代や各requestのslotは書き換えない。新しく接続した参加者も、初回の非同期要求で宣言済みの役割を保存する際は、既存の上限付きmetadata受付で競合を待つ。この待機は入力を再送しない。agentの貼付け・Enterはmetadata mutexの競合を入力前に待ち、不明な操作・世代交代・停止では入力を止める。BellTeamは閉じた席をpromptなしの明示管理`agent_launch`で再作成できる。promptを送る呼出しには元の実行参照が必要である。
757
757
 
758
758
  セッションは共有tmux socket(Windows nativeはpsmux namespace)上にある。`pty_open`/`agent_launch`の戻り値に表示されるattachコマンドで、人間がClaude/Codex/Grok/Cursor harnessの同じ端末へ入り、途中でキーボードを引き取れる。
759
759
  POSIXでは、tmuxのソケットがまだ無くても最初の`agent_launch`でserverを起動できる。Aitermは作成したsessionとserverを実際のreceiptから照合して受付を確定し、不明な結果を入力の再送で補わない。
package/README.md CHANGED
@@ -227,7 +227,7 @@ collection is off by default and performs no network I/O. It ships via
227
227
  tag-triggered CI with npm provenance (OIDC Trusted Publishing); the GitHub
228
228
  Release re-registers the Official MCP Registry entry.
229
229
 
230
- **Status:** actively maintained · current public release **v0.61.11** · 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).
230
+ **Status:** actively maintained · current public release **v0.61.12** · 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).
231
231
 
232
232
  ### Update and rollback
233
233
 
@@ -795,7 +795,7 @@ Each `pty_send` accepts at most 64 KiB of UTF-8 text. Sends to the same session
795
795
 
796
796
  ## A human can watch
797
797
 
798
- In the opt-in POSIX native execution entry, an ordinary message arriving at a verified caller can overlap that caller's outgoing send. It does not replace the caller's generation or clear either request's slot. Agent paste/submit segments wait for metadata mutex contention before input; uncertain operations, generation changes and stops still prevent input. BellTeam may explicitly recreate a closed session with a promptless management `agent_launch`; sending a prompt still requires its original execution reference.
798
+ In the opt-in POSIX native execution entry, an ordinary message arriving at a verified caller can overlap that caller's outgoing send. It does not replace the caller's generation or clear either request's slot. A newly connected participant also waits within the existing bounded metadata admission to commit its declared roles before its first asynchronous request; that wait never replays input. Agent paste/submit segments wait for metadata mutex contention before input; uncertain operations, generation changes and stops still prevent input. BellTeam may explicitly recreate a closed session with a promptless management `agent_launch`; sending a prompt still requires its original execution reference.
799
799
 
800
800
  An explicit `agent_execution` action `reconcile_launch` can bind an existing empty launch after a lost launch result in this opt-in entry. Supply the original `request` and exact `target: {session_id, launch_id}`. The server checks the original native/server identity, current managed generation, raw no-prompt state and a live ready harness under metadata admission, then releases only that unknown launch slot. Repeating an accepted empty launch before its send also rechecks the current generation, readiness and absence of competing session operations; a saved acceptance alone cannot confirm a later generation. It never launches, types, closes or resends. `issued` RPCs, unknown input and changed or unverified generations remain blocked. Any subsequent body uses the original reference through normal send admission once; a successful reconciliation does not prove the lost RPC receipt.
801
801
 
@@ -70,8 +70,14 @@ export class ParticipantExecutionStore extends FileExecutionStore {
70
70
  return value;
71
71
  }, options);
72
72
  }
73
- transaction(body, options = {}) {
74
- this.ensureEnrolled();
73
+ async transaction(body, options = {}) {
74
+ if (this.deferEnrollment && !this.registered) {
75
+ this.assertScope();
76
+ // The first async request must not take a fail-fast synchronous lock
77
+ // before its bounded metadata wait. Commit the explicit declaration in
78
+ // the existing short admission; never hold it across an async callback.
79
+ await super.admitNative(() => this.ensureEnrolled());
80
+ }
75
81
  return super.transaction(async (state) => {
76
82
  if (!options.readOnly)
77
83
  this.assertScope();
package/docs/DESIGN.md CHANGED
@@ -69,6 +69,9 @@ core入口の再確認と、managed metadata/hook生成・設定model保存は
69
69
  native作用やawaitをcallbackへ入れず、停止・世代/actor/scope交代・RPC終了後の遅着を拒否する。
70
70
  これらの明示接続以外の設定復元や親配送metadata経路はまだ未了であり、既定mainへの有効化条件を満たさない。
71
71
  private factoryは同scopeの共有stateへ既存PID/開始identityと役割を宣言し、各受付の同じlock内で欠測を拒否する。
72
+ 遅延登録する参加者の最初の非同期要求は、既存の上限付きmetadata受付内で宣言を保存してから進む。
73
+ 待機後にもscope/actorを照合し、read-only要求でも宣言だけは独立して保存する。
74
+ 同期入口の即時拒否、登録削除後の拒否、停止snapshotの登録不要条件は変えず、入力や要求を再送しない。
72
75
  MCP/parent-effectの既存参照とnative identityを読むinventoryはread-onlyで、役割やenvから世代・終了を補完しない。
73
76
  開始identity交代や未登録actorを示しても旧slotを消さず、parent受付だけで参照を退役させない。
74
77
  全行のidentity一致でも参加者の全発見/native終了fence/全経路の接続を証明せず、coverage incompleteを維持する。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiterm-mcp",
3
- "version": "0.61.11",
3
+ "version": "0.61.12",
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": [