aiterm-mcp 0.29.14 → 0.29.16
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 +15 -1
- package/README.ja.md +1 -1
- package/README.md +1 -1
- package/dist/core.js +4 -3
- package/dist/harnesses/cursor.js +7 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.29.16] - 2026-09-01
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Recognize Cursor's current `Add a follow-up` composer after a long answer scrolls the `Cursor Agent` header out of the viewport.
|
|
15
|
+
|
|
16
|
+
## [0.29.15] - 2026-09-01
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Preserve Aiterm's launch marker when Cursor receives its initial prompt through the post-launch TUI path, allowing the completed Cursor transcript to bind to the managed launch.
|
|
21
|
+
|
|
10
22
|
## [0.29.14] - 2026-09-01
|
|
11
23
|
|
|
12
24
|
### Fixed
|
|
@@ -1432,7 +1444,9 @@ prototype (preserved under `prototype/python/` as the porting source and referen
|
|
|
1432
1444
|
`ubuntu-latest` for Node 18/20/22, publishing to npm on `v*` tags with
|
|
1433
1445
|
provenance.
|
|
1434
1446
|
|
|
1435
|
-
[Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.
|
|
1447
|
+
[Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.16...HEAD
|
|
1448
|
+
[0.29.16]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.15...v0.29.16
|
|
1449
|
+
[0.29.15]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.14...v0.29.15
|
|
1436
1450
|
[0.29.14]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.13...v0.29.14
|
|
1437
1451
|
[0.29.13]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.12...v0.29.13
|
|
1438
1452
|
[0.29.12]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.11...v0.29.12
|
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.
|
|
156
|
+
**状態:** 開発継続中 · 現行公開版 **v0.29.16** · 動作対象は 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.
|
|
172
|
+
**Status:** actively maintained · current public release **v0.29.16** · 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
|
@@ -19,7 +19,7 @@ import { sleep, currentUid, runtimeStateBase, safeStatSize, readFileRange, write
|
|
|
19
19
|
import { GROK_MODEL_DEFAULTS, realGrokHome, resolveAndValidateGrokAuth, assertGrokModelAvailable, grokEventsTranscript, latestGrokCompletion, observeGrokDone, buildGrokAgentCmd, grokLaunchNote, grokEnvTokens, grokTuiReady, GROK_COMPOSER_MARKER_RE, grokFooterHasConfiguration, grokTranscriptText, createGrokAgentMetadata, } from "./harnesses/grok.js";
|
|
20
20
|
import { bindCodexTranscriptSession, latestCodexCompletion, observeCodexDone, buildCodexAgentCmd, codexLaunchNote, codexTuiReady, codexLaunchBlockingDialog, CODEX_COMPOSER_MARKER_RE, codexModelChoice, codexEffortChoice, codexMoreReasoningChoice, codexTranscriptText, createCodexAgentMetadata, } from "./harnesses/codex.js";
|
|
21
21
|
import { OPERATION_ID_RE, CLAUDE_RESULT_MAX_BYTES, CLAUDE_EFFORTS, agentManagedClaudeSettingsPath, agentClaudeResultPath, agentClaudeOperationPath, agentClaudeApprovalReceiptPath, agentClaudeDispatchReceiptPath, validateOperationId, readClaudeResultText, assertClaudeAuthenticationReady, buildClaudeAgentCmd, claudeLaunchNote, claudeTuiReady, CLAUDE_COMPOSER_MARKER_RE, createClaudeAgentMetadata, } from "./harnesses/claude.js";
|
|
22
|
-
import { bindCursorTranscriptSession, cursorTurnBoundary, latestCursorCompletion, observeCursorDone, cursorTranscriptText, assertCursorAuthenticationReady, assertCursorModelAvailable, buildCursorAgentCmd, createCursorAgentMetadata, cursorLaunchNote, cursorEffortNavigation, cursorTuiReady, CURSOR_COMPOSER_MARKER_RE, validateCursorModelEffort, } from "./harnesses/cursor.js";
|
|
22
|
+
import { bindCursorTranscriptSession, cursorTurnBoundary, latestCursorCompletion, observeCursorDone, cursorTranscriptText, assertCursorAuthenticationReady, assertCursorModelAvailable, buildCursorAgentCmd, cursorPromptWithLineage, createCursorAgentMetadata, cursorLaunchNote, cursorEffortNavigation, cursorTuiReady, CURSOR_COMPOSER_MARKER_RE, validateCursorModelEffort, } from "./harnesses/cursor.js";
|
|
23
23
|
import { resolveAgentBin, resolveThroughlineBin, runThroughlineHandoffContext, isWindowsNativeExecutable, agentBinForPaneShell, resolveWinPaneShell } from "./agent-resolver.js";
|
|
24
24
|
export { AitermError } from "./errors.js";
|
|
25
25
|
export { tmuxSpawnEnv } from "./tmux-runtime.js";
|
|
@@ -2565,20 +2565,21 @@ export async function sendInitialAgentPrompt(name, text, o = {}) {
|
|
|
2565
2565
|
throw new AitermError(`initial_prompt=not_sent vendor=${meta.kind} ready=false samples=${ready.samples} harness=${agentHarness(meta.kind)}\n` +
|
|
2566
2566
|
`agent session '${name}' の ${agentLabel(meta.kind)} TUI が入力受付状態にならず、prompt は送信していません。${causeNote}`, 2);
|
|
2567
2567
|
}
|
|
2568
|
+
const promptText = meta.kind === "cursor" ? cursorPromptWithLineage(meta, text) : text;
|
|
2568
2569
|
const startOffset = agentCompletionCursor(meta);
|
|
2569
2570
|
try {
|
|
2570
2571
|
if (meta.kind === "claude") {
|
|
2571
2572
|
prepareSendText(text, { raw: false });
|
|
2572
2573
|
reserveAnonymousClaudeTurn(meta);
|
|
2573
2574
|
}
|
|
2574
|
-
await sendAgentPromptText(name,
|
|
2575
|
+
await sendAgentPromptText(name, promptText);
|
|
2575
2576
|
setInitialPromptState(meta, "pending");
|
|
2576
2577
|
}
|
|
2577
2578
|
catch (e) {
|
|
2578
2579
|
setInitialPromptState(meta, "failed");
|
|
2579
2580
|
throw e;
|
|
2580
2581
|
}
|
|
2581
|
-
const residue = await detectAgentSubmitResidue(name, meta.kind,
|
|
2582
|
+
const residue = await detectAgentSubmitResidue(name, meta.kind, promptText);
|
|
2582
2583
|
return {
|
|
2583
2584
|
text: `initial_prompt=pending vendor=${meta.kind} event_cursor=${startOffset} harness=${agentHarness(meta.kind)}\n` +
|
|
2584
2585
|
`起動時 prompt を送信した。${agentDispatchGuide(name, startOffset)}` +
|
package/dist/harnesses/cursor.js
CHANGED
|
@@ -375,11 +375,14 @@ export function buildCursorAgentCmd(bin, model, effort, prompt, meta) {
|
|
|
375
375
|
if (meta?.kind === "cursor" && meta.write_scope === "read-only")
|
|
376
376
|
parts.push("--mode", "ask");
|
|
377
377
|
if (prompt) {
|
|
378
|
-
const value = meta ?
|
|
378
|
+
const value = meta ? cursorPromptWithLineage(meta, prompt) : prompt;
|
|
379
379
|
parts.push(shq(value));
|
|
380
380
|
}
|
|
381
381
|
return parts.join(" ");
|
|
382
382
|
}
|
|
383
|
+
export function cursorPromptWithLineage(meta, prompt) {
|
|
384
|
+
return `${subagentInstruction(meta)}\n\n${prompt}`;
|
|
385
|
+
}
|
|
383
386
|
export function cursorLaunchNote(model, effort, meta) {
|
|
384
387
|
const effective = cursorModelArgument(model, effort);
|
|
385
388
|
const modelNote = effective ? ` model=${JSON.stringify(effective)}(引数)` : " model=Cursor CLI既定";
|
|
@@ -389,7 +392,8 @@ export const CURSOR_COMPOSER_MARKER_RE = /(?:^|\n)\s*>\s?(?:\n|$)/m;
|
|
|
389
392
|
const CURSOR_FOLLOWUP_MARKER_RE = /(?:^|\n)\s*(?:→|->)\s*Add a follow-up\b/im;
|
|
390
393
|
const CURSOR_START_PROMPT_MARKER_RE = /(?:^|\n)\s*(?:→|->)\s*Plan,\s*search,\s*build anything\s*(?:\n|$)/im;
|
|
391
394
|
export function cursorTuiReady(screen) {
|
|
395
|
+
if (CURSOR_FOLLOWUP_MARKER_RE.test(screen))
|
|
396
|
+
return true;
|
|
392
397
|
return /Cursor Agent/i.test(screen) &&
|
|
393
|
-
(CURSOR_COMPOSER_MARKER_RE.test(screen) ||
|
|
394
|
-
CURSOR_START_PROMPT_MARKER_RE.test(screen));
|
|
398
|
+
(CURSOR_COMPOSER_MARKER_RE.test(screen) || CURSOR_START_PROMPT_MARKER_RE.test(screen));
|
|
395
399
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiterm-mcp",
|
|
3
|
-
"version": "0.29.
|
|
3
|
+
"version": "0.29.16",
|
|
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": [
|