aiterm-mcp 0.25.1 → 0.25.2
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/README.ja.md +5 -0
- package/README.md +5 -0
- package/dist/core.js +22 -2
- package/package.json +1 -1
package/README.ja.md
CHANGED
|
@@ -96,6 +96,11 @@ host統合は、kitepon.devの製品開発を支える内部基盤
|
|
|
96
96
|
|
|
97
97
|
14 ツール: 6 つの **PTY ツール**(`pty_open` / `pty_send` / `pty_read` / `pty_key` / `pty_close` / `pty_list`)で 1 本の永続端末を開き・操作し・読む。加えて 4 つの **エージェント起動ツール**(`claude_agent` / `codex_agent` / `grok_agent` / `composer_agent`)が別のコーディングエージェントの TUI を新しい端末の中に起動し、`agent_configure`が起動中のClaude/Codex/Grok/Composerのmodel・effortを再起動なしで変更し、`claude_turn`がdurable caller向けの構造化issue/recoveryを、`claude_approval`が相関済みClaude承認UI中継を、`diagnostics`が安全なfactory readinessを返す。バックエンドは **tmux** なので、MCP サーバや AI クライアントが再起動してもセッションは生き残る。
|
|
98
98
|
|
|
99
|
+
**v0.25.2ではGrok 4.6を含む同一sessionの連続設定変更を安定化。** Grok Build 1.0.3で
|
|
100
|
+
`/model`の成功通知が再描画により消えても、変更前には無かった要求model/effortが常駐footerへ現れた
|
|
101
|
+
最終状態を確認する。caller側のretry、再起動、失敗の成功丸めは不要で、`grok-4.6`は従来どおり
|
|
102
|
+
明示`model`としてlive catalog照合後に起動・変更できる。
|
|
103
|
+
|
|
99
104
|
**v0.25.0ではGrok/Composerへ共通launcher制御を同等実装。** 起動時`reasoning_effort`、
|
|
100
105
|
`write_scope:"read-only"`の`--sandbox read-only`強制、`agent_configure`による同一session内の
|
|
101
106
|
model/effort変更に対応した。明示したGrok/Composer modelとComposer既定modelはPTY作成前に
|
package/README.md
CHANGED
|
@@ -96,6 +96,11 @@ toolchain behind kitepon.dev's products.
|
|
|
96
96
|
|
|
97
97
|
Fourteen tools: six **PTY tools** — `pty_open` / `pty_send` / `pty_read` / `pty_key` / `pty_close` / `pty_list` — to open, drive, and read one persistent terminal, four **agent launchers** — `claude_agent` / `codex_agent` / `grok_agent` / `composer_agent` — that each start another coding agent's TUI inside a fresh one, `agent_configure` to change a running Claude/Codex/Grok/Composer session's model and effort without restarting it, `claude_turn` for durable structured issue/recovery, `claude_approval` for correlated Claude approval prompts, and `diagnostics` for safe factory readiness. The backend is **tmux**, so sessions survive even if the MCP server or the AI client restarts.
|
|
98
98
|
|
|
99
|
+
**v0.25.2 stabilizes repeated in-place configuration changes, including Grok 4.6.** If Grok Build
|
|
100
|
+
1.0.3 redraws before its `/model` success notice can be observed, aiterm confirms the requested model/effort
|
|
101
|
+
from the persistent footer when that state was absent before the command. Callers do not retry, restart, or
|
|
102
|
+
round a failure into success; explicit `grok-4.6` launch and configuration still pass the live catalog check.
|
|
103
|
+
|
|
99
104
|
**v0.25.0 gives Grok and Composer the same shared launcher controls.** Their launchers now pass
|
|
100
105
|
`reasoning_effort`, enforce `write_scope: "read-only"` with `--sandbox read-only`, and support
|
|
101
106
|
in-place model/effort changes through `agent_configure`. Before creating a PTY, aiterm checks an
|
package/dist/core.js
CHANGED
|
@@ -3629,8 +3629,24 @@ function lineCounts(screen) {
|
|
|
3629
3629
|
}
|
|
3630
3630
|
return counts;
|
|
3631
3631
|
}
|
|
3632
|
-
|
|
3632
|
+
function grokFooterHasConfiguration(screen, model, effort) {
|
|
3633
|
+
const modelMatch = model?.match(/^grok-(\d+(?:\.\d+)*)$/) ?? null;
|
|
3634
|
+
if (model && !modelMatch)
|
|
3635
|
+
return false;
|
|
3636
|
+
const modelLabel = modelMatch ? `Grok ${modelMatch[1]}` : null;
|
|
3637
|
+
return screen.split("\n").some((line) => {
|
|
3638
|
+
if (!line.includes("·"))
|
|
3639
|
+
return false;
|
|
3640
|
+
if (modelLabel && !line.includes(`${modelLabel} (`))
|
|
3641
|
+
return false;
|
|
3642
|
+
if (effort && !line.includes(`(${effort})`))
|
|
3643
|
+
return false;
|
|
3644
|
+
return modelLabel !== null || effort !== null;
|
|
3645
|
+
});
|
|
3646
|
+
}
|
|
3647
|
+
async function waitForGrokConfigurationResult(name, before, model, effort, timeoutMs = 3_000) {
|
|
3633
3648
|
const beforeCounts = lineCounts(before);
|
|
3649
|
+
const footerAlreadyMatched = grokFooterHasConfiguration(before, model, effort);
|
|
3634
3650
|
const deadline = performance.now() + timeoutMs;
|
|
3635
3651
|
do {
|
|
3636
3652
|
const screen = captureScreen(name, AGENT_TUI_READY_LINES);
|
|
@@ -3647,6 +3663,10 @@ async function waitForGrokConfigurationResult(name, before, timeoutMs = 3_000) {
|
|
|
3647
3663
|
throw new AitermError(`Grokの設定変更に失敗しました: ${error}`, 2);
|
|
3648
3664
|
if (added.some((line) => /^(?:Switched to |✓?\s*Default model:)/.test(line)))
|
|
3649
3665
|
return;
|
|
3666
|
+
// Grok Build 1.0.3では成功通知が次の再描画で消えることがある。変更前には無かった
|
|
3667
|
+
// target model/effortが常駐footerへ現れた場合も、vendor自身の最終状態として受理する。
|
|
3668
|
+
if (!footerAlreadyMatched && grokFooterHasConfiguration(screen, model, effort))
|
|
3669
|
+
return;
|
|
3650
3670
|
await sleep(100);
|
|
3651
3671
|
} while (performance.now() < deadline);
|
|
3652
3672
|
throw new AitermError(`${agentLabel(loadAgentMetadata(name).kind)} の設定変更完了を確認できません`, 2);
|
|
@@ -3740,7 +3760,7 @@ export async function configureAgent(name, opts) {
|
|
|
3740
3760
|
: `/effort ${effort}`;
|
|
3741
3761
|
const before = captureScreen(name, AGENT_TUI_READY_LINES);
|
|
3742
3762
|
await sendAgentPromptText(name, command);
|
|
3743
|
-
await waitForGrokConfigurationResult(name, before);
|
|
3763
|
+
await waitForGrokConfigurationResult(name, before, model, effort);
|
|
3744
3764
|
return {
|
|
3745
3765
|
schema: "aiterm.agent-configure-result.v1",
|
|
3746
3766
|
session_id: name,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiterm-mcp",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.2",
|
|
4
4
|
"mcpName": "io.github.kitepon/aiterm-mcp",
|
|
5
5
|
"description": "Persistent tmux terminal MCP for launching and driving Claude, Codex, Grok, or Composer from any MCP client, cross-vendor or same-vendor. Also runs durable PTY sessions for SSH, containers, and REPLs.",
|
|
6
6
|
"keywords": [
|