@noobdemon/noob-cli 1.12.11 → 1.12.12

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,11 @@
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.12] - 2026-06-14
6
+
7
+ ### Fixed
8
+ - **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.
9
+
5
10
  ## [1.12.11] - 2026-06-13
6
11
 
7
12
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noobdemon/noob-cli",
3
- "version": "1.12.11",
3
+ "version": "1.12.12",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
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