Files
cc-web/scripts/mock-claude.js
cc-dan 6f381998e9 feat: v1.2.8 - Codex双Agent、图片上传、主题系统、会话加载优化
- Codex双Agent接入:共享后端内核,前台隔离会话/设置/导入
- 图片上传:Claude (stream-json) 和 Codex (--image) 均支持拖拽/粘贴/选择上传
- 主题系统:CoolVibe Light 视觉方案,主题入口移至二级页
- 会话加载优化:加载遮罩、热会话缓存、切后台内容不丢失
- 移动端增强:侧栏手势、运行状态标签、按钮比例修复
- 后端重构:agent-runtime.js / codex-rollouts.js 模块拆分
- 回归脚本:npm run regression 隔离式测试
2026-03-13 12:46:34 +00:00

53 lines
1.7 KiB
JavaScript
Executable File

#!/usr/bin/env node
const crypto = require('crypto');
function readStdin() {
return new Promise((resolve) => {
let data = '';
process.stdin.setEncoding('utf8');
process.stdin.on('data', (chunk) => { data += chunk; });
process.stdin.on('end', () => resolve(data));
});
}
(async function main() {
const args = process.argv.slice(2);
const resumeIndex = args.indexOf('--resume');
const inputFormatIndex = args.indexOf('--input-format');
const sessionId = resumeIndex >= 0 && args[resumeIndex + 1]
? args[resumeIndex + 1]
: crypto.randomUUID();
const input = (await readStdin()).trim();
const usesStreamJson = inputFormatIndex >= 0 && args[inputFormatIndex + 1] === 'stream-json';
process.stdout.write(`${JSON.stringify({ type: 'system', session_id: sessionId })}\n`);
let text = '';
if (usesStreamJson) {
let payload = null;
try { payload = JSON.parse(input.split('\n').find(Boolean) || '{}'); } catch {}
const blocks = payload?.message?.content || [];
const imageCount = blocks.filter((block) => block.type === 'image').length;
const promptText = blocks.filter((block) => block.type === 'text').map((block) => block.text || '').join(' ').trim();
text = `Claude mock handled stream-json (${imageCount} image): ${promptText || '[no text]'}`;
} else if (input === '/compact') {
text = 'Claude compact finished.';
} else {
text = `Claude mock handled: ${input}`;
}
process.stdout.write(`${JSON.stringify({
type: 'assistant',
session_id: sessionId,
message: { content: [{ type: 'text', text }] },
})}\n`);
process.stdout.write(`${JSON.stringify({
type: 'result',
session_id: sessionId,
total_cost_usd: 0,
})}\n`);
})();