@ia-ccun/code-agent-cli 0.0.51-beta.9 → 0.0.52-release

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.
@@ -80,6 +80,10 @@ const EXECUTION_TRIGGER_PROMPT =
80
80
  // ============== 工具函数 ==============
81
81
 
82
82
  function isSafeReadOnlyCommand(command: string): boolean {
83
+ // 临时移除错误重定向 (如 2>/dev/null, 1>&2 等),避免误判
84
+ // 错误重定向是只读操作,不应被拦截
85
+ const normalizedCommand = command.replace(/\d+>[&]?\s*[^\s|;&]+/g, "").trim();
86
+
83
87
  const DESTRUCTIVE_PATTERNS = [
84
88
  /\brm\b/i,
85
89
  /\brmdir\b/i,
@@ -113,7 +117,8 @@ function isSafeReadOnlyCommand(command: string): boolean {
113
117
  /\bshutdown\b/i,
114
118
  /\bsystemctl\s+(start|stop|restart|enable|disable)\b/i,
115
119
  /\bservice\s+\S+\s+(start|stop|restart)\b/i,
116
- /\b(vim?|nano|emacs|code|subl)\b/i,
120
+ // 编辑器命令 - 只拦截命令开头的编辑器调用,不拦截参数中的匹配
121
+ /^\s*(vim?|nano|emacs|code|subl)\b/i,
117
122
  ];
118
123
 
119
124
  const SAFE_PATTERNS = [
@@ -165,9 +170,10 @@ function isSafeReadOnlyCommand(command: string): boolean {
165
170
  /^\s*fd\b/,
166
171
  ];
167
172
 
168
- const isDestructive = DESTRUCTIVE_PATTERNS.some((pattern) => pattern.test(command));
173
+ // 使用标准化后的命令进行检查(已移除错误重定向)
174
+ const isDestructive = DESTRUCTIVE_PATTERNS.some((pattern) => pattern.test(normalizedCommand));
169
175
  if (isDestructive) return false;
170
- return SAFE_PATTERNS.some((pattern) => pattern.test(command));
176
+ return SAFE_PATTERNS.some((pattern) => pattern.test(normalizedCommand));
171
177
  }
172
178
 
173
179
  function normalizeArg(input: string): string {
@@ -558,7 +564,7 @@ export default function aicodePlan(pi: ExtensionAPI) {
558
564
  }
559
565
 
560
566
  const statusText = planModeEnabled
561
- ? ctx.ui.theme.fg("warning", "⏸ 计划") + ctx.ui.theme.fg("dim", " | plan (CTRL+ALT+P)")
567
+ ? ctx.ui.theme.fg("warning", "⏸ 计划") + ctx.ui.theme.fg("dim", " | plan (Ctrl+Alt+P)")
562
568
  : undefined;
563
569
  ctx.ui.setStatus(STATUS_KEY, statusText);
564
570
  updateTodoWidget(ctx);
@@ -583,8 +589,8 @@ export default function aicodePlan(pi: ExtensionAPI) {
583
589
  executionMode = false;
584
590
  pi.setActiveTools(planTools);
585
591
  planModeEnabled = true;
592
+ pi.events.emit("aicode-plan:mode-changed", { enabled: true });
586
593
  setStatus(ctx);
587
- pi.events.emit("aicode-plan:mode-changed", { planModeEnabled: true });
588
594
  ctx.ui.notify(`计划模式已启用(只读): ${planTools.join(", ")}`, "info");
589
595
  };
590
596
 
@@ -606,7 +612,7 @@ export default function aicodePlan(pi: ExtensionAPI) {
606
612
  }
607
613
 
608
614
  planModeEnabled = false;
609
- pi.events.emit("aicode-plan:mode-changed", { planModeEnabled: false });
615
+ pi.events.emit("aicode-plan:mode-changed", { enabled: false });
610
616
  restoreNormalTools();
611
617
  if (options.resetProgress) {
612
618
  executionMode = false;
@@ -658,7 +664,7 @@ export default function aicodePlan(pi: ExtensionAPI) {
658
664
  ];
659
665
  if (!planModeEnabled && !executionMode) {
660
666
  statusLines.push("");
661
- statusLines.push("快捷键:CTRL+ALT+P 快速切换计划模式");
667
+ statusLines.push("快捷键:Alt+Shift+P 快速切换计划模式");
662
668
  }
663
669
  ctx.ui.notify(statusLines.join("\n"), "info");
664
670
  return;
@@ -693,6 +699,7 @@ export default function aicodePlan(pi: ExtensionAPI) {
693
699
  pi.registerShortcut("ctrl+alt+p", {
694
700
  description: "切换计划模式",
695
701
  handler: async (ctx) => {
702
+ const wasEnabled = planModeEnabled; // 保存当前状态
696
703
  if (planModeEnabled) {
697
704
  exitPlanMode(ctx, "计划模式已禁用。返回直接执行模式。", {
698
705
  resetProgress: true,
@@ -700,7 +707,8 @@ export default function aicodePlan(pi: ExtensionAPI) {
700
707
  } else {
701
708
  enterPlanMode(ctx);
702
709
  }
703
- ctx.ui.notify(`计划模式已${planModeEnabled ? "禁用" : "启用"}`, "info");
710
+ // 显示切换后的状态
711
+ ctx.ui.notify(wasEnabled ? "计划模式已关闭 ✓" : "计划模式已开启 ✓");
704
712
  },
705
713
  });
706
714
 
@@ -32,7 +32,7 @@ export default function (pi: ExtensionAPI) {
32
32
 
33
33
  // 监听 plan 模式变化事件(全局监听,只注册一次)
34
34
  pi.events.on("aicode-plan:mode-changed", (data: any) => {
35
- planModeEnabled = data.planModeEnabled;
35
+ planModeEnabled = data.enabled;
36
36
  footerTui?.requestRender();
37
37
  });
38
38
 
@@ -160,7 +160,6 @@ export default function (pi: ExtensionAPI) {
160
160
 
161
161
  // quots
162
162
  const quotes = [
163
- "代码是有灵魂的",
164
163
  "敬畏生产,双人复核,稳妥变更",
165
164
  "让代码更有温度",
166
165
  "民生所系,支付所向",
@@ -198,9 +197,9 @@ export default function (pi: ExtensionAPI) {
198
197
 
199
198
  // ── Plan mode segment ────────────────────────────────────
200
199
  if (planModeEnabled) {
201
- segments.push(theme.fg("success", "⏸ plan mode on"));
200
+ segments.push(theme.fg("success", "⏸ 计划模式"));
202
201
  }else{
203
- segments.push(theme.fg("error", "> yolo mode on"));
202
+ segments.push(theme.fg("error", "▶ 自动模式"));
204
203
  }
205
204
 
206
205
  segments.push(theme.fg("muted", quote));
@@ -3,7 +3,7 @@
3
3
  * Msg Debug Extension - Log LLM request/response messages to file
4
4
  *
5
5
  * This extension logs all requests and responses sent to/from the LLM provider
6
- * for debugging purposes. Logs are saved to ./.aicode-cli/debug-logs/
6
+ * for debugging purposes. Logs are saved to ~/.aicode-cli/logs/
7
7
  *
8
8
  * Features:
9
9
  * - Logs before_provider_request: messages, parameters, raw payload
@@ -13,8 +13,9 @@
13
13
  * - Session-based log files (one file per session)
14
14
  */
15
15
 
16
- import { appendFileSync, existsSync, mkdirSync } from "node:fs";
16
+ import { appendFileSync, existsSync, mkdirSync, readdirSync, unlinkSync } from "node:fs";
17
17
  import { join } from "node:path";
18
+ import os from "node:os";
18
19
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
19
20
 
20
21
  // 北京时间格式化函数 (UTC+8)
@@ -31,16 +32,39 @@ function formatDateStr(date: Date = new Date()): string {
31
32
  return `${year}-${month}-${day}`;
32
33
  }
33
34
 
34
- export default function (pi: ExtensionAPI) {
35
- // Create log directory in project root: ./.aicode-cli/debug-logs
36
- const logDir = join(process.cwd(), ".aicode-cli", "debug-logs");
37
- if (!existsSync(logDir)) {
38
- mkdirSync(logDir, { recursive: true });
35
+ // 日志目录配置(与 error-monitor.ts 保持一致)
36
+ const LOG_DIR = join(os.homedir(), ".aicode-cli", "logs");
37
+ const KEEP_DAYS = 2; // 保留最近2天
38
+
39
+ // 确保日志目录存在
40
+ function ensureLogDir(): void {
41
+ if (!existsSync(LOG_DIR)) {
42
+ mkdirSync(LOG_DIR, { recursive: true });
39
43
  }
40
-
44
+ }
45
+
46
+ // 清理过期日志文件
47
+ function cleanOldLogs(): void {
48
+ if (!existsSync(LOG_DIR)) return;
49
+ const now = new Date(new Date().toLocaleString("zh-CN", { timeZone: "Asia/Shanghai" }));
50
+ for (const file of readdirSync(LOG_DIR)) {
51
+ if (!file.startsWith("llm-requests-") || !file.endsWith(".log")) continue;
52
+ const match = file.match(/llm-requests-(\d{4})-(\d{2})-(\d{2})\.log/);
53
+ if (!match) continue;
54
+ const fileDate = new Date(parseInt(match[1]), parseInt(match[2]) - 1, parseInt(match[3]));
55
+ const diffDays = Math.floor((now.getTime() - fileDate.getTime()) / (1000 * 60 * 60 * 24));
56
+ if (diffDays > KEEP_DAYS) {
57
+ unlinkSync(join(LOG_DIR, file));
58
+ }
59
+ }
60
+ }
61
+
62
+ export default function (pi: ExtensionAPI) {
63
+ ensureLogDir();
64
+ cleanOldLogs();
41
65
  // Format date as YYYY-MM-DD for daily log files
42
66
  const dateStr = formatDateStr();
43
- const logFile = join(logDir, `llm-requests-${dateStr}.log`);
67
+ const logFile = join(LOG_DIR, `llm-requests-${dateStr}.log`);
44
68
 
45
69
  // Filter to only log user and assistant messages
46
70
  const ALLOWED_ROLES = ["user", "assistant"];
@@ -4,6 +4,29 @@
4
4
 
5
5
  ---
6
6
 
7
+ ## 📖 帮助命令
8
+
9
+ 查看 aicode-cli 的使用帮助:
10
+
11
+ ```bash
12
+ /help
13
+ ```
14
+
15
+ 快速帮助:
16
+ - `/help` - 查看本完整文档
17
+ - `/models` - 查看模型列表
18
+ - `/tools` - 查看可用工具
19
+ - `/skill:<name>` - 激活指定技能
20
+ - `Ctrl+Alt+P` - 切换计划模式
21
+ - `/goal` - 设置持续目标
22
+
23
+ ---
24
+ # aicode-cli 使用指南
25
+
26
+ > 全面掌握 AI 编程助手的各项功能与配置
27
+
28
+ ---
29
+
7
30
  ## 目录
8
31
 
9
32
  1. [快速开始](#1-快速开始)
@@ -15,11 +15,9 @@
15
15
  "packages":[
16
16
  "npm:pi-subagents@0.17.1",
17
17
  "npm:pi-rewind@0.5.0",
18
- "npm:pi-btw@0.2.1",
19
18
  "npm:pi-mcp-adapter@2.4.0",
20
19
  "npm:@juicesharp/rpiv-todo",
21
20
  "npm:@juicesharp/rpiv-ask-user-question",
22
- "npm:@juicesharp/rpiv-advisor",
23
21
  "npm:@samfp/pi-memory@1.1.1"
24
22
  ],
25
23
  "memory": {
package/dist/banner.d.ts CHANGED
@@ -2,7 +2,11 @@
2
2
  * Banner 生成器 - AI Code Agent
3
3
  */
4
4
  declare let defaultBanner: string;
5
- export { defaultBanner };
5
+ /**
6
+ * 根据星期几轮转颜色主题
7
+ */
8
+ declare function getRotatedColorTheme(): string;
9
+ export { defaultBanner, getRotatedColorTheme };
6
10
  /**
7
11
  * 生成带颜色的 Banner
8
12
  * @param colorTheme 主题色 (hex 格式,如 #49bccf)
@@ -1 +1 @@
1
- {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,QAAA,IAAI,aAAa,QAAK,CAAC;AASvB,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,GAAE,MAAkB,GAAG,MAAM,CAGrE"}
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,QAAA,IAAI,aAAa,QAAK,CAAC;AAoBvB;;GAEG;AACH,iBAAS,oBAAoB,IAAI,MAAM,CAGtC;AAED,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC;AAc/C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,GAAE,MAAkB,GAAG,MAAM,CA8FrE"}
package/dist/banner.js CHANGED
@@ -16,20 +16,28 @@ catch {
16
16
  // fallback
17
17
  defaultBanner = ``;
18
18
  }
19
- export { defaultBanner };
19
+ // 预置颜色主题 — 围绕 #49bccf 的渐变色(不同明度)
20
+ const COLOR_THEMES = [
21
+ { name: 'deep-cyan', hex: '#2e7d8c' }, // 周一 - 最深
22
+ { name: 'dark-cyan', hex: '#399aad' }, // 周二 - 深
23
+ { name: 'cyan', hex: '#49bccf' }, // 周三 - 基准色
24
+ { name: 'light-cyan', hex: '#5ec9db' }, // 周四 - 亮
25
+ { name: 'bright-cyan', hex: '#73d6e8' }, // 周五 - 最亮
26
+ { name: 'pale-cyan', hex: '#8ae3f0' }, // 周六 - 极亮
27
+ { name: 'faint-cyan', hex: '#a0f0f8' }, // 周日 - 最浅
28
+ ];
20
29
  /**
21
- * 生成带颜色的 Banner
22
- * @param colorTheme 主题色 (hex 格式,如 #49bccf)
30
+ * 根据星期几轮转颜色主题
23
31
  */
24
- export function generateBanner(colorTheme = '#49bccf') {
25
- const rgb = hexToRgb(colorTheme);
26
- return `\x1b[38;2;${rgb.r};${rgb.g};${rgb.b}m${defaultBanner}\x1b[0m`;
32
+ function getRotatedColorTheme() {
33
+ const dayOfWeek = new Date().getDay(); // 0=周日, 1=周一, ..., 6=周六
34
+ return COLOR_THEMES[dayOfWeek % COLOR_THEMES.length].hex;
27
35
  }
36
+ export { defaultBanner, getRotatedColorTheme };
28
37
  /**
29
38
  * 将 Hex 颜色转换为 RGB 对象
30
39
  */
31
40
  function hexToRgb(hex) {
32
- // 去掉 # 前缀
33
41
  hex = hex.replace('#', '');
34
42
  return {
35
43
  r: parseInt(hex.slice(0, 2), 16),
@@ -37,4 +45,95 @@ function hexToRgb(hex) {
37
45
  b: parseInt(hex.slice(4, 6), 16)
38
46
  };
39
47
  }
48
+ /**
49
+ * 生成带颜色的 Banner
50
+ * @param colorTheme 主题色 (hex 格式,如 #49bccf)
51
+ */
52
+ export function generateBanner(colorTheme = '#49bccf') {
53
+ // 如果传入 'random' 或 'rotate' 则使用按星期轮转的颜色
54
+ const theme = (colorTheme === 'random' || colorTheme === 'rotate') ? getRotatedColorTheme() : colorTheme;
55
+ const rgb = hexToRgb(theme);
56
+ const version = process.env.AICODE_CLI_VERSION || '';
57
+ const cwd = process.cwd().replace(process.env.HOME || process.env.USERPROFILE || '', '~');
58
+ const color = (text) => `\x1b[38;2;${rgb.r};${rgb.g};${rgb.b}m${text}\x1b[0m`;
59
+ const dim = (text) => `\x1b[2m${text}\x1b[0m`;
60
+ const bold = (text) => `\x1b[1m${text}\x1b[0m`;
61
+ // 去除 ANSI 转义码获取实际可见长度
62
+ const stripAnsi = (text) => text.replace(/\x1b\[[\d;]*m/g, '');
63
+ // 生成固定宽度的列(左侧用空格填充到指定宽度)
64
+ const padCol = (text, width) => {
65
+ const visible = stripAnsi(text).length;
66
+ return text + ' '.repeat(Math.max(0, width - visible));
67
+ };
68
+ // 列宽定义
69
+ const COL_WIDTH = 28; // 每列总宽度(命令 + 2空格 + 描述 + 填充)
70
+ // 生成一列文本(命令 + 2空格 + 描述,右侧空白补齐到固定宽度)
71
+ const col = (cmd, desc) => {
72
+ const text = `${cmd} ${desc}`;
73
+ return padCol(text, COL_WIDTH);
74
+ };
75
+ // 生成一行(1-3 列)
76
+ const row = (cmd1, desc1, cmd2, desc2, cmd3, desc3) => {
77
+ const c1 = col(cmd1, desc1);
78
+ const c2 = cmd2 && desc2 ? col(cmd2, desc2) : '';
79
+ const c3 = cmd3 && desc3 ? col(cmd3, desc3) : '';
80
+ return ` ${c1}${c2}${c3}`;
81
+ };
82
+ // 解析 banner.txt 为行数组
83
+ const bannerLines = defaultBanner.split('\n');
84
+ const maxBannerWidth = Math.max(...bannerLines.map(line => line.replace(/\x1b\[[\d;]*m/g, '').length));
85
+ // 右侧信息行 (参考 Claude Code 布局)
86
+ const infoLines = [
87
+ `${color(bold('AICODE CLI'))} ${dim(`v${version}`)}`,
88
+ `${dim('Dir:')} ${dim(cwd)}`,
89
+ ];
90
+ // 将 banner 和右侧信息合并为多行
91
+ const maxLines = Math.max(bannerLines.length, infoLines.length);
92
+ const headerLines = [];
93
+ for (let i = 0; i < maxLines; i++) {
94
+ const bannerLine = bannerLines[i] || '';
95
+ const infoLine = infoLines[i] || '';
96
+ if (i === 0) {
97
+ headerLines.push(`${bannerLine} ${infoLine}`);
98
+ }
99
+ else if (i < infoLines.length && bannerLine.trim() === '') {
100
+ // banner 的空白行填充信息
101
+ headerLines.push(`${' '.repeat(maxBannerWidth)} ${infoLine}`);
102
+ }
103
+ else if (i < bannerLines.length) {
104
+ headerLines.push(bannerLine);
105
+ }
106
+ else {
107
+ headerLines.push(`${' '.repeat(maxBannerWidth)} ${infoLine}`);
108
+ }
109
+ }
110
+ return [
111
+ headerLines.join('\n'),
112
+ '',
113
+ dim('- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'),
114
+ dim(' 直接用自然语言描述需求即可 • 复杂任务先用 /plan 生成计划 • @文件路径 指定文件'),
115
+ dim('- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'),
116
+ '',
117
+ bold(' 常用命令'),
118
+ row(color('/model'), '切换模型', color('/settings'), 'aicode设置', color('/compact'), '压缩上下文'),
119
+ row(color('/new'), '新会话', color('/reload'), '重载配置', color('/resume'), '恢复会话'),
120
+ row(color('/bugs'), '已知bug修复', color('/goal'), '目标导向', color('/plan'), '计划模式(只读)'),
121
+ '',
122
+ bold(' 常用提示词 (Prompts)'),
123
+ row(color('/workflow'), '六阶段工作流', color('/feat'), '新功能开发', color('/git-commit'), 'Git提交'),
124
+ row(color('/code-simplifier'), '代码简化', color('/init-project'), '项目初始化'),
125
+ '',
126
+ bold(' 常用技能 (Skills)'),
127
+ row(color('/code-review'), '代码审查', color('/skill-creator'), '创建技能', color('/commit'), 'Git提交'),
128
+ row(color('/frontend-design'), '前端设计', color('/brainstorming'), '头脑风暴'),
129
+ '',
130
+ bold(' 会话管理'),
131
+ row(color('/export'), '导出会话', color('/tree'), '浏览对话历史'),
132
+ '',
133
+ dim(' • npm i -g @ia-ccun/code-agent-cli • @文件路径 指定文件'),
134
+ '',
135
+ dim('- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'),
136
+ '',
137
+ ].join('\n');
138
+ }
40
139
  //# sourceMappingURL=banner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,+BAA+B;AAC/B,IAAI,aAAa,GAAG,EAAE,CAAC;AACvB,IAAI,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAClE,aAAa,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAAC,MAAM,CAAC;IACP,WAAW;IACX,aAAa,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,aAAqB,SAAS;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IACjC,OAAO,aAAa,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,aAAa,SAAS,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAW;IAC3B,UAAU;IACV,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAE3B,OAAO;QACL,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QAChC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QAChC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;KACjC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -6,7 +6,7 @@
6
6
  export const defaultConfig = {
7
7
  name: 'aicode-cli',
8
8
  banner: '__default__', // 使用默认值
9
- themeColor: '#49bccf',
9
+ themeColor: 'rotate',
10
10
  configDir: '.aicode-cli'
11
11
  };
12
12
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,aAAa,EAAG,QAAQ;IAChC,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,aAAa;CACzB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,aAAa,EAAG,QAAQ;IAChC,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,aAAa;CACzB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ia-ccun/code-agent-cli",
3
- "version": "0.0.51-beta.9",
4
- "description": "AI Coding Agent CLI - 基于OpenClaw🦞底层Agent(pi)原理封装的编码智能体(供学习使用)。",
3
+ "version": "0.0.52-release",
4
+ "description": "AI Coding Agent CLI - 基于OpenClaw🦞底层Agent原理封装的编码智能体(供学习使用)。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",