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.
- package/0.js +64 -47
- package/README.md +73 -53
- package/chunks/{adapt-loop-J6QCZZTB.js → adapt-loop-V3JFWOKC.js} +4 -4
- package/chunks/{artifact-scraper-MFKT6OI4.js → artifact-scraper-NYKUF2M5.js} +2 -2
- package/chunks/{assumption-mining-646LYSJY.js → assumption-mining-ZX3YVWEH.js} +19 -15
- package/chunks/backend-connections-H52NIVH2.js +23 -0
- package/chunks/{chunk-NLH4LMWH.js → chunk-3E54JYS4.js} +1 -1
- package/chunks/chunk-3P3XXSIJ.js +463 -0
- package/chunks/{chunk-CPWA6RWE.js → chunk-3ZNI7F42.js} +3 -3
- package/chunks/{chunk-LGCASF2C.js → chunk-4HGGNBKK.js} +7405 -2225
- package/chunks/{chunk-TM74SSHC.js → chunk-62ENS6XO.js} +1 -1
- package/chunks/{chunk-4VGLO2YS.js → chunk-65H3MRBF.js} +5 -2
- package/chunks/chunk-A2ADXAC5.js +5329 -0
- package/chunks/chunk-A5QO7N3S.js +74 -0
- package/chunks/chunk-AAA4PRWK.js +990 -0
- package/chunks/{chunk-AV2LG2L7.js → chunk-BF5FIK7H.js} +257 -145
- package/chunks/chunk-CP6HANBE.js +355 -0
- package/chunks/{chunk-HHPWRY2M.js → chunk-EH2WTNY7.js} +23474 -22746
- package/chunks/{chunk-OSBPGWTE.js → chunk-EJH2TNVH.js} +3 -3
- package/chunks/chunk-EWXOG6D3.js +1695 -0
- package/chunks/{chunk-WZRVS7SB.js → chunk-F344NYUN.js} +1 -1
- package/chunks/chunk-FXR3BT2G.js +226 -0
- package/chunks/{chunk-GOEA3NW6.js → chunk-HFDSIHTE.js} +1603 -1295
- package/chunks/chunk-I3OCJ2OA.js +309 -0
- package/chunks/{chunk-X7LAEEUW.js → chunk-ITES7BCY.js} +1 -1
- package/chunks/{chunk-YL6YAGLL.js → chunk-JEYIWMGL.js} +1 -1
- package/chunks/{chunk-WSDDGFA6.js → chunk-K55B4OH4.js} +1 -1
- package/chunks/{chunk-TH2LW437.js → chunk-KCA35IL3.js} +2 -190
- package/chunks/chunk-KHPOSLCF.js +1659 -0
- package/chunks/chunk-LT7BFGXA.js +733 -0
- package/chunks/{chunk-KAU6NLGP.js → chunk-LTEE2JWK.js} +786 -20
- package/chunks/{chunk-ZKQ2I3S2.js → chunk-LVGZGG63.js} +1 -1
- package/chunks/chunk-MQJVU2GZ.js +277 -0
- package/chunks/{chunk-OHHCGDJ2.js → chunk-NI6QYQSK.js} +126 -1089
- package/chunks/{chunk-6YNKRUMC.js → chunk-NJLKFC66.js} +321 -5
- package/chunks/{chunk-3E2KALZ5.js → chunk-NX4H6L4M.js} +2 -2
- package/chunks/{chunk-W6UWZFKL.js → chunk-O6KPVYOI.js} +100 -5
- package/chunks/{chunk-IVQV574Y.js → chunk-O6Z4XPOM.js} +1 -1
- package/chunks/{chunk-V6GHX34G.js → chunk-OLSKXTQZ.js} +8 -274
- package/chunks/{chunk-5BTJMINS.js → chunk-P7KDN5PK.js} +208 -46
- package/chunks/chunk-PIR6BNE7.js +83 -0
- package/chunks/{chunk-XCISCI4T.js → chunk-QMICC5O2.js} +30 -12
- package/chunks/{chunk-6GHSR47F.js → chunk-R35KKJA4.js} +1 -58
- package/chunks/chunk-RS4MAN3Q.js +73 -0
- package/chunks/{chunk-VWITLWXB.js → chunk-T7ZEVY5G.js} +307 -34
- package/chunks/chunk-TPUJZ74W.js +36 -0
- package/chunks/{chunk-IFME676H.js → chunk-UZUELPFW.js} +79 -18
- package/chunks/{chunk-TV27OWIW.js → chunk-V2BWXPZP.js} +9 -9
- package/chunks/chunk-VDOWARMJ.js +63 -0
- package/chunks/{chunk-XDKB2P5X.js → chunk-W5VNCB57.js} +1 -1
- package/chunks/{chunk-4G7OVYJX.js → chunk-WIYNYNL2.js} +1 -1
- package/chunks/chunk-WYNZFNMF.js +457 -0
- package/chunks/{chunk-7XCKYNLO.js → chunk-XORZUR2H.js} +1 -1
- package/chunks/{chunk-2OQOQ2FZ.js → chunk-Y4HJRUFE.js} +20 -4
- package/chunks/{chunk-V36HVTUL.js → chunk-YAEJAZYW.js} +21 -18
- package/chunks/{chunk-XA2O4WXA.js → chunk-YYS2H33A.js} +169 -15
- package/chunks/{codex-models-NHQW45SO.js → codex-models-Y457ND6Q.js} +9 -3
- package/chunks/{commands-N6GN5SBF.js → commands-PBDAOZKA.js} +7019 -5937
- package/chunks/{db-5IWEJUYV.js → db-TPSI552V.js} +3 -3
- package/chunks/deep-review-DKED6EN5.js +81 -0
- package/chunks/{dist-L3XJWWZ6.js → dist-4LGRIBOC.js} +209 -114
- package/chunks/{dist-FSS7MBDF.js → dist-7Q5A6TQM.js} +12 -2
- package/chunks/{dist-KEULE5IQ.js → dist-LNXGATR2.js} +2 -2
- package/chunks/{dist-XZB53PS5.js → dist-M2X367VW.js} +2 -2
- package/chunks/{dist-BS4CY4RG.js → dist-RLPNLRZD.js} +79 -1
- package/chunks/eval-runner-RZKDOQ2G.js +30 -0
- package/chunks/{exploit-agent-KW4EB7BE.js → exploit-agent-RMFYNG7H.js} +1 -1
- package/chunks/{exploit-autoclimb-CXJ2ERRO.js → exploit-autoclimb-2A2PQI4E.js} +1 -1
- package/chunks/{exploit-climb-TJWLY4XC.js → exploit-climb-DEJ232QN.js} +2 -2
- package/chunks/{fix-UUKPXCFB.js → fix-JGBW7XUN.js} +12 -6
- package/chunks/{harness-C5HOKIEV.js → harness-CBOLMUHB.js} +3 -3
- package/chunks/{hunt-scan-KZZ444V2.js → hunt-scan-MIRMABY4.js} +17 -13
- package/chunks/{kernel-primitive-Z77IR7YS.js → kernel-primitive-NAPDMJC7.js} +2 -2
- package/chunks/{kernel-vm-runner-JW77P276.js → kernel-vm-runner-PR5OSDQ2.js} +2 -2
- package/chunks/managed-operation-YNQQEA5V.js +59 -0
- package/chunks/{memsafety-scan-FCPAXIZE.js → memsafety-scan-RPS446CD.js} +2 -2
- package/chunks/{native-loop-P6P5GYVJ.js → native-loop-CGOJMNHV.js} +19 -9
- package/chunks/orchestrate-5NK34H3W.js +62 -0
- package/chunks/{prepare-KYHGFWCJ.js → prepare-YVNENPNL.js} +6 -2
- package/chunks/{process-N245QIQG.js → process-MJYJ2K5E.js} +2 -1
- package/chunks/remote-workflow-runtime-RGQ5ECMN.js +96 -0
- package/chunks/{run-GAFKBCTN.js → run-VH4OIDKF.js} +1919 -4817
- package/chunks/{runtime-XFWJTBUO.js → runtime-4TAJFVF7.js} +7 -1
- package/chunks/{runtime-H7YBR5IZ.js → runtime-HWL6HG7A.js} +10 -4
- package/chunks/{scan-stream-BMOCPKQX.js → scan-stream-HJAZJONE.js} +7 -1
- package/chunks/{scope-QWY4VQZ7.js → scope-Q5PIX2IS.js} +2 -2
- package/chunks/service-plugins-QYFITODK.js +63 -0
- package/chunks/{session-store-XIDFGG7K.js → session-store-2FEIZGSV.js} +6 -4
- package/chunks/{variant-candidates-7D4F5E4H.js → variant-candidates-TX5V6XOT.js} +9 -3
- package/chunks/{web-recon-prepass-VXXBPDAV.js → web-recon-prepass-6HOUGF7Q.js} +11 -6
- package/chunks/workflow-runtime-ZEEBJFQG.js +64 -0
- package/dashboard/apple-touch-icon.png +0 -0
- package/dashboard/assets/abnfDiagram-VCTEODGH-BuvumFYR.js +1 -0
- package/dashboard/assets/arc-DZzWDuCG.js +1 -0
- package/dashboard/assets/architecture-7GRP2DOG-DK9bv1Md.js +1 -0
- package/dashboard/assets/architectureDiagram-5GKGNRK7-Bw5el_EL.js +36 -0
- package/dashboard/assets/array-BifhSqXX.js +1 -0
- package/dashboard/assets/blockDiagram-I7D4REHJ-BjVLEApp.js +129 -0
- package/dashboard/assets/c4Diagram-7LVT6UL2-B9nNzx2J.js +38 -0
- package/dashboard/assets/channel-Ck17eKdX.js +1 -0
- package/dashboard/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- package/dashboard/assets/chunk-4HAMMTFA-y72Q95nW.js +62 -0
- package/dashboard/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
- package/dashboard/assets/chunk-75Z2AOVW-BOhrOGMO.js +2 -0
- package/dashboard/assets/chunk-DU6HZSFF-B0EhAaNb.js +127 -0
- package/dashboard/assets/chunk-F27PBJKO-BR-hiDvM.js +1 -0
- package/dashboard/assets/chunk-FOHPRMQF-DHwB1DNv.js +161 -0
- package/dashboard/assets/chunk-GMAD6QVW-H15vJYXg.js +72 -0
- package/dashboard/assets/chunk-GVQU2GXP-BRndps0o.js +1 -0
- package/dashboard/assets/chunk-IMKFNOWR-CIzC_OWx.js +231 -0
- package/dashboard/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
- package/dashboard/assets/chunk-L3NEJ4N5-NR4P1Vko.js +1 -0
- package/dashboard/assets/chunk-OSK3NFVY-DtjTDf8S.js +10 -0
- package/dashboard/assets/chunk-P2QGCYS3-CYT11Qjx.js +1 -0
- package/dashboard/assets/chunk-POPQ4Y6H-Duj2Ygwu.js +1 -0
- package/dashboard/assets/chunk-PWAF6VOD-z4p5Tf_y.js +1 -0
- package/dashboard/assets/chunk-SHT3W25Y-DYeLYLS3.js +168 -0
- package/dashboard/assets/chunk-SVP7TREG-BKowxCVI.js +88 -0
- package/dashboard/assets/chunk-TICWLB2K-GDAwEFlH.js +206 -0
- package/dashboard/assets/chunk-XXDRQBXY-DRD79Mjx.js +1 -0
- package/dashboard/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
- package/dashboard/assets/classDiagram-ZZMXUADV-BaeZA6LE.js +1 -0
- package/dashboard/assets/classDiagram-v2-VYDZK3BY-BaeZA6LE.js +1 -0
- package/dashboard/assets/common-vnzd7UOF.js +5 -0
- package/dashboard/assets/cose-bilkent-JH36ORCC-GqCLsRyf.js +1 -0
- package/dashboard/assets/cynefin-OW5HDTMX-CJN9YwWN.js +1 -0
- package/dashboard/assets/cynefinDiagram-5FMLGOSQ-DVJHCYQY.js +62 -0
- package/dashboard/assets/cytoscape.esm-CGd-uY3x.js +321 -0
- package/dashboard/assets/dagre-GXQ25YYZ-BMCrrJJR.js +4 -0
- package/dashboard/assets/dagre-PrKaheQc.js +1 -0
- package/dashboard/assets/defaultLocale-BFoDCU3G.js +1 -0
- package/dashboard/assets/diagram-S7CK7UJ4-CLYDdOEm.js +30 -0
- package/dashboard/assets/diagram-UQ7AKVKN-CnPuAZK7.js +41 -0
- package/dashboard/assets/diagram-VSXAHHWV-Cr2I2DnG.js +3 -0
- package/dashboard/assets/diagram-VX7I27RA-_mGW1wpp.js +24 -0
- package/dashboard/assets/diagram-Z3DM3KII-igybB0l9.js +24 -0
- package/dashboard/assets/dist-Bb7_-x5y.js +1 -0
- package/dashboard/assets/ebnfDiagram-PWID7BFC-CVCICf2R.js +1 -0
- package/dashboard/assets/erDiagram-RLTQ6QDP-CRjnfgxj.js +99 -0
- package/dashboard/assets/eventmodeling-NTZA5JFV-po5oDydv.js +1 -0
- package/dashboard/assets/flowDiagram-HODETNUW-TSV9s7q4.js +1 -0
- package/dashboard/assets/ganttDiagram-EL5Y4UJY-DppD7sD7.js +292 -0
- package/dashboard/assets/gitGraph-4MIJSDKK-Tw0vNnQc.js +1 -0
- package/dashboard/assets/gitGraphDiagram-WWUBYQGX-Cpf96-z3.js +106 -0
- package/dashboard/assets/graphlib-DS17s2tU.js +1 -0
- package/dashboard/assets/info-A6RAGUB7-DLyt9arx.js +1 -0
- package/dashboard/assets/infoDiagram-27XIBGKW-B6_piSNS.js +2 -0
- package/dashboard/assets/init-C-OQMol4.js +1 -0
- package/dashboard/assets/ishikawaDiagram-5VMMS53U-DvMO0B0X.js +70 -0
- package/dashboard/assets/journeyDiagram-3NMN7TZE-f7ZK98b6.js +139 -0
- package/dashboard/assets/kanban-definition-UXKFOSKX-Dso0nAxL.js +89 -0
- package/dashboard/assets/katex-CXMH3UgJ.js +257 -0
- package/dashboard/assets/line-VcKaFG0G.js +1 -0
- package/dashboard/assets/linear-D7YnpiWh.js +1 -0
- package/dashboard/assets/mermaid-parser.core-DriL2hrV.js +7 -0
- package/dashboard/assets/mermaid.core-DJWYDh_P.js +44 -0
- package/dashboard/assets/mindmap-definition-YA3MSWOX-DZsoIeac.js +96 -0
- package/dashboard/assets/operations-BIaUSnYv.js +121 -0
- package/dashboard/assets/operations-BeCdkT4S.css +1 -0
- package/dashboard/assets/ordinal-BDEzSJ7C.js +1 -0
- package/dashboard/assets/packet-AYTQ26CC-BQBIXKxk.js +1 -0
- package/dashboard/assets/path-fybaL0A-.js +1 -0
- package/dashboard/assets/pegDiagram-XKGWAZYB-B0-lslgW.js +1 -0
- package/dashboard/assets/pie-WAS4IAKB-DoY6dwQs.js +1 -0
- package/dashboard/assets/pieDiagram-E7YTZNPT-ElmdRjp5.js +39 -0
- package/dashboard/assets/quadrantDiagram-AXDQQJYC-Ci1h98Q2.js +7 -0
- package/dashboard/assets/radar-RG4KPBEZ-DHod2WgB.js +1 -0
- package/dashboard/assets/railroad-74A4TZTK-90JxB4xV.js +1 -0
- package/dashboard/assets/railroad-abnf-HS5TGJTU-BkXGl114.js +1 -0
- package/dashboard/assets/railroad-ebnf-LZEXJU2U-QVAERn2C.js +1 -0
- package/dashboard/assets/railroad-peg-WCYAUIDC-B1-PM01z.js +1 -0
- package/dashboard/assets/railroadDiagram-O6MQD6OU-k3190A6L.js +1 -0
- package/dashboard/assets/requirementDiagram-BXWQKSXE-C3-eR7I5.js +84 -0
- package/dashboard/assets/rough.esm-Dy-Kn_BL.js +1 -0
- package/dashboard/assets/sankeyDiagram-P5KCCOFB-Bc86pi8w.js +40 -0
- package/dashboard/assets/sequenceDiagram-WJ2MYXX4-Bv_MvEmz.js +162 -0
- package/dashboard/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
- package/dashboard/assets/src-D7Dqq5yP.js +1 -0
- package/dashboard/assets/stateDiagram-D77RDMKH-Bq_GVmeW.js +1 -0
- package/dashboard/assets/stateDiagram-v2-MP3YSRHH-z1XRaftz.js +1 -0
- package/dashboard/assets/swimlanes-42K2YHIH-q0iK-e0P.js +1 -0
- package/dashboard/assets/swimlanesDiagram-VR7AAH4N-C9L6XBQj.js +8 -0
- package/dashboard/assets/timeline-definition-24CTP7MA-CNfF07hM.js +120 -0
- package/dashboard/assets/treeView-Q6P3EWNA-m629ePnS.js +1 -0
- package/dashboard/assets/treemap-WGGIJYW6-D9Cb2ETv.js +1 -0
- package/dashboard/assets/vennDiagram-4TSXK5OY-v4dKF-FE.js +34 -0
- package/dashboard/assets/wardley-WFR3VGLG-DkwH_nRe.js +1 -0
- package/dashboard/assets/wardleyDiagram-VM6X3IG4-3ImohVu4.js +78 -0
- package/dashboard/assets/xychartDiagram-S5SC5T6Z-QJu3dm7K.js +7 -0
- package/dashboard/assets/zero-connect-BGDY0PMZ.webp +0 -0
- package/dashboard/assets/zero-curious-DovTLOs8.webp +0 -0
- package/dashboard/assets/zero-peek-Dzm3MT3X.png +0 -0
- package/dashboard/assets/zero-planning-CBeHDrG_.webp +0 -0
- package/dashboard/favicon.ico +0 -0
- package/dashboard/favicon.svg +10 -0
- package/dashboard/index.html +5 -3
- package/package.json +1 -1
- package/chunks/chunk-BCSRRQG5.js +0 -3514
- package/chunks/chunk-BOUGKEKA.js +0 -193
- package/chunks/chunk-GHWODZMR.js +0 -16
- package/chunks/eval-runner-EMEGF24P.js +0 -26
- package/chunks/orchestrate-DWWUT5RC.js +0 -58
- package/dashboard/assets/bot-Bg1Tp9_d.js +0 -1
- package/dashboard/assets/dist-B_dDCPbu.js +0 -1
- package/dashboard/assets/findings-page-mayGhNx6.js +0 -5
- package/dashboard/assets/format--susmHX7.js +0 -1
- package/dashboard/assets/input-TuVPR3Zl.js +0 -1
- package/dashboard/assets/jsx-runtime-MGseXjj5.js +0 -3
- package/dashboard/assets/live-page-HWWHX99U.js +0 -1
- package/dashboard/assets/meta-tile-ckHo-w7k.js +0 -1
- package/dashboard/assets/operations-BxZ0OoXO.js +0 -10
- package/dashboard/assets/operations-CMFVrXEe.css +0 -2
- package/dashboard/assets/operations-app-D3d35rgo.js +0 -46
- package/dashboard/assets/overview-page-W_4IteEr.js +0 -1
- package/dashboard/assets/page-header-Bw9AJgBV.js +0 -1
- package/dashboard/assets/scans-page-CgzVXHnn.js +0 -1
- package/dashboard/assets/siren-KQj8QAnJ.js +0 -1
- package/dashboard/assets/table-8EDklulN.js +0 -1
- 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-
|
|
6
|
+
} from "./chunk-3E54JYS4.js";
|
|
7
7
|
import {
|
|
8
8
|
verifyKernelFinding
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-F344NYUN.js";
|
|
10
10
|
import {
|
|
11
11
|
homeStateDir
|
|
12
|
-
} from "./chunk-
|
|
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";
|