feat: surface main agent results on landing pages
This commit is contained in:
@@ -4444,12 +4444,30 @@ function captureMainAgentLandingContext(action, targetScreen) {
|
||||
function renderMainAgentLandingNotice(screenKey) {
|
||||
const landing = appState.mainAgentLanding;
|
||||
if (!landing || landing.screen !== screenKey) return "";
|
||||
const landingRun = safeArray(appState.onelinerRuns).find((item) => item.id === landing.runId);
|
||||
const resultSections = landingRun?.result?.result_sections && typeof landingRun.result.result_sections === "object"
|
||||
? landingRun.result.result_sections
|
||||
: {};
|
||||
const cards = safeArray(resultSections.cards).slice(0, 2);
|
||||
const recommendedAction = landingRun?.result?.recommended_action || null;
|
||||
return `
|
||||
<div class="task-item compact" style="margin-bottom:18px; border-color:rgba(59, 130, 246, 0.24); background:linear-gradient(180deg, rgba(239, 246, 255, 0.98) 0%, rgba(255, 255, 255, 0.98) 100%);">
|
||||
<h4>你正在处理主 Agent 的结果</h4>
|
||||
<p>${escapeHtml(landing.summary || landing.title || "这是主 Agent 刚刚给出的下一步落点。")}</p>
|
||||
${cards.length ? `
|
||||
<div class="detail-grid" style="margin-top:12px;">
|
||||
${cards.map((card, index) => `
|
||||
<div class="task-item compact">
|
||||
<h4>${escapeHtml(card?.title || (index === 0 ? "当前焦点" : "结果摘要"))}</h4>
|
||||
<p>${escapeHtml(card?.body || "主 Agent 已整理出一条可继续推进的建议。")}</p>
|
||||
</div>
|
||||
`).join("")}
|
||||
</div>
|
||||
` : ""}
|
||||
<div class="task-meta">
|
||||
${landing.title ? `<span class="tag blue">${escapeHtml(landing.title)}</span>` : ""}
|
||||
${resultSections.workstream_label ? `<span class="tag">${escapeHtml(resultSections.workstream_label)}</span>` : ""}
|
||||
${recommendedAction?.label ? `<span class="tag blue">${escapeHtml(recommendedAction.label)}</span>` : ""}
|
||||
${landing.runId ? `<span class="tag clickable-tag" data-action="open-oneliner-run-result" data-run-id="${escapeHtml(landing.runId)}">查看结果</span>` : ""}
|
||||
<span class="tag clickable-tag" data-action="dismiss-main-agent-landing">收起提示</span>
|
||||
</div>
|
||||
|
||||
@@ -261,11 +261,14 @@ test("main agent route actions keep landing context and destination screens rend
|
||||
const execution = extractBetween(APP, "function renderOneLinerExecutionPayloadHtml(payload)", "function parseOneLinerActionPayloadValue(value)");
|
||||
const actions = extractBetween(APP, "document.addEventListener(\"click\", async (event) => {", "document.addEventListener(\"submit\", async (event) => {");
|
||||
const strategy = extractBetween(APP, "function renderStrategyScreen()", "function renderCreditsScreen()");
|
||||
const landing = extractBetween(APP, "function renderMainAgentLandingNotice(screenKey)", "function renderEmptyState(title, description)");
|
||||
const production = extractBetween(APP, "function renderProductionScreen()", "function renderReviewScreen()");
|
||||
assert.match(execution, /data-main-agent-run-id/);
|
||||
assert.match(actions, /captureMainAgentLandingContext\(action,\s*"goto-production"/);
|
||||
assert.match(actions, /captureMainAgentLandingContext\(action,\s*"goto-strategy"/);
|
||||
assert.match(actions, /name === "dismiss-main-agent-landing"/);
|
||||
assert.match(landing, /result_sections/);
|
||||
assert.match(landing, /detail-grid/);
|
||||
assert.match(strategy, /renderMainAgentLandingNotice\("strategy"\)/);
|
||||
assert.match(production, /renderMainAgentLandingNotice\("production"\)/);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user