fix: tighten web-probe observe diagnostics
This commit is contained in:
@@ -813,7 +813,7 @@ async function samplePage(reason) {
|
||||
const activeSessionId = activeSession ? activeSession.getAttribute("data-session-id") : null;
|
||||
const messageSelector = '[data-testid*="message" i], [class*="message" i], article, [role="article"]';
|
||||
const traceSelector = '[data-testid*="trace" i], [class*="trace" i], [data-trace-id], [data-testid*="event" i]';
|
||||
const diagnosticSelector = '.api-error-diagnostic, .api-error-diagnostic.message-diagnostic, .api-error-diagnostic.projection-diagnostic, [data-testid="api-error-diagnostic" i], [data-testid="error-diagnostic" i], [role="alert"], .alert, .warning, .error';
|
||||
const diagnosticSelector = '.api-error-diagnostic, [class*="api-error-diagnostic" i], [class*="message-diagnostic" i], [class*="projection-diagnostic" i], [data-testid="api-error-diagnostic" i], [data-testid="error-diagnostic" i], [data-testid*="diagnostic" i], [role="alert"], [aria-live="assertive"]';
|
||||
const messages = summarize(messageSelector, 20);
|
||||
const traceRows = summarize(traceSelector, 30);
|
||||
const diagnostics = Array.from(document.querySelectorAll(diagnosticSelector)).filter(visible).slice(-40).map((element, index) => {
|
||||
@@ -1720,6 +1720,28 @@ function parseDomDiagnosticSummary(text) {
|
||||
};
|
||||
}
|
||||
|
||||
function isDomDiagnosticSampleText(text) {
|
||||
const value = String(text || "").replace(/\s+/g, " ").trim();
|
||||
if (!value) return false;
|
||||
const strongDiagnostic = [
|
||||
/\bHTTP\s+[45][0-9]{2}\b(?:[\s\S]{0,120}\btrace_id=|\b)/iu,
|
||||
/\btrace_id=(?:trc_[A-Za-z0-9_-]+|[a-f0-9]{16,64})\b/iu,
|
||||
/workbench\s+turn\s*超过\s*\d+ms\s*无新活动/iu,
|
||||
/\bturn\s*超过\b[\s\S]{0,120}\b无新活动\b/iu,
|
||||
/\bprojection-resume:sync-failed\b/iu,
|
||||
/\bAgentRun\s+GET\b[\s\S]*\/result\b[\s\S]*timed out after\s+\d+ms\b/iu,
|
||||
/\bFailed to fetch\b/iu,
|
||||
/\bFailed to load resource\b[\s\S]{0,180}\bstatus of\s+[45][0-9]{2}\b/iu,
|
||||
/\bserver responded with a status of\s+[45][0-9]{2}\b/iu,
|
||||
/Code Agent\b[\s\S]{0,120}(?:无法连接上游|请求已结束)/iu
|
||||
].some((pattern) => pattern.test(value));
|
||||
if (!strongDiagnostic) return false;
|
||||
const looksLikeToolStdout = /\b(?:stdout|stderr):/iu.test(value)
|
||||
&& /(?:\becho\s+["']?===|\bnode\s+|\.tspy\b|tspy\/|===\s*[A-Za-z0-9_.-]+\s*===)/iu.test(value);
|
||||
if (!looksLikeToolStdout) return true;
|
||||
return /\b(?:trace_id=|HTTP\s+[45][0-9]{2}|workbench\s+turn\s*超过|projection-resume:sync-failed|Failed to fetch|Failed to load resource|server responded with a status of\s+[45][0-9]{2}|Code Agent\b[\s\S]{0,120}(?:无法连接上游|请求已结束))\b/iu.test(value);
|
||||
}
|
||||
|
||||
function buildRuntimeAlerts(samples, control, network, consoleEvents, errors) {
|
||||
const promptTimes = control
|
||||
.filter((item) => item.type === "sendPrompt" && item.phase === "completed")
|
||||
@@ -1767,7 +1789,7 @@ function buildRuntimeAlerts(samples, control, network, consoleEvents, errors) {
|
||||
});
|
||||
}
|
||||
}
|
||||
const texts = sampleTexts(sample).filter(isDiagnosticText);
|
||||
const texts = sampleTexts(sample).filter(isDomDiagnosticSampleText);
|
||||
for (const text of texts.slice(0, 4)) {
|
||||
const parsedDiagnostic = parseDomDiagnosticSummary(text);
|
||||
domDiagnostics.push({
|
||||
|
||||
Reference in New Issue
Block a user