@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 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 `image` sang Railway (`{message, model, image}`); fallback cũ giữ `{message, model}`.
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
- - Railway `/chat` smoke với `image` data URL base64 trả mô tả ảnh thành công.
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 unlimited.surf 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.
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-7`) nhưng AI khi spawn sẽ gõ tên ngắn (`claude-opus-4-7`, `deepseek-v4-flash`, `kimi`) — fuzzy match xử lý cả hai phía mà không nhầm.
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 `D:\Dev\free claude code`:
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-7 # pick a model
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-7` |
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noobdemon/noob-cli",
3
- "version": "1.12.18",
3
+ "version": "1.13.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
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"} — unlimited.surf & some proxies
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;