@ia-ccun/code-agent-cli 0.0.54-beta.5 → 0.0.54-beta.8

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.
@@ -1 +1 @@
1
- {"id":"ready_probe","type":"response","command":"get_state","success":true,"data":{"model":{"id":"MiniMax-M3","name":"MiniMax-M3","api":"anthropic-messages","provider":"minimax-cn","baseUrl":"https://api.minimaxi.com/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0,"tiers":[{"inputTokensAbove":512000,"input":0.6,"output":2.4,"cacheRead":0.12,"cacheWrite":0}]},"contextWindow":1000000,"maxTokens":512000,"inputLimits":{"images":{"resize":{"maxWidth":2000,"maxHeight":2000,"maxBytes":4718592,"jpegQuality":80}}},"type":"chat"},"thinkingLevel":"off","isStreaming":false,"isCompacting":false,"steeringMode":"one-at-a-time","followUpMode":"all","sessionId":"01a11f8c-1e7a-753b-a677-6183b6a3f5f0","autoCompactionEnabled":true,"messageCount":0,"pendingMessageCount":0}}
1
+ {"id":"ready_probe","type":"response","command":"get_state","success":true,"data":{"model":{"id":"MiniMax-M3","name":"MiniMax-M3","api":"anthropic-messages","provider":"minimax-cn","baseUrl":"https://api.minimaxi.com/anthropic","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0,"tiers":[{"inputTokensAbove":512000,"input":0.6,"output":2.4,"cacheRead":0.12,"cacheWrite":0}]},"contextWindow":1000000,"maxTokens":512000,"inputLimits":{"images":{"resize":{"maxWidth":2000,"maxHeight":2000,"maxBytes":4718592,"jpegQuality":80}}},"type":"chat"},"thinkingLevel":"medium","isStreaming":false,"isCompacting":false,"steeringMode":"one-at-a-time","followUpMode":"all","sessionId":"01a11ff2-7809-7219-82e4-c5e881e39c78","autoCompactionEnabled":true,"messageCount":0,"pendingMessageCount":0}}
package/dist/banner.d.ts DELETED
@@ -1,15 +0,0 @@
1
- /**
2
- * Banner 生成器 - AI Code Agent
3
- */
4
- declare let defaultBanner: string;
5
- /**
6
- * 根据星期几轮转颜色主题
7
- */
8
- declare function getRotatedColorTheme(): string;
9
- export { defaultBanner, getRotatedColorTheme };
10
- /**
11
- * 生成带颜色的 Banner
12
- * @param colorTheme 主题色 (hex 格式,如 #49bccf)
13
- */
14
- export declare function generateBanner(colorTheme?: string): string;
15
- //# sourceMappingURL=banner.d.ts.map
@@ -1 +0,0 @@
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,CAoGrE"}
package/dist/banner.js DELETED
@@ -1,146 +0,0 @@
1
- /**
2
- * Banner 生成器 - AI Code Agent
3
- */
4
- import { readFileSync } from 'fs';
5
- import { dirname, join } from 'path';
6
- import { fileURLToPath } from 'url';
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = dirname(__filename);
9
- // 读取 banner.txt (从 scripts 目录)
10
- let defaultBanner = '';
11
- try {
12
- const bannerPath = join(__dirname, '..', 'scripts', 'banner.txt');
13
- defaultBanner = readFileSync(bannerPath, 'utf-8');
14
- }
15
- catch {
16
- // fallback
17
- defaultBanner = ``;
18
- }
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
- ];
29
- /**
30
- * 根据星期几轮转颜色主题
31
- */
32
- function getRotatedColorTheme() {
33
- const dayOfWeek = new Date().getDay(); // 0=周日, 1=周一, ..., 6=周六
34
- return COLOR_THEMES[dayOfWeek % COLOR_THEMES.length].hex;
35
- }
36
- export { defaultBanner, getRotatedColorTheme };
37
- /**
38
- * 将 Hex 颜色转换为 RGB 对象
39
- */
40
- function hexToRgb(hex) {
41
- hex = hex.replace('#', '');
42
- return {
43
- r: parseInt(hex.slice(0, 2), 16),
44
- g: parseInt(hex.slice(2, 4), 16),
45
- b: parseInt(hex.slice(4, 6), 16)
46
- };
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
- // 防御 CWD 被删除的场景: process.cwd() 会抛 ENOENT
58
- let cwd;
59
- try {
60
- cwd = process.cwd().replace(process.env.HOME || process.env.USERPROFILE || '', '~');
61
- }
62
- catch {
63
- cwd = '<unknown>';
64
- }
65
- const color = (text) => `\x1b[38;2;${rgb.r};${rgb.g};${rgb.b}m${text}\x1b[0m`;
66
- const dim = (text) => `\x1b[2m${text}\x1b[0m`;
67
- const bold = (text) => `\x1b[1m${text}\x1b[0m`;
68
- // 去除 ANSI 转义码获取实际可见长度
69
- const stripAnsi = (text) => text.replace(/\x1b\[[\d;]*m/g, '');
70
- // 生成固定宽度的列(左侧用空格填充到指定宽度)
71
- const padCol = (text, width) => {
72
- const visible = stripAnsi(text).length;
73
- return text + ' '.repeat(Math.max(0, width - visible));
74
- };
75
- // 列宽定义
76
- const COL_WIDTH = 28; // 每列总宽度(命令 + 2空格 + 描述 + 填充)
77
- // 生成一列文本(命令 + 2空格 + 描述,右侧空白补齐到固定宽度)
78
- const col = (cmd, desc) => {
79
- const text = `${cmd} ${desc}`;
80
- return padCol(text, COL_WIDTH);
81
- };
82
- // 生成一行(1-3 列)
83
- const row = (cmd1, desc1, cmd2, desc2, cmd3, desc3) => {
84
- const c1 = col(cmd1, desc1);
85
- const c2 = cmd2 && desc2 ? col(cmd2, desc2) : '';
86
- const c3 = cmd3 && desc3 ? col(cmd3, desc3) : '';
87
- return ` ${c1}${c2}${c3}`;
88
- };
89
- // 解析 banner.txt 为行数组
90
- const bannerLines = defaultBanner.split('\n');
91
- const maxBannerWidth = Math.max(...bannerLines.map(line => line.replace(/\x1b\[[\d;]*m/g, '').length));
92
- // 右侧信息行 (参考 Claude Code 布局)
93
- const infoLines = [
94
- `${color(bold('AICODE CLI'))} ${dim(`v${version}`)}`,
95
- `${dim('Dir:')} ${dim(cwd)}`,
96
- ];
97
- // 将 banner 和右侧信息合并为多行
98
- const maxLines = Math.max(bannerLines.length, infoLines.length);
99
- const headerLines = [];
100
- for (let i = 0; i < maxLines; i++) {
101
- const bannerLine = bannerLines[i] || '';
102
- const infoLine = infoLines[i] || '';
103
- if (i === 0) {
104
- headerLines.push(`${bannerLine} ${infoLine}`);
105
- }
106
- else if (i < infoLines.length && bannerLine.trim() === '') {
107
- // banner 的空白行填充信息
108
- headerLines.push(`${' '.repeat(maxBannerWidth)} ${infoLine}`);
109
- }
110
- else if (i < bannerLines.length) {
111
- headerLines.push(bannerLine);
112
- }
113
- else {
114
- headerLines.push(`${' '.repeat(maxBannerWidth)} ${infoLine}`);
115
- }
116
- }
117
- return [
118
- headerLines.join('\n'),
119
- '',
120
- dim('- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'),
121
- dim(' 直接用自然语言描述需求即可 • 复杂任务先用 /plan 生成计划 • @文件路径 指定文件'),
122
- dim('- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'),
123
- '',
124
- bold(' 常用命令'),
125
- row(color('/model'), '切换模型', color('/settings'), 'aicode设置', color('/compact'), '压缩上下文'),
126
- row(color('/new'), '新会话', color('/reload'), '重载配置', color('/resume'), '恢复会话'),
127
- row(color('/bugs'), '已知bug修复', color('/goal'), '目标导向', color('/plan'), '计划模式(只读)'),
128
- '',
129
- bold(' 常用提示词 (Prompts)'),
130
- row(color('/workflow'), '六阶段工作流', color('/feat'), '新功能开发', color('/git-commit'), 'Git提交'),
131
- row(color('/code-simplifier'), '代码简化', color('/init-project'), '项目初始化'),
132
- '',
133
- bold(' 常用技能 (Skills)'),
134
- row(color('/code-review'), '代码审查', color('/skill-creator'), '创建技能', color('/commit'), 'Git提交'),
135
- row(color('/frontend-design'), '前端设计', color('/brainstorming'), '头脑风暴'),
136
- '',
137
- bold(' 会话管理'),
138
- row(color('/export'), '导出会话', color('/tree'), '浏览对话历史'),
139
- '',
140
- dim(' • npm i -g @ia-ccun/code-agent-cli • @文件路径 指定文件'),
141
- '',
142
- dim('- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'),
143
- '',
144
- ].join('\n');
145
- }
146
- //# sourceMappingURL=banner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"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"}