← Back to Kontasks
Turn Fidelity Gap Analysis - Live vs History
Analysis of differences between real-time and history rendering, plus turn data storage gaps
Output
🔍 Turn Fidelity Gap Analysis: Live vs History
Screenshot Comparison
| Element | Live (Image 1) | History (Image 2) |
|---|---|---|
| Prompt Display | ✅ Clean: > Test, check all services... |
❌ Wrong: Shows flow metadata> " (bugfix) - flow_01KEHD5K... |
| Tool Uses | ✅ Tree structure with ├─ prefixes | ⚠️ Flat list, different icons |
| Claude's Voice | ✅ Bullet point: • Let me get more... |
✅ Shows with 💬: 💬 Let me get... |
| [running] indicator | ✅ Shows [running] |
❌ Missing |
| File preview | ✅ Shows first line of file | ❌ Only shows expansion indicator |
🐛 Critical Bug: Wrong Prompt in History
The history prompt shows:
> " (bugfix) - flow_01KEHD5K35X31QDQVVZDCZVMK8: "investigate flows tool not running at turn start,...
This is leaking the <turn-context> XML tag content into the prompt display!
Root cause: The sanitizePrompt() regex in console-history.ts:26 splits on --- but the turn-context appears BEFORE the actual prompt, so the regex captures the wrong section.
📊 Current Turn Data Storage
Turn data is stored in two places:
1. Kontext (konsole)
Kontext = { id: "ktx_abc123", sessionId: "ses_...", requestId: "uuid", // Links to kontask prompt: "raw prompt (with DASHBOARD wrapper)", workingHistory: [ // ✅ Full turn events { type: "tool_use", tool: "Read", input: { summary, details } }, { type: "tool_result", output: { summary, details } }, // details added! { type: "text", text: "full Claude text" } // no longer truncated! ], output: "final text output", timing: { ... }, tokenUsage: { ... } }
2. Kontask (konui)
Kontask = { id: "uuid", requestId: "uuid", // Links to kontext sessionId: "ses_...", context.output: "<html>...</html>", // Rich HTML card context.turnTiming: { ... }, // Timing summary context.choices: [...] // Action buttons // ❌ NO workingHistory stored! }
💡 Answer: Can Claude Get Full Turn History?
Currently: Partial.
- ✅
konui_get_taskreturns kontask withcontext.output(HTML) andcontext.turnTiming - ❌ Kontask does NOT store the full
workingHistoryfrom kontext - ✅ Kontext (in konsole) DOES have full
workingHistory - ⚠️ No MCP tool to fetch kontext directly
Proposed Solution: konui_get_turn MCP Tool
// New MCP tool to get full turn data await konui_get_turn({ requestId: "uuid" }) // Returns merged view: { kontask: { id, title, status, output, choices, turnTiming }, kontext: { prompt: "sanitized user prompt", workingHistory: [...], // Full turn events! timing: { spawnMs, ttfeMs, workMs, totalMs }, tokenUsage: { inputTokens, outputTokens, costUsd } } }
🔧 Recommended Fixes
- Fix sanitizePrompt() regex - Handle
<turn-context>tag properly
File:konui/src/console-history.ts:20-29 - Add
konui_get_turnMCP tool - Fetch merged kontask + kontext data
Files:konui/src/mcp-tools.ts,konsole/src/main.ts - Optionally embed workingHistory in kontask - For offline analysis
File:konui/src/router.ts(kontask creation)
📊 This analysis is based on reviewing: console-history.ts, kontext.ts, stream.ts, and the kontask data structure
Quick Actions
Original Request
No layout configured
Details
Type
General
Status
Completed
Scope
vibetools
Tags
turn-fidelityconsolehistorykontask
Created
10 Jan 2026, 8:29 am
Updated
10 Jan 2026, 8:29 am
Timing
⏱️ 89.1s
0 tools
● TTFE 0%
● Thinking 100%
● Tools 0%
Created By
claude
📋 Claude's Context
Session
ses_df705a8d...
Raw Data
{
"id": "9f022bf0-9bec-45e0-8c08-a2ace3dc2438",
"type": "general",
"status": "completed",
"title": "Turn Fidelity Gap Analysis - Live vs History",
"description": "Analysis of differences between real-time and history rendering, plus turn data storage gaps",
"context": {
"output": "<div style=\"background:#1e1e1e;color:#e0e0e0;padding:20px;border-radius:8px;font-family:'Consolas','Monaco',monospace;\">\n<h2 style=\"font-family:sans-serif;color:#fff;margin:0 0 16px 0;\">🔍 Turn Fidelity Gap Analysis: Live vs History</h2>\n\n<h3 style=\"font-family:sans-serif;color:#61afef;margin:16px 0 12px 0;\">Screenshot Comparison</h3>\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<table style=\"width:100%;border-collapse:collapse;color:#e0e0e0;font-size:13px;\">\n<tr style=\"border-bottom:1px solid #444;\">\n<th style=\"text-align:left;padding:8px;color:#98c379;\">Element</th>\n<th style=\"text-align:left;padding:8px;color:#61afef;\">Live (Image 1)</th>\n<th style=\"text-align:left;padding:8px;color:#e5c07b;\">History (Image 2)</th>\n</tr>\n<tr>\n<td style=\"padding:8px;\"><strong>Prompt Display</strong></td>\n<td style=\"padding:8px;\">✅ Clean: <code>> Test, check all services...</code></td>\n<td style=\"padding:8px;\">❌ Wrong: Shows flow metadata<br><code>> \" (bugfix) - flow_01KEHD5K...</code></td>\n</tr>\n<tr>\n<td style=\"padding:8px;\"><strong>Tool Uses</strong></td>\n<td style=\"padding:8px;\">✅ Tree structure with ├─ prefixes</td>\n<td style=\"padding:8px;\">⚠️ Flat list, different icons</td>\n</tr>\n<tr>\n<td style=\"padding:8px;\"><strong>Claude's Voice</strong></td>\n<td style=\"padding:8px;\">✅ Bullet point: <code>• Let me get more...</code></td>\n<td style=\"padding:8px;\">✅ Shows with 💬: <code>💬 Let me get...</code></td>\n</tr>\n<tr>\n<td style=\"padding:8px;\"><strong>[running] indicator</strong></td>\n<td style=\"padding:8px;\">✅ Shows <code>[running]</code></td>\n<td style=\"padding:8px;\">❌ Missing</td>\n</tr>\n<tr>\n<td style=\"padding:8px;\"><strong>File preview</strong></td>\n<td style=\"padding:8px;\">✅ Shows first line of file</td>\n<td style=\"padding:8px;\">❌ Only shows expansion indicator</td>\n</tr>\n</table>\n</div>\n\n<h3 style=\"font-family:sans-serif;color:#e06c75;margin:16px 0 12px 0;\">🐛 Critical Bug: Wrong Prompt in History</h3>\n<div style=\"background:#2d2d30;padding:16px;border-radius:6px;margin-bottom:16px;border-left:4px solid #e06c75;\">\n<p style=\"margin:0 0 8px 0;\">The history prompt shows:</p>\n<pre style=\"background:#252526;padding:12px;border-radius:4px;overflow-x:auto;color:#ce9178;margin:0;\">> \" (bugfix)\n - flow_01KEHD5K35X31QDQVVZDCZVMK8: \"investigate flows tool not\nrunning at turn start,...</pre>\n<p style=\"margin:12px 0 8px 0;\">This is leaking the <code><turn-context></code> XML tag content into the prompt display!</p>\n<p style=\"margin:0;color:#7f848e;\"><strong>Root cause:</strong> The <code>sanitizePrompt()</code> regex in <code>console-history.ts:26</code> splits on <code>---</code> but the turn-context appears BEFORE the actual prompt, so the regex captures the wrong section.</p>\n</div>\n\n<h3 style=\"font-family:sans-serif;color:#61afef;margin:16px 0 12px 0;\">📊 Current Turn Data Storage</h3>\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<p style=\"margin:0 0 12px 0;\">Turn data is stored in <strong>two places</strong>:</p>\n\n<h4 style=\"color:#98c379;margin:12px 0 8px 0;\">1. Kontext (konsole)</h4>\n<pre style=\"background:#252526;padding:12px;border-radius:4px;overflow-x:auto;color:#e0e0e0;margin:0;\"><span style=\"color:#56b6c2;\">Kontext</span> = {\n <span style=\"color:#e5c07b;\">id</span>: \"ktx_abc123\",\n <span style=\"color:#e5c07b;\">sessionId</span>: \"ses_...\",\n <span style=\"color:#e5c07b;\">requestId</span>: \"uuid\", <span style=\"color:#7f848e;\">// Links to kontask</span>\n <span style=\"color:#e5c07b;\">prompt</span>: \"raw prompt (with DASHBOARD wrapper)\",\n <span style=\"color:#e5c07b;\">workingHistory</span>: [ <span style=\"color:#7f848e;\">// ✅ Full turn events</span>\n { type: \"tool_use\", tool: \"Read\", input: { summary, details } },\n { type: \"tool_result\", output: { summary, <span style=\"color:#98c379;\">details</span> } }, <span style=\"color:#7f848e;\">// details added!</span>\n { type: \"text\", <span style=\"color:#98c379;\">text</span>: \"full Claude text\" } <span style=\"color:#7f848e;\">// no longer truncated!</span>\n ],\n <span style=\"color:#e5c07b;\">output</span>: \"final text output\",\n <span style=\"color:#e5c07b;\">timing</span>: { ... },\n <span style=\"color:#e5c07b;\">tokenUsage</span>: { ... }\n}</pre>\n\n<h4 style=\"color:#e5c07b;margin:12px 0 8px 0;\">2. Kontask (konui)</h4>\n<pre style=\"background:#252526;padding:12px;border-radius:4px;overflow-x:auto;color:#e0e0e0;margin:0;\"><span style=\"color:#56b6c2;\">Kontask</span> = {\n <span style=\"color:#e5c07b;\">id</span>: \"uuid\",\n <span style=\"color:#e5c07b;\">requestId</span>: \"uuid\", <span style=\"color:#7f848e;\">// Links to kontext</span>\n <span style=\"color:#e5c07b;\">sessionId</span>: \"ses_...\",\n <span style=\"color:#e5c07b;\">context.output</span>: \"<html>...</html>\", <span style=\"color:#7f848e;\">// Rich HTML card</span>\n <span style=\"color:#e5c07b;\">context.turnTiming</span>: { ... }, <span style=\"color:#7f848e;\">// Timing summary</span>\n <span style=\"color:#e5c07b;\">context.choices</span>: [...] <span style=\"color:#7f848e;\">// Action buttons</span>\n <span style=\"color:#7f848e;\">// ❌ NO workingHistory stored!</span>\n}</pre>\n</div>\n\n<h3 style=\"font-family:sans-serif;color:#c678dd;margin:16px 0 12px 0;\">💡 Answer: Can Claude Get Full Turn History?</h3>\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<p style=\"margin:0 0 12px 0;\"><strong>Currently: Partial.</strong></p>\n<ul style=\"margin:0;padding-left:20px;\">\n<li>✅ <code>konui_get_task</code> returns kontask with <code>context.output</code> (HTML) and <code>context.turnTiming</code></li>\n<li>❌ Kontask does NOT store the full <code>workingHistory</code> from kontext</li>\n<li>✅ Kontext (in konsole) DOES have full <code>workingHistory</code></li>\n<li>⚠️ No MCP tool to fetch kontext directly</li>\n</ul>\n\n<h4 style=\"color:#98c379;margin:12px 0 8px 0;\">Proposed Solution: <code>konui_get_turn</code> MCP Tool</h4>\n<pre style=\"background:#252526;padding:12px;border-radius:4px;overflow-x:auto;color:#e0e0e0;margin:0;\"><span style=\"color:#7f848e;\">// New MCP tool to get full turn data</span>\nawait <span style=\"color:#61afef;\">konui_get_turn</span>({ requestId: \"uuid\" })\n\n<span style=\"color:#7f848e;\">// Returns merged view:</span>\n{\n kontask: { id, title, status, output, choices, turnTiming },\n kontext: {\n prompt: \"sanitized user prompt\",\n workingHistory: [...], <span style=\"color:#7f848e;\">// Full turn events!</span>\n timing: { spawnMs, ttfeMs, workMs, totalMs },\n tokenUsage: { inputTokens, outputTokens, costUsd }\n }\n}</pre>\n</div>\n\n<h3 style=\"font-family:sans-serif;color:#61afef;margin:16px 0 12px 0;\">🔧 Recommended Fixes</h3>\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\">\n<ol style=\"margin:0;padding-left:20px;\">\n<li style=\"margin-bottom:8px;\"><strong style=\"color:#e06c75;\">Fix sanitizePrompt() regex</strong> - Handle <code><turn-context></code> tag properly<br>\n<span style=\"color:#7f848e;\">File: <code>konui/src/console-history.ts:20-29</code></span></li>\n<li style=\"margin-bottom:8px;\"><strong style=\"color:#e5c07b;\">Add <code>konui_get_turn</code> MCP tool</strong> - Fetch merged kontask + kontext data<br>\n<span style=\"color:#7f848e;\">Files: <code>konui/src/mcp-tools.ts</code>, <code>konsole/src/main.ts</code></span></li>\n<li style=\"margin-bottom:8px;\"><strong style=\"color:#56b6c2;\">Optionally embed workingHistory in kontask</strong> - For offline analysis<br>\n<span style=\"color:#7f848e;\">File: <code>konui/src/router.ts</code> (kontask creation)</span></li>\n</ol>\n</div>\n\n<div style=\"margin-top:20px;padding-top:16px;border-top:1px solid #444;\">\n<p style=\"color:#7f848e;margin:0;font-size:12px;\">📊 This analysis is based on reviewing: <code>console-history.ts</code>, <code>kontext.ts</code>, <code>stream.ts</code>, and the kontask data structure</p>\n</div>\n</div>",
"requestedAt": "2026-01-09T22:21:00.000Z",
"requestId": "4a0cdb46-fffd-4b7d-81db-07a11c17404d",
"choices": [
{
"label": "Fix prompt bug",
"value": "Fix the sanitizePrompt() regex in console-history.ts to properly handle the turn-context tag",
"primary": true
},
{
"label": "Add get_turn tool",
"value": "Create a new konui_get_turn MCP tool that returns merged kontask + kontext data"
},
{
"label": "Both fixes",
"value": "Fix both issues: the sanitizePrompt bug and add the konui_get_turn MCP tool"
}
],
"turnTiming": {
"totalMs": 89099,
"ttfeMs": 115,
"thinkingMs": 88984,
"toolExecutionMs": 0,
"toolCallCount": 0,
"thinkingPct": 100,
"toolsPct": 0,
"ttfePct": 0
}
},
"createdBy": "claude",
"createdAt": "2026-01-09T22:29:26.996Z",
"updatedAt": "2026-01-09T22:29:36.543Z",
"requestId": "4a0cdb46-fffd-4b7d-81db-07a11c17404d",
"scope": "vibetools",
"tags": [
"turn-fidelity",
"console",
"history",
"kontask"
],
"sessionId": "ses_df705a8d-ea1",
"flowId": "flow_01KEHQ5A7ZX7YDB8KG1NP2GE68",
"flowLinks": [
{
"flowId": "flow_01KEHQ5A7ZX7YDB8KG1NP2GE68",
"edgeType": "evidence",
"createdAt": "2026-01-09T22:29:26.996Z"
}
]
}