aiterm-mcp 0.57.4 → 0.58.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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.58.1] - 2026-10-10
11
+
12
+ ### 修正
13
+
14
+ - Windowsで、Codexの親へ文を届けた後に、端末の窓(Windows Terminal)が一瞬出る事がある件を直す(共通パッケージ`aiterm-steer-delivery` 0.4.3)。
15
+ 0.58.0で足した「寝ている会話を起こす見張り」(ADR 0108)は、切り離したprocess(consoleを持たない)で動く。
16
+ CodexのSteerを有効にしていない端末では、見張りがCodexの実行ファイルを`where codex`で探し、その子に窓を隠す指定が無かった。
17
+ consoleを持たないprocessが、窓を隠さずにconsoleの子を起こすと、窓が一瞬出る。
18
+ - Steerが有効な端末(実行ファイルの場所がhookの設定にある)では、ここを通らない。その道では、0.58.0も窓を出していない(Windowsの実物で測った)。
19
+ - 共通パッケージが子のprocessを起こす所の全部に、窓を隠す指定を付けた。
20
+ - 共通パッケージを0.4.3へ上げる。0.4.2の直し(Claude Codeが起動し直して再開した会話へのchannelの配送)は、channelを使う製品向けで、Aitermの動きは変わらない。
21
+
22
+ ## [0.58.0] - 2026-10-09
23
+
24
+ ### 修正
25
+
26
+ - Codexのアプリが寝かせた会話へ届けた文が、人がその会話を開くまで動かなかった件を直す(ADR 0108)。
27
+ Codexが公式キューの文を番にするのは、会話を載せているprocessだけ。アプリは、見ていない会話を60秒で下ろす(Codex 0.154.0から。
28
+ その前は30分)。下ろされた会話あての文(子の回答、`aiterm-parent-delivery`で頼まれた文)は、キューに残ったままだった。
29
+ - 入れた約15秒後にキューを見直す。文が残っていて、アプリの会話で、最後の番が普通に終わっている時だけ、OSの口で
30
+ `codex://threads/<会話>`を開かせる。アプリが会話を載せ、公式キューが番を始める(実物で、入れてから約18秒)。
31
+ - 番の途中の会話、最後の番が途中で止められた会話(人が止めた、ほかの製品が作業を別の会話へ移した)、CLIの席は起こさない。
32
+ - 文が届いた時、アプリの画面はその会話へ切り替わる(macOSでは、アプリを前面へは出さない)。同じ会話へ続けて届いた時は、30秒の間は開き直さない。
33
+ - `aiterm-parent-delivery codex state`は、見張りが結果を残した後だけ`wake`を付ける(`outcome`が`woken`なら、開かせてキューが動いた)。
34
+ 今までの項目(`state`・`hook`・`turn_id`・`queued`)と、`submit`の返りは変えていない。
35
+ - 見張りが起きるのはmacOSとWindowsだけ。Windowsでは、人の画面のあるsessionの時だけ開く。Linux(サーバー、コンテナ)では何も変わらない。
36
+ 止める時は環境変数`AITERM_STEER_CODEX_WAKE=0`。
37
+ - Linuxのアプリが寝かせた会話は、まだ起こさない。確かめた端末ではリンクを開かせても会話が載らなかったが、その端末のアプリは
38
+ ログインの期限が切れていて、原因を分けられていない。今までどおり、会話が開かれた時に届く。
39
+ - 共通パッケージ`aiterm-steer-delivery`を0.4.1へ上げる。
40
+
10
41
  ## [0.57.4] - 2026-10-08
11
42
 
12
43
  ### 修正
@@ -2445,7 +2476,9 @@ prototype (preserved under `prototype/python/` as the porting source and referen
2445
2476
  `ubuntu-latest` for Node 18/20/22, publishing to npm on `v*` tags with
2446
2477
  provenance.
2447
2478
 
2448
- [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.57.4...HEAD
2479
+ [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.58.1...HEAD
2480
+ [0.58.1]: https://github.com/kitepon/aiterm-mcp/compare/v0.58.0...v0.58.1
2481
+ [0.58.0]: https://github.com/kitepon/aiterm-mcp/compare/v0.57.4...v0.58.0
2449
2482
  [0.57.4]: https://github.com/kitepon/aiterm-mcp/compare/v0.57.3...v0.57.4
2450
2483
  [0.57.3]: https://github.com/kitepon/aiterm-mcp/compare/v0.57.2...v0.57.3
2451
2484
  [0.57.2]: https://github.com/kitepon/aiterm-mcp/compare/v0.57.1...v0.57.2
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.57.4** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
212
+ **状態:** 開発継続中 · 現行公開版 **v0.58.1** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
213
213
 
214
214
  ### 更新と巻き戻し
215
215
 
package/README.md CHANGED
@@ -65,6 +65,10 @@ aiterm-setup --json --codex-steer enable
65
65
  公式キューと公式hookを使い、実行中の親には同じターンの次の推論へ回答を渡し、終了後は同じ会話を自動再開します。
66
66
  Codexの起動プログラムと通常のstdio通信は変更しません。hookの実行ファイルが失われてもCodexの起動・応答は継続します。
67
67
  終了後の再開は公式キューの監視周期に従い、約10秒かかる場合があります。
68
+ Codexのアプリは、見ていない会話を60秒で寝かせます。寝ている会話のキューは、その会話が開かれるまで動きません。
69
+ Aitermは、入れた約15秒後にまだ文が残っていて、番が普通に終わって寝ている会話なら、アプリにその会話を開かせて起こします(`codex://threads/<会話>`)。
70
+ その時、アプリの画面はその会話へ切り替わります。番の途中の会話、途中で止められた会話、CLIの席は起こしません。止める時は環境変数`AITERM_STEER_CODEX_WAKE=0`を立てます。
71
+ 起こすのはmacOSとWindowsのアプリです。Linuxのアプリが寝かせた会話は、まだ起こしません(実物で確かめられていません。会話が開かれた時に届きます)。
68
72
 
69
73
  `aiterm-setup`は`CODEX_HOME/hooks.json`へ専用の`PostToolUse`と`Stop`を追加し、公式APIでその2件だけを承認・読戻しします。
70
74
  他のhookや承認は保持します。選択と配送の所有記録は`~/.config/aiterm-mcp/codex-parent-hooks/`へ保存します。
@@ -223,7 +227,7 @@ collection is off by default and performs no network I/O. It ships via
223
227
  tag-triggered CI with npm provenance (OIDC Trusted Publishing); the GitHub
224
228
  Release re-registers the Official MCP Registry entry.
225
229
 
226
- **Status:** actively maintained · current public release **v0.57.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).
230
+ **Status:** actively maintained · current public release **v0.58.1** · 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).
227
231
 
228
232
  ### Update and rollback
229
233
 
@@ -13,13 +13,15 @@
13
13
  // verify の steer:"enabled" は設定の話(hookが登録・承認済みで、親がhookの導入後に起きている)。届いた事は言わない。
14
14
  // submit の queued_submission_id は、公式キューが受け付けた事。
15
15
  // state は届き方の事実を返す。hook:"emitted" と turn_id は、Aitermのhookがその番へ本文を入れた事。queued は、今も公式キューに残っているか。
16
+ // wake は、寝ている会話を起こす見張り(ADR 0108)の結果。見張りが終わった後だけ付く。outcome:"woken" は、アプリに会話を開かせてキューが動いた事。
16
17
  //
17
18
  // 対象はCodexの親だけ。親の指定は、CodexがMCP要求へ付けるthreadIdと、そのCodexのCODEX_HOME。
18
19
  import * as fs from "node:fs";
19
20
  import * as path from "node:path";
20
21
  import { createRequire } from "node:module";
21
22
  import { fileURLToPath } from "node:url";
22
- import { realCodexHome } from "aiterm-steer-delivery";
23
+ import { realCodexHome, readCodexWakeResult } from "aiterm-steer-delivery";
24
+ import { AITERM_PROFILE } from "./steer-profile.js";
23
25
  import { checkCodexParent, submitCodexParentAnswer, withCodexReceiver } from "./codex-parent-receiver.js";
24
26
  import { codexHookDeliveryState, codexHookDirectory, codexInputDirectory } from "./codex-hook-state.js";
25
27
  export const PARENT_DELIVERY_SCHEMA = "aiterm.parent-delivery.v1";
@@ -99,6 +101,13 @@ async function deliveryState(target, delivery) {
99
101
  else if (claim !== null || fs.existsSync(path.join(directory, "pending", `${delivery}.json`)))
100
102
  hook = "pending";
101
103
  }
104
+ let wake = {};
105
+ try {
106
+ const saved = readCodexWakeResult(AITERM_PROFILE, delivery);
107
+ if (saved)
108
+ wake = { wake: saved };
109
+ }
110
+ catch { /* 読めない結果は、無い物として扱う(届き方の事実は下で返す) */ }
102
111
  try {
103
112
  const queued = await withCodexReceiver(target, async (request) => {
104
113
  let cursor = null;
@@ -112,11 +121,11 @@ async function deliveryState(target, delivery) {
112
121
  } while (cursor);
113
122
  return false;
114
123
  });
115
- return { state, hook, turn_id: turn, queued };
124
+ return { state, hook, turn_id: turn, queued, ...wake };
116
125
  }
117
126
  catch (error) {
118
127
  const code = error?.delivery_code;
119
- return { state, hook, turn_id: turn, queued: null, queue_error: typeof code === "string" ? code : "CODEX_QUEUE_UNREADABLE" };
128
+ return { state, hook, turn_id: turn, queued: null, queue_error: typeof code === "string" ? code : "CODEX_QUEUE_UNREADABLE", ...wake };
120
129
  }
121
130
  }
122
131
  /**
package/docs/DESIGN.md CHANGED
@@ -149,6 +149,9 @@ Steerを選択した端末(macOS・Windows・Linux。Desktop同梱のCLI、無
149
149
  `src/codex-parent-hooks.ts`の同期`PostToolUse`がAitermの回答を同じターンの文脈へ渡し、
150
150
  `Stop`が最終応答の生成中に届いた回答で同じターンを継続する。
151
151
  取り込まれていない回答は公式キューに残り、親がidleになった時に通常配送される。終了後の再開には約10秒かかる場合がある。
152
+ 公式キューを番にするのは、会話を載せているprocessだけ。アプリが下ろした会話(見ている接続が無くなって60秒)は、
153
+ 入れた後の見張り(共通パッケージの`codex-wake`)が約15秒後に見直し、アプリの会話で最後の番が普通に終わっている時だけ、
154
+ OSの口で`codex://threads/<会話>`を開かせて起こす(ADR 0108。macOSとWindows。Linuxのアプリはまだ起こせない)。番の途中、途中で止められた会話、CLIの席は起こさない。
152
155
  親を別processでload/resumeせず、modelや権限のoverrideを渡さない。native sub-agentは自動配送の親にしない。
153
156
 
154
157
  `src/codex-hook-state.ts`は同じCodex home・thread・配送UUID・本文hashへの所有記録を保持する。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiterm-mcp",
3
- "version": "0.57.4",
3
+ "version": "0.58.1",
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": [
@@ -72,7 +72,7 @@
72
72
  },
73
73
  "dependencies": {
74
74
  "@modelcontextprotocol/sdk": "^1.29.0",
75
- "aiterm-steer-delivery": "^0.3.1",
75
+ "aiterm-steer-delivery": "^0.4.3",
76
76
  "ws": "8.21.3",
77
77
  "zod": "^4.4.3"
78
78
  },