@tracecode/harness 0.6.6 → 0.7.0-beta8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +134 -15
  3. package/THIRD_PARTY_NOTICES.md +170 -0
  4. package/dist/browser.cjs +2361 -1033
  5. package/dist/browser.cjs.map +1 -1
  6. package/dist/browser.d.cts +33 -3
  7. package/dist/browser.d.ts +33 -3
  8. package/dist/browser.js +2357 -1033
  9. package/dist/browser.js.map +1 -1
  10. package/dist/cli.cjs +160 -23
  11. package/dist/cli.cjs.map +1 -1
  12. package/dist/cli.js +161 -24
  13. package/dist/cli.js.map +1 -1
  14. package/dist/core.cjs +748 -867
  15. package/dist/core.cjs.map +1 -1
  16. package/dist/core.d.cts +21 -85
  17. package/dist/core.d.ts +21 -85
  18. package/dist/core.js +734 -855
  19. package/dist/core.js.map +1 -1
  20. package/dist/cpp-worker-client-Bn7kC0_L.d.ts +84 -0
  21. package/dist/cpp-worker-client-BzdJLuZa.d.cts +84 -0
  22. package/dist/cpp.cjs +1063 -0
  23. package/dist/cpp.cjs.map +1 -0
  24. package/dist/cpp.d.cts +7 -0
  25. package/dist/cpp.d.ts +7 -0
  26. package/dist/cpp.js +1035 -0
  27. package/dist/cpp.js.map +1 -0
  28. package/dist/csharp-worker-client-DMHIa2YG.d.cts +69 -0
  29. package/dist/csharp-worker-client-JwqS6LiX.d.ts +69 -0
  30. package/dist/csharp.cjs +1012 -0
  31. package/dist/csharp.cjs.map +1 -0
  32. package/dist/csharp.d.cts +7 -0
  33. package/dist/csharp.d.ts +7 -0
  34. package/dist/csharp.js +984 -0
  35. package/dist/csharp.js.map +1 -0
  36. package/dist/index.cjs +3142 -1160
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.d.cts +13 -5
  39. package/dist/index.d.ts +13 -5
  40. package/dist/index.js +3117 -1148
  41. package/dist/index.js.map +1 -1
  42. package/dist/internal/browser.cjs +1639 -30
  43. package/dist/internal/browser.cjs.map +1 -1
  44. package/dist/internal/browser.d.cts +6 -199
  45. package/dist/internal/browser.d.ts +6 -199
  46. package/dist/internal/browser.js +1636 -30
  47. package/dist/internal/browser.js.map +1 -1
  48. package/dist/java-worker-client-BOwKW-11.d.cts +72 -0
  49. package/dist/java-worker-client-C97DDnCp.d.ts +72 -0
  50. package/dist/java.cjs +1225 -0
  51. package/dist/java.cjs.map +1 -0
  52. package/dist/java.d.cts +7 -0
  53. package/dist/java.d.ts +7 -0
  54. package/dist/java.js +1197 -0
  55. package/dist/java.js.map +1 -0
  56. package/dist/javascript-worker-client-CYBGEEvc.d.cts +51 -0
  57. package/dist/javascript-worker-client-DIX1Mp21.d.ts +51 -0
  58. package/dist/javascript.cjs +1063 -19
  59. package/dist/javascript.cjs.map +1 -1
  60. package/dist/javascript.d.cts +7 -4
  61. package/dist/javascript.d.ts +7 -4
  62. package/dist/javascript.js +1061 -19
  63. package/dist/javascript.js.map +1 -1
  64. package/dist/pyodide-worker-client-C-2rfHj9.d.ts +111 -0
  65. package/dist/pyodide-worker-client-Cn0a8Uv3.d.cts +111 -0
  66. package/dist/python.cjs +1282 -74
  67. package/dist/python.cjs.map +1 -1
  68. package/dist/python.d.cts +20 -14
  69. package/dist/python.d.ts +20 -14
  70. package/dist/python.js +1279 -74
  71. package/dist/python.js.map +1 -1
  72. package/dist/runtime-language-info-BFUSti3-.d.ts +43 -0
  73. package/dist/runtime-language-info-Bxza1cI2.d.cts +43 -0
  74. package/dist/runtime-types-2qM0MukN.d.cts +244 -0
  75. package/dist/runtime-types-2qM0MukN.d.ts +244 -0
  76. package/package.json +73 -8
  77. package/workers/cpp/cpp-compiler-frame.html +82 -0
  78. package/workers/cpp/cpp-compiler-worker.js +131 -0
  79. package/workers/cpp/cpp-worker.js +5790 -0
  80. package/workers/cpp/tracecode_runtime.hpp +6169 -0
  81. package/workers/csharp/csharp-worker.js +301 -0
  82. package/workers/java/.build/classes/harness/browser/JavaRewriteLibrary.class +0 -0
  83. package/workers/java/java-source-augmentations.js +907 -0
  84. package/workers/java/java-worker.js +2161 -177
  85. package/workers/java/src/harness/browser/JavaRewriteLibrary.java +1659 -32
  86. package/workers/java/src/javafx/util/Pair.java +42 -0
  87. package/workers/java/src/tracecode/browser/BrowserCompileAndTraceLibrary.java +714 -0
  88. package/workers/java/src/tracecode/browser/BrowserCompileAndTraceMain.java +76 -0
  89. package/workers/java/src/tracecode/browser/RuntimeProbeMain.java +14 -0
  90. package/workers/java/src/tracecode/user/TraceHooks.java +1414 -0
  91. package/workers/javascript/javascript-libraries-entry.js +71 -0
  92. package/workers/javascript/javascript-worker.js +2055 -424
  93. package/workers/python/generated-python-harness-snippets.js +4 -4
  94. package/workers/python/pyodide-worker.js +222 -61
  95. package/workers/python/runtime-core.js +1387 -301
  96. package/workers/vendor/csharp/.stamp +0 -0
  97. package/workers/vendor/csharp/TraceCode.CSharpHost.runtimeconfig.json +32 -0
  98. package/workers/vendor/csharp/_framework/Microsoft.CSharp.wasm +0 -0
  99. package/workers/vendor/csharp/_framework/Microsoft.CodeAnalysis.CSharp.wasm +0 -0
  100. package/workers/vendor/csharp/_framework/Microsoft.CodeAnalysis.wasm +0 -0
  101. package/workers/vendor/csharp/_framework/Microsoft.VisualBasic.Core.wasm +0 -0
  102. package/workers/vendor/csharp/_framework/Microsoft.VisualBasic.wasm +0 -0
  103. package/workers/vendor/csharp/_framework/Microsoft.Win32.Primitives.wasm +0 -0
  104. package/workers/vendor/csharp/_framework/Microsoft.Win32.Registry.wasm +0 -0
  105. package/workers/vendor/csharp/_framework/System.AppContext.wasm +0 -0
  106. package/workers/vendor/csharp/_framework/System.Buffers.wasm +0 -0
  107. package/workers/vendor/csharp/_framework/System.Collections.Concurrent.wasm +0 -0
  108. package/workers/vendor/csharp/_framework/System.Collections.Immutable.wasm +0 -0
  109. package/workers/vendor/csharp/_framework/System.Collections.NonGeneric.wasm +0 -0
  110. package/workers/vendor/csharp/_framework/System.Collections.Specialized.wasm +0 -0
  111. package/workers/vendor/csharp/_framework/System.Collections.wasm +0 -0
  112. package/workers/vendor/csharp/_framework/System.ComponentModel.Annotations.wasm +0 -0
  113. package/workers/vendor/csharp/_framework/System.ComponentModel.DataAnnotations.wasm +0 -0
  114. package/workers/vendor/csharp/_framework/System.ComponentModel.EventBasedAsync.wasm +0 -0
  115. package/workers/vendor/csharp/_framework/System.ComponentModel.Primitives.wasm +0 -0
  116. package/workers/vendor/csharp/_framework/System.ComponentModel.TypeConverter.wasm +0 -0
  117. package/workers/vendor/csharp/_framework/System.ComponentModel.wasm +0 -0
  118. package/workers/vendor/csharp/_framework/System.Configuration.wasm +0 -0
  119. package/workers/vendor/csharp/_framework/System.Console.wasm +0 -0
  120. package/workers/vendor/csharp/_framework/System.Core.wasm +0 -0
  121. package/workers/vendor/csharp/_framework/System.Data.Common.wasm +0 -0
  122. package/workers/vendor/csharp/_framework/System.Data.DataSetExtensions.wasm +0 -0
  123. package/workers/vendor/csharp/_framework/System.Data.wasm +0 -0
  124. package/workers/vendor/csharp/_framework/System.Diagnostics.Contracts.wasm +0 -0
  125. package/workers/vendor/csharp/_framework/System.Diagnostics.Debug.wasm +0 -0
  126. package/workers/vendor/csharp/_framework/System.Diagnostics.DiagnosticSource.wasm +0 -0
  127. package/workers/vendor/csharp/_framework/System.Diagnostics.FileVersionInfo.wasm +0 -0
  128. package/workers/vendor/csharp/_framework/System.Diagnostics.Process.wasm +0 -0
  129. package/workers/vendor/csharp/_framework/System.Diagnostics.StackTrace.wasm +0 -0
  130. package/workers/vendor/csharp/_framework/System.Diagnostics.TextWriterTraceListener.wasm +0 -0
  131. package/workers/vendor/csharp/_framework/System.Diagnostics.Tools.wasm +0 -0
  132. package/workers/vendor/csharp/_framework/System.Diagnostics.TraceSource.wasm +0 -0
  133. package/workers/vendor/csharp/_framework/System.Diagnostics.Tracing.wasm +0 -0
  134. package/workers/vendor/csharp/_framework/System.Drawing.Primitives.wasm +0 -0
  135. package/workers/vendor/csharp/_framework/System.Drawing.wasm +0 -0
  136. package/workers/vendor/csharp/_framework/System.Dynamic.Runtime.wasm +0 -0
  137. package/workers/vendor/csharp/_framework/System.Formats.Asn1.wasm +0 -0
  138. package/workers/vendor/csharp/_framework/System.Formats.Tar.wasm +0 -0
  139. package/workers/vendor/csharp/_framework/System.Globalization.Calendars.wasm +0 -0
  140. package/workers/vendor/csharp/_framework/System.Globalization.Extensions.wasm +0 -0
  141. package/workers/vendor/csharp/_framework/System.Globalization.wasm +0 -0
  142. package/workers/vendor/csharp/_framework/System.IO.Compression.Brotli.wasm +0 -0
  143. package/workers/vendor/csharp/_framework/System.IO.Compression.FileSystem.wasm +0 -0
  144. package/workers/vendor/csharp/_framework/System.IO.Compression.ZipFile.wasm +0 -0
  145. package/workers/vendor/csharp/_framework/System.IO.Compression.wasm +0 -0
  146. package/workers/vendor/csharp/_framework/System.IO.FileSystem.AccessControl.wasm +0 -0
  147. package/workers/vendor/csharp/_framework/System.IO.FileSystem.DriveInfo.wasm +0 -0
  148. package/workers/vendor/csharp/_framework/System.IO.FileSystem.Primitives.wasm +0 -0
  149. package/workers/vendor/csharp/_framework/System.IO.FileSystem.Watcher.wasm +0 -0
  150. package/workers/vendor/csharp/_framework/System.IO.FileSystem.wasm +0 -0
  151. package/workers/vendor/csharp/_framework/System.IO.IsolatedStorage.wasm +0 -0
  152. package/workers/vendor/csharp/_framework/System.IO.MemoryMappedFiles.wasm +0 -0
  153. package/workers/vendor/csharp/_framework/System.IO.Pipelines.wasm +0 -0
  154. package/workers/vendor/csharp/_framework/System.IO.Pipes.AccessControl.wasm +0 -0
  155. package/workers/vendor/csharp/_framework/System.IO.Pipes.wasm +0 -0
  156. package/workers/vendor/csharp/_framework/System.IO.UnmanagedMemoryStream.wasm +0 -0
  157. package/workers/vendor/csharp/_framework/System.IO.wasm +0 -0
  158. package/workers/vendor/csharp/_framework/System.Linq.AsyncEnumerable.wasm +0 -0
  159. package/workers/vendor/csharp/_framework/System.Linq.Expressions.wasm +0 -0
  160. package/workers/vendor/csharp/_framework/System.Linq.Parallel.wasm +0 -0
  161. package/workers/vendor/csharp/_framework/System.Linq.Queryable.wasm +0 -0
  162. package/workers/vendor/csharp/_framework/System.Linq.wasm +0 -0
  163. package/workers/vendor/csharp/_framework/System.Memory.wasm +0 -0
  164. package/workers/vendor/csharp/_framework/System.Net.Http.Json.wasm +0 -0
  165. package/workers/vendor/csharp/_framework/System.Net.Http.wasm +0 -0
  166. package/workers/vendor/csharp/_framework/System.Net.HttpListener.wasm +0 -0
  167. package/workers/vendor/csharp/_framework/System.Net.Mail.wasm +0 -0
  168. package/workers/vendor/csharp/_framework/System.Net.NameResolution.wasm +0 -0
  169. package/workers/vendor/csharp/_framework/System.Net.NetworkInformation.wasm +0 -0
  170. package/workers/vendor/csharp/_framework/System.Net.Ping.wasm +0 -0
  171. package/workers/vendor/csharp/_framework/System.Net.Primitives.wasm +0 -0
  172. package/workers/vendor/csharp/_framework/System.Net.Quic.wasm +0 -0
  173. package/workers/vendor/csharp/_framework/System.Net.Requests.wasm +0 -0
  174. package/workers/vendor/csharp/_framework/System.Net.Security.wasm +0 -0
  175. package/workers/vendor/csharp/_framework/System.Net.ServerSentEvents.wasm +0 -0
  176. package/workers/vendor/csharp/_framework/System.Net.ServicePoint.wasm +0 -0
  177. package/workers/vendor/csharp/_framework/System.Net.Sockets.wasm +0 -0
  178. package/workers/vendor/csharp/_framework/System.Net.WebClient.wasm +0 -0
  179. package/workers/vendor/csharp/_framework/System.Net.WebHeaderCollection.wasm +0 -0
  180. package/workers/vendor/csharp/_framework/System.Net.WebProxy.wasm +0 -0
  181. package/workers/vendor/csharp/_framework/System.Net.WebSockets.Client.wasm +0 -0
  182. package/workers/vendor/csharp/_framework/System.Net.WebSockets.wasm +0 -0
  183. package/workers/vendor/csharp/_framework/System.Net.wasm +0 -0
  184. package/workers/vendor/csharp/_framework/System.Numerics.Vectors.wasm +0 -0
  185. package/workers/vendor/csharp/_framework/System.Numerics.wasm +0 -0
  186. package/workers/vendor/csharp/_framework/System.ObjectModel.wasm +0 -0
  187. package/workers/vendor/csharp/_framework/System.Private.CoreLib.wasm +0 -0
  188. package/workers/vendor/csharp/_framework/System.Private.DataContractSerialization.wasm +0 -0
  189. package/workers/vendor/csharp/_framework/System.Private.Uri.wasm +0 -0
  190. package/workers/vendor/csharp/_framework/System.Private.Xml.Linq.wasm +0 -0
  191. package/workers/vendor/csharp/_framework/System.Private.Xml.wasm +0 -0
  192. package/workers/vendor/csharp/_framework/System.Reflection.DispatchProxy.wasm +0 -0
  193. package/workers/vendor/csharp/_framework/System.Reflection.Emit.ILGeneration.wasm +0 -0
  194. package/workers/vendor/csharp/_framework/System.Reflection.Emit.Lightweight.wasm +0 -0
  195. package/workers/vendor/csharp/_framework/System.Reflection.Emit.wasm +0 -0
  196. package/workers/vendor/csharp/_framework/System.Reflection.Extensions.wasm +0 -0
  197. package/workers/vendor/csharp/_framework/System.Reflection.Metadata.wasm +0 -0
  198. package/workers/vendor/csharp/_framework/System.Reflection.Primitives.wasm +0 -0
  199. package/workers/vendor/csharp/_framework/System.Reflection.TypeExtensions.wasm +0 -0
  200. package/workers/vendor/csharp/_framework/System.Reflection.wasm +0 -0
  201. package/workers/vendor/csharp/_framework/System.Resources.Reader.wasm +0 -0
  202. package/workers/vendor/csharp/_framework/System.Resources.ResourceManager.wasm +0 -0
  203. package/workers/vendor/csharp/_framework/System.Resources.Writer.wasm +0 -0
  204. package/workers/vendor/csharp/_framework/System.Runtime.CompilerServices.Unsafe.wasm +0 -0
  205. package/workers/vendor/csharp/_framework/System.Runtime.CompilerServices.VisualC.wasm +0 -0
  206. package/workers/vendor/csharp/_framework/System.Runtime.Extensions.wasm +0 -0
  207. package/workers/vendor/csharp/_framework/System.Runtime.Handles.wasm +0 -0
  208. package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.JavaScript.wasm +0 -0
  209. package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.RuntimeInformation.wasm +0 -0
  210. package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.wasm +0 -0
  211. package/workers/vendor/csharp/_framework/System.Runtime.Intrinsics.wasm +0 -0
  212. package/workers/vendor/csharp/_framework/System.Runtime.Loader.wasm +0 -0
  213. package/workers/vendor/csharp/_framework/System.Runtime.Numerics.wasm +0 -0
  214. package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Formatters.wasm +0 -0
  215. package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Json.wasm +0 -0
  216. package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Primitives.wasm +0 -0
  217. package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Xml.wasm +0 -0
  218. package/workers/vendor/csharp/_framework/System.Runtime.Serialization.wasm +0 -0
  219. package/workers/vendor/csharp/_framework/System.Runtime.wasm +0 -0
  220. package/workers/vendor/csharp/_framework/System.Security.AccessControl.wasm +0 -0
  221. package/workers/vendor/csharp/_framework/System.Security.Claims.wasm +0 -0
  222. package/workers/vendor/csharp/_framework/System.Security.Cryptography.Algorithms.wasm +0 -0
  223. package/workers/vendor/csharp/_framework/System.Security.Cryptography.Cng.wasm +0 -0
  224. package/workers/vendor/csharp/_framework/System.Security.Cryptography.Csp.wasm +0 -0
  225. package/workers/vendor/csharp/_framework/System.Security.Cryptography.Encoding.wasm +0 -0
  226. package/workers/vendor/csharp/_framework/System.Security.Cryptography.OpenSsl.wasm +0 -0
  227. package/workers/vendor/csharp/_framework/System.Security.Cryptography.Primitives.wasm +0 -0
  228. package/workers/vendor/csharp/_framework/System.Security.Cryptography.X509Certificates.wasm +0 -0
  229. package/workers/vendor/csharp/_framework/System.Security.Cryptography.wasm +0 -0
  230. package/workers/vendor/csharp/_framework/System.Security.Principal.Windows.wasm +0 -0
  231. package/workers/vendor/csharp/_framework/System.Security.Principal.wasm +0 -0
  232. package/workers/vendor/csharp/_framework/System.Security.SecureString.wasm +0 -0
  233. package/workers/vendor/csharp/_framework/System.Security.wasm +0 -0
  234. package/workers/vendor/csharp/_framework/System.ServiceModel.Web.wasm +0 -0
  235. package/workers/vendor/csharp/_framework/System.ServiceProcess.wasm +0 -0
  236. package/workers/vendor/csharp/_framework/System.Text.Encoding.CodePages.wasm +0 -0
  237. package/workers/vendor/csharp/_framework/System.Text.Encoding.Extensions.wasm +0 -0
  238. package/workers/vendor/csharp/_framework/System.Text.Encoding.wasm +0 -0
  239. package/workers/vendor/csharp/_framework/System.Text.Encodings.Web.wasm +0 -0
  240. package/workers/vendor/csharp/_framework/System.Text.Json.wasm +0 -0
  241. package/workers/vendor/csharp/_framework/System.Text.RegularExpressions.wasm +0 -0
  242. package/workers/vendor/csharp/_framework/System.Threading.AccessControl.wasm +0 -0
  243. package/workers/vendor/csharp/_framework/System.Threading.Channels.wasm +0 -0
  244. package/workers/vendor/csharp/_framework/System.Threading.Overlapped.wasm +0 -0
  245. package/workers/vendor/csharp/_framework/System.Threading.Tasks.Dataflow.wasm +0 -0
  246. package/workers/vendor/csharp/_framework/System.Threading.Tasks.Extensions.wasm +0 -0
  247. package/workers/vendor/csharp/_framework/System.Threading.Tasks.Parallel.wasm +0 -0
  248. package/workers/vendor/csharp/_framework/System.Threading.Tasks.wasm +0 -0
  249. package/workers/vendor/csharp/_framework/System.Threading.Thread.wasm +0 -0
  250. package/workers/vendor/csharp/_framework/System.Threading.ThreadPool.wasm +0 -0
  251. package/workers/vendor/csharp/_framework/System.Threading.Timer.wasm +0 -0
  252. package/workers/vendor/csharp/_framework/System.Threading.wasm +0 -0
  253. package/workers/vendor/csharp/_framework/System.Transactions.Local.wasm +0 -0
  254. package/workers/vendor/csharp/_framework/System.Transactions.wasm +0 -0
  255. package/workers/vendor/csharp/_framework/System.ValueTuple.wasm +0 -0
  256. package/workers/vendor/csharp/_framework/System.Web.HttpUtility.wasm +0 -0
  257. package/workers/vendor/csharp/_framework/System.Web.wasm +0 -0
  258. package/workers/vendor/csharp/_framework/System.Windows.wasm +0 -0
  259. package/workers/vendor/csharp/_framework/System.Xml.Linq.wasm +0 -0
  260. package/workers/vendor/csharp/_framework/System.Xml.ReaderWriter.wasm +0 -0
  261. package/workers/vendor/csharp/_framework/System.Xml.Serialization.wasm +0 -0
  262. package/workers/vendor/csharp/_framework/System.Xml.XDocument.wasm +0 -0
  263. package/workers/vendor/csharp/_framework/System.Xml.XPath.XDocument.wasm +0 -0
  264. package/workers/vendor/csharp/_framework/System.Xml.XPath.wasm +0 -0
  265. package/workers/vendor/csharp/_framework/System.Xml.XmlDocument.wasm +0 -0
  266. package/workers/vendor/csharp/_framework/System.Xml.XmlSerializer.wasm +0 -0
  267. package/workers/vendor/csharp/_framework/System.Xml.wasm +0 -0
  268. package/workers/vendor/csharp/_framework/System.wasm +0 -0
  269. package/workers/vendor/csharp/_framework/TraceCode.CSharpHost.wasm +0 -0
  270. package/workers/vendor/csharp/_framework/WindowsBase.wasm +0 -0
  271. package/workers/vendor/csharp/_framework/cs/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  272. package/workers/vendor/csharp/_framework/cs/Microsoft.CodeAnalysis.resources.wasm +0 -0
  273. package/workers/vendor/csharp/_framework/de/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  274. package/workers/vendor/csharp/_framework/de/Microsoft.CodeAnalysis.resources.wasm +0 -0
  275. package/workers/vendor/csharp/_framework/dotnet.boot.js +1958 -0
  276. package/workers/vendor/csharp/_framework/dotnet.js +4 -0
  277. package/workers/vendor/csharp/_framework/dotnet.js.map +1 -0
  278. package/workers/vendor/csharp/_framework/dotnet.native.js +6687 -0
  279. package/workers/vendor/csharp/_framework/dotnet.native.wasm +0 -0
  280. package/workers/vendor/csharp/_framework/dotnet.runtime.js +4 -0
  281. package/workers/vendor/csharp/_framework/dotnet.runtime.js.map +1 -0
  282. package/workers/vendor/csharp/_framework/es/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  283. package/workers/vendor/csharp/_framework/es/Microsoft.CodeAnalysis.resources.wasm +0 -0
  284. package/workers/vendor/csharp/_framework/fr/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  285. package/workers/vendor/csharp/_framework/fr/Microsoft.CodeAnalysis.resources.wasm +0 -0
  286. package/workers/vendor/csharp/_framework/it/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  287. package/workers/vendor/csharp/_framework/it/Microsoft.CodeAnalysis.resources.wasm +0 -0
  288. package/workers/vendor/csharp/_framework/ja/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  289. package/workers/vendor/csharp/_framework/ja/Microsoft.CodeAnalysis.resources.wasm +0 -0
  290. package/workers/vendor/csharp/_framework/ko/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  291. package/workers/vendor/csharp/_framework/ko/Microsoft.CodeAnalysis.resources.wasm +0 -0
  292. package/workers/vendor/csharp/_framework/mscorlib.wasm +0 -0
  293. package/workers/vendor/csharp/_framework/netstandard.wasm +0 -0
  294. package/workers/vendor/csharp/_framework/pl/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  295. package/workers/vendor/csharp/_framework/pl/Microsoft.CodeAnalysis.resources.wasm +0 -0
  296. package/workers/vendor/csharp/_framework/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  297. package/workers/vendor/csharp/_framework/pt-BR/Microsoft.CodeAnalysis.resources.wasm +0 -0
  298. package/workers/vendor/csharp/_framework/ru/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  299. package/workers/vendor/csharp/_framework/ru/Microsoft.CodeAnalysis.resources.wasm +0 -0
  300. package/workers/vendor/csharp/_framework/supportFiles/0_Microsoft.CodeAnalysis.CSharp.dll +0 -0
  301. package/workers/vendor/csharp/_framework/supportFiles/100_System.Reflection.Emit.ILGeneration.dll +0 -0
  302. package/workers/vendor/csharp/_framework/supportFiles/101_System.Reflection.Emit.Lightweight.dll +0 -0
  303. package/workers/vendor/csharp/_framework/supportFiles/102_System.Reflection.Extensions.dll +0 -0
  304. package/workers/vendor/csharp/_framework/supportFiles/103_System.Reflection.Metadata.dll +0 -0
  305. package/workers/vendor/csharp/_framework/supportFiles/104_System.Reflection.Primitives.dll +0 -0
  306. package/workers/vendor/csharp/_framework/supportFiles/105_System.Reflection.TypeExtensions.dll +0 -0
  307. package/workers/vendor/csharp/_framework/supportFiles/106_System.Resources.Reader.dll +0 -0
  308. package/workers/vendor/csharp/_framework/supportFiles/107_System.Resources.ResourceManager.dll +0 -0
  309. package/workers/vendor/csharp/_framework/supportFiles/108_System.Resources.Writer.dll +0 -0
  310. package/workers/vendor/csharp/_framework/supportFiles/109_System.Runtime.CompilerServices.Unsafe.dll +0 -0
  311. package/workers/vendor/csharp/_framework/supportFiles/10_System.Buffers.dll +0 -0
  312. package/workers/vendor/csharp/_framework/supportFiles/110_System.Runtime.CompilerServices.VisualC.dll +0 -0
  313. package/workers/vendor/csharp/_framework/supportFiles/111_System.Runtime.dll +0 -0
  314. package/workers/vendor/csharp/_framework/supportFiles/112_System.Runtime.Extensions.dll +0 -0
  315. package/workers/vendor/csharp/_framework/supportFiles/113_System.Runtime.Handles.dll +0 -0
  316. package/workers/vendor/csharp/_framework/supportFiles/114_System.Runtime.InteropServices.dll +0 -0
  317. package/workers/vendor/csharp/_framework/supportFiles/115_System.Runtime.InteropServices.JavaScript.dll +0 -0
  318. package/workers/vendor/csharp/_framework/supportFiles/116_System.Runtime.InteropServices.RuntimeInformation.dll +0 -0
  319. package/workers/vendor/csharp/_framework/supportFiles/117_System.Runtime.Intrinsics.dll +0 -0
  320. package/workers/vendor/csharp/_framework/supportFiles/118_System.Runtime.Loader.dll +0 -0
  321. package/workers/vendor/csharp/_framework/supportFiles/119_System.Runtime.Numerics.dll +0 -0
  322. package/workers/vendor/csharp/_framework/supportFiles/11_System.Collections.Concurrent.dll +0 -0
  323. package/workers/vendor/csharp/_framework/supportFiles/120_System.Runtime.Serialization.dll +0 -0
  324. package/workers/vendor/csharp/_framework/supportFiles/121_System.Runtime.Serialization.Formatters.dll +0 -0
  325. package/workers/vendor/csharp/_framework/supportFiles/122_System.Runtime.Serialization.Json.dll +0 -0
  326. package/workers/vendor/csharp/_framework/supportFiles/123_System.Runtime.Serialization.Primitives.dll +0 -0
  327. package/workers/vendor/csharp/_framework/supportFiles/124_System.Runtime.Serialization.Xml.dll +0 -0
  328. package/workers/vendor/csharp/_framework/supportFiles/125_System.Security.AccessControl.dll +0 -0
  329. package/workers/vendor/csharp/_framework/supportFiles/126_System.Security.Claims.dll +0 -0
  330. package/workers/vendor/csharp/_framework/supportFiles/127_System.Security.Cryptography.Algorithms.dll +0 -0
  331. package/workers/vendor/csharp/_framework/supportFiles/128_System.Security.Cryptography.Cng.dll +0 -0
  332. package/workers/vendor/csharp/_framework/supportFiles/129_System.Security.Cryptography.Csp.dll +0 -0
  333. package/workers/vendor/csharp/_framework/supportFiles/12_System.Collections.dll +0 -0
  334. package/workers/vendor/csharp/_framework/supportFiles/130_System.Security.Cryptography.dll +0 -0
  335. package/workers/vendor/csharp/_framework/supportFiles/131_System.Security.Cryptography.Encoding.dll +0 -0
  336. package/workers/vendor/csharp/_framework/supportFiles/132_System.Security.Cryptography.OpenSsl.dll +0 -0
  337. package/workers/vendor/csharp/_framework/supportFiles/133_System.Security.Cryptography.Primitives.dll +0 -0
  338. package/workers/vendor/csharp/_framework/supportFiles/134_System.Security.Cryptography.X509Certificates.dll +0 -0
  339. package/workers/vendor/csharp/_framework/supportFiles/135_System.Security.dll +0 -0
  340. package/workers/vendor/csharp/_framework/supportFiles/136_System.Security.Principal.dll +0 -0
  341. package/workers/vendor/csharp/_framework/supportFiles/137_System.Security.Principal.Windows.dll +0 -0
  342. package/workers/vendor/csharp/_framework/supportFiles/138_System.Security.SecureString.dll +0 -0
  343. package/workers/vendor/csharp/_framework/supportFiles/139_System.ServiceModel.Web.dll +0 -0
  344. package/workers/vendor/csharp/_framework/supportFiles/13_System.Collections.Immutable.dll +0 -0
  345. package/workers/vendor/csharp/_framework/supportFiles/140_System.ServiceProcess.dll +0 -0
  346. package/workers/vendor/csharp/_framework/supportFiles/141_System.Text.Encoding.CodePages.dll +0 -0
  347. package/workers/vendor/csharp/_framework/supportFiles/142_System.Text.Encoding.dll +0 -0
  348. package/workers/vendor/csharp/_framework/supportFiles/143_System.Text.Encoding.Extensions.dll +0 -0
  349. package/workers/vendor/csharp/_framework/supportFiles/144_System.Text.Encodings.Web.dll +0 -0
  350. package/workers/vendor/csharp/_framework/supportFiles/145_System.Text.Json.dll +0 -0
  351. package/workers/vendor/csharp/_framework/supportFiles/146_System.Text.RegularExpressions.dll +0 -0
  352. package/workers/vendor/csharp/_framework/supportFiles/147_System.Threading.AccessControl.dll +0 -0
  353. package/workers/vendor/csharp/_framework/supportFiles/148_System.Threading.Channels.dll +0 -0
  354. package/workers/vendor/csharp/_framework/supportFiles/149_System.Threading.dll +0 -0
  355. package/workers/vendor/csharp/_framework/supportFiles/14_System.Collections.NonGeneric.dll +0 -0
  356. package/workers/vendor/csharp/_framework/supportFiles/150_System.Threading.Overlapped.dll +0 -0
  357. package/workers/vendor/csharp/_framework/supportFiles/151_System.Threading.Tasks.Dataflow.dll +0 -0
  358. package/workers/vendor/csharp/_framework/supportFiles/152_System.Threading.Tasks.dll +0 -0
  359. package/workers/vendor/csharp/_framework/supportFiles/153_System.Threading.Tasks.Extensions.dll +0 -0
  360. package/workers/vendor/csharp/_framework/supportFiles/154_System.Threading.Tasks.Parallel.dll +0 -0
  361. package/workers/vendor/csharp/_framework/supportFiles/155_System.Threading.Thread.dll +0 -0
  362. package/workers/vendor/csharp/_framework/supportFiles/156_System.Threading.ThreadPool.dll +0 -0
  363. package/workers/vendor/csharp/_framework/supportFiles/157_System.Threading.Timer.dll +0 -0
  364. package/workers/vendor/csharp/_framework/supportFiles/158_System.Transactions.dll +0 -0
  365. package/workers/vendor/csharp/_framework/supportFiles/159_System.Transactions.Local.dll +0 -0
  366. package/workers/vendor/csharp/_framework/supportFiles/15_System.Collections.Specialized.dll +0 -0
  367. package/workers/vendor/csharp/_framework/supportFiles/160_System.ValueTuple.dll +0 -0
  368. package/workers/vendor/csharp/_framework/supportFiles/161_System.Web.dll +0 -0
  369. package/workers/vendor/csharp/_framework/supportFiles/162_System.Web.HttpUtility.dll +0 -0
  370. package/workers/vendor/csharp/_framework/supportFiles/163_System.Windows.dll +0 -0
  371. package/workers/vendor/csharp/_framework/supportFiles/164_System.Xml.dll +0 -0
  372. package/workers/vendor/csharp/_framework/supportFiles/165_System.Xml.Linq.dll +0 -0
  373. package/workers/vendor/csharp/_framework/supportFiles/166_System.Xml.ReaderWriter.dll +0 -0
  374. package/workers/vendor/csharp/_framework/supportFiles/167_System.Xml.Serialization.dll +0 -0
  375. package/workers/vendor/csharp/_framework/supportFiles/168_System.Xml.XDocument.dll +0 -0
  376. package/workers/vendor/csharp/_framework/supportFiles/169_System.Xml.XmlDocument.dll +0 -0
  377. package/workers/vendor/csharp/_framework/supportFiles/16_System.ComponentModel.Annotations.dll +0 -0
  378. package/workers/vendor/csharp/_framework/supportFiles/170_System.Xml.XmlSerializer.dll +0 -0
  379. package/workers/vendor/csharp/_framework/supportFiles/171_System.Xml.XPath.dll +0 -0
  380. package/workers/vendor/csharp/_framework/supportFiles/172_System.Xml.XPath.XDocument.dll +0 -0
  381. package/workers/vendor/csharp/_framework/supportFiles/173_TraceCode.CSharpHost.dll +0 -0
  382. package/workers/vendor/csharp/_framework/supportFiles/174_WindowsBase.dll +0 -0
  383. package/workers/vendor/csharp/_framework/supportFiles/17_System.ComponentModel.DataAnnotations.dll +0 -0
  384. package/workers/vendor/csharp/_framework/supportFiles/18_System.ComponentModel.dll +0 -0
  385. package/workers/vendor/csharp/_framework/supportFiles/19_System.ComponentModel.EventBasedAsync.dll +0 -0
  386. package/workers/vendor/csharp/_framework/supportFiles/1_Microsoft.CodeAnalysis.dll +0 -0
  387. package/workers/vendor/csharp/_framework/supportFiles/20_System.ComponentModel.Primitives.dll +0 -0
  388. package/workers/vendor/csharp/_framework/supportFiles/21_System.ComponentModel.TypeConverter.dll +0 -0
  389. package/workers/vendor/csharp/_framework/supportFiles/22_System.Configuration.dll +0 -0
  390. package/workers/vendor/csharp/_framework/supportFiles/23_System.Console.dll +0 -0
  391. package/workers/vendor/csharp/_framework/supportFiles/24_System.Core.dll +0 -0
  392. package/workers/vendor/csharp/_framework/supportFiles/25_System.Data.Common.dll +0 -0
  393. package/workers/vendor/csharp/_framework/supportFiles/26_System.Data.DataSetExtensions.dll +0 -0
  394. package/workers/vendor/csharp/_framework/supportFiles/27_System.Data.dll +0 -0
  395. package/workers/vendor/csharp/_framework/supportFiles/28_System.Diagnostics.Contracts.dll +0 -0
  396. package/workers/vendor/csharp/_framework/supportFiles/29_System.Diagnostics.Debug.dll +0 -0
  397. package/workers/vendor/csharp/_framework/supportFiles/2_Microsoft.CSharp.dll +0 -0
  398. package/workers/vendor/csharp/_framework/supportFiles/30_System.Diagnostics.DiagnosticSource.dll +0 -0
  399. package/workers/vendor/csharp/_framework/supportFiles/31_System.Diagnostics.FileVersionInfo.dll +0 -0
  400. package/workers/vendor/csharp/_framework/supportFiles/32_System.Diagnostics.Process.dll +0 -0
  401. package/workers/vendor/csharp/_framework/supportFiles/33_System.Diagnostics.StackTrace.dll +0 -0
  402. package/workers/vendor/csharp/_framework/supportFiles/34_System.Diagnostics.TextWriterTraceListener.dll +0 -0
  403. package/workers/vendor/csharp/_framework/supportFiles/35_System.Diagnostics.Tools.dll +0 -0
  404. package/workers/vendor/csharp/_framework/supportFiles/36_System.Diagnostics.TraceSource.dll +0 -0
  405. package/workers/vendor/csharp/_framework/supportFiles/37_System.Diagnostics.Tracing.dll +0 -0
  406. package/workers/vendor/csharp/_framework/supportFiles/38_System.dll +0 -0
  407. package/workers/vendor/csharp/_framework/supportFiles/39_System.Drawing.dll +0 -0
  408. package/workers/vendor/csharp/_framework/supportFiles/3_Microsoft.VisualBasic.Core.dll +0 -0
  409. package/workers/vendor/csharp/_framework/supportFiles/40_System.Drawing.Primitives.dll +0 -0
  410. package/workers/vendor/csharp/_framework/supportFiles/41_System.Dynamic.Runtime.dll +0 -0
  411. package/workers/vendor/csharp/_framework/supportFiles/42_System.Formats.Asn1.dll +0 -0
  412. package/workers/vendor/csharp/_framework/supportFiles/43_System.Formats.Tar.dll +0 -0
  413. package/workers/vendor/csharp/_framework/supportFiles/44_System.Globalization.Calendars.dll +0 -0
  414. package/workers/vendor/csharp/_framework/supportFiles/45_System.Globalization.dll +0 -0
  415. package/workers/vendor/csharp/_framework/supportFiles/46_System.Globalization.Extensions.dll +0 -0
  416. package/workers/vendor/csharp/_framework/supportFiles/47_System.IO.Compression.Brotli.dll +0 -0
  417. package/workers/vendor/csharp/_framework/supportFiles/48_System.IO.Compression.dll +0 -0
  418. package/workers/vendor/csharp/_framework/supportFiles/49_System.IO.Compression.FileSystem.dll +0 -0
  419. package/workers/vendor/csharp/_framework/supportFiles/4_Microsoft.VisualBasic.dll +0 -0
  420. package/workers/vendor/csharp/_framework/supportFiles/50_System.IO.Compression.ZipFile.dll +0 -0
  421. package/workers/vendor/csharp/_framework/supportFiles/51_System.IO.dll +0 -0
  422. package/workers/vendor/csharp/_framework/supportFiles/52_System.IO.FileSystem.AccessControl.dll +0 -0
  423. package/workers/vendor/csharp/_framework/supportFiles/53_System.IO.FileSystem.dll +0 -0
  424. package/workers/vendor/csharp/_framework/supportFiles/54_System.IO.FileSystem.DriveInfo.dll +0 -0
  425. package/workers/vendor/csharp/_framework/supportFiles/55_System.IO.FileSystem.Primitives.dll +0 -0
  426. package/workers/vendor/csharp/_framework/supportFiles/56_System.IO.FileSystem.Watcher.dll +0 -0
  427. package/workers/vendor/csharp/_framework/supportFiles/57_System.IO.IsolatedStorage.dll +0 -0
  428. package/workers/vendor/csharp/_framework/supportFiles/58_System.IO.MemoryMappedFiles.dll +0 -0
  429. package/workers/vendor/csharp/_framework/supportFiles/59_System.IO.Pipelines.dll +0 -0
  430. package/workers/vendor/csharp/_framework/supportFiles/5_Microsoft.Win32.Primitives.dll +0 -0
  431. package/workers/vendor/csharp/_framework/supportFiles/60_System.IO.Pipes.AccessControl.dll +0 -0
  432. package/workers/vendor/csharp/_framework/supportFiles/61_System.IO.Pipes.dll +0 -0
  433. package/workers/vendor/csharp/_framework/supportFiles/62_System.IO.UnmanagedMemoryStream.dll +0 -0
  434. package/workers/vendor/csharp/_framework/supportFiles/63_System.Linq.AsyncEnumerable.dll +0 -0
  435. package/workers/vendor/csharp/_framework/supportFiles/64_System.Linq.dll +0 -0
  436. package/workers/vendor/csharp/_framework/supportFiles/65_System.Linq.Expressions.dll +0 -0
  437. package/workers/vendor/csharp/_framework/supportFiles/66_System.Linq.Parallel.dll +0 -0
  438. package/workers/vendor/csharp/_framework/supportFiles/67_System.Linq.Queryable.dll +0 -0
  439. package/workers/vendor/csharp/_framework/supportFiles/68_System.Memory.dll +0 -0
  440. package/workers/vendor/csharp/_framework/supportFiles/69_System.Net.dll +0 -0
  441. package/workers/vendor/csharp/_framework/supportFiles/6_Microsoft.Win32.Registry.dll +0 -0
  442. package/workers/vendor/csharp/_framework/supportFiles/70_System.Net.Http.dll +0 -0
  443. package/workers/vendor/csharp/_framework/supportFiles/71_System.Net.Http.Json.dll +0 -0
  444. package/workers/vendor/csharp/_framework/supportFiles/72_System.Net.HttpListener.dll +0 -0
  445. package/workers/vendor/csharp/_framework/supportFiles/73_System.Net.Mail.dll +0 -0
  446. package/workers/vendor/csharp/_framework/supportFiles/74_System.Net.NameResolution.dll +0 -0
  447. package/workers/vendor/csharp/_framework/supportFiles/75_System.Net.NetworkInformation.dll +0 -0
  448. package/workers/vendor/csharp/_framework/supportFiles/76_System.Net.Ping.dll +0 -0
  449. package/workers/vendor/csharp/_framework/supportFiles/77_System.Net.Primitives.dll +0 -0
  450. package/workers/vendor/csharp/_framework/supportFiles/78_System.Net.Quic.dll +0 -0
  451. package/workers/vendor/csharp/_framework/supportFiles/79_System.Net.Requests.dll +0 -0
  452. package/workers/vendor/csharp/_framework/supportFiles/7_mscorlib.dll +0 -0
  453. package/workers/vendor/csharp/_framework/supportFiles/80_System.Net.Security.dll +0 -0
  454. package/workers/vendor/csharp/_framework/supportFiles/81_System.Net.ServerSentEvents.dll +0 -0
  455. package/workers/vendor/csharp/_framework/supportFiles/82_System.Net.ServicePoint.dll +0 -0
  456. package/workers/vendor/csharp/_framework/supportFiles/83_System.Net.Sockets.dll +0 -0
  457. package/workers/vendor/csharp/_framework/supportFiles/84_System.Net.WebClient.dll +0 -0
  458. package/workers/vendor/csharp/_framework/supportFiles/85_System.Net.WebHeaderCollection.dll +0 -0
  459. package/workers/vendor/csharp/_framework/supportFiles/86_System.Net.WebProxy.dll +0 -0
  460. package/workers/vendor/csharp/_framework/supportFiles/87_System.Net.WebSockets.Client.dll +0 -0
  461. package/workers/vendor/csharp/_framework/supportFiles/88_System.Net.WebSockets.dll +0 -0
  462. package/workers/vendor/csharp/_framework/supportFiles/89_System.Numerics.dll +0 -0
  463. package/workers/vendor/csharp/_framework/supportFiles/8_netstandard.dll +0 -0
  464. package/workers/vendor/csharp/_framework/supportFiles/90_System.Numerics.Vectors.dll +0 -0
  465. package/workers/vendor/csharp/_framework/supportFiles/91_System.ObjectModel.dll +0 -0
  466. package/workers/vendor/csharp/_framework/supportFiles/92_System.Private.CoreLib.dll +0 -0
  467. package/workers/vendor/csharp/_framework/supportFiles/93_System.Private.DataContractSerialization.dll +0 -0
  468. package/workers/vendor/csharp/_framework/supportFiles/94_System.Private.Uri.dll +0 -0
  469. package/workers/vendor/csharp/_framework/supportFiles/95_System.Private.Xml.dll +0 -0
  470. package/workers/vendor/csharp/_framework/supportFiles/96_System.Private.Xml.Linq.dll +0 -0
  471. package/workers/vendor/csharp/_framework/supportFiles/97_System.Reflection.DispatchProxy.dll +0 -0
  472. package/workers/vendor/csharp/_framework/supportFiles/98_System.Reflection.dll +0 -0
  473. package/workers/vendor/csharp/_framework/supportFiles/99_System.Reflection.Emit.dll +0 -0
  474. package/workers/vendor/csharp/_framework/supportFiles/9_System.AppContext.dll +0 -0
  475. package/workers/vendor/csharp/_framework/tr/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  476. package/workers/vendor/csharp/_framework/tr/Microsoft.CodeAnalysis.resources.wasm +0 -0
  477. package/workers/vendor/csharp/_framework/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  478. package/workers/vendor/csharp/_framework/zh-Hans/Microsoft.CodeAnalysis.resources.wasm +0 -0
  479. package/workers/vendor/csharp/_framework/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  480. package/workers/vendor/csharp/_framework/zh-Hant/Microsoft.CodeAnalysis.resources.wasm +0 -0
  481. package/workers/vendor/csharp/main.mjs +5 -0
  482. package/workers/vendor/csharp/package.json +1 -0
  483. package/workers/vendor/java-browser-helper.jar +0 -0
  484. package/workers/vendor/java-rewriter.jar +0 -0
  485. package/workers/vendor/javascript-libraries.js +10106 -0
  486. package/dist/runtime-types-89nchXlY.d.cts +0 -89
  487. package/dist/runtime-types-CCQ-ZLc9.d.ts +0 -89
  488. package/dist/types-zyvpJKCi.d.cts +0 -100
  489. package/dist/types-zyvpJKCi.d.ts +0 -100
  490. package/workers/java/java-source-augmentations.cjs +0 -242
  491. package/workers/java/src/spike/user/TraceHooks.java +0 -619
  492. package/workers/vendor/java-browser-spike-helper.jar +0 -0
  493. package/workers/vendor/java-practice-rewriter.jar +0 -0
  494. package/workers/vendor/java-rewrite-bridge.jar +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../packages/harness-python/src/index.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"],"sourcesContent":["export * from './python-harness';\nexport * from './python-harness-template';\nexport * from './generated/python-harness-snippets';\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"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../packages/harness-python/src/index.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-browser/src/runtime-capability-guards.ts","../packages/harness-browser/src/runtime-profiles.ts","../packages/harness-browser/src/python-runtime-client.ts","../packages/harness-core/src/runtime-trace.ts","../packages/harness-browser/src/runtime-diagnostics.ts","../packages/harness-browser/src/pyodide-worker-client.ts"],"sourcesContent":["export * from './python-harness';\nexport * from './python-harness-template';\nexport * from './generated/python-harness-snippets';\nexport { createPythonRuntimeClient } from '../../harness-browser/src/python-runtime-client';\nexport {\n PythonWorkerClient,\n PyodideWorkerClient,\n type ExecutionStyle,\n type PythonWorkerClientOptions,\n type PyodideWorkerClientOptions,\n} from '../../harness-browser/src/pyodide-worker-client';\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","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 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","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","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","/**\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"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACSO,SAAS,gBAAgB,OAAM;AAAC,MAAG,UAAQ,QAAM,UAAQ,QAAO;AAAC,WAAM;AAAA,EAAM;AAAC,MAAG,OAAO,UAAQ,WAAU;AAAC,WAAO,QAAM,SAAO;AAAA,EAAO;AAAC,MAAG,OAAO,UAAQ,UAAS;AAAC,WAAO,OAAO,KAAK;AAAA,EAAC;AAAC,MAAG,OAAO,UAAQ,UAAS;AAAC,WAAO,KAAK,UAAU,KAAK;AAAA,EAAC;AAAC,MAAG,MAAM,QAAQ,KAAK,GAAE;AAAC,WAAM,MAAI,MAAM,IAAI,eAAe,EAAE,KAAK,IAAI,IAAE;AAAA,EAAG;AAAC,MAAG,OAAO,UAAQ,UAAS;AAAC,UAAM,UAAQ,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,GAAE,CAAC,MAAI,GAAG,KAAK,UAAU,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI;AAAE,WAAM,MAAI,UAAQ;AAAA,EAAG;AAAC,SAAO,KAAK,UAAU,KAAK;AAAC;AAEvf,IAAM,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEjC,IAAM,4BAA4B;AAElC,IAAM,kCAAkC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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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","names":["pending"]}