main.js · part 246
Full reference60 text occurrences from desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, part 246. Every entry preserves the shipped literal and its saved verdict or selection reason.
File contents and all parts · All files
Shipped text
http/2 stream
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8027903–8027918, SHA-256 2762569d73b5d525.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: http/2 stream
http/2 stream
Session closed with error code
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8027945–8027977, SHA-256 a2e8e54b59bad706.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Session closed with error code
Session closed with error code
connection aborted
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8027978–8027998, SHA-256 6e83669ed9776cf3.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: connection aborted
connection aborted
Conversation data missing
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8029943–8029970, SHA-256 b5d4ed4aea55219c.
Jev judged not model-facing (confidence 0.06; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Conversation data missing
Conversation data missing
Context summarization failed
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8030247–8030277, SHA-256 7b925bc7fb30f9c7.
Jev judged not model-facing (confidence 0.04; role human). This is a classifier judgment, not proof of delivery.
Readable text: Context summarization failed
Context summarization failed
${r} ${n}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8031240–8031251, SHA-256 3271a2171db6a4d7.
Jev judged not model-facing (confidence 0.1; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: ${r} ${n}
${r} ${n}
${r.name}: ${r.message}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8031423–8031448, SHA-256 32e678f99cc6f5b3.
Jev judged not model-facing (confidence 0.08; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: ${r.name}: ${r.message}
${r.name}: ${r.message}
Prepared RequestContext blob references
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8032152–8032193, SHA-256 8f29ef70c3d44cc0.
Jev judged not model-facing (confidence 0.23; role parameter). This is a classifier judgment, not proof of delivery.
Readable text: Prepared RequestContext blob references
Prepared RequestContext blob references
Serialized RequestContext bytes staged by the client
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8032261–8032315, SHA-256 1777e5929c301026.
Jev judged not model-facing (confidence 0.13; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Serialized RequestContext bytes staged by the client
Serialized RequestContext bytes staged by the client
Time to hydrate, serialize, and hash RequestContext
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8032392–8032445, SHA-256 a60170720b34c6b1.
Jev judged not model-facing (confidence 0.09; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Time to hydrate, serialize, and hash RequestContext
Time to hydrate, serialize, and hash RequestContext
Number of bidirectional stream stalls detected
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8032556–8032604, SHA-256 ca10c0660d374d29.
Jev judged not model-facing (confidence 0.2; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Number of bidirectional stream stalls detected
Number of bidirectional stream stalls detected
Duration of stream stalls in milliseconds
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8032721–8032764, SHA-256 8266820110d199c8.
Jev judged not model-facing (confidence 0.22; role parameter). This is a classifier judgment, not proof of delivery.
Readable text: Duration of stream stalls in milliseconds
Duration of stream stalls in milliseconds
Number of streams that experienced at least one stall
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8032858–8032913, SHA-256 495f37677ac9a8f8.
Jev judged not model-facing (confidence 0.24; role parameter). This is a classifier judgment, not proof of delivery.
Readable text: Number of streams that experienced at least one stall
Number of streams that experienced at least one stall
Total number of streams monitored
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8032987–8033022, SHA-256 522ac1a350e8f9a9.
Jev judged not model-facing (confidence 0.11; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Total number of streams monitored
Total number of streams monitored
Cancelled during backoff
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8033212–8033238, SHA-256 0f596524bb7f7158.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Cancelled during backoff
Cancelled during backoff
Cancelled during backoff · byte 8033346
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8033346–8033372, SHA-256 0f596524bb7f7158.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Cancelled during backoff
Cancelled during backoff
${e.logging.tag} Endless retry delay selected
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8033941–8033990, SHA-256 dc224cf9e068e488.
Jev judged not model-facing (confidence 0.05; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: [${e.logging.tag}] Endless retry delay selected
[${e.logging.tag}] Endless retry delay selected
${e.logging.tag} Retrying attempt ${f}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8034769–8034811, SHA-256 293e2210b2b73e8f.
Jev judged not model-facing (confidence 0.05; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: [${e.logging.tag}] Retrying attempt ${f}
[${e.logging.tag}] Retrying attempt ${f}
${e.logging.tag} Resuming from checkpoint
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8035022–8035067, SHA-256 5625efc3f638e594.
Jev judged not model-facing (confidence 0.05; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: [${e.logging.tag}] Resuming from checkpoint
[${e.logging.tag}] Resuming from checkpoint
${e.logging.tag} Initial request
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8035133–8035169, SHA-256 875d4b936c60e33a.
Jev judged not model-facing (confidence 0.05; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: [${e.logging.tag}] Initial request
[${e.logging.tag}] Initial request
${e.logging.tag} Resuming from checkpoint · byte 8035388
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8035388–8035433, SHA-256 5625efc3f638e594.
Jev judged not model-facing (confidence 0.05; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: [${e.logging.tag}] Resuming from checkpoint
[${e.logging.tag}] Resuming from checkpoint
${e.logging.tag} Request successful
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8035701–8035740, SHA-256 c95cc2e13e957272.
Jev judged not model-facing (confidence 0.05; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: [${e.logging.tag}] Request successful
[${e.logging.tag}] Request successful
${e.logging.tag} Resume attempts are streaming but not producing checkpoints;
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8036226–8036333, SHA-256 9c69e40198857e89.
Jev judged not model-facing (confidence 0.05; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: [${e.logging.tag}] Resume attempts are streaming but not producing checkpoints; stopping automatic resume
[${e.logging.tag}] Resume attempts are streaming but not producing checkpoints; stopping automatic resume
Agent turn stopped after repeated resume attempts made no progress
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8036483–8036551, SHA-256 1d62fb096983dcd8.
Jev judged not model-facing (confidence 0.07; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Agent turn stopped after repeated resume attempts made no progress
Agent turn stopped after repeated resume attempts made no progress
Agent stopped retrying
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8036618–8036642, SHA-256 37ad1b39e0581014.
Jev judged not model-facing (confidence 0.06; role human). This is a classifier judgment, not proof of delivery.
Readable text: Agent stopped retrying
Agent stopped retrying
The connection was interrupted repeatedly without saving progress, so the agent
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8036650–8036818, SHA-256 aafbb711cd5d16c5.
Jev judged not model-facing (confidence 0.15; role human). This is a classifier judgment, not proof of delivery.
Readable text: The connection was interrupted repeatedly without saving progress, so the agent stopped to avoid repeating the same work. Retry to continue from the last saved state.
The connection was interrupted repeatedly without saving progress, so the agent stopped to avoid repeating the same work. Retry to continue from the last saved state.
RETRY (countAsServerError=${k.countAsServerError}, countAsTransportError=${k.cou
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8036879–8036981, SHA-256 554a127152a7a0e6.
Jev judged not model-facing (confidence 0.1; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: RETRY (countAsServerError=${k.countAsServerError}, countAsTransportError=${k.countAsTransportError})
RETRY (countAsServerError=${k.countAsServerError}, countAsTransportError=${k.countAsTransportError})
THROW ${k.error.kind}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8036982–8037005, SHA-256 85f49042bcdfc8ad.
Jev judged not model-facing (confidence 0.09; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: THROW ${k.error.kind}
THROW ${k.error.kind}
AGENT ERROR DIAGNOSTICS requestId=${g} originalRequestId=${a} decision=${o}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8037017–8037096, SHA-256 b579489cd076c94e.
Jev judged not model-facing (confidence 0.09; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: [AGENT_ERROR_DIAGNOSTICS] requestId=${g} originalRequestId=${a} decision=${o}
[AGENT_ERROR_DIAGNOSTICS] requestId=${g} originalRequestId=${a} decision=${o}
${e.logging.tag} onErrorNotRetried callback failed
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8037674–8037728, SHA-256 230f7872fcbe72a7.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: [${e.logging.tag}] onErrorNotRetried callback failed
[${e.logging.tag}] onErrorNotRetried callback failed
${e.logging.tag} Error not retryable
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8037809–8037849, SHA-256 1b061df02a35e354.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: [${e.logging.tag}] Error not retryable
[${e.logging.tag}] Error not retryable
${e.logging.tag} Terminal checkpoint received before retryable error; completi
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8038100–8038209, SHA-256 90cff92293e90875.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: [${e.logging.tag}] Terminal checkpoint received before retryable error; completing without automatic resume
[${e.logging.tag}] Terminal checkpoint received before retryable error; completing without automatic resume
apiKeyHelper script produced empty stdout: ${e.scriptPath}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8046950–8047010, SHA-256 270a251160b0dce2.
Jev judged not model-facing (confidence 0.05; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: apiKeyHelper script produced empty stdout: ${e.scriptPath}
apiKeyHelper script produced empty stdout: ${e.scriptPath}
apiKeyHelper script failed: ${t}: ${ixe(r)}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8047180–8047225, SHA-256 a83ea0cd876269f3.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: apiKeyHelper script failed: ${t}: ${ixe(r)}
apiKeyHelper script failed: ${t}: ${ixe(r)}
Bearer ${r}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8047466–8047479, SHA-256 08cf4b46e2c36c25.
Jev judged not model-facing (confidence 0.09; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Bearer ${r}
Bearer ${r}
apiKeyHelper script path must not be empty
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8047557–8047601, SHA-256 f3470be069a73ef3.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: apiKeyHelper script path must not be empty
apiKeyHelper script path must not be empty
apiKeyHelper script is not readable: ${t}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8047670–8047713, SHA-256 cf6db544c9a5f8fc.
Jev judged not model-facing (confidence 0.07; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: apiKeyHelper script is not readable: ${t}
apiKeyHelper script is not readable: ${t}
apiKeyHelper script failed to start
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8047959–8047996, SHA-256 c90c48c4b65a35d2.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: apiKeyHelper script failed to start
apiKeyHelper script failed to start
apiKeyHelper script exited unsuccessfully: ${function(e,t){if(null ==e)return ex
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8048152–8048397, SHA-256 21ac3e7e1752cfc6.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable form: a shipped code or data literal beginning “apiKeyHelper script exited unsuccessfully: ${function(e,t){if(null ==e)return ex”. The exact literal is preserved below; its runtime purpose requires the surrounding source.
apiKeyHelper script exited unsuccessfully: ${function(e,t){if(null!==e)return`exit code ${e}`;return null!==t?`signal ${t}`:"unknown exit status"}(t,n)}${function(e){const t=e.trim();if(!t)return"";return`; stderr: ${ixe(t).slice(0,1e3)}`}(a)}
exit code ${e}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8048230–8048246, SHA-256 beb4767020093535.
Jev judged not model-facing (confidence 0.05; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: exit code ${e}
exit code ${e}
signal ${t}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8048263–8048276, SHA-256 1cc2f420a5903f2f.
Jev judged not model-facing (confidence 0.07; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: signal ${t}
signal ${t}
unknown exit status
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8048277–8048298, SHA-256 cd2d0ef4871662cf.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: unknown exit status
unknown exit status
; stderr: ${ixe(t).slice(0,1e3)}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8048357–8048391, SHA-256 8179aeb3cb752cc6.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: ; stderr: ${ixe(t).slice(0,1e3)}
; stderr: ${ixe(t).slice(0,1e3)}
${JSON.stringify(t)}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8058346–8058370, SHA-256 c0a235a4dedbf2ea.
Jev judged not model-facing (confidence 0.05; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: ${JSON.stringify(t)}
${JSON.stringify(t)}
Cursor Agent Local Requests
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8058924–8058953, SHA-256 ec74571b5c777531.
Jev judged not model-facing (confidence 0.09; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Cursor Agent Local Requests
Cursor Agent Local Requests
doctype html html lang="en" head meta charset="utf-8" / meta name="vie
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8058960–8078935, SHA-256 de3bf805d6b7a008.
Jev judged not model-facing (confidence 0.03; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: <!doctype html\> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>${n}</title> <style> :root { color-scheme: light dark; font-family: ui-sans-serif, sy…
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>${n}</title>
<style>
:root { color-scheme: light dark; font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
body { margin: 0; background: Canvas; color: CanvasText; }
header { position: sticky; top: 0; z-index: 1; padding: 16px 20px; border-bottom: 1px solid color-mix(in srgb, CanvasText 16%, transparent); background: color-mix(in srgb, Canvas 92%, transparent); backdrop-filter: blur(12px); }
h1 { margin: 0 0 6px; font-size: 18px; }
.path { margin: 0; color: color-mix(in srgb, CanvasText 62%, transparent); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; }
main { padding: 16px 20px 32px; }
.summary { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
.pill { border: 1px solid color-mix(in srgb, CanvasText 16%, transparent); border-radius: 999px; padding: 5px 10px; font-size: 12px; }
.run { border: 1px solid color-mix(in srgb, CanvasText 22%, transparent); border-radius: 14px; margin: 0 0 18px; overflow: hidden; }
.run-header { display: flex; gap: 12px; align-items: center; justify-content: space-between; padding: 14px; background: color-mix(in srgb, CanvasText 7%, transparent); }
.run-title { margin: 0; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; overflow-wrap: anywhere; }
.run-meta { margin: 4px 0 0; color: color-mix(in srgb, CanvasText 62%, transparent); font-size: 12px; }
.upload-button { flex: none; border: 1px solid color-mix(in srgb, CanvasText 24%, transparent); border-radius: 7px; padding: 7px 10px; color: CanvasText; background: Canvas; font-size: 12px; font-weight: 600; text-decoration: none; }
.upload-button:hover { background: color-mix(in srgb, CanvasText 8%, transparent); }
.attempt { margin: 12px; border: 1px solid color-mix(in srgb, CanvasText 14%, transparent); border-radius: 10px; overflow: hidden; }
.attempt-title { padding: 9px 12px; font-size: 12px; font-weight: 600; background: color-mix(in srgb, CanvasText 4%, transparent); }
.invocation { margin: 10px; }
.invocation-title { margin: 0 0 7px; color: color-mix(in srgb, CanvasText 70%, transparent); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; overflow-wrap: anywhere; }
.request { border: 1px solid color-mix(in srgb, CanvasText 18%, transparent); border-radius: 9px; margin: 0 0 10px; overflow: hidden; }
.request-header { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 12px 14px; background: color-mix(in srgb, CanvasText 5%, transparent); }
.method { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-weight: 700; }
.url { overflow-wrap: anywhere; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; }
.status { border-radius: 999px; padding: 4px 8px; font-size: 12px; background: color-mix(in srgb, CanvasText 9%, transparent); }
.status.error { background: color-mix(in srgb, red 25%, transparent); }
details { border-top: 1px solid color-mix(in srgb, CanvasText 12%, transparent); }
summary { cursor: pointer; padding: 10px 14px; font-weight: 600; }
pre { margin: 0; padding: 0 14px 14px; overflow: auto; font-size: 12px; line-height: 1.45; }
.json { padding: 0 14px 14px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; line-height: 1.45; overflow: auto; }
.json details { border: 0; margin-left: 16px; }
.json summary { padding: 2px 0; font-weight: 400; }
.json-row { display: flex; gap: 8px; padding: 1px 0; }
.json-key { color: color-mix(in srgb, CanvasText 62%, transparent); }
.json-string { color: #2f8f46; }
.json-number, .json-boolean { color: #8b5cf6; }
.json-null { color: color-mix(in srgb, CanvasText 48%, transparent); }
.tool-list { padding: 0 14px 14px; }
.tool-row { border: 0; border-radius: 8px; margin: 4px 0; background: color-mix(in srgb, CanvasText 4%, transparent); }
.tool-row summary { display: grid; grid-template-columns: minmax(140px, max-content) minmax(0, 1fr); gap: 8px 12px; align-items: baseline; padding: 8px 10px; }
.tool-name { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-weight: 700; }
.tool-description { color: color-mix(in srgb, CanvasText 70%, transparent); font-weight: 400; overflow-wrap: anywhere; }
.tool-kind { color: color-mix(in srgb, CanvasText 58%, transparent); font-weight: 400; }
.tool-detail-body { padding: 0 10px 10px; }
.tool-detail-body details { border: 0; margin-top: 6px; }
.tool-detail-body summary { display: block; padding: 4px 0; }
.tool-description-text { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 12px; line-height: 1.45; }
.message { padding: 12px 14px; border-top: 1px solid color-mix(in srgb, CanvasText 12%, transparent); }
.message-label { margin: 0 0 6px; color: color-mix(in srgb, CanvasText 62%, transparent); font-size: 11px; font-weight: 700; text-transform: uppercase; }
.message-text { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13px; line-height: 1.5; }
.empty { color: color-mix(in srgb, CanvasText 62%, transparent); }
</style>
</head>
<body>
<header>
<h1>${n}</h1>
<p class="path">${s=e,s.replace(/[&<>"']/gu,e=>{switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";case"'":return"'";default:return e}})}</p>
</header>
<main>
<div id="summary" class="summary"></div>
<div id="runs"></div>
</main>
<script>
// EMBEDDED_JSONL holds a bounded tail of the log. The agent re-embeds this
// tail on each append, so the page live-updates by re-reading itself — which
// works over file:// (where the viewer is normally opened and fetching a
// sibling file is blocked). Embedding only the tail keeps each rewrite cheap
// regardless of total log size.
const EMBEDDED_JSONL = ${r};
let currentJsonl = EMBEDDED_JSONL;
renderFromJsonl(currentJsonl);
setInterval(pollForChanges, 500);
function renderFromJsonl(jsonl, openDetails = new Set()) {
const events = jsonl.split("\n").filter(Boolean).map(line => {
try { return JSON.parse(line); } catch (error) { return { type: "parseError", line, error: String(error) }; }
});
const groupedRequests = new Map();
for (const event of events) {
if (!event.httpRequestId) continue;
const group = groupedRequests.get(event.httpRequestId) ?? { httpRequestId: event.httpRequestId };
group[event.type] = event;
groupedRequests.set(event.httpRequestId, group);
}
const runsById = new Map();
const uncorrelatedRequests = [];
for (const group of groupedRequests.values()) {
const request = group.request ?? group.response ?? group.error ?? group.responseBody;
if (!request?.generationUUID) {
uncorrelatedRequests.push(group);
continue;
}
const run = getOrCreateRun(runsById, request.generationUUID, request.conversationId);
const attemptKey = request.attemptRequestId ?? `attempt-${request.attempt ?? "unknown"}`;
const attempt = run.attempts.get(attemptKey) ?? {
attemptRequestId: attemptKey,
attempt: request.attempt,
invocations: new Map(),
};
run.attempts.set(attemptKey, attempt);
const invocationKey = request.invocationId ?? "Provider setup";
const invocation = attempt.invocations.get(invocationKey) ?? {
invocationId: invocationKey,
requests: [],
};
invocation.requests.push(group);
attempt.invocations.set(invocationKey, invocation);
run.latestTimestamp = laterTimestamp(run.latestTimestamp, request.timestamp);
}
for (const event of events) {
if (event.type !== "promptQualityRunSnapshot") continue;
const run = getOrCreateRun(runsById, event.generationUUID, event.conversationId);
run.snapshot = event;
run.latestTimestamp = laterTimestamp(run.latestTimestamp, event.timestamp);
}
const runs = Array.from(runsById.values()).sort((a, b) =>
String(b.latestTimestamp ?? "").localeCompare(String(a.latestTimestamp ?? ""))
);
const groups = Array.from(groupedRequests.values());
document.querySelector("#summary").innerHTML = [
["Events", events.length],
["Runs", runs.length],
["Requests", groups.length],
["Errors", groups.filter(group => group.error).length],
["Auto-refresh", "0.5s"],
].map(([label, value]) => `<span class="pill">${label}: ${value}</span>`).join("");
document.querySelector("#runs").innerHTML = runs.length === 0 && uncorrelatedRequests.length === 0
? '<p class="empty">No requests logged yet. Keep this page open while running the local agent.</p>'
: runs.map(renderRun).join("") + renderUncorrelatedRequests(uncorrelatedRequests);
restoreOpenDetails(openDetails);
}
function getOrCreateRun(runsById, generationUUID, conversationId) {
const existing = runsById.get(generationUUID);
if (existing) return existing;
const run = {
generationUUID,
conversationId,
attempts: new Map(),
snapshot: undefined,
latestTimestamp: undefined,
};
runsById.set(generationUUID, run);
return run;
}
function laterTimestamp(current, candidate) {
if (!candidate) return current;
return !current || candidate > current ? candidate : current;
}
function renderRun(run) {
const snapshot = run.snapshot;
const urlProtocol = snapshot?.urlProtocol === "cursor-dev" ? "cursor-dev" : "cursor";
const uploadLink = snapshot
? urlProtocol + "://local-agent-prompt-quality/upload?generationUUID=" +
encodeURIComponent(run.generationUUID) +
"&nonce=" +
encodeURIComponent(snapshot.capabilityNonce)
: undefined;
const attempts = Array.from(run.attempts.values()).sort(
(a, b) => (a.attempt ?? 0) - (b.attempt ?? 0)
);
const status = snapshot
? `${snapshot.terminalStatus} · ${snapshot.invocationCount} invocation${snapshot.invocationCount === 1 ? "" : "s"}`
: "Run in progress";
return `<section class="run">
<div class="run-header">
<div>
<h2 class="run-title">${escapeHtml(run.generationUUID)}</h2>
<p class="run-meta">${escapeHtml(status)}${run.conversationId ? ` · Conversation ${escapeHtml(run.conversationId)}` : ""}</p>
</div>
${uploadLink ? `<a class="upload-button" href="${escapeAttribute(uploadLink)}">Upload to Prompt Quality</a>` : ""}
</div>
${attempts.map(renderAttempt).join("")}
</section>`;
}
function renderAttempt(attempt) {
const invocations = Array.from(attempt.invocations.values());
return `<section class="attempt">
<div class="attempt-title">Attempt ${escapeHtml(attempt.attempt ?? "?")} · ${escapeHtml(attempt.attemptRequestId)}</div>
${invocations.map(renderInvocation).join("")}
</section>`;
}
function renderInvocation(invocation) {
return `<section class="invocation">
<h3 class="invocation-title">${escapeHtml(invocation.invocationId)}</h3>
${invocation.requests.map(renderGroup).join("")}
</section>`;
}
function renderUncorrelatedRequests(groups) {
if (groups.length === 0) return "";
return `<section class="run">
<div class="run-header"><div><h2 class="run-title">Uncorrelated Provider Requests</h2><p class="run-meta">Auxiliary requests outside an agent run</p></div></div>
<div class="invocation">${groups.map(renderGroup).join("")}</div>
</section>`;
}
async function pollForChanges() {
try {
const viewerUrl = window.location.href.split("#")[0].split("?")[0];
const response = await fetch(`${viewerUrl}?t=${Date.now()}`, { cache: "no-store" });
const nextJsonl = extractEmbeddedJsonl(await response.text());
if (nextJsonl !== undefined && nextJsonl !== currentJsonl) {
const openDetails = captureOpenDetails();
currentJsonl = nextJsonl;
renderFromJsonl(currentJsonl, openDetails);
}
} catch {
// Some browsers restrict file:// fetches. In that case the page remains
// usable as a snapshot and can be manually refreshed.
}
}
function extractEmbeddedJsonl(html) {
const match = html.match(/const EMBEDDED_JSONL = ([\s\S]*?);\n\s*let currentJsonl/u);
if (!match) return undefined;
try { return JSON.parse(match[1]); } catch { return undefined; }
}
function captureOpenDetails() {
return new Set(Array.from(document.querySelectorAll("details[data-detail-key][open]")).map(details => details.dataset.detailKey));
}
function restoreOpenDetails(openDetails) {
for (const details of document.querySelectorAll("details[data-detail-key]")) {
details.open = openDetails.has(details.dataset.detailKey);
}
}
function renderGroup(group) {
const request = group.request ?? {};
const response = group.response;
const error = group.error;
const statusText = error ? `Error · ${error.durationMs ?? "?"}ms` : response ? `${response.status} ${response.statusText} · ${response.durationMs}ms` : "Pending";
return `<section class="request">
<div class="request-header">
<span class="method">${escapeHtml(request.method ?? "?")}</span>
<span class="url">${escapeHtml(request.url ?? group.httpRequestId)}</span>
<span class="status ${error ? "error" : ""}">${escapeHtml(statusText)}</span>
</div>
${request.text ? renderMessage("User message", request.text) : ""}
${group.responseBody?.text ? renderMessage("Agent response", group.responseBody.text) : ""}
${renderResponseToolCalls(group.responseBody?.toolCalls)}
${request.generationUUID ? renderDetails("Correlation", {
httpRequestId: request.httpRequestId,
generationUUID: request.generationUUID,
attemptRequestId: request.attemptRequestId,
attempt: request.attempt,
conversationId: request.conversationId,
invocationId: request.invocationId,
}, `${group.httpRequestId}:correlation`) : ""}
${renderDetails("Request headers", request.headers, `${group.httpRequestId}:requestHeaders`)}
${renderToolsDetails(request.body, `${group.httpRequestId}:requestTools`)}
${renderDetails("Request body", request.body, `${group.httpRequestId}:requestBody`)}
${response ? renderDetails("Response headers", response.headers, `${group.httpRequestId}:responseHeaders`) : ""}
${group.responseBody ? renderDetails("Response body", group.responseBody.body, `${group.httpRequestId}:responseBody`) : ""}
${error ? renderDetails("Error", error.error, `${group.httpRequestId}:error`) : ""}
</section>`;
}
function renderMessage(label, text) {
return `<div class="message"><p class="message-label">${escapeHtml(label)}</p><p class="message-text">${escapeHtml(text)}</p></div>`;
}
function renderResponseToolCalls(toolCalls) {
if (!Array.isArray(toolCalls)) return "";
return toolCalls.map(toolCall => {
const args = typeof toolCall.arguments === "string"
? toolCall.arguments
: JSON.stringify(toolCall.arguments, undefined, 2);
return renderMessage("Tool call · " + (toolCall.name ?? "unknown"), args ?? "");
}).join("");
}
function renderDetails(label, value, detailKey) {
return `<details data-detail-key="${escapeAttribute(detailKey)}"><summary>${escapeHtml(label)}</summary><div class="json">${renderJson(value, undefined, detailKey + ":json")}</div></details>`;
}
function renderToolsDetails(body, detailKey) {
const tools = body && typeof body === "object" && Array.isArray(body.tools) ? body.tools : undefined;
if (!tools || tools.length === 0) return "";
return `<details data-detail-key="${escapeAttribute(detailKey)}"><summary>Request tools (${tools.length})</summary><div class="tool-list">${tools.map((tool, index) => renderTool(tool, detailKey + ":" + index)).join("")}</div></details>`;
}
function renderTool(tool, detailKey) {
const info = describeTool(tool);
return `<details class="tool-row" data-detail-key="${escapeAttribute(detailKey)}"><summary><span class="tool-name">${escapeHtml(info.name)}</span><span class="tool-kind">${escapeHtml(info.kind)}</span></summary><div class="tool-detail-body">${info.description ? `<details data-detail-key="${escapeAttribute(detailKey + ":description")}"><summary>Description</summary><p class="tool-description-text">${escapeHtml(info.description)}</p></details>` : ""}<details data-detail-key="${escapeAttribute(detailKey + ":schema")}"><summary>Full schema</summary><div class="json">${renderJson(tool, undefined, detailKey + ":json")}</div></details></div></details>`;
}
function describeTool(tool) {
if (!tool || typeof tool !== "object") {
return { name: "unknown", kind: "", description: "" };
}
const fn = tool.function && typeof tool.function === "object" ? tool.function : undefined;
const name = typeof fn?.name === "string"
? fn.name
: typeof tool.name === "string"
? tool.name
: "unknown";
const kind = typeof tool.type === "string" ? tool.type : "";
const description = typeof fn?.description === "string"
? fn.description
: typeof tool.description === "string"
? tool.description
: "";
return { name, kind, description };
}
function renderJson(value, label, detailKey) {
const labelPrefix = label === undefined ? "" : `<span class="json-key">${escapeHtml(label)}:</span>`;
if (Array.isArray(value)) {
return `<details data-detail-key="${escapeAttribute(detailKey)}"><summary>${labelPrefix} Array(${value.length})</summary>${value.map((item, index) => renderJson(item, String(index), detailKey + ":" + index)).join("")}</details>`;
}
if (value && typeof value === "object") {
const entries = Object.entries(value);
return `<details data-detail-key="${escapeAttribute(detailKey)}"><summary>${labelPrefix} Object(${entries.length})</summary>${entries.map(([key, nested]) => renderJson(nested, key, detailKey + ":" + key)).join("")}</details>`;
}
return `<div class="json-row">${labelPrefix}<span class="${jsonScalarClass(value)}">${escapeHtml(JSON.stringify(value))}</span></div>`;
}
function jsonScalarClass(value) {
if (value === null) return "json-null";
return `json-${typeof value}`;
}
function escapeHtml(value) {
return String(value).replace(/[&<>"']/g, char => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }[char]));
}
function escapeAttribute(value) {
return escapeHtml(value);
}
</script>
</body>
</html>
Bearer ${e.apiKey}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8082092–8082112, SHA-256 01b0e0b8927f64fa.
Jev judged not model-facing (confidence 0.08; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Bearer ${e.apiKey}
Bearer ${e.apiKey}
Too many redirects while fetching URL.
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8084033–8084073, SHA-256 667ce591a29c7adf.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Too many redirects while fetching URL.
Too many redirects while fetching URL.
Cannot fetch from localhost (${vEe(e)}) in local agent mode.
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8084415–8084477, SHA-256 1a37b8ab6c79c7fe.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Cannot fetch from localhost (${vEe(e)}) in local agent mode.
Cannot fetch from localhost (${vEe(e)}) in local agent mode.
Cannot fetch from private or loopback IP (${vEe(e)}) in local agent mode.
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8084505–8084580, SHA-256 f465ecb54939b394.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Cannot fetch from private or loopback IP (${vEe(e)}) in local agent mode.
Cannot fetch from private or loopback IP (${vEe(e)}) in local agent mode.
Could not resolve host (${vEe(e)}).
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8084684–8084721, SHA-256 42b63081be0e28f3.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Could not resolve host (${vEe(e)}).
Could not resolve host (${vEe(e)}).
Cannot fetch ${vEe(e)} because it resolves to a private or loopback IP (${s.addr
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8084787–8084875, SHA-256 0b83f6ee10bf90c7.
Jev judged not model-facing (confidence 0.03; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Cannot fetch ${vEe(e)} because it resolves to a private or loopback IP (${s.address}).
Cannot fetch ${vEe(e)} because it resolves to a private or loopback IP (${s.address}).
WebFetch timed out after 30000ms.
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8085801–8085836, SHA-256 7c0024fb318f1474.
Jev judged not model-facing (confidence 0.06; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: WebFetch timed out after 30000ms.
WebFetch timed out after 30000ms.
Invalid URL: must include http:// or https://.
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8086042–8086090, SHA-256 1ff17b11ed566f56.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Invalid URL: must include http:// or https://.
Invalid URL: must include http:// or https://.
Invalid URL protocol: ${e.protocol} (must be http or https).
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8086187–8086249, SHA-256 765369b8a8290dc4.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Invalid URL protocol: ${e.protocol} (must be http or https).
Invalid URL protocol: ${e.protocol} (must be http or https).
Search the web for the following query and return a concise answer with sources:
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8086866–8086965, SHA-256 b01ee56ad094a693.
Jev judged model-facing (confidence 0.88; role user_template). This is a classifier judgment, not proof of delivery.
Readable text: Search the web for the following query and return a concise answer with sources: ${r.searchTerm}
Search the web for the following query and return a concise answer with sources:
${r.searchTerm}
Reference images are not supported by the local OpenAI-compatible image service.
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8087285–8087367, SHA-256 5e52ab953b042d69.
Jev judged not model-facing (confidence 0.09; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Reference images are not supported by the local OpenAI-compatible image service.
Reference images are not supported by the local OpenAI-compatible image service.
Image provider response did not include inline image data.
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8087631–8087691, SHA-256 506dd9ba4ecd131a.
Jev judged not model-facing (confidence 0.05; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Image provider response did not include inline image data.
Image provider response did not include inline image data.
Failed to download generated image: ${t.statusCode} ${t.statusMessage}
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8087785–8087857, SHA-256 a92a5670641cbae2.
Jev judged not model-facing (confidence 0.04; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Failed to download generated image: ${t.statusCode} ${t.statusMessage}
Failed to download generated image: ${t.statusCode} ${t.statusMessage}
Image provider response did not include image data.
Source: desktop/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js, bytes 8087953–8088006, SHA-256 9feca045da114861.
Jev judged not model-facing (confidence 0.07; role code_data). This is a classifier judgment, not proof of delivery.
Readable text: Image provider response did not include image data.
Image provider response did not include image data.