@noobdemon/noob-cli 1.12.11 → 1.12.13
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 +10 -0
- package/package.json +1 -1
- package/src/repl.js +14 -12
- package/src/tui.js +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
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.12.13] - 2026-06-14
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **DUMB-mode boot crash `tui.setTodos is not a function` (nghiêm trọng — non-TTY user chết ngay launch)** (`src/tui.js`): object TUI chế độ DUMB (non-TTY / `NOOB_TUI=0`: pipe, CI, terminal lạ) thiếu method `setTodos` — chỉ rich TTY object (tui.js:814) có. `startFresh` (repl.js:394) gọi `tui.setTodos([])` mỗi phiên mới → non-TTY nổ ngay. Bug có sẵn từ trước, lộ ra khi verify real-REPL bằng `NOOB_TUI=0`. Fix: thêm `setTodos() {}` no-op vào DUMB object, khớp full method set với rich object (print/status/setBusy/setMeta/setTodos/setPrompt/read/close/start). Verify: boot sạch cả 2 mode (TTY + NOOB_TUI=0), banner in + exit 0.
|
|
9
|
+
|
|
10
|
+
## [1.12.12] - 2026-06-14
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **TDZ crash khởi động do `bgWorkflow` registry (nghiêm trọng — CLI chết ngay launch)** (`src/repl.js`): `const bgRegistry` construct nằm ở cuối `startRepl` (sau main loop), nhưng `bgRegistry.drainCompletions()` ở đầu main loop + `bgRegistry.sweepOnExit()` ở exit path chạy TRƯỚC → `ReferenceError: Cannot access 'bgRegistry' before initialization` (const có TDZ, không hoist như function). CLI nổ ngay vòng main loop đầu tiên, trước khi user gõ được gì — 1.12.11 hỏng hoàn toàn với mọi user bật agent mode. Fix: move construct lên TRƯỚC cả `opts.prompt` handle() lẫn main loop (đặt ngay sau khi `execTool`/`state`/`createAgentDispatcher` sẵn ở scope; `execTool` là function decl hoisted nên ref an toàn). Thêm real-REPL smoke (chạy `bin/noob.js` với EOF stdin, assert banner in + exit 0) — smoke `workflow-bg.js` lẻ qua mock KHÔNG load `startRepl` nên không bắt được init-order bug này.
|
|
14
|
+
|
|
5
15
|
## [1.12.11] - 2026-06-13
|
|
6
16
|
|
|
7
17
|
### Added
|
package/package.json
CHANGED
package/src/repl.js
CHANGED
|
@@ -1333,6 +1333,20 @@ NGUYÊN TẮC:
|
|
|
1333
1333
|
}
|
|
1334
1334
|
}
|
|
1335
1335
|
|
|
1336
|
+
// Background workflow registry — session-scope, sống ngoài turn. Tool `workflow`
|
|
1337
|
+
// (qua turn dispatcher) gọi startBgWorkflow → headless runAgent nền. Drain ở main
|
|
1338
|
+
// loop giữa lượt → notify + auto-inject. bgRegistry KHÔNG wire vào bg dispatcher
|
|
1339
|
+
// (chống lồng workflow nền). PHẢI construct TRƯỚC main loop — drainCompletions()
|
|
1340
|
+
// ở loop + sweepOnExit() ở exit-path dùng nó (const có TDZ, không hoist). `execTool`
|
|
1341
|
+
// là function decl (hoisted) nên ref an toàn dù định nghĩa nằm dưới.
|
|
1342
|
+
const bgRegistry = createBgRegistry({
|
|
1343
|
+
createAgentDispatcher,
|
|
1344
|
+
state,
|
|
1345
|
+
execTool,
|
|
1346
|
+
spawnAgentToolsDoc,
|
|
1347
|
+
cwd: process.cwd(),
|
|
1348
|
+
});
|
|
1349
|
+
|
|
1336
1350
|
// Main loop — runs until /exit, double Ctrl+C, or EOF. Never exits after a task.
|
|
1337
1351
|
while (true) {
|
|
1338
1352
|
// Drain bg workflow đã xong → notify + auto-inject kết quả vào pending (gửi
|
|
@@ -1654,18 +1668,6 @@ NGUYÊN TẮC:
|
|
|
1654
1668
|
return await execToolCore(name, input, { retried: false });
|
|
1655
1669
|
}
|
|
1656
1670
|
|
|
1657
|
-
// Background workflow registry — session-scope, sống ngoài turn. Tool `workflow`
|
|
1658
|
-
// (qua turn dispatcher) gọi startBgWorkflow → headless runAgent nền. Drain ở main
|
|
1659
|
-
// loop giữa lượt → notify + auto-inject. bgRegistry KHÔNG wire vào bg dispatcher
|
|
1660
|
-
// (chống lồng workflow nền). state + execTool + spawnAgentToolsDoc đã sẵn ở scope.
|
|
1661
|
-
const bgRegistry = createBgRegistry({
|
|
1662
|
-
createAgentDispatcher,
|
|
1663
|
-
state,
|
|
1664
|
-
execTool,
|
|
1665
|
-
spawnAgentToolsDoc,
|
|
1666
|
-
cwd: process.cwd(),
|
|
1667
|
-
});
|
|
1668
|
-
|
|
1669
1671
|
// Phần thân tool (tách riêng để retry khi user vừa approve thêm extra root).
|
|
1670
1672
|
// Flow OutOfScopeError: tool ném → repl hỏi user "add folder X? [y/n/a]" → nếu
|
|
1671
1673
|
// y/a: addRoot + persist (đã làm trong addRoot) + state.extraRoots sync + chạy
|
package/src/tui.js
CHANGED