aiterm-mcp 0.38.0 → 0.38.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,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.38.1] - 2026-09-22
11
+
12
+ ### 修正
13
+
14
+ - Cursor親のhookへ渡るtool結果は本文だけで、`structuredContent`の`delivery_id`が落ちる。dispatchの本文へ`delivery_id`行を出し、hookがその行から会話へ束縛する。
15
+
10
16
  ## [0.38.0] - 2026-09-22
11
17
 
12
18
  ### 追加
@@ -1738,7 +1744,8 @@ prototype (preserved under `prototype/python/` as the porting source and referen
1738
1744
  `ubuntu-latest` for Node 18/20/22, publishing to npm on `v*` tags with
1739
1745
  provenance.
1740
1746
 
1741
- [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.38.0...HEAD
1747
+ [Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.38.1...HEAD
1748
+ [0.38.1]: https://github.com/kitepon/aiterm-mcp/compare/v0.38.0...v0.38.1
1742
1749
  [0.38.0]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.10...v0.38.0
1743
1750
  [0.37.10]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.9...v0.37.10
1744
1751
  [0.37.9]: https://github.com/kitepon/aiterm-mcp/compare/v0.37.8...v0.37.9
package/README.ja.md CHANGED
@@ -202,7 +202,7 @@ runtime-error store は canonical dotagents config の `collection.enabled: true
202
202
  場合だけ収集し、既定OFF、network送信は行いません。tag起点CIのnpm provenance(OIDC Trusted
203
203
  Publishing)で公開し、GitHub Release が Official MCP Registry を再登録します。
204
204
 
205
- **状態:** 開発継続中 · 現行公開版 **v0.38.0** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
205
+ **状態:** 開発継続中 · 現行公開版 **v0.38.1** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
206
206
 
207
207
  ### 更新と巻き戻し
208
208
 
package/README.md CHANGED
@@ -216,7 +216,7 @@ collection is off by default and performs no network I/O. It ships via
216
216
  tag-triggered CI with npm provenance (OIDC Trusted Publishing); the GitHub
217
217
  Release re-registers the Official MCP Registry entry.
218
218
 
219
- **Status:** actively maintained · current public release **v0.38.0** · 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).
219
+ **Status:** actively maintained · current public release **v0.38.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).
220
220
 
221
221
  ### Update and rollback
222
222
 
@@ -126,7 +126,7 @@ function deliveryIdFromResult(value, depth = 0) {
126
126
  if (entry !== null && typeof entry === "object" && entry.type === "text") {
127
127
  const text = entry.text;
128
128
  if (typeof text === "string") {
129
- const id = deliveryIdFromResult(text, depth + 1);
129
+ const id = deliveryIdFromResult(text, depth + 1) ?? deliveryIdInText(text);
130
130
  if (id)
131
131
  return id;
132
132
  }
@@ -135,6 +135,14 @@ function deliveryIdFromResult(value, depth = 0) {
135
135
  }
136
136
  return null;
137
137
  }
138
+ function deliveryIdInText(text) {
139
+ for (const line of text.split("\n")) {
140
+ const match = /^delivery_id=([0-9a-f-]{36})$/i.exec(line.trim());
141
+ if (match && deliveryIdSchema.safeParse(match[1]).success)
142
+ return match[1];
143
+ }
144
+ return null;
145
+ }
138
146
  function toolBaseName(name) {
139
147
  const tail = name.split(/[:.]/).pop() ?? name;
140
148
  return tail.replace(/^mcp__aiterm__/, "");
package/dist/index.js CHANGED
@@ -42,6 +42,10 @@ async function deliveryForRequest(extra) {
42
42
  await parentDelivery.prepare(parent);
43
43
  return parentDelivery.request(parent);
44
44
  }
45
+ function deliveryIdLine(delivery) {
46
+ const id = delivery?.result()?.delivery_id;
47
+ return id ? `\ndelivery_id=${id}` : "";
48
+ }
45
49
  function completionWait(delivery, session, eventCursor) {
46
50
  if (eventCursor === null)
47
51
  return { wait_process: null, wait_command: null };
@@ -213,7 +217,8 @@ server.registerTool("pty_send", {
213
217
  type: "text",
214
218
  text: `dispatchした(harness=${receipt.harness}, vendor=${receipt.vendor})。\n` +
215
219
  core.agentDispatchGuide(receipt.session_id, receipt.event_cursor) +
216
- core.agentSubmitResidueWarning(receipt.session_id, receipt.submit_residue),
220
+ core.agentSubmitResidueWarning(receipt.session_id, receipt.submit_residue) +
221
+ deliveryIdLine(delivery),
217
222
  },
218
223
  ],
219
224
  structuredContent: {
@@ -718,7 +723,7 @@ async function launchAgent(kind, args, extra) {
718
723
  : {}),
719
724
  };
720
725
  return {
721
- content: [{ type: "text", text: `session_id: ${sid}\n${hint}` }],
726
+ content: [{ type: "text", text: `session_id: ${sid}\n${hint}${deliveryIdLine(delivery)}` }],
722
727
  structuredContent: structured,
723
728
  ...(initialDelivery.status === "submitted_unconfirmed" ? { isError: true } : {}),
724
729
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiterm-mcp",
3
- "version": "0.38.0",
3
+ "version": "0.38.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": [