Add theme options and timed agent dividers

This commit is contained in:
shiyue
2026-06-14 12:16:37 +08:00
parent 382c5accb7
commit 3a4006b7d3
6 changed files with 883 additions and 19 deletions

View File

@@ -18,6 +18,26 @@ function createCodexAppRuntime(deps = {}) {
wsSend(entry.ws, { ...payload, sessionId });
}
function formatAgentMessageDividerTime(date = new Date()) {
const pad = (value) => String(value).padStart(2, '0');
return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
}
function createAgentMessageDivider() {
const time = formatAgentMessageDividerTime();
return `<div class="agent-message-divider" data-divider-time="${time}"><span>${time}</span></div>`;
}
function hasAgentMessageBoundaryAtEnd(text) {
return /\n\s*(?:---|\*\*\*|___)\s*$/.test(text)
|| /(?:^|\n)\s*<div\s+class=["']agent-message-divider["'][\s\S]*?<\/div>\s*$/.test(text);
}
function hasAgentMessageBoundaryAtStart(text) {
return /^\s*(?:---|\*\*\*|___)\s*\n/.test(text)
|| /^\s*<div\s+class=["']agent-message-divider["'][\s\S]*?<\/div>\s*/.test(text);
}
function itemKind(item) {
switch (item?.type) {
case 'commandExecution':
@@ -263,8 +283,8 @@ function createCodexAppRuntime(deps = {}) {
if (entry.agentMessageItems?.get(itemId)) return '';
const currentText = entry.fullText || '';
if (!/\S/.test(currentText)) return '';
const hasVisualBoundary = /\n\s*(?:---|\*\*\*|___)\s*$/.test(currentText) || /^\s*(?:---|\*\*\*|___)\s*\n/.test(String(nextText || ''));
return hasVisualBoundary ? '' : '\n\n---\n\n';
const hasVisualBoundary = hasAgentMessageBoundaryAtEnd(currentText) || hasAgentMessageBoundaryAtStart(String(nextText || ''));
return hasVisualBoundary ? '' : `\n\n${createAgentMessageDivider()}\n\n`;
}
function updateToolResult(entry, sessionId, itemId, result, done = false, patch = {}) {