@tracecode/harness 0.6.5 → 0.7.0-beta7
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 +55 -0
- package/README.md +134 -15
- package/THIRD_PARTY_NOTICES.md +170 -0
- package/dist/browser.cjs +2361 -1033
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.cts +33 -3
- package/dist/browser.d.ts +33 -3
- package/dist/browser.js +2357 -1033
- package/dist/browser.js.map +1 -1
- package/dist/cli.cjs +160 -23
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +161 -24
- package/dist/cli.js.map +1 -1
- package/dist/core.cjs +748 -867
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +21 -85
- package/dist/core.d.ts +21 -85
- package/dist/core.js +734 -855
- package/dist/core.js.map +1 -1
- package/dist/cpp-worker-client-Bn7kC0_L.d.ts +84 -0
- package/dist/cpp-worker-client-BzdJLuZa.d.cts +84 -0
- package/dist/cpp.cjs +1063 -0
- package/dist/cpp.cjs.map +1 -0
- package/dist/cpp.d.cts +7 -0
- package/dist/cpp.d.ts +7 -0
- package/dist/cpp.js +1035 -0
- package/dist/cpp.js.map +1 -0
- package/dist/csharp-worker-client-DMHIa2YG.d.cts +69 -0
- package/dist/csharp-worker-client-JwqS6LiX.d.ts +69 -0
- package/dist/csharp.cjs +1012 -0
- package/dist/csharp.cjs.map +1 -0
- package/dist/csharp.d.cts +7 -0
- package/dist/csharp.d.ts +7 -0
- package/dist/csharp.js +984 -0
- package/dist/csharp.js.map +1 -0
- package/dist/index.cjs +3142 -1160
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -5
- package/dist/index.d.ts +13 -5
- package/dist/index.js +3117 -1148
- package/dist/index.js.map +1 -1
- package/dist/internal/browser.cjs +1639 -30
- package/dist/internal/browser.cjs.map +1 -1
- package/dist/internal/browser.d.cts +6 -199
- package/dist/internal/browser.d.ts +6 -199
- package/dist/internal/browser.js +1636 -30
- package/dist/internal/browser.js.map +1 -1
- package/dist/java-worker-client-BOwKW-11.d.cts +72 -0
- package/dist/java-worker-client-C97DDnCp.d.ts +72 -0
- package/dist/java.cjs +1225 -0
- package/dist/java.cjs.map +1 -0
- package/dist/java.d.cts +7 -0
- package/dist/java.d.ts +7 -0
- package/dist/java.js +1197 -0
- package/dist/java.js.map +1 -0
- package/dist/javascript-worker-client-CYBGEEvc.d.cts +51 -0
- package/dist/javascript-worker-client-DIX1Mp21.d.ts +51 -0
- package/dist/javascript.cjs +1063 -19
- package/dist/javascript.cjs.map +1 -1
- package/dist/javascript.d.cts +7 -4
- package/dist/javascript.d.ts +7 -4
- package/dist/javascript.js +1061 -19
- package/dist/javascript.js.map +1 -1
- package/dist/pyodide-worker-client-C-2rfHj9.d.ts +111 -0
- package/dist/pyodide-worker-client-Cn0a8Uv3.d.cts +111 -0
- package/dist/python.cjs +1282 -74
- package/dist/python.cjs.map +1 -1
- package/dist/python.d.cts +20 -14
- package/dist/python.d.ts +20 -14
- package/dist/python.js +1279 -74
- package/dist/python.js.map +1 -1
- package/dist/runtime-language-info-BFUSti3-.d.ts +43 -0
- package/dist/runtime-language-info-Bxza1cI2.d.cts +43 -0
- package/dist/runtime-types-2qM0MukN.d.cts +244 -0
- package/dist/runtime-types-2qM0MukN.d.ts +244 -0
- package/package.json +73 -8
- package/workers/cpp/cpp-compiler-frame.html +82 -0
- package/workers/cpp/cpp-compiler-worker.js +131 -0
- package/workers/cpp/cpp-worker.js +5790 -0
- package/workers/cpp/tracecode_runtime.hpp +6147 -0
- package/workers/csharp/csharp-worker.js +301 -0
- package/workers/java/.build/classes/harness/browser/JavaRewriteLibrary.class +0 -0
- package/workers/java/java-source-augmentations.js +880 -0
- package/workers/java/java-worker.js +2256 -170
- package/workers/java/src/harness/browser/JavaRewriteLibrary.java +1645 -32
- package/workers/java/src/javafx/util/Pair.java +42 -0
- package/workers/java/src/tracecode/browser/BrowserCompileAndTraceLibrary.java +714 -0
- package/workers/java/src/tracecode/browser/BrowserCompileAndTraceMain.java +76 -0
- package/workers/java/src/tracecode/browser/RuntimeProbeMain.java +14 -0
- package/workers/java/src/tracecode/user/TraceHooks.java +1406 -0
- package/workers/javascript/javascript-libraries-entry.js +71 -0
- package/workers/javascript/javascript-worker.js +2054 -424
- package/workers/python/generated-python-harness-snippets.js +4 -4
- package/workers/python/pyodide-worker.js +222 -61
- package/workers/python/runtime-core.js +1387 -301
- package/workers/vendor/csharp/.stamp +0 -0
- package/workers/vendor/csharp/TraceCode.CSharpHost.runtimeconfig.json +32 -0
- package/workers/vendor/csharp/_framework/Microsoft.CSharp.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.CodeAnalysis.CSharp.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.CodeAnalysis.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.VisualBasic.Core.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.VisualBasic.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.Win32.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/Microsoft.Win32.Registry.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.AppContext.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Buffers.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Collections.Concurrent.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Collections.Immutable.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Collections.NonGeneric.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Collections.Specialized.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Collections.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.Annotations.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.DataAnnotations.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.EventBasedAsync.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.TypeConverter.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ComponentModel.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Configuration.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Console.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Core.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Data.Common.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Data.DataSetExtensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Data.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.Contracts.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.Debug.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.DiagnosticSource.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.FileVersionInfo.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.Process.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.StackTrace.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.TextWriterTraceListener.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.Tools.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.TraceSource.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Diagnostics.Tracing.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Drawing.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Drawing.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Dynamic.Runtime.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Formats.Asn1.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Formats.Tar.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Globalization.Calendars.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Globalization.Extensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Globalization.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Compression.Brotli.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Compression.FileSystem.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Compression.ZipFile.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Compression.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.FileSystem.AccessControl.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.FileSystem.DriveInfo.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.FileSystem.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.FileSystem.Watcher.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.FileSystem.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.IsolatedStorage.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.MemoryMappedFiles.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Pipelines.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Pipes.AccessControl.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.Pipes.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.UnmanagedMemoryStream.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.IO.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Linq.AsyncEnumerable.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Linq.Expressions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Linq.Parallel.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Linq.Queryable.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Linq.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Memory.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Http.Json.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Http.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.HttpListener.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Mail.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.NameResolution.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.NetworkInformation.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Ping.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Quic.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Requests.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Security.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.ServerSentEvents.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.ServicePoint.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.Sockets.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.WebClient.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.WebHeaderCollection.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.WebProxy.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.WebSockets.Client.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.WebSockets.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Net.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Numerics.Vectors.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Numerics.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ObjectModel.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Private.CoreLib.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Private.DataContractSerialization.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Private.Uri.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Private.Xml.Linq.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Private.Xml.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.DispatchProxy.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Emit.ILGeneration.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Emit.Lightweight.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Emit.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Extensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Metadata.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.TypeExtensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Reflection.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Resources.Reader.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Resources.ResourceManager.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Resources.Writer.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.CompilerServices.Unsafe.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.CompilerServices.VisualC.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Extensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Handles.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.JavaScript.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.RuntimeInformation.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Intrinsics.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Loader.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Numerics.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Formatters.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Json.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Xml.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.Serialization.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Runtime.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.AccessControl.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Claims.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.Algorithms.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.Cng.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.Csp.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.Encoding.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.OpenSsl.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.Primitives.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.X509Certificates.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Cryptography.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Principal.Windows.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.Principal.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.SecureString.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Security.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ServiceModel.Web.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ServiceProcess.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.Encoding.CodePages.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.Encoding.Extensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.Encoding.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.Encodings.Web.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.Json.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Text.RegularExpressions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.AccessControl.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Channels.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Overlapped.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Tasks.Dataflow.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Tasks.Extensions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Tasks.Parallel.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Tasks.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Thread.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.ThreadPool.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.Timer.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Threading.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Transactions.Local.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Transactions.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.ValueTuple.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Web.HttpUtility.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Web.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Windows.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.Linq.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.ReaderWriter.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.Serialization.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.XDocument.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.XPath.XDocument.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.XPath.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.XmlDocument.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.XmlSerializer.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.Xml.wasm +0 -0
- package/workers/vendor/csharp/_framework/System.wasm +0 -0
- package/workers/vendor/csharp/_framework/TraceCode.CSharpHost.wasm +0 -0
- package/workers/vendor/csharp/_framework/WindowsBase.wasm +0 -0
- package/workers/vendor/csharp/_framework/cs/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/cs/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/de/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/de/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/dotnet.boot.js +1958 -0
- package/workers/vendor/csharp/_framework/dotnet.js +4 -0
- package/workers/vendor/csharp/_framework/dotnet.js.map +1 -0
- package/workers/vendor/csharp/_framework/dotnet.native.js +6687 -0
- package/workers/vendor/csharp/_framework/dotnet.native.wasm +0 -0
- package/workers/vendor/csharp/_framework/dotnet.runtime.js +4 -0
- package/workers/vendor/csharp/_framework/dotnet.runtime.js.map +1 -0
- package/workers/vendor/csharp/_framework/es/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/es/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/fr/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/fr/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/it/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/it/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ja/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ja/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ko/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ko/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/mscorlib.wasm +0 -0
- package/workers/vendor/csharp/_framework/netstandard.wasm +0 -0
- package/workers/vendor/csharp/_framework/pl/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/pl/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/pt-BR/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ru/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/ru/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/0_Microsoft.CodeAnalysis.CSharp.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/100_System.Reflection.Emit.ILGeneration.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/101_System.Reflection.Emit.Lightweight.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/102_System.Reflection.Extensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/103_System.Reflection.Metadata.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/104_System.Reflection.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/105_System.Reflection.TypeExtensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/106_System.Resources.Reader.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/107_System.Resources.ResourceManager.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/108_System.Resources.Writer.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/109_System.Runtime.CompilerServices.Unsafe.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/10_System.Buffers.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/110_System.Runtime.CompilerServices.VisualC.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/111_System.Runtime.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/112_System.Runtime.Extensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/113_System.Runtime.Handles.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/114_System.Runtime.InteropServices.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/115_System.Runtime.InteropServices.JavaScript.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/116_System.Runtime.InteropServices.RuntimeInformation.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/117_System.Runtime.Intrinsics.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/118_System.Runtime.Loader.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/119_System.Runtime.Numerics.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/11_System.Collections.Concurrent.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/120_System.Runtime.Serialization.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/121_System.Runtime.Serialization.Formatters.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/122_System.Runtime.Serialization.Json.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/123_System.Runtime.Serialization.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/124_System.Runtime.Serialization.Xml.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/125_System.Security.AccessControl.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/126_System.Security.Claims.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/127_System.Security.Cryptography.Algorithms.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/128_System.Security.Cryptography.Cng.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/129_System.Security.Cryptography.Csp.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/12_System.Collections.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/130_System.Security.Cryptography.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/131_System.Security.Cryptography.Encoding.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/132_System.Security.Cryptography.OpenSsl.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/133_System.Security.Cryptography.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/134_System.Security.Cryptography.X509Certificates.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/135_System.Security.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/136_System.Security.Principal.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/137_System.Security.Principal.Windows.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/138_System.Security.SecureString.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/139_System.ServiceModel.Web.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/13_System.Collections.Immutable.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/140_System.ServiceProcess.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/141_System.Text.Encoding.CodePages.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/142_System.Text.Encoding.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/143_System.Text.Encoding.Extensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/144_System.Text.Encodings.Web.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/145_System.Text.Json.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/146_System.Text.RegularExpressions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/147_System.Threading.AccessControl.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/148_System.Threading.Channels.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/149_System.Threading.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/14_System.Collections.NonGeneric.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/150_System.Threading.Overlapped.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/151_System.Threading.Tasks.Dataflow.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/152_System.Threading.Tasks.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/153_System.Threading.Tasks.Extensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/154_System.Threading.Tasks.Parallel.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/155_System.Threading.Thread.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/156_System.Threading.ThreadPool.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/157_System.Threading.Timer.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/158_System.Transactions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/159_System.Transactions.Local.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/15_System.Collections.Specialized.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/160_System.ValueTuple.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/161_System.Web.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/162_System.Web.HttpUtility.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/163_System.Windows.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/164_System.Xml.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/165_System.Xml.Linq.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/166_System.Xml.ReaderWriter.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/167_System.Xml.Serialization.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/168_System.Xml.XDocument.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/169_System.Xml.XmlDocument.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/16_System.ComponentModel.Annotations.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/170_System.Xml.XmlSerializer.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/171_System.Xml.XPath.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/172_System.Xml.XPath.XDocument.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/173_TraceCode.CSharpHost.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/174_WindowsBase.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/17_System.ComponentModel.DataAnnotations.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/18_System.ComponentModel.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/19_System.ComponentModel.EventBasedAsync.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/1_Microsoft.CodeAnalysis.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/20_System.ComponentModel.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/21_System.ComponentModel.TypeConverter.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/22_System.Configuration.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/23_System.Console.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/24_System.Core.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/25_System.Data.Common.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/26_System.Data.DataSetExtensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/27_System.Data.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/28_System.Diagnostics.Contracts.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/29_System.Diagnostics.Debug.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/2_Microsoft.CSharp.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/30_System.Diagnostics.DiagnosticSource.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/31_System.Diagnostics.FileVersionInfo.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/32_System.Diagnostics.Process.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/33_System.Diagnostics.StackTrace.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/34_System.Diagnostics.TextWriterTraceListener.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/35_System.Diagnostics.Tools.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/36_System.Diagnostics.TraceSource.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/37_System.Diagnostics.Tracing.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/38_System.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/39_System.Drawing.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/3_Microsoft.VisualBasic.Core.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/40_System.Drawing.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/41_System.Dynamic.Runtime.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/42_System.Formats.Asn1.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/43_System.Formats.Tar.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/44_System.Globalization.Calendars.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/45_System.Globalization.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/46_System.Globalization.Extensions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/47_System.IO.Compression.Brotli.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/48_System.IO.Compression.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/49_System.IO.Compression.FileSystem.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/4_Microsoft.VisualBasic.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/50_System.IO.Compression.ZipFile.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/51_System.IO.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/52_System.IO.FileSystem.AccessControl.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/53_System.IO.FileSystem.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/54_System.IO.FileSystem.DriveInfo.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/55_System.IO.FileSystem.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/56_System.IO.FileSystem.Watcher.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/57_System.IO.IsolatedStorage.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/58_System.IO.MemoryMappedFiles.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/59_System.IO.Pipelines.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/5_Microsoft.Win32.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/60_System.IO.Pipes.AccessControl.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/61_System.IO.Pipes.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/62_System.IO.UnmanagedMemoryStream.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/63_System.Linq.AsyncEnumerable.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/64_System.Linq.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/65_System.Linq.Expressions.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/66_System.Linq.Parallel.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/67_System.Linq.Queryable.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/68_System.Memory.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/69_System.Net.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/6_Microsoft.Win32.Registry.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/70_System.Net.Http.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/71_System.Net.Http.Json.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/72_System.Net.HttpListener.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/73_System.Net.Mail.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/74_System.Net.NameResolution.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/75_System.Net.NetworkInformation.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/76_System.Net.Ping.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/77_System.Net.Primitives.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/78_System.Net.Quic.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/79_System.Net.Requests.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/7_mscorlib.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/80_System.Net.Security.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/81_System.Net.ServerSentEvents.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/82_System.Net.ServicePoint.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/83_System.Net.Sockets.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/84_System.Net.WebClient.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/85_System.Net.WebHeaderCollection.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/86_System.Net.WebProxy.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/87_System.Net.WebSockets.Client.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/88_System.Net.WebSockets.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/89_System.Numerics.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/8_netstandard.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/90_System.Numerics.Vectors.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/91_System.ObjectModel.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/92_System.Private.CoreLib.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/93_System.Private.DataContractSerialization.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/94_System.Private.Uri.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/95_System.Private.Xml.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/96_System.Private.Xml.Linq.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/97_System.Reflection.DispatchProxy.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/98_System.Reflection.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/99_System.Reflection.Emit.dll +0 -0
- package/workers/vendor/csharp/_framework/supportFiles/9_System.AppContext.dll +0 -0
- package/workers/vendor/csharp/_framework/tr/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/tr/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/zh-Hans/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
- package/workers/vendor/csharp/_framework/zh-Hant/Microsoft.CodeAnalysis.resources.wasm +0 -0
- package/workers/vendor/csharp/main.mjs +5 -0
- package/workers/vendor/csharp/package.json +1 -0
- package/workers/vendor/java-browser-helper.jar +0 -0
- package/workers/vendor/java-rewriter.jar +0 -0
- package/workers/vendor/javascript-libraries.js +10106 -0
- package/dist/runtime-types-89nchXlY.d.cts +0 -89
- package/dist/runtime-types-CCQ-ZLc9.d.ts +0 -89
- package/dist/types-zyvpJKCi.d.cts +0 -100
- package/dist/types-zyvpJKCi.d.ts +0 -100
- package/workers/java/java-source-augmentations.cjs +0 -242
- package/workers/java/src/spike/user/TraceHooks.java +0 -619
- 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/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../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","../packages/harness-browser/src/javascript-worker-client.ts","../packages/harness-browser/src/runtime-capability-guards.ts","../packages/harness-browser/src/runtime-profiles.ts","../packages/harness-browser/src/javascript-runtime-client.ts","../packages/harness-browser/src/java-worker-client.ts","../packages/harness-browser/src/java-runtime-client.ts","../packages/harness-browser/src/pyodide-worker-client.ts","../packages/harness-browser/src/python-runtime-client.ts","../packages/harness-browser/src/runtime-assets.ts","../packages/harness-browser/src/browser-harness.ts","../packages/harness-python/src/generated/python-harness-snippets.ts","../packages/harness-python/src/python-harness.ts","../packages/harness-python/src/python-harness-template.ts","../packages/harness-javascript/src/typescript-runtime-declarations.ts","../packages/harness-javascript/src/javascript-executor.ts"],"sourcesContent":["export * from '../packages/harness-core/src/index';\nexport * from '../packages/harness-browser/src/index';\nexport * from '../packages/harness-python/src/index';\nexport * from '../packages/harness-javascript/src/index';\n","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\nexport function normalizeJavaSerializedResult(output: unknown): unknown {\n if (typeof output !== 'string') {\n return output;\n }\n try {\n return JSON.parse(output) as unknown;\n } catch {\n return output;\n }\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 const indexedMutatingCall = payload.match(/^mutate-indexed ([A-Za-z_][A-Za-z0-9_]*)\\[(\\d+)\\] method=([A-Za-z_][A-Za-z0-9_]*)$/);\n if (indexedMutatingCall) {\n return [{\n variable: indexedMutatingCall[1],\n kind: 'mutating-call',\n indices: [Number.parseInt(indexedMutatingCall[2], 10)],\n method: indexedMutatingCall[3],\n pathDepth: 1,\n }];\n }\n const keyedCall = payload.match(/^keyed-call ([A-Za-z_][A-Za-z0-9_]*) method=([A-Za-z_][A-Za-z0-9_]*)(?:\\s+.*)?$/);\n if (keyedCall) {\n return [{\n variable: keyedCall[1],\n kind: 'mutating-call',\n method: keyedCall[2],\n pathDepth: 1,\n }];\n }\n return undefined;\n}\n\nfunction parseStructureState(payload: string): { structure: 'linked-list' | 'tree' | 'graph-adjacency'; variable: string; value: unknown } | null {\n const match = payload.match(/^state (linked-list|tree|graph-adjacency) ([A-Za-z_][A-Za-z0-9_]*)=(.+)$/);\n if (!match) return null;\n return {\n structure: match[1] as 'linked-list' | 'tree' | 'graph-adjacency',\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 parseMapState(payload: string): { variable: string; visualization: RuntimeHashMapVisualization } | null {\n const match = payload.match(/^map-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 parseSetState(payload: string): { variable: string; visualization: RuntimeHashMapVisualization } | null {\n const match = payload.match(/^set-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 isArrayLengthAccessEvent(payload: string): boolean {\n return /^access [A-Za-z_][A-Za-z0-9_]*\\.length=\\d+$/.test(payload);\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 options: { allowMerge?: boolean } = {}\n): void {\n const nextStep: RawTraceStep = pendingAccesses.length > 0\n ? { ...step, accesses: [...pendingAccesses] }\n : step;\n pendingAccesses.length = 0;\n if (options.allowMerge !== false && maybeMergeConsecutiveLineStep(trace, nextStep)) {\n return;\n }\n trace.push(nextStep);\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' | 'graph-adjacency'> = {};\n const stack: Array<{ function: string; line: number; args: Record<string, unknown> }> = [];\n const pendingAccesses: RuntimeTraceAccessEvent[] = [];\n let currentFunction = '<module>';\n let previousRawLine: number | null = null;\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 previousEventRawLine = previousRawLine;\n previousRawLine = metadata.line;\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 const args = parseKeyValuePairs(argsFragment);\n Object.assign(variables, args);\n currentFunction = functionName || currentFunction;\n stack.push({ function: currentFunction, line, args });\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: { ...frame.args } })),\n }, pendingAccesses);\n continue;\n }\n\n if (payload.startsWith('return ')) {\n const match = payload.match(/^return\\s+(\\S+)(?:\\s+value=(.*))?$/);\n const functionName = match?.[1] ?? currentFunction;\n const returnValue = match?.[2] !== undefined ? parseScalar(match[2].trim()) : undefined;\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: { ...frame.args } })),\n ...(returnValue !== undefined ? { returnValue } : {}),\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: { ...frame.args } })) }\n : {}),\n }, pendingAccesses, { allowMerge: previousEventRawLine !== metadata.line });\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: { ...frame.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: { ...frame.args } })),\n visualization: {\n objectKinds: { [objectState.variable]: 'object' },\n hashMaps: [objectState.visualization],\n },\n }, pendingAccesses);\n continue;\n }\n\n const mapState = parseMapState(payload);\n if (mapState) {\n const entries = mapState.visualization.entries.map((entry) => [entry.key, entry.value]);\n variables[mapState.variable] = { __type__: 'map', entries };\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: { ...frame.args } })),\n visualization: {\n objectKinds: { [mapState.variable]: 'map' },\n hashMaps: [mapState.visualization],\n },\n }, pendingAccesses);\n continue;\n }\n\n const setState = parseSetState(payload);\n if (setState) {\n const values = setState.visualization.entries.map((entry) => entry.key);\n variables[setState.variable] = { __type__: 'set', values };\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: { ...frame.args } })),\n visualization: {\n objectKinds: { [setState.variable]: 'set' },\n hashMaps: [setState.visualization],\n },\n }, pendingAccesses);\n continue;\n }\n\n if (isArrayLengthAccessEvent(payload)) {\n continue;\n }\n\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: { ...frame.args } })) : undefined;\n if (mergeAccessesIntoPreviousMatchingLineStep(trace, line, currentFunction, currentCallStack, accesses)) {\n continue;\n }\n pendingAccesses.push(...accesses);\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: { ...frame.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: { ...frame.args } })),\n visualization: buildFieldVisualization(objectField),\n }, pendingAccesses);\n continue;\n }\n\n Object.assign(variables, parseKeyValuePairs(payload));\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: { ...frame.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 options: { outputIsSerialized?: boolean } = {}\n): ExecutionResult {\n const trace = eventsToRawTrace(events, sourceText);\n return {\n success: true,\n output: options.outputIsSerialized === false ? output : normalizeJavaSerializedResult(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","import type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\n\ntype MessageId = string;\nexport type JavaScriptExecutionStyle = 'function' | 'solution-method' | 'ops-class';\nexport type JavaScriptWorkerLanguage = 'javascript' | 'typescript';\n\nexport interface JavaScriptWorkerClientOptions {\n workerUrl: string;\n debug?: boolean;\n}\n\ninterface PendingMessage {\n resolve: (value: unknown) => void;\n reject: (error: Error) => void;\n timeoutId?: ReturnType<typeof setTimeout>;\n}\n\ninterface WorkerMessage {\n id?: MessageId;\n type: string;\n payload?: unknown;\n}\n\ninterface InitResult {\n success: boolean;\n loadTimeMs: number;\n}\n\nconst EXECUTION_TIMEOUT_MS = 7000;\nconst INTERVIEW_MODE_TIMEOUT_MS = 5000;\nconst TRACING_TIMEOUT_MS = 7000;\nconst INIT_TIMEOUT_MS = 10000;\nconst MESSAGE_TIMEOUT_MS = 12000;\nconst WORKER_READY_TIMEOUT_MS = 10000;\n\nexport class JavaScriptWorkerClient {\n private worker: Worker | null = null;\n private pendingMessages = new Map<MessageId, PendingMessage>();\n private messageId = 0;\n private isInitializing = false;\n private initPromise: Promise<InitResult> | null = null;\n private workerReadyPromise: Promise<void> | null = null;\n private workerReadyResolve: (() => void) | null = null;\n private workerReadyReject: ((error: Error) => void) | null = null;\n private readonly debug: boolean;\n\n constructor(private readonly options: JavaScriptWorkerClientOptions) {\n this.debug = options.debug ?? process.env.NODE_ENV === 'development';\n }\n\n isSupported(): boolean {\n return typeof Worker !== 'undefined';\n }\n\n private getWorker(): Worker {\n if (this.worker) return this.worker;\n\n if (!this.isSupported()) {\n throw new Error('Web Workers are not supported in this environment');\n }\n\n this.workerReadyPromise = new Promise((resolve, reject) => {\n this.workerReadyResolve = resolve;\n this.workerReadyReject = (error: Error) => reject(error);\n });\n\n const workerUrl =\n this.debug && !this.options.workerUrl.includes('?')\n ? `${this.options.workerUrl}?dev=${Date.now()}`\n : this.options.workerUrl;\n this.worker = new Worker(workerUrl);\n\n this.worker.onmessage = (event: MessageEvent<WorkerMessage>) => {\n const { id, type, payload } = event.data;\n\n if (type === 'worker-ready') {\n this.workerReadyResolve?.();\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n if (this.debug) console.log('[JavaScriptWorkerClient] worker-ready');\n return;\n }\n\n if (id) {\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n\n this.pendingMessages.delete(id);\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n\n if (type === 'error') {\n pending.reject(new Error((payload as { error: string }).error));\n return;\n }\n\n pending.resolve(payload);\n }\n };\n\n this.worker.onerror = (error) => {\n console.error('[JavaScriptWorkerClient] Worker error:', error);\n const workerError = new Error('Worker error');\n this.workerReadyReject?.(workerError);\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n\n for (const [id, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(workerError);\n this.pendingMessages.delete(id);\n }\n };\n\n return this.worker;\n }\n\n private async waitForWorkerReady(): Promise<void> {\n const readyPromise = this.workerReadyPromise;\n if (!readyPromise) return;\n\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n const timeoutError = new Error(\n `JavaScript worker failed to initialize in time (${Math.round(WORKER_READY_TIMEOUT_MS / 1000)}s)`\n );\n this.terminateAndReset(timeoutError);\n reject(timeoutError);\n }, WORKER_READY_TIMEOUT_MS);\n\n readyPromise\n .then(() => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve();\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error instanceof Error ? error : new Error(String(error)));\n });\n });\n }\n\n private async sendMessage<T>(\n type: string,\n payload?: unknown,\n timeoutMs: number = MESSAGE_TIMEOUT_MS\n ): Promise<T> {\n const worker = this.getWorker();\n await this.waitForWorkerReady();\n const id = String(++this.messageId);\n\n return new Promise<T>((resolve, reject) => {\n this.pendingMessages.set(id, {\n resolve: resolve as (value: unknown) => void,\n reject,\n });\n\n const timeoutId = globalThis.setTimeout(() => {\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n pending.reject(new Error(`Worker request timed out: ${type}`));\n }, timeoutMs);\n\n const pending = this.pendingMessages.get(id);\n if (pending) pending.timeoutId = timeoutId;\n\n worker.postMessage({ id, type, payload });\n });\n }\n\n private async executeWithTimeout<T>(executor: () => Promise<T>, timeoutMs: number): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let settled = false;\n\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n this.terminateAndReset();\n reject(\n new Error(\n `Execution timed out (possible infinite loop). Code execution was stopped after ${Math.round(timeoutMs / 1000)} seconds.`\n )\n );\n }, timeoutMs);\n\n executor()\n .then((result) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve(result);\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error);\n });\n });\n }\n\n private terminateAndReset(reason: Error = new Error('Worker was terminated')): void {\n this.workerReadyReject?.(reason);\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n }\n this.initPromise = null;\n this.isInitializing = false;\n this.workerReadyPromise = null;\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n\n for (const [, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(reason);\n }\n this.pendingMessages.clear();\n }\n\n async init(): Promise<InitResult> {\n if (this.initPromise) return this.initPromise;\n\n if (this.isInitializing) {\n await new Promise((resolve) => globalThis.setTimeout(resolve, 100));\n return this.init();\n }\n\n this.isInitializing = true;\n this.initPromise = this.sendMessage<InitResult>('init', undefined, INIT_TIMEOUT_MS);\n\n try {\n return await this.initPromise;\n } catch (error) {\n this.initPromise = null;\n throw error;\n } finally {\n this.isInitializing = false;\n }\n }\n\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: {\n maxTraceSteps?: number;\n maxLineEvents?: number;\n maxSingleLineHits?: number;\n maxStoredEvents?: number;\n minimalTrace?: boolean;\n },\n executionStyle: JavaScriptExecutionStyle = 'function',\n language: JavaScriptWorkerLanguage = 'javascript'\n ): Promise<ExecutionResult> {\n await this.init();\n return this.executeWithTimeout(\n () =>\n this.sendMessage<ExecutionResult>(\n 'execute-with-tracing',\n {\n code,\n functionName,\n inputs,\n options,\n executionStyle,\n language,\n },\n TRACING_TIMEOUT_MS + 2000\n ),\n TRACING_TIMEOUT_MS\n );\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: JavaScriptExecutionStyle = 'function',\n language: JavaScriptWorkerLanguage = 'javascript'\n ): Promise<CodeExecutionResult> {\n await this.init();\n return this.executeWithTimeout(\n () =>\n this.sendMessage<CodeExecutionResult>(\n 'execute-code',\n {\n code,\n functionName,\n inputs,\n executionStyle,\n language,\n },\n EXECUTION_TIMEOUT_MS + 2000\n ),\n EXECUTION_TIMEOUT_MS\n );\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: JavaScriptExecutionStyle = 'function',\n language: JavaScriptWorkerLanguage = 'javascript'\n ): Promise<CodeExecutionResult> {\n await this.init();\n\n try {\n const result = await this.executeWithTimeout(\n () =>\n this.sendMessage<CodeExecutionResult>(\n 'execute-code-interview',\n {\n code,\n functionName,\n inputs,\n executionStyle,\n language,\n },\n INTERVIEW_MODE_TIMEOUT_MS + 2000\n ),\n INTERVIEW_MODE_TIMEOUT_MS\n );\n\n if (!result.success && result.error) {\n const normalized = result.error.toLowerCase();\n const isTimeoutOrResourceLimit =\n normalized.includes('timed out') ||\n normalized.includes('infinite loop') ||\n normalized.includes('line-limit') ||\n normalized.includes('single-line-limit') ||\n normalized.includes('recursion-limit') ||\n normalized.includes('trace-limit') ||\n normalized.includes('line events') ||\n normalized.includes('trace steps') ||\n normalized.includes('call depth');\n if (isTimeoutOrResourceLimit) {\n return {\n success: false,\n output: null,\n error: 'Time Limit Exceeded',\n consoleOutput: result.consoleOutput ?? [],\n };\n }\n }\n\n return result;\n } catch {\n return {\n success: false,\n output: null,\n error: 'Time Limit Exceeded',\n consoleOutput: [],\n };\n }\n }\n\n terminate(): void {\n this.terminateAndReset();\n }\n}\n\nexport function isJavaScriptWorkerSupported(): boolean {\n return typeof Worker !== 'undefined';\n}\n","import type {\n LanguageRuntimeProfile,\n RuntimeExecutionStyle,\n} from '../../harness-core/src/runtime-types';\n\ntype RuntimeRequestKind = 'execute' | 'trace' | 'interview';\n\ninterface RuntimeRequestSupportOptions {\n request: RuntimeRequestKind;\n executionStyle: RuntimeExecutionStyle;\n functionName?: string | null;\n}\n\nfunction isScriptRequest(functionName: string | null | undefined): boolean {\n if (functionName == null) return true;\n return functionName.trim().length === 0;\n}\n\nfunction executionStyleLabel(executionStyle: RuntimeExecutionStyle): string {\n if (executionStyle === 'solution-method') return 'solution-method';\n if (executionStyle === 'ops-class') return 'ops-class';\n return 'function';\n}\n\nfunction isExecutionStyleSupported(\n profile: LanguageRuntimeProfile,\n executionStyle: RuntimeExecutionStyle\n): boolean {\n const styles = profile.capabilities.execution.styles;\n if (executionStyle === 'solution-method') return styles.solutionMethod;\n if (executionStyle === 'ops-class') return styles.opsClass;\n return styles.function;\n}\n\nfunction describeRequest(request: RuntimeRequestKind): string {\n if (request === 'trace') return 'tracing';\n if (request === 'interview') return 'interview execution';\n return 'execution';\n}\n\nexport function assertRuntimeRequestSupported(\n profile: LanguageRuntimeProfile,\n options: RuntimeRequestSupportOptions\n): void {\n if (options.request === 'trace' && !profile.capabilities.tracing.supported) {\n throw new Error(`Runtime \"${profile.language}\" does not support tracing.`);\n }\n\n if (options.request === 'interview' && !profile.capabilities.execution.styles.interviewMode) {\n throw new Error(`Runtime \"${profile.language}\" does not support interview execution.`);\n }\n\n if (!isExecutionStyleSupported(profile, options.executionStyle)) {\n throw new Error(\n `Runtime \"${profile.language}\" does not support execution style \"${executionStyleLabel(options.executionStyle)}\".`\n );\n }\n\n if (isScriptRequest(options.functionName) && !profile.capabilities.execution.styles.script) {\n throw new Error(`Runtime \"${profile.language}\" does not support script mode ${describeRequest(options.request)}.`);\n }\n}\n","import type { Language, LanguageRuntimeProfile } from '../../harness-core/src/runtime-types';\n\nconst PYTHON_RUNTIME_PROFILE: LanguageRuntimeProfile = {\n language: 'python',\n maturity: 'stable',\n capabilities: {\n execution: {\n styles: {\n function: true,\n solutionMethod: true,\n opsClass: true,\n script: true,\n interviewMode: true,\n },\n timeouts: {\n clientTimeouts: true,\n runtimeTimeouts: true,\n },\n },\n tracing: {\n supported: true,\n events: {\n line: true,\n call: true,\n return: true,\n exception: true,\n stdout: true,\n timeout: true,\n },\n controls: {\n maxTraceSteps: true,\n maxLineEvents: true,\n maxSingleLineHits: true,\n maxStoredEvents: true,\n minimalTrace: true,\n },\n fidelity: {\n preciseLineMapping: true,\n stableFunctionNames: true,\n callStack: true,\n },\n },\n diagnostics: {\n compileErrors: false,\n runtimeErrors: true,\n mappedErrorLines: true,\n stackTraces: false,\n },\n structures: {\n treeNodeRefs: true,\n listNodeRefs: true,\n mapSerialization: true,\n setSerialization: true,\n graphSerialization: true,\n cycleReferences: true,\n },\n visualization: {\n runtimePayloads: true,\n objectKinds: true,\n hashMaps: true,\n stepVisualization: true,\n },\n },\n};\n\nconst JAVASCRIPT_RUNTIME_PROFILE: LanguageRuntimeProfile = {\n language: 'javascript',\n maturity: 'stable',\n capabilities: {\n execution: {\n styles: {\n function: true,\n solutionMethod: true,\n opsClass: true,\n script: true,\n interviewMode: true,\n },\n timeouts: {\n clientTimeouts: true,\n runtimeTimeouts: false,\n },\n },\n tracing: {\n supported: true,\n events: {\n line: true,\n call: true,\n return: true,\n exception: true,\n stdout: false,\n timeout: true,\n },\n controls: {\n maxTraceSteps: true,\n maxLineEvents: true,\n maxSingleLineHits: true,\n maxStoredEvents: true,\n minimalTrace: true,\n },\n fidelity: {\n preciseLineMapping: true,\n stableFunctionNames: true,\n callStack: true,\n },\n },\n diagnostics: {\n compileErrors: false,\n runtimeErrors: true,\n mappedErrorLines: false,\n stackTraces: false,\n },\n structures: {\n treeNodeRefs: true,\n listNodeRefs: true,\n mapSerialization: true,\n setSerialization: true,\n graphSerialization: true,\n cycleReferences: true,\n },\n visualization: {\n runtimePayloads: true,\n objectKinds: true,\n hashMaps: true,\n stepVisualization: true,\n },\n },\n};\n\nconst TYPESCRIPT_RUNTIME_PROFILE: LanguageRuntimeProfile = {\n language: 'typescript',\n maturity: 'stable',\n capabilities: {\n execution: {\n styles: {\n function: true,\n solutionMethod: true,\n opsClass: true,\n script: true,\n interviewMode: true,\n },\n timeouts: {\n clientTimeouts: true,\n runtimeTimeouts: false,\n },\n },\n tracing: {\n supported: true,\n events: {\n line: true,\n call: true,\n return: true,\n exception: true,\n stdout: false,\n timeout: true,\n },\n controls: {\n maxTraceSteps: true,\n maxLineEvents: true,\n maxSingleLineHits: true,\n maxStoredEvents: true,\n minimalTrace: true,\n },\n fidelity: {\n preciseLineMapping: true,\n stableFunctionNames: true,\n callStack: true,\n },\n },\n diagnostics: {\n compileErrors: true,\n runtimeErrors: true,\n mappedErrorLines: true,\n stackTraces: false,\n },\n structures: {\n treeNodeRefs: true,\n listNodeRefs: true,\n mapSerialization: true,\n setSerialization: true,\n graphSerialization: true,\n cycleReferences: true,\n },\n visualization: {\n runtimePayloads: true,\n objectKinds: true,\n hashMaps: true,\n stepVisualization: true,\n },\n },\n};\n\nconst JAVA_RUNTIME_PROFILE: LanguageRuntimeProfile = {\n language: 'java',\n maturity: 'experimental',\n capabilities: {\n execution: {\n styles: {\n function: true,\n solutionMethod: true,\n opsClass: true,\n script: true,\n interviewMode: true,\n },\n timeouts: {\n clientTimeouts: true,\n runtimeTimeouts: true,\n },\n },\n tracing: {\n supported: true,\n events: {\n line: true,\n call: true,\n return: true,\n exception: true,\n stdout: false,\n timeout: true,\n },\n controls: {\n maxTraceSteps: true,\n maxLineEvents: false,\n maxSingleLineHits: false,\n maxStoredEvents: true,\n minimalTrace: false,\n },\n fidelity: {\n preciseLineMapping: true,\n stableFunctionNames: true,\n callStack: true,\n },\n },\n diagnostics: {\n compileErrors: true,\n runtimeErrors: true,\n mappedErrorLines: false,\n stackTraces: true,\n },\n structures: {\n treeNodeRefs: true,\n listNodeRefs: true,\n mapSerialization: true,\n setSerialization: true,\n graphSerialization: false,\n cycleReferences: true,\n },\n visualization: {\n runtimePayloads: true,\n objectKinds: true,\n hashMaps: true,\n stepVisualization: true,\n },\n },\n notes: [\n 'Java currently supports the browser-local Java 17 lane for function, solution-method, ops-class, and script-style execution.',\n 'Interview-mode Java reuses the same browser-local execution path and remains experimental.',\n 'Script-style Java uses an empty function name with executionStyle=\"function\" and reads the top-level result variable.',\n ],\n};\n\nexport const LANGUAGE_RUNTIME_PROFILES: Record<Language, LanguageRuntimeProfile> = {\n python: PYTHON_RUNTIME_PROFILE,\n javascript: JAVASCRIPT_RUNTIME_PROFILE,\n typescript: TYPESCRIPT_RUNTIME_PROFILE,\n java: JAVA_RUNTIME_PROFILE,\n};\n\nexport const SUPPORTED_LANGUAGES: readonly Language[] = Object.freeze(\n Object.keys(LANGUAGE_RUNTIME_PROFILES) as Language[]\n);\n\nexport function getLanguageRuntimeProfile(language: Language): LanguageRuntimeProfile {\n const profile = LANGUAGE_RUNTIME_PROFILES[language];\n if (!profile) {\n throw new Error(`Runtime profile for language \"${language}\" is not implemented yet.`);\n }\n return profile;\n}\n\nexport function getSupportedLanguageProfiles(): readonly LanguageRuntimeProfile[] {\n return SUPPORTED_LANGUAGES.map((language) => LANGUAGE_RUNTIME_PROFILES[language]);\n}\n\nexport function isLanguageSupported(language: Language): boolean {\n return SUPPORTED_LANGUAGES.includes(language);\n}\n","import {\n type JavaScriptExecutionStyle,\n type JavaScriptWorkerLanguage,\n type JavaScriptWorkerClient,\n} from './javascript-worker-client';\nimport type {\n RuntimeClient,\n RuntimeExecutionStyle,\n TraceExecutionOptions,\n} from '../../harness-core/src/runtime-types';\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { adaptJavaScriptTraceExecutionResult } from '../../harness-core/src/trace-adapters/javascript';\nimport { assertRuntimeRequestSupported } from './runtime-capability-guards';\nimport { getLanguageRuntimeProfile } from './runtime-profiles';\n\nclass JavaScriptRuntimeClient implements RuntimeClient {\n constructor(\n private readonly runtimeLanguage: JavaScriptWorkerLanguage,\n private readonly workerClient: JavaScriptWorkerClient\n ) {}\n\n async init(): Promise<{ success: boolean; loadTimeMs: number }> {\n return this.workerClient.init();\n }\n\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: TraceExecutionOptions,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<ExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile(this.runtimeLanguage), {\n request: 'trace',\n executionStyle,\n functionName,\n });\n const rawResult = await this.workerClient.executeWithTracing(\n code,\n functionName,\n inputs,\n options,\n executionStyle as JavaScriptExecutionStyle,\n this.runtimeLanguage\n );\n return adaptJavaScriptTraceExecutionResult(this.runtimeLanguage, rawResult);\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile(this.runtimeLanguage), {\n request: 'execute',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCode(\n code,\n functionName,\n inputs,\n executionStyle as JavaScriptExecutionStyle,\n this.runtimeLanguage\n );\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile(this.runtimeLanguage), {\n request: 'interview',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCodeInterviewMode(\n code,\n functionName,\n inputs,\n executionStyle as JavaScriptExecutionStyle,\n this.runtimeLanguage\n );\n }\n}\n\nexport function createJavaScriptRuntimeClient(\n runtimeLanguage: JavaScriptWorkerLanguage,\n workerClient: JavaScriptWorkerClient\n): RuntimeClient {\n return new JavaScriptRuntimeClient(runtimeLanguage, workerClient);\n}\n","import type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\n\ntype MessageId = string;\nexport type JavaExecutionStyle = 'function' | 'solution-method' | 'ops-class';\n\nexport interface JavaWorkerClientOptions {\n workerUrl: string;\n debug?: boolean;\n}\n\ninterface PendingMessage {\n resolve: (value: unknown) => void;\n reject: (error: Error) => void;\n timeoutId?: ReturnType<typeof setTimeout>;\n}\n\ninterface WorkerMessage {\n id?: MessageId;\n type: string;\n payload?: unknown;\n}\n\ninterface InitResult {\n success: boolean;\n loadTimeMs: number;\n}\n\nexport interface JavaWorkerTraceResult {\n success: boolean;\n output?: unknown;\n events: string[];\n sourceText?: string;\n executionTimeMs: number;\n error?: string;\n errorLine?: number;\n consoleOutput: string[];\n traceLimitExceeded?: boolean;\n timeoutReason?: 'trace-limit';\n droppedEventCount?: number;\n}\n\nexport interface JavaTraceExecutionOptions {\n maxTraceSteps?: number;\n maxLineEvents?: number;\n maxSingleLineHits?: number;\n maxStoredEvents?: number;\n minimalTrace?: boolean;\n}\n\nconst EXECUTION_TIMEOUT_MS = 20_000;\nconst TRACING_TIMEOUT_MS = 25_000;\nconst INIT_TIMEOUT_MS = 25_000;\nconst MESSAGE_TIMEOUT_MS = 30_000;\nconst WORKER_READY_TIMEOUT_MS = 10_000;\n\nexport class JavaWorkerClient {\n private worker: Worker | null = null;\n private pendingMessages = new Map<MessageId, PendingMessage>();\n private messageId = 0;\n private isInitializing = false;\n private initPromise: Promise<InitResult> | null = null;\n private workerReadyPromise: Promise<void> | null = null;\n private workerReadyResolve: (() => void) | null = null;\n private workerReadyReject: ((error: Error) => void) | null = null;\n private readonly debug: boolean;\n\n constructor(private readonly options: JavaWorkerClientOptions) {\n this.debug = options.debug ?? process.env.NODE_ENV === 'development';\n }\n\n isSupported(): boolean {\n return typeof Worker !== 'undefined';\n }\n\n private getWorker(): Worker {\n if (this.worker) return this.worker;\n\n if (!this.isSupported()) {\n throw new Error('Web Workers are not supported in this environment');\n }\n\n this.workerReadyPromise = new Promise((resolve, reject) => {\n this.workerReadyResolve = resolve;\n this.workerReadyReject = (error: Error) => reject(error);\n });\n\n const workerUrl =\n this.debug && !this.options.workerUrl.includes('?')\n ? `${this.options.workerUrl}?dev=${Date.now()}`\n : this.options.workerUrl;\n\n this.worker = new Worker(workerUrl);\n this.worker.onmessage = (event: MessageEvent<WorkerMessage>) => {\n const { id, type, payload } = event.data;\n\n if (type === 'worker-ready') {\n this.workerReadyResolve?.();\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n return;\n }\n\n if (!id) return;\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n\n if (type === 'error') {\n pending.reject(new Error((payload as { error: string }).error));\n return;\n }\n\n pending.resolve(payload);\n };\n\n this.worker.onerror = (error) => {\n const workerError = new Error(error.message || 'Java worker error');\n this.workerReadyReject?.(workerError);\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n for (const [, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(workerError);\n }\n this.pendingMessages.clear();\n this.terminateAndReset(workerError);\n };\n\n return this.worker;\n }\n\n private async waitForWorkerReady(): Promise<void> {\n const readyPromise = this.workerReadyPromise;\n if (!readyPromise) return;\n\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n const timeoutError = new Error(\n `Java worker failed to initialize in time (${Math.round(WORKER_READY_TIMEOUT_MS / 1000)}s)`\n );\n this.terminateAndReset(timeoutError);\n reject(timeoutError);\n }, WORKER_READY_TIMEOUT_MS);\n\n readyPromise\n .then(() => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve();\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error instanceof Error ? error : new Error(String(error)));\n });\n });\n }\n\n private async sendMessage<T>(\n type: string,\n payload?: unknown,\n timeoutMs = MESSAGE_TIMEOUT_MS\n ): Promise<T> {\n const worker = this.getWorker();\n await this.waitForWorkerReady();\n const id = String(++this.messageId);\n\n return new Promise<T>((resolve, reject) => {\n this.pendingMessages.set(id, {\n resolve: resolve as (value: unknown) => void,\n reject,\n });\n\n const timeoutId = globalThis.setTimeout(() => {\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n pending.reject(new Error(`Worker request timed out: ${type}`));\n }, timeoutMs);\n\n const pending = this.pendingMessages.get(id);\n if (pending) pending.timeoutId = timeoutId;\n\n worker.postMessage({ id, type, payload });\n });\n }\n\n private async executeWithTimeout<T>(executor: () => Promise<T>, timeoutMs: number): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let settled = false;\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n this.terminateAndReset();\n reject(\n new Error(\n `Java execution timed out after ${Math.round(timeoutMs / 1000)} seconds.`\n )\n );\n }, timeoutMs);\n\n executor()\n .then((result) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve(result);\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error);\n });\n });\n }\n\n private terminateAndReset(reason: Error = new Error('Worker was terminated')): void {\n this.workerReadyReject?.(reason);\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n }\n this.initPromise = null;\n this.isInitializing = false;\n this.workerReadyPromise = null;\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n\n for (const [, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(reason);\n }\n this.pendingMessages.clear();\n }\n\n async init(): Promise<InitResult> {\n if (this.initPromise) return this.initPromise;\n if (this.isInitializing) {\n await new Promise((resolve) => globalThis.setTimeout(resolve, 100));\n return this.init();\n }\n\n this.isInitializing = true;\n this.initPromise = this.sendMessage<InitResult>('init', undefined, INIT_TIMEOUT_MS);\n try {\n return await this.initPromise;\n } catch (error) {\n this.initPromise = null;\n throw error;\n } finally {\n this.isInitializing = false;\n }\n }\n\n async executeWithTracing(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n options: JavaTraceExecutionOptions | undefined,\n executionStyle: JavaExecutionStyle\n ): Promise<JavaWorkerTraceResult> {\n await this.init();\n return this.executeWithTimeout(\n () =>\n this.sendMessage<JavaWorkerTraceResult>(\n 'execute-with-tracing',\n { code, functionName, inputs, options, executionStyle },\n TRACING_TIMEOUT_MS + 5_000\n ),\n TRACING_TIMEOUT_MS\n );\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n options: JavaTraceExecutionOptions | undefined,\n executionStyle: JavaExecutionStyle\n ): Promise<CodeExecutionResult> {\n const result = await this.executeWithTracing(code, functionName, inputs, options, executionStyle);\n if (!result.success) {\n return {\n success: false,\n output: null,\n error: result.error ?? 'Java execution failed',\n ...(result.errorLine !== undefined ? { errorLine: result.errorLine } : {}),\n consoleOutput: result.consoleOutput,\n };\n }\n return {\n success: true,\n output: result.output,\n consoleOutput: result.consoleOutput,\n };\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n options: JavaTraceExecutionOptions | undefined,\n executionStyle: JavaExecutionStyle\n ): Promise<CodeExecutionResult> {\n return this.executeCode(code, functionName, inputs, options, executionStyle);\n }\n\n terminate(): void {\n this.terminateAndReset();\n }\n}\n","import type {\n RuntimeClient,\n RuntimeExecutionStyle,\n TraceExecutionOptions,\n} from '../../harness-core/src/runtime-types';\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { buildJavaExecutionResult } from '../../harness-core/src/trace-adapters/java';\nimport { adaptJavaTraceExecutionResult } from '../../harness-core/src/trace-adapters/java';\nimport { assertRuntimeRequestSupported } from './runtime-capability-guards';\nimport { getLanguageRuntimeProfile } from './runtime-profiles';\nimport type { JavaExecutionStyle, JavaWorkerClient } from './java-worker-client';\n\nclass JavaRuntimeClient implements RuntimeClient {\n constructor(private readonly workerClient: JavaWorkerClient) {}\n\n async init(): Promise<{ success: boolean; loadTimeMs: number }> {\n return this.workerClient.init();\n }\n\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: TraceExecutionOptions,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<ExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('java'), {\n request: 'trace',\n executionStyle,\n functionName,\n });\n\n const rawResult = await this.workerClient.executeWithTracing(\n code,\n functionName ?? '',\n inputs,\n options,\n executionStyle as JavaExecutionStyle\n );\n\n if (!rawResult.success) {\n return {\n success: false,\n error: rawResult.error ?? 'Java tracing failed',\n ...(rawResult.errorLine !== undefined ? { errorLine: rawResult.errorLine } : {}),\n trace: [],\n executionTimeMs: rawResult.executionTimeMs,\n consoleOutput: rawResult.consoleOutput,\n ...(rawResult.traceLimitExceeded !== undefined\n ? { traceLimitExceeded: rawResult.traceLimitExceeded }\n : {}),\n ...(rawResult.timeoutReason ? { timeoutReason: rawResult.timeoutReason } : {}),\n lineEventCount: 0,\n traceStepCount: 0,\n };\n }\n\n const adapted = adaptJavaTraceExecutionResult(\n buildJavaExecutionResult(\n rawResult.output,\n rawResult.events,\n rawResult.executionTimeMs,\n rawResult.traceLimitExceeded,\n rawResult.timeoutReason,\n undefined,\n rawResult.sourceText,\n { outputIsSerialized: false }\n )\n );\n return {\n ...adapted,\n consoleOutput: rawResult.consoleOutput,\n executionTimeMs: rawResult.executionTimeMs,\n };\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('java'), {\n request: 'execute',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCode(\n code,\n functionName,\n inputs,\n undefined,\n executionStyle as JavaExecutionStyle\n );\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('java'), {\n request: 'interview',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCodeInterviewMode(\n code,\n functionName,\n inputs,\n undefined,\n executionStyle as JavaExecutionStyle\n );\n }\n}\n\nexport function createJavaRuntimeClient(workerClient: JavaWorkerClient): RuntimeClient {\n return new JavaRuntimeClient(workerClient);\n}\n","/**\n * Pyodide Worker Client\n * \n * TypeScript client for communicating with the Pyodide Web Worker.\n * Provides a promise-based API for executing Python code off the main thread.\n */\n\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\n\ntype MessageId = string;\nexport type ExecutionStyle = 'function' | 'solution-method' | 'ops-class';\n\nexport interface PyodideWorkerClientOptions {\n workerUrl: string;\n debug?: boolean;\n}\n\ninterface PendingMessage {\n resolve: (value: unknown) => void;\n reject: (error: Error) => void;\n timeoutId?: ReturnType<typeof globalThis.setTimeout>;\n}\n\ninterface WorkerMessage {\n id?: MessageId;\n type: string;\n payload?: unknown;\n}\n\ninterface InitResult {\n success: boolean;\n loadTimeMs: number;\n}\n\ninterface StatusResult {\n isReady: boolean;\n isLoading: boolean;\n}\n\n// Execution timeout in milliseconds for simple code execution (10 seconds)\nconst EXECUTION_TIMEOUT_MS = 10000;\n\n// Interview mode timeout - shorter, no detailed error info (5 seconds)\nconst INTERVIEW_MODE_TIMEOUT_MS = 5000;\n\n// Tracing timeout - longer because Python heuristic detection handles infinite loops\n// This is just a safety net for truly stuck executions\nconst TRACING_TIMEOUT_MS = 30000;\n\n// Initial Pyodide load timeout can be significantly higher on first boot/network-constrained setups\nconst INIT_TIMEOUT_MS = 120000;\n\n// Message timeout for non-execution operations (20 seconds)\nconst MESSAGE_TIMEOUT_MS = 20000;\n// Worker bootstrap timeout - prevents deadlock when worker never emits \"worker-ready\"\nconst WORKER_READY_TIMEOUT_MS = 10000;\n\nexport class PyodideWorkerClient {\n private worker: Worker | null = null;\n private pendingMessages = new Map<MessageId, PendingMessage>();\n private messageId = 0;\n private isInitializing = false;\n private initPromise: Promise<InitResult> | null = null;\n private workerReadyPromise: Promise<void> | null = null;\n private workerReadyResolve: (() => void) | null = null;\n private workerReadyReject: ((error: Error) => void) | null = null;\n private readonly debug: boolean;\n\n constructor(private readonly options: PyodideWorkerClientOptions) {\n this.debug = options.debug ?? process.env.NODE_ENV === 'development';\n }\n\n /**\n * Check if Web Workers are supported\n */\n isSupported(): boolean {\n return typeof Worker !== 'undefined';\n }\n\n /**\n * Get or create the worker instance\n */\n private getWorker(): Worker {\n if (this.worker) return this.worker;\n\n if (!this.isSupported()) {\n throw new Error('Web Workers are not supported in this environment');\n }\n\n // Create promise that resolves when worker signals it's ready\n this.workerReadyPromise = new Promise((resolve, reject) => {\n this.workerReadyResolve = resolve;\n this.workerReadyReject = (error: Error) => reject(error);\n });\n\n const workerUrl =\n this.debug && !this.options.workerUrl.includes('?')\n ? `${this.options.workerUrl}?dev=${Date.now()}`\n : this.options.workerUrl;\n this.worker = new Worker(workerUrl);\n \n this.worker.onmessage = (event: MessageEvent<WorkerMessage>) => {\n const { id, type, payload } = event.data;\n\n // Handle worker-ready signal\n if (type === 'worker-ready') {\n this.workerReadyResolve?.();\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n if (this.debug) console.log('[PyodideWorkerClient] worker-ready');\n return;\n }\n\n if (this.debug && !id) {\n console.log('[PyodideWorkerClient] event', { type, payload });\n }\n\n // Handle responses to our messages\n if (id) {\n const pending = this.pendingMessages.get(id);\n if (pending) {\n this.pendingMessages.delete(id);\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n \n if (type === 'error') {\n pending.reject(new Error((payload as { error: string }).error));\n } else {\n if (this.debug) console.log('[PyodideWorkerClient] recv', { id, type });\n pending.resolve(payload);\n }\n }\n }\n };\n\n this.worker.onerror = (error) => {\n console.error('[PyodideWorkerClient] Worker error:', error);\n const workerError = new Error('Worker error');\n this.workerReadyReject?.(workerError);\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n // Reject all pending messages and clear their timeouts\n for (const [id, pending] of this.pendingMessages) {\n if (pending.timeoutId) {\n globalThis.clearTimeout(pending.timeoutId);\n }\n pending.reject(workerError);\n this.pendingMessages.delete(id);\n }\n };\n\n return this.worker;\n }\n\n /**\n * Wait for worker bootstrap signal with timeout.\n * Guards against deadlocks when the worker script fails before posting \"worker-ready\".\n */\n private async waitForWorkerReady(): Promise<void> {\n const readyPromise = this.workerReadyPromise;\n if (!readyPromise) return;\n\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n const timeoutError = new Error(\n `Python worker failed to initialize in time (${Math.round(WORKER_READY_TIMEOUT_MS / 1000)}s)`\n );\n if (this.debug) {\n console.warn('[PyodideWorkerClient] worker-ready timeout', { timeoutMs: WORKER_READY_TIMEOUT_MS });\n }\n this.terminateAndReset(timeoutError);\n reject(timeoutError);\n }, WORKER_READY_TIMEOUT_MS);\n\n readyPromise\n .then(() => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve();\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error instanceof Error ? error : new Error(String(error)));\n });\n });\n }\n\n /**\n * Send a message to the worker and wait for a response\n */\n private async sendMessage<T>(type: string, payload?: unknown, timeoutMs: number = MESSAGE_TIMEOUT_MS): Promise<T> {\n const worker = this.getWorker();\n \n // Wait for worker to be ready before sending messages\n await this.waitForWorkerReady();\n \n const id = String(++this.messageId);\n\n return new Promise<T>((resolve, reject) => {\n this.pendingMessages.set(id, {\n resolve: resolve as (value: unknown) => void,\n reject,\n });\n\n if (this.debug) console.log('[PyodideWorkerClient] send', { id, type });\n\n const timeoutId = globalThis.setTimeout(() => {\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n if (this.debug) console.warn('[PyodideWorkerClient] timeout', { id, type });\n pending.reject(new Error(`Worker request timed out: ${type}`));\n }, timeoutMs);\n\n const pending = this.pendingMessages.get(id);\n if (pending) pending.timeoutId = timeoutId;\n\n worker.postMessage({ id, type, payload });\n });\n }\n\n /**\n * Execute code with a timeout - terminates worker if execution takes too long\n */\n private async executeWithTimeout<T>(\n executor: () => Promise<T>,\n timeoutMs: number = EXECUTION_TIMEOUT_MS\n ): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let settled = false;\n \n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n \n // Terminate the stuck worker and clear state\n if (this.debug) {\n console.warn('[PyodideWorkerClient] Execution timeout - terminating worker');\n }\n this.terminateAndReset();\n \n const seconds = Math.round(timeoutMs / 1000);\n reject(new Error(`Execution timed out (possible infinite loop). Code execution was stopped after ${seconds} seconds.`));\n }, timeoutMs);\n \n executor()\n .then((result) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve(result);\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error);\n });\n });\n }\n\n /**\n * Terminate the worker and reset state for recreation\n */\n private terminateAndReset(reason: Error = new Error('Worker was terminated')): void {\n this.workerReadyReject?.(reason);\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n }\n this.initPromise = null;\n this.isInitializing = false;\n this.workerReadyPromise = null;\n this.workerReadyResolve = null;\n \n // Reject all pending messages\n for (const [, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(reason);\n }\n this.pendingMessages.clear();\n }\n\n /**\n * Initialize Pyodide in the worker\n */\n async init(): Promise<InitResult> {\n // Return existing promise if already initializing\n if (this.initPromise) {\n return this.initPromise;\n }\n\n if (this.isInitializing) {\n // Wait for existing init to complete\n await new Promise((resolve) => setTimeout(resolve, 100));\n return this.init();\n }\n\n this.isInitializing = true;\n\n this.initPromise = (async () => {\n try {\n return await this.sendMessage<InitResult>('init', undefined, INIT_TIMEOUT_MS);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n\n const shouldRetry =\n message.includes('Worker request timed out: init') ||\n message.includes('Worker was terminated') ||\n message.includes('Worker error') ||\n message.includes('failed to initialize in time');\n\n if (!shouldRetry) {\n throw error;\n }\n\n if (this.debug) {\n console.warn('[PyodideWorkerClient] init failed, resetting worker and retrying once', { message });\n }\n\n this.terminateAndReset();\n return this.sendMessage<InitResult>('init', undefined, INIT_TIMEOUT_MS);\n }\n })();\n \n try {\n const result = await this.initPromise;\n return result;\n } catch (error) {\n this.initPromise = null;\n throw error;\n } finally {\n this.isInitializing = false;\n }\n }\n\n /**\n * Execute Python code with tracing for step-by-step visualization\n * @param options.maxLineEvents - Max line events before abort (for complexity analysis, use higher values)\n */\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: {\n maxTraceSteps?: number;\n maxLineEvents?: number;\n maxSingleLineHits?: number;\n maxStoredEvents?: number;\n minimalTrace?: boolean;\n },\n executionStyle: ExecutionStyle = 'function'\n ): Promise<ExecutionResult> {\n // Ensure Pyodide is initialized\n await this.init();\n \n // Use longer timeout for tracing - Python heuristic detection handles infinite loops\n try {\n return await this.executeWithTimeout(\n () => this.sendMessage<ExecutionResult>('execute-with-tracing', {\n code,\n functionName,\n inputs,\n executionStyle,\n options,\n }, TRACING_TIMEOUT_MS + 5000), // Message timeout slightly longer than execution timeout\n TRACING_TIMEOUT_MS\n );\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n const isClientTimeout =\n errorMessage.includes('Execution timed out') ||\n errorMessage.includes('possible infinite loop');\n\n if (isClientTimeout) {\n return {\n success: false,\n error: errorMessage,\n trace: [],\n executionTimeMs: TRACING_TIMEOUT_MS,\n consoleOutput: [],\n traceLimitExceeded: true,\n timeoutReason: 'client-timeout',\n lineEventCount: 0,\n traceStepCount: 0,\n };\n }\n\n throw error;\n }\n }\n\n /**\n * Execute Python code without tracing (for running tests)\n */\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: ExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n // Ensure Pyodide is initialized\n await this.init();\n \n return this.executeWithTimeout(\n () => this.sendMessage<CodeExecutionResult>('execute-code', {\n code,\n functionName,\n inputs,\n executionStyle,\n }, EXECUTION_TIMEOUT_MS + 5000),\n EXECUTION_TIMEOUT_MS\n );\n }\n\n /**\n * Execute Python code in interview mode - 5 second timeout, generic error messages\n * Does not reveal which line caused the timeout\n */\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: ExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n // Ensure Pyodide is initialized\n await this.init();\n \n try {\n const result = await this.executeWithTimeout(\n () => this.sendMessage<CodeExecutionResult>('execute-code-interview', {\n code,\n functionName,\n inputs,\n executionStyle,\n }, INTERVIEW_MODE_TIMEOUT_MS + 2000),\n INTERVIEW_MODE_TIMEOUT_MS\n );\n \n // Sanitize error messages in interview mode - don't reveal line numbers for timeouts\n if (!result.success && result.error) {\n // Keep basic error types but remove line-specific info for timeouts\n const normalizedError = result.error.toLowerCase();\n const isTimeoutOrResourceLimit =\n normalizedError.includes('timed out') ||\n normalizedError.includes('execution timeout') ||\n normalizedError.includes('infinite loop') ||\n normalizedError.includes('interview_guard_triggered') ||\n normalizedError.includes('memory-limit') ||\n normalizedError.includes('line-limit') ||\n normalizedError.includes('single-line-limit') ||\n normalizedError.includes('recursion-limit');\n\n if (isTimeoutOrResourceLimit) {\n return {\n success: false,\n output: null,\n error: 'Time Limit Exceeded',\n consoleOutput: result.consoleOutput ?? [],\n };\n }\n }\n \n return result;\n } catch (error) {\n // Handle timeout from executeWithTimeout\n const errorMsg = error instanceof Error ? error.message : String(error);\n if (errorMsg.includes('timed out') || errorMsg.includes('Execution timeout')) {\n return {\n success: false,\n output: null,\n error: 'Time Limit Exceeded',\n consoleOutput: [],\n };\n }\n return {\n success: false,\n output: null,\n error: errorMsg,\n consoleOutput: [],\n };\n }\n }\n\n /**\n * Check the status of the worker\n */\n async getStatus(): Promise<StatusResult> {\n return this.sendMessage<StatusResult>('status');\n }\n\n /**\n * Analyze Python code using AST (off main thread)\n * Returns CodeFacts with semantic information about the code\n */\n async analyzeCode(code: string): Promise<unknown> {\n // Ensure Pyodide is initialized\n await this.init();\n \n // Use a shorter timeout for analysis (5 seconds should be plenty)\n return this.sendMessage<unknown>('analyze-code', { code }, 5000);\n }\n\n /**\n * Terminate the worker and clean up resources\n */\n terminate(): void {\n this.terminateAndReset();\n }\n}\n\n/**\n * Check if the worker client is supported\n */\nexport function isWorkerSupported(): boolean {\n return typeof Worker !== 'undefined';\n}\n","import type { ExecutionStyle, PyodideWorkerClient } from './pyodide-worker-client';\nimport type {\n RuntimeClient,\n RuntimeExecutionStyle,\n TraceExecutionOptions,\n} from '../../harness-core/src/runtime-types';\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { adaptPythonTraceExecutionResult } from '../../harness-core/src/trace-adapters/python';\nimport { assertRuntimeRequestSupported } from './runtime-capability-guards';\nimport { getLanguageRuntimeProfile } from './runtime-profiles';\n\nclass PythonRuntimeClient implements RuntimeClient {\n constructor(private readonly workerClient: PyodideWorkerClient) {}\n\n async init(): Promise<{ success: boolean; loadTimeMs: number }> {\n return this.workerClient.init();\n }\n\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: TraceExecutionOptions,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<ExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('python'), {\n request: 'trace',\n executionStyle,\n functionName,\n });\n const rawResult = await this.workerClient.executeWithTracing(\n code,\n functionName,\n inputs,\n options,\n executionStyle as ExecutionStyle\n );\n return adaptPythonTraceExecutionResult(rawResult);\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('python'), {\n request: 'execute',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCode(\n code,\n functionName,\n inputs,\n executionStyle as ExecutionStyle\n );\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('python'), {\n request: 'interview',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCodeInterviewMode(\n code,\n functionName,\n inputs,\n executionStyle as ExecutionStyle\n );\n }\n}\n\nexport function createPythonRuntimeClient(workerClient: PyodideWorkerClient): RuntimeClient {\n return new PythonRuntimeClient(workerClient);\n}\n","const DEFAULT_ASSET_BASE_URL = '/workers';\n\nexport interface BrowserHarnessAssets {\n pythonWorker: string;\n pythonRuntimeCore: string;\n pythonSnippets: string;\n javascriptWorker: string;\n javaWorker: string;\n typescriptCompiler: string;\n}\n\nexport type BrowserHarnessAssetOverrides = Partial<BrowserHarnessAssets>;\n\nexport const DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS: Readonly<BrowserHarnessAssets> = Object.freeze({\n pythonWorker: 'pyodide-worker.js',\n pythonRuntimeCore: 'pyodide/runtime-core.js',\n pythonSnippets: 'generated-python-harness-snippets.js',\n javascriptWorker: 'javascript-worker.js',\n javaWorker: 'java-worker.js',\n typescriptCompiler: 'vendor/typescript.js',\n});\n\nfunction isExplicitAssetPath(pathname: string): boolean {\n return (\n pathname.startsWith('/') ||\n pathname.startsWith('./') ||\n pathname.startsWith('../') ||\n pathname.startsWith('http://') ||\n pathname.startsWith('https://') ||\n pathname.startsWith('data:') ||\n pathname.startsWith('blob:')\n );\n}\n\nfunction stripTrailingSlash(value: string): string {\n return value.replace(/\\/+$/, '');\n}\n\nfunction trimLeadingSlash(value: string): string {\n return value.replace(/^\\/+/, '');\n}\n\nfunction resolveAssetPath(baseUrl: string, pathname: string): string {\n if (isExplicitAssetPath(pathname)) {\n return pathname;\n }\n const normalizedBase = stripTrailingSlash(baseUrl || DEFAULT_ASSET_BASE_URL);\n const normalizedPath = trimLeadingSlash(pathname);\n return `${normalizedBase}/${normalizedPath}`;\n}\n\nexport function resolveBrowserHarnessAssets(options: {\n assetBaseUrl?: string;\n assets?: BrowserHarnessAssetOverrides;\n} = {}): BrowserHarnessAssets {\n const assetBaseUrl = options.assetBaseUrl ?? DEFAULT_ASSET_BASE_URL;\n const assets = options.assets ?? {};\n return {\n pythonWorker: resolveAssetPath(assetBaseUrl, assets.pythonWorker ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.pythonWorker),\n pythonRuntimeCore: resolveAssetPath(\n assetBaseUrl,\n assets.pythonRuntimeCore ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.pythonRuntimeCore\n ),\n pythonSnippets: resolveAssetPath(assetBaseUrl, assets.pythonSnippets ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.pythonSnippets),\n javascriptWorker: resolveAssetPath(\n assetBaseUrl,\n assets.javascriptWorker ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.javascriptWorker\n ),\n javaWorker: resolveAssetPath(assetBaseUrl, assets.javaWorker ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.javaWorker),\n typescriptCompiler: resolveAssetPath(\n assetBaseUrl,\n assets.typescriptCompiler ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.typescriptCompiler\n ),\n };\n}\n","import type {\n Language,\n LanguageRuntimeProfile,\n RuntimeClient,\n} from '../../harness-core/src/runtime-types';\nimport { JavaScriptWorkerClient } from './javascript-worker-client';\nimport { createJavaScriptRuntimeClient } from './javascript-runtime-client';\nimport { JavaWorkerClient } from './java-worker-client';\nimport { createJavaRuntimeClient } from './java-runtime-client';\nimport { PyodideWorkerClient } from './pyodide-worker-client';\nimport { createPythonRuntimeClient } from './python-runtime-client';\nimport {\n DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS,\n resolveBrowserHarnessAssets,\n type BrowserHarnessAssets,\n type BrowserHarnessAssetOverrides,\n} from './runtime-assets';\nimport {\n getLanguageRuntimeProfile,\n getSupportedLanguageProfiles,\n isLanguageSupported,\n SUPPORTED_LANGUAGES,\n} from './runtime-profiles';\n\nexport interface CreateBrowserHarnessOptions {\n assetBaseUrl?: string;\n assets?: BrowserHarnessAssetOverrides;\n debug?: boolean;\n}\n\nexport interface BrowserHarness {\n readonly assets: BrowserHarnessAssets;\n readonly supportedLanguages: readonly Language[];\n getClient(language: Language): RuntimeClient;\n getProfile(language: Language): LanguageRuntimeProfile;\n getSupportedLanguageProfiles(): readonly LanguageRuntimeProfile[];\n isLanguageSupported(language: Language): boolean;\n disposeLanguage(language: Language): void;\n dispose(): void;\n}\n\nclass BrowserHarnessRuntime implements BrowserHarness {\n readonly assets: BrowserHarnessAssets;\n readonly supportedLanguages = SUPPORTED_LANGUAGES;\n\n private readonly pythonWorkerClient: PyodideWorkerClient;\n private readonly javaScriptWorkerClient: JavaScriptWorkerClient;\n private readonly javaWorkerClient: JavaWorkerClient;\n private readonly clients: Record<Language, RuntimeClient>;\n\n constructor(options: CreateBrowserHarnessOptions = {}) {\n this.assets = resolveBrowserHarnessAssets(options);\n this.pythonWorkerClient = new PyodideWorkerClient({\n workerUrl: this.assets.pythonWorker,\n debug: options.debug,\n });\n this.javaScriptWorkerClient = new JavaScriptWorkerClient({\n workerUrl: this.assets.javascriptWorker,\n debug: options.debug,\n });\n this.javaWorkerClient = new JavaWorkerClient({\n workerUrl: this.assets.javaWorker,\n debug: options.debug,\n });\n this.clients = {\n python: createPythonRuntimeClient(this.pythonWorkerClient),\n javascript: createJavaScriptRuntimeClient('javascript', this.javaScriptWorkerClient),\n typescript: createJavaScriptRuntimeClient('typescript', this.javaScriptWorkerClient),\n java: createJavaRuntimeClient(this.javaWorkerClient),\n };\n }\n\n getClient(language: Language): RuntimeClient {\n const client = this.clients[language];\n if (!client) {\n throw new Error(`Runtime for language \"${language}\" is not implemented yet.`);\n }\n return client;\n }\n\n getProfile(language: Language): LanguageRuntimeProfile {\n return getLanguageRuntimeProfile(language);\n }\n\n getSupportedLanguageProfiles(): readonly LanguageRuntimeProfile[] {\n return getSupportedLanguageProfiles();\n }\n\n isLanguageSupported(language: Language): boolean {\n return isLanguageSupported(language);\n }\n\n disposeLanguage(language: Language): void {\n if (language === 'python') {\n this.pythonWorkerClient.terminate();\n return;\n }\n if (language === 'java') {\n this.javaWorkerClient.terminate();\n return;\n }\n this.javaScriptWorkerClient.terminate();\n }\n\n dispose(): void {\n this.pythonWorkerClient.terminate();\n this.javaScriptWorkerClient.terminate();\n this.javaWorkerClient.terminate();\n }\n}\n\nexport function createBrowserHarness(options: CreateBrowserHarnessOptions = {}): BrowserHarness {\n return new BrowserHarnessRuntime(options);\n}\n\nexport {\n DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS,\n resolveBrowserHarnessAssets,\n type BrowserHarnessAssets,\n type BrowserHarnessAssetOverrides,\n};\n","/**\n * AUTO-GENERATED FILE. DO NOT EDIT MANUALLY.\n *\n * Source: packages/harness-python/src/python-harness-template.ts\n * Generator: scripts/generate-python-harness-artifacts.ts\n */\n\n// @ts-nocheck\n\nexport function toPythonLiteral(value){if(value===null||value===void 0){return\"None\"}if(typeof value===\"boolean\"){return value?\"True\":\"False\"}if(typeof value===\"number\"){return String(value)}if(typeof value===\"string\"){return JSON.stringify(value)}if(Array.isArray(value)){return\"[\"+value.map(toPythonLiteral).join(\", \")+\"]\"}if(typeof value===\"object\"){const entries=Object.entries(value).map(([k,v])=>`${JSON.stringify(k)}: ${toPythonLiteral(v)}`).join(\", \");return\"{\"+entries+\"}\"}return JSON.stringify(value)}\n\nexport const PYTHON_CLASS_DEFINITIONS = \"\\nclass TreeNode:\\n def __init__(self, val=0, left=None, right=None):\\n self.val = val\\n self.value = val\\n self.left = left\\n self.right = right\\n def __getitem__(self, key):\\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', None))\\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', None))\\n if key == 'left': return self.left\\n if key == 'right': return self.right\\n raise KeyError(key)\\n def get(self, key, default=None):\\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', default))\\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', default))\\n if key == 'left': return self.left\\n if key == 'right': return self.right\\n return default\\n def __repr__(self):\\n return f\\\"TreeNode({getattr(self, 'val', getattr(self, 'value', None))})\\\"\\n\\nclass ListNode:\\n def __init__(self, val=0, next=None):\\n self.val = val\\n self.value = val\\n self.next = next\\n def __getitem__(self, key):\\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', None))\\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', None))\\n if key == 'next': return self.next\\n raise KeyError(key)\\n def get(self, key, default=None):\\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', default))\\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', default))\\n if key == 'next': return self.next\\n return default\\n def __repr__(self):\\n return f\\\"ListNode({getattr(self, 'val', getattr(self, 'value', None))})\\\"\\n\";\n\nexport const PYTHON_CONVERSION_HELPERS = \"\\ndef _ensure_node_value_aliases(node):\\n if node is None:\\n return node\\n try:\\n has_val = hasattr(node, 'val')\\n has_value = hasattr(node, 'value')\\n if has_value and not has_val:\\n try:\\n setattr(node, 'val', getattr(node, 'value'))\\n except Exception:\\n pass\\n elif has_val and not has_value:\\n try:\\n setattr(node, 'value', getattr(node, 'val'))\\n except Exception:\\n pass\\n except Exception:\\n pass\\n return node\\n\\ndef _dict_to_tree(d):\\n if d is None:\\n return None\\n if not isinstance(d, dict):\\n return d\\n if 'val' not in d and 'value' not in d:\\n return d\\n node = TreeNode(d.get('val', d.get('value', 0)))\\n _ensure_node_value_aliases(node)\\n node.left = _dict_to_tree(d.get('left'))\\n node.right = _dict_to_tree(d.get('right'))\\n return node\\n\\ndef _dict_to_list(d, _refs=None):\\n if _refs is None:\\n _refs = {}\\n if d is None:\\n return None\\n if not isinstance(d, dict):\\n return d\\n if '__ref__' in d:\\n return _refs.get(d.get('__ref__'))\\n if 'val' not in d and 'value' not in d:\\n return d\\n node = ListNode(d.get('val', d.get('value', 0)))\\n _ensure_node_value_aliases(node)\\n node_id = d.get('__id__')\\n if isinstance(node_id, str) and node_id:\\n _refs[node_id] = node\\n node.next = _dict_to_list(d.get('next'), _refs)\\n return node\\n\";\n\nexport const PYTHON_TRACE_SERIALIZE_FUNCTION = \"\\n# Sentinel to mark skipped values (functions, etc.) - distinct from None\\n_SKIP_SENTINEL = \\\"__TRACECODE_SKIP__\\\"\\n_MAX_SERIALIZE_DEPTH = 48\\n_MAX_OBJECT_FIELDS = 32\\n\\ndef _serialize(obj, depth=0, node_refs=None):\\n if node_refs is None:\\n node_refs = {}\\n if isinstance(obj, (bool, int, str, type(None))):\\n return obj\\n elif isinstance(obj, float):\\n if not math.isfinite(obj):\\n if math.isnan(obj):\\n return \\\"NaN\\\"\\n return \\\"Infinity\\\" if obj > 0 else \\\"-Infinity\\\"\\n return obj\\n if depth > _MAX_SERIALIZE_DEPTH:\\n return \\\"<max depth>\\\"\\n elif isinstance(obj, (list, tuple)):\\n return [_serialize(x, depth + 1, node_refs) for x in obj]\\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\\n return [_serialize(x, depth + 1, node_refs) for x in obj]\\n elif isinstance(obj, dict):\\n return {str(k): _serialize(v, depth + 1, node_refs) for k, v in obj.items()}\\n elif isinstance(obj, set):\\n # Use try/except for sorting to handle heterogeneous sets\\n try:\\n sorted_vals = sorted([_serialize(x, depth + 1, node_refs) for x in obj])\\n except TypeError:\\n sorted_vals = [_serialize(x, depth + 1, node_refs) for x in obj]\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": sorted_vals}\\n elif isinstance(obj, TreeNode):\\n obj_ref = id(obj)\\n if obj_ref in node_refs:\\n return {\\\"__ref__\\\": node_refs[obj_ref]}\\n node_id = f\\\"tree-{obj_ref}\\\"\\n node_refs[obj_ref] = node_id\\n result = {\\n \\\"__type__\\\": \\\"TreeNode\\\",\\n \\\"__id__\\\": node_id,\\n \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\\n }\\n if hasattr(obj, 'left'):\\n result[\\\"left\\\"] = _serialize(obj.left, depth + 1, node_refs)\\n if hasattr(obj, 'right'):\\n result[\\\"right\\\"] = _serialize(obj.right, depth + 1, node_refs)\\n return result\\n elif isinstance(obj, ListNode):\\n obj_ref = id(obj)\\n if obj_ref in node_refs:\\n return {\\\"__ref__\\\": node_refs[obj_ref]}\\n node_id = f\\\"list-{obj_ref}\\\"\\n node_refs[obj_ref] = node_id\\n result = {\\n \\\"__type__\\\": \\\"ListNode\\\",\\n \\\"__id__\\\": node_id,\\n \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\\n }\\n result[\\\"next\\\"] = _serialize(obj.next, depth + 1, node_refs)\\n return result\\n elif hasattr(obj, '__dict__'):\\n obj_ref = id(obj)\\n if obj_ref in node_refs:\\n return {\\\"__ref__\\\": node_refs[obj_ref]}\\n node_id = f\\\"object-{obj_ref}\\\"\\n node_refs[obj_ref] = node_id\\n class_name = getattr(getattr(obj, '__class__', None), '__name__', 'object')\\n result = {\\n \\\"__type__\\\": \\\"object\\\",\\n \\\"__class__\\\": class_name,\\n \\\"__id__\\\": node_id,\\n }\\n try:\\n raw_fields = getattr(obj, '__dict__', None)\\n except Exception:\\n raw_fields = None\\n if isinstance(raw_fields, dict):\\n added = 0\\n for key, value in raw_fields.items():\\n key_str = str(key)\\n if key_str.startswith('_'):\\n continue\\n if callable(value):\\n continue\\n result[key_str] = _serialize(value, depth + 1, node_refs)\\n added += 1\\n if added >= _MAX_OBJECT_FIELDS:\\n result[\\\"__truncated__\\\"] = True\\n break\\n return result\\n elif callable(obj):\\n # Skip functions entirely - return sentinel\\n return _SKIP_SENTINEL\\n else:\\n repr_str = repr(obj)\\n # Filter out function-like representations (e.g., <function foo at 0x...>)\\n if repr_str.startswith('<') and repr_str.endswith('>'):\\n return _SKIP_SENTINEL\\n return repr_str\\n\";\n\nexport const PYTHON_EXECUTE_SERIALIZE_FUNCTION = \"\\n_MAX_SERIALIZE_DEPTH = 48\\n\\ndef _serialize(obj, depth=0):\\n if isinstance(obj, (bool, int, str, type(None))):\\n return obj\\n elif isinstance(obj, float):\\n if not math.isfinite(obj):\\n if math.isnan(obj):\\n return \\\"NaN\\\"\\n return \\\"Infinity\\\" if obj > 0 else \\\"-Infinity\\\"\\n return obj\\n if depth > _MAX_SERIALIZE_DEPTH:\\n return \\\"<max depth>\\\"\\n elif isinstance(obj, (list, tuple)):\\n return [_serialize(x, depth + 1) for x in obj]\\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\\n return [_serialize(x, depth + 1) for x in obj]\\n elif isinstance(obj, dict):\\n return {str(k): _serialize(v, depth + 1) for k, v in obj.items()}\\n elif isinstance(obj, set):\\n try:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": sorted([_serialize(x, depth + 1) for x in obj])}\\n except TypeError:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": [_serialize(x, depth + 1) for x in obj]}\\n elif isinstance(obj, TreeNode):\\n result = {\\\"__type__\\\": \\\"TreeNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\\n if hasattr(obj, 'left'):\\n result[\\\"left\\\"] = _serialize(obj.left, depth + 1)\\n if hasattr(obj, 'right'):\\n result[\\\"right\\\"] = _serialize(obj.right, depth + 1)\\n return result\\n elif isinstance(obj, ListNode):\\n result = {\\\"__type__\\\": \\\"ListNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\\n result[\\\"next\\\"] = _serialize(obj.next, depth + 1)\\n return result\\n elif callable(obj):\\n return None\\n else:\\n repr_str = repr(obj)\\n if repr_str.startswith('<') and repr_str.endswith('>'):\\n return None\\n return repr_str\\n\";\n\nexport const PYTHON_PRACTICE_MATERIALIZE_SERIALIZE_FUNCTION = \"\\ndef _serialize(obj, depth=0, state=None):\\n if state is None:\\n state = {\\\"nodes\\\": 0, \\\"seen\\\": set()}\\n if depth > 64:\\n return \\\"__MAX_DEPTH__\\\"\\n if isinstance(obj, (int, float, str, bool, type(None))):\\n return obj\\n\\n state[\\\"nodes\\\"] += 1\\n if state[\\\"nodes\\\"] > 600:\\n return \\\"__MAX_NODES__\\\"\\n\\n if isinstance(obj, (list, tuple)):\\n return [_serialize(x, depth + 1, state) for x in obj]\\n elif isinstance(obj, dict):\\n return {str(k): _serialize(v, depth + 1, state) for k, v in obj.items()}\\n elif isinstance(obj, set):\\n serialized = [_serialize(x, depth + 1, state) for x in obj]\\n try:\\n serialized = sorted(serialized)\\n except TypeError:\\n pass\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": serialized}\\n elif (hasattr(obj, 'val') or hasattr(obj, 'value')) and (hasattr(obj, 'left') or hasattr(obj, 'right')):\\n obj_id = id(obj)\\n if obj_id in state[\\\"seen\\\"]:\\n return \\\"__CYCLE__\\\"\\n state[\\\"seen\\\"].add(obj_id)\\n result = {\\\"__type__\\\": \\\"TreeNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, state)}\\n if hasattr(obj, 'left'):\\n result[\\\"left\\\"] = _serialize(obj.left, depth + 1, state)\\n if hasattr(obj, 'right'):\\n result[\\\"right\\\"] = _serialize(obj.right, depth + 1, state)\\n state[\\\"seen\\\"].remove(obj_id)\\n return result\\n elif (hasattr(obj, 'val') or hasattr(obj, 'value')) and hasattr(obj, 'next'):\\n obj_id = id(obj)\\n if obj_id in state[\\\"seen\\\"]:\\n return \\\"__CYCLE__\\\"\\n state[\\\"seen\\\"].add(obj_id)\\n result = {\\\"__type__\\\": \\\"ListNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, state)}\\n result[\\\"next\\\"] = _serialize(obj.next, depth + 1, state)\\n state[\\\"seen\\\"].remove(obj_id)\\n return result\\n else:\\n return repr(obj)\\n\";\n\nexport const PYTHON_INTERVIEW_MATERIALIZE_SERIALIZE_FUNCTION = \"\\ndef _serialize(obj, depth=0):\\n if depth > 10:\\n return \\\"<max depth>\\\"\\n if isinstance(obj, (int, float, str, bool, type(None))):\\n return obj\\n elif isinstance(obj, (list, tuple)):\\n return [_serialize(x, depth + 1) for x in obj]\\n elif isinstance(obj, dict):\\n return {str(k): _serialize(v, depth + 1) for k, v in obj.items()}\\n elif isinstance(obj, set):\\n try:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": sorted([_serialize(x, depth + 1) for x in obj])}\\n except TypeError:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": [_serialize(x, depth + 1) for x in obj]}\\n elif isinstance(obj, TreeNode):\\n result = {\\\"__type__\\\": \\\"TreeNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', None), depth + 1)}\\n if hasattr(obj, 'left'):\\n result[\\\"left\\\"] = _serialize(obj.left, depth + 1)\\n if hasattr(obj, 'right'):\\n result[\\\"right\\\"] = _serialize(obj.right, depth + 1)\\n return result\\n elif isinstance(obj, ListNode):\\n result = {\\\"__type__\\\": \\\"ListNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', None), depth + 1)}\\n result[\\\"next\\\"] = _serialize(obj.next, depth + 1)\\n return result\\n else:\\n return repr(obj)\\n\";\n\nexport const PYTHON_SERIALIZE_FUNCTION = \"\\n_MAX_SERIALIZE_DEPTH = 48\\n\\ndef _serialize(obj, depth=0):\\n if isinstance(obj, (bool, int, str, type(None))):\\n return obj\\n elif isinstance(obj, float):\\n if not math.isfinite(obj):\\n if math.isnan(obj):\\n return \\\"NaN\\\"\\n return \\\"Infinity\\\" if obj > 0 else \\\"-Infinity\\\"\\n return obj\\n if depth > _MAX_SERIALIZE_DEPTH:\\n return \\\"<max depth>\\\"\\n elif isinstance(obj, (list, tuple)):\\n return [_serialize(x, depth + 1) for x in obj]\\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\\n return [_serialize(x, depth + 1) for x in obj]\\n elif isinstance(obj, dict):\\n return {str(k): _serialize(v, depth + 1) for k, v in obj.items()}\\n elif isinstance(obj, set):\\n try:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": sorted([_serialize(x, depth + 1) for x in obj])}\\n except TypeError:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": [_serialize(x, depth + 1) for x in obj]}\\n elif isinstance(obj, TreeNode):\\n result = {\\\"__type__\\\": \\\"TreeNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\\n if hasattr(obj, 'left'):\\n result[\\\"left\\\"] = _serialize(obj.left, depth + 1)\\n if hasattr(obj, 'right'):\\n result[\\\"right\\\"] = _serialize(obj.right, depth + 1)\\n return result\\n elif isinstance(obj, ListNode):\\n result = {\\\"__type__\\\": \\\"ListNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\\n result[\\\"next\\\"] = _serialize(obj.next, depth + 1)\\n return result\\n elif callable(obj):\\n return None\\n else:\\n repr_str = repr(obj)\\n if repr_str.startswith('<') and repr_str.endswith('>'):\\n return None\\n return repr_str\\n\";\n","/**\n * Python Harness Code\n *\n * Shared Python harness helpers for scripts and Node-side validation paths.\n *\n * Canonical source:\n * - packages/harness-python/src/python-harness-template.ts\n *\n * Generated artifacts (via scripts/generate-python-harness-artifacts.ts):\n * - packages/harness-python/src/generated/python-harness-snippets.ts (consumed here)\n * - workers/python/generated-python-harness-snippets.js\n *\n * Note: workers/python/pyodide-worker.js still contains runtime-specific embedded\n * harness code. Keep it aligned via:\n * pnpm test:python-harness-sync\n */\n\nimport {\n toPythonLiteral,\n PYTHON_CLASS_DEFINITIONS,\n PYTHON_CONVERSION_HELPERS,\n PYTHON_TRACE_SERIALIZE_FUNCTION,\n PYTHON_EXECUTE_SERIALIZE_FUNCTION,\n PYTHON_PRACTICE_MATERIALIZE_SERIALIZE_FUNCTION,\n PYTHON_INTERVIEW_MATERIALIZE_SERIALIZE_FUNCTION,\n PYTHON_SERIALIZE_FUNCTION,\n} from './generated/python-harness-snippets';\n\nexport {\n toPythonLiteral,\n PYTHON_CLASS_DEFINITIONS,\n PYTHON_CONVERSION_HELPERS,\n PYTHON_TRACE_SERIALIZE_FUNCTION,\n PYTHON_EXECUTE_SERIALIZE_FUNCTION,\n PYTHON_PRACTICE_MATERIALIZE_SERIALIZE_FUNCTION,\n PYTHON_INTERVIEW_MATERIALIZE_SERIALIZE_FUNCTION,\n PYTHON_SERIALIZE_FUNCTION,\n};\n\nexport function identifyConversions(inputs: Record<string, unknown>): {\n treeKeys: string[];\n listKeys: string[];\n} {\n const treeKeys: string[] = [];\n const listKeys: string[] = [];\n \n for (const [key, value] of Object.entries(inputs)) {\n if (\n value &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n ('val' in (value as Record<string, unknown>) || 'value' in (value as Record<string, unknown>))\n ) {\n const obj = value as Record<string, unknown>;\n const hasLeft = 'left' in obj;\n const hasRight = 'right' in obj;\n const hasNext = 'next' in obj;\n \n if (hasLeft || hasRight) {\n treeKeys.push(key);\n } else if (hasNext) {\n listKeys.push(key);\n } else {\n // Default to tree for backwards compatibility (just 'val')\n treeKeys.push(key);\n }\n }\n }\n \n return { treeKeys, listKeys };\n}\n\n/**\n * Generate Python code for converting tree/list inputs.\n */\nexport function generateConversionCode(inputs: Record<string, unknown>): string {\n const { treeKeys, listKeys } = identifyConversions(inputs);\n \n const lines: string[] = [];\n \n for (const key of treeKeys) {\n lines.push(`${key} = _dict_to_tree(${key})`);\n }\n \n for (const key of listKeys) {\n lines.push(`${key} = _dict_to_list(${key})`);\n }\n \n return lines.join('\\n');\n}\n\n/**\n * Generate Python code for setting up inputs.\n */\nexport function generateInputSetup(inputs: Record<string, unknown>): string {\n return Object.entries(inputs)\n .map(([key, value]) => `${key} = ${toPythonLiteral(value)}`)\n .join('\\n');\n}\n\n/**\n * Generate a complete Python script for running a solution.\n * This is used by the validation script to run solutions via subprocess.\n */\nexport function generateSolutionScript(\n solutionCode: string,\n functionName: string,\n inputs: Record<string, unknown>\n): string {\n const inputSetup = generateInputSetup(inputs);\n const conversionCode = generateConversionCode(inputs);\n const paramList = Object.keys(inputs)\n .map((key) => `${key}=${key}`)\n .join(', ');\n \n return `\nimport json\nimport sys\nfrom typing import *\n\n${PYTHON_CLASS_DEFINITIONS}\n\n${PYTHON_CONVERSION_HELPERS}\n\n${PYTHON_SERIALIZE_FUNCTION}\n\n# Solution code\n${solutionCode}\n\n# Set up inputs\n${inputSetup}\n\n# Convert tree/list inputs\n${conversionCode}\n\n# Run the function\ntry:\n _result = ${functionName}(${paramList})\n print(json.dumps({\"success\": True, \"output\": _serialize(_result)}))\nexcept Exception as e:\n print(json.dumps({\"success\": False, \"error\": f\"{type(e).__name__}: {str(e)}\"}))\n`;\n}\n","/**\n * Canonical Python Harness Template\n *\n * This file is the single source of truth for shared harness snippets.\n * Generated artifacts:\n * - packages/harness-python/src/generated/python-harness-snippets.ts\n * - workers/python/generated-python-harness-snippets.js\n */\n\n/**\n * Convert a JavaScript value to a Python literal string.\n * Handles null -> None, booleans -> True/False, and nested structures.\n */\nexport function templateToPythonLiteral(value: unknown): string {\n if (value === null || value === undefined) {\n return 'None';\n }\n if (typeof value === 'boolean') {\n return value ? 'True' : 'False';\n }\n if (typeof value === 'number') {\n return String(value);\n }\n if (typeof value === 'string') {\n return JSON.stringify(value);\n }\n if (Array.isArray(value)) {\n return '[' + value.map(templateToPythonLiteral).join(', ') + ']';\n }\n if (typeof value === 'object') {\n const entries = Object.entries(value as Record<string, unknown>)\n .map(([k, v]) => `${JSON.stringify(k)}: ${templateToPythonLiteral(v)}`)\n .join(', ');\n return '{' + entries + '}';\n }\n return JSON.stringify(value);\n}\n\n/**\n * Python class definitions for TreeNode and ListNode.\n * These must match the worker definitions.\n */\nexport const TEMPLATE_PYTHON_CLASS_DEFINITIONS = `\nclass TreeNode:\n def __init__(self, val=0, left=None, right=None):\n self.val = val\n self.value = val\n self.left = left\n self.right = right\n def __getitem__(self, key):\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', None))\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', None))\n if key == 'left': return self.left\n if key == 'right': return self.right\n raise KeyError(key)\n def get(self, key, default=None):\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', default))\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', default))\n if key == 'left': return self.left\n if key == 'right': return self.right\n return default\n def __repr__(self):\n return f\"TreeNode({getattr(self, 'val', getattr(self, 'value', None))})\"\n\nclass ListNode:\n def __init__(self, val=0, next=None):\n self.val = val\n self.value = val\n self.next = next\n def __getitem__(self, key):\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', None))\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', None))\n if key == 'next': return self.next\n raise KeyError(key)\n def get(self, key, default=None):\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', default))\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', default))\n if key == 'next': return self.next\n return default\n def __repr__(self):\n return f\"ListNode({getattr(self, 'val', getattr(self, 'value', None))})\"\n`;\n\n/**\n * Python helper functions for converting dicts to TreeNode/ListNode.\n */\nexport const TEMPLATE_PYTHON_CONVERSION_HELPERS = `\ndef _ensure_node_value_aliases(node):\n if node is None:\n return node\n try:\n has_val = hasattr(node, 'val')\n has_value = hasattr(node, 'value')\n if has_value and not has_val:\n try:\n setattr(node, 'val', getattr(node, 'value'))\n except Exception:\n pass\n elif has_val and not has_value:\n try:\n setattr(node, 'value', getattr(node, 'val'))\n except Exception:\n pass\n except Exception:\n pass\n return node\n\ndef _dict_to_tree(d):\n if d is None:\n return None\n if not isinstance(d, dict):\n return d\n if 'val' not in d and 'value' not in d:\n return d\n node = TreeNode(d.get('val', d.get('value', 0)))\n _ensure_node_value_aliases(node)\n node.left = _dict_to_tree(d.get('left'))\n node.right = _dict_to_tree(d.get('right'))\n return node\n\ndef _dict_to_list(d, _refs=None):\n if _refs is None:\n _refs = {}\n if d is None:\n return None\n if not isinstance(d, dict):\n return d\n if '__ref__' in d:\n return _refs.get(d.get('__ref__'))\n if 'val' not in d and 'value' not in d:\n return d\n node = ListNode(d.get('val', d.get('value', 0)))\n _ensure_node_value_aliases(node)\n node_id = d.get('__id__')\n if isinstance(node_id, str) and node_id:\n _refs[node_id] = node\n node.next = _dict_to_list(d.get('next'), _refs)\n return node\n`;\n\n/**\n * Trace-mode Python serialization function.\n * Includes function filtering and node reference tracking for cycle-safe traces.\n */\nexport const TEMPLATE_PYTHON_TRACE_SERIALIZE_FUNCTION = `\n# Sentinel to mark skipped values (functions, etc.) - distinct from None\n_SKIP_SENTINEL = \"__TRACECODE_SKIP__\"\n_MAX_SERIALIZE_DEPTH = 48\n_MAX_OBJECT_FIELDS = 32\n\ndef _serialize(obj, depth=0, node_refs=None):\n if node_refs is None:\n node_refs = {}\n if isinstance(obj, (bool, int, str, type(None))):\n return obj\n elif isinstance(obj, float):\n if not math.isfinite(obj):\n if math.isnan(obj):\n return \"NaN\"\n return \"Infinity\" if obj > 0 else \"-Infinity\"\n return obj\n if depth > _MAX_SERIALIZE_DEPTH:\n return \"<max depth>\"\n elif isinstance(obj, (list, tuple)):\n return [_serialize(x, depth + 1, node_refs) for x in obj]\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\n return [_serialize(x, depth + 1, node_refs) for x in obj]\n elif isinstance(obj, dict):\n return {str(k): _serialize(v, depth + 1, node_refs) for k, v in obj.items()}\n elif isinstance(obj, set):\n # Use try/except for sorting to handle heterogeneous sets\n try:\n sorted_vals = sorted([_serialize(x, depth + 1, node_refs) for x in obj])\n except TypeError:\n sorted_vals = [_serialize(x, depth + 1, node_refs) for x in obj]\n return {\"__type__\": \"set\", \"values\": sorted_vals}\n elif isinstance(obj, TreeNode):\n obj_ref = id(obj)\n if obj_ref in node_refs:\n return {\"__ref__\": node_refs[obj_ref]}\n node_id = f\"tree-{obj_ref}\"\n node_refs[obj_ref] = node_id\n result = {\n \"__type__\": \"TreeNode\",\n \"__id__\": node_id,\n \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\n }\n if hasattr(obj, 'left'):\n result[\"left\"] = _serialize(obj.left, depth + 1, node_refs)\n if hasattr(obj, 'right'):\n result[\"right\"] = _serialize(obj.right, depth + 1, node_refs)\n return result\n elif isinstance(obj, ListNode):\n obj_ref = id(obj)\n if obj_ref in node_refs:\n return {\"__ref__\": node_refs[obj_ref]}\n node_id = f\"list-{obj_ref}\"\n node_refs[obj_ref] = node_id\n result = {\n \"__type__\": \"ListNode\",\n \"__id__\": node_id,\n \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\n }\n result[\"next\"] = _serialize(obj.next, depth + 1, node_refs)\n return result\n elif hasattr(obj, '__dict__'):\n obj_ref = id(obj)\n if obj_ref in node_refs:\n return {\"__ref__\": node_refs[obj_ref]}\n node_id = f\"object-{obj_ref}\"\n node_refs[obj_ref] = node_id\n class_name = getattr(getattr(obj, '__class__', None), '__name__', 'object')\n result = {\n \"__type__\": \"object\",\n \"__class__\": class_name,\n \"__id__\": node_id,\n }\n try:\n raw_fields = getattr(obj, '__dict__', None)\n except Exception:\n raw_fields = None\n if isinstance(raw_fields, dict):\n added = 0\n for key, value in raw_fields.items():\n key_str = str(key)\n if key_str.startswith('_'):\n continue\n if callable(value):\n continue\n result[key_str] = _serialize(value, depth + 1, node_refs)\n added += 1\n if added >= _MAX_OBJECT_FIELDS:\n result[\"__truncated__\"] = True\n break\n return result\n elif callable(obj):\n # Skip functions entirely - return sentinel\n return _SKIP_SENTINEL\n else:\n repr_str = repr(obj)\n # Filter out function-like representations (e.g., <function foo at 0x...>)\n if repr_str.startswith('<') and repr_str.endswith('>'):\n return _SKIP_SENTINEL\n return repr_str\n`;\n\n/**\n * Execute-mode Python serialization function.\n * Preserves current execute/interview output semantics.\n */\nexport const TEMPLATE_PYTHON_EXECUTE_SERIALIZE_FUNCTION = `\n_MAX_SERIALIZE_DEPTH = 48\n\ndef _serialize(obj, depth=0):\n if isinstance(obj, (bool, int, str, type(None))):\n return obj\n elif isinstance(obj, float):\n if not math.isfinite(obj):\n if math.isnan(obj):\n return \"NaN\"\n return \"Infinity\" if obj > 0 else \"-Infinity\"\n return obj\n if depth > _MAX_SERIALIZE_DEPTH:\n return \"<max depth>\"\n elif isinstance(obj, (list, tuple)):\n return [_serialize(x, depth + 1) for x in obj]\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\n return [_serialize(x, depth + 1) for x in obj]\n elif isinstance(obj, dict):\n return {str(k): _serialize(v, depth + 1) for k, v in obj.items()}\n elif isinstance(obj, set):\n try:\n return {\"__type__\": \"set\", \"values\": sorted([_serialize(x, depth + 1) for x in obj])}\n except TypeError:\n return {\"__type__\": \"set\", \"values\": [_serialize(x, depth + 1) for x in obj]}\n elif isinstance(obj, TreeNode):\n result = {\"__type__\": \"TreeNode\", \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\n if hasattr(obj, 'left'):\n result[\"left\"] = _serialize(obj.left, depth + 1)\n if hasattr(obj, 'right'):\n result[\"right\"] = _serialize(obj.right, depth + 1)\n return result\n elif isinstance(obj, ListNode):\n result = {\"__type__\": \"ListNode\", \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\n result[\"next\"] = _serialize(obj.next, depth + 1)\n return result\n elif callable(obj):\n return None\n else:\n repr_str = repr(obj)\n if repr_str.startswith('<') and repr_str.endswith('>'):\n return None\n return repr_str\n`;\n\n/**\n * Practice materialization serializer with strict safety limits and markers.\n */\nexport const TEMPLATE_PYTHON_PRACTICE_MATERIALIZE_SERIALIZE_FUNCTION = `\ndef _serialize(obj, depth=0, state=None):\n if state is None:\n state = {\"nodes\": 0, \"seen\": set()}\n if depth > 64:\n return \"__MAX_DEPTH__\"\n if isinstance(obj, (int, float, str, bool, type(None))):\n return obj\n\n state[\"nodes\"] += 1\n if state[\"nodes\"] > 600:\n return \"__MAX_NODES__\"\n\n if isinstance(obj, (list, tuple)):\n return [_serialize(x, depth + 1, state) for x in obj]\n elif isinstance(obj, dict):\n return {str(k): _serialize(v, depth + 1, state) for k, v in obj.items()}\n elif isinstance(obj, set):\n serialized = [_serialize(x, depth + 1, state) for x in obj]\n try:\n serialized = sorted(serialized)\n except TypeError:\n pass\n return {\"__type__\": \"set\", \"values\": serialized}\n elif (hasattr(obj, 'val') or hasattr(obj, 'value')) and (hasattr(obj, 'left') or hasattr(obj, 'right')):\n obj_id = id(obj)\n if obj_id in state[\"seen\"]:\n return \"__CYCLE__\"\n state[\"seen\"].add(obj_id)\n result = {\"__type__\": \"TreeNode\", \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, state)}\n if hasattr(obj, 'left'):\n result[\"left\"] = _serialize(obj.left, depth + 1, state)\n if hasattr(obj, 'right'):\n result[\"right\"] = _serialize(obj.right, depth + 1, state)\n state[\"seen\"].remove(obj_id)\n return result\n elif (hasattr(obj, 'val') or hasattr(obj, 'value')) and hasattr(obj, 'next'):\n obj_id = id(obj)\n if obj_id in state[\"seen\"]:\n return \"__CYCLE__\"\n state[\"seen\"].add(obj_id)\n result = {\"__type__\": \"ListNode\", \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, state)}\n result[\"next\"] = _serialize(obj.next, depth + 1, state)\n state[\"seen\"].remove(obj_id)\n return result\n else:\n return repr(obj)\n`;\n\n/**\n * Interview materialization serializer, preserving current legacy behavior.\n */\nexport const TEMPLATE_PYTHON_INTERVIEW_MATERIALIZE_SERIALIZE_FUNCTION = `\ndef _serialize(obj, depth=0):\n if depth > 10:\n return \"<max depth>\"\n if isinstance(obj, (int, float, str, bool, type(None))):\n return obj\n elif isinstance(obj, (list, tuple)):\n return [_serialize(x, depth + 1) for x in obj]\n elif isinstance(obj, dict):\n return {str(k): _serialize(v, depth + 1) for k, v in obj.items()}\n elif isinstance(obj, set):\n try:\n return {\"__type__\": \"set\", \"values\": sorted([_serialize(x, depth + 1) for x in obj])}\n except TypeError:\n return {\"__type__\": \"set\", \"values\": [_serialize(x, depth + 1) for x in obj]}\n elif isinstance(obj, TreeNode):\n result = {\"__type__\": \"TreeNode\", \"val\": _serialize(getattr(obj, 'val', None), depth + 1)}\n if hasattr(obj, 'left'):\n result[\"left\"] = _serialize(obj.left, depth + 1)\n if hasattr(obj, 'right'):\n result[\"right\"] = _serialize(obj.right, depth + 1)\n return result\n elif isinstance(obj, ListNode):\n result = {\"__type__\": \"ListNode\", \"val\": _serialize(getattr(obj, 'val', None), depth + 1)}\n result[\"next\"] = _serialize(obj.next, depth + 1)\n return result\n else:\n return repr(obj)\n`;\n\n/**\n * Backwards-compatible alias. Use TEMPLATE_PYTHON_EXECUTE_SERIALIZE_FUNCTION\n * for new callsites.\n */\nexport const TEMPLATE_PYTHON_SERIALIZE_FUNCTION = TEMPLATE_PYTHON_EXECUTE_SERIALIZE_FUNCTION;\n","export const TYPESCRIPT_RUNTIME_DECLARATIONS = `\ndeclare class ListNode {\n val: any;\n next: ListNode | SerializedListNode | SerializedRef | null;\n prev?: ListNode | SerializedListNode | SerializedRef | null;\n constructor(val?: any, next?: ListNode | null);\n}\n\ndeclare class TreeNode {\n val: any;\n left: TreeNode | SerializedTreeNode | SerializedRef | null;\n right: TreeNode | SerializedTreeNode | SerializedRef | null;\n constructor(val?: any, left?: TreeNode | null, right?: TreeNode | null);\n}\n\ntype SerializedRef = { __ref__: string };\n\ntype SerializedListNode = {\n __id__?: string;\n __type__?: 'ListNode';\n val?: any;\n next?: SerializedListNode | SerializedRef | ListNode | null;\n prev?: SerializedListNode | SerializedRef | ListNode | null;\n};\n\ntype SerializedTreeNode = {\n __id__?: string;\n __type__?: 'TreeNode';\n val?: any;\n left?: SerializedTreeNode | SerializedRef | TreeNode | null;\n right?: SerializedTreeNode | SerializedRef | TreeNode | null;\n};\n`;\n\nexport function withTypeScriptRuntimeDeclarations(sourceCode: string): string {\n return `${sourceCode}\\n\\n${TYPESCRIPT_RUNTIME_DECLARATIONS}\\n`;\n}\n\n","import type { RuntimeExecutionStyle } from '../../harness-core/src/runtime-types';\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { withTypeScriptRuntimeDeclarations } from './typescript-runtime-declarations';\n\ntype TypeScriptModule = typeof import('typescript');\n\nlet typeScriptModulePromise: Promise<TypeScriptModule> | null = null;\n\ntype DynamicRunner = (...args: unknown[]) => unknown;\n\nasync function getTypeScriptModule(): Promise<TypeScriptModule> {\n if (!typeScriptModulePromise) {\n const specifier = 'typescript';\n typeScriptModulePromise = import(/* webpackIgnore: true */ specifier);\n }\n return typeScriptModulePromise;\n}\n\nfunction performanceNow(): number {\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n}\n\nfunction formatConsoleArg(value: unknown): string {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean' || value === null || value === undefined) {\n return String(value);\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction createConsoleProxy(output: string[]): Console {\n const capture = (...args: unknown[]) => {\n output.push(args.map(formatConsoleArg).join(' '));\n };\n\n return {\n ...console,\n log: capture,\n info: capture,\n warn: capture,\n error: capture,\n debug: capture,\n };\n}\n\nfunction isLikelyTreeNodeValue(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n const record = value as Record<string, unknown>;\n if (record.__type__ === 'TreeNode') return true;\n const ctor = (value as { constructor?: { name?: unknown } }).constructor;\n return ctor?.name === 'TreeNode';\n}\n\nfunction isLikelyListNodeValue(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n const record = value as Record<string, unknown>;\n if (record.__type__ === 'ListNode') return true;\n const ctor = (value as { constructor?: { name?: unknown } }).constructor;\n return ctor?.name === 'ListNode';\n}\n\nfunction getCustomClassName(value: unknown): string | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n if (value instanceof Map || value instanceof Set) return null;\n if (isLikelyTreeNodeValue(value) || isLikelyListNodeValue(value)) return null;\n const ctor = (value as { constructor?: { name?: unknown } }).constructor;\n const name = typeof ctor?.name === 'string' ? ctor.name : '';\n if (!name || name === 'Object' || name === 'Array' || name === 'Map' || name === 'Set') {\n return null;\n }\n return name;\n}\n\nfunction serializeValue(\n value: unknown,\n depth = 0,\n seen = new WeakSet<object>(),\n nodeRefState: { ids: Map<object, string>; nextId: number } = { ids: new Map<object, string>(), nextId: 1 }\n): unknown {\n if (depth > 48) return '<max depth>';\n if (value === null || value === undefined) return value;\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'bigint') {\n return Number.isSafeInteger(Number(value)) ? Number(value) : String(value);\n }\n if (typeof value === 'function') {\n return '<function>';\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => serializeValue(item, depth + 1, seen));\n }\n\n if (value instanceof Set) {\n return {\n __type__: 'set',\n values: [...value].map((item) => serializeValue(item, depth + 1, seen, nodeRefState)),\n };\n }\n\n if (value instanceof Map) {\n return {\n __type__: 'map',\n entries: [...value.entries()].map(([k, v]) => [\n serializeValue(k, depth + 1, seen, nodeRefState),\n serializeValue(v, depth + 1, seen, nodeRefState),\n ]),\n };\n }\n\n if (typeof value === 'object') {\n if (isLikelyTreeNodeValue(value) || isLikelyListNodeValue(value)) {\n const objectValue = value as object;\n const nodeValue = value as Record<string, unknown>;\n const existingId = nodeRefState.ids.get(objectValue);\n if (existingId) {\n return { __ref__: existingId };\n }\n\n const isTree = isLikelyTreeNodeValue(value);\n const nodePrefix = isTree ? 'tree' : 'list';\n const nodeId = `${nodePrefix}-${nodeRefState.nextId++}`;\n nodeRefState.ids.set(objectValue, nodeId);\n\n const out: Record<string, unknown> = isTree\n ? {\n __type__: 'TreeNode',\n __id__: nodeId,\n val: serializeValue(nodeValue.val ?? nodeValue.value ?? null, depth + 1, seen, nodeRefState),\n left: serializeValue(nodeValue.left ?? null, depth + 1, seen, nodeRefState),\n right: serializeValue(nodeValue.right ?? null, depth + 1, seen, nodeRefState),\n }\n : {\n __type__: 'ListNode',\n __id__: nodeId,\n val: serializeValue(nodeValue.val ?? nodeValue.value ?? null, depth + 1, seen, nodeRefState),\n next: serializeValue(nodeValue.next ?? null, depth + 1, seen, nodeRefState),\n ...('prev' in nodeValue\n ? { prev: serializeValue(nodeValue.prev ?? null, depth + 1, seen, nodeRefState) }\n : {}),\n };\n\n const skipped = isTree\n ? new Set(['__id__', '__type__', '__class__', 'val', 'value', 'left', 'right'])\n : new Set(['__id__', '__type__', '__class__', 'val', 'value', 'next', 'prev']);\n for (const [k, v] of Object.entries(nodeValue)) {\n if (skipped.has(k)) continue;\n out[k] = serializeValue(v, depth + 1, seen, nodeRefState);\n }\n return out;\n }\n\n const customClassName = getCustomClassName(value);\n if (customClassName) {\n const objectValue = value as object;\n const existingId = nodeRefState.ids.get(objectValue);\n if (existingId) {\n return { __ref__: existingId };\n }\n\n const objectId = `object-${nodeRefState.nextId++}`;\n nodeRefState.ids.set(objectValue, objectId);\n\n if (seen.has(objectValue)) return { __ref__: objectId };\n seen.add(objectValue);\n const out: Record<string, unknown> = {\n __type__: 'object',\n __class__: customClassName,\n __id__: objectId,\n };\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n out[k] = serializeValue(v, depth + 1, seen, nodeRefState);\n }\n seen.delete(objectValue);\n return out;\n }\n\n if (seen.has(value as object)) return '<cycle>';\n seen.add(value as object);\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n out[k] = serializeValue(v, depth + 1, seen, nodeRefState);\n }\n seen.delete(value as object);\n return out;\n }\n\n return String(value);\n}\n\nfunction extractUserErrorLine(error: unknown): number | undefined {\n if (typeof error === 'object' && error && '__tracecodeLine' in error) {\n const line = Number((error as { __tracecodeLine?: unknown }).__tracecodeLine);\n if (Number.isFinite(line)) return line;\n }\n\n const stack =\n typeof error === 'object' && error && 'stack' in error\n ? String((error as { stack?: unknown }).stack ?? '')\n : '';\n if (!stack) return undefined;\n const match = stack.match(/<anonymous>:(\\d+):\\d+/);\n if (!match) return undefined;\n const line = Number.parseInt(match[1], 10);\n return Number.isFinite(line) ? line : undefined;\n}\n\nfunction isPlainObjectRecord(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n return Object.prototype.toString.call(value) === '[object Object]';\n}\n\nfunction collectReferenceTargets(\n value: unknown,\n byId: Map<string, Record<string, unknown>>,\n seen: WeakSet<object>\n): void {\n if (value === null || value === undefined) return;\n if (typeof value !== 'object') return;\n if (seen.has(value)) return;\n seen.add(value);\n\n if (Array.isArray(value)) {\n for (const item of value) {\n collectReferenceTargets(item, byId, seen);\n }\n return;\n }\n\n if (!isPlainObjectRecord(value)) return;\n if (typeof value.__id__ === 'string' && value.__id__.length > 0 && !byId.has(value.__id__)) {\n byId.set(value.__id__, value);\n }\n\n for (const nested of Object.values(value)) {\n collectReferenceTargets(nested, byId, seen);\n }\n}\n\nfunction resolveReferenceGraph(\n value: unknown,\n byId: Map<string, Record<string, unknown>>,\n resolved: WeakMap<object, unknown>\n): unknown {\n if (value === null || value === undefined) return value;\n if (typeof value !== 'object') return value;\n\n if (resolved.has(value)) {\n return resolved.get(value);\n }\n\n if (Array.isArray(value)) {\n const out: unknown[] = [];\n resolved.set(value, out);\n for (const item of value) {\n out.push(resolveReferenceGraph(item, byId, resolved));\n }\n return out;\n }\n\n if (!isPlainObjectRecord(value)) {\n return value;\n }\n\n const keys = Object.keys(value);\n if (keys.length === 1 && typeof value.__ref__ === 'string') {\n const target = byId.get(value.__ref__);\n if (!target) return null;\n return resolveReferenceGraph(target, byId, resolved);\n }\n\n const out: Record<string, unknown> = {};\n resolved.set(value, out);\n for (const [key, nested] of Object.entries(value)) {\n out[key] = resolveReferenceGraph(nested, byId, resolved);\n }\n return out;\n}\n\nfunction normalizeInputs(inputs: Record<string, unknown>): Record<string, unknown> {\n if (!inputs || typeof inputs !== 'object' || Array.isArray(inputs)) return {};\n const byId = new Map<string, Record<string, unknown>>();\n collectReferenceTargets(inputs, byId, new WeakSet<object>());\n if (byId.size === 0) {\n return inputs;\n }\n const hydrated = resolveReferenceGraph(inputs, byId, new WeakMap<object, unknown>());\n if (!hydrated || typeof hydrated !== 'object' || Array.isArray(hydrated)) {\n return inputs;\n }\n return hydrated as Record<string, unknown>;\n}\n\ntype InputMaterializerKind = 'tree' | 'list';\n\nfunction buildTreeNodeFromLevelOrder(values: unknown[]): Record<string, unknown> | null {\n if (!Array.isArray(values) || values.length === 0) return null;\n const firstValue = values[0];\n if (firstValue === null || firstValue === undefined) return null;\n const root: Record<string, unknown> = {\n val: firstValue,\n value: firstValue,\n left: null,\n right: null,\n };\n const queue: Record<string, unknown>[] = [root];\n let index = 1;\n\n while (queue.length > 0 && index < values.length) {\n const node = queue.shift();\n if (!node) break;\n\n const leftValue = values[index++];\n if (leftValue !== null && leftValue !== undefined) {\n const leftNode: Record<string, unknown> = {\n val: leftValue,\n value: leftValue,\n left: null,\n right: null,\n };\n node.left = leftNode;\n queue.push(leftNode);\n }\n\n if (index >= values.length) break;\n\n const rightValue = values[index++];\n if (rightValue !== null && rightValue !== undefined) {\n const rightNode: Record<string, unknown> = {\n val: rightValue,\n value: rightValue,\n left: null,\n right: null,\n };\n node.right = rightNode;\n queue.push(rightNode);\n }\n }\n return root;\n}\n\nfunction materializeTreeInput(value: unknown): unknown {\n if (value === null || value === undefined) return value;\n if (Array.isArray(value)) {\n return buildTreeNodeFromLevelOrder(value);\n }\n if (!isPlainObjectRecord(value)) {\n return value;\n }\n const record = value as Record<string, unknown>;\n if (isLikelyTreeNodeValue(record)) {\n const node: Record<string, unknown> = {\n val: record.val ?? record.value ?? null,\n value: record.val ?? record.value ?? null,\n left: materializeTreeInput(record.left ?? null),\n right: materializeTreeInput(record.right ?? null),\n };\n for (const [key, nested] of Object.entries(record)) {\n if (key === '__id__' || key === '__type__' || key === 'val' || key === 'value' || key === 'left' || key === 'right') continue;\n node[key] = materializeTreeInput(nested);\n }\n return node;\n }\n const taggedRecord = value as Record<string, unknown> & { __type__?: unknown };\n if (taggedRecord.__type__ === 'TreeNode') {\n const node: Record<string, unknown> = {\n val: taggedRecord.val ?? taggedRecord.value ?? null,\n value: taggedRecord.val ?? taggedRecord.value ?? null,\n left: materializeTreeInput(taggedRecord.left ?? null),\n right: materializeTreeInput(taggedRecord.right ?? null),\n };\n for (const [key, nested] of Object.entries(taggedRecord)) {\n if (key === '__id__' || key === '__type__' || key === 'val' || key === 'value' || key === 'left' || key === 'right') continue;\n node[key] = materializeTreeInput(nested);\n }\n return node;\n }\n return value;\n}\n\nfunction materializeListInput(\n value: unknown,\n refs: Map<string, Record<string, unknown>> = new Map(),\n materialized: WeakMap<object, Record<string, unknown>> = new WeakMap()\n): unknown {\n if (value === null || value === undefined) return value;\n if (Array.isArray(value)) {\n if (value.length === 0) return null;\n const head: Record<string, unknown> = {\n val: value[0],\n value: value[0],\n next: null,\n };\n let current: Record<string, unknown> = head;\n for (let i = 1; i < value.length; i++) {\n const nextNode: Record<string, unknown> = { val: value[i], value: value[i], next: null };\n current.next = nextNode;\n current = nextNode;\n }\n return head;\n }\n if (!isPlainObjectRecord(value)) {\n return value;\n }\n const record = value as Record<string, unknown>;\n if (typeof record.__ref__ === 'string') {\n return refs.get(record.__ref__) ?? null;\n }\n const taggedRecord = value as Record<string, unknown> & { __type__?: unknown };\n if (isLikelyListNodeValue(record) || taggedRecord.__type__ === 'ListNode') {\n const existingMaterialized = materialized.get(record as object);\n if (existingMaterialized) {\n return existingMaterialized;\n }\n const node: Record<string, unknown> = {\n val: taggedRecord.val ?? taggedRecord.value ?? null,\n value: taggedRecord.val ?? taggedRecord.value ?? null,\n next: null,\n };\n materialized.set(record as object, node);\n if (typeof taggedRecord.__id__ === 'string' && taggedRecord.__id__.length > 0) {\n refs.set(taggedRecord.__id__, node);\n }\n node.next = materializeListInput(taggedRecord.next ?? null, refs, materialized);\n for (const [key, nested] of Object.entries(taggedRecord)) {\n if (key === '__id__' || key === '__type__' || key === '__class__' || key === 'val' || key === 'value' || key === 'next') continue;\n node[key] = materializeListInput(nested, refs, materialized);\n }\n return node;\n }\n return value;\n}\n\nfunction detectMaterializerKind(\n ts: TypeScriptModule,\n typeNode: import('typescript').TypeNode | undefined\n): InputMaterializerKind | null {\n if (!typeNode) return null;\n if (ts.isParenthesizedTypeNode(typeNode)) {\n return detectMaterializerKind(ts, typeNode.type);\n }\n if (ts.isUnionTypeNode(typeNode)) {\n for (const child of typeNode.types) {\n const resolved = detectMaterializerKind(ts, child);\n if (resolved) return resolved;\n }\n return null;\n }\n if (ts.isTypeReferenceNode(typeNode)) {\n const typeNameText = typeNode.typeName.getText();\n if (typeNameText === 'TreeNode') return 'tree';\n if (typeNameText === 'ListNode') return 'list';\n return null;\n }\n return null;\n}\n\nfunction collectInputMaterializers(\n ts: TypeScriptModule,\n functionLikeNode: FunctionLikeNode\n): Record<string, InputMaterializerKind> {\n const out: Record<string, InputMaterializerKind> = {};\n for (const parameter of functionLikeNode.parameters ?? []) {\n if (!ts.isIdentifier(parameter.name)) continue;\n if (parameter.name.text === 'this') continue;\n const kind = detectMaterializerKind(ts, parameter.type);\n if (kind) {\n out[parameter.name.text] = kind;\n }\n }\n return out;\n}\n\nasync function resolveInputMaterializers(\n code: string,\n functionName: string,\n executionStyle: RuntimeExecutionStyle,\n language: 'javascript' | 'typescript'\n): Promise<Record<string, InputMaterializerKind>> {\n if (!functionName || executionStyle === 'ops-class' || language !== 'typescript') {\n return {};\n }\n\n try {\n const ts = await getTypeScriptModule();\n const sourceFile = ts.createSourceFile(\n 'runtime-input.ts',\n code,\n ts.ScriptTarget.ES2020,\n true,\n ts.ScriptKind.TS\n );\n const target = findFunctionLikeNode(ts, sourceFile, functionName, executionStyle);\n if (!target) return {};\n return collectInputMaterializers(ts, target);\n } catch {\n return {};\n }\n}\n\nfunction applyInputMaterializers(\n inputs: Record<string, unknown>,\n materializers: Record<string, InputMaterializerKind>\n): Record<string, unknown> {\n if (Object.keys(materializers).length === 0) return inputs;\n const next: Record<string, unknown> = { ...inputs };\n for (const [name, kind] of Object.entries(materializers)) {\n if (!Object.prototype.hasOwnProperty.call(next, name)) continue;\n next[name] = kind === 'tree' ? materializeTreeInput(next[name]) : materializeListInput(next[name]);\n }\n return next;\n}\n\ntype FunctionLikeNode =\n | import('typescript').FunctionDeclaration\n | import('typescript').FunctionExpression\n | import('typescript').ArrowFunction\n | import('typescript').MethodDeclaration;\n\nfunction collectSimpleParameterNames(\n ts: TypeScriptModule,\n functionLikeNode: FunctionLikeNode\n): string[] | null {\n const names: string[] = [];\n\n for (const parameter of functionLikeNode.parameters ?? []) {\n if (!ts.isIdentifier(parameter.name)) {\n return null;\n }\n if (parameter.name.text === 'this') {\n continue;\n }\n names.push(parameter.name.text);\n }\n\n return names;\n}\n\nfunction getPropertyNameText(ts: TypeScriptModule, name: import('typescript').PropertyName | undefined): string | null {\n if (!name) return null;\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n return null;\n}\n\nfunction findFunctionLikeNode(\n ts: TypeScriptModule,\n sourceFile: import('typescript').SourceFile,\n functionName: string,\n executionStyle: RuntimeExecutionStyle\n): FunctionLikeNode | null {\n let found: FunctionLikeNode | null = null;\n\n const visit = (node: import('typescript').Node): void => {\n if (found) return;\n\n if (executionStyle === 'solution-method' && ts.isClassDeclaration(node) && node.name?.text === 'Solution') {\n for (const member of node.members) {\n if (found) break;\n\n if (ts.isMethodDeclaration(member) && getPropertyNameText(ts, member.name) === functionName) {\n found = member;\n break;\n }\n\n if (\n ts.isPropertyDeclaration(member) &&\n getPropertyNameText(ts, member.name) === functionName &&\n member.initializer &&\n (ts.isArrowFunction(member.initializer) || ts.isFunctionExpression(member.initializer))\n ) {\n found = member.initializer;\n break;\n }\n }\n return;\n }\n\n if (executionStyle === 'function') {\n if (ts.isFunctionDeclaration(node) && node.name?.text === functionName) {\n found = node;\n return;\n }\n\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === functionName &&\n node.initializer &&\n (ts.isArrowFunction(node.initializer) || ts.isFunctionExpression(node.initializer))\n ) {\n found = node.initializer;\n return;\n }\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n return found;\n}\n\nasync function resolveOrderedInputKeys(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle,\n language: 'javascript' | 'typescript' = 'javascript'\n): Promise<string[]> {\n const fallbackKeys = Object.keys(inputs);\n if (!functionName || executionStyle === 'ops-class' || fallbackKeys.length <= 1) {\n return fallbackKeys;\n }\n\n try {\n const ts = await getTypeScriptModule();\n const sourceFile = ts.createSourceFile(\n `runtime-input.${language === 'typescript' ? 'ts' : 'js'}`,\n code,\n ts.ScriptTarget.ES2020,\n true,\n language === 'typescript' ? ts.ScriptKind.TS : ts.ScriptKind.JS\n );\n const target = findFunctionLikeNode(ts, sourceFile, functionName, executionStyle);\n if (!target) {\n return fallbackKeys;\n }\n\n const parameterNames = collectSimpleParameterNames(ts, target);\n if (!parameterNames || parameterNames.length === 0) {\n return fallbackKeys;\n }\n\n const matchedKeys = parameterNames.filter((name) => Object.prototype.hasOwnProperty.call(inputs, name));\n if (matchedKeys.length === 0) {\n return fallbackKeys;\n }\n\n const extras = fallbackKeys.filter((key) => !matchedKeys.includes(key));\n return [...matchedKeys, ...extras];\n } catch {\n return fallbackKeys;\n }\n}\n\nfunction buildRunner(code: string, executionStyle: RuntimeExecutionStyle, argNames: string[]): DynamicRunner {\n if (executionStyle === 'function') {\n return new Function(\n 'console',\n '__functionName',\n ...argNames,\n `\"use strict\";\n${code}\nlet __target;\ntry {\n __target = eval(__functionName);\n} catch (_err) {\n __target = undefined;\n}\nif (typeof __target !== 'function') {\n throw new Error('Function \"' + __functionName + '\" not found');\n}\nreturn __target(${argNames.join(', ')});`\n ) as DynamicRunner;\n }\n\n if (executionStyle === 'solution-method') {\n return new Function(\n 'console',\n '__functionName',\n ...argNames,\n `\"use strict\";\n${code}\nif (typeof Solution !== 'function') {\n throw new Error('Class \"Solution\" not found');\n}\nconst __solver = new Solution();\nconst __method = __solver[__functionName];\nif (typeof __method !== 'function') {\n throw new Error('Method \"Solution.' + __functionName + '\" not found');\n}\nreturn __method.call(__solver, ${argNames.join(', ')});`\n ) as DynamicRunner;\n }\n\n if (executionStyle === 'ops-class') {\n return new Function(\n 'console',\n '__className',\n '__operations',\n '__arguments',\n `\"use strict\";\n${code}\nif (!Array.isArray(__operations) || !Array.isArray(__arguments)) {\n throw new Error('ops-class execution requires inputs.operations and inputs.arguments (or ops/args)');\n}\nif (__operations.length !== __arguments.length) {\n throw new Error('operations and arguments must have the same length');\n}\nlet __targetClass;\ntry {\n __targetClass = eval(__className);\n} catch (_err) {\n __targetClass = undefined;\n}\nif (typeof __targetClass !== 'function') {\n throw new Error('Class \"' + __className + '\" not found');\n}\nlet __instance = null;\nconst __out = [];\nfor (let __i = 0; __i < __operations.length; __i++) {\n const __op = __operations[__i];\n let __callArgs = __arguments[__i];\n if (__callArgs === null || __callArgs === undefined) {\n __callArgs = [];\n }\n if (!Array.isArray(__callArgs)) {\n __callArgs = [__callArgs];\n }\n if (__i === 0) {\n __instance = new __targetClass(...__callArgs);\n __out.push(null);\n continue;\n }\n if (!__instance || typeof __instance[__op] !== 'function') {\n throw new Error('Required method \"' + __op + '\" is not implemented on ' + (__className || 'target class'));\n }\n __out.push(__instance[__op](...__callArgs));\n}\nreturn __out;`\n ) as DynamicRunner;\n }\n\n throw new Error(`Execution style \"${executionStyle}\" is not supported for JavaScript runtime yet.`);\n}\n\nfunction getOpsClassInputs(inputs: Record<string, unknown>): {\n operations: unknown[] | null;\n argumentsList: unknown[] | null;\n} {\n const operations = Array.isArray(inputs.operations)\n ? inputs.operations\n : (Array.isArray(inputs.ops) ? inputs.ops : null);\n const argumentsList = Array.isArray(inputs.arguments)\n ? inputs.arguments\n : (Array.isArray(inputs.args) ? inputs.args : null);\n return { operations, argumentsList };\n}\n\nasync function transpileTypeScript(code: string): Promise<string> {\n const ts = await getTypeScriptModule();\n const transpileInput = withTypeScriptRuntimeDeclarations(code);\n const transpiled = ts.transpileModule(transpileInput, {\n compilerOptions: {\n target: ts.ScriptTarget.ES2020,\n module: ts.ModuleKind.None,\n strict: false,\n esModuleInterop: true,\n },\n reportDiagnostics: true,\n fileName: 'solution.ts',\n });\n\n const diagnostics = Array.isArray(transpiled.diagnostics) ? transpiled.diagnostics : [];\n const errors = diagnostics.filter((diag) => diag.category === ts.DiagnosticCategory.Error);\n if (errors.length > 0) {\n const first = errors[0];\n const messageText = ts.flattenDiagnosticMessageText(first.messageText, '\\n');\n let lineNumber: number | undefined;\n if (first.file && typeof first.start === 'number') {\n const position = first.file.getLineAndCharacterOfPosition(first.start);\n lineNumber = position.line + 1;\n }\n const error = new Error(\n lineNumber\n ? `TypeScript transpilation failed (line ${lineNumber}): ${messageText}`\n : `TypeScript transpilation failed: ${messageText}`\n );\n if (lineNumber) {\n (error as Error & { __tracecodeLine?: number }).__tracecodeLine = lineNumber;\n }\n throw error;\n }\n\n return transpiled.outputText;\n}\n\nexport async function executeJavaScriptCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function',\n language: 'javascript' | 'typescript' = 'javascript'\n): Promise<CodeExecutionResult> {\n const consoleOutput: string[] = [];\n const consoleProxy = createConsoleProxy(consoleOutput);\n const normalizedInputs = normalizeInputs(inputs);\n const materializers = await resolveInputMaterializers(code, functionName, executionStyle, language);\n const materializedInputs = applyInputMaterializers(normalizedInputs, materializers);\n\n try {\n let output: unknown;\n\n if (executionStyle === 'ops-class') {\n const { operations, argumentsList } = getOpsClassInputs(materializedInputs);\n const runner = buildRunner(code, executionStyle, []);\n output = await Promise.resolve(runner(consoleProxy, functionName, operations, argumentsList));\n } else {\n const inputKeys = await resolveOrderedInputKeys(code, functionName, materializedInputs, executionStyle, language);\n const argNames = inputKeys.map((_, index) => `__arg${index}`);\n const argValues = inputKeys.map((key) => materializedInputs[key]);\n const runner = buildRunner(code, executionStyle, argNames);\n output = await Promise.resolve(runner(consoleProxy, functionName, ...argValues));\n }\n\n return {\n success: true,\n output: serializeValue(output),\n consoleOutput,\n };\n } catch (error) {\n return {\n success: false,\n output: null,\n error: error instanceof Error ? error.message : String(error),\n errorLine: extractUserErrorLine(error),\n consoleOutput,\n };\n }\n}\n\nexport async function executeJavaScriptWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function',\n language: 'javascript' | 'typescript' = 'javascript'\n): Promise<ExecutionResult> {\n const startedAt = performanceNow();\n const codeResult = await executeJavaScriptCode(code, functionName ?? '', inputs, executionStyle, language);\n const executionTimeMs = performanceNow() - startedAt;\n\n if (!codeResult.success) {\n return {\n success: false,\n error: codeResult.error,\n errorLine: codeResult.errorLine,\n trace: [],\n executionTimeMs,\n consoleOutput: codeResult.consoleOutput ?? [],\n lineEventCount: 0,\n traceStepCount: 0,\n };\n }\n\n return {\n success: true,\n output: codeResult.output,\n trace: [],\n executionTimeMs,\n consoleOutput: codeResult.consoleOutput ?? [],\n lineEventCount: 0,\n traceStepCount: 0,\n };\n}\n\nexport async function executeTypeScriptCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n): Promise<CodeExecutionResult> {\n const normalizedInputs = normalizeInputs(inputs);\n const materializers = await resolveInputMaterializers(code, functionName, executionStyle, 'typescript');\n const materializedInputs = applyInputMaterializers(normalizedInputs, materializers);\n const transpiledCode = await transpileTypeScript(code);\n return executeJavaScriptCode(transpiledCode, functionName, materializedInputs, executionStyle, 'typescript');\n}\n"],"mappings":"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","names":["pending","TRACING_TIMEOUT_MS","INIT_TIMEOUT_MS","MESSAGE_TIMEOUT_MS","WORKER_READY_TIMEOUT_MS","pending","EXECUTION_TIMEOUT_MS","INTERVIEW_MODE_TIMEOUT_MS","TRACING_TIMEOUT_MS","INIT_TIMEOUT_MS","MESSAGE_TIMEOUT_MS","WORKER_READY_TIMEOUT_MS","pending","out","line"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../packages/harness-core/src/generated/runtime-language-info-data.ts","../packages/harness-core/src/runtime-language-info.ts","../packages/harness-core/src/runtime-trace.ts","../packages/harness-core/src/runtime-raw-emission-contract.ts","../packages/harness-core/src/trace-adapters/java.ts","../packages/harness-browser/src/runtime-diagnostics.ts","../packages/harness-browser/src/javascript-worker-client.ts","../packages/harness-browser/src/runtime-capability-guards.ts","../packages/harness-browser/src/runtime-profiles.ts","../packages/harness-browser/src/javascript-runtime-client.ts","../packages/harness-browser/src/java-worker-client.ts","../packages/harness-browser/src/java-runtime-client.ts","../packages/harness-browser/src/csharp-worker-client.ts","../packages/harness-browser/src/csharp-runtime-client.ts","../packages/harness-browser/src/cpp-worker-client.ts","../packages/harness-browser/src/cpp-runtime-client.ts","../packages/harness-browser/src/pyodide-worker-client.ts","../packages/harness-browser/src/python-runtime-client.ts","../packages/harness-browser/src/runtime-assets.ts","../packages/harness-browser/src/browser-harness.ts","../packages/harness-python/src/generated/python-harness-snippets.ts","../packages/harness-python/src/python-harness.ts","../packages/harness-python/src/python-harness-template.ts","../packages/harness-javascript/src/typescript-runtime-declarations.ts","../packages/harness-javascript/src/javascript-executor.ts"],"sourcesContent":["export * from '../packages/harness-core/src/index';\nexport * from '../packages/harness-browser/src/index';\nexport * from '../packages/harness-python/src/index';\nexport * from '../packages/harness-javascript/src/index';\nexport * from '../packages/harness-java/src/index';\nexport * from '../packages/harness-csharp/src/index';\nexport * from '../packages/harness-cpp/src/index';\n","/**\n * AUTO-GENERATED FILE. DO NOT EDIT MANUALLY.\n *\n * Sources: runtime worker constants, package manifests, vendored runtime metadata.\n * Generator: scripts/generate-runtime-language-info.ts\n */\n\nimport type { Language } from '../runtime-types';\nimport type { LanguageRuntimeInfo } from '../runtime-language-info';\n\nexport const LANGUAGE_RUNTIME_INFOS = Object.freeze({\n \"python\": {\n \"language\": \"python\",\n \"displayName\": \"Python\",\n \"versionLabel\": \"Python 3.13.2 (Pyodide 0.29.0)\",\n \"description\": \"Python 3.13.2 (Pyodide 0.29.0).\\n\\nCommon algorithm helpers are imported automatically, including array, bisect, collections, functools, heapq, itertools. Other standard-library modules can be imported normally.\\n\\nsortedcontainers 2.4.0 is available for TreeMap, ordered-set, and sorted-list style workflows.\",\n \"runtime\": {\n \"name\": \"Pyodide\",\n \"version\": \"0.29.0\",\n \"detail\": \"CPython 3.13.2 compiled to WebAssembly.\"\n },\n \"defaultImports\": [\n \"array\",\n \"bisect\",\n \"collections\",\n \"functools\",\n \"heapq\",\n \"itertools\",\n \"operator\",\n \"re\",\n \"string\",\n \"typing\"\n ],\n \"libraries\": [\n {\n \"name\": \"sortedcontainers\",\n \"version\": \"2.4.0\",\n \"importName\": \"sortedcontainers\",\n \"detail\": \"SortedDict, SortedList, and SortedSet are loaded for tree-map/tree-set style use cases.\"\n }\n ]\n },\n \"javascript\": {\n \"language\": \"javascript\",\n \"displayName\": \"JavaScript\",\n \"versionLabel\": \"JavaScript (ECMAScript 2023)\",\n \"runtime\": {\n \"name\": \"Browser Worker JavaScript runtime\",\n \"detail\": \"Runs in the host browser worker; Node.js is not required for browser execution.\"\n },\n \"libraries\": [\n {\n \"name\": \"lodash\",\n \"version\": \"4.17.21\",\n \"importName\": \"lodash\",\n \"globalName\": \"_\"\n },\n {\n \"name\": \"@datastructures-js/binary-search-tree\",\n \"version\": \"5.4.0\",\n \"importName\": \"@datastructures-js/binary-search-tree\"\n },\n {\n \"name\": \"@datastructures-js/deque\",\n \"version\": \"1.0.8\",\n \"importName\": \"@datastructures-js/deque\"\n },\n {\n \"name\": \"@datastructures-js/graph\",\n \"version\": \"5.3.1\",\n \"importName\": \"@datastructures-js/graph\"\n },\n {\n \"name\": \"@datastructures-js/heap\",\n \"version\": \"4.3.7\",\n \"importName\": \"@datastructures-js/heap\"\n },\n {\n \"name\": \"@datastructures-js/linked-list\",\n \"version\": \"6.1.4\",\n \"importName\": \"@datastructures-js/linked-list\"\n },\n {\n \"name\": \"@datastructures-js/priority-queue\",\n \"version\": \"6.3.5\",\n \"importName\": \"@datastructures-js/priority-queue\"\n },\n {\n \"name\": \"@datastructures-js/queue\",\n \"version\": \"4.3.0\",\n \"importName\": \"@datastructures-js/queue\"\n },\n {\n \"name\": \"@datastructures-js/set\",\n \"version\": \"4.2.2\",\n \"importName\": \"@datastructures-js/set\"\n },\n {\n \"name\": \"@datastructures-js/stack\",\n \"version\": \"3.1.6\",\n \"importName\": \"@datastructures-js/stack\"\n },\n {\n \"name\": \"@datastructures-js/trie\",\n \"version\": \"4.2.3\",\n \"importName\": \"@datastructures-js/trie\"\n }\n ],\n \"standard\": \"ECMAScript 2023-compatible syntax in the browser worker lane.\",\n \"description\": \"JavaScript runs in an isolated browser Web Worker with ECMAScript 2023-compatible syntax.\\n\\nLodash 4.17.21 is available as both lodash and _.\\n\\nThe @datastructures-js packages are bundled for common algorithm data structures. Queue, Stack, Deque, Heap, PriorityQueue, MinPriorityQueue, and MaxPriorityQueue are available globally.\\n\\nBundled @datastructures-js versions:\\n\\n\\\"@datastructures-js/binary-search-tree\\\": \\\"5.4.0\\\"\\n\\\"@datastructures-js/deque\\\": \\\"1.0.8\\\"\\n\\\"@datastructures-js/graph\\\": \\\"5.3.1\\\"\\n\\\"@datastructures-js/heap\\\": \\\"4.3.7\\\"\\n\\\"@datastructures-js/linked-list\\\": \\\"6.1.4\\\"\\n\\\"@datastructures-js/priority-queue\\\": \\\"6.3.5\\\"\\n\\\"@datastructures-js/queue\\\": \\\"4.3.0\\\"\\n\\\"@datastructures-js/set\\\": \\\"4.2.2\\\"\\n\\\"@datastructures-js/stack\\\": \\\"3.1.6\\\"\\n\\\"@datastructures-js/trie\\\": \\\"4.2.3\\\"\\n\\nBinary Search Tree, Trie, and Graph are bundled too, but are not exposed globally because those names can collide with problem definitions. Import or require the matching package when you need one.\"\n },\n \"typescript\": {\n \"language\": \"typescript\",\n \"displayName\": \"TypeScript\",\n \"versionLabel\": \"TypeScript 5.9.3\",\n \"description\": \"TypeScript 5.9.3 is compiled in the browser and then executed on the JavaScript worker runtime.\\n\\nCompiler options: --target ES2020 --module None --strict false --esModuleInterop\\n\\nLodash 4.17.21 is available as both lodash and _.\\n\\nThe @datastructures-js packages are bundled for common algorithm data structures. Queue, Stack, Deque, Heap, PriorityQueue, MinPriorityQueue, and MaxPriorityQueue are available globally.\\n\\nBundled @datastructures-js versions:\\n\\n\\\"@datastructures-js/binary-search-tree\\\": \\\"5.4.0\\\"\\n\\\"@datastructures-js/deque\\\": \\\"1.0.8\\\"\\n\\\"@datastructures-js/graph\\\": \\\"5.3.1\\\"\\n\\\"@datastructures-js/heap\\\": \\\"4.3.7\\\"\\n\\\"@datastructures-js/linked-list\\\": \\\"6.1.4\\\"\\n\\\"@datastructures-js/priority-queue\\\": \\\"6.3.5\\\"\\n\\\"@datastructures-js/queue\\\": \\\"4.3.0\\\"\\n\\\"@datastructures-js/set\\\": \\\"4.2.2\\\"\\n\\\"@datastructures-js/stack\\\": \\\"3.1.6\\\"\\n\\\"@datastructures-js/trie\\\": \\\"4.2.3\\\"\\n\\nBinary Search Tree, Trie, and Graph are bundled too, but are not exposed globally because those names can collide with problem definitions. Import or require the matching package when you need one.\\n\\nThe compiled output runs on the same browser worker execution lane as JavaScript submissions.\",\n \"runtime\": {\n \"name\": \"Browser Worker JavaScript runtime\",\n \"detail\": \"TypeScript is compiled before execution and runs on the JavaScript worker lane.\"\n },\n \"compiler\": {\n \"name\": \"TypeScript\",\n \"version\": \"5.9.3\"\n },\n \"standard\": \"Transpiles to JavaScript for the browser worker lane.\",\n \"libraries\": [\n {\n \"name\": \"lodash\",\n \"version\": \"4.17.21\",\n \"importName\": \"lodash\",\n \"globalName\": \"_\"\n },\n {\n \"name\": \"@datastructures-js/binary-search-tree\",\n \"version\": \"5.4.0\",\n \"importName\": \"@datastructures-js/binary-search-tree\"\n },\n {\n \"name\": \"@datastructures-js/deque\",\n \"version\": \"1.0.8\",\n \"importName\": \"@datastructures-js/deque\"\n },\n {\n \"name\": \"@datastructures-js/graph\",\n \"version\": \"5.3.1\",\n \"importName\": \"@datastructures-js/graph\"\n },\n {\n \"name\": \"@datastructures-js/heap\",\n \"version\": \"4.3.7\",\n \"importName\": \"@datastructures-js/heap\"\n },\n {\n \"name\": \"@datastructures-js/linked-list\",\n \"version\": \"6.1.4\",\n \"importName\": \"@datastructures-js/linked-list\"\n },\n {\n \"name\": \"@datastructures-js/priority-queue\",\n \"version\": \"6.3.5\",\n \"importName\": \"@datastructures-js/priority-queue\"\n },\n {\n \"name\": \"@datastructures-js/queue\",\n \"version\": \"4.3.0\",\n \"importName\": \"@datastructures-js/queue\"\n },\n {\n \"name\": \"@datastructures-js/set\",\n \"version\": \"4.2.2\",\n \"importName\": \"@datastructures-js/set\"\n },\n {\n \"name\": \"@datastructures-js/stack\",\n \"version\": \"3.1.6\",\n \"importName\": \"@datastructures-js/stack\"\n },\n {\n \"name\": \"@datastructures-js/trie\",\n \"version\": \"4.2.3\",\n \"importName\": \"@datastructures-js/trie\"\n }\n ]\n },\n \"java\": {\n \"language\": \"java\",\n \"displayName\": \"Java\",\n \"versionLabel\": \"Java 17\",\n \"description\": \"Java 17 is compiled with javac 17 and executed in the browser through CheerpJ 4.2.\\n\\nCommon imports are added automatically: java.util.*, java.io.*, java.math.*, java.util.stream.*, javafx.util.Pair.\",\n \"runtime\": {\n \"name\": \"CheerpJ browser-local OpenJDK runtime\",\n \"version\": \"17\",\n \"detail\": \"Loaded through CheerpJ 4.2.\"\n },\n \"compiler\": {\n \"name\": \"javac\",\n \"version\": \"17\"\n },\n \"defaultImports\": [\n \"java.util.*\",\n \"java.io.*\",\n \"java.math.*\",\n \"java.util.stream.*\",\n \"javafx.util.Pair\"\n ],\n \"libraries\": [\n {\n \"name\": \"JavaParser\",\n \"version\": \"3.25.10\",\n \"detail\": \"Used internally for Java source rewriting.\"\n },\n {\n \"name\": \"javafx.util.Pair\",\n \"detail\": \"Small compatibility Pair class bundled with the Java helper jar.\"\n }\n ]\n },\n \"csharp\": {\n \"language\": \"csharp\",\n \"displayName\": \"C#\",\n \"versionLabel\": \"C# 14 (.NET 10.0.8)\",\n \"description\": \"C# 14 with .NET 10.0.8 runtime.\\n\\nCode is compiled with Microsoft.CodeAnalysis.CSharp 5.3.0 and executed by a browser-local .NET WebAssembly runtime.\\n\\nCommon namespaces are imported automatically: System, System.Collections, System.Collections.Generic, System.Linq, System.Numerics, System.Text, System.Text.RegularExpressions.\",\n \"runtime\": {\n \"name\": \".NET WebAssembly runtime\",\n \"version\": \"10.0.8\",\n \"detail\": \"Browser-local .NET runtime targeting net10.0.\"\n },\n \"compiler\": {\n \"name\": \"Microsoft.CodeAnalysis.CSharp\",\n \"version\": \"5.3.0\"\n },\n \"standard\": \"C# 14\",\n \"defaultImports\": [\n \"System\",\n \"System.Collections\",\n \"System.Collections.Generic\",\n \"System.Linq\",\n \"System.Numerics\",\n \"System.Text\",\n \"System.Text.RegularExpressions\"\n ]\n },\n \"cpp\": {\n \"language\": \"cpp\",\n \"displayName\": \"C++\",\n \"versionLabel\": \"C++23 (YoWASP Clang 22)\",\n \"description\": \"C++ is compiled with YoWASP Clang/LLD 22.0.0-git20542-10 using the C++23 standard.\\n\\nSubmissions compile to WebAssembly and run in a browser-local WASI-style execution lane. The harness currently compiles with -O0 and -fno-exceptions, with a fixed program stack size.\\n\\nCommon standard library headers are included automatically, including <algorithm>, <array>, <bitset>, <climits>, <cmath>, <cstdint>, <functional>, <limits>, <numeric>, <sstream>, <tuple>, <vector>, <unordered_map>, <unordered_set> and more.\",\n \"runtime\": {\n \"name\": \"WASI/WebAssembly execution lane\",\n \"detail\": \"Compiled and executed in a browser-local WASI-style worker lane.\"\n },\n \"compiler\": {\n \"name\": \"YoWASP Clang/LLD\",\n \"version\": \"22.0.0-git20542-10\"\n },\n \"standard\": \"C++23\",\n \"defaultImports\": [\n \"<algorithm>\",\n \"<array>\",\n \"<bitset>\",\n \"<climits>\",\n \"<cmath>\",\n \"<cstdint>\",\n \"<functional>\",\n \"<limits>\",\n \"<numeric>\",\n \"<sstream>\",\n \"<tuple>\",\n \"<vector>\",\n \"<unordered_map>\",\n \"<unordered_set>\",\n \"<map>\",\n \"<set>\",\n \"<deque>\",\n \"<queue>\",\n \"<stack>\",\n \"<utility>\",\n \"<string>\",\n \"<span>\",\n \"<ranges>\",\n \"<concepts>\",\n \"<any>\",\n \"<bit>\",\n \"<cctype>\",\n \"<cerrno>\",\n \"<cfloat>\",\n \"<charconv>\",\n \"<chrono>\",\n \"<cinttypes>\",\n \"<compare>\",\n \"<complex>\",\n \"<cstddef>\",\n \"<cstdio>\",\n \"<cstdlib>\",\n \"<cstring>\",\n \"<exception>\",\n \"<expected>\",\n \"<forward_list>\",\n \"<initializer_list>\",\n \"<iomanip>\",\n \"<ios>\",\n \"<iostream>\",\n \"<iterator>\",\n \"<list>\",\n \"<memory>\",\n \"<numbers>\",\n \"<optional>\",\n \"<random>\",\n \"<ratio>\",\n \"<regex>\",\n \"<stdexcept>\",\n \"<string_view>\",\n \"<type_traits>\",\n \"<typeindex>\",\n \"<typeinfo>\",\n \"<valarray>\",\n \"<variant>\",\n \"<version>\"\n ],\n \"libraries\": [\n {\n \"name\": \"C++ standard library and WASI libc\",\n \"detail\": \"Provided by the YoWASP Clang toolchain bundle.\"\n }\n ]\n }\n}) as Record<Language, LanguageRuntimeInfo>;\n","import { LANGUAGE_RUNTIME_INFOS } from './generated/runtime-language-info-data';\nimport type { Language } from './runtime-types';\n\nexport interface RuntimeComponentInfo {\n name: string;\n version?: string;\n label?: string;\n detail?: string;\n}\n\nexport interface RuntimeLibraryInfo {\n name: string;\n version?: string;\n importName?: string;\n globalName?: string;\n detail?: string;\n}\n\nexport interface LanguageRuntimeInfo {\n language: Language;\n displayName: string;\n versionLabel: string;\n description: string;\n runtime: RuntimeComponentInfo;\n compiler?: RuntimeComponentInfo;\n engine?: RuntimeComponentInfo;\n standard?: string;\n defaultImports?: readonly string[];\n libraries?: readonly RuntimeLibraryInfo[];\n notes?: readonly string[];\n}\n\nexport { LANGUAGE_RUNTIME_INFOS };\n\nexport const SUPPORTED_LANGUAGE_RUNTIME_INFOS: readonly LanguageRuntimeInfo[] = Object.freeze(\n Object.values(LANGUAGE_RUNTIME_INFOS)\n);\n\nexport function getLanguageRuntimeInfo(language: Language): LanguageRuntimeInfo {\n const info = LANGUAGE_RUNTIME_INFOS[language];\n if (!info) {\n throw new Error(`Runtime info for language \"${language}\" is not implemented yet.`);\n }\n return info;\n}\n\nexport function getSupportedLanguageRuntimeInfos(): readonly LanguageRuntimeInfo[] {\n return SUPPORTED_LANGUAGE_RUNTIME_INFOS;\n}\n","import type { Language } from './runtime-types';\n\nexport const RUNTIME_TRACE_SCHEMA_VERSION = 'runtime-trace-2026-04-28';\n\nexport type RuntimeTraceEventKind =\n | 'line'\n | 'call'\n | 'return'\n | 'read'\n | 'write'\n | 'mutate'\n | 'snapshot'\n | 'stdout'\n | 'exception'\n | 'timeout';\n\nexport type RuntimeTraceTarget =\n | { variable: string; scope?: 'local' | 'global' | 'builtin' | 'receiver' }\n | {\n variable: string;\n path: Array<string | number>;\n indexSources?: Array<string | null>;\n scope?: 'local' | 'global' | 'builtin' | 'receiver';\n }\n | { objectId: string; path?: Array<string | number>; indexSources?: Array<string | null> };\n\nexport interface RuntimeTraceCallFrame {\n function: string;\n line?: number;\n args?: Record<string, unknown> | unknown[];\n}\n\ninterface RuntimeTraceBaseEvent {\n kind: RuntimeTraceEventKind;\n runId: string;\n file?: string;\n line?: number;\n column?: number;\n frameId?: string;\n callStack?: RuntimeTraceCallFrame[];\n}\n\nexport type RuntimeTraceEvent =\n | (RuntimeTraceBaseEvent & { kind: 'line'; line: number; function?: string })\n | (RuntimeTraceBaseEvent & { kind: 'call'; line: number; function: string; args?: Record<string, unknown> | unknown[] })\n | (RuntimeTraceBaseEvent & { kind: 'return'; line: number; function?: string; value?: unknown })\n | (RuntimeTraceBaseEvent & {\n kind: 'read' | 'write';\n line: number;\n target: RuntimeTraceTarget;\n value?: unknown;\n binding?: RuntimeTraceIterationBinding;\n })\n | (RuntimeTraceBaseEvent & { kind: 'mutate'; line: number; target: RuntimeTraceTarget; method?: string; args?: unknown[] })\n | (RuntimeTraceBaseEvent & { kind: 'snapshot'; line: number; target: RuntimeTraceTarget; value: unknown })\n | (RuntimeTraceBaseEvent & { kind: 'stdout'; text: string })\n | (RuntimeTraceBaseEvent & { kind: 'exception'; message: string })\n | (RuntimeTraceBaseEvent & {\n kind: 'timeout';\n message: string;\n reason?: 'trace-limit' | 'line-limit' | 'single-line-limit' | 'client-timeout';\n });\n\nexport interface RuntimeTrace {\n schemaVersion: typeof RUNTIME_TRACE_SCHEMA_VERSION;\n language: Language;\n runId: string;\n events: RuntimeTraceEvent[];\n lineEventCount: number;\n traceStepCount: number;\n}\n\nexport interface RuntimeTraceIterationBinding {\n kind?: 'iteration';\n variable: string;\n}\n\nexport interface RuntimeTraceOptions {\n runId?: string;\n file?: string;\n}\n\nexport function createEmptyRuntimeTrace(\n language: Language,\n options: RuntimeTraceOptions = {}\n): RuntimeTrace {\n return {\n schemaVersion: RUNTIME_TRACE_SCHEMA_VERSION,\n language,\n runId: options.runId ?? `${language}:run`,\n events: [],\n lineEventCount: 0,\n traceStepCount: 0,\n };\n}\n\nexport interface RuntimeTraceParityAccessTarget {\n kind: 'read' | 'write' | 'mutate';\n variable?: string;\n pathDepth?: number;\n}\n\nexport interface RuntimeTraceParitySignature {\n lineSequence: number[];\n eventKindsByLine: Record<number, RuntimeTraceEventKind[]>;\n variableSnapshotsByLine: Record<number, string[]>;\n accessTargetsByLine: Record<number, RuntimeTraceParityAccessTarget[]>;\n callReturnShape: Array<'call' | 'return'>;\n}\n\nfunction sortedUnique(values: string[]): string[] {\n return [...new Set(values)].sort((left, right) => left.localeCompare(right));\n}\n\nfunction sortedUniqueEventKinds(values: RuntimeTraceEventKind[]): RuntimeTraceEventKind[] {\n return [...new Set(values)].sort((left, right) => left.localeCompare(right));\n}\n\nexport function withRuntimeTraceOptions(\n trace: RuntimeTrace,\n options: RuntimeTraceOptions = {}\n): RuntimeTrace {\n const runId = options.runId ?? trace.runId;\n return {\n ...trace,\n runId,\n events: trace.events.map((event) => ({\n ...event,\n runId,\n ...(options.file ? { file: options.file } : {}),\n })),\n };\n}\n\nexport function buildRuntimeTraceParitySignature(trace: RuntimeTrace): RuntimeTraceParitySignature {\n const lineSequence: number[] = [];\n const eventKindsByLine = new Map<number, RuntimeTraceEventKind[]>();\n const variableSnapshotsByLine = new Map<number, string[]>();\n const accessTargetsByLine = new Map<number, RuntimeTraceParityAccessTarget[]>();\n const callReturnShape: Array<'call' | 'return'> = [];\n\n for (const event of trace.events) {\n if (event.kind === 'line' && typeof event.line === 'number') {\n lineSequence.push(event.line);\n }\n\n if (event.kind === 'call' || event.kind === 'return') {\n callReturnShape.push(event.kind);\n }\n\n if (typeof event.line === 'number') {\n const kinds = eventKindsByLine.get(event.line) ?? [];\n kinds.push(event.kind);\n eventKindsByLine.set(event.line, kinds);\n }\n\n if (event.kind === 'snapshot' && 'variable' in event.target && typeof event.line === 'number') {\n const variables = variableSnapshotsByLine.get(event.line) ?? [];\n variables.push(event.target.variable);\n variableSnapshotsByLine.set(event.line, variables);\n }\n\n if (\n (event.kind === 'read' || event.kind === 'write' || event.kind === 'mutate') &&\n 'variable' in event.target &&\n typeof event.line === 'number'\n ) {\n const accesses = accessTargetsByLine.get(event.line) ?? [];\n accesses.push({\n kind: event.kind,\n variable: event.target.variable,\n pathDepth: 'path' in event.target && Array.isArray(event.target.path)\n ? event.target.path.length\n : undefined,\n });\n accessTargetsByLine.set(event.line, accesses);\n }\n }\n\n return {\n lineSequence,\n eventKindsByLine: Object.fromEntries(\n [...eventKindsByLine.entries()].map(([line, kinds]) => [\n line,\n sortedUniqueEventKinds(kinds),\n ])\n ),\n variableSnapshotsByLine: Object.fromEntries(\n [...variableSnapshotsByLine.entries()].map(([line, variables]) => [\n line,\n sortedUnique(variables),\n ])\n ),\n accessTargetsByLine: Object.fromEntries(\n [...accessTargetsByLine.entries()].map(([line, accesses]) => [\n line,\n accesses.sort((left, right) => {\n const leftKey = `${left.kind}:${left.variable ?? ''}:${left.pathDepth ?? 0}`;\n const rightKey = `${right.kind}:${right.variable ?? ''}:${right.pathDepth ?? 0}`;\n return leftKey.localeCompare(rightKey);\n }),\n ])\n ),\n callReturnShape,\n };\n}\n","import type { Language } from './runtime-types';\nimport type { RuntimeTrace } from './runtime-trace';\n\nexport type RuntimeRawEmissionKind =\n | 'line'\n | 'call'\n | 'return'\n | 'exception'\n | 'stdout'\n | 'snapshot'\n | 'read'\n | 'write'\n | 'mutate'\n | 'timeout';\n\nexport interface RuntimeRawEmissionSummary {\n language: Language;\n kinds: RuntimeRawEmissionKind[];\n unsupported: string[];\n}\n\nfunction sortedUnique<T extends string>(values: T[]): T[] {\n return [...new Set(values)].sort((left, right) => left.localeCompare(right));\n}\n\nconst FORBIDDEN_RUNTIME_TRACE_TOKENS = [\n 'visualization',\n 'objectKinds',\n 'hashMaps',\n 'graph-adjacency',\n 'linked-list',\n 'tree',\n] as const;\n\nconst FORBIDDEN_RUNTIME_TRACE_KEYS = new Set([\n 'visualization',\n 'objectKinds',\n 'hashMaps',\n 'graph-adjacency',\n 'linked-list',\n]);\n\nexport function normalizeJavaNativeTraceJsonPayload(payload: string): string {\n return payload\n .replace(/(?<![A-Za-z0-9_\"])-Infinity(?![A-Za-z0-9_\"])/g, '\"-Infinity\"')\n .replace(/(?<![A-Za-z0-9_\"])Infinity(?![A-Za-z0-9_\"])/g, '\"Infinity\"')\n .replace(/(?<![A-Za-z0-9_\"])NaN(?![A-Za-z0-9_\"])/g, '\"NaN\"');\n}\n\nfunction forbiddenRuntimeTraceTokens(value: unknown): string[] {\n const tokens = new Set<string>();\n collectForbiddenRuntimeTraceTokens(value, tokens, null, false);\n return FORBIDDEN_RUNTIME_TRACE_TOKENS.filter((token) => tokens.has(token));\n}\n\nfunction collectForbiddenRuntimeTraceTokens(\n value: unknown,\n tokens: Set<string>,\n parentKey: string | null,\n semanticPayload: boolean\n): void {\n if (typeof value === 'string') {\n if (\n (semanticPayload || parentKey === 'kind' || parentKey === 'type' || parentKey === 'category') &&\n (FORBIDDEN_RUNTIME_TRACE_TOKENS as readonly string[]).includes(value)\n ) {\n tokens.add(value);\n }\n return;\n }\n if (value === null || typeof value !== 'object') return;\n if (Array.isArray(value)) {\n for (const item of value) collectForbiddenRuntimeTraceTokens(item, tokens, parentKey, semanticPayload);\n return;\n }\n const entries = Object.entries(value as Record<string, unknown>);\n const objectSemanticPayload = entries.some(([key, child]) => {\n if (parentKey !== 'args' && FORBIDDEN_RUNTIME_TRACE_KEYS.has(key)) return true;\n return (\n (key === 'kind' || key === 'type' || key === 'category') &&\n typeof child === 'string' &&\n (FORBIDDEN_RUNTIME_TRACE_TOKENS as readonly string[]).includes(child)\n );\n });\n for (const [key, child] of entries) {\n if (parentKey !== 'args' && FORBIDDEN_RUNTIME_TRACE_KEYS.has(key)) {\n tokens.add(key);\n }\n if (key === 'target' || key === 'variable' || key === 'function') continue;\n collectForbiddenRuntimeTraceTokens(child, tokens, key, semanticPayload || objectSemanticPayload);\n }\n}\n\nfunction unsupportedForbiddenPayload(label: string, value: unknown): string | null {\n const tokens = forbiddenRuntimeTraceTokens(value);\n if (tokens.length === 0) return null;\n return `${label} contains forbidden runtime trace token(s): ${tokens.join(', ')}`;\n}\n\nfunction javaNativeTracePayloadKind(event: string): RuntimeRawEmissionKind | null {\n if (!event.startsWith('trace:')) return null;\n try {\n const parsed = JSON.parse(normalizeJavaNativeTraceJsonPayload(event.slice('trace:'.length))) as { kind?: unknown };\n if (parsed.kind === 'line') return 'line';\n if (parsed.kind === 'call') return 'call';\n if (parsed.kind === 'return') return 'return';\n if (parsed.kind === 'exception') return 'exception';\n if (parsed.kind === 'timeout') return 'timeout';\n if (parsed.kind === 'stdout') return 'stdout';\n if (parsed.kind === 'snapshot') return 'snapshot';\n if (parsed.kind === 'read') return 'read';\n if (parsed.kind === 'write') return 'write';\n if (parsed.kind === 'mutate') return 'mutate';\n } catch {\n return null;\n }\n return null;\n}\n\nexport function summarizeJavaRawEmissions(events: string[]): RuntimeRawEmissionSummary {\n const kinds: RuntimeRawEmissionKind[] = [];\n const unsupported: string[] = [];\n\n for (const [index, event] of events.entries()) {\n if (event.startsWith('trace:')) {\n try {\n const parsed = JSON.parse(normalizeJavaNativeTraceJsonPayload(event.slice('trace:'.length))) as unknown;\n const forbiddenPayload = unsupportedForbiddenPayload(`java trace event ${index}`, parsed);\n if (forbiddenPayload) {\n unsupported.push(forbiddenPayload);\n continue;\n }\n } catch {\n // Let the native-kind check below classify malformed trace payloads as unsupported.\n }\n }\n const nativeKind = javaNativeTracePayloadKind(event);\n if (nativeKind) {\n kinds.push(nativeKind);\n continue;\n }\n unsupported.push(event);\n }\n\n return {\n language: 'java',\n kinds: sortedUnique(kinds),\n unsupported,\n };\n}\n\nexport function summarizeRuntimeTraceEmissions(trace: RuntimeTrace): RuntimeRawEmissionSummary {\n const kinds: RuntimeRawEmissionKind[] = [];\n const unsupported: string[] = [];\n for (const [index, event] of trace.events.entries()) {\n const forbiddenPayload = unsupportedForbiddenPayload(`${trace.language} trace event ${index}`, event);\n if (forbiddenPayload) {\n unsupported.push(forbiddenPayload);\n continue;\n }\n switch (event.kind) {\n case 'line':\n case 'call':\n case 'return':\n case 'exception':\n case 'timeout':\n case 'stdout':\n case 'snapshot':\n case 'read':\n case 'write':\n case 'mutate':\n kinds.push(event.kind);\n break;\n default:\n unsupported.push(`${trace.language} trace event ${index} has unsupported kind \"${String((event as { kind?: unknown }).kind)}\"`);\n }\n }\n return {\n language: trace.language,\n kinds: sortedUnique(kinds),\n unsupported,\n };\n}\n\nexport function assertSupportedRawEmissions(summary: RuntimeRawEmissionSummary, label: string): void {\n if (summary.unsupported.length > 0) {\n throw new Error(\n `${label} emitted unsupported raw runtime payloads:\\n${summary.unsupported.slice(0, 20).join('\\n')}`\n );\n }\n}\n\nexport interface RuntimeRawEmissionParityMismatch {\n language: Language;\n missing: RuntimeRawEmissionKind[];\n extra: RuntimeRawEmissionKind[];\n}\n\nfunction parityKinds(summary: RuntimeRawEmissionSummary): RuntimeRawEmissionKind[] {\n return summary.kinds;\n}\n\nexport function compareRawEmissionParity(\n reference: RuntimeRawEmissionSummary,\n summaries: RuntimeRawEmissionSummary[]\n): RuntimeRawEmissionParityMismatch[] {\n const expected = new Set(parityKinds(reference));\n const mismatches: RuntimeRawEmissionParityMismatch[] = [];\n\n for (const summary of summaries) {\n if (summary.language === reference.language) continue;\n const actual = new Set(parityKinds(summary));\n const missing = [...expected].filter((kind) => !actual.has(kind)).sort((left, right) => left.localeCompare(right));\n const extra = [...actual].filter((kind) => !expected.has(kind)).sort((left, right) => left.localeCompare(right));\n if (missing.length > 0 || extra.length > 0) {\n mismatches.push({ language: summary.language, missing, extra });\n }\n }\n\n return mismatches;\n}\n","import {\n RUNTIME_TRACE_SCHEMA_VERSION,\n type RuntimeTraceEvent,\n type RuntimeTrace,\n type RuntimeTraceOptions,\n} from '../runtime-trace';\nimport {\n assertSupportedRawEmissions,\n normalizeJavaNativeTraceJsonPayload,\n summarizeJavaRawEmissions,\n} from '../runtime-raw-emission-contract';\n\nexport function normalizeJavaSerializedResult(output: unknown): unknown {\n if (typeof output !== 'string') {\n return output;\n }\n try {\n return JSON.parse(output) as unknown;\n } catch {\n return output;\n }\n}\n\nfunction isNativeJavaTraceEvent(event: string): boolean {\n return event.startsWith('trace:');\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 === '/') break;\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)) return false;\n if (!/[A-Za-z_][A-Za-z0-9_]*\\s*\\([^{};]*\\)/.test(trimmed)) return false;\n return /(?:\\{\\s*)?$/.test(trimmed);\n}\n\nfunction buildLocalDeclarationNamesByLine(sourceText: string | undefined): Map<number, string[]> {\n const namesByLine = new Map<number, string[]>();\n if (typeof sourceText !== 'string' || sourceText.length === 0) return namesByLine;\n\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)) continue;\n\n const names: string[] = [];\n const declarationPattern =\n /\\b(?:final\\s+)?(?:[A-Za-z_][A-Za-z0-9_.$]*(?:\\s*<[^;=(){}]+>)?(?:\\s*\\[\\])?)\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=/g;\n for (const match of text.matchAll(declarationPattern)) {\n if (match[1]) names.push(match[1]);\n }\n if (names.length > 0) namesByLine.set(index + 1, names);\n }\n\n return namesByLine;\n}\n\nfunction removeSameLineMutationDeclarationSnapshotEvents(\n events: RuntimeTraceEvent[],\n sourceText: string | undefined\n): RuntimeTraceEvent[] {\n const declarationNamesByLine = buildLocalDeclarationNamesByLine(sourceText);\n if (declarationNamesByLine.size === 0) return events;\n const mutationVariablesByLine = new Map<number, Set<string>>();\n for (const event of events) {\n if (event.kind !== 'mutate' || typeof event.line !== 'number' || !('variable' in event.target)) continue;\n const variables = mutationVariablesByLine.get(event.line) ?? new Set<string>();\n variables.add(event.target.variable);\n mutationVariablesByLine.set(event.line, variables);\n }\n if (mutationVariablesByLine.size === 0) return events;\n return events.filter((event) => {\n if (event.kind !== 'snapshot' || typeof event.line !== 'number' || !('variable' in event.target)) return true;\n const declaredNames = declarationNamesByLine.get(event.line);\n if (!declaredNames?.includes(event.target.variable)) return true;\n const mutationVariables = mutationVariablesByLine.get(event.line);\n return mutationVariables?.has(event.target.variable) === true;\n });\n}\n\nfunction collectJavaLineDeclarationsForHeaderExpansion(line: string): string[] {\n const names: string[] = [];\n const declarationPattern =\n /\\b(?:final\\s+)?((?:boolean|byte|char|short|int|long|float|double|String|Object|[A-Za-z_][A-Za-z0-9_<>.?]*(?:\\s*<[^,;=(){}:]+>)?)\\s*(?:\\[\\s*\\])*)\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*(?==)/g;\n const skippedNames = new Set(['class', 'interface', 'enum', 'record', 'return', 'new']);\n for (const match of line.matchAll(declarationPattern)) {\n const typeSource = match[1] ?? '';\n const name = match[2];\n if (!name || skippedNames.has(name) || name.startsWith('__tracecode')) continue;\n if (typeSource.includes('[')) continue;\n names.push(name);\n }\n return names;\n}\n\nfunction collectJavaControlHeaderDeclarations(line: string): string[] {\n const forMatch = /\\bfor\\s*\\(\\s*(?:final\\s+)?(?:[A-Za-z_][A-Za-z0-9_<>.?]*(?:\\s*<[^;=(){}:]+>)?|\\w+(?:\\s*\\[\\s*\\])*)\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*(?:=|:)/.exec(line);\n return forMatch?.[1] ? [forMatch[1]] : [];\n}\n\ninterface JavaLoopHeaderInfo {\n line: number;\n excludedVariables: Set<string>;\n headerVariables: Set<string>;\n}\n\nfunction buildJavaControlHeaderInfo(sourceText: string | undefined): {\n loopBodyLineToHeader: Map<number, JavaLoopHeaderInfo>;\n headerLineToExcludedVariables: Map<number, Set<string>>;\n} | null {\n if (typeof sourceText !== 'string' || sourceText.length === 0) return null;\n const lines = sourceText.split(/\\r?\\n/);\n const loopBodyLineToHeader = new Map<number, JavaLoopHeaderInfo>();\n const headerLineToExcludedVariables = new Map<number, Set<string>>();\n\n for (let index = 0; index < lines.length; index += 1) {\n const line = lines[index] ?? '';\n const isLoopHeader = /\\b(?:for|while)\\s*\\(/.test(line);\n const isControlHeader = /\\b(?:for|while|if|else\\s+if)\\s*\\(/.test(line);\n if (!isControlHeader || !line.includes('{')) continue;\n\n for (let bodyIndex = index + 1; bodyIndex < lines.length; bodyIndex += 1) {\n const trimmed = (lines[bodyIndex] ?? '').trim();\n if (trimmed.length === 0) continue;\n if (trimmed.startsWith('}')) break;\n const headerInfo: JavaLoopHeaderInfo = {\n line: index + 1,\n excludedVariables: new Set(collectJavaLineDeclarationsForHeaderExpansion(lines[bodyIndex] ?? '')),\n headerVariables: new Set(collectJavaControlHeaderDeclarations(line)),\n };\n if (isLoopHeader) loopBodyLineToHeader.set(bodyIndex + 1, headerInfo);\n headerLineToExcludedVariables.set(index + 1, headerInfo.excludedVariables);\n break;\n }\n }\n\n if (loopBodyLineToHeader.size === 0 && headerLineToExcludedVariables.size === 0) return null;\n return { loopBodyLineToHeader, headerLineToExcludedVariables };\n}\n\nfunction eventLine(event: RuntimeTraceEvent): number | null {\n return typeof event.line === 'number' && Number.isFinite(event.line) && event.line > 0\n ? event.line\n : null;\n}\n\nfunction eventSnapshotVariable(event: RuntimeTraceEvent): string | null {\n if (event.kind !== 'snapshot') return null;\n const target = event.target;\n if (!target || typeof target !== 'object' || !('variable' in target)) return null;\n const variable = target.variable;\n return typeof variable === 'string' && variable.length > 0 ? variable : null;\n}\n\nfunction cloneRuntimeEventAtLine(event: RuntimeTraceEvent, line: number): RuntimeTraceEvent {\n return { ...event, line };\n}\n\nfunction expandJavaLoopHeaderTraceEvents(\n events: RuntimeTraceEvent[],\n sourceText: string | undefined\n): RuntimeTraceEvent[] {\n if (events.length === 0) return events;\n const controlHeaderInfo = buildJavaControlHeaderInfo(sourceText);\n if (!controlHeaderInfo) return events;\n const { loopBodyLineToHeader, headerLineToExcludedVariables } = controlHeaderInfo;\n\n const expanded: RuntimeTraceEvent[] = [];\n const latestSnapshotByVariable = new Map<string, RuntimeTraceEvent>();\n let lastLineEventLine: number | null = null;\n for (let index = 0; index < events.length; index += 1) {\n const event = events[index];\n const line = eventLine(event);\n const snapshotVariable = eventSnapshotVariable(event);\n if (\n line !== null &&\n snapshotVariable &&\n headerLineToExcludedVariables.get(line)?.has(snapshotVariable)\n ) {\n continue;\n }\n\n const headerInfo = line === null ? undefined : loopBodyLineToHeader.get(line);\n const headerLine = headerInfo?.line;\n if (headerInfo && typeof headerLine === 'number' && event.kind === 'line' && lastLineEventLine !== headerLine) {\n expanded.push(cloneRuntimeEventAtLine(event, headerLine));\n for (const [variable, snapshotEvent] of latestSnapshotByVariable) {\n if (headerInfo.excludedVariables.has(variable)) continue;\n expanded.push(cloneRuntimeEventAtLine(snapshotEvent, headerLine));\n }\n lastLineEventLine = headerLine;\n }\n\n if (headerInfo && typeof headerLine === 'number' && event.kind === 'line') {\n for (let lookahead = index + 1; lookahead < events.length; lookahead += 1) {\n if (eventLine(events[lookahead]) !== line) break;\n const variable = eventSnapshotVariable(events[lookahead]);\n if (!variable || !headerInfo.headerVariables.has(variable)) continue;\n expanded.push(cloneRuntimeEventAtLine(events[lookahead], headerLine));\n }\n }\n\n expanded.push(event);\n if (event.kind === 'line') {\n lastLineEventLine = line;\n }\n if (snapshotVariable) {\n latestSnapshotByVariable.set(snapshotVariable, event);\n }\n }\n return expanded;\n}\n\nfunction nativeJavaTraceEventsToTrace(\n events: string[],\n sourceText: string | undefined,\n options: RuntimeTraceOptions = {}\n): RuntimeTrace {\n const runId = options.runId ?? 'java:run';\n let parsedEvents: RuntimeTraceEvent[] = events.map((event) => {\n let parsed: RuntimeTraceEvent;\n try {\n parsed = JSON.parse(normalizeJavaNativeTraceJsonPayload(event.slice('trace:'.length))) as RuntimeTraceEvent;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid Java native runtime trace event: ${message}\\n${event.slice(0, 500)}`);\n }\n return {\n ...parsed,\n runId,\n ...(options.file ? { file: options.file } : {}),\n };\n });\n parsedEvents = removeSameLineMutationDeclarationSnapshotEvents(parsedEvents, sourceText);\n parsedEvents = expandJavaLoopHeaderTraceEvents(parsedEvents, sourceText);\n\n return {\n schemaVersion: RUNTIME_TRACE_SCHEMA_VERSION,\n language: 'java',\n runId,\n events: parsedEvents,\n lineEventCount: parsedEvents.filter((event) => event.kind === 'line').length,\n traceStepCount: parsedEvents.length,\n };\n}\n\nexport function javaTraceHooksEventsToRuntimeTrace(\n events: string[],\n sourceText?: string,\n options: RuntimeTraceOptions = {}\n): RuntimeTrace {\n assertSupportedRawEmissions(summarizeJavaRawEmissions(events), 'java');\n if (events.length === 0) {\n return {\n schemaVersion: RUNTIME_TRACE_SCHEMA_VERSION,\n language: 'java',\n runId: options.runId ?? 'java:run',\n events: [],\n lineEventCount: 0,\n traceStepCount: 0,\n };\n }\n if (!events.every(isNativeJavaTraceEvent)) {\n throw new Error('Java TraceHooks must emit native runtime trace events. Unsupported line=... events are no longer supported.');\n }\n return nativeJavaTraceEventsToTrace(events, sourceText, options);\n}\n","export type RuntimeDiagnosticLevel = 'debug' | 'info' | 'warn' | 'error';\n\nexport interface RuntimeDiagnosticEvent {\n schema: 'tracecode.runtime-diagnostic.v1';\n source: 'harness';\n component: string;\n runtime?: string;\n phase: string;\n message: string;\n detail?: unknown;\n}\n\nconst CONSOLE_METHOD_BY_LEVEL: Record<RuntimeDiagnosticLevel, 'debug' | 'info' | 'warn' | 'error'> = {\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n};\n\nexport function runtimeDiagnosticEvent(params: Omit<RuntimeDiagnosticEvent, 'schema' | 'source'>): RuntimeDiagnosticEvent {\n return {\n schema: 'tracecode.runtime-diagnostic.v1',\n source: 'harness',\n ...params,\n };\n}\n\nexport function logRuntimeDiagnostic(\n level: RuntimeDiagnosticLevel,\n params: Omit<RuntimeDiagnosticEvent, 'schema' | 'source'>,\n options: { enabled?: boolean } = {}\n): void {\n if (options.enabled === false && level !== 'error') {\n return;\n }\n\n const method = CONSOLE_METHOD_BY_LEVEL[level] ?? 'info';\n console[method]('[TraceRuntime]', runtimeDiagnosticEvent(params));\n}\n","import type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { logRuntimeDiagnostic } from './runtime-diagnostics';\n\ntype MessageId = string;\nexport type JavaScriptExecutionStyle = 'function' | 'solution-method' | 'ops-class';\nexport type JavaScriptWorkerLanguage = 'javascript' | 'typescript';\n\nexport interface JavaScriptWorkerClientOptions {\n workerUrl: string;\n debug?: boolean;\n}\n\ninterface PendingMessage {\n resolve: (value: unknown) => void;\n reject: (error: Error) => void;\n timeoutId?: ReturnType<typeof setTimeout>;\n}\n\ninterface WorkerMessage {\n id?: MessageId;\n type: string;\n payload?: unknown;\n}\n\ninterface InitResult {\n success: boolean;\n loadTimeMs: number;\n}\n\ninterface WarmupResult {\n success: boolean;\n loadTimeMs: number;\n}\n\nconst EXECUTION_TIMEOUT_MS = 20000;\nconst INTERVIEW_MODE_TIMEOUT_MS = 5000;\nconst TRACING_TIMEOUT_MS = 20000;\nconst INIT_TIMEOUT_MS = 10000;\nconst TYPESCRIPT_WARMUP_TIMEOUT_MS = 30000;\nconst MESSAGE_TIMEOUT_MS = 12000;\nconst WORKER_READY_TIMEOUT_MS = 10000;\n\nexport class JavaScriptWorkerClient {\n private worker: Worker | null = null;\n private pendingMessages = new Map<MessageId, PendingMessage>();\n private messageId = 0;\n private isInitializing = false;\n private initPromise: Promise<InitResult> | null = null;\n private warmupPromises = new Map<JavaScriptWorkerLanguage, Promise<WarmupResult>>();\n private workerReadyPromise: Promise<void> | null = null;\n private workerReadyResolve: (() => void) | null = null;\n private workerReadyReject: ((error: Error) => void) | null = null;\n private readonly debug: boolean;\n\n constructor(private readonly options: JavaScriptWorkerClientOptions) {\n this.debug = options.debug ?? process.env.NODE_ENV === 'development';\n }\n\n isSupported(): boolean {\n return typeof Worker !== 'undefined';\n }\n\n private getWorker(): Worker {\n if (this.worker) return this.worker;\n\n if (!this.isSupported()) {\n throw new Error('Web Workers are not supported in this environment');\n }\n\n this.workerReadyPromise = new Promise((resolve, reject) => {\n this.workerReadyResolve = resolve;\n this.workerReadyReject = (error: Error) => reject(error);\n });\n\n const workerUrl =\n this.debug && !this.options.workerUrl.includes('?')\n ? `${this.options.workerUrl}?dev=${Date.now()}`\n : this.options.workerUrl;\n this.worker = new Worker(workerUrl);\n\n this.worker.onmessage = (event: MessageEvent<WorkerMessage>) => {\n const { id, type, payload } = event.data;\n\n if (type === 'worker-ready') {\n this.workerReadyResolve?.();\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n logRuntimeDiagnostic('info', {\n component: 'JavaScriptWorkerClient',\n runtime: 'javascript',\n phase: 'worker-ready',\n message: 'JavaScript worker is ready.',\n }, { enabled: this.debug });\n return;\n }\n\n if (id) {\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n\n this.pendingMessages.delete(id);\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n\n if (type === 'error') {\n pending.reject(new Error((payload as { error: string }).error));\n return;\n }\n\n pending.resolve(payload);\n }\n };\n\n this.worker.onerror = (error) => {\n logRuntimeDiagnostic('error', {\n component: 'JavaScriptWorkerClient',\n runtime: 'javascript',\n phase: 'worker-error',\n message: 'JavaScript worker emitted an error event.',\n detail: {\n message: error.message,\n filename: error.filename,\n lineno: error.lineno,\n colno: error.colno,\n },\n });\n const workerError = new Error('Worker error');\n this.workerReadyReject?.(workerError);\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n\n for (const [id, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(workerError);\n this.pendingMessages.delete(id);\n }\n };\n\n return this.worker;\n }\n\n private async waitForWorkerReady(): Promise<void> {\n const readyPromise = this.workerReadyPromise;\n if (!readyPromise) return;\n\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n const timeoutError = new Error(\n `JavaScript worker failed to initialize in time (${Math.round(WORKER_READY_TIMEOUT_MS / 1000)}s)`\n );\n this.terminateAndReset(timeoutError);\n reject(timeoutError);\n }, WORKER_READY_TIMEOUT_MS);\n\n readyPromise\n .then(() => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve();\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error instanceof Error ? error : new Error(String(error)));\n });\n });\n }\n\n private async sendMessage<T>(\n type: string,\n payload?: unknown,\n timeoutMs: number = MESSAGE_TIMEOUT_MS\n ): Promise<T> {\n const worker = this.getWorker();\n await this.waitForWorkerReady();\n const id = String(++this.messageId);\n\n return new Promise<T>((resolve, reject) => {\n this.pendingMessages.set(id, {\n resolve: resolve as (value: unknown) => void,\n reject,\n });\n\n const timeoutId = globalThis.setTimeout(() => {\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n pending.reject(new Error(`Worker request timed out: ${type}`));\n }, timeoutMs);\n\n const pending = this.pendingMessages.get(id);\n if (pending) pending.timeoutId = timeoutId;\n\n worker.postMessage({ id, type, payload });\n });\n }\n\n private async executeWithTimeout<T>(executor: () => Promise<T>, timeoutMs: number): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let settled = false;\n\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n this.terminateAndReset();\n reject(\n new Error(\n `Execution timed out (possible infinite loop). Code execution was stopped after ${Math.round(timeoutMs / 1000)} seconds.`\n )\n );\n }, timeoutMs);\n\n executor()\n .then((result) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve(result);\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error);\n });\n });\n }\n\n private terminateAndReset(reason: Error = new Error('Worker was terminated')): void {\n this.workerReadyReject?.(reason);\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n }\n this.initPromise = null;\n this.warmupPromises.clear();\n this.isInitializing = false;\n this.workerReadyPromise = null;\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n\n for (const [, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(reason);\n }\n this.pendingMessages.clear();\n }\n\n async init(): Promise<InitResult> {\n if (this.initPromise) return this.initPromise;\n\n if (this.isInitializing) {\n await new Promise((resolve) => globalThis.setTimeout(resolve, 100));\n return this.init();\n }\n\n this.isInitializing = true;\n this.initPromise = this.sendMessage<InitResult>('init', undefined, INIT_TIMEOUT_MS);\n\n try {\n return await this.initPromise;\n } catch (error) {\n this.initPromise = null;\n throw error;\n } finally {\n this.isInitializing = false;\n }\n }\n\n async warmup(language: JavaScriptWorkerLanguage = 'javascript'): Promise<WarmupResult> {\n const existing = this.warmupPromises.get(language);\n if (existing) return existing;\n\n const warmupPromise = (async () => {\n await this.init();\n return this.sendMessage<WarmupResult>(\n 'warmup',\n { language },\n language === 'typescript' ? TYPESCRIPT_WARMUP_TIMEOUT_MS : INIT_TIMEOUT_MS\n );\n })();\n\n this.warmupPromises.set(language, warmupPromise);\n\n try {\n return await warmupPromise;\n } catch (error) {\n this.warmupPromises.delete(language);\n throw error;\n }\n }\n\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: {\n maxTraceSteps?: number;\n maxLineEvents?: number;\n maxSingleLineHits?: number;\n maxStoredEvents?: number;\n minimalTrace?: boolean;\n },\n executionStyle: JavaScriptExecutionStyle = 'function',\n language: JavaScriptWorkerLanguage = 'javascript'\n ): Promise<ExecutionResult> {\n await this.init();\n return this.executeWithTimeout(\n () =>\n this.sendMessage<ExecutionResult>(\n 'execute-with-tracing',\n {\n code,\n functionName,\n inputs,\n options,\n executionStyle,\n language,\n },\n TRACING_TIMEOUT_MS + 2000\n ),\n TRACING_TIMEOUT_MS\n );\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: JavaScriptExecutionStyle = 'function',\n language: JavaScriptWorkerLanguage = 'javascript'\n ): Promise<CodeExecutionResult> {\n await this.init();\n return this.executeWithTimeout(\n () =>\n this.sendMessage<CodeExecutionResult>(\n 'execute-code',\n {\n code,\n functionName,\n inputs,\n executionStyle,\n language,\n },\n EXECUTION_TIMEOUT_MS + 2000\n ),\n EXECUTION_TIMEOUT_MS\n );\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: JavaScriptExecutionStyle = 'function',\n language: JavaScriptWorkerLanguage = 'javascript'\n ): Promise<CodeExecutionResult> {\n await this.init();\n\n try {\n const result = await this.executeWithTimeout(\n () =>\n this.sendMessage<CodeExecutionResult>(\n 'execute-code-interview',\n {\n code,\n functionName,\n inputs,\n executionStyle,\n language,\n },\n INTERVIEW_MODE_TIMEOUT_MS + 2000\n ),\n INTERVIEW_MODE_TIMEOUT_MS\n );\n\n if (!result.success && result.error) {\n const normalized = result.error.toLowerCase();\n const isTimeoutOrResourceLimit =\n normalized.includes('timed out') ||\n normalized.includes('infinite loop') ||\n normalized.includes('line-limit') ||\n normalized.includes('single-line-limit') ||\n normalized.includes('recursion-limit') ||\n normalized.includes('trace-limit') ||\n normalized.includes('line events') ||\n normalized.includes('trace steps') ||\n normalized.includes('call depth');\n if (isTimeoutOrResourceLimit) {\n return {\n success: false,\n output: null,\n error: 'Time Limit Exceeded',\n consoleOutput: result.consoleOutput ?? [],\n };\n }\n }\n\n return result;\n } catch {\n return {\n success: false,\n output: null,\n error: 'Time Limit Exceeded',\n consoleOutput: [],\n };\n }\n }\n\n terminate(): void {\n this.terminateAndReset();\n }\n}\n\nexport function isJavaScriptWorkerSupported(): boolean {\n return typeof Worker !== 'undefined';\n}\n","import type {\n LanguageRuntimeProfile,\n RuntimeExecutionStyle,\n} from '../../harness-core/src/runtime-types';\n\ntype RuntimeRequestKind = 'execute' | 'trace' | 'interview';\n\ninterface RuntimeRequestSupportOptions {\n request: RuntimeRequestKind;\n executionStyle: RuntimeExecutionStyle;\n functionName?: string | null;\n}\n\nfunction isScriptRequest(functionName: string | null | undefined): boolean {\n if (functionName == null) return true;\n return functionName.trim().length === 0;\n}\n\nfunction executionStyleLabel(executionStyle: RuntimeExecutionStyle): string {\n if (executionStyle === 'solution-method') return 'solution-method';\n if (executionStyle === 'ops-class') return 'ops-class';\n return 'function';\n}\n\nfunction isExecutionStyleSupported(\n profile: LanguageRuntimeProfile,\n executionStyle: RuntimeExecutionStyle\n): boolean {\n const styles = profile.capabilities.execution.styles;\n if (executionStyle === 'solution-method') return styles.solutionMethod;\n if (executionStyle === 'ops-class') return styles.opsClass;\n return styles.function;\n}\n\nfunction describeRequest(request: RuntimeRequestKind): string {\n if (request === 'trace') return 'tracing';\n if (request === 'interview') return 'interview execution';\n return 'execution';\n}\n\nexport function assertRuntimeRequestSupported(\n profile: LanguageRuntimeProfile,\n options: RuntimeRequestSupportOptions\n): void {\n if (options.request === 'trace' && !profile.capabilities.tracing.supported) {\n throw new Error(`Runtime \"${profile.language}\" does not support tracing.`);\n }\n\n if (options.request === 'interview' && !profile.capabilities.execution.styles.interviewMode) {\n throw new Error(`Runtime \"${profile.language}\" does not support interview execution.`);\n }\n\n if (!isExecutionStyleSupported(profile, options.executionStyle)) {\n throw new Error(\n `Runtime \"${profile.language}\" does not support execution style \"${executionStyleLabel(options.executionStyle)}\".`\n );\n }\n\n if (isScriptRequest(options.functionName) && !profile.capabilities.execution.styles.script) {\n throw new Error(`Runtime \"${profile.language}\" does not support script mode ${describeRequest(options.request)}.`);\n }\n}\n","import type { Language, LanguageRuntimeProfile } from '../../harness-core/src/runtime-types';\n\nconst PYTHON_RUNTIME_PROFILE: LanguageRuntimeProfile = {\n language: 'python',\n maturity: 'stable',\n capabilities: {\n execution: {\n styles: {\n function: true,\n solutionMethod: true,\n opsClass: true,\n script: true,\n interviewMode: true,\n },\n timeouts: {\n clientTimeouts: true,\n runtimeTimeouts: true,\n },\n },\n tracing: {\n supported: true,\n events: {\n line: true,\n call: true,\n return: true,\n exception: true,\n stdout: true,\n timeout: true,\n },\n controls: {\n maxTraceSteps: true,\n maxLineEvents: true,\n maxSingleLineHits: true,\n maxStoredEvents: true,\n minimalTrace: true,\n },\n fidelity: {\n preciseLineMapping: true,\n stableFunctionNames: true,\n callStack: true,\n },\n },\n diagnostics: {\n compileErrors: false,\n runtimeErrors: true,\n mappedErrorLines: true,\n stackTraces: false,\n },\n structures: {\n treeNodeRefs: true,\n listNodeRefs: true,\n mapSerialization: true,\n setSerialization: true,\n graphSerialization: true,\n cycleReferences: true,\n },\n },\n};\n\nconst JAVASCRIPT_RUNTIME_PROFILE: LanguageRuntimeProfile = {\n language: 'javascript',\n maturity: 'stable',\n capabilities: {\n execution: {\n styles: {\n function: true,\n solutionMethod: true,\n opsClass: true,\n script: true,\n interviewMode: true,\n },\n timeouts: {\n clientTimeouts: true,\n runtimeTimeouts: false,\n },\n },\n tracing: {\n supported: true,\n events: {\n line: true,\n call: true,\n return: true,\n exception: true,\n stdout: false,\n timeout: true,\n },\n controls: {\n maxTraceSteps: true,\n maxLineEvents: true,\n maxSingleLineHits: true,\n maxStoredEvents: true,\n minimalTrace: true,\n },\n fidelity: {\n preciseLineMapping: true,\n stableFunctionNames: true,\n callStack: true,\n },\n },\n diagnostics: {\n compileErrors: false,\n runtimeErrors: true,\n mappedErrorLines: false,\n stackTraces: false,\n },\n structures: {\n treeNodeRefs: true,\n listNodeRefs: true,\n mapSerialization: true,\n setSerialization: true,\n graphSerialization: true,\n cycleReferences: true,\n },\n },\n};\n\nconst TYPESCRIPT_RUNTIME_PROFILE: LanguageRuntimeProfile = {\n language: 'typescript',\n maturity: 'stable',\n capabilities: {\n execution: {\n styles: {\n function: true,\n solutionMethod: true,\n opsClass: true,\n script: true,\n interviewMode: true,\n },\n timeouts: {\n clientTimeouts: true,\n runtimeTimeouts: false,\n },\n },\n tracing: {\n supported: true,\n events: {\n line: true,\n call: true,\n return: true,\n exception: true,\n stdout: false,\n timeout: true,\n },\n controls: {\n maxTraceSteps: true,\n maxLineEvents: true,\n maxSingleLineHits: true,\n maxStoredEvents: true,\n minimalTrace: true,\n },\n fidelity: {\n preciseLineMapping: true,\n stableFunctionNames: true,\n callStack: true,\n },\n },\n diagnostics: {\n compileErrors: true,\n runtimeErrors: true,\n mappedErrorLines: true,\n stackTraces: false,\n },\n structures: {\n treeNodeRefs: true,\n listNodeRefs: true,\n mapSerialization: true,\n setSerialization: true,\n graphSerialization: true,\n cycleReferences: true,\n },\n },\n};\n\nconst JAVA_RUNTIME_PROFILE: LanguageRuntimeProfile = {\n language: 'java',\n maturity: 'experimental',\n capabilities: {\n execution: {\n styles: {\n function: true,\n solutionMethod: true,\n opsClass: true,\n script: true,\n interviewMode: true,\n },\n timeouts: {\n clientTimeouts: true,\n runtimeTimeouts: true,\n },\n },\n tracing: {\n supported: true,\n events: {\n line: true,\n call: true,\n return: true,\n exception: true,\n stdout: false,\n timeout: true,\n },\n controls: {\n maxTraceSteps: true,\n maxLineEvents: false,\n maxSingleLineHits: false,\n maxStoredEvents: true,\n minimalTrace: false,\n },\n fidelity: {\n preciseLineMapping: true,\n stableFunctionNames: true,\n callStack: true,\n },\n },\n diagnostics: {\n compileErrors: true,\n runtimeErrors: true,\n mappedErrorLines: false,\n stackTraces: true,\n },\n structures: {\n treeNodeRefs: true,\n listNodeRefs: true,\n mapSerialization: true,\n setSerialization: true,\n graphSerialization: false,\n cycleReferences: true,\n },\n },\n notes: [\n 'Java currently supports the browser-local Java 17 lane for function, solution-method, ops-class, and script-style execution.',\n 'Interview-mode Java reuses the same browser-local execution path and remains experimental.',\n 'Script-style Java uses an empty function name with executionStyle=\"function\" and reads the top-level result variable.',\n ],\n};\n\nconst CSHARP_RUNTIME_PROFILE: LanguageRuntimeProfile = {\n language: 'csharp',\n maturity: 'experimental',\n capabilities: {\n execution: {\n styles: {\n function: true,\n solutionMethod: true,\n opsClass: true,\n script: true,\n interviewMode: true,\n },\n timeouts: {\n clientTimeouts: true,\n runtimeTimeouts: true,\n },\n },\n tracing: {\n supported: true,\n events: {\n line: true,\n call: true,\n return: true,\n exception: true,\n stdout: true,\n timeout: true,\n },\n controls: {\n maxTraceSteps: true,\n maxLineEvents: true,\n maxSingleLineHits: true,\n maxStoredEvents: true,\n minimalTrace: true,\n },\n fidelity: {\n preciseLineMapping: true,\n stableFunctionNames: true,\n callStack: true,\n },\n },\n diagnostics: {\n compileErrors: true,\n runtimeErrors: true,\n mappedErrorLines: true,\n stackTraces: false,\n },\n structures: {\n treeNodeRefs: true,\n listNodeRefs: true,\n mapSerialization: true,\n setSerialization: true,\n graphSerialization: true,\n cycleReferences: true,\n },\n },\n notes: [\n 'C# support is browser-local and experimental.',\n 'C# supports named function-style requests where the browser-local host can bind the named method.',\n 'Script-style C# uses an empty function name with executionStyle=\"function\" and reads the top-level result variable.',\n 'Interview-mode C# uses the same browser-local worker execution path with interview timeout normalization.',\n 'The first C# slice supports public class Solution methods.',\n 'ListNode and TreeNode inputs are hydrated from level-order arrays or object-shaped JSON.',\n 'Dictionary, HashSet, List, and array return values serialize through the browser-local worker.',\n 'Tracing currently supports line, call, return, stdout, and simple local variable write events.',\n 'Structural visualization is added after execution and diagnostics are proven.',\n ],\n};\n\nconst CPP_RUNTIME_PROFILE: LanguageRuntimeProfile = {\n language: 'cpp',\n maturity: 'experimental',\n capabilities: {\n execution: {\n styles: {\n function: true,\n solutionMethod: true,\n opsClass: true,\n script: true,\n interviewMode: true,\n },\n timeouts: {\n clientTimeouts: true,\n runtimeTimeouts: true,\n },\n },\n tracing: {\n supported: true,\n events: {\n line: true,\n call: true,\n return: true,\n exception: true,\n stdout: true,\n timeout: true,\n },\n controls: {\n maxTraceSteps: true,\n maxLineEvents: true,\n maxSingleLineHits: true,\n maxStoredEvents: true,\n minimalTrace: true,\n },\n fidelity: {\n preciseLineMapping: true,\n stableFunctionNames: true,\n callStack: true,\n },\n },\n diagnostics: {\n compileErrors: true,\n runtimeErrors: true,\n mappedErrorLines: true,\n stackTraces: false,\n },\n structures: {\n treeNodeRefs: true,\n listNodeRefs: true,\n mapSerialization: true,\n setSerialization: true,\n graphSerialization: true,\n cycleReferences: true,\n },\n },\n notes: [\n 'C++ uses a focused browser-local Clang/LLD/WASI compiler lane with TraceCode-owned execution glue.',\n 'The runtime intentionally does not depend on a generic multi-language container/runtime SDK.',\n 'Script-style C++ uses an empty function name with executionStyle=\"function\"; the snippet must assign a serializable result variable.',\n 'Interview-mode C++ reuses the tracing compiler path with a trace budget and returns a non-trace execution result.',\n ],\n};\n\nexport const LANGUAGE_RUNTIME_PROFILES: Record<Language, LanguageRuntimeProfile> = {\n python: PYTHON_RUNTIME_PROFILE,\n javascript: JAVASCRIPT_RUNTIME_PROFILE,\n typescript: TYPESCRIPT_RUNTIME_PROFILE,\n java: JAVA_RUNTIME_PROFILE,\n csharp: CSHARP_RUNTIME_PROFILE,\n cpp: CPP_RUNTIME_PROFILE,\n};\n\nexport const SUPPORTED_LANGUAGES: readonly Language[] = Object.freeze(\n Object.keys(LANGUAGE_RUNTIME_PROFILES) as Language[]\n);\n\nexport function getLanguageRuntimeProfile(language: Language): LanguageRuntimeProfile {\n const profile = LANGUAGE_RUNTIME_PROFILES[language];\n if (!profile) {\n throw new Error(`Runtime profile for language \"${language}\" is not implemented yet.`);\n }\n return profile;\n}\n\nexport function getSupportedLanguageProfiles(): readonly LanguageRuntimeProfile[] {\n return SUPPORTED_LANGUAGES.map((language) => LANGUAGE_RUNTIME_PROFILES[language]);\n}\n\nexport function isLanguageSupported(language: Language): boolean {\n return SUPPORTED_LANGUAGES.includes(language);\n}\n","import {\n type JavaScriptExecutionStyle,\n type JavaScriptWorkerLanguage,\n type JavaScriptWorkerClient,\n} from './javascript-worker-client';\nimport type {\n RuntimeClient,\n RuntimeExecutionStyle,\n TraceExecutionOptions,\n} from '../../harness-core/src/runtime-types';\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { assertRuntimeRequestSupported } from './runtime-capability-guards';\nimport { getLanguageRuntimeProfile } from './runtime-profiles';\n\nclass JavaScriptRuntimeClient implements RuntimeClient {\n constructor(\n private readonly runtimeLanguage: JavaScriptWorkerLanguage,\n private readonly workerClient: JavaScriptWorkerClient\n ) {}\n\n async init(): Promise<{ success: boolean; loadTimeMs: number }> {\n return this.workerClient.init();\n }\n\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: TraceExecutionOptions,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<ExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile(this.runtimeLanguage), {\n request: 'trace',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeWithTracing(\n code,\n functionName,\n inputs,\n options,\n executionStyle as JavaScriptExecutionStyle,\n this.runtimeLanguage\n );\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile(this.runtimeLanguage), {\n request: 'execute',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCode(\n code,\n functionName,\n inputs,\n executionStyle as JavaScriptExecutionStyle,\n this.runtimeLanguage\n );\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile(this.runtimeLanguage), {\n request: 'interview',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCodeInterviewMode(\n code,\n functionName,\n inputs,\n executionStyle as JavaScriptExecutionStyle,\n this.runtimeLanguage\n );\n }\n}\n\nexport function createJavaScriptRuntimeClient(\n runtimeLanguage: JavaScriptWorkerLanguage,\n workerClient: JavaScriptWorkerClient\n): RuntimeClient {\n return new JavaScriptRuntimeClient(runtimeLanguage, workerClient);\n}\n","import type { CodeExecutionResult, RuntimeExecutionTimings } from '../../harness-core/src/types';\nimport { javaTraceHooksEventsToRuntimeTrace } from '../../harness-core/src/trace-adapters/java';\nimport { createEmptyRuntimeTrace, type RuntimeTrace } from '../../harness-core/src/runtime-trace';\nimport { logRuntimeDiagnostic } from './runtime-diagnostics';\n\ntype MessageId = string;\nexport type JavaExecutionStyle = 'function' | 'solution-method' | 'ops-class';\n\nexport interface JavaWorkerClientOptions {\n workerUrl: string;\n debug?: boolean;\n workerIdleTimeoutMs?: number;\n}\n\ninterface PendingMessage {\n resolve: (value: unknown) => void;\n reject: (error: Error) => void;\n timeoutId?: ReturnType<typeof setTimeout>;\n}\n\ninterface WorkerMessage {\n id?: MessageId;\n type: string;\n payload?: unknown;\n}\n\ninterface InitResult {\n success: boolean;\n loadTimeMs: number;\n timings?: RuntimeExecutionTimings;\n}\n\ninterface WarmupResult {\n success: boolean;\n loadTimeMs: number;\n timings?: RuntimeExecutionTimings;\n}\n\nexport interface JavaWorkerRawTraceResult {\n success: boolean;\n output?: unknown;\n events: string[];\n sourceText?: string;\n executionTimeMs: number;\n error?: string;\n errorLine?: number;\n consoleOutput: string[];\n traceLimitExceeded?: boolean;\n timeoutReason?: 'trace-limit';\n droppedEventCount?: number;\n timings?: RuntimeExecutionTimings;\n}\n\nexport interface JavaWorkerTraceResult extends JavaWorkerRawTraceResult {\n trace: RuntimeTrace;\n}\n\ninterface JavaWorkerCodeResult {\n success: boolean;\n output?: unknown;\n executionTimeMs?: number;\n error?: string;\n errorLine?: number;\n consoleOutput?: string[];\n timings?: RuntimeExecutionTimings;\n}\n\nexport interface JavaTraceExecutionOptions {\n maxTraceSteps?: number;\n maxLineEvents?: number;\n maxSingleLineHits?: number;\n maxStoredEvents?: number;\n minimalTrace?: boolean;\n}\n\nconst EXECUTION_TIMEOUT_MS = 20_000;\nconst TRACING_TIMEOUT_MS = 25_000;\nconst INIT_TIMEOUT_MS = 120_000;\nconst MESSAGE_TIMEOUT_MS = 30_000;\nconst WORKER_READY_TIMEOUT_MS = 10_000;\nconst JAVA_DEFAULT_FILE = 'solution.java';\n\nexport class JavaWorkerClient {\n private worker: Worker | null = null;\n private pendingMessages = new Map<MessageId, PendingMessage>();\n private messageId = 0;\n private isInitializing = false;\n private initPromise: Promise<InitResult> | null = null;\n private warmupPromise: Promise<WarmupResult> | null = null;\n private workerReadyPromise: Promise<void> | null = null;\n private workerReadyResolve: (() => void) | null = null;\n private workerReadyReject: ((error: Error) => void) | null = null;\n private readonly debug: boolean;\n\n constructor(private readonly options: JavaWorkerClientOptions) {\n this.debug = options.debug ?? process.env.NODE_ENV === 'development';\n }\n\n isSupported(): boolean {\n return typeof Worker !== 'undefined';\n }\n\n private getWorker(): Worker {\n if (this.worker) return this.worker;\n\n if (!this.isSupported()) {\n throw new Error('Web Workers are not supported in this environment');\n }\n\n this.workerReadyPromise = new Promise((resolve, reject) => {\n this.workerReadyResolve = resolve;\n this.workerReadyReject = (error: Error) => reject(error);\n });\n\n const workerUrl =\n this.debug && !this.options.workerUrl.includes('?')\n ? `${this.options.workerUrl}?dev=${Date.now()}`\n : this.options.workerUrl;\n\n this.worker = new Worker(workerUrl);\n this.worker.onmessage = (event: MessageEvent<WorkerMessage>) => {\n const { id, type, payload } = event.data;\n\n if (type === 'worker-ready') {\n this.workerReadyResolve?.();\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n logRuntimeDiagnostic('info', {\n component: 'JavaWorkerClient',\n runtime: 'java',\n phase: 'worker-ready',\n message: 'Java worker is ready.',\n }, { enabled: this.debug });\n return;\n }\n\n if (type === 'idle-timeout') {\n logRuntimeDiagnostic('info', {\n component: 'JavaWorkerClient',\n runtime: 'java',\n phase: 'idle-timeout',\n message: 'Java worker closed after idle timeout.',\n }, { enabled: this.debug });\n this.terminateAndReset(new Error('Java worker closed after idle timeout'));\n return;\n }\n\n if (!id) return;\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n\n if (type === 'error') {\n pending.reject(new Error((payload as { error: string }).error));\n return;\n }\n\n pending.resolve(payload);\n };\n\n this.worker.onerror = (error) => {\n logRuntimeDiagnostic('error', {\n component: 'JavaWorkerClient',\n runtime: 'java',\n phase: 'worker-error',\n message: 'Java worker emitted an error event.',\n detail: {\n message: error.message,\n filename: error.filename,\n lineno: error.lineno,\n colno: error.colno,\n },\n });\n const workerError = new Error(error.message || 'Java worker error');\n this.workerReadyReject?.(workerError);\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n for (const [, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(workerError);\n }\n this.pendingMessages.clear();\n this.terminateAndReset(workerError);\n };\n\n return this.worker;\n }\n\n private async waitForWorkerReady(): Promise<void> {\n const readyPromise = this.workerReadyPromise;\n if (!readyPromise) return;\n\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n const timeoutError = new Error(\n `Java worker failed to initialize in time (${Math.round(WORKER_READY_TIMEOUT_MS / 1000)}s)`\n );\n logRuntimeDiagnostic('warn', {\n component: 'JavaWorkerClient',\n runtime: 'java',\n phase: 'worker-ready-timeout',\n message: 'Java worker did not send worker-ready before the timeout.',\n detail: { timeoutMs: WORKER_READY_TIMEOUT_MS },\n }, { enabled: this.debug });\n this.terminateAndReset(timeoutError);\n reject(timeoutError);\n }, WORKER_READY_TIMEOUT_MS);\n\n readyPromise\n .then(() => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve();\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error instanceof Error ? error : new Error(String(error)));\n });\n });\n }\n\n private async sendMessage<T>(\n type: string,\n payload?: unknown,\n timeoutMs = MESSAGE_TIMEOUT_MS\n ): Promise<T> {\n const worker = this.getWorker();\n await this.waitForWorkerReady();\n const id = String(++this.messageId);\n\n return new Promise<T>((resolve, reject) => {\n this.pendingMessages.set(id, {\n resolve: resolve as (value: unknown) => void,\n reject,\n });\n\n const timeoutId = globalThis.setTimeout(() => {\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n logRuntimeDiagnostic('warn', {\n component: 'JavaWorkerClient',\n runtime: 'java',\n phase: 'worker-request-timeout',\n message: 'Java worker request timed out.',\n detail: { id, type, timeoutMs },\n }, { enabled: this.debug });\n pending.reject(new Error(`Worker request timed out: ${type}`));\n }, timeoutMs);\n\n const pending = this.pendingMessages.get(id);\n if (pending) pending.timeoutId = timeoutId;\n\n worker.postMessage({ id, type, payload });\n });\n }\n\n private async executeWithTimeout<T>(executor: () => Promise<T>, timeoutMs: number): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let settled = false;\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n logRuntimeDiagnostic('warn', {\n component: 'JavaWorkerClient',\n runtime: 'java',\n phase: 'execution-timeout',\n message: 'Java execution timed out; terminating worker.',\n detail: { timeoutMs },\n }, { enabled: this.debug });\n this.terminateAndReset();\n reject(\n new Error(\n `Java execution timed out after ${Math.round(timeoutMs / 1000)} seconds.`\n )\n );\n }, timeoutMs);\n\n executor()\n .then((result) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve(result);\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error);\n });\n });\n }\n\n private terminateAndReset(reason: Error = new Error('Worker was terminated')): void {\n this.workerReadyReject?.(reason);\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n }\n this.initPromise = null;\n this.warmupPromise = null;\n this.isInitializing = false;\n this.workerReadyPromise = null;\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n\n for (const [, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(reason);\n }\n this.pendingMessages.clear();\n }\n\n async init(): Promise<InitResult> {\n if (this.initPromise) return this.initPromise;\n if (this.isInitializing) {\n await new Promise((resolve) => globalThis.setTimeout(resolve, 100));\n return this.init();\n }\n\n this.isInitializing = true;\n this.initPromise = (async () => {\n try {\n return await this.sendMessage<InitResult>('init', this.workerOptionsPayload(), INIT_TIMEOUT_MS);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const shouldRetry =\n message.includes('Worker request timed out: init') ||\n message.includes('Worker was terminated') ||\n message.includes('Java worker error') ||\n message.includes('failed to initialize in time');\n\n if (!shouldRetry) {\n throw error;\n }\n\n logRuntimeDiagnostic('warn', {\n component: 'JavaWorkerClient',\n runtime: 'java',\n phase: 'init-retry',\n message: 'Java worker init failed; resetting worker and retrying once.',\n detail: { message },\n }, { enabled: this.debug });\n\n this.terminateAndReset(error instanceof Error ? error : new Error(message));\n return this.sendMessage<InitResult>('init', this.workerOptionsPayload(), INIT_TIMEOUT_MS);\n }\n })();\n try {\n return await this.initPromise;\n } catch (error) {\n this.initPromise = null;\n throw error;\n } finally {\n this.isInitializing = false;\n }\n }\n\n private workerOptionsPayload(): { idleTimeoutMs?: number } {\n return this.options.workerIdleTimeoutMs === undefined\n ? {}\n : { idleTimeoutMs: this.options.workerIdleTimeoutMs };\n }\n\n async warmup(): Promise<WarmupResult> {\n if (this.warmupPromise) return this.warmupPromise;\n this.warmupPromise = (async () => {\n try {\n await this.init();\n return await this.sendMessage<WarmupResult>(\n 'warmup',\n this.workerOptionsPayload(),\n INIT_TIMEOUT_MS\n );\n } catch (error) {\n this.warmupPromise = null;\n throw error;\n }\n })();\n return this.warmupPromise;\n }\n\n async executeWithTracing(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n options: JavaTraceExecutionOptions | undefined,\n executionStyle: JavaExecutionStyle\n ): Promise<JavaWorkerTraceResult> {\n await this.init();\n const result = await this.executeWithTimeout(\n () =>\n this.sendMessage<JavaWorkerRawTraceResult>(\n 'execute-with-tracing',\n { code, functionName, inputs, options, executionStyle },\n TRACING_TIMEOUT_MS + 5_000\n ),\n TRACING_TIMEOUT_MS\n );\n return {\n ...result,\n trace: result.success\n ? javaTraceHooksEventsToRuntimeTrace(result.events, result.sourceText, {\n runId: 'java:run',\n file: JAVA_DEFAULT_FILE,\n })\n : createEmptyRuntimeTrace('java', { runId: 'java:run', file: JAVA_DEFAULT_FILE }),\n };\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n options: JavaTraceExecutionOptions | undefined,\n executionStyle: JavaExecutionStyle\n ): Promise<CodeExecutionResult> {\n return this.executeCodeMessage('execute-code', code, functionName, inputs, options, executionStyle);\n }\n\n private async executeCodeMessage(\n type: 'execute-code' | 'execute-code-interview',\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n options: JavaTraceExecutionOptions | undefined,\n executionStyle: JavaExecutionStyle\n ): Promise<CodeExecutionResult> {\n await this.init();\n const result = await this.executeWithTimeout(\n () =>\n this.sendMessage<JavaWorkerCodeResult>(\n type,\n { code, functionName, inputs, options, executionStyle },\n EXECUTION_TIMEOUT_MS + 5_000\n ),\n EXECUTION_TIMEOUT_MS\n );\n if (!result.success) {\n return {\n success: false,\n output: null,\n error: result.error ?? 'Java execution failed',\n ...(result.errorLine !== undefined ? { errorLine: result.errorLine } : {}),\n consoleOutput: result.consoleOutput ?? [],\n timings: result.timings,\n };\n }\n return {\n success: true,\n output: result.output,\n consoleOutput: result.consoleOutput ?? [],\n timings: result.timings,\n };\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n options: JavaTraceExecutionOptions | undefined,\n executionStyle: JavaExecutionStyle\n ): Promise<CodeExecutionResult> {\n return this.executeCodeMessage('execute-code-interview', code, functionName, inputs, options, executionStyle);\n }\n\n terminate(): void {\n this.terminateAndReset();\n }\n}\n","import type {\n RuntimeClient,\n RuntimeExecutionStyle,\n TraceExecutionOptions,\n} from '../../harness-core/src/runtime-types';\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { createEmptyRuntimeTrace } from '../../harness-core/src/runtime-trace';\nimport { assertRuntimeRequestSupported } from './runtime-capability-guards';\nimport { getLanguageRuntimeProfile } from './runtime-profiles';\nimport type { JavaExecutionStyle, JavaWorkerClient } from './java-worker-client';\n\nconst JAVA_DEFAULT_FILE = 'solution.java';\n\nclass JavaRuntimeClient implements RuntimeClient {\n constructor(private readonly workerClient: JavaWorkerClient) {}\n\n async init(): Promise<{ success: boolean; loadTimeMs: number }> {\n return this.workerClient.init();\n }\n\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: TraceExecutionOptions,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<ExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('java'), {\n request: 'trace',\n executionStyle,\n functionName,\n });\n\n const rawResult = await this.workerClient.executeWithTracing(\n code,\n functionName ?? '',\n inputs,\n options,\n executionStyle as JavaExecutionStyle\n );\n\n if (!rawResult.success) {\n return {\n success: false,\n error: rawResult.error ?? 'Java tracing failed',\n ...(rawResult.errorLine !== undefined ? { errorLine: rawResult.errorLine } : {}),\n trace: createEmptyRuntimeTrace('java', { runId: 'java:run', file: JAVA_DEFAULT_FILE }),\n executionTimeMs: rawResult.executionTimeMs,\n consoleOutput: rawResult.consoleOutput,\n ...(rawResult.traceLimitExceeded !== undefined\n ? { traceLimitExceeded: rawResult.traceLimitExceeded }\n : {}),\n ...(rawResult.timeoutReason ? { timeoutReason: rawResult.timeoutReason } : {}),\n lineEventCount: 0,\n traceStepCount: 0,\n timings: rawResult.timings,\n };\n }\n\n return {\n success: true,\n output: rawResult.output,\n trace: rawResult.trace,\n consoleOutput: rawResult.consoleOutput,\n executionTimeMs: rawResult.executionTimeMs,\n ...(rawResult.traceLimitExceeded !== undefined\n ? { traceLimitExceeded: rawResult.traceLimitExceeded }\n : {}),\n ...(rawResult.timeoutReason ? { timeoutReason: rawResult.timeoutReason } : {}),\n lineEventCount: rawResult.trace.lineEventCount,\n traceStepCount: rawResult.trace.traceStepCount,\n timings: rawResult.timings,\n };\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('java'), {\n request: 'execute',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCode(\n code,\n functionName,\n inputs,\n undefined,\n executionStyle as JavaExecutionStyle\n );\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('java'), {\n request: 'interview',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCodeInterviewMode(\n code,\n functionName,\n inputs,\n undefined,\n executionStyle as JavaExecutionStyle\n );\n }\n}\n\nexport function createJavaRuntimeClient(workerClient: JavaWorkerClient): RuntimeClient {\n return new JavaRuntimeClient(workerClient);\n}\n","import {\n RUNTIME_TRACE_SCHEMA_VERSION,\n type RuntimeTrace,\n type RuntimeTraceEvent,\n} from '../../harness-core/src/runtime-trace';\nimport type { TraceExecutionOptions } from '../../harness-core/src/runtime-types';\nimport type {\n CodeExecutionResult,\n ExecutionResult,\n RuntimeExecutionTimings,\n} from '../../harness-core/src/types';\nimport { logRuntimeDiagnostic } from './runtime-diagnostics';\n\ntype MessageId = string;\nexport type CSharpExecutionStyle = 'function' | 'solution-method' | 'ops-class';\n\nexport interface CSharpWorkerClientOptions {\n workerUrl: string;\n assetBaseUrl: string;\n debug?: boolean;\n initTimeoutMs?: number;\n executionTimeoutMs?: number;\n tracingTimeoutMs?: number;\n interviewTimeoutMs?: number;\n workerIdleTimeoutMs?: number;\n}\n\ninterface PendingMessage {\n resolve: (value: unknown) => void;\n reject: (error: Error) => void;\n timeoutId?: ReturnType<typeof setTimeout>;\n}\n\ninterface WorkerMessage {\n id?: MessageId;\n type: string;\n payload?: unknown;\n}\n\ninterface InitResult {\n success: boolean;\n loadTimeMs: number;\n timings?: RuntimeExecutionTimings;\n}\n\ninterface WarmupResult {\n success: boolean;\n loadTimeMs: number;\n error?: string;\n timings?: RuntimeExecutionTimings;\n}\n\nconst EXECUTION_TIMEOUT_MS = 20_000;\nconst TRACING_TIMEOUT_MS = 20_000;\nconst INTERVIEW_MODE_TIMEOUT_MS = 5_000;\nconst INIT_TIMEOUT_MS = 45_000;\nconst MESSAGE_TIMEOUT_MS = 30_000;\nconst WORKER_READY_TIMEOUT_MS = 10_000;\nconst CSHARP_DEFAULT_FILE = 'solution.cs';\nconst CSHARP_LEGACY_USER_FILE = 'UserCode.cs';\n\nexport interface CSharpDiagnostic {\n file: string;\n line: number;\n column: number;\n message: string;\n severity: string;\n id?: string;\n}\n\ninterface CSharpWorkerExecuteResult {\n success: boolean;\n output?: unknown;\n error?: string;\n diagnostics?: CSharpDiagnostic[];\n consoleOutput?: string[];\n events?: RuntimeTraceEvent[];\n executionTimeMs?: number;\n traceLimitExceeded?: boolean;\n timeoutReason?: ExecutionResult['timeoutReason'];\n timings?: RuntimeExecutionTimings;\n}\n\nfunction isCSharpUserFile(file: string | undefined): boolean {\n return Boolean(file?.endsWith(CSHARP_DEFAULT_FILE) || file?.endsWith(CSHARP_LEGACY_USER_FILE));\n}\n\nfunction isCSharpUserDiagnostic(diagnostic: CSharpDiagnostic): boolean {\n return isCSharpUserFile(diagnostic.file);\n}\n\nfunction normalizeCSharpTraceEventFile(event: RuntimeTraceEvent): RuntimeTraceEvent {\n return isCSharpUserFile(event.file) ? { ...event, file: CSHARP_DEFAULT_FILE } : event;\n}\n\nexport class CSharpWorkerClient {\n private worker: Worker | null = null;\n private pendingMessages = new Map<MessageId, PendingMessage>();\n private messageId = 0;\n private isInitializing = false;\n private initPromise: Promise<InitResult> | null = null;\n private warmupPromise: Promise<WarmupResult> | null = null;\n private workerReadyPromise: Promise<void> | null = null;\n private workerReadyResolve: (() => void) | null = null;\n private workerReadyReject: ((error: Error) => void) | null = null;\n private readonly debug: boolean;\n private readonly initTimeoutMs: number;\n private readonly executionTimeoutMs: number;\n private readonly tracingTimeoutMs: number;\n private readonly interviewTimeoutMs: number;\n\n constructor(private readonly options: CSharpWorkerClientOptions) {\n this.debug = options.debug ?? process.env.NODE_ENV === 'development';\n this.initTimeoutMs = options.initTimeoutMs ?? INIT_TIMEOUT_MS;\n this.executionTimeoutMs = options.executionTimeoutMs ?? EXECUTION_TIMEOUT_MS;\n this.tracingTimeoutMs = options.tracingTimeoutMs ?? TRACING_TIMEOUT_MS;\n this.interviewTimeoutMs = options.interviewTimeoutMs ?? INTERVIEW_MODE_TIMEOUT_MS;\n }\n\n isSupported(): boolean {\n return typeof Worker !== 'undefined';\n }\n\n private getWorker(): Worker {\n if (this.worker) return this.worker;\n\n if (!this.isSupported()) {\n throw new Error('Web Workers are not supported in this environment');\n }\n\n this.workerReadyPromise = new Promise((resolve, reject) => {\n this.workerReadyResolve = resolve;\n this.workerReadyReject = (error: Error) => reject(error);\n });\n\n const workerUrl =\n this.debug && !this.options.workerUrl.includes('?')\n ? `${this.options.workerUrl}?dev=${Date.now()}`\n : this.options.workerUrl;\n\n this.worker = new Worker(workerUrl, { type: 'module' });\n this.worker.onmessage = (event: MessageEvent<WorkerMessage>) => {\n const { id, type, payload } = event.data;\n\n if (type === 'worker-ready') {\n this.workerReadyResolve?.();\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n logRuntimeDiagnostic('info', {\n component: 'CSharpWorkerClient',\n runtime: 'csharp',\n phase: 'worker-ready',\n message: 'C# worker is ready.',\n }, { enabled: this.debug });\n return;\n }\n\n if (type === 'idle-timeout') {\n logRuntimeDiagnostic('info', {\n component: 'CSharpWorkerClient',\n runtime: 'csharp',\n phase: 'idle-timeout',\n message: 'C# worker closed after idle timeout.',\n }, { enabled: this.debug });\n this.terminateAndReset(new Error('C# worker closed after idle timeout'));\n return;\n }\n\n if (!id) return;\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n\n if (type === 'error') {\n pending.reject(new Error((payload as { error: string }).error));\n return;\n }\n\n pending.resolve(payload);\n };\n\n this.worker.onerror = (error) => {\n logRuntimeDiagnostic('error', {\n component: 'CSharpWorkerClient',\n runtime: 'csharp',\n phase: 'worker-error',\n message: 'C# worker emitted an error event.',\n detail: {\n message: error.message,\n filename: error.filename,\n lineno: error.lineno,\n colno: error.colno,\n },\n });\n const workerError = new Error(error.message || 'C# worker error');\n this.workerReadyReject?.(workerError);\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n for (const [, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(workerError);\n }\n this.pendingMessages.clear();\n this.terminateAndReset(workerError);\n };\n\n return this.worker;\n }\n\n private async waitForWorkerReady(): Promise<void> {\n const readyPromise = this.workerReadyPromise;\n if (!readyPromise) return;\n\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n const timeoutError = new Error(\n `C# worker failed to initialize in time (${Math.round(WORKER_READY_TIMEOUT_MS / 1000)}s)`\n );\n logRuntimeDiagnostic('warn', {\n component: 'CSharpWorkerClient',\n runtime: 'csharp',\n phase: 'worker-ready-timeout',\n message: 'C# worker did not send worker-ready before the timeout.',\n detail: { timeoutMs: WORKER_READY_TIMEOUT_MS },\n }, { enabled: this.debug });\n this.terminateAndReset(timeoutError);\n reject(timeoutError);\n }, WORKER_READY_TIMEOUT_MS);\n\n readyPromise\n .then(() => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve();\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error instanceof Error ? error : new Error(String(error)));\n });\n });\n }\n\n private async sendMessage<T>(\n type: string,\n payload?: unknown,\n timeoutMs = MESSAGE_TIMEOUT_MS\n ): Promise<T> {\n const worker = this.getWorker();\n await this.waitForWorkerReady();\n const id = String(++this.messageId);\n\n return new Promise<T>((resolve, reject) => {\n this.pendingMessages.set(id, {\n resolve: resolve as (value: unknown) => void,\n reject,\n });\n\n const timeoutId = globalThis.setTimeout(() => {\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n logRuntimeDiagnostic('warn', {\n component: 'CSharpWorkerClient',\n runtime: 'csharp',\n phase: 'worker-request-timeout',\n message: 'C# worker request timed out.',\n detail: { id, type, timeoutMs },\n }, { enabled: this.debug });\n pending.reject(new Error(`Worker request timed out: ${type}`));\n }, timeoutMs);\n\n const pending = this.pendingMessages.get(id);\n if (pending) pending.timeoutId = timeoutId;\n\n worker.postMessage({ id, type, payload });\n });\n }\n\n private async executeWithTimeout<T>(executor: () => Promise<T>, timeoutMs: number): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let settled = false;\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n logRuntimeDiagnostic('warn', {\n component: 'CSharpWorkerClient',\n runtime: 'csharp',\n phase: 'execution-timeout',\n message: 'C# execution timed out; terminating worker.',\n detail: { timeoutMs },\n }, { enabled: this.debug });\n this.terminateAndReset();\n reject(new Error(`C# execution timed out after ${Math.round(timeoutMs / 1000)} seconds.`));\n }, timeoutMs);\n\n executor()\n .then((result) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve(result);\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error);\n });\n });\n }\n\n private terminateAndReset(reason: Error = new Error('Worker was terminated')): void {\n this.workerReadyReject?.(reason);\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n }\n this.initPromise = null;\n this.warmupPromise = null;\n this.isInitializing = false;\n this.workerReadyPromise = null;\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n\n for (const [, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(reason);\n }\n this.pendingMessages.clear();\n }\n\n private shouldRetryInit(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error);\n return (\n message.includes('timed out') ||\n message.includes('Worker request timed out') ||\n message.includes('worker error') ||\n message.includes('Failed to fetch') ||\n message.includes('was terminated') ||\n message.includes('closed after idle timeout')\n );\n }\n\n private sendInitMessage(): Promise<InitResult> {\n return this.sendMessage<InitResult>(\n 'init',\n { assetBaseUrl: this.options.assetBaseUrl, ...this.workerOptionsPayload() },\n this.initTimeoutMs\n );\n }\n\n private workerOptionsPayload(): { idleTimeoutMs?: number } {\n return this.options.workerIdleTimeoutMs === undefined\n ? {}\n : { idleTimeoutMs: this.options.workerIdleTimeoutMs };\n }\n\n async init(): Promise<InitResult> {\n if (this.initPromise) return this.initPromise;\n if (this.isInitializing) {\n await new Promise((resolve) => globalThis.setTimeout(resolve, 100));\n return this.init();\n }\n\n this.isInitializing = true;\n this.initPromise = (async () => {\n try {\n return await this.sendInitMessage();\n } catch (error) {\n if (!this.shouldRetryInit(error)) throw error;\n this.terminateAndReset(error instanceof Error ? error : new Error(String(error)));\n return this.sendInitMessage();\n }\n })();\n try {\n return await this.initPromise;\n } catch (error) {\n this.initPromise = null;\n throw error;\n } finally {\n this.isInitializing = false;\n }\n }\n\n async warmup(): Promise<WarmupResult> {\n if (this.warmupPromise) return this.warmupPromise;\n this.warmupPromise = (async () => {\n try {\n await this.init();\n return await this.sendMessage<WarmupResult>(\n 'warmup',\n { assetBaseUrl: this.options.assetBaseUrl, ...this.workerOptionsPayload() },\n this.initTimeoutMs\n );\n } catch (error) {\n this.warmupPromise = null;\n throw error;\n }\n })();\n return this.warmupPromise;\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: CSharpExecutionStyle\n ): Promise<CodeExecutionResult> {\n await this.init();\n const result = await this.executeWithTimeout(\n () =>\n this.sendMessage<CSharpWorkerExecuteResult>(\n 'execute-code',\n {\n code,\n functionName,\n inputs,\n executionStyle,\n assetBaseUrl: this.options.assetBaseUrl,\n timeoutMs: Math.max(100, this.executionTimeoutMs - 1_000),\n ...this.workerOptionsPayload(),\n },\n this.executionTimeoutMs + 5_000\n ),\n this.executionTimeoutMs\n );\n\n if (!result.success) {\n const firstUserDiagnostic = result.diagnostics?.find(isCSharpUserDiagnostic);\n return {\n success: false,\n output: null,\n error: result.error ?? 'C# execution failed',\n ...(firstUserDiagnostic ? { errorLine: firstUserDiagnostic.line } : {}),\n consoleOutput: result.consoleOutput ?? [],\n timings: result.timings,\n };\n }\n\n return {\n success: true,\n output: result.output,\n consoleOutput: result.consoleOutput ?? [],\n timings: result.timings,\n };\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: CSharpExecutionStyle\n ): Promise<CodeExecutionResult> {\n await this.init();\n let result: CSharpWorkerExecuteResult;\n try {\n result = await this.executeWithTimeout(\n () =>\n this.sendMessage<CSharpWorkerExecuteResult>(\n 'execute-code-interview',\n {\n code,\n functionName,\n inputs,\n executionStyle,\n assetBaseUrl: this.options.assetBaseUrl,\n timeoutMs: Math.max(100, this.interviewTimeoutMs - 1_000),\n ...this.workerOptionsPayload(),\n },\n this.interviewTimeoutMs + 5_000\n ),\n this.interviewTimeoutMs\n );\n } catch {\n return {\n success: false,\n output: null,\n error: 'Time Limit Exceeded',\n timeoutReason: 'client-timeout',\n diagnosticStage: 'interview',\n consoleOutput: [],\n timings: { totalMs: this.interviewTimeoutMs },\n };\n }\n\n if (!result.success) {\n const firstUserDiagnostic = result.diagnostics?.find(isCSharpUserDiagnostic);\n if (this.isInterviewTimeoutLike(result)) {\n return {\n success: false,\n output: null,\n error: 'Time Limit Exceeded',\n timeoutReason: result.timeoutReason ?? 'client-timeout',\n diagnosticStage: 'interview',\n consoleOutput: result.consoleOutput ?? [],\n timings: result.timings,\n };\n }\n\n return {\n success: false,\n output: null,\n error: result.error ?? 'C# execution failed',\n ...(firstUserDiagnostic ? { errorLine: firstUserDiagnostic.line } : {}),\n consoleOutput: result.consoleOutput ?? [],\n timings: result.timings,\n };\n }\n\n return {\n success: true,\n output: result.output,\n consoleOutput: result.consoleOutput ?? [],\n timings: result.timings,\n };\n }\n\n async executeWithTracing(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n options: TraceExecutionOptions | undefined,\n executionStyle: CSharpExecutionStyle\n ): Promise<ExecutionResult> {\n await this.init();\n let result: CSharpWorkerExecuteResult;\n try {\n result = await this.executeWithTimeout(\n () =>\n this.sendMessage<CSharpWorkerExecuteResult>(\n 'execute-with-tracing',\n {\n code,\n functionName,\n inputs,\n executionStyle,\n assetBaseUrl: this.options.assetBaseUrl,\n timeoutMs: Math.max(100, this.tracingTimeoutMs - 1_000),\n maxTraceSteps: options?.maxTraceSteps,\n maxLineEvents: options?.maxLineEvents,\n maxSingleLineHits: options?.maxSingleLineHits,\n maxStoredEvents: options?.maxStoredEvents,\n minimalTrace: options?.minimalTrace,\n ...this.workerOptionsPayload(),\n },\n this.tracingTimeoutMs + 5_000\n ),\n this.tracingTimeoutMs\n );\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const trace = this.createTrace([\n {\n kind: 'timeout',\n runId: 'csharp:run',\n file: CSHARP_DEFAULT_FILE,\n message,\n },\n ]);\n return {\n success: false,\n output: null,\n error: message,\n trace,\n executionTimeMs: this.tracingTimeoutMs,\n consoleOutput: [],\n traceLimitExceeded: true,\n timeoutReason: 'client-timeout',\n lineEventCount: trace.lineEventCount,\n traceStepCount: trace.traceStepCount,\n timings: { totalMs: this.tracingTimeoutMs },\n };\n }\n\n const consoleOutput = result.consoleOutput ?? [];\n const events = [\n ...(result.events ?? []),\n ...consoleOutput.map((text): RuntimeTraceEvent => ({\n kind: 'stdout',\n runId: 'csharp:run',\n file: CSHARP_DEFAULT_FILE,\n text,\n })),\n ];\n const trace = this.createTrace(events);\n\n if (!result.success) {\n const firstUserDiagnostic = result.diagnostics?.find(isCSharpUserDiagnostic);\n return {\n success: false,\n output: null,\n error: result.error ?? 'C# execution failed',\n ...(firstUserDiagnostic ? { errorLine: firstUserDiagnostic.line } : {}),\n trace,\n executionTimeMs: result.executionTimeMs ?? 0,\n consoleOutput,\n ...(result.traceLimitExceeded !== undefined\n ? { traceLimitExceeded: result.traceLimitExceeded }\n : {}),\n ...(result.timeoutReason ? { timeoutReason: result.timeoutReason } : {}),\n lineEventCount: trace.lineEventCount,\n traceStepCount: trace.traceStepCount,\n timings: result.timings,\n };\n }\n\n return {\n success: true,\n output: result.output,\n trace,\n executionTimeMs: result.executionTimeMs ?? 0,\n consoleOutput,\n ...(result.traceLimitExceeded !== undefined\n ? { traceLimitExceeded: result.traceLimitExceeded }\n : {}),\n ...(result.timeoutReason ? { timeoutReason: result.timeoutReason } : {}),\n lineEventCount: trace.lineEventCount,\n traceStepCount: trace.traceStepCount,\n timings: result.timings,\n };\n }\n\n private createTrace(events: RuntimeTraceEvent[]): RuntimeTrace {\n return {\n schemaVersion: RUNTIME_TRACE_SCHEMA_VERSION,\n language: 'csharp',\n runId: 'csharp:run',\n events: events.map(normalizeCSharpTraceEventFile),\n lineEventCount: events.filter((event) => event.kind === 'line').length,\n traceStepCount: events.length,\n };\n }\n\n private isInterviewTimeoutLike(result: CSharpWorkerExecuteResult): boolean {\n if (result.timeoutReason) return true;\n const normalized = String(result.error ?? '').toLowerCase();\n return (\n normalized.includes('timed out') ||\n normalized.includes('trace-limit') ||\n normalized.includes('line-limit') ||\n normalized.includes('single-line-limit') ||\n normalized.includes('recursion-limit') ||\n normalized.includes('memory-limit')\n );\n }\n\n terminate(): void {\n this.terminateAndReset();\n }\n}\n","import type {\n RuntimeClient,\n RuntimeExecutionStyle,\n TraceExecutionOptions,\n} from '../../harness-core/src/runtime-types';\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { assertRuntimeRequestSupported } from './runtime-capability-guards';\nimport { getLanguageRuntimeProfile } from './runtime-profiles';\nimport type { CSharpExecutionStyle, CSharpWorkerClient } from './csharp-worker-client';\n\nclass CSharpRuntimeClient implements RuntimeClient {\n constructor(private readonly workerClient: CSharpWorkerClient) {}\n\n async init(): Promise<{ success: boolean; loadTimeMs: number }> {\n return this.workerClient.init();\n }\n\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: TraceExecutionOptions,\n executionStyle: RuntimeExecutionStyle = 'solution-method'\n ): Promise<ExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('csharp'), {\n request: 'trace',\n executionStyle,\n functionName,\n });\n\n return this.workerClient.executeWithTracing(\n code,\n functionName ?? '',\n inputs,\n options,\n executionStyle as CSharpExecutionStyle\n );\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'solution-method'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('csharp'), {\n request: 'execute',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCode(\n code,\n functionName,\n inputs,\n executionStyle as CSharpExecutionStyle\n );\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'solution-method'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('csharp'), {\n request: 'interview',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCodeInterviewMode(\n code,\n functionName,\n inputs,\n executionStyle as CSharpExecutionStyle\n );\n }\n}\n\nexport function createCSharpRuntimeClient(workerClient: CSharpWorkerClient): RuntimeClient {\n return new CSharpRuntimeClient(workerClient);\n}\n","import type {\n CodeExecutionResult,\n ExecutionResult,\n RuntimeExecutionTimings,\n} from '../../harness-core/src/types';\nimport { createEmptyRuntimeTrace } from '../../harness-core/src/runtime-trace';\nimport type { TraceExecutionOptions } from '../../harness-core/src/runtime-types';\nimport { logRuntimeDiagnostic } from './runtime-diagnostics';\n\ntype MessageId = string;\n\nexport type CppExecutionStyle = 'function' | 'solution-method' | 'ops-class';\n\nexport interface CppWorkerAssets {\n clangWasmUrl: string;\n lldWasmUrl: string;\n sysrootUrl: string;\n runtimeHeaderUrl: string;\n compilerBundleUrl: string;\n compilerFrameUrl?: string;\n compilerWorkerUrl?: string;\n}\n\nexport interface CppWorkerClientOptions extends CppWorkerAssets {\n workerUrl: string;\n debug?: boolean;\n initTimeoutMs?: number;\n executionTimeoutMs?: number;\n tracingTimeoutMs?: number;\n interviewTimeoutMs?: number;\n workerIdleTimeoutMs?: number;\n}\n\ninterface PendingMessage {\n resolve: (value: unknown) => void;\n reject: (error: Error) => void;\n timeoutId?: ReturnType<typeof setTimeout>;\n}\n\ninterface PendingCompilerFrameRequest {\n resolve: (value: Record<string, unknown>) => void;\n timeoutId: ReturnType<typeof setTimeout>;\n}\n\ntype CppClientTimeoutStage = 'compile-run' | 'trace' | 'interview';\n\nclass CppClientTimeoutError extends Error {\n constructor(\n message: string,\n readonly stage: CppClientTimeoutStage,\n readonly timeoutMs: number\n ) {\n super(message);\n this.name = 'CppClientTimeoutError';\n }\n}\n\ninterface WorkerMessage {\n id?: MessageId;\n type: string;\n requestId?: string;\n payload?: unknown;\n}\n\ninterface InitResult {\n success: boolean;\n loadTimeMs: number;\n error?: string;\n timings?: RuntimeExecutionTimings;\n}\n\ninterface WarmupResult {\n success: boolean;\n loadTimeMs: number;\n error?: string;\n timings?: RuntimeExecutionTimings;\n}\n\nconst INIT_TIMEOUT_MS = 120_000;\n// Browser C++ compile/run includes client-side clang/lld work. STL-heavy\n// solutions can spend most of this wall time compiling before user code runs.\nconst EXECUTION_TIMEOUT_MS = 60_000;\nconst TRACING_TIMEOUT_MS = 60_000;\nconst INTERVIEW_MODE_TIMEOUT_MS = 30_000;\nconst MESSAGE_TIMEOUT_MS = 30_000;\nconst WORKER_READY_TIMEOUT_MS = 10_000;\nconst CPP_DEFAULT_FILE = 'solution.cpp';\n\nexport class CppWorkerClient {\n private worker: Worker | null = null;\n private pendingMessages = new Map<MessageId, PendingMessage>();\n private messageId = 0;\n private initPromise: Promise<InitResult> | null = null;\n private warmupPromise: Promise<WarmupResult> | null = null;\n private workerReadyPromise: Promise<void> | null = null;\n private workerReadyResolve: (() => void) | null = null;\n private workerReadyReject: ((error: Error) => void) | null = null;\n private readonly debug: boolean;\n private readonly initTimeoutMs: number;\n private readonly executionTimeoutMs: number;\n private readonly tracingTimeoutMs: number;\n private readonly interviewTimeoutMs: number;\n private readonly compilerFrameUrl?: string;\n private readonly activeCompilerFrames = new Set<HTMLIFrameElement>();\n private compilerFrame: HTMLIFrameElement | null = null;\n private compilerFrameReadyPromise: Promise<void> | null = null;\n private compilerFrameReadyResolve: (() => void) | null = null;\n private compilerFrameReadyReject: ((error: Error) => void) | null = null;\n private compilerFrameTargetOrigin = '';\n private compilerFrameRequestId = 0;\n private compilerFrameMessageHandler: ((event: MessageEvent) => void) | null = null;\n private pendingCompilerFrameRequests = new Map<string, PendingCompilerFrameRequest>();\n\n constructor(private readonly options: CppWorkerClientOptions) {\n this.debug = options.debug ?? process.env.NODE_ENV === 'development';\n this.initTimeoutMs = options.initTimeoutMs ?? INIT_TIMEOUT_MS;\n this.executionTimeoutMs = options.executionTimeoutMs ?? EXECUTION_TIMEOUT_MS;\n this.tracingTimeoutMs = options.tracingTimeoutMs ?? TRACING_TIMEOUT_MS;\n this.interviewTimeoutMs = options.interviewTimeoutMs ?? INTERVIEW_MODE_TIMEOUT_MS;\n this.compilerFrameUrl = options.compilerFrameUrl;\n }\n\n isSupported(): boolean {\n return typeof Worker !== 'undefined';\n }\n\n private getWorker(): Worker {\n if (this.worker) return this.worker;\n\n if (!this.isSupported()) {\n throw new Error('Web Workers are not supported in this environment');\n }\n\n this.workerReadyPromise = new Promise((resolve, reject) => {\n this.workerReadyResolve = resolve;\n this.workerReadyReject = (error: Error) => reject(error);\n });\n\n const workerUrl =\n this.debug && !this.options.workerUrl.includes('?')\n ? `${this.options.workerUrl}?dev=${Date.now()}`\n : this.options.workerUrl;\n\n this.worker = new Worker(workerUrl, { type: 'module' });\n this.worker.onmessage = (event: MessageEvent<WorkerMessage>) => {\n const { id, type, payload } = event.data;\n\n if (type === 'worker-ready') {\n this.workerReadyResolve?.();\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n logRuntimeDiagnostic('info', {\n component: 'CppWorkerClient',\n runtime: 'cpp',\n phase: 'worker-ready',\n message: 'C++ worker is ready.',\n }, { enabled: this.debug });\n return;\n }\n\n if (type === 'idle-timeout') {\n logRuntimeDiagnostic('info', {\n component: 'CppWorkerClient',\n runtime: 'cpp',\n phase: 'idle-timeout',\n message: 'C++ worker closed after idle timeout.',\n }, { enabled: this.debug });\n this.terminateAndReset(new Error('C++ worker closed after idle timeout'));\n return;\n }\n\n if (type === 'compile-request') {\n this.handleCompileRequest(event.data).catch((error) => {\n if (!event.data.requestId) return;\n this.worker?.postMessage({\n type: 'compile-response',\n requestId: event.data.requestId,\n payload: { success: false, error: error instanceof Error ? error.message : String(error) },\n });\n });\n return;\n }\n\n if (!id) return;\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n\n if (type === 'error') {\n pending.reject(new Error((payload as { error: string }).error));\n return;\n }\n\n pending.resolve(payload);\n };\n\n this.worker.onerror = (error) => {\n logRuntimeDiagnostic('error', {\n component: 'CppWorkerClient',\n runtime: 'cpp',\n phase: 'worker-error',\n message: 'C++ worker emitted an error event.',\n detail: {\n message: error.message,\n filename: error.filename,\n lineno: error.lineno,\n colno: error.colno,\n },\n });\n const workerError = new Error(error.message || 'C++ worker error');\n this.workerReadyReject?.(workerError);\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n this.terminateAndReset(workerError);\n };\n\n return this.worker;\n }\n\n private async waitForWorkerReady(): Promise<void> {\n const readyPromise = this.workerReadyPromise;\n if (!readyPromise) return;\n\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n const timeoutError = new Error(\n `C++ worker failed to initialize in time (${Math.round(WORKER_READY_TIMEOUT_MS / 1000)}s)`\n );\n logRuntimeDiagnostic('warn', {\n component: 'CppWorkerClient',\n runtime: 'cpp',\n phase: 'worker-ready-timeout',\n message: 'C++ worker did not send worker-ready before the timeout.',\n detail: { timeoutMs: WORKER_READY_TIMEOUT_MS },\n }, { enabled: this.debug });\n this.terminateAndReset(timeoutError);\n reject(timeoutError);\n }, WORKER_READY_TIMEOUT_MS);\n\n readyPromise\n .then(() => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve();\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error instanceof Error ? error : new Error(String(error)));\n });\n });\n }\n\n private async sendMessage<T>(\n type: string,\n payload?: unknown,\n timeoutMs = MESSAGE_TIMEOUT_MS\n ): Promise<T> {\n const worker = this.getWorker();\n await this.waitForWorkerReady();\n const id = String(++this.messageId);\n\n return new Promise<T>((resolve, reject) => {\n this.pendingMessages.set(id, {\n resolve: resolve as (value: unknown) => void,\n reject,\n });\n\n const timeoutId = globalThis.setTimeout(() => {\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n logRuntimeDiagnostic('warn', {\n component: 'CppWorkerClient',\n runtime: 'cpp',\n phase: 'worker-request-timeout',\n message: 'C++ worker request timed out.',\n detail: { id, type, timeoutMs },\n }, { enabled: this.debug });\n pending.reject(new Error(`Worker request timed out: ${type}`));\n }, timeoutMs);\n\n const pending = this.pendingMessages.get(id);\n if (pending) pending.timeoutId = timeoutId;\n\n worker.postMessage({ id, type, payload });\n });\n }\n\n private async executeWithTimeout<T>(\n executor: () => Promise<T>,\n timeoutMs: number,\n stage: CppClientTimeoutStage\n ): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let settled = false;\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n const timeoutLabel =\n stage === 'trace'\n ? 'tracing'\n : stage === 'interview'\n ? 'interview execution'\n : 'compile/run';\n const timeoutError = new CppClientTimeoutError(\n `C++ ${timeoutLabel} timed out after ${Math.round(timeoutMs / 1000)} seconds.`,\n stage,\n timeoutMs\n );\n logRuntimeDiagnostic('warn', {\n component: 'CppWorkerClient',\n runtime: 'cpp',\n phase: 'execution-timeout',\n message: 'C++ execution timed out; terminating worker.',\n detail: { timeoutMs, stage },\n }, { enabled: this.debug });\n this.terminateAndReset(timeoutError);\n reject(timeoutError);\n }, timeoutMs);\n\n executor()\n .then((result) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve(result);\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error);\n });\n });\n }\n\n private isClientTimeout(error: unknown): boolean {\n return (\n error instanceof CppClientTimeoutError ||\n (error instanceof Error && error.message.includes('C++') && error.message.includes('timed out'))\n );\n }\n\n private timeoutCodeResult(error: unknown): CodeExecutionResult {\n const timeoutError = error instanceof CppClientTimeoutError ? error : null;\n return {\n success: false,\n output: null,\n error: error instanceof Error ? error.message : String(error),\n consoleOutput: [],\n timeoutReason: 'client-timeout',\n diagnosticStage: timeoutError?.stage === 'interview' ? 'interview' : 'runtime',\n timings: { totalMs: timeoutError?.timeoutMs ?? this.executionTimeoutMs },\n };\n }\n\n private timeoutTraceResult(error: unknown): ExecutionResult {\n const timeoutError = error instanceof CppClientTimeoutError ? error : null;\n const trace = createEmptyRuntimeTrace('cpp', { runId: 'cpp:run', file: CPP_DEFAULT_FILE });\n trace.events = [\n {\n kind: 'timeout',\n runId: 'cpp:run',\n file: CPP_DEFAULT_FILE,\n message: error instanceof Error ? error.message : String(error),\n },\n ];\n trace.traceStepCount = 1;\n return {\n success: false,\n output: null,\n error: error instanceof Error ? error.message : String(error),\n trace,\n executionTimeMs: timeoutError?.timeoutMs ?? this.tracingTimeoutMs,\n consoleOutput: [],\n traceLimitExceeded: true,\n timeoutReason: 'client-timeout',\n lineEventCount: 0,\n traceStepCount: 1,\n timings: { totalMs: timeoutError?.timeoutMs ?? this.tracingTimeoutMs },\n };\n }\n\n private terminateAndReset(reason: Error = new Error('Worker was terminated')): void {\n this.workerReadyReject?.(reason);\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n }\n this.initPromise = null;\n this.warmupPromise = null;\n this.workerReadyPromise = null;\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n\n for (const [, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(reason);\n }\n this.pendingMessages.clear();\n this.clearCompilerFrames();\n }\n\n private shouldRetryInit(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error);\n return (\n message.includes('timed out') ||\n message.includes('Worker request timed out') ||\n message.includes('worker error') ||\n message.includes('Failed to fetch') ||\n message.includes('was terminated') ||\n message.includes('closed after idle timeout')\n );\n }\n\n private sendInitMessage(): Promise<InitResult> {\n return this.sendMessage<InitResult>(\n 'init',\n {\n assets: {\n clangWasmUrl: this.options.clangWasmUrl,\n lldWasmUrl: this.options.lldWasmUrl,\n sysrootUrl: this.options.sysrootUrl,\n runtimeHeaderUrl: this.options.runtimeHeaderUrl,\n compilerBundleUrl: this.options.compilerBundleUrl,\n compilerFrameEnabled: Boolean(this.compilerFrameUrl && typeof document !== 'undefined'),\n compilerFrameUrl: this.compilerFrameUrl,\n compilerWorkerUrl: this.options.compilerWorkerUrl,\n },\n ...this.workerOptionsPayload(),\n },\n this.initTimeoutMs\n );\n }\n\n async init(): Promise<InitResult> {\n if (this.initPromise) return this.initPromise;\n this.initPromise = (async () => {\n try {\n return await this.sendInitMessage();\n } catch (error) {\n if (!this.shouldRetryInit(error)) throw error;\n this.terminateAndReset(error instanceof Error ? error : new Error(String(error)));\n return this.sendInitMessage();\n }\n })();\n try {\n return await this.initPromise;\n } catch (error) {\n this.initPromise = null;\n throw error;\n }\n }\n\n private workerOptionsPayload(): { idleTimeoutMs?: number } {\n return this.options.workerIdleTimeoutMs === undefined\n ? {}\n : { idleTimeoutMs: this.options.workerIdleTimeoutMs };\n }\n\n async warmup(): Promise<WarmupResult> {\n if (this.warmupPromise) return this.warmupPromise;\n this.warmupPromise = (async () => {\n try {\n await this.init();\n return await this.sendMessage<WarmupResult>('warmup', this.workerOptionsPayload(), this.initTimeoutMs);\n } catch (error) {\n this.warmupPromise = null;\n throw error;\n }\n })();\n return this.warmupPromise;\n }\n\n private clearCompilerFrames(reason: Error = new Error('C++ compiler frame was closed')): void {\n this.compilerFrameReadyReject?.(reason);\n this.compilerFrameReadyPromise = null;\n this.compilerFrameReadyResolve = null;\n this.compilerFrameReadyReject = null;\n if (this.compilerFrameMessageHandler) {\n globalThis.removeEventListener('message', this.compilerFrameMessageHandler);\n this.compilerFrameMessageHandler = null;\n }\n for (const [, pending] of this.pendingCompilerFrameRequests) {\n globalThis.clearTimeout(pending.timeoutId);\n pending.resolve({ success: false, error: reason.message });\n }\n this.pendingCompilerFrameRequests.clear();\n this.compilerFrame = null;\n this.compilerFrameTargetOrigin = '';\n for (const frame of this.activeCompilerFrames) {\n frame.remove();\n }\n this.activeCompilerFrames.clear();\n }\n\n private async handleCompileRequest(message: WorkerMessage): Promise<void> {\n if (!message.requestId) return;\n const worker = this.worker;\n if (!worker) return;\n\n const result = await this.compileInFrame(message.payload);\n const transfer = result?.programBuffer instanceof ArrayBuffer ? [result.programBuffer] : [];\n worker.postMessage(\n {\n type: 'compile-response',\n requestId: message.requestId,\n payload: result,\n },\n transfer\n );\n }\n\n private ensureCompilerFrame(): Promise<void> {\n if (!this.compilerFrameUrl || typeof document === 'undefined') {\n return Promise.reject(new Error('C++ compiler frame is not available.'));\n }\n if (this.compilerFrame && this.compilerFrameReadyPromise) return this.compilerFrameReadyPromise;\n\n const frameUrl = new URL(this.compilerFrameUrl, globalThis.location?.href);\n this.compilerFrameTargetOrigin = frameUrl.origin;\n const iframe = document.createElement('iframe');\n iframe.src = frameUrl.href;\n iframe.style.display = 'none';\n iframe.setAttribute('aria-hidden', 'true');\n this.compilerFrame = iframe;\n this.activeCompilerFrames.add(iframe);\n\n this.compilerFrameReadyPromise = new Promise<void>((resolve, reject) => {\n let settled = false;\n let timeoutId: ReturnType<typeof setTimeout>;\n\n const finishReady = () => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n this.compilerFrameReadyResolve = null;\n this.compilerFrameReadyReject = null;\n resolve();\n };\n const onMessage = (event: MessageEvent) => {\n if (event.source !== iframe.contentWindow) return;\n if (event.origin !== this.compilerFrameTargetOrigin) return;\n if ((event.data as { type?: string })?.type === 'frame-ready') {\n finishReady();\n return;\n }\n const requestId = (event.data as { id?: string })?.id;\n if (!requestId) return;\n const pending = this.pendingCompilerFrameRequests.get(requestId);\n if (!pending) return;\n this.pendingCompilerFrameRequests.delete(requestId);\n globalThis.clearTimeout(pending.timeoutId);\n const response = event.data as { payload?: Record<string, unknown> };\n pending.resolve(response.payload ?? { success: false, error: 'C++ compiler frame returned an empty response.' });\n };\n this.compilerFrameMessageHandler = onMessage;\n\n timeoutId = globalThis.setTimeout(() => {\n const error = new Error('C++ compiler frame request timed out.');\n this.clearCompilerFrames(error);\n reject(error);\n }, this.initTimeoutMs);\n\n this.compilerFrameReadyResolve = finishReady;\n this.compilerFrameReadyReject = (error: Error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error);\n };\n globalThis.addEventListener('message', onMessage);\n document.body.appendChild(iframe);\n });\n return this.compilerFrameReadyPromise;\n }\n\n private async compileInFrame(payload: unknown): Promise<Record<string, unknown>> {\n try {\n await this.ensureCompilerFrame();\n } catch (error) {\n return { success: false, error: error instanceof Error ? error.message : String(error) };\n }\n const iframe = this.compilerFrame;\n const frameWindow = iframe?.contentWindow;\n if (!frameWindow) {\n return { success: false, error: 'C++ compiler frame is not available.' };\n }\n\n return new Promise((resolve) => {\n const requestId = `compile-${++this.compilerFrameRequestId}`;\n const timeoutId = globalThis.setTimeout(() => {\n this.pendingCompilerFrameRequests.delete(requestId);\n resolve({ success: false, error: 'C++ compiler frame request timed out.' });\n }, this.initTimeoutMs);\n this.pendingCompilerFrameRequests.set(requestId, { resolve, timeoutId });\n frameWindow.postMessage(\n {\n id: requestId,\n type: 'compile',\n payload,\n },\n this.compilerFrameTargetOrigin\n );\n });\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: CppExecutionStyle\n ): Promise<CodeExecutionResult> {\n await this.init();\n try {\n return await this.executeWithTimeout(\n () =>\n this.sendMessage<CodeExecutionResult>(\n 'compile-run',\n { code, functionName, inputs, executionStyle },\n this.executionTimeoutMs + 5_000\n ),\n this.executionTimeoutMs,\n 'compile-run'\n );\n } catch (error) {\n if (this.isClientTimeout(error)) return this.timeoutCodeResult(error);\n throw error;\n }\n }\n\n async executeWithTracing(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n options: TraceExecutionOptions | undefined,\n executionStyle: CppExecutionStyle\n ): Promise<ExecutionResult> {\n await this.init();\n try {\n return await this.executeWithTimeout(\n () =>\n this.sendMessage<ExecutionResult>(\n 'execute-with-tracing',\n { code, functionName, inputs, options, executionStyle },\n this.tracingTimeoutMs + 5_000\n ),\n this.tracingTimeoutMs,\n 'trace'\n );\n } catch (error) {\n if (this.isClientTimeout(error)) return this.timeoutTraceResult(error);\n throw error;\n }\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: CppExecutionStyle\n ): Promise<CodeExecutionResult> {\n await this.init();\n try {\n return await this.executeWithTimeout(\n () =>\n this.sendMessage<CodeExecutionResult>(\n 'execute-code-interview',\n { code, functionName, inputs, executionStyle },\n this.interviewTimeoutMs + 5_000\n ),\n this.interviewTimeoutMs,\n 'interview'\n );\n } catch {\n return {\n success: false,\n output: null,\n error: 'Time Limit Exceeded',\n timeoutReason: 'client-timeout',\n diagnosticStage: 'interview',\n consoleOutput: [],\n timings: { totalMs: this.interviewTimeoutMs },\n };\n }\n }\n\n terminate(): void {\n this.terminateAndReset();\n }\n}\n","import type {\n RuntimeClient,\n RuntimeExecutionStyle,\n TraceExecutionOptions,\n} from '../../harness-core/src/runtime-types';\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { assertRuntimeRequestSupported } from './runtime-capability-guards';\nimport { getLanguageRuntimeProfile } from './runtime-profiles';\nimport type { CppExecutionStyle, CppWorkerClient } from './cpp-worker-client';\n\nclass CppRuntimeClient implements RuntimeClient {\n constructor(private readonly workerClient: CppWorkerClient) {}\n\n async init(): Promise<{ success: boolean; loadTimeMs: number }> {\n return this.workerClient.init();\n }\n\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: TraceExecutionOptions,\n executionStyle: RuntimeExecutionStyle = 'solution-method'\n ): Promise<ExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('cpp'), {\n request: 'trace',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeWithTracing(\n code,\n functionName ?? '',\n inputs,\n options,\n executionStyle as CppExecutionStyle\n );\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'solution-method'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('cpp'), {\n request: 'execute',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCode(\n code,\n functionName,\n inputs,\n executionStyle as CppExecutionStyle\n );\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'solution-method'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('cpp'), {\n request: 'interview',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCodeInterviewMode(\n code,\n functionName,\n inputs,\n executionStyle as CppExecutionStyle\n );\n }\n}\n\nexport function createCppRuntimeClient(workerClient: CppWorkerClient): RuntimeClient {\n return new CppRuntimeClient(workerClient);\n}\n","/**\n * Python Worker Client\n * \n * TypeScript client for communicating with the Python Web Worker.\n * Provides a promise-based API for executing Python code off the main thread.\n */\n\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { createEmptyRuntimeTrace } from '../../harness-core/src/runtime-trace';\nimport { logRuntimeDiagnostic } from './runtime-diagnostics';\n\ntype MessageId = string;\nexport type ExecutionStyle = 'function' | 'solution-method' | 'ops-class';\n\nexport interface PythonWorkerClientOptions {\n workerUrl: string;\n debug?: boolean;\n}\n\ninterface PendingMessage {\n resolve: (value: unknown) => void;\n reject: (error: Error) => void;\n timeoutId?: ReturnType<typeof globalThis.setTimeout>;\n}\n\ninterface WorkerMessage {\n id?: MessageId;\n type: string;\n payload?: unknown;\n}\n\ninterface InitResult {\n success: boolean;\n loadTimeMs: number;\n}\n\ninterface WarmupResult {\n success: boolean;\n loadTimeMs: number;\n}\n\ninterface StatusResult {\n isReady: boolean;\n isLoading: boolean;\n}\n\n// Execution timeout in milliseconds for simple code execution (10 seconds)\nconst EXECUTION_TIMEOUT_MS = 10000;\n\n// Interview mode timeout - shorter, no detailed error info (5 seconds)\nconst INTERVIEW_MODE_TIMEOUT_MS = 5000;\n\n// Tracing timeout - longer because Python heuristic detection handles infinite loops\n// This is just a safety net for truly stuck executions\nconst TRACING_TIMEOUT_MS = 30000;\n\n// Python runtime warmup/load timeout can be significantly higher on first boot/network-constrained setups\nconst INIT_TIMEOUT_MS = 120000;\n\n// Message timeout for non-execution operations (20 seconds)\nconst MESSAGE_TIMEOUT_MS = 20000;\n// Worker bootstrap timeout - prevents deadlock when worker never emits \"worker-ready\"\nconst WORKER_READY_TIMEOUT_MS = 10000;\n\nexport class PythonWorkerClient {\n private worker: Worker | null = null;\n private pendingMessages = new Map<MessageId, PendingMessage>();\n private messageId = 0;\n private isInitializing = false;\n private initPromise: Promise<InitResult> | null = null;\n private warmupPromise: Promise<WarmupResult> | null = null;\n private workerReadyPromise: Promise<void> | null = null;\n private workerReadyResolve: (() => void) | null = null;\n private workerReadyReject: ((error: Error) => void) | null = null;\n private readonly debug: boolean;\n\n constructor(private readonly options: PythonWorkerClientOptions) {\n this.debug = options.debug ?? process.env.NODE_ENV === 'development';\n }\n\n /**\n * Check if Web Workers are supported\n */\n isSupported(): boolean {\n return typeof Worker !== 'undefined';\n }\n\n /**\n * Get or create the worker instance\n */\n private getWorker(): Worker {\n if (this.worker) return this.worker;\n\n if (!this.isSupported()) {\n throw new Error('Web Workers are not supported in this environment');\n }\n\n // Create promise that resolves when worker signals it's ready\n this.workerReadyPromise = new Promise((resolve, reject) => {\n this.workerReadyResolve = resolve;\n this.workerReadyReject = (error: Error) => reject(error);\n });\n\n const workerUrl =\n this.debug && !this.options.workerUrl.includes('?')\n ? `${this.options.workerUrl}?dev=${Date.now()}`\n : this.options.workerUrl;\n this.worker = new Worker(workerUrl);\n \n this.worker.onmessage = (event: MessageEvent<WorkerMessage>) => {\n const { id, type, payload } = event.data;\n\n // Handle worker-ready signal\n if (type === 'worker-ready') {\n this.workerReadyResolve?.();\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n logRuntimeDiagnostic('info', {\n component: 'PythonWorkerClient',\n runtime: 'python',\n phase: 'worker-ready',\n message: 'Python worker is ready.',\n }, { enabled: this.debug });\n return;\n }\n\n if (this.debug && !id) {\n logRuntimeDiagnostic('debug', {\n component: 'PythonWorkerClient',\n runtime: 'python',\n phase: 'worker-event',\n message: 'Python worker emitted an unsolicited event.',\n detail: { type, payload },\n }, { enabled: this.debug });\n }\n\n // Handle responses to our messages\n if (id) {\n const pending = this.pendingMessages.get(id);\n if (pending) {\n this.pendingMessages.delete(id);\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n \n if (type === 'error') {\n pending.reject(new Error((payload as { error: string }).error));\n } else {\n logRuntimeDiagnostic('debug', {\n component: 'PythonWorkerClient',\n runtime: 'python',\n phase: 'worker-response',\n message: 'Python worker response received.',\n detail: { id, type },\n }, { enabled: this.debug });\n pending.resolve(payload);\n }\n }\n }\n };\n\n this.worker.onerror = (error) => {\n logRuntimeDiagnostic('error', {\n component: 'PythonWorkerClient',\n runtime: 'python',\n phase: 'worker-error',\n message: 'Python worker emitted an error event.',\n detail: {\n message: error.message,\n filename: error.filename,\n lineno: error.lineno,\n colno: error.colno,\n },\n });\n const workerError = new Error('Worker error');\n this.workerReadyReject?.(workerError);\n this.workerReadyResolve = null;\n this.workerReadyReject = null;\n // Reject all pending messages and clear their timeouts\n for (const [id, pending] of this.pendingMessages) {\n if (pending.timeoutId) {\n globalThis.clearTimeout(pending.timeoutId);\n }\n pending.reject(workerError);\n this.pendingMessages.delete(id);\n }\n };\n\n return this.worker;\n }\n\n /**\n * Wait for worker bootstrap signal with timeout.\n * Guards against deadlocks when the worker script fails before posting \"worker-ready\".\n */\n private async waitForWorkerReady(): Promise<void> {\n const readyPromise = this.workerReadyPromise;\n if (!readyPromise) return;\n\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n\n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n const timeoutError = new Error(\n `Python worker failed to initialize in time (${Math.round(WORKER_READY_TIMEOUT_MS / 1000)}s)`\n );\n logRuntimeDiagnostic('warn', {\n component: 'PythonWorkerClient',\n runtime: 'python',\n phase: 'worker-ready-timeout',\n message: 'Python worker did not send worker-ready before the timeout.',\n detail: { timeoutMs: WORKER_READY_TIMEOUT_MS },\n }, { enabled: this.debug });\n this.terminateAndReset(timeoutError);\n reject(timeoutError);\n }, WORKER_READY_TIMEOUT_MS);\n\n readyPromise\n .then(() => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve();\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error instanceof Error ? error : new Error(String(error)));\n });\n });\n }\n\n /**\n * Send a message to the worker and wait for a response\n */\n private async sendMessage<T>(type: string, payload?: unknown, timeoutMs: number = MESSAGE_TIMEOUT_MS): Promise<T> {\n const worker = this.getWorker();\n \n // Wait for worker to be ready before sending messages\n await this.waitForWorkerReady();\n \n const id = String(++this.messageId);\n\n return new Promise<T>((resolve, reject) => {\n this.pendingMessages.set(id, {\n resolve: resolve as (value: unknown) => void,\n reject,\n });\n\n logRuntimeDiagnostic('debug', {\n component: 'PythonWorkerClient',\n runtime: 'python',\n phase: 'worker-request',\n message: 'Sending request to Python worker.',\n detail: { id, type },\n }, { enabled: this.debug });\n\n const timeoutId = globalThis.setTimeout(() => {\n const pending = this.pendingMessages.get(id);\n if (!pending) return;\n this.pendingMessages.delete(id);\n logRuntimeDiagnostic('warn', {\n component: 'PythonWorkerClient',\n runtime: 'python',\n phase: 'worker-request-timeout',\n message: 'Python worker request timed out.',\n detail: { id, type, timeoutMs },\n }, { enabled: this.debug });\n pending.reject(new Error(`Worker request timed out: ${type}`));\n }, timeoutMs);\n\n const pending = this.pendingMessages.get(id);\n if (pending) pending.timeoutId = timeoutId;\n\n worker.postMessage({ id, type, payload });\n });\n }\n\n /**\n * Execute code with a timeout - terminates worker if execution takes too long\n */\n private async executeWithTimeout<T>(\n executor: () => Promise<T>,\n timeoutMs: number = EXECUTION_TIMEOUT_MS\n ): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let settled = false;\n \n const timeoutId = globalThis.setTimeout(() => {\n if (settled) return;\n settled = true;\n \n // Terminate the stuck worker and clear state\n logRuntimeDiagnostic('warn', {\n component: 'PythonWorkerClient',\n runtime: 'python',\n phase: 'execution-timeout',\n message: 'Python execution timed out; terminating worker.',\n detail: { timeoutMs },\n }, { enabled: this.debug });\n this.terminateAndReset();\n \n const seconds = Math.round(timeoutMs / 1000);\n reject(new Error(`Execution timed out (possible infinite loop). Code execution was stopped after ${seconds} seconds.`));\n }, timeoutMs);\n \n executor()\n .then((result) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n resolve(result);\n })\n .catch((error) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeoutId);\n reject(error);\n });\n });\n }\n\n /**\n * Terminate the worker and reset state for recreation\n */\n private terminateAndReset(reason: Error = new Error('Worker was terminated')): void {\n this.workerReadyReject?.(reason);\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n }\n this.initPromise = null;\n this.warmupPromise = null;\n this.isInitializing = false;\n this.workerReadyPromise = null;\n this.workerReadyResolve = null;\n \n // Reject all pending messages\n for (const [, pending] of this.pendingMessages) {\n if (pending.timeoutId) globalThis.clearTimeout(pending.timeoutId);\n pending.reject(reason);\n }\n this.pendingMessages.clear();\n }\n\n /**\n * Initialize the Python worker. Runtime loading is lazy unless warmup() is called.\n */\n async init(): Promise<InitResult> {\n // Return existing promise if already initializing\n if (this.initPromise) {\n return this.initPromise;\n }\n\n if (this.isInitializing) {\n // Wait for existing init to complete\n await new Promise((resolve) => setTimeout(resolve, 100));\n return this.init();\n }\n\n this.isInitializing = true;\n\n this.initPromise = (async () => {\n try {\n return await this.sendMessage<InitResult>('init', undefined, INIT_TIMEOUT_MS);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n\n const shouldRetry =\n message.includes('Worker request timed out: init') ||\n message.includes('Worker was terminated') ||\n message.includes('Worker error') ||\n message.includes('failed to initialize in time');\n\n if (!shouldRetry) {\n throw error;\n }\n\n logRuntimeDiagnostic('warn', {\n component: 'PythonWorkerClient',\n runtime: 'python',\n phase: 'init-retry',\n message: 'Python worker init failed; resetting worker and retrying once.',\n detail: { message },\n }, { enabled: this.debug });\n\n this.terminateAndReset();\n return this.sendMessage<InitResult>('init', undefined, INIT_TIMEOUT_MS);\n }\n })();\n \n try {\n const result = await this.initPromise;\n return result;\n } catch (error) {\n this.initPromise = null;\n throw error;\n } finally {\n this.isInitializing = false;\n }\n }\n\n async warmup(): Promise<WarmupResult> {\n if (this.warmupPromise) return this.warmupPromise;\n\n this.warmupPromise = (async () => {\n try {\n await this.init();\n return await this.sendMessage<WarmupResult>('warmup', undefined, INIT_TIMEOUT_MS);\n } catch (error) {\n this.warmupPromise = null;\n throw error;\n }\n })();\n\n return this.warmupPromise;\n }\n\n /**\n * Execute Python code with tracing for step-by-step visualization\n * @param options.maxLineEvents - Max line events before abort (for complexity analysis, use higher values)\n */\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: {\n maxTraceSteps?: number;\n maxLineEvents?: number;\n maxSingleLineHits?: number;\n maxStoredEvents?: number;\n minimalTrace?: boolean;\n },\n executionStyle: ExecutionStyle = 'function'\n ): Promise<ExecutionResult> {\n // Ensure the Python worker is initialized. Runtime loading is handled inside the worker.\n await this.init();\n \n // Use longer timeout for tracing - Python heuristic detection handles infinite loops\n try {\n return await this.executeWithTimeout(\n () => this.sendMessage<ExecutionResult>('execute-with-tracing', {\n code,\n functionName,\n inputs,\n executionStyle,\n options,\n }, TRACING_TIMEOUT_MS + 5000), // Message timeout slightly longer than execution timeout\n TRACING_TIMEOUT_MS\n );\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n const isClientTimeout =\n errorMessage.includes('Execution timed out') ||\n errorMessage.includes('possible infinite loop');\n\n if (isClientTimeout) {\n return {\n success: false,\n error: errorMessage,\n trace: createEmptyRuntimeTrace('python', { runId: 'python:run', file: 'solution.py' }),\n executionTimeMs: TRACING_TIMEOUT_MS,\n consoleOutput: [],\n traceLimitExceeded: true,\n timeoutReason: 'client-timeout',\n lineEventCount: 0,\n traceStepCount: 0,\n };\n }\n\n throw error;\n }\n }\n\n /**\n * Execute Python code without tracing (for running tests)\n */\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: ExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n // Ensure the Python worker is initialized. Runtime loading is handled inside the worker.\n await this.init();\n \n return this.executeWithTimeout(\n () => this.sendMessage<CodeExecutionResult>('execute-code', {\n code,\n functionName,\n inputs,\n executionStyle,\n }, EXECUTION_TIMEOUT_MS + 5000),\n EXECUTION_TIMEOUT_MS\n );\n }\n\n /**\n * Execute Python code in interview mode - 5 second timeout, generic error messages\n * Does not reveal which line caused the timeout\n */\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: ExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n // Ensure the Python worker is initialized. Runtime loading is handled inside the worker.\n await this.init();\n \n try {\n const result = await this.executeWithTimeout(\n () => this.sendMessage<CodeExecutionResult>('execute-code-interview', {\n code,\n functionName,\n inputs,\n executionStyle,\n }, INTERVIEW_MODE_TIMEOUT_MS + 2000),\n INTERVIEW_MODE_TIMEOUT_MS\n );\n \n // Sanitize error messages in interview mode - don't reveal line numbers for timeouts\n if (!result.success && result.error) {\n // Keep basic error types but remove line-specific info for timeouts\n const normalizedError = result.error.toLowerCase();\n const isTimeoutOrResourceLimit =\n normalizedError.includes('timed out') ||\n normalizedError.includes('execution timeout') ||\n normalizedError.includes('infinite loop') ||\n normalizedError.includes('interview_guard_triggered') ||\n normalizedError.includes('memory-limit') ||\n normalizedError.includes('line-limit') ||\n normalizedError.includes('single-line-limit') ||\n normalizedError.includes('recursion-limit');\n\n if (isTimeoutOrResourceLimit) {\n return {\n success: false,\n output: null,\n error: 'Time Limit Exceeded',\n consoleOutput: result.consoleOutput ?? [],\n };\n }\n }\n \n return result;\n } catch (error) {\n // Handle timeout from executeWithTimeout\n const errorMsg = error instanceof Error ? error.message : String(error);\n if (errorMsg.includes('timed out') || errorMsg.includes('Execution timeout')) {\n return {\n success: false,\n output: null,\n error: 'Time Limit Exceeded',\n consoleOutput: [],\n };\n }\n return {\n success: false,\n output: null,\n error: errorMsg,\n consoleOutput: [],\n };\n }\n }\n\n /**\n * Check the status of the worker\n */\n async getStatus(): Promise<StatusResult> {\n return this.sendMessage<StatusResult>('status');\n }\n\n /**\n * Analyze Python code using AST (off main thread)\n * Returns CodeFacts with semantic information about the code\n */\n async analyzeCode(code: string): Promise<unknown> {\n // Ensure the Python worker is initialized. Runtime loading is handled inside the worker.\n await this.init();\n \n // Use a shorter timeout for analysis (5 seconds should be plenty)\n return this.sendMessage<unknown>('analyze-code', { code }, 5000);\n }\n\n /**\n * Terminate the worker and clean up resources\n */\n terminate(): void {\n this.terminateAndReset();\n }\n}\n\nexport type PyodideWorkerClientOptions = PythonWorkerClientOptions;\nexport { PythonWorkerClient as PyodideWorkerClient };\n\n/**\n * Check if the worker client is supported\n */\nexport function isWorkerSupported(): boolean {\n return typeof Worker !== 'undefined';\n}\n","import type { ExecutionStyle, PythonWorkerClient } from './pyodide-worker-client';\nimport type {\n RuntimeClient,\n RuntimeExecutionStyle,\n TraceExecutionOptions,\n} from '../../harness-core/src/runtime-types';\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { assertRuntimeRequestSupported } from './runtime-capability-guards';\nimport { getLanguageRuntimeProfile } from './runtime-profiles';\n\nclass PythonRuntimeClient implements RuntimeClient {\n constructor(private readonly workerClient: PythonWorkerClient) {}\n\n async init(): Promise<{ success: boolean; loadTimeMs: number }> {\n return this.workerClient.init();\n }\n\n async executeWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n options?: TraceExecutionOptions,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<ExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('python'), {\n request: 'trace',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeWithTracing(\n code,\n functionName,\n inputs,\n options,\n executionStyle as ExecutionStyle\n );\n }\n\n async executeCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('python'), {\n request: 'execute',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCode(\n code,\n functionName,\n inputs,\n executionStyle as ExecutionStyle\n );\n }\n\n async executeCodeInterviewMode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n ): Promise<CodeExecutionResult> {\n assertRuntimeRequestSupported(getLanguageRuntimeProfile('python'), {\n request: 'interview',\n executionStyle,\n functionName,\n });\n return this.workerClient.executeCodeInterviewMode(\n code,\n functionName,\n inputs,\n executionStyle as ExecutionStyle\n );\n }\n}\n\nexport function createPythonRuntimeClient(workerClient: PythonWorkerClient): RuntimeClient {\n return new PythonRuntimeClient(workerClient);\n}\n","const DEFAULT_ASSET_BASE_URL = '/workers';\n\nexport interface BrowserHarnessAssets {\n pythonWorker: string;\n pythonRuntimeCore: string;\n pythonSnippets: string;\n javascriptWorker: string;\n javaWorker: string;\n csharpWorker: string;\n csharpAssetBaseUrl: string;\n typescriptCompiler: string;\n cppWorker: string;\n cppCompilerFrame: string;\n cppCompilerWorker: string;\n cppClangWasm: string;\n cppLldWasm: string;\n cppSysroot: string;\n cppRuntimeHeader: string;\n cppCompilerBundle: string;\n}\n\nexport type BrowserHarnessAssetOverrides = Partial<BrowserHarnessAssets>;\n\nexport const DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS: Readonly<BrowserHarnessAssets> = Object.freeze({\n pythonWorker: 'pyodide-worker.js',\n pythonRuntimeCore: 'pyodide/runtime-core.js',\n pythonSnippets: 'generated-python-harness-snippets.js',\n javascriptWorker: 'javascript-worker.js',\n javaWorker: 'java-worker.js',\n csharpWorker: 'csharp-worker.js',\n csharpAssetBaseUrl: 'vendor/csharp',\n typescriptCompiler: 'vendor/typescript.js',\n cppWorker: 'cpp-worker.js',\n cppCompilerFrame: 'cpp-compiler-frame.html',\n cppCompilerWorker: 'cpp-compiler-worker.js',\n cppClangWasm: '',\n cppLldWasm: '',\n cppSysroot: '',\n cppRuntimeHeader: 'cpp/tracecode_runtime.hpp',\n cppCompilerBundle: 'vendor/cpp/yowasp/bundle.js',\n});\n\nfunction isExplicitAssetPath(pathname: string): boolean {\n return (\n pathname.startsWith('/') ||\n pathname.startsWith('./') ||\n pathname.startsWith('../') ||\n pathname.startsWith('http://') ||\n pathname.startsWith('https://') ||\n pathname.startsWith('data:') ||\n pathname.startsWith('blob:')\n );\n}\n\nfunction stripTrailingSlash(value: string): string {\n return value.replace(/\\/+$/, '');\n}\n\nfunction trimLeadingSlash(value: string): string {\n return value.replace(/^\\/+/, '');\n}\n\nfunction resolveAssetPath(baseUrl: string, pathname: string): string {\n if (pathname === '') {\n return '';\n }\n if (isExplicitAssetPath(pathname)) {\n return pathname;\n }\n const normalizedBase = stripTrailingSlash(baseUrl || DEFAULT_ASSET_BASE_URL);\n const normalizedPath = trimLeadingSlash(pathname);\n return `${normalizedBase}/${normalizedPath}`;\n}\n\nexport function resolveBrowserHarnessAssets(options: {\n assetBaseUrl?: string;\n assets?: BrowserHarnessAssetOverrides;\n} = {}): BrowserHarnessAssets {\n const assetBaseUrl = options.assetBaseUrl ?? DEFAULT_ASSET_BASE_URL;\n const assets = options.assets ?? {};\n return {\n pythonWorker: resolveAssetPath(assetBaseUrl, assets.pythonWorker ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.pythonWorker),\n pythonRuntimeCore: resolveAssetPath(\n assetBaseUrl,\n assets.pythonRuntimeCore ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.pythonRuntimeCore\n ),\n pythonSnippets: resolveAssetPath(assetBaseUrl, assets.pythonSnippets ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.pythonSnippets),\n javascriptWorker: resolveAssetPath(\n assetBaseUrl,\n assets.javascriptWorker ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.javascriptWorker\n ),\n javaWorker: resolveAssetPath(assetBaseUrl, assets.javaWorker ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.javaWorker),\n csharpWorker: resolveAssetPath(assetBaseUrl, assets.csharpWorker ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.csharpWorker),\n csharpAssetBaseUrl: resolveAssetPath(\n assetBaseUrl,\n assets.csharpAssetBaseUrl ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.csharpAssetBaseUrl\n ),\n typescriptCompiler: resolveAssetPath(\n assetBaseUrl,\n assets.typescriptCompiler ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.typescriptCompiler\n ),\n cppWorker: resolveAssetPath(assetBaseUrl, assets.cppWorker ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.cppWorker),\n cppCompilerFrame: resolveAssetPath(\n assetBaseUrl,\n assets.cppCompilerFrame ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.cppCompilerFrame\n ),\n cppCompilerWorker: resolveAssetPath(\n assetBaseUrl,\n assets.cppCompilerWorker ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.cppCompilerWorker\n ),\n cppClangWasm: resolveAssetPath(assetBaseUrl, assets.cppClangWasm ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.cppClangWasm),\n cppLldWasm: resolveAssetPath(assetBaseUrl, assets.cppLldWasm ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.cppLldWasm),\n cppSysroot: resolveAssetPath(assetBaseUrl, assets.cppSysroot ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.cppSysroot),\n cppRuntimeHeader: resolveAssetPath(\n assetBaseUrl,\n assets.cppRuntimeHeader ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.cppRuntimeHeader\n ),\n cppCompilerBundle: resolveAssetPath(\n assetBaseUrl,\n assets.cppCompilerBundle ?? DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS.cppCompilerBundle\n ),\n };\n}\n","import type {\n Language,\n LanguageRuntimeProfile,\n RuntimeClient,\n} from '../../harness-core/src/runtime-types';\nimport type { LanguageRuntimeInfo } from '../../harness-core/src/runtime-language-info';\nimport {\n getLanguageRuntimeInfo,\n getSupportedLanguageRuntimeInfos,\n} from '../../harness-core/src/runtime-language-info';\nimport { JavaScriptWorkerClient } from './javascript-worker-client';\nimport { createJavaScriptRuntimeClient } from './javascript-runtime-client';\nimport { JavaWorkerClient } from './java-worker-client';\nimport { createJavaRuntimeClient } from './java-runtime-client';\nimport { CSharpWorkerClient } from './csharp-worker-client';\nimport { createCSharpRuntimeClient } from './csharp-runtime-client';\nimport { CppWorkerClient } from './cpp-worker-client';\nimport { createCppRuntimeClient } from './cpp-runtime-client';\nimport { PythonWorkerClient } from './pyodide-worker-client';\nimport { createPythonRuntimeClient } from './python-runtime-client';\nimport {\n DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS,\n resolveBrowserHarnessAssets,\n type BrowserHarnessAssets,\n type BrowserHarnessAssetOverrides,\n} from './runtime-assets';\nimport {\n getLanguageRuntimeProfile,\n getSupportedLanguageProfiles,\n isLanguageSupported,\n SUPPORTED_LANGUAGES,\n} from './runtime-profiles';\n\nexport interface CreateBrowserHarnessOptions {\n assetBaseUrl?: string;\n assets?: BrowserHarnessAssetOverrides;\n debug?: boolean;\n java?: {\n workerIdleTimeoutMs?: number;\n };\n csharp?: {\n workerIdleTimeoutMs?: number;\n };\n cpp?: {\n initTimeoutMs?: number;\n executionTimeoutMs?: number;\n tracingTimeoutMs?: number;\n interviewTimeoutMs?: number;\n workerIdleTimeoutMs?: number;\n };\n}\n\nexport interface BrowserHarness {\n readonly assets: BrowserHarnessAssets;\n readonly supportedLanguages: readonly Language[];\n getClient(language: Language): RuntimeClient;\n getProfile(language: Language): LanguageRuntimeProfile;\n getSupportedLanguageProfiles(): readonly LanguageRuntimeProfile[];\n getLanguageInfo(language: Language): LanguageRuntimeInfo;\n getSupportedLanguageInfos(): readonly LanguageRuntimeInfo[];\n isLanguageSupported(language: Language): boolean;\n warmLanguage(language: Language): Promise<{ success: boolean; loadTimeMs: number }>;\n disposeLanguage(language: Language): void;\n dispose(): void;\n}\n\nclass BrowserHarnessRuntime implements BrowserHarness {\n readonly assets: BrowserHarnessAssets;\n readonly supportedLanguages = SUPPORTED_LANGUAGES;\n\n private readonly pythonWorkerClient: PythonWorkerClient;\n private readonly javaScriptWorkerClient: JavaScriptWorkerClient;\n private readonly javaWorkerClient: JavaWorkerClient;\n private readonly csharpWorkerClient: CSharpWorkerClient;\n private readonly cppWorkerClient: CppWorkerClient;\n private readonly clients: Record<Language, RuntimeClient>;\n\n constructor(options: CreateBrowserHarnessOptions = {}) {\n this.assets = resolveBrowserHarnessAssets(options);\n this.pythonWorkerClient = new PythonWorkerClient({\n workerUrl: this.assets.pythonWorker,\n debug: options.debug,\n });\n this.javaScriptWorkerClient = new JavaScriptWorkerClient({\n workerUrl: this.assets.javascriptWorker,\n debug: options.debug,\n });\n this.javaWorkerClient = new JavaWorkerClient({\n workerUrl: this.assets.javaWorker,\n debug: options.debug,\n workerIdleTimeoutMs: options.java?.workerIdleTimeoutMs,\n });\n this.csharpWorkerClient = new CSharpWorkerClient({\n workerUrl: this.assets.csharpWorker,\n assetBaseUrl: this.assets.csharpAssetBaseUrl,\n debug: options.debug,\n workerIdleTimeoutMs: options.csharp?.workerIdleTimeoutMs,\n });\n this.cppWorkerClient = new CppWorkerClient({\n workerUrl: this.assets.cppWorker,\n compilerFrameUrl: this.assets.cppCompilerFrame,\n compilerWorkerUrl: this.assets.cppCompilerWorker,\n clangWasmUrl: this.assets.cppClangWasm,\n lldWasmUrl: this.assets.cppLldWasm,\n sysrootUrl: this.assets.cppSysroot,\n runtimeHeaderUrl: this.assets.cppRuntimeHeader,\n compilerBundleUrl: this.assets.cppCompilerBundle,\n debug: options.debug,\n initTimeoutMs: options.cpp?.initTimeoutMs,\n executionTimeoutMs: options.cpp?.executionTimeoutMs,\n tracingTimeoutMs: options.cpp?.tracingTimeoutMs,\n interviewTimeoutMs: options.cpp?.interviewTimeoutMs,\n workerIdleTimeoutMs: options.cpp?.workerIdleTimeoutMs,\n });\n this.clients = {\n python: createPythonRuntimeClient(this.pythonWorkerClient),\n javascript: createJavaScriptRuntimeClient('javascript', this.javaScriptWorkerClient),\n typescript: createJavaScriptRuntimeClient('typescript', this.javaScriptWorkerClient),\n java: createJavaRuntimeClient(this.javaWorkerClient),\n csharp: createCSharpRuntimeClient(this.csharpWorkerClient),\n cpp: createCppRuntimeClient(this.cppWorkerClient),\n };\n }\n\n getClient(language: Language): RuntimeClient {\n const client = this.clients[language];\n if (!client) {\n throw new Error(`Runtime for language \"${language}\" is not implemented yet.`);\n }\n return client;\n }\n\n getProfile(language: Language): LanguageRuntimeProfile {\n return getLanguageRuntimeProfile(language);\n }\n\n getSupportedLanguageProfiles(): readonly LanguageRuntimeProfile[] {\n return getSupportedLanguageProfiles();\n }\n\n getLanguageInfo(language: Language): LanguageRuntimeInfo {\n return getLanguageRuntimeInfo(language);\n }\n\n getSupportedLanguageInfos(): readonly LanguageRuntimeInfo[] {\n return getSupportedLanguageRuntimeInfos();\n }\n\n isLanguageSupported(language: Language): boolean {\n return isLanguageSupported(language);\n }\n\n warmLanguage(language: Language): Promise<{ success: boolean; loadTimeMs: number }> {\n if (language === 'python') {\n return this.pythonWorkerClient.warmup();\n }\n if (language === 'java') {\n return this.javaWorkerClient.warmup();\n }\n if (language === 'cpp') {\n return this.cppWorkerClient.warmup();\n }\n if (language === 'csharp') {\n return this.csharpWorkerClient.warmup();\n }\n if (language === 'typescript') {\n return this.javaScriptWorkerClient.warmup('typescript');\n }\n return this.getClient(language).init();\n }\n\n disposeLanguage(language: Language): void {\n if (language === 'python') {\n this.pythonWorkerClient.terminate();\n return;\n }\n if (language === 'java') {\n this.javaWorkerClient.terminate();\n return;\n }\n if (language === 'csharp') {\n this.csharpWorkerClient.terminate();\n return;\n }\n if (language === 'cpp') {\n this.cppWorkerClient.terminate();\n return;\n }\n this.javaScriptWorkerClient.terminate();\n }\n\n dispose(): void {\n this.pythonWorkerClient.terminate();\n this.javaScriptWorkerClient.terminate();\n this.javaWorkerClient.terminate();\n this.csharpWorkerClient.terminate();\n this.cppWorkerClient.terminate();\n }\n}\n\nexport function createBrowserHarness(options: CreateBrowserHarnessOptions = {}): BrowserHarness {\n return new BrowserHarnessRuntime(options);\n}\n\nexport {\n DEFAULT_BROWSER_HARNESS_ASSET_RELATIVE_PATHS,\n resolveBrowserHarnessAssets,\n type BrowserHarnessAssets,\n type BrowserHarnessAssetOverrides,\n};\n","/**\n * AUTO-GENERATED FILE. DO NOT EDIT MANUALLY.\n *\n * Source: packages/harness-python/src/python-harness-template.ts\n * Generator: scripts/generate-python-harness-artifacts.ts\n */\n\n// @ts-nocheck\n\nexport function toPythonLiteral(value){if(value===null||value===void 0){return\"None\"}if(typeof value===\"boolean\"){return value?\"True\":\"False\"}if(typeof value===\"number\"){return String(value)}if(typeof value===\"string\"){return JSON.stringify(value)}if(Array.isArray(value)){return\"[\"+value.map(toPythonLiteral).join(\", \")+\"]\"}if(typeof value===\"object\"){const entries=Object.entries(value).map(([k,v])=>`${JSON.stringify(k)}: ${toPythonLiteral(v)}`).join(\", \");return\"{\"+entries+\"}\"}return JSON.stringify(value)}\n\nexport const PYTHON_CLASS_DEFINITIONS = \"\\nclass TreeNode:\\n def __init__(self, val=0, left=None, right=None):\\n self.val = val\\n self.value = val\\n self.left = left\\n self.right = right\\n def __getitem__(self, key):\\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', None))\\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', None))\\n if key == 'left': return self.left\\n if key == 'right': return self.right\\n raise KeyError(key)\\n def get(self, key, default=None):\\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', default))\\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', default))\\n if key == 'left': return self.left\\n if key == 'right': return self.right\\n return default\\n def __repr__(self):\\n return f\\\"TreeNode({getattr(self, 'val', getattr(self, 'value', None))})\\\"\\n\\nclass ListNode:\\n def __init__(self, val=0, next=None):\\n self.val = val\\n self.value = val\\n self.next = next\\n def __getitem__(self, key):\\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', None))\\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', None))\\n if key == 'next': return self.next\\n raise KeyError(key)\\n def get(self, key, default=None):\\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', default))\\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', default))\\n if key == 'next': return self.next\\n return default\\n def __repr__(self):\\n return f\\\"ListNode({getattr(self, 'val', getattr(self, 'value', None))})\\\"\\n\";\n\nexport const PYTHON_CONVERSION_HELPERS = \"\\ndef _ensure_node_value_aliases(node):\\n if node is None:\\n return node\\n try:\\n has_val = hasattr(node, 'val')\\n has_value = hasattr(node, 'value')\\n if has_value and not has_val:\\n try:\\n setattr(node, 'val', getattr(node, 'value'))\\n except Exception:\\n pass\\n elif has_val and not has_value:\\n try:\\n setattr(node, 'value', getattr(node, 'val'))\\n except Exception:\\n pass\\n except Exception:\\n pass\\n return node\\n\\ndef _dict_to_tree(d):\\n if d is None:\\n return None\\n if not isinstance(d, _builtins.dict):\\n return d\\n if 'val' not in d and 'value' not in d:\\n return d\\n node = TreeNode(d.get('val', d.get('value', 0)))\\n _ensure_node_value_aliases(node)\\n node.left = _dict_to_tree(d.get('left'))\\n node.right = _dict_to_tree(d.get('right'))\\n return node\\n\\ndef _dict_to_list(d, _refs=None):\\n if _refs is None:\\n _refs = {}\\n if d is None:\\n return None\\n if not isinstance(d, _builtins.dict):\\n return d\\n if '__ref__' in d:\\n return _refs.get(d.get('__ref__'))\\n if 'val' not in d and 'value' not in d:\\n return d\\n node = ListNode(d.get('val', d.get('value', 0)))\\n _ensure_node_value_aliases(node)\\n node_id = d.get('__id__')\\n if isinstance(node_id, _builtins.str) and node_id:\\n _refs[node_id] = node\\n node.next = _dict_to_list(d.get('next'), _refs)\\n return node\\n\";\n\nexport const PYTHON_TRACE_SERIALIZE_FUNCTION = \"\\n# Sentinel to mark skipped values (functions, etc.) - distinct from None\\n_SKIP_SENTINEL = \\\"__TRACECODE_SKIP__\\\"\\n_MAX_SERIALIZE_DEPTH = 48\\n_MAX_SERIALIZED_ITEMS = 64\\n_MAX_OBJECT_FIELDS = 32\\n_tracecode_global_object_refs = {}\\n_tracecode_next_object_ref_id = 0\\n\\ndef _tracecode_ref_id(obj_ref, node_refs):\\n global _tracecode_next_object_ref_id\\n if obj_ref in node_refs:\\n return node_refs[obj_ref]\\n if obj_ref in _tracecode_global_object_refs:\\n node_id = _tracecode_global_object_refs[obj_ref]\\n else:\\n node_id = f\\\"ref-{_tracecode_next_object_ref_id}\\\"\\n _tracecode_global_object_refs[obj_ref] = node_id\\n _tracecode_next_object_ref_id += 1\\n node_refs[obj_ref] = node_id\\n return node_id\\n\\ndef _truncation_marker(total, emitted):\\n return {\\\"__truncated__\\\": True, \\\"remaining\\\": max(0, total - emitted)}\\n\\ndef _serialize_sequence(values, depth, node_refs):\\n values_list = _builtins.list(values)\\n emitted = min(len(values_list), _MAX_SERIALIZED_ITEMS)\\n result = [_serialize(x, depth + 1, node_refs) for x in values_list[:emitted]]\\n if emitted < len(values_list):\\n result.append(_truncation_marker(len(values_list), emitted))\\n return result\\n\\ndef _serialize(obj, depth=0, node_refs=None):\\n if node_refs is None:\\n node_refs = {}\\n if isinstance(obj, (bool, int, str, type(None))):\\n return obj\\n elif isinstance(obj, float):\\n if not math.isfinite(obj):\\n if math.isnan(obj):\\n return \\\"NaN\\\"\\n return \\\"Infinity\\\" if obj > 0 else \\\"-Infinity\\\"\\n return obj\\n if depth > _MAX_SERIALIZE_DEPTH:\\n return \\\"<max depth>\\\"\\n elif isinstance(obj, (_builtins.list, _builtins.tuple)):\\n return _serialize_sequence(obj, depth, node_refs)\\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\\n return _serialize_sequence(obj, depth, node_refs)\\n elif isinstance(obj, _builtins.dict):\\n items = _builtins.list(obj.items())\\n emitted = min(len(items), _MAX_SERIALIZED_ITEMS)\\n result = {str(k): _serialize(v, depth + 1, node_refs) for k, v in items[:emitted]}\\n if emitted < len(items):\\n result[\\\"__truncated__\\\"] = True\\n result[\\\"remaining\\\"] = len(items) - emitted\\n return result\\n elif isinstance(obj, set):\\n # Use try/except for sorting to handle heterogeneous sets\\n values = _builtins.list(obj)\\n emitted = min(len(values), _MAX_SERIALIZED_ITEMS)\\n try:\\n sorted_vals = sorted([_serialize(x, depth + 1, node_refs) for x in values[:emitted]])\\n except TypeError:\\n sorted_vals = [_serialize(x, depth + 1, node_refs) for x in values[:emitted]]\\n result = {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": sorted_vals}\\n if emitted < len(values):\\n result[\\\"__truncated__\\\"] = True\\n result[\\\"remaining\\\"] = len(values) - emitted\\n return result\\n elif isinstance(obj, TreeNode):\\n obj_ref = _builtins.id(obj)\\n if obj_ref in node_refs:\\n return {\\\"__ref__\\\": node_refs[obj_ref]}\\n node_id = _tracecode_ref_id(obj_ref, node_refs)\\n result = {\\n \\\"__type__\\\": \\\"TreeNode\\\",\\n \\\"__id__\\\": node_id,\\n \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\\n }\\n if hasattr(obj, 'left'):\\n result[\\\"left\\\"] = _serialize(obj.left, depth + 1, node_refs)\\n if hasattr(obj, 'right'):\\n result[\\\"right\\\"] = _serialize(obj.right, depth + 1, node_refs)\\n return result\\n elif isinstance(obj, ListNode):\\n obj_ref = _builtins.id(obj)\\n if obj_ref in node_refs:\\n return {\\\"__ref__\\\": node_refs[obj_ref]}\\n node_id = _tracecode_ref_id(obj_ref, node_refs)\\n result = {\\n \\\"__type__\\\": \\\"ListNode\\\",\\n \\\"__id__\\\": node_id,\\n \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\\n }\\n result[\\\"next\\\"] = _serialize(obj.next, depth + 1, node_refs)\\n return result\\n elif callable(obj):\\n # Skip functions entirely - return sentinel\\n return _SKIP_SENTINEL\\n elif hasattr(obj, '__dict__'):\\n obj_ref = _builtins.id(obj)\\n if obj_ref in node_refs:\\n return {\\\"__ref__\\\": node_refs[obj_ref]}\\n node_id = _tracecode_ref_id(obj_ref, node_refs)\\n class_name = getattr(getattr(obj, '__class__', None), '__name__', 'object')\\n result = {\\n \\\"__type__\\\": class_name,\\n \\\"__class__\\\": class_name,\\n \\\"__id__\\\": node_id,\\n }\\n try:\\n raw_fields = getattr(obj, '__dict__', None)\\n except Exception:\\n raw_fields = None\\n if isinstance(raw_fields, _builtins.dict):\\n fields = []\\n for key, value in raw_fields.items():\\n key_str = str(key)\\n if key_str.startswith('_'):\\n continue\\n if callable(value):\\n continue\\n fields.append((key_str, value))\\n for key_str, value in fields[:_MAX_OBJECT_FIELDS]:\\n result[key_str] = _serialize(value, depth + 1, node_refs)\\n if len(fields) > _MAX_OBJECT_FIELDS:\\n result[\\\"__truncated__\\\"] = True\\n result[\\\"remaining\\\"] = len(fields) - _MAX_OBJECT_FIELDS\\n return result\\n else:\\n repr_str = repr(obj)\\n # Filter out function-like representations (e.g., <function foo at 0x...>)\\n if repr_str.startswith('<') and repr_str.endswith('>'):\\n return _SKIP_SENTINEL\\n return repr_str\\n\\ndef _serialize_output(obj, depth=0, node_refs=None):\\n if node_refs is None:\\n node_refs = {}\\n if isinstance(obj, (bool, int, str, type(None))):\\n return obj\\n elif isinstance(obj, float):\\n if not math.isfinite(obj):\\n if math.isnan(obj):\\n return \\\"NaN\\\"\\n return \\\"Infinity\\\" if obj > 0 else \\\"-Infinity\\\"\\n return obj\\n if depth > _MAX_SERIALIZE_DEPTH:\\n return \\\"<max depth>\\\"\\n elif isinstance(obj, (_builtins.list, _builtins.tuple)):\\n return [_serialize_output(x, depth + 1, node_refs) for x in obj]\\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\\n return [_serialize_output(x, depth + 1, node_refs) for x in obj]\\n elif isinstance(obj, _builtins.dict):\\n return {str(k): _serialize_output(v, depth + 1, node_refs) for k, v in obj.items()}\\n elif isinstance(obj, set):\\n try:\\n sorted_vals = sorted([_serialize_output(x, depth + 1, node_refs) for x in obj])\\n except TypeError:\\n sorted_vals = [_serialize_output(x, depth + 1, node_refs) for x in obj]\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": sorted_vals}\\n elif isinstance(obj, TreeNode):\\n obj_ref = _builtins.id(obj)\\n if obj_ref in node_refs:\\n return {\\\"__ref__\\\": node_refs[obj_ref]}\\n node_id = _tracecode_ref_id(obj_ref, node_refs)\\n result = {\\n \\\"__type__\\\": \\\"TreeNode\\\",\\n \\\"__id__\\\": node_id,\\n \\\"val\\\": _serialize_output(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\\n }\\n if hasattr(obj, 'left'):\\n result[\\\"left\\\"] = _serialize_output(obj.left, depth + 1, node_refs)\\n if hasattr(obj, 'right'):\\n result[\\\"right\\\"] = _serialize_output(obj.right, depth + 1, node_refs)\\n return result\\n elif isinstance(obj, ListNode):\\n obj_ref = _builtins.id(obj)\\n if obj_ref in node_refs:\\n return {\\\"__ref__\\\": node_refs[obj_ref]}\\n node_id = _tracecode_ref_id(obj_ref, node_refs)\\n result = {\\n \\\"__type__\\\": \\\"ListNode\\\",\\n \\\"__id__\\\": node_id,\\n \\\"val\\\": _serialize_output(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\\n }\\n result[\\\"next\\\"] = _serialize_output(obj.next, depth + 1, node_refs)\\n return result\\n elif callable(obj):\\n return _SKIP_SENTINEL\\n elif hasattr(obj, '__dict__'):\\n obj_ref = _builtins.id(obj)\\n if obj_ref in node_refs:\\n return {\\\"__ref__\\\": node_refs[obj_ref]}\\n node_id = _tracecode_ref_id(obj_ref, node_refs)\\n class_name = getattr(getattr(obj, '__class__', None), '__name__', 'object')\\n result = {\\n \\\"__type__\\\": class_name,\\n \\\"__class__\\\": class_name,\\n \\\"__id__\\\": node_id,\\n }\\n try:\\n raw_fields = getattr(obj, '__dict__', None)\\n except Exception:\\n raw_fields = None\\n if isinstance(raw_fields, _builtins.dict):\\n for key, value in raw_fields.items():\\n key_str = str(key)\\n if key_str.startswith('_') or callable(value):\\n continue\\n result[key_str] = _serialize_output(value, depth + 1, node_refs)\\n return result\\n else:\\n repr_str = repr(obj)\\n if repr_str.startswith('<') and repr_str.endswith('>'):\\n return _SKIP_SENTINEL\\n return repr_str\\n\";\n\nexport const PYTHON_EXECUTE_SERIALIZE_FUNCTION = \"\\n_MAX_SERIALIZE_DEPTH = 48\\n\\ndef _serialize(obj, depth=0):\\n if isinstance(obj, (bool, int, str, type(None))):\\n return obj\\n elif isinstance(obj, float):\\n if not math.isfinite(obj):\\n if math.isnan(obj):\\n return \\\"NaN\\\"\\n return \\\"Infinity\\\" if obj > 0 else \\\"-Infinity\\\"\\n return obj\\n if depth > _MAX_SERIALIZE_DEPTH:\\n return \\\"<max depth>\\\"\\n elif isinstance(obj, (_builtins.list, _builtins.tuple)):\\n return [_serialize(x, depth + 1) for x in obj]\\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\\n return [_serialize(x, depth + 1) for x in obj]\\n elif isinstance(obj, _builtins.dict):\\n return {str(k): _serialize(v, depth + 1) for k, v in obj.items()}\\n elif isinstance(obj, set):\\n try:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": sorted([_serialize(x, depth + 1) for x in obj])}\\n except TypeError:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": [_serialize(x, depth + 1) for x in obj]}\\n elif isinstance(obj, TreeNode):\\n result = {\\\"__type__\\\": \\\"TreeNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\\n if hasattr(obj, 'left'):\\n result[\\\"left\\\"] = _serialize(obj.left, depth + 1)\\n if hasattr(obj, 'right'):\\n result[\\\"right\\\"] = _serialize(obj.right, depth + 1)\\n return result\\n elif isinstance(obj, ListNode):\\n result = {\\\"__type__\\\": \\\"ListNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\\n result[\\\"next\\\"] = _serialize(obj.next, depth + 1)\\n return result\\n elif callable(obj):\\n return None\\n elif hasattr(obj, '__dict__'):\\n class_name = getattr(getattr(obj, '__class__', None), '__name__', 'object')\\n result = {\\\"__type__\\\": class_name, \\\"__class__\\\": class_name}\\n try:\\n raw_fields = getattr(obj, '__dict__', None)\\n except Exception:\\n raw_fields = None\\n if isinstance(raw_fields, _builtins.dict):\\n for key, value in raw_fields.items():\\n key_str = str(key)\\n if key_str.startswith('_') or callable(value):\\n continue\\n result[key_str] = _serialize(value, depth + 1)\\n return result\\n else:\\n repr_str = repr(obj)\\n if repr_str.startswith('<') and repr_str.endswith('>'):\\n return None\\n return repr_str\\n\";\n\nexport const PYTHON_PRACTICE_MATERIALIZE_SERIALIZE_FUNCTION = \"\\ndef _serialize(obj, depth=0, state=None):\\n if state is None:\\n state = {\\\"nodes\\\": 0, \\\"seen\\\": set()}\\n if depth > 64:\\n return \\\"__MAX_DEPTH__\\\"\\n if isinstance(obj, (int, float, str, bool, type(None))):\\n return obj\\n\\n state[\\\"nodes\\\"] += 1\\n if state[\\\"nodes\\\"] > 600:\\n return \\\"__MAX_NODES__\\\"\\n\\n if isinstance(obj, (_builtins.list, _builtins.tuple)):\\n return [_serialize(x, depth + 1, state) for x in obj]\\n elif isinstance(obj, _builtins.dict):\\n return {str(k): _serialize(v, depth + 1, state) for k, v in obj.items()}\\n elif isinstance(obj, set):\\n serialized = [_serialize(x, depth + 1, state) for x in obj]\\n try:\\n serialized = sorted(serialized)\\n except TypeError:\\n pass\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": serialized}\\n elif (hasattr(obj, 'val') or hasattr(obj, 'value')) and (hasattr(obj, 'left') or hasattr(obj, 'right')):\\n obj_id = _builtins.id(obj)\\n if obj_id in state[\\\"seen\\\"]:\\n return \\\"__CYCLE__\\\"\\n state[\\\"seen\\\"].add(obj_id)\\n result = {\\\"__type__\\\": \\\"TreeNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, state)}\\n if hasattr(obj, 'left'):\\n result[\\\"left\\\"] = _serialize(obj.left, depth + 1, state)\\n if hasattr(obj, 'right'):\\n result[\\\"right\\\"] = _serialize(obj.right, depth + 1, state)\\n state[\\\"seen\\\"].remove(obj_id)\\n return result\\n elif (hasattr(obj, 'val') or hasattr(obj, 'value')) and hasattr(obj, 'next'):\\n obj_id = _builtins.id(obj)\\n if obj_id in state[\\\"seen\\\"]:\\n return \\\"__CYCLE__\\\"\\n state[\\\"seen\\\"].add(obj_id)\\n result = {\\\"__type__\\\": \\\"ListNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, state)}\\n result[\\\"next\\\"] = _serialize(obj.next, depth + 1, state)\\n state[\\\"seen\\\"].remove(obj_id)\\n return result\\n else:\\n return repr(obj)\\n\";\n\nexport const PYTHON_INTERVIEW_MATERIALIZE_SERIALIZE_FUNCTION = \"\\ndef _serialize(obj, depth=0):\\n if depth > 10:\\n return \\\"<max depth>\\\"\\n if isinstance(obj, (int, float, str, bool, type(None))):\\n return obj\\n elif isinstance(obj, (_builtins.list, _builtins.tuple)):\\n return [_serialize(x, depth + 1) for x in obj]\\n elif isinstance(obj, _builtins.dict):\\n return {str(k): _serialize(v, depth + 1) for k, v in obj.items()}\\n elif isinstance(obj, set):\\n try:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": sorted([_serialize(x, depth + 1) for x in obj])}\\n except TypeError:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": [_serialize(x, depth + 1) for x in obj]}\\n elif isinstance(obj, TreeNode):\\n result = {\\\"__type__\\\": \\\"TreeNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', None), depth + 1)}\\n if hasattr(obj, 'left'):\\n result[\\\"left\\\"] = _serialize(obj.left, depth + 1)\\n if hasattr(obj, 'right'):\\n result[\\\"right\\\"] = _serialize(obj.right, depth + 1)\\n return result\\n elif isinstance(obj, ListNode):\\n result = {\\\"__type__\\\": \\\"ListNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', None), depth + 1)}\\n result[\\\"next\\\"] = _serialize(obj.next, depth + 1)\\n return result\\n else:\\n return repr(obj)\\n\";\n\nexport const PYTHON_SERIALIZE_FUNCTION = \"\\n_MAX_SERIALIZE_DEPTH = 48\\n\\ndef _serialize(obj, depth=0):\\n if isinstance(obj, (bool, int, str, type(None))):\\n return obj\\n elif isinstance(obj, float):\\n if not math.isfinite(obj):\\n if math.isnan(obj):\\n return \\\"NaN\\\"\\n return \\\"Infinity\\\" if obj > 0 else \\\"-Infinity\\\"\\n return obj\\n if depth > _MAX_SERIALIZE_DEPTH:\\n return \\\"<max depth>\\\"\\n elif isinstance(obj, (_builtins.list, _builtins.tuple)):\\n return [_serialize(x, depth + 1) for x in obj]\\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\\n return [_serialize(x, depth + 1) for x in obj]\\n elif isinstance(obj, _builtins.dict):\\n return {str(k): _serialize(v, depth + 1) for k, v in obj.items()}\\n elif isinstance(obj, set):\\n try:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": sorted([_serialize(x, depth + 1) for x in obj])}\\n except TypeError:\\n return {\\\"__type__\\\": \\\"set\\\", \\\"values\\\": [_serialize(x, depth + 1) for x in obj]}\\n elif isinstance(obj, TreeNode):\\n result = {\\\"__type__\\\": \\\"TreeNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\\n if hasattr(obj, 'left'):\\n result[\\\"left\\\"] = _serialize(obj.left, depth + 1)\\n if hasattr(obj, 'right'):\\n result[\\\"right\\\"] = _serialize(obj.right, depth + 1)\\n return result\\n elif isinstance(obj, ListNode):\\n result = {\\\"__type__\\\": \\\"ListNode\\\", \\\"val\\\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\\n result[\\\"next\\\"] = _serialize(obj.next, depth + 1)\\n return result\\n elif callable(obj):\\n return None\\n elif hasattr(obj, '__dict__'):\\n class_name = getattr(getattr(obj, '__class__', None), '__name__', 'object')\\n result = {\\\"__type__\\\": class_name, \\\"__class__\\\": class_name}\\n try:\\n raw_fields = getattr(obj, '__dict__', None)\\n except Exception:\\n raw_fields = None\\n if isinstance(raw_fields, _builtins.dict):\\n for key, value in raw_fields.items():\\n key_str = str(key)\\n if key_str.startswith('_') or callable(value):\\n continue\\n result[key_str] = _serialize(value, depth + 1)\\n return result\\n else:\\n repr_str = repr(obj)\\n if repr_str.startswith('<') and repr_str.endswith('>'):\\n return None\\n return repr_str\\n\";\n","/**\n * Python Harness Code\n *\n * Shared Python harness helpers for scripts and Node-side validation paths.\n *\n * Canonical source:\n * - packages/harness-python/src/python-harness-template.ts\n *\n * Generated artifacts (via scripts/generate-python-harness-artifacts.ts):\n * - packages/harness-python/src/generated/python-harness-snippets.ts (consumed here)\n * - workers/python/generated-python-harness-snippets.js\n *\n * Note: workers/python/pyodide-worker.js still contains runtime-specific embedded\n * harness code. Keep it aligned via:\n * pnpm test:python-harness-sync\n */\n\nimport {\n toPythonLiteral,\n PYTHON_CLASS_DEFINITIONS,\n PYTHON_CONVERSION_HELPERS,\n PYTHON_TRACE_SERIALIZE_FUNCTION,\n PYTHON_EXECUTE_SERIALIZE_FUNCTION,\n PYTHON_PRACTICE_MATERIALIZE_SERIALIZE_FUNCTION,\n PYTHON_INTERVIEW_MATERIALIZE_SERIALIZE_FUNCTION,\n PYTHON_SERIALIZE_FUNCTION,\n} from './generated/python-harness-snippets';\n\nexport {\n toPythonLiteral,\n PYTHON_CLASS_DEFINITIONS,\n PYTHON_CONVERSION_HELPERS,\n PYTHON_TRACE_SERIALIZE_FUNCTION,\n PYTHON_EXECUTE_SERIALIZE_FUNCTION,\n PYTHON_PRACTICE_MATERIALIZE_SERIALIZE_FUNCTION,\n PYTHON_INTERVIEW_MATERIALIZE_SERIALIZE_FUNCTION,\n PYTHON_SERIALIZE_FUNCTION,\n};\n\nexport function identifyConversions(inputs: Record<string, unknown>): {\n treeKeys: string[];\n listKeys: string[];\n} {\n const treeKeys: string[] = [];\n const listKeys: string[] = [];\n \n for (const [key, value] of Object.entries(inputs)) {\n if (\n value &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n ('val' in (value as Record<string, unknown>) || 'value' in (value as Record<string, unknown>))\n ) {\n const obj = value as Record<string, unknown>;\n const hasLeft = 'left' in obj;\n const hasRight = 'right' in obj;\n const hasNext = 'next' in obj;\n \n if (hasLeft || hasRight) {\n treeKeys.push(key);\n } else if (hasNext) {\n listKeys.push(key);\n } else {\n // Default to tree for backwards compatibility (just 'val')\n treeKeys.push(key);\n }\n }\n }\n \n return { treeKeys, listKeys };\n}\n\n/**\n * Generate Python code for converting tree/list inputs.\n */\nexport function generateConversionCode(inputs: Record<string, unknown>): string {\n const { treeKeys, listKeys } = identifyConversions(inputs);\n \n const lines: string[] = [];\n \n for (const key of treeKeys) {\n lines.push(`${key} = _dict_to_tree(${key})`);\n }\n \n for (const key of listKeys) {\n lines.push(`${key} = _dict_to_list(${key})`);\n }\n \n return lines.join('\\n');\n}\n\n/**\n * Generate Python code for setting up inputs.\n */\nexport function generateInputSetup(inputs: Record<string, unknown>): string {\n return Object.entries(inputs)\n .map(([key, value]) => `${key} = ${toPythonLiteral(value)}`)\n .join('\\n');\n}\n\n/**\n * Generate a complete Python script for running a solution.\n * This is used by the validation script to run solutions via subprocess.\n */\nexport function generateSolutionScript(\n solutionCode: string,\n functionName: string,\n inputs: Record<string, unknown>\n): string {\n const inputSetup = generateInputSetup(inputs);\n const conversionCode = generateConversionCode(inputs);\n const paramList = Object.keys(inputs)\n .map((key) => `${key}=${key}`)\n .join(', ');\n \n return `\nimport json\nimport math\nimport sys\nimport builtins as _builtins\nfrom typing import *\n\n${PYTHON_CLASS_DEFINITIONS}\n\n${PYTHON_CONVERSION_HELPERS}\n\n${PYTHON_SERIALIZE_FUNCTION}\n\n# Solution code\n${solutionCode}\n\n# Set up inputs\n${inputSetup}\n\n# Convert tree/list inputs\n${conversionCode}\n\n# Run the function\ntry:\n _result = ${functionName}(${paramList})\n print(json.dumps({\"success\": True, \"output\": _serialize(_result)}))\nexcept Exception as e:\n print(json.dumps({\"success\": False, \"error\": f\"{type(e).__name__}: {str(e)}\"}))\n`;\n}\n","/**\n * Canonical Python Harness Template\n *\n * This file is the single source of truth for shared harness snippets.\n * Generated artifacts:\n * - packages/harness-python/src/generated/python-harness-snippets.ts\n * - workers/python/generated-python-harness-snippets.js\n */\n\n/**\n * Convert a JavaScript value to a Python literal string.\n * Handles null -> None, booleans -> True/False, and nested structures.\n */\nexport function templateToPythonLiteral(value: unknown): string {\n if (value === null || value === undefined) {\n return 'None';\n }\n if (typeof value === 'boolean') {\n return value ? 'True' : 'False';\n }\n if (typeof value === 'number') {\n return String(value);\n }\n if (typeof value === 'string') {\n return JSON.stringify(value);\n }\n if (Array.isArray(value)) {\n return '[' + value.map(templateToPythonLiteral).join(', ') + ']';\n }\n if (typeof value === 'object') {\n const entries = Object.entries(value as Record<string, unknown>)\n .map(([k, v]) => `${JSON.stringify(k)}: ${templateToPythonLiteral(v)}`)\n .join(', ');\n return '{' + entries + '}';\n }\n return JSON.stringify(value);\n}\n\n/**\n * Python class definitions for TreeNode and ListNode.\n * These must match the worker definitions.\n */\nexport const TEMPLATE_PYTHON_CLASS_DEFINITIONS = `\nclass TreeNode:\n def __init__(self, val=0, left=None, right=None):\n self.val = val\n self.value = val\n self.left = left\n self.right = right\n def __getitem__(self, key):\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', None))\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', None))\n if key == 'left': return self.left\n if key == 'right': return self.right\n raise KeyError(key)\n def get(self, key, default=None):\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', default))\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', default))\n if key == 'left': return self.left\n if key == 'right': return self.right\n return default\n def __repr__(self):\n return f\"TreeNode({getattr(self, 'val', getattr(self, 'value', None))})\"\n\nclass ListNode:\n def __init__(self, val=0, next=None):\n self.val = val\n self.value = val\n self.next = next\n def __getitem__(self, key):\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', None))\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', None))\n if key == 'next': return self.next\n raise KeyError(key)\n def get(self, key, default=None):\n if key == 'val': return getattr(self, 'val', getattr(self, 'value', default))\n if key == 'value': return getattr(self, 'value', getattr(self, 'val', default))\n if key == 'next': return self.next\n return default\n def __repr__(self):\n return f\"ListNode({getattr(self, 'val', getattr(self, 'value', None))})\"\n`;\n\n/**\n * Python helper functions for converting dicts to TreeNode/ListNode.\n */\nexport const TEMPLATE_PYTHON_CONVERSION_HELPERS = `\ndef _ensure_node_value_aliases(node):\n if node is None:\n return node\n try:\n has_val = hasattr(node, 'val')\n has_value = hasattr(node, 'value')\n if has_value and not has_val:\n try:\n setattr(node, 'val', getattr(node, 'value'))\n except Exception:\n pass\n elif has_val and not has_value:\n try:\n setattr(node, 'value', getattr(node, 'val'))\n except Exception:\n pass\n except Exception:\n pass\n return node\n\ndef _dict_to_tree(d):\n if d is None:\n return None\n if not isinstance(d, _builtins.dict):\n return d\n if 'val' not in d and 'value' not in d:\n return d\n node = TreeNode(d.get('val', d.get('value', 0)))\n _ensure_node_value_aliases(node)\n node.left = _dict_to_tree(d.get('left'))\n node.right = _dict_to_tree(d.get('right'))\n return node\n\ndef _dict_to_list(d, _refs=None):\n if _refs is None:\n _refs = {}\n if d is None:\n return None\n if not isinstance(d, _builtins.dict):\n return d\n if '__ref__' in d:\n return _refs.get(d.get('__ref__'))\n if 'val' not in d and 'value' not in d:\n return d\n node = ListNode(d.get('val', d.get('value', 0)))\n _ensure_node_value_aliases(node)\n node_id = d.get('__id__')\n if isinstance(node_id, _builtins.str) and node_id:\n _refs[node_id] = node\n node.next = _dict_to_list(d.get('next'), _refs)\n return node\n`;\n\n/**\n * Trace-mode Python serialization function.\n * Includes function filtering and node reference tracking for cycle-safe traces.\n */\nexport const TEMPLATE_PYTHON_TRACE_SERIALIZE_FUNCTION = `\n# Sentinel to mark skipped values (functions, etc.) - distinct from None\n_SKIP_SENTINEL = \"__TRACECODE_SKIP__\"\n_MAX_SERIALIZE_DEPTH = 48\n_MAX_SERIALIZED_ITEMS = 64\n_MAX_OBJECT_FIELDS = 32\n_tracecode_global_object_refs = {}\n_tracecode_next_object_ref_id = 0\n\ndef _tracecode_ref_id(obj_ref, node_refs):\n global _tracecode_next_object_ref_id\n if obj_ref in node_refs:\n return node_refs[obj_ref]\n if obj_ref in _tracecode_global_object_refs:\n node_id = _tracecode_global_object_refs[obj_ref]\n else:\n node_id = f\"ref-{_tracecode_next_object_ref_id}\"\n _tracecode_global_object_refs[obj_ref] = node_id\n _tracecode_next_object_ref_id += 1\n node_refs[obj_ref] = node_id\n return node_id\n\ndef _truncation_marker(total, emitted):\n return {\"__truncated__\": True, \"remaining\": max(0, total - emitted)}\n\ndef _serialize_sequence(values, depth, node_refs):\n values_list = _builtins.list(values)\n emitted = min(len(values_list), _MAX_SERIALIZED_ITEMS)\n result = [_serialize(x, depth + 1, node_refs) for x in values_list[:emitted]]\n if emitted < len(values_list):\n result.append(_truncation_marker(len(values_list), emitted))\n return result\n\ndef _serialize(obj, depth=0, node_refs=None):\n if node_refs is None:\n node_refs = {}\n if isinstance(obj, (bool, int, str, type(None))):\n return obj\n elif isinstance(obj, float):\n if not math.isfinite(obj):\n if math.isnan(obj):\n return \"NaN\"\n return \"Infinity\" if obj > 0 else \"-Infinity\"\n return obj\n if depth > _MAX_SERIALIZE_DEPTH:\n return \"<max depth>\"\n elif isinstance(obj, (_builtins.list, _builtins.tuple)):\n return _serialize_sequence(obj, depth, node_refs)\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\n return _serialize_sequence(obj, depth, node_refs)\n elif isinstance(obj, _builtins.dict):\n items = _builtins.list(obj.items())\n emitted = min(len(items), _MAX_SERIALIZED_ITEMS)\n result = {str(k): _serialize(v, depth + 1, node_refs) for k, v in items[:emitted]}\n if emitted < len(items):\n result[\"__truncated__\"] = True\n result[\"remaining\"] = len(items) - emitted\n return result\n elif isinstance(obj, set):\n # Use try/except for sorting to handle heterogeneous sets\n values = _builtins.list(obj)\n emitted = min(len(values), _MAX_SERIALIZED_ITEMS)\n try:\n sorted_vals = sorted([_serialize(x, depth + 1, node_refs) for x in values[:emitted]])\n except TypeError:\n sorted_vals = [_serialize(x, depth + 1, node_refs) for x in values[:emitted]]\n result = {\"__type__\": \"set\", \"values\": sorted_vals}\n if emitted < len(values):\n result[\"__truncated__\"] = True\n result[\"remaining\"] = len(values) - emitted\n return result\n elif isinstance(obj, TreeNode):\n obj_ref = _builtins.id(obj)\n if obj_ref in node_refs:\n return {\"__ref__\": node_refs[obj_ref]}\n node_id = _tracecode_ref_id(obj_ref, node_refs)\n result = {\n \"__type__\": \"TreeNode\",\n \"__id__\": node_id,\n \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\n }\n if hasattr(obj, 'left'):\n result[\"left\"] = _serialize(obj.left, depth + 1, node_refs)\n if hasattr(obj, 'right'):\n result[\"right\"] = _serialize(obj.right, depth + 1, node_refs)\n return result\n elif isinstance(obj, ListNode):\n obj_ref = _builtins.id(obj)\n if obj_ref in node_refs:\n return {\"__ref__\": node_refs[obj_ref]}\n node_id = _tracecode_ref_id(obj_ref, node_refs)\n result = {\n \"__type__\": \"ListNode\",\n \"__id__\": node_id,\n \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\n }\n result[\"next\"] = _serialize(obj.next, depth + 1, node_refs)\n return result\n elif callable(obj):\n # Skip functions entirely - return sentinel\n return _SKIP_SENTINEL\n elif hasattr(obj, '__dict__'):\n obj_ref = _builtins.id(obj)\n if obj_ref in node_refs:\n return {\"__ref__\": node_refs[obj_ref]}\n node_id = _tracecode_ref_id(obj_ref, node_refs)\n class_name = getattr(getattr(obj, '__class__', None), '__name__', 'object')\n result = {\n \"__type__\": class_name,\n \"__class__\": class_name,\n \"__id__\": node_id,\n }\n try:\n raw_fields = getattr(obj, '__dict__', None)\n except Exception:\n raw_fields = None\n if isinstance(raw_fields, _builtins.dict):\n fields = []\n for key, value in raw_fields.items():\n key_str = str(key)\n if key_str.startswith('_'):\n continue\n if callable(value):\n continue\n fields.append((key_str, value))\n for key_str, value in fields[:_MAX_OBJECT_FIELDS]:\n result[key_str] = _serialize(value, depth + 1, node_refs)\n if len(fields) > _MAX_OBJECT_FIELDS:\n result[\"__truncated__\"] = True\n result[\"remaining\"] = len(fields) - _MAX_OBJECT_FIELDS\n return result\n else:\n repr_str = repr(obj)\n # Filter out function-like representations (e.g., <function foo at 0x...>)\n if repr_str.startswith('<') and repr_str.endswith('>'):\n return _SKIP_SENTINEL\n return repr_str\n\ndef _serialize_output(obj, depth=0, node_refs=None):\n if node_refs is None:\n node_refs = {}\n if isinstance(obj, (bool, int, str, type(None))):\n return obj\n elif isinstance(obj, float):\n if not math.isfinite(obj):\n if math.isnan(obj):\n return \"NaN\"\n return \"Infinity\" if obj > 0 else \"-Infinity\"\n return obj\n if depth > _MAX_SERIALIZE_DEPTH:\n return \"<max depth>\"\n elif isinstance(obj, (_builtins.list, _builtins.tuple)):\n return [_serialize_output(x, depth + 1, node_refs) for x in obj]\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\n return [_serialize_output(x, depth + 1, node_refs) for x in obj]\n elif isinstance(obj, _builtins.dict):\n return {str(k): _serialize_output(v, depth + 1, node_refs) for k, v in obj.items()}\n elif isinstance(obj, set):\n try:\n sorted_vals = sorted([_serialize_output(x, depth + 1, node_refs) for x in obj])\n except TypeError:\n sorted_vals = [_serialize_output(x, depth + 1, node_refs) for x in obj]\n return {\"__type__\": \"set\", \"values\": sorted_vals}\n elif isinstance(obj, TreeNode):\n obj_ref = _builtins.id(obj)\n if obj_ref in node_refs:\n return {\"__ref__\": node_refs[obj_ref]}\n node_id = _tracecode_ref_id(obj_ref, node_refs)\n result = {\n \"__type__\": \"TreeNode\",\n \"__id__\": node_id,\n \"val\": _serialize_output(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\n }\n if hasattr(obj, 'left'):\n result[\"left\"] = _serialize_output(obj.left, depth + 1, node_refs)\n if hasattr(obj, 'right'):\n result[\"right\"] = _serialize_output(obj.right, depth + 1, node_refs)\n return result\n elif isinstance(obj, ListNode):\n obj_ref = _builtins.id(obj)\n if obj_ref in node_refs:\n return {\"__ref__\": node_refs[obj_ref]}\n node_id = _tracecode_ref_id(obj_ref, node_refs)\n result = {\n \"__type__\": \"ListNode\",\n \"__id__\": node_id,\n \"val\": _serialize_output(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, node_refs),\n }\n result[\"next\"] = _serialize_output(obj.next, depth + 1, node_refs)\n return result\n elif callable(obj):\n return _SKIP_SENTINEL\n elif hasattr(obj, '__dict__'):\n obj_ref = _builtins.id(obj)\n if obj_ref in node_refs:\n return {\"__ref__\": node_refs[obj_ref]}\n node_id = _tracecode_ref_id(obj_ref, node_refs)\n class_name = getattr(getattr(obj, '__class__', None), '__name__', 'object')\n result = {\n \"__type__\": class_name,\n \"__class__\": class_name,\n \"__id__\": node_id,\n }\n try:\n raw_fields = getattr(obj, '__dict__', None)\n except Exception:\n raw_fields = None\n if isinstance(raw_fields, _builtins.dict):\n for key, value in raw_fields.items():\n key_str = str(key)\n if key_str.startswith('_') or callable(value):\n continue\n result[key_str] = _serialize_output(value, depth + 1, node_refs)\n return result\n else:\n repr_str = repr(obj)\n if repr_str.startswith('<') and repr_str.endswith('>'):\n return _SKIP_SENTINEL\n return repr_str\n`;\n\n/**\n * Execute-mode Python serialization function.\n * Preserves current execute/interview output semantics.\n */\nexport const TEMPLATE_PYTHON_EXECUTE_SERIALIZE_FUNCTION = `\n_MAX_SERIALIZE_DEPTH = 48\n\ndef _serialize(obj, depth=0):\n if isinstance(obj, (bool, int, str, type(None))):\n return obj\n elif isinstance(obj, float):\n if not math.isfinite(obj):\n if math.isnan(obj):\n return \"NaN\"\n return \"Infinity\" if obj > 0 else \"-Infinity\"\n return obj\n if depth > _MAX_SERIALIZE_DEPTH:\n return \"<max depth>\"\n elif isinstance(obj, (_builtins.list, _builtins.tuple)):\n return [_serialize(x, depth + 1) for x in obj]\n elif getattr(obj, '__class__', None) and getattr(obj.__class__, '__name__', '') == 'deque':\n return [_serialize(x, depth + 1) for x in obj]\n elif isinstance(obj, _builtins.dict):\n return {str(k): _serialize(v, depth + 1) for k, v in obj.items()}\n elif isinstance(obj, set):\n try:\n return {\"__type__\": \"set\", \"values\": sorted([_serialize(x, depth + 1) for x in obj])}\n except TypeError:\n return {\"__type__\": \"set\", \"values\": [_serialize(x, depth + 1) for x in obj]}\n elif isinstance(obj, TreeNode):\n result = {\"__type__\": \"TreeNode\", \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\n if hasattr(obj, 'left'):\n result[\"left\"] = _serialize(obj.left, depth + 1)\n if hasattr(obj, 'right'):\n result[\"right\"] = _serialize(obj.right, depth + 1)\n return result\n elif isinstance(obj, ListNode):\n result = {\"__type__\": \"ListNode\", \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1)}\n result[\"next\"] = _serialize(obj.next, depth + 1)\n return result\n elif callable(obj):\n return None\n elif hasattr(obj, '__dict__'):\n class_name = getattr(getattr(obj, '__class__', None), '__name__', 'object')\n result = {\"__type__\": class_name, \"__class__\": class_name}\n try:\n raw_fields = getattr(obj, '__dict__', None)\n except Exception:\n raw_fields = None\n if isinstance(raw_fields, _builtins.dict):\n for key, value in raw_fields.items():\n key_str = str(key)\n if key_str.startswith('_') or callable(value):\n continue\n result[key_str] = _serialize(value, depth + 1)\n return result\n else:\n repr_str = repr(obj)\n if repr_str.startswith('<') and repr_str.endswith('>'):\n return None\n return repr_str\n`;\n\n/**\n * Practice materialization serializer with strict safety limits and markers.\n */\nexport const TEMPLATE_PYTHON_PRACTICE_MATERIALIZE_SERIALIZE_FUNCTION = `\ndef _serialize(obj, depth=0, state=None):\n if state is None:\n state = {\"nodes\": 0, \"seen\": set()}\n if depth > 64:\n return \"__MAX_DEPTH__\"\n if isinstance(obj, (int, float, str, bool, type(None))):\n return obj\n\n state[\"nodes\"] += 1\n if state[\"nodes\"] > 600:\n return \"__MAX_NODES__\"\n\n if isinstance(obj, (_builtins.list, _builtins.tuple)):\n return [_serialize(x, depth + 1, state) for x in obj]\n elif isinstance(obj, _builtins.dict):\n return {str(k): _serialize(v, depth + 1, state) for k, v in obj.items()}\n elif isinstance(obj, set):\n serialized = [_serialize(x, depth + 1, state) for x in obj]\n try:\n serialized = sorted(serialized)\n except TypeError:\n pass\n return {\"__type__\": \"set\", \"values\": serialized}\n elif (hasattr(obj, 'val') or hasattr(obj, 'value')) and (hasattr(obj, 'left') or hasattr(obj, 'right')):\n obj_id = _builtins.id(obj)\n if obj_id in state[\"seen\"]:\n return \"__CYCLE__\"\n state[\"seen\"].add(obj_id)\n result = {\"__type__\": \"TreeNode\", \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, state)}\n if hasattr(obj, 'left'):\n result[\"left\"] = _serialize(obj.left, depth + 1, state)\n if hasattr(obj, 'right'):\n result[\"right\"] = _serialize(obj.right, depth + 1, state)\n state[\"seen\"].remove(obj_id)\n return result\n elif (hasattr(obj, 'val') or hasattr(obj, 'value')) and hasattr(obj, 'next'):\n obj_id = _builtins.id(obj)\n if obj_id in state[\"seen\"]:\n return \"__CYCLE__\"\n state[\"seen\"].add(obj_id)\n result = {\"__type__\": \"ListNode\", \"val\": _serialize(getattr(obj, 'val', getattr(obj, 'value', None)), depth + 1, state)}\n result[\"next\"] = _serialize(obj.next, depth + 1, state)\n state[\"seen\"].remove(obj_id)\n return result\n else:\n return repr(obj)\n`;\n\n/**\n * Interview materialization serializer, preserving current current behavior.\n */\nexport const TEMPLATE_PYTHON_INTERVIEW_MATERIALIZE_SERIALIZE_FUNCTION = `\ndef _serialize(obj, depth=0):\n if depth > 10:\n return \"<max depth>\"\n if isinstance(obj, (int, float, str, bool, type(None))):\n return obj\n elif isinstance(obj, (_builtins.list, _builtins.tuple)):\n return [_serialize(x, depth + 1) for x in obj]\n elif isinstance(obj, _builtins.dict):\n return {str(k): _serialize(v, depth + 1) for k, v in obj.items()}\n elif isinstance(obj, set):\n try:\n return {\"__type__\": \"set\", \"values\": sorted([_serialize(x, depth + 1) for x in obj])}\n except TypeError:\n return {\"__type__\": \"set\", \"values\": [_serialize(x, depth + 1) for x in obj]}\n elif isinstance(obj, TreeNode):\n result = {\"__type__\": \"TreeNode\", \"val\": _serialize(getattr(obj, 'val', None), depth + 1)}\n if hasattr(obj, 'left'):\n result[\"left\"] = _serialize(obj.left, depth + 1)\n if hasattr(obj, 'right'):\n result[\"right\"] = _serialize(obj.right, depth + 1)\n return result\n elif isinstance(obj, ListNode):\n result = {\"__type__\": \"ListNode\", \"val\": _serialize(getattr(obj, 'val', None), depth + 1)}\n result[\"next\"] = _serialize(obj.next, depth + 1)\n return result\n else:\n return repr(obj)\n`;\n\n/**\n * Backwards-compatible alias. Use TEMPLATE_PYTHON_EXECUTE_SERIALIZE_FUNCTION\n * for new callsites.\n */\nexport const TEMPLATE_PYTHON_SERIALIZE_FUNCTION = TEMPLATE_PYTHON_EXECUTE_SERIALIZE_FUNCTION;\n","export const TYPESCRIPT_RUNTIME_DECLARATIONS = `\ndeclare class ListNode {\n val: any;\n value: any;\n next: ListNode | SerializedListNode | SerializedRef | null;\n prev?: ListNode | SerializedListNode | SerializedRef | null;\n constructor(val?: any, next?: ListNode | null);\n}\n\ndeclare class TreeNode {\n val: any;\n value: any;\n left: TreeNode | SerializedTreeNode | SerializedRef | null;\n right: TreeNode | SerializedTreeNode | SerializedRef | null;\n constructor(val?: any, left?: TreeNode | null, right?: TreeNode | null);\n}\n\ntype SerializedRef = { __ref__: string };\n\ntype SerializedListNode = {\n __id__?: string;\n __type__?: 'ListNode';\n val?: any;\n value?: any;\n next?: SerializedListNode | SerializedRef | ListNode | null;\n prev?: SerializedListNode | SerializedRef | ListNode | null;\n};\n\ntype SerializedTreeNode = {\n __id__?: string;\n __type__?: 'TreeNode';\n val?: any;\n value?: any;\n left?: SerializedTreeNode | SerializedRef | TreeNode | null;\n right?: SerializedTreeNode | SerializedRef | TreeNode | null;\n};\n`;\n\nexport function withTypeScriptRuntimeDeclarations(sourceCode: string): string {\n return `${sourceCode}\\n\\n${TYPESCRIPT_RUNTIME_DECLARATIONS}\\n`;\n}\n","import type { RuntimeExecutionStyle } from '../../harness-core/src/runtime-types';\nimport type { CodeExecutionResult, ExecutionResult } from '../../harness-core/src/types';\nimport { createEmptyRuntimeTrace } from '../../harness-core/src/runtime-trace';\nimport { withTypeScriptRuntimeDeclarations } from './typescript-runtime-declarations';\n\ntype TypeScriptModule = typeof import('typescript');\n\nlet typeScriptModulePromise: Promise<TypeScriptModule> | null = null;\nlet javascriptLibraryPromise: Promise<JavaScriptLibraryEnvironment> | null = null;\n\ntype DynamicRunner = (...args: unknown[]) => unknown;\ntype JavaScriptLibraryEnvironment = {\n modules: Record<string, unknown>;\n globals: Record<string, unknown>;\n};\n\nasync function getTypeScriptModule(): Promise<TypeScriptModule> {\n if (!typeScriptModulePromise) {\n const specifier = 'typescript';\n typeScriptModulePromise = import(/* webpackIgnore: true */ specifier);\n }\n return typeScriptModulePromise;\n}\n\nasync function tryImportJavaScriptLibraryModule(specifier: string): Promise<unknown | undefined> {\n try {\n return await import(/* webpackIgnore: true */ specifier);\n } catch {\n return undefined;\n }\n}\n\nfunction normalizeCommonJsLikeModule(moduleValue: unknown): unknown {\n if (!moduleValue || typeof moduleValue !== 'object') return moduleValue;\n const record = moduleValue as Record<string, unknown>;\n const namedKeys = Object.keys(record).filter((key) => key !== 'default');\n if (namedKeys.length === 0 && 'default' in record) {\n return record.default;\n }\n if (record.default && typeof record.default === 'object') {\n return { ...(record.default as Record<string, unknown>), ...record };\n }\n return record;\n}\n\nfunction moduleMember(moduleValue: unknown, name: string): unknown {\n if (!moduleValue || typeof moduleValue !== 'object') return undefined;\n const record = moduleValue as Record<string, unknown>;\n return record[name];\n}\n\nasync function getJavaScriptLibraryEnvironment(): Promise<JavaScriptLibraryEnvironment> {\n if (!javascriptLibraryPromise) {\n javascriptLibraryPromise = (async () => {\n const [\n lodashModule,\n binarySearchTreeModule,\n dequeModule,\n graphModule,\n heapModule,\n linkedListModule,\n priorityQueueModule,\n queueModule,\n enhancedSetModule,\n stackModule,\n trieModule,\n ] = await Promise.all([\n tryImportJavaScriptLibraryModule('lodash'),\n tryImportJavaScriptLibraryModule('@datastructures-js/binary-search-tree'),\n tryImportJavaScriptLibraryModule('@datastructures-js/deque'),\n tryImportJavaScriptLibraryModule('@datastructures-js/graph'),\n tryImportJavaScriptLibraryModule('@datastructures-js/heap'),\n tryImportJavaScriptLibraryModule('@datastructures-js/linked-list'),\n tryImportJavaScriptLibraryModule('@datastructures-js/priority-queue'),\n tryImportJavaScriptLibraryModule('@datastructures-js/queue'),\n tryImportJavaScriptLibraryModule('@datastructures-js/set'),\n tryImportJavaScriptLibraryModule('@datastructures-js/stack'),\n tryImportJavaScriptLibraryModule('@datastructures-js/trie'),\n ]);\n const lodash = normalizeCommonJsLikeModule(lodashModule);\n const binarySearchTree = normalizeCommonJsLikeModule(binarySearchTreeModule);\n const deque = normalizeCommonJsLikeModule(dequeModule);\n const graph = normalizeCommonJsLikeModule(graphModule);\n const heap = normalizeCommonJsLikeModule(heapModule);\n const linkedList = normalizeCommonJsLikeModule(linkedListModule);\n const priorityQueue = normalizeCommonJsLikeModule(priorityQueueModule);\n const queue = normalizeCommonJsLikeModule(queueModule);\n const enhancedSet = normalizeCommonJsLikeModule(enhancedSetModule);\n const stack = normalizeCommonJsLikeModule(stackModule);\n const trie = normalizeCommonJsLikeModule(trieModule);\n\n const moduleEntries: Array<[string, unknown]> = [\n ['lodash', lodash],\n ['lodash.js', lodash],\n ['@datastructures-js/binary-search-tree', binarySearchTree],\n ['@datastructures-js/deque', deque],\n ['@datastructures-js/graph', graph],\n ['@datastructures-js/heap', heap],\n ['@datastructures-js/linked-list', linkedList],\n ['@datastructures-js/priority-queue', priorityQueue],\n ['@datastructures-js/queue', queue],\n ['@datastructures-js/set', enhancedSet],\n ['@datastructures-js/stack', stack],\n ['@datastructures-js/trie', trie],\n ].filter((entry): entry is [string, unknown] => entry[1] !== undefined);\n\n const globals: Record<string, unknown> = {\n _: lodash,\n lodash,\n Deque: moduleMember(deque, 'Deque'),\n DoublyLinkedList: moduleMember(linkedList, 'DoublyLinkedList'),\n DoublyLinkedListNode: moduleMember(linkedList, 'DoublyLinkedListNode'),\n EnhancedSet: moduleMember(enhancedSet, 'EnhancedSet'),\n Heap: moduleMember(heap, 'Heap'),\n LinkedList: moduleMember(linkedList, 'LinkedList'),\n LinkedListNode: moduleMember(linkedList, 'LinkedListNode'),\n MaxHeap: moduleMember(heap, 'MaxHeap'),\n MaxPriorityQueue: moduleMember(priorityQueue, 'MaxPriorityQueue'),\n MinHeap: moduleMember(heap, 'MinHeap'),\n MinPriorityQueue: moduleMember(priorityQueue, 'MinPriorityQueue'),\n PriorityQueue: moduleMember(priorityQueue, 'PriorityQueue'),\n Queue: moduleMember(queue, 'Queue'),\n Stack: moduleMember(stack, 'Stack'),\n };\n\n for (const [key, value] of Object.entries(globals)) {\n if (value === undefined) delete globals[key];\n }\n\n return {\n modules: Object.fromEntries(moduleEntries),\n globals,\n };\n })();\n }\n return javascriptLibraryPromise;\n}\n\nfunction installJavaScriptLibraryGlobals(environment: JavaScriptLibraryEnvironment): () => void {\n const scope = globalThis as Record<string, unknown>;\n const descriptors = new Map<string, PropertyDescriptor | undefined>();\n const previousRequire = typeof scope.require === 'function' ? scope.require as (specifier: string) => unknown : null;\n const moduleObject = { exports: {} as Record<string, unknown> };\n const requireFunction = (specifier: string): unknown => {\n if (Object.prototype.hasOwnProperty.call(environment.modules, specifier)) {\n return environment.modules[specifier];\n }\n if (previousRequire && previousRequire !== requireFunction) {\n return previousRequire(specifier);\n }\n throw new Error(`Cannot find module '${specifier}'`);\n };\n const values: Record<string, unknown> = {\n ...environment.globals,\n __TRACECODE_JAVASCRIPT_LIBRARIES__: environment.modules,\n require: requireFunction,\n module: moduleObject,\n exports: moduleObject.exports,\n };\n\n for (const [key, value] of Object.entries(values)) {\n descriptors.set(key, Object.getOwnPropertyDescriptor(globalThis, key));\n Object.defineProperty(scope, key, {\n value,\n configurable: true,\n writable: true,\n });\n }\n\n return () => {\n for (const [key, descriptor] of descriptors) {\n if (descriptor) {\n Object.defineProperty(scope, key, descriptor);\n } else {\n delete scope[key];\n }\n }\n };\n}\n\nfunction performanceNow(): number {\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n}\n\nfunction formatConsoleArg(value: unknown): string {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean' || value === null || value === undefined) {\n return String(value);\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction createConsoleProxy(output: string[]): Console {\n const capture = (...args: unknown[]) => {\n output.push(args.map(formatConsoleArg).join(' '));\n };\n\n return {\n ...console,\n log: capture,\n info: capture,\n warn: capture,\n error: capture,\n debug: capture,\n };\n}\n\nfunction isLikelyTreeNodeValue(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n const record = value as Record<string, unknown>;\n if (record.__type__ === 'TreeNode') return true;\n const ctor = (value as { constructor?: { name?: unknown } }).constructor;\n return ctor?.name === 'TreeNode';\n}\n\nfunction isLikelyListNodeValue(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n const record = value as Record<string, unknown>;\n if (record.__type__ === 'ListNode') return true;\n const ctor = (value as { constructor?: { name?: unknown } }).constructor;\n return ctor?.name === 'ListNode';\n}\n\nfunction getCustomClassName(value: unknown): string | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n if (value instanceof Map || value instanceof Set) return null;\n if (isLikelyTreeNodeValue(value) || isLikelyListNodeValue(value)) return null;\n const ctor = (value as { constructor?: { name?: unknown } }).constructor;\n const name = typeof ctor?.name === 'string' ? ctor.name : '';\n if (!name || name === 'Object' || name === 'Array' || name === 'Map' || name === 'Set') {\n return null;\n }\n return name;\n}\n\nconst RUNTIME_VALUE_MAX_DEPTH = 48;\nconst RUNTIME_VALUE_MAX_ITEMS = 64;\nconst RUNTIME_VALUE_MAX_OBJECT_FIELDS = 32;\nconst TRACE_SERIALIZATION_LIMITS = { maxItems: RUNTIME_VALUE_MAX_ITEMS, maxFields: RUNTIME_VALUE_MAX_OBJECT_FIELDS };\nconst OUTPUT_SERIALIZATION_LIMITS = { maxItems: Number.POSITIVE_INFINITY, maxFields: Number.POSITIVE_INFINITY };\nlet activeSerializationLimits = TRACE_SERIALIZATION_LIMITS;\n\ntype SerializationLimits = typeof TRACE_SERIALIZATION_LIMITS;\n\nfunction truncationMarker(total: number, emitted: number): { __truncated__: true; remaining: number } {\n return { __truncated__: true, remaining: Math.max(0, total - emitted) };\n}\n\nfunction limitedEntries<T>(items: T[], maxItems: number): { values: T[]; remaining: number } {\n return {\n values: items.slice(0, maxItems),\n remaining: Math.max(0, items.length - maxItems),\n };\n}\n\nfunction serializeValue(\n value: unknown,\n depth = 0,\n seen = new WeakSet<object>(),\n nodeRefState: { ids: Map<object, string>; nextId: number } = { ids: new Map<object, string>(), nextId: 1 }\n): unknown {\n if (depth > RUNTIME_VALUE_MAX_DEPTH) return '<max depth>';\n if (value === null || value === undefined) return value;\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'bigint') {\n return Number.isSafeInteger(Number(value)) ? Number(value) : String(value);\n }\n if (typeof value === 'function') {\n return '<function>';\n }\n\n if (Array.isArray(value)) {\n const limited = limitedEntries(value, activeSerializationLimits.maxItems);\n const result = limited.values.map((item) => serializeValue(item, depth + 1, seen, nodeRefState));\n if (limited.remaining > 0) result.push(truncationMarker(value.length, limited.values.length));\n return result;\n }\n\n if (value instanceof Set) {\n const items = [...value];\n const limited = limitedEntries(items, activeSerializationLimits.maxItems);\n const result: Record<string, unknown> = {\n __type__: 'set',\n values: limited.values.map((item) => serializeValue(item, depth + 1, seen, nodeRefState)),\n };\n if (limited.remaining > 0) {\n result.__truncated__ = true;\n result.remaining = limited.remaining;\n }\n return result;\n }\n\n if (value instanceof Map) {\n const entries = [...value.entries()];\n const limited = limitedEntries(entries, activeSerializationLimits.maxItems);\n const result: Record<string, unknown> = {\n __type__: 'map',\n entries: limited.values.map(([k, v]) => [\n serializeValue(k, depth + 1, seen, nodeRefState),\n serializeValue(v, depth + 1, seen, nodeRefState),\n ]),\n };\n if (limited.remaining > 0) {\n result.__truncated__ = true;\n result.remaining = limited.remaining;\n }\n return result;\n }\n\n if (typeof value === 'object') {\n if (isLikelyTreeNodeValue(value) || isLikelyListNodeValue(value)) {\n const objectValue = value as object;\n const nodeValue = value as Record<string, unknown>;\n const existingId = nodeRefState.ids.get(objectValue);\n if (existingId) {\n return { __ref__: existingId };\n }\n\n const isTree = isLikelyTreeNodeValue(value);\n const nodeId = `ref-${nodeRefState.nextId++}`;\n nodeRefState.ids.set(objectValue, nodeId);\n\n const out: Record<string, unknown> = isTree\n ? {\n __type__: 'TreeNode',\n __id__: nodeId,\n val: serializeValue(nodeValue.val ?? nodeValue.value ?? null, depth + 1, seen, nodeRefState),\n left: serializeValue(nodeValue.left ?? null, depth + 1, seen, nodeRefState),\n right: serializeValue(nodeValue.right ?? null, depth + 1, seen, nodeRefState),\n }\n : {\n __type__: 'ListNode',\n __id__: nodeId,\n val: serializeValue(nodeValue.val ?? nodeValue.value ?? null, depth + 1, seen, nodeRefState),\n next: serializeValue(nodeValue.next ?? null, depth + 1, seen, nodeRefState),\n ...('prev' in nodeValue\n ? { prev: serializeValue(nodeValue.prev ?? null, depth + 1, seen, nodeRefState) }\n : {}),\n };\n\n const skipped = isTree\n ? new Set(['__id__', '__type__', '__class__', 'val', 'value', 'left', 'right'])\n : new Set(['__id__', '__type__', '__class__', 'val', 'value', 'next', 'prev']);\n const fields = Object.entries(nodeValue).filter(([k]) => !skipped.has(k));\n for (const [k, v] of fields.slice(0, activeSerializationLimits.maxFields)) {\n out[k] = serializeValue(v, depth + 1, seen, nodeRefState);\n }\n if (fields.length > activeSerializationLimits.maxFields) {\n out.__truncated__ = true;\n out.remaining = fields.length - activeSerializationLimits.maxFields;\n }\n return out;\n }\n\n const customClassName = getCustomClassName(value);\n if (customClassName) {\n const objectValue = value as object;\n const existingId = nodeRefState.ids.get(objectValue);\n if (existingId) {\n return { __ref__: existingId };\n }\n\n const objectId = `ref-${nodeRefState.nextId++}`;\n nodeRefState.ids.set(objectValue, objectId);\n\n if (seen.has(objectValue)) return { __ref__: objectId };\n seen.add(objectValue);\n const out: Record<string, unknown> = {\n __type__: customClassName,\n __class__: customClassName,\n __id__: objectId,\n };\n const fields = Object.entries(value as Record<string, unknown>);\n for (const [k, v] of fields.slice(0, activeSerializationLimits.maxFields)) {\n out[k] = serializeValue(v, depth + 1, seen, nodeRefState);\n }\n if (fields.length > activeSerializationLimits.maxFields) {\n out.__truncated__ = true;\n out.remaining = fields.length - activeSerializationLimits.maxFields;\n }\n seen.delete(objectValue);\n return out;\n }\n\n if (seen.has(value as object)) return '<cycle>';\n seen.add(value as object);\n const out: Record<string, unknown> = {};\n const fields = Object.entries(value as Record<string, unknown>);\n for (const [k, v] of fields.slice(0, activeSerializationLimits.maxFields)) {\n out[k] = serializeValue(v, depth + 1, seen, nodeRefState);\n }\n if (fields.length > activeSerializationLimits.maxFields) {\n out.__truncated__ = true;\n out.remaining = fields.length - activeSerializationLimits.maxFields;\n }\n seen.delete(value as object);\n return out;\n }\n\n return String(value);\n}\n\nfunction withSerializationLimits<T>(limits: SerializationLimits, serialize: () => T): T {\n const previous = activeSerializationLimits;\n activeSerializationLimits = limits;\n try {\n return serialize();\n } finally {\n activeSerializationLimits = previous;\n }\n}\n\nfunction serializeOutputValue(value: unknown): unknown {\n return withSerializationLimits(OUTPUT_SERIALIZATION_LIMITS, () => serializeValue(value));\n}\n\nfunction extractUserErrorLine(error: unknown): number | undefined {\n if (typeof error === 'object' && error && '__tracecodeLine' in error) {\n const line = Number((error as { __tracecodeLine?: unknown }).__tracecodeLine);\n if (Number.isFinite(line)) return line;\n }\n\n const stack =\n typeof error === 'object' && error && 'stack' in error\n ? String((error as { stack?: unknown }).stack ?? '')\n : '';\n if (!stack) return undefined;\n const match = stack.match(/<anonymous>:(\\d+):\\d+/);\n if (!match) return undefined;\n const line = Number.parseInt(match[1], 10);\n return Number.isFinite(line) ? line : undefined;\n}\n\nfunction isPlainObjectRecord(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n return Object.prototype.toString.call(value) === '[object Object]';\n}\n\nfunction collectReferenceTargets(\n value: unknown,\n byId: Map<string, Record<string, unknown>>,\n seen: WeakSet<object>\n): void {\n if (value === null || value === undefined) return;\n if (typeof value !== 'object') return;\n if (seen.has(value)) return;\n seen.add(value);\n\n if (Array.isArray(value)) {\n for (const item of value) {\n collectReferenceTargets(item, byId, seen);\n }\n return;\n }\n\n if (!isPlainObjectRecord(value)) return;\n if (typeof value.__id__ === 'string' && value.__id__.length > 0 && !byId.has(value.__id__)) {\n byId.set(value.__id__, value);\n }\n\n for (const nested of Object.values(value)) {\n collectReferenceTargets(nested, byId, seen);\n }\n}\n\nfunction resolveReferenceGraph(\n value: unknown,\n byId: Map<string, Record<string, unknown>>,\n resolved: WeakMap<object, unknown>\n): unknown {\n if (value === null || value === undefined) return value;\n if (typeof value !== 'object') return value;\n\n if (resolved.has(value)) {\n return resolved.get(value);\n }\n\n if (Array.isArray(value)) {\n const out: unknown[] = [];\n resolved.set(value, out);\n for (const item of value) {\n out.push(resolveReferenceGraph(item, byId, resolved));\n }\n return out;\n }\n\n if (!isPlainObjectRecord(value)) {\n return value;\n }\n\n const keys = Object.keys(value);\n if (keys.length === 1 && typeof value.__ref__ === 'string') {\n const target = byId.get(value.__ref__);\n if (!target) return null;\n return resolveReferenceGraph(target, byId, resolved);\n }\n\n const out: Record<string, unknown> = {};\n resolved.set(value, out);\n for (const [key, nested] of Object.entries(value)) {\n out[key] = resolveReferenceGraph(nested, byId, resolved);\n }\n return out;\n}\n\nfunction cloneInputGraph(value: unknown, cloned: WeakMap<object, unknown> = new WeakMap()): unknown {\n if (value === null || value === undefined) return value;\n if (typeof value !== 'object') return value;\n\n if (cloned.has(value)) {\n return cloned.get(value);\n }\n\n if (Array.isArray(value)) {\n const out: unknown[] = [];\n cloned.set(value, out);\n for (const item of value) {\n out.push(cloneInputGraph(item, cloned));\n }\n return out;\n }\n\n if (!isPlainObjectRecord(value)) {\n return value;\n }\n\n const out: Record<string, unknown> = {};\n cloned.set(value, out);\n for (const [key, nested] of Object.entries(value)) {\n out[key] = cloneInputGraph(nested, cloned);\n }\n return out;\n}\n\nfunction normalizeInputs(inputs: Record<string, unknown>): Record<string, unknown> {\n if (!inputs || typeof inputs !== 'object' || Array.isArray(inputs)) return {};\n const byId = new Map<string, Record<string, unknown>>();\n collectReferenceTargets(inputs, byId, new WeakSet<object>());\n if (byId.size === 0) {\n return cloneInputGraph(inputs) as Record<string, unknown>;\n }\n const hydrated = resolveReferenceGraph(inputs, byId, new WeakMap<object, unknown>());\n if (!hydrated || typeof hydrated !== 'object' || Array.isArray(hydrated)) {\n return cloneInputGraph(inputs) as Record<string, unknown>;\n }\n return hydrated as Record<string, unknown>;\n}\n\ntype InputMaterializerKind = 'tree' | 'list';\n\nfunction buildTreeNodeFromLevelOrder(values: unknown[]): Record<string, unknown> | null {\n if (!Array.isArray(values) || values.length === 0) return null;\n const firstValue = values[0];\n if (firstValue === null || firstValue === undefined) return null;\n const root: Record<string, unknown> = {\n val: firstValue,\n value: firstValue,\n left: null,\n right: null,\n };\n const queue: Record<string, unknown>[] = [root];\n let index = 1;\n\n while (queue.length > 0 && index < values.length) {\n const node = queue.shift();\n if (!node) break;\n\n const leftValue = values[index++];\n if (leftValue !== null && leftValue !== undefined) {\n const leftNode: Record<string, unknown> = {\n val: leftValue,\n value: leftValue,\n left: null,\n right: null,\n };\n node.left = leftNode;\n queue.push(leftNode);\n }\n\n if (index >= values.length) break;\n\n const rightValue = values[index++];\n if (rightValue !== null && rightValue !== undefined) {\n const rightNode: Record<string, unknown> = {\n val: rightValue,\n value: rightValue,\n left: null,\n right: null,\n };\n node.right = rightNode;\n queue.push(rightNode);\n }\n }\n return root;\n}\n\nfunction materializeTreeInput(value: unknown): unknown {\n if (value === null || value === undefined) return value;\n if (Array.isArray(value)) {\n return buildTreeNodeFromLevelOrder(value);\n }\n if (!isPlainObjectRecord(value)) {\n return value;\n }\n const record = value as Record<string, unknown>;\n if (isLikelyTreeNodeValue(record)) {\n const node: Record<string, unknown> = {\n val: record.val ?? record.value ?? null,\n value: record.val ?? record.value ?? null,\n left: materializeTreeInput(record.left ?? null),\n right: materializeTreeInput(record.right ?? null),\n };\n for (const [key, nested] of Object.entries(record)) {\n if (key === '__id__' || key === '__type__' || key === 'val' || key === 'value' || key === 'left' || key === 'right') continue;\n node[key] = materializeTreeInput(nested);\n }\n return node;\n }\n const taggedRecord = value as Record<string, unknown> & { __type__?: unknown };\n if (taggedRecord.__type__ === 'TreeNode') {\n const node: Record<string, unknown> = {\n val: taggedRecord.val ?? taggedRecord.value ?? null,\n value: taggedRecord.val ?? taggedRecord.value ?? null,\n left: materializeTreeInput(taggedRecord.left ?? null),\n right: materializeTreeInput(taggedRecord.right ?? null),\n };\n for (const [key, nested] of Object.entries(taggedRecord)) {\n if (key === '__id__' || key === '__type__' || key === 'val' || key === 'value' || key === 'left' || key === 'right') continue;\n node[key] = materializeTreeInput(nested);\n }\n return node;\n }\n return value;\n}\n\nfunction materializeListInput(\n value: unknown,\n refs: Map<string, Record<string, unknown>> = new Map(),\n materialized: WeakMap<object, Record<string, unknown>> = new WeakMap()\n): unknown {\n if (value === null || value === undefined) return value;\n if (Array.isArray(value)) {\n if (value.length === 0) return null;\n const head: Record<string, unknown> = {\n val: value[0],\n value: value[0],\n next: null,\n };\n let current: Record<string, unknown> = head;\n for (let i = 1; i < value.length; i++) {\n const nextNode: Record<string, unknown> = { val: value[i], value: value[i], next: null };\n current.next = nextNode;\n current = nextNode;\n }\n return head;\n }\n if (!isPlainObjectRecord(value)) {\n return value;\n }\n const record = value as Record<string, unknown>;\n if (typeof record.__ref__ === 'string') {\n return refs.get(record.__ref__) ?? null;\n }\n const taggedRecord = value as Record<string, unknown> & { __type__?: unknown };\n if (isLikelyListNodeValue(record) || taggedRecord.__type__ === 'ListNode') {\n const existingMaterialized = materialized.get(record as object);\n if (existingMaterialized) {\n return existingMaterialized;\n }\n const node: Record<string, unknown> = {\n val: taggedRecord.val ?? taggedRecord.value ?? null,\n value: taggedRecord.val ?? taggedRecord.value ?? null,\n next: null,\n };\n materialized.set(record as object, node);\n if (typeof taggedRecord.__id__ === 'string' && taggedRecord.__id__.length > 0) {\n refs.set(taggedRecord.__id__, node);\n }\n node.next = materializeListInput(taggedRecord.next ?? null, refs, materialized);\n for (const [key, nested] of Object.entries(taggedRecord)) {\n if (key === '__id__' || key === '__type__' || key === '__class__' || key === 'val' || key === 'value' || key === 'next') continue;\n node[key] = materializeListInput(nested, refs, materialized);\n }\n return node;\n }\n return value;\n}\n\nfunction detectMaterializerKind(\n ts: TypeScriptModule,\n typeNode: import('typescript').TypeNode | undefined\n): InputMaterializerKind | null {\n if (!typeNode) return null;\n if (ts.isParenthesizedTypeNode(typeNode)) {\n return detectMaterializerKind(ts, typeNode.type);\n }\n if (ts.isUnionTypeNode(typeNode)) {\n for (const child of typeNode.types) {\n const resolved = detectMaterializerKind(ts, child);\n if (resolved) return resolved;\n }\n return null;\n }\n if (ts.isTypeReferenceNode(typeNode)) {\n const typeNameText = typeNode.typeName.getText();\n if (typeNameText === 'TreeNode') return 'tree';\n if (typeNameText === 'ListNode') return 'list';\n return null;\n }\n return null;\n}\n\nfunction collectInputMaterializers(\n ts: TypeScriptModule,\n functionLikeNode: FunctionLikeNode\n): Record<string, InputMaterializerKind> {\n const out: Record<string, InputMaterializerKind> = {};\n for (const parameter of functionLikeNode.parameters ?? []) {\n if (!ts.isIdentifier(parameter.name)) continue;\n if (parameter.name.text === 'this') continue;\n const kind = detectMaterializerKind(ts, parameter.type);\n if (kind) {\n out[parameter.name.text] = kind;\n }\n }\n return out;\n}\n\nasync function resolveInputMaterializers(\n code: string,\n functionName: string,\n executionStyle: RuntimeExecutionStyle,\n language: 'javascript' | 'typescript'\n): Promise<Record<string, InputMaterializerKind>> {\n if (!functionName || executionStyle === 'ops-class' || language !== 'typescript') {\n return {};\n }\n\n try {\n const ts = await getTypeScriptModule();\n const sourceFile = ts.createSourceFile(\n 'runtime-input.ts',\n code,\n ts.ScriptTarget.ES2020,\n true,\n ts.ScriptKind.TS\n );\n const target = findFunctionLikeNode(ts, sourceFile, functionName, executionStyle);\n if (!target) return {};\n return collectInputMaterializers(ts, target);\n } catch {\n return {};\n }\n}\n\nfunction applyInputMaterializers(\n inputs: Record<string, unknown>,\n materializers: Record<string, InputMaterializerKind>\n): Record<string, unknown> {\n if (Object.keys(materializers).length === 0) return inputs;\n const next: Record<string, unknown> = { ...inputs };\n for (const [name, kind] of Object.entries(materializers)) {\n if (!Object.prototype.hasOwnProperty.call(next, name)) continue;\n next[name] = kind === 'tree' ? materializeTreeInput(next[name]) : materializeListInput(next[name]);\n }\n return next;\n}\n\ntype FunctionLikeNode =\n | import('typescript').FunctionDeclaration\n | import('typescript').FunctionExpression\n | import('typescript').ArrowFunction\n | import('typescript').MethodDeclaration;\n\nfunction collectSimpleParameterNames(\n ts: TypeScriptModule,\n functionLikeNode: FunctionLikeNode\n): string[] | null {\n const names: string[] = [];\n\n for (const parameter of functionLikeNode.parameters ?? []) {\n if (!ts.isIdentifier(parameter.name)) {\n return null;\n }\n if (parameter.name.text === 'this') {\n continue;\n }\n names.push(parameter.name.text);\n }\n\n return names;\n}\n\nfunction getPropertyNameText(ts: TypeScriptModule, name: import('typescript').PropertyName | undefined): string | null {\n if (!name) return null;\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n return null;\n}\n\nfunction findFunctionLikeNode(\n ts: TypeScriptModule,\n sourceFile: import('typescript').SourceFile,\n functionName: string,\n executionStyle: RuntimeExecutionStyle\n): FunctionLikeNode | null {\n let found: FunctionLikeNode | null = null;\n\n const visit = (node: import('typescript').Node): void => {\n if (found) return;\n\n if (executionStyle === 'solution-method' && ts.isClassDeclaration(node) && node.name?.text === 'Solution') {\n for (const member of node.members) {\n if (found) break;\n\n if (ts.isMethodDeclaration(member) && getPropertyNameText(ts, member.name) === functionName) {\n found = member;\n break;\n }\n\n if (\n ts.isPropertyDeclaration(member) &&\n getPropertyNameText(ts, member.name) === functionName &&\n member.initializer &&\n (ts.isArrowFunction(member.initializer) || ts.isFunctionExpression(member.initializer))\n ) {\n found = member.initializer;\n break;\n }\n }\n return;\n }\n\n if (executionStyle === 'function') {\n if (ts.isFunctionDeclaration(node) && node.name?.text === functionName) {\n found = node;\n return;\n }\n\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === functionName &&\n node.initializer &&\n (ts.isArrowFunction(node.initializer) || ts.isFunctionExpression(node.initializer))\n ) {\n found = node.initializer;\n return;\n }\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n return found;\n}\n\nasync function resolveOrderedInputKeys(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle,\n language: 'javascript' | 'typescript' = 'javascript'\n): Promise<string[]> {\n const fallbackKeys = Object.keys(inputs);\n if (!functionName || executionStyle === 'ops-class' || fallbackKeys.length <= 1) {\n return fallbackKeys;\n }\n\n try {\n const ts = await getTypeScriptModule();\n const sourceFile = ts.createSourceFile(\n `runtime-input.${language === 'typescript' ? 'ts' : 'js'}`,\n code,\n ts.ScriptTarget.ES2020,\n true,\n language === 'typescript' ? ts.ScriptKind.TS : ts.ScriptKind.JS\n );\n const target = findFunctionLikeNode(ts, sourceFile, functionName, executionStyle);\n if (!target) {\n return fallbackKeys;\n }\n\n const parameterNames = collectSimpleParameterNames(ts, target);\n if (!parameterNames || parameterNames.length === 0) {\n return fallbackKeys;\n }\n\n const matchedKeys = parameterNames.filter((name) => Object.prototype.hasOwnProperty.call(inputs, name));\n if (matchedKeys.length === 0) {\n return fallbackKeys;\n }\n\n const extras = fallbackKeys.filter((key) => !matchedKeys.includes(key));\n return [...matchedKeys, ...extras];\n } catch {\n return fallbackKeys;\n }\n}\n\nfunction buildRunner(code: string, executionStyle: RuntimeExecutionStyle, argNames: string[]): DynamicRunner {\n if (executionStyle === 'function') {\n return new Function(\n 'console',\n '__functionName',\n ...argNames,\n `\"use strict\";\n${code}\nlet __target;\ntry {\n __target = eval(__functionName);\n} catch (_err) {\n __target = undefined;\n}\nif (typeof __target !== 'function') {\n throw new Error('Function \"' + __functionName + '\" not found');\n}\nreturn __target(${argNames.join(', ')});`\n ) as DynamicRunner;\n }\n\n if (executionStyle === 'solution-method') {\n return new Function(\n 'console',\n '__functionName',\n ...argNames,\n `\"use strict\";\n${code}\nif (typeof Solution !== 'function') {\n throw new Error('Class \"Solution\" not found');\n}\nconst __solver = new Solution();\nconst __method = __solver[__functionName];\nif (typeof __method !== 'function') {\n throw new Error('Method \"Solution.' + __functionName + '\" not found');\n}\nreturn __method.call(__solver, ${argNames.join(', ')});`\n ) as DynamicRunner;\n }\n\n if (executionStyle === 'ops-class') {\n return new Function(\n 'console',\n '__className',\n '__operations',\n '__arguments',\n `\"use strict\";\n${code}\nif (!Array.isArray(__operations) || !Array.isArray(__arguments)) {\n throw new Error('ops-class execution requires inputs.operations and inputs.arguments (or ops/args)');\n}\nif (__operations.length !== __arguments.length) {\n throw new Error('operations and arguments must have the same length');\n}\nlet __targetClass;\ntry {\n __targetClass = eval(__className);\n} catch (_err) {\n __targetClass = undefined;\n}\nif (typeof __targetClass !== 'function') {\n throw new Error('Class \"' + __className + '\" not found');\n}\nlet __instance = null;\nconst __out = [];\nfor (let __i = 0; __i < __operations.length; __i++) {\n const __op = __operations[__i];\n let __callArgs = __arguments[__i];\n if (__callArgs === null || __callArgs === undefined) {\n __callArgs = [];\n }\n if (!Array.isArray(__callArgs)) {\n __callArgs = [__callArgs];\n }\n if (__i === 0) {\n __instance = new __targetClass(...__callArgs);\n __out.push(null);\n continue;\n }\n if (!__instance || typeof __instance[__op] !== 'function') {\n throw new Error('Required method \"' + __op + '\" is not implemented on ' + (__className || 'target class'));\n }\n __out.push(__instance[__op](...__callArgs));\n}\nreturn __out;`\n ) as DynamicRunner;\n }\n\n throw new Error(`Execution style \"${executionStyle}\" is not supported for JavaScript runtime yet.`);\n}\n\nfunction getOpsClassInputs(inputs: Record<string, unknown>): {\n operations: unknown[] | null;\n argumentsList: unknown[] | null;\n} {\n const operations = Array.isArray(inputs.operations)\n ? inputs.operations\n : (Array.isArray(inputs.ops) ? inputs.ops : null);\n const argumentsList = Array.isArray(inputs.arguments)\n ? inputs.arguments\n : (Array.isArray(inputs.args) ? inputs.args : null);\n return { operations, argumentsList };\n}\n\nasync function transpileTypeScript(code: string): Promise<string> {\n const ts = await getTypeScriptModule();\n const transpileInput = withTypeScriptRuntimeDeclarations(code);\n const transpiled = ts.transpileModule(transpileInput, {\n compilerOptions: {\n target: ts.ScriptTarget.ES2020,\n module: ts.ModuleKind.None,\n strict: false,\n esModuleInterop: true,\n },\n reportDiagnostics: true,\n fileName: 'solution.ts',\n });\n\n const diagnostics = Array.isArray(transpiled.diagnostics) ? transpiled.diagnostics : [];\n const errors = diagnostics.filter((diag) => diag.category === ts.DiagnosticCategory.Error);\n if (errors.length > 0) {\n const first = errors[0];\n const messageText = ts.flattenDiagnosticMessageText(first.messageText, '\\n');\n let lineNumber: number | undefined;\n if (first.file && typeof first.start === 'number') {\n const position = first.file.getLineAndCharacterOfPosition(first.start);\n lineNumber = position.line + 1;\n }\n const error = new Error(\n lineNumber\n ? `TypeScript transpilation failed (line ${lineNumber}): ${messageText}`\n : `TypeScript transpilation failed: ${messageText}`\n );\n if (lineNumber) {\n (error as Error & { __tracecodeLine?: number }).__tracecodeLine = lineNumber;\n }\n throw error;\n }\n\n return transpiled.outputText;\n}\n\nexport async function executeJavaScriptCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function',\n language: 'javascript' | 'typescript' = 'javascript'\n): Promise<CodeExecutionResult> {\n const consoleOutput: string[] = [];\n const consoleProxy = createConsoleProxy(consoleOutput);\n const normalizedInputs = normalizeInputs(inputs);\n const materializers = await resolveInputMaterializers(code, functionName, executionStyle, language);\n const materializedInputs = applyInputMaterializers(normalizedInputs, materializers);\n const javascriptLibraryEnvironment = await getJavaScriptLibraryEnvironment();\n const restoreJavaScriptLibraryGlobals = installJavaScriptLibraryGlobals(javascriptLibraryEnvironment);\n\n try {\n let output: unknown;\n\n if (executionStyle === 'ops-class') {\n const { operations, argumentsList } = getOpsClassInputs(materializedInputs);\n const runner = buildRunner(code, executionStyle, []);\n output = await Promise.resolve(runner(consoleProxy, functionName, operations, argumentsList));\n } else {\n const inputKeys = await resolveOrderedInputKeys(code, functionName, materializedInputs, executionStyle, language);\n const argNames = inputKeys.map((_, index) => `__arg${index}`);\n const argValues = inputKeys.map((key) => materializedInputs[key]);\n const runner = buildRunner(code, executionStyle, argNames);\n output = await Promise.resolve(runner(consoleProxy, functionName, ...argValues));\n }\n\n return {\n success: true,\n output: serializeOutputValue(output),\n consoleOutput,\n };\n } catch (error) {\n return {\n success: false,\n output: null,\n error: error instanceof Error ? error.message : String(error),\n errorLine: extractUserErrorLine(error),\n consoleOutput,\n };\n } finally {\n restoreJavaScriptLibraryGlobals();\n }\n}\n\nexport async function executeJavaScriptWithTracing(\n code: string,\n functionName: string | null,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function',\n language: 'javascript' | 'typescript' = 'javascript'\n): Promise<ExecutionResult> {\n const startedAt = performanceNow();\n const codeResult = await executeJavaScriptCode(code, functionName ?? '', inputs, executionStyle, language);\n const executionTimeMs = performanceNow() - startedAt;\n\n if (!codeResult.success) {\n return {\n success: false,\n error: codeResult.error,\n errorLine: codeResult.errorLine,\n trace: createEmptyRuntimeTrace(language),\n executionTimeMs,\n consoleOutput: codeResult.consoleOutput ?? [],\n lineEventCount: 0,\n traceStepCount: 0,\n };\n }\n\n return {\n success: true,\n output: codeResult.output,\n trace: createEmptyRuntimeTrace(language),\n executionTimeMs,\n consoleOutput: codeResult.consoleOutput ?? [],\n lineEventCount: 0,\n traceStepCount: 0,\n };\n}\n\nexport async function executeTypeScriptCode(\n code: string,\n functionName: string,\n inputs: Record<string, unknown>,\n executionStyle: RuntimeExecutionStyle = 'function'\n): Promise<CodeExecutionResult> {\n const normalizedInputs = normalizeInputs(inputs);\n const materializers = await resolveInputMaterializers(code, functionName, executionStyle, 'typescript');\n const materializedInputs = applyInputMaterializers(normalizedInputs, materializers);\n const transpiledCode = await transpileTypeScript(code);\n return executeJavaScriptCode(transpiledCode, functionName, materializedInputs, executionStyle, 'typescript');\n}\n"],"mappings":"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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAExC,IAAM,oCAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAE1C,IAAM,iDAAiD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiOjD,IAAM,6CAA6C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8DnD,IAAM,0DAA0D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoDhE,IAAM,2DAA2D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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","names":["sortedUnique","pending","EXECUTION_TIMEOUT_MS","TRACING_TIMEOUT_MS","INIT_TIMEOUT_MS","MESSAGE_TIMEOUT_MS","WORKER_READY_TIMEOUT_MS","pending","JAVA_DEFAULT_FILE","EXECUTION_TIMEOUT_MS","TRACING_TIMEOUT_MS","INTERVIEW_MODE_TIMEOUT_MS","INIT_TIMEOUT_MS","MESSAGE_TIMEOUT_MS","WORKER_READY_TIMEOUT_MS","pending","trace","INIT_TIMEOUT_MS","EXECUTION_TIMEOUT_MS","TRACING_TIMEOUT_MS","INTERVIEW_MODE_TIMEOUT_MS","MESSAGE_TIMEOUT_MS","WORKER_READY_TIMEOUT_MS","pending","EXECUTION_TIMEOUT_MS","INTERVIEW_MODE_TIMEOUT_MS","TRACING_TIMEOUT_MS","INIT_TIMEOUT_MS","MESSAGE_TIMEOUT_MS","WORKER_READY_TIMEOUT_MS","pending","out","fields","line"]}
|