0sec-cli 0.17.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} +92 -79
  2. package/LICENSE +1 -1
  3. package/README.md +77 -37
  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-GJEZMOHF.js → artifact-scraper-LNQJUORS.js} +6 -6
  16. package/chunks/{assumption-mining-BVMMUZHB.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-HDWV7PGI.js → chunk-2WSXFFJZ.js} +4 -4
  20. package/chunks/{chunk-DW5UWPFY.js → chunk-4VGLO2YS.js} +6 -5
  21. package/chunks/{chunk-SNKTC4BP.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-O462Y7P2.js → chunk-ANDKY54G.js} +22317 -19616
  25. package/chunks/{chunk-53G27VPS.js → chunk-AZ7L3HFD.js} +7 -2
  26. package/chunks/{chunk-2SANI5RH.js → chunk-BACXRTQ4.js} +691 -318
  27. package/chunks/{chunk-SOG2U7B3.js → chunk-CAJJRUTV.js} +4 -4
  28. package/chunks/{chunk-57ZENEX2.js → chunk-CGHCEN7W.js} +3 -3
  29. package/chunks/{chunk-VGRDNSHA.js → chunk-CL5KAUM6.js} +17 -16
  30. package/chunks/{chunk-QOKTUOU2.js → chunk-CXKDWFNO.js} +6 -6
  31. package/chunks/{chunk-RWONANDA.js → chunk-DQTNI3KY.js} +5 -5
  32. package/chunks/{chunk-K26SZ37E.js → chunk-E2UOY5PJ.js} +288 -100
  33. package/chunks/{chunk-CLHCDHP4.js → chunk-ER3SUMYJ.js} +40 -18
  34. package/chunks/{chunk-IORC6MQX.js → chunk-FAH6V4QM.js} +31964 -32279
  35. package/chunks/{chunk-6LKRLK2R.js → chunk-FHC2B7LN.js} +3 -3
  36. package/chunks/{chunk-4Y4KQJXE.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-RDZYQQLW.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-3QFDYBZQ.js → chunk-IMGWPNQM.js} +231 -1308
  45. package/chunks/{chunk-3MOLBTLS.js → chunk-K2PWUPUI.js} +2 -2
  46. package/chunks/{chunk-MMLDQR4H.js → chunk-NDJU5ZZ7.js} +14 -14
  47. package/chunks/{chunk-H44E2CRN.js → chunk-NOPBXZUV.js} +3 -3
  48. package/chunks/{chunk-HE7LCA7G.js → chunk-O6SD4A36.js} +3 -3
  49. package/chunks/{chunk-SAFFWQW4.js → chunk-P6YG6TEZ.js} +6 -6
  50. package/chunks/{chunk-KKGE5RQE.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-D6S3IIPG.js → chunk-RF5QGKLR.js} +9 -9
  55. package/chunks/{chunk-LOHTE223.js → chunk-SBMB4OL3.js} +9 -9
  56. package/chunks/{chunk-IOL7D5YV.js → chunk-SQCBHFWN.js} +3 -3
  57. package/chunks/{chunk-A6CLR72I.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-UJ4IK5PO.js → chunk-VOAXLO4A.js} +10 -10
  66. package/chunks/{chunk-UM3ZNQIM.js → chunk-W4JOXE4N.js} +100 -84
  67. package/chunks/{chunk-DN25OQQA.js → chunk-WF5W75WY.js} +25 -25
  68. package/chunks/{chunk-QKICO43A.js → chunk-WPQLBN4S.js} +5 -5
  69. package/chunks/{chunk-HT6P7RY3.js → chunk-WZISK5VC.js} +37 -35
  70. package/chunks/{chunk-QJQKHO7G.js → chunk-Y5H6E24H.js} +3 -3
  71. package/chunks/{chunk-KTQDLNSR.js → chunk-YA4PUM4H.js} +41 -41
  72. package/chunks/{chunk-47TQJWDH.js → chunk-YHWWF4QY.js} +9 -9
  73. package/chunks/{chunk-2CJ776PV.js → chunk-YPOA3W4O.js} +48 -39
  74. package/chunks/{chunk-7DQEV5QI.js → chunk-Z3IKZX3X.js} +4 -4
  75. package/chunks/codex-models-TYYV4JNN.js +15 -0
  76. package/chunks/{commands-U3AMV5ZU.js → commands-WF5RG4I2.js} +5620 -2513
  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-A6AEIEDA.js → disclose-67GZCDBO.js} +5 -5
  84. package/chunks/{dist-JR67XKYO.js → dist-ACC3DZUZ.js} +11 -5
  85. package/chunks/{dist-GL66KMUX.js → dist-EVTN3UTT.js} +6 -6
  86. package/chunks/{dist-FDKALV4R.js → dist-F6X62TQK.js} +290 -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-XP23ISN7.js → exploit-agent-36Q7XQFP.js} +4 -4
  92. package/chunks/{exploit-autoclimb-E6T7RRSC.js → exploit-autoclimb-J4OTSTZ6.js} +6 -6
  93. package/chunks/{exploit-climb-2FAUP6XU.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-TENE3R7T.js → kernel-primitive-F2IXUFAX.js} +6 -6
  102. package/chunks/{kernel-vm-runner-4F6QSNFY.js → kernel-vm-runner-276LHIOV.js} +6 -6
  103. package/chunks/memsafety-scan-NHUOGTEX.js +16 -0
  104. package/chunks/{native-loop-NTONUDP7.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-RRR4E2A7.js → replay-runner-LK2XFIVG.js} +7 -7
  112. package/chunks/{run-ESNN4V5W.js → run-CBGE6DRQ.js} +2401 -1810
  113. package/chunks/{runtime-62ZQAH7H.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-BCFQYDCE.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-DPVCBRZA.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-ECQG7454.js +0 -18
  142. package/chunks/appsec-catalog-CBWHGTEL.js +0 -24
  143. package/chunks/chunk-H2FFLZNK.js +0 -3
  144. package/chunks/chunk-QI233I24.js +0 -333
  145. package/chunks/chunk-RRMJC3ZE.js +0 -105
  146. package/chunks/chunk-SZJCPG2I.js +0 -110
  147. package/chunks/chunk-WKNNZVJS.js +0 -2798
  148. package/chunks/cost-ledger-ZCKMBJEN.js +0 -13
  149. package/chunks/db-26NGQFKO.js +0 -16
  150. package/chunks/eval-runner-DDLE5RQ3.js +0 -27
  151. package/chunks/fix-IG7LYXH3.js +0 -12
  152. package/chunks/harness-HWOYFKFY.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-XPELSPQQ.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-ZUWAUWBC.js +0 -62
  159. package/chunks/pipeline-FCARFZU3.js +0 -14
  160. package/chunks/prepare-MYY743TK.js +0 -13
  161. package/chunks/process-3Q7QJIOZ.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-6KM6F6MD.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,6 +1,6 @@
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
 
5
5
  // packages/core/dist/agent/cve-exploit-codex.js
6
6
  var CVE_EXPLOIT_CODEX = {
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
- import { createRequire as __0secCreateRequire } from "node:module";
3
- const require = __0secCreateRequire(import.meta.url);
4
- import {
5
- LlmApiRuntime
6
- } from "./chunk-2SANI5RH.js";
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
7
4
  import {
8
5
  ProcessRuntime
9
- } from "./chunk-CLHCDHP4.js";
6
+ } from "./chunk-ER3SUMYJ.js";
7
+ import {
8
+ LlmApiRuntime
9
+ } from "./chunk-BACXRTQ4.js";
10
10
 
11
11
  // packages/core/dist/runtime/cli-native.js
12
12
  import { spawn } from "node:child_process";
@@ -215,7 +215,7 @@ function buildClaudePromptFromLastUser(messages) {
215
215
  }
216
216
  const parts = [];
217
217
  if (toolResults.length > 0) {
218
- parts.push(`[0sec:tool_results]
218
+ parts.push(`[0:tool_results]
219
219
  ${JSON.stringify(toolResults, null, 2)}`);
220
220
  }
221
221
  if (textParts.length > 0) {
@@ -327,7 +327,7 @@ var OpenRouterRuntime = class _OpenRouterRuntime {
327
327
  });
328
328
  }
329
329
  } else {
330
- const model = config.model ?? process.env["0SEC_MODEL"] ?? "anthropic/claude-sonnet-4.6";
330
+ const model = config.model ?? process.env["ZERO_MODEL"] ?? "anthropic/claude-sonnet-4.6";
331
331
  this.singleRuntime = this.createModelRuntime(model);
332
332
  }
333
333
  }
@@ -345,7 +345,7 @@ var OpenRouterRuntime = class _OpenRouterRuntime {
345
345
  if (this.ensembleRuntimes.length > 0) {
346
346
  return this.ensembleRuntimes.map((e) => e.model);
347
347
  }
348
- return [this.config.model ?? process.env["0SEC_MODEL"] ?? "anthropic/claude-sonnet-4.6"];
348
+ return [this.config.model ?? process.env["ZERO_MODEL"] ?? "anthropic/claude-sonnet-4.6"];
349
349
  }
350
350
  /** Whether this runtime is in ensemble mode. */
351
351
  get isEnsemble() {
@@ -638,7 +638,7 @@ var OllamaRuntime = class {
638
638
  * Behaviour:
639
639
  * - Each non-terminal frame's `message.content` is treated as a delta and
640
640
  * forwarded to `callbacks.onDelta("assistant_response", delta)` exactly
641
- * once (no accumulation passed to the callback — 0sec's contract is
641
+ * once (no accumulation passed to the callback — 0's contract is
642
642
  * "incremental fragment only", see types.ts:88).
643
643
  * - The terminal frame (`done: true`) is taken as authoritative for
644
644
  * `tool_calls`, `done_reason`, and usage stats. Tool-call shape across
@@ -767,7 +767,7 @@ var RUNTIME_REGISTRY = [
767
767
  {
768
768
  type: "codex",
769
769
  command: "codex",
770
- description: "Codex CLI / direct ChatGPT Codex provider \u2014 full parity across web scans, package audits (npm/pypi/cargo/oci), and source code review (incl. linux-kernel). Set 0SEC_CHATGPT_OAUTH_REFRESH_TOKEN to enable subscription auth without the local CLI binary (#402).",
770
+ description: "Codex CLI / direct ChatGPT Codex provider \u2014 full parity across web scans, package audits (npm/pypi/cargo/oci), and source code review (incl. linux-kernel). Set ZERO_CHATGPT_OAUTH_REFRESH_TOKEN to enable subscription auth without the local CLI binary (#402).",
771
771
  strengths: ["verify", "source-analysis", "discovery"],
772
772
  supportsSystemPrompt: false
773
773
  },
@@ -784,7 +784,7 @@ var RUNTIME_REGISTRY = [
784
784
  // so detection tools that key off `command` don't crash; the registry
785
785
  // uses `isAvailable()` not `which(command)` for ollama.
786
786
  command: "ollama",
787
- description: "Ollama (local) \u2014 Gemma 4 27B via /api/chat with native function-calling. Pairs with `--seed-findings` for full-local hunts. See 0sec#369.",
787
+ description: "Ollama (local) \u2014 Gemma 4 27B via /api/chat with native function-calling. Pairs with `--seed-findings` for full-local hunts. See 0#369.",
788
788
  strengths: ["source-analysis", "discovery"],
789
789
  supportsSystemPrompt: true
790
790
  }
@@ -806,7 +806,7 @@ function pickRuntimeForStage(stage, availableRuntimes) {
806
806
  return first.done ? "claude" : first.value;
807
807
  }
808
808
  async function detectAvailableRuntimes() {
809
- const { ProcessRuntime: ProcessRuntime2 } = await import("./process-3Q7QJIOZ.js");
809
+ const { ProcessRuntime: ProcessRuntime2 } = await import("./process-PNMC36JI.js");
810
810
  const available = /* @__PURE__ */ new Set();
811
811
  const checks = RUNTIME_REGISTRY.map(async (info) => {
812
812
  const rt = new ProcessRuntime2({ type: info.type, timeout: 5e3 });
@@ -832,7 +832,7 @@ function createRuntime(config) {
832
832
  return new ProcessRuntime(config);
833
833
  case "ollama":
834
834
  return new OllamaRuntime({
835
- model: config.model ?? process.env["0SEC_OLLAMA_MODEL"] ?? "gemma4:27b",
835
+ model: config.model ?? process.env["ZERO_OLLAMA_MODEL"] ?? "gemma4:27b",
836
836
  timeout: config.timeout,
837
837
  host: process.env.OLLAMA_HOST
838
838
  });
@@ -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-KKGE5RQE.js";
6
+ } from "./chunk-PC6RCKQV.js";
7
7
 
8
8
  // packages/cli/src/tui/session-store.ts
9
9
  import { chmodSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
@@ -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
  severityRank
6
- } from "./chunk-KKGE5RQE.js";
6
+ } from "./chunk-PC6RCKQV.js";
7
7
 
8
8
  // packages/core/dist/triage/kernel-primitive.js
9
9
  function maxSeverity(a, b) {
@@ -1,12 +1,12 @@
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
  describeEdgeTechnique,
6
6
  highValueTargetIds,
7
7
  reachableTo,
8
8
  shortestPaths
9
- } from "./chunk-VQG4FT5D.js";
9
+ } from "./chunk-UFHN6RIU.js";
10
10
 
11
11
  // packages/core/dist/identity/graph-client.js
12
12
  var DEFAULT_BASE_URL = "https://graph.microsoft.com/v1.0";
@@ -84,7 +84,7 @@ var GraphClient = class {
84
84
  this.pageDelayMs = opts.pageDelayMs ?? DEFAULT_PAGE_DELAY_MS;
85
85
  this.maxPages = opts.maxPages ?? DEFAULT_MAX_PAGES;
86
86
  this.sleep = opts.sleep ?? defaultSleep;
87
- this.userAgent = opts.userAgent ?? "0sec-identity";
87
+ this.userAgent = opts.userAgent ?? "0-identity";
88
88
  }
89
89
  /** GET a v1.0-relative path (`/users`) and return the parsed body. */
90
90
  async get(path, query) {
@@ -4283,7 +4283,7 @@ function ingestAzureHound(documents) {
4283
4283
  for (const missing of ["azusers", "azgroups", "azroleassignments"].filter((c) => !seen.has(c))) {
4284
4284
  warnings.push(`export carried no \`${missing}\` collection; coverage is partial`);
4285
4285
  }
4286
- warnings.push("AzureHound exports do not include conditional-access policies, federation configuration, or PIM eligibility schedules \u2014 run `0sec identity` against a live tenant for the posture checks that read them");
4286
+ warnings.push("AzureHound exports do not include conditional-access policies, federation configuration, or PIM eligibility schedules \u2014 run `0 identity` against a live tenant for the posture checks that read them");
4287
4287
  const relationships = haveRelationships ? {
4288
4288
  groupMembers,
4289
4289
  groupOwners,
@@ -4713,7 +4713,7 @@ function describeGaps(correspondences, coverage, conflicts, adNodeCount, entraNo
4713
4713
  if (correspondences.length === 0) {
4714
4714
  gaps.push(`NO IDENTITY CORRESPONDENCE COULD BE ESTABLISHED between the ${adNodeCount} on-premises principal(s) and the ${entraNodeCount} cloud principal(s) collected. No hybrid attack path could be computed, and that is a limit of the input, NOT a finding that the two directories are unconnected.`);
4715
4715
  if (!anchorsPresent) {
4716
- gaps.push("None of the cloud objects carried onPremisesImmutableId, onPremisesSecurityIdentifier, or onPremisesDistinguishedName. These attributes are not part of an AzureHound export and are dropped by Microsoft Graph when the token lacks directory read scope \u2014 so the most likely explanation is that they were never collected. Re-collect with `0sec identity` against the tenant, or supply the correspondence directly via `knownCorrespondences`.");
4716
+ gaps.push("None of the cloud objects carried onPremisesImmutableId, onPremisesSecurityIdentifier, or onPremisesDistinguishedName. These attributes are not part of an AzureHound export and are dropped by Microsoft Graph when the token lacks directory read scope \u2014 so the most likely explanation is that they were never collected. Re-collect with `0 identity` against the tenant, or supply the correspondence directly via `knownCorrespondences`.");
4717
4717
  } else {
4718
4718
  gaps.push(`Synchronisation anchors WERE present on the cloud objects (immutableId: ${coverage["immutable-id"].entraObjectsCarrying}, SID: ${coverage["security-identifier"].entraObjectsCarrying}) but matched no collected on-premises object. The two collections most likely cover different forests or different scopes of the same forest.`);
4719
4719
  }
@@ -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
  external_exports
6
- } from "./chunk-YLMN3N25.js";
6
+ } from "./chunk-VIT5ALXF.js";
7
7
 
8
8
  // packages/shared/dist/identity.js
9
9
  function defaultRoleFor(auth) {
@@ -45,7 +45,7 @@ import { fileURLToPath } from "node:url";
45
45
  import { dirname, join } from "node:path";
46
46
  function loadVersion() {
47
47
  if (true) {
48
- return "0.17.0";
48
+ return "0.21.4";
49
49
  }
50
50
  try {
51
51
  const here = dirname(fileURLToPath(import.meta.url));
@@ -200,11 +200,18 @@ var MANUAL_PRICING = {
200
200
  // which this schema cannot represent.
201
201
  "DeepSeek-V4-Pro": { input: 1.74, output: 3.48 },
202
202
  "DeepSeek-V4-Flash": { input: 0.19, output: 0.51 },
203
+ // Fireworks Priority list-rate estimate, not an Azure invoice.
204
+ // The cache estimate remains rounded; don't substitute direct API pricing
205
+ // for the separately metered Foundry deployment.
206
+ "deepseek-v4.1-flash": { input: 0.375, output: 1.5, cachedInput: 8e-3 },
203
207
  "Kimi-K2.7-Code": { input: 0.95, output: 4, cachedInput: 0.19 },
204
208
  "gpt-oss-120b": { input: 0.15, output: 0.6 },
205
209
  "gpt-5.6-sol": { input: 5, output: 30, cachedInput: 0.5 },
206
210
  "gpt-5.6-luna": { input: 1, output: 6, cachedInput: 0.1 },
207
211
  "gpt-5.6-terra": { input: 2.5, output: 15, cachedInput: 0.25 },
212
+ // Azure Global Standard short-context list estimate (2026-09-23).
213
+ // Hosted settlement separately meters cache writes and bounds input context.
214
+ "gpt-6-luna": { input: 0.1, output: 0.5, cachedInput: 0.01 },
208
215
  default: { input: 3, output: 15 }
209
216
  };
210
217
  var MODEL_PRICING = {
@@ -214,11 +221,14 @@ var MODEL_PRICING = {
214
221
  var AZURE_DEPLOYMENT_PRICE_ALIASES = /* @__PURE__ */ new Map([
215
222
  ["deepseek-v4-pro", "DeepSeek-V4-Pro"],
216
223
  ["deepseek-v4-flash", "DeepSeek-V4-Flash"],
224
+ ["deepseek-v4.1-flash", "deepseek-v4.1-flash"],
225
+ ["fw-deepseek-v4.1-flash", "deepseek-v4.1-flash"],
217
226
  ["kimi-k2.7-code", "Kimi-K2.7-Code"],
218
227
  ["gpt-oss-120b", "gpt-oss-120b"],
219
228
  ["gpt-5.6-sol", "gpt-5.6-sol"],
220
229
  ["gpt-5.6-luna", "gpt-5.6-luna"],
221
- ["gpt-5.6-terra", "gpt-5.6-terra"]
230
+ ["gpt-5.6-terra", "gpt-5.6-terra"],
231
+ ["gpt-6-luna", "gpt-6-luna"]
222
232
  ]);
223
233
  function azureDeploymentPriceKey(model) {
224
234
  const lower = model.toLowerCase();
@@ -255,7 +265,7 @@ function getRates(model) {
255
265
  const rates = MODEL_PRICING[key] ?? (aliasKey ? MODEL_PRICING[aliasKey] : void 0);
256
266
  if (!rates) {
257
267
  if (model)
258
- console.warn(`[0sec] Unknown model for cost estimation: ${model}`);
268
+ console.warn(`[0] Unknown model for cost estimation: ${model}`);
259
269
  return MODEL_PRICING.default;
260
270
  }
261
271
  return rates;
@@ -832,17 +842,21 @@ function researchPlatformLpeDisclosureReady(envelope, platform) {
832
842
  import { homedir } from "node:os";
833
843
  import { join as join2 } from "node:path";
834
844
  function homeStateDir(home = homedir()) {
835
- return join2(home, ".0sec");
845
+ return join2(home, ".0");
846
+ }
847
+ function cloudStateDir(home = homedir(), env = process.env) {
848
+ const state = homeStateDir(home);
849
+ return env["ZERO_DEV_SOURCE_ROOT"]?.trim() ? join2(state, "dev") : state;
836
850
  }
837
851
  function runStateDir(runId, home) {
838
852
  if (!/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(runId)) {
839
- throw new Error(`Invalid 0sec run id ${JSON.stringify(runId)}.`);
853
+ throw new Error(`Invalid 0 run id ${JSON.stringify(runId)}.`);
840
854
  }
841
855
  return join2(homeStateDir(home), "runs", runId);
842
856
  }
843
857
 
844
858
  // packages/shared/dist/agent-assurance.js
845
- var AGENT_ACTION_ASSURANCE_SCHEMA_VERSION = "0sec.agent-action-assurance/v1";
859
+ var AGENT_ACTION_ASSURANCE_SCHEMA_VERSION = "0.agent-action-assurance/v1";
846
860
  var AgentInjectionVectorSchema = external_exports.enum([
847
861
  "readme",
848
862
  "code-comment",
@@ -972,7 +986,7 @@ function parseAgentActionEvidenceManifest(value) {
972
986
  }
973
987
 
974
988
  // packages/shared/dist/presentation.js
975
- var PRESENTATION_PROTOCOL = "0sec.presentation/v1";
989
+ var PRESENTATION_PROTOCOL = "0.presentation/v1";
976
990
  function createTranscriptDocument(entries) {
977
991
  return {
978
992
  protocol: PRESENTATION_PROTOCOL,
@@ -1015,6 +1029,176 @@ var DESKTOP_CONSOLE_SCHEMA_VERSION = 1;
1015
1029
  var DEFAULT_AUTONOMY_MODE = "yolo";
1016
1030
  var DEFAULT_ALLOW_MODEL_SELF_EXTENSION = true;
1017
1031
 
1032
+ // packages/shared/dist/jev.js
1033
+ var FEATURES = ["browser", "memory", "dedupe", "redteam", "kernel", "crash", "radar", "foxguard"];
1034
+ var INPUT_USD_PER_TOKEN = 0.042 / 1e6;
1035
+ var MAX_INPUT_TOKENS = 65536;
1036
+ var REQUEST_RESERVATION_USD = MAX_INPUT_TOKENS * INPUT_USD_PER_TOKEN;
1037
+ var probability = external_exports.number().finite().min(0).max(1);
1038
+ var questionSchema = external_exports.discriminatedUnion("type", [
1039
+ external_exports.object({
1040
+ type: external_exports.literal("boolean"),
1041
+ instructions: external_exports.string().min(1).max(8192),
1042
+ criteria: external_exports.object({ true: external_exports.string().max(4096), false: external_exports.string().max(4096) }).optional()
1043
+ }).strict(),
1044
+ external_exports.object({
1045
+ type: external_exports.literal("choice"),
1046
+ instructions: external_exports.string().min(1).max(8192),
1047
+ criteria: external_exports.record(external_exports.string().min(1).max(128), external_exports.string().max(4096)).refine((value) => Object.keys(value).length >= 2 && Object.keys(value).length <= 64)
1048
+ }).strict()
1049
+ ]);
1050
+ var normalizedAnswerSchema = external_exports.discriminatedUnion("type", [
1051
+ external_exports.object({ type: external_exports.literal("boolean"), probability }),
1052
+ external_exports.object({ type: external_exports.literal("choice"), choice: external_exports.string(), probabilities: external_exports.record(probability) })
1053
+ ]);
1054
+ var usageSchema = external_exports.object({
1055
+ inputTokens: external_exports.number().int().nonnegative().max(MAX_INPUT_TOKENS),
1056
+ outputTokens: external_exports.number().int().nonnegative()
1057
+ });
1058
+ function positiveNumber(value, fallback, name) {
1059
+ if (value === void 0)
1060
+ return fallback;
1061
+ const parsed = Number(value);
1062
+ if (!Number.isFinite(parsed) || parsed <= 0)
1063
+ throw new Error(`${name} must be a positive number`);
1064
+ return parsed;
1065
+ }
1066
+ function jevConfigFromEnvironment(feature, environment) {
1067
+ const requested = (environment["ZERO_JEV_FEATURES"] ?? "").split(",").map((item) => item.trim()).filter(Boolean);
1068
+ for (const name of requested) {
1069
+ if (!FEATURES.includes(name))
1070
+ throw new Error(`Unknown ZERO_JEV_FEATURES entry: ${name}`);
1071
+ }
1072
+ if (!requested.includes(feature))
1073
+ return void 0;
1074
+ const provider = environment["ZERO_JEV_PROVIDER"] ?? "vercel";
1075
+ if (provider !== "vercel" && provider !== "cloud") {
1076
+ throw new Error("ZERO_JEV_PROVIDER must be vercel or cloud");
1077
+ }
1078
+ const common = {
1079
+ timeoutMs: positiveNumber(environment["ZERO_JEV_TIMEOUT_MS"], 1e4, "ZERO_JEV_TIMEOUT_MS"),
1080
+ maxRequests: positiveNumber(environment["ZERO_JEV_MAX_REQUESTS"], 100, "ZERO_JEV_MAX_REQUESTS"),
1081
+ maxCostUsd: positiveNumber(environment["ZERO_JEV_MAX_COST_USD"], 0.1, "ZERO_JEV_MAX_COST_USD")
1082
+ };
1083
+ const keyName = provider === "cloud" ? "ZERO_JEV_CLOUD_TOKEN" : "AI_GATEWAY_API_KEY";
1084
+ const apiKey = environment[keyName]?.trim();
1085
+ if (!apiKey)
1086
+ throw new Error(`${keyName} is required when Jev assistance is enabled`);
1087
+ if (provider === "cloud") {
1088
+ return { provider, apiKey, cloudUrl: environment["ZERO_JEV_CLOUD_URL"], feature, ...common };
1089
+ }
1090
+ return {
1091
+ provider,
1092
+ apiKey,
1093
+ ...common
1094
+ };
1095
+ }
1096
+ function createJevEvaluator(config) {
1097
+ if (!config.apiKey.trim())
1098
+ throw new Error("A Jev provider credential is required");
1099
+ const timeoutMs = config.timeoutMs ?? 1e4;
1100
+ const maxRequests = config.maxRequests ?? 100;
1101
+ const maxCostUsd = config.maxCostUsd ?? 0.1;
1102
+ if (!Number.isInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > 6e4 || !Number.isInteger(maxRequests) || maxRequests < 1 || maxRequests > 1e4 || !Number.isFinite(maxCostUsd) || maxCostUsd <= 0) {
1103
+ throw new Error("Invalid Jev timeout, request limit, or cost budget");
1104
+ }
1105
+ if (config.provider === "cloud") {
1106
+ const url = new URL(config.cloudUrl ?? "");
1107
+ if (url.protocol !== "https:" && !(url.protocol === "http:" && ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname)) || url.username || url.password || url.search || url.hash || !config.feature || !FEATURES.includes(config.feature)) {
1108
+ throw new Error("Invalid Jev cloud evaluation endpoint or feature");
1109
+ }
1110
+ }
1111
+ let requests = 0;
1112
+ let chargedOrReservedUsd = 0;
1113
+ const fetchImpl = config.fetch ?? globalThis.fetch;
1114
+ return {
1115
+ async evaluate(request) {
1116
+ request.signal?.throwIfAborted();
1117
+ const questions = external_exports.record(external_exports.string().regex(/^[a-zA-Z][a-zA-Z0-9_]{0,63}$/), questionSchema).parse(request.questions);
1118
+ const questionIds = Object.keys(questions);
1119
+ if (questionIds.length < 1 || questionIds.length > 64)
1120
+ throw new Error("Jev requires between 1 and 64 questions");
1121
+ const encoded = JSON.stringify({ state: request.state, questions });
1122
+ if (encoded.length > 32e3)
1123
+ throw new Error("Jev state and questions exceed the bounded input limit");
1124
+ if (requests >= maxRequests || chargedOrReservedUsd + REQUEST_RESERVATION_USD > maxCostUsd) {
1125
+ throw new Error("Jev workflow evaluation budget exhausted");
1126
+ }
1127
+ requests++;
1128
+ chargedOrReservedUsd += REQUEST_RESERVATION_USD;
1129
+ const startedAt = performance.now();
1130
+ const signal = request.signal ? AbortSignal.any([request.signal, AbortSignal.timeout(timeoutMs)]) : AbortSignal.timeout(timeoutMs);
1131
+ let rawAnswers;
1132
+ let model;
1133
+ let rawUsage;
1134
+ try {
1135
+ if (config.provider === "cloud") {
1136
+ const response = await fetchImpl(config.cloudUrl, {
1137
+ method: "POST",
1138
+ signal,
1139
+ redirect: "error",
1140
+ headers: { Authorization: `Bearer ${config.apiKey}`, "Content-Type": "application/json" },
1141
+ body: JSON.stringify({ feature: config.feature, state: request.state, questions })
1142
+ });
1143
+ if (!response.ok)
1144
+ throw new Error(`Jev provider returned HTTP ${response.status}`);
1145
+ const body = external_exports.object({ model: external_exports.string().min(1), answers: external_exports.record(external_exports.unknown()), usage: usageSchema }).parse(await response.json());
1146
+ model = body.model;
1147
+ rawUsage = body.usage;
1148
+ rawAnswers = body.answers;
1149
+ } else {
1150
+ const [{ experimental_evaluate: evaluate }, { createGateway }] = await Promise.all([
1151
+ import("./dist-KEULE5IQ.js"),
1152
+ import("./dist-XZB53PS5.js")
1153
+ ]);
1154
+ signal.throwIfAborted();
1155
+ const gateway = createGateway({ apiKey: config.apiKey, fetch: fetchImpl });
1156
+ const result = await evaluate({
1157
+ model: gateway.evaluationModel("typesafe-ai/jev"),
1158
+ state: typeof request.state === "string" ? request.state : JSON.stringify(request.state),
1159
+ questions,
1160
+ abortSignal: signal,
1161
+ maxRetries: 0
1162
+ });
1163
+ model = result.response.modelId;
1164
+ rawUsage = result.usage;
1165
+ rawAnswers = result.answers;
1166
+ }
1167
+ signal.throwIfAborted();
1168
+ const parsedUsage = usageSchema.parse(rawUsage);
1169
+ const usage = { ...parsedUsage, estimatedCostUsd: parsedUsage.inputTokens * INPUT_USD_PER_TOKEN };
1170
+ chargedOrReservedUsd += usage.estimatedCostUsd - REQUEST_RESERVATION_USD;
1171
+ config.onUsage?.(usage);
1172
+ if (Object.keys(rawAnswers).length !== questionIds.length)
1173
+ throw new Error("Jev returned unexpected answer IDs");
1174
+ const answers = /* @__PURE__ */ Object.create(null);
1175
+ for (const id of questionIds) {
1176
+ const question = questions[id];
1177
+ const answer = normalizedAnswerSchema.parse(rawAnswers[id]);
1178
+ if (question.type !== answer.type)
1179
+ throw new Error("Jev answer type does not match its question");
1180
+ if (question.type === "choice" && answer.type === "choice") {
1181
+ const options = Object.keys(question.criteria);
1182
+ if (!Object.hasOwn(question.criteria, answer.choice) || Object.keys(answer.probabilities).length !== options.length || options.some((option) => !Object.hasOwn(answer.probabilities, option)) || Math.abs(options.reduce((sum, option) => sum + answer.probabilities[option], 0) - 1) > 0.02 || options.some((option) => answer.probabilities[option] > answer.probabilities[answer.choice])) {
1183
+ throw new Error("Jev returned an invalid choice distribution");
1184
+ }
1185
+ }
1186
+ answers[id] = answer;
1187
+ }
1188
+ return { model, answers, usage, durationMs: performance.now() - startedAt };
1189
+ } catch (error) {
1190
+ if (signal.aborted)
1191
+ throw new Error(request.signal?.aborted ? "Jev evaluation cancelled" : "Jev evaluation timed out");
1192
+ if (error instanceof external_exports.ZodError)
1193
+ throw new Error("Jev provider returned malformed evaluation data");
1194
+ if (error instanceof Error && /^Jev (provider returned HTTP \d{3}|returned (unexpected answer IDs|an invalid choice distribution)|answer type does not match its question)$/.test(error.message))
1195
+ throw error;
1196
+ throw new Error("Jev evaluation unavailable; retain the existing decision path");
1197
+ }
1198
+ }
1199
+ };
1200
+ }
1201
+
1018
1202
  export {
1019
1203
  defaultRoleFor,
1020
1204
  resolveIdentities,
@@ -1073,6 +1257,7 @@ export {
1073
1257
  researchWindowsLpeDisclosureReady,
1074
1258
  researchPlatformLpeDisclosureReady,
1075
1259
  homeStateDir,
1260
+ cloudStateDir,
1076
1261
  runStateDir,
1077
1262
  AGENT_ACTION_ASSURANCE_SCHEMA_VERSION,
1078
1263
  AgentInjectionVectorSchema,
@@ -1090,5 +1275,7 @@ export {
1090
1275
  isPresentationEvent,
1091
1276
  DESKTOP_CONSOLE_SCHEMA_VERSION,
1092
1277
  DEFAULT_AUTONOMY_MODE,
1093
- DEFAULT_ALLOW_MODEL_SELF_EXTENSION
1278
+ DEFAULT_ALLOW_MODEL_SELF_EXTENSION,
1279
+ jevConfigFromEnvironment,
1280
+ createJevEvaluator
1094
1281
  };
@@ -1,6 +1,6 @@
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
 
5
5
  // packages/core/dist/agent/apply-patch.js
6
6
  import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
@@ -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
  collectScopeFiles
6
- } from "./chunk-53G27VPS.js";
6
+ } from "./chunk-AZ7L3HFD.js";
7
7
 
8
8
  // packages/core/dist/specdrift/extract.js
9
9
  var MODAL_RE = /\b(MUST(?:\s+NOT)?|SHALL(?:\s+NOT)?|SHOULD(?:\s+NOT)?|MAY|REQUIRED|OPTIONAL)\b/;
@@ -1,6 +1,6 @@
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
 
5
5
  // packages/core/dist/agent/sanitized-env.js
6
6
  var SENSITIVE_ENV_PATTERNS = [
@@ -51,20 +51,20 @@ var SENSITIVE_ENV_PATTERNS = [
51
51
  "NVD_API",
52
52
  "E2B_API",
53
53
  "WPSCAN_API_TOKEN",
54
- "0SEC_WPSCAN_API_TOKEN",
54
+ "ZERO_WPSCAN_API_TOKEN",
55
55
  "GITHUB_TOKEN",
56
56
  "GITLAB_TOKEN",
57
57
  "GH_TOKEN",
58
58
  "GL_TOKEN",
59
59
  // Per-dispatch secrets injected by 0cloud's worker-controller.
60
- "0SEC_CLOUD_TOKEN",
61
- "0SEC_CHATGPT_ACCESS_TOKEN",
62
- "0SEC_CHATGPT_OAUTH_REFRESH_TOKEN",
63
- "0SEC_GITHUB_TOKEN",
64
- "0SEC_GITLAB_TOKEN",
65
- "0SEC_TARGET_AUTH_JSON",
66
- "0SEC_GRAPH_ACCESS_TOKEN",
67
- "0SEC_LLM_TARGET_KEY"
60
+ "ZERO_CLOUD_TOKEN",
61
+ "ZERO_CHATGPT_ACCESS_TOKEN",
62
+ "ZERO_CHATGPT_OAUTH_REFRESH_TOKEN",
63
+ "ZERO_GITHUB_TOKEN",
64
+ "ZERO_GITLAB_TOKEN",
65
+ "ZERO_TARGET_AUTH_JSON",
66
+ "ZERO_GRAPH_ACCESS_TOKEN",
67
+ "ZERO_LLM_TARGET_KEY"
68
68
  ];
69
69
  function sanitizedEnv(env = process.env) {
70
70
  return allowlistedChildEnv({}, env);
@@ -95,9 +95,9 @@ var CHILD_ENV_ALLOWLIST = [
95
95
  "AUTH_VALUE",
96
96
  "AUTH_CURL_FLAG",
97
97
  // Existing child-runtime configuration contract; each name is non-secret.
98
- "0SEC_FEATURE_JIT_SKILLS",
99
- "0SEC_BASH_TIMEOUT_MS",
100
- "0SEC_CLOUD_SCAN_ID"
98
+ "ZERO_FEATURE_JIT_SKILLS",
99
+ "ZERO_BASH_TIMEOUT_MS",
100
+ "ZERO_CLOUD_SCAN_ID"
101
101
  ];
102
102
  function allowlistedChildEnv(extras = {}, env = process.env) {
103
103
  const out = {};
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
- import { createRequire as __0secCreateRequire } from "node:module";
3
- const require = __0secCreateRequire(import.meta.url);
4
- import {
5
- verifyKernelFinding
6
- } from "./chunk-SNKTC4BP.js";
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
7
4
  import {
8
5
  createJournalWriter
9
- } from "./chunk-SOG2U7B3.js";
6
+ } from "./chunk-CAJJRUTV.js";
7
+ import {
8
+ verifyKernelFinding
9
+ } from "./chunk-5T6D5BVY.js";
10
10
  import {
11
11
  homeStateDir
12
- } from "./chunk-KKGE5RQE.js";
12
+ } from "./chunk-PC6RCKQV.js";
13
13
 
14
14
  // packages/core/dist/cve/adapt-loop.js
15
15
  import { existsSync as existsSync2, readFileSync as readFileSync2, writeFileSync as writeFileSync2 } from "node:fs";
@@ -45,12 +45,12 @@ var PocFetchError = class extends Error {
45
45
  }
46
46
  };
47
47
  function defaultCacheDir() {
48
- return process.env["0SEC_CVE_POC_CACHE"]?.trim() || join(homeStateDir(), "cve-pocs");
48
+ return process.env["ZERO_CVE_POC_CACHE"]?.trim() || join(homeStateDir(), "cve-pocs");
49
49
  }
50
50
  function buildHeaders(token) {
51
51
  const headers = {
52
52
  "Accept": "*/*",
53
- "User-Agent": "0sec-cve-adapt/0.1"
53
+ "User-Agent": "0-cve-adapt/0.1"
54
54
  };
55
55
  const resolved = token ?? process.env.GITHUB_TOKEN?.trim();
56
56
  if (resolved)
@@ -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-KKGE5RQE.js";
6
+ } from "./chunk-PC6RCKQV.js";
7
7
 
8
8
  // packages/core/dist/scope/waf-detect.js
9
9
  function readHeader(headers, name) {
@@ -574,7 +574,7 @@ async function defaultFetchJson(url, timeoutMs) {
574
574
  try {
575
575
  const res = await fetch(url, {
576
576
  signal: controller.signal,
577
- headers: { Accept: "application/json", "User-Agent": "0sec-recon" }
577
+ headers: { Accept: "application/json", "User-Agent": "0-recon" }
578
578
  });
579
579
  if (!res.ok)
580
580
  throw new Error(`crt.sh HTTP ${res.status}`);
@@ -1041,8 +1041,8 @@ async function lookupKev(input, opts = {}) {
1041
1041
  }
1042
1042
  async function fetchKevCatalog(input, opts) {
1043
1043
  const cache = new IntelCache(input.cacheDir);
1044
- const url = process.env["0SEC_CISA_KEV_URL"] ?? DEFAULT_KEV_URL;
1045
- return await cachedJson(cache, "cisa-kev", url, async () => await fetchJson(url, { headers: { "User-Agent": "0sec-intel/0.1" } }, opts), { offline: input.offline, ttlMs: input.ttlMs });
1044
+ const url = process.env["ZERO_CISA_KEV_URL"] ?? DEFAULT_KEV_URL;
1045
+ return await cachedJson(cache, "cisa-kev", url, async () => await fetchJson(url, { headers: { "User-Agent": "0-intel/0.1" } }, opts), { offline: input.offline, ttlMs: input.ttlMs });
1046
1046
  }
1047
1047
 
1048
1048
  // packages/core/dist/intel/github.js
@@ -1183,7 +1183,7 @@ function githubHeaders(extra) {
1183
1183
  const headers = {
1184
1184
  Accept: "application/vnd.github+json",
1185
1185
  "X-GitHub-Api-Version": "2022-11-28",
1186
- "User-Agent": "0sec-intel/0.1",
1186
+ "User-Agent": "0-intel/0.1",
1187
1187
  ...extra ?? {}
1188
1188
  };
1189
1189
  const token = resolveGitHubToken();
@@ -1193,7 +1193,7 @@ function githubHeaders(extra) {
1193
1193
  }
1194
1194
  var cachedGitHubToken;
1195
1195
  function resolveGitHubToken() {
1196
- const envToken = process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN ?? process.env["0SEC_GITHUB_TOKEN"];
1196
+ const envToken = process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN ?? process.env["ZERO_GITHUB_TOKEN"];
1197
1197
  if (envToken && envToken.trim())
1198
1198
  return envToken.trim();
1199
1199
  if (cachedGitHubToken !== void 0)
@@ -2113,7 +2113,7 @@ function pickMetric(cve) {
2113
2113
  }
2114
2114
  function nvdHeaders(extra) {
2115
2115
  const headers = {
2116
- "User-Agent": "0sec-intel/0.1",
2116
+ "User-Agent": "0-intel/0.1",
2117
2117
  ...extra ?? {}
2118
2118
  };
2119
2119
  if (process.env.NVD_API_KEY)
@@ -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
  external_exports
6
- } from "./chunk-YLMN3N25.js";
6
+ } from "./chunk-VIT5ALXF.js";
7
7
 
8
8
  // packages/core/dist/protocol/http-conformance.js
9
9
  import { randomUUID } from "node:crypto";