aiterm-mcp 0.19.3 → 0.20.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/README.ja.md +76 -13
- package/README.md +77 -14
- package/dist/aiterm-wait-cli.js +12 -3
- package/dist/core.js +3 -1
- package/package.json +13 -5
package/README.ja.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
> **Claude Code から Codex CLI の対話 TUI を操作する——スラッシュコマンドや [`$imagegen`](https://learn.chatgpt.com/docs/image-generation#generate-or-edit-an-image) のようなスキルまで、MCP越しに使える。**
|
|
2
|
+
|
|
1
3
|
<p align="center">
|
|
2
4
|
<img src=".github/og.svg" alt="aiterm-mcp — AI が握る 1 本の永続 MCP 端末。その中へ他のコーディングエージェント(Claude/Codex/Grok/Composer)を起動する(tmux ベースの stdio MCP サーバ)" width="100%">
|
|
3
5
|
</p>
|
|
@@ -6,6 +8,7 @@
|
|
|
6
8
|
|
|
7
9
|
[](https://github.com/kitepon-rgb/aiterm-mcp/actions/workflows/ci.yml)
|
|
8
10
|
[](https://www.npmjs.com/package/aiterm-mcp)
|
|
11
|
+
[](https://www.npmjs.com/package/aiterm-mcp)
|
|
9
12
|
[](https://nodejs.org)
|
|
10
13
|
[](LICENSE)
|
|
11
14
|
[](https://packagephobia.com/result?p=aiterm-mcp)
|
|
@@ -20,6 +23,70 @@
|
|
|
20
23
|
>
|
|
21
24
|
> *MCP = Model Context Protocol — Claude Code のようなツールが AI に機能を差し込むためのオープン標準。*
|
|
22
25
|
|
|
26
|
+
kitepon.devを運営する[クオ(@QLyun35332)](https://x.com/QLyun35332)が
|
|
27
|
+
開発・メンテナンスしています。
|
|
28
|
+
|
|
29
|
+
## MCPクライアントへ導入
|
|
30
|
+
|
|
31
|
+
cloneもビルドも不要。どのクライアントでも公開パッケージを次のコマンドで起動する:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx -y aiterm-mcp
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Node.js ≥ 18** と **tmux** が必要。Codexを操作する場合は、Codex CLIの導入と認証も必要。
|
|
38
|
+
|
|
39
|
+
### Claude Code
|
|
40
|
+
|
|
41
|
+
ユーザー設定へ追加する:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
claude mcp add --scope user --transport stdio aiterm -- npx -y aiterm-mcp
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
プロジェクト設定として共有する場合は、`.mcp.json` に次を置く:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"mcpServers": {
|
|
52
|
+
"aiterm": {
|
|
53
|
+
"command": "npx",
|
|
54
|
+
"args": ["-y", "aiterm-mcp"]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Claude Desktop
|
|
61
|
+
|
|
62
|
+
`claude_desktop_config.json` に次のサーバーを追加する:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"mcpServers": {
|
|
67
|
+
"aiterm": {
|
|
68
|
+
"command": "npx",
|
|
69
|
+
"args": ["-y", "aiterm-mcp"]
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Cursor
|
|
76
|
+
|
|
77
|
+
プロジェクトでは `.cursor/mcp.json`、全体設定では `~/.cursor/mcp.json` に保存する:
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"mcpServers": {
|
|
82
|
+
"aiterm": {
|
|
83
|
+
"command": "npx",
|
|
84
|
+
"args": ["-y", "aiterm-mcp"]
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
23
90
|
**工場での役割:** aiterm-mcpはdotagents開発工場が管理する自作コア10製品の一つです。
|
|
24
91
|
永続PTYと外部agent実行レーンを所有し、dotagentsが製品横断の導入・統合契約を所有します。
|
|
25
92
|
|
|
@@ -27,12 +94,14 @@
|
|
|
27
94
|
|
|
28
95
|
13 ツール: 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 を新しい端末の中に起動し、`claude_turn`がdurable caller向けの構造化issue/recoveryを、`claude_approval`がmanaged Claudeの相関済み承認UI中継を、`diagnostics`が安全なfactory readinessを返す。バックエンドは **tmux** なので、MCP サーバや AI クライアントが再起動してもセッションは生き残る。
|
|
29
96
|
|
|
30
|
-
**v0.
|
|
31
|
-
|
|
32
|
-
`
|
|
33
|
-
|
|
97
|
+
**v0.20.0 を 2026-07-26 に公開。** 待たずに一度だけ観測する
|
|
98
|
+
`aiterm-wait --timeout 0` の未完了を、実際に待って終わらなかった`timeout`と区別し、
|
|
99
|
+
`running`(exit 5)で返すようにしました。v0.19系では相関済みmanaged Claude approval中継を追加し、
|
|
100
|
+
複数行shell配送を維持し、native Windowsのfactory diagnosticsを拡張しました。
|
|
101
|
+
v0.16/0.17以来、親エージェントはaiterm上で一切ブロックしません:
|
|
34
102
|
agent session への send は常に非ブロック dispatch になり、完了待ちは `aiterm-wait` 一本
|
|
35
|
-
(exit code が receipt の outcome を映す: 0=done / 3=timeout=未完了 /
|
|
103
|
+
(exit code が receipt の outcome を映す: 0=done / 3=timeout=未完了 /
|
|
104
|
+
4=closed / 5=running=待たない観測)、初回 prompt 付き
|
|
36
105
|
launch は structured receipt にコピペ可能な `wait_command` を含む。factory diagnostics と local
|
|
37
106
|
runtime-error store は canonical dotagents config の `collection.enabled: true` が明示された
|
|
38
107
|
場合だけ収集し、既定OFF、network送信は行いません。tag起点CIのnpm provenance(OIDC Trusted
|
|
@@ -134,13 +203,7 @@ $ aiterm-wait --session codex1 --cursor <event_cursor> # exit 0=done / 3=timeo
|
|
|
134
203
|
|
|
135
204
|
上の採取で私が触ったのは 2 本の `⋮` 行(長い head/tail を README 用に省略)と長すぎる grep 行 1 本の truncate だけ——`〈…〉` マーカー・トークン数・各 `is_complete` はツールが出した通り。(`until` は末尾スペース無しの `">>>"` を使う——採取されるプロンプトは末尾が削られるので `">>> "` だと外れて `timeout` に落ちる。)ネスト中は `until`(内側プロンプト)か `mark: true` を渡すこと——そこでは quiescence が原理的に効かないため([完了検出](#完了検出5-層) / [既知の制約](#既知の制約バグではなく仕様))。同じ tmux ソケットに人が `attach` すれば、これらをライブで覗ける([人が覗く](#人が覗く))。
|
|
136
205
|
|
|
137
|
-
##
|
|
138
|
-
|
|
139
|
-
Claude Code なら 1 コマンドで登録——clone もビルドも不要、`npx` が毎回取得して起動する:
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
claude mcp add --scope user --transport stdio aiterm -- npx -y aiterm-mcp
|
|
143
|
-
```
|
|
206
|
+
## 最初の実行(約60秒)
|
|
144
207
|
|
|
145
208
|
Claude Code を再起動して、接続を確認:
|
|
146
209
|
|
|
@@ -170,7 +233,7 @@ npm i -g aiterm-mcp
|
|
|
170
233
|
claude mcp add --scope user --transport stdio aiterm -- aiterm-mcp
|
|
171
234
|
```
|
|
172
235
|
|
|
173
|
-
`~/.claude.json`
|
|
236
|
+
`~/.claude.json` に登録され、初回に承認プロンプトが出る。クライアント別のJSONは[MCPクライアントへ導入](#mcpクライアントへ導入)を参照。
|
|
174
237
|
|
|
175
238
|
## ヘッドレス: 端末に人が居ない
|
|
176
239
|
|
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
> **Drive Codex CLI's interactive TUI from Claude Code — including slash commands and skills such as [`$imagegen`](https://learn.chatgpt.com/docs/image-generation#generate-or-edit-an-image) — through MCP.**
|
|
2
|
+
|
|
1
3
|
<p align="center">
|
|
2
4
|
<img src=".github/og.svg" alt="aiterm-mcp — one persistent MCP terminal your AI drives, and launches other coding agents (Claude/Codex/Grok/Composer) into (tmux-backed stdio MCP server)" width="100%">
|
|
3
5
|
</p>
|
|
@@ -6,6 +8,7 @@
|
|
|
6
8
|
|
|
7
9
|
[](https://github.com/kitepon-rgb/aiterm-mcp/actions/workflows/ci.yml)
|
|
8
10
|
[](https://www.npmjs.com/package/aiterm-mcp)
|
|
11
|
+
[](https://www.npmjs.com/package/aiterm-mcp)
|
|
9
12
|
[](https://nodejs.org)
|
|
10
13
|
[](LICENSE)
|
|
11
14
|
[](https://packagephobia.com/result?p=aiterm-mcp)
|
|
@@ -20,6 +23,69 @@
|
|
|
20
23
|
>
|
|
21
24
|
> *MCP = Model Context Protocol — the open standard that lets tools like Claude Code plug capabilities into an AI.*
|
|
22
25
|
|
|
26
|
+
Built and maintained by [Quo](https://x.com/QLyun35332) at kitepon.dev.
|
|
27
|
+
|
|
28
|
+
## Install in your MCP client
|
|
29
|
+
|
|
30
|
+
No clone or build is required. Each client launches the published package with:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx -y aiterm-mcp
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Requires **Node.js ≥ 18** and **tmux**. Driving Codex also requires the Codex CLI to be installed and authenticated.
|
|
37
|
+
|
|
38
|
+
### Claude Code
|
|
39
|
+
|
|
40
|
+
Add it for your user account:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
claude mcp add --scope user --transport stdio aiterm -- npx -y aiterm-mcp
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Or commit this as a project-scoped `.mcp.json`:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"mcpServers": {
|
|
51
|
+
"aiterm": {
|
|
52
|
+
"command": "npx",
|
|
53
|
+
"args": ["-y", "aiterm-mcp"]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Claude Desktop
|
|
60
|
+
|
|
61
|
+
Add this server to `claude_desktop_config.json`:
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"mcpServers": {
|
|
66
|
+
"aiterm": {
|
|
67
|
+
"command": "npx",
|
|
68
|
+
"args": ["-y", "aiterm-mcp"]
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Cursor
|
|
75
|
+
|
|
76
|
+
Save this as `.cursor/mcp.json` for the project, or `~/.cursor/mcp.json` globally:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"mcpServers": {
|
|
81
|
+
"aiterm": {
|
|
82
|
+
"command": "npx",
|
|
83
|
+
"args": ["-y", "aiterm-mcp"]
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
23
89
|
**Factory role:** aiterm-mcp is one of the ten self-owned core products managed by
|
|
24
90
|
the dotagents development factory. It owns the persistent PTY and external-agent
|
|
25
91
|
execution lane; dotagents owns the cross-product installation and integration
|
|
@@ -29,14 +95,15 @@ contract.
|
|
|
29
95
|
|
|
30
96
|
Thirteen 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, `claude_turn` for durable structured issue/recovery, `claude_approval` for correlated managed-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.
|
|
31
97
|
|
|
32
|
-
**v0.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
98
|
+
**v0.20.0 was published on 2026-07-26.** It distinguishes a non-blocking
|
|
99
|
+
`aiterm-wait --timeout 0` observation (`running`, exit 5) from a real timed-out
|
|
100
|
+
wait. The v0.19 line added the correlated managed-Claude approval relay,
|
|
101
|
+
preserved multiline shell delivery, and extended factory diagnostics on native
|
|
102
|
+
Windows. As of v0.16/0.17 a parent agent never blocks on aiterm:
|
|
37
103
|
every send to an agent session is a non-blocking dispatch, completion is one
|
|
38
104
|
universal `aiterm-wait` waiter whose exit codes mirror the receipt outcome
|
|
39
|
-
(`0`=done / `3`=timeout, not finished / `4`=closed
|
|
105
|
+
(`0`=done / `3`=timeout, not finished / `4`=closed / `5`=running for a
|
|
106
|
+
zero-time observation), and a launch with an
|
|
40
107
|
initial prompt returns a ready-made `wait_command` in its structured receipt.
|
|
41
108
|
Factory diagnostics and the local runtime-error store collect only when
|
|
42
109
|
canonical dotagents config explicitly sets `collection.enabled: true`;
|
|
@@ -151,13 +218,7 @@ Nesting is just text you send in — here a Python REPL *inside* the same PTY (a
|
|
|
151
218
|
|
|
152
219
|
The only edits to the captures above are the two `⋮` lines (a long head/tail run abbreviated for the README) and one over-long grep line truncated to fit — the `⟨…⟩` marker, the token counts, and every `is_complete` verdict are exactly what the tool printed. (Use `until: ">>>"` without a trailing space — the captured prompt is trimmed, so `">>> "` would miss and fall through to `timeout`.) While nested, pass `until` (the inner prompt) or `mark: true`, because quiescence cannot fire there by design — see [Completion detection](#completion-detection-5-layers) and [Known constraints](#known-constraints-by-design-not-bugs). A human can `attach` to the same tmux socket and watch any of this live (see [A human can watch](#a-human-can-watch)).
|
|
153
220
|
|
|
154
|
-
##
|
|
155
|
-
|
|
156
|
-
One command registers it in Claude Code — no clone, no build, `npx` fetches it each run:
|
|
157
|
-
|
|
158
|
-
```bash
|
|
159
|
-
claude mcp add --scope user --transport stdio aiterm -- npx -y aiterm-mcp
|
|
160
|
-
```
|
|
221
|
+
## First run (≈60 seconds)
|
|
161
222
|
|
|
162
223
|
Restart Claude Code, then verify the connection:
|
|
163
224
|
|
|
@@ -187,7 +248,7 @@ npm i -g aiterm-mcp
|
|
|
187
248
|
claude mcp add --scope user --transport stdio aiterm -- aiterm-mcp
|
|
188
249
|
```
|
|
189
250
|
|
|
190
|
-
This registers it in `~/.claude.json`; you'll get an approval prompt the first time.
|
|
251
|
+
This registers it in `~/.claude.json`; you'll get an approval prompt the first time. For client-specific JSON, see [Install in your MCP client](#install-in-your-mcp-client).
|
|
191
252
|
|
|
192
253
|
## Headless: no human at the terminal
|
|
193
254
|
|
|
@@ -326,6 +387,8 @@ As of v0.16 a parent agent **never blocks** on aiterm — there is no wait param
|
|
|
326
387
|
3. **The parent never runs the waiter in its own foreground.** Waiting is correct — but the waiter is a separate process, not the parent's turn. A harness that re-invokes its agent when a background task exits (Claude Code) runs the waiter **in the background** and gets woken with zero polling. So that this is not left to interpretation, aiterm reads `clientInfo.name` from the MCP `initialize` handshake and its receipts name the concrete invocation for the detected host — for Claude Code, literally `Bash(command: "aiterm-wait …", run_in_background: true)`. Unknown or undeclared hosts get the generic "start it as a process that does not block the parent's turn" wording; nothing else about the contract changes. Every receipt leads with the same rule: dispatch and let go, then go do something else or end the turn.
|
|
327
388
|
4. Collect the result exactly as before: `pty_read(agent_transcript: true)`, or `claude_turn recover` for durable Claude operations. The waiter carries the signal, never the payload.
|
|
328
389
|
|
|
390
|
+
**If your host has no completion push** (no mechanism that re-invokes the agent when a background process exits), `--timeout 0` is a one-shot check instead of a wait: it scans the event file once and returns `running` (exit `5`) when the turn is still in flight, `done` (exit `0`) when it finished, `closed` (exit `4`) when the session is gone. It is deliberately absent from the receipts and tool descriptions — a host that *does* get pushed should be woken, not poll. An unknown session name is an error, never `running`, so a typo cannot masquerade as a child that is still working.
|
|
391
|
+
|
|
329
392
|
`aiterm-wait` takes no locks, never writes session state, and never dispatches — any number can run beside the MCP server and each other, and `pty_close`/concurrent sends are unaffected.
|
|
330
393
|
|
|
331
394
|
### Token reduction
|
package/dist/aiterm-wait-cli.js
CHANGED
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
// aiterm-wait — agent turn 完了eventの純リーダー観測CLI。
|
|
3
3
|
// 完了/timeout/close を1行のJSON receiptで返してexitする。lock・PTY・dispatch状態には一切触れない。
|
|
4
4
|
// 親AIホストのバックグラウンドタスクとして起動し、exitを「観測終了の通知」として使う。
|
|
5
|
-
// exit≠完了: exit code は outcome を映す(0=done / 3=timeout=未完了 / 4=closed / 1=エラー)。
|
|
5
|
+
// exit≠完了: exit code は outcome を映す(0=done / 5=running=未完了 / 3=timeout=未完了 / 4=closed / 1=エラー)。
|
|
6
|
+
// --timeout 0 は待たずに一度だけ観測する照会で、未完了は running(timeout と混同させない)。
|
|
6
7
|
// receipt の outcome が正で、done 以外は未完了。timeout の既定は core の DEFAULT_AGENT_DONE_TIMEOUT(600秒)。
|
|
7
8
|
import { fileURLToPath } from "node:url";
|
|
8
9
|
import * as fs from "node:fs";
|
|
9
10
|
import { AitermError, observeAgentDone } from "./core.js";
|
|
10
11
|
const SESSION_RE = /^[A-Za-z0-9_-]{1,64}$/;
|
|
11
12
|
const OPERATION_RE = /^sha256:[0-9a-f]{64}$/;
|
|
12
|
-
const USAGE = "usage: aiterm-wait --session <name> [--cursor <event_cursor>] [--operation sha256:<64hex>] [--timeout <sec>]"
|
|
13
|
+
const USAGE = "usage: aiterm-wait --session <name> [--cursor <event_cursor>] [--operation sha256:<64hex>] [--timeout <sec>]" +
|
|
14
|
+
"(--timeout 0 は待たずに一度だけ観測する照会で、未完了は outcome=running / exit 5)";
|
|
13
15
|
export function parseArgs(argv) {
|
|
14
16
|
let session = null;
|
|
15
17
|
let operationId = null;
|
|
@@ -65,7 +67,14 @@ function emit(value) {
|
|
|
65
67
|
process.stdout.write(JSON.stringify(value) + "\n");
|
|
66
68
|
}
|
|
67
69
|
// outcome → exit code。exit status しか見えないホストでも done とそれ以外を誤読できないようにする。
|
|
68
|
-
|
|
70
|
+
// Record で全 outcome を型に強制する: 語を足して対応表を直し忘れると undefined→exit 0 になり、
|
|
71
|
+
// 「まだ終わっていない」が「完了」として親へ届く。その取りこぼしを compile error で止める。
|
|
72
|
+
const OUTCOME_EXIT_CODES = {
|
|
73
|
+
done: 0,
|
|
74
|
+
running: 5,
|
|
75
|
+
timeout: 3,
|
|
76
|
+
closed: 4,
|
|
77
|
+
};
|
|
69
78
|
export async function main(argv) {
|
|
70
79
|
const cmd = parseArgs(argv);
|
|
71
80
|
const result = await observeAgentDone(cmd.session, {
|
package/dist/core.js
CHANGED
|
@@ -2938,8 +2938,10 @@ export async function observeAgentDone(name, o = {}) {
|
|
|
2938
2938
|
if (scanned.event)
|
|
2939
2939
|
return observation("done", scanned.event);
|
|
2940
2940
|
}
|
|
2941
|
+
// timeout=0 は「待たずに一度だけ見る」照会=未完了は失敗ではなく running。
|
|
2942
|
+
// 1秒以上を指定した待機の未完了は従来どおり timeout で、待ち方の意味は変えない。
|
|
2941
2943
|
if (performance.now() >= deadline)
|
|
2942
|
-
return observation("timeout");
|
|
2944
|
+
return observation(timeout === 0 ? "running" : "timeout");
|
|
2943
2945
|
await sleep(AGENT_DONE_POLL_MS);
|
|
2944
2946
|
}
|
|
2945
2947
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiterm-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.1",
|
|
4
4
|
"mcpName": "io.github.kitepon-rgb/aiterm-mcp",
|
|
5
|
-
"description": "
|
|
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": [
|
|
7
7
|
"mcp",
|
|
8
8
|
"mcp-server",
|
|
@@ -17,11 +17,18 @@
|
|
|
17
17
|
"ai-agent",
|
|
18
18
|
"agent",
|
|
19
19
|
"codex",
|
|
20
|
+
"codex-cli",
|
|
20
21
|
"grok",
|
|
21
|
-
"devtools"
|
|
22
|
+
"devtools",
|
|
23
|
+
"terminal-mcp",
|
|
24
|
+
"persistent-terminal",
|
|
25
|
+
"interactive-cli"
|
|
22
26
|
],
|
|
23
27
|
"license": "MIT",
|
|
24
|
-
"author":
|
|
28
|
+
"author": {
|
|
29
|
+
"name": "Quo / クオ (kitepon.dev)",
|
|
30
|
+
"url": "https://x.com/QLyun35332"
|
|
31
|
+
},
|
|
25
32
|
"repository": {
|
|
26
33
|
"type": "git",
|
|
27
34
|
"url": "git+https://github.com/kitepon-rgb/aiterm-mcp.git"
|
|
@@ -37,7 +44,7 @@
|
|
|
37
44
|
"aiterm-wait": "dist/aiterm-wait-cli.js"
|
|
38
45
|
},
|
|
39
46
|
"files": [
|
|
40
|
-
"dist",
|
|
47
|
+
"dist/*.js",
|
|
41
48
|
"README.md",
|
|
42
49
|
"LICENSE"
|
|
43
50
|
],
|
|
@@ -46,6 +53,7 @@
|
|
|
46
53
|
},
|
|
47
54
|
"scripts": {
|
|
48
55
|
"build": "tsc",
|
|
56
|
+
"mcpb:build": "npm run build && node scripts/build-mcpb.mjs && npm ci --omit=dev --ignore-scripts --no-audit --no-fund --prefix dist/mcpb-stage/server && npx --yes @anthropic-ai/mcpb@2.1.2 validate dist/mcpb-stage/manifest.json && npx --yes @anthropic-ai/mcpb@2.1.2 pack dist/mcpb-stage dist/aiterm-mcp.mcpb",
|
|
49
57
|
"prepublishOnly": "npm run build",
|
|
50
58
|
"start": "node dist/index.js",
|
|
51
59
|
"test": "npm run build && node --test test/*.test.mjs"
|