@gird/ccli 2.4.0 → 2.5.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/README.md CHANGED
@@ -23,6 +23,7 @@ ccli --help # 打印帮助
23
23
  ccli "用一句话介绍 CCLI" # 非交互式单次调用
24
24
  cat file.ts | ccli "给这段代码加注释" # 从 stdin 读取内容作为上下文
25
25
  ccli --yes "在当前目录创建 test.txt" # 自动确认破坏性工具调用
26
+ ccli --role coder "review 这段代码" # 使用 coding 角色单次调用
26
27
  ```
27
28
 
28
29
  进入对话后:
@@ -33,6 +34,8 @@ ccli --yes "在当前目录创建 test.txt" # 自动确认破坏性工具调
33
34
  - `/save [name]` 保存当前会话,`/load <name>` 加载会话(按 `Tab` 补全/列出候选),`/sessions` 列出已保存会话。
34
35
  - `/resume` 手动恢复上次退出时自动保存的会话。
35
36
  - `/stats` 查看当前会话累计 token 消耗与上下文占比(估算值)。
37
+ - `/mcp list` 查看已连接的 MCP server,`/mcp add <name> <command> [args...]` 动态添加,`/mcp remove <name>` 移除,`/mcp reload` 重连所有 server。
38
+ - `/role [name]` 切换或查看系统提示词角色(内置 `default`、`coder`,配置文件中可自定义)。
36
39
  - 按 `↑` / `↓` recalled 之前输入过的 prompt / 命令,历史自动保存到 `~/.ccli/history`。
37
40
  - 粘贴多行文本时会自动合并成一条消息发送,不会被截断。
38
41
  - 支持 MCP (Model Context Protocol) 扩展:在 `~/.ccli/config.json` 配置 `mcpServers` 即可接入外部 server 的工具。
@@ -41,7 +44,7 @@ ccli --yes "在当前目录创建 test.txt" # 自动确认破坏性工具调
41
44
 
42
45
  ## 配置
43
46
 
44
- 密钥来源优先级:**环境变量 > 项目 `.env` > 全局 `~/.ccli/config.json`**。
47
+ 密钥来源优先级:**环境变量 > 项目 `.env` > 项目 `.ccli/config.json` > 全局 `~/.ccli/config.json`**。
45
48
 
46
49
  **OpenAI 兼容(通义千问 / DeepSeek / GLM…)**
47
50
 
@@ -80,6 +83,46 @@ export ANTHROPIC_MODEL=claude-sonnet-4-5
80
83
 
81
84
  配置后,MCP server 提供的工具会以 `mcp__<server>__<tool>` 的形式供模型调用。
82
85
 
86
+ **角色模板**
87
+
88
+ 在配置里自定义系统提示词角色,可覆盖内置角色:
89
+
90
+ ```json
91
+ {
92
+ "roles": {
93
+ "reviewer": {
94
+ "description": "代码审查者",
95
+ "prompt": "你是 CCLI,一个代码审查者。关注可读性、边界条件、错误处理和安全性,给出具体修改建议。"
96
+ }
97
+ }
98
+ }
99
+ ```
100
+
101
+ 交互时用 `/role` 列出、`/role reviewer` 切换;非交互时用 `ccli --role reviewer "..."`。
102
+
103
+ **项目级配置**
104
+
105
+ 你也可以在当前项目下创建 `.ccli/config.json`,它会覆盖全局配置中的同名字段:
106
+
107
+ ```text
108
+ my-project/
109
+ ├── .ccli/
110
+ │ └── config.json
111
+ └── ...
112
+ ```
113
+
114
+ ```json
115
+ {
116
+ "model": "qwen-max",
117
+ "mcpServers": {
118
+ "project-fetch": {
119
+ "command": "uvx",
120
+ "args": ["mcp-server-fetch"]
121
+ }
122
+ }
123
+ }
124
+ ```
125
+
83
126
  ## 许可
84
127
 
85
128
  [MIT](./LICENSE)
package/dist/agent/mcp.js CHANGED
@@ -116,6 +116,28 @@ export class McpClientManager {
116
116
  }
117
117
  this.servers = [];
118
118
  }
119
+ /** 断开并移除指定 server。 */
120
+ async removeServer(name) {
121
+ const index = this.servers.findIndex((s) => s.name === name);
122
+ if (index === -1)
123
+ return false;
124
+ const [server] = this.servers.splice(index, 1);
125
+ try {
126
+ await server.client.close();
127
+ }
128
+ catch {
129
+ // 忽略关闭失败
130
+ }
131
+ return true;
132
+ }
133
+ /** 返回已连接 server 的名称列表。 */
134
+ getServerNames() {
135
+ return this.servers.map((s) => s.name);
136
+ }
137
+ /** 返回当前管理的 server 配置。 */
138
+ getServersConfig() {
139
+ return this.serversConfig;
140
+ }
119
141
  }
120
142
  /** 把 MCP tool 返回的 content 数组转成字符串。 */
121
143
  function mcpResultToString(content) {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/agent/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/agent/mcp.ts"],"names":[],"mappings":"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"}
package/dist/cli/args.js CHANGED
@@ -12,7 +12,8 @@ export function parseArgs(argv) {
12
12
  unknown: [],
13
13
  positionals: [],
14
14
  };
15
- for (const arg of argv) {
15
+ for (let i = 0; i < argv.length; i++) {
16
+ const arg = argv[i];
16
17
  switch (arg) {
17
18
  case '-v':
18
19
  case '--version':
@@ -26,6 +27,18 @@ export function parseArgs(argv) {
26
27
  case '--yes':
27
28
  result.yes = true;
28
29
  break;
30
+ case '-r':
31
+ case '--role': {
32
+ const next = argv[i + 1];
33
+ if (next && !next.startsWith('-')) {
34
+ result.role = next;
35
+ i++;
36
+ }
37
+ else {
38
+ result.unknown.push(arg);
39
+ }
40
+ break;
41
+ }
29
42
  default:
30
43
  if (arg.startsWith('-')) {
31
44
  result.unknown.push(arg);
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,MAAM,UAAU,SAAS,CAAC,IAAc;IACpC,MAAM,MAAM,GAAe;QACvB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,KAAK;QACV,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE;KAClB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,QAAQ,GAAG,EAAE,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,WAAW;gBACZ,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,MAAM;YACV,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ;gBACT,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBACnB,MAAM;YACV,KAAK,IAAI,CAAC;YACV,KAAK,OAAO;gBACR,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;gBAClB,MAAM;YACV;gBACI,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,CAAC;QACT,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,MAAM,UAAU,SAAS,CAAC,IAAc;IACpC,MAAM,MAAM,GAAe;QACvB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,KAAK;QACV,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE;KAClB,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,QAAQ,GAAG,EAAE,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,WAAW;gBACZ,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,MAAM;YACV,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ;gBACT,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBACnB,MAAM;YACV,KAAK,IAAI,CAAC;YACV,KAAK,OAAO;gBACR,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;gBAClB,MAAM;YACV,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;oBACnB,CAAC,EAAE,CAAC;gBACR,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBACD,MAAM;YACV,CAAC;YACD;gBACI,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,CAAC;QACT,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
package/dist/cli/repl.js CHANGED
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { createInterface } from 'node:readline';
9
9
  import { NAME, VERSION } from '../version.js';
10
- import { loadConfig, maskKey } from '../config/config.js';
10
+ import { loadConfig, maskKey, DEFAULT_SYSTEM_PROMPT, getRolePrompt, } from '../config/config.js';
11
11
  import { createAIClient } from '../agent/ai.js';
12
12
  import { handleSlash, slashCompleter } from './slash.js';
13
13
  import { saveLastSession } from './session.js';
@@ -18,10 +18,6 @@ import { registerMcpTools, resetTools } from '../tools/index.js';
18
18
  import { emptyStats, formatStats, } from './stats.js';
19
19
  import { runAgentTurn } from './run.js';
20
20
  const PROMPT = '› ';
21
- const SYSTEM_PROMPT = '你是 CCLI,一个运行在终端里的 AI 助手。回答简洁、准确,使用中文。' +
22
- '你可以调用工具读文件、列目录、搜索(read_file / list_dir / grep),' +
23
- '也可以用 write_file 创建或修改文件、用 edit_file 局部精确替换、用 bash 执行 shell 命令(这些操作会请用户确认)。' +
24
- '需要查看或修改文件、运行测试/构建/命令时请调用工具,不要凭空猜测。';
25
21
  /** 单个用户回合内,最多允许模型连续调用工具的轮数,防止失控循环。 */
26
22
  const MAX_TOOL_ROUNDS = 10;
27
23
  export async function startRepl() {
@@ -50,7 +46,10 @@ export async function startRepl() {
50
46
  }
51
47
  const ai = createAIClient(config);
52
48
  // 对话历史:以 system 提示词开场,之后累积 user / assistant 轮次
53
- const history = [{ role: 'system', content: SYSTEM_PROMPT }];
49
+ const history = [
50
+ { role: 'system', content: DEFAULT_SYSTEM_PROMPT },
51
+ ];
52
+ let currentRole = 'default';
54
53
  let stats = emptyStats();
55
54
  const rl = createInterface({
56
55
  input: process.stdin,
@@ -88,6 +87,16 @@ export async function startRepl() {
88
87
  history,
89
88
  ai,
90
89
  stats,
90
+ cwd: process.cwd(),
91
+ mcpManager: mcp,
92
+ roles: config.roles,
93
+ currentRole,
94
+ setRole: (name) => {
95
+ currentRole = name;
96
+ history[0].content =
97
+ getRolePrompt(name, config.roles) ??
98
+ DEFAULT_SYSTEM_PROMPT;
99
+ },
91
100
  requestExit: () => {
92
101
  exiting = true;
93
102
  rl.close();
@@ -1 +1 @@
1
- {"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/cli/repl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/cli/repl.ts"],"names":[],"mappings":"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"}
package/dist/cli/slash.js CHANGED
@@ -1,5 +1,8 @@
1
+ import { McpClientManager } from '../agent/mcp.js';
1
2
  import { saveSession, loadSession, listSessions, searchSessions, loadLastSession, hasLastSession, } from './session.js';
2
3
  import { formatStats, resetStats } from './stats.js';
4
+ import { saveMcpServers, getRolePrompt, listRoles, } from '../config/config.js';
5
+ import { registerMcpTools, unregisterAllMcpTools, unregisterMcpServerTools, } from '../tools/index.js';
3
6
  /** 命令清单:名称 → 说明,供 /help 展示,单一数据源。 */
4
7
  const COMMANDS = [
5
8
  ['/help', '列出所有命令'],
@@ -11,6 +14,8 @@ const COMMANDS = [
11
14
  ['/sessions', '列出已保存的会话'],
12
15
  ['/stats', '查看本次会话 token 统计'],
13
16
  ['/resume', '恢复上次自动保存的会话'],
17
+ ['/mcp <subcommand>', '管理 MCP server(list/add/remove/reload)'],
18
+ ['/role [name]', '切换或查看系统提示词角色'],
14
19
  ['/exit, /quit', '退出会话'],
15
20
  ];
16
21
  /** /model 搜索时最多列出多少个候选,避免刷屏。 */
@@ -80,6 +85,12 @@ export async function handleSlash(input, ctx) {
80
85
  case 'resume':
81
86
  handleResume(ctx);
82
87
  return true;
88
+ case 'mcp':
89
+ await handleMcp(arg, ctx);
90
+ return true;
91
+ case 'role':
92
+ handleRole(arg, ctx);
93
+ return true;
83
94
  case 'exit':
84
95
  case 'quit':
85
96
  ctx.requestExit();
@@ -264,6 +275,138 @@ function handleResume(ctx) {
264
275
  console.log(`恢复失败:${loaded.message}`);
265
276
  }
266
277
  }
278
+ /** /role:列出或切换系统提示词角色。 */
279
+ function handleRole(arg, ctx) {
280
+ const roles = listRoles(ctx.roles);
281
+ if (!arg) {
282
+ console.log('可用角色:');
283
+ for (const r of roles) {
284
+ const marker = r.name === ctx.currentRole ? '* ' : ' ';
285
+ console.log(` ${marker}${r.name.padEnd(12)} ${r.description}`);
286
+ }
287
+ console.log(`当前角色:${ctx.currentRole}`);
288
+ return;
289
+ }
290
+ const prompt = getRolePrompt(arg, ctx.roles);
291
+ if (prompt === undefined) {
292
+ console.log(`未知角色:${arg}`);
293
+ console.log(`可用:${roles.map((r) => r.name).join(', ')}`);
294
+ return;
295
+ }
296
+ ctx.setRole(arg);
297
+ console.log(`已切换角色:${arg}`);
298
+ }
299
+ /** /mcp:管理 MCP server。 */
300
+ async function handleMcp(arg, ctx) {
301
+ if (!ctx.mcpManager) {
302
+ console.log('当前没有可用的 MCP manager。');
303
+ return;
304
+ }
305
+ const parts = arg.trim().split(/\s+/);
306
+ const sub = parts[0]?.toLowerCase();
307
+ switch (sub) {
308
+ case 'list':
309
+ await mcpList(ctx);
310
+ return;
311
+ case 'add':
312
+ await mcpAdd(parts.slice(1), ctx);
313
+ return;
314
+ case 'remove':
315
+ await mcpRemove(parts.slice(1), ctx);
316
+ return;
317
+ case 'reload':
318
+ await mcpReload(ctx);
319
+ return;
320
+ default:
321
+ console.log('用法:/mcp list | add <name> <command> [args...] | remove <name> | reload');
322
+ }
323
+ }
324
+ async function mcpList(ctx) {
325
+ const servers = ctx.mcpManager.getServerNames();
326
+ if (servers.length === 0) {
327
+ console.log('没有已连接的 MCP server。');
328
+ return;
329
+ }
330
+ console.log('已连接的 MCP server:');
331
+ const tools = await ctx.mcpManager.listTools();
332
+ for (const name of servers) {
333
+ const serverTools = tools
334
+ .filter((t) => t.serverName === name)
335
+ .map((t) => t.originalName);
336
+ console.log(` ${name}`);
337
+ for (const t of serverTools) {
338
+ console.log(` - ${t}`);
339
+ }
340
+ }
341
+ }
342
+ async function mcpAdd(parts, ctx) {
343
+ if (parts.length < 2) {
344
+ console.log('用法:/mcp add <name> <command> [args...]');
345
+ return;
346
+ }
347
+ const [name, command, ...args] = parts;
348
+ const cfg = { command, args };
349
+ const errors = await ctx.mcpManager.connectAll();
350
+ // 先临时连一下测试是否可用
351
+ const testManager = new McpClientManager({ [name]: cfg }, { name: 'ccli', version: '0.0.0' });
352
+ const testErrors = await testManager.connectAll();
353
+ if (testErrors.length > 0) {
354
+ console.log(`连接失败:${testErrors[0]}`);
355
+ await testManager.closeAll();
356
+ return;
357
+ }
358
+ // 把新 server 加到现有 manager
359
+ const currentConfig = ctx.mcpManager.getServersConfig();
360
+ const newConfig = { ...currentConfig, [name]: cfg };
361
+ // 持久化
362
+ const saved = saveMcpServers(ctx.cwd, newConfig);
363
+ if (!saved.ok) {
364
+ console.log(saved.message);
365
+ await testManager.closeAll();
366
+ return;
367
+ }
368
+ // 更新 manager 配置并注册 tools
369
+ Object.assign(currentConfig, { [name]: cfg });
370
+ unregisterMcpServerTools(name);
371
+ await registerMcpTools(testManager);
372
+ console.log(`已添加 MCP server:${name}(配置已保存到 ${saved.path})`);
373
+ }
374
+ async function mcpRemove(parts, ctx) {
375
+ const name = parts[0];
376
+ if (!name) {
377
+ console.log('用法:/mcp remove <name>');
378
+ return;
379
+ }
380
+ const removed = await ctx.mcpManager.removeServer(name);
381
+ if (!removed) {
382
+ console.log(`未找到 MCP server:${name}`);
383
+ return;
384
+ }
385
+ unregisterMcpServerTools(name);
386
+ const currentConfig = ctx.mcpManager.getServersConfig();
387
+ const newConfig = { ...currentConfig };
388
+ delete newConfig[name];
389
+ Object.assign(currentConfig, newConfig);
390
+ const saved = saveMcpServers(ctx.cwd, newConfig);
391
+ if (saved.ok) {
392
+ console.log(`已移除 MCP server:${name}(配置已保存到 ${saved.path})`);
393
+ }
394
+ else {
395
+ console.log(`已移除 MCP server:${name},但保存配置失败:${saved.message}`);
396
+ }
397
+ }
398
+ async function mcpReload(ctx) {
399
+ await ctx.mcpManager.closeAll();
400
+ unregisterAllMcpTools();
401
+ const errors = await ctx.mcpManager.connectAll();
402
+ if (errors.length > 0) {
403
+ console.log('部分 MCP server 连接失败:');
404
+ for (const e of errors)
405
+ console.log(` ${e}`);
406
+ }
407
+ await registerMcpTools(ctx.mcpManager);
408
+ console.log('MCP server 已重新加载。');
409
+ }
267
410
  function printHelp() {
268
411
  console.log('可用命令:');
269
412
  for (const [cmd, desc] of COMMANDS) {
@@ -1 +1 @@
1
- {"version":3,"file":"slash.js","sourceRoot":"","sources":["../../src/cli/slash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slash.js","sourceRoot":"","sources":["../../src/cli/slash.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * 配置与密钥解析。
3
3
  *
4
4
  * 优先级(高覆盖低):
5
- * 环境变量 > 项目 .env 文件 > 全局 ~/.ccli/config.json
5
+ * 环境变量 > 项目 .env 文件 > 项目 .ccli/config.json > 全局 ~/.ccli/config.json
6
6
  *
7
7
  * 支持的后端:
8
8
  * - Anthropic (Claude) —— ANTHROPIC_API_KEY [+ ANTHROPIC_BASE_URL / ANTHROPIC_MODEL]
@@ -11,42 +11,147 @@
11
11
  * 本步只负责「读取并解析成一个清晰的 Config」,不发起任何网络请求。
12
12
  */
13
13
  import { homedir } from 'node:os';
14
- import { join } from 'node:path';
15
- import { readFileSync } from 'node:fs';
14
+ import { dirname, join } from 'node:path';
15
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, } from 'node:fs';
16
16
  import { loadEnvFile } from './env.js';
17
+ /** 默认系统提示词,供 REPL 和单次调用复用。 */
18
+ export const DEFAULT_SYSTEM_PROMPT = '你是 CCLI,一个运行在终端里的 AI 助手。回答简洁、准确,使用中文。' +
19
+ '你可以调用工具读文件、列目录、搜索(read_file / list_dir / grep),' +
20
+ '也可以用 write_file 创建或修改文件、用 edit_file 局部精确替换、用 bash 执行 shell 命令(这些操作会请用户确认)。' +
21
+ '需要查看或修改文件、运行测试/构建/命令时请调用工具,不要凭空猜测。';
22
+ /** 内置角色,未配置时也能使用。配置文件中同名角色会覆盖。 */
23
+ export const BUILTIN_ROLES = {
24
+ default: {
25
+ prompt: DEFAULT_SYSTEM_PROMPT,
26
+ description: '通用助手',
27
+ },
28
+ coder: {
29
+ prompt: '你是 CCLI,一个专注于编程的 AI 助手。优先给出可运行的代码和精确的修改说明;' +
30
+ '查看或修改文件、运行命令时请调用工具,不要凭空猜测。',
31
+ description: '编程助手',
32
+ },
33
+ };
17
34
  /** 各后端在未显式指定 model 时的兜底默认值。 */
18
35
  const DEFAULT_MODEL = {
19
36
  anthropic: 'claude-sonnet-4-5',
20
37
  openai: 'qwen-plus',
21
38
  };
22
39
  const GLOBAL_CONFIG_PATH = join(homedir(), '.ccli', 'config.json');
40
+ /** 从任意 JSON 对象中提取认识的配置字段。 */
41
+ function pickConfig(raw) {
42
+ if (!raw || typeof raw !== 'object')
43
+ return {};
44
+ return {
45
+ provider: raw.provider,
46
+ apiKey: raw.apiKey,
47
+ baseURL: raw.baseURL,
48
+ model: raw.model,
49
+ mcpServers: raw.mcpServers,
50
+ roles: raw.roles,
51
+ };
52
+ }
23
53
  /** 读取全局 ~/.ccli/config.json(优先级最低);不存在或损坏则返回空。 */
24
54
  function loadGlobalConfig() {
25
55
  try {
26
- const raw = JSON.parse(readFileSync(GLOBAL_CONFIG_PATH, 'utf8'));
27
- return {
28
- provider: raw.provider,
29
- apiKey: raw.apiKey,
30
- baseURL: raw.baseURL,
31
- model: raw.model,
32
- mcpServers: raw.mcpServers,
33
- };
56
+ return pickConfig(JSON.parse(readFileSync(GLOBAL_CONFIG_PATH, 'utf8')));
34
57
  }
35
58
  catch {
36
59
  return {};
37
60
  }
38
61
  }
62
+ /** 读取项目级 .ccli/config.json;不存在或损坏则返回空。 */
63
+ function loadProjectConfig(cwd) {
64
+ try {
65
+ return pickConfig(JSON.parse(readFileSync(join(cwd, '.ccli', 'config.json'), 'utf8')));
66
+ }
67
+ catch {
68
+ return {};
69
+ }
70
+ }
71
+ /** 合并全局和项目配置;mcpServers 按 server 名合并。 */
72
+ function mergeConfig(global, project) {
73
+ return {
74
+ ...global,
75
+ ...project,
76
+ mcpServers: {
77
+ ...global.mcpServers,
78
+ ...project.mcpServers,
79
+ },
80
+ roles: {
81
+ ...global.roles,
82
+ ...project.roles,
83
+ },
84
+ };
85
+ }
86
+ const PROJECT_CONFIG_REL_PATH = '.ccli/config.json';
87
+ /** 获取指定角色的 prompt;未找到返回 undefined。 */
88
+ export function getRolePrompt(name, configRoles) {
89
+ const role = configRoles?.[name] ?? BUILTIN_ROLES[name];
90
+ return role?.prompt;
91
+ }
92
+ /** 列出所有可用角色(内置 + 配置),配置同名会覆盖内置。 */
93
+ export function listRoles(configRoles) {
94
+ const names = new Set([
95
+ ...Object.keys(BUILTIN_ROLES),
96
+ ...Object.keys(configRoles ?? {}),
97
+ ]);
98
+ return Array.from(names)
99
+ .sort()
100
+ .map((name) => {
101
+ const fromConfig = configRoles?.[name];
102
+ const fromBuiltin = BUILTIN_ROLES[name];
103
+ const role = fromConfig ?? fromBuiltin;
104
+ return {
105
+ name,
106
+ description: role.description ?? '',
107
+ source: fromConfig ? 'config' : 'builtin',
108
+ };
109
+ });
110
+ }
111
+ /** 返回项目级配置文件的绝对路径。 */
112
+ export function projectConfigPath(cwd) {
113
+ return join(cwd, PROJECT_CONFIG_REL_PATH);
114
+ }
115
+ /** 返回应该写入的配置文件路径:项目级优先,否则全局。 */
116
+ export function findConfigPath(cwd) {
117
+ const projectPath = projectConfigPath(cwd);
118
+ return existsSync(projectPath) ? projectPath : GLOBAL_CONFIG_PATH;
119
+ }
120
+ /**
121
+ * 把 mcpServers 持久化到配置文件。
122
+ * @returns 保存成功返回路径,失败返回错误信息
123
+ */
124
+ export function saveMcpServers(cwd, mcpServers) {
125
+ const path = findConfigPath(cwd);
126
+ try {
127
+ let raw = {};
128
+ if (existsSync(path)) {
129
+ raw = JSON.parse(readFileSync(path, 'utf8'));
130
+ }
131
+ raw.mcpServers = mcpServers;
132
+ mkdirSync(dirname(path), { recursive: true });
133
+ writeFileSync(path, JSON.stringify(raw, null, 2) + '\n', 'utf8');
134
+ return { ok: true, path };
135
+ }
136
+ catch (e) {
137
+ return { ok: false, message: `保存失败:${e?.message ?? String(e)}` };
138
+ }
139
+ }
39
140
  /**
40
141
  * 解析出最终生效的配置。
41
- * @param cwd 项目根目录,用于定位 .env
142
+ * @param cwd 项目根目录,用于定位 .env 和项目级配置
42
143
  */
43
144
  export function loadConfig(cwd = process.cwd()) {
44
145
  const dotenv = loadEnvFile(join(cwd, '.env'));
45
- const global = loadGlobalConfig();
146
+ const base = mergeConfig(loadGlobalConfig(), loadProjectConfig(cwd));
46
147
  // 按优先级取一个环境风格的键:环境变量 > .env
47
148
  const get = (key) => process.env[key] ?? dotenv[key];
48
149
  // 判断某个键的值来自哪个来源(用于诊断展示)
49
150
  const sourceOf = (key) => process.env[key] !== undefined ? '环境变量' : '项目 .env';
151
+ // 配置文件的来源描述
152
+ const fileSource = base.apiKey
153
+ ? '项目 .ccli/config.json'
154
+ : '全局 ~/.ccli/config.json';
50
155
  // —— 后端识别(按 Key 出现顺序)——
51
156
  // 1) Anthropic
52
157
  const anthropicKey = get('ANTHROPIC_API_KEY');
@@ -61,7 +166,8 @@ export function loadConfig(cwd = process.cwd()) {
61
166
  model: get('ANTHROPIC_MODEL') ??
62
167
  get('CCLI_MODEL') ??
63
168
  DEFAULT_MODEL.anthropic,
64
- mcpServers: global.mcpServers,
169
+ mcpServers: base.mcpServers,
170
+ roles: base.roles,
65
171
  },
66
172
  };
67
173
  }
@@ -76,7 +182,8 @@ export function loadConfig(cwd = process.cwd()) {
76
182
  apiKey: qwenKey,
77
183
  baseURL: get('QWEN_BASE_URL'),
78
184
  model: get('QWEN_MODEL') ?? DEFAULT_MODEL.openai,
79
- mcpServers: global.mcpServers,
185
+ mcpServers: base.mcpServers,
186
+ roles: base.roles,
80
187
  },
81
188
  };
82
189
  }
@@ -93,21 +200,23 @@ export function loadConfig(cwd = process.cwd()) {
93
200
  model: get('OPENAI_MODEL') ??
94
201
  get('CCLI_MODEL') ??
95
202
  DEFAULT_MODEL.openai,
96
- mcpServers: global.mcpServers,
203
+ mcpServers: base.mcpServers,
204
+ roles: base.roles,
97
205
  },
98
206
  };
99
207
  }
100
- // 4) 回退到全局配置
101
- if (global.apiKey && global.provider) {
208
+ // 4) 回退到合并后的配置文件
209
+ if (base.apiKey && base.provider) {
102
210
  return {
103
211
  ok: true,
104
- source: '全局 ~/.ccli/config.json',
212
+ source: fileSource,
105
213
  config: {
106
- provider: global.provider,
107
- apiKey: global.apiKey,
108
- baseURL: global.baseURL,
109
- model: global.model ?? DEFAULT_MODEL[global.provider],
110
- mcpServers: global.mcpServers,
214
+ provider: base.provider,
215
+ apiKey: base.apiKey,
216
+ baseURL: base.baseURL,
217
+ model: base.model ?? DEFAULT_MODEL[base.provider],
218
+ mcpServers: base.mcpServers,
219
+ roles: base.roles,
111
220
  },
112
221
  };
113
222
  }
@@ -118,7 +227,7 @@ export function loadConfig(cwd = process.cwd()) {
118
227
  '未找到可用的 API 配置。请任选其一:',
119
228
  ' • 设置环境变量 ANTHROPIC_API_KEY=sk-ant-...',
120
229
  ' • 或在项目 .env 写入 QWEN_API_KEY / QWEN_BASE_URL / QWEN_MODEL',
121
- ' • 或在 ~/.ccli/config.json 配置 { provider, apiKey, baseURL, model }',
230
+ ' • 或在 ~/.ccli/config.json / 项目 .ccli/config.json 配置 { provider, apiKey, baseURL, model }',
122
231
  ].join('\n'),
123
232
  };
124
233
  }
@@ -148,6 +257,8 @@ export function printConfig(cwd = process.cwd()) {
148
257
  console.log(` 来源 (source): ${source}`);
149
258
  const mcpNames = config.mcpServers ? Object.keys(config.mcpServers) : [];
150
259
  console.log(` MCP servers: ${mcpNames.length > 0 ? mcpNames.join(', ') : '(未配置)'}`);
260
+ const roleNames = listRoles(config.roles).map((r) => r.name);
261
+ console.log(` 角色 (roles): ${roleNames.length > 0 ? roleNames.join(', ') : '(未配置)'}`);
151
262
  return 0;
152
263
  }
153
264
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAoBvC,+BAA+B;AAC/B,MAAM,aAAa,GAA6B;IAC5C,SAAS,EAAE,mBAAmB;IAC9B,MAAM,EAAE,WAAW;CACtB,CAAC;AAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AAEnE,kDAAkD;AAClD,SAAS,gBAAgB;IACrB,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO;YACH,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,UAAU,EAAE,GAAG,CAAC,UAAU;SAC7B,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACtB,MAAc,OAAO,CAAC,GAAG,EAAE;IAI3B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,4BAA4B;IAC5B,MAAM,GAAG,GAAG,CAAC,GAAW,EAAsB,EAAE,CAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAEpC,wBAAwB;IACxB,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE,CACrC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAExD,wBAAwB;IACxB,eAAe;IACf,MAAM,YAAY,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC9C,IAAI,YAAY,EAAE,CAAC;QACf,OAAO;YACH,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC;YACrC,MAAM,EAAE;gBACJ,QAAQ,EAAE,WAAW;gBACrB,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,GAAG,CAAC,oBAAoB,CAAC;gBAClC,KAAK,EACD,GAAG,CAAC,iBAAiB,CAAC;oBACtB,GAAG,CAAC,YAAY,CAAC;oBACjB,aAAa,CAAC,SAAS;gBAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;aAChC;SACJ,CAAC;IACN,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC;IACpC,IAAI,OAAO,EAAE,CAAC;QACV,OAAO;YACH,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC;YAChC,MAAM,EAAE;gBACJ,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC;gBAC7B,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,MAAM;gBAChD,UAAU,EAAE,MAAM,CAAC,UAAU;aAChC;SACJ,CAAC;IACN,CAAC;IAED,yCAAyC;IACzC,MAAM,SAAS,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACxC,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO;YACH,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC;YAClC,MAAM,EAAE;gBACJ,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC;gBAC/B,KAAK,EACD,GAAG,CAAC,cAAc,CAAC;oBACnB,GAAG,CAAC,YAAY,CAAC;oBACjB,aAAa,CAAC,MAAM;gBACxB,UAAU,EAAE,MAAM,CAAC,UAAU;aAChC;SACJ,CAAC;IACN,CAAC;IAED,aAAa;IACb,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnC,OAAO;YACH,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,wBAAwB;YAChC,MAAM,EAAE;gBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACrD,UAAU,EAAE,MAAM,CAAC,UAAU;aAChC;SACJ,CAAC;IACN,CAAC;IAED,yBAAyB;IACzB,OAAO;QACH,EAAE,EAAE,KAAK;QACT,OAAO,EAAE;YACL,sBAAsB;YACtB,0CAA0C;YAC1C,6DAA6D;YAC7D,oEAAoE;SACvE,CAAC,IAAI,CAAC,IAAI,CAAC;KACf,CAAC;AACN,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,OAAO,CAAC,GAAW;IAC/B,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACnC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAE/B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC;IACb,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,OAAO,CAAC,GAAG,CACP,sBAAsB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAC9E,CAAC;IACF,OAAO,CAAC,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@
14
14
  import { parseArgs } from './cli/args.js';
15
15
  import { NAME, VERSION } from './version.js';
16
16
  import { startRepl } from './cli/repl.js';
17
- import { printConfig, loadConfig } from './config/config.js';
17
+ import { printConfig, loadConfig, getRolePrompt, DEFAULT_SYSTEM_PROMPT, } from './config/config.js';
18
18
  import { createAIClient } from './agent/ai.js';
19
19
  import { McpClientManager } from './agent/mcp.js';
20
20
  import { runOnce } from './cli/run.js';
@@ -27,9 +27,10 @@ const HELP = `${NAME} v${VERSION}
27
27
  config 打印当前解析出的配置(诊断用,密钥打码)
28
28
 
29
29
  选项:
30
- -v, --version 打印版本号
31
- -h, --help 打印本帮助
32
- -y, --yes 非交互式模式下自动确认破坏性工具调用
30
+ -v, --version 打印版本号
31
+ -h, --help 打印本帮助
32
+ -y, --yes 非交互式模式下自动确认破坏性工具调用
33
+ -r, --role <name> 非交互式模式下使用的系统提示词角色(默认 default)
33
34
 
34
35
  示例:
35
36
  ccli 启动交互式对话
@@ -38,6 +39,7 @@ const HELP = `${NAME} v${VERSION}
38
39
  ccli "解释这段报错" 非交互式单次调用
39
40
  cat file.ts | ccli "给这段代码加注释" 从 stdin 读取上下文
40
41
  ccli --yes "在当前目录创建 test.txt" 自动确认工具调用
42
+ ccli --role coder "review 这段代码" 使用 coding 角色单次调用
41
43
  `;
42
44
  /** 从 stdin 读取全部内容;若 stdin 是 TTY 则返回空字符串。 */
43
45
  async function readStdin() {
@@ -90,6 +92,15 @@ async function main() {
90
92
  }
91
93
  const { config } = result;
92
94
  const ai = createAIClient(config);
95
+ const rolePrompt = args.role
96
+ ? getRolePrompt(args.role, config.roles)
97
+ : undefined;
98
+ const systemPrompt = rolePrompt ?? DEFAULT_SYSTEM_PROMPT;
99
+ if (args.role &&
100
+ rolePrompt === undefined &&
101
+ args.role !== 'default') {
102
+ console.error(`未知角色:${args.role},使用默认角色。`);
103
+ }
93
104
  // 连接 MCP server
94
105
  let mcp = null;
95
106
  if (config.mcpServers && Object.keys(config.mcpServers).length > 0) {
@@ -111,7 +122,13 @@ async function main() {
111
122
  return false;
112
123
  };
113
124
  try {
114
- await runOnce({ ai, prompt, confirm, mcpManager: mcp ?? undefined });
125
+ await runOnce({
126
+ ai,
127
+ prompt,
128
+ confirm,
129
+ mcpManager: mcp ?? undefined,
130
+ systemPrompt,
131
+ });
115
132
  }
116
133
  finally {
117
134
  if (mcp) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,15 @@ export function resetTools() {
34
34
  tools = [...builtinTools];
35
35
  mcpManager = null;
36
36
  }
37
+ /** 移除指定 MCP server 注册的所有 tools。 */
38
+ export function unregisterMcpServerTools(serverName) {
39
+ const prefix = `mcp__${serverName}__`;
40
+ tools = tools.filter((t) => !t.name.startsWith(prefix));
41
+ }
42
+ /** 移除所有 MCP tools(内置工具保留)。 */
43
+ export function unregisterAllMcpTools() {
44
+ tools = [...builtinTools];
45
+ }
37
46
  /** 从 MCP manager 拉取 tools 并注册。 */
38
47
  export async function registerMcpTools(manager) {
39
48
  mcpManager = manager;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAOrC,cAAc;AACd,MAAM,YAAY,GAAW;IACzB,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,QAAQ;CACX,CAAC;AAEF,0BAA0B;AAC1B,IAAI,KAAK,GAAW,CAAC,GAAG,YAAY,CAAC,CAAC;AAEtC,8CAA8C;AAC9C,IAAI,UAAU,GAA4B,IAAI,CAAC;AAE/C,uBAAuB;AACvB,MAAM,UAAU,UAAU;IACtB,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAC1B,UAAU,GAAG,IAAI,CAAC;AACtB,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAyB;IAC5D,UAAU,GAAG,OAAO,CAAC;IACrB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvB,MAAM,OAAO,GAAS;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,YAAY,EAAE,IAAI,EAAE,oBAAoB;YACxC,OAAO,EAAE,CAAC,IAAS,EAAE,EAAE;gBACnB,OAAO,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,YAAY,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACtF,CAAC;YACD,GAAG,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;gBACrB,IAAI,CAAC,UAAU,EAAE,CAAC;oBACd,OAAO,sBAAsB,CAAC;gBAClC,CAAC;gBACD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,CAAC;SACJ,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACL,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,OAAO,CAAC,IAAY;IAChC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,QAAQ;IACpB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,UAAmB;QACzB,QAAQ,EAAE;YACN,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;SAC3B;KACJ,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,IAAY,EACZ,QAAgB;IAEhB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI;QAAE,OAAO,WAAW,IAAI,EAAE,CAAC;IAEpC,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,kBAAkB,QAAQ,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACd,OAAO,MAAM,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gird/ccli",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
4
4
  "description": "CCLI —— 一步一步从零实现的代理型(Agentic)终端 AI 编程助手",
5
5
  "type": "module",
6
6
  "bin": {