@noobdemon/noob-cli 1.12.18 → 1.13.0
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 +13 -4
- package/README.md +3 -3
- package/package.json +1 -1
- package/src/api.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
Tất cả thay đổi đáng kể của `@noobdemon/noob-cli` được ghi vào file này.
|
|
4
4
|
|
|
5
|
+
## [1.13.0] - 2026-06-27
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **Worker `/api/chat` adapter cho raw backend stream**: gửi đúng shape use.ai (`messages[].parts`, `gateway-*` model id, `agenticMode`, file parts riêng, text parts gộp), không forward backend identity, `deep` tự tắt `web`. Parser stream raw `text/plain` bỏ qua metadata `event: {...}` kể cả khi dính liền sau text (`PONGevent: ...`).
|
|
9
|
+
|
|
10
|
+
### Verified
|
|
11
|
+
- Worker deployed.
|
|
12
|
+
- `npm test` 105/105 pass.
|
|
13
|
+
|
|
5
14
|
## [1.12.18] - 2026-06-25
|
|
6
15
|
|
|
7
16
|
### Changed
|
|
@@ -10,11 +19,11 @@ Tất cả thay đổi đáng kể của `@noobdemon/noob-cli` được ghi vào
|
|
|
10
19
|
## [1.12.17] - 2026-06-24
|
|
11
20
|
|
|
12
21
|
### Added
|
|
13
|
-
- **Image input support** (`src/tui.js`, `src/repl.js`, `src/api.js`, `src/agent.js`, `worker/src/worker.js`): rich TTY trên Windows hỗ trợ `Alt+V` để lấy ảnh từ clipboard, hiện chip `[pasted image #1]`, rồi gửi kèm payload `image: "data:image/png;base64,..."` qua gateway. CLI cũng tự đính kèm ảnh đầu tiên khi user nhắc `@file.png|jpg|jpeg|webp|gif` (giới hạn 8MB). Worker validate data URL và forward
|
|
22
|
+
- **Image input support** (`src/tui.js`, `src/repl.js`, `src/api.js`, `src/agent.js`, `worker/src/worker.js`): rich TTY trên Windows hỗ trợ `Alt+V` để lấy ảnh từ clipboard, hiện chip `[pasted image #1]`, rồi gửi kèm payload `image: "data:image/png;base64,..."` qua gateway. CLI cũng tự đính kèm ảnh đầu tiên khi user nhắc `@file.png|jpg|jpeg|webp|gif` (giới hạn 8MB). Worker validate data URL và forward image through the gateway adapter.
|
|
14
23
|
|
|
15
24
|
### Verified
|
|
16
25
|
- `npm test` 100/100 pass.
|
|
17
|
-
-
|
|
26
|
+
- Image data URL base64 smoke trả mô tả ảnh thành công.
|
|
18
27
|
|
|
19
28
|
## [1.12.15] - 2026-06-16
|
|
20
29
|
|
|
@@ -213,7 +222,7 @@ Tất cả thay đổi đáng kể của `@noobdemon/noob-cli` được ghi vào
|
|
|
213
222
|
## [1.10.12] - 2026-06-09
|
|
214
223
|
|
|
215
224
|
### Fixed
|
|
216
|
-
- **Auto-stop vì proxy chèn web search blocks** (`src/api.js` + `src/agent.js`): proxy
|
|
225
|
+
- **Auto-stop vì proxy chèn web search blocks** (`src/api.js` + `src/agent.js`): proxy chèn `web_search_results`/`web_search_summary` vào stream → AI tưởng prompt injection, tốn context cảnh báo thay vì làm việc. Fix: `cleanResponseText()` tự động strip các block này + system prompt dặn model ignore + handle `{finish: true}` event của proxy.
|
|
217
226
|
|
|
218
227
|
## [1.10.11] - 2026-06-09
|
|
219
228
|
|
|
@@ -491,7 +500,7 @@ Mỗi entry nên có các nhóm con (chỉ giữ nhóm có nội dung):
|
|
|
491
500
|
- **Help text & autocomplete bổ sung 3 entry mới** (`/workflow`, `/goal`, `/loop`) — trước đây các lệnh này có code nhưng không xuất hiện trong `/help` lẫn slash autocomplete (UX bug, user không biết lệnh tồn tại).
|
|
492
501
|
|
|
493
502
|
### Changed
|
|
494
|
-
- **`findModel()` nâng cấp 3-tier fuzzy match** (`src/models.js`): exact id → normalized id/name (bỏ prefix `gateway-`, chuẩn hoá dấu/spaces) → contains unique (reject ambiguous match nhiều model). Phục vụ sub-agent routing — model nội bộ luôn có prefix `gateway-` (vd `gateway-claude-opus-4-
|
|
503
|
+
- **`findModel()` nâng cấp 3-tier fuzzy match** (`src/models.js`): exact id → normalized id/name (bỏ prefix `gateway-`, chuẩn hoá dấu/spaces) → contains unique (reject ambiguous match nhiều model). Phục vụ sub-agent routing — model nội bộ luôn có prefix `gateway-` (vd `gateway-claude-opus-4-8`) nhưng AI khi spawn sẽ gõ tên ngắn (`claude-opus-4-8`, `deepseek-v4-pro`) — fuzzy match xử lý cả hai phía mà không nhầm.
|
|
495
504
|
- **`runAgent` hỗ trợ `tokenBudget` + `onBudgetExceeded`** (`src/agent.js`): vượt budget thì model bị ép tóm tắt rồi dừng, không tự đốt tiếp. Cùng cơ chế cho sub-agent.
|
|
496
505
|
- **Status bar realtime kèm token cho sub-agent**: token meter của sub-agent dùng chung instance với cha (truyền qua `runSubAgent({tokenMeter})`) → tổng phiên cộng đúng cả sub.
|
|
497
506
|
|
package/README.md
CHANGED
|
@@ -50,7 +50,7 @@ Trong phiên: `/login <key>`, `/usage`, `/logout`.
|
|
|
50
50
|
|
|
51
51
|
> Mỗi lệnh gọi mô hình (kể cả từng bước tool trong một tác vụ) tính là 1 request.
|
|
52
52
|
|
|
53
|
-
Cấp/huỷ key (admin) — trong repo gateway `
|
|
53
|
+
Cấp/huỷ key (admin) — trong repo gateway `worker/`:
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
56
|
node scripts/admin.mjs create pro "khách A"
|
|
@@ -63,7 +63,7 @@ node scripts/admin.mjs revoke nk_pro_xxx
|
|
|
63
63
|
```bash
|
|
64
64
|
noob # interactive session
|
|
65
65
|
noob "add input validation to api.js" # start with a request
|
|
66
|
-
noob -m gateway-claude-opus-4-
|
|
66
|
+
noob -m gateway-claude-opus-4-8 # pick a model
|
|
67
67
|
noob --yolo # auto-approve edits & commands
|
|
68
68
|
```
|
|
69
69
|
|
|
@@ -136,7 +136,7 @@ function-calling). Models differ in how willingly they follow it:
|
|
|
136
136
|
|
|
137
137
|
| Provider | Agentic tools | Notes |
|
|
138
138
|
| ---------------------- | ---------------- | ---------------------------------------- |
|
|
139
|
-
| **Anthropic** (Claude) | ✅ best | default — `gateway-claude-opus-4-
|
|
139
|
+
| **Anthropic** (Claude) | ✅ best | default — `gateway-claude-opus-4-8` |
|
|
140
140
|
| **DeepSeek** | ✅ works | good free alternative |
|
|
141
141
|
| OpenAI (GPT/o-series) | ⚠️ often refuses | replies "I can't access your filesystem" |
|
|
142
142
|
| Google (Gemini) | ⚠️ often refuses | same |
|
package/package.json
CHANGED
package/src/api.js
CHANGED
|
@@ -330,7 +330,7 @@ async function streamOnce({
|
|
|
330
330
|
if (p.answer) text = p.answer;
|
|
331
331
|
}
|
|
332
332
|
if (p.truncated) truncated = true;
|
|
333
|
-
// Handle {finish: true, reason: "stop"} —
|
|
333
|
+
// Handle {finish: true, reason: "stop"} — some proxies
|
|
334
334
|
// send this as completion signal instead of (or in addition to) {done: true}
|
|
335
335
|
if (p.finish === true && p.reason === 'stop') sawDone = true;
|
|
336
336
|
if (p.done) sawDone = true;
|