jinzd-ai-cli 0.4.108 → 0.4.109

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/README.md CHANGED
@@ -422,6 +422,12 @@ npm run test:watch # Watch mode
422
422
 
423
423
  ## Documentation
424
424
 
425
+ - [`docs/USAGE.md`](docs/USAGE.md) — Complete reference manual (commands, tools, config)
426
+ - [`docs/TUTORIAL.md`](docs/TUTORIAL.md) — Hands-on tutorial, zero to fluent in an hour
427
+ - [`docs/ADVANCED.md`](docs/ADVANCED.md) — Architecture and internals (for developers)
428
+ - [`docs/RECIPES.md`](docs/RECIPES.md) — Practical recipes by scenario
429
+ - [`docs/SECURITY.md`](docs/SECURITY.md) — **Security model, deployment checklist, audit history.** Read before exposing `aicli web` to a network.
430
+ - [`CHANGELOG.md`](CHANGELOG.md) — Per-version change log
425
431
  - [Chinese README](README.zh-CN.md) — 中文说明文档
426
432
 
427
433
  ## License
package/README.zh-CN.md CHANGED
@@ -184,6 +184,8 @@ AI 在对话中可自主调用 28 个工具:
184
184
  - [`docs/USAGE.zh-CN.md`](docs/USAGE.zh-CN.md) — 完整参考手册(所有命令、工具、配置)
185
185
  - [`docs/ADVANCED.zh-CN.md`](docs/ADVANCED.zh-CN.md) — 架构与内部原理(开发者向)
186
186
  - [`docs/RECIPES.zh-CN.md`](docs/RECIPES.zh-CN.md) — 实战配方(按场景查)
187
+ - [`docs/SECURITY.zh-CN.md`](docs/SECURITY.zh-CN.md) — **安全模型、部署清单、审计历史。** 把 `aicli web` 暴露到网络前请先读。
188
+ - [`CHANGELOG.md`](CHANGELOG.md) — 每个版本的更新记录
187
189
 
188
190
  ## 主要 REPL 命令
189
191
 
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigManager
4
- } from "./chunk-A26EOV2J.js";
4
+ } from "./chunk-JLHY6AOZ.js";
5
5
  import "./chunk-2ZD3YTVM.js";
6
- import "./chunk-DNKI3JIL.js";
6
+ import "./chunk-LZR3DYW3.js";
7
7
  import "./chunk-PDX44BCA.js";
8
8
 
9
9
  // src/cli/batch.ts
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  schemaToJsonSchema,
4
4
  truncateForPersist
5
- } from "./chunk-A3HZY7DA.js";
5
+ } from "./chunk-N62X6OKJ.js";
6
6
  import {
7
7
  AuthError,
8
8
  ProviderError,
@@ -18,7 +18,7 @@ import {
18
18
  MCP_PROTOCOL_VERSION,
19
19
  MCP_TOOL_PREFIX,
20
20
  VERSION
21
- } from "./chunk-DNKI3JIL.js";
21
+ } from "./chunk-LZR3DYW3.js";
22
22
  import {
23
23
  redactJson
24
24
  } from "./chunk-7ZJN4KLV.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-DNKI3JIL.js";
4
+ } from "./chunk-LZR3DYW3.js";
5
5
 
6
6
  // src/tools/builtin/run-tests.ts
7
7
  import { execSync, spawnSync } from "child_process";
@@ -8,7 +8,7 @@ import {
8
8
  CONFIG_FILE_NAME,
9
9
  HISTORY_DIR_NAME,
10
10
  PLUGINS_DIR_NAME
11
- } from "./chunk-DNKI3JIL.js";
11
+ } from "./chunk-LZR3DYW3.js";
12
12
 
13
13
  // src/config/config-manager.ts
14
14
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.108";
4
+ var VERSION = "0.4.109";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-3BICTI5M.js";
6
6
  import {
7
7
  runTestsTool
8
- } from "./chunk-NN2B3UBA.js";
8
+ } from "./chunk-CUQ4HXHA.js";
9
9
  import {
10
10
  EnvLoader,
11
11
  NetworkError,
@@ -18,7 +18,7 @@ import {
18
18
  SUBAGENT_ALLOWED_TOOLS,
19
19
  SUBAGENT_DEFAULT_MAX_ROUNDS,
20
20
  SUBAGENT_MAX_ROUNDS_LIMIT
21
- } from "./chunk-DNKI3JIL.js";
21
+ } from "./chunk-LZR3DYW3.js";
22
22
  import {
23
23
  fileCheckpoints
24
24
  } from "./chunk-4BKXL7SM.js";
@@ -6,7 +6,7 @@ import { platform } from "os";
6
6
  import chalk from "chalk";
7
7
 
8
8
  // src/core/constants.ts
9
- var VERSION = "0.4.108";
9
+ var VERSION = "0.4.109";
10
10
  var APP_NAME = "ai-cli";
11
11
  var CONFIG_DIR_NAME = ".aicli";
12
12
  var CONFIG_FILE_NAME = "config.json";
@@ -36,7 +36,7 @@ import {
36
36
  TEST_TIMEOUT,
37
37
  VERSION,
38
38
  buildUserIdentityPrompt
39
- } from "./chunk-DNKI3JIL.js";
39
+ } from "./chunk-LZR3DYW3.js";
40
40
  import "./chunk-PDX44BCA.js";
41
41
  export {
42
42
  AGENTIC_BEHAVIOR_GUIDELINE,
@@ -36,7 +36,7 @@ import {
36
36
  VERSION,
37
37
  buildUserIdentityPrompt,
38
38
  runTestsTool
39
- } from "./chunk-XWJTZWS7.js";
39
+ } from "./chunk-OKRTYLB6.js";
40
40
  import {
41
41
  hasSemanticIndex,
42
42
  semanticSearch
@@ -11789,7 +11789,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
11789
11789
  case "test": {
11790
11790
  this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
11791
11791
  try {
11792
- const { executeTests } = await import("./run-tests-VBJ5H3XR.js");
11792
+ const { executeTests } = await import("./run-tests-TTP4QJVN.js");
11793
11793
  const argStr = args.join(" ").trim();
11794
11794
  let testArgs = {};
11795
11795
  if (argStr) {
@@ -386,7 +386,7 @@ ${content}`);
386
386
  }
387
387
  }
388
388
  async function runTaskMode(config, providers, configManager, topic) {
389
- const { TaskOrchestrator } = await import("./task-orchestrator-6WIYZPDB.js");
389
+ const { TaskOrchestrator } = await import("./task-orchestrator-XSNTJYNR.js");
390
390
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
391
391
  let interrupted = false;
392
392
  const onSigint = () => {
package/dist/index.js CHANGED
@@ -25,10 +25,10 @@ import {
25
25
  saveDevState,
26
26
  sessionHasMeaningfulContent,
27
27
  setupProxy
28
- } from "./chunk-IKX4D6C7.js";
28
+ } from "./chunk-3UJIJBKB.js";
29
29
  import {
30
30
  ConfigManager
31
- } from "./chunk-A26EOV2J.js";
31
+ } from "./chunk-JLHY6AOZ.js";
32
32
  import {
33
33
  ToolExecutor,
34
34
  ToolRegistry,
@@ -47,10 +47,10 @@ import {
47
47
  spawnAgentContext,
48
48
  theme,
49
49
  undoStack
50
- } from "./chunk-A3HZY7DA.js";
50
+ } from "./chunk-N62X6OKJ.js";
51
51
  import "./chunk-3BICTI5M.js";
52
52
  import "./chunk-2DXY7UGF.js";
53
- import "./chunk-NN2B3UBA.js";
53
+ import "./chunk-CUQ4HXHA.js";
54
54
  import "./chunk-2ZD3YTVM.js";
55
55
  import {
56
56
  AGENTIC_BEHAVIOR_GUIDELINE,
@@ -73,7 +73,7 @@ import {
73
73
  SKILLS_DIR_NAME,
74
74
  VERSION,
75
75
  buildUserIdentityPrompt
76
- } from "./chunk-DNKI3JIL.js";
76
+ } from "./chunk-LZR3DYW3.js";
77
77
  import {
78
78
  formatGitContextForPrompt,
79
79
  getGitContext,
@@ -1594,7 +1594,7 @@ ${text}
1594
1594
  const { join: join6 } = await import("path");
1595
1595
  const { existsSync: existsSync6 } = await import("fs");
1596
1596
  const { getGitRoot: getGitRoot2 } = await import("./git-context-7KIP4X2V.js");
1597
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-QZWMYEMB.js");
1597
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-K52FVIX5.js");
1598
1598
  const { approveProject, hashMcpFile } = await import("./project-trust-IFM7FXEV.js");
1599
1599
  const cwd = process.cwd();
1600
1600
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -2644,7 +2644,7 @@ ${hint}` : "")
2644
2644
  usage: "/test [command|filter]",
2645
2645
  async execute(args, ctx) {
2646
2646
  try {
2647
- const { executeTests } = await import("./run-tests-LWSTPCZY.js");
2647
+ const { executeTests } = await import("./run-tests-ZBDJYOB2.js");
2648
2648
  const argStr = args.join(" ").trim();
2649
2649
  let testArgs = {};
2650
2650
  if (argStr) {
@@ -6800,7 +6800,7 @@ program.command("web").description("Start Web UI server with browser-based chat
6800
6800
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
6801
6801
  process.exit(1);
6802
6802
  }
6803
- const { startWebServer } = await import("./server-6F2JF2JK.js");
6803
+ const { startWebServer } = await import("./server-VDMQC43J.js");
6804
6804
  await startWebServer({ port, host: options.host });
6805
6805
  });
6806
6806
  program.command("user [action] [username]").description("Manage Web UI users (list | create <name> | delete <name> | reset-password <name> | migrate <name>)").action(async (action, username) => {
@@ -6923,7 +6923,7 @@ program.command("sessions").description("List recent conversation sessions").act
6923
6923
  });
6924
6924
  program.command("batch <action> [arg] [arg2]").description("Anthropic Message Batches: submit | list | status <id> | results <id> [out] | cancel <id>").option("--dry-run", "Parse and validate input without submitting (submit only)").action(async (action, arg, arg2, options) => {
6925
6925
  try {
6926
- const batch = await import("./batch-A6F3UA3N.js");
6926
+ const batch = await import("./batch-BFOFTLFS.js");
6927
6927
  switch (action) {
6928
6928
  case "submit":
6929
6929
  if (!arg) {
@@ -6966,7 +6966,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
6966
6966
  }
6967
6967
  });
6968
6968
  program.command("mcp-serve").description("Start an MCP server over STDIO, exposing aicli's built-in tools to Claude Desktop / Cursor / other MCP clients").option("--allow-destructive", "Allow bash / run_interactive / task_create (always destructive in MCP mode)").option("--allow-outside-cwd", "Allow tool path arguments to escape the sandbox root \u2014 disabled by default").option("--tools <list>", "Comma-separated whitelist of tools to expose (default: all eligible tools)").option("--cwd <path>", "Working directory AND sandbox root (default: current directory)").action(async (options) => {
6969
- const { startMcpServer } = await import("./server-DSG3EYRA.js");
6969
+ const { startMcpServer } = await import("./server-LEPDI3OL.js");
6970
6970
  await startMcpServer({
6971
6971
  allowDestructive: !!options.allowDestructive,
6972
6972
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -7093,7 +7093,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
7093
7093
  }),
7094
7094
  config.get("customProviders")
7095
7095
  );
7096
- const { startHub } = await import("./hub-3HEMIJTM.js");
7096
+ const { startHub } = await import("./hub-4XJ5ZTM4.js");
7097
7097
  await startHub(
7098
7098
  {
7099
7099
  topic: topic ?? "",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeTests,
3
3
  runTestsTool
4
- } from "./chunk-XWJTZWS7.js";
4
+ } from "./chunk-OKRTYLB6.js";
5
5
  import "./chunk-3RG5ZIWI.js";
6
6
  export {
7
7
  executeTests,
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-NN2B3UBA.js";
6
- import "./chunk-DNKI3JIL.js";
5
+ } from "./chunk-CUQ4HXHA.js";
6
+ import "./chunk-LZR3DYW3.js";
7
7
  import "./chunk-PDX44BCA.js";
8
8
  export {
9
9
  executeTests,
@@ -3,14 +3,14 @@ import {
3
3
  ToolRegistry,
4
4
  getDangerLevel,
5
5
  schemaToJsonSchema
6
- } from "./chunk-A3HZY7DA.js";
6
+ } from "./chunk-N62X6OKJ.js";
7
7
  import "./chunk-3BICTI5M.js";
8
8
  import "./chunk-2DXY7UGF.js";
9
- import "./chunk-NN2B3UBA.js";
9
+ import "./chunk-CUQ4HXHA.js";
10
10
  import "./chunk-2ZD3YTVM.js";
11
11
  import {
12
12
  VERSION
13
- } from "./chunk-DNKI3JIL.js";
13
+ } from "./chunk-LZR3DYW3.js";
14
14
  import "./chunk-4BKXL7SM.js";
15
15
  import "./chunk-7ZJN4KLV.js";
16
16
  import "./chunk-KHYD3WXE.js";
@@ -18,10 +18,10 @@ import {
18
18
  loadDevState,
19
19
  persistToolRound,
20
20
  setupProxy
21
- } from "./chunk-IKX4D6C7.js";
21
+ } from "./chunk-3UJIJBKB.js";
22
22
  import {
23
23
  ConfigManager
24
- } from "./chunk-A26EOV2J.js";
24
+ } from "./chunk-JLHY6AOZ.js";
25
25
  import {
26
26
  ToolExecutor,
27
27
  ToolRegistry,
@@ -39,10 +39,10 @@ import {
39
39
  spawnAgentContext,
40
40
  truncateOutput,
41
41
  undoStack
42
- } from "./chunk-A3HZY7DA.js";
42
+ } from "./chunk-N62X6OKJ.js";
43
43
  import "./chunk-3BICTI5M.js";
44
44
  import "./chunk-2DXY7UGF.js";
45
- import "./chunk-NN2B3UBA.js";
45
+ import "./chunk-CUQ4HXHA.js";
46
46
  import "./chunk-2ZD3YTVM.js";
47
47
  import {
48
48
  AGENTIC_BEHAVIOR_GUIDELINE,
@@ -62,7 +62,7 @@ import {
62
62
  SKILLS_DIR_NAME,
63
63
  VERSION,
64
64
  buildUserIdentityPrompt
65
- } from "./chunk-DNKI3JIL.js";
65
+ } from "./chunk-LZR3DYW3.js";
66
66
  import {
67
67
  formatGitContextForPrompt,
68
68
  getGitContext,
@@ -2383,7 +2383,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
2383
2383
  case "test": {
2384
2384
  this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
2385
2385
  try {
2386
- const { executeTests } = await import("./run-tests-LWSTPCZY.js");
2386
+ const { executeTests } = await import("./run-tests-ZBDJYOB2.js");
2387
2387
  const argStr = args.join(" ").trim();
2388
2388
  let testArgs = {};
2389
2389
  if (argStr) {
@@ -4,14 +4,14 @@ import {
4
4
  getDangerLevel,
5
5
  googleSearchContext,
6
6
  truncateOutput
7
- } from "./chunk-A3HZY7DA.js";
7
+ } from "./chunk-N62X6OKJ.js";
8
8
  import "./chunk-3BICTI5M.js";
9
9
  import "./chunk-2DXY7UGF.js";
10
- import "./chunk-NN2B3UBA.js";
10
+ import "./chunk-CUQ4HXHA.js";
11
11
  import "./chunk-2ZD3YTVM.js";
12
12
  import {
13
13
  SUBAGENT_ALLOWED_TOOLS
14
- } from "./chunk-DNKI3JIL.js";
14
+ } from "./chunk-LZR3DYW3.js";
15
15
  import "./chunk-4BKXL7SM.js";
16
16
  import "./chunk-7ZJN4KLV.js";
17
17
  import "./chunk-KHYD3WXE.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.4.108",
3
+ "version": "0.4.109",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",