@if (isTaskDropdownOpen()) {
list_alt Task Queue
@if (activeQueue().length === 0) { } @for (session of activeQueue(); track trackSession($index, session)) { } @if (historyTasks().length === 0) { }
} @if (isNotesDropdownOpen()) {
description Notes & Plans
@if (noteKeys().length > 1) {
@for (key of noteKeys(); track trackNoteKey($index, key)) { }
} @if (noteKeys().length === 0) { } @if (noteKeys().length > 0) { }
}
@if (consolidatedBlocks().length > 0 || showPlanningLoader()) {
@if (agentService.activeModel(); as model) {
{{ getModelIcon(model.name) }} Architecture: {{ getModelDisplayName(model.name) }}
}
}
@if (agentService.isSessionContentLoading()) {
progress_activity Loading run history...
} @if (!agentService.isSessionContentLoading() && consolidatedBlocks().length === 0 && !showPlanningLoader() && startupWorkItems().length === 0) {
sensors

No Stream Activity Selected

Please select a session from the Task List on the right to view its real-time log payloads.

} @if (!agentService.isSessionContentLoading() && (phases().length > 0 || showPlanningLoader() || startupWorkItems().length > 0)) {
@if (startupWorkItems().length > 0) {
Worked for {{ startupPreparationDuration() }}s
@for (item of startupWorkItems(); track item) {
{{ item.message }} · {{ item.isActive ? 'Waiting ' : 'Waited ' }}{{ item.elapsed }}
}
} @for (phase of phases(); track trackPhase($index, phase); let first = $first) {
@if (hasVisibleBlocks(phase)) {
Worked for {{ phase.durationSeconds }}s @if (phase.tokens) { · {{ formatTokenCount(phase.tokens) }} }
} @if (hasVisibleBlocks(phase)) {
@for (block of phase.blocks; track trackBlock($index, block)) { @if (hasVisibleContent(block)) {
@if (getSortedStepEvents(block.data).length > 0) {
@for (item of getSortedStepEvents(block.data); track trackStepEvent(itemIdx, item); let itemIdx = $index) { @if (item.type === 'thinking') {
Thought
} @if (item.type === 'text' && getRawThinking(block)) {
Work
} @if (isReportStatusAction(item.data)) {
{{ getReportStatusValue(item.data) === 'failed' ? 'cancel' : 'task_alt' }} {{ getReportStatusValue(item.data) === 'failed' ? 'Task Execution Failed' : 'Task Completed' }} {{ getReportStatusValue(item.data) === 'failed' ? 'error' : 'check_circle' }} {{ getReportStatusValue(item.data) === 'failed' ? 'Failed' : 'Completed' }} {{ isActionExpanded('action-' + block.id + '-' + itemIdx) ? 'expand_less' : 'expand_more' }}
@if (!isActionExpanded('action-' + block.id + '-' + itemIdx) && getReportStatusExplanation(item.data)) {
Summary: "{{ getReportStatusExplanation(item.data) }}"
} @if (isActionExpanded('action-' + block.id + '-' + itemIdx)) {
@if (getReportStatusExplanation(item.data); as expText) {
Report & Findings
}
@if (getStepPreImageUrl(block.data, item.data) || getStepPostImageUrl(block.data, item.data)) {
@if (getStepPreImageUrl(block.data, item.data)) {
Final Verified State
Final Screen Screenshot
} @if (getStepPostImageUrl(block.data, item.data)) {
Post Verification
Post Screenshot
}
}
}
} @if (item.type === 'action' && isAndroidAction(item.data)) {
{{ getActionIcon(item.data) }} {{ getActionTitle(item.data) }} @if (isActionFailed(item.data, block.data)) { error Failed } {{ isActionExpanded('action-' + block.id + '-' + itemIdx) ? 'expand_less' : 'expand_more' }}
@if (!isActionExpanded('action-' + block.id + '-' + itemIdx) && (getActionTargetText(item.data) || getActionInputText(item.data) || getActionCoords(item.data))) {
@if (getActionTargetText(item.data)) {
Target: "{{ getActionTargetText(item.data) }}"
} @if (getActionInputText(item.data)) {
{{ getActionInputLabel(item.data) }}: "{{ getActionInputText(item.data) }}"
} @if (getActionCoords(item.data)) {
Coordinates: {{ getActionCoords(item.data) }}
}
} @if (isActionExpanded('action-' + block.id + '-' + itemIdx)) {
@if (getActionTargetText(item.data)) {
Target "{{ getActionTargetText(item.data) }}"
} @if (getActionInputText(item.data)) {
{{ getActionInputLabel(item.data) }} "{{ getActionInputText(item.data) }}"
} @if (getActionCoords(item.data)) {
Coordinates {{ getActionCoords(item.data) }}
} @if (getActionBounds(item.data)) {
Target Bounds [{{ getActionBounds(item.data) }}]
} @if (getActionClass(item.data)) {
Target Class {{ getActionClass(item.data) }}
} @for (param of getActionExtraParams(item.data); track trackParam($index, param)) {
{{ param.key }} {{ param.value }}
} @if (!getActionTargetText(item.data) && !getActionInputText(item.data) && !getActionCoords(item.data) && !getActionBounds(item.data) && !getActionClass(item.data) && getActionExtraParams(item.data).length === 0) {
Action {{ getActionTitle(item.data) }}
}
@if (getStepPreImageUrl(block.data, item.data) || getStepPostImageUrl(block.data, item.data)) {
@if (getStepPreImageUrl(block.data, item.data)) {
Pre-Action (Before)
Pre-Action Screenshot
} @if (getStepPostImageUrl(block.data, item.data)) {
Post-Action (After)
Post-Action Screenshot
}
} @if (isActionFailed(item.data, block.data)) {
error {{ getActionErrorMessage(item.data, block.data) }}
}
}
} @if (item.type === 'tool') { @if (isLLMRetry(item.data)) {
@for (retry of getLLMRetryEntries(item.data); track retry; let retryIndex = $index) {
@if (isLLMRetryEntryWaiting(retry)) { LLM temporarily unavailable @if (getLLMRetryEntryDelay(retry); as retryDelay) { · Retrying in {{ retryDelay }}… } Frequent retries may indicate a low API rate limit. Consider increasing the limit or reducing request concurrency. } @if (!isLLMRetryEntryWaiting(retry)) { Retrying LLM request · Waited {{ getLLMRetryEntryWaited(retry) }} }
}
} @if (isDisplayableLLMFailure(item.data)) {
error LLM Request Failed @if (isTerminalLLMFailure(item.data)) { pause_circle Paused } @else { warning Failed } @if (hasLLMFailureRetryEntries(item.data)) { {{ isActionExpanded('llm-failure-' + block.id + '-' + itemIdx) ? 'expand_less' : 'expand_more' }} }
What happened: The AI request could not be completed after automatic retries.
Failure reason: {{ getLLMErrorText(item.data) }}
@if (getLLMFailureWaited(item.data); as waited) {
Waited: {{ waited }}
} @if (isActionExpanded('llm-failure-' + block.id + '-' + itemIdx)) {
Retry details
@for (retry of getLLMFailureRetryEntries(item.data); track retry; let retryIndex = $index) {
Retry {{ retryIndex + 1 }} Planned {{ getLLMRetryEntryDelay(retry) || '0s' }} · Waited {{ getLLMRetryEntryWaited(retry) }}
}
}
@if (isTerminalLLMFailure(item.data)) {
Task paused · no steps are running
}
} @if (shouldShowTool(item.data, block.data) && !isDeviceActionTool(item.data)) {
{{ isVideoTool(item.data) ? getVideoAnalysisLabel(item.data) : getToolDisplayLabel(item.data) }}{{ ((isNoteTool(item.data) && getToolKey(item.data)) || isVideoTool(item.data)) ? ':' : '' }} @if (isNoteTool(item.data) && getToolKey(item.data); as key) { draft {{ key }} } @if (isVideoTool(item.data)) { videocam {{ getVideoAnalysisRangeLabel(item.data) }} @if (getVideoAnalysisDetail(item.data); as detail) { · {{ detail }} } }
} @if (shouldShowTool(item.data, block.data) && isDeviceActionTool(item.data)) {
{{ getToolIcon(item.data) }} {{ getToolTitle(item.data) }} @if (getToolAgentName(item.data)) { {{ getToolAgentName(item.data) }} } @if (isToolFailed(item.data)) { error Failed } {{ isActionExpanded('tool-' + block.id + '-' + itemIdx) ? 'expand_less' : 'expand_more' }}
@if (!isActionExpanded('tool-' + block.id + '-' + itemIdx) && (isAdbCommandTool(item.data) ? getAdbCommandLine(item.data) : (getToolTargetText(item.data) || getToolInputText(item.data) || getToolCoords(item.data) || getToolAnalysisText(item.data) || getToolGenericDetails(item.data)))) {
@if (isAdbCommandTool(item.data)) { @if (getAdbCommandLine(item.data)) {
Command: {{ getAdbCommandLine(item.data) }}
} @if (getAdbCwd(item.data)) {
Cwd: "{{ getAdbCwd(item.data) }}"
} @if (getAdbTerminalId(item.data)) {
Terminal ID: "{{ getAdbTerminalId(item.data) }}"
} } @if (!isAdbCommandTool(item.data)) { @if (getToolTargetText(item.data)) {
Target: "{{ getToolTargetText(item.data) }}"
} @if (getToolInputText(item.data)) {
{{ getToolInputLabel(item.data) }}: "{{ getToolInputText(item.data) }}"
} @if (getToolCoords(item.data)) {
Coordinates: {{ getToolCoords(item.data) }}
} @if (getToolAnalysisText(item.data)) {
Analysis: "{{ getToolAnalysisText(item.data) }}"
} @if (getToolGenericDetails(item.data)) {
Details: "{{ getToolGenericDetails(item.data) }}"
} }
} @if (isActionExpanded('tool-' + block.id + '-' + itemIdx)) {
@if (isAdbCommandTool(item.data)) { @if (getAdbCommandLine(item.data)) {
Command {{ getAdbCommandLine(item.data) }}
} @if (getAdbCwd(item.data)) {
Working Directory "{{ getAdbCwd(item.data) }}"
} @if (getAdbTerminalId(item.data)) {
Terminal ID {{ getAdbTerminalId(item.data) }}
} } @if (!isAdbCommandTool(item.data)) { @if (getToolTargetText(item.data)) {
Target "{{ getToolTargetText(item.data) }}"
} @if (getToolInputText(item.data)) {
{{ getToolInputLabel(item.data) }} "{{ getToolInputText(item.data) }}"
} @if (getToolCoords(item.data)) {
Coordinates {{ getToolCoords(item.data) }}
} @if (getToolAnalysisText(item.data)) {
Analysis "{{ getToolAnalysisText(item.data) }}"
} @if (getToolGenericDetails(item.data)) {
Details "{{ getToolGenericDetails(item.data) }}"
} @for (param of getToolExtraParams(item.data); track trackParam($index, param)) {
{{ param.key }} {{ param.value }}
} }
@if (getStepPreImageUrl(block.data, item.data) || getStepPostImageUrl(block.data, item.data)) {
@if (getStepPreImageUrl(block.data, item.data)) {
Pre-Action (Before)
Pre-Action Screenshot
} @if (getStepPostImageUrl(block.data, item.data)) {
Post-Action (After)
Post-Action Screenshot
}
} @if (isToolFailed(item.data)) {
error {{ getToolErrorMessage(item.data) }}
}
}
} } }
}
} }
}
} @if (outputterReport(); as outReport) {
assignment_turned_in Task Report
@if (parsedOutputReport(); as parsedOut) {
@if (parsedOut.title) {

{{ parsedOut.title }}

} @if (parsedOut.milestones.length > 0) {
@for (m of parsedOut.milestones; track trackMilestone($index, m)) {
{{ m.type === 'checked' ? 'check_circle' : (m.type === 'progress' ? 'pending' : 'radio_button_unchecked') }} @for (seg of m.segments; track seg) { @if (seg.bold) { {{ seg.text }} } @if (seg.code) { {{ seg.text }} } @if (!seg.bold && !seg.code) { {{ seg.text }} } }
}
} @if (parsedOut.otherLines.length > 0) {
@for (line of parsedOut.otherLines; track trackMarkdownLine($index, line)) {

@for (seg of line.segments; track seg) { @if (seg.bold) { {{ seg.text }} } @if (seg.code) { {{ seg.text }} } @if (!seg.bold && !seg.code) { {{ seg.text }} } }

}
}
}
} @if (showPlanningLoader() && (startupWorkItems().length === 0 || startupPreparationIsComplete() || consolidatedBlocks().length > 0)) {
progress_activity {{ currentPlanningText() }}
}
}
@if (selectedZoomImage()) {
Zoomed Screenshot
}