self-bench 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +256 -0
  3. package/dist/activities.d.ts +41 -0
  4. package/dist/activities.d.ts.map +1 -0
  5. package/dist/activities.js +823 -0
  6. package/dist/activities.js.map +1 -0
  7. package/dist/agent-smoke-main.d.ts +3 -0
  8. package/dist/agent-smoke-main.d.ts.map +1 -0
  9. package/dist/agent-smoke-main.js +54 -0
  10. package/dist/agent-smoke-main.js.map +1 -0
  11. package/dist/agent-smoke.d.ts +17 -0
  12. package/dist/agent-smoke.d.ts.map +1 -0
  13. package/dist/agent-smoke.js +98 -0
  14. package/dist/agent-smoke.js.map +1 -0
  15. package/dist/api-main.d.ts +2 -0
  16. package/dist/api-main.d.ts.map +1 -0
  17. package/dist/api-main.js +11 -0
  18. package/dist/api-main.js.map +1 -0
  19. package/dist/api.d.ts +3 -0
  20. package/dist/api.d.ts.map +1 -0
  21. package/dist/api.js +212 -0
  22. package/dist/api.js.map +1 -0
  23. package/dist/artifacts.d.ts +32 -0
  24. package/dist/artifacts.d.ts.map +1 -0
  25. package/dist/artifacts.js +311 -0
  26. package/dist/artifacts.js.map +1 -0
  27. package/dist/audit.d.ts +12 -0
  28. package/dist/audit.d.ts.map +1 -0
  29. package/dist/audit.js +69 -0
  30. package/dist/audit.js.map +1 -0
  31. package/dist/cli.d.ts +3 -0
  32. package/dist/cli.d.ts.map +1 -0
  33. package/dist/cli.js +297 -0
  34. package/dist/cli.js.map +1 -0
  35. package/dist/codex-review.d.ts +40 -0
  36. package/dist/codex-review.d.ts.map +1 -0
  37. package/dist/codex-review.js +189 -0
  38. package/dist/codex-review.js.map +1 -0
  39. package/dist/config.d.ts +35 -0
  40. package/dist/config.d.ts.map +1 -0
  41. package/dist/config.js +78 -0
  42. package/dist/config.js.map +1 -0
  43. package/dist/contracts.d.ts +223 -0
  44. package/dist/contracts.d.ts.map +1 -0
  45. package/dist/contracts.js +103 -0
  46. package/dist/contracts.js.map +1 -0
  47. package/dist/coupling.d.ts +45 -0
  48. package/dist/coupling.d.ts.map +1 -0
  49. package/dist/coupling.js +159 -0
  50. package/dist/coupling.js.map +1 -0
  51. package/dist/docker-executor.d.ts +11 -0
  52. package/dist/docker-executor.d.ts.map +1 -0
  53. package/dist/docker-executor.js +103 -0
  54. package/dist/docker-executor.js.map +1 -0
  55. package/dist/eval-main.d.ts +3 -0
  56. package/dist/eval-main.d.ts.map +1 -0
  57. package/dist/eval-main.js +80 -0
  58. package/dist/eval-main.js.map +1 -0
  59. package/dist/evaluate.d.ts +24 -0
  60. package/dist/evaluate.d.ts.map +1 -0
  61. package/dist/evaluate.js +208 -0
  62. package/dist/evaluate.js.map +1 -0
  63. package/dist/extensions/authoring.d.ts +3 -0
  64. package/dist/extensions/authoring.d.ts.map +1 -0
  65. package/dist/extensions/authoring.js +71 -0
  66. package/dist/extensions/authoring.js.map +1 -0
  67. package/dist/extensions/discovery.d.ts +3 -0
  68. package/dist/extensions/discovery.d.ts.map +1 -0
  69. package/dist/extensions/discovery.js +51 -0
  70. package/dist/extensions/discovery.js.map +1 -0
  71. package/dist/extensions/review.d.ts +3 -0
  72. package/dist/extensions/review.d.ts.map +1 -0
  73. package/dist/extensions/review.js +44 -0
  74. package/dist/extensions/review.js.map +1 -0
  75. package/dist/github.d.ts +3 -0
  76. package/dist/github.d.ts.map +1 -0
  77. package/dist/github.js +19 -0
  78. package/dist/github.js.map +1 -0
  79. package/dist/harbor-results.d.ts +14 -0
  80. package/dist/harbor-results.d.ts.map +1 -0
  81. package/dist/harbor-results.js +105 -0
  82. package/dist/harbor-results.js.map +1 -0
  83. package/dist/harbor-task.d.ts +12 -0
  84. package/dist/harbor-task.d.ts.map +1 -0
  85. package/dist/harbor-task.js +462 -0
  86. package/dist/harbor-task.js.map +1 -0
  87. package/dist/hash.d.ts +2 -0
  88. package/dist/hash.d.ts.map +1 -0
  89. package/dist/hash.js +5 -0
  90. package/dist/hash.js.map +1 -0
  91. package/dist/modal-auth.d.ts +2 -0
  92. package/dist/modal-auth.d.ts.map +1 -0
  93. package/dist/modal-auth.js +9 -0
  94. package/dist/modal-auth.js.map +1 -0
  95. package/dist/modal-executor.d.ts +12 -0
  96. package/dist/modal-executor.d.ts.map +1 -0
  97. package/dist/modal-executor.js +152 -0
  98. package/dist/modal-executor.js.map +1 -0
  99. package/dist/parallel.d.ts +2 -0
  100. package/dist/parallel.d.ts.map +1 -0
  101. package/dist/parallel.js +19 -0
  102. package/dist/parallel.js.map +1 -0
  103. package/dist/process.d.ts +27 -0
  104. package/dist/process.d.ts.map +1 -0
  105. package/dist/process.js +136 -0
  106. package/dist/process.js.map +1 -0
  107. package/dist/provenance.d.ts +22 -0
  108. package/dist/provenance.d.ts.map +1 -0
  109. package/dist/provenance.js +361 -0
  110. package/dist/provenance.js.map +1 -0
  111. package/dist/reaudit-main.d.ts +3 -0
  112. package/dist/reaudit-main.d.ts.map +1 -0
  113. package/dist/reaudit-main.js +155 -0
  114. package/dist/reaudit-main.js.map +1 -0
  115. package/dist/repair-main.d.ts +3 -0
  116. package/dist/repair-main.d.ts.map +1 -0
  117. package/dist/repair-main.js +168 -0
  118. package/dist/repair-main.js.map +1 -0
  119. package/dist/repair.d.ts +9 -0
  120. package/dist/repair.d.ts.map +1 -0
  121. package/dist/repair.js +46 -0
  122. package/dist/repair.js.map +1 -0
  123. package/dist/review/assets/abap-BdImnpbu.js +1 -0
  124. package/dist/review/assets/actionscript-3-B3316cI-.js +1 -0
  125. package/dist/review/assets/ada-bCR0ucgS.js +1 -0
  126. package/dist/review/assets/ahk-CsyLZFj1.js +1 -0
  127. package/dist/review/assets/ahk2-8Zs4aa1G.js +1 -0
  128. package/dist/review/assets/andromeeda-C4gqWexZ.js +1 -0
  129. package/dist/review/assets/angular-html-DA-rfuFy.js +1 -0
  130. package/dist/review/assets/angular-ts-BrjP3tb8.js +1 -0
  131. package/dist/review/assets/apache-Pmp26Uib.js +1 -0
  132. package/dist/review/assets/apex-DhZFqWV2.js +1 -0
  133. package/dist/review/assets/apl-CORt7UWP.js +1 -0
  134. package/dist/review/assets/applescript-Co6uUVPk.js +1 -0
  135. package/dist/review/assets/ara-BRHolxvo.js +1 -0
  136. package/dist/review/assets/asciidoc-CSVQ5wI8.js +1 -0
  137. package/dist/review/assets/asm-D_Q5rh1f.js +1 -0
  138. package/dist/review/assets/astro-HNnZUWAn.js +1 -0
  139. package/dist/review/assets/aurora-x-D-2ljcwZ.js +1 -0
  140. package/dist/review/assets/awk-DMzUqQB5.js +1 -0
  141. package/dist/review/assets/ayu-dark-DYE7WIF3.js +1 -0
  142. package/dist/review/assets/ayu-light-BA47KaF1.js +1 -0
  143. package/dist/review/assets/ayu-mirage-32ctXXKs.js +1 -0
  144. package/dist/review/assets/ballerina-BFfxhgS-.js +1 -0
  145. package/dist/review/assets/bat-CickPsom.js +1 -0
  146. package/dist/review/assets/beancount-k_qm7-4y.js +1 -0
  147. package/dist/review/assets/berry-uYugtg8r.js +1 -0
  148. package/dist/review/assets/bibtex-CHM0blh-.js +1 -0
  149. package/dist/review/assets/bicep-Bmn6On1c.js +1 -0
  150. package/dist/review/assets/bird2-Bx8U0n9b.js +1 -0
  151. package/dist/review/assets/blade-2xfisSek.js +1 -0
  152. package/dist/review/assets/bsl-DlhNcFeZ.js +1 -0
  153. package/dist/review/assets/c-BIGW1oBm.js +1 -0
  154. package/dist/review/assets/c3-Dp5svz6Z.js +1 -0
  155. package/dist/review/assets/cadence-Bv_4Rxtq.js +1 -0
  156. package/dist/review/assets/cairo-KRGpt6FW.js +1 -0
  157. package/dist/review/assets/catppuccin-frappe-CZL1YF0i.js +1 -0
  158. package/dist/review/assets/catppuccin-latte-DH-8KZSZ.js +1 -0
  159. package/dist/review/assets/catppuccin-macchiato-B7yYVSCf.js +1 -0
  160. package/dist/review/assets/catppuccin-mocha-Ct7hS0mc.js +1 -0
  161. package/dist/review/assets/chapel-DTp_pixX.js +1 -0
  162. package/dist/review/assets/clarity-Dn5IMItf.js +1 -0
  163. package/dist/review/assets/clojure-P80f7IUj.js +1 -0
  164. package/dist/review/assets/cmake-D1j8_8rp.js +1 -0
  165. package/dist/review/assets/cobol-nBiQ_Alo.js +1 -0
  166. package/dist/review/assets/codeowners-Bp6g37R7.js +1 -0
  167. package/dist/review/assets/codeql-DsOJ9woJ.js +1 -0
  168. package/dist/review/assets/coffee-Ch7k5sss.js +1 -0
  169. package/dist/review/assets/common-lisp-Cg-RD9OK.js +1 -0
  170. package/dist/review/assets/coq-C7JzOVbR.js +1 -0
  171. package/dist/review/assets/cpp-BMRokrvK.js +1 -0
  172. package/dist/review/assets/crystal-DGywbUpC.js +1 -0
  173. package/dist/review/assets/csharp-DSvCPggb.js +1 -0
  174. package/dist/review/assets/css-CLj8gQPS.js +1 -0
  175. package/dist/review/assets/csv-fuZLfV_i.js +1 -0
  176. package/dist/review/assets/cue-D82EKSYY.js +1 -0
  177. package/dist/review/assets/cypher-COkxafJQ.js +1 -0
  178. package/dist/review/assets/d-85-TOEBH.js +1 -0
  179. package/dist/review/assets/dark-plus-C3mMm8J8.js +1 -0
  180. package/dist/review/assets/dart-bE4Kk8sk.js +1 -0
  181. package/dist/review/assets/dax-CEL-wOlO.js +1 -0
  182. package/dist/review/assets/desktop-BmXAJ9_W.js +1 -0
  183. package/dist/review/assets/diff-D97Zzqfu.js +1 -0
  184. package/dist/review/assets/docker-BcOcwvcX.js +1 -0
  185. package/dist/review/assets/dotenv-Da5cRb03.js +1 -0
  186. package/dist/review/assets/dracula-BzJJZx-M.js +1 -0
  187. package/dist/review/assets/dracula-soft-BXkSAIEj.js +1 -0
  188. package/dist/review/assets/dream-maker-BtqSS_iP.js +1 -0
  189. package/dist/review/assets/edge-FbVlp4U3.js +1 -0
  190. package/dist/review/assets/elixir-CkH2-t6x.js +1 -0
  191. package/dist/review/assets/elm-DbKCFpqz.js +1 -0
  192. package/dist/review/assets/emacs-lisp-C_m_b--Z.js +1 -0
  193. package/dist/review/assets/erb-DXfck5VN.js +1 -0
  194. package/dist/review/assets/erlang-DsQrWhSR.js +1 -0
  195. package/dist/review/assets/everforest-dark-BgDCqdQA.js +1 -0
  196. package/dist/review/assets/everforest-light-C8M2exoo.js +1 -0
  197. package/dist/review/assets/fennel-BYunw83y.js +1 -0
  198. package/dist/review/assets/fish-BvzEVeQv.js +1 -0
  199. package/dist/review/assets/fluent-C4IJs8-o.js +1 -0
  200. package/dist/review/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
  201. package/dist/review/assets/fortran-free-form-BxgE0vQu.js +1 -0
  202. package/dist/review/assets/fsharp-CXgrBDvD.js +1 -0
  203. package/dist/review/assets/gdresource-TyuKm33G.js +1 -0
  204. package/dist/review/assets/gdscript-DqcFQ5yU.js +1 -0
  205. package/dist/review/assets/gdshader-DkwncUOv.js +1 -0
  206. package/dist/review/assets/genie-D0YGMca9.js +1 -0
  207. package/dist/review/assets/gherkin-DyxjwDmM.js +1 -0
  208. package/dist/review/assets/git-commit-F4YmCXRG.js +1 -0
  209. package/dist/review/assets/git-rebase-r7XF79zn.js +1 -0
  210. package/dist/review/assets/github-dark-DHJKELXO.js +1 -0
  211. package/dist/review/assets/github-dark-default-Cuk6v7N8.js +1 -0
  212. package/dist/review/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
  213. package/dist/review/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
  214. package/dist/review/assets/github-light-DAi9KRSo.js +1 -0
  215. package/dist/review/assets/github-light-default-D7oLnXFd.js +1 -0
  216. package/dist/review/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
  217. package/dist/review/assets/gleam-BspZqrRM.js +1 -0
  218. package/dist/review/assets/glimmer-js-ByusRIyA.js +1 -0
  219. package/dist/review/assets/glimmer-ts-BfAWNZQY.js +1 -0
  220. package/dist/review/assets/glsl-DplSGwfg.js +1 -0
  221. package/dist/review/assets/gn-n2N0HUVH.js +1 -0
  222. package/dist/review/assets/gnuplot-DdkO51Og.js +1 -0
  223. package/dist/review/assets/go-C27-OAKa.js +1 -0
  224. package/dist/review/assets/graphql-ChdNCCLP.js +1 -0
  225. package/dist/review/assets/groovy-gcz8RCvz.js +1 -0
  226. package/dist/review/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
  227. package/dist/review/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
  228. package/dist/review/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
  229. package/dist/review/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
  230. package/dist/review/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
  231. package/dist/review/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
  232. package/dist/review/assets/hack-BWmVpMyf.js +1 -0
  233. package/dist/review/assets/haml-D5jkg6IW.js +1 -0
  234. package/dist/review/assets/handlebars-BpdQsYii.js +1 -0
  235. package/dist/review/assets/haskell-Df6bDoY_.js +1 -0
  236. package/dist/review/assets/haxe-CfZj7gIn.js +1 -0
  237. package/dist/review/assets/hcl-BWvSN4gD.js +1 -0
  238. package/dist/review/assets/hjson-D5-asLiD.js +1 -0
  239. package/dist/review/assets/hlsl-D3lLCCz7.js +1 -0
  240. package/dist/review/assets/horizon-BUw7H-hv.js +1 -0
  241. package/dist/review/assets/horizon-bright-CUuTKBJd.js +1 -0
  242. package/dist/review/assets/houston-DnULxvSX.js +1 -0
  243. package/dist/review/assets/html-derivative-DlHx6ybY.js +1 -0
  244. package/dist/review/assets/html-pp8916En.js +1 -0
  245. package/dist/review/assets/http-jrhK8wxY.js +1 -0
  246. package/dist/review/assets/hurl-irOxFIW8.js +1 -0
  247. package/dist/review/assets/hxml-2-FPmUDs.js +1 -0
  248. package/dist/review/assets/hy-DFXneXwc.js +1 -0
  249. package/dist/review/assets/imba-DGztddWO.js +1 -0
  250. package/dist/review/assets/index-Dq-6DFzI.css +1 -0
  251. package/dist/review/assets/index-DurW_RD7.js +1567 -0
  252. package/dist/review/assets/ini-BEwlwnbL.js +1 -0
  253. package/dist/review/assets/java-CylS5w8V.js +1 -0
  254. package/dist/review/assets/javascript-wDzz0qaB.js +1 -0
  255. package/dist/review/assets/jinja-f2NsQr07.js +1 -0
  256. package/dist/review/assets/jison-wvAkD_A8.js +1 -0
  257. package/dist/review/assets/json-Cp-IABpG.js +1 -0
  258. package/dist/review/assets/json5-C9tS-k6U.js +1 -0
  259. package/dist/review/assets/jsonc-Des-eS-w.js +1 -0
  260. package/dist/review/assets/jsonl-DcaNXYhu.js +1 -0
  261. package/dist/review/assets/jsonnet-DFQXde-d.js +1 -0
  262. package/dist/review/assets/jssm-C2t-YnRu.js +1 -0
  263. package/dist/review/assets/jsx-g9-lgVsj.js +1 -0
  264. package/dist/review/assets/julia-5Bft2YPA.js +1 -0
  265. package/dist/review/assets/just-Cwhn7H3k.js +1 -0
  266. package/dist/review/assets/kanagawa-dragon-BuwD2xS4.js +1 -0
  267. package/dist/review/assets/kanagawa-lotus-C3DzagqV.js +1 -0
  268. package/dist/review/assets/kanagawa-wave-DFGoQZhC.js +1 -0
  269. package/dist/review/assets/kdl-DV7GczEv.js +1 -0
  270. package/dist/review/assets/kotlin-BdnUsdx6.js +1 -0
  271. package/dist/review/assets/kusto-wEQ09or8.js +1 -0
  272. package/dist/review/assets/laserwave-DUszq2jm.js +1 -0
  273. package/dist/review/assets/latex-D5pSuvFb.js +1 -0
  274. package/dist/review/assets/lean-BZvkOJ9d.js +1 -0
  275. package/dist/review/assets/less-B1dDrJ26.js +1 -0
  276. package/dist/review/assets/light-plus-B7mTdjB0.js +1 -0
  277. package/dist/review/assets/liquid-C0sCDyMI.js +1 -0
  278. package/dist/review/assets/llvm-BZoOZj88.js +1 -0
  279. package/dist/review/assets/log-2UxHyX5q.js +1 -0
  280. package/dist/review/assets/logo-BtOb2qkB.js +1 -0
  281. package/dist/review/assets/lua-BaeVxFsk.js +1 -0
  282. package/dist/review/assets/luau-BnpPk5vE.js +1 -0
  283. package/dist/review/assets/make-CHLpvVh8.js +1 -0
  284. package/dist/review/assets/markdown-Cvjx9yec.js +1 -0
  285. package/dist/review/assets/marko-DjSrsDqO.js +1 -0
  286. package/dist/review/assets/material-theme-D5KoaKCx.js +1 -0
  287. package/dist/review/assets/material-theme-darker-BfHTSMKl.js +1 -0
  288. package/dist/review/assets/material-theme-lighter-B0m2ddpp.js +1 -0
  289. package/dist/review/assets/material-theme-ocean-CyktbL80.js +1 -0
  290. package/dist/review/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
  291. package/dist/review/assets/matlab-D7o27uSR.js +1 -0
  292. package/dist/review/assets/mdc-D1_yUvq7.js +1 -0
  293. package/dist/review/assets/mdx-Cmh6b_Ma.js +1 -0
  294. package/dist/review/assets/mermaid-CQcHuHx7.js +1 -0
  295. package/dist/review/assets/min-dark-CafNBF8u.js +1 -0
  296. package/dist/review/assets/min-light-CTRr51gU.js +1 -0
  297. package/dist/review/assets/mipsasm-CKIfxQSi.js +1 -0
  298. package/dist/review/assets/mojo-Blby8dQK.js +1 -0
  299. package/dist/review/assets/monokai-BRVnQi9A.js +1 -0
  300. package/dist/review/assets/moonbit-CHtswR0a.js +1 -0
  301. package/dist/review/assets/move-el3G9tDJ.js +1 -0
  302. package/dist/review/assets/narrat-DRg8JJMk.js +1 -0
  303. package/dist/review/assets/nextflow-C-mBbutL.js +1 -0
  304. package/dist/review/assets/nextflow-groovy-vE_lwT2v.js +1 -0
  305. package/dist/review/assets/nginx-BpAMiNFr.js +1 -0
  306. package/dist/review/assets/night-owl-C39BiMTA.js +1 -0
  307. package/dist/review/assets/night-owl-light-CMTm3GFP.js +1 -0
  308. package/dist/review/assets/nim-BIad80T-.js +1 -0
  309. package/dist/review/assets/nix-CwoSXNpI.js +1 -0
  310. package/dist/review/assets/nord-Ddv68eIx.js +1 -0
  311. package/dist/review/assets/nsis-BlV79W_Q.js +1 -0
  312. package/dist/review/assets/nushell-D3jzshHO.js +1 -0
  313. package/dist/review/assets/objective-c-DXmwc3jG.js +1 -0
  314. package/dist/review/assets/objective-cpp-CLxacb5B.js +1 -0
  315. package/dist/review/assets/ocaml-C0hk2d4L.js +1 -0
  316. package/dist/review/assets/odin-BBf5iR-q.js +1 -0
  317. package/dist/review/assets/one-dark-pro-DVMEJ2y_.js +1 -0
  318. package/dist/review/assets/one-light-C3Wv6jpd.js +1 -0
  319. package/dist/review/assets/openscad-C4EeE6gA.js +1 -0
  320. package/dist/review/assets/org-DM6o9KBp.js +1 -0
  321. package/dist/review/assets/pascal-D93ZcfNL.js +1 -0
  322. package/dist/review/assets/perl-B9cMNwum.js +1 -0
  323. package/dist/review/assets/php-Csjmro_R.js +1 -0
  324. package/dist/review/assets/pierre-dark-CyvmCCZW.js +1 -0
  325. package/dist/review/assets/pierre-dark-protanopia-deuteranopia-Rgc0TwpF.js +1 -0
  326. package/dist/review/assets/pierre-dark-soft-BHGpRqa4.js +1 -0
  327. package/dist/review/assets/pierre-dark-tritanopia-Beq2gCRQ.js +1 -0
  328. package/dist/review/assets/pierre-dark-vibrant-BWBVywrn.js +1 -0
  329. package/dist/review/assets/pierre-light-480U9XYS.js +1 -0
  330. package/dist/review/assets/pierre-light-protanopia-deuteranopia-CaVOBURG.js +1 -0
  331. package/dist/review/assets/pierre-light-soft-CVdyfjmI.js +1 -0
  332. package/dist/review/assets/pierre-light-tritanopia-B4_gpKOM.js +1 -0
  333. package/dist/review/assets/pierre-light-vibrant-DdTDNdfJ.js +1 -0
  334. package/dist/review/assets/pkl-u5AG7uiY.js +1 -0
  335. package/dist/review/assets/plastic-3e1v2bzS.js +1 -0
  336. package/dist/review/assets/plsql-ChMvpjG-.js +1 -0
  337. package/dist/review/assets/po-BTJTHyun.js +1 -0
  338. package/dist/review/assets/poimandres-CS3Unz2-.js +1 -0
  339. package/dist/review/assets/polar-C0HS_06l.js +1 -0
  340. package/dist/review/assets/postcss-CXtECtnM.js +1 -0
  341. package/dist/review/assets/powerquery-CEu0bR-o.js +1 -0
  342. package/dist/review/assets/powershell-BmBUJMz7.js +1 -0
  343. package/dist/review/assets/prisma-Vru482bI.js +1 -0
  344. package/dist/review/assets/prolog-CbFg5uaA.js +1 -0
  345. package/dist/review/assets/proto-C7zT0LnQ.js +1 -0
  346. package/dist/review/assets/pug-DKIMFp6K.js +1 -0
  347. package/dist/review/assets/puppet-BMWR74SV.js +1 -0
  348. package/dist/review/assets/purescript-CklMAg4u.js +1 -0
  349. package/dist/review/assets/python-B6aJPvgy.js +1 -0
  350. package/dist/review/assets/qml-3beO22l8.js +1 -0
  351. package/dist/review/assets/qmldir-C8lEn-DE.js +1 -0
  352. package/dist/review/assets/qss-IeuSbFQv.js +1 -0
  353. package/dist/review/assets/r-Cf5RLm7j.js +1 -0
  354. package/dist/review/assets/racket-BqYA7rlc.js +1 -0
  355. package/dist/review/assets/raku-DXvB9xmW.js +1 -0
  356. package/dist/review/assets/razor-BjBPvh-w.js +1 -0
  357. package/dist/review/assets/rbs-CpoqiR4B.js +1 -0
  358. package/dist/review/assets/red-hvxz__6c.js +1 -0
  359. package/dist/review/assets/reg-C-SQnVFl.js +1 -0
  360. package/dist/review/assets/regexp-CDVJQ6XC.js +1 -0
  361. package/dist/review/assets/rel-C3B-1QV4.js +1 -0
  362. package/dist/review/assets/riscv-BM1_JUlF.js +1 -0
  363. package/dist/review/assets/ron-D8l8udqQ.js +1 -0
  364. package/dist/review/assets/rose-pine-5qJOZa0Y.js +1 -0
  365. package/dist/review/assets/rose-pine-dawn-zx0QlTCp.js +1 -0
  366. package/dist/review/assets/rose-pine-moon-C9pEdX9L.js +1 -0
  367. package/dist/review/assets/rosmsg-BJDFO7_C.js +1 -0
  368. package/dist/review/assets/rst-bs7f0vWN.js +1 -0
  369. package/dist/review/assets/ruby-C0TQ7zu5.js +1 -0
  370. package/dist/review/assets/rust-B1yitclQ.js +1 -0
  371. package/dist/review/assets/sas-DEy46yEz.js +1 -0
  372. package/dist/review/assets/sass-Cj5Yp3dK.js +1 -0
  373. package/dist/review/assets/scala-CqE71os6.js +1 -0
  374. package/dist/review/assets/scheme-C98Dy4si.js +1 -0
  375. package/dist/review/assets/scss-D5BDwBP9.js +1 -0
  376. package/dist/review/assets/sdbl-DVxCFoDh.js +1 -0
  377. package/dist/review/assets/shaderlab-Dg9Lc6iA.js +1 -0
  378. package/dist/review/assets/shellscript-Yzrsuije.js +1 -0
  379. package/dist/review/assets/shellsession-BADoaaVG.js +1 -0
  380. package/dist/review/assets/slack-dark-BthQWCQV.js +1 -0
  381. package/dist/review/assets/slack-ochin-DqwNpetd.js +1 -0
  382. package/dist/review/assets/smalltalk-BOQMe2GC.js +1 -0
  383. package/dist/review/assets/smithy-cds9vsN8.js +1 -0
  384. package/dist/review/assets/snazzy-light-Bw305WKR.js +1 -0
  385. package/dist/review/assets/solarized-dark-CpvCGNkr.js +1 -0
  386. package/dist/review/assets/solarized-light-Dlz6yCKv.js +1 -0
  387. package/dist/review/assets/solidity-DijEV5ha.js +1 -0
  388. package/dist/review/assets/soy-8wufbnw4.js +1 -0
  389. package/dist/review/assets/sparql-rVzFXLq3.js +1 -0
  390. package/dist/review/assets/splunk-BtCnVYZw.js +1 -0
  391. package/dist/review/assets/sql-CRqJ_cUM.js +1 -0
  392. package/dist/review/assets/ssh-config-_ykCGR6B.js +1 -0
  393. package/dist/review/assets/stata-DI20mbqo.js +1 -0
  394. package/dist/review/assets/stylus-BEDo0Tqx.js +1 -0
  395. package/dist/review/assets/surrealql-Cjom0U5J.js +1 -0
  396. package/dist/review/assets/svelte-Cy7k_4gC.js +1 -0
  397. package/dist/review/assets/swift-C2oV4EkX.js +1 -0
  398. package/dist/review/assets/synthwave-84-CbfX1IO0.js +1 -0
  399. package/dist/review/assets/system-verilog-0hqHdDBg.js +1 -0
  400. package/dist/review/assets/systemd-4A_iFExJ.js +1 -0
  401. package/dist/review/assets/talonscript-CkByrt1z.js +1 -0
  402. package/dist/review/assets/tasl-QIJgUcNo.js +1 -0
  403. package/dist/review/assets/tcl-dwOrl1Do.js +1 -0
  404. package/dist/review/assets/templ-DhtptRzy.js +1 -0
  405. package/dist/review/assets/terraform-BETggiCN.js +1 -0
  406. package/dist/review/assets/tex-D96PA37w.js +1 -0
  407. package/dist/review/assets/tokyo-night-hegEt444.js +1 -0
  408. package/dist/review/assets/toml-vGWfd6FD.js +1 -0
  409. package/dist/review/assets/ts-tags-D351s5mN.js +1 -0
  410. package/dist/review/assets/tsv-B_m7g4N7.js +1 -0
  411. package/dist/review/assets/tsx-COt5Ahok.js +1 -0
  412. package/dist/review/assets/turtle-BsS91CYL.js +1 -0
  413. package/dist/review/assets/twig-27uCiNez.js +1 -0
  414. package/dist/review/assets/typescript-BPQ3VLAy.js +1 -0
  415. package/dist/review/assets/typespec-CAFt9gP4.js +1 -0
  416. package/dist/review/assets/typst-DHCkPAjA.js +1 -0
  417. package/dist/review/assets/v-BGw2Nkan.js +1 -0
  418. package/dist/review/assets/vala-CsfeWuGM.js +1 -0
  419. package/dist/review/assets/vb-Cu-pLBUe.js +1 -0
  420. package/dist/review/assets/verilog-nZwndyjY.js +1 -0
  421. package/dist/review/assets/vesper-DRje8inN.js +1 -0
  422. package/dist/review/assets/vhdl-CeAyd5Ju.js +1 -0
  423. package/dist/review/assets/viml-CJc9bBzg.js +1 -0
  424. package/dist/review/assets/vitesse-black-Bkuqu6BP.js +1 -0
  425. package/dist/review/assets/vitesse-dark-D0r3Knsf.js +1 -0
  426. package/dist/review/assets/vitesse-light-CVO1_9PV.js +1 -0
  427. package/dist/review/assets/vue-BqiEGhQt.js +1 -0
  428. package/dist/review/assets/vue-html-AaS7Mt5G.js +1 -0
  429. package/dist/review/assets/vue-vine-BoDAl6tE.js +1 -0
  430. package/dist/review/assets/vyper-CDx5xZoG.js +1 -0
  431. package/dist/review/assets/wasm-CG6Dc4jp.js +1 -0
  432. package/dist/review/assets/wasm-MzD3tlZU.js +1 -0
  433. package/dist/review/assets/wenyan-BV7otONQ.js +1 -0
  434. package/dist/review/assets/wgsl-Dx-B1_4e.js +1 -0
  435. package/dist/review/assets/wikitext-BhOHFoWU.js +1 -0
  436. package/dist/review/assets/wit-5i3qLPDT.js +1 -0
  437. package/dist/review/assets/wolfram-lXgVvXCa.js +1 -0
  438. package/dist/review/assets/xml-sdJ4AIDG.js +1 -0
  439. package/dist/review/assets/xsl-CtQFsRM5.js +1 -0
  440. package/dist/review/assets/yaml-Buea-lGh.js +1 -0
  441. package/dist/review/assets/zenscript-DVFEvuxE.js +1 -0
  442. package/dist/review/assets/zig-VOosw3JB.js +1 -0
  443. package/dist/review/index.html +15 -0
  444. package/dist/run-wait.d.ts +13 -0
  445. package/dist/run-wait.d.ts.map +1 -0
  446. package/dist/run-wait.js +25 -0
  447. package/dist/run-wait.js.map +1 -0
  448. package/dist/sandbox-author.bundle.js +14979 -0
  449. package/dist/sandbox-author.d.ts +3 -0
  450. package/dist/sandbox-author.d.ts.map +1 -0
  451. package/dist/sandbox-author.js +17 -0
  452. package/dist/sandbox-author.js.map +1 -0
  453. package/dist/sandbox-repair.bundle.js +314 -0
  454. package/dist/sandbox-repair.d.ts +3 -0
  455. package/dist/sandbox-repair.d.ts.map +1 -0
  456. package/dist/sandbox-repair.js +121 -0
  457. package/dist/sandbox-repair.js.map +1 -0
  458. package/dist/sandbox-review.bundle.js +14458 -0
  459. package/dist/sandbox-review.d.ts +2 -0
  460. package/dist/sandbox-review.d.ts.map +1 -0
  461. package/dist/sandbox-review.js +16 -0
  462. package/dist/sandbox-review.js.map +1 -0
  463. package/dist/sandbox-validation-repair.bundle.js +14744 -0
  464. package/dist/sandbox-validation-repair.d.ts +3 -0
  465. package/dist/sandbox-validation-repair.d.ts.map +1 -0
  466. package/dist/sandbox-validation-repair.js +134 -0
  467. package/dist/sandbox-validation-repair.js.map +1 -0
  468. package/dist/sandbox.d.ts +39 -0
  469. package/dist/sandbox.d.ts.map +1 -0
  470. package/dist/sandbox.js +8 -0
  471. package/dist/sandbox.js.map +1 -0
  472. package/dist/subscription-auth.d.ts +6 -0
  473. package/dist/subscription-auth.d.ts.map +1 -0
  474. package/dist/subscription-auth.js +59 -0
  475. package/dist/subscription-auth.js.map +1 -0
  476. package/dist/temporal.d.ts +6 -0
  477. package/dist/temporal.d.ts.map +1 -0
  478. package/dist/temporal.js +17 -0
  479. package/dist/temporal.js.map +1 -0
  480. package/dist/validate-main.d.ts +3 -0
  481. package/dist/validate-main.d.ts.map +1 -0
  482. package/dist/validate-main.js +137 -0
  483. package/dist/validate-main.js.map +1 -0
  484. package/dist/validation-repair.d.ts +10 -0
  485. package/dist/validation-repair.d.ts.map +1 -0
  486. package/dist/validation-repair.js +72 -0
  487. package/dist/validation-repair.js.map +1 -0
  488. package/dist/worker-main.d.ts +2 -0
  489. package/dist/worker-main.d.ts.map +1 -0
  490. package/dist/worker-main.js +30 -0
  491. package/dist/worker-main.js.map +1 -0
  492. package/dist/workflow.d.ts +6 -0
  493. package/dist/workflow.d.ts.map +1 -0
  494. package/dist/workflow.js +428 -0
  495. package/dist/workflow.js.map +1 -0
  496. package/package.json +74 -0
  497. package/src/extensions/authoring.ts +86 -0
  498. package/src/extensions/discovery.ts +61 -0
  499. package/src/extensions/review.ts +54 -0
  500. package/src/skills/selfbench/SKILL.md +119 -0
@@ -0,0 +1,462 @@
1
+ import { chmod, cp, mkdir, readFile, rm, writeFile } from "node:fs/promises";
2
+ import { join, posix, resolve, sep } from "node:path";
3
+ import { taskDefinitionSchema } from "./contracts.js";
4
+ import { sha256 } from "./hash.js";
5
+ import { runCommand } from "./process.js";
6
+ import { patchPaths } from "./repair.js";
7
+ const HARBOR_SCHEMA_VERSION = "1.4";
8
+ const COMPILER_REVISION = 23;
9
+ export async function loadAuthoredTask(directory) {
10
+ const definition = taskDefinitionSchema.parse(JSON.parse(await readFile(join(directory, "definition.json"), "utf8")));
11
+ assertSafeTaskPaths(definition);
12
+ const [testPatch, goldPatch] = await Promise.all([
13
+ readFile(join(directory, "test.patch"), "utf8"),
14
+ readFile(join(directory, "gold.patch"), "utf8"),
15
+ ]);
16
+ if (!testPatch.startsWith("diff --git ")) {
17
+ throw new Error("test.patch is not a Git patch");
18
+ }
19
+ assertSafePatchPaths(testPatch);
20
+ if (!goldPatch.startsWith("diff --git ")) {
21
+ throw new Error("gold.patch is not a Git patch");
22
+ }
23
+ return { definition, testPatch, goldPatch };
24
+ }
25
+ export async function compileHarborTask(authoredDirectory, repositoryDirectory, outputDirectory) {
26
+ const task = await loadAuthoredTask(authoredDirectory);
27
+ const dependencySetupPatch = dependencyManifestPatch(task.goldPatch);
28
+ const preinstallGoldDependencies = dependencySetupPatch.length > 0;
29
+ await runCommand("git", [
30
+ "-C",
31
+ repositoryDirectory,
32
+ "cat-file",
33
+ "-e",
34
+ `${task.definition.baseCommit}^{commit}`,
35
+ ]);
36
+ await rm(outputDirectory, { recursive: true, force: true });
37
+ const environment = join(outputDirectory, "environment");
38
+ const solution = join(outputDirectory, "solution");
39
+ const tests = join(outputDirectory, "tests");
40
+ await Promise.all([
41
+ mkdir(environment, { recursive: true }),
42
+ mkdir(solution, { recursive: true }),
43
+ mkdir(tests, { recursive: true }),
44
+ ]);
45
+ const snapshot = join(outputDirectory, ".repo.tar.gz");
46
+ await runCommand("git", [
47
+ "-C",
48
+ repositoryDirectory,
49
+ "archive",
50
+ "--format=tar.gz",
51
+ `--output=${snapshot}`,
52
+ task.definition.baseCommit,
53
+ ]);
54
+ await Promise.all([
55
+ cp(snapshot, join(environment, "repo.tar.gz")),
56
+ cp(snapshot, join(tests, "repo.tar.gz")),
57
+ writeFile(join(outputDirectory, "instruction.md"), `${task.definition.prompt.trim()}\n`),
58
+ writeFile(join(solution, "gold.patch"), task.goldPatch),
59
+ writeFile(join(solution, "solve.sh"), solutionScript()),
60
+ writeFile(join(tests, "test.patch"), task.testPatch),
61
+ writeFile(join(tests, "test.sh"), testScript(task.definition, task.testPatch)),
62
+ writeFile(join(environment, "Dockerfile"), agentDockerfile(task.definition)),
63
+ writeFile(join(tests, "Dockerfile"), verifierDockerfile(task.definition, preinstallGoldDependencies)),
64
+ writeFile(join(outputDirectory, "task.toml"), taskToml(task.definition)),
65
+ ...(preinstallGoldDependencies
66
+ ? [writeFile(join(tests, "dependency-setup.patch"), dependencySetupPatch)]
67
+ : []),
68
+ ]);
69
+ await rm(snapshot);
70
+ await Promise.all([
71
+ chmod(join(solution, "solve.sh"), 0o755),
72
+ chmod(join(tests, "test.sh"), 0o755),
73
+ ]);
74
+ await writeFile(join(outputDirectory, ".selfbench-manifest.json"), `${JSON.stringify({
75
+ generator: "selfbench",
76
+ harborSchemaVersion: HARBOR_SCHEMA_VERSION,
77
+ compilerRevision: COMPILER_REVISION,
78
+ taskId: task.definition.taskId,
79
+ difficulty: task.definition.difficulty,
80
+ definitionSha256: sha256(JSON.stringify(task.definition)),
81
+ testPatchSha256: sha256(task.testPatch),
82
+ goldPatchSha256: sha256(task.goldPatch),
83
+ }, null, 2)}\n`);
84
+ }
85
+ export async function refreshHarborTask(outputDirectory, definition) {
86
+ const manifestPath = join(outputDirectory, ".selfbench-manifest.json");
87
+ const manifest = JSON.parse(await readFile(manifestPath, "utf8"));
88
+ if (manifest.taskId !== definition.taskId) {
89
+ throw new Error(`bundle task ${String(manifest.taskId)} does not match ${definition.taskId}`);
90
+ }
91
+ const [goldPatch, testPatch] = await Promise.all([
92
+ readFile(join(outputDirectory, "solution/gold.patch"), "utf8"),
93
+ readFile(join(outputDirectory, "tests/test.patch"), "utf8"),
94
+ ]);
95
+ assertSafePatchPaths(testPatch);
96
+ const dependencySetupPatch = dependencyManifestPatch(goldPatch);
97
+ const preinstallGoldDependencies = dependencySetupPatch.length > 0;
98
+ await writeFile(join(outputDirectory, "tests/test.sh"), testScript(definition, testPatch));
99
+ await Promise.all([
100
+ writeFile(join(outputDirectory, "task.toml"), taskToml(definition)),
101
+ writeFile(join(outputDirectory, "environment/Dockerfile"), agentDockerfile(definition)),
102
+ writeFile(join(outputDirectory, "tests/Dockerfile"), verifierDockerfile(definition, preinstallGoldDependencies)),
103
+ preinstallGoldDependencies
104
+ ? writeFile(join(outputDirectory, "tests/dependency-setup.patch"), dependencySetupPatch)
105
+ : rm(join(outputDirectory, "tests/dependency-setup.patch"), { force: true }),
106
+ chmod(join(outputDirectory, "tests/test.sh"), 0o755),
107
+ ]);
108
+ await writeFile(manifestPath, `${JSON.stringify({
109
+ ...manifest,
110
+ compilerRevision: COMPILER_REVISION,
111
+ difficulty: definition.difficulty,
112
+ definitionSha256: sha256(JSON.stringify(definition)),
113
+ testPatchSha256: sha256(testPatch),
114
+ goldPatchSha256: sha256(goldPatch),
115
+ }, null, 2)}\n`);
116
+ }
117
+ function taskToml(task) {
118
+ const metadata = {
119
+ selfbench_task_id: task.taskId,
120
+ difficulty: task.difficulty,
121
+ repo: task.repo,
122
+ base_commit: task.baseCommit,
123
+ workdir: task.workdir,
124
+ source_pr: task.sourcePr,
125
+ compiler_revision: COMPILER_REVISION,
126
+ };
127
+ return `${[
128
+ `schema_version = ${tomlString(HARBOR_SCHEMA_VERSION)}`,
129
+ 'artifacts = ["/opt/selfbench/agent.patch"]',
130
+ "",
131
+ "[task]",
132
+ `name = ${tomlString(`selfbench/${task.taskId}`)}`,
133
+ 'version = "1.0.0"',
134
+ `description = ${tomlString(`Reproduce ${task.taskId} from its authentic engineer request.`)}`,
135
+ `keywords = ["software-engineering", "private-swe", "selfbench", ${tomlString(task.difficulty)}]`,
136
+ "",
137
+ "[metadata]",
138
+ ...Object.entries(metadata).map(([key, value]) => `${key} = ${tomlValue(value)}`),
139
+ "",
140
+ "[agent]",
141
+ `timeout_sec = ${task.timeouts.agentSeconds}.0`,
142
+ 'user = "agent"',
143
+ 'network_mode = "allowlist"',
144
+ 'allowed_hosts = ["chatgpt.com", "*.chatgpt.com", "openai.com", "*.openai.com"]',
145
+ "",
146
+ "[verifier]",
147
+ `timeout_sec = ${task.timeouts.setupSeconds + task.timeouts.testsSeconds}.0`,
148
+ 'user = "root"',
149
+ 'environment_mode = "separate"',
150
+ 'network_mode = "public"',
151
+ "",
152
+ "[[verifier.collect]]",
153
+ 'service = "main"',
154
+ 'user = "root"',
155
+ `timeout_sec = ${Math.min(task.timeouts.testsSeconds, 300)}.0`,
156
+ 'command = "git --git-dir=/opt/selfbench/base.git --work-tree=/app add -A && git --git-dir=/opt/selfbench/base.git --work-tree=/app diff --cached --binary HEAD > /opt/selfbench/agent.patch"',
157
+ "",
158
+ "[environment]",
159
+ 'network_mode = "public"',
160
+ `build_timeout_sec = ${task.timeouts.setupSeconds + 600}.0`,
161
+ `cpus = ${task.resources.cpus}`,
162
+ `memory_mb = ${task.resources.memoryMb}`,
163
+ `storage_mb = ${task.resources.storageMb}`,
164
+ "",
165
+ "[verifier.environment]",
166
+ 'network_mode = "public"',
167
+ `build_timeout_sec = ${task.timeouts.setupSeconds + 600}.0`,
168
+ `cpus = ${task.resources.cpus}`,
169
+ `memory_mb = ${task.resources.memoryMb}`,
170
+ `storage_mb = ${task.resources.storageMb}`,
171
+ ].join("\n")}\n`;
172
+ }
173
+ function agentDockerfile(task) {
174
+ return `${toolchainDockerfile(task.toolchains)}
175
+ RUN useradd --create-home --shell /bin/bash agent
176
+ ${repositoryDockerfile(task)}
177
+ RUN git -C /app reset --hard -q HEAD \\
178
+ && git -C /app clean -fdq \\
179
+ && mkdir -p /opt/selfbench \\
180
+ && cp -a /app/.git /opt/selfbench/base.git \\
181
+ && chown -R agent:agent /app /home/agent /opt/uv-cache \\
182
+ && chown -R root:root /opt/selfbench \\
183
+ && chmod 700 /opt/selfbench \\
184
+ && mkdir -p /home/agent/.cache/uv \\
185
+ && chown -R agent:agent /home/agent/.cache
186
+ ENV UV_CACHE_DIR=/home/agent/.cache/uv \\
187
+ UV_NO_BUILD_ISOLATION=1
188
+ USER agent
189
+ WORKDIR /app
190
+ `;
191
+ }
192
+ function verifierDockerfile(task, preinstallGoldDependencies) {
193
+ return `${toolchainDockerfile(task.toolchains)}
194
+ ${repositoryDockerfile(task)}
195
+ ${preinstallGoldDependencies ? goldDependencySetupLayer(task) : ""}
196
+ RUN useradd --create-home --shell /bin/bash verifier \\
197
+ && chown -R verifier:verifier /app /opt/uv-cache \\
198
+ && mkdir -p /opt/selfbench \\
199
+ && chmod 700 /opt/selfbench \\
200
+ && mkdir -p /home/verifier/.cache/uv \\
201
+ && chown -R verifier:verifier /home/verifier/.cache
202
+ ENV UV_CACHE_DIR=/home/verifier/.cache/uv \\
203
+ UV_NO_BUILD_ISOLATION=1
204
+ COPY test.patch test.sh /tests/
205
+ RUN chmod 700 /tests && chmod 600 /tests/test.patch && chmod +x /tests/test.sh
206
+ WORKDIR /app
207
+ `;
208
+ }
209
+ function goldDependencySetupLayer(task) {
210
+ return `COPY dependency-setup.patch /tmp/selfbench-dependency-setup.patch
211
+ RUN git -C /app apply --binary --whitespace=nowarn /tmp/selfbench-dependency-setup.patch \\
212
+ && cd ${shellQuote(`/app/${task.workdir}`)} \\
213
+ && bash -lc ${shellQuote(task.setupCommand)} \\
214
+ && git -C /app reset --hard -q HEAD \\
215
+ && git -C /app clean -fdq \\
216
+ && rm /tmp/selfbench-dependency-setup.patch
217
+ `;
218
+ }
219
+ export function goldPatchChangesDependencyManifests(patch) {
220
+ return dependencyManifestPatch(patch).length > 0;
221
+ }
222
+ export function dependencyManifestPatch(patch) {
223
+ const sections = patch.split(/(?=^diff --git )/m);
224
+ const selected = sections.filter((section) => {
225
+ const header = section.split("\n", 1)[0] ?? "";
226
+ const match = /^diff --git a\/(.+) b\/(.+)$/.exec(header);
227
+ return match?.[2] ? isDependencyManifest(match[2]) : false;
228
+ });
229
+ return selected.length > 0 ? `${selected.join("").trimEnd()}\n` : "";
230
+ }
231
+ function isDependencyManifest(path) {
232
+ const name = posix.basename(path);
233
+ return (/^(?:package(?:-lock)?\.json|npm-shrinkwrap\.json|yarn\.lock|pnpm-lock\.yaml|bun\.lockb?|deno\.lock)$/.test(name) ||
234
+ /^(?:pyproject\.toml|uv\.lock|poetry\.lock|Pipfile(?:\.lock)?|requirements[^/]*\.txt)$/.test(name) ||
235
+ /^(?:go\.(?:mod|sum)|Cargo\.(?:toml|lock))$/.test(name));
236
+ }
237
+ function toolchainDockerfile(toolchains) {
238
+ const layers = {
239
+ uv: "RUN curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR=/usr/local/bin UV_NO_MODIFY_PATH=1 sh",
240
+ python: "RUN uv python install 3.11 3.12 3.13 && ln -sf /usr/local/bin/python3.12 /usr/local/bin/python3 && ln -sf /usr/local/bin/python3.12 /usr/local/bin/python",
241
+ node: `ENV PLAYWRIGHT_BROWSERS_PATH=/opt/playwright
242
+ RUN mkdir -p "$PLAYWRIGHT_BROWSERS_PATH" && chmod 755 "$PLAYWRIGHT_BROWSERS_PATH" \\
243
+ && arch="$(dpkg --print-architecture)" && case "$arch" in arm64) node_arch=arm64 ;; amd64) node_arch=x64 ;; *) exit 1 ;; esac \\
244
+ && curl -fsSL "https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-\${node_arch}.tar.xz" | tar -C /usr/local --strip-components=1 -xJ \\
245
+ && mkdir -p /opt/corepack && chmod 755 /opt/corepack \\
246
+ && corepack enable`,
247
+ bun: "RUN npm install --global bun@1.3.14",
248
+ // biome-ignore lint/suspicious/noTemplateCurlyInString: the output is a shell variable.
249
+ go: `RUN arch="$(dpkg --print-architecture)" && curl -fsSL "https://go.dev/dl/go1.25.0.linux-${"${arch}"}.tar.gz" | tar -C /usr/local -xz`,
250
+ rust: "RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | env RUSTUP_HOME=/usr/local/rustup CARGO_HOME=/usr/local/cargo sh -s -- -y --no-modify-path --profile minimal --default-toolchain 1.90.0",
251
+ };
252
+ const selected = new Set(toolchains);
253
+ if (selected.has("python")) {
254
+ selected.add("uv");
255
+ }
256
+ if (selected.has("bun")) {
257
+ selected.add("node");
258
+ }
259
+ const order = ["uv", "python", "node", "bun", "go", "rust"];
260
+ return `FROM ubuntu:24.04
261
+ ENV DEBIAN_FRONTEND=noninteractive \\
262
+ UV_LINK_MODE=copy \\
263
+ UV_CACHE_DIR=/opt/uv-cache \\
264
+ UV_PYTHON_INSTALL_DIR=/usr/local/share/uv/python \\
265
+ UV_PYTHON_BIN_DIR=/usr/local/bin \\
266
+ RUSTUP_HOME=/usr/local/rustup \\
267
+ CARGO_HOME=/usr/local/cargo \\
268
+ COREPACK_HOME=/opt/corepack \\
269
+ PATH=/usr/local/go/bin:/usr/local/cargo/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
270
+ RUN apt-get update && apt-get install -y --no-install-recommends \\
271
+ bash build-essential ca-certificates curl git jq passwd pkg-config procps unzip xz-utils \\
272
+ && rm -rf /var/lib/apt/lists/*
273
+ ${order
274
+ .filter((name) => selected.has(name))
275
+ .map((name) => layers[name])
276
+ .filter(Boolean)
277
+ .join("\n")}`;
278
+ }
279
+ function repositoryDockerfile(task) {
280
+ const pythonBuildDependencies = task.toolchains.includes("python")
281
+ ? ` \\
282
+ && find /app -path '*/.venv/bin/python' -exec uv pip install --python '{}' 'setuptools>=70' wheel ';'`
283
+ : "";
284
+ return `COPY repo.tar.gz /tmp/repo.tar.gz
285
+ RUN mkdir -p /app && tar -xzf /tmp/repo.tar.gz -C /app && rm /tmp/repo.tar.gz \\
286
+ && git -C /app init -q \\
287
+ && git -C /app config user.email selfbench@local \\
288
+ && git -C /app config user.name selfbench \\
289
+ && git -C /app add -A \\
290
+ && git -C /app commit -qm base
291
+ RUN mkdir -p /opt/uv-cache && chmod 777 /opt/uv-cache \\
292
+ && cd ${shellQuote(`/app/${task.workdir}`)} \\
293
+ && bash -lc ${shellQuote(task.setupCommand)}${pythonBuildDependencies} \\
294
+ && chmod -R a+rwX /opt/uv-cache`;
295
+ }
296
+ function solutionScript() {
297
+ return `#!/bin/bash
298
+ set -euo pipefail
299
+ git -C /app apply --binary --whitespace=nowarn /solution/gold.patch
300
+ `;
301
+ }
302
+ function testScript(task, testPatch) {
303
+ const repositoryTestPaths = [
304
+ ...new Set([
305
+ ...task.testPaths.map((path) => repositoryRelativePath(task, path)),
306
+ ...patchPaths(testPatch),
307
+ ]),
308
+ ].sort();
309
+ const exclusions = repositoryTestPaths
310
+ .flatMap((path) => [
311
+ `--exclude=${shellQuote(path.replace(/\/$/, ""))}`,
312
+ `--exclude=${shellQuote(`${path.replace(/\/$/, "")}/*`)}`,
313
+ ])
314
+ .join(" ");
315
+ const protectedPaths = repositoryTestPaths.map(shellQuote).join(" ");
316
+ const protectedAbsolute = repositoryTestPaths.map((path) => shellQuote(`/app/${path}`)).join(" ");
317
+ const f2p = taskCommand(task, task.failToPass);
318
+ const p2p = task.passToPass.length > 0 ? taskCommand(task, task.passToPass) : "true";
319
+ return `#!/bin/bash
320
+ set -uo pipefail
321
+ mkdir -p /logs/verifier
322
+ patch_applied=1
323
+ fail_to_pass=0
324
+ pass_to_pass=0
325
+ deterministic=0
326
+ setup_completed=0
327
+ fail_to_pass_exit_code=-1
328
+ fail_to_pass_repeat_exit_code=-1
329
+ pass_to_pass_exit_code=-1
330
+ verifier_cache=""
331
+
332
+ kill_verifier_processes() { pkill -KILL -u "$(id -u verifier)" 2>/dev/null || true; }
333
+ # Some toolchains fetch dependencies at test runtime (e.g. Next.js e2e installs),
334
+ # so a single registry connection reset must not be misread as a dead test. Retry
335
+ # only infrastructure-style failures with backoff; real assertion failures fail fast.
336
+ run_verifier_command() {
337
+ local logfile
338
+ logfile="$(mktemp /tmp/selfbench-verifier-command-XXXXXX.log)"
339
+ local attempt=1
340
+ local status=1
341
+ while [ "$attempt" -le 3 ]; do
342
+ : > "$logfile"
343
+ runuser -u verifier -- env PATH="/usr/local/go/bin:/usr/local/cargo/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin" UV_CACHE_DIR="$verifier_cache" UV_NO_BUILD_ISOLATION=1 bash -lc "$1" >"$logfile" 2>&1
344
+ status=$?
345
+ if [ "$status" -eq 0 ]; then
346
+ break
347
+ fi
348
+ if [ "$attempt" -lt 3 ] && grep -qE 'ECONNRESET|ETIMEDOUT|ESOCKETTIMEDOUT|ENOTFOUND|EAI_AGAIN|META_FETCH_FAIL|FetchError|EPIPE|EPERM|registry\\.npmjs' "$logfile"; then
349
+ sleep "$((10 * attempt))"
350
+ attempt=$((attempt + 1))
351
+ continue
352
+ fi
353
+ break
354
+ done
355
+ cat "$logfile"
356
+ rm -f "$logfile"
357
+ kill_verifier_processes
358
+ return "$status"
359
+ }
360
+ protect_held_out_path() {
361
+ local path="$1"
362
+ chown -R root:root -- "$path"
363
+ chmod -R a-w,go+rX -- "$path"
364
+ }
365
+
366
+ if [ ! -f /opt/selfbench/agent.patch ]; then
367
+ patch_applied=0
368
+ elif [ -s /opt/selfbench/agent.patch ]; then
369
+ git -C /app apply --binary --whitespace=nowarn ${exclusions} /opt/selfbench/agent.patch || patch_applied=0
370
+ fi
371
+
372
+ if [ "$patch_applied" -eq 1 ]; then setup_completed=1; fi
373
+
374
+ if [ "$patch_applied" -eq 1 ] && [ "$setup_completed" -eq 1 ]; then
375
+ kill_verifier_processes
376
+ for protected_path in ${protectedPaths}; do
377
+ git -C /app restore --source=HEAD --staged --worktree -- "$protected_path" 2>/dev/null || true
378
+ git -C /app clean -fd -- "$protected_path" >/dev/null 2>&1 || true
379
+ done
380
+ git -C /app apply --binary --whitespace=nowarn /tests/test.patch || patch_applied=0
381
+ if [ "$patch_applied" -eq 1 ]; then
382
+ for protected_path in ${protectedAbsolute}; do protect_held_out_path "$protected_path"; done
383
+ fi
384
+ rm -f /tests/test.patch
385
+ fi
386
+
387
+ if [ "$patch_applied" -eq 1 ] && [ "$setup_completed" -eq 1 ]; then
388
+ cd ${shellQuote(`/app/${task.workdir}`)}
389
+ verifier_cache="$(mktemp -d /tmp/selfbench-verifier-uv-XXXXXX)"
390
+ cp -a /opt/uv-cache/. "$verifier_cache"/
391
+ chown -R verifier:verifier "$verifier_cache"
392
+ if run_verifier_command ${shellQuote(f2p)}; then
393
+ fail_to_pass_exit_code=0
394
+ fail_to_pass=1
395
+ if run_verifier_command ${shellQuote(f2p)}; then
396
+ fail_to_pass_repeat_exit_code=0
397
+ deterministic=1
398
+ else
399
+ fail_to_pass_repeat_exit_code=$?
400
+ fi
401
+ else
402
+ fail_to_pass_exit_code=$?
403
+ fi
404
+ if run_verifier_command ${shellQuote(p2p)}; then
405
+ pass_to_pass_exit_code=0
406
+ pass_to_pass=1
407
+ else
408
+ pass_to_pass_exit_code=$?
409
+ fi
410
+ rm -rf "$verifier_cache"
411
+ fi
412
+
413
+ reward=0
414
+ if [ "$patch_applied" -eq 1 ] && [ "$fail_to_pass" -eq 1 ] && [ "$pass_to_pass" -eq 1 ] && [ "$deterministic" -eq 1 ]; then reward=1; fi
415
+ cat > /logs/verifier/reward.json <<EOF
416
+ {"reward": $reward, "patch_applied": $patch_applied, "fail_to_pass": $fail_to_pass, "pass_to_pass": $pass_to_pass, "deterministic": $deterministic, "setup_completed": $setup_completed, "fail_to_pass_exit_code": $fail_to_pass_exit_code, "fail_to_pass_repeat_exit_code": $fail_to_pass_repeat_exit_code, "pass_to_pass_exit_code": $pass_to_pass_exit_code}
417
+ EOF
418
+ exit 0
419
+ `;
420
+ }
421
+ function taskCommand(task, tests) {
422
+ return task.testCommand.replaceAll("{tests}", tests.map(shellQuote).join(" "));
423
+ }
424
+ function assertSafeTaskPaths(task) {
425
+ for (const path of [
426
+ task.workdir,
427
+ ...task.testPaths.map((value) => posix.join(task.workdir, value)),
428
+ ]) {
429
+ const resolved = resolve("/repo", path);
430
+ if (resolved !== "/repo" && !resolved.startsWith(`/repo${sep}`)) {
431
+ throw new Error(`task path escapes repository: ${path}`);
432
+ }
433
+ }
434
+ }
435
+ function assertSafePatchPaths(patch) {
436
+ const paths = patchPaths(patch);
437
+ if (paths.length === 0) {
438
+ throw new Error("test.patch changes no files");
439
+ }
440
+ for (const path of paths) {
441
+ const resolved = resolve("/repo", path);
442
+ if (resolved === "/repo" ||
443
+ !resolved.startsWith(`/repo${sep}`) ||
444
+ resolved.startsWith(`/repo${sep}.git${sep}`) ||
445
+ resolved === `/repo${sep}.git`) {
446
+ throw new Error(`test patch path escapes repository: ${path}`);
447
+ }
448
+ }
449
+ }
450
+ function repositoryRelativePath(task, path) {
451
+ return posix.normalize(posix.join(task.workdir, path)).replace(/^\.\//, "");
452
+ }
453
+ function shellQuote(value) {
454
+ return `'${value.replaceAll("'", `'"'"'`)}'`;
455
+ }
456
+ function tomlString(value) {
457
+ return JSON.stringify(value);
458
+ }
459
+ function tomlValue(value) {
460
+ return typeof value === "string" ? tomlString(value) : String(value);
461
+ }
462
+ //# sourceMappingURL=harbor-task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harbor-task.js","sourceRoot":"","sources":["../src/harbor-task.ts"],"names":[],"mappings":"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"}
package/dist/hash.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function sha256(value: Uint8Array | string): string;
2
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAEzD"}
package/dist/hash.js ADDED
@@ -0,0 +1,5 @@
1
+ import { createHash } from "node:crypto";
2
+ export function sha256(value) {
3
+ return createHash("sha256").update(value).digest("hex");
4
+ }
5
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,MAAM,CAAC,KAA0B;IAC/C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function removeEmptyModalCredentialOverrides(environment?: NodeJS.ProcessEnv): void;
2
+ //# sourceMappingURL=modal-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal-auth.d.ts","sourceRoot":"","sources":["../src/modal-auth.ts"],"names":[],"mappings":"AAEA,wBAAgB,mCAAmC,CACjD,WAAW,GAAE,MAAM,CAAC,UAAwB,GAC3C,IAAI,CAMN"}
@@ -0,0 +1,9 @@
1
+ const MODAL_CREDENTIAL_KEYS = ["MODAL_TOKEN_ID", "MODAL_TOKEN_SECRET"];
2
+ export function removeEmptyModalCredentialOverrides(environment = process.env) {
3
+ for (const key of MODAL_CREDENTIAL_KEYS) {
4
+ if (environment[key]?.trim() === "") {
5
+ delete environment[key];
6
+ }
7
+ }
8
+ }
9
+ //# sourceMappingURL=modal-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal-auth.js","sourceRoot":"","sources":["../src/modal-auth.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAAG,CAAC,gBAAgB,EAAE,oBAAoB,CAAU,CAAC;AAEhF,MAAM,UAAU,mCAAmC,CACjD,cAAiC,OAAO,CAAC,GAAG;IAE5C,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACxC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ModalClient } from "modal";
2
+ import type { SelfBenchConfig } from "./config.js";
3
+ import type { SandboxExecutor, SandboxRequest, SandboxResult, SandboxRunOptions } from "./sandbox.js";
4
+ export declare class ModalSandboxExecutor implements SandboxExecutor {
5
+ #private;
6
+ constructor(config: Extract<SelfBenchConfig["execution"], {
7
+ kind: "modal";
8
+ }>, client?: ModalClient);
9
+ run(request: SandboxRequest, options?: SandboxRunOptions): Promise<SandboxResult>;
10
+ close(): void;
11
+ }
12
+ //# sourceMappingURL=modal-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal-executor.d.ts","sourceRoot":"","sources":["../src/modal-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAe,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAEtB,qBAAa,oBAAqB,YAAW,eAAe;;gBAMxD,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,EAChE,MAAM,cAAoB;IAMtB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAoH3F,KAAK,IAAI,IAAI;CA+Bd"}