jinzd-ai-cli 0.2.20 → 0.2.21

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.
@@ -16,7 +16,7 @@ import {
16
16
  SUBAGENT_MAX_ROUNDS_LIMIT,
17
17
  VERSION,
18
18
  runTestsTool
19
- } from "./chunk-4QML7RKK.js";
19
+ } from "./chunk-YULS53ZT.js";
20
20
 
21
21
  // src/config/config-manager.ts
22
22
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
@@ -8,7 +8,7 @@ import { platform } from "os";
8
8
  import chalk from "chalk";
9
9
 
10
10
  // src/core/constants.ts
11
- var VERSION = "0.2.20";
11
+ var VERSION = "0.2.21";
12
12
  var APP_NAME = "ai-cli";
13
13
  var CONFIG_DIR_NAME = ".aicli";
14
14
  var CONFIG_FILE_NAME = "config.json";
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ import {
36
36
  theme,
37
37
  truncateOutput,
38
38
  undoStack
39
- } from "./chunk-MSI2PNQB.js";
39
+ } from "./chunk-TVSPBTDQ.js";
40
40
  import {
41
41
  AGENTIC_BEHAVIOR_GUIDELINE,
42
42
  AUTHOR,
@@ -56,7 +56,7 @@ import {
56
56
  REPO_URL,
57
57
  SKILLS_DIR_NAME,
58
58
  VERSION
59
- } from "./chunk-4QML7RKK.js";
59
+ } from "./chunk-YULS53ZT.js";
60
60
 
61
61
  // src/index.ts
62
62
  import { program } from "commander";
@@ -1905,7 +1905,7 @@ ${hint}` : "")
1905
1905
  description: "Run project tests and show structured report",
1906
1906
  usage: "/test [command|filter]",
1907
1907
  async execute(args, _ctx) {
1908
- const { executeTests } = await import("./run-tests-U7MLQNUL.js");
1908
+ const { executeTests } = await import("./run-tests-WUWDJM5S.js");
1909
1909
  const argStr = args.join(" ").trim();
1910
1910
  let testArgs = {};
1911
1911
  if (argStr) {
@@ -3398,6 +3398,8 @@ var Repl = class {
3398
3398
  _interjectionBuf = "";
3399
3399
  /** User interjection: stdin data handler reference */
3400
3400
  _interjectionHandler = null;
3401
+ /** Timestamp when confirm() completed — used to discard residual \n bytes from Windows \r\n */
3402
+ _confirmEndTime = 0;
3401
3403
  /** Multi-line input buffer: accumulates lines ending with \ */
3402
3404
  _multilineBuf = [];
3403
3405
  /** 运行时动态添加的额外上下文目录(/add-dir 命令) */
@@ -4547,9 +4549,11 @@ Session '${this.resumeSessionId}' not found.
4547
4549
  this._interjectionBuf = "";
4548
4550
  const handler = (data) => {
4549
4551
  if (this.toolExecutor.confirming || askUserContext.prompting) return;
4550
- for (let i = 0; i < data.length; i++) {
4551
- const byte = data[i];
4552
- if (byte === 13 || byte === 10) {
4552
+ const str = data.toString("utf-8");
4553
+ for (const ch of str) {
4554
+ const code = ch.codePointAt(0);
4555
+ if (code === 13 || code === 10) {
4556
+ if (Date.now() - this._confirmEndTime < 100) continue;
4553
4557
  if (this._interjectionBuf.length > 0) {
4554
4558
  const line = this._interjectionBuf;
4555
4559
  this._interjectionBuf = "";
@@ -4562,13 +4566,16 @@ Session '${this.resumeSessionId}' not found.
4562
4566
  this._userInterjection = line;
4563
4567
  }
4564
4568
  }
4565
- } else if (byte === 127 || byte === 8) {
4569
+ } else if (code === 127 || code === 8) {
4566
4570
  if (this._interjectionBuf.length > 0) {
4567
- this._interjectionBuf = this._interjectionBuf.slice(0, -1);
4568
- process.stdout.write("\b \b");
4571
+ const chars = Array.from(this._interjectionBuf);
4572
+ const removed = chars.pop();
4573
+ this._interjectionBuf = chars.join("");
4574
+ const width = removed.codePointAt(0) > 255 ? 2 : 1;
4575
+ for (let w = 0; w < width; w++) process.stdout.write("\b \b");
4569
4576
  }
4570
- } else if (byte >= 32 && byte <= 126) {
4571
- const ch = String.fromCharCode(byte);
4577
+ } else if (code === 3 || code === 27) {
4578
+ } else if (code >= 32) {
4572
4579
  this._interjectionBuf += ch;
4573
4580
  process.stdout.write(ch);
4574
4581
  }
@@ -5093,6 +5100,7 @@ You have a maximum of ${MAX_TOOL_ROUNDS} tool call rounds for this task. Plan ef
5093
5100
  }
5094
5101
  }
5095
5102
  if (this._interjectionHandler) {
5103
+ this._confirmEndTime = Date.now();
5096
5104
  process.stdin.resume();
5097
5105
  }
5098
5106
  const reasoningContent = "reasoningContent" in result ? result.reasoningContent : void 0;
@@ -5511,7 +5519,7 @@ program.command("web").description("Start Web UI server with browser-based chat
5511
5519
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
5512
5520
  process.exit(1);
5513
5521
  }
5514
- const { startWebServer } = await import("./server-5RJZNTPH.js");
5522
+ const { startWebServer } = await import("./server-FVVKVJBX.js");
5515
5523
  await startWebServer({ port, host: options.host });
5516
5524
  });
5517
5525
  program.command("user [action] [username]").description("Manage Web UI users (list | create <name> | delete <name> | reset-password <name> | migrate <name>)").action(async (action, username) => {
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-4QML7RKK.js";
5
+ } from "./chunk-YULS53ZT.js";
6
6
  export {
7
7
  executeTests,
8
8
  runTestsTool
@@ -24,7 +24,7 @@ import {
24
24
  setupProxy,
25
25
  spawnAgentContext,
26
26
  truncateOutput
27
- } from "./chunk-MSI2PNQB.js";
27
+ } from "./chunk-TVSPBTDQ.js";
28
28
  import {
29
29
  AGENTIC_BEHAVIOR_GUIDELINE,
30
30
  CONTEXT_FILE_CANDIDATES,
@@ -36,7 +36,7 @@ import {
36
36
  PLAN_MODE_SYSTEM_ADDON,
37
37
  SKILLS_DIR_NAME,
38
38
  VERSION
39
- } from "./chunk-4QML7RKK.js";
39
+ } from "./chunk-YULS53ZT.js";
40
40
  import {
41
41
  AuthManager
42
42
  } from "./chunk-CPLT6CD3.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.2.20",
3
+ "version": "0.2.21",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",