aiterm-mcp 0.29.11 → 0.29.13
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 +7 -5
- package/README.md +10 -8
- package/dist/agent-resolver.js +6 -6
- package/dist/core.js +10 -3
- package/dist/index.js +8 -1
- package/docs/DESIGN.md +1 -0
- package/docs/RELEASE.md +4 -4
- 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.13] - 2026-09-01
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Add optional `throughline_supplement_file` to `agent_launch` and the four legacy launcher aliases. Aiterm passes the path unchanged to `throughline handoff-context`; Throughline alone reads, validates, scopes, and budgets the long-term-memory/RAG supplement.
|
|
15
|
+
|
|
16
|
+
## [0.29.12] - 2026-09-01
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Run the product-owned full CI on the current factory environments: `macos-native`, `linux-workstation`, and `windows-native`. Keep `linux-server` for operational workflows instead of duplicating the full product test there.
|
|
21
|
+
|
|
10
22
|
## [0.29.11] - 2026-09-01
|
|
11
23
|
|
|
12
24
|
### Added
|
|
@@ -1414,7 +1426,9 @@ prototype (preserved under `prototype/python/` as the porting source and referen
|
|
|
1414
1426
|
`ubuntu-latest` for Node 18/20/22, publishing to npm on `v*` tags with
|
|
1415
1427
|
provenance.
|
|
1416
1428
|
|
|
1417
|
-
[Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.
|
|
1429
|
+
[Unreleased]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.13...HEAD
|
|
1430
|
+
[0.29.13]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.12...v0.29.13
|
|
1431
|
+
[0.29.12]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.11...v0.29.12
|
|
1418
1432
|
[0.29.11]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.10...v0.29.11
|
|
1419
1433
|
[0.29.10]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.9...v0.29.10
|
|
1420
1434
|
[0.29.9]: https://github.com/kitepon/aiterm-mcp/compare/v0.29.8...v0.29.9
|
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.13** · 動作対象は Linux · WSL2 · macOS · Windows ネイティブ · MIT · [変更履歴](CHANGELOG.md)。
|
|
157
157
|
|
|
158
158
|
### 更新と巻き戻し
|
|
159
159
|
|
|
@@ -229,7 +229,8 @@ GrokのcredentialをAitermがlock、検査、書換えすることはない。
|
|
|
229
229
|
portable forkは任意である。`throughline_source_session`を使う場合、`prompt`は必須の新ミッションとなり、
|
|
230
230
|
`launch_operation_id`とは併用できない。aitermは`THROUGHLINE_BIN`、次に`PATH`からThroughlineを解決し、
|
|
231
231
|
`throughline handoff-context --session <id> --json`のcontextを固定区切りとミッションの前へそのまま置く。
|
|
232
|
-
|
|
232
|
+
任意の`throughline_supplement_file`はThroughline 0.10.8以降を必要とし、`--supplement-file <path>`として内容を読まずにそのまま渡し、
|
|
233
|
+
project束縛・検証・予算配分はThroughlineだけが所有する。この経路だけ`throughline >= 0.9.0`が必要で、元sessionのDB所属は変わらない。引数省略時には
|
|
233
234
|
Throughline自体が不要である。
|
|
234
235
|
|
|
235
236
|
エージェント間の隠れたプロトコルは無い。起動したharnessは利用者がattachできるもう1本の永続sessionであり、MCPクライアントが通常のPTY操作で駆動する。
|
|
@@ -408,7 +409,7 @@ aiterm は同じ核心の洞察——端末を出会いの場にする——を
|
|
|
408
409
|
| `pty_key` | 制御キーを送る | `session_id`, `key`(`C-c`/`Enter`/`Up`…) |
|
|
409
410
|
| `pty_close` | 冪等に閉じ、`closed` / `already_closed`を返す | `session_id` |
|
|
410
411
|
| `pty_list` | セッション一覧(agent行は正規`harness=<id>`と互換`agent=<kind>`を含む) | (なし) |
|
|
411
|
-
| `agent_launch` | harnessとmodelを別軸で選ぶ正規agent起動入口 | `harness`, `prompt?`, `model?`, `reasoning_effort?`, `cwd?`, `write_scope?` |
|
|
412
|
+
| `agent_launch` | harnessとmodelを別軸で選ぶ正規agent起動入口 | `harness`, `prompt?`, `model?`, `reasoning_effort?`, `cwd?`, `write_scope?`, `throughline_source_session?`, `throughline_supplement_file?` |
|
|
412
413
|
| `agent_steer` | 実行中のCodex/Grok turnへtextを差し込む。idleなら送信せず`idle`を返す | `session_id`, `text` |
|
|
413
414
|
| `claude_agent` / `codex_agent` / `grok_agent` / `composer_agent` | deprecated互換alias | 旧launcher引数 |
|
|
414
415
|
| `agent_configure` | 起動中のClaude/Codex/Grok/Composer/Cursorを再起動せずmodel/effort変更 | `session_id`, `model?`, `reasoning_effort?` |
|
|
@@ -443,6 +444,7 @@ consumer は `aiterm-runtime-errors snapshot` を読み、durable ingestion 後
|
|
|
443
444
|
handoff contextを前置きできる。この任意経路は`throughline >= 0.9.0`を必要とし、
|
|
444
445
|
`launch_operation_id`とは併用不可で、元sessionのDB所属を変更しない。Throughlineは
|
|
445
446
|
`THROUGHLINE_BIN`、次に`PATH`から解決し、不在・不正・空のexportはPTY作成前に明示失敗する。
|
|
447
|
+
任意の`throughline_supplement_file`はThroughline 0.10.8以降と`throughline_source_session`を必要とし、Aitermは内容を解釈せずThroughlineへ渡す。
|
|
446
448
|
|
|
447
449
|
エージェントの回答が画面tailより長ければ、`pty_read({ agent_transcript:true })`で再promptなしに全文回収する。既存の人間向けcontentは診断suffixを維持し、機械呼出し側は`aiterm.pty-read-result.v1`の`structuredContent.text`から回答本文だけを取得する。Claudeはlaunch相関Stop hook、Codexは通常rollout、Grokは最後の実user行以後の最後の空でないassistantメッセージだけ、Cursorはlaunch IDでbindした通常agent transcriptから同じturnを回収する。
|
|
448
450
|
|
|
@@ -495,8 +497,8 @@ npm link # ローカルで `aiterm-mcp` を PATH に
|
|
|
495
497
|
```
|
|
496
498
|
|
|
497
499
|
開発中は変更に直結するfocused testを先にローカルで実行します。GitHub Actionsの最終gateは
|
|
498
|
-
self-hosted
|
|
499
|
-
OS別の縮小suiteで代用しません。tag起点のnpm公開は
|
|
500
|
+
self-hostedの`macos-native`・`linux-workstation`・`windows-native`で同じ`npm test`を同時実行し、
|
|
501
|
+
OS別の縮小suiteで代用しません。tag起点のnpm公開は3環境greenとtagged commitの`origin/main`
|
|
500
502
|
祖先確認を通過した後だけ実行します。
|
|
501
503
|
|
|
502
504
|
共通進行は`src/core.ts`、harness固有は`src/harnesses/`、OS差は`src/tmux-runtime.ts`/`src/agent-resolver.ts`、reducerは`src/rtk.ts`、公開面は`src/index.ts`が所有する。現行設計は[`docs/DESIGN.md`](docs/DESIGN.md)、release手順は[`docs/RELEASE.md`](docs/RELEASE.md)を正とする。`prototype/python/`はreducerの歴史的移植元であり、pytest reducerは本家rtk 0.42.0と一致する(上記の`FAILED`行の差異だけは意図的・回帰テストで固定)。
|
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.13** · 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
|
|
|
@@ -256,7 +256,9 @@ Portable fork is optional. When `throughline_source_session` is present, `prompt
|
|
|
256
256
|
new mission and `launch_operation_id` cannot be combined with it. aiterm resolves Throughline via
|
|
257
257
|
`THROUGHLINE_BIN` and then `PATH`, runs `throughline handoff-context --session <id> --json`, and
|
|
258
258
|
places its returned context before a fixed separator and the mission. This route requires
|
|
259
|
-
`throughline >= 0.9.0`;
|
|
259
|
+
`throughline >= 0.9.0`; `throughline_supplement_file` requires Throughline 0.10.8 or later. Aiterm appends
|
|
260
|
+
`--supplement-file <path>` without reading or interpreting the file. Throughline owns its project
|
|
261
|
+
binding, validation, and shared context budget. The route reads source memory without changing database session
|
|
260
262
|
ownership. No Throughline dependency is needed when the field is omitted.
|
|
261
263
|
|
|
262
264
|
Harness adapters translate `model` and `reasoning_effort` into each CLI's public controls. Explicit Grok models are checked against `grok models`; Cursor combines a base model such as `gpt-5.6-luna` with a separate effort such as `high`, checks the resulting current catalog ID, and uses Cursor's standard model picker for in-session changes. Missing models are errors, with no cache, retry, or fallback. Claude adds only launch-local Stop-hook settings, Codex reads its normal rollout store, Grok reads its normal session event/history, and Cursor binds its normal agent transcript with the launch ID. Pass an absolute `cwd`; `~` is not expanded.
|
|
@@ -439,7 +441,7 @@ On top of that sits a productized layer a raw tmux bridge doesn't have: **token-
|
|
|
439
441
|
| `pty_key` | Send a control key | `session_id`, `key` (`C-c`/`Enter`/`Up`…) |
|
|
440
442
|
| `pty_close` | Close idempotently; return `closed` / `already_closed` | `session_id` |
|
|
441
443
|
| `pty_list` | List sessions (agent rows carry canonical `harness=<id>` plus compatibility `agent=<kind>`) | (none) |
|
|
442
|
-
| `agent_launch` | Canonical agent launch; harness and model are independent | `harness`, `prompt?`, `model?`, `reasoning_effort?`, `cwd?`, `write_scope?` |
|
|
444
|
+
| `agent_launch` | Canonical agent launch; harness and model are independent | `harness`, `prompt?`, `model?`, `reasoning_effort?`, `cwd?`, `write_scope?`, `throughline_source_session?`, `throughline_supplement_file?` |
|
|
443
445
|
| `agent_steer` | Inject text into the active Codex or Grok turn; return `idle` without sending when no turn is active | `session_id`, `text` |
|
|
444
446
|
| `claude_agent` / `codex_agent` / `grok_agent` / `composer_agent` | Deprecated compatibility aliases | legacy launcher arguments |
|
|
445
447
|
| `agent_configure` | Change model/effort in a running Claude, Codex, Grok, Composer, or Cursor session without restarting it | `session_id`, `model?`, `reasoning_effort?` |
|
|
@@ -473,7 +475,8 @@ The selected harness CLI must be installed and authenticated. Use each product o
|
|
|
473
475
|
Set `throughline_source_session` together with a non-empty mission in `prompt` to prepend
|
|
474
476
|
Throughline's read-only handoff context. This optional route requires `throughline >= 0.9.0`,
|
|
475
477
|
cannot be combined with `launch_operation_id`, and leaves the source session's database ownership
|
|
476
|
-
unchanged.
|
|
478
|
+
unchanged. Optional `throughline_supplement_file` is passed unchanged to Throughline and requires
|
|
479
|
+
`throughline_source_session` and Throughline 0.10.8 or later; Aiterm does not read or classify the supplement. Throughline is resolved through `THROUGHLINE_BIN` and then `PATH`; a missing or invalid
|
|
477
480
|
export fails before the PTY exists instead of silently launching clean.
|
|
478
481
|
|
|
479
482
|
When an agent's answer is longer than the on-screen tail (pane height ≈ 24 lines), callers recover it in full with `pty_read({ agent_transcript: true })`. It returns the most recently completed turn's final assistant message in plain text with no re-prompting. The existing human-readable content keeps its diagnostic suffix; machine callers read the answer alone from `structuredContent.text` in `aiterm.pty-read-result.v1`. Claude reads the bounded owner-only result captured by the launch-correlated Stop hook and verifies its digest/byte count; it never reads Claude's private transcript. Durable machine callers should use `claude_turn`: `issue` sends once, `recover` never sends, `pending` is distinct from unsafe or malformed state, and only `completed` carries the exact verified `raw_output`. Codex uses the normal rollout transcript's `task_complete.turn_id`; Grok/Composer return the last non-empty assistant message after the last real user row, excluding tool-use preambles; Cursor uses the normal agent transcript bound to the launch ID and current turn. Missing or ambiguous attribution remains an explicit error.
|
|
@@ -540,13 +543,12 @@ npm link # put `aiterm-mcp` on PATH locally
|
|
|
540
543
|
```
|
|
541
544
|
|
|
542
545
|
Development uses focused local tests first. The final GitHub Actions gate starts the same full
|
|
543
|
-
`npm test` concurrently on self-hosted
|
|
546
|
+
`npm test` concurrently on the self-hosted `macos-native`, `linux-workstation`, and `windows-native`
|
|
544
547
|
runners; it does not replace any OS with a reduced suite. Tag-triggered npm publishing runs only
|
|
545
|
-
after all
|
|
548
|
+
after all three environments pass and the tagged commit is confirmed on `origin/main`. The native
|
|
546
549
|
Windows runner needs psmux ≥ 3.3.8 and Git for Windows on its PATH, and must run as an
|
|
547
550
|
interactive Windows user; `NETWORK SERVICE` lacks the per-user environment the pane shell and
|
|
548
|
-
harness CLIs rely on and is not a valid runner identity
|
|
549
|
-
initialized WSL distro).
|
|
551
|
+
harness CLIs rely on and is not a valid runner identity.
|
|
550
552
|
|
|
551
553
|
Logic lives in `src/core.ts` (tmux control, reduction, completion detection, safety, agent launch) and `src/rtk.ts` (per-command reducers); `src/index.ts` is the MCP surface. The current architecture is in [`docs/DESIGN.md`](docs/DESIGN.md), the release procedure is in [`docs/RELEASE.md`](docs/RELEASE.md), and `prototype/python/` remains the reducer's historical porting source (the pytest reducer is ported to match upstream rtk 0.42.0, except the deliberate `FAILED`-line difference noted above, and is locked by regression tests).
|
|
552
554
|
|
package/dist/agent-resolver.js
CHANGED
|
@@ -168,7 +168,10 @@ export function resolveThroughlineBin() {
|
|
|
168
168
|
}).stdout?.split(/\r?\n/).find(Boolean) ?? null;
|
|
169
169
|
return resolved && isUsableExecutableFile(resolved) ? resolved : null;
|
|
170
170
|
}
|
|
171
|
-
export function runThroughlineHandoffContext(bin, sessionId) {
|
|
171
|
+
export function runThroughlineHandoffContext(bin, sessionId, supplementFile = null) {
|
|
172
|
+
const args = ["handoff-context", "--session", sessionId, "--json"];
|
|
173
|
+
if (supplementFile !== null)
|
|
174
|
+
args.push("--supplement-file", supplementFile);
|
|
172
175
|
if (isWin && /\.(?:cmd|bat)$/i.test(bin)) {
|
|
173
176
|
const ps1 = path.join(path.dirname(bin), `${path.basename(bin, path.extname(bin))}.ps1`);
|
|
174
177
|
if (fs.existsSync(ps1)) {
|
|
@@ -180,14 +183,11 @@ export function runThroughlineHandoffContext(bin, sessionId) {
|
|
|
180
183
|
"Bypass",
|
|
181
184
|
"-File",
|
|
182
185
|
ps1,
|
|
183
|
-
|
|
184
|
-
"--session",
|
|
185
|
-
sessionId,
|
|
186
|
-
"--json",
|
|
186
|
+
...args,
|
|
187
187
|
], { encoding: "utf8" });
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
-
return spawnSync(bin,
|
|
190
|
+
return spawnSync(bin, args, {
|
|
191
191
|
encoding: "utf8",
|
|
192
192
|
});
|
|
193
193
|
}
|
package/dist/core.js
CHANGED
|
@@ -2941,12 +2941,12 @@ const PORTABLE_FORK_MISSION_SEPARATOR = "\n\n---\n\n## Portable fork mission\n\n
|
|
|
2941
2941
|
export function composePortableForkPrompt(context, mission) {
|
|
2942
2942
|
return context + PORTABLE_FORK_MISSION_SEPARATOR + mission;
|
|
2943
2943
|
}
|
|
2944
|
-
function portableForkPrompt(sourceSessionId, mission) {
|
|
2944
|
+
function portableForkPrompt(sourceSessionId, mission, supplementFile) {
|
|
2945
2945
|
const bin = resolveThroughlineBin();
|
|
2946
2946
|
if (!bin) {
|
|
2947
2947
|
throw new AitermError("Throughline CLIが見つかりません。portable forkのsessionは作成していません", 2);
|
|
2948
2948
|
}
|
|
2949
|
-
const result = runThroughlineHandoffContext(bin, sourceSessionId);
|
|
2949
|
+
const result = runThroughlineHandoffContext(bin, sourceSessionId, supplementFile);
|
|
2950
2950
|
if (result.error || result.status !== 0) {
|
|
2951
2951
|
throw new AitermError("Throughline handoff-contextの取得に失敗しました。portable forkのsessionは作成していません", 2);
|
|
2952
2952
|
}
|
|
@@ -3243,9 +3243,16 @@ export function openAgent(kind, opts = {}) {
|
|
|
3243
3243
|
export async function openAgentWithInitialPrompt(kind, opts = {}) {
|
|
3244
3244
|
const mission = opts.prompt ?? null;
|
|
3245
3245
|
const sourceSessionId = opts.throughline_source_session ?? null;
|
|
3246
|
+
const supplementFile = opts.throughline_supplement_file ?? null;
|
|
3246
3247
|
if (sourceSessionId !== null && !sourceSessionId.length) {
|
|
3247
3248
|
throw new AitermError("throughline_source_sessionが空文字です", 2);
|
|
3248
3249
|
}
|
|
3250
|
+
if (supplementFile !== null && !supplementFile.length) {
|
|
3251
|
+
throw new AitermError("throughline_supplement_fileが空文字です", 2);
|
|
3252
|
+
}
|
|
3253
|
+
if (supplementFile !== null && sourceSessionId === null) {
|
|
3254
|
+
throw new AitermError("throughline_supplement_file指定時はthroughline_source_sessionが必要です", 2);
|
|
3255
|
+
}
|
|
3249
3256
|
if (sourceSessionId !== null && (mission === null || !mission.trim())) {
|
|
3250
3257
|
throw new AitermError("throughline_source_session指定時はpromptにmissionが必要です", 2);
|
|
3251
3258
|
}
|
|
@@ -3254,7 +3261,7 @@ export async function openAgentWithInitialPrompt(kind, opts = {}) {
|
|
|
3254
3261
|
}
|
|
3255
3262
|
const prompt = sourceSessionId === null
|
|
3256
3263
|
? mission
|
|
3257
|
-
: portableForkPrompt(sourceSessionId, mission);
|
|
3264
|
+
: portableForkPrompt(sourceSessionId, mission, supplementFile);
|
|
3258
3265
|
if (opts.launch_operation_id != null && prompt !== null) {
|
|
3259
3266
|
throw new AitermError("launch_operation_idはpromptなしのClaude相関launchだけで指定できます", 2);
|
|
3260
3267
|
}
|
package/dist/index.js
CHANGED
|
@@ -544,7 +544,7 @@ const agentEnvironmentDesc = `通常CLIと同じHOME・cwd・project/user/local
|
|
|
544
544
|
`delegation depth/lineage、delegation_allowed=trueを注入し、必要な追加委譲は許可する。`;
|
|
545
545
|
async function launchAgent(kind, args) {
|
|
546
546
|
const supportsWriteScope = kind !== "claude";
|
|
547
|
-
const { prompt, throughline_source_session, model, reasoning_effort, env_vars, cwd, session_name, launch_operation_id, write_scope } = args;
|
|
547
|
+
const { prompt, throughline_source_session, throughline_supplement_file, model, reasoning_effort, env_vars, cwd, session_name, launch_operation_id, write_scope } = args;
|
|
548
548
|
try {
|
|
549
549
|
if (!supportsWriteScope && write_scope !== undefined) {
|
|
550
550
|
throw new core.AitermError("claude-code harnessはwrite_scopeに対応していません。指定を外してください", 2);
|
|
@@ -552,6 +552,7 @@ async function launchAgent(kind, args) {
|
|
|
552
552
|
const [sid, hint, eventCursor, submitResidue] = await core.openAgentWithInitialPrompt(kind, {
|
|
553
553
|
prompt: prompt ?? undefined,
|
|
554
554
|
throughline_source_session,
|
|
555
|
+
throughline_supplement_file,
|
|
555
556
|
model: model ?? undefined,
|
|
556
557
|
reasoning_effort: reasoning_effort ?? undefined,
|
|
557
558
|
env_vars,
|
|
@@ -619,6 +620,11 @@ function registerAgentTool(toolName, kind, desc) {
|
|
|
619
620
|
.min(1)
|
|
620
621
|
.optional()
|
|
621
622
|
.describe("同一端末のThroughline sessionから所有権を変えずに記憶を読み、promptのmissionより前へ注入する"),
|
|
623
|
+
throughline_supplement_file: z
|
|
624
|
+
.string()
|
|
625
|
+
.min(1)
|
|
626
|
+
.optional()
|
|
627
|
+
.describe("Throughline 0.10.8以降へそのまま渡すproject束縛済み長期記憶・知識の補足JSON path"),
|
|
622
628
|
model: z.string().nullish().describe(agentModelDesc(kind)),
|
|
623
629
|
// CLI/model側の値集合が版で変わるため公開enumでは縛らない(core側も同方針)。
|
|
624
630
|
reasoning_effort: z.string().nullish().describe(agentEffortDesc(kind)),
|
|
@@ -655,6 +661,7 @@ server.registerTool("agent_launch", {
|
|
|
655
661
|
harness: z.enum(["claude-code", "codex-cli", "grok-cli", "cursor-cli"]).describe("agent loop・session・hook・transcript・認証を所有する実行基盤"),
|
|
656
662
|
prompt: z.string().nullish().describe("起動時に渡す初手プロンプト(任意)。送信後は待たずに即返る"),
|
|
657
663
|
throughline_source_session: z.string().min(1).optional().describe("同一端末のThroughline sessionから読み取り専用contextを初手へ注入する"),
|
|
664
|
+
throughline_supplement_file: z.string().min(1).optional().describe("Throughline 0.10.8以降へそのまま渡すproject束縛済み長期記憶・知識の補足JSON path"),
|
|
658
665
|
model: z.string().nullish().describe("harnessが選ぶモデル。provider名ではなくlive catalog上のmodel ID"),
|
|
659
666
|
reasoning_effort: z.string().nullish().describe("harness adapterが標準CLI表現へ変換する思考レベル。Cursorではmodel同時指定が必要"),
|
|
660
667
|
env_vars: z.array(z.string()).optional().describe("現在のMCP processから継承する環境変数名"),
|
package/docs/DESIGN.md
CHANGED
|
@@ -21,6 +21,7 @@ Windows nativeではpsmux 3.3.8以上に保存され、MCP serverやclientの再
|
|
|
21
21
|
標準入口`agent_launch`は`claude-code`、`codex-cli`、`grok-cli`、`cursor-cli`のharnessとmodelを別軸で選ぶ。
|
|
22
22
|
harnessがagent loop、認証、hook、session、transcript、model catalogを所有する。Aitermは通常の
|
|
23
23
|
project/user環境を置換せず、launch相関と完了回収に必要なstateだけを加える。
|
|
24
|
+
Throughlineの補足記憶はpathを透過搬送するだけで、内容、project束縛、context予算はThroughlineが所有する。
|
|
24
25
|
|
|
25
26
|
agent turnは常に非ブロックdispatchである。receiptの`event_cursor`がturn境界、`wait_process`が
|
|
26
27
|
platform nativeな別process起動情報を返す。waiterは純readerで、親のforeground turnを塞がない。
|
package/docs/RELEASE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Release
|
|
2
2
|
|
|
3
|
-
Aitermのreleaseはこのrepositoryが所有する。`.github/workflows/product-full-ci.yml`が
|
|
3
|
+
Aitermのreleaseはこのrepositoryが所有する。`.github/workflows/product-full-ci.yml`が3環境runnerと
|
|
4
4
|
製品gateの正本であり、dotagentsの工場CIは横断受入のconsumerであってreleaseを制御しない。
|
|
5
5
|
|
|
6
6
|
## Version同期
|
|
@@ -30,14 +30,14 @@ MCPBのstaged serverでversion、16 tools、stderr 0、必要なruntime JavaScri
|
|
|
30
30
|
|
|
31
31
|
## Mainと公開
|
|
32
32
|
|
|
33
|
-
1. release commitを`main`へpush
|
|
33
|
+
1. release commitを`main`へpushし、`macos-native`、`linux-workstation`、`windows-native`の同一fullをgreenにする。
|
|
34
34
|
2. `npm run verify:release-commit`で対象commitが`origin/main`の祖先かつworktree cleanであることを確認する。
|
|
35
|
-
3. 同じcommitへ`v<version>` tagを付けてpushする。tag CIが
|
|
35
|
+
3. 同じcommitへ`v<version>` tagを付けてpushする。tag CIが3環境green後にnpmへprovenance付きでpublishする。
|
|
36
36
|
4. build済みMCPBを添付したGitHub Releaseを公開する。release eventがOfficial MCP Registry登録を起動する。
|
|
37
37
|
5. npm、GitHub Release、Official Registryが同じversionを返すまで確認する。
|
|
38
38
|
|
|
39
39
|
CI callerは同じrepositoryの`./.github/workflows/product-full-ci.yml`だけを呼ぶ。製品側の`npm test`、
|
|
40
|
-
|
|
40
|
+
3環境runner、release gateを外部repositoryへ移さず、dotagentsの変更や停止からAitermの受入を独立させる。
|
|
41
41
|
|
|
42
42
|
## 公開後smoke
|
|
43
43
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiterm-mcp",
|
|
3
|
-
"version": "0.29.
|
|
3
|
+
"version": "0.29.13",
|
|
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": [
|