fix: surface web probe target readiness blockers

This commit is contained in:
Codex
2026-07-02 07:37:54 +00:00
parent acb60dc60d
commit 457cbd1e38
5 changed files with 146 additions and 7 deletions
@@ -56,6 +56,7 @@ function renderWebObserveStatusTable(value: Record<string, unknown>): string {
const next = record(value.next);
const heartbeatError = record(heartbeat?.error) ?? record(manifest?.error);
const heartbeatAuth = record(heartbeat?.auth) ?? record(heartbeatError?.auth);
const heartbeatReadiness = record(heartbeatError?.readiness);
const manifestNetwork = record(manifest?.network);
const manifestBrowser = record(manifestNetwork?.browser);
const manifestProxy = record(manifestNetwork?.proxy);
@@ -114,6 +115,24 @@ function renderWebObserveStatusTable(value: Record<string, unknown>): string {
]]),
"",
] : []),
...(heartbeatReadiness !== null ? [
"Target readiness:",
webObserveTable(["REASON", "PATH", "BLOCKED", "READY", "SHELL", "CREATE", "RAIL", "INPUT", "TAB", "LOGIN", "BODY_BYTES", "BODY_HASH"], [[
heartbeatReadiness.reason,
webObserveShort(webObserveText(heartbeatReadiness.path), 40),
heartbeatReadiness.blockedReason,
heartbeatReadiness.readyState,
heartbeatReadiness.workbenchShellVisible,
heartbeatReadiness.sessionCreateVisible === true ? "visible" : heartbeatReadiness.sessionCreatePresent === true ? "hidden" : "missing",
heartbeatReadiness.sessionRailCollapsed === true ? "collapsed" : heartbeatReadiness.sessionRailPresent === true ? "present" : "missing",
heartbeatReadiness.commandInputPresent,
heartbeatReadiness.activeTabPresent,
heartbeatReadiness.loginVisible,
heartbeatReadiness.bodyTextBytes,
webObserveShort(webObserveText(heartbeatReadiness.bodyTextHash), 24),
]]),
"",
] : []),
...(heartbeatAuth !== null ? [
"Auth progress:",
webObserveTable(["PHASE", "RETRY", "DELAY_MS", "STATUS", "RETRYABLE", "COOKIE", "EXHAUSTED", "LAST_ERROR"], [[
@@ -187,6 +206,10 @@ function renderWebObserveCommandTable(value: Record<string, unknown>): string {
const observerCommand = record(value.observerCommand);
const observer = record(value.observer);
const result = record(observer?.result);
const error = record(observer?.error);
const details = record(error?.details);
const rawReadiness = record(error?.navigationReadiness) ?? record(details?.readiness) ?? record(details?.readinessAfterWait) ?? record(details?.readinessBeforeClick);
const readiness = record(rawReadiness?.snapshot) ?? rawReadiness;
const id = webObserveText(value.id);
const full = value.full === true;
const lines = [
@@ -202,6 +225,24 @@ function renderWebObserveCommandTable(value: Record<string, unknown>): string {
webObserveShort(webObserveText(observerCommand?.textHash), 24),
webObserveShort(webObserveText(result?.mark ?? result?.currentUrl ?? observer?.error ?? observer?.queued), 80),
]]),
...(readiness !== null ? [
"",
"Target readiness:",
webObserveTable(["REASON", "PATH", "BLOCKED", "READY", "SHELL", "CREATE", "RAIL", "INPUT", "TAB", "LOGIN", "BODY_BYTES", "BODY_HASH"], [[
rawReadiness?.reason ?? readiness.reason,
webObserveShort(webObserveText(readiness.path), 40),
readiness.blockedReason,
readiness.readyState,
readiness.workbenchShellVisible,
readiness.sessionCreateVisible === true ? "visible" : readiness.sessionCreatePresent === true ? "hidden" : "missing",
readiness.sessionRailCollapsed === true ? "collapsed" : readiness.sessionRailPresent === true ? "present" : "missing",
readiness.commandInputPresent,
readiness.activeTabPresent,
readiness.loginVisible,
readiness.bodyTextBytes,
webObserveShort(webObserveText(readiness.bodyTextHash), 24),
]]),
] : []),
...(full ? [
"",
"Full command result:",