0sec-cli 0.18.0 → 0.21.4

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 (171) hide show
  1. package/{0sec.js → 0.js} +84 -76
  2. package/LICENSE +1 -1
  3. package/README.md +74 -43
  4. package/chunks/adapt-loop-IGBRQAXO.js +18 -0
  5. package/chunks/{adgraph-JLGA6RYI.js → adgraph-AUDQTBYA.js} +5 -5
  6. package/chunks/agent/skills/frameworks/entra-id.yaml +2 -2
  7. package/chunks/agent/skills/techniques/assumption-mining.yaml +2 -2
  8. package/chunks/agent/skills/techniques/cve-poc-adaptation.yaml +2 -2
  9. package/chunks/agent/skills/techniques/entra-attack-paths.yaml +1 -1
  10. package/chunks/agent/skills/techniques/kernel-weaponization.yaml +1 -1
  11. package/chunks/agent/skills/techniques/llm-prompt-injection.yaml +2 -2
  12. package/chunks/agent/skills/techniques/npm-ecosystem.yaml +1 -1
  13. package/chunks/agent/skills/techniques/poc-verification.yaml +1 -1
  14. package/chunks/agent/skills/techniques/seedless-depth-review.yaml +20 -38
  15. package/chunks/{artifact-scraper-HQ7HLP6V.js → artifact-scraper-LNQJUORS.js} +6 -6
  16. package/chunks/{assumption-mining-5SNIVVDN.js → assumption-mining-4MJTP6H5.js} +24 -26
  17. package/chunks/{chunk-P6WKNFWX.js → chunk-2OQOQ2FZ.js} +8 -8
  18. package/chunks/{chunk-5G3ZXFBW.js → chunk-2WNCI664.js} +3 -3
  19. package/chunks/{chunk-AHTBZC3E.js → chunk-2WSXFFJZ.js} +4 -4
  20. package/chunks/{chunk-DW5UWPFY.js → chunk-4VGLO2YS.js} +6 -5
  21. package/chunks/{chunk-3KPWWJCI.js → chunk-5T6D5BVY.js} +88 -88
  22. package/chunks/{chunk-OEFNRYI2.js → chunk-6GHSR47F.js} +3 -6
  23. package/chunks/chunk-6YNKRUMC.js +4474 -0
  24. package/chunks/{chunk-BZNEY2ZS.js → chunk-ANDKY54G.js} +22390 -19895
  25. package/chunks/{chunk-53G27VPS.js → chunk-AZ7L3HFD.js} +7 -2
  26. package/chunks/{chunk-UR4ELX2Y.js → chunk-BACXRTQ4.js} +633 -316
  27. package/chunks/{chunk-UCYRA73C.js → chunk-CAJJRUTV.js} +4 -4
  28. package/chunks/{chunk-57ZENEX2.js → chunk-CGHCEN7W.js} +3 -3
  29. package/chunks/{chunk-AD7WXDH6.js → chunk-CL5KAUM6.js} +16 -16
  30. package/chunks/{chunk-ADOLI6DT.js → chunk-CXKDWFNO.js} +6 -6
  31. package/chunks/{chunk-RWONANDA.js → chunk-DQTNI3KY.js} +5 -5
  32. package/chunks/{chunk-BFR2CDV5.js → chunk-E2UOY5PJ.js} +288 -100
  33. package/chunks/{chunk-ATATQACO.js → chunk-ER3SUMYJ.js} +40 -18
  34. package/chunks/{chunk-5JI7L7KV.js → chunk-FAH6V4QM.js} +30515 -32242
  35. package/chunks/{chunk-6LKRLK2R.js → chunk-FHC2B7LN.js} +3 -3
  36. package/chunks/{chunk-XM5NLHYU.js → chunk-FWAYJ2IV.js} +16 -16
  37. package/chunks/{chunk-WVTBZEQO.js → chunk-G34QP2XW.js} +8 -8
  38. package/chunks/{chunk-MYVT64FN.js → chunk-GHWODZMR.js} +2 -2
  39. package/chunks/{chunk-F3WBKITT.js → chunk-GIQKESMN.js} +10 -10
  40. package/chunks/{chunk-2RMLOJVB.js → chunk-GVD6SJGH.js} +2 -2
  41. package/chunks/{chunk-WXQ6BJ6A.js → chunk-HBKCGJAV.js} +7 -7
  42. package/chunks/{chunk-SF4KZ4O3.js → chunk-HLFS6WV2.js} +2 -2
  43. package/chunks/chunk-HPQZHOIU.js +67 -0
  44. package/chunks/{chunk-TSK2AG6J.js → chunk-IMGWPNQM.js} +231 -1308
  45. package/chunks/{chunk-3MOLBTLS.js → chunk-K2PWUPUI.js} +2 -2
  46. package/chunks/{chunk-N7BOUYEV.js → chunk-NDJU5ZZ7.js} +14 -14
  47. package/chunks/{chunk-BVAZO4WA.js → chunk-NOPBXZUV.js} +3 -3
  48. package/chunks/{chunk-2JCCA2JL.js → chunk-O6SD4A36.js} +3 -3
  49. package/chunks/{chunk-SAFFWQW4.js → chunk-P6YG6TEZ.js} +6 -6
  50. package/chunks/{chunk-6L26OBWI.js → chunk-PC6RCKQV.js} +198 -11
  51. package/chunks/{chunk-LP3HHYQU.js → chunk-PD2BBBKT.js} +2 -2
  52. package/chunks/{chunk-BKZFDZ23.js → chunk-QCUFBVIZ.js} +3 -3
  53. package/chunks/{chunk-KLTNTE2Z.js → chunk-QZVG3BG4.js} +14 -14
  54. package/chunks/{chunk-ASUR522M.js → chunk-RF5QGKLR.js} +9 -9
  55. package/chunks/{chunk-YYRBQVFE.js → chunk-SBMB4OL3.js} +9 -9
  56. package/chunks/{chunk-IOL7D5YV.js → chunk-SQCBHFWN.js} +3 -3
  57. package/chunks/{chunk-BFRB6HB2.js → chunk-TF46UWFU.js} +3 -3
  58. package/chunks/chunk-TH2LW437.js +7829 -0
  59. package/chunks/chunk-TRH2PJSN.js +547 -0
  60. package/chunks/{chunk-RJWOYEOG.js → chunk-UEX7PFSE.js} +5 -5
  61. package/chunks/{chunk-VQG4FT5D.js → chunk-UFHN6RIU.js} +2 -2
  62. package/chunks/{chunk-WU6AFRAZ.js → chunk-V36HVTUL.js} +12 -12
  63. package/chunks/{chunk-IR537GON.js → chunk-VCSFCHAJ.js} +2 -2
  64. package/chunks/{chunk-YLMN3N25.js → chunk-VIT5ALXF.js} +3 -3
  65. package/chunks/{chunk-U5FLXGHT.js → chunk-VOAXLO4A.js} +10 -10
  66. package/chunks/{chunk-WEBMRWEG.js → chunk-W4JOXE4N.js} +83 -75
  67. package/chunks/{chunk-C2WXWFBB.js → chunk-WF5W75WY.js} +25 -25
  68. package/chunks/{chunk-SVJEDVYK.js → chunk-WPQLBN4S.js} +5 -5
  69. package/chunks/{chunk-72CISA2D.js → chunk-WZISK5VC.js} +37 -35
  70. package/chunks/{chunk-CMKXP5RR.js → chunk-Y5H6E24H.js} +3 -3
  71. package/chunks/{chunk-BATRQBOR.js → chunk-YA4PUM4H.js} +41 -41
  72. package/chunks/{chunk-JQHOLLTD.js → chunk-YHWWF4QY.js} +9 -9
  73. package/chunks/{chunk-GMT2AZKM.js → chunk-YPOA3W4O.js} +28 -28
  74. package/chunks/{chunk-7DQEV5QI.js → chunk-Z3IKZX3X.js} +4 -4
  75. package/chunks/codex-models-TYYV4JNN.js +15 -0
  76. package/chunks/{commands-TBC2F5CE.js → commands-WF5RG4I2.js} +3834 -931
  77. package/chunks/corpus-v1.json +2 -2
  78. package/chunks/data/appsec-archetypes.json +2 -2
  79. package/chunks/data/chromium-archetypes.json +1 -1
  80. package/chunks/data/freebsd-archetypes.json +1 -1
  81. package/chunks/data/kernel-archetypes.json +2 -2
  82. package/chunks/db-U3WQZVAO.js +16 -0
  83. package/chunks/{disclose-EKTWSCGW.js → disclose-67GZCDBO.js} +5 -5
  84. package/chunks/{dist-FMGSR3DW.js → dist-ACC3DZUZ.js} +11 -5
  85. package/chunks/{dist-4MAW5X6L.js → dist-EVTN3UTT.js} +6 -6
  86. package/chunks/{dist-4YICS2J2.js → dist-F6X62TQK.js} +286 -327
  87. package/chunks/dist-KEULE5IQ.js +21914 -0
  88. package/chunks/dist-XZB53PS5.js +53 -0
  89. package/chunks/eval-runner-SA6OUGHZ.js +26 -0
  90. package/chunks/example-manifest.json +2 -2
  91. package/chunks/{exploit-agent-45YQOHPJ.js → exploit-agent-36Q7XQFP.js} +4 -4
  92. package/chunks/{exploit-autoclimb-UZGEMGYT.js → exploit-autoclimb-J4OTSTZ6.js} +6 -6
  93. package/chunks/{exploit-climb-SG23KB2G.js → exploit-climb-PYEJDIC4.js} +12 -12
  94. package/chunks/fix-J2KBRJDV.js +12 -0
  95. package/chunks/{github-issues-MJ6OYOOU.js → github-issues-IGTTWM7V.js} +7 -7
  96. package/chunks/harness-GDUMKGSE.js +22 -0
  97. package/chunks/http-conformance-U5F6GKYG.js +11 -0
  98. package/chunks/http-sender-I5XFFY35.js +10 -0
  99. package/chunks/hunt-scan-UDJSCISU.js +36 -0
  100. package/chunks/{identity-6ZAIIWOR.js → identity-JTIVJSV7.js} +5 -5
  101. package/chunks/{kernel-primitive-7U6CWHXD.js → kernel-primitive-F2IXUFAX.js} +6 -6
  102. package/chunks/{kernel-vm-runner-3JAU4O6J.js → kernel-vm-runner-276LHIOV.js} +6 -6
  103. package/chunks/memsafety-scan-NHUOGTEX.js +16 -0
  104. package/chunks/{native-loop-RJCJPOUS.js → native-loop-3BSYVDUI.js} +17 -18
  105. package/chunks/{npm-detectors-KB5Y5ZFX.js → npm-detectors-VIYJXKFQ.js} +6 -6
  106. package/chunks/npm-dynamic-discovery-5J7FT3XM.js +13 -0
  107. package/chunks/orchestrate-DHBFRTSI.js +59 -0
  108. package/chunks/{pre-recon-cve-66EB6G4M.js → pre-recon-cve-X2K2P5YQ.js} +4 -4
  109. package/chunks/prepare-KYHGFWCJ.js +13 -0
  110. package/chunks/process-PNMC36JI.js +15 -0
  111. package/chunks/{replay-runner-45G3VU7X.js → replay-runner-LK2XFIVG.js} +7 -7
  112. package/chunks/{run-D56MPDKY.js → run-CBGE6DRQ.js} +2201 -1694
  113. package/chunks/{runtime-G7YWIO3B.js → runtime-PXO5G6UV.js} +11 -11
  114. package/chunks/runtime-XFWJTBUO.js +12 -0
  115. package/chunks/{scan-stream-FHI2FYZE.js → scan-stream-BMOCPKQX.js} +7 -7
  116. package/chunks/{scope-BI7BF4ZY.js → scope-NJHIDDTN.js} +4 -4
  117. package/chunks/{session-store-GZ4A4KYT.js → session-store-46WBZM22.js} +6 -6
  118. package/chunks/source-files-REHOM44I.js +12 -0
  119. package/chunks/{specdrift-WCLH6TTQ.js → specdrift-AFS54WEJ.js} +5 -5
  120. package/chunks/token-KRWP5JYA.js +72 -0
  121. package/chunks/token-util-DWTL33S3.js +8 -0
  122. package/chunks/variant-candidates-UH2WC2HA.js +13 -0
  123. package/chunks/{web-recon-prepass-JJGPEOLE.js → web-recon-prepass-SFXU44SS.js} +9 -9
  124. package/dashboard/assets/desktop-BT7RkC4q.js +32 -0
  125. package/dashboard/assets/desktop-OaBI0E0e.css +1 -0
  126. package/dashboard/assets/{findings-page-CACW9nw2.js → findings-page-B4rwF6fZ.js} +2 -2
  127. package/dashboard/assets/{format-PoISqsES.js → format-LNQSSpn6.js} +1 -1
  128. package/dashboard/assets/live-page-DoNwpPAO.js +1 -0
  129. package/dashboard/assets/{meta-tile-CcskIV_o.js → meta-tile-BMtBC-Qq.js} +1 -1
  130. package/dashboard/assets/operations-CMFVrXEe.css +2 -0
  131. package/dashboard/assets/operations-app-ER0gg7GN.js +2 -0
  132. package/dashboard/assets/{operations-D8nUP5_m.js → operations-e2CGYKB1.js} +2 -2
  133. package/dashboard/assets/{overview-page-DTGS8dPo.js → overview-page-CmeWH17A.js} +1 -1
  134. package/dashboard/assets/{page-header-MFVvEtZW.js → page-header-CIJyycfz.js} +1 -1
  135. package/dashboard/assets/scans-page-CuhzWhHx.js +1 -0
  136. package/dashboard/assets/{table-BYS-nIVA.js → table-BgsSBdke.js} +1 -1
  137. package/dashboard/assets/{tabs-DivxbhQy.js → tabs-vn6v7Bk6.js} +1 -1
  138. package/dashboard/desktop.html +3 -3
  139. package/dashboard/index.html +3 -3
  140. package/package.json +11 -11
  141. package/chunks/adapt-loop-SMH6V4PD.js +0 -18
  142. package/chunks/appsec-catalog-CBWHGTEL.js +0 -24
  143. package/chunks/chunk-242TMK6G.js +0 -110
  144. package/chunks/chunk-H2FFLZNK.js +0 -3
  145. package/chunks/chunk-QI233I24.js +0 -333
  146. package/chunks/chunk-RRMJC3ZE.js +0 -105
  147. package/chunks/chunk-Z5FA2XOX.js +0 -2798
  148. package/chunks/cost-ledger-NU63MYZM.js +0 -13
  149. package/chunks/db-KFWOAUUB.js +0 -16
  150. package/chunks/eval-runner-7ZF472KV.js +0 -27
  151. package/chunks/fix-IG7LYXH3.js +0 -12
  152. package/chunks/harness-7ODOLOWU.js +0 -22
  153. package/chunks/http-conformance-DU66MZIU.js +0 -11
  154. package/chunks/http-sender-GWH2IYEA.js +0 -10
  155. package/chunks/hunt-scan-MMKUOETU.js +0 -38
  156. package/chunks/memsafety-scan-J7SECV5W.js +0 -16
  157. package/chunks/npm-dynamic-discovery-AHROOZDB.js +0 -13
  158. package/chunks/orchestrate-OC2VZN2X.js +0 -62
  159. package/chunks/pipeline-BZK5BLJR.js +0 -14
  160. package/chunks/prepare-MYY743TK.js +0 -13
  161. package/chunks/process-LQRCS5OY.js +0 -13
  162. package/chunks/runtime-J7PLXZNM.js +0 -12
  163. package/chunks/source-files-PWRQR6LY.js +0 -12
  164. package/chunks/variant-candidates-YERCYMPD.js +0 -13
  165. package/dashboard/assets/0sec-icon-66SreztZ.gif +0 -0
  166. package/dashboard/assets/desktop-CXTQonNm.js +0 -32
  167. package/dashboard/assets/desktop-NOekk4QS.css +0 -1
  168. package/dashboard/assets/live-page-DrgQqQK5.js +0 -1
  169. package/dashboard/assets/operations-BKE8T-vY.css +0 -2
  170. package/dashboard/assets/operations-app-CQQhG54n.js +0 -2
  171. package/dashboard/assets/scans-page-ChVtq8Us.js +0 -1
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
- import { createRequire as __0secCreateRequire } from "node:module";
3
- const require = __0secCreateRequire(import.meta.url);
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  homeStateDir
6
- } from "./chunk-6L26OBWI.js";
6
+ } from "./chunk-PC6RCKQV.js";
7
7
 
8
8
  // packages/core/dist/triage/kernel-vm-runner.js
9
9
  import { execFileSync, spawn } from "node:child_process";
@@ -196,7 +196,7 @@ function inferDiskFormat(diskImage) {
196
196
  return diskImage.endsWith(".qcow2") || diskImage.endsWith(".qcow") ? "qcow2" : "raw";
197
197
  }
198
198
  function defaultKernelCacheDir() {
199
- return process.env["0SEC_KERNEL_BUILD_CACHE"]?.trim() || join(homeStateDir(), "kernel-cache");
199
+ return process.env["ZERO_KERNEL_BUILD_CACHE"]?.trim() || join(homeStateDir(), "kernel-cache");
200
200
  }
201
201
  function kernelTreeFingerprint(kernelTree) {
202
202
  try {
@@ -232,7 +232,7 @@ function sha256File(path) {
232
232
  return createHash("sha256").update(readFileSync(path)).digest("hex");
233
233
  }
234
234
  function expectedKernelRelease(kernelTree, explicit, requireExplicit = false) {
235
- const fromEnv = explicit?.trim() || process.env["0SEC_KERNEL_QEMU_EXPECTED_RELEASE"]?.trim();
235
+ const fromEnv = explicit?.trim() || process.env["ZERO_KERNEL_QEMU_EXPECTED_RELEASE"]?.trim();
236
236
  if (fromEnv) {
237
237
  if (!RELEASE_RE.test(fromEnv))
238
238
  throw new Error("invalid expected kernel release");
@@ -251,7 +251,7 @@ function expectedKernelRelease(kernelTree, explicit, requireExplicit = false) {
251
251
  const version = part("VERSION"), patch = part("PATCHLEVEL"), sub = part("SUBLEVEL") ?? "0", extra = part("EXTRAVERSION") ?? "";
252
252
  const release = version && patch ? `${version}.${patch}.${sub}${extra}` : "";
253
253
  if (!RELEASE_RE.test(release))
254
- throw new Error("cannot determine expected kernel release; set 0SEC_KERNEL_QEMU_EXPECTED_RELEASE");
254
+ throw new Error("cannot determine expected kernel release; set ZERO_KERNEL_QEMU_EXPECTED_RELEASE");
255
255
  return release;
256
256
  }
257
257
  function kernelBuildCacheKey(kernelTree, configProfile) {
@@ -270,7 +270,7 @@ function defaultBuildRunner(input) {
270
270
  join(process.cwd(), "src/triage/kernel-vm/build-from-tree.sh")
271
271
  ].find((candidate) => existsSync(candidate));
272
272
  if (!script) {
273
- throw new Error("kernel build script not found; set 0SEC_KERNEL_QEMU_KERNEL/0SEC_KERNEL_QEMU_DISK to prebuilt artifacts or run from a source checkout");
273
+ throw new Error("kernel build script not found; set ZERO_KERNEL_QEMU_KERNEL/ZERO_KERNEL_QEMU_DISK to prebuilt artifacts or run from a source checkout");
274
274
  }
275
275
  execFileSync("bash", [script, input.kernelTree, input.outDir, input.configProfile], {
276
276
  stdio: "inherit"
@@ -279,14 +279,14 @@ function defaultBuildRunner(input) {
279
279
  function prepareKernelVmArtifacts(opts) {
280
280
  const configProfile = opts.configProfile ?? "kasan";
281
281
  const log = opts.logger ?? ((line) => console.log(line));
282
- const envKernel = process.env["0SEC_KERNEL_QEMU_KERNEL"]?.trim();
283
- const envDisk = process.env["0SEC_KERNEL_QEMU_DISK"]?.trim();
282
+ const envKernel = process.env["ZERO_KERNEL_QEMU_KERNEL"]?.trim();
283
+ const envDisk = process.env["ZERO_KERNEL_QEMU_DISK"]?.trim();
284
284
  if (!opts.force && envKernel && envDisk && existsSync(envKernel) && existsSync(envDisk)) {
285
- log(`[kernel-cache] env-override: using 0SEC_KERNEL_QEMU_KERNEL/DISK (skipping build)`);
285
+ log(`[kernel-cache] env-override: using ZERO_KERNEL_QEMU_KERNEL/DISK (skipping build)`);
286
286
  return {
287
287
  kernelImage: envKernel,
288
288
  diskImage: envDisk,
289
- kernelConfig: process.env["0SEC_KERNEL_QEMU_CONFIG"]?.trim() || "",
289
+ kernelConfig: process.env["ZERO_KERNEL_QEMU_CONFIG"]?.trim() || "",
290
290
  cacheKey: "env",
291
291
  cacheDir: "",
292
292
  cacheStatus: "env",
@@ -343,45 +343,45 @@ function warnIfKcsanUnsupported(configProfile, kernelConfigPath, log) {
343
343
  }
344
344
  }
345
345
  function loadKernelVmConfigFromEnv() {
346
- const kernelImage = process.env["0SEC_KERNEL_QEMU_KERNEL"]?.trim();
347
- const diskImage = process.env["0SEC_KERNEL_QEMU_DISK"]?.trim();
346
+ const kernelImage = process.env["ZERO_KERNEL_QEMU_KERNEL"]?.trim();
347
+ const diskImage = process.env["ZERO_KERNEL_QEMU_DISK"]?.trim();
348
348
  const missing = [
349
- !kernelImage ? "0SEC_KERNEL_QEMU_KERNEL" : "",
350
- !diskImage ? "0SEC_KERNEL_QEMU_DISK" : ""
349
+ !kernelImage ? "ZERO_KERNEL_QEMU_KERNEL" : "",
350
+ !diskImage ? "ZERO_KERNEL_QEMU_DISK" : ""
351
351
  ].filter(Boolean);
352
352
  if (missing.length > 0) {
353
353
  throw new Error(`kernel VM runner is enabled but missing required env vars: ${missing.join(", ")}`);
354
354
  }
355
355
  const resolvedKernelImage = kernelImage;
356
356
  const resolvedDiskImage = diskImage;
357
- const kaslr = /^(1|true|on|yes)$/i.test(process.env["0SEC_KERNEL_QEMU_KASLR"]?.trim() ?? "");
358
- const explicitAppend = process.env["0SEC_KERNEL_QEMU_APPEND"]?.trim();
357
+ const kaslr = /^(1|true|on|yes)$/i.test(process.env["ZERO_KERNEL_QEMU_KASLR"]?.trim() ?? "");
358
+ const explicitAppend = process.env["ZERO_KERNEL_QEMU_APPEND"]?.trim();
359
359
  const kernelAppend = explicitAppend || buildKernelAppend(kaslr);
360
- const widenSymbol = process.env["0SEC_KERNEL_QEMU_WIDEN_SYMBOL"]?.trim() || void 0;
361
- const widenOffsetRaw = process.env["0SEC_KERNEL_QEMU_WIDEN_OFFSET"]?.trim();
362
- const widenDelayRaw = process.env["0SEC_KERNEL_QEMU_WIDEN_DELAY_MS"]?.trim();
363
- const weaponizeInitramfs = /^(1|true|on|yes)$/i.test(process.env["0SEC_KERNEL_QEMU_INITRAMFS"]?.trim() ?? "") || /^(1|true|on|yes)$/i.test(process.env.USE_KERNEL_WEAPONIZE?.trim() ?? "");
364
- const initramfsModules = (process.env["0SEC_KERNEL_QEMU_INITRAMFS_MODULES"]?.trim() || "").split(/[:,\s]+/).map((m) => m.trim()).filter(Boolean);
365
- const busyboxPath = process.env["0SEC_KERNEL_QEMU_BUSYBOX"]?.trim() || void 0;
360
+ const widenSymbol = process.env["ZERO_KERNEL_QEMU_WIDEN_SYMBOL"]?.trim() || void 0;
361
+ const widenOffsetRaw = process.env["ZERO_KERNEL_QEMU_WIDEN_OFFSET"]?.trim();
362
+ const widenDelayRaw = process.env["ZERO_KERNEL_QEMU_WIDEN_DELAY_MS"]?.trim();
363
+ const weaponizeInitramfs = /^(1|true|on|yes)$/i.test(process.env["ZERO_KERNEL_QEMU_INITRAMFS"]?.trim() ?? "") || /^(1|true|on|yes)$/i.test(process.env.USE_KERNEL_WEAPONIZE?.trim() ?? "");
364
+ const initramfsModules = (process.env["ZERO_KERNEL_QEMU_INITRAMFS_MODULES"]?.trim() || "").split(/[:,\s]+/).map((m) => m.trim()).filter(Boolean);
365
+ const busyboxPath = process.env["ZERO_KERNEL_QEMU_BUSYBOX"]?.trim() || void 0;
366
366
  return {
367
- qemuBinary: process.env["0SEC_KERNEL_QEMU_BINARY"]?.trim() || "qemu-system-x86_64",
367
+ qemuBinary: process.env["ZERO_KERNEL_QEMU_BINARY"]?.trim() || "qemu-system-x86_64",
368
368
  kernelImage: resolvedKernelImage,
369
369
  diskImage: resolvedDiskImage,
370
- diskFormat: process.env["0SEC_KERNEL_QEMU_DISK_FORMAT"]?.trim() || inferDiskFormat(resolvedDiskImage),
371
- bootTimeoutSec: parseInt(process.env["0SEC_KERNEL_QEMU_BOOT_TIMEOUT_SEC"]?.trim() || "120", 10),
372
- memoryMb: parseInt(process.env["0SEC_KERNEL_QEMU_MEMORY_MB"]?.trim() || "2048", 10),
373
- smp: parseInt(process.env["0SEC_KERNEL_QEMU_SMP"]?.trim() || "2", 10),
370
+ diskFormat: process.env["ZERO_KERNEL_QEMU_DISK_FORMAT"]?.trim() || inferDiskFormat(resolvedDiskImage),
371
+ bootTimeoutSec: parseInt(process.env["ZERO_KERNEL_QEMU_BOOT_TIMEOUT_SEC"]?.trim() || "120", 10),
372
+ memoryMb: parseInt(process.env["ZERO_KERNEL_QEMU_MEMORY_MB"]?.trim() || "2048", 10),
373
+ smp: parseInt(process.env["ZERO_KERNEL_QEMU_SMP"]?.trim() || "2", 10),
374
374
  kernelAppend,
375
- qemuAccel: process.env["0SEC_KERNEL_QEMU_ACCEL"]?.trim() || void 0,
376
- initrdPath: process.env["0SEC_KERNEL_QEMU_INITRD"]?.trim() || void 0,
377
- timeoutSec: parseInt(process.env["0SEC_KERNEL_QEMU_TIMEOUT_SEC"]?.trim() || "60", 10),
378
- shareTag: process.env["0SEC_KERNEL_QEMU_SHARE_TAG"]?.trim() || "osecshare",
379
- artifactDir: process.env["0SEC_KERNEL_QEMU_ARTIFACT_DIR"]?.trim() || void 0,
375
+ qemuAccel: process.env["ZERO_KERNEL_QEMU_ACCEL"]?.trim() || void 0,
376
+ initrdPath: process.env["ZERO_KERNEL_QEMU_INITRD"]?.trim() || void 0,
377
+ timeoutSec: parseInt(process.env["ZERO_KERNEL_QEMU_TIMEOUT_SEC"]?.trim() || "60", 10),
378
+ shareTag: process.env["ZERO_KERNEL_QEMU_SHARE_TAG"]?.trim() || "osecshare",
379
+ artifactDir: process.env["ZERO_KERNEL_QEMU_ARTIFACT_DIR"]?.trim() || void 0,
380
380
  kaslr,
381
381
  ...widenSymbol ? { widenSymbol } : {},
382
382
  ...widenOffsetRaw && Number.isFinite(parseInt(widenOffsetRaw, 16)) ? { widenOffset: parseInt(widenOffsetRaw, 16) } : {},
383
383
  ...widenDelayRaw && Number.isFinite(parseInt(widenDelayRaw, 10)) ? { widenDelayMs: parseInt(widenDelayRaw, 10) } : {},
384
- ...process.env["0SEC_KERNEL_QEMU_GUEST_BUILD_DIR"]?.trim() ? { guestKernelBuildDir: process.env["0SEC_KERNEL_QEMU_GUEST_BUILD_DIR"].trim() } : {},
384
+ ...process.env["ZERO_KERNEL_QEMU_GUEST_BUILD_DIR"]?.trim() ? { guestKernelBuildDir: process.env["ZERO_KERNEL_QEMU_GUEST_BUILD_DIR"].trim() } : {},
385
385
  weaponizeInitramfs,
386
386
  ...initramfsModules.length > 0 ? { initramfsModules } : {},
387
387
  ...busyboxPath ? { busyboxPath } : {}
@@ -389,13 +389,13 @@ function loadKernelVmConfigFromEnv() {
389
389
  }
390
390
  function buildKernelAppend(kaslr) {
391
391
  const base = "console=ttyS0 root=/dev/vda rw";
392
- const tail = "panic=-1 init=/sbin/0sec-init";
392
+ const tail = "panic=-1 init=/sbin/0-init";
393
393
  return `${base} ${kaslr ? "kaslr" : "nokaslr"} ${tail}`;
394
394
  }
395
395
  function renderRaceWidenModuleSource(symbol, offset, delayMs) {
396
396
  const off = `0x${offset.toString(16)}`;
397
397
  return [
398
- "// 0sec race-widening kprobe: inject mdelay() at the faulting PC to widen",
398
+ "// 0 race-widening kprobe: inject mdelay() at the faulting PC to widen",
399
399
  "// the UAF/race window. Best-effort; harmless if the probe fails to register.",
400
400
  "#include <linux/module.h>",
401
401
  "#include <linux/kernel.h>",
@@ -419,7 +419,7 @@ function renderRaceWidenModuleSource(symbol, offset, delayMs) {
419
419
  "",
420
420
  "static int __init widen_init(void) {",
421
421
  " kp.pre_handler = handler_pre;",
422
- ` pr_info("0sec-widen: probing ${symbol}+${off} delay=%lums\\n", widen_delay_ms);`,
422
+ ` pr_info("0-widen: probing ${symbol}+${off} delay=%lums\\n", widen_delay_ms);`,
423
423
  " return register_kprobe(&kp);",
424
424
  "}",
425
425
  "",
@@ -500,8 +500,8 @@ function renderRealIpiRaceHarness(spec) {
500
500
  "}",
501
501
  "",
502
502
  "int main(void) {",
503
- ` long retries = osec_env_long("0SEC_RACE_RETRIES", ${maxIters});`,
504
- ` long seconds = osec_env_long("0SEC_RACE_SECONDS", ${seconds});`,
503
+ ` long retries = osec_env_long("ZERO_RACE_RETRIES", ${maxIters});`,
504
+ ` long seconds = osec_env_long("ZERO_RACE_SECONDS", ${seconds});`,
505
505
  " time_t deadline = time(NULL) + seconds;",
506
506
  "",
507
507
  " /* Arm the widening tactics ONCE (freeze/register + IPI bursts). */",
@@ -519,9 +519,9 @@ function renderRealIpiRaceHarness(spec) {
519
519
  " g_stop = 1;",
520
520
  " pthread_join(ta, NULL);",
521
521
  " pthread_join(tb, NULL);",
522
- ' if ((iter & 0x3ff) == 0) { printf("0SEC-RACE iter=%ld\\n", iter); fflush(stdout); }',
522
+ ' if ((iter & 0x3ff) == 0) { printf("ZERO-RACE iter=%ld\\n", iter); fflush(stdout); }',
523
523
  " }",
524
- ' printf("0SEC-RACE done (budget exhausted, no splat)\\n");',
524
+ ' printf("ZERO-RACE done (budget exhausted, no splat)\\n");',
525
525
  " fflush(stdout);",
526
526
  " return 0;",
527
527
  "}"
@@ -571,7 +571,7 @@ function buildInitramfsKernelAppend(kaslr) {
571
571
  ].join(" ");
572
572
  }
573
573
  function renderInitramfsInitScript(moduleNames, raceEnv, timeoutSec) {
574
- const raceEnvEntries = Object.entries(raceEnv).filter(([key]) => /^0SEC_RACE_[A-Z0-9_]+$/.test(key));
574
+ const raceEnvEntries = Object.entries(raceEnv).filter(([key]) => /^ZERO_RACE_[A-Z0-9_]+$/.test(key));
575
575
  const envAssignments = raceEnvEntries.map(([key, value]) => `${key}=${shellQuote(value)}`).join(" ");
576
576
  const exploitCommand = [
577
577
  envAssignments ? `/bin/busybox env ${envAssignments}` : "",
@@ -585,10 +585,10 @@ function renderInitramfsInitScript(moduleNames, raceEnv, timeoutSec) {
585
585
  "/bin/busybox mount -t sysfs none /sys",
586
586
  "/bin/busybox mount -t devtmpfs none /dev 2>/dev/null",
587
587
  "/bin/busybox --install -s /bin 2>/dev/null",
588
- 'echo "=== 0SEC-INITRAMFS weaponize lane up ==="',
588
+ 'echo "=== ZERO-INITRAMFS weaponize lane up ==="',
589
589
  "cat /proc/version",
590
590
  insmods,
591
- 'echo "=== 0SEC-INITRAMFS run (env: ' + raceEnvEntries.map(([key]) => key).join(",") + ') ==="',
591
+ 'echo "=== ZERO-INITRAMFS run (env: ' + raceEnvEntries.map(([key]) => key).join(",") + ') ==="',
592
592
  // CRITICAL: the engine's emitted exploit prints a RECLAIM marker on EVERY
593
593
  // spray-loop iteration (thousands/sec). Streaming that to the slow 8250 UART
594
594
  // wedges the CPU in io_serial_in and STARVES the race (NMI watchdog fires,
@@ -598,13 +598,13 @@ function renderInitramfsInitScript(moduleNames, raceEnv, timeoutSec) {
598
598
  // stream either way, and the KASAN splats (kernel printk, a separate path)
599
599
  // still interleave live. `timeout` caps a hung flood; busybox `timeout` takes
600
600
  // the seconds as a POSITIONAL arg (`timeout SECS PROG`), NOT GNU `-t SECS`.
601
- `${exploitCommand} || echo "0SEC-INITRAMFS exploit exit=$?" >> /tmp/run.log`,
602
- 'echo "=== 0SEC-INITRAMFS exploit output (batched off the UART hot path) ==="',
601
+ `${exploitCommand} || echo "ZERO-INITRAMFS exploit exit=$?" >> /tmp/run.log`,
602
+ 'echo "=== ZERO-INITRAMFS exploit output (batched off the UART hot path) ==="',
603
603
  "cat /tmp/run.log",
604
- 'echo "=== 0SEC-INITRAMFS post-run ==="',
604
+ 'echo "=== ZERO-INITRAMFS post-run ==="',
605
605
  "sync",
606
- "cat /tmp/pwned 2>/dev/null && echo 0SEC-INITRAMFS-PWNED-FILE-PRESENT",
607
- 'echo "=== 0SEC-INITRAMFS done; powering off ==="',
606
+ "cat /tmp/pwned 2>/dev/null && echo ZERO-INITRAMFS-PWNED-FILE-PRESENT",
607
+ 'echo "=== ZERO-INITRAMFS done; powering off ==="',
608
608
  "/bin/busybox poweroff -f"
609
609
  ].join("\n");
610
610
  }
@@ -623,7 +623,7 @@ function buildWeaponizeInitramfs(config, exploitC, workDir, raceEnv) {
623
623
  }
624
624
  })();
625
625
  if (!busybox || !existsSync(busybox)) {
626
- throw new Error("weaponize-initramfs lane: no busybox found (set 0SEC_KERNEL_QEMU_BUSYBOX to a STATIC busybox)");
626
+ throw new Error("weaponize-initramfs lane: no busybox found (set ZERO_KERNEL_QEMU_BUSYBOX to a STATIC busybox)");
627
627
  }
628
628
  execFileSync("cp", [busybox, join(rootDir, "bin", "busybox")]);
629
629
  chmodSync(join(rootDir, "bin", "busybox"), 493);
@@ -686,11 +686,11 @@ function buildInitramfsQemuCommand(config, serialLogPath, initramfsPath, kernelA
686
686
  function collectRaceEnv() {
687
687
  const out = {};
688
688
  for (const key of [
689
- "0SEC_RACE_FLOOD_THREADS",
690
- "0SEC_RACE_SPRAY_THREADS",
691
- "0SEC_RACE_PARK_US",
692
- "0SEC_RACE_SECONDS",
693
- "0SEC_RACE_SAME_CPU"
689
+ "ZERO_RACE_FLOOD_THREADS",
690
+ "ZERO_RACE_SPRAY_THREADS",
691
+ "ZERO_RACE_PARK_US",
692
+ "ZERO_RACE_SECONDS",
693
+ "ZERO_RACE_SAME_CPU"
694
694
  ]) {
695
695
  const v = process.env[key]?.trim();
696
696
  if (v)
@@ -721,8 +721,8 @@ function renderGuestRunnerScript(config, language, request) {
721
721
  return [
722
722
  "#!/bin/sh",
723
723
  "set -eu",
724
- "SHARE_DIR=/mnt/0sec",
725
- "WORK_DIR=/tmp/0sec-run",
724
+ "SHARE_DIR=/mnt/0",
725
+ "WORK_DIR=/tmp/0-run",
726
726
  'mkdir -p "$WORK_DIR"',
727
727
  "compiled=0",
728
728
  "executed=0",
@@ -782,12 +782,12 @@ function renderGuestRunnerScript(config, language, request) {
782
782
  ' if make -C "$KBUILD_DIR" M="$WORK_DIR" modules >"$SHARE_DIR/widen.log" 2>&1 \\',
783
783
  ' && insmod "$WORK_DIR/osec_widen.ko" >>"$SHARE_DIR/widen.log" 2>&1; then',
784
784
  " widened=1",
785
- ' printf "%s\\n" "0sec-widen: insmod ok" >> "$SHARE_DIR/widen.log"',
785
+ ' printf "%s\\n" "0-widen: insmod ok" >> "$SHARE_DIR/widen.log"',
786
786
  " else",
787
- ' printf "%s\\n" "0sec-widen: build/insmod failed \u2014 running WITHOUT widening" >> "$SHARE_DIR/widen.log"',
787
+ ' printf "%s\\n" "0-widen: build/insmod failed \u2014 running WITHOUT widening" >> "$SHARE_DIR/widen.log"',
788
788
  " fi",
789
789
  "else",
790
- ' printf "%s\\n" "0sec-widen: no kernel build tree in guest \u2014 running WITHOUT widening" > "$SHARE_DIR/widen.log"',
790
+ ' printf "%s\\n" "0-widen: no kernel build tree in guest \u2014 running WITHOUT widening" > "$SHARE_DIR/widen.log"',
791
791
  "fi",
792
792
  'printf "%s\\n" "$widened" > "$SHARE_DIR/widened.ok"'
793
793
  ] : [];
@@ -800,8 +800,8 @@ function renderGuestRunnerScript(config, language, request) {
800
800
  "# after \u2014 so the captured output carries an ordered DROP(uid!=0)\u2192ROOT(uid=0)",
801
801
  "# witness the oracle uses to confirm a genuine escalation. We must therefore",
802
802
  "# run it directly (as root), NOT via su/sudo to a lower uid.",
803
- "SHARE_DIR=/mnt/0sec",
804
- "WORK_DIR=/tmp/0sec-run",
803
+ "SHARE_DIR=/mnt/0",
804
+ "WORK_DIR=/tmp/0-run",
805
805
  'mkdir -p "$WORK_DIR"',
806
806
  "compiled=0",
807
807
  "executed=0",
@@ -887,7 +887,7 @@ async function waitForInitramfsVm(config, proc, serialLogPath) {
887
887
  return { poweredOff: true };
888
888
  if (existsSync(serialLogPath)) {
889
889
  const tail = readFileSync(serialLogPath, "utf-8").slice(-2e3);
890
- if (tail.includes("0SEC-INITRAMFS done"))
890
+ if (tail.includes("ZERO-INITRAMFS done"))
891
891
  return { poweredOff: true };
892
892
  }
893
893
  await sleep(1e3);
@@ -897,8 +897,8 @@ async function waitForInitramfsVm(config, proc, serialLogPath) {
897
897
  async function runWeaponizeInitramfs(config, exploitC) {
898
898
  const hostTmpDir = config.artifactDir ? (() => {
899
899
  mkdirSync(config.artifactDir, { recursive: true });
900
- return mkdtempSync(join(config.artifactDir, "0sec-initramfs-"));
901
- })() : mkdtempSync(join(tmpdir(), "0sec-initramfs-"));
900
+ return mkdtempSync(join(config.artifactDir, "0-initramfs-"));
901
+ })() : mkdtempSync(join(tmpdir(), "0-initramfs-"));
902
902
  const serialLogPath = join(hostTmpDir, "serial.log");
903
903
  const raceEnv = collectRaceEnv();
904
904
  let initramfsPath;
@@ -922,7 +922,7 @@ async function runWeaponizeInitramfs(config, exploitC) {
922
922
  try {
923
923
  const { poweredOff } = await waitForInitramfsVm(config, vmProc, serialLogPath);
924
924
  const serial = existsSync(serialLogPath) ? readFileSync(serialLogPath, "utf-8") : "";
925
- const executed = serial.includes("0SEC-INITRAMFS run");
925
+ const executed = serial.includes("ZERO-INITRAMFS run");
926
926
  const timedOut = !poweredOff;
927
927
  if (executed) {
928
928
  assertBugAttribution({
@@ -964,19 +964,19 @@ async function runReproducerInKernelVm(report) {
964
964
  }
965
965
  const hostTmpDir = config.artifactDir ? (() => {
966
966
  mkdirSync(config.artifactDir, { recursive: true });
967
- return mkdtempSync(join(config.artifactDir, "0sec-kvm-"));
968
- })() : mkdtempSync(join(tmpdir(), "0sec-kvm-"));
967
+ return mkdtempSync(join(config.artifactDir, "0-kvm-"));
968
+ })() : mkdtempSync(join(tmpdir(), "0-kvm-"));
969
969
  const language = report.reproducerLanguage ?? "c";
970
970
  const request = report.executionAttestationRequest ?? (() => {
971
- const release = process.env["0SEC_KERNEL_QEMU_EXPECTED_RELEASE"]?.trim();
971
+ const release = process.env["ZERO_KERNEL_QEMU_EXPECTED_RELEASE"]?.trim();
972
972
  if (!release || !RELEASE_RE.test(release))
973
- throw new Error("direct kernel VM execution requires 0SEC_KERNEL_QEMU_EXPECTED_RELEASE");
973
+ throw new Error("direct kernel VM execution requires ZERO_KERNEL_QEMU_EXPECTED_RELEASE");
974
974
  return {
975
975
  nonce: randomBytes(16).toString("hex"),
976
976
  reproducerSha256: createHash("sha256").update(report.reproducer).digest("hex"),
977
977
  expectedKernelRelease: release,
978
978
  kernelImageSha256: sha256File(config.kernelImage),
979
- kernelConfigSha256: sha256File(process.env["0SEC_KERNEL_QEMU_CONFIG"]?.trim() || "")
979
+ kernelConfigSha256: sha256File(process.env["ZERO_KERNEL_QEMU_CONFIG"]?.trim() || "")
980
980
  };
981
981
  })();
982
982
  const sourcePath = join(hostTmpDir, language === "syz" ? "repro.syz" : "repro.c");
@@ -1061,7 +1061,7 @@ function detectKernelSignature(dmesg) {
1061
1061
  function defaultDmesgOutPath() {
1062
1062
  const ns = process.hrtime.bigint().toString();
1063
1063
  const random = Math.random().toString(36).slice(2, 10);
1064
- return join(tmpdir(), `0sec-verify-${ns}-${random}.dmesg`);
1064
+ return join(tmpdir(), `0-verify-${ns}-${random}.dmesg`);
1065
1065
  }
1066
1066
  function writeProofFileReadOnly(path, content) {
1067
1067
  mkdirSync(dirname(path), { recursive: true });
@@ -1112,7 +1112,7 @@ async function verifyKernelFinding(opts) {
1112
1112
  }
1113
1113
  const build_cache_hit = artifacts.cacheStatus === "hit" || artifacts.cacheStatus === "env";
1114
1114
  mkdirSync(dirname(dmesgOutPath), { recursive: true });
1115
- const launchDir = mkdtempSync(join(dirname(dmesgOutPath), ".0sec-kernel-launch-"));
1115
+ const launchDir = mkdtempSync(join(dirname(dmesgOutPath), ".0-kernel-launch-"));
1116
1116
  const stagedKernelImage = join(launchDir, "kernel.image");
1117
1117
  const stagedKernelConfig = join(launchDir, "kernel.config");
1118
1118
  let attestationRequest;
@@ -1136,20 +1136,20 @@ async function verifyKernelFinding(opts) {
1136
1136
  return { status: "build_failed", dmesg_path: dmesgOutPath, build_cache_hit };
1137
1137
  }
1138
1138
  const previousEnv = {
1139
- qemu: process.env["0SEC_KERNEL_QEMU"],
1140
- kernel: process.env["0SEC_KERNEL_QEMU_KERNEL"],
1141
- disk: process.env["0SEC_KERNEL_QEMU_DISK"],
1142
- cfg: process.env["0SEC_KERNEL_QEMU_CONFIG"],
1143
- cacheKey: process.env["0SEC_KERNEL_QEMU_CACHEKEY"]
1139
+ qemu: process.env["ZERO_KERNEL_QEMU"],
1140
+ kernel: process.env["ZERO_KERNEL_QEMU_KERNEL"],
1141
+ disk: process.env["ZERO_KERNEL_QEMU_DISK"],
1142
+ cfg: process.env["ZERO_KERNEL_QEMU_CONFIG"],
1143
+ cacheKey: process.env["ZERO_KERNEL_QEMU_CACHEKEY"]
1144
1144
  };
1145
- process.env["0SEC_KERNEL_QEMU"] = "1";
1146
- process.env["0SEC_KERNEL_QEMU_KERNEL"] = stagedKernelImage;
1147
- process.env["0SEC_KERNEL_QEMU_DISK"] = artifacts.diskImage;
1145
+ process.env["ZERO_KERNEL_QEMU"] = "1";
1146
+ process.env["ZERO_KERNEL_QEMU_KERNEL"] = stagedKernelImage;
1147
+ process.env["ZERO_KERNEL_QEMU_DISK"] = artifacts.diskImage;
1148
1148
  if (artifacts.kernelConfig) {
1149
- process.env["0SEC_KERNEL_QEMU_CONFIG"] = stagedKernelConfig;
1149
+ process.env["ZERO_KERNEL_QEMU_CONFIG"] = stagedKernelConfig;
1150
1150
  }
1151
1151
  if (artifacts.cacheKey) {
1152
- process.env["0SEC_KERNEL_QEMU_CACHEKEY"] = artifacts.cacheKey;
1152
+ process.env["ZERO_KERNEL_QEMU_CACHEKEY"] = artifacts.cacheKey;
1153
1153
  }
1154
1154
  let runResult;
1155
1155
  try {
@@ -1176,11 +1176,11 @@ async function verifyKernelFinding(opts) {
1176
1176
  build_cache_hit
1177
1177
  };
1178
1178
  } finally {
1179
- process.env["0SEC_KERNEL_QEMU"] = previousEnv.qemu;
1180
- process.env["0SEC_KERNEL_QEMU_KERNEL"] = previousEnv.kernel;
1181
- process.env["0SEC_KERNEL_QEMU_DISK"] = previousEnv.disk;
1182
- process.env["0SEC_KERNEL_QEMU_CONFIG"] = previousEnv.cfg;
1183
- process.env["0SEC_KERNEL_QEMU_CACHEKEY"] = previousEnv.cacheKey;
1179
+ process.env["ZERO_KERNEL_QEMU"] = previousEnv.qemu;
1180
+ process.env["ZERO_KERNEL_QEMU_KERNEL"] = previousEnv.kernel;
1181
+ process.env["ZERO_KERNEL_QEMU_DISK"] = previousEnv.disk;
1182
+ process.env["ZERO_KERNEL_QEMU_CONFIG"] = previousEnv.cfg;
1183
+ process.env["ZERO_KERNEL_QEMU_CACHEKEY"] = previousEnv.cacheKey;
1184
1184
  rmSync(launchDir, { recursive: true, force: true });
1185
1185
  }
1186
1186
  const dmesgContent = runResult.dmesg || runResult.output || "";
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import { createRequire as __0secCreateRequire } from "node:module";
3
- const require = __0secCreateRequire(import.meta.url);
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  expandHomePath,
6
6
  isExistingLocalTargetPath,
7
7
  isExplicitLocalTargetPath
8
- } from "./chunk-WU6AFRAZ.js";
8
+ } from "./chunk-V36HVTUL.js";
9
9
 
10
10
  // packages/cli/src/herdr-state.ts
11
11
  var sink = null;
@@ -88,7 +88,6 @@ function resolveEngagement(rawTarget) {
88
88
  kind: "source",
89
89
  target: expandHomePath(target),
90
90
  targetType: "source-code",
91
- reviewStrategy: "lenses",
92
91
  label: `source review ${target}`
93
92
  }
94
93
  };
@@ -100,7 +99,6 @@ function resolveEngagement(rawTarget) {
100
99
  kind: "source",
101
100
  target: raw,
102
101
  targetType: "source-code",
103
- reviewStrategy: "lenses",
104
102
  label: `source review ${raw}`
105
103
  }
106
104
  };
@@ -124,7 +122,6 @@ function resolveEngagement(rawTarget) {
124
122
  kind: "source",
125
123
  target,
126
124
  targetType: "source-code",
127
- reviewStrategy: "lenses",
128
125
  label: `source review ${target}`
129
126
  }
130
127
  };