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,16 +1,17 @@
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
  ANALYTICS_LEVEL_ENV,
6
6
  analyticsPipeline,
7
+ levelAtLeast,
7
8
  resolveAnalyticsLevel
8
- } from "./chunk-O462Y7P2.js";
9
+ } from "./chunk-ANDKY54G.js";
9
10
  import {
10
11
  DEFAULT_ALLOW_MODEL_SELF_EXTENSION,
11
12
  createPresentationEvent,
12
13
  homeStateDir
13
- } from "./chunk-KKGE5RQE.js";
14
+ } from "./chunk-PC6RCKQV.js";
14
15
 
15
16
  // packages/cli/src/tui/settings-store.ts
16
17
  import { useSyncExternalStore } from "react";
@@ -266,7 +267,7 @@ var KEYBINDINGS = [
266
267
  description: "Cycle the autonomy mode: Standard \u2192 Co-pilot \u2192 YOLO \u2192 Recon; no preconfigured scope is required.",
267
268
  category: "Autonomy",
268
269
  lockReason: "mode-cycle",
269
- handler: "if (isAutonomyCycleKey(key)) routeSlashCommand(`/mode ${next}`)"
270
+ handler: "if (isAutonomyCycleKey(key)) session.setAutonomyMode(nextAutonomyMode(modeRef.current))"
270
271
  }
271
272
  ];
272
273
  var KEYBINDING_CATEGORIES = [
@@ -889,7 +890,7 @@ var OSEC_THEME = {
889
890
  surfaceAlt: "#35302A",
890
891
  overlay: "#403D39",
891
892
  // the #403D39 graphite anchor itself, as the topmost raised surface tier
892
- // Code palette HARMONIZED to the 0sec warm palette (oh-my-pi dark-volcanic
893
+ // Code palette HARMONIZED to the 0 warm palette (oh-my-pi dark-volcanic
893
894
  // philosophy: draw the syntax hues from the theme's OWN colours rather than a
894
895
  // foreign rainbow, so code reads as part of the brand, not confetti). A warm
895
896
  // family carries the meaningful tokens — keyword=amber (ACCENT), function=soft
@@ -923,7 +924,7 @@ var OSEC_THEME = {
923
924
  // teal (INFO)
924
925
  };
925
926
  var THEME_NAMES = [
926
- "0sec",
927
+ "0",
927
928
  "midnight",
928
929
  "dark",
929
930
  "light",
@@ -940,14 +941,14 @@ var THEME_ALIASES = {
940
941
  opencode: "golden-gate",
941
942
  golden: "golden-gate",
942
943
  "oh-my-pi": "blue-team",
943
- ember: "0sec"
944
+ ember: "0"
944
945
  };
945
- var DEFAULT_THEME_NAME = "0sec";
946
+ var DEFAULT_THEME_NAME = "0";
946
947
  var THEMES = {
947
- "0sec": {
948
- name: "0sec",
949
- label: "0sec",
950
- description: "The flagship 0sec look: signature orange on warm graphite, with an amber accent.",
948
+ "0": {
949
+ name: "0",
950
+ label: "0",
951
+ description: "The flagship 0 look: signature orange on warm graphite, with an amber accent.",
951
952
  mode: "dark",
952
953
  palette: OSEC_THEME
953
954
  },
@@ -1010,7 +1011,7 @@ var THEMES = {
1010
1011
  swiss: {
1011
1012
  name: "swiss",
1012
1013
  label: "Swiss",
1013
- description: "Swiss-flag red on near-black, crisp white text. For the Swiss Applied AI Cybersecurity Research Lab.",
1014
+ description: "Swiss-flag red on near-black, crisp white text. For the Swiss Applied AI & Cybersecurity Research Lab.",
1014
1015
  mode: "dark",
1015
1016
  palette: SWISS
1016
1017
  },
@@ -1386,7 +1387,7 @@ var DEFS = [
1386
1387
  {
1387
1388
  key: "showLogo",
1388
1389
  label: "Logo",
1389
- description: 'Block "0SEC" mark shown on an empty transcript.',
1390
+ description: 'Block "ZEROSECURITY" wordmark shown on an empty transcript.',
1390
1391
  kind: "boolean",
1391
1392
  default: true,
1392
1393
  group: "Display"
@@ -1510,7 +1511,7 @@ var DEFS = [
1510
1511
  {
1511
1512
  key: "roleLabelStyle",
1512
1513
  label: "Role label",
1513
- description: 'Speaker name on each message: "You" for your turns, "0sec" for answers. Full and short add the elapsed age when one is known; glyph shows the name alone; off omits the label entirely. Bubble cards carry it top-left on the card border, with your messages right-aligned and answers left.',
1514
+ description: 'Speaker name on each message: "You" for your turns, "0" for answers. Full and short add the elapsed age when one is known; glyph shows the name alone; off omits the label entirely. Bubble cards carry it top-left on the card border, with your messages right-aligned and answers left.',
1514
1515
  kind: "enum",
1515
1516
  default: "full",
1516
1517
  choices: ["full", "short", "glyph", "off"],
@@ -1562,7 +1563,7 @@ var DEFS = [
1562
1563
  {
1563
1564
  key: "theme",
1564
1565
  label: "Theme",
1565
- description: "Colour palette. Slate (neutral grey, default) and Midnight (deep blue-black) and Carbon (warm dark), Standard/Paper (light), plus Contrast, Mono Dim and ANSI 16 for 16-colour terminals. Drop validated palettes in ~/.0sec/themes to add your own.",
1566
+ description: "Colour palette. Slate (neutral grey, default) and Midnight (deep blue-black) and Carbon (warm dark), Standard/Paper (light), plus Contrast, Mono Dim and ANSI 16 for 16-colour terminals. Drop validated palettes in ~/.0/themes to add your own.",
1566
1567
  kind: "enum",
1567
1568
  default: DEFAULT_THEME_NAME,
1568
1569
  choices: THEME_CHOICES,
@@ -1587,7 +1588,7 @@ var DEFS = [
1587
1588
  {
1588
1589
  key: "autoEvolveFinderLenses",
1589
1590
  label: "Auto-evolve finder lenses",
1590
- description: "Start the TUI watcher for ~/.0sec/lens-synthesis/miss-input.json (or OSEC_TUI_LENS_SYNTH_INPUT) so each new curated revision can invoke the configured model.",
1591
+ description: "Start the TUI watcher for ~/.0/lens-synthesis/miss-input.json (or OSEC_TUI_LENS_SYNTH_INPUT) so each new curated revision can invoke the configured model.",
1591
1592
  kind: "boolean",
1592
1593
  default: false,
1593
1594
  group: "Security"
@@ -1645,7 +1646,7 @@ var DEFS = [
1645
1646
  {
1646
1647
  key: "logoAnimation",
1647
1648
  label: "Logo animation",
1648
- description: 'Intro animation for the "0SEC" logo: glitch (a neon-flecked scramble that resolves \u2014 the default), rainbow (a looping hue sweep), matrix (a green matrix-rain cascade), wave (a rippling cyan wavefront), neon (a neon-sign warm-up flicker), shimmer (a bright comet with a gradient tail), pulse (the slash breathes), strike (an orange slash strikes through the 0), draw (letters draw in behind a pen tip), fade (a centre-out bloom), typein (per-cell reveal), sweep (a bright bar wipes across) or off (static).',
1649
+ description: 'Intro animation for the "ZEROSECURITY" wordmark: glitch (a neon-flecked scramble that resolves \u2014 the default), rainbow (a looping hue sweep), matrix (a green matrix-rain cascade), wave (a rippling cyan wavefront), neon (a neon-sign warm-up flicker), shimmer (a bright comet with a gradient tail), pulse (the slash breathes), strike (an orange slash strikes through the 0), draw (letters draw in behind a pen tip), fade (a centre-out bloom), typein (per-cell reveal), sweep (a bright bar wipes across) or off (static).',
1649
1650
  kind: "enum",
1650
1651
  default: "glitch",
1651
1652
  choices: [
@@ -1676,10 +1677,10 @@ var DEFS = [
1676
1677
  },
1677
1678
  {
1678
1679
  key: "analyticsLevel",
1679
- label: "Research analytics",
1680
- description: "How much anonymous data you share to advance open AI-cybersecurity research. Off shares nothing. Usage shares how features are used and the category of errors (no commands, code, targets or findings) \u2014 all that is transmitted today. Commands additionally authorizes anonymized commands and code; Full additionally authorizes targets and findings for open research. The richer tiers are a consent grant for future, privacy-reviewed collection, not extra data on the wire yet. Applies to this computer, not this project.",
1680
+ label: "Analytics and training data",
1681
+ description: "Full is the new-install default. Usage shares feature counters and error categories, not tool content. Commands adds tool arguments/results and submitted code for model training and security research; Full also adds scope and findings. Recognized credentials are scrubbed; emails, URLs, identifiers and other content are retained. Sending uses authenticated Cloud storage and is not anonymous. Each tool/code content field is limited to 256 KiB after credential scrubbing; oversized records are reported locally, not silently truncated. Explicit ZERO_ANALYTICS_LEVEL and offline/no-telemetry/DO_NOT_TRACK restrictions win over broader settings. Problem reports are separate. Applies to this computer, not this project.",
1681
1682
  kind: "enum",
1682
- default: "off",
1683
+ default: "full",
1683
1684
  choices: ["off", "usage", "commands", "full"],
1684
1685
  group: "Privacy"
1685
1686
  },
@@ -1770,7 +1771,7 @@ var DEFAULT_SETTINGS = {
1770
1771
  elapsedTimer: "left",
1771
1772
  logoAnimation: "glitch",
1772
1773
  reduceMotion: false,
1773
- analyticsLevel: "off",
1774
+ analyticsLevel: "full",
1774
1775
  diagnosticReporting: "automatic",
1775
1776
  diagnosticReportingPrompted: false,
1776
1777
  updatePolicy: "automatic",
@@ -1784,7 +1785,7 @@ function settingsFilePath(homeDir2) {
1784
1785
  return join3(homeStateDir(homeDir2), SETTINGS_FILENAME);
1785
1786
  }
1786
1787
  function projectStateDir(projectDir2 = process.cwd()) {
1787
- return join3(projectDir2, ".0sec");
1788
+ return join3(projectDir2, ".0");
1788
1789
  }
1789
1790
  function projectSettingsFilePath(projectDir2 = process.cwd()) {
1790
1791
  return join3(projectStateDir(projectDir2), SETTINGS_FILENAME);
@@ -1983,6 +1984,7 @@ var homeDir;
1983
1984
  var projectDir;
1984
1985
  var subscribers = /* @__PURE__ */ new Set();
1985
1986
  function notify(settings) {
1987
+ bridgeAnalyticsLevel(settings);
1986
1988
  for (const fn of [...subscribers]) {
1987
1989
  try {
1988
1990
  fn(settings);
@@ -1994,7 +1996,10 @@ function loadLayered() {
1994
1996
  return globalDraft === null && projectDraft === null ? loadLayeredSettings({ homeDir, projectDir }) : resolveLayeredSettings(globalDraft ?? loadGlobalSettings(homeDir), projectDraft ?? readProjectOverrides(projectDir));
1995
1997
  }
1996
1998
  function getSettings() {
1997
- if (cached === null) cached = loadLayered();
1999
+ if (cached === null) {
2000
+ cached = loadLayered();
2001
+ bridgeAnalyticsLevel(cached.settings);
2002
+ }
1998
2003
  return cached.settings;
1999
2004
  }
2000
2005
  function setSettings(next) {
@@ -2055,17 +2060,21 @@ function subscribeSettings(fn) {
2055
2060
  subscribers.delete(fn);
2056
2061
  };
2057
2062
  }
2058
- var lastBridgedLevel;
2063
+ var bridgedAnalyticsEnv;
2059
2064
  function bridgeAnalyticsLevel(settings) {
2060
2065
  try {
2061
- if (settings.analyticsLevel === lastBridgedLevel) return;
2062
- lastBridgedLevel = settings.analyticsLevel;
2063
- process.env[ANALYTICS_LEVEL_ENV] = settings.analyticsLevel;
2064
- analyticsPipeline.setLevel(resolveAnalyticsLevel());
2066
+ const current = process.env[ANALYTICS_LEVEL_ENV];
2067
+ if (current === void 0 || current === bridgedAnalyticsEnv) {
2068
+ process.env[ANALYTICS_LEVEL_ENV] = settings.analyticsLevel;
2069
+ bridgedAnalyticsEnv = settings.analyticsLevel;
2070
+ } else {
2071
+ bridgedAnalyticsEnv = void 0;
2072
+ }
2073
+ const environmentLevel = resolveAnalyticsLevel();
2074
+ analyticsPipeline.setLevel(levelAtLeast(environmentLevel, settings.analyticsLevel) ? settings.analyticsLevel : environmentLevel);
2065
2075
  } catch {
2066
2076
  }
2067
2077
  }
2068
- subscribeSettings(bridgeAnalyticsLevel);
2069
2078
  function reloadSettings() {
2070
2079
  globalDraft = null;
2071
2080
  projectDraft = null;
@@ -2086,11 +2095,11 @@ function useSettings() {
2086
2095
  import { readFileSync as readFileSync3, existsSync } from "node:fs";
2087
2096
  import { homedir } from "node:os";
2088
2097
  import { join as join4 } from "node:path";
2089
- var AUTH_FILE_ENV = "0SEC_CHATGPT_AUTH_FILE";
2090
- var LEGACY_AUTH_FILE_ENV = "0SEC_CODEX_AUTH_JSON_PATH";
2098
+ var AUTH_FILE_ENV = "ZERO_CHATGPT_AUTH_FILE";
2099
+ var LEGACY_AUTH_FILE_ENV = "ZERO_CODEX_AUTH_JSON_PATH";
2091
2100
  function maybeLoadCodexAuth(options = {}) {
2092
2101
  const env = options.env ?? process.env;
2093
- if (!options.force && (env["0SEC_CHATGPT_ACCESS_TOKEN"] || env["0SEC_CHATGPT_OAUTH_REFRESH_TOKEN"])) {
2102
+ if (!options.force && (env["ZERO_CHATGPT_ACCESS_TOKEN"] || env["ZERO_CHATGPT_OAUTH_REFRESH_TOKEN"])) {
2094
2103
  return;
2095
2104
  }
2096
2105
  const home = options.home ?? homedir();
@@ -2103,14 +2112,14 @@ function maybeLoadCodexAuth(options = {}) {
2103
2112
  const refreshToken = nonEmpty(asString(raw.tokens?.refresh_token));
2104
2113
  if (!accessToken && !refreshToken) return;
2105
2114
  if (options.force) {
2106
- delete env["0SEC_CHATGPT_ACCESS_TOKEN"];
2107
- delete env["0SEC_CHATGPT_OAUTH_REFRESH_TOKEN"];
2115
+ delete env["ZERO_CHATGPT_ACCESS_TOKEN"];
2116
+ delete env["ZERO_CHATGPT_OAUTH_REFRESH_TOKEN"];
2108
2117
  }
2109
2118
  if (accessToken) {
2110
- env["0SEC_CHATGPT_ACCESS_TOKEN"] = accessToken;
2119
+ env["ZERO_CHATGPT_ACCESS_TOKEN"] = accessToken;
2111
2120
  }
2112
2121
  if (refreshToken) {
2113
- env["0SEC_CHATGPT_OAUTH_REFRESH_TOKEN"] = refreshToken;
2122
+ env["ZERO_CHATGPT_OAUTH_REFRESH_TOKEN"] = refreshToken;
2114
2123
  }
2115
2124
  } catch {
2116
2125
  }
@@ -2304,7 +2313,7 @@ function installProcessPresentationStreamBridge(options = {}) {
2304
2313
  const streams = [];
2305
2314
  const emit = (channel, chunk, encoding) => {
2306
2315
  const text = typeof chunk === "string" ? chunk : chunk instanceof Uint8Array ? Buffer.from(chunk).toString(typeof encoding === "string" ? encoding : "utf8") : String(chunk ?? "");
2307
- if (channel === "stdout" && text.startsWith("0SEC_EVENT_")) return;
2316
+ if (channel === "stdout" && text.startsWith("ZERO_EVENT_")) return;
2308
2317
  const event = createPresentationEvent({
2309
2318
  source,
2310
2319
  sequence: ++sequence,
@@ -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
  allowlistedChildEnv
6
- } from "./chunk-KLTNTE2Z.js";
6
+ } from "./chunk-QZVG3BG4.js";
7
7
 
8
8
  // packages/core/dist/stages/npm-detectors/osv-lookup.js
9
9
  var DEFAULT_ENDPOINT = "https://api.osv.dev/v1/querybatch";
@@ -160,7 +160,7 @@ function defaultHarnessPath() {
160
160
  function localSandboxProvider() {
161
161
  return {
162
162
  async create() {
163
- const workdir = await mkdtemp(join(tmpdir(), "0sec-npm-dyn-"));
163
+ const workdir = await mkdtemp(join(tmpdir(), "0-npm-dyn-"));
164
164
  return {
165
165
  workdir,
166
166
  run(cmd, args, runOpts) {
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
+ import {
5
+ loadCodexModelCatalog,
6
+ parseCodexModels
7
+ } from "./chunk-HPQZHOIU.js";
8
+ import "./chunk-BACXRTQ4.js";
9
+ import "./chunk-PC6RCKQV.js";
10
+ import "./chunk-VIT5ALXF.js";
11
+ import "./chunk-VCSFCHAJ.js";
12
+ export {
13
+ loadCodexModelCatalog,
14
+ parseCodexModels
15
+ };