- Codex双Agent接入:共享后端内核,前台隔离会话/设置/导入 - 图片上传:Claude (stream-json) 和 Codex (--image) 均支持拖拽/粘贴/选择上传 - 主题系统:CoolVibe Light 视觉方案,主题入口移至二级页 - 会话加载优化:加载遮罩、热会话缓存、切后台内容不丢失 - 移动端增强:侧栏手势、运行状态标签、按钮比例修复 - 后端重构:agent-runtime.js / codex-rollouts.js 模块拆分 - 回归脚本:npm run regression 隔离式测试
53 lines
1.7 KiB
JavaScript
Executable File
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`);
|
|
})();
|