niceeval 0.13.3 → 0.13.4-canary.39

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 (487) hide show
  1. package/INDEX.md +5 -5
  2. package/dist/agents/index.cjs +2 -2
  3. package/dist/agents/index.cjs.map +1 -1
  4. package/dist/agents/project.json +6 -0
  5. package/dist/agents/streaming.cjs.map +1 -1
  6. package/dist/agents/types.cjs.map +1 -1
  7. package/dist/agents/types.d.cts +1 -1
  8. package/dist/agents/types.d.mts +1 -1
  9. package/dist/agents/types.d.ts +1 -1
  10. package/dist/analysis/bindings.d.cts +8 -8
  11. package/dist/analysis/bindings.d.mts +8 -8
  12. package/dist/analysis/bindings.d.ts +8 -8
  13. package/dist/analysis/contracts.cjs.map +1 -1
  14. package/dist/analysis/contracts.d.cts +8 -19
  15. package/dist/analysis/contracts.d.mts +8 -19
  16. package/dist/analysis/contracts.d.ts +8 -19
  17. package/dist/analysis/experiment-groups.cjs +7 -14
  18. package/dist/analysis/experiment-groups.cjs.map +1 -1
  19. package/dist/analysis/index.cjs.map +1 -1
  20. package/dist/analysis/index.d.cts +1 -1
  21. package/dist/analysis/index.d.mts +1 -1
  22. package/dist/analysis/index.d.ts +1 -1
  23. package/dist/cli/application.cjs +4 -13
  24. package/dist/cli/application.cjs.map +1 -1
  25. package/dist/cli/application.d.cts +62 -59
  26. package/dist/cli/application.d.mts +62 -59
  27. package/dist/cli/application.d.ts +62 -59
  28. package/dist/cli/application.js +6 -12
  29. package/dist/cli/bootstrap.cjs +28 -2
  30. package/dist/cli/bootstrap.cjs.map +1 -1
  31. package/dist/cli/contribution.cjs +185 -0
  32. package/dist/cli/contribution.cjs.map +1 -0
  33. package/dist/cli/contribution.d.cts +55 -0
  34. package/dist/cli/contribution.d.mts +55 -0
  35. package/dist/cli/contribution.d.ts +55 -0
  36. package/dist/cli/contribution.js +20 -0
  37. package/dist/cli/contribution.js.map +1 -0
  38. package/dist/cli/node-application.cjs +119 -87
  39. package/dist/cli/node-application.cjs.map +1 -1
  40. package/dist/cli/node-application.d.cts +2 -8
  41. package/dist/cli/node-application.d.mts +2 -8
  42. package/dist/cli/node-application.d.ts +2 -8
  43. package/dist/cli/node-application.js +12 -22
  44. package/dist/cli/program.cjs +87 -2756
  45. package/dist/cli/program.cjs.map +1 -1
  46. package/dist/cli/program.d.cts +11 -332
  47. package/dist/cli/program.d.mts +11 -332
  48. package/dist/cli/program.d.ts +11 -332
  49. package/dist/cli/program.js +4 -28
  50. package/dist/cli.cjs +0 -3
  51. package/dist/cli.cjs.map +1 -1
  52. package/dist/cli.d.cts +0 -1
  53. package/dist/cli.d.mts +0 -1
  54. package/dist/cli.d.ts +0 -1
  55. package/dist/cli.js +6 -14
  56. package/dist/define.cjs +1 -1
  57. package/dist/define.cjs.map +1 -1
  58. package/dist/docker/cache-administration.cjs +8 -0
  59. package/dist/docker/cache-administration.cjs.map +1 -0
  60. package/dist/docker/cache-administration.d.cts +33 -0
  61. package/dist/docker/cache-administration.d.mts +33 -0
  62. package/dist/docker/cache-administration.d.ts +33 -0
  63. package/dist/docker/cache-administration.js +6 -0
  64. package/dist/docker/cache-administration.js.map +1 -0
  65. package/dist/docker/cache-live.cjs +27 -0
  66. package/dist/docker/cache-live.cjs.map +1 -0
  67. package/dist/docker/cache-live.d.cts +3 -0
  68. package/dist/docker/cache-live.d.mts +3 -0
  69. package/dist/docker/cache-live.d.ts +3 -0
  70. package/dist/docker/cache-live.js +6 -0
  71. package/dist/docker/cache-live.js.map +1 -0
  72. package/dist/docker/cli/contribution.cjs +223 -0
  73. package/dist/docker/cli/contribution.cjs.map +1 -0
  74. package/dist/docker/cli/contribution.d.cts +48 -0
  75. package/dist/docker/cli/contribution.d.mts +48 -0
  76. package/dist/docker/cli/contribution.d.ts +48 -0
  77. package/dist/docker/cli/contribution.js +8 -0
  78. package/dist/docker/cli/contribution.js.map +1 -0
  79. package/dist/eval/cli/contribution.cjs +62 -0
  80. package/dist/eval/cli/contribution.cjs.map +1 -0
  81. package/dist/eval/cli/contribution.d.cts +21 -0
  82. package/dist/eval/cli/contribution.d.mts +21 -0
  83. package/dist/eval/cli/contribution.d.ts +21 -0
  84. package/dist/eval/cli/contribution.js +8 -0
  85. package/dist/eval/cli/contribution.js.map +1 -0
  86. package/dist/eval/host/index.cjs +23 -0
  87. package/dist/eval/host/index.cjs.map +1 -0
  88. package/dist/eval/host/index.d.cts +27 -0
  89. package/dist/eval/host/index.d.mts +27 -0
  90. package/dist/eval/host/index.d.ts +27 -0
  91. package/dist/eval/host/index.js +8 -0
  92. package/dist/eval/host/index.js.map +1 -0
  93. package/dist/eval/host/index.mjs +8 -0
  94. package/dist/eval/host/index.mjs.map +1 -0
  95. package/dist/experiment/host/cli/contribution.cjs +835 -0
  96. package/dist/experiment/host/cli/contribution.cjs.map +1 -0
  97. package/dist/experiment/host/cli/contribution.d.cts +329 -0
  98. package/dist/experiment/host/cli/contribution.d.mts +329 -0
  99. package/dist/experiment/host/cli/contribution.d.ts +329 -0
  100. package/dist/experiment/host/cli/contribution.js +22 -0
  101. package/dist/experiment/host/cli/contribution.js.map +1 -0
  102. package/dist/experiment/host/cli/index.cjs +9 -0
  103. package/dist/experiment/host/cli/index.cjs.map +1 -0
  104. package/dist/experiment/host/cli/index.d.cts +2 -0
  105. package/dist/experiment/host/cli/index.d.mts +2 -0
  106. package/dist/experiment/host/cli/index.d.ts +2 -0
  107. package/dist/experiment/host/cli/index.js +10 -0
  108. package/dist/experiment/host/cli/index.js.map +1 -0
  109. package/dist/experiment/host/cli/terminal.cjs +15 -0
  110. package/dist/experiment/host/cli/terminal.cjs.map +1 -0
  111. package/dist/experiment/host/cli/terminal.d.cts +14 -0
  112. package/dist/experiment/host/cli/terminal.d.mts +14 -0
  113. package/dist/experiment/host/cli/terminal.d.ts +14 -0
  114. package/dist/experiment/host/cli/terminal.js +8 -0
  115. package/dist/experiment/host/cli/terminal.js.map +1 -0
  116. package/dist/experiment/host/index.cjs +35 -58
  117. package/dist/experiment/host/index.cjs.map +1 -1
  118. package/dist/experiment/host/index.d.cts +5 -79
  119. package/dist/experiment/host/index.d.mts +5 -79
  120. package/dist/experiment/host/index.d.ts +5 -79
  121. package/dist/experiment/host/index.js +4 -2
  122. package/dist/experiment/host/index.mjs +4 -2
  123. package/dist/experiment/host/operations.cjs +678 -0
  124. package/dist/experiment/host/operations.cjs.map +1 -0
  125. package/dist/experiment/host/operations.d.cts +19 -0
  126. package/dist/experiment/host/operations.d.mts +19 -0
  127. package/dist/experiment/host/operations.d.ts +19 -0
  128. package/dist/experiment/host/operations.js +24 -0
  129. package/dist/experiment/host/operations.js.map +1 -0
  130. package/dist/experiment/host/presentation.cjs +81 -0
  131. package/dist/experiment/host/presentation.cjs.map +1 -0
  132. package/dist/experiment/host/presentation.d.cts +9 -0
  133. package/dist/experiment/host/presentation.d.mts +9 -0
  134. package/dist/experiment/host/presentation.d.ts +9 -0
  135. package/dist/experiment/host/presentation.js +8 -0
  136. package/dist/experiment/host/presentation.js.map +1 -0
  137. package/dist/experiment/host/teardown.cjs +394 -0
  138. package/dist/experiment/host/teardown.cjs.map +1 -0
  139. package/dist/experiment/host/teardown.d.cts +5 -0
  140. package/dist/experiment/host/teardown.d.mts +5 -0
  141. package/dist/experiment/host/teardown.d.ts +5 -0
  142. package/dist/experiment/host/teardown.js +8 -0
  143. package/dist/experiment/host/teardown.js.map +1 -0
  144. package/dist/experiment/host/types.cjs +9 -0
  145. package/dist/experiment/host/types.cjs.map +1 -0
  146. package/dist/experiment/host/types.d.cts +423 -0
  147. package/dist/experiment/host/types.d.mts +423 -0
  148. package/dist/experiment/host/types.d.ts +423 -0
  149. package/dist/experiment/host/types.js +6 -0
  150. package/dist/experiment/host/types.js.map +1 -0
  151. package/dist/i18n/en.cjs +8 -50
  152. package/dist/i18n/en.cjs.map +1 -1
  153. package/dist/i18n/en.d.cts +2 -6
  154. package/dist/i18n/en.d.mts +2 -6
  155. package/dist/i18n/en.d.ts +2 -6
  156. package/dist/o11y/project.json +6 -0
  157. package/dist/project/cli/contribution.cjs +66 -0
  158. package/dist/project/cli/contribution.cjs.map +1 -0
  159. package/dist/project/cli/contribution.d.cts +17 -0
  160. package/dist/project/cli/contribution.d.mts +17 -0
  161. package/dist/project/cli/contribution.d.ts +17 -0
  162. package/dist/project/cli/contribution.js +8 -0
  163. package/dist/project/cli/contribution.js.map +1 -0
  164. package/dist/project/cli/index.cjs +7 -0
  165. package/dist/project/cli/index.cjs.map +1 -0
  166. package/dist/project/cli/index.d.cts +1 -0
  167. package/dist/project/cli/index.d.mts +1 -0
  168. package/dist/project/cli/index.d.ts +1 -0
  169. package/dist/project/cli/index.js +8 -0
  170. package/dist/project/cli/index.js.map +1 -0
  171. package/dist/project/host/index.cjs +11 -0
  172. package/dist/project/host/index.cjs.map +1 -0
  173. package/dist/project/host/index.d.cts +4 -0
  174. package/dist/project/host/index.d.mts +4 -0
  175. package/dist/project/host/index.d.ts +4 -0
  176. package/dist/project/host/index.js +14 -0
  177. package/dist/project/host/index.js.map +1 -0
  178. package/dist/project/host/index.mjs +14 -0
  179. package/dist/project/host/index.mjs.map +1 -0
  180. package/dist/project/host.cjs +59 -0
  181. package/dist/project/host.cjs.map +1 -0
  182. package/dist/project/host.d.cts +17 -0
  183. package/dist/project/host.d.mts +17 -0
  184. package/dist/project/host.d.ts +17 -0
  185. package/dist/project/host.js +6 -0
  186. package/dist/project/host.js.map +1 -0
  187. package/dist/project/index.cjs +11 -0
  188. package/dist/project/index.cjs.map +1 -0
  189. package/dist/project/index.d.cts +4 -0
  190. package/dist/project/index.d.mts +4 -0
  191. package/dist/project/index.d.ts +4 -0
  192. package/dist/project/index.js +14 -0
  193. package/dist/project/index.js.map +1 -0
  194. package/dist/project/node.cjs +91 -0
  195. package/dist/project/node.cjs.map +1 -0
  196. package/dist/project/node.d.cts +6 -0
  197. package/dist/project/node.d.mts +6 -0
  198. package/dist/project/node.d.ts +6 -0
  199. package/dist/project/node.js +12 -0
  200. package/dist/project/node.js.map +1 -0
  201. package/dist/project/services.cjs +17 -0
  202. package/dist/project/services.cjs.map +1 -0
  203. package/dist/project/services.d.cts +47 -0
  204. package/dist/project/services.d.mts +47 -0
  205. package/dist/project/services.d.ts +47 -0
  206. package/dist/project/services.js +12 -0
  207. package/dist/project/services.js.map +1 -0
  208. package/dist/project/templates.cjs +28 -0
  209. package/dist/project/templates.cjs.map +1 -0
  210. package/dist/project/templates.d.cts +4 -0
  211. package/dist/project/templates.d.mts +4 -0
  212. package/dist/project/templates.d.ts +4 -0
  213. package/dist/project/templates.js +12 -0
  214. package/dist/project/templates.js.map +1 -0
  215. package/dist/project.json +6 -0
  216. package/dist/record/family/catalog.d.cts +10 -10
  217. package/dist/record/family/catalog.d.mts +10 -10
  218. package/dist/record/family/catalog.d.ts +10 -10
  219. package/dist/record/family/file-changes.d.cts +8 -8
  220. package/dist/record/family/file-changes.d.mts +8 -8
  221. package/dist/record/family/file-changes.d.ts +8 -8
  222. package/dist/record/host/cli/contribution.cjs +206 -0
  223. package/dist/record/host/cli/contribution.cjs.map +1 -0
  224. package/dist/record/host/cli/contribution.d.cts +32 -0
  225. package/dist/record/host/cli/contribution.d.mts +32 -0
  226. package/dist/record/host/cli/contribution.d.ts +32 -0
  227. package/dist/record/host/cli/contribution.js +10 -0
  228. package/dist/record/host/cli/contribution.js.map +1 -0
  229. package/dist/record/host/cli/index.cjs +8 -0
  230. package/dist/record/host/cli/index.cjs.map +1 -0
  231. package/dist/record/host/cli/index.d.cts +1 -0
  232. package/dist/record/host/cli/index.d.mts +1 -0
  233. package/dist/record/host/cli/index.d.ts +1 -0
  234. package/dist/record/host/cli/index.js +10 -0
  235. package/dist/record/host/cli/index.js.map +1 -0
  236. package/dist/record/host/cli/presentation.cjs +122 -0
  237. package/dist/record/host/cli/presentation.cjs.map +1 -0
  238. package/dist/record/host/cli/presentation.d.cts +7 -0
  239. package/dist/record/host/cli/presentation.d.mts +7 -0
  240. package/dist/record/host/cli/presentation.d.ts +7 -0
  241. package/dist/record/host/cli/presentation.js +12 -0
  242. package/dist/record/host/cli/presentation.js.map +1 -0
  243. package/dist/record/host/index.cjs.map +1 -1
  244. package/dist/record/host/index.d.cts +1 -1
  245. package/dist/record/host/index.d.mts +1 -1
  246. package/dist/record/host/index.d.ts +1 -1
  247. package/dist/record/host/runtime.cjs +184 -1
  248. package/dist/record/host/runtime.cjs.map +1 -1
  249. package/dist/record/host/types.cjs.map +1 -1
  250. package/dist/record/host/types.d.cts +120 -0
  251. package/dist/record/host/types.d.mts +120 -0
  252. package/dist/record/host/types.d.ts +120 -0
  253. package/dist/record/project.json +6 -0
  254. package/dist/report/assets/styles.css +80 -0
  255. package/dist/report/cli/contribution.cjs +325 -0
  256. package/dist/report/cli/contribution.cjs.map +1 -0
  257. package/dist/report/cli/contribution.d.cts +143 -0
  258. package/dist/report/cli/contribution.d.mts +143 -0
  259. package/dist/report/cli/contribution.d.ts +143 -0
  260. package/dist/report/cli/contribution.js +12 -0
  261. package/dist/report/cli/contribution.js.map +1 -0
  262. package/dist/report/client-dist/app.js +9 -9
  263. package/dist/report/components/attempt-detail/content.cjs +1 -1
  264. package/dist/report/components/attempt-detail/content.cjs.map +1 -1
  265. package/dist/report/components/entity-lists/compute.cjs +5 -0
  266. package/dist/report/components/entity-lists/compute.cjs.map +1 -1
  267. package/dist/report/components/entity-lists/compute.d.cts +2 -0
  268. package/dist/report/components/entity-lists/compute.d.mts +2 -0
  269. package/dist/report/components/entity-lists/compute.d.ts +2 -0
  270. package/dist/report/components/entity-lists/content.cjs +35 -12
  271. package/dist/report/components/entity-lists/content.cjs.map +1 -1
  272. package/dist/report/components/entity-lists/index.cjs +0 -3
  273. package/dist/report/components/entity-lists/index.cjs.map +1 -1
  274. package/dist/report/components/summaries/index.cjs +2 -4
  275. package/dist/report/components/summaries/index.cjs.map +1 -1
  276. package/dist/report/definition/cell.cjs +7 -2
  277. package/dist/report/definition/cell.cjs.map +1 -1
  278. package/dist/report/definition/cell.d.cts +2 -0
  279. package/dist/report/definition/cell.d.mts +2 -0
  280. package/dist/report/definition/cell.d.ts +2 -0
  281. package/dist/report/definition/primitives/assertion-evidence.cjs +190 -4
  282. package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -1
  283. package/dist/report/definition/primitives/assertion-evidence.d.cts +4 -0
  284. package/dist/report/definition/primitives/assertion-evidence.d.mts +4 -0
  285. package/dist/report/definition/primitives/assertion-evidence.d.ts +4 -0
  286. package/dist/report/execution/machine.cjs +2 -3
  287. package/dist/report/execution/machine.cjs.map +1 -1
  288. package/dist/report/execution/machine.d.cts +11 -8
  289. package/dist/report/execution/machine.d.mts +11 -8
  290. package/dist/report/execution/machine.d.ts +11 -8
  291. package/dist/report/host/from-record.cjs +13 -8
  292. package/dist/report/host/from-record.cjs.map +1 -1
  293. package/dist/report/host/index.cjs +5 -1
  294. package/dist/report/host/index.cjs.map +1 -1
  295. package/dist/report/host/index.d.cts +1 -0
  296. package/dist/report/host/index.d.mts +1 -0
  297. package/dist/report/host/index.d.ts +1 -0
  298. package/dist/report/host/index.js +8 -2
  299. package/dist/report/host/index.mjs +8 -2
  300. package/dist/report/host/machine.cjs +23 -22
  301. package/dist/report/host/machine.cjs.map +1 -1
  302. package/dist/report/host/machine.d.cts +1 -1
  303. package/dist/report/host/machine.d.mts +1 -1
  304. package/dist/report/host/machine.d.ts +1 -1
  305. package/dist/report/host/node/loader.cjs +4 -2
  306. package/dist/report/host/node/loader.cjs.map +1 -1
  307. package/dist/report/host/node/loader.d.cts +3 -1
  308. package/dist/report/host/node/loader.d.mts +3 -1
  309. package/dist/report/host/node/loader.d.ts +3 -1
  310. package/dist/report/host/node.cjs +44 -9
  311. package/dist/report/host/node.cjs.map +1 -1
  312. package/dist/report/host/node.d.cts +13 -3
  313. package/dist/report/host/node.d.mts +13 -3
  314. package/dist/report/host/node.d.ts +13 -3
  315. package/dist/report/host/node.js +44 -32
  316. package/dist/report/host/operations.cjs +14 -0
  317. package/dist/report/host/operations.cjs.map +1 -0
  318. package/dist/report/host/operations.d.cts +39 -0
  319. package/dist/report/host/operations.d.mts +39 -0
  320. package/dist/report/host/operations.d.ts +39 -0
  321. package/dist/report/host/operations.js +10 -0
  322. package/dist/report/host/operations.js.map +1 -0
  323. package/dist/report/model/chart/plot.cjs +1 -1
  324. package/dist/report/model/chart/plot.cjs.map +1 -1
  325. package/dist/report/model/locale.cjs +4 -0
  326. package/dist/report/model/locale.cjs.map +1 -1
  327. package/dist/report/model/locale.d.cts +3 -1
  328. package/dist/report/model/locale.d.mts +3 -1
  329. package/dist/report/model/locale.d.ts +3 -1
  330. package/dist/report/react/styles.css +80 -0
  331. package/dist/runner/build-preparation.cjs +5 -5
  332. package/dist/runner/build-preparation.cjs.map +1 -1
  333. package/dist/runner/build-preparation.d.cts +2 -3
  334. package/dist/runner/build-preparation.d.mts +2 -3
  335. package/dist/runner/build-preparation.d.ts +2 -3
  336. package/dist/runner/feedback/coordinator.cjs +18 -15
  337. package/dist/runner/feedback/coordinator.cjs.map +1 -1
  338. package/dist/runner/feedback/coordinator.d.cts +6 -0
  339. package/dist/runner/feedback/coordinator.d.mts +6 -0
  340. package/dist/runner/feedback/coordinator.d.ts +6 -0
  341. package/dist/runner/ledger.cjs +3 -13
  342. package/dist/runner/ledger.cjs.map +1 -1
  343. package/dist/runner/ledger.d.cts +1 -3
  344. package/dist/runner/ledger.d.mts +1 -3
  345. package/dist/runner/ledger.d.ts +1 -3
  346. package/dist/runner/run.cjs +63 -18
  347. package/dist/runner/run.cjs.map +1 -1
  348. package/dist/runner/session.cjs +10 -0
  349. package/dist/runner/session.cjs.map +1 -1
  350. package/dist/runner/session.d.cts +25 -0
  351. package/dist/runner/session.d.mts +25 -0
  352. package/dist/runner/session.d.ts +25 -0
  353. package/dist/runner/types.cjs.map +1 -1
  354. package/dist/runner/types.d.cts +1 -2
  355. package/dist/runner/types.d.mts +1 -2
  356. package/dist/runner/types.d.ts +1 -2
  357. package/dist/sandbox/build-coordinator.cjs +38 -19
  358. package/dist/sandbox/build-coordinator.cjs.map +1 -1
  359. package/dist/sandbox/build-coordinator.d.cts +47 -7
  360. package/dist/sandbox/build-coordinator.d.mts +47 -7
  361. package/dist/sandbox/build-coordinator.d.ts +47 -7
  362. package/dist/sandbox/build-coordinator.js +8 -4
  363. package/dist/sandbox/cli/contribution.cjs +128 -0
  364. package/dist/sandbox/cli/contribution.cjs.map +1 -0
  365. package/dist/sandbox/cli/contribution.d.cts +71 -0
  366. package/dist/sandbox/cli/contribution.d.mts +71 -0
  367. package/dist/sandbox/cli/contribution.d.ts +71 -0
  368. package/dist/sandbox/cli/contribution.js +8 -0
  369. package/dist/sandbox/cli/contribution.js.map +1 -0
  370. package/dist/sandbox/cli-commands.cjs +14 -21
  371. package/dist/sandbox/cli-commands.cjs.map +1 -1
  372. package/dist/sandbox/cli-commands.d.cts +12 -8
  373. package/dist/sandbox/cli-commands.d.mts +12 -8
  374. package/dist/sandbox/cli-commands.d.ts +12 -8
  375. package/dist/sandbox/compose.cjs +22 -2
  376. package/dist/sandbox/compose.cjs.map +1 -1
  377. package/dist/sandbox/compose.d.cts +1 -1
  378. package/dist/sandbox/compose.d.mts +1 -1
  379. package/dist/sandbox/compose.d.ts +1 -1
  380. package/dist/sandbox/docker-profile/cli.cjs +13 -9
  381. package/dist/sandbox/docker-profile/cli.cjs.map +1 -1
  382. package/dist/sandbox/docker-profile/cli.d.cts +2 -0
  383. package/dist/sandbox/docker-profile/cli.d.mts +2 -0
  384. package/dist/sandbox/docker-profile/cli.d.ts +2 -0
  385. package/dist/sandbox/docker-profile/runtime.cjs +68 -7
  386. package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
  387. package/dist/sandbox/docker-profile/runtime.d.cts +19 -1
  388. package/dist/sandbox/docker-profile/runtime.d.mts +19 -1
  389. package/dist/sandbox/docker-profile/runtime.d.ts +19 -1
  390. package/dist/sandbox/docker-profile/runtime.js +10 -8
  391. package/dist/sandbox/docker-profile/schema.cjs +68 -19
  392. package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
  393. package/dist/sandbox/docker-profile/schema.d.cts +23 -9
  394. package/dist/sandbox/docker-profile/schema.d.mts +23 -9
  395. package/dist/sandbox/docker-profile/schema.d.ts +23 -9
  396. package/dist/sandbox/docker-task-build-cache.cjs +532 -0
  397. package/dist/sandbox/docker-task-build-cache.cjs.map +1 -0
  398. package/dist/sandbox/docker-task-build-cache.d.cts +68 -0
  399. package/dist/sandbox/docker-task-build-cache.d.mts +68 -0
  400. package/dist/sandbox/docker-task-build-cache.d.ts +68 -0
  401. package/dist/sandbox/docker-task-build-cache.js +20 -0
  402. package/dist/sandbox/docker-task-build-cache.js.map +1 -0
  403. package/dist/sandbox/docker.cjs +50 -0
  404. package/dist/sandbox/docker.cjs.map +1 -1
  405. package/dist/sandbox/docker.d.cts +15 -0
  406. package/dist/sandbox/docker.d.mts +15 -0
  407. package/dist/sandbox/docker.d.ts +15 -0
  408. package/dist/sandbox/dockerfile-build.cjs +55 -5
  409. package/dist/sandbox/dockerfile-build.cjs.map +1 -1
  410. package/dist/sandbox/dockerfile-build.d.cts +2 -2
  411. package/dist/sandbox/dockerfile-build.d.mts +2 -2
  412. package/dist/sandbox/dockerfile-build.d.ts +2 -2
  413. package/dist/sandbox/index.cjs +5 -3
  414. package/dist/sandbox/index.cjs.map +1 -1
  415. package/dist/sandbox/index.d.cts +4 -3
  416. package/dist/sandbox/index.d.mts +4 -3
  417. package/dist/sandbox/index.d.ts +4 -3
  418. package/dist/sandbox/index.js +16 -14
  419. package/dist/sandbox/index.mjs +16 -14
  420. package/dist/sandbox/keep.cjs +1 -3
  421. package/dist/sandbox/keep.cjs.map +1 -1
  422. package/dist/sandbox/layer.cjs +70 -79
  423. package/dist/sandbox/layer.cjs.map +1 -1
  424. package/dist/sandbox/layer.d.cts +6 -12
  425. package/dist/sandbox/layer.d.mts +6 -12
  426. package/dist/sandbox/layer.d.ts +6 -12
  427. package/dist/sandbox/layer.js +16 -18
  428. package/dist/sandbox/ledger-paths.cjs +4 -18
  429. package/dist/sandbox/ledger-paths.cjs.map +1 -1
  430. package/dist/sandbox/ledger-paths.d.cts +3 -13
  431. package/dist/sandbox/ledger-paths.d.mts +3 -13
  432. package/dist/sandbox/ledger-paths.d.ts +3 -13
  433. package/dist/sandbox/ledger-paths.js +4 -8
  434. package/dist/sandbox/registry.cjs +1 -1
  435. package/dist/sandbox/registry.cjs.map +1 -1
  436. package/dist/sandbox/runtime.cjs +27 -37
  437. package/dist/sandbox/runtime.cjs.map +1 -1
  438. package/dist/sandbox/runtime.d.cts +1 -2
  439. package/dist/sandbox/runtime.d.mts +1 -2
  440. package/dist/sandbox/runtime.d.ts +1 -2
  441. package/dist/sandbox/runtime.js +6 -8
  442. package/dist/sandbox/types.cjs.map +1 -1
  443. package/dist/sandbox/types.d.cts +3 -3
  444. package/dist/sandbox/types.d.mts +3 -3
  445. package/dist/sandbox/types.d.ts +3 -3
  446. package/dist/sources/project.json +6 -0
  447. package/dist/vendor/remark/remark-gfm.cjs +72 -72
  448. package/dist/vendor/remark/remark-gfm.cjs.map +1 -1
  449. package/dist/vendor/remark/remark-parse.cjs +54 -54
  450. package/dist/vendor/remark/remark-parse.cjs.map +1 -1
  451. package/dist/vendor/remark/remark.cjs +125 -125
  452. package/dist/vendor/remark/remark.cjs.map +2 -2
  453. package/docs-site/zh/README.md +1 -1
  454. package/docs-site/zh/explanation/assert.mdx +4 -0
  455. package/docs-site/zh/explanation/judge.mdx +40 -9
  456. package/docs-site/zh/reference/cli.mdx +67 -43
  457. package/docs-site/zh/reference/define-agent.mdx +2 -2
  458. package/docs-site/zh/reference/report-components.mdx +4 -3
  459. package/docs-site/zh/troubleshooting/debug-sandbox.mdx +6 -0
  460. package/docs-site/zh/troubleshooting/debugging.mdx +28 -1
  461. package/docs-site/zh/tutorials/agent-feedback-loop.mdx +4 -2
  462. package/docs-site/zh/tutorials/concurrency.mdx +2 -2
  463. package/docs-site/zh/tutorials/custom-reports.mdx +175 -9
  464. package/docs-site/zh/tutorials/docker-in-docker.mdx +52 -7
  465. package/docs-site/zh/tutorials/eval-groups.mdx +1 -2
  466. package/docs-site/zh/tutorials/evaluation-kinds.mdx +39 -6
  467. package/docs-site/zh/tutorials/nixos-managed-dind.mdx +14 -5
  468. package/docs-site/zh/tutorials/sandbox-providers.mdx +1 -28
  469. package/docs-site/zh/tutorials/sandbox-reuse.mdx +1 -1
  470. package/docs-site/zh/tutorials/viewing-results.mdx +2 -0
  471. package/package.json +24 -19
  472. package/README.md +0 -176
  473. package/README.zh.md +0 -176
  474. package/dist/cli/record.cjs +0 -246
  475. package/dist/cli/record.cjs.map +0 -1
  476. package/dist/cli/record.d.cts +0 -40
  477. package/dist/cli/record.d.mts +0 -40
  478. package/dist/cli/record.d.ts +0 -40
  479. package/dist/cli/record.js +0 -10
  480. package/dist/cli/record.js.map +0 -1
  481. package/dist/sandbox/local.cjs +0 -361
  482. package/dist/sandbox/local.cjs.map +0 -1
  483. package/dist/sandbox/local.d.cts +0 -80
  484. package/dist/sandbox/local.d.mts +0 -80
  485. package/dist/sandbox/local.d.ts +0 -80
  486. package/dist/sandbox/local.js +0 -6
  487. package/dist/sandbox/local.js.map +0 -1
@@ -118,6 +118,7 @@ const CapacitySchema = plainStruct({
118
118
  pids: positiveSafeInteger("DockerProfileCapacityPids"),
119
119
  maxContainers: positiveSafeInteger("DockerProfileCapacityMaxContainers"),
120
120
  maxBuilds: positiveSafeInteger("DockerProfileCapacityMaxBuilds"),
121
+ ephemeralDiskBytes: positiveSafeInteger("DockerProfileCapacityEphemeralDiskBytes"),
121
122
  aggregate: plainStruct({
122
123
  cpus: positiveFinite("DockerProfileAggregateCpus"),
123
124
  memoryBytes: positiveSafeInteger("DockerProfileAggregateMemoryBytes"),
@@ -134,7 +135,7 @@ const CapacitySchema = plainStruct({
134
135
  exports.DockerExecutionProfileV1Schema = plainStruct({
135
136
  schemaVersion: effect_1.Schema.Literal(1),
136
137
  profileId: nonEmptyString("DockerProfileId"),
137
- securityLevel: effect_1.Schema.Literal("managed-rootless/v1", "managed-vm-rootless/v1"),
138
+ securityLevel: effect_1.Schema.Literal("managed-rootless/v1", "raw-dind-storage/v1"),
138
139
  semanticPolicyRevision: nonEmptyString("DockerProfileSemanticPolicyRevision"),
139
140
  transport: plainStruct({
140
141
  kind: effect_1.Schema.Literal("unix"),
@@ -158,6 +159,11 @@ exports.DockerExecutionProfileV1Schema = plainStruct({
158
159
  mountPath: absolutePath("DockerProfileMountPath"),
159
160
  dockerRootDir: absolutePath("DockerProfileDockerRootDir"),
160
161
  limitBytes: positiveSafeInteger("DockerProfileFilesystemLimitBytes"),
162
+ dockerDataPool: plainStruct({
163
+ count: positiveSafeInteger("DockerProfileDockerDataSlotCount"),
164
+ bytesPerAllocation: positiveSafeInteger("DockerProfileDockerDataAllocationLimitBytes"),
165
+ attestation: effect_1.Schema.Literal("linux-project-quota/v1"),
166
+ }),
161
167
  }),
162
168
  cgroup: plainStruct({
163
169
  aggregatePath: absolutePath("DockerProfileAggregatePath"),
@@ -166,14 +172,20 @@ exports.DockerExecutionProfileV1Schema = plainStruct({
166
172
  }),
167
173
  }),
168
174
  capacity: CapacitySchema,
169
- policy: plainStruct({
175
+ policy: effect_1.Schema.Union(plainStruct({
176
+ level: effect_1.Schema.Literal("raw-dind-storage/v1"),
177
+ privilegedTranslation: effect_1.Schema.Literal("host-daemon"),
178
+ dockerData: effect_1.Schema.Literal("private-project-quota-allocation/v1"),
179
+ }), plainStruct({
180
+ level: effect_1.Schema.Literal("managed-rootless/v1"),
170
181
  hostLoopback: effect_1.Schema.Literal(false),
171
182
  tcpDockerEndpoint: effect_1.Schema.Literal(false),
172
183
  outerSocketInjection: effect_1.Schema.Literal(false),
173
184
  privilegedTranslation: effect_1.Schema.Literal("rootless-userns"),
174
185
  writableRoot: effect_1.Schema.Literal("declared-tmpfs-only"),
186
+ dockerData: effect_1.Schema.Literal("private-project-quota-allocation/v1"),
175
187
  network: NetworkSchema,
176
- }),
188
+ })),
177
189
  });
178
190
  exports.DockerExecutionProfileSchema = exports.DockerExecutionProfileV1Schema;
179
191
  function frozenNonEmptyStrings(values) {
@@ -194,7 +206,10 @@ function freezeProfile(profile) {
194
206
  backend: Object.freeze({
195
207
  ...profile.backend,
196
208
  owner: Object.freeze({ ...profile.backend.owner }),
197
- filesystem: Object.freeze({ ...profile.backend.filesystem }),
209
+ filesystem: Object.freeze({
210
+ ...profile.backend.filesystem,
211
+ dockerDataPool: Object.freeze({ ...profile.backend.filesystem.dockerDataPool }),
212
+ }),
198
213
  cgroup: Object.freeze({ ...profile.backend.cgroup, controllers: PROFILE_CONTROLLERS }),
199
214
  }),
200
215
  capacity: Object.freeze({
@@ -202,21 +217,23 @@ function freezeProfile(profile) {
202
217
  memorySwapBytes: 0,
203
218
  aggregate: Object.freeze({ ...profile.capacity.aggregate, memorySwapBytes: 0 }),
204
219
  }),
205
- policy: Object.freeze({
206
- ...profile.policy,
207
- network: Object.freeze({
208
- ...profile.policy.network,
209
- dns: Object.freeze({
210
- ...profile.policy.network.dns,
211
- servers: frozenNonEmptyStrings(profile.policy.network.dns.servers),
212
- }),
213
- egress: Object.freeze({
214
- ...profile.policy.network.egress,
215
- allowedProtocols: NETWORK_ALLOWED_PROTOCOLS,
216
- denyCidrs: exports.DOCKER_PROFILE_NETWORK_DENY_CIDRS,
220
+ policy: profile.policy.level === "raw-dind-storage/v1"
221
+ ? Object.freeze({ ...profile.policy })
222
+ : Object.freeze({
223
+ ...profile.policy,
224
+ network: Object.freeze({
225
+ ...profile.policy.network,
226
+ dns: Object.freeze({
227
+ ...profile.policy.network.dns,
228
+ servers: frozenNonEmptyStrings(profile.policy.network.dns.servers),
229
+ }),
230
+ egress: Object.freeze({
231
+ ...profile.policy.network.egress,
232
+ allowedProtocols: NETWORK_ALLOWED_PROTOCOLS,
233
+ denyCidrs: exports.DOCKER_PROFILE_NETWORK_DENY_CIDRS,
234
+ }),
217
235
  }),
218
236
  }),
219
- }),
220
237
  });
221
238
  }
222
239
  function semanticPolicyJson(input) {
@@ -230,12 +247,18 @@ function semanticPolicyJson(input) {
230
247
  controllers: [...input.backend.cgroup.controllers],
231
248
  },
232
249
  },
233
- policy: {
250
+ policy: input.policy.level === "raw-dind-storage/v1" ? {
251
+ level: input.policy.level,
252
+ privilegedTranslation: input.policy.privilegedTranslation,
253
+ dockerData: input.policy.dockerData,
254
+ } : {
255
+ level: input.policy.level,
234
256
  hostLoopback: input.policy.hostLoopback,
235
257
  tcpDockerEndpoint: input.policy.tcpDockerEndpoint,
236
258
  outerSocketInjection: input.policy.outerSocketInjection,
237
259
  privilegedTranslation: input.policy.privilegedTranslation,
238
260
  writableRoot: input.policy.writableRoot,
261
+ dockerData: input.policy.dockerData,
239
262
  network: {
240
263
  version: input.policy.network.version,
241
264
  dns: { mode: input.policy.network.dns.mode, servers: [...input.policy.network.dns.servers] },
@@ -308,6 +331,26 @@ function parseDockerExecutionProfileV1(value) {
308
331
  if (effect_1.Either.isLeft(decoded))
309
332
  throw schemaError(value, decoded.left);
310
333
  const profile = freezeProfile(decoded.right);
334
+ if (profile.backend.filesystem.dockerDataPool.count < profile.capacity.maxContainers ||
335
+ profile.backend.filesystem.dockerDataPool.count *
336
+ profile.backend.filesystem.dockerDataPool.bytesPerAllocation < profile.capacity.ephemeralDiskBytes) {
337
+ throw (0, errors_ts_1.dockerProfileError)({
338
+ code: "sandbox.docker-profile-capacity-invalid",
339
+ path: "profile.backend.filesystem.dockerDataPool",
340
+ message: "Docker data allocations must cover maxContainers and allocatable ephemeralDiskBytes",
341
+ });
342
+ }
343
+ const rawStorage = profile.securityLevel === "raw-dind-storage/v1";
344
+ if (profile.policy.level !== profile.securityLevel ||
345
+ (rawStorage
346
+ ? profile.policy.privilegedTranslation !== "host-daemon"
347
+ : profile.policy.privilegedTranslation !== "rootless-userns")) {
348
+ throw (0, errors_ts_1.dockerProfileError)({
349
+ code: "sandbox.docker-profile-security-level-unsupported",
350
+ path: "profile.policy",
351
+ message: "Docker profile policy level and privileged translation must match its security level",
352
+ });
353
+ }
311
354
  const expected = dockerExecutionProfileSemanticPolicyRevisionOf(profile);
312
355
  if (profile.semanticPolicyRevision !== expected) {
313
356
  throw (0, errors_ts_1.dockerProfileError)({
@@ -361,12 +404,18 @@ function canonicalJson(profile) {
361
404
  ...profile.capacity,
362
405
  aggregate: { ...profile.capacity.aggregate },
363
406
  },
364
- policy: {
407
+ policy: profile.policy.level === "raw-dind-storage/v1" ? {
408
+ level: profile.policy.level,
409
+ privilegedTranslation: profile.policy.privilegedTranslation,
410
+ dockerData: profile.policy.dockerData,
411
+ } : {
412
+ level: profile.policy.level,
365
413
  hostLoopback: profile.policy.hostLoopback,
366
414
  tcpDockerEndpoint: profile.policy.tcpDockerEndpoint,
367
415
  outerSocketInjection: profile.policy.outerSocketInjection,
368
416
  privilegedTranslation: profile.policy.privilegedTranslation,
369
417
  writableRoot: profile.policy.writableRoot,
418
+ dockerData: profile.policy.dockerData,
370
419
  network: {
371
420
  version: profile.policy.network.version,
372
421
  dns: { mode: profile.policy.network.dns.mode, servers: [...profile.policy.network.dns.servers] },
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { Either, ParseResult, Schema } from \"effect\";\nimport { isIP } from \"node:net\";\nimport { isAbsolute } from \"node:path\";\nimport { digestOf } from \"../identity.ts\";\nimport type { JsonValue } from \"../../shared/types.ts\";\nimport { dockerProfileError, type DockerProfileError } from \"./errors.ts\";\nexport const DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION: 1 = 1;\nexport const DOCKER_PROFILE_SCHEMA_VERSION = DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION;\nexport const DOCKER_PROFILE_NETWORK_POLICY_VERSION: 1 = 1;\nexport const DOCKER_PROFILE_NETWORK_DENY_CIDRS: readonly [\n string,\n ...string[]\n] = Object.freeze([\n \"0.0.0.0/8\", \"10.0.0.0/8\", \"100.64.0.0/10\", \"127.0.0.0/8\", \"169.254.0.0/16\",\n \"172.16.0.0/12\", \"192.0.0.0/24\", \"192.0.2.0/24\", \"192.168.0.0/16\",\n \"198.18.0.0/15\", \"198.51.100.0/24\", \"203.0.113.0/24\", \"224.0.0.0/4\",\n \"240.0.0.0/4\", \"::/0\",\n]);\nconst NETWORK_ALLOWED_PROTOCOLS: readonly [\n \"dns\",\n \"https\"\n] = Object.freeze([\"dns\", \"https\"]);\nconst PROFILE_CONTROLLERS: readonly [\n \"cpu\",\n \"memory\",\n \"pids\"\n] = Object.freeze([\n \"cpu\", \"memory\", \"pids\",\n]);\nexport type DockerExecutionProfileSecurityLevel = \"managed-rootless/v1\" | \"managed-vm-rootless/v1\";\nexport interface DockerProfileUnixEndpoint {\n readonly path: string;\n readonly peerUid: number;\n}\n/** Callback-free descriptor data that crosses the host deployment trust boundary. */\nexport interface DockerProfileNetworkPolicy {\n readonly version: 1;\n readonly dns: {\n readonly mode: \"explicit\";\n readonly servers: readonly [\n string,\n ...string[]\n ];\n };\n readonly egress: {\n readonly mode: \"rootless-nat\";\n readonly allowedProtocols: readonly [\n \"dns\",\n \"https\"\n ];\n readonly denyPrivateNetworks: true;\n readonly denySiblingSyntheticEndpoints: true;\n readonly denyCidrs: readonly [\n string,\n ...string[]\n ];\n readonly ipv6: \"disabled\";\n readonly disableHostLoopback: true;\n readonly portDriver: \"none\";\n readonly daemonBridge: \"none\";\n readonly exclusiveNetwork: true;\n readonly icc: false;\n };\n}\nexport interface DockerExecutionProfileV1 {\n readonly schemaVersion: 1;\n readonly profileId: string;\n readonly securityLevel: DockerExecutionProfileSecurityLevel;\n readonly semanticPolicyRevision: string;\n readonly transport: {\n readonly kind: \"unix\";\n readonly hostMachineIdentity: string;\n readonly dockerSocket: DockerProfileUnixEndpoint;\n readonly controlSocket: DockerProfileUnixEndpoint & {\n readonly protocol: \"niceeval-docker-profile-control/v1\";\n };\n };\n readonly backend: {\n readonly kind: \"local-systemd\" | \"dedicated-linux-vm\";\n readonly machineIdentity: string;\n readonly owner: {\n readonly uid: number;\n readonly gid: number;\n };\n readonly filesystem: {\n readonly identity: string;\n readonly mountPath: string;\n readonly dockerRootDir: string;\n readonly limitBytes: number;\n };\n readonly cgroup: {\n readonly aggregatePath: string;\n readonly policyRevision: string;\n readonly controllers: readonly [\n \"cpu\",\n \"memory\",\n \"pids\"\n ];\n };\n };\n readonly capacity: {\n readonly cpus: number;\n readonly memoryBytes: number;\n readonly memorySwapBytes: 0;\n readonly pids: number;\n readonly maxContainers: number;\n readonly maxBuilds: number;\n readonly aggregate: {\n readonly cpus: number;\n readonly memoryBytes: number;\n readonly memorySwapBytes: 0;\n readonly pids: number;\n };\n };\n readonly policy: {\n readonly hostLoopback: false;\n readonly tcpDockerEndpoint: false;\n readonly outerSocketInjection: false;\n readonly privilegedTranslation: \"rootless-userns\";\n readonly writableRoot: \"declared-tmpfs-only\";\n readonly network: DockerProfileNetworkPolicy;\n };\n}\nexport type DockerExecutionProfileV1Draft = Omit<DockerExecutionProfileV1, \"semanticPolicyRevision\">;\n/** A deliberately narrow view: never exposes host endpoints, paths, owners, or policy. */\nexport interface DockerProfilePublicSummary {\n readonly schemaVersion: 1;\n readonly profileId: string;\n readonly securityLevel: DockerExecutionProfileSecurityLevel;\n readonly semanticPolicyRevision: string;\n readonly capacity: DockerExecutionProfileV1[\"capacity\"];\n}\ntype DockerExecutionProfileSemanticInput = Pick<DockerExecutionProfileV1, \"securityLevel\" | \"backend\" | \"policy\">;\nconst ParseOptions = Object.freeze({\n errors: \"all\" as const,\n exact: true,\n onExcessProperty: \"error\" as const,\n});\ntype PlainObject = Readonly<Record<PropertyKey, unknown>>;\nconst PlainObjectSchema = Schema.declare<PlainObject>((value): value is PlainObject => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}, {\n identifier: \"DockerProfilePlainObject\",\n description: \"a plain object or null-prototype record\",\n});\nconst plainStruct = <Fields extends Schema.Struct.Fields>(fields: Fields) => Schema.compose(Schema.Struct(fields), { strict: false })(PlainObjectSchema);\nconst nonEmptyString = (identifier: string) => Schema.String.pipe(Schema.filter((value) => value.trim() !== \"\" && !value.includes(\"\\0\"), { identifier, description: \"a non-empty string without NUL\" }));\nconst absolutePath = (identifier: string) => nonEmptyString(identifier).pipe(Schema.filter(isAbsolute, { identifier, description: \"an absolute path\" }));\nconst nonNegativeSafeInteger = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isSafeInteger(value) && value >= 0, { identifier, description: \"a non-negative safe integer\" }));\nconst positiveSafeInteger = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isSafeInteger(value) && value > 0, { identifier, description: \"a positive safe integer\" }));\nconst positiveFinite = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isFinite(value) && value > 0, { identifier, description: \"a positive finite number\" }));\nfunction isPublicDnsServer(value: string): boolean {\n const kind = isIP(value);\n if (kind === 4) {\n const [first, second, third] = value.split(\".\").map(Number);\n if (first === undefined || second === undefined || third === undefined)\n return false;\n if (first === 0 || first === 10 || first === 127 || first >= 224)\n return false;\n if (first === 100 && second >= 64 && second <= 127)\n return false;\n if (first === 169 && second === 254)\n return false;\n if (first === 172 && second >= 16 && second <= 31)\n return false;\n if (first === 192 && second === 168)\n return false;\n if (first === 192 && second === 0 && (third === 0 || third === 2))\n return false;\n if (first === 198 && (second === 18 || second === 19))\n return false;\n if (first === 198 && second === 51 && third === 100)\n return false;\n return !(first === 203 && second === 0 && third === 113);\n }\n if (kind !== 6)\n return false;\n const normalized = value.toLowerCase();\n if (normalized.startsWith(\"::ffff:\")) {\n return isPublicDnsServer(normalized.slice(\"::ffff:\".length));\n }\n return normalized !== \"::\" && normalized !== \"::1\" &&\n !normalized.startsWith(\"fc\") && !normalized.startsWith(\"fd\") &&\n !normalized.startsWith(\"fe8\") && !normalized.startsWith(\"fe9\") &&\n !normalized.startsWith(\"fea\") && !normalized.startsWith(\"feb\") &&\n !normalized.startsWith(\"ff\") && !normalized.startsWith(\"2001:db8:\");\n}\nconst DnsServerSchema = nonEmptyString(\"DockerProfilePublicDnsServer\").pipe(Schema.filter(isPublicDnsServer, {\n identifier: \"DockerProfilePublicDnsServer\",\n description: \"a public IP address, not a private or synthetic endpoint\",\n}));\nconst CidrsSchema = Schema.NonEmptyArray(Schema.String).pipe(Schema.filter((value) => value.length === DOCKER_PROFILE_NETWORK_DENY_CIDRS.length &&\n value.every((cidr, index) => cidr === DOCKER_PROFILE_NETWORK_DENY_CIDRS[index]), { identifier: \"DockerProfileDenyCidrs\", description: \"the v1 fail-closed CIDR set\" }));\nconst EndpointSchema = plainStruct({\n path: absolutePath(\"DockerProfileSocketPath\"),\n peerUid: nonNegativeSafeInteger(\"DockerProfilePeerUid\"),\n});\nconst NetworkSchema = plainStruct({\n version: Schema.Literal(1),\n dns: plainStruct({\n mode: Schema.Literal(\"explicit\"),\n servers: Schema.NonEmptyArray(DnsServerSchema),\n }),\n egress: plainStruct({\n mode: Schema.Literal(\"rootless-nat\"),\n allowedProtocols: Schema.Tuple(Schema.Literal(\"dns\"), Schema.Literal(\"https\")),\n denyPrivateNetworks: Schema.Literal(true),\n denySiblingSyntheticEndpoints: Schema.Literal(true),\n denyCidrs: CidrsSchema,\n ipv6: Schema.Literal(\"disabled\"),\n disableHostLoopback: Schema.Literal(true),\n portDriver: Schema.Literal(\"none\"),\n daemonBridge: Schema.Literal(\"none\"),\n exclusiveNetwork: Schema.Literal(true),\n icc: Schema.Literal(false),\n }),\n});\nconst CapacitySchema = plainStruct({\n cpus: positiveFinite(\"DockerProfileCapacityCpus\"),\n memoryBytes: positiveSafeInteger(\"DockerProfileCapacityMemoryBytes\"),\n memorySwapBytes: Schema.Literal(0),\n pids: positiveSafeInteger(\"DockerProfileCapacityPids\"),\n maxContainers: positiveSafeInteger(\"DockerProfileCapacityMaxContainers\"),\n maxBuilds: positiveSafeInteger(\"DockerProfileCapacityMaxBuilds\"),\n aggregate: plainStruct({\n cpus: positiveFinite(\"DockerProfileAggregateCpus\"),\n memoryBytes: positiveSafeInteger(\"DockerProfileAggregateMemoryBytes\"),\n memorySwapBytes: Schema.Literal(0),\n pids: positiveSafeInteger(\"DockerProfileAggregatePids\"),\n }),\n}).pipe(Schema.filter((value) => value.aggregate.cpus >= value.cpus &&\n value.aggregate.memoryBytes >= value.memoryBytes &&\n value.aggregate.pids >= value.pids, {\n identifier: \"DockerProfileCapacity\",\n description: \"aggregate capacity at least as large as allocatable CPU, memory and PID capacity\",\n}));\n/** Wire structure only; semantic revision and frozen canonical values are checked after decode. */\nexport const DockerExecutionProfileV1Schema: Schema.Schema<DockerExecutionProfileV1, PlainObject> = plainStruct({\n schemaVersion: Schema.Literal(1),\n profileId: nonEmptyString(\"DockerProfileId\"),\n securityLevel: Schema.Literal(\"managed-rootless/v1\", \"managed-vm-rootless/v1\"),\n semanticPolicyRevision: nonEmptyString(\"DockerProfileSemanticPolicyRevision\"),\n transport: plainStruct({\n kind: Schema.Literal(\"unix\"),\n hostMachineIdentity: nonEmptyString(\"DockerProfileHostMachineIdentity\"),\n dockerSocket: EndpointSchema,\n controlSocket: plainStruct({\n path: absolutePath(\"DockerProfileControlSocketPath\"),\n peerUid: nonNegativeSafeInteger(\"DockerProfileControlPeerUid\"),\n protocol: Schema.Literal(\"niceeval-docker-profile-control/v1\"),\n }),\n }),\n backend: plainStruct({\n kind: Schema.Literal(\"local-systemd\", \"dedicated-linux-vm\"),\n machineIdentity: nonEmptyString(\"DockerProfileBackendMachineIdentity\"),\n owner: plainStruct({\n uid: nonNegativeSafeInteger(\"DockerProfileOwnerUid\"),\n gid: nonNegativeSafeInteger(\"DockerProfileOwnerGid\"),\n }),\n filesystem: plainStruct({\n identity: nonEmptyString(\"DockerProfileFilesystemIdentity\"),\n mountPath: absolutePath(\"DockerProfileMountPath\"),\n dockerRootDir: absolutePath(\"DockerProfileDockerRootDir\"),\n limitBytes: positiveSafeInteger(\"DockerProfileFilesystemLimitBytes\"),\n }),\n cgroup: plainStruct({\n aggregatePath: absolutePath(\"DockerProfileAggregatePath\"),\n policyRevision: nonEmptyString(\"DockerProfileCgroupPolicyRevision\"),\n controllers: Schema.Tuple(Schema.Literal(\"cpu\"), Schema.Literal(\"memory\"), Schema.Literal(\"pids\")),\n }),\n }),\n capacity: CapacitySchema,\n policy: plainStruct({\n hostLoopback: Schema.Literal(false),\n tcpDockerEndpoint: Schema.Literal(false),\n outerSocketInjection: Schema.Literal(false),\n privilegedTranslation: Schema.Literal(\"rootless-userns\"),\n writableRoot: Schema.Literal(\"declared-tmpfs-only\"),\n network: NetworkSchema,\n }),\n});\nexport const DockerExecutionProfileSchema = DockerExecutionProfileV1Schema;\nfunction frozenNonEmptyStrings(values: readonly string[]): readonly [\n string,\n ...string[]\n] {\n const [first, ...rest] = values;\n if (first === undefined)\n throw new Error(\"expected a non-empty string tuple\");\n return Object.freeze([first, ...rest]);\n}\n/** Canonicalize only after structural decoding; nested containers are immutable to callers. */\nfunction freezeProfile(profile: DockerExecutionProfileV1): DockerExecutionProfileV1 {\n return Object.freeze({\n ...profile,\n transport: Object.freeze({\n ...profile.transport,\n dockerSocket: Object.freeze({ ...profile.transport.dockerSocket }),\n controlSocket: Object.freeze({ ...profile.transport.controlSocket }),\n }),\n backend: Object.freeze({\n ...profile.backend,\n owner: Object.freeze({ ...profile.backend.owner }),\n filesystem: Object.freeze({ ...profile.backend.filesystem }),\n cgroup: Object.freeze({ ...profile.backend.cgroup, controllers: PROFILE_CONTROLLERS }),\n }),\n capacity: Object.freeze({\n ...profile.capacity,\n memorySwapBytes: 0,\n aggregate: Object.freeze({ ...profile.capacity.aggregate, memorySwapBytes: 0 }),\n }),\n policy: Object.freeze({\n ...profile.policy,\n network: Object.freeze({\n ...profile.policy.network,\n dns: Object.freeze({\n ...profile.policy.network.dns,\n servers: frozenNonEmptyStrings(profile.policy.network.dns.servers),\n }),\n egress: Object.freeze({\n ...profile.policy.network.egress,\n allowedProtocols: NETWORK_ALLOWED_PROTOCOLS,\n denyCidrs: DOCKER_PROFILE_NETWORK_DENY_CIDRS,\n }),\n }),\n }),\n });\n}\nfunction semanticPolicyJson(input: DockerExecutionProfileSemanticInput): JsonValue {\n return {\n schemaVersion: DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION,\n securityLevel: input.securityLevel,\n backend: {\n kind: input.backend.kind,\n cgroup: {\n policyRevision: input.backend.cgroup.policyRevision,\n controllers: [...input.backend.cgroup.controllers],\n },\n },\n policy: {\n hostLoopback: input.policy.hostLoopback,\n tcpDockerEndpoint: input.policy.tcpDockerEndpoint,\n outerSocketInjection: input.policy.outerSocketInjection,\n privilegedTranslation: input.policy.privilegedTranslation,\n writableRoot: input.policy.writableRoot,\n network: {\n version: input.policy.network.version,\n dns: { mode: input.policy.network.dns.mode, servers: [...input.policy.network.dns.servers] },\n egress: {\n mode: input.policy.network.egress.mode,\n allowedProtocols: [...input.policy.network.egress.allowedProtocols],\n denyPrivateNetworks: input.policy.network.egress.denyPrivateNetworks,\n denySiblingSyntheticEndpoints: input.policy.network.egress.denySiblingSyntheticEndpoints,\n denyCidrs: [...input.policy.network.egress.denyCidrs],\n ipv6: input.policy.network.egress.ipv6,\n disableHostLoopback: input.policy.network.egress.disableHostLoopback,\n portDriver: input.policy.network.egress.portDriver,\n daemonBridge: input.policy.network.egress.daemonBridge,\n exclusiveNetwork: input.policy.network.egress.exclusiveNetwork,\n icc: input.policy.network.egress.icc,\n },\n },\n },\n };\n}\nexport function dockerExecutionProfileSemanticPolicyRevisionOf(input: DockerExecutionProfileSemanticInput): string {\n return digestOf(semanticPolicyJson(input)).slice(0, 8);\n}\nexport const dockerProfileSemanticPolicyRevisionOf = dockerExecutionProfileSemanticPolicyRevisionOf;\nfunction formatSchemaPath(path: readonly PropertyKey[]): string {\n return path.reduce<string>((result, segment) => typeof segment === \"number\" ||\n (typeof segment === \"string\" && /^\\\\d+$/.test(segment))\n ? `${result}[${String(segment)}]`\n : `${result}.${String(segment)}`, \"profile\");\n}\nfunction schemaError(value: unknown, error: ParseResult.ParseError): DockerProfileError {\n const issue = ParseResult.ArrayFormatter.formatErrorSync(error)[0];\n const path = issue === undefined ? \"profile\" : formatSchemaPath(issue.path);\n const root = typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? value as Record<string, unknown>\n : undefined;\n if (path === \"profile.schemaVersion\") {\n if (root?.schemaVersion === undefined) {\n return dockerProfileError({\n code: \"sandbox.docker-profile-schema-invalid\",\n path,\n message: \"profile.schemaVersion is required\",\n });\n }\n return dockerProfileError({\n code: \"sandbox.docker-profile-unknown-version\",\n path,\n message: `Unsupported Docker execution profile schema version ${JSON.stringify(root.schemaVersion)}; expected 1`,\n });\n }\n if (path === \"profile.securityLevel\") {\n return dockerProfileError({\n code: \"sandbox.docker-profile-security-level-unsupported\",\n path,\n message: `Unsupported Docker execution profile security level ${JSON.stringify(root?.securityLevel)}`,\n });\n }\n return dockerProfileError({\n code: path === \"profile.capacity\"\n ? \"sandbox.docker-profile-capacity-invalid\"\n : \"sandbox.docker-profile-schema-invalid\",\n path,\n message: issue === undefined\n ? \"profile is not a valid Docker execution profile v1\"\n : `${path} ${issue.message}`,\n });\n}\nexport function parseDockerExecutionProfileV1(value: unknown): DockerExecutionProfileV1 {\n const decoded = Schema.decodeUnknownEither(DockerExecutionProfileV1Schema, ParseOptions)(value);\n if (Either.isLeft(decoded))\n throw schemaError(value, decoded.left);\n const profile = freezeProfile(decoded.right);\n const expected = dockerExecutionProfileSemanticPolicyRevisionOf(profile);\n if (profile.semanticPolicyRevision !== expected) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-semantic-policy-mismatch\",\n path: \"profile.semanticPolicyRevision\",\n message: `profile.semanticPolicyRevision does not match the canonical semantic policy revision ${expected}`,\n details: { expected, actual: profile.semanticPolicyRevision },\n });\n }\n return profile;\n}\nexport const parseDockerExecutionProfile = parseDockerExecutionProfileV1;\nexport const decodeDockerExecutionProfileV1 = parseDockerExecutionProfileV1;\nexport function makeDockerExecutionProfileV1(input: DockerExecutionProfileV1Draft): DockerExecutionProfileV1 {\n return parseDockerExecutionProfileV1({\n ...input,\n semanticPolicyRevision: dockerExecutionProfileSemanticPolicyRevisionOf(input),\n });\n}\nexport const createDockerExecutionProfileV1 = makeDockerExecutionProfileV1;\nexport function isDockerExecutionProfileV1(value: unknown): value is DockerExecutionProfileV1 {\n try {\n parseDockerExecutionProfileV1(value);\n return true;\n }\n catch {\n return false;\n }\n}\n/** Digest the fixed v1 wire shape, not incidental object insertion order. */\nfunction canonicalJson(profile: DockerExecutionProfileV1): JsonValue {\n return {\n schemaVersion: profile.schemaVersion,\n profileId: profile.profileId,\n securityLevel: profile.securityLevel,\n semanticPolicyRevision: profile.semanticPolicyRevision,\n transport: {\n kind: profile.transport.kind,\n hostMachineIdentity: profile.transport.hostMachineIdentity,\n dockerSocket: { ...profile.transport.dockerSocket },\n controlSocket: { ...profile.transport.controlSocket },\n },\n backend: {\n kind: profile.backend.kind,\n machineIdentity: profile.backend.machineIdentity,\n owner: { ...profile.backend.owner },\n filesystem: { ...profile.backend.filesystem },\n cgroup: { ...profile.backend.cgroup, controllers: [...profile.backend.cgroup.controllers] },\n },\n capacity: {\n ...profile.capacity,\n aggregate: { ...profile.capacity.aggregate },\n },\n policy: {\n hostLoopback: profile.policy.hostLoopback,\n tcpDockerEndpoint: profile.policy.tcpDockerEndpoint,\n outerSocketInjection: profile.policy.outerSocketInjection,\n privilegedTranslation: profile.policy.privilegedTranslation,\n writableRoot: profile.policy.writableRoot,\n network: {\n version: profile.policy.network.version,\n dns: { mode: profile.policy.network.dns.mode, servers: [...profile.policy.network.dns.servers] },\n egress: {\n ...profile.policy.network.egress,\n allowedProtocols: [...profile.policy.network.egress.allowedProtocols],\n denyCidrs: [...profile.policy.network.egress.denyCidrs],\n },\n },\n },\n };\n}\nexport function dockerExecutionProfileV1Digest(profile: DockerExecutionProfileV1): string {\n return `sha256:${digestOf(canonicalJson(parseDockerExecutionProfileV1(profile)))}`;\n}\nexport const dockerProfileDigestOf = dockerExecutionProfileV1Digest;\nexport function dockerProfilePublicSummaryOf(profile: DockerExecutionProfileV1): DockerProfilePublicSummary {\n const normalized = parseDockerExecutionProfileV1(profile);\n return Object.freeze({\n schemaVersion: 1,\n profileId: normalized.profileId,\n securityLevel: normalized.securityLevel,\n semanticPolicyRevision: normalized.semanticPolicyRevision,\n capacity: Object.freeze({\n ...normalized.capacity,\n aggregate: Object.freeze({ ...normalized.capacity.aggregate }),\n }),\n });\n}\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { Either, ParseResult, Schema } from \"effect\";\nimport { isIP } from \"node:net\";\nimport { isAbsolute } from \"node:path\";\nimport { digestOf } from \"../identity.ts\";\nimport type { JsonValue } from \"../../shared/types.ts\";\nimport { dockerProfileError, type DockerProfileError } from \"./errors.ts\";\nexport const DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION: 1 = 1;\nexport const DOCKER_PROFILE_SCHEMA_VERSION = DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION;\nexport const DOCKER_PROFILE_NETWORK_POLICY_VERSION: 1 = 1;\nexport const DOCKER_PROFILE_NETWORK_DENY_CIDRS: readonly [\n string,\n ...string[]\n] = Object.freeze([\n \"0.0.0.0/8\", \"10.0.0.0/8\", \"100.64.0.0/10\", \"127.0.0.0/8\", \"169.254.0.0/16\",\n \"172.16.0.0/12\", \"192.0.0.0/24\", \"192.0.2.0/24\", \"192.168.0.0/16\",\n \"198.18.0.0/15\", \"198.51.100.0/24\", \"203.0.113.0/24\", \"224.0.0.0/4\",\n \"240.0.0.0/4\", \"::/0\",\n]);\nconst NETWORK_ALLOWED_PROTOCOLS: readonly [\n \"dns\",\n \"https\"\n] = Object.freeze([\"dns\", \"https\"]);\nconst PROFILE_CONTROLLERS: readonly [\n \"cpu\",\n \"memory\",\n \"pids\"\n] = Object.freeze([\n \"cpu\", \"memory\", \"pids\",\n]);\nexport type DockerExecutionProfileSecurityLevel = \"managed-rootless/v1\" | \"raw-dind-storage/v1\";\nexport interface DockerProfileUnixEndpoint {\n readonly path: string;\n readonly peerUid: number;\n}\n/** Callback-free descriptor data that crosses the host deployment trust boundary. */\nexport interface DockerProfileNetworkPolicy {\n readonly version: 1;\n readonly dns: {\n readonly mode: \"explicit\";\n readonly servers: readonly [\n string,\n ...string[]\n ];\n };\n readonly egress: {\n readonly mode: \"rootless-nat\";\n readonly allowedProtocols: readonly [\n \"dns\",\n \"https\"\n ];\n readonly denyPrivateNetworks: true;\n readonly denySiblingSyntheticEndpoints: true;\n readonly denyCidrs: readonly [\n string,\n ...string[]\n ];\n readonly ipv6: \"disabled\";\n readonly disableHostLoopback: true;\n readonly portDriver: \"none\";\n readonly daemonBridge: \"none\";\n readonly exclusiveNetwork: true;\n readonly icc: false;\n };\n}\nexport interface DockerRawStoragePolicy {\n readonly level: \"raw-dind-storage/v1\";\n readonly privilegedTranslation: \"host-daemon\";\n readonly dockerData: \"private-project-quota-allocation/v1\";\n}\nexport interface DockerManagedRootlessPolicy {\n readonly level: \"managed-rootless/v1\";\n readonly hostLoopback: false;\n readonly tcpDockerEndpoint: false;\n readonly outerSocketInjection: false;\n readonly privilegedTranslation: \"rootless-userns\";\n readonly writableRoot: \"declared-tmpfs-only\";\n readonly dockerData: \"private-project-quota-allocation/v1\";\n readonly network: DockerProfileNetworkPolicy;\n}\nexport interface DockerExecutionProfileV1 {\n readonly schemaVersion: 1;\n readonly profileId: string;\n readonly securityLevel: DockerExecutionProfileSecurityLevel;\n readonly semanticPolicyRevision: string;\n readonly transport: {\n readonly kind: \"unix\";\n readonly hostMachineIdentity: string;\n readonly dockerSocket: DockerProfileUnixEndpoint;\n readonly controlSocket: DockerProfileUnixEndpoint & {\n readonly protocol: \"niceeval-docker-profile-control/v1\";\n };\n };\n readonly backend: {\n readonly kind: \"local-systemd\" | \"dedicated-linux-vm\";\n readonly machineIdentity: string;\n readonly owner: {\n readonly uid: number;\n readonly gid: number;\n };\n readonly filesystem: {\n readonly identity: string;\n readonly mountPath: string;\n readonly dockerRootDir: string;\n readonly limitBytes: number;\n readonly dockerDataPool: {\n readonly count: number;\n readonly bytesPerAllocation: number;\n readonly attestation: \"linux-project-quota/v1\";\n };\n };\n readonly cgroup: {\n readonly aggregatePath: string;\n readonly policyRevision: string;\n readonly controllers: readonly [\n \"cpu\",\n \"memory\",\n \"pids\"\n ];\n };\n };\n readonly capacity: {\n readonly cpus: number;\n readonly memoryBytes: number;\n readonly memorySwapBytes: 0;\n readonly pids: number;\n readonly maxContainers: number;\n readonly maxBuilds: number;\n readonly ephemeralDiskBytes: number;\n readonly aggregate: {\n readonly cpus: number;\n readonly memoryBytes: number;\n readonly memorySwapBytes: 0;\n readonly pids: number;\n };\n };\n readonly policy: DockerRawStoragePolicy | DockerManagedRootlessPolicy;\n}\nexport type DockerExecutionProfileV1Draft = Omit<DockerExecutionProfileV1, \"semanticPolicyRevision\">;\n/** A deliberately narrow view: never exposes host endpoints, paths, owners, or policy. */\nexport interface DockerProfilePublicSummary {\n readonly schemaVersion: 1;\n readonly profileId: string;\n readonly securityLevel: DockerExecutionProfileSecurityLevel;\n readonly semanticPolicyRevision: string;\n readonly capacity: DockerExecutionProfileV1[\"capacity\"];\n}\ntype DockerExecutionProfileSemanticInput = Pick<DockerExecutionProfileV1, \"securityLevel\" | \"backend\" | \"policy\">;\nconst ParseOptions = Object.freeze({\n errors: \"all\" as const,\n exact: true,\n onExcessProperty: \"error\" as const,\n});\ntype PlainObject = Readonly<Record<PropertyKey, unknown>>;\nconst PlainObjectSchema = Schema.declare<PlainObject>((value): value is PlainObject => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}, {\n identifier: \"DockerProfilePlainObject\",\n description: \"a plain object or null-prototype record\",\n});\nconst plainStruct = <Fields extends Schema.Struct.Fields>(fields: Fields) => Schema.compose(Schema.Struct(fields), { strict: false })(PlainObjectSchema);\nconst nonEmptyString = (identifier: string) => Schema.String.pipe(Schema.filter((value) => value.trim() !== \"\" && !value.includes(\"\\0\"), { identifier, description: \"a non-empty string without NUL\" }));\nconst absolutePath = (identifier: string) => nonEmptyString(identifier).pipe(Schema.filter(isAbsolute, { identifier, description: \"an absolute path\" }));\nconst nonNegativeSafeInteger = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isSafeInteger(value) && value >= 0, { identifier, description: \"a non-negative safe integer\" }));\nconst positiveSafeInteger = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isSafeInteger(value) && value > 0, { identifier, description: \"a positive safe integer\" }));\nconst positiveFinite = (identifier: string) => Schema.JsonNumber.pipe(Schema.filter((value) => Number.isFinite(value) && value > 0, { identifier, description: \"a positive finite number\" }));\nfunction isPublicDnsServer(value: string): boolean {\n const kind = isIP(value);\n if (kind === 4) {\n const [first, second, third] = value.split(\".\").map(Number);\n if (first === undefined || second === undefined || third === undefined)\n return false;\n if (first === 0 || first === 10 || first === 127 || first >= 224)\n return false;\n if (first === 100 && second >= 64 && second <= 127)\n return false;\n if (first === 169 && second === 254)\n return false;\n if (first === 172 && second >= 16 && second <= 31)\n return false;\n if (first === 192 && second === 168)\n return false;\n if (first === 192 && second === 0 && (third === 0 || third === 2))\n return false;\n if (first === 198 && (second === 18 || second === 19))\n return false;\n if (first === 198 && second === 51 && third === 100)\n return false;\n return !(first === 203 && second === 0 && third === 113);\n }\n if (kind !== 6)\n return false;\n const normalized = value.toLowerCase();\n if (normalized.startsWith(\"::ffff:\")) {\n return isPublicDnsServer(normalized.slice(\"::ffff:\".length));\n }\n return normalized !== \"::\" && normalized !== \"::1\" &&\n !normalized.startsWith(\"fc\") && !normalized.startsWith(\"fd\") &&\n !normalized.startsWith(\"fe8\") && !normalized.startsWith(\"fe9\") &&\n !normalized.startsWith(\"fea\") && !normalized.startsWith(\"feb\") &&\n !normalized.startsWith(\"ff\") && !normalized.startsWith(\"2001:db8:\");\n}\nconst DnsServerSchema = nonEmptyString(\"DockerProfilePublicDnsServer\").pipe(Schema.filter(isPublicDnsServer, {\n identifier: \"DockerProfilePublicDnsServer\",\n description: \"a public IP address, not a private or synthetic endpoint\",\n}));\nconst CidrsSchema = Schema.NonEmptyArray(Schema.String).pipe(Schema.filter((value) => value.length === DOCKER_PROFILE_NETWORK_DENY_CIDRS.length &&\n value.every((cidr, index) => cidr === DOCKER_PROFILE_NETWORK_DENY_CIDRS[index]), { identifier: \"DockerProfileDenyCidrs\", description: \"the v1 fail-closed CIDR set\" }));\nconst EndpointSchema = plainStruct({\n path: absolutePath(\"DockerProfileSocketPath\"),\n peerUid: nonNegativeSafeInteger(\"DockerProfilePeerUid\"),\n});\nconst NetworkSchema = plainStruct({\n version: Schema.Literal(1),\n dns: plainStruct({\n mode: Schema.Literal(\"explicit\"),\n servers: Schema.NonEmptyArray(DnsServerSchema),\n }),\n egress: plainStruct({\n mode: Schema.Literal(\"rootless-nat\"),\n allowedProtocols: Schema.Tuple(Schema.Literal(\"dns\"), Schema.Literal(\"https\")),\n denyPrivateNetworks: Schema.Literal(true),\n denySiblingSyntheticEndpoints: Schema.Literal(true),\n denyCidrs: CidrsSchema,\n ipv6: Schema.Literal(\"disabled\"),\n disableHostLoopback: Schema.Literal(true),\n portDriver: Schema.Literal(\"none\"),\n daemonBridge: Schema.Literal(\"none\"),\n exclusiveNetwork: Schema.Literal(true),\n icc: Schema.Literal(false),\n }),\n});\nconst CapacitySchema = plainStruct({\n cpus: positiveFinite(\"DockerProfileCapacityCpus\"),\n memoryBytes: positiveSafeInteger(\"DockerProfileCapacityMemoryBytes\"),\n memorySwapBytes: Schema.Literal(0),\n pids: positiveSafeInteger(\"DockerProfileCapacityPids\"),\n maxContainers: positiveSafeInteger(\"DockerProfileCapacityMaxContainers\"),\n maxBuilds: positiveSafeInteger(\"DockerProfileCapacityMaxBuilds\"),\n ephemeralDiskBytes: positiveSafeInteger(\"DockerProfileCapacityEphemeralDiskBytes\"),\n aggregate: plainStruct({\n cpus: positiveFinite(\"DockerProfileAggregateCpus\"),\n memoryBytes: positiveSafeInteger(\"DockerProfileAggregateMemoryBytes\"),\n memorySwapBytes: Schema.Literal(0),\n pids: positiveSafeInteger(\"DockerProfileAggregatePids\"),\n }),\n}).pipe(Schema.filter((value) => value.aggregate.cpus >= value.cpus &&\n value.aggregate.memoryBytes >= value.memoryBytes &&\n value.aggregate.pids >= value.pids, {\n identifier: \"DockerProfileCapacity\",\n description: \"aggregate capacity at least as large as allocatable CPU, memory and PID capacity\",\n}));\n/** Wire structure only; semantic revision and frozen canonical values are checked after decode. */\nexport const DockerExecutionProfileV1Schema: Schema.Schema<DockerExecutionProfileV1, PlainObject> = plainStruct({\n schemaVersion: Schema.Literal(1),\n profileId: nonEmptyString(\"DockerProfileId\"),\n securityLevel: Schema.Literal(\"managed-rootless/v1\", \"raw-dind-storage/v1\"),\n semanticPolicyRevision: nonEmptyString(\"DockerProfileSemanticPolicyRevision\"),\n transport: plainStruct({\n kind: Schema.Literal(\"unix\"),\n hostMachineIdentity: nonEmptyString(\"DockerProfileHostMachineIdentity\"),\n dockerSocket: EndpointSchema,\n controlSocket: plainStruct({\n path: absolutePath(\"DockerProfileControlSocketPath\"),\n peerUid: nonNegativeSafeInteger(\"DockerProfileControlPeerUid\"),\n protocol: Schema.Literal(\"niceeval-docker-profile-control/v1\"),\n }),\n }),\n backend: plainStruct({\n kind: Schema.Literal(\"local-systemd\", \"dedicated-linux-vm\"),\n machineIdentity: nonEmptyString(\"DockerProfileBackendMachineIdentity\"),\n owner: plainStruct({\n uid: nonNegativeSafeInteger(\"DockerProfileOwnerUid\"),\n gid: nonNegativeSafeInteger(\"DockerProfileOwnerGid\"),\n }),\n filesystem: plainStruct({\n identity: nonEmptyString(\"DockerProfileFilesystemIdentity\"),\n mountPath: absolutePath(\"DockerProfileMountPath\"),\n dockerRootDir: absolutePath(\"DockerProfileDockerRootDir\"),\n limitBytes: positiveSafeInteger(\"DockerProfileFilesystemLimitBytes\"),\n dockerDataPool: plainStruct({\n count: positiveSafeInteger(\"DockerProfileDockerDataSlotCount\"),\n bytesPerAllocation: positiveSafeInteger(\"DockerProfileDockerDataAllocationLimitBytes\"),\n attestation: Schema.Literal(\"linux-project-quota/v1\"),\n }),\n }),\n cgroup: plainStruct({\n aggregatePath: absolutePath(\"DockerProfileAggregatePath\"),\n policyRevision: nonEmptyString(\"DockerProfileCgroupPolicyRevision\"),\n controllers: Schema.Tuple(Schema.Literal(\"cpu\"), Schema.Literal(\"memory\"), Schema.Literal(\"pids\")),\n }),\n }),\n capacity: CapacitySchema,\n policy: Schema.Union(plainStruct({\n level: Schema.Literal(\"raw-dind-storage/v1\"),\n privilegedTranslation: Schema.Literal(\"host-daemon\"),\n dockerData: Schema.Literal(\"private-project-quota-allocation/v1\"),\n }), plainStruct({\n level: Schema.Literal(\"managed-rootless/v1\"),\n hostLoopback: Schema.Literal(false),\n tcpDockerEndpoint: Schema.Literal(false),\n outerSocketInjection: Schema.Literal(false),\n privilegedTranslation: Schema.Literal(\"rootless-userns\"),\n writableRoot: Schema.Literal(\"declared-tmpfs-only\"),\n dockerData: Schema.Literal(\"private-project-quota-allocation/v1\"),\n network: NetworkSchema,\n })),\n});\nexport const DockerExecutionProfileSchema = DockerExecutionProfileV1Schema;\nfunction frozenNonEmptyStrings(values: readonly string[]): readonly [\n string,\n ...string[]\n] {\n const [first, ...rest] = values;\n if (first === undefined)\n throw new Error(\"expected a non-empty string tuple\");\n return Object.freeze([first, ...rest]);\n}\n/** Canonicalize only after structural decoding; nested containers are immutable to callers. */\nfunction freezeProfile(profile: DockerExecutionProfileV1): DockerExecutionProfileV1 {\n return Object.freeze({\n ...profile,\n transport: Object.freeze({\n ...profile.transport,\n dockerSocket: Object.freeze({ ...profile.transport.dockerSocket }),\n controlSocket: Object.freeze({ ...profile.transport.controlSocket }),\n }),\n backend: Object.freeze({\n ...profile.backend,\n owner: Object.freeze({ ...profile.backend.owner }),\n filesystem: Object.freeze({\n ...profile.backend.filesystem,\n dockerDataPool: Object.freeze({ ...profile.backend.filesystem.dockerDataPool }),\n }),\n cgroup: Object.freeze({ ...profile.backend.cgroup, controllers: PROFILE_CONTROLLERS }),\n }),\n capacity: Object.freeze({\n ...profile.capacity,\n memorySwapBytes: 0,\n aggregate: Object.freeze({ ...profile.capacity.aggregate, memorySwapBytes: 0 }),\n }),\n policy: profile.policy.level === \"raw-dind-storage/v1\"\n ? Object.freeze({ ...profile.policy })\n : Object.freeze({\n ...profile.policy,\n network: Object.freeze({\n ...profile.policy.network,\n dns: Object.freeze({\n ...profile.policy.network.dns,\n servers: frozenNonEmptyStrings(profile.policy.network.dns.servers),\n }),\n egress: Object.freeze({\n ...profile.policy.network.egress,\n allowedProtocols: NETWORK_ALLOWED_PROTOCOLS,\n denyCidrs: DOCKER_PROFILE_NETWORK_DENY_CIDRS,\n }),\n }),\n }),\n });\n}\nfunction semanticPolicyJson(input: DockerExecutionProfileSemanticInput): JsonValue {\n return {\n schemaVersion: DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION,\n securityLevel: input.securityLevel,\n backend: {\n kind: input.backend.kind,\n cgroup: {\n policyRevision: input.backend.cgroup.policyRevision,\n controllers: [...input.backend.cgroup.controllers],\n },\n },\n policy: input.policy.level === \"raw-dind-storage/v1\" ? {\n level: input.policy.level,\n privilegedTranslation: input.policy.privilegedTranslation,\n dockerData: input.policy.dockerData,\n } : {\n level: input.policy.level,\n hostLoopback: input.policy.hostLoopback,\n tcpDockerEndpoint: input.policy.tcpDockerEndpoint,\n outerSocketInjection: input.policy.outerSocketInjection,\n privilegedTranslation: input.policy.privilegedTranslation,\n writableRoot: input.policy.writableRoot,\n dockerData: input.policy.dockerData,\n network: {\n version: input.policy.network.version,\n dns: { mode: input.policy.network.dns.mode, servers: [...input.policy.network.dns.servers] },\n egress: {\n mode: input.policy.network.egress.mode,\n allowedProtocols: [...input.policy.network.egress.allowedProtocols],\n denyPrivateNetworks: input.policy.network.egress.denyPrivateNetworks,\n denySiblingSyntheticEndpoints: input.policy.network.egress.denySiblingSyntheticEndpoints,\n denyCidrs: [...input.policy.network.egress.denyCidrs],\n ipv6: input.policy.network.egress.ipv6,\n disableHostLoopback: input.policy.network.egress.disableHostLoopback,\n portDriver: input.policy.network.egress.portDriver,\n daemonBridge: input.policy.network.egress.daemonBridge,\n exclusiveNetwork: input.policy.network.egress.exclusiveNetwork,\n icc: input.policy.network.egress.icc,\n },\n },\n },\n };\n}\nexport function dockerExecutionProfileSemanticPolicyRevisionOf(input: DockerExecutionProfileSemanticInput): string {\n return digestOf(semanticPolicyJson(input)).slice(0, 8);\n}\nexport const dockerProfileSemanticPolicyRevisionOf = dockerExecutionProfileSemanticPolicyRevisionOf;\nfunction formatSchemaPath(path: readonly PropertyKey[]): string {\n return path.reduce<string>((result, segment) => typeof segment === \"number\" ||\n (typeof segment === \"string\" && /^\\\\d+$/.test(segment))\n ? `${result}[${String(segment)}]`\n : `${result}.${String(segment)}`, \"profile\");\n}\nfunction schemaError(value: unknown, error: ParseResult.ParseError): DockerProfileError {\n const issue = ParseResult.ArrayFormatter.formatErrorSync(error)[0];\n const path = issue === undefined ? \"profile\" : formatSchemaPath(issue.path);\n const root = typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? value as Record<string, unknown>\n : undefined;\n if (path === \"profile.schemaVersion\") {\n if (root?.schemaVersion === undefined) {\n return dockerProfileError({\n code: \"sandbox.docker-profile-schema-invalid\",\n path,\n message: \"profile.schemaVersion is required\",\n });\n }\n return dockerProfileError({\n code: \"sandbox.docker-profile-unknown-version\",\n path,\n message: `Unsupported Docker execution profile schema version ${JSON.stringify(root.schemaVersion)}; expected 1`,\n });\n }\n if (path === \"profile.securityLevel\") {\n return dockerProfileError({\n code: \"sandbox.docker-profile-security-level-unsupported\",\n path,\n message: `Unsupported Docker execution profile security level ${JSON.stringify(root?.securityLevel)}`,\n });\n }\n return dockerProfileError({\n code: path === \"profile.capacity\"\n ? \"sandbox.docker-profile-capacity-invalid\"\n : \"sandbox.docker-profile-schema-invalid\",\n path,\n message: issue === undefined\n ? \"profile is not a valid Docker execution profile v1\"\n : `${path} ${issue.message}`,\n });\n}\nexport function parseDockerExecutionProfileV1(value: unknown): DockerExecutionProfileV1 {\n const decoded = Schema.decodeUnknownEither(DockerExecutionProfileV1Schema, ParseOptions)(value);\n if (Either.isLeft(decoded))\n throw schemaError(value, decoded.left);\n const profile = freezeProfile(decoded.right);\n if (profile.backend.filesystem.dockerDataPool.count < profile.capacity.maxContainers ||\n profile.backend.filesystem.dockerDataPool.count *\n profile.backend.filesystem.dockerDataPool.bytesPerAllocation < profile.capacity.ephemeralDiskBytes) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-capacity-invalid\",\n path: \"profile.backend.filesystem.dockerDataPool\",\n message: \"Docker data allocations must cover maxContainers and allocatable ephemeralDiskBytes\",\n });\n }\n const rawStorage = profile.securityLevel === \"raw-dind-storage/v1\";\n if (profile.policy.level !== profile.securityLevel ||\n (rawStorage\n ? profile.policy.privilegedTranslation !== \"host-daemon\"\n : profile.policy.privilegedTranslation !== \"rootless-userns\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-security-level-unsupported\",\n path: \"profile.policy\",\n message: \"Docker profile policy level and privileged translation must match its security level\",\n });\n }\n const expected = dockerExecutionProfileSemanticPolicyRevisionOf(profile);\n if (profile.semanticPolicyRevision !== expected) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-semantic-policy-mismatch\",\n path: \"profile.semanticPolicyRevision\",\n message: `profile.semanticPolicyRevision does not match the canonical semantic policy revision ${expected}`,\n details: { expected, actual: profile.semanticPolicyRevision },\n });\n }\n return profile;\n}\nexport const parseDockerExecutionProfile = parseDockerExecutionProfileV1;\nexport const decodeDockerExecutionProfileV1 = parseDockerExecutionProfileV1;\nexport function makeDockerExecutionProfileV1(input: DockerExecutionProfileV1Draft): DockerExecutionProfileV1 {\n return parseDockerExecutionProfileV1({\n ...input,\n semanticPolicyRevision: dockerExecutionProfileSemanticPolicyRevisionOf(input),\n });\n}\nexport const createDockerExecutionProfileV1 = makeDockerExecutionProfileV1;\nexport function isDockerExecutionProfileV1(value: unknown): value is DockerExecutionProfileV1 {\n try {\n parseDockerExecutionProfileV1(value);\n return true;\n }\n catch {\n return false;\n }\n}\n/** Digest the fixed v1 wire shape, not incidental object insertion order. */\nfunction canonicalJson(profile: DockerExecutionProfileV1): JsonValue {\n return {\n schemaVersion: profile.schemaVersion,\n profileId: profile.profileId,\n securityLevel: profile.securityLevel,\n semanticPolicyRevision: profile.semanticPolicyRevision,\n transport: {\n kind: profile.transport.kind,\n hostMachineIdentity: profile.transport.hostMachineIdentity,\n dockerSocket: { ...profile.transport.dockerSocket },\n controlSocket: { ...profile.transport.controlSocket },\n },\n backend: {\n kind: profile.backend.kind,\n machineIdentity: profile.backend.machineIdentity,\n owner: { ...profile.backend.owner },\n filesystem: { ...profile.backend.filesystem },\n cgroup: { ...profile.backend.cgroup, controllers: [...profile.backend.cgroup.controllers] },\n },\n capacity: {\n ...profile.capacity,\n aggregate: { ...profile.capacity.aggregate },\n },\n policy: profile.policy.level === \"raw-dind-storage/v1\" ? {\n level: profile.policy.level,\n privilegedTranslation: profile.policy.privilegedTranslation,\n dockerData: profile.policy.dockerData,\n } : {\n level: profile.policy.level,\n hostLoopback: profile.policy.hostLoopback,\n tcpDockerEndpoint: profile.policy.tcpDockerEndpoint,\n outerSocketInjection: profile.policy.outerSocketInjection,\n privilegedTranslation: profile.policy.privilegedTranslation,\n writableRoot: profile.policy.writableRoot,\n dockerData: profile.policy.dockerData,\n network: {\n version: profile.policy.network.version,\n dns: { mode: profile.policy.network.dns.mode, servers: [...profile.policy.network.dns.servers] },\n egress: {\n ...profile.policy.network.egress,\n allowedProtocols: [...profile.policy.network.egress.allowedProtocols],\n denyCidrs: [...profile.policy.network.egress.denyCidrs],\n },\n },\n },\n };\n}\nexport function dockerExecutionProfileV1Digest(profile: DockerExecutionProfileV1): string {\n return `sha256:${digestOf(canonicalJson(parseDockerExecutionProfileV1(profile)))}`;\n}\nexport const dockerProfileDigestOf = dockerExecutionProfileV1Digest;\nexport function dockerProfilePublicSummaryOf(profile: DockerExecutionProfileV1): DockerProfilePublicSummary {\n const normalized = parseDockerExecutionProfileV1(profile);\n return Object.freeze({\n schemaVersion: 1,\n profileId: normalized.profileId,\n securityLevel: normalized.securityLevel,\n semanticPolicyRevision: normalized.semanticPolicyRevision,\n capacity: Object.freeze({\n ...normalized.capacity,\n aggregate: Object.freeze({ ...normalized.capacity.aggregate }),\n }),\n });\n}\n"]}
@@ -3,7 +3,7 @@ export declare const DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION: 1;
3
3
  export declare const DOCKER_PROFILE_SCHEMA_VERSION: 1;
4
4
  export declare const DOCKER_PROFILE_NETWORK_POLICY_VERSION: 1;
5
5
  export declare const DOCKER_PROFILE_NETWORK_DENY_CIDRS: readonly [string, ...string[]];
6
- export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "managed-vm-rootless/v1";
6
+ export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "raw-dind-storage/v1";
7
7
  export interface DockerProfileUnixEndpoint {
8
8
  readonly path: string;
9
9
  readonly peerUid: number;
@@ -29,6 +29,21 @@ export interface DockerProfileNetworkPolicy {
29
29
  readonly icc: false;
30
30
  };
31
31
  }
32
+ export interface DockerRawStoragePolicy {
33
+ readonly level: "raw-dind-storage/v1";
34
+ readonly privilegedTranslation: "host-daemon";
35
+ readonly dockerData: "private-project-quota-allocation/v1";
36
+ }
37
+ export interface DockerManagedRootlessPolicy {
38
+ readonly level: "managed-rootless/v1";
39
+ readonly hostLoopback: false;
40
+ readonly tcpDockerEndpoint: false;
41
+ readonly outerSocketInjection: false;
42
+ readonly privilegedTranslation: "rootless-userns";
43
+ readonly writableRoot: "declared-tmpfs-only";
44
+ readonly dockerData: "private-project-quota-allocation/v1";
45
+ readonly network: DockerProfileNetworkPolicy;
46
+ }
32
47
  export interface DockerExecutionProfileV1 {
33
48
  readonly schemaVersion: 1;
34
49
  readonly profileId: string;
@@ -54,6 +69,11 @@ export interface DockerExecutionProfileV1 {
54
69
  readonly mountPath: string;
55
70
  readonly dockerRootDir: string;
56
71
  readonly limitBytes: number;
72
+ readonly dockerDataPool: {
73
+ readonly count: number;
74
+ readonly bytesPerAllocation: number;
75
+ readonly attestation: "linux-project-quota/v1";
76
+ };
57
77
  };
58
78
  readonly cgroup: {
59
79
  readonly aggregatePath: string;
@@ -68,6 +88,7 @@ export interface DockerExecutionProfileV1 {
68
88
  readonly pids: number;
69
89
  readonly maxContainers: number;
70
90
  readonly maxBuilds: number;
91
+ readonly ephemeralDiskBytes: number;
71
92
  readonly aggregate: {
72
93
  readonly cpus: number;
73
94
  readonly memoryBytes: number;
@@ -75,14 +96,7 @@ export interface DockerExecutionProfileV1 {
75
96
  readonly pids: number;
76
97
  };
77
98
  };
78
- readonly policy: {
79
- readonly hostLoopback: false;
80
- readonly tcpDockerEndpoint: false;
81
- readonly outerSocketInjection: false;
82
- readonly privilegedTranslation: "rootless-userns";
83
- readonly writableRoot: "declared-tmpfs-only";
84
- readonly network: DockerProfileNetworkPolicy;
85
- };
99
+ readonly policy: DockerRawStoragePolicy | DockerManagedRootlessPolicy;
86
100
  }
87
101
  export type DockerExecutionProfileV1Draft = Omit<DockerExecutionProfileV1, "semanticPolicyRevision">;
88
102
  /** A deliberately narrow view: never exposes host endpoints, paths, owners, or policy. */
@@ -3,7 +3,7 @@ export declare const DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION: 1;
3
3
  export declare const DOCKER_PROFILE_SCHEMA_VERSION: 1;
4
4
  export declare const DOCKER_PROFILE_NETWORK_POLICY_VERSION: 1;
5
5
  export declare const DOCKER_PROFILE_NETWORK_DENY_CIDRS: readonly [string, ...string[]];
6
- export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "managed-vm-rootless/v1";
6
+ export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "raw-dind-storage/v1";
7
7
  export interface DockerProfileUnixEndpoint {
8
8
  readonly path: string;
9
9
  readonly peerUid: number;
@@ -29,6 +29,21 @@ export interface DockerProfileNetworkPolicy {
29
29
  readonly icc: false;
30
30
  };
31
31
  }
32
+ export interface DockerRawStoragePolicy {
33
+ readonly level: "raw-dind-storage/v1";
34
+ readonly privilegedTranslation: "host-daemon";
35
+ readonly dockerData: "private-project-quota-allocation/v1";
36
+ }
37
+ export interface DockerManagedRootlessPolicy {
38
+ readonly level: "managed-rootless/v1";
39
+ readonly hostLoopback: false;
40
+ readonly tcpDockerEndpoint: false;
41
+ readonly outerSocketInjection: false;
42
+ readonly privilegedTranslation: "rootless-userns";
43
+ readonly writableRoot: "declared-tmpfs-only";
44
+ readonly dockerData: "private-project-quota-allocation/v1";
45
+ readonly network: DockerProfileNetworkPolicy;
46
+ }
32
47
  export interface DockerExecutionProfileV1 {
33
48
  readonly schemaVersion: 1;
34
49
  readonly profileId: string;
@@ -54,6 +69,11 @@ export interface DockerExecutionProfileV1 {
54
69
  readonly mountPath: string;
55
70
  readonly dockerRootDir: string;
56
71
  readonly limitBytes: number;
72
+ readonly dockerDataPool: {
73
+ readonly count: number;
74
+ readonly bytesPerAllocation: number;
75
+ readonly attestation: "linux-project-quota/v1";
76
+ };
57
77
  };
58
78
  readonly cgroup: {
59
79
  readonly aggregatePath: string;
@@ -68,6 +88,7 @@ export interface DockerExecutionProfileV1 {
68
88
  readonly pids: number;
69
89
  readonly maxContainers: number;
70
90
  readonly maxBuilds: number;
91
+ readonly ephemeralDiskBytes: number;
71
92
  readonly aggregate: {
72
93
  readonly cpus: number;
73
94
  readonly memoryBytes: number;
@@ -75,14 +96,7 @@ export interface DockerExecutionProfileV1 {
75
96
  readonly pids: number;
76
97
  };
77
98
  };
78
- readonly policy: {
79
- readonly hostLoopback: false;
80
- readonly tcpDockerEndpoint: false;
81
- readonly outerSocketInjection: false;
82
- readonly privilegedTranslation: "rootless-userns";
83
- readonly writableRoot: "declared-tmpfs-only";
84
- readonly network: DockerProfileNetworkPolicy;
85
- };
99
+ readonly policy: DockerRawStoragePolicy | DockerManagedRootlessPolicy;
86
100
  }
87
101
  export type DockerExecutionProfileV1Draft = Omit<DockerExecutionProfileV1, "semanticPolicyRevision">;
88
102
  /** A deliberately narrow view: never exposes host endpoints, paths, owners, or policy. */
@@ -3,7 +3,7 @@ export declare const DOCKER_EXECUTION_PROFILE_SCHEMA_VERSION: 1;
3
3
  export declare const DOCKER_PROFILE_SCHEMA_VERSION: 1;
4
4
  export declare const DOCKER_PROFILE_NETWORK_POLICY_VERSION: 1;
5
5
  export declare const DOCKER_PROFILE_NETWORK_DENY_CIDRS: readonly [string, ...string[]];
6
- export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "managed-vm-rootless/v1";
6
+ export type DockerExecutionProfileSecurityLevel = "managed-rootless/v1" | "raw-dind-storage/v1";
7
7
  export interface DockerProfileUnixEndpoint {
8
8
  readonly path: string;
9
9
  readonly peerUid: number;
@@ -29,6 +29,21 @@ export interface DockerProfileNetworkPolicy {
29
29
  readonly icc: false;
30
30
  };
31
31
  }
32
+ export interface DockerRawStoragePolicy {
33
+ readonly level: "raw-dind-storage/v1";
34
+ readonly privilegedTranslation: "host-daemon";
35
+ readonly dockerData: "private-project-quota-allocation/v1";
36
+ }
37
+ export interface DockerManagedRootlessPolicy {
38
+ readonly level: "managed-rootless/v1";
39
+ readonly hostLoopback: false;
40
+ readonly tcpDockerEndpoint: false;
41
+ readonly outerSocketInjection: false;
42
+ readonly privilegedTranslation: "rootless-userns";
43
+ readonly writableRoot: "declared-tmpfs-only";
44
+ readonly dockerData: "private-project-quota-allocation/v1";
45
+ readonly network: DockerProfileNetworkPolicy;
46
+ }
32
47
  export interface DockerExecutionProfileV1 {
33
48
  readonly schemaVersion: 1;
34
49
  readonly profileId: string;
@@ -54,6 +69,11 @@ export interface DockerExecutionProfileV1 {
54
69
  readonly mountPath: string;
55
70
  readonly dockerRootDir: string;
56
71
  readonly limitBytes: number;
72
+ readonly dockerDataPool: {
73
+ readonly count: number;
74
+ readonly bytesPerAllocation: number;
75
+ readonly attestation: "linux-project-quota/v1";
76
+ };
57
77
  };
58
78
  readonly cgroup: {
59
79
  readonly aggregatePath: string;
@@ -68,6 +88,7 @@ export interface DockerExecutionProfileV1 {
68
88
  readonly pids: number;
69
89
  readonly maxContainers: number;
70
90
  readonly maxBuilds: number;
91
+ readonly ephemeralDiskBytes: number;
71
92
  readonly aggregate: {
72
93
  readonly cpus: number;
73
94
  readonly memoryBytes: number;
@@ -75,14 +96,7 @@ export interface DockerExecutionProfileV1 {
75
96
  readonly pids: number;
76
97
  };
77
98
  };
78
- readonly policy: {
79
- readonly hostLoopback: false;
80
- readonly tcpDockerEndpoint: false;
81
- readonly outerSocketInjection: false;
82
- readonly privilegedTranslation: "rootless-userns";
83
- readonly writableRoot: "declared-tmpfs-only";
84
- readonly network: DockerProfileNetworkPolicy;
85
- };
99
+ readonly policy: DockerRawStoragePolicy | DockerManagedRootlessPolicy;
86
100
  }
87
101
  export type DockerExecutionProfileV1Draft = Omit<DockerExecutionProfileV1, "semanticPolicyRevision">;
88
102
  /** A deliberately narrow view: never exposes host endpoints, paths, owners, or policy. */