aiterm-mcp 0.24.2 → 0.24.3
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 +21 -8
- package/README.md +29 -8
- package/dist/core.js +17 -4
- package/dist/index.js +3 -1
- package/package.json +1 -1
package/README.ja.md
CHANGED
|
@@ -96,6 +96,12 @@ 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`が起動中のCodex/Claudeのmodel・effortを再起動なしで変更し、`claude_turn`がdurable caller向けの構造化issue/recoveryを、`claude_approval`が相関済みClaude承認UI中継を、`diagnostics`が安全なfactory readinessを返す。バックエンドは **tmux** なので、MCP サーバや AI クライアントが再起動してもセッションは生き残る。
|
|
98
98
|
|
|
99
|
+
**v0.24.3ではlauncherへ渡す環境変数を現在のMCP processから明示選択できる。** `env_vars`へ
|
|
100
|
+
変数名だけを指定すると、aitermは起動時の現在値を読み、存在する値だけをそのagentへ渡す。永続tmux
|
|
101
|
+
serverがMCP processより先に起動していても、古いserver環境に席identityやworkflow変数を消されない。
|
|
102
|
+
あわせてCodex v0.147が長寿命footerへ加える任意`fast`を認識し、idleな`medium fast ·` sessionでも
|
|
103
|
+
再描画・再試行・再起動なしに`agent_configure`できる。
|
|
104
|
+
|
|
99
105
|
**v0.24.2では長寿命Codexでも設定変更を維持。** 起動時headerがcapture範囲外へ流れた後は、
|
|
100
106
|
常駐するmodel/effort footerと入力欄でCodexを識別する。idle sessionをそのまま変更でき、
|
|
101
107
|
caller側の画面再描画、再試行、agent再起動は不要。
|
|
@@ -180,10 +186,17 @@ $ aiterm-wait --session codex1 --cursor <event_cursor> # exit 0=done / 3=timeo
|
|
|
180
186
|
|
|
181
187
|
| ツール | 起動するもの | 主な引数 |
|
|
182
188
|
| --- | --- | --- |
|
|
183
|
-
| `claude_agent` | Claude Code CLI(Anthropic) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`(`low`/`medium`/`high`/`xhigh`/`max`), `cwd?`, `session_name?` |
|
|
184
|
-
| `codex_agent` | Codex CLI(OpenAI・端末設定/CLI既定、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`(`low`/`medium`/`high`/`xhigh`/`max`/`ultra`), `cwd?`, `session_name?`, `write_scope?` |
|
|
185
|
-
| `grok_agent` | Grok Build(xAI、既定`grok-4.5`、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`は非対応(指定時は明示エラー), `cwd?`, `session_name?`, `write_scope?` |
|
|
186
|
-
| `composer_agent` | Grok Build(xAI、既定`grok-composer-2.5-fast`、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`は非対応(指定時は明示エラー), `cwd?`, `session_name?`, `write_scope?` |
|
|
189
|
+
| `claude_agent` | Claude Code CLI(Anthropic) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`(`low`/`medium`/`high`/`xhigh`/`max`), `env_vars?`, `cwd?`, `session_name?` |
|
|
190
|
+
| `codex_agent` | Codex CLI(OpenAI・端末設定/CLI既定、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`(`low`/`medium`/`high`/`xhigh`/`max`/`ultra`), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
191
|
+
| `grok_agent` | Grok Build(xAI、既定`grok-4.5`、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`は非対応(指定時は明示エラー), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
192
|
+
| `composer_agent` | Grok Build(xAI、既定`grok-composer-2.5-fast`、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`は非対応(指定時は明示エラー), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
193
|
+
|
|
194
|
+
`env_vars`は環境変数の**名前**だけを並べるallowlistであり、name/value mapではない。aitermは
|
|
195
|
+
launcher起動時に現在のMCP processから各名前を読み、存在する値をshell quoteして、その1回のvendor
|
|
196
|
+
起動コマンドへ入れる。未設定名は省略し、shell変数名として不正な名前はsession作成前に失敗する。
|
|
197
|
+
全環境の暗黙copy、tmux server再起動、retry、fallbackは行わない。値はMCP tool引数には入らないが、
|
|
198
|
+
PTYの起動コマンドとして送られ、sessionの`.lastcmd`にも保持されるため、起動先vendorと同じOS userへ
|
|
199
|
+
到達する。秘密転送路ではなく、席identityやworkflow用の非secret変数だけに使う。
|
|
187
200
|
|
|
188
201
|
各ベンダーのCLIが導入・認証済みであること。CLI不在・不正なmodel/effort・実在しない`cwd`はsession作成前に失敗し、残骸を残さない。ClaudeはさらにPTY作成前に同じCLIの`auth status --json`が`loggedIn:true`を返すことを要求する。4 launcherは通常のvendor credential/config storeをその場で使い、fake `HOME`、private `CODEX_HOME`/`GROK_HOME`、project/user config snapshotを作らない。Claudeだけは完了相関用Stop hook settingsを通常の`user,project,local` settingsへ加算する。Grok/Composerは画面入力欄だけでなく通常sessionの`mcp_init_completed` eventも確認してから送信し、共有MCP初期化中の早送信を防ぐ。相関付きClaudeのactive turn中はC-c以外の`pty_key`と素送信を拒否し、承認UIは`claude_approval`で単発Yes/Noだけを相関付きで中継する。
|
|
189
202
|
|
|
@@ -391,10 +404,10 @@ consumer は `aiterm-runtime-errors snapshot` を読み、durable ingestion 後
|
|
|
391
404
|
|
|
392
405
|
| ツール | 起動するもの | 主な引数 |
|
|
393
406
|
| --- | --- | --- |
|
|
394
|
-
| `claude_agent` | Claude Code CLI(Anthropic) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`(`low`/`medium`/`high`/`xhigh`/`max`), `cwd?`, `session_name?` |
|
|
395
|
-
| `codex_agent` | Codex CLI(OpenAI・端末設定/CLI既定、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`(`low`/`medium`/`high`/`xhigh`/`max`/`ultra`), `cwd?`, `session_name?`, `write_scope?` |
|
|
396
|
-
| `grok_agent` | Grok Build(xAI、既定`grok-4.5`、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`は非対応(指定時は明示エラー), `cwd?`, `session_name?`, `write_scope?` |
|
|
397
|
-
| `composer_agent` | Grok Build(xAI、既定`grok-composer-2.5-fast`、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`は非対応(指定時は明示エラー), `cwd?`, `session_name?`, `write_scope?` |
|
|
407
|
+
| `claude_agent` | Claude Code CLI(Anthropic) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`(`low`/`medium`/`high`/`xhigh`/`max`), `env_vars?`, `cwd?`, `session_name?` |
|
|
408
|
+
| `codex_agent` | Codex CLI(OpenAI・端末設定/CLI既定、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`(`low`/`medium`/`high`/`xhigh`/`max`/`ultra`), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
409
|
+
| `grok_agent` | Grok Build(xAI、既定`grok-4.5`、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`は非対応(指定時は明示エラー), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
410
|
+
| `composer_agent` | Grok Build(xAI、既定`grok-composer-2.5-fast`、`model?`で上書き) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?`は非対応(指定時は明示エラー), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
398
411
|
|
|
399
412
|
対応するCLI(`claude` / `codex` / `grok`)の導入・認証が必要。前提違反はsession作成前に明示失敗する。4 launcherすべてが通常project/user環境と同じ非ブロックdispatch契約を使う。Claude/Codex/Grok/Composerのdepth 1 live smokeと、Claude親→Claude孫のdepth 2 nested delegation smokeはgreenであり、fixtureによる検証とは区別して記録する。
|
|
400
413
|
|
package/README.md
CHANGED
|
@@ -96,6 +96,13 @@ 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 Codex/Claude 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.24.3 forwards explicitly selected launcher environment variables from the current MCP process.**
|
|
100
|
+
Pass variable names in `env_vars`; aiterm reads their current values at launch and injects only the
|
|
101
|
+
present ones into that agent. This works even when the persistent tmux server predates the MCP
|
|
102
|
+
process, so a stale tmux-server environment cannot erase per-seat identity or workflow variables.
|
|
103
|
+
It also recognizes Codex v0.147's optional `fast` token in long-lived model/effort footers, keeping
|
|
104
|
+
`agent_configure` available on an idle `medium fast ·` session without redraw, retry, or restart.
|
|
105
|
+
|
|
99
106
|
**v0.24.2 keeps in-place configuration working in long-lived Codex sessions.** Once the
|
|
100
107
|
startup header has scrolled out of the captured pane, aiterm recognizes Codex by its persistent
|
|
101
108
|
model/effort footer together with the input prompt. An idle session is therefore configured
|
|
@@ -201,10 +208,19 @@ One call per model, so the tool name itself tells you which model you get:
|
|
|
201
208
|
|
|
202
209
|
| Tool | Launches | Key args |
|
|
203
210
|
| --- | --- | --- |
|
|
204
|
-
| `claude_agent` | Claude Code CLI (Anthropic) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` (`low`/`medium`/`high`/`xhigh`/`max`), `cwd?`, `session_name?`, `launch_operation_id?` |
|
|
205
|
-
| `codex_agent` | Codex CLI (OpenAI; terminal config/CLI default unless overridden) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` (`low`/`medium`/`high`/`xhigh`/`max`/`ultra`; ultra enables proactive automatic delegation), `cwd?`, `session_name?`, `write_scope?` |
|
|
206
|
-
| `grok_agent` | Grok Build, model `grok-4.5` by default (`model?` overrides) (xAI) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` unsupported (an explicit value is an error; Grok CLI `--effort` is headless-only), `cwd?`, `session_name?`, `write_scope?` |
|
|
207
|
-
| `composer_agent` | Grok Build, model `grok-composer-2.5-fast` by default (`model?` overrides) (xAI) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` unsupported (an explicit value is an error), `cwd?`, `session_name?`, `write_scope?` |
|
|
211
|
+
| `claude_agent` | Claude Code CLI (Anthropic) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` (`low`/`medium`/`high`/`xhigh`/`max`), `env_vars?`, `cwd?`, `session_name?`, `launch_operation_id?` |
|
|
212
|
+
| `codex_agent` | Codex CLI (OpenAI; terminal config/CLI default unless overridden) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` (`low`/`medium`/`high`/`xhigh`/`max`/`ultra`; ultra enables proactive automatic delegation), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
213
|
+
| `grok_agent` | Grok Build, model `grok-4.5` by default (`model?` overrides) (xAI) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` unsupported (an explicit value is an error; Grok CLI `--effort` is headless-only), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
214
|
+
| `composer_agent` | Grok Build, model `grok-composer-2.5-fast` by default (`model?` overrides) (xAI) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` unsupported (an explicit value is an error), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
215
|
+
|
|
216
|
+
`env_vars` is an allowlist of environment-variable **names**, not a name/value map. At launch,
|
|
217
|
+
aiterm reads each valid name from its current MCP process, shell-quotes present values, and places
|
|
218
|
+
them on that one vendor launch command. Missing names are omitted; invalid shell variable names
|
|
219
|
+
fail before session creation. There is no implicit whole-environment copy, tmux-server restart,
|
|
220
|
+
retry, or fallback. Values do not enter the MCP tool arguments, but they are delivered through the
|
|
221
|
+
PTY launch command and retained in aiterm's per-session `.lastcmd`; the launched vendor and other
|
|
222
|
+
processes with access to the same OS user may read them. Use this for non-secret seat identity and
|
|
223
|
+
workflow variables, not as a secret transport.
|
|
208
224
|
|
|
209
225
|
The vendor CLI must be installed and authenticated (`claude` for `claude_agent`; `codex` for `codex_agent`; `grok` for both Grok tools). aiterm resolves the binary via `CLAUDE_BIN` / `CODEX_BIN` / `GROK_BIN`, then each documented default location, then `PATH`. Prerequisites are checked **before** a session exists: empty `model` values and unsupported effort values are rejected up front; a missing CLI binary or a nonexistent `cwd` fails for all four. Before creating a Claude session, aiterm also requires a successful structured `claude auth status --json` result with `loggedIn: true`; unavailable, malformed, or failed authentication leaves **zero leftover session**. All launchers use the normal vendor-owned credential and configuration stores in place. No launcher creates a fake `HOME`, a private `CODEX_HOME`/`GROK_HOME`, or a snapshot of project/user configuration.
|
|
210
226
|
|
|
@@ -417,10 +433,10 @@ Each launcher starts a specific vendor's interactive coding-agent TUI inside a f
|
|
|
417
433
|
|
|
418
434
|
| Tool | Launches | Key args |
|
|
419
435
|
| --- | --- | --- |
|
|
420
|
-
| `claude_agent` | Claude Code CLI (Anthropic) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` (`low`/`medium`/`high`/`xhigh`/`max`), `cwd?`, `session_name?`, `launch_operation_id?` |
|
|
421
|
-
| `codex_agent` | Codex CLI (OpenAI; terminal config/CLI default unless overridden) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` (`low`/`medium`/`high`/`xhigh`/`max`/`ultra`; ultra enables proactive automatic delegation), `cwd?`, `session_name?`, `write_scope?` |
|
|
422
|
-
| `grok_agent` | Grok Build, model `grok-4.5` by default (`model?` overrides) (xAI) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` unsupported (an explicit value is an error; Grok CLI `--effort` is headless-only), `cwd?`, `session_name?`, `write_scope?` |
|
|
423
|
-
| `composer_agent` | Grok Build, model `grok-composer-2.5-fast` by default (`model?` overrides) (xAI) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` unsupported (an explicit value is an error), `cwd?`, `session_name?`, `write_scope?` |
|
|
436
|
+
| `claude_agent` | Claude Code CLI (Anthropic) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` (`low`/`medium`/`high`/`xhigh`/`max`), `env_vars?`, `cwd?`, `session_name?`, `launch_operation_id?` |
|
|
437
|
+
| `codex_agent` | Codex CLI (OpenAI; terminal config/CLI default unless overridden) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` (`low`/`medium`/`high`/`xhigh`/`max`/`ultra`; ultra enables proactive automatic delegation), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
438
|
+
| `grok_agent` | Grok Build, model `grok-4.5` by default (`model?` overrides) (xAI) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` unsupported (an explicit value is an error; Grok CLI `--effort` is headless-only), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
439
|
+
| `composer_agent` | Grok Build, model `grok-composer-2.5-fast` by default (`model?` overrides) (xAI) | `prompt?`, `throughline_source_session?`, `model?`, `reasoning_effort?` unsupported (an explicit value is an error), `env_vars?`, `cwd?`, `session_name?`, `write_scope?` |
|
|
424
440
|
|
|
425
441
|
The vendor CLI must be installed and authenticated (`claude` for `claude_agent`; `codex` for `codex_agent`; `grok` for both Grok tools). Binary resolution uses `CLAUDE_BIN` / `CODEX_BIN` / `GROK_BIN`, then each documented default location, then `PATH`. Missing binaries, invalid model/effort values, and nonexistent `cwd` fail before a session is created. Claude additionally requires a structured healthy authentication status before any PTY exists, and correlated Claude sessions reject `/login` and `/logout`; repair authentication once in a normal terminal. All four launchers share the normal project/user environment and the same non-blocking dispatch contract. Claude, Codex, Grok, and Composer depth-1 live smokes and a Claude depth-2 nested-delegation smoke are green; fixture coverage remains a separate claim. Native Windows can launch agents but correlated completion is not supported yet.
|
|
426
442
|
|
|
@@ -516,6 +532,11 @@ symlink, filter, or replace vendor configuration, authentication, MCP, plugin, s
|
|
|
516
532
|
trust, memory, or history stores. Cleanup removes only aiterm-owned launch metadata and completion
|
|
517
533
|
correlation files.
|
|
518
534
|
|
|
535
|
+
The ordinary environment still comes from the shell/tmux session. When a caller needs a value that
|
|
536
|
+
belongs to the current MCP process rather than the older persistent tmux server, every launcher
|
|
537
|
+
accepts `env_vars: ["NAME", ...]`. Only those names are refreshed at launch; this is a narrow
|
|
538
|
+
per-launch overlay, not a replacement environment or configuration snapshot.
|
|
539
|
+
|
|
519
540
|
## License
|
|
520
541
|
|
|
521
542
|
MIT
|
package/dist/core.js
CHANGED
|
@@ -3326,7 +3326,7 @@ function isAgentTuiReady(kind, screen) {
|
|
|
3326
3326
|
// 起動直後は製品header、長寿命sessionでは常駐footerがCodex TUIの識別子になる。
|
|
3327
3327
|
// capture-paneは直近45行だけなので、会話が進むとheaderは正常に画面外へ流れる。
|
|
3328
3328
|
const codexFrontend = screen.includes("OpenAI Codex")
|
|
3329
|
-
|| /(^|\n)\s*\S+\s+(?:low|medium|high|xhigh|max|ultra)
|
|
3329
|
+
|| /(^|\n)\s*\S+\s+(?:low|medium|high|xhigh|max|ultra)(?:\s+fast)?\s+·\s+\S.*$/m.test(screen);
|
|
3330
3330
|
return codexFrontend && /(^|\n)\s*[›>]/.test(screen);
|
|
3331
3331
|
}
|
|
3332
3332
|
// Grok Build 0.2.117 は起動完了後に製品名を消し、model footerだけを残す。
|
|
@@ -4020,10 +4020,15 @@ function buildAgentCmd(kind, bin, model, effort, prompt, meta = null) {
|
|
|
4020
4020
|
parts.push(shq(prompt)); // 初手プロンプト(任意)
|
|
4021
4021
|
return parts.join(" ");
|
|
4022
4022
|
}
|
|
4023
|
-
function agentEnvPrefix(meta, sid) {
|
|
4023
|
+
function agentEnvPrefix(meta, sid, envVars = []) {
|
|
4024
|
+
const inherited = envVars.flatMap((name) => {
|
|
4025
|
+
const value = process.env[name];
|
|
4026
|
+
return value === undefined ? [] : [`${name}=${shq(value)}`];
|
|
4027
|
+
});
|
|
4024
4028
|
if (!meta)
|
|
4025
|
-
return "";
|
|
4029
|
+
return inherited.length ? inherited.join(" ") + " " : "";
|
|
4026
4030
|
const common = [
|
|
4031
|
+
...inherited,
|
|
4027
4032
|
`AITERM_AGENT_KIND=${shq(meta.kind)}`,
|
|
4028
4033
|
`AITERM_SESSION_ID=${shq(sid)}`,
|
|
4029
4034
|
`AITERM_AGENT_SESSION_ID=${shq(sid)}`,
|
|
@@ -4131,6 +4136,12 @@ export function openAgent(kind, opts = {}) {
|
|
|
4131
4136
|
}
|
|
4132
4137
|
const effort = opts.reasoning_effort ?? null;
|
|
4133
4138
|
const writeScope = opts.write_scope;
|
|
4139
|
+
const envVars = opts.env_vars ?? [];
|
|
4140
|
+
for (const name of envVars) {
|
|
4141
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) {
|
|
4142
|
+
throw new AitermError(`env_vars に無効な環境変数名があります: ${JSON.stringify(name)}`, 2);
|
|
4143
|
+
}
|
|
4144
|
+
}
|
|
4134
4145
|
if (effort && kind === "claude" && !CLAUDE_EFFORTS.has(effort)) {
|
|
4135
4146
|
throw new AitermError("Claude Code の reasoning_effort は low/medium/high/xhigh/max のいずれかです", 2);
|
|
4136
4147
|
}
|
|
@@ -4249,7 +4260,7 @@ export function openAgent(kind, opts = {}) {
|
|
|
4249
4260
|
agentMetadataNegativeCache.delete(sid);
|
|
4250
4261
|
launchNote = buildAgentLaunchNote(kind, model, effort, meta);
|
|
4251
4262
|
const cmd = buildAgentCmd(kind, binForCmd, model, effort, opts.prompt ?? null, meta);
|
|
4252
|
-
const envPrefix = agentEnvPrefix(meta, sid);
|
|
4263
|
+
const envPrefix = agentEnvPrefix(meta, sid, envVars);
|
|
4253
4264
|
const full = cwdForCmd ? `cd ${shq(cwdForCmd)} && ${envPrefix}${cmd}` : `${envPrefix}${cmd}`;
|
|
4254
4265
|
// force:true で送る。起動骨格は `bin '...'` の固定形で、prompt/cwd/effort は shq でクオート済みの
|
|
4255
4266
|
// 引数=シェルは決して破壊コマンドとして実行しない。破壊ゲート(生シェルコマンド想定)を prompt に
|
|
@@ -4320,6 +4331,7 @@ export async function openAgentWithInitialPrompt(kind, opts = {}) {
|
|
|
4320
4331
|
agent_done: true,
|
|
4321
4332
|
launch_operation_id: opts.launch_operation_id ?? null,
|
|
4322
4333
|
write_scope: opts.write_scope,
|
|
4334
|
+
env_vars: opts.env_vars,
|
|
4323
4335
|
});
|
|
4324
4336
|
// argv prompt(grok/composer)は composer を経由しないため submit 座礁観測の対象外。
|
|
4325
4337
|
return [sid, hint, prompt ? 0 : null, null];
|
|
@@ -4333,6 +4345,7 @@ export async function openAgentWithInitialPrompt(kind, opts = {}) {
|
|
|
4333
4345
|
agent_done: true,
|
|
4334
4346
|
launch_operation_id: opts.launch_operation_id ?? null,
|
|
4335
4347
|
write_scope: opts.write_scope,
|
|
4348
|
+
env_vars: opts.env_vars,
|
|
4336
4349
|
});
|
|
4337
4350
|
try {
|
|
4338
4351
|
const initial = await sendInitialAgentPrompt(sid, prompt, {
|
package/dist/index.js
CHANGED
|
@@ -483,6 +483,7 @@ function registerAgentTool(toolName, kind, desc) {
|
|
|
483
483
|
// grok/composer の effort は対話 TUI で無効(headless 専用)=core 側が起動前に明示エラーで拒否。
|
|
484
484
|
// codex は CLI 側の値集合が版で変わるため縛らない(core 側も同方針)。
|
|
485
485
|
reasoning_effort: z.string().nullish().describe(agentEffortDesc(kind)),
|
|
486
|
+
env_vars: z.array(z.string()).optional().describe("起動したagentへ現在のMCP processから継承する環境変数名。値はtool引数へ渡さない"),
|
|
486
487
|
cwd: z.string().nullish().describe("作業ディレクトリ(対象リポのルート等・任意)"),
|
|
487
488
|
session_name: z.string().nullish().describe("セッション名(省略で自動採番)"),
|
|
488
489
|
...writeScopeInputSchema,
|
|
@@ -502,13 +503,14 @@ function registerAgentTool(toolName, kind, desc) {
|
|
|
502
503
|
submit_residue: z.boolean().nullable(),
|
|
503
504
|
...writeScopeOutputSchema,
|
|
504
505
|
},
|
|
505
|
-
}, async ({ prompt, throughline_source_session, model, reasoning_effort, cwd, session_name, launch_operation_id, write_scope }) => {
|
|
506
|
+
}, async ({ prompt, throughline_source_session, model, reasoning_effort, env_vars, cwd, session_name, launch_operation_id, write_scope }) => {
|
|
506
507
|
try {
|
|
507
508
|
const [sid, hint, eventCursor, submitResidue] = await core.openAgentWithInitialPrompt(kind, {
|
|
508
509
|
prompt: prompt ?? undefined,
|
|
509
510
|
throughline_source_session,
|
|
510
511
|
model: model ?? undefined,
|
|
511
512
|
reasoning_effort: reasoning_effort ?? undefined,
|
|
513
|
+
env_vars,
|
|
512
514
|
cwd: cwd ?? undefined,
|
|
513
515
|
session_name: session_name ?? undefined,
|
|
514
516
|
launch_operation_id: launch_operation_id ?? undefined,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiterm-mcp",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.3",
|
|
4
4
|
"mcpName": "io.github.kitepon-rgb/aiterm-mcp",
|
|
5
5
|
"description": "Persistent tmux terminal MCP that lets Claude Code drive Codex CLI's interactive TUI, including slash commands and $imagegen. Also runs durable PTY sessions for SSH, containers, REPLs, and coding agents.",
|
|
6
6
|
"keywords": [
|