Repository navigation
v2.2.2 — pty_read và pty_list báo đúng chuyện đã xảy ra
Bản 2.2.2 sửa hai chỗ còn hở của tool PTY sau khi 2.2.1 làm pty_start chạy lại. Không có thay đổi nào khác.
pty_read không còn báo nhầm "không có output"
Trước đây, đọc ngay sau pty_start thường trả (no output yet) — vì tiến trình chưa kịp in. Câu đó đọc như "lệnh không in ra gì", nên một agent đọc một lần rồi kết luận sai.
Nay khi buffer rỗng và tiến trình còn chạy, kết quả nói thẳng:
Status: running
(no output yet)
(still running; call pty_read again to collect output)
Đồng thời, buffer chỉ bị xoá khi thực sự có chữ được trả về. Trước đây clear: true xoá trước khi kiểm tra, nên có thể mất đúng những byte đến giữa lúc chép và lúc xoá.
pty_list không còn nói "running" cho tiến trình đã chết
pty_list lấy trạng thái từ việc có giữ handle tiến trình hay không — mà handle thì luôn có — nên session đã thoát từ lâu vẫn hiện Status: running. Nay nó đọc cờ thoát và báo exited.
Kiểm chứng
- 8 test pass cho tool PTY: 4 test pin hai kiểu API của bun-pty (từ 2.2.1), 4 test mới cho hợp đồng buffer — nhắc đọc lại, chỉ drain khi có output, giữ buffer khi không truyền
clear, và trạng tháiexited. - Toàn bộ suite opencode-hive pass;
tsc --noEmitsạch; build ok. - Trên runtime thật (OpenCode, nạp bản build cục bộ):
pty_start→pty_read→pty_listtrả đúng(still running…)khi cần vàStatus: exitedcho lệnh đã xong.
Nâng cấp
npm i -g @hung319/opencode-hive@2.2.2
opencode plugin updateRồi khởi động lại OpenCode và mở session mới — tool registry của một session đang chạy được chốt lúc session bắt đầu, nên session cũ vẫn dùng code cũ dù opencode plugin check đã báo bản mới.
Còn để mở
PTY chạy lệnh qua /bin/sh. Trên Debian/Ubuntu /bin/sh là dash, không phải bash, nên lệnh viết theo thói quen bash ([[ ]], $'…', printf -v) sẽ hỏng theo cách khó đoán. Đổi sang bash là thay đổi hành vi, chưa làm ở bản này.