@tracecode/harness 0.5.1 → 0.6.0
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.
- package/CHANGELOG.md +23 -0
- package/README.md +29 -3
- package/dist/browser.cjs +974 -19
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.cts +3 -2
- package/dist/browser.d.ts +3 -2
- package/dist/browser.js +974 -19
- package/dist/browser.js.map +1 -1
- package/dist/cli.cjs +24 -0
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +24 -0
- package/dist/cli.js.map +1 -1
- package/dist/core.cjs +611 -4
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +20 -6
- package/dist/core.d.ts +20 -6
- package/dist/core.js +605 -4
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +1004 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +998 -19
- package/dist/index.js.map +1 -1
- package/dist/internal/browser.cjs +211 -0
- package/dist/internal/browser.cjs.map +1 -1
- package/dist/internal/browser.d.cts +62 -6
- package/dist/internal/browser.d.ts +62 -6
- package/dist/internal/browser.js +210 -0
- package/dist/internal/browser.js.map +1 -1
- package/dist/javascript.d.cts +2 -2
- package/dist/javascript.d.ts +2 -2
- package/dist/{runtime-types-DtaaAhHL.d.ts → runtime-types-89nchXlY.d.cts} +8 -4
- package/dist/{runtime-types--lBQ6rYu.d.cts → runtime-types-CCQ-ZLc9.d.ts} +8 -4
- package/dist/{types-DwIYM3Ku.d.cts → types-zyvpJKCi.d.cts} +1 -0
- package/dist/{types-DwIYM3Ku.d.ts → types-zyvpJKCi.d.ts} +1 -0
- package/package.json +11 -5
- package/workers/java/.build/classes/harness/browser/JavaRewriteLibrary.class +0 -0
- package/workers/java/java-worker.js +712 -0
- package/workers/java/src/harness/browser/JavaRewriteLibrary.java +54 -0
- package/workers/javascript/javascript-worker.js +343 -63
- package/workers/python/generated-python-harness-snippets.js +3 -3
- package/workers/python/pyodide-worker.js +419 -68
- package/workers/python/runtime-core.js +52 -3
- package/workers/vendor/java-browser-spike-helper.jar +0 -0
- package/workers/vendor/java-practice-rewriter.jar +0 -0
- package/workers/vendor/java-rewrite-bridge.jar +0 -0
- package/workers/vendor/javaparser-core-3.25.10.jar +0 -0
- package/workers/vendor/jdk.compiler-17.jar +0 -0
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../packages/harness-core/src/trace-contract.ts","../packages/harness-core/src/trace-adapters/shared.ts","../packages/harness-core/src/trace-adapters/python.ts","../packages/harness-core/src/trace-adapters/javascript.ts"],"sourcesContent":["import type { Language } from './runtime-types';\nimport type {\n CallStackFrame,\n ExecutionResult,\n RawTraceStep,\n RuntimeTraceAccessEvent,\n RuntimeTraceAccessKind,\n RuntimeObjectKind,\n RuntimeVisualizationPayload,\n} from './types';\n\n/**\n * Runtime trace contract schema version.\n *\n * Bump this when payload shape/normalization semantics change in a way that\n * should invalidate golden fixtures.\n */\nexport const RUNTIME_TRACE_CONTRACT_SCHEMA_VERSION = '2026-03-13';\n\nexport type RuntimeTraceContractEvent =\n | 'line'\n | 'call'\n | 'return'\n | 'exception'\n | 'timeout'\n | 'stdout';\n\nexport interface RuntimeTraceContractHashMapEntry {\n key: unknown;\n value: unknown;\n highlight?: boolean;\n}\n\nexport interface RuntimeTraceContractHashMap {\n name: string;\n kind: 'hashmap' | 'object' | 'map' | 'set';\n entries: RuntimeTraceContractHashMapEntry[];\n highlightedKey?: unknown;\n deletedKey?: unknown;\n objectClassName?: string;\n objectId?: string;\n}\n\nexport interface RuntimeTraceContractVisualization {\n hashMaps?: RuntimeTraceContractHashMap[];\n objectKinds?: Partial<Record<string, RuntimeObjectKind>>;\n}\n\nexport interface RuntimeTraceContractCallStackFrame {\n function: string;\n line: number;\n args: Record<string, unknown>;\n}\n\nexport interface RuntimeTraceContractStep {\n event: RuntimeTraceContractEvent;\n line: number;\n function: string;\n variables: Record<string, unknown>;\n variableSources?: Record<string, 'user' | 'user-input' | 'harness-prelude'>;\n callStack?: RuntimeTraceContractCallStackFrame[];\n accesses?: RuntimeTraceAccessEvent[];\n returnValue?: unknown;\n stdoutLineCount?: number;\n visualization?: RuntimeTraceContractVisualization;\n}\n\nexport interface RuntimeTraceContractResult {\n schemaVersion: typeof RUNTIME_TRACE_CONTRACT_SCHEMA_VERSION;\n language: Language;\n success: boolean;\n output?: unknown;\n error?: string;\n errorLine?: number;\n consoleOutput: string[];\n trace: RuntimeTraceContractStep[];\n traceLimitExceeded?: boolean;\n timeoutReason?: string;\n lineEventCount: number;\n traceStepCount: number;\n}\n\nconst TRACE_EVENTS: ReadonlySet<string> = new Set([\n 'line',\n 'call',\n 'return',\n 'exception',\n 'timeout',\n 'stdout',\n]);\n\nconst TRACE_ACCESS_KINDS: ReadonlySet<RuntimeTraceAccessKind> = new Set([\n 'indexed-read',\n 'indexed-write',\n 'cell-read',\n 'cell-write',\n 'mutating-call',\n]);\n\nfunction normalizeLineNumber(value: unknown, fallback = 1): number {\n if (typeof value !== 'number' || !Number.isFinite(value)) return fallback;\n const normalized = Math.floor(value);\n return normalized > 0 ? normalized : fallback;\n}\n\nfunction normalizeOutputLineCount(value: unknown): number | undefined {\n if (typeof value !== 'number' || !Number.isFinite(value)) return undefined;\n const normalized = Math.floor(value);\n return normalized >= 0 ? normalized : undefined;\n}\n\nfunction normalizeEvent(value: unknown): RuntimeTraceContractEvent {\n if (typeof value === 'string' && TRACE_EVENTS.has(value)) {\n return value as RuntimeTraceContractEvent;\n }\n return 'line';\n}\n\nfunction normalizeAccessKind(value: unknown): RuntimeTraceAccessKind | null {\n if (typeof value === 'string' && TRACE_ACCESS_KINDS.has(value as RuntimeTraceAccessKind)) {\n return value as RuntimeTraceAccessKind;\n }\n return null;\n}\n\nfunction normalizeFunctionName(value: unknown): string {\n if (typeof value === 'string' && value.length > 0) return value;\n return '<module>';\n}\n\nfunction normalizeKind(value: unknown): 'hashmap' | 'object' | 'map' | 'set' {\n if (value === 'map' || value === 'set' || value === 'hashmap' || value === 'object') {\n return value;\n }\n return 'hashmap';\n}\n\nfunction normalizeObjectKind(value: unknown): RuntimeObjectKind | null {\n if (\n value === 'hashmap' ||\n value === 'object' ||\n value === 'map' ||\n value === 'set' ||\n value === 'tree' ||\n value === 'linked-list' ||\n value === 'graph-adjacency'\n ) {\n return value;\n }\n return null;\n}\n\nfunction normalizeScalar(value: unknown): unknown {\n if (value === null || value === undefined) return value;\n if (typeof value === 'string' || typeof value === 'boolean') return value;\n if (typeof value === 'number') return Number.isFinite(value) ? value : String(value);\n if (typeof value === 'bigint') {\n const asNumber = Number(value);\n return Number.isSafeInteger(asNumber) ? asNumber : String(value);\n }\n if (typeof value === 'function') return '<function>';\n return null;\n}\n\nfunction normalizeUnknown(value: unknown, depth = 0, seen = new WeakSet<object>()): unknown {\n if (depth > 48) return '<max depth>';\n\n const scalar = normalizeScalar(value);\n if (scalar !== null || value === null || value === undefined) {\n return scalar;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => {\n if (item === undefined) return null;\n return normalizeUnknown(item, depth + 1, seen);\n });\n }\n\n if (typeof value === 'object' && value) {\n if (seen.has(value)) return '<cycle>';\n seen.add(value);\n\n const normalized: Record<string, unknown> = {};\n for (const key of Object.keys(value as Record<string, unknown>).sort()) {\n const child = (value as Record<string, unknown>)[key];\n if (child === undefined) continue;\n normalized[key] = normalizeUnknown(child, depth + 1, seen);\n }\n\n seen.delete(value);\n return normalized;\n }\n\n return String(value);\n}\n\nfunction normalizeAccesses(\n accesses: RuntimeTraceAccessEvent[] | undefined\n): RuntimeTraceAccessEvent[] | undefined {\n if (!Array.isArray(accesses) || accesses.length === 0) {\n return undefined;\n }\n\n const normalized = accesses\n .map((access) => {\n const variable =\n typeof access?.variable === 'string' && access.variable.length > 0 ? access.variable : '';\n const kind = normalizeAccessKind(access?.kind);\n if (!variable || !kind) {\n return null;\n }\n\n const indices = Array.isArray(access?.indices)\n ? access.indices\n .map((index) =>\n typeof index === 'number' && Number.isFinite(index) ? Math.floor(index) : null\n )\n .filter((index): index is number => index !== null)\n : undefined;\n const pathDepth =\n access?.pathDepth === 1 || access?.pathDepth === 2 ? access.pathDepth : undefined;\n const method =\n typeof access?.method === 'string' && access.method.length > 0 ? access.method : undefined;\n\n const payload: RuntimeTraceAccessEvent = {\n variable,\n kind,\n };\n\n if (indices && indices.length > 0) {\n payload.indices = indices;\n }\n if (pathDepth !== undefined) {\n payload.pathDepth = pathDepth;\n }\n if (method) {\n payload.method = method;\n }\n\n return payload;\n })\n .filter((access): access is RuntimeTraceAccessEvent => access !== null);\n\n return normalized.length > 0 ? normalized : undefined;\n}\n\nfunction normalizeRecord(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return {};\n return normalizeUnknown(value) as Record<string, unknown>;\n}\n\nfunction normalizeVariableSources(\n value: unknown\n): Record<string, 'user' | 'user-input' | 'harness-prelude'> | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined;\n const entries = Object.entries(value as Record<string, unknown>)\n .filter(([name, source]) =>\n typeof name === 'string' &&\n name.length > 0 &&\n (source === 'user' || source === 'user-input' || source === 'harness-prelude')\n )\n .sort((a, b) => a[0].localeCompare(b[0])) as Array<\n [string, 'user' | 'user-input' | 'harness-prelude']\n >;\n if (entries.length === 0) return undefined;\n return Object.fromEntries(entries);\n}\n\nfunction normalizeCallStackFrame(frame: CallStackFrame): RuntimeTraceContractCallStackFrame {\n return {\n function: normalizeFunctionName(frame?.function),\n line: normalizeLineNumber(frame?.line, 1),\n args: normalizeRecord(frame?.args),\n };\n}\n\nfunction normalizeVisualizationPayload(\n payload: RuntimeVisualizationPayload | undefined\n): RuntimeTraceContractVisualization | undefined {\n const hashMaps = Array.isArray(payload?.hashMaps)\n ? payload.hashMaps\n .map((entry) => ({\n name: typeof entry?.name === 'string' ? entry.name : '',\n kind: normalizeKind(entry?.kind),\n entries: Array.isArray(entry?.entries)\n ? entry.entries.map((item) => ({\n key: normalizeUnknown(item?.key),\n value: normalizeUnknown(item?.value),\n ...(item?.highlight ? { highlight: true } : {}),\n }))\n : [],\n ...(entry?.highlightedKey !== undefined\n ? { highlightedKey: normalizeUnknown(entry.highlightedKey) }\n : {}),\n ...(entry?.deletedKey !== undefined\n ? { deletedKey: normalizeUnknown(entry.deletedKey) }\n : {}),\n ...(typeof entry?.objectClassName === 'string' && entry.objectClassName.length > 0\n ? { objectClassName: entry.objectClassName }\n : {}),\n ...(typeof entry?.objectId === 'string' && entry.objectId.length > 0\n ? { objectId: entry.objectId }\n : {}),\n }))\n .sort((a, b) => `${a.name}:${a.kind}`.localeCompare(`${b.name}:${b.kind}`))\n : [];\n\n const objectKinds =\n payload?.objectKinds && typeof payload.objectKinds === 'object'\n ? Object.fromEntries(\n Object.entries(payload.objectKinds)\n .filter(([name]) => typeof name === 'string' && name.length > 0)\n .map(([name, kind]) => [name, normalizeObjectKind(kind)])\n .filter((entry): entry is [string, RuntimeObjectKind] => entry[1] !== null)\n .sort((a, b) => a[0].localeCompare(b[0]))\n )\n : undefined;\n\n if (hashMaps.length === 0 && (!objectKinds || Object.keys(objectKinds).length === 0)) {\n return undefined;\n }\n\n return {\n ...(hashMaps.length > 0 ? { hashMaps } : {}),\n ...(objectKinds && Object.keys(objectKinds).length > 0 ? { objectKinds } : {}),\n };\n}\n\nfunction normalizeTraceStep(step: RawTraceStep): RuntimeTraceContractStep {\n const normalizedStdoutCount = normalizeOutputLineCount(step?.stdoutLineCount);\n const normalizedVisualization = normalizeVisualizationPayload(step?.visualization);\n const normalizedAccesses = normalizeAccesses(step?.accesses);\n const normalizedVariableSources = normalizeVariableSources(step?.variableSources);\n\n return {\n event: normalizeEvent(step?.event),\n line: normalizeLineNumber(step?.line, 1),\n function: normalizeFunctionName(step?.function),\n variables: normalizeRecord(step?.variables),\n ...(normalizedVariableSources ? { variableSources: normalizedVariableSources } : {}),\n ...(Array.isArray(step?.callStack) && step.callStack.length > 0\n ? { callStack: step.callStack.map(normalizeCallStackFrame) }\n : {}),\n ...(normalizedAccesses ? { accesses: normalizedAccesses } : {}),\n ...(step?.returnValue !== undefined ? { returnValue: normalizeUnknown(step.returnValue) } : {}),\n ...(normalizedStdoutCount !== undefined ? { stdoutLineCount: normalizedStdoutCount } : {}),\n ...(normalizedVisualization ? { visualization: normalizedVisualization } : {}),\n };\n}\n\nexport function normalizeRuntimeTraceContract(\n language: Language,\n result: ExecutionResult\n): RuntimeTraceContractResult {\n const normalizedTrace = Array.isArray(result.trace) ? result.trace.map(normalizeTraceStep) : [];\n const lineEventCount =\n typeof result.lineEventCount === 'number' && Number.isFinite(result.lineEventCount)\n ? Math.floor(result.lineEventCount)\n : normalizedTrace.filter((step) => step.event === 'line').length;\n\n const normalizedConsole = Array.isArray(result.consoleOutput)\n ? result.consoleOutput.map((line) => String(line))\n : [];\n\n return {\n schemaVersion: RUNTIME_TRACE_CONTRACT_SCHEMA_VERSION,\n language,\n success: Boolean(result.success),\n ...(Object.prototype.hasOwnProperty.call(result, 'output')\n ? { output: normalizeUnknown(result.output) }\n : {}),\n ...(typeof result.error === 'string' && result.error.length > 0\n ? { error: result.error }\n : {}),\n ...(typeof result.errorLine === 'number' && Number.isFinite(result.errorLine)\n ? { errorLine: Math.floor(result.errorLine) }\n : {}),\n consoleOutput: normalizedConsole,\n trace: normalizedTrace,\n ...(result.traceLimitExceeded !== undefined\n ? { traceLimitExceeded: Boolean(result.traceLimitExceeded) }\n : {}),\n ...(typeof result.timeoutReason === 'string' && result.timeoutReason.length > 0\n ? { timeoutReason: result.timeoutReason }\n : {}),\n lineEventCount: Math.max(0, lineEventCount),\n traceStepCount: normalizedTrace.length,\n };\n}\n\nexport function stableStringifyRuntimeTraceContract(value: unknown): string {\n return JSON.stringify(normalizeUnknown(value), null, 2);\n}\n","import type { Language } from '../runtime-types';\nimport {\n normalizeRuntimeTraceContract,\n type RuntimeTraceContractCallStackFrame,\n type RuntimeTraceContractStep,\n} from '../trace-contract';\nimport type {\n CallStackFrame,\n ExecutionResult,\n RawTraceStep,\n RuntimeVisualizationPayload,\n} from '../types';\n\nfunction denormalizeCallStackFrame(frame: RuntimeTraceContractCallStackFrame): CallStackFrame {\n return {\n function: frame.function,\n line: frame.line,\n args: frame.args,\n };\n}\n\nfunction denormalizeTraceStep(step: RuntimeTraceContractStep): RawTraceStep {\n return {\n line: step.line,\n event: step.event,\n variables: step.variables,\n function: step.function,\n ...(step.callStack ? { callStack: step.callStack.map(denormalizeCallStackFrame) } : {}),\n ...(step.accesses ? { accesses: step.accesses } : {}),\n ...(step.returnValue !== undefined ? { returnValue: step.returnValue } : {}),\n ...(step.stdoutLineCount !== undefined ? { stdoutLineCount: step.stdoutLineCount } : {}),\n ...(step.visualization ? { visualization: step.visualization as RuntimeVisualizationPayload } : {}),\n };\n}\n\nexport function adaptTraceExecutionResult(\n language: Language,\n result: ExecutionResult\n): ExecutionResult {\n const normalized = normalizeRuntimeTraceContract(language, result);\n const adaptedTrace: RawTraceStep[] = normalized.trace.map(denormalizeTraceStep);\n\n return {\n success: normalized.success,\n ...(Object.prototype.hasOwnProperty.call(normalized, 'output') ? { output: normalized.output } : {}),\n ...(normalized.error ? { error: normalized.error } : {}),\n ...(normalized.errorLine !== undefined ? { errorLine: normalized.errorLine } : {}),\n trace: adaptedTrace,\n executionTimeMs:\n typeof result.executionTimeMs === 'number' && Number.isFinite(result.executionTimeMs)\n ? result.executionTimeMs\n : 0,\n consoleOutput: normalized.consoleOutput,\n ...(normalized.traceLimitExceeded !== undefined ? { traceLimitExceeded: normalized.traceLimitExceeded } : {}),\n ...(normalized.timeoutReason\n ? { timeoutReason: normalized.timeoutReason as ExecutionResult['timeoutReason'] }\n : {}),\n lineEventCount: normalized.lineEventCount,\n traceStepCount: adaptedTrace.length,\n };\n}\n","import type { ExecutionResult } from '../types';\nimport { adaptTraceExecutionResult } from './shared';\n\nexport function adaptPythonTraceExecutionResult(result: ExecutionResult): ExecutionResult {\n return adaptTraceExecutionResult('python', result);\n}\n","import type { Language } from '../runtime-types';\nimport type { ExecutionResult } from '../types';\nimport { adaptTraceExecutionResult } from './shared';\n\nexport function adaptJavaScriptTraceExecutionResult(\n language: Extract<Language, 'javascript' | 'typescript'>,\n result: ExecutionResult\n): ExecutionResult {\n return adaptTraceExecutionResult(language, result);\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../packages/harness-core/src/trace-contract.ts","../packages/harness-core/src/trace-adapters/shared.ts","../packages/harness-core/src/trace-adapters/python.ts","../packages/harness-core/src/trace-adapters/javascript.ts","../packages/harness-core/src/trace-adapters/java.ts"],"sourcesContent":["import type { Language } from './runtime-types';\nimport type {\n CallStackFrame,\n ExecutionResult,\n RawTraceStep,\n RuntimeTraceAccessEvent,\n RuntimeTraceAccessKind,\n RuntimeObjectKind,\n RuntimeVisualizationPayload,\n} from './types';\n\n/**\n * Runtime trace contract schema version.\n *\n * Bump this when payload shape/normalization semantics change in a way that\n * should invalidate golden fixtures.\n */\nexport const RUNTIME_TRACE_CONTRACT_SCHEMA_VERSION = '2026-04-21';\n\nexport type RuntimeTraceContractEvent =\n | 'line'\n | 'call'\n | 'return'\n | 'exception'\n | 'timeout'\n | 'stdout';\n\nexport interface RuntimeTraceContractHashMapEntry {\n key: unknown;\n value: unknown;\n highlight?: boolean;\n}\n\nexport interface RuntimeTraceContractHashMap {\n name: string;\n kind: 'hashmap' | 'object' | 'map' | 'set';\n entries: RuntimeTraceContractHashMapEntry[];\n highlightedKey?: unknown;\n deletedKey?: unknown;\n objectClassName?: string;\n objectId?: string;\n}\n\nexport interface RuntimeTraceContractVisualization {\n hashMaps?: RuntimeTraceContractHashMap[];\n objectKinds?: Partial<Record<string, RuntimeObjectKind>>;\n}\n\nexport interface RuntimeTraceContractCallStackFrame {\n function: string;\n line: number;\n args: Record<string, unknown>;\n}\n\nexport interface RuntimeTraceContractStep {\n event: RuntimeTraceContractEvent;\n line: number;\n function: string;\n variables: Record<string, unknown>;\n variableSources?: Record<string, 'user' | 'user-input' | 'harness-prelude'>;\n callStack?: RuntimeTraceContractCallStackFrame[];\n accesses?: RuntimeTraceAccessEvent[];\n returnValue?: unknown;\n stdoutLineCount?: number;\n visualization?: RuntimeTraceContractVisualization;\n}\n\nexport interface RuntimeTraceContractResult {\n schemaVersion: typeof RUNTIME_TRACE_CONTRACT_SCHEMA_VERSION;\n language: Language;\n success: boolean;\n output?: unknown;\n error?: string;\n errorLine?: number;\n consoleOutput: string[];\n trace: RuntimeTraceContractStep[];\n traceLimitExceeded?: boolean;\n timeoutReason?: string;\n lineEventCount: number;\n traceStepCount: number;\n}\n\nconst TRACE_EVENTS: ReadonlySet<string> = new Set([\n 'line',\n 'call',\n 'return',\n 'exception',\n 'timeout',\n 'stdout',\n]);\n\nconst TRACE_ACCESS_KINDS: ReadonlySet<RuntimeTraceAccessKind> = new Set([\n 'indexed-read',\n 'indexed-write',\n 'cell-read',\n 'cell-write',\n 'mutating-call',\n]);\n\nfunction normalizeLineNumber(value: unknown, fallback = 1): number {\n if (typeof value !== 'number' || !Number.isFinite(value)) return fallback;\n const normalized = Math.floor(value);\n return normalized > 0 ? normalized : fallback;\n}\n\nfunction normalizeOutputLineCount(value: unknown): number | undefined {\n if (typeof value !== 'number' || !Number.isFinite(value)) return undefined;\n const normalized = Math.floor(value);\n return normalized >= 0 ? normalized : undefined;\n}\n\nfunction normalizeEvent(value: unknown): RuntimeTraceContractEvent {\n if (typeof value === 'string' && TRACE_EVENTS.has(value)) {\n return value as RuntimeTraceContractEvent;\n }\n return 'line';\n}\n\nfunction normalizeAccessKind(value: unknown): RuntimeTraceAccessKind | null {\n if (typeof value === 'string' && TRACE_ACCESS_KINDS.has(value as RuntimeTraceAccessKind)) {\n return value as RuntimeTraceAccessKind;\n }\n return null;\n}\n\nfunction normalizeFunctionName(value: unknown): string {\n if (typeof value === 'string' && value.length > 0) return value;\n return '<module>';\n}\n\nfunction normalizeKind(value: unknown): 'hashmap' | 'object' | 'map' | 'set' {\n if (value === 'map' || value === 'set' || value === 'hashmap' || value === 'object') {\n return value;\n }\n return 'hashmap';\n}\n\nfunction normalizeObjectKind(value: unknown): RuntimeObjectKind | null {\n if (\n value === 'hashmap' ||\n value === 'object' ||\n value === 'map' ||\n value === 'set' ||\n value === 'tree' ||\n value === 'linked-list' ||\n value === 'graph-adjacency'\n ) {\n return value;\n }\n return null;\n}\n\nfunction normalizeScalar(value: unknown): unknown {\n if (value === null || value === undefined) return value;\n if (typeof value === 'string' || typeof value === 'boolean') return value;\n if (typeof value === 'number') return Number.isFinite(value) ? value : String(value);\n if (typeof value === 'bigint') {\n const asNumber = Number(value);\n return Number.isSafeInteger(asNumber) ? asNumber : String(value);\n }\n if (typeof value === 'function') return '<function>';\n return null;\n}\n\nfunction normalizeUnknown(value: unknown, depth = 0, seen = new WeakSet<object>()): unknown {\n if (depth > 48) return '<max depth>';\n\n const scalar = normalizeScalar(value);\n if (scalar !== null || value === null || value === undefined) {\n return scalar;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => {\n if (item === undefined) return null;\n return normalizeUnknown(item, depth + 1, seen);\n });\n }\n\n if (typeof value === 'object' && value) {\n if (seen.has(value)) return '<cycle>';\n seen.add(value);\n\n const normalized: Record<string, unknown> = {};\n for (const key of Object.keys(value as Record<string, unknown>).sort()) {\n const child = (value as Record<string, unknown>)[key];\n if (child === undefined) continue;\n normalized[key] = normalizeUnknown(child, depth + 1, seen);\n }\n\n seen.delete(value);\n return normalized;\n }\n\n return String(value);\n}\n\nfunction normalizeAccesses(\n accesses: RuntimeTraceAccessEvent[] | undefined\n): RuntimeTraceAccessEvent[] | undefined {\n if (!Array.isArray(accesses) || accesses.length === 0) {\n return undefined;\n }\n\n const normalized = accesses\n .map((access) => {\n const variable =\n typeof access?.variable === 'string' && access.variable.length > 0 ? access.variable : '';\n const kind = normalizeAccessKind(access?.kind);\n if (!variable || !kind) {\n return null;\n }\n\n const indices = Array.isArray(access?.indices)\n ? access.indices\n .map((index) =>\n typeof index === 'number' && Number.isFinite(index) ? Math.floor(index) : null\n )\n .filter((index): index is number => index !== null)\n : undefined;\n const pathDepth =\n access?.pathDepth === 1 || access?.pathDepth === 2 ? access.pathDepth : undefined;\n const method =\n typeof access?.method === 'string' && access.method.length > 0 ? access.method : undefined;\n\n const payload: RuntimeTraceAccessEvent = {\n variable,\n kind,\n };\n\n if (indices && indices.length > 0) {\n payload.indices = indices;\n }\n if (pathDepth !== undefined) {\n payload.pathDepth = pathDepth;\n }\n if (method) {\n payload.method = method;\n }\n\n return payload;\n })\n .filter((access): access is RuntimeTraceAccessEvent => access !== null);\n\n if (normalized.length === 0) {\n return undefined;\n }\n\n const statsByVariable = new Map<\n string,\n { hasCellRead: boolean; hasCellWrite: boolean }\n >();\n for (const access of normalized) {\n const stats =\n statsByVariable.get(access.variable) ?? { hasCellRead: false, hasCellWrite: false };\n if (access.kind === 'cell-read') stats.hasCellRead = true;\n if (access.kind === 'cell-write') stats.hasCellWrite = true;\n statsByVariable.set(access.variable, stats);\n }\n\n const deduped = new Set<string>();\n const collapsed = normalized.filter((access) => {\n const stats = statsByVariable.get(access.variable);\n if (access.kind === 'indexed-read' && (stats?.hasCellRead || stats?.hasCellWrite)) {\n return false;\n }\n if (access.kind === 'indexed-write' && stats?.hasCellWrite) {\n return false;\n }\n const key = JSON.stringify([\n access.variable,\n access.kind,\n access.indices ?? null,\n access.pathDepth ?? null,\n access.method ?? null,\n ]);\n if (deduped.has(key)) {\n return false;\n }\n deduped.add(key);\n return true;\n });\n\n return collapsed.length > 0 ? collapsed : undefined;\n}\n\nfunction normalizeRecord(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return {};\n return normalizeUnknown(value) as Record<string, unknown>;\n}\n\nfunction normalizeVariableSources(\n value: unknown\n): Record<string, 'user' | 'user-input' | 'harness-prelude'> | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined;\n const entries = Object.entries(value as Record<string, unknown>)\n .filter(([name, source]) =>\n typeof name === 'string' &&\n name.length > 0 &&\n (source === 'user' || source === 'user-input' || source === 'harness-prelude')\n )\n .sort((a, b) => a[0].localeCompare(b[0])) as Array<\n [string, 'user' | 'user-input' | 'harness-prelude']\n >;\n if (entries.length === 0) return undefined;\n return Object.fromEntries(entries);\n}\n\nfunction normalizeCallStackFrame(frame: CallStackFrame): RuntimeTraceContractCallStackFrame {\n return {\n function: normalizeFunctionName(frame?.function),\n line: normalizeLineNumber(frame?.line, 1),\n args: normalizeRecord(frame?.args),\n };\n}\n\nfunction normalizeVisualizationPayload(\n payload: RuntimeVisualizationPayload | undefined\n): RuntimeTraceContractVisualization | undefined {\n const hashMaps = Array.isArray(payload?.hashMaps)\n ? payload.hashMaps\n .map((entry) => ({\n name: typeof entry?.name === 'string' ? entry.name : '',\n kind: normalizeKind(entry?.kind),\n entries: Array.isArray(entry?.entries)\n ? entry.entries.map((item) => ({\n key: normalizeUnknown(item?.key),\n value: normalizeUnknown(item?.value),\n ...(item?.highlight ? { highlight: true } : {}),\n }))\n : [],\n ...(entry?.highlightedKey !== undefined\n ? { highlightedKey: normalizeUnknown(entry.highlightedKey) }\n : {}),\n ...(entry?.deletedKey !== undefined\n ? { deletedKey: normalizeUnknown(entry.deletedKey) }\n : {}),\n ...(typeof entry?.objectClassName === 'string' && entry.objectClassName.length > 0\n ? { objectClassName: entry.objectClassName }\n : {}),\n ...(typeof entry?.objectId === 'string' && entry.objectId.length > 0\n ? { objectId: entry.objectId }\n : {}),\n }))\n .sort((a, b) => `${a.name}:${a.kind}`.localeCompare(`${b.name}:${b.kind}`))\n : [];\n\n const objectKinds =\n payload?.objectKinds && typeof payload.objectKinds === 'object'\n ? Object.fromEntries(\n Object.entries(payload.objectKinds)\n .filter(([name]) => typeof name === 'string' && name.length > 0)\n .map(([name, kind]) => [name, normalizeObjectKind(kind)])\n .filter((entry): entry is [string, RuntimeObjectKind] => entry[1] !== null)\n .sort((a, b) => a[0].localeCompare(b[0]))\n )\n : undefined;\n\n if (hashMaps.length === 0 && (!objectKinds || Object.keys(objectKinds).length === 0)) {\n return undefined;\n }\n\n return {\n ...(hashMaps.length > 0 ? { hashMaps } : {}),\n ...(objectKinds && Object.keys(objectKinds).length > 0 ? { objectKinds } : {}),\n };\n}\n\nfunction normalizeTraceStep(step: RawTraceStep): RuntimeTraceContractStep {\n const normalizedStdoutCount = normalizeOutputLineCount(step?.stdoutLineCount);\n const normalizedVisualization = normalizeVisualizationPayload(step?.visualization);\n const normalizedAccesses = normalizeAccesses(step?.accesses);\n const normalizedVariableSources = normalizeVariableSources(step?.variableSources);\n\n return {\n event: normalizeEvent(step?.event),\n line: normalizeLineNumber(step?.line, 1),\n function: normalizeFunctionName(step?.function),\n variables: normalizeRecord(step?.variables),\n ...(normalizedVariableSources ? { variableSources: normalizedVariableSources } : {}),\n ...(Array.isArray(step?.callStack) && step.callStack.length > 0\n ? { callStack: step.callStack.map(normalizeCallStackFrame) }\n : {}),\n ...(normalizedAccesses ? { accesses: normalizedAccesses } : {}),\n ...(step?.returnValue !== undefined ? { returnValue: normalizeUnknown(step.returnValue) } : {}),\n ...(normalizedStdoutCount !== undefined ? { stdoutLineCount: normalizedStdoutCount } : {}),\n ...(normalizedVisualization ? { visualization: normalizedVisualization } : {}),\n };\n}\n\nfunction collapseTraceAccessNoise(\n trace: RuntimeTraceContractStep[]\n): RuntimeTraceContractStep[] {\n const variablesWithCellAccess = new Set<string>();\n const accessStatsByVariable = new Map<\n string,\n {\n hasCellRead: boolean;\n hasCellWrite: boolean;\n hasMutatingCall: boolean;\n hasIndexedWrite: boolean;\n }\n >();\n for (const step of trace) {\n for (const access of step.accesses ?? []) {\n const stats =\n accessStatsByVariable.get(access.variable) ?? {\n hasCellRead: false,\n hasCellWrite: false,\n hasMutatingCall: false,\n hasIndexedWrite: false,\n };\n if (access.kind === 'cell-read' || access.kind === 'cell-write') {\n variablesWithCellAccess.add(access.variable);\n }\n if (access.kind === 'cell-read') stats.hasCellRead = true;\n if (access.kind === 'cell-write') stats.hasCellWrite = true;\n if (access.kind === 'mutating-call') stats.hasMutatingCall = true;\n if (access.kind === 'indexed-write') stats.hasIndexedWrite = true;\n accessStatsByVariable.set(access.variable, stats);\n }\n }\n if (variablesWithCellAccess.size === 0) {\n return trace;\n }\n\n return trace.map((step) => {\n if (!step.accesses?.length) {\n return step;\n }\n const filtered = step.accesses.filter((access) => {\n const stats = accessStatsByVariable.get(access.variable);\n if (variablesWithCellAccess.has(access.variable)) {\n return access.kind !== 'indexed-read' && access.kind !== 'indexed-write';\n }\n if (\n access.kind === 'mutating-call' &&\n stats?.hasIndexedWrite &&\n !stats.hasCellRead &&\n !stats.hasCellWrite\n ) {\n return false;\n }\n if (\n access.kind === 'indexed-read' &&\n stats?.hasMutatingCall &&\n !stats.hasIndexedWrite &&\n !stats.hasCellRead &&\n !stats.hasCellWrite\n ) {\n return false;\n }\n return true;\n });\n if (filtered.length === step.accesses.length) {\n return step;\n }\n return {\n ...step,\n ...(filtered.length > 0 ? { accesses: filtered } : {}),\n ...(filtered.length === 0 ? { accesses: undefined } : {}),\n };\n });\n}\n\nexport function normalizeRuntimeTraceContract(\n language: Language,\n result: ExecutionResult\n): RuntimeTraceContractResult {\n const rawNormalizedTrace = collapseTraceAccessNoise(\n Array.isArray(result.trace) ? result.trace.map(normalizeTraceStep) : []\n );\n const maxTraceSteps =\n typeof result.maxTraceSteps === 'number' && Number.isFinite(result.maxTraceSteps)\n ? Math.max(1, Math.floor(result.maxTraceSteps))\n : undefined;\n const traceWasClipped =\n maxTraceSteps !== undefined && rawNormalizedTrace.length > maxTraceSteps;\n const normalizedTrace =\n traceWasClipped && maxTraceSteps !== undefined\n ? rawNormalizedTrace.slice(0, maxTraceSteps)\n : rawNormalizedTrace;\n const lineEventCount =\n typeof result.lineEventCount === 'number' && Number.isFinite(result.lineEventCount)\n ? Math.floor(result.lineEventCount)\n : normalizedTrace.filter((step) => step.event === 'line').length;\n\n const normalizedConsole = Array.isArray(result.consoleOutput)\n ? result.consoleOutput.map((line) => String(line))\n : [];\n\n return {\n schemaVersion: RUNTIME_TRACE_CONTRACT_SCHEMA_VERSION,\n language,\n success: Boolean(result.success),\n ...(Object.prototype.hasOwnProperty.call(result, 'output')\n ? { output: normalizeUnknown(result.output) }\n : {}),\n ...(typeof result.error === 'string' && result.error.length > 0\n ? { error: result.error }\n : {}),\n ...(typeof result.errorLine === 'number' && Number.isFinite(result.errorLine)\n ? { errorLine: Math.floor(result.errorLine) }\n : {}),\n consoleOutput: normalizedConsole,\n trace: normalizedTrace,\n ...((result.traceLimitExceeded !== undefined || traceWasClipped)\n ? { traceLimitExceeded: Boolean(result.traceLimitExceeded) || traceWasClipped }\n : {}),\n ...(typeof result.timeoutReason === 'string' && result.timeoutReason.length > 0\n ? { timeoutReason: result.timeoutReason }\n : {}),\n lineEventCount: Math.max(0, lineEventCount),\n traceStepCount: normalizedTrace.length,\n };\n}\n\nexport function stableStringifyRuntimeTraceContract(value: unknown): string {\n return JSON.stringify(normalizeUnknown(value), null, 2);\n}\n","import type { Language } from '../runtime-types';\nimport {\n normalizeRuntimeTraceContract,\n type RuntimeTraceContractCallStackFrame,\n type RuntimeTraceContractStep,\n} from '../trace-contract';\nimport type {\n CallStackFrame,\n ExecutionResult,\n RawTraceStep,\n RuntimeVisualizationPayload,\n} from '../types';\n\nfunction denormalizeCallStackFrame(frame: RuntimeTraceContractCallStackFrame): CallStackFrame {\n return {\n function: frame.function,\n line: frame.line,\n args: frame.args,\n };\n}\n\nfunction denormalizeTraceStep(step: RuntimeTraceContractStep): RawTraceStep {\n return {\n line: step.line,\n event: step.event,\n variables: step.variables,\n function: step.function,\n ...(step.callStack ? { callStack: step.callStack.map(denormalizeCallStackFrame) } : {}),\n ...(step.accesses ? { accesses: step.accesses } : {}),\n ...(step.returnValue !== undefined ? { returnValue: step.returnValue } : {}),\n ...(step.stdoutLineCount !== undefined ? { stdoutLineCount: step.stdoutLineCount } : {}),\n ...(step.visualization ? { visualization: step.visualization as RuntimeVisualizationPayload } : {}),\n };\n}\n\nexport function adaptTraceExecutionResult(\n language: Language,\n result: ExecutionResult\n): ExecutionResult {\n const normalized = normalizeRuntimeTraceContract(language, result);\n const adaptedTrace: RawTraceStep[] = normalized.trace.map(denormalizeTraceStep);\n\n return {\n success: normalized.success,\n ...(Object.prototype.hasOwnProperty.call(normalized, 'output') ? { output: normalized.output } : {}),\n ...(normalized.error ? { error: normalized.error } : {}),\n ...(normalized.errorLine !== undefined ? { errorLine: normalized.errorLine } : {}),\n trace: adaptedTrace,\n executionTimeMs:\n typeof result.executionTimeMs === 'number' && Number.isFinite(result.executionTimeMs)\n ? result.executionTimeMs\n : 0,\n consoleOutput: normalized.consoleOutput,\n ...(normalized.traceLimitExceeded !== undefined ? { traceLimitExceeded: normalized.traceLimitExceeded } : {}),\n ...(normalized.timeoutReason\n ? { timeoutReason: normalized.timeoutReason as ExecutionResult['timeoutReason'] }\n : {}),\n lineEventCount: normalized.lineEventCount,\n traceStepCount: adaptedTrace.length,\n };\n}\n","import type { ExecutionResult } from '../types';\nimport { adaptTraceExecutionResult } from './shared';\n\nexport function adaptPythonTraceExecutionResult(result: ExecutionResult): ExecutionResult {\n return adaptTraceExecutionResult('python', result);\n}\n","import type { Language } from '../runtime-types';\nimport type { ExecutionResult } from '../types';\nimport { adaptTraceExecutionResult } from './shared';\n\nexport function adaptJavaScriptTraceExecutionResult(\n language: Extract<Language, 'javascript' | 'typescript'>,\n result: ExecutionResult\n): ExecutionResult {\n return adaptTraceExecutionResult(language, result);\n}\n","import type {\n ExecutionResult,\n RawTraceStep,\n RuntimeHashMapVisualization,\n RuntimeTraceAccessEvent,\n RuntimeVisualizationPayload,\n} from '../types';\nimport { normalizeRuntimeTraceContract, type RuntimeTraceContractResult } from '../trace-contract';\nimport { adaptTraceExecutionResult } from './shared';\n\nexport interface JavaTraceResult {\n output: unknown;\n events: string[];\n sourceText?: string;\n traceLimitExceeded?: boolean;\n timeoutReason?: ExecutionResult['timeoutReason'];\n}\n\nexport interface JavaTraceContractResult\n extends Omit<RuntimeTraceContractResult, 'language'> {\n language: 'java';\n}\n\nfunction parseScalar(raw: string): unknown {\n if (raw === 'null') return null;\n if (raw === 'true') return true;\n if (raw === 'false') return false;\n if (/^-?\\d+$/.test(raw)) return Number.parseInt(raw, 10);\n if (/^-?\\d+\\.\\d+$/.test(raw)) return Number.parseFloat(raw);\n if (\n (raw.startsWith('\"') && raw.endsWith('\"')) ||\n (raw.startsWith('[') && raw.endsWith(']')) ||\n (raw.startsWith('{') && raw.endsWith('}'))\n ) {\n try {\n return JSON.parse(raw) as unknown;\n } catch {\n // Fall through to raw string return.\n }\n }\n return raw;\n}\n\nfunction parseKeyValuePairs(fragment: string): Record<string, unknown> {\n const variables: Record<string, unknown> = {};\n const matches = Array.from(fragment.matchAll(/\\b([A-Za-z_][A-Za-z0-9_.]*)=/g));\n for (let index = 0; index < matches.length; index += 1) {\n const match = matches[index];\n const rawKey = match[1];\n const valueStart = (match.index ?? 0) + match[0].length;\n const valueEnd = index + 1 < matches.length ? (matches[index + 1].index ?? fragment.length) : fragment.length;\n const rawValue = fragment.slice(valueStart, valueEnd).trim();\n if (!rawKey || rawValue === undefined) continue;\n if (rawKey === 'method') continue;\n variables[rawKey.replaceAll('.', '_')] = parseScalar(rawValue);\n }\n return variables;\n}\n\nfunction extractLineMetadata(event: string): { line: number; payload: string } {\n const match = event.match(/^line=(\\d+)(?:\\s+(.*))?$/);\n if (!match) {\n return { line: 1, payload: event };\n }\n return {\n line: Number.parseInt(match[1], 10),\n payload: match[2] ?? '',\n };\n}\n\nfunction stripInlineComments(line: string, inBlockComment: boolean): { text: string; inBlockComment: boolean } {\n let result = '';\n let index = 0;\n let inBlock = inBlockComment;\n while (index < line.length) {\n const current = line[index];\n const next = index + 1 < line.length ? line[index + 1] : '';\n\n if (inBlock) {\n if (current === '*' && next === '/') {\n inBlock = false;\n index += 2;\n continue;\n }\n index += 1;\n continue;\n }\n\n if (current === '/' && next === '*') {\n inBlock = true;\n index += 2;\n continue;\n }\n\n if (current === '/' && next === '/') {\n break;\n }\n\n result += current;\n index += 1;\n }\n\n return { text: result, inBlockComment: inBlock };\n}\n\nfunction isMethodDeclarationLine(line: string): boolean {\n const trimmed = line.trim();\n if (!trimmed) return false;\n if (trimmed.startsWith('@')) return false;\n if (!trimmed.includes('(') || !trimmed.includes(')')) return false;\n if (trimmed.endsWith(';')) return false;\n if (trimmed.includes('->')) return false;\n if (/^(?:if|for|while|switch|catch|do|try|else|return|throw|new)\\b/.test(trimmed)) {\n return false;\n }\n if (!/[A-Za-z_][A-Za-z0-9_]*\\s*\\([^{};]*\\)/.test(trimmed)) {\n return false;\n }\n return /(?:\\{\\s*)?$/.test(trimmed);\n}\n\nfunction buildLineRemap(sourceText: string | undefined): Map<number, number> | null {\n if (typeof sourceText !== 'string' || sourceText.length === 0) {\n return null;\n }\n\n const lines = sourceText.split(/\\r?\\n/);\n const executable = new Set<number>();\n let inBlockComment = false;\n\n for (let index = 0; index < lines.length; index += 1) {\n const { text, inBlockComment: nextInBlockComment } = stripInlineComments(lines[index] ?? '', inBlockComment);\n inBlockComment = nextInBlockComment;\n if (text.trim().length > 0) {\n executable.add(index + 1);\n }\n }\n\n if (executable.size === 0) {\n return null;\n }\n\n const nextExecutableAtOrAfter: Array<number | null> = new Array(lines.length + 2).fill(null);\n let nextExecutable: number | null = null;\n for (let line = lines.length; line >= 1; line -= 1) {\n if (executable.has(line)) {\n nextExecutable = line;\n }\n nextExecutableAtOrAfter[line] = nextExecutable;\n }\n\n const previousExecutableAtOrBefore: Array<number | null> = new Array(lines.length + 2).fill(null);\n let previousExecutable: number | null = null;\n for (let line = 1; line <= lines.length; line += 1) {\n if (executable.has(line)) {\n previousExecutable = line;\n }\n previousExecutableAtOrBefore[line] = previousExecutable;\n }\n\n const remap = new Map<number, number>();\n for (let line = 1; line <= lines.length; line += 1) {\n if (executable.has(line)) continue;\n const forward = nextExecutableAtOrAfter[line];\n const backward = previousExecutableAtOrBefore[line];\n const target = forward ?? backward;\n if (target !== null && target !== line) {\n remap.set(line, target);\n }\n }\n\n return remap;\n}\n\nfunction buildMethodDeclarationLineSet(sourceText: string | undefined): Set<number> | null {\n if (typeof sourceText !== 'string' || sourceText.length === 0) {\n return null;\n }\n\n const declarationLines = new Set<number>();\n const lines = sourceText.split(/\\r?\\n/);\n let inBlockComment = false;\n for (let index = 0; index < lines.length; index += 1) {\n const { text, inBlockComment: nextInBlockComment } = stripInlineComments(lines[index] ?? '', inBlockComment);\n inBlockComment = nextInBlockComment;\n if (isMethodDeclarationLine(text)) {\n declarationLines.add(index + 1);\n }\n }\n\n return declarationLines;\n}\n\nfunction parseAccessEvent(payload: string): RuntimeTraceAccessEvent[] | undefined {\n const isEphemeralOutputArrayName = (name: string): boolean =>\n /^(output|outputs)$/i.test(name);\n\n const cellRead = payload.match(/^access ([A-Za-z_][A-Za-z0-9_]*)\\[(\\d+)\\]\\[(\\d+)\\]=(.+)$/);\n if (cellRead) {\n return [{\n variable: cellRead[1],\n kind: 'cell-read',\n indices: [Number.parseInt(cellRead[2], 10), Number.parseInt(cellRead[3], 10)],\n pathDepth: 2,\n }];\n }\n const indexedRead = payload.match(/^access ([A-Za-z_][A-Za-z0-9_]*)\\[(\\d+)\\]=(.+)$/);\n if (indexedRead) {\n return [{\n variable: indexedRead[1],\n kind: 'indexed-read',\n indices: [Number.parseInt(indexedRead[2], 10)],\n pathDepth: 1,\n }];\n }\n const cellWrite = payload.match(/^write-array ([A-Za-z_][A-Za-z0-9_]*)\\[(\\d+)\\]\\[(\\d+)\\]=(.+)$/);\n if (cellWrite) {\n return [{\n variable: cellWrite[1],\n kind: 'cell-write',\n indices: [Number.parseInt(cellWrite[2], 10), Number.parseInt(cellWrite[3], 10)],\n pathDepth: 2,\n }];\n }\n const indexedWrite = payload.match(/^write-array ([A-Za-z_][A-Za-z0-9_]*)\\[(\\d+)\\]=(.+)$/);\n if (indexedWrite) {\n if (isEphemeralOutputArrayName(indexedWrite[1])) {\n return undefined;\n }\n return [{\n variable: indexedWrite[1],\n kind: 'indexed-write',\n indices: [Number.parseInt(indexedWrite[2], 10)],\n pathDepth: 1,\n }];\n }\n const mutatingCall = payload.match(/^mutate ([A-Za-z_][A-Za-z0-9_]*) method=([A-Za-z_][A-Za-z0-9_]*)$/);\n if (mutatingCall) {\n return [{\n variable: mutatingCall[1],\n kind: 'mutating-call',\n method: mutatingCall[2],\n pathDepth: 1,\n }];\n }\n return undefined;\n}\n\nfunction parseStructureState(payload: string): { structure: 'linked-list' | 'tree'; variable: string; value: unknown } | null {\n const match = payload.match(/^state (linked-list|tree) ([A-Za-z_][A-Za-z0-9_]*)=(.+)$/);\n if (!match) return null;\n return {\n structure: match[1] as 'linked-list' | 'tree',\n variable: match[2],\n value: JSON.parse(match[3]) as unknown,\n };\n}\n\nfunction parseObjectState(payload: string): { variable: string; visualization: RuntimeHashMapVisualization } | null {\n const match = payload.match(/^object-state ([A-Za-z_][A-Za-z0-9_]*)=(.+)$/);\n if (!match) return null;\n return {\n variable: match[1],\n visualization: JSON.parse(match[2]) as RuntimeHashMapVisualization,\n };\n}\n\nfunction parseObjectFieldEvent(payload: string): { variable: string; field: string; value: unknown } | null {\n const match = payload.match(/^(access|write) ([A-Za-z_][A-Za-z0-9_]*)\\.([A-Za-z_][A-Za-z0-9_]*)=(.+)$/);\n if (!match) return null;\n return {\n variable: match[2],\n field: match[3],\n value: parseScalar(match[4]),\n };\n}\n\nfunction buildFieldVisualization(event: { variable: string; field: string; value: unknown }): RuntimeVisualizationPayload {\n return {\n objectKinds: {\n [event.variable]: 'object',\n },\n hashMaps: [\n {\n name: event.variable,\n kind: 'object',\n objectClassName:\n event.field === 'next' || event.field === 'prev'\n ? 'ListNode'\n : event.field === 'left' || event.field === 'right'\n ? 'TreeNode'\n : undefined,\n objectId: `${event.variable}-object`,\n highlightedKey: event.field,\n entries: [{ key: event.field, value: event.value, highlight: true }],\n },\n ],\n };\n}\n\nfunction callStacksEqual(\n left: RawTraceStep['callStack'] | undefined,\n right: RawTraceStep['callStack'] | undefined\n): boolean {\n return JSON.stringify(left ?? []) === JSON.stringify(right ?? []);\n}\n\nfunction mergeVisualizationPayloads(\n left: RuntimeVisualizationPayload | undefined,\n right: RuntimeVisualizationPayload | undefined\n): RuntimeVisualizationPayload | undefined {\n if (!left) return right;\n if (!right) return left;\n return {\n ...left,\n ...right,\n objectKinds: {\n ...(left.objectKinds ?? {}),\n ...(right.objectKinds ?? {}),\n },\n hashMaps: [\n ...(left.hashMaps ?? []),\n ...(right.hashMaps ?? []),\n ],\n };\n}\n\nfunction maybeMergeConsecutiveLineStep(trace: RawTraceStep[], nextStep: RawTraceStep): boolean {\n if (nextStep.event !== 'line') {\n return false;\n }\n const previous = trace.at(-1);\n if (!previous || previous.event !== 'line') {\n return false;\n }\n if (previous.line !== nextStep.line || previous.function !== nextStep.function) {\n return false;\n }\n if (!callStacksEqual(previous.callStack, nextStep.callStack)) {\n return false;\n }\n\n previous.variables = { ...(previous.variables ?? {}), ...(nextStep.variables ?? {}) };\n if (nextStep.accesses?.length) {\n previous.accesses = [...(previous.accesses ?? []), ...nextStep.accesses];\n }\n previous.visualization = mergeVisualizationPayloads(previous.visualization, nextStep.visualization);\n return true;\n}\n\nfunction filterStructuredVariables(\n variables: Record<string, unknown> | undefined\n): Record<string, unknown> | undefined {\n if (!variables) {\n return undefined;\n }\n const isEphemeralOutputArrayName = (name: string): boolean =>\n /^(output|outputs)$/i.test(name);\n const entries = Object.entries(variables).filter(([name, value]) => {\n if (value === null || typeof value !== 'object') {\n return false;\n }\n if (!Array.isArray(value)) {\n return true;\n }\n if (Array.isArray(value[0])) {\n return true;\n }\n return !isEphemeralOutputArrayName(name);\n });\n if (entries.length === 0) {\n return undefined;\n }\n return Object.fromEntries(entries);\n}\n\nfunction appendJavaTraceStep(\n trace: RawTraceStep[],\n step: RawTraceStep,\n pendingAccesses: RuntimeTraceAccessEvent[]\n): void {\n const nextStep: RawTraceStep = pendingAccesses.length > 0\n ? { ...step, accesses: [...pendingAccesses] }\n : step;\n pendingAccesses.length = 0;\n if (!maybeMergeConsecutiveLineStep(trace, nextStep)) {\n trace.push(nextStep);\n }\n}\n\nfunction mergeIntoPreviousMatchingLineStep(\n trace: RawTraceStep[],\n line: number,\n currentFunction: string,\n currentCallStack: RawTraceStep['callStack'],\n patch: Partial<Pick<RawTraceStep, 'variables' | 'accesses' | 'visualization'>>\n): boolean {\n const candidate = trace.at(-1);\n if (!candidate || candidate.event !== 'line') {\n return false;\n }\n if (candidate.line !== line || candidate.function !== currentFunction) {\n return false;\n }\n if (!callStacksEqual(candidate.callStack, currentCallStack)) {\n return false;\n }\n\n candidate.variables = { ...(candidate.variables ?? {}), ...(patch.variables ?? {}) };\n if (patch.accesses?.length) {\n candidate.accesses = [...(candidate.accesses ?? []), ...patch.accesses];\n }\n candidate.visualization = mergeVisualizationPayloads(candidate.visualization, patch.visualization);\n return true;\n}\n\nfunction mergeAccessesIntoPreviousMatchingLineStep(\n trace: RawTraceStep[],\n line: number,\n currentFunction: string,\n currentCallStack: RawTraceStep['callStack'],\n accesses: RuntimeTraceAccessEvent[]\n): boolean {\n return mergeIntoPreviousMatchingLineStep(trace, line, currentFunction, currentCallStack, {\n variables: undefined,\n accesses,\n visualization: undefined,\n });\n}\n\nfunction eventsToRawTrace(events: string[], sourceText?: string): RawTraceStep[] {\n const trace: RawTraceStep[] = [];\n const variables: Record<string, unknown> = {};\n const objectKinds: Record<string, 'linked-list' | 'tree'> = {};\n const stack: Array<{ function: string; line: number }> = [];\n const pendingAccesses: RuntimeTraceAccessEvent[] = [];\n let currentFunction = '<module>';\n const lineRemap = buildLineRemap(sourceText);\n const declarationLines = buildMethodDeclarationLineSet(sourceText);\n\n for (const rawEvent of events) {\n if (rawEvent === 'clear' || rawEvent === 'reset') continue;\n const metadata = extractLineMetadata(rawEvent);\n const line = lineRemap?.get(metadata.line) ?? metadata.line;\n const payload = metadata.payload;\n const isDeclarationLine = declarationLines?.has(line) === true;\n\n if (payload.startsWith('call ')) {\n const match = payload.match(/^call\\s+(\\S+)(?:\\s+(.*))?$/);\n const functionName = match?.[1] ?? currentFunction;\n const argsFragment = match?.[2] ?? '';\n Object.assign(variables, parseKeyValuePairs(argsFragment));\n currentFunction = functionName || currentFunction;\n stack.push({ function: currentFunction, line });\n appendJavaTraceStep(trace, {\n line,\n event: 'call',\n function: currentFunction,\n variables: { ...variables },\n callStack: stack.map((frame) => ({ function: frame.function, line: frame.line, args: {} })),\n }, pendingAccesses);\n continue;\n }\n\n if (payload.startsWith('return ')) {\n const match = payload.match(/^return\\s+(\\S+)$/);\n const functionName = match?.[1] ?? currentFunction;\n const returnVariables = functionName === '<module>'\n ? { ...variables }\n : (filterStructuredVariables(variables) ?? {});\n appendJavaTraceStep(trace, {\n line,\n event: 'return',\n function: functionName || currentFunction,\n variables: returnVariables,\n callStack: stack.map((frame) => ({ function: frame.function, line: frame.line, args: {} })),\n }, pendingAccesses);\n stack.pop();\n currentFunction = stack[stack.length - 1]?.function ?? '<module>';\n continue;\n }\n\n if (isDeclarationLine) {\n continue;\n }\n\n if (payload.length === 0) {\n appendJavaTraceStep(trace, {\n line,\n event: 'line',\n function: currentFunction,\n variables: { ...variables },\n ...(stack.length > 0\n ? { callStack: stack.map((frame) => ({ function: frame.function, line: frame.line, args: {} })) }\n : {}),\n }, pendingAccesses);\n continue;\n }\n\n const structureState = parseStructureState(payload);\n if (structureState) {\n variables[structureState.variable] = structureState.value;\n objectKinds[structureState.variable] = structureState.structure;\n appendJavaTraceStep(trace, {\n line,\n event: 'line',\n function: currentFunction,\n variables: { ...variables },\n callStack: stack.map((frame) => ({ function: frame.function, line: frame.line, args: {} })),\n visualization: {\n objectKinds: { ...objectKinds },\n },\n }, pendingAccesses);\n continue;\n }\n\n const objectState = parseObjectState(payload);\n if (objectState) {\n variables[objectState.variable] = { __ref__: objectState.visualization.objectId ?? `${objectState.variable}-object` };\n appendJavaTraceStep(trace, {\n line,\n event: 'line',\n function: currentFunction,\n variables: { ...variables },\n callStack: stack.map((frame) => ({ function: frame.function, line: frame.line, args: {} })),\n visualization: {\n objectKinds: { [objectState.variable]: 'object' },\n hashMaps: [objectState.visualization],\n },\n }, pendingAccesses);\n continue;\n }\n\n const objectField = parseObjectFieldEvent(payload);\n if (objectField) {\n variables[objectField.variable] = { __ref__: `${objectField.variable}-object` };\n const currentCallStack =\n stack.length > 0 ? stack.map((frame) => ({ function: frame.function, line: frame.line, args: {} })) : undefined;\n if (mergeIntoPreviousMatchingLineStep(trace, line, currentFunction, currentCallStack, {\n variables: { ...variables },\n accesses: undefined,\n visualization: buildFieldVisualization(objectField),\n })) {\n continue;\n }\n appendJavaTraceStep(trace, {\n line,\n event: 'line',\n function: currentFunction,\n variables: { ...variables },\n callStack: stack.map((frame) => ({ function: frame.function, line: frame.line, args: {} })),\n visualization: buildFieldVisualization(objectField),\n }, pendingAccesses);\n continue;\n }\n\n Object.assign(variables, parseKeyValuePairs(payload));\n const accesses = parseAccessEvent(payload);\n if (accesses) {\n const currentCallStack =\n stack.length > 0 ? stack.map((frame) => ({ function: frame.function, line: frame.line, args: {} })) : undefined;\n if (mergeAccessesIntoPreviousMatchingLineStep(trace, line, currentFunction, currentCallStack, accesses)) {\n continue;\n }\n pendingAccesses.push(...accesses);\n continue;\n }\n appendJavaTraceStep(trace, {\n line,\n event: 'line',\n function: currentFunction,\n variables: { ...variables },\n ...(stack.length > 0\n ? { callStack: stack.map((frame) => ({ function: frame.function, line: frame.line, args: {} })) }\n : {}),\n }, pendingAccesses);\n }\n\n if (pendingAccesses.length > 0 && trace.length > 0) {\n const last = trace[trace.length - 1];\n last.accesses = [...(last.accesses ?? []), ...pendingAccesses];\n }\n\n return trace;\n}\n\nexport function buildJavaExecutionResult(\n output: unknown,\n events: string[],\n executionTimeMs = 0,\n traceLimitExceeded?: boolean,\n timeoutReason?: ExecutionResult['timeoutReason'],\n maxTraceSteps?: number,\n sourceText?: string\n): ExecutionResult {\n const trace = eventsToRawTrace(events, sourceText);\n return {\n success: true,\n output,\n trace,\n executionTimeMs,\n consoleOutput: [],\n ...(traceLimitExceeded !== undefined ? { traceLimitExceeded } : {}),\n ...(maxTraceSteps !== undefined ? { maxTraceSteps } : {}),\n ...(timeoutReason ? { timeoutReason } : {}),\n lineEventCount: trace.filter((step) => step.event === 'line').length,\n traceStepCount: trace.length,\n };\n}\n\nexport function normalizeJavaTraceContract(result: JavaTraceResult): JavaTraceContractResult {\n const normalized = normalizeRuntimeTraceContract(\n 'java',\n buildJavaExecutionResult(\n result.output,\n result.events,\n 0,\n result.traceLimitExceeded,\n result.timeoutReason,\n undefined,\n result.sourceText\n )\n );\n return {\n ...normalized,\n language: 'java',\n };\n}\n\nexport function adaptJavaTraceExecutionResult(result: ExecutionResult): ExecutionResult {\n return adaptTraceExecutionResult('java', result);\n}\n"],"mappings":"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","names":[]}
|