0sec-cli 0.24.1 → 0.26.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 +67 -62
- package/README.md +121 -82
- package/chunks/{adapt-loop-L77BWMNE.js → adapt-loop-P4HKONB5.js} +6 -5
- package/chunks/{artifact-scraper-BV67RAP5.js → artifact-scraper-IIRJNYKT.js} +4 -3
- package/chunks/{assumption-mining-RPVR77A3.js → assumption-mining-YA6VJ2V6.js} +22 -20
- package/chunks/{backend-connections-ACIXNYZN.js → backend-connections-64PKYKL7.js} +5 -4
- package/chunks/chunk-36J5ZLFE.js +18729 -0
- package/chunks/{chunk-ZM6ANQZJ.js → chunk-3MWQNNJU.js} +16180 -34467
- package/chunks/{chunk-GV5WXDHY.js → chunk-3VQ5EZKG.js} +11 -9
- package/chunks/chunk-5XOYTAOK.js +1546 -0
- package/chunks/{chunk-UJE4WOQS.js → chunk-6GV5G6U3.js} +1 -1
- package/chunks/{chunk-X2ZMSRTP.js → chunk-6SNOKNCS.js} +333 -3
- package/chunks/{chunk-BMDG6T7D.js → chunk-72PU46MS.js} +178 -133
- package/chunks/{chunk-KCA35IL3.js → chunk-7PUJI64A.js} +11 -9
- package/chunks/chunk-A7G6S5RA.js +90 -0
- package/chunks/chunk-ABKUI3QB.js +196 -0
- package/chunks/{chunk-5ETI27Q3.js → chunk-AFJ2UMPR.js} +3 -3
- package/chunks/{chunk-XA2IBHPB.js → chunk-B7XL6RON.js} +1 -1
- package/chunks/{chunk-TVS6WVSK.js → chunk-BM6EYP2D.js} +3 -3
- package/chunks/{chunk-7UHAXEOV.js → chunk-D4M5WURF.js} +226 -4
- package/chunks/{chunk-K74DRDC5.js → chunk-EHNVP6QB.js} +1 -1
- package/chunks/{chunk-I43YYHDU.js → chunk-FBZBJYZS.js} +5 -50
- package/chunks/{chunk-GXXX7AGH.js → chunk-GYEYTNHK.js} +144 -14
- package/chunks/{chunk-IJ6UPW3H.js → chunk-HS2NQ7K6.js} +393 -58
- package/chunks/chunk-HUZ2EC2R.js +196 -0
- package/chunks/{chunk-SU4IHQQI.js → chunk-IUUNIJPM.js} +1 -1
- package/chunks/chunk-JGDA6EIJ.js +49 -0
- package/chunks/{chunk-CJRZSWII.js → chunk-K3PTYN43.js} +3 -3
- package/chunks/{chunk-2NBZZFRG.js → chunk-KCABBZHN.js} +8 -10
- package/chunks/{chunk-3LPBJMHB.js → chunk-LRD5N2TQ.js} +1 -1
- package/chunks/{chunk-SQCBHFWN.js → chunk-LWMEJYCP.js} +2 -2
- package/chunks/chunk-MNK373HF.js +57 -0
- package/chunks/{chunk-R2XBH476.js → chunk-MOEVVXML.js} +2 -2
- package/chunks/{chunk-F2P25DJY.js → chunk-MOGWEHSC.js} +1448 -1050
- package/chunks/{chunk-6XMFCVJS.js → chunk-N7YCONYR.js} +1 -1
- package/chunks/{chunk-3WUPCZGF.js → chunk-NA3FKCI2.js} +1 -1
- package/chunks/{chunk-S2GITRD5.js → chunk-NABVDAAO.js} +2 -2
- package/chunks/{chunk-SZDD77KX.js → chunk-NNMOTHKC.js} +6 -10
- package/chunks/{chunk-LMP2T4G2.js → chunk-OILVEROI.js} +22 -172
- package/chunks/{chunk-YERUDEXT.js → chunk-PAE7ZAV6.js} +2780 -1255
- package/chunks/{chunk-NBV4I237.js → chunk-PAMJEXE2.js} +1 -1
- package/chunks/{chunk-PJU24AKR.js → chunk-R7VWEY45.js} +337 -257
- package/chunks/{chunk-QNRYOJEB.js → chunk-RZZ6VPRY.js} +1 -1
- package/chunks/{chunk-WUPN3D37.js → chunk-S4DFH2FJ.js} +26 -1
- package/chunks/{chunk-5WAHHZBF.js → chunk-SIR7XW2S.js} +61910 -30777
- package/chunks/{chunk-BD7WULFS.js → chunk-SSPP64FF.js} +3 -2
- package/chunks/{chunk-BOBIAHKA.js → chunk-STPHTPSD.js} +3 -333
- package/chunks/{chunk-Q7JKIKKF.js → chunk-UGCTPKJG.js} +89 -17
- package/chunks/{chunk-5PFRE522.js → chunk-ULRLUXSS.js} +1 -1
- package/chunks/{chunk-GZA7RGK7.js → chunk-UQS7XCBV.js} +2085 -1093
- package/chunks/{chunk-X2IPO5JO.js → chunk-V2KJQVYE.js} +2676 -2959
- package/chunks/{chunk-CGBDEST2.js → chunk-VJBEB2K6.js} +1 -1
- package/chunks/{chunk-ILRMLA6J.js → chunk-VWE36MUN.js} +1 -1
- package/chunks/{chunk-RURJYCWY.js → chunk-WNWDQ2TO.js} +1 -1
- package/chunks/{chunk-GTED3FSZ.js → chunk-WPJMA5AK.js} +4 -99
- package/chunks/{chunk-5NFIY2SJ.js → chunk-XJ2TBEV7.js} +3 -3
- package/chunks/{chunk-PVJUPIQG.js → chunk-XOVYV7TT.js} +6 -6
- package/chunks/{chunk-IXT64DV5.js → chunk-XPDJE537.js} +97 -1
- package/chunks/{chunk-YKWARO3T.js → chunk-YGYJ2FTH.js} +95 -21
- package/chunks/{chunk-JWSOUKFF.js → chunk-YJGPPPUB.js} +66 -21
- package/chunks/chunk-YP2DHYNI.js +650 -0
- package/chunks/{chunk-RVJVM5L4.js → chunk-Z2VLJEQJ.js} +5 -5
- package/chunks/chunk-ZPVSDB63.js +3839 -0
- package/chunks/{codex-models-6XVNFRXZ.js → codex-models-CI22KIHY.js} +9 -8
- package/chunks/{commands-FRPOFIO4.js → commands-C2WRSCNB.js} +909 -610
- package/chunks/dashboard-XO2X2SPD.js +75 -0
- package/chunks/{db-BXJNWUYJ.js → db-FU3OIGQK.js} +5 -4
- package/chunks/{deep-review-GSJEBLCG.js → deep-review-5AL6QYTK.js} +37 -38
- package/chunks/{disclose-OU6Z6GVT.js → disclose-YPV5KIUU.js} +6 -5
- package/chunks/{dist-M2X367VW.js → dist-JAZWL3SC.js} +3 -2
- package/chunks/{dist-TQMHMSBZ.js → dist-ONIRKDH6.js} +376 -333
- package/chunks/{dist-RKLQIXDT.js → dist-QLMPTFT7.js} +4 -3
- package/chunks/{dist-7KSYDDSG.js → dist-QXJKD743.js} +5 -2
- package/chunks/{dist-LNXGATR2.js → dist-WNAOCQGA.js} +5 -4
- package/chunks/eval-runner-D3RUCU3R.js +38 -0
- package/chunks/{exploit-agent-Y2P4GFIY.js → exploit-agent-4E4HXKUA.js} +1 -1
- package/chunks/{exploit-autoclimb-YRZ3TMS2.js → exploit-autoclimb-5GRXI6VQ.js} +1 -1
- package/chunks/{exploit-climb-4LEY4SDW.js → exploit-climb-AHQEJ2I2.js} +4 -3
- package/chunks/{fix-RQSIG75B.js → fix-CHD7LXDS.js} +9 -8
- package/chunks/{harness-3NVC3DDY.js → harness-E63KDHPG.js} +5 -4
- package/chunks/{http-conformance-U5F6GKYG.js → http-conformance-AXMUOE6C.js} +3 -2
- package/chunks/hunt-scan-ME2Z4CTC.js +43 -0
- package/chunks/{kernel-primitive-T47V3RD3.js → kernel-primitive-S566GXWP.js} +4 -3
- package/chunks/{kernel-vm-runner-AEL5E3SV.js → kernel-vm-runner-KREBY4DC.js} +4 -3
- package/chunks/{local-engine-ZCW4YC6E.js → local-engine-ZRTZVSSX.js} +7 -6
- package/chunks/managed-operation-ZMLLRCCQ.js +59 -0
- package/chunks/{memsafety-scan-L2Z7E7TE.js → memsafety-scan-Q2MBZEGJ.js} +1 -2
- package/chunks/{native-loop-26X2CHBV.js → native-loop-UV3Z4Z2F.js} +31 -16
- package/chunks/operator-services-JOCREEBA.js +79 -0
- package/chunks/orchestrate-ZF6ZTSIQ.js +62 -0
- package/chunks/{prepare-C3KGMBXT.js → prepare-PLDVGLDX.js} +7 -6
- package/chunks/{provider-model-discovery-QGUGL3XW.js → provider-model-discovery-3X6DON3Y.js} +7 -2
- package/chunks/{remote-workflow-runtime-DB52SINR.js → remote-workflow-runtime-GOI4TYP5.js} +4 -3
- package/chunks/routing-WCQLO5SP.js +61 -0
- package/chunks/{runtime-AUBLQUOH.js → runtime-6ZIXFTW5.js} +4 -3
- package/chunks/{runtime-U66JNSAY.js → runtime-TVH5ORUK.js} +13 -8
- package/chunks/{scan-stream-34F3LTPV.js → scan-stream-HJVTWZ44.js} +6 -4
- package/chunks/{scope-HSTG63TQ.js → scope-RCYXVGJR.js} +4 -3
- package/chunks/service-plugins-TN6KDX4L.js +63 -0
- package/chunks/{session-store-MKAAP3WL.js → session-store-6QR3CVUA.js} +8 -5
- package/chunks/{variant-candidates-LG767HWH.js → variant-candidates-SGLKPPHI.js} +9 -8
- package/chunks/{web-recon-prepass-NJP6J3E4.js → web-recon-prepass-GO7CTMVQ.js} +7 -6
- package/chunks/{workflow-runtime-AR627I26.js → workflow-runtime-CQTDASFA.js} +50 -49
- package/dashboard/assets/{abnfDiagram-VCTEODGH-Cq149Jpk.js → abnfDiagram-VCTEODGH-DDZsU70-.js} +1 -1
- package/dashboard/assets/{arc-CpP-3TRW.js → arc-iDXNTSL6.js} +1 -1
- package/dashboard/assets/architecture-7GRP2DOG-DJcY9RFg.js +1 -0
- package/dashboard/assets/architectureDiagram-5GKGNRK7-d0ZuOniQ.js +36 -0
- package/dashboard/assets/{blockDiagram-I7D4REHJ-CZYkRRDi.js → blockDiagram-I7D4REHJ-B-EWfMy1.js} +2 -2
- package/dashboard/assets/{c4Diagram-7LVT6UL2-CV7Iu3_Z.js → c4Diagram-7LVT6UL2-KcZRuXZC.js} +1 -1
- package/dashboard/assets/channel-CeWMIm0w.js +1 -0
- package/dashboard/assets/{chunk-4HAMMTFA-PKCyW4m-.js → chunk-4HAMMTFA-DXWulBlo.js} +1 -1
- package/dashboard/assets/{chunk-75Z2AOVW-C5MlFTc_.js → chunk-75Z2AOVW-RiLZItrz.js} +1 -1
- package/dashboard/assets/chunk-DU6HZSFF-MBcaIyTX.js +127 -0
- package/dashboard/assets/{chunk-F27PBJKO-DTAok0qM.js → chunk-F27PBJKO-kLWCBX_W.js} +1 -1
- package/dashboard/assets/{chunk-FOHPRMQF-DHwB1DNv.js → chunk-FOHPRMQF-COOliuUh.js} +14 -14
- package/dashboard/assets/{chunk-GMAD6QVW-CPsr2F33.js → chunk-GMAD6QVW-BeQeSjpW.js} +7 -7
- package/dashboard/assets/{chunk-GVQU2GXP-C2AXGf9A.js → chunk-GVQU2GXP-CjCMlOIB.js} +1 -1
- package/dashboard/assets/{chunk-IMKFNOWR-DMG6yD_O.js → chunk-IMKFNOWR-BwNst53D.js} +1 -1
- package/dashboard/assets/{chunk-L3NEJ4N5-BSvwdbXx.js → chunk-L3NEJ4N5-CHXWQrkL.js} +1 -1
- package/dashboard/assets/{chunk-OSK3NFVY-CfB8V7FU.js → chunk-OSK3NFVY-B2vd19Ed.js} +1 -1
- package/dashboard/assets/{chunk-P2QGCYS3-CvmZvq6n.js → chunk-P2QGCYS3-Dk7Fyh6n.js} +1 -1
- package/dashboard/assets/{chunk-POPQ4Y6H-D_TvwDxL.js → chunk-POPQ4Y6H-CPAgOvYe.js} +1 -1
- package/dashboard/assets/{chunk-PWAF6VOD-Da5GnuOY.js → chunk-PWAF6VOD-BotyfMha.js} +1 -1
- package/dashboard/assets/{chunk-SHT3W25Y-CcsMJpR-.js → chunk-SHT3W25Y-Buz5gLRP.js} +1 -1
- package/dashboard/assets/{chunk-SVP7TREG-COojjieJ.js → chunk-SVP7TREG-_rpYEZcs.js} +1 -1
- package/dashboard/assets/{chunk-TICWLB2K-nBAmJwx6.js → chunk-TICWLB2K-DOJxPoec.js} +2 -2
- package/dashboard/assets/{chunk-XXDRQBXY-r5HyhWDv.js → chunk-XXDRQBXY-EXxKJbAs.js} +1 -1
- package/dashboard/assets/classDiagram-ZZMXUADV-DV_h1NoS.js +1 -0
- package/dashboard/assets/classDiagram-v2-VYDZK3BY-DV_h1NoS.js +1 -0
- package/dashboard/assets/common-VLJRx-Jq.js +5 -0
- package/dashboard/assets/cose-bilkent-JH36ORCC-B1SVC57o.js +1 -0
- package/dashboard/assets/cynefin-OW5HDTMX-BzhRorj4.js +1 -0
- package/dashboard/assets/{cynefinDiagram-5FMLGOSQ-xodkuQtW.js → cynefinDiagram-5FMLGOSQ-JXzRmldX.js} +1 -1
- package/dashboard/assets/cytoscape.esm-BbBREfsg.js +321 -0
- package/dashboard/assets/dagre-D7JM2Yhv.js +1 -0
- package/dashboard/assets/dagre-GXQ25YYZ-1LZ-X0-Z.js +4 -0
- package/dashboard/assets/{diagram-S7CK7UJ4-DNoTMlCO.js → diagram-S7CK7UJ4-C_-J_LQ4.js} +2 -2
- package/dashboard/assets/{diagram-UQ7AKVKN-COccuyew.js → diagram-UQ7AKVKN-CnxL1k8g.js} +1 -1
- package/dashboard/assets/{diagram-VSXAHHWV-g6D1tWRb.js → diagram-VSXAHHWV-WzSb3aby.js} +1 -1
- package/dashboard/assets/{diagram-VX7I27RA-DhO4eVIC.js → diagram-VX7I27RA-DKhrMInE.js} +1 -1
- package/dashboard/assets/{diagram-Z3DM3KII-DeOQFexd.js → diagram-Z3DM3KII-CDhI2WGP.js} +1 -1
- package/dashboard/assets/{dist-BQYeOQg3.js → dist-B0bfBMeP.js} +1 -1
- package/dashboard/assets/{ebnfDiagram-PWID7BFC-MtkX2feM.js → ebnfDiagram-PWID7BFC-iL5NQ1PE.js} +1 -1
- package/dashboard/assets/{erDiagram-RLTQ6QDP-DIWSsoYZ.js → erDiagram-RLTQ6QDP-RK2Voa5O.js} +1 -1
- package/dashboard/assets/eventmodeling-NTZA5JFV-WgE7OJBb.js +1 -0
- package/dashboard/assets/flowDiagram-HODETNUW-B9YcQ0Aq.js +1 -0
- package/dashboard/assets/{ganttDiagram-EL5Y4UJY-DKggkJe0.js → ganttDiagram-EL5Y4UJY-D8CJXHRF.js} +1 -1
- package/dashboard/assets/gitGraph-4MIJSDKK-BuZ9Lg04.js +1 -0
- package/dashboard/assets/{gitGraphDiagram-WWUBYQGX-r_iR8Qzo.js → gitGraphDiagram-WWUBYQGX-LEJMh54j.js} +1 -1
- package/dashboard/assets/info-A6RAGUB7-BL5k3pev.js +1 -0
- package/dashboard/assets/{infoDiagram-27XIBGKW-ClQk7UyQ.js → infoDiagram-27XIBGKW-LJvntUnZ.js} +1 -1
- package/dashboard/assets/{ishikawaDiagram-5VMMS53U-tR7Vziog.js → ishikawaDiagram-5VMMS53U-BYTYgKCG.js} +2 -2
- package/dashboard/assets/{journeyDiagram-3NMN7TZE-Cpb9IqKL.js → journeyDiagram-3NMN7TZE-G25qgQgO.js} +1 -1
- package/dashboard/assets/{kanban-definition-UXKFOSKX-BzUuKbA9.js → kanban-definition-UXKFOSKX-Bk3uLl1i.js} +1 -1
- package/dashboard/assets/{katex-BdBmVSus.js → katex-nLxf_RlZ.js} +2 -2
- package/dashboard/assets/{line-BHY_tSHu.js → line-i4qHBaWO.js} +1 -1
- package/dashboard/assets/linear-DmrqRsKG.js +1 -0
- package/dashboard/assets/mermaid-parser.core-BxbKr4QF.js +7 -0
- package/dashboard/assets/{mermaid.core-D_QsUPU8.js → mermaid.core-Cltee6FS.js} +9 -9
- package/dashboard/assets/{mindmap-definition-YA3MSWOX-CtfLTPPJ.js → mindmap-definition-YA3MSWOX-DkzO2JgS.js} +1 -1
- package/dashboard/assets/operations-B4_timQX.css +1 -0
- package/dashboard/assets/operations-DwppJviL.js +199 -0
- package/dashboard/assets/packet-AYTQ26CC-uZQUKnrE.js +1 -0
- package/dashboard/assets/{pegDiagram-XKGWAZYB-C1Dclbzj.js → pegDiagram-XKGWAZYB-CrOEi00T.js} +1 -1
- package/dashboard/assets/pie-WAS4IAKB-Dn9_tpQT.js +1 -0
- package/dashboard/assets/{pieDiagram-E7YTZNPT-Cd7XwYo5.js → pieDiagram-E7YTZNPT-D-niUkzc.js} +1 -1
- package/dashboard/assets/{quadrantDiagram-AXDQQJYC-CaS-GQ4X.js → quadrantDiagram-AXDQQJYC-CJOTiG5V.js} +1 -1
- package/dashboard/assets/radar-RG4KPBEZ-DIIVz4e8.js +1 -0
- package/dashboard/assets/railroad-74A4TZTK-1kiqDEID.js +1 -0
- package/dashboard/assets/railroad-abnf-HS5TGJTU-DK6rQPZR.js +1 -0
- package/dashboard/assets/railroad-ebnf-LZEXJU2U-C6cOgYW4.js +1 -0
- package/dashboard/assets/railroad-peg-WCYAUIDC-CQ3ptKef.js +1 -0
- package/dashboard/assets/{railroadDiagram-O6MQD6OU-BeesTrqn.js → railroadDiagram-O6MQD6OU-nEfkpa-m.js} +1 -1
- package/dashboard/assets/{requirementDiagram-BXWQKSXE-IjyK0DhW.js → requirementDiagram-BXWQKSXE-CdFMY8tG.js} +1 -1
- package/dashboard/assets/{sankeyDiagram-P5KCCOFB-DmIluQqo.js → sankeyDiagram-P5KCCOFB-C0KxrFYv.js} +1 -1
- package/dashboard/assets/{sequenceDiagram-WJ2MYXX4-CUp8ZjTc.js → sequenceDiagram-WJ2MYXX4-DeZ5ATiu.js} +2 -2
- package/dashboard/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
- package/dashboard/assets/src-Cg-chcoE.js +1 -0
- package/dashboard/assets/{stateDiagram-D77RDMKH-Dy9TQb8P.js → stateDiagram-D77RDMKH-B9MwWL5B.js} +1 -1
- package/dashboard/assets/stateDiagram-v2-MP3YSRHH-SucFndhx.js +1 -0
- package/dashboard/assets/swimlanes-42K2YHIH-DB--fwQE.js +1 -0
- package/dashboard/assets/swimlanesDiagram-VR7AAH4N-BzH-rIaK.js +8 -0
- package/dashboard/assets/{timeline-definition-24CTP7MA-BGdXW-iY.js → timeline-definition-24CTP7MA-DLkkTbWb.js} +1 -1
- package/dashboard/assets/treeView-Q6P3EWNA-XkZ9rl9H.js +1 -0
- package/dashboard/assets/treemap-WGGIJYW6-JCtVKxCE.js +1 -0
- package/dashboard/assets/{vennDiagram-4TSXK5OY-DzKWHJsl.js → vennDiagram-4TSXK5OY-DEb-x29Z.js} +1 -1
- package/dashboard/assets/wardley-WFR3VGLG-DhI7ROY3.js +1 -0
- package/dashboard/assets/{wardleyDiagram-VM6X3IG4-DGsjYmNJ.js → wardleyDiagram-VM6X3IG4-KNckudc5.js} +1 -1
- package/dashboard/assets/{xychartDiagram-S5SC5T6Z-C7_T_tWt.js → xychartDiagram-S5SC5T6Z-D4c0ynCk.js} +1 -1
- package/dashboard/index.html +13 -2
- package/package.json +2 -5
- package/worker-assets/demo-target/README.md +7 -3
- package/chunks/chunk-2XGBEH53.js +0 -4304
- package/chunks/chunk-4ROZFLSR.js +0 -279
- package/chunks/chunk-56UTQKXO.js +0 -56
- package/chunks/chunk-BPU6M42R.js +0 -77
- package/chunks/chunk-H5QURBBK.js +0 -1123
- package/chunks/chunk-IIBNQTOK.js +0 -1532
- package/chunks/chunk-NJLKFC66.js +0 -4790
- package/chunks/chunk-OOMBOLAF.js +0 -295
- package/chunks/chunk-VIT5ALXF.js +0 -4054
- package/chunks/chunk-VU7V2SDW.js +0 -284
- package/chunks/chunk-W624J7NF.js +0 -117
- package/chunks/chunk-YSQWZ67M.js +0 -6027
- package/chunks/dashboard-5HDSNBAU.js +0 -76
- package/chunks/eval-runner-A2DIGVP7.js +0 -31
- package/chunks/hunt-scan-W246VWJC.js +0 -40
- package/chunks/managed-operation-6R2QPPW5.js +0 -60
- package/chunks/orchestrate-OBS37FWQ.js +0 -63
- package/chunks/run-MU3MFL2Z.js +0 -28242
- package/chunks/service-plugins-5B23PWXC.js +0 -64
- package/dashboard/assets/architecture-7GRP2DOG-z5EHYkyH.js +0 -1
- package/dashboard/assets/architectureDiagram-5GKGNRK7-ewtXpjR_.js +0 -36
- package/dashboard/assets/channel-CuYjfiC5.js +0 -1
- package/dashboard/assets/chunk-DU6HZSFF-3M37ulcO.js +0 -127
- package/dashboard/assets/classDiagram-ZZMXUADV-DCuOrWUV.js +0 -1
- package/dashboard/assets/classDiagram-v2-VYDZK3BY-DCuOrWUV.js +0 -1
- package/dashboard/assets/common-C6snVPsk.js +0 -5
- package/dashboard/assets/cose-bilkent-JH36ORCC-BLGcaZHk.js +0 -1
- package/dashboard/assets/cynefin-OW5HDTMX-DbZMK00I.js +0 -1
- package/dashboard/assets/cytoscape.esm-CGd-uY3x.js +0 -321
- package/dashboard/assets/dagre-GXQ25YYZ-CRk9qfSG.js +0 -4
- package/dashboard/assets/dagre-PrKaheQc.js +0 -1
- package/dashboard/assets/eventmodeling-NTZA5JFV-D_3ez4Gv.js +0 -1
- package/dashboard/assets/flowDiagram-HODETNUW-D2boyYEd.js +0 -1
- package/dashboard/assets/gitGraph-4MIJSDKK-DFOQYwXc.js +0 -1
- package/dashboard/assets/info-A6RAGUB7-DeednLoB.js +0 -1
- package/dashboard/assets/linear-naZZ1pHk.js +0 -1
- package/dashboard/assets/mermaid-parser.core-CPvd4cEx.js +0 -7
- package/dashboard/assets/operations-BwCzhVnT.js +0 -130
- package/dashboard/assets/operations-QjKT0Hwi.css +0 -1
- package/dashboard/assets/packet-AYTQ26CC-DDQbkT9I.js +0 -1
- package/dashboard/assets/pie-WAS4IAKB-LpU4ULAs.js +0 -1
- package/dashboard/assets/radar-RG4KPBEZ-CcxW3NJm.js +0 -1
- package/dashboard/assets/railroad-74A4TZTK-9P5Rl8fP.js +0 -1
- package/dashboard/assets/railroad-abnf-HS5TGJTU-CSfpwjna.js +0 -1
- package/dashboard/assets/railroad-ebnf-LZEXJU2U-D6R5qzr-.js +0 -1
- package/dashboard/assets/railroad-peg-WCYAUIDC-DKEX7ITG.js +0 -1
- package/dashboard/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -1
- package/dashboard/assets/src-r61wDjcA.js +0 -1
- package/dashboard/assets/stateDiagram-v2-MP3YSRHH-CQb0ZtPr.js +0 -1
- package/dashboard/assets/swimlanes-42K2YHIH-CZuDV7V5.js +0 -1
- package/dashboard/assets/swimlanesDiagram-VR7AAH4N-BxgWMq8X.js +0 -8
- package/dashboard/assets/treeView-Q6P3EWNA-DlRrayjM.js +0 -1
- package/dashboard/assets/treemap-WGGIJYW6-C6UqLKfI.js +0 -1
- package/dashboard/assets/wardley-WFR3VGLG-thmyHKb0.js +0 -1
|
@@ -3,7 +3,7 @@ import { createRequire as __0CreateRequire } from "node:module";
|
|
|
3
3
|
const require = __0CreateRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
getFindingPriority
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GYEYTNHK.js";
|
|
7
7
|
|
|
8
8
|
// packages/core/dist/disclose/cwe.js
|
|
9
9
|
var CWE_MAP = {
|
|
@@ -3,7 +3,7 @@ import { createRequire as __0CreateRequire } from "node:module";
|
|
|
3
3
|
const require = __0CreateRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
VERSION
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GYEYTNHK.js";
|
|
7
7
|
|
|
8
8
|
// packages/cli/src/tui/runtime.ts
|
|
9
9
|
function getReleaseChannel(env = process.env) {
|
|
@@ -4,15 +4,16 @@ const require = __0CreateRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
analyzeFindingForKnownMarkers,
|
|
6
6
|
detectKnownMarkers,
|
|
7
|
+
evidenceKindForFinding,
|
|
7
8
|
require_dist
|
|
8
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-XPDJE537.js";
|
|
9
10
|
import {
|
|
10
11
|
extractFileRefs,
|
|
11
12
|
redactSensitiveHeaders
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-VJBEB2K6.js";
|
|
13
14
|
import {
|
|
14
15
|
getFindingPriority
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-GYEYTNHK.js";
|
|
16
17
|
import {
|
|
17
18
|
__toESM
|
|
18
19
|
} from "./chunk-VCSFCHAJ.js";
|
|
@@ -790,99 +791,6 @@ function isPubliclyDisclosed(record) {
|
|
|
790
791
|
return PUBLIC_STATUSES.has(record.status);
|
|
791
792
|
}
|
|
792
793
|
|
|
793
|
-
// packages/core/dist/triage/can-auto-suppress.js
|
|
794
|
-
var PROTECTED_SEVERITIES = /* @__PURE__ */ new Set([
|
|
795
|
-
"critical",
|
|
796
|
-
"high"
|
|
797
|
-
]);
|
|
798
|
-
var HIGH_IMPACT_CATEGORIES = /* @__PURE__ */ new Set([
|
|
799
|
-
// Remote code / command / code execution
|
|
800
|
-
"command-injection",
|
|
801
|
-
"code-injection",
|
|
802
|
-
// Injection into the data store
|
|
803
|
-
"sql-injection",
|
|
804
|
-
// Unsafe deserialization is a classic RCE primitive
|
|
805
|
-
"unsafe-deserialization",
|
|
806
|
-
// Server-side request forgery (pivot / internal network reach)
|
|
807
|
-
"ssrf",
|
|
808
|
-
// Arbitrary file read/write
|
|
809
|
-
"path-traversal",
|
|
810
|
-
// Memory corruption / binary / kernel classes
|
|
811
|
-
"heap-overflow",
|
|
812
|
-
"out-of-bounds-read",
|
|
813
|
-
"out-of-bounds-write",
|
|
814
|
-
"use-after-free",
|
|
815
|
-
"stack-buffer-overflow",
|
|
816
|
-
"integer-overflow",
|
|
817
|
-
"type-confusion",
|
|
818
|
-
"double-free",
|
|
819
|
-
"format-string",
|
|
820
|
-
"uninitialized-memory",
|
|
821
|
-
"race-condition",
|
|
822
|
-
"toctou",
|
|
823
|
-
// Supply-chain compromise (known-vulnerable / malicious package)
|
|
824
|
-
"known-vulnerable-package",
|
|
825
|
-
"supply-chain",
|
|
826
|
-
// Prototype-pollution gadget → auth bypass / RCE when chained. We actively
|
|
827
|
-
// disclose these (e.g. the jsonwebtoken verify() gadget), so they must never
|
|
828
|
-
// be auto-dropped on a score alone.
|
|
829
|
-
"prototype-pollution",
|
|
830
|
-
// Cryptographic misuse — hardcoded keys/IVs, JWT alg-confusion (alg=none /
|
|
831
|
-
// HS-vs-RS), and predictable RNG for secrets are direct key-leak / auth-bypass
|
|
832
|
-
// primitives, so the class is protected from score-only auto-drop.
|
|
833
|
-
"crypto-misuse",
|
|
834
|
-
// AI-system adversarial classes — the core 0 "adversarial reliability"
|
|
835
|
-
// thesis (authorization-boundary break, unsafe tool use, data exfiltration,
|
|
836
|
-
// prompt hijack). A missed one of these is a disclosure-grade loss.
|
|
837
|
-
"prompt-injection",
|
|
838
|
-
"data-exfiltration",
|
|
839
|
-
"tool-misuse"
|
|
840
|
-
]);
|
|
841
|
-
function canAutoSuppressDetailed(finding) {
|
|
842
|
-
if (PROTECTED_SEVERITIES.has(finding.severity)) {
|
|
843
|
-
return {
|
|
844
|
-
canSuppress: false,
|
|
845
|
-
guard: "high_severity",
|
|
846
|
-
reason: `severity=${finding.severity} is disclosure-grade; routed to verification instead of auto-drop`
|
|
847
|
-
};
|
|
848
|
-
}
|
|
849
|
-
if (HIGH_IMPACT_CATEGORIES.has(finding.category)) {
|
|
850
|
-
return {
|
|
851
|
-
canSuppress: false,
|
|
852
|
-
guard: "high_impact_class",
|
|
853
|
-
reason: `category=${finding.category} is a high-impact class; routed to verification instead of auto-drop`
|
|
854
|
-
};
|
|
855
|
-
}
|
|
856
|
-
return {
|
|
857
|
-
canSuppress: true,
|
|
858
|
-
reason: `severity=${finding.severity}, category=${finding.category} eligible for score/heuristic auto-suppression`
|
|
859
|
-
};
|
|
860
|
-
}
|
|
861
|
-
|
|
862
|
-
// packages/core/dist/triage/verify-verdict.js
|
|
863
|
-
var REPRODUCING_LAYERS = /* @__PURE__ */ new Set(["poc_gen", "pov_gate", "oracle"]);
|
|
864
|
-
function evidenceKindForFinding(finding) {
|
|
865
|
-
const hasPocSteps = Array.isArray(finding.pocSteps) && finding.pocSteps.length > 0;
|
|
866
|
-
const reproduced = hasPocSteps && (finding.layerVerdicts ?? []).some((v) => v.verdict === "pass" && REPRODUCING_LAYERS.has(v.layer));
|
|
867
|
-
return reproduced ? "reproduced-poc" : "source-only";
|
|
868
|
-
}
|
|
869
|
-
function outcomeOf(verdict) {
|
|
870
|
-
return typeof verdict === "string" ? verdict : verdict.verdict;
|
|
871
|
-
}
|
|
872
|
-
function isDisclosureWorthy(finding, verdict) {
|
|
873
|
-
if (outcomeOf(verdict) !== "rejected") {
|
|
874
|
-
return {
|
|
875
|
-
keep: true,
|
|
876
|
-
reason: `verdict=${outcomeOf(verdict)}: not a rejection \u2014 finding kept`
|
|
877
|
-
};
|
|
878
|
-
}
|
|
879
|
-
const guard = canAutoSuppressDetailed(finding);
|
|
880
|
-
if (guard.canSuppress) {
|
|
881
|
-
return { keep: false, reason: guard.reason };
|
|
882
|
-
}
|
|
883
|
-
return { keep: true, guard: guard.guard, reason: guard.reason };
|
|
884
|
-
}
|
|
885
|
-
|
|
886
794
|
// packages/core/dist/disclose/evidence-pack.js
|
|
887
795
|
var UnreproducedFindingError = class extends Error {
|
|
888
796
|
findingId;
|
|
@@ -1284,9 +1192,6 @@ export {
|
|
|
1284
1192
|
createDisclosureRecord,
|
|
1285
1193
|
transition,
|
|
1286
1194
|
isPubliclyDisclosed,
|
|
1287
|
-
canAutoSuppressDetailed,
|
|
1288
|
-
evidenceKindForFinding,
|
|
1289
|
-
isDisclosureWorthy,
|
|
1290
1195
|
UnreproducedFindingError,
|
|
1291
1196
|
assembleEvidencePack,
|
|
1292
1197
|
renderVendorNotificationMarkdown,
|
|
@@ -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-LRD5N2TQ.js";
|
|
7
7
|
import {
|
|
8
8
|
verifyKernelFinding
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-B7XL6RON.js";
|
|
10
10
|
import {
|
|
11
11
|
homeStateDir
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GYEYTNHK.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";
|
|
@@ -3,13 +3,13 @@ import { createRequire as __0CreateRequire } from "node:module";
|
|
|
3
3
|
const require = __0CreateRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
eventBus
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ULRLUXSS.js";
|
|
7
7
|
import {
|
|
8
8
|
redactAuthHeaders
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-VJBEB2K6.js";
|
|
10
10
|
import {
|
|
11
11
|
ScopePolicy
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-RZZ6VPRY.js";
|
|
13
13
|
import {
|
|
14
14
|
allowlistedChildEnv,
|
|
15
15
|
sanitizedEnv
|
|
@@ -18,10 +18,10 @@ import {
|
|
|
18
18
|
VERSION,
|
|
19
19
|
cloudStateDir,
|
|
20
20
|
homeStateDir
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-GYEYTNHK.js";
|
|
22
22
|
import {
|
|
23
23
|
external_exports
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-5XOYTAOK.js";
|
|
25
25
|
|
|
26
26
|
// packages/core/dist/telemetry/analytics-level.js
|
|
27
27
|
var LEVEL_ORDER = {
|
|
@@ -54,7 +54,7 @@ function resolveAnalyticsLevel(env = process.env) {
|
|
|
54
54
|
return "off";
|
|
55
55
|
const raw = env[ANALYTICS_LEVEL_ENV];
|
|
56
56
|
if (typeof raw !== "string")
|
|
57
|
-
return "
|
|
57
|
+
return "usage";
|
|
58
58
|
const normalized = raw.trim().toLowerCase();
|
|
59
59
|
return isAnalyticsLevel(normalized) ? normalized : "off";
|
|
60
60
|
}
|
|
@@ -8107,6 +8107,99 @@ function errMessage(err) {
|
|
|
8107
8107
|
}
|
|
8108
8108
|
}
|
|
8109
8109
|
|
|
8110
|
+
// packages/core/dist/triage/can-auto-suppress.js
|
|
8111
|
+
var PROTECTED_SEVERITIES = /* @__PURE__ */ new Set([
|
|
8112
|
+
"critical",
|
|
8113
|
+
"high"
|
|
8114
|
+
]);
|
|
8115
|
+
var HIGH_IMPACT_CATEGORIES = /* @__PURE__ */ new Set([
|
|
8116
|
+
// Remote code / command / code execution
|
|
8117
|
+
"command-injection",
|
|
8118
|
+
"code-injection",
|
|
8119
|
+
// Injection into the data store
|
|
8120
|
+
"sql-injection",
|
|
8121
|
+
// Unsafe deserialization is a classic RCE primitive
|
|
8122
|
+
"unsafe-deserialization",
|
|
8123
|
+
// Server-side request forgery (pivot / internal network reach)
|
|
8124
|
+
"ssrf",
|
|
8125
|
+
// Arbitrary file read/write
|
|
8126
|
+
"path-traversal",
|
|
8127
|
+
// Memory corruption / binary / kernel classes
|
|
8128
|
+
"heap-overflow",
|
|
8129
|
+
"out-of-bounds-read",
|
|
8130
|
+
"out-of-bounds-write",
|
|
8131
|
+
"use-after-free",
|
|
8132
|
+
"stack-buffer-overflow",
|
|
8133
|
+
"integer-overflow",
|
|
8134
|
+
"type-confusion",
|
|
8135
|
+
"double-free",
|
|
8136
|
+
"format-string",
|
|
8137
|
+
"uninitialized-memory",
|
|
8138
|
+
"race-condition",
|
|
8139
|
+
"toctou",
|
|
8140
|
+
// Supply-chain compromise (known-vulnerable / malicious package)
|
|
8141
|
+
"known-vulnerable-package",
|
|
8142
|
+
"supply-chain",
|
|
8143
|
+
// Prototype-pollution gadget → auth bypass / RCE when chained. We actively
|
|
8144
|
+
// disclose these (e.g. the jsonwebtoken verify() gadget), so they must never
|
|
8145
|
+
// be auto-dropped on a score alone.
|
|
8146
|
+
"prototype-pollution",
|
|
8147
|
+
// Cryptographic misuse — hardcoded keys/IVs, JWT alg-confusion (alg=none /
|
|
8148
|
+
// HS-vs-RS), and predictable RNG for secrets are direct key-leak / auth-bypass
|
|
8149
|
+
// primitives, so the class is protected from score-only auto-drop.
|
|
8150
|
+
"crypto-misuse",
|
|
8151
|
+
// AI-system adversarial classes — the core 0 "adversarial reliability"
|
|
8152
|
+
// thesis (authorization-boundary break, unsafe tool use, data exfiltration,
|
|
8153
|
+
// prompt hijack). A missed one of these is a disclosure-grade loss.
|
|
8154
|
+
"prompt-injection",
|
|
8155
|
+
"data-exfiltration",
|
|
8156
|
+
"tool-misuse"
|
|
8157
|
+
]);
|
|
8158
|
+
function canAutoSuppressDetailed(finding) {
|
|
8159
|
+
if (PROTECTED_SEVERITIES.has(finding.severity)) {
|
|
8160
|
+
return {
|
|
8161
|
+
canSuppress: false,
|
|
8162
|
+
guard: "high_severity",
|
|
8163
|
+
reason: `severity=${finding.severity} is disclosure-grade; routed to verification instead of auto-drop`
|
|
8164
|
+
};
|
|
8165
|
+
}
|
|
8166
|
+
if (HIGH_IMPACT_CATEGORIES.has(finding.category)) {
|
|
8167
|
+
return {
|
|
8168
|
+
canSuppress: false,
|
|
8169
|
+
guard: "high_impact_class",
|
|
8170
|
+
reason: `category=${finding.category} is a high-impact class; routed to verification instead of auto-drop`
|
|
8171
|
+
};
|
|
8172
|
+
}
|
|
8173
|
+
return {
|
|
8174
|
+
canSuppress: true,
|
|
8175
|
+
reason: `severity=${finding.severity}, category=${finding.category} eligible for score/heuristic auto-suppression`
|
|
8176
|
+
};
|
|
8177
|
+
}
|
|
8178
|
+
|
|
8179
|
+
// packages/core/dist/triage/verify-verdict.js
|
|
8180
|
+
var REPRODUCING_LAYERS = /* @__PURE__ */ new Set(["poc_gen", "pov_gate", "oracle"]);
|
|
8181
|
+
function evidenceKindForFinding(finding) {
|
|
8182
|
+
const hasPocSteps = Array.isArray(finding.pocSteps) && finding.pocSteps.length > 0;
|
|
8183
|
+
const reproduced = hasPocSteps && (finding.layerVerdicts ?? []).some((v) => v.verdict === "pass" && REPRODUCING_LAYERS.has(v.layer));
|
|
8184
|
+
return reproduced ? "reproduced-poc" : "source-only";
|
|
8185
|
+
}
|
|
8186
|
+
function outcomeOf(verdict) {
|
|
8187
|
+
return typeof verdict === "string" ? verdict : verdict.verdict;
|
|
8188
|
+
}
|
|
8189
|
+
function isDisclosureWorthy(finding, verdict) {
|
|
8190
|
+
if (outcomeOf(verdict) !== "rejected") {
|
|
8191
|
+
return {
|
|
8192
|
+
keep: true,
|
|
8193
|
+
reason: `verdict=${outcomeOf(verdict)}: not a rejection \u2014 finding kept`
|
|
8194
|
+
};
|
|
8195
|
+
}
|
|
8196
|
+
const guard = canAutoSuppressDetailed(finding);
|
|
8197
|
+
if (guard.canSuppress) {
|
|
8198
|
+
return { keep: false, reason: guard.reason };
|
|
8199
|
+
}
|
|
8200
|
+
return { keep: true, guard: guard.guard, reason: guard.reason };
|
|
8201
|
+
}
|
|
8202
|
+
|
|
8110
8203
|
export {
|
|
8111
8204
|
require_dist,
|
|
8112
8205
|
hasKnownMarkerText,
|
|
@@ -8121,5 +8214,8 @@ export {
|
|
|
8121
8214
|
resolveUrl,
|
|
8122
8215
|
mergePersonaHeaders,
|
|
8123
8216
|
evaluateExpect,
|
|
8124
|
-
aggregateVerdict
|
|
8217
|
+
aggregateVerdict,
|
|
8218
|
+
canAutoSuppressDetailed,
|
|
8219
|
+
evidenceKindForFinding,
|
|
8220
|
+
isDisclosureWorthy
|
|
8125
8221
|
};
|
|
@@ -3,13 +3,13 @@ import { createRequire as __0CreateRequire } from "node:module";
|
|
|
3
3
|
const require = __0CreateRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
isAdmittedSmolvmWorkbench
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-XOVYV7TT.js";
|
|
7
7
|
import {
|
|
8
8
|
isScopeEnforcementEnabled
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-RZZ6VPRY.js";
|
|
10
10
|
import {
|
|
11
11
|
external_exports
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-5XOYTAOK.js";
|
|
13
13
|
|
|
14
14
|
// packages/core/dist/bench/improvement-promotion.js
|
|
15
15
|
import { createHash } from "node:crypto";
|
|
@@ -184,7 +184,7 @@ function verifyImprovementLedger(entries) {
|
|
|
184
184
|
// packages/core/dist/improvement/config.js
|
|
185
185
|
import { existsSync, readFileSync, realpathSync } from "node:fs";
|
|
186
186
|
import { homedir } from "node:os";
|
|
187
|
-
import { isAbsolute, resolve, sep } from "node:path";
|
|
187
|
+
import { basename, dirname, isAbsolute, resolve, sep } from "node:path";
|
|
188
188
|
var relativePath = external_exports.string().min(1).max(512).refine((value) => !isAbsolute(value) && !value.includes("\\") && !value.includes("\0") && value !== "." && value.split("/").every((part) => part !== ".." && part !== "" && part !== "."), "must be a normalized relative file or directory path (not the entire workspace)");
|
|
189
189
|
var argv = external_exports.array(external_exports.string().max(8192).refine((value) => !value.includes("\0"))).min(1).max(128).refine((value) => value[0].length > 0, "executable must not be empty");
|
|
190
190
|
var finitePositive = external_exports.number().finite().positive();
|
|
@@ -200,11 +200,17 @@ var schema = external_exports.object({
|
|
|
200
200
|
kind: external_exports.enum(["source", "skill", "router", "lens"]).default("source"),
|
|
201
201
|
command: argv,
|
|
202
202
|
buildCommand: argv.optional(),
|
|
203
|
+
observationStorePath: external_exports.string().min(1).max(4096).optional(),
|
|
203
204
|
cases: external_exports.array(external_exports.object({
|
|
204
205
|
id: external_exports.string().min(1).max(128),
|
|
205
206
|
lane: external_exports.enum(["development", "held-out", "negative-control"]),
|
|
206
207
|
input: external_exports.unknown(),
|
|
207
|
-
expected: external_exports.unknown()
|
|
208
|
+
expected: external_exports.unknown(),
|
|
209
|
+
curation: external_exports.object({
|
|
210
|
+
observationId: external_exports.string().regex(/^[a-f0-9]{64}$/),
|
|
211
|
+
approvalDigest: external_exports.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
212
|
+
fixtureDigest: external_exports.string().regex(/^(?:sha256:)?[a-f0-9]{64}$/)
|
|
213
|
+
}).strict().optional()
|
|
208
214
|
}).strict()).min(3).max(1e3),
|
|
209
215
|
repeats: external_exports.number().int().min(2).max(20).default(3),
|
|
210
216
|
maxIterations: external_exports.number().int().min(1).max(100).default(3),
|
|
@@ -229,12 +235,24 @@ var schema = external_exports.object({
|
|
|
229
235
|
minimumHeldOutLift: finitePositive.max(1).default(DEFAULT_IMPROVEMENT_PROMOTION_POLICY.minimumHeldOutLift),
|
|
230
236
|
maximumNegativeControlFpDelta: external_exports.literal(0).default(0),
|
|
231
237
|
maximumCostMultiplier: finitePositive.max(10).default(DEFAULT_IMPROVEMENT_PROMOTION_POLICY.maximumCostMultiplier)
|
|
232
|
-
}).strict().
|
|
238
|
+
}).strict().prefault({}),
|
|
233
239
|
safety: external_exports.object({
|
|
234
240
|
enabled: external_exports.boolean().default(false),
|
|
235
|
-
holdoutExposureLimit: external_exports.number().int().min(1).max(1e6)
|
|
241
|
+
holdoutExposureLimit: external_exports.number().int().min(1).max(1e6),
|
|
242
|
+
workerModel: external_exports.object({
|
|
243
|
+
provider: external_exports.string().min(1).max(128),
|
|
244
|
+
model: external_exports.string().min(1).max(256),
|
|
245
|
+
maxCostUsdPerExecution: finitePositive.max(1e3)
|
|
246
|
+
}).strict().optional()
|
|
236
247
|
}).strict().optional(),
|
|
237
|
-
maxAlternativeParents: external_exports.number().int().min(0).max(10).optional()
|
|
248
|
+
maxAlternativeParents: external_exports.number().int().min(0).max(10).optional(),
|
|
249
|
+
retentionPolicy: external_exports.object({
|
|
250
|
+
profileId: external_exports.string().min(1).max(128),
|
|
251
|
+
version: external_exports.number().int().min(1),
|
|
252
|
+
criticalCaseIds: external_exports.array(external_exports.string().min(1).max(128)).min(1).max(128),
|
|
253
|
+
previousProfileDigest: external_exports.string().regex(/^sha256:[a-f0-9]{64}$/).optional(),
|
|
254
|
+
rotationApprovalRef: external_exports.string().min(1).max(512).optional()
|
|
255
|
+
}).strict().optional()
|
|
238
256
|
}).strict();
|
|
239
257
|
function canonicalEvolutionJson(value) {
|
|
240
258
|
if (value === null || typeof value === "string" || typeof value === "boolean")
|
|
@@ -248,8 +266,27 @@ function canonicalEvolutionJson(value) {
|
|
|
248
266
|
}
|
|
249
267
|
throw new Error("evolution cases must contain finite JSON values only");
|
|
250
268
|
}
|
|
269
|
+
function physicalProspectivePath(path) {
|
|
270
|
+
let cursor = path;
|
|
271
|
+
const suffix = [];
|
|
272
|
+
while (!existsSync(cursor)) {
|
|
273
|
+
const parent = dirname(cursor);
|
|
274
|
+
if (parent === cursor)
|
|
275
|
+
throw new Error("cannot resolve evolution path authority");
|
|
276
|
+
suffix.unshift(basename(cursor));
|
|
277
|
+
cursor = parent;
|
|
278
|
+
}
|
|
279
|
+
return resolve(realpathSync(cursor), ...suffix);
|
|
280
|
+
}
|
|
251
281
|
function parseEvolutionConfig(raw, baseDir = process.cwd()) {
|
|
252
282
|
const parsed = schema.parse(raw);
|
|
283
|
+
if (parsed.safety?.workerModel && !parsed.safety.enabled) {
|
|
284
|
+
throw new Error("model-backed evolution workers require enabled durable safety accounting");
|
|
285
|
+
}
|
|
286
|
+
if (parsed.cases.some((entry) => entry.curation) && !parsed.observationStorePath)
|
|
287
|
+
throw new Error("curated fixtures require an authoritative observation store");
|
|
288
|
+
if (parsed.observationStorePath)
|
|
289
|
+
parsed.observationStorePath = resolve(baseDir, parsed.observationStorePath);
|
|
253
290
|
const admitted = isAdmittedSmolvmWorkbench();
|
|
254
291
|
if (admitted) {
|
|
255
292
|
if (parsed.imageArchive)
|
|
@@ -286,6 +323,17 @@ function parseEvolutionConfig(raw, baseDir = process.cwd()) {
|
|
|
286
323
|
throw new Error(`${lane} requires at least ${parsed.promotionPolicy.minimumCases} distinct cases`);
|
|
287
324
|
}
|
|
288
325
|
}
|
|
326
|
+
if (parsed.retentionPolicy) {
|
|
327
|
+
const ids = parsed.retentionPolicy.criticalCaseIds;
|
|
328
|
+
if (new Set(ids).size !== ids.length)
|
|
329
|
+
throw new Error("retention panel contains duplicate cases");
|
|
330
|
+
for (const id of ids) {
|
|
331
|
+
const fixture = parsed.cases.find((entry) => entry.id === id);
|
|
332
|
+
if (!fixture || fixture.lane === "development") {
|
|
333
|
+
throw new Error("retention panel must reference existing sealed held-out or negative-control cases");
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
289
337
|
for (const edit of parsed.editablePaths) {
|
|
290
338
|
if (!parsed.sourcePaths.some((source) => edit === source || edit.startsWith(`${source}/`))) {
|
|
291
339
|
throw new Error(`editable path ${edit} is not inside a selected source path`);
|
|
@@ -297,6 +345,11 @@ function parseEvolutionConfig(raw, baseDir = process.cwd()) {
|
|
|
297
345
|
throw new Error("evolution store cannot be the source workspace");
|
|
298
346
|
for (const selected of parsed.sourcePaths) {
|
|
299
347
|
const source = resolve(sourceRoot, selected);
|
|
348
|
+
const observationStore = parsed.observationStorePath && physicalProspectivePath(parsed.observationStorePath);
|
|
349
|
+
const physicalSource = observationStore ? physicalProspectivePath(source) : source;
|
|
350
|
+
if (observationStore && (observationStore === physicalSource || observationStore.startsWith(`${physicalSource}${sep}`))) {
|
|
351
|
+
throw new Error("private observation queue cannot overlap selected model-readable source paths");
|
|
352
|
+
}
|
|
300
353
|
if (storePath === source || storePath.startsWith(`${source}/`) || source.startsWith(`${storePath}/`)) {
|
|
301
354
|
throw new Error("evolution store and selected source paths must not overlap");
|
|
302
355
|
}
|
|
@@ -624,7 +677,7 @@ async function evaluateVerificationSpec(spec, repoRoot) {
|
|
|
624
677
|
// packages/core/dist/improvement/artifacts.js
|
|
625
678
|
import { randomUUID } from "node:crypto";
|
|
626
679
|
import { closeSync, constants, fchmodSync, fstatSync, fsyncSync, linkSync, lstatSync, mkdirSync, openSync, readFileSync as readFileSync2, realpathSync as realpathSync2, unlinkSync, writeFileSync } from "node:fs";
|
|
627
|
-
import { dirname, isAbsolute as isAbsolute3, join as join2, parse, resolve as resolve3, sep as sep3 } from "node:path";
|
|
680
|
+
import { dirname as dirname2, isAbsolute as isAbsolute3, join as join2, parse, resolve as resolve3, sep as sep3 } from "node:path";
|
|
628
681
|
var MAX_ARTIFACT_BYTES = 128 * 1024 * 1024;
|
|
629
682
|
function hasCode(error, code) {
|
|
630
683
|
return error instanceof Error && "code" in error && error.code === code;
|
|
@@ -686,7 +739,7 @@ function ensureEvolutionDirectory(path) {
|
|
|
686
739
|
return inspectDirectories(path, true);
|
|
687
740
|
}
|
|
688
741
|
function readEvolutionArtifact(path) {
|
|
689
|
-
inspectDirectories(
|
|
742
|
+
inspectDirectories(dirname2(path), false);
|
|
690
743
|
const fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
691
744
|
try {
|
|
692
745
|
const stat = fstatSync(fd);
|
|
@@ -704,7 +757,7 @@ function publishEvolutionArtifact(path, value) {
|
|
|
704
757
|
const content = canonicalEvolutionJson(value);
|
|
705
758
|
if (Buffer.byteLength(content) > MAX_ARTIFACT_BYTES)
|
|
706
759
|
throw new Error("evolution artifact exceeds retention limit");
|
|
707
|
-
const directory = ensureEvolutionDirectory(
|
|
760
|
+
const directory = ensureEvolutionDirectory(dirname2(path));
|
|
708
761
|
const temporary = join2(directory, `.artifact-${randomUUID()}.tmp`);
|
|
709
762
|
const fd = openSync(temporary, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | constants.O_NOFOLLOW, 384);
|
|
710
763
|
try {
|
|
@@ -737,7 +790,7 @@ function publishEvolutionArtifact(path, value) {
|
|
|
737
790
|
|
|
738
791
|
// packages/core/dist/agent/apply-patch.js
|
|
739
792
|
import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync as readFileSync3, unlinkSync as unlinkSync2, writeFileSync as writeFileSync2 } from "node:fs";
|
|
740
|
-
import { dirname as
|
|
793
|
+
import { dirname as dirname3 } from "node:path";
|
|
741
794
|
var BEGIN = "*** Begin Patch";
|
|
742
795
|
var END = "*** End Patch";
|
|
743
796
|
function parsePatch(input) {
|
|
@@ -848,7 +901,7 @@ function applyPatchOps(ops, pathResolver) {
|
|
|
848
901
|
if (!op.overwrite && existsSync2(abs)) {
|
|
849
902
|
throw new Error(`apply_patch: Add File "${op.path}" failed \u2014 file already exists. Use "*** Replace File: ${op.path}" to overwrite.`);
|
|
850
903
|
}
|
|
851
|
-
mkdirSync2(
|
|
904
|
+
mkdirSync2(dirname3(abs), { recursive: true });
|
|
852
905
|
writeFileSync2(abs, op.contents, "utf-8");
|
|
853
906
|
applied.push({ kind: "add", path: op.path });
|
|
854
907
|
continue;
|
|
@@ -930,9 +983,20 @@ function applyOneHunk(lines, anchorIdx, hunk, logicalPath) {
|
|
|
930
983
|
return { newLines, consumed: cursor - anchorIdx };
|
|
931
984
|
}
|
|
932
985
|
|
|
986
|
+
// packages/core/dist/scope/local-source-boundary.js
|
|
987
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
988
|
+
import { realpathSync as realpathSync3 } from "node:fs";
|
|
989
|
+
var boundary = new AsyncLocalStorage();
|
|
990
|
+
function getLocalSourceBoundary() {
|
|
991
|
+
return boundary.getStore();
|
|
992
|
+
}
|
|
993
|
+
function withLocalSourceBoundary(root, run) {
|
|
994
|
+
return root === void 0 ? run() : boundary.run(realpathSync3(root), run);
|
|
995
|
+
}
|
|
996
|
+
|
|
933
997
|
// packages/core/dist/agent/tools/scope-path.js
|
|
934
|
-
import { lstatSync as lstatSync2, realpathSync as
|
|
935
|
-
import { basename, dirname as
|
|
998
|
+
import { lstatSync as lstatSync2, realpathSync as realpathSync4 } from "node:fs";
|
|
999
|
+
import { basename as basename2, dirname as dirname4, isAbsolute as isAbsolute4, resolve as resolve4, sep as sep4 } from "node:path";
|
|
936
1000
|
function pathEntryExists(path) {
|
|
937
1001
|
try {
|
|
938
1002
|
lstatSync2(path);
|
|
@@ -947,26 +1011,34 @@ function canonicalizePath(path) {
|
|
|
947
1011
|
const missingSegments = [];
|
|
948
1012
|
let existingPath = path;
|
|
949
1013
|
while (!pathEntryExists(existingPath)) {
|
|
950
|
-
const parent =
|
|
1014
|
+
const parent = dirname4(existingPath);
|
|
951
1015
|
if (parent === existingPath) {
|
|
952
1016
|
throw new Error(`Path does not have an existing parent: ${path}`);
|
|
953
1017
|
}
|
|
954
|
-
missingSegments.unshift(
|
|
1018
|
+
missingSegments.unshift(basename2(existingPath));
|
|
955
1019
|
existingPath = parent;
|
|
956
1020
|
}
|
|
957
|
-
return resolve4(
|
|
1021
|
+
return resolve4(realpathSync4(existingPath), ...missingSegments);
|
|
958
1022
|
}
|
|
959
1023
|
function isScopedPath(scopePath, inputPath) {
|
|
960
|
-
const root =
|
|
1024
|
+
const root = realpathSync4(scopePath);
|
|
961
1025
|
const logicalCandidate = isAbsolute4(inputPath) ? resolve4(inputPath) : resolve4(root, inputPath);
|
|
962
1026
|
const candidate = canonicalizePath(logicalCandidate);
|
|
963
|
-
|
|
1027
|
+
const prefix = root.endsWith(sep4) ? root : root + sep4;
|
|
1028
|
+
return candidate === root || candidate.startsWith(prefix);
|
|
964
1029
|
}
|
|
965
1030
|
function resolveScopedPath(scopePath, inputPath) {
|
|
1031
|
+
const boundary2 = getLocalSourceBoundary();
|
|
1032
|
+
if (boundary2) {
|
|
1033
|
+
const base = scopePath ? realpathSync4(scopePath) : process.cwd();
|
|
1034
|
+
const candidate = isAbsolute4(inputPath) ? resolve4(inputPath) : resolve4(base, inputPath);
|
|
1035
|
+
if (!isScopedPath(boundary2, candidate))
|
|
1036
|
+
throw new Error(`Path escapes the approved source folder: ${inputPath}`);
|
|
1037
|
+
}
|
|
966
1038
|
if (isScopeEnforcementEnabled() && (!scopePath || !isScopedPath(scopePath, inputPath))) {
|
|
967
1039
|
throw new Error(`Path escapes the allowed scope: ${inputPath}`);
|
|
968
1040
|
}
|
|
969
|
-
const root = scopePath ?
|
|
1041
|
+
const root = scopePath ? realpathSync4(scopePath) : process.cwd();
|
|
970
1042
|
const logicalCandidate = isAbsolute4(inputPath) ? resolve4(inputPath) : resolve4(root, inputPath);
|
|
971
1043
|
return canonicalizePath(logicalCandidate);
|
|
972
1044
|
}
|
|
@@ -986,5 +1058,7 @@ export {
|
|
|
986
1058
|
evaluateVerificationSpec,
|
|
987
1059
|
parsePatch,
|
|
988
1060
|
applyPatchOps,
|
|
1061
|
+
getLocalSourceBoundary,
|
|
1062
|
+
withLocalSourceBoundary,
|
|
989
1063
|
resolveScopedPath
|
|
990
1064
|
};
|