@ia-ccun/code-agent-cli 0.0.54-beta.7 → 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.
- package/bin/cli.js +0 -10
- package/config/agent/extensions/aicode-banner.ts +10 -13
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/regression/results/.last_pid +1 -1
- package/scripts/regression/results/.last_workdir +1 -1
- package/scripts/regression/results/02-extension-loading.log +16 -17
- package/scripts/regression/results/03-prompt-stream.log +16 -13
- package/scripts/regression/results/03-rpc-protocol.log +16 -16
- package/scripts/regression/results/04-slash-commands-and-skills.log +11 -11
- package/scripts/regression/results/05-tool-execution.log +5 -5
- package/scripts/regression/results/06-pi-new-features.log +66 -24
- package/scripts/regression/results/08-cwd-resilience.log +1 -1
- package/dist/banner.d.ts +0 -15
- package/dist/banner.d.ts.map +0 -1
- package/dist/banner.js +0 -146
- package/dist/banner.js.map +0 -1
|
@@ -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":"medium","isStreaming":false,"isCompacting":false,"steeringMode":"one-at-a-time","followUpMode":"all","sessionId":"
|
|
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
|
package/dist/banner.d.ts.map
DELETED
|
@@ -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
|
package/dist/banner.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"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"}
|