agy-mcp-bridge 0.1.26 → 0.1.27
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.md +1 -1
- package/dist/src/antigravity/process.js +1 -1
- package/docs/HARDENING.md +3 -3
- package/docs/VERIFICATION.md +7 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ Fastest first run: from inside the project you want to work on, `agy-mcp-bridge
|
|
|
18
18
|
|
|
19
19
|
`agy-mcp-bridge check | setup codex|claude|both | delegation on|off|status | skill install | config | update | help`. `--open` launches the web UI in your browser. Config and task history live in the user data directory (`%APPDATA%\agy-mcp-bridge`, `~/.config/agy-mcp-bridge`, `~/Library/Application Support/agy-mcp-bridge`; override with `BRIDGE_HOME`), so an upgrade never deletes them. `agy-mcp-bridge config` prints the real paths.
|
|
20
20
|
|
|
21
|
-
At startup the bridge probes each CLI. An agent that is missing or unsupported is marked unavailable and takes no task; if `agy` is unavailable, the default agent silently becomes the next enabled one, so check `agents_list` after changing machines. Priority and per-agent switches live under `agents` in `config/workspaces.json`. Verified against real agent execution on `agy` 1.4.3 and 1.4.
|
|
21
|
+
At startup the bridge probes each CLI. An agent that is missing or unsupported is marked unavailable and takes no task; if `agy` is unavailable, the default agent silently becomes the next enabled one, so check `agents_list` after changing machines. Priority and per-agent switches live under `agents` in `config/workspaces.json`. Verified against real agent execution on `agy` 1.4.3, 1.4.7, 1.4.8 and 1.4.9; other 1.4.x patches run with a logged warning; other majors are refused.
|
|
22
22
|
|
|
23
23
|
From a git clone instead of npm: `npm ci && npm run build && npm start`, then `npm run check` in a second terminal. `npm run dev` builds and runs; there is no hot reload, because an automatic restart would cut off a task mid-edit.
|
|
24
24
|
|
|
@@ -3,7 +3,7 @@ import { access, readFile, realpath } from 'node:fs/promises';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { inside } from '../security/workspace.js';
|
|
5
5
|
/** Patch releases exercised with a real agent run; other 1.4.x patches still run but warn. */
|
|
6
|
-
export const VERIFIED_AGY_VERSIONS = ['1.4.3', '1.4.7'];
|
|
6
|
+
export const VERIFIED_AGY_VERSIONS = ['1.4.3', '1.4.7', '1.4.8', '1.4.9'];
|
|
7
7
|
/**
|
|
8
8
|
* Resolve a command without ever going through a shell. On Windows an npm-installed CLI is usually a `.cmd`
|
|
9
9
|
* shim; spawning it with shell:false fails, and spawning it through cmd.exe would allow argument injection.
|
package/docs/HARDENING.md
CHANGED
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
2. Task queued được validate lại trước launch. Chuyển sang running được ghi trước spawn để restore không kết luận sai rằng task chưa từng sửa file. Recheck trạng thái ngay trước spawn ngăn launch tiếp sau cancel/shutdown trong lúc chờ I/O.
|
|
9
9
|
3. POSIX SIGTERM cả nhóm, tối đa 8 giây rồi SIGKILL. Windows vẫn taskkill theo PID/cây thuộc server khi hủy; khi agent tự thoát, bridge còn giải phóng các cây con mà agent để lại (mục "Dọn cây tiến trình agent" dưới đây). Bridge watchdog chạy sau CLI timeout thêm 10 giây; cancellation có thể chờ thêm thời gian cleanup.
|
|
10
10
|
4. Startup và acquisition tự thu hồi lock chỉ khi cả hai PID trong owner đều hợp lệ và không còn sống. Record thiếu/hỏng, PID còn sống, ownership đổi hoặc owner cũ hơn lock thì giữ nguyên. `agy-mcp-bridge unlock` dùng cùng logic và không kill process. PID reuse và server crash vẫn cần xử lý thận trọng; chưa có Windows Job Object.
|
|
11
|
-
5. Family 1.4.x phải có đủ cờ bắt buộc trong help.
|
|
11
|
+
5. Family 1.4.x phải có đủ cờ bắt buộc trong help. Mỗi patch 1.4.3, 1.4.7, 1.4.8 và 1.4.9 đều có một lần `npm run test:live` đạt trên CLI thật (smoke + hủy task + shutdown; 1.4.8 và 1.4.9 thêm mission ba bước); patch 1.4.x khác có cảnh báo log/environment; minor/major khác không chạy.
|
|
12
12
|
6. Môi trường child mặc định chỉ có PATH, HOME, USERPROFILE, APPDATA, LOCALAPPDATA, TEMP, TMP, TMPDIR, SystemRoot, ComSpec, LANG, LC_*, XDG_*, HTTP_PROXY, HTTPS_PROXY, NO_PROXY; tên không phân biệt hoa thường. Tên chứa TOKEN/SECRET/PASSWORD/API_KEY chỉ được truyền khi có trong `extra_env_passthrough`. Các thiết lập auth/tool phụ thuộc env khác có thể cần opt-in.
|
|
13
13
|
7. Bridge không có bearer token. Chỉ bind 127.0.0.1 và giữ kiểm tra Host/Origin; bất kỳ tiến trình cục bộ cùng user đều có thể điều khiển agent, hủy task hoặc tắt server. Đây là mô hình tin cậy cục bộ có chủ đích, không dùng cho máy chia sẻ hoặc mạng ngoài.
|
|
14
|
-
8. Prompt mặc định vẫn đi qua argv với print/json, là đường đã được chạy thật với `agy` 1.4.3 và 1.4.
|
|
14
|
+
8. Prompt mặc định vẫn đi qua argv với print/json, là đường đã được chạy thật với `agy` 1.4.3, 1.4.7, 1.4.8 và 1.4.9. Chế độ `"prompt_transport": "stdin"` (tùy chọn, chưa mặc định) gửi NDJSON qua stdin để prompt không hiện trong danh sách tiến trình: một event user rồi end, stdout phải có đúng một event result hợp lệ. Chỉ bật khi đã xác nhận bằng một lần chạy `agy` thật; nếu định dạng không khớp, task fail và lỗi có gợi ý quay lại argv. Cap API 24000 ký tự và output cap không thay đổi; progress/init cũng tính vào output.
|
|
15
15
|
9. Output được gom vào mảng chunk; decode/redact snapshot tối đa mỗi giây, cuối task flush đầy đủ. Byte counts và truncated giữ ngữ nghĩa cũ.
|
|
16
16
|
10. Repeated SIGINT/SIGTERM không bỏ cleanup; in thông báo chờ.
|
|
17
17
|
11. Prompt nhận clientLabel thực tế; MCP/UI version đọc manifest. Prerelease được so từng phần, numeric so bằng BigInt, ví dụ rc.2 < rc.10; build metadata không ảnh hưởng precedence.
|
|
@@ -33,7 +33,7 @@ Chỉ thêm env khi cơ chế xác thực/tool của chính bạn cần nó. `"p
|
|
|
33
33
|
- Test mới bao phủ link nội bộ/ngoài workspace, queue revalidation và history transition, SIGTERM/escalation, PID lock recovery/unlock, patch-version/flag gates, env của executable giả, stdin/fallback/malformed results, snapshot throttling, repeated signals, client prompt, MCP/UI version và prerelease ordering.
|
|
34
34
|
- Một lần suite Windows gặp ECONNRESET trong test HTTP oversized-body có sẵn. Test riêng và suite chạy lại xanh; không nới assertion/body cap/auth để né lỗi.
|
|
35
35
|
- `agy --help` xác nhận `--input-format stream-json` đọc NDJSON từ stdin và cần output stream-json. Đối chiếu [tài liệu Google chính thức](https://antigravity.google/docs/cli/headless/) về user/message.content, result envelope và EOF.
|
|
36
|
-
- Probe CLI thật dùng **control_request cố ý không hỗ trợ**, không gửi user prompt: exit 2, result ERROR, num_turns 0, tất cả usage counters 0. Xác minh parser/đường lỗi; thành công của AI qua stdin chỉ được test bằng executable giả trong đợt này. Không tuyên bố đã kiểm thử agent thật cho patch
|
|
36
|
+
- Probe CLI thật dùng **control_request cố ý không hỗ trợ**, không gửi user prompt: exit 2, result ERROR, num_turns 0, tất cả usage counters 0. Xác minh parser/đường lỗi; thành công của AI qua stdin chỉ được test bằng executable giả trong đợt này. Không tuyên bố đã kiểm thử agent thật cho patch ngoài danh sách ở mục 5, hoặc cho transport mới.
|
|
37
37
|
- Không thay bind 127.0.0.1 hoặc Host/Origin; không mở LAN. Bridge cố ý không có xác thực — chỉ dùng trên máy do chủ máy kiểm soát.
|
|
38
38
|
|
|
39
39
|
## Dọn cây tiến trình agent (nhánh deepseek, 2026-10-26)
|
package/docs/VERIFICATION.md
CHANGED
|
@@ -14,6 +14,13 @@ Lần HTTP live cuối ngày khảo sát đạt: endpoint tạm 127.0.0.1:54791,
|
|
|
14
14
|
|
|
15
15
|
**Cập nhật 2026-10-26:** chạy lại `npm run test:live` với `agy 1.4.7` trên cùng máy, đạt đầy đủ: task trả đúng `BRIDGE_SMOKE_OK`, `response_verified=true`, `workspace_unchanged=true`, hủy task thật `canceled`, `shutdown_with_active_task_verified=true`, `server_exit_code=0`. Vì vậy 1.4.7 được thêm vào danh sách patch đã xác minh; các số liệu 1.4.3 phía trên giữ nguyên làm bằng chứng lịch sử.
|
|
16
16
|
|
|
17
|
+
**Cập nhật 2026-10-28 — `agy 1.4.8` và `agy 1.4.9`.** Hai patch này vào `VERIFIED_AGY_VERSIONS` vì mỗi patch có một lần `npm run test:live` đạt trên CLI thật, không phải vì một task lẻ chạy được:
|
|
18
|
+
|
|
19
|
+
- **1.4.8** — đợt nghiệm thu nhánh `antigravity` (bằng chứng ghi ở `docs/HANDOFF.md` mục 6.3): exit 0, `success: true`, `workspace_unchanged: true`, `reconnected: true`, `shutdown_with_active_task_verified: true`, smoke `completed` trả đúng `BRIDGE_SMOKE_OK`, mission ba bước `a → b → c` cả ba `completed`, sáu lời từ chối vẫn nguyên văn, task cancel `canceled` exit 1, `denied_actions: []`.
|
|
20
|
+
- **1.4.9** — ngày 2026-10-28, `node dist/scripts/live.js` trên `main` `17209c3` (trước bản sửa này, nên đường cài đặt vẫn báo `ready 1.4.9` kèm cảnh báo "only 1.4.3 and 1.4.7 have been verified"): **exit 0**, `success: true`, `started_at 08:59:49Z → finished_at 09:00:59Z` (70,7 s cho sáu task thật, một trong số đó bị hủy ngay), smoke `completed` exit 0 `BRIDGE_SMOKE_OK`, `response_verified=true`, `workspace_unchanged=true` (sentinel `UNCHANGED`, thư mục chỉ còn `sentinel.txt`), `reconnected=true`, mission `a/b/c` đều `completed` với `progress {total:3, completed:3, active:0, ready:0, pending:0, unmet:0}` và `plan_steps:3`, cancel `canceled` exit 1 `process_running=false` `denied_actions: []`, `server_exit_code=0`, `shutdown_with_active_task_verified=true` (PID 33664 đã chết khi server tắt).
|
|
21
|
+
|
|
22
|
+
Sau bản sửa, `antigravity_environment` trên đúng CLI 1.4.9 không còn cảnh báo patch chưa xác minh, và `limitations` đọc là "real execution was verified on 1.4.3, 1.4.7, 1.4.8 and 1.4.9".
|
|
23
|
+
|
|
17
24
|
Đã khởi động `npm start` thật trong terminal với PORT=0 tại 127.0.0.1:64646, không mở IDE/client để giữ server sống. `npm run check` gọi environment qua HTTP thành công, sau đó gửi Ctrl+C trong terminal: in Shutting down và Stopped. Check lại đúng endpoint đã tắt trả lỗi kết nối kèm hướng dẫn npm start/PORT, exit 1. Cổng thử đã đóng; không để lại HTTP server chạy nền. Shutdown có task chạy được xác minh riêng bằng harness SIGINT và agy thật; thao tác Ctrl+C terminal trực tiếp được thử khi không có task.
|
|
18
25
|
|
|
19
26
|
Chưa sửa cấu hình client thực tế. Tài liệu kết nối đã đối chiếu [Codex HTTP MCP](https://developers.openai.com/codex/mcp/) và [Claude Code MCP](https://code.claude.com/docs/en/mcp), cùng help CLI tại máy. Protocol handshake bằng SDK không chứng minh Codex/Claude Code đã được đăng ký hoặc tải tool.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agy-mcp-bridge",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.27",
|
|
4
4
|
"description": "Local loopback HTTP MCP bridge that delegates bounded coding tasks to multiple agent CLIs (Antigravity, Codex) with optional parallel git worktrees",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|