aiterm-mcp 0.29.26 → 0.29.27

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.29.27] - 2026-09-02
11
+
12
+ ### Fixed
13
+
14
+ - Cursorが貼り付け反映後の最初のEnterを取り落とし、promptをcomposerへ残した場合だけEnterを一度再送してturnを開始する。
15
+
10
16
  ## [0.29.26] - 2026-09-02
11
17
 
12
18
  ### Fixed
@@ -1506,7 +1512,8 @@ prototype (preserved under `prototype/python/` as the porting source and referen
1506
1512
  `ubuntu-latest` for Node 18/20/22, publishing to npm on `v*` tags with
1507
1513
  provenance.
1508
1514
 
1509
- [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.26...HEAD
1515
+ [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.27...HEAD
1516
+ [0.29.27]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.26...v0.29.27
1510
1517
  [0.29.26]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.25...v0.29.26
1511
1518
  [0.29.25]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.24...v0.29.25
1512
1519
  [0.29.24]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.23...v0.29.24
package/README.ja.md CHANGED
@@ -153,7 +153,7 @@ runtime-error store は canonical dotagents config の `collection.enabled: true
153
153
  場合だけ収集し、既定OFF、network送信は行いません。tag起点CIのnpm provenance(OIDC Trusted
154
154
  Publishing)で公開し、GitHub Release が Official MCP Registry を再登録します。
155
155
 
156
- **状態:** 開発継続中 · 現行公開版 **v0.29.26** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
156
+ **状態:** 開発継続中 · 現行公開版 **v0.29.27** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
157
157
 
158
158
  ### 更新と巻き戻し
159
159
 
package/README.md CHANGED
@@ -169,7 +169,7 @@ collection is off by default and performs no network I/O. It ships via
169
169
  tag-triggered CI with npm provenance (OIDC Trusted Publishing); the GitHub
170
170
  Release re-registers the Official MCP Registry entry.
171
171
 
172
- **Status:** actively maintained · current public release **v0.29.26** · 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).
172
+ **Status:** actively maintained · current public release **v0.29.27** · 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).
173
173
 
174
174
  ### Update and rollback
175
175
 
package/dist/core.js CHANGED
@@ -2482,6 +2482,15 @@ async function detectAgentSubmitResidueImpl(kind, text, sample, sleepFn, opts =
2482
2482
  async function detectAgentSubmitResidue(name, kind, text) {
2483
2483
  return detectAgentSubmitResidueImpl(kind, text, () => captureScreen(name, AGENT_TUI_READY_LINES), sleep);
2484
2484
  }
2485
+ async function retryCursorSubmitIfResidueImpl(kind, residue, submit, inspect) {
2486
+ if (kind !== "cursor" || residue.residue !== true)
2487
+ return residue;
2488
+ submit();
2489
+ return inspect();
2490
+ }
2491
+ async function retryCursorSubmitIfResidue(name, kind, text, residue) {
2492
+ return retryCursorSubmitIfResidueImpl(kind, residue, () => sendKey(name, "Enter", { preserveAgentOperation: true }), () => detectAgentSubmitResidue(name, kind, text));
2493
+ }
2485
2494
  async function waitCursorPromptVisibleImpl(text, sample, sleepFn, opts = {}) {
2486
2495
  const tail = agentSubmitResidueTail(text) ?? normalizeResidueText(text);
2487
2496
  const pollMs = opts.pollMs ?? CURSOR_PROMPT_VISIBLE_POLL_MS;
@@ -2586,6 +2595,11 @@ export async function __testWaitCursorPromptVisible(text, samples, opts = {}) {
2586
2595
  }, opts);
2587
2596
  return { ...result, sleeps };
2588
2597
  }
2598
+ export async function __testRetryCursorSubmitIfResidue(kind, first, second) {
2599
+ let submits = 0;
2600
+ const result = await retryCursorSubmitIfResidueImpl(kind, first, () => { submits++; }, async () => second);
2601
+ return { result, submits };
2602
+ }
2589
2603
  export function __testSetAgentTuiReadyStableSamples(value) {
2590
2604
  if (value !== null && (!Number.isInteger(value) || value < 1 || value > 1000)) {
2591
2605
  throw new AitermError("test ready stable samplesが不正です", 2);
@@ -2946,7 +2960,10 @@ export async function dispatchAgentTurn(name, text, o = {}) {
2946
2960
  await sleep(AGENT_SUBMIT_DELAY_MS);
2947
2961
  }
2948
2962
  sendKey(name, "Enter", { preserveAgentOperation: meta.kind === "claude" });
2949
- const residue = await detectAgentSubmitResidue(name, meta.kind, dispatchText);
2963
+ let residue = await detectAgentSubmitResidue(name, meta.kind, dispatchText);
2964
+ // Cursorはcomposerへの貼付反映後でも最初のEnterを取り落とすことがある。本文残留を
2965
+ // 陽性観測した場合だけ同じEnterを一度再送し、再検査後も残る時は失敗として返す。
2966
+ residue = await retryCursorSubmitIfResidue(name, meta.kind, dispatchText, residue);
2950
2967
  assertAgentSubmitDelivered(name, meta.kind, residue);
2951
2968
  return {
2952
2969
  schema: "aiterm.agent-dispatch.v1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiterm-mcp",
3
- "version": "0.29.26",
3
+ "version": "0.29.27",
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": [