codexmobile-relay / client /src /app-activity-labels.js
Codex
deploy: CodexMobile Relay
90f0300
Raw
History Blame Contribute Delete
7.16 kB
export function statusMessageId(payload) {
return `status-${payload.turnId || payload.sessionId || 'current'}`;
}
export function larkCliActivityLabel(value) {
const text = String(value || '').replace(/\s+/g, ' ').trim();
const lower = text.toLowerCase();
if (!lower.includes('lark-cli')) {
return '';
}
if (/\bauth\b/.test(lower)) {
return '确认飞书授权';
}
if (/\bsheets?\b/.test(lower)) {
if (/\+create|\bcreate\b/.test(lower)) {
return '创建表格';
}
if (/\+append|\bappend\b/.test(lower)) {
return '追加表格数据';
}
if (/\+write|\bwrite\b/.test(lower)) {
return '写入表格数据';
}
if (/\+find|\bfind\b/.test(lower)) {
return '查找表格内容';
}
if (/\+replace|\breplace\b/.test(lower)) {
return '替换表格内容';
}
if (/\+export|\bexport\b/.test(lower)) {
return '导出表格';
}
if (/title|rename|\bpatch\b|\bupdate\b|spreadsheet\.meta/.test(lower)) {
return '修改表名';
}
if (/\+read|\bread\b|\bget\b|\bmeta\b/.test(lower)) {
return '读取表格信息';
}
return '操作表格';
}
if (/\bslides?\b/.test(lower)) {
if (/\+create|\bcreate\b/.test(lower)) {
return '创建 PPT';
}
if (/\+update|\bupdate\b|\breplace\b|\bpatch\b/.test(lower)) {
return '修改 PPT';
}
if (/\+read|\bread\b|\bget\b|\bxml_presentations\b/.test(lower)) {
return '读取 PPT';
}
return '操作 PPT';
}
if (/\bdocs?\b/.test(lower)) {
if (/\+create|\bcreate\b/.test(lower)) {
return '创建文档';
}
if (/\+update|\bupdate\b|\bappend\b|\breplace\b|\bpatch\b/.test(lower)) {
return '修改文档';
}
if (/\+search|\bsearch\b/.test(lower)) {
return '搜索文档';
}
if (/\+fetch|\bread\b|\bget\b|\bfetch\b/.test(lower)) {
return '读取文档';
}
return '操作文档';
}
if (/\bdrive\b/.test(lower)) {
if (/\+import|\bimport\b/.test(lower)) {
return '导入文件';
}
if (/\+upload|\bupload\b/.test(lower)) {
return '上传文件';
}
if (/\+download|\bdownload\b/.test(lower)) {
return '下载文件';
}
if (/\+delete|\bdelete\b|\btrash\b/.test(lower)) {
return '删除文件';
}
if (/\+move|\bmove\b/.test(lower)) {
return '移动文件';
}
if (/title|rename|\bpatch\b|\bupdate\b/.test(lower)) {
return '修改文件名';
}
if (/\+search|\bsearch\b/.test(lower)) {
return '搜索云空间';
}
return '操作云空间';
}
return '';
}
export function shellCommandActivityLabel(value) {
const text = String(value || '').replace(/\s+/g, ' ').trim();
const lower = text.toLowerCase();
if (!text) {
return '';
}
if (/\b(npm|pnpm|yarn|bun)\s+(run\s+)?build\b|\bvite\s+build\b|\bwebpack\b|\brollup\b/.test(lower)) {
return '构建前端';
}
if (/\b(npm|pnpm|yarn|bun)\s+(run\s+)?smoke\b|\bsmoke\.mjs\b/.test(lower)) {
return '运行冒烟检查';
}
if (/\b(npm|pnpm|yarn|bun)\s+(run\s+)?test\b|\bpytest\b|\bvitest\b|\bjest\b|\bmvn\b.*\btest\b|\bcargo\s+test\b/.test(lower)) {
return '运行测试';
}
if (/\bnode\s+--check\b|\btsc\b|\beslint\b|\bbiome\b|\bprettier\b|\bflake8\b|\bmypy\b/.test(lower)) {
return '检查代码';
}
if (/\bgit\s+(status|diff|show|log|ls-files)\b/.test(lower)) {
return '检查改动';
}
if (/\b(get-content|select-string|rg|findstr|grep)\b/.test(lower)) {
return /\b(select-string|rg|findstr|grep)\b/.test(lower) ? '搜索代码' : '读取文件';
}
if (/\b(get-childitem|ls|dir)\b/.test(lower)) {
return '查看文件';
}
if (/\b(start-process|node\s+server\/index\.js|node\s+server\\index\.js)\b/.test(lower)) {
return '启动服务';
}
return '';
}
export function meaningfulActivityLabel(payload, rawLabel, detail) {
const source = [payload.command, detail, rawLabel, payload.output]
.filter(Boolean)
.join(' ');
const larkLabel = larkCliActivityLabel(source);
if (larkLabel) {
return larkLabel;
}
const commandLabel = shellCommandActivityLabel(payload.command || detail);
if (commandLabel) {
return commandLabel;
}
if (payload.kind === 'agent_message' || payload.kind === 'message' || payload.kind === 'reasoning') {
return briefActivityLabel(rawLabel || payload.content || detail);
}
if (isGenericActivityLabel(rawLabel)) {
return '';
}
return rawLabel && rawLabel.length <= 18 ? rawLabel : '';
}
export function isGenericActivityLabel(value) {
const text = String(value || '').replace(/\s+/g, ' ').trim();
if (!text) {
return true;
}
return /^(正在思考中?|思考完成|正在处理|正在回复|正在整理回复|正在准备任务|正在修改并验证|正在执行命令|命令已完成|命令完成|命令执行完成|执行完成|工具调用完成|正在调用工具|工具调用失败|工具已完成|计划已更新|正在规划|任务已完成|已完成|完成|失败)$/i.test(text);
}
export function activityStepFromPayload(payload, fallbackKind = 'status') {
const rawLabel = String(payload.label || payload.content || '').replace(/\s+/g, ' ').trim();
const detail = String(payload.detail || payload.error || '').replace(/\s+/g, ' ').trim();
const label = meaningfulActivityLabel(payload, rawLabel, detail);
if (!label) {
return null;
}
return {
id: payload.messageId || `${statusMessageId(payload)}-${payload.kind || fallbackKind}-${label || payload.status || 'step'}`,
kind: payload.kind || fallbackKind,
label,
status: payload.status || 'running',
detail,
command: payload.command || '',
output: payload.output || '',
error: payload.error || '',
fileChanges: payload.fileChanges || [],
timestamp: payload.timestamp || new Date().toISOString()
};
}
export function briefActivityLabel(value, fallback = '正在处理') {
const text = String(value || '').replace(/\s+/g, ' ').trim();
if (!text) {
return '';
}
if (/授权|登录|连接/.test(text)) {
return '确认授权';
}
if (/记忆|skill|技能|能力|scope|权限/i.test(text)) {
return '';
}
if (/搜索|查找|定位/.test(text)) {
return '查找文件';
}
if (/创建|新建|生成/.test(text)) {
return '创建文件';
}
if (/改名|重命名|修改标题|rename/i.test(text) && /验证|确认|检查|读取/.test(text)) {
return '修改并验证';
}
if (/改名|重命名|修改标题|rename/i.test(text)) {
return '修改标题';
}
if (/读取|获取|标题|内容/.test(text)) {
return '读取内容';
}
if (/修改|更新|写入|追加|替换|编辑/.test(text)) {
return '修改内容';
}
if (/上传|导入/.test(text)) {
return '上传文件';
}
if (/下载|导出/.test(text)) {
return '导出文件';
}
if (/删除|移除/.test(text)) {
return '删除文件';
}
if (/验证|确认|检查/.test(text)) {
return '验证结果';
}
if (/命令|lark-cli|PowerShell|shell|执行/i.test(text)) {
return '';
}
return text.length > 18 ? '' : text;
}