0sec-cli 0.22.1 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/0.js +64 -47
  2. package/README.md +73 -53
  3. package/chunks/{adapt-loop-J6QCZZTB.js → adapt-loop-V3JFWOKC.js} +4 -4
  4. package/chunks/{artifact-scraper-MFKT6OI4.js → artifact-scraper-NYKUF2M5.js} +2 -2
  5. package/chunks/{assumption-mining-646LYSJY.js → assumption-mining-ZX3YVWEH.js} +19 -15
  6. package/chunks/backend-connections-H52NIVH2.js +23 -0
  7. package/chunks/{chunk-NLH4LMWH.js → chunk-3E54JYS4.js} +1 -1
  8. package/chunks/chunk-3P3XXSIJ.js +463 -0
  9. package/chunks/{chunk-CPWA6RWE.js → chunk-3ZNI7F42.js} +3 -3
  10. package/chunks/{chunk-LGCASF2C.js → chunk-4HGGNBKK.js} +7405 -2225
  11. package/chunks/{chunk-TM74SSHC.js → chunk-62ENS6XO.js} +1 -1
  12. package/chunks/{chunk-4VGLO2YS.js → chunk-65H3MRBF.js} +5 -2
  13. package/chunks/chunk-A2ADXAC5.js +5329 -0
  14. package/chunks/chunk-A5QO7N3S.js +74 -0
  15. package/chunks/chunk-AAA4PRWK.js +990 -0
  16. package/chunks/{chunk-AV2LG2L7.js → chunk-BF5FIK7H.js} +257 -145
  17. package/chunks/chunk-CP6HANBE.js +355 -0
  18. package/chunks/{chunk-HHPWRY2M.js → chunk-EH2WTNY7.js} +23474 -22746
  19. package/chunks/{chunk-OSBPGWTE.js → chunk-EJH2TNVH.js} +3 -3
  20. package/chunks/chunk-EWXOG6D3.js +1695 -0
  21. package/chunks/{chunk-WZRVS7SB.js → chunk-F344NYUN.js} +1 -1
  22. package/chunks/chunk-FXR3BT2G.js +226 -0
  23. package/chunks/{chunk-GOEA3NW6.js → chunk-HFDSIHTE.js} +1603 -1295
  24. package/chunks/chunk-I3OCJ2OA.js +309 -0
  25. package/chunks/{chunk-X7LAEEUW.js → chunk-ITES7BCY.js} +1 -1
  26. package/chunks/{chunk-YL6YAGLL.js → chunk-JEYIWMGL.js} +1 -1
  27. package/chunks/{chunk-WSDDGFA6.js → chunk-K55B4OH4.js} +1 -1
  28. package/chunks/{chunk-TH2LW437.js → chunk-KCA35IL3.js} +2 -190
  29. package/chunks/chunk-KHPOSLCF.js +1659 -0
  30. package/chunks/chunk-LT7BFGXA.js +733 -0
  31. package/chunks/{chunk-KAU6NLGP.js → chunk-LTEE2JWK.js} +786 -20
  32. package/chunks/{chunk-ZKQ2I3S2.js → chunk-LVGZGG63.js} +1 -1
  33. package/chunks/chunk-MQJVU2GZ.js +277 -0
  34. package/chunks/{chunk-OHHCGDJ2.js → chunk-NI6QYQSK.js} +126 -1089
  35. package/chunks/{chunk-6YNKRUMC.js → chunk-NJLKFC66.js} +321 -5
  36. package/chunks/{chunk-3E2KALZ5.js → chunk-NX4H6L4M.js} +2 -2
  37. package/chunks/{chunk-W6UWZFKL.js → chunk-O6KPVYOI.js} +100 -5
  38. package/chunks/{chunk-IVQV574Y.js → chunk-O6Z4XPOM.js} +1 -1
  39. package/chunks/{chunk-V6GHX34G.js → chunk-OLSKXTQZ.js} +8 -274
  40. package/chunks/{chunk-5BTJMINS.js → chunk-P7KDN5PK.js} +208 -46
  41. package/chunks/chunk-PIR6BNE7.js +83 -0
  42. package/chunks/{chunk-XCISCI4T.js → chunk-QMICC5O2.js} +30 -12
  43. package/chunks/{chunk-6GHSR47F.js → chunk-R35KKJA4.js} +1 -58
  44. package/chunks/chunk-RS4MAN3Q.js +73 -0
  45. package/chunks/{chunk-VWITLWXB.js → chunk-T7ZEVY5G.js} +307 -34
  46. package/chunks/chunk-TPUJZ74W.js +36 -0
  47. package/chunks/{chunk-IFME676H.js → chunk-UZUELPFW.js} +79 -18
  48. package/chunks/{chunk-TV27OWIW.js → chunk-V2BWXPZP.js} +9 -9
  49. package/chunks/chunk-VDOWARMJ.js +63 -0
  50. package/chunks/{chunk-XDKB2P5X.js → chunk-W5VNCB57.js} +1 -1
  51. package/chunks/{chunk-4G7OVYJX.js → chunk-WIYNYNL2.js} +1 -1
  52. package/chunks/chunk-WYNZFNMF.js +457 -0
  53. package/chunks/{chunk-7XCKYNLO.js → chunk-XORZUR2H.js} +1 -1
  54. package/chunks/{chunk-2OQOQ2FZ.js → chunk-Y4HJRUFE.js} +20 -4
  55. package/chunks/{chunk-V36HVTUL.js → chunk-YAEJAZYW.js} +21 -18
  56. package/chunks/{chunk-XA2O4WXA.js → chunk-YYS2H33A.js} +169 -15
  57. package/chunks/{codex-models-NHQW45SO.js → codex-models-Y457ND6Q.js} +9 -3
  58. package/chunks/{commands-N6GN5SBF.js → commands-PBDAOZKA.js} +7019 -5937
  59. package/chunks/{db-5IWEJUYV.js → db-TPSI552V.js} +3 -3
  60. package/chunks/deep-review-DKED6EN5.js +81 -0
  61. package/chunks/{dist-L3XJWWZ6.js → dist-4LGRIBOC.js} +209 -114
  62. package/chunks/{dist-FSS7MBDF.js → dist-7Q5A6TQM.js} +12 -2
  63. package/chunks/{dist-KEULE5IQ.js → dist-LNXGATR2.js} +2 -2
  64. package/chunks/{dist-XZB53PS5.js → dist-M2X367VW.js} +2 -2
  65. package/chunks/{dist-BS4CY4RG.js → dist-RLPNLRZD.js} +79 -1
  66. package/chunks/eval-runner-RZKDOQ2G.js +30 -0
  67. package/chunks/{exploit-agent-KW4EB7BE.js → exploit-agent-RMFYNG7H.js} +1 -1
  68. package/chunks/{exploit-autoclimb-CXJ2ERRO.js → exploit-autoclimb-2A2PQI4E.js} +1 -1
  69. package/chunks/{exploit-climb-TJWLY4XC.js → exploit-climb-DEJ232QN.js} +2 -2
  70. package/chunks/{fix-UUKPXCFB.js → fix-JGBW7XUN.js} +12 -6
  71. package/chunks/{harness-C5HOKIEV.js → harness-CBOLMUHB.js} +3 -3
  72. package/chunks/{hunt-scan-KZZ444V2.js → hunt-scan-MIRMABY4.js} +17 -13
  73. package/chunks/{kernel-primitive-Z77IR7YS.js → kernel-primitive-NAPDMJC7.js} +2 -2
  74. package/chunks/{kernel-vm-runner-JW77P276.js → kernel-vm-runner-PR5OSDQ2.js} +2 -2
  75. package/chunks/managed-operation-YNQQEA5V.js +59 -0
  76. package/chunks/{memsafety-scan-FCPAXIZE.js → memsafety-scan-RPS446CD.js} +2 -2
  77. package/chunks/{native-loop-P6P5GYVJ.js → native-loop-CGOJMNHV.js} +19 -9
  78. package/chunks/orchestrate-5NK34H3W.js +62 -0
  79. package/chunks/{prepare-KYHGFWCJ.js → prepare-YVNENPNL.js} +6 -2
  80. package/chunks/{process-N245QIQG.js → process-MJYJ2K5E.js} +2 -1
  81. package/chunks/remote-workflow-runtime-RGQ5ECMN.js +96 -0
  82. package/chunks/{run-GAFKBCTN.js → run-VH4OIDKF.js} +1919 -4817
  83. package/chunks/{runtime-XFWJTBUO.js → runtime-4TAJFVF7.js} +7 -1
  84. package/chunks/{runtime-H7YBR5IZ.js → runtime-HWL6HG7A.js} +10 -4
  85. package/chunks/{scan-stream-BMOCPKQX.js → scan-stream-HJAZJONE.js} +7 -1
  86. package/chunks/{scope-QWY4VQZ7.js → scope-Q5PIX2IS.js} +2 -2
  87. package/chunks/service-plugins-QYFITODK.js +63 -0
  88. package/chunks/{session-store-XIDFGG7K.js → session-store-2FEIZGSV.js} +6 -4
  89. package/chunks/{variant-candidates-7D4F5E4H.js → variant-candidates-TX5V6XOT.js} +9 -3
  90. package/chunks/{web-recon-prepass-VXXBPDAV.js → web-recon-prepass-6HOUGF7Q.js} +11 -6
  91. package/chunks/workflow-runtime-ZEEBJFQG.js +64 -0
  92. package/dashboard/apple-touch-icon.png +0 -0
  93. package/dashboard/assets/abnfDiagram-VCTEODGH-BuvumFYR.js +1 -0
  94. package/dashboard/assets/arc-DZzWDuCG.js +1 -0
  95. package/dashboard/assets/architecture-7GRP2DOG-DK9bv1Md.js +1 -0
  96. package/dashboard/assets/architectureDiagram-5GKGNRK7-Bw5el_EL.js +36 -0
  97. package/dashboard/assets/array-BifhSqXX.js +1 -0
  98. package/dashboard/assets/blockDiagram-I7D4REHJ-BjVLEApp.js +129 -0
  99. package/dashboard/assets/c4Diagram-7LVT6UL2-B9nNzx2J.js +38 -0
  100. package/dashboard/assets/channel-Ck17eKdX.js +1 -0
  101. package/dashboard/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  102. package/dashboard/assets/chunk-4HAMMTFA-y72Q95nW.js +62 -0
  103. package/dashboard/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  104. package/dashboard/assets/chunk-75Z2AOVW-BOhrOGMO.js +2 -0
  105. package/dashboard/assets/chunk-DU6HZSFF-B0EhAaNb.js +127 -0
  106. package/dashboard/assets/chunk-F27PBJKO-BR-hiDvM.js +1 -0
  107. package/dashboard/assets/chunk-FOHPRMQF-DHwB1DNv.js +161 -0
  108. package/dashboard/assets/chunk-GMAD6QVW-H15vJYXg.js +72 -0
  109. package/dashboard/assets/chunk-GVQU2GXP-BRndps0o.js +1 -0
  110. package/dashboard/assets/chunk-IMKFNOWR-CIzC_OWx.js +231 -0
  111. package/dashboard/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  112. package/dashboard/assets/chunk-L3NEJ4N5-NR4P1Vko.js +1 -0
  113. package/dashboard/assets/chunk-OSK3NFVY-DtjTDf8S.js +10 -0
  114. package/dashboard/assets/chunk-P2QGCYS3-CYT11Qjx.js +1 -0
  115. package/dashboard/assets/chunk-POPQ4Y6H-Duj2Ygwu.js +1 -0
  116. package/dashboard/assets/chunk-PWAF6VOD-z4p5Tf_y.js +1 -0
  117. package/dashboard/assets/chunk-SHT3W25Y-DYeLYLS3.js +168 -0
  118. package/dashboard/assets/chunk-SVP7TREG-BKowxCVI.js +88 -0
  119. package/dashboard/assets/chunk-TICWLB2K-GDAwEFlH.js +206 -0
  120. package/dashboard/assets/chunk-XXDRQBXY-DRD79Mjx.js +1 -0
  121. package/dashboard/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  122. package/dashboard/assets/classDiagram-ZZMXUADV-BaeZA6LE.js +1 -0
  123. package/dashboard/assets/classDiagram-v2-VYDZK3BY-BaeZA6LE.js +1 -0
  124. package/dashboard/assets/common-vnzd7UOF.js +5 -0
  125. package/dashboard/assets/cose-bilkent-JH36ORCC-GqCLsRyf.js +1 -0
  126. package/dashboard/assets/cynefin-OW5HDTMX-CJN9YwWN.js +1 -0
  127. package/dashboard/assets/cynefinDiagram-5FMLGOSQ-DVJHCYQY.js +62 -0
  128. package/dashboard/assets/cytoscape.esm-CGd-uY3x.js +321 -0
  129. package/dashboard/assets/dagre-GXQ25YYZ-BMCrrJJR.js +4 -0
  130. package/dashboard/assets/dagre-PrKaheQc.js +1 -0
  131. package/dashboard/assets/defaultLocale-BFoDCU3G.js +1 -0
  132. package/dashboard/assets/diagram-S7CK7UJ4-CLYDdOEm.js +30 -0
  133. package/dashboard/assets/diagram-UQ7AKVKN-CnPuAZK7.js +41 -0
  134. package/dashboard/assets/diagram-VSXAHHWV-Cr2I2DnG.js +3 -0
  135. package/dashboard/assets/diagram-VX7I27RA-_mGW1wpp.js +24 -0
  136. package/dashboard/assets/diagram-Z3DM3KII-igybB0l9.js +24 -0
  137. package/dashboard/assets/dist-Bb7_-x5y.js +1 -0
  138. package/dashboard/assets/ebnfDiagram-PWID7BFC-CVCICf2R.js +1 -0
  139. package/dashboard/assets/erDiagram-RLTQ6QDP-CRjnfgxj.js +99 -0
  140. package/dashboard/assets/eventmodeling-NTZA5JFV-po5oDydv.js +1 -0
  141. package/dashboard/assets/flowDiagram-HODETNUW-TSV9s7q4.js +1 -0
  142. package/dashboard/assets/ganttDiagram-EL5Y4UJY-DppD7sD7.js +292 -0
  143. package/dashboard/assets/gitGraph-4MIJSDKK-Tw0vNnQc.js +1 -0
  144. package/dashboard/assets/gitGraphDiagram-WWUBYQGX-Cpf96-z3.js +106 -0
  145. package/dashboard/assets/graphlib-DS17s2tU.js +1 -0
  146. package/dashboard/assets/info-A6RAGUB7-DLyt9arx.js +1 -0
  147. package/dashboard/assets/infoDiagram-27XIBGKW-B6_piSNS.js +2 -0
  148. package/dashboard/assets/init-C-OQMol4.js +1 -0
  149. package/dashboard/assets/ishikawaDiagram-5VMMS53U-DvMO0B0X.js +70 -0
  150. package/dashboard/assets/journeyDiagram-3NMN7TZE-f7ZK98b6.js +139 -0
  151. package/dashboard/assets/kanban-definition-UXKFOSKX-Dso0nAxL.js +89 -0
  152. package/dashboard/assets/katex-CXMH3UgJ.js +257 -0
  153. package/dashboard/assets/line-VcKaFG0G.js +1 -0
  154. package/dashboard/assets/linear-D7YnpiWh.js +1 -0
  155. package/dashboard/assets/mermaid-parser.core-DriL2hrV.js +7 -0
  156. package/dashboard/assets/mermaid.core-DJWYDh_P.js +44 -0
  157. package/dashboard/assets/mindmap-definition-YA3MSWOX-DZsoIeac.js +96 -0
  158. package/dashboard/assets/operations-BIaUSnYv.js +121 -0
  159. package/dashboard/assets/operations-BeCdkT4S.css +1 -0
  160. package/dashboard/assets/ordinal-BDEzSJ7C.js +1 -0
  161. package/dashboard/assets/packet-AYTQ26CC-BQBIXKxk.js +1 -0
  162. package/dashboard/assets/path-fybaL0A-.js +1 -0
  163. package/dashboard/assets/pegDiagram-XKGWAZYB-B0-lslgW.js +1 -0
  164. package/dashboard/assets/pie-WAS4IAKB-DoY6dwQs.js +1 -0
  165. package/dashboard/assets/pieDiagram-E7YTZNPT-ElmdRjp5.js +39 -0
  166. package/dashboard/assets/quadrantDiagram-AXDQQJYC-Ci1h98Q2.js +7 -0
  167. package/dashboard/assets/radar-RG4KPBEZ-DHod2WgB.js +1 -0
  168. package/dashboard/assets/railroad-74A4TZTK-90JxB4xV.js +1 -0
  169. package/dashboard/assets/railroad-abnf-HS5TGJTU-BkXGl114.js +1 -0
  170. package/dashboard/assets/railroad-ebnf-LZEXJU2U-QVAERn2C.js +1 -0
  171. package/dashboard/assets/railroad-peg-WCYAUIDC-B1-PM01z.js +1 -0
  172. package/dashboard/assets/railroadDiagram-O6MQD6OU-k3190A6L.js +1 -0
  173. package/dashboard/assets/requirementDiagram-BXWQKSXE-C3-eR7I5.js +84 -0
  174. package/dashboard/assets/rough.esm-Dy-Kn_BL.js +1 -0
  175. package/dashboard/assets/sankeyDiagram-P5KCCOFB-Bc86pi8w.js +40 -0
  176. package/dashboard/assets/sequenceDiagram-WJ2MYXX4-Bv_MvEmz.js +162 -0
  177. package/dashboard/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
  178. package/dashboard/assets/src-D7Dqq5yP.js +1 -0
  179. package/dashboard/assets/stateDiagram-D77RDMKH-Bq_GVmeW.js +1 -0
  180. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-z1XRaftz.js +1 -0
  181. package/dashboard/assets/swimlanes-42K2YHIH-q0iK-e0P.js +1 -0
  182. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-C9L6XBQj.js +8 -0
  183. package/dashboard/assets/timeline-definition-24CTP7MA-CNfF07hM.js +120 -0
  184. package/dashboard/assets/treeView-Q6P3EWNA-m629ePnS.js +1 -0
  185. package/dashboard/assets/treemap-WGGIJYW6-D9Cb2ETv.js +1 -0
  186. package/dashboard/assets/vennDiagram-4TSXK5OY-v4dKF-FE.js +34 -0
  187. package/dashboard/assets/wardley-WFR3VGLG-DkwH_nRe.js +1 -0
  188. package/dashboard/assets/wardleyDiagram-VM6X3IG4-3ImohVu4.js +78 -0
  189. package/dashboard/assets/xychartDiagram-S5SC5T6Z-QJu3dm7K.js +7 -0
  190. package/dashboard/assets/zero-connect-BGDY0PMZ.webp +0 -0
  191. package/dashboard/assets/zero-curious-DovTLOs8.webp +0 -0
  192. package/dashboard/assets/zero-peek-Dzm3MT3X.png +0 -0
  193. package/dashboard/assets/zero-planning-CBeHDrG_.webp +0 -0
  194. package/dashboard/favicon.ico +0 -0
  195. package/dashboard/favicon.svg +10 -0
  196. package/dashboard/index.html +5 -3
  197. package/package.json +1 -1
  198. package/chunks/chunk-BCSRRQG5.js +0 -3514
  199. package/chunks/chunk-BOUGKEKA.js +0 -193
  200. package/chunks/chunk-GHWODZMR.js +0 -16
  201. package/chunks/eval-runner-EMEGF24P.js +0 -26
  202. package/chunks/orchestrate-DWWUT5RC.js +0 -58
  203. package/dashboard/assets/bot-Bg1Tp9_d.js +0 -1
  204. package/dashboard/assets/dist-B_dDCPbu.js +0 -1
  205. package/dashboard/assets/findings-page-mayGhNx6.js +0 -5
  206. package/dashboard/assets/format--susmHX7.js +0 -1
  207. package/dashboard/assets/input-TuVPR3Zl.js +0 -1
  208. package/dashboard/assets/jsx-runtime-MGseXjj5.js +0 -3
  209. package/dashboard/assets/live-page-HWWHX99U.js +0 -1
  210. package/dashboard/assets/meta-tile-ckHo-w7k.js +0 -1
  211. package/dashboard/assets/operations-BxZ0OoXO.js +0 -10
  212. package/dashboard/assets/operations-CMFVrXEe.css +0 -2
  213. package/dashboard/assets/operations-app-D3d35rgo.js +0 -46
  214. package/dashboard/assets/overview-page-W_4IteEr.js +0 -1
  215. package/dashboard/assets/page-header-Bw9AJgBV.js +0 -1
  216. package/dashboard/assets/scans-page-CgzVXHnn.js +0 -1
  217. package/dashboard/assets/siren-KQj8QAnJ.js +0 -1
  218. package/dashboard/assets/table-8EDklulN.js +0 -1
  219. package/dashboard/assets/tabs-CFHPOwg8.js +0 -1
@@ -0,0 +1,463 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
+ import {
5
+ SETTING_DEFS,
6
+ isOperatorSetting,
7
+ loadGlobalSettings,
8
+ loadLayeredSettings,
9
+ normalizeSettings,
10
+ projectSettingsExist,
11
+ readProjectOverrides,
12
+ resolveLayeredSettings,
13
+ saveProjectOverrides,
14
+ saveSettings
15
+ } from "./chunk-HFDSIHTE.js";
16
+ import {
17
+ ANALYTICS_LEVEL_ENV,
18
+ analyticsOptedOut,
19
+ analyticsPipeline,
20
+ levelAtLeast,
21
+ resolveAnalyticsLevel
22
+ } from "./chunk-NI6QYQSK.js";
23
+ import {
24
+ createPresentationEvent
25
+ } from "./chunk-LTEE2JWK.js";
26
+
27
+ // packages/cli/src/tui/settings-store.ts
28
+ import { useSyncExternalStore } from "react";
29
+ var cached = null;
30
+ var globalDraft = null;
31
+ var projectDraft = null;
32
+ var homeDir;
33
+ var projectDir;
34
+ var subscribers = /* @__PURE__ */ new Set();
35
+ function notify(settings) {
36
+ bridgeAnalyticsLevel(settings);
37
+ for (const fn of [...subscribers]) {
38
+ try {
39
+ fn(settings);
40
+ } catch {
41
+ }
42
+ }
43
+ }
44
+ function loadLayered() {
45
+ return globalDraft === null && projectDraft === null ? loadLayeredSettings({ homeDir, projectDir }) : resolveLayeredSettings(globalDraft ?? loadGlobalSettings(homeDir), projectDraft ?? readProjectOverrides(projectDir));
46
+ }
47
+ function getSettings() {
48
+ if (cached === null) {
49
+ cached = loadLayered();
50
+ bridgeAnalyticsLevel(cached.settings);
51
+ }
52
+ return cached.settings;
53
+ }
54
+ function getSettingSources() {
55
+ getSettings();
56
+ return cached.sources;
57
+ }
58
+ function getAnalyticsSetupDraft() {
59
+ const settings = getSettings();
60
+ const current = process.env[ANALYTICS_LEVEL_ENV];
61
+ const shellPreference = current !== void 0 && current !== bridgedAnalyticsEnv;
62
+ if (analyticsOptedOut() || shellPreference && resolveAnalyticsLevel() === "off") return "off";
63
+ return cached.sources.analyticsLevel === "default" ? "usage" : settings.analyticsLevel;
64
+ }
65
+ function setSettings(next) {
66
+ const value = normalizeSettings(next);
67
+ const saved = saveSettings(value, homeDir);
68
+ globalDraft = saved ? null : value;
69
+ cached = loadLayered();
70
+ notify(cached.settings);
71
+ return saved;
72
+ }
73
+ function defaultWriteLayer() {
74
+ return projectSettingsExist(projectDir) ? "project" : "global";
75
+ }
76
+ function updateSetting(key, value, opts = {}) {
77
+ const operatorOnly = isOperatorSetting(key);
78
+ if (operatorOnly && opts.scope === "project") return false;
79
+ const layer = operatorOnly ? "global" : opts.scope ?? defaultWriteLayer();
80
+ if (layer === "global") {
81
+ return setSettings({ ...globalDraft ?? loadGlobalSettings(homeDir), [key]: value });
82
+ }
83
+ const patch = { ...projectDraft ?? readProjectOverrides(projectDir), [key]: value };
84
+ const saved = saveProjectOverrides(patch, projectDir);
85
+ projectDraft = saved ? null : patch;
86
+ cached = loadLayered();
87
+ notify(cached.settings);
88
+ return saved;
89
+ }
90
+ function resetSettings(next, keys) {
91
+ const selected = keys.filter((key) => SETTING_DEFS.some((def) => def.key === key));
92
+ if (selected.length === 0) return true;
93
+ const global = { ...globalDraft ?? loadGlobalSettings(homeDir) };
94
+ const project = { ...projectDraft ?? readProjectOverrides(projectDir) };
95
+ let projectChanged = false;
96
+ for (const key of selected) {
97
+ global[key] = next[key];
98
+ if (Object.hasOwn(project, key)) {
99
+ delete project[key];
100
+ projectChanged = true;
101
+ }
102
+ }
103
+ const value = normalizeSettings(global);
104
+ const globalSaved = saveSettings(value, homeDir);
105
+ globalDraft = globalSaved ? null : value;
106
+ const projectSaved = !projectChanged || saveProjectOverrides(project, projectDir);
107
+ if (projectChanged) projectDraft = projectSaved ? null : project;
108
+ cached = loadLayered();
109
+ notify(cached.settings);
110
+ return globalSaved && projectSaved;
111
+ }
112
+ function previewSetting(key, value) {
113
+ if (cached === null) cached = loadLayered();
114
+ cached = { settings: { ...cached.settings, [key]: value }, sources: cached.sources };
115
+ notify(cached.settings);
116
+ }
117
+ function subscribeSettings(fn) {
118
+ subscribers.add(fn);
119
+ return () => {
120
+ subscribers.delete(fn);
121
+ };
122
+ }
123
+ var bridgedAnalyticsEnv;
124
+ function bridgeAnalyticsLevel(settings) {
125
+ try {
126
+ const current = process.env[ANALYTICS_LEVEL_ENV];
127
+ if (current === void 0 || current === bridgedAnalyticsEnv) {
128
+ process.env[ANALYTICS_LEVEL_ENV] = settings.analyticsLevel;
129
+ bridgedAnalyticsEnv = settings.analyticsLevel;
130
+ } else {
131
+ bridgedAnalyticsEnv = void 0;
132
+ }
133
+ const environmentLevel = resolveAnalyticsLevel();
134
+ analyticsPipeline.setLevel(levelAtLeast(environmentLevel, settings.analyticsLevel) ? settings.analyticsLevel : environmentLevel);
135
+ } catch {
136
+ }
137
+ }
138
+ function reloadSettings() {
139
+ globalDraft = null;
140
+ projectDraft = null;
141
+ cached = loadLayered();
142
+ notify(cached.settings);
143
+ return cached.settings;
144
+ }
145
+ function configureSettingsStore(options) {
146
+ homeDir = options.homeDir;
147
+ projectDir = options.projectDir;
148
+ reloadSettings();
149
+ }
150
+ function useSettings() {
151
+ return useSyncExternalStore(subscribeSettings, getSettings, getSettings);
152
+ }
153
+
154
+ // packages/cli/src/codex-auth.ts
155
+ import { readFileSync, existsSync } from "node:fs";
156
+ import { homedir } from "node:os";
157
+ import { join } from "node:path";
158
+ var AUTH_FILE_ENV = "ZERO_CHATGPT_AUTH_FILE";
159
+ var LEGACY_AUTH_FILE_ENV = "ZERO_CODEX_AUTH_JSON_PATH";
160
+ function maybeLoadCodexAuth(options = {}) {
161
+ const env = options.env ?? process.env;
162
+ if (!options.force && (env["ZERO_CHATGPT_ACCESS_TOKEN"] || env["ZERO_CHATGPT_OAUTH_REFRESH_TOKEN"])) {
163
+ return;
164
+ }
165
+ const home = options.home ?? homedir();
166
+ const override = nonEmpty(env[AUTH_FILE_ENV]) ?? nonEmpty(env[LEGACY_AUTH_FILE_ENV]);
167
+ const path = override ?? join(home, ".codex", "auth.json");
168
+ if (!existsSync(path)) return;
169
+ try {
170
+ const raw = JSON.parse(readFileSync(path, "utf8"));
171
+ const accessToken = nonEmpty(asString(raw.tokens?.access_token));
172
+ const refreshToken = nonEmpty(asString(raw.tokens?.refresh_token));
173
+ if (!accessToken && !refreshToken) return;
174
+ if (options.force) {
175
+ delete env["ZERO_CHATGPT_ACCESS_TOKEN"];
176
+ delete env["ZERO_CHATGPT_OAUTH_REFRESH_TOKEN"];
177
+ }
178
+ if (accessToken) {
179
+ env["ZERO_CHATGPT_ACCESS_TOKEN"] = accessToken;
180
+ }
181
+ if (refreshToken) {
182
+ env["ZERO_CHATGPT_OAUTH_REFRESH_TOKEN"] = refreshToken;
183
+ }
184
+ } catch {
185
+ }
186
+ }
187
+ function nonEmpty(value) {
188
+ return typeof value === "string" && value.length > 0 ? value : void 0;
189
+ }
190
+ function asString(value) {
191
+ return typeof value === "string" ? value : void 0;
192
+ }
193
+
194
+ // packages/cli/src/presentation/event-bus.ts
195
+ var PresentationEventBus = class {
196
+ listeners = [];
197
+ subscribe(listener) {
198
+ this.listeners.push(listener);
199
+ return () => {
200
+ const index = this.listeners.indexOf(listener);
201
+ if (index >= 0) this.listeners.splice(index, 1);
202
+ };
203
+ }
204
+ emit(event) {
205
+ for (const listener of [...this.listeners]) {
206
+ try {
207
+ listener.emit(event);
208
+ } catch {
209
+ }
210
+ }
211
+ }
212
+ get size() {
213
+ return this.listeners.length;
214
+ }
215
+ };
216
+ var presentationEventBus = new PresentationEventBus();
217
+ function createPresentationEmitter(options = {}) {
218
+ const source = options.source ?? "cli";
219
+ const now = options.now ?? (() => (/* @__PURE__ */ new Date()).toISOString());
220
+ const bus = options.bus ?? presentationEventBus;
221
+ let sequence = 0;
222
+ return {
223
+ emit(eventType, payload, correlation = {}) {
224
+ const event = createPresentationEvent({
225
+ source,
226
+ sequence: ++sequence,
227
+ at: now(),
228
+ eventType,
229
+ payload,
230
+ ...correlation.scanId ? { scanId: correlation.scanId } : {},
231
+ ...correlation.sessionId ? { sessionId: correlation.sessionId } : {}
232
+ });
233
+ bus.emit(event);
234
+ return event;
235
+ }
236
+ };
237
+ }
238
+
239
+ // packages/cli/src/presentation/process-output.ts
240
+ import { format } from "node:util";
241
+ var streamBridgeSuppressionDepth = 0;
242
+ var activeStreamBridge = null;
243
+ function currentPresentationTimestamp() {
244
+ return (/* @__PURE__ */ new Date()).toISOString();
245
+ }
246
+ function createProcessPresentationOutput(options = {}) {
247
+ const stdout = options.stdout ?? { write: process.stdout.write.bind(process.stdout) };
248
+ const stderr = options.stderr ?? { write: process.stderr.write.bind(process.stderr) };
249
+ const source = options.source ?? "cli";
250
+ const now = options.now ?? currentPresentationTimestamp;
251
+ let sequence = 0;
252
+ const write = (channel, target, text, eventType) => {
253
+ const event = createPresentationEvent({
254
+ source,
255
+ sequence: ++sequence,
256
+ at: now(),
257
+ eventType,
258
+ payload: { channel, text }
259
+ });
260
+ streamBridgeSuppressionDepth += 1;
261
+ try {
262
+ target.write(text);
263
+ } finally {
264
+ streamBridgeSuppressionDepth -= 1;
265
+ }
266
+ options.onEvent?.(event);
267
+ return event;
268
+ };
269
+ return {
270
+ stdout(text, eventType = "output.stdout") {
271
+ return write("stdout", stdout, text, eventType);
272
+ },
273
+ stderr(text, eventType = "output.stderr") {
274
+ return write("stderr", stderr, text, eventType);
275
+ }
276
+ };
277
+ }
278
+ function createConsolePresentationOutput(options = {}) {
279
+ const source = options.source ?? "cli";
280
+ const now = options.now ?? currentPresentationTimestamp;
281
+ let sequence = 0;
282
+ const emit = (channel, text, eventType) => {
283
+ const event = createPresentationEvent({
284
+ source,
285
+ sequence: ++sequence,
286
+ at: now(),
287
+ eventType,
288
+ payload: { channel, text }
289
+ });
290
+ streamBridgeSuppressionDepth += 1;
291
+ try {
292
+ if (channel === "stdout") {
293
+ (options.log ?? console.log)(text);
294
+ } else {
295
+ (options.error ?? console.error)(text);
296
+ }
297
+ } finally {
298
+ streamBridgeSuppressionDepth -= 1;
299
+ }
300
+ options.onEvent?.(event);
301
+ return event;
302
+ };
303
+ return {
304
+ stdout(text, eventType = "output.stdout") {
305
+ return emit("stdout", text, eventType);
306
+ },
307
+ stderr(text, eventType = "output.stderr") {
308
+ return emit("stderr", text, eventType);
309
+ }
310
+ };
311
+ }
312
+ var consolePresentationOutput = createConsolePresentationOutput({
313
+ onEvent(event) {
314
+ presentationEventBus.emit(event);
315
+ }
316
+ });
317
+ function installConsolePresentationBridge(options = {}) {
318
+ const target = options.target ?? console;
319
+ const originals = {
320
+ log: target.log,
321
+ info: target.info,
322
+ warn: target.warn,
323
+ error: target.error
324
+ };
325
+ const source = options.source ?? "cli";
326
+ const now = options.now ?? currentPresentationTimestamp;
327
+ let sequence = 0;
328
+ const emit = (method, channel, args, eventType) => {
329
+ const text = format(...args);
330
+ if (streamBridgeSuppressionDepth > 0) {
331
+ originals[method].call(target, text);
332
+ return;
333
+ }
334
+ const event = createPresentationEvent({
335
+ source,
336
+ sequence: ++sequence,
337
+ at: now(),
338
+ eventType,
339
+ payload: { channel, text }
340
+ });
341
+ streamBridgeSuppressionDepth += 1;
342
+ try {
343
+ originals[method].call(target, text);
344
+ } finally {
345
+ streamBridgeSuppressionDepth -= 1;
346
+ }
347
+ presentationEventBus.emit(event);
348
+ options.onEvent?.(event);
349
+ };
350
+ const bridgedLog = (...args) => emit("log", "stdout", args, "output.console.log");
351
+ const bridgedInfo = (...args) => emit("info", "stdout", args, "output.console.info");
352
+ const bridgedWarn = (...args) => emit("warn", "stderr", args, "output.console.warn");
353
+ const bridgedError = (...args) => emit("error", "stderr", args, "output.console.error");
354
+ target.log = bridgedLog;
355
+ target.info = bridgedInfo;
356
+ target.warn = bridgedWarn;
357
+ target.error = bridgedError;
358
+ return {
359
+ restore() {
360
+ if (target.log === bridgedLog) target.log = originals.log;
361
+ if (target.info === bridgedInfo) target.info = originals.info;
362
+ if (target.warn === bridgedWarn) target.warn = originals.warn;
363
+ if (target.error === bridgedError) target.error = originals.error;
364
+ }
365
+ };
366
+ }
367
+ function installProcessPresentationStreamBridge(options = {}) {
368
+ if (activeStreamBridge) return activeStreamBridge;
369
+ const source = options.source ?? "cli";
370
+ const now = options.now ?? currentPresentationTimestamp;
371
+ let sequence = 0;
372
+ let suspended = false;
373
+ const streams = [];
374
+ const emit = (channel, chunk, encoding) => {
375
+ const text = typeof chunk === "string" ? chunk : chunk instanceof Uint8Array ? Buffer.from(chunk).toString(typeof encoding === "string" ? encoding : "utf8") : String(chunk ?? "");
376
+ if (channel === "stdout" && text.startsWith("ZERO_EVENT_")) return;
377
+ const event = createPresentationEvent({
378
+ source,
379
+ sequence: ++sequence,
380
+ at: now(),
381
+ eventType: channel === "stdout" ? "output.stream.stdout" : "output.stream.stderr",
382
+ payload: { channel, text }
383
+ });
384
+ presentationEventBus.emit(event);
385
+ options.onEvent?.(event);
386
+ };
387
+ for (const [channel, stream] of [
388
+ ["stdout", options.stdout ?? process.stdout],
389
+ ["stderr", options.stderr ?? process.stderr]
390
+ ]) {
391
+ const original = stream.write;
392
+ const patched = ((chunk, encoding, callback) => {
393
+ const result = original.call(stream, chunk, encoding, callback);
394
+ if (!suspended && streamBridgeSuppressionDepth === 0) emit(channel, chunk, encoding);
395
+ return result;
396
+ });
397
+ streams.push({ channel, stream, original, patched });
398
+ }
399
+ const bridge = {
400
+ suspend() {
401
+ if (suspended) return;
402
+ suspended = true;
403
+ for (const item of streams) {
404
+ if (item.stream.write === item.patched) item.stream.write = item.original;
405
+ }
406
+ },
407
+ resume() {
408
+ if (!suspended) return;
409
+ suspended = false;
410
+ for (const item of streams) {
411
+ if (item.stream.write === item.original) item.stream.write = item.patched;
412
+ }
413
+ },
414
+ restore() {
415
+ for (const item of streams) {
416
+ if (item.stream.write === item.patched) item.stream.write = item.original;
417
+ }
418
+ if (activeStreamBridge === bridge) activeStreamBridge = null;
419
+ }
420
+ };
421
+ for (const item of streams) item.stream.write = item.patched;
422
+ activeStreamBridge = bridge;
423
+ return bridge;
424
+ }
425
+ function suspendProcessPresentationStreamBridge() {
426
+ activeStreamBridge?.suspend();
427
+ }
428
+ function resumeProcessPresentationStreamBridge() {
429
+ activeStreamBridge?.resume();
430
+ }
431
+ var processPresentationOutput = createProcessPresentationOutput({
432
+ onEvent(event) {
433
+ presentationEventBus.emit(event);
434
+ }
435
+ });
436
+ function writePresentationLine(text, eventType = "output.stdout") {
437
+ return processPresentationOutput.stdout(`${text}
438
+ `, eventType);
439
+ }
440
+
441
+ export {
442
+ getSettings,
443
+ getSettingSources,
444
+ getAnalyticsSetupDraft,
445
+ defaultWriteLayer,
446
+ updateSetting,
447
+ resetSettings,
448
+ previewSetting,
449
+ subscribeSettings,
450
+ reloadSettings,
451
+ configureSettingsStore,
452
+ useSettings,
453
+ maybeLoadCodexAuth,
454
+ presentationEventBus,
455
+ createPresentationEmitter,
456
+ consolePresentationOutput,
457
+ installConsolePresentationBridge,
458
+ installProcessPresentationStreamBridge,
459
+ suspendProcessPresentationStreamBridge,
460
+ resumeProcessPresentationStreamBridge,
461
+ processPresentationOutput,
462
+ writePresentationLine
463
+ };
@@ -3,13 +3,13 @@ import { createRequire as __0CreateRequire } from "node:module";
3
3
  const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  createJournalWriter
6
- } from "./chunk-NLH4LMWH.js";
6
+ } from "./chunk-3E54JYS4.js";
7
7
  import {
8
8
  verifyKernelFinding
9
- } from "./chunk-WZRVS7SB.js";
9
+ } from "./chunk-F344NYUN.js";
10
10
  import {
11
11
  homeStateDir
12
- } from "./chunk-KAU6NLGP.js";
12
+ } from "./chunk-LTEE2JWK.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";