feat: v1.2.8 - Codex双Agent、图片上传、主题系统、会话加载优化
- Codex双Agent接入:共享后端内核,前台隔离会话/设置/导入 - 图片上传:Claude (stream-json) 和 Codex (--image) 均支持拖拽/粘贴/选择上传 - 主题系统:CoolVibe Light 视觉方案,主题入口移至二级页 - 会话加载优化:加载遮罩、热会话缓存、切后台内容不丢失 - 移动端增强:侧栏手势、运行状态标签、按钮比例修复 - 后端重构:agent-runtime.js / codex-rollouts.js 模块拆分 - 回归脚本:npm run regression 隔离式测试
This commit is contained in:
62
scripts/mock-codex.js
Executable file
62
scripts/mock-codex.js
Executable file
@@ -0,0 +1,62 @@
|
||||
#!/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 isResume = args[0] === 'exec' && args[1] === 'resume';
|
||||
const threadId = isResume && args[2] ? args[2] : `mock-${crypto.randomUUID()}`;
|
||||
const input = (await readStdin()).trim();
|
||||
const imageCount = args.filter((arg) => arg === '--image').length;
|
||||
|
||||
process.stdout.write(`${JSON.stringify({ type: 'thread.started', thread_id: threadId })}\n`);
|
||||
process.stdout.write(`${JSON.stringify({ type: 'turn.started' })}\n`);
|
||||
|
||||
if (/pwd/i.test(input)) {
|
||||
process.stdout.write(`${JSON.stringify({
|
||||
type: 'item.started',
|
||||
item: {
|
||||
id: 'item_cmd',
|
||||
type: 'command_execution',
|
||||
command: '/bin/bash -lc pwd',
|
||||
aggregated_output: '',
|
||||
exit_code: null,
|
||||
status: 'in_progress',
|
||||
},
|
||||
})}\n`);
|
||||
process.stdout.write(`${JSON.stringify({
|
||||
type: 'item.completed',
|
||||
item: {
|
||||
id: 'item_cmd',
|
||||
type: 'command_execution',
|
||||
command: '/bin/bash -lc pwd',
|
||||
aggregated_output: '/tmp/mock-codex\n',
|
||||
exit_code: 0,
|
||||
status: 'completed',
|
||||
},
|
||||
})}\n`);
|
||||
}
|
||||
|
||||
process.stdout.write(`${JSON.stringify({
|
||||
type: 'item.completed',
|
||||
item: {
|
||||
id: 'item_msg',
|
||||
type: 'agent_message',
|
||||
text: `Codex mock handled (${imageCount} image): ${input}`,
|
||||
},
|
||||
})}\n`);
|
||||
|
||||
process.stdout.write(`${JSON.stringify({
|
||||
type: 'turn.completed',
|
||||
usage: { input_tokens: 10, cached_input_tokens: 2, output_tokens: 5 },
|
||||
})}\n`);
|
||||
})();
|
||||
Reference in New Issue
Block a user