aiterm-mcp 0.57.3 → 0.57.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 +17 -1
- package/README.ja.md +1 -1
- package/README.md +1 -1
- package/dist/harnesses/codex.js +14 -6
- package/docs/DESIGN.md +2 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.57.4] - 2026-10-08
|
|
11
|
+
|
|
12
|
+
### 修正
|
|
13
|
+
|
|
14
|
+
- Codexの席で、警告の画面(足元の「⚠ N warnings · f2 to view」をF2で開いた所)が開いている間に送った文が、届かないのに
|
|
15
|
+
`agent_dispatch`で返っていた件を直す(ADR 0107)。
|
|
16
|
+
起動の見出し(`>_ OpenAI Codex`)の`>_`を入力欄の印と読んでいたので、見出しが画面に残る席では、入力欄が警告の画面に
|
|
17
|
+
置き換わっていても入力待ちと読んでいた。文は警告の画面に吸われ、turnは始まらず、完了は来なかった。
|
|
18
|
+
- 見出しの`>_`を入力欄の印に数えない。入力欄の行がある時だけ入力待ちと読む。
|
|
19
|
+
- 警告の画面を、応答の要る画面と同じに数える。`pty_observe`は`blocked`・`unknown_dialog`、`pty_send`は待たずに、今までと同じ
|
|
20
|
+
文面(「…入力受付状態になりません。文字列は送信していません。…」)で断る。番が動いている席・回答を流している席でも同じ。
|
|
21
|
+
見出しが流れた後の席では、今まで30秒待ってから同じ文面(`state=unknown reason=unrecognized_screen`)で断っていた。
|
|
22
|
+
- Aitermは警告の画面を閉じない(`Esc`はその警告を消す)。引数、返りの項目、断りの文面、警告の画面が開いていない席の読みは変えていない。
|
|
23
|
+
警告の画面は人がF2を押した時だけ開くので、BellTeamの席の動きは変わらない。
|
|
24
|
+
|
|
10
25
|
## [0.57.3] - 2026-10-08
|
|
11
26
|
|
|
12
27
|
### 修正
|
|
@@ -2430,7 +2445,8 @@ prototype (preserved under `prototype/python/` as the porting source and referen
|
|
|
2430
2445
|
`ubuntu-latest` for Node 18/20/22, publishing to npm on `v*` tags with
|
|
2431
2446
|
provenance.
|
|
2432
2447
|
|
|
2433
|
-
[Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.57.
|
|
2448
|
+
[Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.57.4...HEAD
|
|
2449
|
+
[0.57.4]: https://github.com/kitepon/aiterm-mcp/compare/v0.57.3...v0.57.4
|
|
2434
2450
|
[0.57.3]: https://github.com/kitepon/aiterm-mcp/compare/v0.57.2...v0.57.3
|
|
2435
2451
|
[0.57.2]: https://github.com/kitepon/aiterm-mcp/compare/v0.57.1...v0.57.2
|
|
2436
2452
|
[0.57.1]: https://github.com/kitepon/aiterm-mcp/compare/v0.57.0...v0.57.1
|
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.
|
|
212
|
+
**状態:** 開発継続中 · 現行公開版 **v0.57.4** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
|
|
213
213
|
|
|
214
214
|
### 更新と巻き戻し
|
|
215
215
|
|
package/README.md
CHANGED
|
@@ -223,7 +223,7 @@ collection is off by default and performs no network I/O. It ships via
|
|
|
223
223
|
tag-triggered CI with npm provenance (OIDC Trusted Publishing); the GitHub
|
|
224
224
|
Release re-registers the Official MCP Registry entry.
|
|
225
225
|
|
|
226
|
-
**Status:** actively maintained · current public release **v0.57.
|
|
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).
|
|
227
227
|
|
|
228
228
|
### Update and rollback
|
|
229
229
|
|
package/dist/harnesses/codex.js
CHANGED
|
@@ -632,6 +632,11 @@ export function codexLaunchNote(model, effort, meta) {
|
|
|
632
632
|
const summary = meta?.kind === "codex" && meta.codex_home ? codexConfigSummary(configPath) : "";
|
|
633
633
|
return (summary ? `${launch}\n${summary}\n` : launch) + writeScopeNote;
|
|
634
634
|
}
|
|
635
|
+
// 入力欄の行頭の印(「›」。古い描画では「>」)。番号つきの行(「› 1. …」)はmodalで選択中の選択肢。
|
|
636
|
+
// 起動の見出し(「>_ OpenAI Codex (v0.161.0)」)の「>_」は入力欄ではない。これを入力欄と数えると、見出しが残っている席で
|
|
637
|
+
// 入力欄が別の画面(F2で開いた警告の画面など)に置き換わっていても入力待ちと読み、文がその画面に吸われる
|
|
638
|
+
// (Codex 0.161.0の実物、2026-10-08。ADR 0107)。
|
|
639
|
+
const CODEX_COMPOSER_LINE = String.raw `(?:^|\n)[ \t]*[›>](?!_)(?![ \t]*\d+\.)`;
|
|
635
640
|
export function codexTuiReady(screen) {
|
|
636
641
|
if (codexStartupFailure(screen))
|
|
637
642
|
return false;
|
|
@@ -639,11 +644,14 @@ export function codexTuiReady(screen) {
|
|
|
639
644
|
// capture-paneは直近45行だけなので、会話が進むとheaderは正常に画面外へ流れる。
|
|
640
645
|
const codexFrontend = screen.includes("OpenAI Codex")
|
|
641
646
|
|| /(^|\n)\s*\S+\s+(?:default|low|medium|high|xhigh|max|ultra)(?:\s+fast)?\s+·\s+\S.*$/m.test(screen);
|
|
642
|
-
return codexFrontend &&
|
|
647
|
+
return codexFrontend && new RegExp(CODEX_COMPOSER_LINE).test(screen);
|
|
643
648
|
}
|
|
644
649
|
// 0.155までは文章のfooter、0.157からは「enter select · esc back」のようなkey hint行になった。
|
|
645
|
-
|
|
646
|
-
|
|
650
|
+
// 足元の「⚠ N warnings · f2 to view」をF2で開いた警告の画面は、入力欄の場所に出て、鍵を自分で受ける
|
|
651
|
+
// (足元は「k keep & next · esc dismiss & close · ^o copy · ←/→ warning · ↓ scroll」、見出しは「Warnings · 1 of 3 · Startup」)。
|
|
652
|
+
// 開いている間に打った文は入力欄へ入らないので、応答の要るmodalと同じに数える。Aitermは閉じない(Escはその警告を消す)。
|
|
653
|
+
const CODEX_MODAL_FOOTER = /Press enter to confirm or esc to (?:cancel|go back)|enter to submit\s*\|\s*esc to cancel|(?<=^|\n)[ \t]*(?:[^\n]*· )?enter [a-z]+ · (?:[^\n]* · )?esc [a-z]+[ \t]*(?=\n|$)|(?<=^|\n)[ \t]*(?:[^\n]*· )?esc dismiss(?: & close)?(?: · [^\n]*)?[ \t]*(?=\n|$)/gi;
|
|
654
|
+
const CODEX_DIALOG_HEADING = /Would you like to run the following command\?|Allow the [^\n]+ MCP server to run tool|Hooks need review|Do you trust the contents of this directory|Trust this folder\?|Update available!|Approaching rate limits|(?<=^|\n)[ \t]*Warnings · \d+ of \d+(?= ·|[ \t]*(?:\n|$))/g;
|
|
647
655
|
const CODEX_MODAL_MARKER = new RegExp(`${CODEX_MODAL_FOOTER.source}|${CODEX_DIALOG_HEADING.source}`, "gi");
|
|
648
656
|
function currentCodexDialog(screen) {
|
|
649
657
|
const footers = [...screen.matchAll(CODEX_MODAL_FOOTER)];
|
|
@@ -675,7 +683,7 @@ export function codexPaneObservation(screen) {
|
|
|
675
683
|
// psmuxはmodalを画面上部へ描き、下の空行もcaptureへ含める。空行を落としてから末尾を取る。
|
|
676
684
|
const tail = screen.replace(/\s+$/, "").split("\n").slice(-24).join("\n");
|
|
677
685
|
// 現在のmodal footerがある時だけ、折返しで上へ出た質問を画面全体から探す。
|
|
678
|
-
const lastComposer = [...tail.matchAll(
|
|
686
|
+
const lastComposer = [...tail.matchAll(new RegExp(CODEX_COMPOSER_LINE, "g"))].at(-1)?.index ?? -1;
|
|
679
687
|
const lastDialog = [...tail.matchAll(CODEX_MODAL_MARKER)].at(-1)?.index ?? -1;
|
|
680
688
|
const modal = lastDialog > lastComposer;
|
|
681
689
|
if (!modal) {
|
|
@@ -707,7 +715,7 @@ export function codexPaneObservation(screen) {
|
|
|
707
715
|
export function codexRateLimitModelSwitchDialog(screen) {
|
|
708
716
|
const current = currentCodexDialog(screen);
|
|
709
717
|
const footer = [...current.matchAll(CODEX_MODAL_FOOTER)].at(-1)?.index ?? -1;
|
|
710
|
-
const composer = [...current.matchAll(
|
|
718
|
+
const composer = [...current.matchAll(new RegExp(CODEX_COMPOSER_LINE, "g"))].at(-1)?.index ?? -1;
|
|
711
719
|
// footerが無いか、現在のcomposerがmodal footerより後なら、scrollbackの古いmodalである。
|
|
712
720
|
if (footer < 0 || composer > footer)
|
|
713
721
|
return null;
|
|
@@ -796,7 +804,7 @@ export function codexStartupAction(screen, trustProject) {
|
|
|
796
804
|
return { kind, keys: [...Array(Math.abs(distance)).fill(distance > 0 ? "Down" : "Up"), "Enter"] };
|
|
797
805
|
}
|
|
798
806
|
// submit座礁観測のcomposer領域マーカー(ready判定と同じ記号を行頭基準で探す)。
|
|
799
|
-
export const CODEX_COMPOSER_MARKER_RE = /^\s*[›>]/;
|
|
807
|
+
export const CODEX_COMPOSER_MARKER_RE = /^\s*[›>](?!_)/;
|
|
800
808
|
// Codexの起動前modalダイアログ検知。表示中はheader/footerが描かれず codexTuiReady が
|
|
801
809
|
// 恒久falseになるため、ready gate失敗の原因究明用に画面から種別を特定する
|
|
802
810
|
// (実被弾 2026-08-25: update確認で初手prompt未送信のまま30秒timeout→40分停滞)。
|
package/docs/DESIGN.md
CHANGED
|
@@ -128,6 +128,8 @@ Cursorのsubmitはadapterがextended keyboard protocolのEnterへ変換し、呼
|
|
|
128
128
|
Codex・Grok・Cursorの席は、新しいturnを送るたびに入力受付を確かめる。起動の途中の入力欄を採らないよう、500msおきに11回続けて
|
|
129
129
|
入力待ちを読む(ADR 0014)。席のharnessが自分の記録で「この起動でturnを1つ終えていて、次のturnを始めていない」と示している時は、
|
|
130
130
|
100msおきに2回で通す(ADR 0097)。記録の上でturnが動いている間は、画面が入力待ちに見えても11回の確かめを通る。
|
|
131
|
+
Codexの入力待ちは、入力欄の行(`›`、古い描画の`>`)がある時だけ読む。起動の見出しの`>_`は入力欄ではない。足元の警告をF2で開いた
|
|
132
|
+
警告の画面は、入力欄の場所に出て鍵を受けるので、応答の要る画面と同じに数え、`pty_send`は打鍵の前に断る。Aitermは閉じない(ADR 0107)。
|
|
131
133
|
|
|
132
134
|
### 親配送の共通モジュール化(設計)
|
|
133
135
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiterm-mcp",
|
|
3
|
-
"version": "0.57.
|
|
3
|
+
"version": "0.57.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": [
|