@kernlang/agon 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/{chunk-O6YP55RV.js → chunk-46WNYE4R.js} +114 -69
  2. package/dist/chunk-46WNYE4R.js.map +1 -0
  3. package/dist/{chunk-FCCH7IPJ.js → chunk-4NTH3EAR.js} +39 -11
  4. package/dist/chunk-4NTH3EAR.js.map +1 -0
  5. package/dist/{chunk-4LVYSUMN.js → chunk-73ETZFDH.js} +6 -27
  6. package/dist/chunk-73ETZFDH.js.map +1 -0
  7. package/dist/{chunk-WE32YJKT.js → chunk-DGTU4UWQ.js} +2 -2
  8. package/dist/{chunk-WE32YJKT.js.map → chunk-DGTU4UWQ.js.map} +1 -1
  9. package/dist/{chunk-ATUT2BUQ.js → chunk-GPYWJO2Q.js} +24 -7
  10. package/dist/chunk-GPYWJO2Q.js.map +1 -0
  11. package/dist/{chunk-C22VTCS6.js → chunk-HAJIKZGU.js} +846 -219
  12. package/dist/chunk-HAJIKZGU.js.map +1 -0
  13. package/dist/{chunk-6ANHPXGZ.js → chunk-HSPQEDHX.js} +1 -1
  14. package/dist/{chunk-6ANHPXGZ.js.map → chunk-HSPQEDHX.js.map} +1 -1
  15. package/dist/{chunk-5QMVQPHY.js → chunk-SOUF7XTW.js} +1 -1
  16. package/dist/{chunk-5QMVQPHY.js.map → chunk-SOUF7XTW.js.map} +1 -1
  17. package/dist/{dispatch-6LQSMMGI.js → dispatch-XHLJ44TF.js} +2 -2
  18. package/dist/{forge-ES4RN7YM.js → forge-ZI7NE73F.js} +6 -6
  19. package/dist/index.js +550 -121
  20. package/dist/index.js.map +1 -1
  21. package/dist/plan-mode-KIXDKD63.js +17 -0
  22. package/dist/{src-WJGIOESS.js → src-4A5FVACG.js} +49 -3
  23. package/dist/{update-HHN4PJQI.js → update-DLPMYTF3.js} +6 -6
  24. package/package.json +4 -4
  25. package/dist/chunk-4LVYSUMN.js.map +0 -1
  26. package/dist/chunk-ATUT2BUQ.js.map +0 -1
  27. package/dist/chunk-C22VTCS6.js.map +0 -1
  28. package/dist/chunk-FCCH7IPJ.js.map +0 -1
  29. package/dist/chunk-O6YP55RV.js.map +0 -1
  30. package/dist/plan-mode-4XRC2ZC7.js +0 -17
  31. /package/dist/{dispatch-6LQSMMGI.js.map → dispatch-XHLJ44TF.js.map} +0 -0
  32. /package/dist/{forge-ES4RN7YM.js.map → forge-ZI7NE73F.js.map} +0 -0
  33. /package/dist/{plan-mode-4XRC2ZC7.js.map → plan-mode-KIXDKD63.js.map} +0 -0
  34. /package/dist/{src-WJGIOESS.js.map → src-4A5FVACG.js.map} +0 -0
  35. /package/dist/{update-HHN4PJQI.js.map → update-DLPMYTF3.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/generated/commands/update.ts","../src/generated/blocks/engine.tsx","../src/generated/blocks/rich-text.ts","../src/generated/blocks/rendering.tsx","../src/generated/signals/ansi-parse.ts","../src/generated/blocks/arena.tsx","../src/generated/blocks/plan-view.tsx","../src/generated/services/update-check.ts"],"sourcesContent":["// @generated by kern v3.5.8 — DO NOT EDIT. Source: src/kern/commands/update.kern\n\nimport { defineCommand } from 'citty';\n\nimport { spawn } from 'node:child_process';\n\nimport { platform } from 'node:os';\n\nimport { bold, dim, green, red, yellow, info, success, fail, header } from '../blocks/output-format.js';\n\nimport { VERSION } from '../blocks/engine.js';\n\nimport { checkForUpdate, loadDismissedVersion, saveDismissedVersion } from '../services/update-check.js';\n\n// @kern-source: update:21\nexport const DEFAULT_PACKAGE: string = \"@kernlang/agon\";\n\n// @kern-source: update:22\nexport const DEFAULT_TIMEOUT_MS: number = 5 * 60 * 1000;\n\n// @kern-source: update:23\nexport const RESTART_DELAY_MS: number = 1500;\n\n// @kern-source: update:27\nexport function buildNpmArgs(packageSpec: string): string[] {\n return ['install', '-g', packageSpec];\n}\n\n// @kern-source: update:36\nexport async function runNpmInstall(packageSpec: string, timeoutMs: number): Promise<{ code: number; stderr: string }> {\n const args = buildNpmArgs(packageSpec);\n return await new Promise<{ code: number; stderr: string }>((resolve) => {\n let settled = false;\n let stderr = '';\n const finish = (code: number) => { if (!settled) { settled = true; resolve({ code, stderr }); } };\n let child: any;\n try {\n // Tee stderr: inherit stdin/stdout so npm's live output still streams, but\n // PIPE stderr so we can echo it AND scan it for EACCES/permission text —\n // suggestPermissionFix needs the captured stderr to emit the sudo hint.\n child = spawn('npm', args, { stdio: ['inherit', 'inherit', 'pipe'] });\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n fail(`Failed to spawn npm: ${msg}`);\n finish(1);\n return;\n }\n if (child.stderr) {\n child.stderr.on('data', (d: any) => {\n const s = d.toString();\n stderr += s;\n process.stderr.write(s);\n });\n }\n const timer = setTimeout(() => {\n try { child.kill('SIGTERM'); } catch { /* already dead */ }\n finish(124); // conventional timeout exit code\n }, timeoutMs);\n child.on('error', (err: any) => {\n clearTimeout(timer);\n const msg = err && err.message ? err.message : String(err);\n fail(`npm process error: ${msg}`);\n finish(1);\n });\n child.on('exit', (code: number | null) => {\n clearTimeout(timer);\n finish(typeof code === 'number' ? code : 1);\n });\n });\n}\n\n// @kern-source: update:81\nexport function suggestPermissionFix(code: number, stderrText: string): string {\n if (code === 0) return '';\n const blob = String(stderrText || '').toLowerCase();\n if (blob.includes('eacces') || blob.includes('permission denied') || blob.includes('needs to be run as root')) {\n return 'Hint: global installs usually need elevated privileges. Re-run with `sudo npm install -g @kernlang/agon@latest`, or set npm_config_prefix to a user-writable directory.';\n }\n if (code === 124) {\n return 'Hint: the install timed out. Check your network connection, or pass a higher --timeout.';\n }\n return '';\n}\n\n// @kern-source: update:97\nexport function announcePhase(phase: string, detail: string): void {\n info(`${bold(phase)} ${dim(detail)}`);\n}\n\n// @kern-source: update:110\nexport async function runUpdate(latestVersion: string|undefined): Promise<number> {\n const version = (typeof latestVersion === 'string' && latestVersion.trim()) ? latestVersion.trim() : 'latest';\n const packageSpec = version === 'latest' ? DEFAULT_PACKAGE : `${DEFAULT_PACKAGE}@${version}`;\n\n header(`Updating ${bold(DEFAULT_PACKAGE)} → ${bold(version)}`);\n announcePhase('●', `running: npm ${buildNpmArgs(packageSpec).join(' ')}`);\n\n const { code, stderr } = await runNpmInstall(packageSpec, DEFAULT_TIMEOUT_MS);\n if (code === 0) {\n success(`Updated to ${bold(version)}. Restart Agon to use the new version.`);\n // Give stdout a beat to flush before we exit.\n await new Promise((r) => setTimeout(r, RESTART_DELAY_MS));\n try { process.exit(0); } catch { /* already exiting */ }\n return 0;\n }\n fail(`npm exited with code ${code}.`);\n const hint = suggestPermissionFix(code, stderr);\n if (hint) info(hint);\n return code;\n}\n\n// @kern-source: update:134\nexport const updateCommand: any = defineCommand({\n meta: {\n name: 'update',\n description: 'Update Agon to the latest (or a specific) version from npm. Streams npm output live and exits 0 on success.',\n },\n args: {\n version: {\n type: 'positional',\n description: 'Specific version to install (e.g. 0.2.0). Omit to install the latest.',\n required: false,\n },\n check: {\n type: 'boolean',\n description: 'Only check the registry — print the latest version and exit. No install.',\n default: false,\n },\n 'no-restart': {\n type: 'boolean',\n description: 'Skip the final process.exit(0) on success (for callers that want to relaunch themselves).',\n default: false,\n },\n timeout: {\n type: 'string',\n description: 'Install timeout in seconds (default 300).',\n default: '300',\n },\n },\n async run({ args }: { args: { version?: string; check?: boolean; 'no-restart'?: boolean; timeout?: string } }) {\n const version = (args.version ?? '').trim() || 'latest';\n const timeoutSec = parseInt(String(args.timeout ?? '300'), 10);\n const timeoutMs = (Number.isFinite(timeoutSec) && timeoutSec > 0 ? timeoutSec : 300) * 1000;\n\n if (args.check) {\n // Dry-run: just hit the registry and report. We probe with the\n // *running* binary's version so the \"you're on\" line is honest.\n const probed = await checkForUpdate(VERSION, undefined);\n if (probed.error && !probed.hasUpdate) {\n fail(`Could not reach the npm registry: ${probed.error}`);\n process.exit(1);\n return;\n }\n if (probed.hasUpdate) {\n info(`Update available: ${bold(probed.currentVersion)} → ${bold(probed.latestVersion)}`);\n info(`Run ${yellow('agon update')} to install.`);\n } else {\n success(`Already on the latest version (${bold(probed.latestVersion)}).`);\n }\n return;\n }\n\n const packageSpec = version === 'latest' ? DEFAULT_PACKAGE : `${DEFAULT_PACKAGE}@${version}`;\n header(`Updating ${bold(DEFAULT_PACKAGE)} → ${bold(version)}`);\n announcePhase('●', `running: npm ${buildNpmArgs(packageSpec).join(' ')}`);\n\n const { code, stderr } = await runNpmInstall(packageSpec, timeoutMs);\n if (code !== 0) {\n fail(`npm exited with code ${code}.`);\n const hint = suggestPermissionFix(code, stderr);\n if (hint) info(hint);\n process.exit(code);\n return;\n }\n success(`Updated to ${bold(version)}. Restart Agon to use the new version.`);\n if (!args['no-restart']) {\n await new Promise((r) => setTimeout(r, RESTART_DELAY_MS));\n try { process.exit(0); } catch { /* already exiting */ }\n }\n },\n});\n\n// @kern-source: update:208\nexport const DEFAULT_UPDATE_PACKAGE: string = \"@kernlang/agon\";\n","// @generated by kern v3.5.8 — DO NOT EDIT. Source: src/kern/blocks/engine.kern\n\nimport React from 'react';\nimport { Box, Static, Text } from 'ink';\n\n// ── Core ───────────────────────────────────────────────\nimport { parseMarkdownBlocks, cleanEngineOutput } from './markdown.js';\n\nimport type { ContentSegment } from './markdown.js';\n\nimport { parseProseToRichLines } from './rich-text.js';\n\nimport type { RichLine } from './rich-text.js';\n\nimport { ENGINE_COLORS, shortToolPath, isCesarTelemetryLine, formatConfidenceToolLabel } from './output-format.js';\n\nimport { icons } from '../signals/icons.js';\n\nimport type { OutputEvent, EngineProgress } from '../../handlers/types.js';\n\nimport { contentWidth, color256toHex, engineColor, RenderedSegments, RichLineView, DiffLine, SyntaxLine, GradientLine, AnsiLine, CODE_RAIL, CODE_RAIL_COLOR, MAX_CODE_LINES } from './rendering.js';\n\nimport { truncateCodeLine } from './markdown.js';\n\nimport { ForgeArena, BrainstormStorm, CampfireFire, TribunalCourt } from './arena.js';\n\nimport { PlanProposalView, PlanExecutionView } from './plan-view.js';\n\nimport { parseToolInputPayload, extractPatchText, parsePatchPreview, extractSummary } from './engine-helpers.js';\n\nimport { createRequire } from 'node:module';\n\nimport { readFileSync, existsSync } from 'node:fs';\n\nimport { dirname, join } from 'node:path';\n\nimport { fileURLToPath } from 'node:url';\n\n// ── Module: EngineHelperExports ──\n\nexport { parseToolInputPayload, extractPatchText, parsePatchPreview, extractSummary } from './engine-helpers.js';\n\n// @kern-source: engine:65\nexport interface OutputBlock {\n id: number;\n event: OutputEvent;\n}\n\n// @kern-source: engine:71\nexport function EngineProgressView({ engines, mode }: { engines:EngineProgress[]; mode?:string }) {\n // Use explicit mode if it's an arena mode, otherwise detect from status text\n const arenaModes = ['forge', 'brainstorm', 'campfire', 'tribunal'];\n const detected = (mode && arenaModes.includes(mode)) ? mode : (() => {\n const s = engines[0]?.status ?? '';\n if (s.startsWith('drafting')) return 'brainstorm';\n if (s.startsWith('thinking')) return 'campfire';\n if (['preparing','queued','building'].some(k => s.startsWith(k)) || s.startsWith('done (')) return 'forge';\n if (s.startsWith('R') || s.startsWith('waiting')) return 'tribunal';\n return 'default';\n })();\n\n if (detected === 'forge') return <ForgeArena engines={engines} />;\n if (detected === 'brainstorm') return <BrainstormStorm engines={engines} />;\n if (detected === 'campfire') return <CampfireFire engines={engines} />;\n if (detected === 'tribunal') return <TribunalCourt engines={engines} />;\n\n // Default: plain list (fallback for unknown modes)\n return (\n <Box flexDirection=\"column\">\n {engines.map((engine: EngineProgress) => (\n <Box key={engine.id}>\n <Text color={engine.done ? 'green' : engine.failed ? 'red' : 'yellow'}>\n {engine.done ? icons().success : engine.failed ? icons().fail : icons().dotOn}\n </Text>\n <Text> </Text>\n <Box width={14}>\n <Text bold color={engineColor(engine.id)}>\n {engine.id}\n </Text>\n </Box>\n <Text dimColor>{engine.status}</Text>\n </Box>\n ))}\n </Box>\n );\n}\n\n// @kern-source: engine:115\nconst EngineBlock = React.memo(function EngineBlock({ engineId, color, content, actingNote }: { engineId:string; color:number; content:string; actingNote?:string }) {\n const wrapWidth = contentWidth(8);\n const cleaned = cleanEngineOutput(content);\n const hexColor = color256toHex(color);\n\n if (!cleaned.trim()) {\n return (\n <Box flexDirection=\"column\" marginY={0} paddingLeft={2}>\n <Text color={hexColor}>{'\\u250c\\u2500\\u2500 '}<Text bold>{engineId}</Text>{actingNote ? <Text dimColor>{' ('}{actingNote}{')'}</Text> : null}</Text>\n <Text color={hexColor}>{'\\u2502 '}<Text dimColor>{'(no response)'}</Text></Text>\n <Text color={hexColor}>{'\\u2514\\u2500\\u2500'}</Text>\n </Box>\n );\n }\n\n const segments = parseMarkdownBlocks(cleaned);\n\n return (\n <Box flexDirection=\"column\" marginY={1} paddingLeft={2}>\n <Text color={hexColor}>{'\\u250c\\u2500\\u2500 '}<Text bold color={hexColor}>{engineId}</Text>{actingNote ? <Text dimColor>{' ('}{actingNote}{')'}</Text> : null}</Text>\n <Text color={hexColor}>{'\\u2502'}</Text>\n <RenderedSegments segments={segments} borderColor={hexColor} wrapWidth={wrapWidth} />\n <Text color={hexColor}>{'\\u2514\\u2500\\u2500'}</Text>\n </Box>\n );\n});\nexport { EngineBlock };\n\n// @kern-source: engine:150\nconst ConversationalResponse = React.memo(function ConversationalResponse({ engineId, content, actingNote }: { engineId:string; content:string; actingNote?:string }) {\n const wrapWidth = contentWidth(2);\n const cleaned = cleanEngineOutput(content);\n if (!cleaned.trim()) return null;\n const segments = parseMarkdownBlocks(cleaned);\n const accentColor = color256toHex(ENGINE_COLORS[engineId] ?? 124);\n return (\n <Box flexDirection=\"column\" marginTop={1} marginBottom={0} paddingLeft={1}>\n <Text><Text color={accentColor} bold>{icons().dotOn + ' '}{engineId}</Text>{actingNote ? <Text dimColor>{' ('}{actingNote}{')'}</Text> : null}</Text>\n <Text>{' '}</Text>\n <RenderedSegments segments={segments} borderColor={''} wrapWidth={wrapWidth} />\n </Box>\n );\n});\nexport { ConversationalResponse };\n\n// @kern-source: engine:172\nconst CesarRecapBlock = React.memo(function CesarRecapBlock({ event }: { event:OutputEvent & { type: 'cesar-recap' } }) {\n const files = Array.isArray((event as any).files) ? (event as any).files : [];\n const commands = Array.isArray((event as any).commands) ? (event as any).commands : [];\n const warnings = Array.isArray((event as any).warnings) ? (event as any).warnings : [];\n const toolSummary = Array.isArray((event as any).toolSummary) ? (event as any).toolSummary : [];\n const checkpoints = Array.isArray((event as any).checkpoints) ? (event as any).checkpoints : [];\n const diffFiles = Array.isArray((event as any).diffPreview?.files) ? (event as any).diffPreview.files : [];\n const confidence = typeof (event as any).confidence === 'number' ? `${Math.round((event as any).confidence)}% confidence` : '';\n const seconds = typeof (event as any).durationMs === 'number' ? `${(((event as any).durationMs) / 1000).toFixed(1)}s` : '';\n const failedTools = Number((event as any).failedTools ?? 0);\n const statusColor = failedTools > 0 ? '#fbbf24' : '#4ade80';\n const statusIcon = failedTools > 0 ? icons().warning : icons().success;\n const change = (event as any).changeSummary ?? { created: 0, edited: 0, read: 0 };\n const createdCount = Number(change.created ?? 0);\n const editedCount = Number(change.edited ?? 0);\n const readCount = Number(change.read ?? 0);\n const changedTotal = createdCount + editedCount;\n const changeParts: string[] = [];\n if (createdCount > 0) changeParts.push(`+${createdCount} created`);\n if (editedCount > 0) changeParts.push(`~${editedCount} edited`);\n const verification = Array.isArray((event as any).verification) ? (event as any).verification : [];\n const changedFiles = files.filter((f: any) => String(f.status) !== 'read');\n const toolLine = toolSummary.length > 0\n ? `${(event as any).toolCount ?? toolSummary.length} tools: ${toolSummary.slice(0, 8).join(', ')}${toolSummary.length > 8 ? ', ...' : ''}`\n : `${(event as any).toolCount ?? 0} tools`;\n const commandStatus = (status: string) => String(status).toLowerCase() === 'error' ? icons().fail : icons().success;\n const fileGlyph = (status: string) => status === 'edited' ? 'M' : status === 'created' ? '+' : 'r';\n return (\n <Box flexDirection=\"column\" paddingLeft={1} marginTop={1}>\n <Text color=\"#f97316\" bold>{'\\u25c6 Cesar recap'}</Text>\n <Text>\n <Text color={statusColor}>{statusIcon}</Text>\n <Text>{' '}{(event as any).outcome ?? 'Completed'}</Text>\n <Text dimColor>{' \\u00b7 '}{(event as any).mode ?? 'self'}</Text>\n {confidence ? <Text dimColor>{' \\u00b7 '}{confidence}</Text> : null}\n {seconds ? <Text dimColor>{' \\u00b7 '}{seconds}</Text> : null}\n </Text>\n {changedTotal > 0 ? (\n <Text>\n <Text color=\"#4ade80\" bold>{' changes: '}</Text>\n <Text color=\"#4ade80\">{changeParts.join(', ')}</Text>\n {readCount > 0 ? <Text dimColor>{' · '}{readCount}{' read'}</Text> : null}\n </Text>\n ) : (\n <Text>\n <Text color=\"#fbbf24\" bold>{' changes: '}</Text>\n <Text color=\"#fbbf24\">{'none (explored only)'}</Text>\n {readCount > 0 ? <Text dimColor>{' · '}{readCount}{' read'}</Text> : null}\n </Text>\n )}\n {verification.length > 0 ? (\n <Text>\n <Text dimColor>{' verified: '}</Text>\n {verification.map((v: any, i: number) => (\n <Text key={`verify-${i}`}>\n <Text color={v.ok ? '#4ade80' : '#ef4444'}>{v.ok ? icons().success : icons().fail}</Text>\n <Text>{' '}{v.label}</Text>\n {i < verification.length - 1 ? <Text dimColor>{' · '}</Text> : null}\n </Text>\n ))}\n </Text>\n ) : null}\n <Text dimColor>{' '}{toolLine}{failedTools > 0 ? ` · ${failedTools} failed` : ''}</Text>\n {(event as any).confidenceReasoning ? (\n <Text italic color=\"#a8a8a8\">{' why: '}{(event as any).confidenceReasoning}</Text>\n ) : null}\n {commands.slice(0, 5).map((cmd: any, index: number) => (\n <Text key={`cmd-${index}`}>\n <Text color={String(cmd.status).toLowerCase() === 'error' ? '#ef4444' : '#4ade80'}>{' '}{commandStatus(cmd.status)}</Text>\n <Text>{' '}{cmd.label}</Text>\n <Text dimColor>{' · '}{cmd.command}</Text>\n </Text>\n ))}\n {changedFiles.length > 0 && (\n <Text dimColor>{' files: '}{changedFiles.slice(0, 5).map((f: any) => `${fileGlyph(String(f.status))} ${f.relPath ?? f.path}`).join(', ')}{changedFiles.length > 5 ? `, +${changedFiles.length - 5} more` : ''}</Text>\n )}\n {checkpoints.length > 0 ? (\n <Text color=\"#22d3ee\">{' checkpoint: '}{checkpoints[0].id}{checkpoints.length > 1 ? ` (+${checkpoints.length - 1})` : ''}<Text dimColor>{` · /undo ${checkpoints[0].id} reverts checkpoint`}</Text></Text>\n ) : null}\n {diffFiles.slice(0, 4).map((file: any, index: number) => (\n <Box key={`diff-${index}`} flexDirection=\"column\">\n <Text>\n <Text color=\"#22d3ee\">{' \\u0394 '}{file.relPath ?? file.path}</Text>\n <Text dimColor>{' +'}{Number(file.additions ?? 0)}{' -'}{Number(file.deletions ?? 0)}</Text>\n </Text>\n {(Array.isArray(file.lines) ? file.lines : []).slice(0, 6).map((line: string, lineIndex: number) => (\n <Text key={`diff-line-${index}-${lineIndex}`} color={line.startsWith('+') ? '#4ade80' : line.startsWith('-') ? '#ef4444' : '#fbbf24'} dimColor={line.startsWith('@@')}>\n {' '}{line}\n </Text>\n ))}\n {Number(file.omitted ?? 0) > 0 ? <Text dimColor>{' \\u2026 '}{Number(file.omitted)}{' more diff lines'}</Text> : null}\n </Box>\n ))}\n {warnings.slice(0, 3).map((warning: string, index: number) => (\n <Text key={`warn-${index}`} color=\"#fbbf24\">{' '}{icons().warning}{' '}{warning}</Text>\n ))}\n </Box>\n );\n});\nexport { CesarRecapBlock };\n\n// @kern-source: engine:277\nexport function DashboardView({ event }: { event:OutputEvent & { type: 'dashboard' } }) {\n return (\n <Box flexDirection=\"column\" paddingX={1} paddingY={1}>\n {LOGO_LINES.map((line: string, i: number) => (\n <GradientLine key={i} text={line} colors={BRAND} />\n ))}\n <Text> </Text>\n <Text italic color=\"#d4a041\">{' Any AI can join. They compete. You ship.'}</Text>\n <Text dimColor>{' v'}{VERSION}{' · Powered by '}<Text bold color=\"#fbbf24\">{'KERNlang.dev'}</Text>{KERN_VERSION ? ` (KERN ${KERN_VERSION})` : ''}</Text>\n <Text> </Text>\n\n <Box>\n <Text color=\"#f97316\">{' Engines: '}</Text>\n {event.enabled.map((id: string, i: number) => (\n <Text key={id}>\n <Text color={engineColor(id)} bold>{id}</Text>\n {i < event.enabled.length - 1 && <Text dimColor>{' '}</Text>}\n </Text>\n ))}\n {event.eloTop && (\n <>\n <Text dimColor>{' \\u00b7 '}</Text>\n <Text color=\"#fbbf24\">{'\\u265b '}</Text>\n <Text bold color={engineColor(event.eloTop.id)}>{event.eloTop.id}</Text>\n <Text dimColor>{' '}{String(event.eloTop.rating)}{' Glicko'}</Text>\n </>\n )}\n </Box>\n\n <Text> </Text>\n <Box flexDirection=\"column\">\n <Box>\n <Text dimColor>{' '}</Text>\n <Text italic dimColor>{'\"explain the auth flow\"'}</Text>\n <Text dimColor>{' '}</Text>\n <Text color=\"#fbbf24\">{'\\u2192 chat'}</Text>\n </Box>\n <Box>\n <Text dimColor>{' '}</Text>\n <Text italic dimColor>{'\"codex how would you do this?\"'}</Text>\n <Text dimColor>{' '}</Text>\n <Text color=\"#22d3ee\">{'\\u2192 codex'}</Text>\n </Box>\n <Box>\n <Text dimColor>{' '}</Text>\n <Text italic dimColor>{'\"fix login bug, test with npm test\"'}</Text>\n <Text dimColor>{' '}</Text>\n <Text color=\"#f97316\">{'\\u2192 forge'}</Text>\n </Box>\n <Box>\n <Text dimColor>{' '}</Text>\n <Text italic dimColor>{'\"should we use REST or GraphQL?\"'}</Text>\n <Text dimColor>{' '}</Text>\n <Text color=\"#a78bfa\">{'\\u2192 tribunal'}</Text>\n </Box>\n </Box>\n <Text> </Text>\n <Text dimColor>\n {' Just talk, type '}<Text color=\"#f97316\">{'/'}</Text>{' for commands, '}\n <Text color=\"#f97316\">{'Tab'}</Text>{' plan, '}\n <Text color=\"#f97316\">{'Ctrl+A'}</Text>{' auto.'}\n </Text>\n <Text> </Text>\n </Box>\n );\n}\n\n// @kern-source: engine:349\nfunction TableView({ headers, rows }: { headers:string[]; rows:string[][] }) {\n const widths = headers.map((h: string, i: number) =>\n Math.max(h.length, ...rows.map((r: string[]) => (r[i] ?? '').length)) + 2,\n );\n return (\n <Box flexDirection=\"column\" paddingLeft={2} marginY={1}>\n <Box>\n {headers.map((h: string, i: number) => (\n <Box key={h} width={widths[i]}><Text bold>{h}</Text></Box>\n ))}\n </Box>\n <Text dimColor>{'\\u2500'.repeat(widths.reduce((a: number, b: number) => a + b, 0))}</Text>\n {rows.map((row: string[], ri: number) => (\n <Box key={`row-${ri}-${row[0] ?? ''}`}>\n {row.map((cell: string, ci: number) => (\n <Box key={`${headers[ci]}-${ci}`} width={widths[ci]}><Text>{cell}</Text></Box>\n ))}\n </Box>\n ))}\n </Box>\n );\n}\n\n// @kern-source: engine:378\nconst OutputBlockView = React.memo(function OutputBlockView({ event, mode, toolOutputExpanded, thinkingExpanded }: { event:OutputEvent; mode:string; toolOutputExpanded?:boolean; thinkingExpanded?:boolean }) {\n switch (event.type) {\n case 'text': {\n const wrapWidth = contentWidth(4);\n const richLines = parseProseToRichLines(event.content, wrapWidth);\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n {richLines.map((line: RichLine, i: number) => <RichLineView key={`text-${i}`} line={line} />)}\n </Box>\n );\n }\n case 'user-message': return (\n <Box paddingLeft={1} marginTop={1} marginBottom={0} flexDirection=\"row\">\n <Text color=\"#f97316\" bold>{'\\u276f '}</Text>\n <Text bold>{event.content}</Text>\n </Box>\n );\n case 'engine-block': return mode === 'chat'\n ? <ConversationalResponse engineId={event.engineId} content={event.content} actingNote={event.actingNote} />\n : <EngineBlock engineId={event.engineId} color={event.color} content={event.content} actingNote={event.actingNote} />;\n case 'separator': return <Text>{' '}</Text>;\n case 'header': return <Box flexDirection=\"column\"><Text>{' '}</Text><Text bold color=\"cyan\">{' ' + icons().header + ' '}{event.title}</Text></Box>;\n case 'success': return <Text>{' '}<Text color=\"#4ade80\">{icons().success}</Text>{' '}{event.message}</Text>;\n case 'error': {\n const errLines = event.message.split('\\n');\n const firstLine = errLines[0] ?? '';\n const errMatch = firstLine.match(/^(\\w+Error):\\s*(.*)/);\n const fileMatch = event.message.match(/at\\s+.*?([^\\s/]+\\.\\w+:\\d+(?::\\d+)?)/);\n if (errMatch || errLines.length > 1) {\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n <Text>\n <Text color=\"#ef4444\" bold>{icons().fail + ' '}{errMatch ? errMatch[1] : 'Error'}</Text>\n <Text color=\"#ef4444\">{errMatch ? ': ' + errMatch[2] : ': ' + firstLine}</Text>\n </Text>\n {fileMatch && (\n <Text dimColor>{' at '}<Text color=\"#a78bfa\">{fileMatch[1]}</Text></Text>\n )}\n {errLines.length > 1 && errLines.slice(1, 5).map((line: string, i: number) => (\n <Text key={`err-${i}`} dimColor>{' '}{line.trim()}</Text>\n ))}\n {errLines.length > 5 && <Text dimColor>{' \\u2026 '}{errLines.length - 5}{' more lines'}</Text>}\n </Box>\n );\n }\n return <Text>{' '}<Text color=\"#ef4444\">{icons().fail}</Text>{' '}{event.message}</Text>;\n }\n case 'warning': return <Text>{' '}<Text color=\"#fbbf24\">{icons().warning}</Text>{' '}{event.message}</Text>;\n case 'info': {\n const message = String(event.message ?? '');\n const cesarTelemetry = isCesarTelemetryLine(message);\n return cesarTelemetry\n ? <Text italic color=\"#a8a8a8\">{' '}{message}</Text>\n : <Text dimColor>{' '}{message}</Text>;\n }\n case 'permission-ask': {\n const permCmd = (event as any).command as string;\n const permDesc = (event as any).description as string | undefined;\n const permReason = (event as any).reason as string;\n const permTool = (event as any).tool as string;\n const cmdLines = permCmd.split('\\n').slice(0, 6);\n const moreLines = permCmd.split('\\n').length > 6;\n const { rawInput, parsed } = parseToolInputPayload(permCmd);\n const permToolKey = String(permTool ?? '').toLowerCase();\n const previewRows: React.ReactNode[] = [];\n const addDiffPreview = (key: string, lines: string[], sign: string, color: string) => {\n lines.slice(0, 3).forEach((line: string, i: number) => {\n previewRows.push(<Text key={`${key}-${i}`} color={color}>{' '}{sign}{truncateCodeLine(line, contentWidth(12))}</Text>);\n });\n if (lines.length > 3) previewRows.push(<Text key={`${key}-more`} dimColor>{' \\u2026 '}{lines.length - 3}{' more lines'}</Text>);\n };\n if (permToolKey === 'edit' || permToolKey === 'update' || permToolKey === 'agonedit') {\n const filePath = String((parsed.file_path as string) || (parsed.filePath as string) || '');\n const oldLines = String((parsed.old_string as string) || (parsed.oldString as string) || '').split('\\n').filter((line: string, index: number, all: string[]) => line.length > 0 || all.length === 1);\n const newLines = String((parsed.new_string as string) || (parsed.newString as string) || '').split('\\n').filter((line: string, index: number, all: string[]) => line.length > 0 || all.length === 1);\n previewRows.push(<Text key=\"preview-head\"><Text color=\"#22d3ee\">{' Preview update'}</Text>{filePath ? <Text color=\"#a78bfa\">{' '}{shortToolPath(filePath)}</Text> : null}<Text dimColor>{' -'}{oldLines.length}{' +'}{newLines.length}</Text></Text>);\n addDiffPreview('preview-old', oldLines, '-', '#ef4444');\n addDiffPreview('preview-new', newLines, '+', '#4ade80');\n } else if (permToolKey === 'write' || permToolKey === 'agonwrite') {\n const filePath = String((parsed.file_path as string) || (parsed.filePath as string) || '');\n const contentLines = String((parsed.content as string) || '').split('\\n').filter((line: string, index: number, all: string[]) => line.length > 0 || all.length === 1);\n previewRows.push(<Text key=\"preview-head\"><Text color=\"#22d3ee\">{' Preview write'}</Text>{filePath ? <Text color=\"#a78bfa\">{' '}{shortToolPath(filePath)}</Text> : null}<Text dimColor>{' +'}{contentLines.length}</Text></Text>);\n addDiffPreview('preview-write', contentLines, '+', '#4ade80');\n } else if (permToolKey === 'applypatch' || permToolKey === 'apply_patch') {\n const patch = parsePatchPreview(rawInput, parsed);\n if (patch.lines.length > 0 || patch.files.length > 0) {\n previewRows.push(<Text key=\"preview-head\"><Text color=\"#22d3ee\">{' Preview patch'}</Text><Text dimColor>{' -'}{patch.deletions}{' +'}{patch.additions}</Text>{patch.files.length > 0 ? <Text color=\"#a78bfa\">{' '}{patch.files.slice(0, 2).map((filePath: string) => shortToolPath(filePath)).join(', ')}</Text> : null}</Text>);\n patch.lines.slice(0, 6).forEach((line: string, i: number) => {\n previewRows.push(<Text key={`preview-patch-${i}`} color={line.startsWith('+') ? '#4ade80' : line.startsWith('-') ? '#ef4444' : '#fbbf24'} dimColor={line.startsWith('@@')}>{' '}{truncateCodeLine(line, contentWidth(12))}</Text>);\n });\n if (patch.lines.length > 6) previewRows.push(<Text key=\"preview-patch-more\" dimColor>{' \\u2026 '}{patch.lines.length - 6}{' more lines'}</Text>);\n }\n }\n return (\n <Box flexDirection=\"column\" paddingLeft={1} marginY={1}>\n <Box borderStyle=\"bold\" borderColor=\"#fbbf24\" paddingX={1} flexDirection=\"column\">\n <Text color=\"#fbbf24\" bold>\n {permTool === 'Bash' || permTool === 'bash' ? `${icons().bash} Bash` : `${icons().warning} ${permTool}`}\n <Text color=\"#ef4444\">{' \\u2014 APPROVAL REQUIRED'}</Text>\n </Text>\n <Text> </Text>\n {cmdLines.map((line: string, i: number) => (\n <Text key={`perm-cmd-${i}`}>\n <Text dimColor>{' '}{i === 0 ? '$ ' : ' '}</Text>\n <Text>{line}</Text>\n </Text>\n ))}\n {moreLines && <Text dimColor>{' \\u2026'}</Text>}\n {previewRows.length > 0 && (\n <>\n <Text> </Text>\n {previewRows}\n </>\n )}\n {permDesc && (\n <>\n <Text> </Text>\n <Text dimColor>{' '}{permDesc}</Text>\n </>\n )}\n <Text> </Text>\n <Text color=\"#fbbf24\">{permReason}</Text>\n <Text dimColor>{' Press '}<Text bold color=\"#4ade80\">{'Y'}</Text>{' to approve, '}<Text bold color=\"#ef4444\">{'N'}</Text>{' to deny, '}<Text bold color=\"#60a5fa\">{'A'}</Text>{' to always allow'}</Text>\n </Box>\n </Box>\n );\n }\n case 'table': return <TableView headers={event.headers} rows={event.rows} />;\n case 'thinking-chunk': {\n if (thinkingExpanded === false) return null;\n const thinkText = event.chunk as string;\n const lines = thinkText.split('\\n').filter((l: string) => l.trim());\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n {lines.map((line: string, i: number) => (\n <Text key={`think-${i}`} italic color=\"#a8a8a8\">{' \\u25B9 '}{line}</Text>\n ))}\n </Box>\n );\n }\n case 'streaming-chunk': {\n const chunkText = event.chunk as string;\n const isThinking = /^~?\\d{1,3}%\\s/.test(chunkText.trim());\n if (isThinking) {\n if (thinkingExpanded === false) return null;\n return <Text italic color=\"#a8a8a8\">{' \\u25B9 '}{chunkText}</Text>;\n }\n return <Text>{' '}{chunkText}</Text>;\n }\n case 'kern-draft': {\n const eColor = engineColor(event.engineId);\n const wrapWidth = contentWidth(8);\n const segments = parseMarkdownBlocks(event.content.trim().replace(/<think>[\\s\\S]*?<\\/think>\\s*/gi, ''));\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n <Text color={eColor}>{'\\u250c\\u2500\\u2500 '}<Text bold>{event.engineId}</Text>{event.critique ? <Text color=\"green\">{' '}{event.critique}</Text> : ''}</Text>\n <Text color={eColor}>{'\\u2502'}</Text>\n <RenderedSegments segments={segments} borderColor={eColor} wrapWidth={wrapWidth} />\n <Text color={eColor}>{'\\u2514\\u2500\\u2500'}</Text>\n </Box>\n );\n }\n case 'debate-round': {\n const dColor = engineColor(event.engineId);\n const wrapWidth = contentWidth(8);\n const segments = parseMarkdownBlocks(event.argument.trim().replace(/<think>[\\s\\S]*?<\\/think>\\s*/gi, ''));\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n <Text color={dColor}>{'\\u250c\\u2500\\u2500 '}<Text bold>{event.engineId}</Text>{' '}<Text dimColor>{'('}{event.position}{')'}</Text></Text>\n <Text color={dColor}>{'\\u2502'}</Text>\n <RenderedSegments segments={segments} borderColor={dColor} wrapWidth={wrapWidth} />\n <Text color={dColor}>{'\\u2514\\u2500\\u2500'}</Text>\n </Box>\n );\n }\n case 'verdict': {\n const wrapWidth = contentWidth(4);\n const richLines = parseProseToRichLines(event.summary.trim().replace(/<think>[\\s\\S]*?<\\/think>\\s*/gi, ''), wrapWidth);\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n {richLines.map((line: RichLine, i: number) => <RichLineView key={`v-${i}`} line={line} />)}\n </Box>\n );\n }\n case 'scoreboard': return (\n <Box flexDirection=\"column\" paddingLeft={2} marginY={1}>\n <Text bold>{event.title}</Text>\n {event.winner && <Text bold color=\"green\">{' \\u2605 Winner: '}{event.winner}</Text>}\n <Text dimColor>{' '}{('\\u2500').repeat(46)}</Text>\n {event.metrics.map((m: { label: string; values: string[] }) => (\n <Box key={m.label}>\n <Text>{' '}</Text>\n <Box width={16}><Text bold>{m.label}</Text></Box>\n <Text>{m.values.join(' \\u2502 ')}</Text>\n </Box>\n ))}\n </Box>\n );\n case 'plan': return (\n <Box flexDirection=\"column\" paddingLeft={2} marginY={1}>\n <Text bold color=\"cyan\">{'\\u25b8 Plan: '}{event.plan.id.slice(0, 12)}</Text>\n <Text>{' State: '}<Text bold>{event.plan.state}</Text></Text>\n <Text>{' Task: '}{event.plan.action.task}</Text>\n <Text dimColor>{' '}{('\\u2500').repeat(46)}</Text>\n {event.plan.steps.map((step: any) => (\n <Box key={step.id}>\n <Text>{' '}</Text>\n <Text color={step.result.state === 'completed' ? 'green' : step.result.state === 'failed' ? 'red' : step.result.state === 'running' ? 'yellow' : undefined}>\n {step.result.state === 'completed' ? icons().success : step.result.state === 'failed' ? icons().fail : step.result.state === 'running' ? icons().dotOn : icons().dotOff}\n </Text>\n <Text> {step.label}</Text>\n </Box>\n ))}\n {event.plan.state === 'draft' && (\n <Text dimColor>{'\\n Awaiting approval — '}<Text bold color=\"green\">{'Y'}</Text>{' accept '}<Text bold color=\"red\">{'N'}</Text>{' cancel'}</Text>\n )}\n </Box>\n );\n case 'plan-list': return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n {event.plans.map((p: any) => (\n <Box key={p.id}>\n <Box width={14}><Text dimColor>{p.id.slice(0, 12)}</Text></Box>\n <Box width={12}><Text color={p.state === 'completed' ? 'green' : p.state === 'failed' ? 'red' : undefined}>{p.state}</Text></Box>\n <Text>{p.action.task.slice(0, 40)}</Text>\n </Box>\n ))}\n </Box>\n );\n case 'tool-call': {\n // Suppress empty internal tool calls (e.g. Codex Delegate with no input)\n if (!event.input && !event.output && (event.tool === 'Delegate' || event.tool === 'delegate')) return null;\n\n const toolColor = event.status === 'error' ? '#ef4444' : event.status === 'done' ? '#4ade80' : '#fbbf24';\n const icon = event.status === 'error' ? icons().fail : event.status === 'done' ? icons().success : '\\u27f3';\n const eColor = engineColor(event.engineId);\n const codeWidth = contentWidth(10);\n const nest = <Text color={eColor}>{' \\u23bf '}</Text>;\n\n // Parse structured input (JSON from handler, or raw string from other engines)\n let parsed: Record<string, unknown> = {};\n const rawInput = event.input || '';\n try {\n if (rawInput.startsWith('{')) parsed = JSON.parse(rawInput);\n } catch { /* not JSON — rawInput used as fallback */ }\n const toolKey = event.tool.toLowerCase();\n const forceExpanded = ['edit', 'write', 'update', 'applypatch', 'apply_patch'].includes(toolKey);\n // Tool blocks are committed into native terminal scrollback via\n // <Static> once finalized — so a per-block \"Ctrl+E expand\" hint\n // would be misleading (Ink cannot re-render past Static items).\n const collapsedHint = null;\n\n if (toolKey === 'reportconfidence') {\n return (\n <Box paddingLeft={2}>\n <Text italic color=\"#a8a8a8\">{' \\u25B9 '}{formatConfidenceToolLabel(parsed, rawInput)}</Text>\n </Box>\n );\n }\n\n // ── Bash / Run ──\n if (toolKey === 'bash' || toolKey === 'run' || toolKey === 'agonbash') {\n const cmd = (parsed.command as string) || rawInput || '';\n const desc = parsed.description as string | undefined;\n if (!cmd) {\n // No input data (e.g. ACP streaming) — just show tool name\n return (\n <Box paddingLeft={2}>\n <Text>{nest}<Text color={toolColor}>{icon}{' '}<Text bold>{'Bash'}</Text></Text>{desc ? <Text dimColor>{' \\u00b7 '}{desc}</Text> : ''}</Text>\n </Box>\n );\n }\n // Collapsed: 1-line summary\n if (!toolOutputExpanded) {\n const outputLines = event.output ? event.output.split('\\n').length : 0;\n const cmdPreview = desc || cmd.split('\\n')[0].slice(0, 60);\n return (\n <Box paddingLeft={2}>\n <Text>\n {nest}<Text color={toolColor}>{icon}{' '}<Text bold>{'Bash'}</Text></Text>\n <Text dimColor>{desc ? ' \\u00b7 ' : ' $ '}{cmdPreview}{cmdPreview.length >= 60 ? '\\u2026' : ''}</Text>\n {outputLines > 0 && event.status !== 'running' && <Text dimColor>{' \\u2192 '}{outputLines}{' lines'}</Text>}\n {collapsedHint}\n </Text>\n </Box>\n );\n }\n const cmdLines = cmd.split('\\n').slice(0, 3);\n const moreCmd = cmd.split('\\n').length > 3;\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n <Text>{nest}<Text color={toolColor}>{icon}{' '}<Text bold>{'Bash'}</Text></Text>{desc ? <Text dimColor>{' \\u00b7 '}{desc}</Text> : ''}</Text>\n <Text> </Text>\n {cmdLines.map((line: string, i: number) => (\n <Text key={`cmd-${i}`}>\n <Text dimColor>{' '}{i === 0 ? '$ ' : ' '}</Text>\n <Text>{truncateCodeLine(line, codeWidth)}</Text>\n </Text>\n ))}\n {moreCmd && <Text dimColor>{' \\u2026'}</Text>}\n {event.output && event.status !== 'running' && (() => {\n const outLines = event.output.split('\\n');\n const total = outLines.length;\n const maxHead = total > 80 ? 30 : 50;\n const tailCount = 5;\n const showTail = total > maxHead + tailCount;\n const headLines = outLines.slice(0, showTail ? maxHead : total);\n const tailLines = showTail ? outLines.slice(-tailCount) : [];\n const skipped = total - maxHead - tailLines.length;\n const renderLine = (line: string, i: number, prefix: string) => (\n <Box key={`${prefix}-${i}`}>\n <Text dimColor>{' '}</Text>\n {event.status === 'error'\n ? <Text color=\"#ef4444\">{truncateCodeLine(line, codeWidth)}</Text>\n : <AnsiLine text={line} maxWidth={codeWidth} fallbackDim={true} />}\n </Box>\n );\n return (\n <>\n <Text> </Text>\n {headLines.map((line: string, i: number) => renderLine(line, i, 'head'))}\n {skipped > 0 && <Text dimColor>{' \\u2026 '}{skipped}{' more lines \\u2026'}</Text>}\n {tailLines.map((line: string, i: number) => renderLine(line, i, 'tail'))}\n </>\n );\n })()}\n </Box>\n );\n }\n\n // ── Edit ──\n if (toolKey === 'edit' || toolKey === 'update' || toolKey === 'agonedit') {\n const filePath = (parsed.file_path as string) || (parsed.filePath as string) || '';\n const oldStr = (parsed.old_string as string) || (parsed.oldString as string) || '';\n const newStr = (parsed.new_string as string) || (parsed.newString as string) || '';\n const shortPath = filePath ? filePath.replace(process.cwd() + '/', '').replace(process.env.HOME ?? '', '~') : '';\n const addedCount = newStr ? newStr.split('\\n').length : 0;\n const removedCount = oldStr ? oldStr.split('\\n').length : 0;\n // Collapsed: single-line summary.\n if (!toolOutputExpanded && !forceExpanded) {\n return (\n <Box paddingLeft={2}>\n <Text>\n {nest}<Text color={toolColor}>{icon}{' '}<Text bold>{icons().edit + ' Update'}</Text></Text>{shortPath ? <Text>{'('}<Text color=\"#a78bfa\">{shortPath}</Text>{')'}</Text> : ''}{' '}<Text dimColor>\\u00b7 </Text><Text color=\"#ef4444\">-{removedCount}</Text><Text dimColor>{' '}</Text><Text color=\"#4ade80\">+{addedCount}</Text>{' lines'}<Text dimColor>{''}</Text>\n </Text>\n </Box>\n );\n }\n // When expanded: show all lines.\n const maxLines = Infinity;\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n <Text>{nest}<Text color={toolColor}>{icon}{' '}<Text bold>{icons().edit + ' Update'}</Text></Text>{shortPath ? <Text>{'('}<Text color=\"#a78bfa\">{shortPath}</Text>{')'}</Text> : ''}</Text>\n {(oldStr || newStr) && event.status !== 'running' && (() => {\n const oldLines = oldStr.split('\\n').slice(0, maxLines);\n const newLines = newStr.split('\\n').slice(0, maxLines);\n const gutterW = Math.max(String(Math.max(removedCount, addedCount)).length, 2);\n const pad = (n: number) => String(n).padStart(gutterW);\n return (\n <>\n <Text dimColor>{' '}<Text color=\"#ef4444\">{'-'}{removedCount}</Text>{' '}<Text color=\"#4ade80\">{'+'}{addedCount}</Text>{' lines'}</Text>\n {oldLines.map((line: string, i: number) => (\n <Text key={`old-${i}`}>\n <Text color=\"#6b7280\">{' '}{pad(i + 1)}{' '}</Text>\n <DiffLine line={`-${line}`} maxWidth={codeWidth - gutterW - 2} />\n </Text>\n ))}\n {removedCount > maxLines && <Text dimColor>{' \\u2026 '}{removedCount - maxLines}{' more removed'}</Text>}\n {newLines.map((line: string, i: number) => (\n <Text key={`new-${i}`}>\n <Text color=\"#6b7280\">{' '}{pad(i + 1)}{' '}</Text>\n <DiffLine line={`+${line}`} maxWidth={codeWidth - gutterW - 2} />\n </Text>\n ))}\n {addedCount > maxLines && <Text dimColor>{' \\u2026 '}{addedCount - maxLines}{' more added'}</Text>}\n </>\n );\n })()}\n </Box>\n );\n }\n\n // ── Write ──\n if (toolKey === 'write' || toolKey === 'agonwrite') {\n const filePath = (parsed.file_path as string) || (parsed.filePath as string) || '';\n const content = (parsed.content as string) || '';\n const shortPath = shortToolPath(filePath);\n const lineCount = content ? content.split('\\n').length : 0;\n // Collapsed: single-line summary.\n if (!toolOutputExpanded && !forceExpanded) {\n return (\n <Box paddingLeft={2}>\n <Text>\n {nest}<Text color={toolColor}>{icon}{' '}<Text bold>{icons().write + ' Write'}</Text></Text>{shortPath ? <Text>{'('}<Text color=\"#a78bfa\">{shortPath}</Text>{')'}</Text> : ''}{lineCount > 0 && <><Text dimColor>{' \\u00b7 '}</Text><Text color=\"#4ade80\">+{lineCount}</Text><Text dimColor>{' lines'}</Text></>}<Text dimColor>{''}</Text>\n </Text>\n </Box>\n );\n }\n // When expanded: show all lines.\n const maxLines = Infinity;\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n <Text>{nest}<Text color={toolColor}>{icon}{' '}<Text bold>{icons().write + ' Write'}</Text></Text>{shortPath ? <Text>{'('}<Text color=\"#a78bfa\">{shortPath}</Text>{')'}</Text> : ''}</Text>\n {content && event.status !== 'running' && (() => {\n const allLines = content.split('\\n');\n const shown = allLines.slice(0, maxLines);\n const gutterW = Math.max(String(lineCount).length, 2);\n const pad = (n: number) => String(n).padStart(gutterW);\n return (\n <>\n <Text dimColor>{' '}<Text color=\"#4ade80\">{'+'}{lineCount}</Text>{' lines'}</Text>\n {shown.map((line: string, i: number) => (\n <Text key={`w-${i}`}>\n <Text color=\"#6b7280\">{' '}{pad(i + 1)}{' '}</Text>\n <DiffLine line={`+${line}`} maxWidth={codeWidth - gutterW - 2} />\n </Text>\n ))}\n {lineCount > maxLines && <Text dimColor>{' \\u2026 '}{lineCount - maxLines}{' more lines'}</Text>}\n </>\n );\n })()}\n </Box>\n );\n }\n\n // ── Apply Patch ──\n if (toolKey === 'applypatch' || toolKey === 'apply_patch') {\n const patch = parsePatchPreview(rawInput, parsed);\n const fileSummary = patch.files.length > 0\n ? patch.files.slice(0, 2).map((filePath: string) => shortToolPath(filePath)).join(', ') + (patch.files.length > 2 ? ', …' : '')\n : '';\n const maxLines = 80;\n const shown = patch.lines.slice(0, maxLines);\n const omitted = Math.max(0, patch.lines.length - shown.length);\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n <Text>\n {nest}<Text color={toolColor}>{icon}{' '}<Text bold>{icons().edit + ' Patch'}</Text></Text>\n {fileSummary ? <Text>{'('}<Text color=\"#a78bfa\">{fileSummary}</Text>{')'}</Text> : ''}\n <Text dimColor>{' \\u00b7 '}</Text><Text color=\"#ef4444\">-{patch.deletions}</Text><Text dimColor>{' '}</Text><Text color=\"#4ade80\">+{patch.additions}</Text><Text dimColor>{' lines'}</Text>\n </Text>\n {shown.map((line: string, i: number) => (\n <DiffLine key={`patch-${i}`} line={line} maxWidth={codeWidth} />\n ))}\n {omitted > 0 && <Text dimColor>{' \\u2026 '}{omitted}{' more patch lines'}</Text>}\n </Box>\n );\n }\n\n // ── Read ──\n if (toolKey === 'read') {\n const filePath = (parsed.file_path as string) || (parsed.filePath as string) || '';\n const shortPath = filePath ? filePath.replace(process.cwd() + '/', '').replace(process.env.HOME ?? '', '~') : '';\n if (!toolOutputExpanded) {\n const lineCount = event.output ? event.output.split('\\n').length : 0;\n return (\n <Box paddingLeft={2}>\n <Text>\n {nest}<Text color={toolColor}>{icon}{' '}<Text bold>{icons().read + ' Read'}</Text></Text>\n {shortPath ? <Text>{'('}<Text color=\"#a78bfa\">{shortPath}</Text>{')'}</Text> : ''}\n {lineCount > 0 && event.status === 'done' && <Text dimColor>{' '}{lineCount}{' lines'}</Text>}\n {collapsedHint}\n </Text>\n </Box>\n );\n }\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n <Text>{nest}<Text color={toolColor}>{icon}{' '}<Text bold>{icons().read + ' Read'}</Text></Text>{shortPath ? <Text>{'('}<Text color=\"#a78bfa\">{shortPath}</Text>{')'}</Text> : ''}</Text>\n {event.output && event.status === 'done' && (\n <Text dimColor>{' '}{event.output.split('\\n').length}{' lines ('}{Math.ceil(event.output.length / 1024)}{'kb)'}</Text>\n )}\n </Box>\n );\n }\n\n // ── Grep / Search ──\n if (toolKey === 'grep' || toolKey === 'search') {\n const pattern = (parsed.pattern as string) || rawInput || '';\n const path = (parsed.path as string) || '';\n const shortPath = path ? path.replace(process.cwd() + '/', '').replace(process.env.HOME ?? '', '~') : '';\n if (!toolOutputExpanded) {\n const matchCount = event.output ? event.output.split('\\n').length : 0;\n return (\n <Box paddingLeft={2}>\n <Text>\n {nest}<Text color={toolColor}>{icon}{' '}<Text bold>{icons().search + ' Search'}</Text></Text>\n {' '}<Text color=\"#a78bfa\">{pattern}</Text>\n {matchCount > 0 && event.status === 'done' && <Text dimColor>{' \\u2192 '}{matchCount}{' matches'}</Text>}\n {collapsedHint}\n </Text>\n </Box>\n );\n }\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n <Text>{nest}<Text color={toolColor}>{icon}{' '}<Text bold>{icons().search + ' Search'}</Text></Text>{' '}<Text color=\"#a78bfa\">{pattern}</Text>{shortPath ? <Text dimColor>{' in '}{shortPath}</Text> : ''}</Text>\n {event.output && event.status === 'done' && (\n <Text dimColor>{' '}{event.output.split('\\n').length}{' matches'}</Text>\n )}\n </Box>\n );\n }\n\n // ── Glob / Find ──\n if (toolKey === 'glob' || toolKey === 'find') {\n const pattern = (parsed.pattern as string) || rawInput || '';\n if (!toolOutputExpanded) {\n const fileCount = event.output ? event.output.split('\\n').filter((l: string) => l.trim()).length : 0;\n return (\n <Box paddingLeft={2}>\n <Text>\n {nest}<Text color={toolColor}>{icon}{' '}<Text bold>{icons().find + ' Find'}</Text></Text>\n {' '}<Text color=\"#a78bfa\">{pattern}</Text>\n {fileCount > 0 && event.status === 'done' && <Text dimColor>{' \\u2192 '}{fileCount}{' files'}</Text>}\n {collapsedHint}\n </Text>\n </Box>\n );\n }\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n <Text>{nest}<Text color={toolColor}>{icon}{' '}<Text bold>{icons().find + ' Find'}</Text></Text>{' '}<Text color=\"#a78bfa\">{pattern}</Text></Text>\n {event.output && event.status === 'done' && (\n <Text dimColor>{' '}{event.output.split('\\n').filter((l: string) => l.trim()).length}{' files'}</Text>\n )}\n </Box>\n );\n }\n\n // ── Fallback: generic tool ──\n const ic = icons();\n const toolLabels: Record<string, string> = {\n 'Read': `${ic.read} Read`, 'Edit': `${ic.edit} Edit`, 'Write': `${ic.write} Write`,\n 'Bash': `${ic.bash} Run`, 'Grep': `${ic.search} Search`, 'Glob': `${ic.find} Find`,\n 'tool': `${ic.tool} Tool`,\n };\n const label = toolLabels[event.tool] ?? `${ic.tool} ${event.tool}`;\n const inputPreview = event.input.length > 80 ? event.input.slice(0, 80) + '\\u2026' : event.input;\n // Collapsed: 1-line summary for generic tools\n if (!toolOutputExpanded && !forceExpanded) {\n const outLines = event.output ? event.output.split('\\n').length : 0;\n return (\n <Box paddingLeft={2}>\n <Text>{nest}<Text color={toolColor}>{icon}{' '}<Text bold>{label}</Text></Text>{' '}<Text dimColor>{inputPreview}</Text>{outLines > 0 && event.status === 'done' && <Text dimColor>{' \\u2192 '}{outLines}{' lines'}</Text>}{collapsedHint}</Text>\n </Box>\n );\n }\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n <Text>{nest}<Text color={toolColor}>{icon}{' '}<Text bold>{label}</Text></Text>{' '}<Text dimColor>{inputPreview}</Text></Text>\n {event.output && event.status === 'done' && event.output.length <= 200 && (\n <Text dimColor>{' '}{event.output.length > 120 ? event.output.slice(0, 120) + '\\u2026' : event.output}</Text>\n )}\n {event.output && event.status === 'done' && event.output.length > 200 && (\n <Text dimColor>{' '}{event.output.split('\\n').length}{' lines ('}{Math.ceil(event.output.length / 1024)}{'kb)'}</Text>\n )}\n </Box>\n );\n }\n case 'response-meta': {\n const secs = (event.elapsed / 1000).toFixed(1);\n const tokens = (event as any).inputTokens || (event as any).outputTokens\n ? `${((event as any).inputTokens ?? 0) + ((event as any).outputTokens ?? 0)} tok`\n : '';\n const cost = (event as any).cost ? `$${(event as any).cost.toFixed(4)}` : '';\n const parts = [event.engineId, `${secs}s`, tokens, cost].filter(Boolean);\n return (\n <Box paddingLeft={2}>\n <Text dimColor>{parts.join(' \\u00b7 ')}</Text>\n </Box>\n );\n }\n case 'cesar-recap': return <CesarRecapBlock event={event as OutputEvent & { type: 'cesar-recap' }} />;\n case 'file-changes': {\n const files = (event as any).files as { path: string; status: string; additions: number; deletions: number }[];\n if (!files || files.length === 0) return null;\n const cwd = process.cwd();\n return (\n <Box flexDirection=\"column\" paddingLeft={2} marginY={1}>\n <Text bold>{'Files changed'}</Text>\n {files.map((f: any) => {\n const shortPath = f.path.replace(cwd + '/', '');\n const total = f.additions + f.deletions;\n const barW = 10;\n const addBar = total > 0 ? Math.max(1, Math.round((f.additions / total) * barW)) : 0;\n const delBar = barW - addBar;\n return (\n <Box key={f.path}>\n <Text color={f.status === 'created' ? '#22d3ee' : f.status === 'deleted' ? '#ef4444' : '#4ade80'}>\n {f.status === 'created' ? icons().dotOn : f.status === 'deleted' ? '\\u2296' : icons().success}\n </Text>\n <Text>{' '}{shortPath}</Text>\n <Text dimColor>{' +'}{f.additions}{' -'}{f.deletions}{' '}</Text>\n <Text><Text color=\"#4ade80\">{'\\u2588'.repeat(addBar)}</Text><Text color=\"#ef4444\">{'\\u2588'.repeat(delBar)}</Text></Text>\n </Box>\n );\n })}\n </Box>\n );\n }\n case 'dashboard': return <DashboardView event={event as OutputEvent & { type: 'dashboard' }} />;\n case 'plan-proposal': return <PlanProposalView plan={event.plan} markdown={(event as any).markdown} committed={(event as any).committed} />;\n case 'plan-execution': return <PlanExecutionView plan={(event as any).plan} />;\n case 'tool-call-group': return <ToolCallGroup blocks={(event as any).blocks} />;\n default: return null;\n }\n});\nexport { OutputBlockView };\n\n// @kern-source: engine:995\nconst ToolCallGroup = React.memo(function ToolCallGroup({ blocks }: { blocks:OutputBlock[] }) {\n const labelForTool = (raw: unknown) => {\n const toolKey = String(raw ?? '').toLowerCase();\n if (toolKey === 'bash' || toolKey === 'run' || toolKey === 'agonbash') return 'Bash';\n if (toolKey === 'read') return 'Read';\n if (toolKey === 'grep' || toolKey === 'search') return 'Search';\n if (toolKey === 'glob' || toolKey === 'find') return 'Find';\n if (toolKey === 'edit' || toolKey === 'update' || toolKey === 'agonedit') return 'Update';\n if (toolKey === 'write' || toolKey === 'agonwrite') return 'Write';\n if (toolKey === 'applypatch' || toolKey === 'apply_patch') return 'Patch';\n if (toolKey === 'reportconfidence') return 'Confidence';\n if (toolKey === 'quicknero') return 'QuickNero';\n return String(raw ?? 'Tool');\n };\n const timestampMs = (ev: any) => {\n const candidates = [ev?.timestamp, ev?.startedAt, ev?.endedAt, ev?.completedAt, ev?.finishedAt];\n for (const value of candidates) {\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n if (typeof value === 'string' && value.trim()) {\n const parsed = Date.parse(value);\n if (Number.isFinite(parsed)) return parsed;\n }\n }\n return null;\n };\n const durationMs = (ev: any) => {\n for (const key of ['elapsedMs', 'durationMs']) {\n const value = ev?.[key];\n if (typeof value === 'number' && Number.isFinite(value) && value >= 0) return value;\n }\n return null;\n };\n const toolCounts: Record<string, number> = {};\n let confidenceLabel = '';\n let errors = 0;\n let running = 0;\n let totalOutputBytes = 0;\n let explicitElapsedMs = 0;\n let firstTimestampMs: number | null = null;\n let lastTimestampMs: number | null = null;\n const changedFiles: string[] = [];\n const changeEvents: any[] = [];\n const changeRows: { key:string; text:string }[] = [];\n let omittedChangeRows = 0;\n const pushChangeRow = (key: string, text: string) => {\n if (changeRows.length < 14) changeRows.push({ key, text });\n else omittedChangeRows += 1;\n };\n for (const b of blocks) {\n const ev = b.event as any;\n const ts = timestampMs(ev);\n if (ts != null) {\n firstTimestampMs = firstTimestampMs == null ? ts : Math.min(firstTimestampMs, ts);\n lastTimestampMs = lastTimestampMs == null ? ts : Math.max(lastTimestampMs, ts);\n }\n const elapsed = durationMs(ev);\n if (elapsed != null) explicitElapsedMs += elapsed;\n if (typeof ev.output === 'string' && ev.output.length > 0) {\n totalOutputBytes += Buffer.byteLength(ev.output, 'utf8');\n }\n const rawName = ev.tool || 'tool';\n const toolKey = String(rawName).toLowerCase();\n const { rawInput, parsed } = parseToolInputPayload(ev.input ?? '');\n const name = labelForTool(rawName);\n if (ev.status === 'error') errors++;\n if (ev.status === 'running') running++;\n if (toolKey === 'reportconfidence') {\n confidenceLabel = formatConfidenceToolLabel(parsed, rawInput);\n continue;\n }\n toolCounts[name] = (toolCounts[name] || 0) + 1;\n if ((toolKey === 'edit' || toolKey === 'update' || toolKey === 'write' || toolKey === 'agonedit' || toolKey === 'agonwrite') && typeof ev.input === 'string' && ev.input.trim().startsWith('{')) {\n try {\n const filePath = (parsed.file_path as string) || (parsed.filePath as string) || '';\n if (filePath) {\n const shortPath = shortToolPath(filePath);\n if (!changedFiles.includes(shortPath)) changedFiles.push(shortPath);\n }\n } catch { /* ignore malformed tool input */ }\n }\n if (toolKey === 'edit' || toolKey === 'update' || toolKey === 'agonedit') {\n changeEvents.push(ev);\n const oldLines = String((parsed.old_string as string) || (parsed.oldString as string) || '').split('\\n');\n const newLines = String((parsed.new_string as string) || (parsed.newString as string) || '').split('\\n');\n oldLines.slice(0, 3).forEach((line: string, index: number) => pushChangeRow(`${b.id}-old-${index}`, `-${line}`));\n newLines.slice(0, 3).forEach((line: string, index: number) => pushChangeRow(`${b.id}-new-${index}`, `+${line}`));\n omittedChangeRows += Math.max(0, oldLines.length - 3) + Math.max(0, newLines.length - 3);\n } else if (toolKey === 'write' || toolKey === 'agonwrite') {\n changeEvents.push(ev);\n const lines = String((parsed.content as string) || '').split('\\n');\n lines.slice(0, 6).forEach((line: string, index: number) => pushChangeRow(`${b.id}-write-${index}`, `+${line}`));\n omittedChangeRows += Math.max(0, lines.length - 6);\n } else if (toolKey === 'applypatch' || toolKey === 'apply_patch') {\n changeEvents.push(ev);\n const patch = parsePatchPreview(rawInput, parsed);\n for (const patchFile of patch.files) {\n const shortPath = shortToolPath(patchFile);\n if (!changedFiles.includes(shortPath)) changedFiles.push(shortPath);\n }\n patch.lines.slice(0, 8).forEach((line: string, index: number) => pushChangeRow(`${b.id}-patch-${index}`, line));\n omittedChangeRows += Math.max(0, patch.lines.length - 8);\n }\n }\n const summary = Object.entries(toolCounts)\n .map(([name, count]: [string, number]) => count > 1 ? `${name}\\u00d7${count}` : name)\n .join(', ');\n const statusSummary = errors > 0\n ? ` \\u00b7 ${errors} error${errors === 1 ? '' : 's'}`\n : running > 0 ? ' \\u00b7 running' : '';\n const changedSummary = changedFiles.length > 0\n ? ` \\u00b7 changed ${changedFiles.length} file${changedFiles.length > 1 ? 's' : ''}: ${changedFiles.slice(0, 2).join(', ')}${changedFiles.length > 2 ? ', \\u2026' : ''}`\n : '';\n const firstEvent = (blocks[0]?.event as any) ?? {};\n const metaEngine = String(firstEvent.engineId ?? '').trim() || 'engine';\n const inferredElapsedMs = firstTimestampMs != null && lastTimestampMs != null ? Math.max(0, lastTimestampMs - firstTimestampMs) : 0;\n const metaElapsedMs = explicitElapsedMs > 0 ? explicitElapsedMs : inferredElapsedMs;\n const metaParts = [\n metaEngine,\n `${blocks.length} tool${blocks.length === 1 ? '' : 's'}`,\n `changed ${changedFiles.length} file${changedFiles.length === 1 ? '' : 's'}`,\n metaElapsedMs > 0 ? `${(metaElapsedMs / 1000).toFixed(1)}s` : '',\n totalOutputBytes > 0 ? `${Math.ceil(totalOutputBytes / 1024)}kb` : '',\n ].filter(Boolean);\n\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n <Text dimColor>{' \\u23f5 '}{metaParts.join(' \\u00b7 ')}</Text>\n {confidenceLabel && (\n <Text>\n <Text italic color=\"#a8a8a8\">{' \\u25B9 '}{confidenceLabel}</Text>\n </Text>\n )}\n <Text dimColor>{' '}{blocks.length}{' tool calls'}{summary ? ` \\u00b7 ${summary}` : ''}{statusSummary}{changedSummary}{' '}<Text color=\"#f59e0b\">{'Ctrl+E'}</Text></Text>\n {changeRows.map((row: { key:string; text:string }) => (\n <DiffLine key={row.key} line={row.text} maxWidth={contentWidth(10)} />\n ))}\n {omittedChangeRows > 0 && (\n <Text dimColor>{' \\u2026 '}{omittedChangeRows}{' more changed lines'}</Text>\n )}\n </Box>\n );\n});\nexport { ToolCallGroup };\n\n// @kern-source: engine:1146\nconst DebateGroup = React.memo(function DebateGroup({ blocks }: { blocks:OutputBlock[] }) {\n const round = (blocks[0]?.event as any)?.round ?? '?';\n const w = contentWidth(6);\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n <Text color=\"#a78bfa\" bold>{'\\u250c\\u2500\\u2500 Round '}{round}{' \\u2500\\u2500'}</Text>\n {blocks.map((b: any, i: number) => {\n const ev = b.event as any;\n const eColor = engineColor(ev.engineId);\n const summary = extractSummary(ev.argument || '', w - 30);\n return (\n <Text key={`dr-${i}`}>\n <Text color=\"#a78bfa\">{'\\u2502 '}</Text>\n <Text color={eColor} bold>{ev.engineId}</Text>\n <Text dimColor>{' ('}{ev.position}{'): '}</Text>\n <Text>{summary}</Text>\n </Text>\n );\n })}\n <Text color=\"#a78bfa\">{'\\u2514'}<Text color=\"#f59e0b\">{''}</Text></Text>\n </Box>\n );\n});\nexport { DebateGroup };\n\n// @kern-source: engine:1175\nconst BidGroup = React.memo(function BidGroup({ blocks }: { blocks:OutputBlock[] }) {\n const w = contentWidth(6);\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n <Text color=\"#22d3ee\" bold>{'\\u250c\\u2500\\u2500 Brainstorm Bids \\u2500\\u2500'}</Text>\n {blocks.map((b: any, i: number) => {\n const ev = b.event as any;\n const eColor = engineColor(ev.engineId);\n const isWinner = ev.critique && ev.critique.includes('best');\n const scoreMatch = ev.critique ? ev.critique.match(/score:\\s*(\\d+)/) : null;\n const score = scoreMatch ? scoreMatch[1] : '?';\n const icon = isWinner ? '\\u2b50' : '\\u2713';\n const summary = extractSummary(ev.content || '', w - 30);\n return (\n <Text key={`bid-${i}`}>\n <Text color=\"#22d3ee\">{'\\u2502 '}</Text>\n <Text>{icon}{' '}</Text>\n <Text color={eColor} bold>{ev.engineId}</Text>\n <Text dimColor>{' ('}{score}{'): '}</Text>\n <Text>{summary}</Text>\n </Text>\n );\n })}\n <Text color=\"#22d3ee\">{'\\u2514'}<Text color=\"#f59e0b\">{''}</Text></Text>\n </Box>\n );\n});\nexport { BidGroup };\n\n// @kern-source: engine:27\nexport const BRAND: readonly string[] = ['#fbbf24', '#f9a816', '#f97316', '#f45a2a', '#ef4444'] as const;\n\n// @kern-source: engine:29\nexport const LOGO_LINES: string[] = [' █████╗ ██████╗ ██████╗ ███╗ ██╗', ' ██╔══██╗██╔════╝ ██╔═══██╗████╗ ██║', ' ███████║██║ ███╗██║ ██║██╔██╗ ██║', ' ██╔══██╗██║ ██╗██║ ██║██║╚██╗██║', ' ██║ ██║╚██████╔╝╚██████╔╝██║ ╚████║', ' ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝'];\n\n/**\n * Read a package's installed version from its package.json at runtime so the banner auto-reflects npm upgrades instead of a frozen literal. Walks up from a resolvable entry (or this module for the own package) to the nearest package.json whose name matches. Falls back to the literal if resolution fails — e.g. an exports-locked package.json that can't be required by path.\n */\n// @kern-source: engine:31\nexport function resolvePackageVersion(resolveSpecifier: string|null, wantName: string, fallback: string): string {\n try {\n const req = createRequire(import.meta.url);\n const startFile = resolveSpecifier ? req.resolve(resolveSpecifier) : fileURLToPath(import.meta.url);\n let dir = dirname(startFile);\n for (let i = 0; i < 10; i += 1) {\n const pkgPath = join(dir, 'package.json');\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));\n if (pkg && pkg.name === wantName && typeof pkg.version === 'string') return pkg.version;\n }\n const parent = dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n } catch { /* resolution failed — use the pinned fallback */ }\n return fallback;\n}\n\n// @kern-source: engine:58\nexport const VERSION: string = resolvePackageVersion(null, '@kernlang/agon', '0.1.5');\n\n// @kern-source: engine:60\nexport const KERN_VERSION: string = resolvePackageVersion('@kernlang/terminal/runtime', '@kernlang/terminal', '3.5.7');\n","// @generated by kern v3.5.8 — DO NOT EDIT. Source: src/kern/blocks/rich-text.kern\n\n// @kern-source: rich-text:1\nexport interface InlineStyle {\n bold: boolean;\n italic: boolean;\n code: boolean;\n dimColor: boolean;\n linkUrl: string|undefined;\n}\n\n// @kern-source: rich-text:8\nexport interface InlineSpan {\n text: string;\n style: InlineStyle;\n}\n\n// @kern-source: rich-text:12\nexport const DEFAULT_STYLE: InlineStyle = ({ bold: false, italic: false, code: false, dimColor: false, linkUrl: undefined });\n\n// @kern-source: rich-text:14\nexport interface RichLine {\n kind: 'plain'|'h1'|'h2'|'h3'|'bullet'|'ordered'|'blockquote'|'hr'|'blank';\n spans: InlineSpan[];\n indent: number;\n marker: string|undefined;\n}\n\n// @kern-source: rich-text:20\nexport function classifyLine(line: string): {kind:RichLine['kind'], content:string, indent:number, marker:string|undefined} {\n const trimmed = line.trimStart();\n const leadingSpaces = line.length - trimmed.length;\n if (!trimmed) {\n return { kind: 'blank', content: '', indent: 0, marker: undefined };\n }\n // Horizontal rule: ---, ***, ___ (with optional spaces)\n if (/^[-*_]\\s*[-*_]\\s*[-*_][\\s*_-]*$/.test(trimmed)) {\n return { kind: 'hr', content: '', indent: 0, marker: undefined };\n }\n // Headers\n const h3 = trimmed.match(/^###\\s+(.*)/);\n if (h3) {\n return { kind: 'h3', content: h3[1], indent: 0, marker: '### ' };\n }\n const h2 = trimmed.match(/^##\\s+(.*)/);\n if (h2) {\n return { kind: 'h2', content: h2[1], indent: 0, marker: '## ' };\n }\n const h1 = trimmed.match(/^#\\s+(.*)/);\n if (h1) {\n return { kind: 'h1', content: h1[1], indent: 0, marker: '# ' };\n }\n // Blockquote\n const bq = trimmed.match(/^>\\s?(.*)/);\n if (bq) {\n return { kind: 'blockquote', content: bq[1], indent: 0, marker: '> ' };\n }\n // Unordered list\n const bullet = trimmed.match(/^[-*+]\\s+(.*)/);\n if (bullet) {\n return { kind: 'bullet', content: bullet[1], indent: Math.floor(leadingSpaces / 2), marker: '• ' };\n }\n // Ordered list\n const ordered = trimmed.match(/^(\\d+)[.)]\\s+(.*)/);\n if (ordered) {\n return { kind: 'ordered', content: ordered[2], indent: Math.floor(leadingSpaces / 2), marker: `${ordered[1]}. ` };\n }\n return { kind: 'plain', content: line, indent: 0, marker: undefined };\n}\n\n// @kern-source: rich-text:53\nexport function parseInlineSpans(text: string): InlineSpan[] {\n if (!text) return [{ text: '', style: DEFAULT_STYLE }];\n\n const spans: InlineSpan[] = [];\n // Regex matches: bold(**), italic(*), bold+italic(***), inline code(`), links([text](url))\n const TOKEN = /(\\*\\*\\*|__\\_|\\*\\*|__|\\*|_|`|\\[([^\\]]*)\\]\\(([^)]*)\\))/g;\n\n let pos = 0;\n let bold = false;\n let italic = false;\n\n function pushText(t: string): void {\n if (!t) return;\n spans.push({ text: t, style: { bold, italic, code: false, dimColor: false, linkUrl: undefined } });\n }\n\n let match: RegExpExecArray | null;\n while ((match = TOKEN.exec(text)) !== null) {\n const before = text.slice(pos, match.index);\n const token = match[0];\n\n // Link: [text](url)\n if (match[2] !== undefined) {\n pushText(before);\n spans.push({\n text: match[2],\n style: { bold, italic, code: false, dimColor: false, linkUrl: match[3] },\n });\n pos = match.index + token.length;\n continue;\n }\n\n // Inline code\n if (token === '`') {\n const closeIdx = text.indexOf('`', match.index + 1);\n if (closeIdx === -1) {\n // No closing backtick — treat as literal\n pushText(before + '`');\n pos = match.index + 1;\n continue;\n }\n pushText(before);\n const codeText = text.slice(match.index + 1, closeIdx);\n spans.push({\n text: codeText,\n style: { bold: false, italic: false, code: true, dimColor: false, linkUrl: undefined },\n });\n pos = closeIdx + 1;\n TOKEN.lastIndex = pos;\n continue;\n }\n\n // Bold+italic: *** or ___\n if (token === '***' || token === '___') {\n pushText(before);\n if (bold && italic) { bold = false; italic = false; }\n else { bold = true; italic = true; }\n pos = match.index + token.length;\n continue;\n }\n\n // Bold: ** or __\n if (token === '**' || token === '__') {\n pushText(before);\n bold = !bold;\n pos = match.index + token.length;\n continue;\n }\n\n // Italic: * or _\n if (token === '*' || token === '_') {\n // Avoid matching underscores inside words (e.g., snake_case)\n if (token === '_') {\n const charBefore = match.index > 0 ? text[match.index - 1] : ' ';\n const charAfter = match.index + 1 < text.length ? text[match.index + 1] : ' ';\n if (/\\w/.test(charBefore) && /\\w/.test(charAfter)) {\n pushText(before + '_');\n pos = match.index + 1;\n continue;\n }\n }\n pushText(before);\n italic = !italic;\n pos = match.index + token.length;\n continue;\n }\n\n pushText(before + token);\n pos = match.index + token.length;\n }\n\n // Remaining text\n const tail = text.slice(pos);\n if (tail) pushText(tail);\n\n // Merge adjacent spans with same style\n const merged: InlineSpan[] = [];\n for (const span of spans) {\n const last = merged[merged.length - 1];\n if (last && last.style.bold === span.style.bold && last.style.italic === span.style.italic\n && last.style.code === span.style.code && last.style.dimColor === span.style.dimColor\n && last.style.linkUrl === span.style.linkUrl) {\n last.text += span.text;\n } else {\n merged.push({ ...span, style: { ...span.style } });\n }\n }\n\n return merged.length > 0 ? merged : [{ text, style: DEFAULT_STYLE }];\n}\n\n// @kern-source: rich-text:165\nfunction spansVisibleLength(spans: InlineSpan[]): number {\n return spans.reduce((sum, s) => sum + s.text.length, 0);\n}\n\n// @kern-source: rich-text:167\nexport function richWrap(spans: InlineSpan[], width: number): InlineSpan[][] {\n if (width <= 0) return [spans];\n\n // Fast path: fits on one line\n if (spansVisibleLength(spans) <= width) return [spans];\n\n // Flatten to plain text, word-wrap it, then map spans back\n const fullText = spans.map(s => s.text).join('');\n if (!fullText) return [spans];\n\n // Step 1: Word-wrap the plain text into line ranges [start, end)\n const lineRanges: [number, number][] = [];\n let lineStart = 0;\n while (lineStart < fullText.length) {\n if (lineStart + width >= fullText.length) {\n lineRanges.push([lineStart, fullText.length]);\n break;\n }\n let breakAt = fullText.lastIndexOf(' ', lineStart + width);\n if (breakAt <= lineStart) breakAt = lineStart + width;\n lineRanges.push([lineStart, breakAt]);\n lineStart = breakAt;\n while (lineStart < fullText.length && fullText[lineStart] === ' ') lineStart++;\n }\n\n // Step 2: Build a flat char-to-span index\n const spanRanges: { start: number; end: number; style: InlineStyle }[] = [];\n let offset = 0;\n for (const span of spans) {\n spanRanges.push({ start: offset, end: offset + span.text.length, style: span.style });\n offset += span.text.length;\n }\n\n // Step 3: For each wrapped line, slice the relevant spans\n const lines: InlineSpan[][] = [];\n for (const [rangeStart, rangeEnd] of lineRanges) {\n const lineSpans: InlineSpan[] = [];\n for (const sr of spanRanges) {\n // Skip spans entirely outside this line range\n if (sr.end <= rangeStart || sr.start >= rangeEnd) continue;\n // Intersect\n const sliceStart = Math.max(sr.start, rangeStart) - sr.start;\n const sliceEnd = Math.min(sr.end, rangeEnd) - sr.start;\n const sliceText = fullText.slice(sr.start + sliceStart, sr.start + sliceEnd);\n // Trim leading space on first span of continuation lines, trailing on last\n const trimmed = lineSpans.length === 0 ? sliceText.trimStart() : sliceText;\n if (trimmed) lineSpans.push({ text: trimmed, style: { ...sr.style } });\n }\n // Trim trailing space on last span\n if (lineSpans.length > 0) {\n const last = lineSpans[lineSpans.length - 1];\n last.text = last.text.trimEnd();\n if (!last.text) lineSpans.pop();\n }\n if (lineSpans.length > 0) lines.push(lineSpans);\n }\n\n return lines.length > 0 ? lines : [spans];\n}\n\n// @kern-source: rich-text:228\nexport function parseProseToRichLines(text: string, width: number): RichLine[] {\n if (!text.trim()) return [];\n\n const inputLines = text.split('\\n');\n const result: RichLine[] = [];\n\n for (const rawLine of inputLines) {\n const classified = classifyLine(rawLine);\n\n if (classified.kind === 'blank') {\n result.push({ kind: 'blank', spans: [], indent: 0, marker: undefined });\n continue;\n }\n\n if (classified.kind === 'hr') {\n result.push({ kind: 'hr', spans: [{ text: '─'.repeat(Math.max(width - 2, 10)), style: { ...DEFAULT_STYLE, dimColor: true } }], indent: 0, marker: undefined });\n continue;\n }\n\n const spans = parseInlineSpans(classified.content);\n\n // Apply blockquote dimming\n if (classified.kind === 'blockquote') {\n for (const span of spans) {\n if (!span.style.code) span.style.dimColor = true;\n }\n }\n\n // Calculate available width after indent + marker\n const indentWidth = classified.indent * 2;\n const markerWidth = classified.marker ? classified.marker.length : 0;\n const contentWidth = Math.max(width - indentWidth - markerWidth, 20);\n\n const wrappedLines = richWrap(spans, contentWidth);\n\n for (let i = 0; i < wrappedLines.length; i++) {\n result.push({\n kind: i === 0 ? classified.kind : 'plain',\n spans: wrappedLines[i],\n indent: classified.indent,\n // Only first wrapped line gets the marker; continuations get indent\n marker: i === 0 ? classified.marker : undefined,\n });\n }\n }\n\n return result;\n}\n","// @generated by kern v3.5.8 — DO NOT EDIT. Source: src/kern/blocks/rendering.kern\n\nimport React from 'react';\nimport { Box, Text } from 'ink';\n\n// ── Core ───────────────────────────────────────────────\nimport { truncateCodeLine } from './markdown.js';\n\nimport type { ContentSegment } from './markdown.js';\n\nimport { parseProseToRichLines } from './rich-text.js';\n\nimport type { InlineSpan, RichLine } from './rich-text.js';\n\nimport { ENGINE_COLORS } from './output-format.js';\n\nimport { parseAnsiText, hasAnsiCodes, stripAnsi } from '../signals/ansi-parse.js';\n\nimport type { AnsiSegment } from '../signals/ansi-parse.js';\n\n// @kern-source: rendering:95\nexport interface SyntaxToken {\n text: string;\n color?: string;\n}\n\n// @kern-source: rendering:153\nexport function DiffLine({ line, maxWidth }: { line:string; maxWidth:number }) {\n const truncated = truncateCodeLine(line, maxWidth);\n if (line.startsWith('+')) {\n return <Text color=\"#22c55e\">{truncated}</Text>;\n }\n if (line.startsWith('-')) {\n return <Text color=\"#ef4444\">{truncated}</Text>;\n }\n if (line.startsWith('@@')) {\n return <Text color=\"#22d3ee\">{truncated}</Text>;\n }\n return <Text>{truncated}</Text>;\n}\n\n// @kern-source: rendering:173\nexport function SyntaxLine({ line, maxWidth }: { line:string; maxWidth:number }) {\n if (line.length > maxWidth) {\n const visible = line.slice(0, maxWidth - 4);\n const overflow = line.length - maxWidth + 4;\n const tokens = tokenizeLine(visible);\n return (\n <Text>\n {tokens.map((t: SyntaxToken, i: number) => t.color ? <Text key={i} color={t.color}>{t.text}</Text> : <Text key={i}>{t.text}</Text>)}\n <Text dimColor>{`\\u2026+${overflow}`}</Text>\n </Text>\n );\n }\n const tokens = tokenizeLine(line);\n return (\n <Text>\n {tokens.map((t: SyntaxToken, i: number) => t.color ? <Text key={i} color={t.color}>{t.text}</Text> : <Text key={i}>{t.text}</Text>)}\n </Text>\n );\n}\n\n// @kern-source: rendering:199\nexport function CodeBlockView({ segment, borderColor }: { segment:ContentSegment & { type: 'code' }; borderColor:string }) {\n const codeWidth = contentWidth(8);\n const lines = (segment.code ?? '').split('\\n');\n const isDiff = segment.language === 'diff' || lines.some((l: string) => /^[+-@]/.test(l));\n const capped = lines.slice(0, MAX_CODE_LINES);\n const overflow = lines.length - MAX_CODE_LINES;\n\n const bc = borderColor || '#585858';\n const maxLineLen = capped.reduce((m: number, l: string) => Math.max(m, l.length), 0);\n const headerLen = (segment.language || 'code').length + (segment.index !== undefined ? ` [${segment.index}]`.length : 0);\n const innerWidth = Math.max(maxLineLen, headerLen);\n const boxWidth = innerWidth + 4;\n const rule = '\\u2500'.repeat(boxWidth);\n return (\n <Box flexDirection=\"column\" width={boxWidth + 2} flexShrink={0}>\n <Text color={bc}>{'\\u2502 '}{rule}{' \\u2502'}</Text>\n <Text>\n <Text color={bc}>{'\\u2502 '}</Text>\n <Text color={CODE_RAIL_COLOR}>{CODE_RAIL}</Text>\n <Text> </Text>\n <Text dimColor>{segment.language || 'code'}</Text>\n {segment.index !== undefined && <Text color=\"#585858\">{` [${segment.index}]`}</Text>}\n <Text>{' '.repeat(Math.max(0, boxWidth - headerLen - 1))}</Text>\n <Text color={bc}>{' \\u2502'}</Text>\n </Text>\n {capped.map((line: string, i: number) => (\n <Text key={`code-${i}`}>\n <Text color={bc}>{'\\u2502 '}</Text>\n <Text color={CODE_RAIL_COLOR}>{CODE_RAIL}</Text>\n <Text> </Text>\n {isDiff ? <DiffLine line={line} maxWidth={codeWidth} /> : <SyntaxLine line={line} maxWidth={codeWidth} />}\n <Text>{' '.repeat(Math.max(0, codeWidth - line.length - 4))}</Text>\n <Text color={bc}>{' \\u2502'}</Text>\n </Text>\n ))}\n {overflow > 0 && (\n <Text>\n <Text color={bc}>{'\\u2502 '}</Text>\n <Text color={CODE_RAIL_COLOR}>{CODE_RAIL}</Text>\n <Text> </Text>\n <Text dimColor>{'\\u2026 '}{overflow}{' more lines'}</Text>\n <Text color={bc}>{' \\u2502'}</Text>\n </Text>\n )}\n <Text color={bc}>{'\\u2502 '}{rule}{' \\u2502'}</Text>\n </Box>\n );\n}\n\n// @kern-source: rendering:254\nexport function RichSpanView({ span }: { span:InlineSpan }) {\n if (span.style.code) {\n return <Text color=\"#a78bfa\" backgroundColor=\"#1e1033\">{span.text}</Text>;\n }\n if (span.style.linkUrl) {\n return <><Text bold color=\"#60a5fa\">{span.text}</Text><Text dimColor>{` (${span.style.linkUrl})`}</Text></>;\n }\n\n let el = <Text>{span.text}</Text>;\n if (span.style.bold && span.style.italic) el = <Text bold italic>{span.text}</Text>;\n else if (span.style.bold) el = <Text bold>{span.text}</Text>;\n else if (span.style.italic) el = <Text italic>{span.text}</Text>;\n if (span.style.dimColor) el = <Text dimColor>{span.text}</Text>;\n return el;\n}\n\n// @kern-source: rendering:275\nexport function RichLineView({ line, borderColor }: { line:RichLine; borderColor?:string }) {\n const border = borderColor ? <Text color={borderColor}>{'\\u2502 '}</Text> : null;\n const indent = line.indent > 0 ? ' '.repeat(line.indent) : '';\n\n if (line.kind === 'blank') return <Text>{border}{' '}</Text>;\n\n if (line.kind === 'hr') return <Text>{border}<Text dimColor>{'\\u2500'.repeat(40)}</Text></Text>;\n\n if (line.kind === 'h1') return <Text>{border}{indent}<Text bold color=\"cyan\">{'# '}{line.spans.map((s: InlineSpan, i: number) => <RichSpanView key={i} span={s} />)}</Text></Text>;\n if (line.kind === 'h2') return <Text>{border}{indent}<Text bold color=\"white\">{'## '}{line.spans.map((s: InlineSpan, i: number) => <RichSpanView key={i} span={s} />)}</Text></Text>;\n if (line.kind === 'h3') return <Text>{border}{indent}<Text bold color=\"#a0a0a0\">{'### '}{line.spans.map((s: InlineSpan, i: number) => <RichSpanView key={i} span={s} />)}</Text></Text>;\n\n if (line.kind === 'blockquote') {\n return <Text>{border}{indent}<Text dimColor>{'\\u2502 '}</Text>{line.spans.map((s: InlineSpan, i: number) => <RichSpanView key={i} span={s} />)}</Text>;\n }\n\n const marker = line.marker ?? '';\n const listIndent = (line.kind === 'bullet' || line.kind === 'ordered') && !indent ? ' ' : '';\n return <Text>{border}{indent}{listIndent}{marker}{line.spans.map((s: InlineSpan, i: number) => <RichSpanView key={i} span={s} />)}</Text>;\n}\n\n// @kern-source: rendering:302\nexport function MarkdownTableView({ headers, rows, alignments, borderColor }: { headers:string[]; rows:string[][]; alignments:('left' | 'center' | 'right')[]; borderColor:string }) {\n const colWidths = headers.map((h: string, i: number) => {\n let max = h.length;\n for (const row of rows) {\n if (row[i] && row[i].length > max) max = row[i].length;\n }\n return max;\n });\n\n function padCell(text: string, colIdx: number): string {\n const w = colWidths[colIdx] ?? text.length;\n const align = alignments[colIdx] ?? 'left';\n if (align === 'right') return text.padStart(w);\n if (align === 'center') {\n const pad = w - text.length;\n const left = Math.floor(pad / 2);\n return ' '.repeat(left) + text + ' '.repeat(pad - left);\n }\n return text.padEnd(w);\n }\n\n const headerLine = headers.map((h: string, i: number) => padCell(h, i)).join(' ');\n const sepLine = colWidths.map((w: number) => '\\u2500'.repeat(w)).join('\\u2500\\u2500');\n\n return (\n <Box flexDirection=\"column\">\n <Text><Text color={borderColor}>{'\\u2502 '}</Text><Text bold>{headerLine}</Text></Text>\n <Text><Text color={borderColor}>{'\\u2502 '}</Text><Text dimColor>{sepLine}</Text></Text>\n {rows.map((row: string[], ri: number) => (\n <Text key={`tr-${ri}`}><Text color={borderColor}>{'\\u2502 '}</Text>{row.map((cell: string, ci: number) => padCell(cell, ci)).join(' ')}</Text>\n ))}\n </Box>\n );\n}\n\n// @kern-source: rendering:345\nexport function RenderedSegments({ segments, borderColor, wrapWidth }: { segments:ContentSegment[]; borderColor:string; wrapWidth:number }) {\n return (\n <>\n {segments.map((seg: ContentSegment, i: number) => {\n const spacer = i > 0 && borderColor ? <Text key={`sp-${i}`} color={borderColor}>{'\\u2502'}</Text> : (i > 0 ? <Text key={`sp-${i}`}>{' '}</Text> : null);\n\n if (seg.type === 'prose') {\n const richLines = parseProseToRichLines(seg.text ?? '', wrapWidth);\n if (richLines.length === 0) return null;\n\n const spaced: RichLine[] = [];\n for (let j = 0; j < richLines.length; j++) {\n const line = richLines[j];\n const prev = j > 0 ? richLines[j - 1] : null;\n if ((line.kind === 'h1' || line.kind === 'h2' || line.kind === 'h3') && prev && prev.kind !== 'blank') {\n spaced.push({ kind: 'blank', spans: [], indent: 0, marker: undefined });\n }\n spaced.push(line);\n if ((line.kind === 'h1' || line.kind === 'h2' || line.kind === 'h3')) {\n const next = j + 1 < richLines.length ? richLines[j + 1] : null;\n if (next && next.kind !== 'blank') {\n spaced.push({ kind: 'blank', spans: [], indent: 0, marker: undefined });\n }\n }\n }\n\n return (\n <React.Fragment key={`seg-${i}`}>\n {spacer}\n <Box flexDirection=\"column\">\n {spaced.map((line: RichLine, j: number) => (\n <RichLineView key={`rl-${i}-${j}`} line={line} borderColor={borderColor} />\n ))}\n </Box>\n </React.Fragment>\n );\n }\n if (seg.type === 'table') {\n return (\n <React.Fragment key={`seg-${i}`}>\n {spacer}\n <Box flexDirection=\"column\">\n <Text color={borderColor}>{'\\u2502'}</Text>\n <MarkdownTableView headers={seg.headers ?? []} rows={seg.rows ?? []} alignments={seg.alignments ?? []} borderColor={borderColor} />\n <Text color={borderColor}>{'\\u2502'}</Text>\n </Box>\n </React.Fragment>\n );\n }\n return (\n <React.Fragment key={`seg-${i}`}>\n {spacer}\n <CodeBlockView segment={seg as ContentSegment & { type: 'code' }} borderColor={borderColor} />\n </React.Fragment>\n );\n })}\n </>\n );\n}\n\n// @kern-source: rendering:412\nexport function GradientLine({ text, colors }: { text:string; colors:readonly string[] }) {\n const step = Math.max(1, Math.ceil(text.length / colors.length));\n return (\n <Text>\n {text.split('').map((ch: string, i: number) => {\n const ci = Math.min(Math.floor(i / step), colors.length - 1);\n return <Text key={i} color={colors[ci]}>{ch}</Text>;\n })}\n </Text>\n );\n}\n\n// @kern-source: rendering:428\nexport function AnsiLine({ text, maxWidth, fallbackDim }: { text:string; maxWidth:number; fallbackDim?:boolean }) {\n if (!hasAnsiCodes(text)) {\n const display = text.length > maxWidth ? text.slice(0, maxWidth - 4) + '\\u2026' : text;\n return fallbackDim ? <Text dimColor>{display}</Text> : <Text>{display}</Text>;\n }\n const segments = parseAnsiText(text);\n return (\n <Text>\n {segments.map((seg: AnsiSegment, i: number) => (\n <Text\n key={i}\n color={seg.color}\n backgroundColor={seg.bgColor}\n bold={seg.bold}\n dimColor={seg.dim}\n italic={seg.italic}\n >{seg.text}</Text>\n ))}\n </Text>\n );\n}\n\n// @kern-source: rendering:16\nexport const CONTENT_WIDTH_OVERRIDE: {value:number|null} = ({ value: null });\n\n// @kern-source: rendering:18\nexport function contentWidth(padding: number): number {\n const termWidth = CONTENT_WIDTH_OVERRIDE.value ?? (process.stdout.columns || 100);\n return Math.max(termWidth - padding, 40);\n}\n\n/**\n * Run pure render helpers against an explicit terminal width. Used by replay tests so wrapping is not tied to the current test runner TTY.\n */\n// @kern-source: rendering:24\nexport function withContentWidthOverride(termWidth: number, fn: ()=>any): any {\n const previous = CONTENT_WIDTH_OVERRIDE.value;\n CONTENT_WIDTH_OVERRIDE.value = Math.max(40, Math.floor(Number(termWidth) || 100));\n try {\n return fn();\n } finally {\n CONTENT_WIDTH_OVERRIDE.value = previous;\n }\n}\n\n// @kern-source: rendering:38\nexport function color256toHex(code: number): string {\n const basic16: Record<number, string> = {\n 0: '#000000', 1: '#aa0000', 2: '#00aa00', 3: '#aa5500', 4: '#0000aa',\n 5: '#aa00aa', 6: '#00aaaa', 7: '#aaaaaa', 8: '#555555', 9: '#ff5555',\n 10: '#55ff55', 11: '#ffff55', 12: '#5555ff', 13: '#ff55ff', 14: '#55ffff', 15: '#ffffff',\n };\n if (code < 16) return basic16[code] ?? '#ffffff';\n if (code >= 232) {\n const gray = 8 + (code - 232) * 10;\n const h = Math.min(255, gray).toString(16).padStart(2, '0');\n return `#${h}${h}${h}`;\n }\n const idx = code - 16;\n const r = Math.floor(idx / 36);\n const g = Math.floor((idx % 36) / 6);\n const b = idx % 6;\n const toHex = (v: number) => (v === 0 ? 0 : 55 + v * 40).toString(16).padStart(2, '0');\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\n// @kern-source: rendering:59\nexport function engineColor(id: string): string {\n // Match known engines by prefix (e.g. \"zai-coding-plan-glm-5.1\" → \"zai\")\n const prefix = id.split('-')[0];\n return color256toHex(ENGINE_COLORS[id] ?? ENGINE_COLORS[prefix] ?? 124);\n}\n\n// @kern-source: rendering:67\nexport const CODE_RAIL: string = '\\u258c';\n\n// @kern-source: rendering:69\nexport const CODE_RAIL_COLOR: string = '#585858';\n\n// @kern-source: rendering:71\nexport const MAX_CODE_LINES: number = 60;\n\n// @kern-source: rendering:75\nexport const SYN_KEYWORD: string = '#c084fc';\n\n// @kern-source: rendering:77\nexport const SYN_STRING: string = '#4ade80';\n\n// @kern-source: rendering:79\nexport const SYN_COMMENT: string = '#6b7280';\n\n// @kern-source: rendering:81\nexport const SYN_NUMBER: string = '#fb923c';\n\n// @kern-source: rendering:83\nexport const SYN_TYPE: string = '#38bdf8';\n\n// @kern-source: rendering:85\nexport const SYN_PUNCT: string = '#94a3b8';\n\n// @kern-source: rendering:87\nexport const SYN_FN: string = '#fbbf24';\n\n// @kern-source: rendering:89\nexport const KEYWORDS: Set<string> = new Set(['const', 'let', 'var', 'function', 'return', 'if', 'else', 'for', 'while', 'do', 'switch', 'case', 'break', 'continue', 'class', 'extends', 'implements', 'new', 'this', 'super', 'import', 'export', 'from', 'default', 'async', 'await', 'try', 'catch', 'finally', 'throw', 'typeof', 'instanceof', 'in', 'of', 'yield', 'void', 'delete', 'interface', 'type', 'enum', 'namespace', 'abstract', 'private', 'public', 'protected', 'static', 'readonly', 'fn', 'struct', 'impl', 'pub', 'mod', 'use', 'crate', 'self', 'mut', 'ref', 'match', 'loop', 'move', 'def', 'elif', 'pass', 'with', 'as', 'is', 'not', 'and', 'or', 'lambda', 'nonlocal', 'global', 'true', 'false', 'null', 'undefined', 'nil', 'None', 'True', 'False']);\n\n// @kern-source: rendering:91\nexport const TYPES: Set<string> = new Set(['string', 'number', 'boolean', 'object', 'any', 'void', 'never', 'unknown', 'bigint', 'symbol', 'String', 'Number', 'Boolean', 'Object', 'Array', 'Map', 'Set', 'Promise', 'Record', 'Partial', 'int', 'float', 'double', 'char', 'long', 'short', 'byte', 'i32', 'u32', 'i64', 'u64', 'f64', 'f32', 'usize', 'isize', 'bool', 'str', 'Vec', 'Option', 'Result', 'Box', 'Rc', 'Arc']);\n\n// @kern-source: rendering:99\nexport function tokenizeLine(line: string): SyntaxToken[] {\n const tokens: SyntaxToken[] = [];\n const pattern = /\\/\\/.*$|\\/\\*.*?\\*\\/|#.*$|\"\"\".*?\"\"\"|'''.*?'''|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|`(?:[^`\\\\]|\\\\.)*`|\\b\\d+(?:\\.\\d+)?\\b|[a-zA-Z_$]\\w*(?=\\s*\\()|[a-zA-Z_$]\\w*|[{}()\\[\\];:,.<>=!&|?+\\-*/%^~@]|\\s+/g;\n\n let match;\n let lastIndex = 0;\n while ((match = pattern.exec(line)) !== null) {\n if (match.index > lastIndex) {\n tokens.push({ text: line.slice(lastIndex, match.index) });\n }\n lastIndex = match.index + match[0].length;\n\n const text = match[0];\n\n if (text.startsWith('//') || text.startsWith('#') || text.startsWith('/*')) {\n tokens.push({ text, color: SYN_COMMENT });\n }\n else if (/^[\"'`]/.test(text) || text.startsWith('\"\"\"') || text.startsWith(\"'''\")) {\n tokens.push({ text, color: SYN_STRING });\n }\n else if (/^\\d/.test(text)) {\n tokens.push({ text, color: SYN_NUMBER });\n }\n else if (/^[a-zA-Z_$]\\w*$/.test(text) && line[match.index + text.length] === '(') {\n if (KEYWORDS.has(text)) {\n tokens.push({ text, color: SYN_KEYWORD });\n } else {\n tokens.push({ text, color: SYN_FN });\n }\n }\n else if (KEYWORDS.has(text)) {\n tokens.push({ text, color: SYN_KEYWORD });\n }\n else if (TYPES.has(text)) {\n tokens.push({ text, color: SYN_TYPE });\n }\n else if (/^[{}()\\[\\];:,.<>=!&|?+\\-*/%^~@]$/.test(text)) {\n tokens.push({ text, color: SYN_PUNCT });\n }\n else {\n tokens.push({ text });\n }\n }\n\n if (lastIndex < line.length) {\n tokens.push({ text: line.slice(lastIndex) });\n }\n\n return tokens;\n}\n","// @generated by kern v3.5.8 — DO NOT EDIT. Source: src/kern/signals/ansi-parse.kern\n\n// @kern-source: ansi-parse:3\nexport interface AnsiSegment {\n text: string;\n color?: string;\n bgColor?: string;\n bold?: boolean;\n dim?: boolean;\n italic?: boolean;\n}\n\n// @kern-source: ansi-parse:11\nexport const ANSI_COLORS: Record<number, string> = ({ 30: '#000000', 31: '#ef4444', 32: '#4ade80', 33: '#fbbf24', 34: '#60a5fa', 35: '#c084fc', 36: '#22d3ee', 37: '#e2e8f0', 90: '#6b7280', 91: '#f87171', 92: '#86efac', 93: '#fde047', 94: '#93c5fd', 95: '#d8b4fe', 96: '#67e8f9', 97: '#ffffff' });\n\n// @kern-source: ansi-parse:13\nexport const ANSI_BG_COLORS: Record<number, string> = ({ 40: '#000000', 41: '#991b1b', 42: '#166534', 43: '#854d0e', 44: '#1e3a5f', 45: '#581c87', 46: '#155e75', 47: '#374151', 100: '#4b5563', 101: '#b91c1c', 102: '#15803d', 103: '#a16207', 104: '#1d4ed8', 105: '#7e22ce', 106: '#0e7490', 107: '#9ca3af' });\n\n// @kern-source: ansi-parse:15\nexport function parseAnsiText(text: string): AnsiSegment[] {\n const segments: AnsiSegment[] = [];\n // Match ANSI escape sequences: ESC[ ... m\n const ansiRe = /\\x1b\\[([0-9;]*)m/g;\n\n let lastIndex = 0;\n let currentColor: string | undefined;\n let currentBg: string | undefined;\n let bold = false;\n let dim = false;\n let italic = false;\n\n let match: RegExpExecArray | null;\n while ((match = ansiRe.exec(text)) !== null) {\n // Push text before this escape sequence\n if (match.index > lastIndex) {\n const chunk = text.slice(lastIndex, match.index);\n if (chunk) {\n segments.push({ text: chunk, color: currentColor, bgColor: currentBg, bold: bold || undefined, dim: dim || undefined, italic: italic || undefined });\n }\n }\n lastIndex = match.index + match[0].length;\n\n // Parse the codes\n const codes = match[1].split(';').map(Number);\n for (let i = 0; i < codes.length; i++) {\n const code = codes[i];\n if (code === 0) { currentColor = undefined; currentBg = undefined; bold = false; dim = false; italic = false; }\n else if (code === 1) { bold = true; }\n else if (code === 2) { dim = true; }\n else if (code === 3) { italic = true; }\n else if (code === 22) { bold = false; dim = false; }\n else if (code === 23) { italic = false; }\n else if (code >= 30 && code <= 37) { currentColor = ANSI_COLORS[code]; }\n else if (code >= 90 && code <= 97) { currentColor = ANSI_COLORS[code]; }\n else if (code === 39) { currentColor = undefined; }\n else if (code >= 40 && code <= 47) { currentBg = ANSI_BG_COLORS[code]; }\n else if (code >= 100 && code <= 107) { currentBg = ANSI_BG_COLORS[code]; }\n else if (code === 49) { currentBg = undefined; }\n else if (code === 38 && codes[i + 1] === 5 && codes[i + 2] !== undefined) {\n // 256-color foreground: ESC[38;5;Nm\n const n = codes[i + 2];\n if (n < 16) {\n const basic: Record<number, string> = {\n 0: '#000000', 1: '#aa0000', 2: '#00aa00', 3: '#aa5500', 4: '#0000aa',\n 5: '#aa00aa', 6: '#00aaaa', 7: '#aaaaaa', 8: '#555555', 9: '#ff5555',\n 10: '#55ff55', 11: '#ffff55', 12: '#5555ff', 13: '#ff55ff', 14: '#55ffff', 15: '#ffffff',\n };\n currentColor = basic[n] ?? '#ffffff';\n } else if (n >= 232) {\n const gray = 8 + (n - 232) * 10;\n const h = Math.min(255, gray).toString(16).padStart(2, '0');\n currentColor = `#${h}${h}${h}`;\n } else {\n const idx = n - 16;\n const r = Math.floor(idx / 36);\n const g = Math.floor((idx % 36) / 6);\n const b = idx % 6;\n const toHex = (v: number) => (v === 0 ? 0 : 55 + v * 40).toString(16).padStart(2, '0');\n currentColor = `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }\n i += 2;\n }\n else if (code === 38 && codes[i + 1] === 2 && codes[i + 4] !== undefined) {\n // RGB foreground: ESC[38;2;R;G;Bm\n const r = (codes[i + 2] ?? 0).toString(16).padStart(2, '0');\n const g = (codes[i + 3] ?? 0).toString(16).padStart(2, '0');\n const b = (codes[i + 4] ?? 0).toString(16).padStart(2, '0');\n currentColor = `#${r}${g}${b}`;\n i += 4;\n }\n }\n }\n\n // Remaining text after last escape\n if (lastIndex < text.length) {\n const chunk = text.slice(lastIndex);\n if (chunk) {\n segments.push({ text: chunk, color: currentColor, bgColor: currentBg, bold: bold || undefined, dim: dim || undefined, italic: italic || undefined });\n }\n }\n\n // If no ANSI codes found, return the original text as a single segment\n if (segments.length === 0 && text) {\n segments.push({ text });\n }\n\n return segments;\n}\n\n// @kern-source: ansi-parse:106\nexport function hasAnsiCodes(text: string): boolean {\n return /\\x1b\\[/.test(text);\n}\n\n// @kern-source: ansi-parse:108\nexport function stripAnsi(text: string): string {\n return text.replace(/\\x1b\\[[0-9;]*m/g, '');\n}\n","// @generated by kern v3.4.9 — DO NOT EDIT. Source: src/kern/blocks/arena.kern\n\nimport React from 'react';\nimport { Box, Text } from 'ink';\n\n// ── Core ───────────────────────────────────────────────\nimport type { EngineProgress } from '../../handlers/types.js';\n\nimport { engineColor } from './rendering.js';\n\nimport { icons } from '../signals/icons.js';\n\n// @kern-source: arena:63\nexport function ForgeArena({ engines }: { engines:EngineProgress[] }) {\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n <Text>\n <Text color=\"#f97316\" bold>{'Forge'}</Text>\n <Text dimColor>{forgeSummary(engines)}</Text>\n </Text>\n {renderForgeRows(engines)}\n </Box>\n );\n}\n\n// @kern-source: arena:82\nexport function BrainstormStorm({ engines }: { engines:EngineProgress[] }) {\n const elapsed = engines[0]?.elapsed ?? 0;\n const frame = elapsed % STORM_BOLTS.length;\n const bolt = STORM_BOLTS[frame];\n const doneCount = engines.filter((e: EngineProgress) => e.done).length;\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n <Text color=\"#22d3ee\" dimColor>{bolt}</Text>\n <Text color=\"#64748b\">{STORM_CLOUDS[0]}</Text>\n <Text color=\"#64748b\">{STORM_CLOUDS[1]}</Text>\n <Text color=\"#22d3ee\" bold>{' \\u26a1 B R A I N S T O R M \\u26a1'}</Text>\n <Text color=\"#22d3ee\">{'\\u256d\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u256e'}</Text>\n {engines.map((e: EngineProgress, i: number) => {\n const spark = e.done ? '\\u2713' : (elapsed + i) % 3 === 0 ? '\\u26a1' : '\\u00b7';\n return (\n <Box key={e.id}>\n <Text color=\"#22d3ee\">{'\\u2502 '}</Text>\n <Text color={e.done ? 'green' : e.failed ? 'red' : (elapsed + i) % 3 === 0 ? '#22d3ee' : 'yellow'}>\n {spark}\n </Text>\n <Text>{' '}</Text>\n <Box width={12}>\n <Text bold color={engineColor(e.id)}>{e.id}</Text>\n </Box>\n <Text dimColor>{e.status}</Text>\n <Text color=\"#22d3ee\">{' \\u2502'}</Text>\n </Box>\n );\n })}\n <Text color=\"#22d3ee\">{'\\u2570\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u256f'}</Text>\n {doneCount > 0 && (\n <Text color=\"#22d3ee\" italic>{' '}{String(doneCount)}{' of '}{String(engines.length)}{' ideas sparked'}</Text>\n )}\n </Box>\n );\n}\n\n// @kern-source: arena:126\nexport function CampfireFire({ engines }: { engines:EngineProgress[] }) {\n const elapsed = engines[0]?.elapsed ?? 0;\n const frame = elapsed % FIRE_FRAMES.length;\n const flames = FIRE_FRAMES[frame];\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n {flames.map((line: string, i: number) => (\n <Text key={i} color={i < 3 ? '#f97316' : '#7c2d12'}>{line}</Text>\n ))}\n <Text color=\"#78350f\">{' \\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550'}</Text>\n <Text color=\"#f97316\" bold>{' \\u2500\\u2500 C A M P F I R E \\u2500\\u2500'}</Text>\n <Text>{' '}</Text>\n <Box>\n <Text>{' '}</Text>\n {engines.map((e: EngineProgress, i: number) => (\n <Box key={e.id}>\n <Text color={engineColor(e.id)} bold>{e.id}</Text>\n {i < engines.length - 1 && <Text dimColor>{' \\u00b7 '}</Text>}\n </Box>\n ))}\n </Box>\n <Box>\n <Text>{' '}</Text>\n {engines.map((e: EngineProgress, i: number) => {\n const bubble = e.done ? '\\u2713' : (elapsed + i) % 4 < 2 ? '\\u2620' : '\\u00b7';\n const padLen = Math.max(0, e.id.length - 1);\n const pad = ' '.repeat(Math.floor(padLen / 2));\n return (\n <Box key={e.id}>\n <Text color={e.done ? 'green' : '#f97316'}>{pad}{bubble}{pad}{' '}</Text>\n {i < engines.length - 1 && <Text>{' '}</Text>}\n </Box>\n );\n })}\n </Box>\n <Box>\n <Text>{' '}</Text>\n {engines.map((e: EngineProgress, i: number) => {\n const padLen = Math.max(0, e.id.length - String(e.elapsed).length - 1);\n const pad = ' '.repeat(Math.floor(padLen / 2));\n return (\n <Box key={e.id}>\n <Text dimColor>{pad}{String(e.elapsed)}{'s'}{pad}</Text>\n {i < engines.length - 1 && <Text>{' '}</Text>}\n </Box>\n );\n })}\n </Box>\n </Box>\n );\n}\n\n// @kern-source: arena:185\nexport function TribunalCourt({ engines }: { engines:EngineProgress[] }) {\n const elapsed = engines[0]?.elapsed ?? 0;\n const frame = elapsed % SCALES_FRAMES.length;\n const title = SCALES_FRAMES[frame];\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n <Text color=\"#c084fc\" bold>{title}</Text>\n <Text color=\"#c084fc\">{'\\u2551'}</Text>\n {engines.map((e: EngineProgress) => {\n const statusParts = e.status.split(' ');\n const round = statusParts[0] ?? '';\n const position = statusParts.slice(1).join(' ');\n const posColor = position.includes('pro') || position.includes('defender') ? '#22c55e'\n : position.includes('con') || position.includes('challenger') ? '#ef4444'\n : '#c084fc';\n return (\n <Box key={e.id}>\n <Text color=\"#c084fc\">{'\\u2551 '}</Text>\n <Text color={e.done ? 'green' : e.status === 'waiting' ? '#64748b' : 'yellow'}>\n {e.done ? '\\u2713' : e.status === 'waiting' ? '\\u25cb' : '\\u25cf'}\n </Text>\n <Text>{' '}</Text>\n <Box width={14}>\n <Text bold color={engineColor(e.id)}>{e.id}</Text>\n </Box>\n {e.status === 'waiting' ? (\n <Text dimColor>{'awaiting turn'}</Text>\n ) : e.done ? (\n <Text color=\"green\">{e.status}</Text>\n ) : (\n <Box>\n <Text dimColor>{round}{' '}</Text>\n <Text color={posColor} bold>{position}</Text>\n </Box>\n )}\n <Text color=\"#c084fc\">{' \\u2551'}</Text>\n </Box>\n );\n })}\n <Text color=\"#c084fc\">{'\\u2551'}</Text>\n <Text color=\"#c084fc\" bold>{title}</Text>\n </Box>\n );\n}\n\n// @kern-source: arena:14\nfunction forgeBar(pct: number, width: number): string {\n const filled = Math.round(pct * width);\n const half = (pct > 0 && filled < width) ? 1 : 0;\n const halfChar = half ? '▒' : '';\n return '█'.repeat(filled) + halfChar + '░'.repeat(Math.max(0, width - filled - half));\n}\n\n// @kern-source: arena:21\nfunction forgeSummary(engines: EngineProgress[]): string {\n const doneCount = engines.filter((e: EngineProgress) => e.done).length;\n const failedCount = engines.filter((e: EngineProgress) => e.failed).length;\n const failedSuffix = failedCount ? (' · ' + failedCount + ' failed') : '';\n return ' ' + doneCount + '/' + engines.length + ' done' + failedSuffix;\n}\n\n// @kern-source: arena:28\nfunction renderForgeRows(engines: EngineProgress[]): React.ReactNode {\n const maxElapsed = 120;\n const leader = engines.reduce((acc: { leaderId: string; bestPct: number }, e: EngineProgress) => {\n const status = String(e.status ?? '');\n const active = !e.done && !e.failed && !status.startsWith('queued') && !status.startsWith('preparing') && !status.startsWith('waiting');\n const pct = e.done ? 1 : active ? Math.min(e.elapsed / maxElapsed, 0.9) : 0;\n return (pct > acc.bestPct || e.done) ? { leaderId: e.id, bestPct: pct } : acc;\n }, { leaderId: '', bestPct: -1 });\n return engines.map((e: EngineProgress) => {\n const status = String(e.status ?? '');\n const isWaiting = status.startsWith('queued') || status.startsWith('preparing') || status.startsWith('waiting');\n const isActive = !e.done && !e.failed && !isWaiting;\n const pct = e.done ? 1 : e.failed ? 0 : isActive ? Math.min(e.elapsed / maxElapsed, 0.9) : 0;\n const bar = forgeBar(pct, 12);\n const isLead = e.id === leader.leaderId && !e.failed;\n const statusTxt = e.done ? (e.score ? `score ${e.score}` : 'done') : e.failed ? 'failed' : isWaiting ? status : `${status} ${Math.round(pct * 100)}%`;\n return (\n <Box key={e.id}>\n <Text color={e.done ? 'green' : e.failed ? 'red' : 'yellow'}>\n {e.done ? '\\u2713' : e.failed ? '\\u2717' : isWaiting ? '\\u25e6' : isLead ? '\\u25b8' : '\\u00b7'}\n </Text>\n <Text>{' '}</Text>\n <Box width={16}>\n {e.isAgent ? <Text color=\"#fbbf24\">{'\\u26a1 '}</Text> : null}\n <Text bold color={engineColor(e.id)}>{e.id}</Text>\n </Box>\n <Text color={e.done ? '#22c55e' : e.failed ? '#ef4444' : '#f97316'}>{bar}</Text>\n <Text>{' '}</Text>\n <Text dimColor>{statusTxt}</Text>\n </Box>\n );\n });\n}\n\n// @kern-source: arena:78\nexport const STORM_BOLTS: string[] = ['⚡ ⚡ ⚡', ' ⚡ ⚡ ', '⚡ ⚡ ⚡', ' ⚡ ⚡ '];\n\n// @kern-source: arena:80\nexport const STORM_CLOUDS: string[] = [' ╱╲╱╲╱╲╱╲╱╲╱╲', ' ╲╱╲╱╲╱╲╱╲╱╲╱╲'];\n\n// @kern-source: arena:124\nexport const FIRE_FRAMES: string[][] = [[' ( ) ( ) ', ' ( )( ) ', ' ) ( ) ( ', ' ╱░▒▓██▓▒░╲ '], [' ( )( )( ) ', ' ( )( ) ', ' ( )( )( ) ', ' ╱░▒▓██▓▒░╲ '], [' ( )( ) ', ' ( )( )( ', ' ( . )( ) ', ' ╱░▒▓██▓▒░╲ ']];\n\n// @kern-source: arena:183\nexport const SCALES_FRAMES: string[] = [' ⚖════ T R I B U N A L ════⚖', ' ⚖══✦═ T R I B U N A L ═✦══⚖', ' ⚖════ T R I B U N A L ════⚖'];\n","// @generated by kern v3.5.8 — DO NOT EDIT. Source: src/kern/blocks/plan-view.kern\n\nimport React from 'react';\nimport { Box, Text } from 'ink';\n\n// ── Core ───────────────────────────────────────────────\nimport { contentWidth, engineColor, RenderedSegments } from './rendering.js';\n\nimport { parseMarkdownBlocks } from './markdown.js';\n\n// @kern-source: plan-view:24\nconst PlanProposalView = React.memo(function PlanProposalView({ plan, markdown, costEstimate, committed, selectedIndex }: { plan:any; markdown?:string; costEstimate?:{ totalTokens: number; totalCostUsd: number; steps: { id: string; tokens: number; costUsd: number }[] } | null; committed?:boolean; selectedIndex?:number }) {\n const steps = plan.steps ?? [];\n const est = costEstimate;\n const totalTokens = est?.totalTokens ?? plan.totalEstimatedTokens ?? steps.reduce((sum: number, s: any) => sum + (s.estimatedTokens ?? 0), 0);\n const totalCost = est?.totalCostUsd ?? plan.totalEstimatedCostUsd ?? steps.reduce((sum: number, s: any) => sum + (s.estimatedCostUsd ?? 0), 0);\n const allEngines = [...new Set(steps.flatMap((s: any) => s.engines ?? (s.engine ? [s.engine] : [])))] as string[];\n const w = contentWidth(6);\n const thinBar = '\\u2500'.repeat(Math.min(w, 64));\n const planFilePath = plan.planFilePath || (plan as any).planFilePath;\n const stepCost = (s: any) => {\n const stepEst = est?.steps?.find((e: any) => e.id === s.id);\n return stepEst?.costUsd ?? s.estimatedCostUsd ?? 0;\n };\n const stepTokens = (s: any) => {\n const stepEst = est?.steps?.find((e: any) => e.id === s.id);\n return stepEst?.tokens ?? s.estimatedTokens ?? 0;\n };\n\n // Claude-Code-style markdown rendering for the plan body. The\n // structured step boxes below are kept as a fallback when no\n // markdown was provided — otherwise the markdown is the source\n // of truth and the user sees the same rich plan Cesar wrote to\n // ~/.agon/plans/cesar-*.md.\n if (markdown && markdown.trim()) {\n const wrapWidth = contentWidth(6);\n const segments = parseMarkdownBlocks(markdown);\n return (\n <Box flexDirection=\"column\" paddingLeft={2} marginY={1}>\n <Text bold color=\"white\">Plan</Text>\n <Text dimColor>{steps.length}{' steps · ~'}{totalTokens.toLocaleString()}{' tokens · $'}{totalCost.toFixed(2)}{' est'}</Text>\n {planFilePath && <Text dimColor>{'File: '}{planFilePath}</Text>}\n {allEngines.length > 0 && (\n <Box>\n <Text dimColor>{'Engines: '}</Text>\n {allEngines.map((id: string, i: number) => (\n <Box key={id}>\n <Text color={engineColor(id)}>{id}</Text>\n {i < allEngines.length - 1 && <Text dimColor>{', '}</Text>}\n </Box>\n ))}\n </Box>\n )}\n <Text dimColor>{thinBar}</Text>\n <RenderedSegments segments={segments} borderColor=\"\" wrapWidth={wrapWidth} />\n <Text dimColor>{thinBar}</Text>\n {committed ? (\n <Text dimColor>{'Plan moved to history.'}</Text>\n ) : (\n <Box flexDirection=\"column\">\n <Text color=\"#fbbf24\" bold>{'Awaiting approval'}</Text>\n <Text color={(selectedIndex ?? 0) === 0 ? '#4ade80' : '#6b7280'} bold={(selectedIndex ?? 0) === 0}>{(selectedIndex ?? 0) === 0 ? '❯ ' : ' '}{'1. Approve & run'}</Text>\n <Text color={(selectedIndex ?? 0) === 1 ? '#ef4444' : '#6b7280'} bold={(selectedIndex ?? 0) === 1}>{(selectedIndex ?? 0) === 1 ? '❯ ' : ' '}{'2. Reject'}</Text>\n <Text dimColor>{' ↑↓ move · Enter select · ✎ type to change · /approve · /cancel'}</Text>\n </Box>\n )}\n </Box>\n );\n }\n\n return (\n <Box flexDirection=\"column\" paddingLeft={2} marginY={1}>\n {/* ── Header ── */}\n <Text bold color=\"white\">Plan: {plan.intent}</Text>\n <Text dimColor>{steps.length}{' steps · ~'}{totalTokens.toLocaleString()}{' tokens · $'}{totalCost.toFixed(2)}{' est'}</Text>\n {planFilePath && <Text dimColor>{'File: '}{planFilePath}</Text>}\n {allEngines.length > 0 && (\n <Box>\n <Text dimColor>{'Engines: '}</Text>\n {allEngines.map((id: string, i: number) => (\n <Box key={id}>\n <Text color={engineColor(id)}>{id}</Text>\n {i < allEngines.length - 1 && <Text dimColor>{', '}</Text>}\n </Box>\n ))}\n </Box>\n )}\n <Text dimColor>{thinBar}</Text>\n\n {/* ── Steps ── */}\n {steps.map((s: any, i: number) => {\n const cfg = (STEP_TYPE_CONFIG as any)[s.type] ?? { icon: '?', color: '#888', label: s.type };\n const stepEngines: string[] = s.engines?.length ? s.engines : s.engine ? [s.engine] : [];\n const stateInfo = (STEP_STATE_ICONS as any)[s.state ?? 'pending'] ?? STEP_STATE_ICONS.pending;\n const hasDepends = s.dependsOn && s.dependsOn.length > 0;\n const hasFitness = s.fitnessCmd;\n const isParallel = s.parallel;\n const cost = stepCost(s);\n const tokens = stepTokens(s);\n\n return (\n <Box key={s.id} flexDirection=\"column\">\n {/* Step number + type icon + description */}\n <Box>\n <Text color={stateInfo.color}>{stateInfo.icon}{' '}</Text>\n <Text bold color=\"white\">{String(i + 1)}{'.'}</Text>\n <Text>{' '}</Text>\n <Text color={cfg.color} bold>{cfg.icon}{' '}</Text>\n <Text>{s.description}</Text>\n </Box>\n\n {/* Metadata line: type · engines · cost · flags */}\n <Box>\n <Text dimColor>{' '}</Text>\n <Text color={cfg.color}>{cfg.label}</Text>\n {stepEngines.length > 0 && (\n <Box>\n <Text dimColor>{' \\u2192 '}</Text>\n {stepEngines.map((eId: string, j: number) => (\n <Box key={eId}>\n <Text bold color={engineColor(eId)}>{eId}</Text>\n {j < stepEngines.length - 1 && <Text dimColor>{', '}</Text>}\n </Box>\n ))}\n </Box>\n )}\n {tokens > 0 && (\n <Text dimColor>{' \\u00b7 ~'}{tokens.toLocaleString()}{' t'}</Text>\n )}\n {cost > 0 && (\n <Text dimColor>{' \\u00b7 $'}{cost.toFixed(2)}</Text>\n )}\n {isParallel && <Text color=\"#34d399\">{' \\u00b7 parallel'}</Text>}\n </Box>\n\n {/* Fitness command if present */}\n {hasFitness && (\n <Box>\n <Text dimColor>{' test: '}</Text>\n <Text>{s.fitnessCmd}</Text>\n </Box>\n )}\n\n {/* Dependencies */}\n {hasDepends && (\n <Box>\n <Text dimColor>{' after: '}</Text>\n <Text dimColor>{s.dependsOn.join(', ')}</Text>\n </Box>\n )}\n\n {/* Tribunal mode */}\n {s.tribunalMode && (\n <Box>\n <Text dimColor>{' mode: '}</Text>\n <Text dimColor>{s.tribunalMode}</Text>\n </Box>\n )}\n\n {/* Rationale — why this engine/approach was chosen */}\n {s.rationale && (\n <Box>\n <Text dimColor>{' why: '}</Text>\n <Text dimColor>{s.rationale}</Text>\n </Box>\n )}\n\n {/* Verify command */}\n {s.verifyCmd && (\n <Box>\n <Text dimColor>{' verify: '}</Text>\n <Text>{s.verifyCmd}</Text>\n </Box>\n )}\n\n {/* Separator between steps */}\n {i < steps.length - 1 && (\n <Text dimColor>{' '}</Text>\n )}\n </Box>\n );\n })}\n\n <Text dimColor>{thinBar}</Text>\n {committed ? (\n <Text dimColor>{'Plan moved to history.'}</Text>\n ) : (\n <Box flexDirection=\"column\">\n <Text color=\"#fbbf24\" bold>{'Awaiting approval'}</Text>\n <Text color={(selectedIndex ?? 0) === 0 ? '#4ade80' : '#6b7280'} bold={(selectedIndex ?? 0) === 0}>{(selectedIndex ?? 0) === 0 ? '❯ ' : ' '}{'1. Approve & run'}</Text>\n <Text color={(selectedIndex ?? 0) === 1 ? '#ef4444' : '#6b7280'} bold={(selectedIndex ?? 0) === 1}>{(selectedIndex ?? 0) === 1 ? '❯ ' : ' '}{'2. Reject'}</Text>\n <Text dimColor>{' ↑↓ move · Enter select · ✎ type to change · /approve · /cancel'}</Text>\n </Box>\n )}\n </Box>\n );\n});\nexport { PlanProposalView };\n\n// @kern-source: plan-view:220\nexport function PlanExecutionView({ plan }: { plan:any }) {\n const steps: any[] = plan.steps ?? [];\n const doneSteps = steps.filter((s: any) => s.state === 'done');\n const failedSteps = steps.filter((s: any) => s.state === 'failed');\n const runningSteps = steps.filter((s: any) => s.state === 'running');\n const pct = steps.length > 0 ? Math.round((doneSteps.length / steps.length) * 100) : 0;\n const planColor = '#94a3b8';\n const barWidth = 20;\n const filled = Math.round((doneSteps.length / Math.max(steps.length, 1)) * barWidth);\n const progressBar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\n\n return (\n <Box flexDirection=\"column\" paddingLeft={2}>\n <Box>\n <Text color={planColor} bold>{'\\u25b8 Plan: '}</Text>\n <Text bold>{plan.intent}</Text>\n </Box>\n <Box>\n <Text color={planColor}>{progressBar}</Text>\n <Text dimColor>{' '}{String(pct)}{'% \\u00b7 '}{String(doneSteps.length)}{'/'}{String(steps.length)}{' steps'}</Text>\n {failedSteps.length > 0 && <Text color=\"red\">{' \\u00b7 '}{String(failedSteps.length)}{' failed'}</Text>}\n {plan.totalActualCostUsd > 0 && <Text dimColor>{' \\u00b7 $'}{plan.totalActualCostUsd.toFixed(4)}</Text>}\n </Box>\n <Text>{' '}</Text>\n {steps.map((s: any, i: number) => {\n const cfg = (STEP_TYPE_CONFIG as any)[s.type] ?? { icon: '?', color: '#888', label: s.type };\n const stateInfo = (STEP_STATE_ICONS as any)[s.state ?? 'pending'] ?? STEP_STATE_ICONS.pending;\n const result = s.result;\n const elapsed = result?.durationMs ? `${(result.durationMs / 1000).toFixed(1)}s` : '';\n const cost = result?.actualCostUsd ? `$${result.actualCostUsd.toFixed(4)}` : '';\n return (\n <Box key={s.id}>\n <Text color={stateInfo.color}>{stateInfo.icon}{' '}</Text>\n <Box width={3}>\n <Text bold color=\"white\">{String(i + 1)}{'.'}</Text>\n </Box>\n <Text color={cfg.color}>{cfg.icon}{' '}</Text>\n <Text color={s.state === 'done' ? '#64748b' : s.state === 'running' ? 'white' : undefined}>{s.description.slice(0, 50)}{s.description.length > 50 ? '\\u2026' : ''}</Text>\n {(elapsed || cost) && (\n <Text dimColor>{' ('}{elapsed}{elapsed && cost ? ', ' : ''}{cost}{')'}</Text>\n )}\n {result?.status === 'failure' && result?.error && (\n <Text color=\"red\">{' \\u2014 '}{result.error.slice(0, 40)}</Text>\n )}\n </Box>\n );\n })}\n {runningSteps.length > 0 && (\n <Box marginTop={1}>\n <Text color=\"#fbbf24\">{'\\u25cf Running: '}</Text>\n <Text>{runningSteps.map((s: any) => s.description).join(', ')}</Text>\n </Box>\n )}\n </Box>\n );\n}\n\n// @kern-source: plan-view:18\nexport const STEP_TYPE_CONFIG: Record<string, {icon:string,color:string,label:string}> = ({ self: { icon: '⚙', color: '#94a3b8', label: 'Cesar' }, forge: { icon: '⚔', color: '#cbd5e1', label: 'Forge' }, teamforge: { icon: '⚔⚔', color: '#cbd5e1', label: 'Team Forge' }, brainstorm: { icon: '⚡', color: '#94a3b8', label: 'Brainstorm' }, campfire: { icon: '─', color: '#94a3b8', label: 'Campfire' }, tribunal: { icon: '⚖', color: '#cbd5e1', label: 'Tribunal' }, delegate: { icon: '➤', color: '#94a3b8', label: 'Delegate' }, pipeline: { icon: '→', color: '#94a3b8', label: 'Pipeline' } }) as Record<string, { icon: string; color: string; label: string }>;\n\n// @kern-source: plan-view:20\nexport const STEP_STATE_ICONS: Record<string, {icon:string,color:string}> = ({ pending: { icon: '○', color: '#64748b' }, blocked: { icon: '□', color: '#475569' }, running: { icon: '●', color: '#fbbf24' }, done: { icon: '✓', color: '#22c55e' }, failed: { icon: '✗', color: '#ef4444' }, skipped: { icon: '─', color: '#64748b' }, cancelled: { icon: '─', color: '#64748b' } }) as Record<string, { icon: string; color: string }>;\n","// @generated by kern v3.5.7 — DO NOT EDIT. Source: src/kern/services/update-check.kern\n\nimport { execFile } from 'node:child_process';\n\nimport { readFile, writeFile, mkdir } from 'node:fs/promises';\n\nimport { existsSync } from 'node:fs';\n\nimport { homedir } from 'node:os';\n\nimport { join, dirname, sep } from 'node:path';\n\nimport { fileURLToPath } from 'node:url';\n\nimport { getAgonHome } from '@kernlang/agon-core';\n\n// @kern-source: update-check:18\nexport interface UpdateCheckResult {\n currentVersion: string;\n latestVersion: string;\n hasUpdate: boolean;\n releaseTag: string;\n error: string;\n}\n\n// @kern-source: update-check:25\nexport interface UpdateCheckOptions {\n packageName: string;\n registryTimeoutMs: number;\n}\n\n// @kern-source: update-check:29\nexport interface UpdateState {\n dismissedFor: string;\n lastChecked: number;\n}\n\n// @kern-source: update-check:42\nexport function isLinkedDevInstall(): boolean {\n try {\n let dir = dirname(fileURLToPath(import.meta.url));\n for (let i = 0; i < 12; i++) {\n if (dir.split(sep).includes('node_modules')) return false;\n if (existsSync(join(dir, '.git'))) return true;\n const parent = dirname(dir);\n if (parent === dir) break; // hit the filesystem root\n dir = parent;\n }\n } catch {\n // never block startup on a detection failure\n }\n return false;\n}\n\n// @kern-source: update-check:61\nexport function parseSemver(raw: string): number[]|null {\n if (typeof raw !== 'string') return null;\n const cleaned = raw.trim().replace(/^v/i, '');\n if (!cleaned) return null;\n const m = cleaned.match(/^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-([0-9A-Za-z.-]+))?(?:\\+[0-9A-Za-z.-]+)?$/);\n if (!m) return null;\n const major = parseInt(m[1], 10);\n const minor = m[2] != null ? parseInt(m[2], 10) : 0;\n const patch = m[3] != null ? parseInt(m[3], 10) : 0;\n const pre = m[4] || '';\n return [major, minor, patch, pre ? 1 : 0];\n}\n\n// @kern-source: update-check:77\nfunction extractPrerelease(raw: string): string {\n if (typeof raw !== 'string') return '';\n const body = raw.trim().replace(/^v/i, '').replace(/\\+.*$/, '');\n const dash = body.indexOf('-');\n return dash >= 0 ? body.slice(dash + 1) : '';\n}\n\n// @kern-source: update-check:89\nexport function comparePrerelease(a: string, b: string): number {\n const ax = a.split('.');\n const bx = b.split('.');\n const n = Math.max(ax.length, bx.length);\n for (let i = 0; i < n; i++) {\n const ai = ax[i];\n const bi = bx[i];\n if (ai === undefined) return -1;\n if (bi === undefined) return 1;\n const aNum = /^[0-9]+$/.test(ai);\n const bNum = /^[0-9]+$/.test(bi);\n if (aNum && bNum) {\n const d = parseInt(ai, 10) - parseInt(bi, 10);\n if (d !== 0) return d < 0 ? -1 : 1;\n } else if (aNum !== bNum) {\n return aNum ? -1 : 1;\n } else if (ai !== bi) {\n return ai < bi ? -1 : 1;\n }\n }\n return 0;\n}\n\n// @kern-source: update-check:118\nexport function semverGte(a: string, b: string): boolean {\n const pa = parseSemver(a);\n const pb = parseSemver(b);\n if (!pa || !pb) return false;\n for (let i = 0; i < 3; i++) {\n if (pa[i] !== pb[i]) return pa[i] > pb[i];\n }\n // major.minor.patch equal — the prerelease segment decides.\n const preA = extractPrerelease(a);\n const preB = extractPrerelease(b);\n if (!preA && !preB) return true; // both stable, equal\n if (!preA) return true; // a stable > b prerelease\n if (!preB) return false; // a prerelease < b stable\n return comparePrerelease(preA, preB) >= 0;\n}\n\n// @kern-source: update-check:138\nasync function runNpmViewVersion(packageName: string, timeoutMs: number): Promise<string> {\n return await new Promise<string>((resolve) => {\n let settled = false;\n const finish = (val: string) => { if (!settled) { settled = true; resolve(val); } };\n let child: any;\n try {\n child = execFile('npm', ['view', packageName, 'version'], { timeout: timeoutMs }, (err: any, stdout: any) => {\n if (err) return finish('');\n finish(typeof stdout === 'string' ? stdout.trim() : '');\n });\n } catch {\n return finish('');\n }\n child.on('error', () => finish(''));\n });\n}\n\n// @kern-source: update-check:160\nexport async function checkForUpdate(currentVersion: string, opts: UpdateCheckOptions|undefined): Promise<UpdateCheckResult> {\n const packageName = (opts && opts.packageName) || '@kernlang/agon';\n const timeoutMs = (opts && typeof opts.registryTimeoutMs === 'number') ? opts.registryTimeoutMs : 5000;\n const result: UpdateCheckResult = {\n currentVersion,\n latestVersion: currentVersion,\n hasUpdate: false,\n releaseTag: 'latest',\n error: '',\n };\n let raw: string;\n try {\n raw = await runNpmViewVersion(packageName, timeoutMs);\n } catch (err) {\n const e = err as any;\n result.error = e && e.message ? e.message : String(e);\n return result;\n }\n if (!raw) {\n result.error = 'registry-unreachable';\n return result;\n }\n const normalized = raw.replace(/^v/i, '');\n if (!parseSemver(normalized)) {\n result.error = 'malformed-registry-version';\n result.latestVersion = raw;\n return result;\n }\n result.latestVersion = normalized;\n result.hasUpdate = semverGte(normalized, currentVersion) && normalized !== currentVersion;\n return result;\n}\n\n// @kern-source: update-check:203\nfunction updateStatePath(): Promise<string> {\n const home = getAgonHome ? getAgonHome() : join(homedir(), '.agon');\n return Promise.resolve(join(home, 'update-state.json'));\n}\n\n// @kern-source: update-check:209\nexport async function loadDismissedVersion(): Promise<string> {\n try {\n const p = await updateStatePath();\n const raw = await readFile(p, 'utf-8');\n const data = JSON.parse(raw);\n return typeof data === 'object' && data && typeof data.dismissedFor === 'string' ? data.dismissedFor : '';\n } catch {\n return '';\n }\n}\n\n// @kern-source: update-check:221\nexport async function saveDismissedVersion(version: string): Promise<void> {\n try {\n const home = getAgonHome ? getAgonHome() : join(homedir(), '.agon');\n await mkdir(home, { recursive: true });\n const p = join(home, 'update-state.json');\n const payload = JSON.stringify({ dismissedFor: version, lastChecked: Date.now() });\n await writeFile(p, payload, 'utf-8');\n } catch {\n // best-effort: never throw out of dismissal persistence\n }\n}\n"],"mappings":"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","names":["React","Box","Text","bold","contentWidth","bold","dim","tokens","Box","Text","jsx","jsxs","Box","Text","React","Box","Text","jsx","jsxs","React","PlanProposalView","Box","Text","jsxs","Box","jsx","Text","Fragment","jsx","jsxs","Box","Text","React","EngineBlock","React","ConversationalResponse","jsxs","Box","Text","jsx","React","CesarRecapBlock","jsxs","Box","jsx","Text","jsxs","Box","jsx","Text","Fragment","React","OutputBlockView","React","ToolCallGroup","jsxs","Box","Text","jsx","React","DebateGroup","jsxs","Box","Text","jsx","React","BidGroup","jsxs","Box","jsx","Text","existsSync","join","dirname","fileURLToPath","dirname","fileURLToPath","existsSync","join"]}