0sec-cli 0.23.0 → 0.24.1
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 +66 -67
- package/README.md +37 -11
- package/chunks/{adapt-loop-V3JFWOKC.js → adapt-loop-L77BWMNE.js} +4 -4
- package/chunks/{artifact-scraper-NYKUF2M5.js → artifact-scraper-BV67RAP5.js} +2 -2
- package/chunks/{assumption-mining-ZX3YVWEH.js → assumption-mining-RPVR77A3.js} +18 -18
- package/chunks/{backend-connections-H52NIVH2.js → backend-connections-ACIXNYZN.js} +3 -3
- package/chunks/{chunk-MQJVU2GZ.js → chunk-2NBZZFRG.js} +79 -9
- package/chunks/{chunk-A2ADXAC5.js → chunk-2XGBEH53.js} +1288 -2313
- package/chunks/{chunk-3E54JYS4.js → chunk-3LPBJMHB.js} +1 -1
- package/chunks/{chunk-XORZUR2H.js → chunk-3WUPCZGF.js} +1 -1
- package/chunks/{chunk-65H3MRBF.js → chunk-4ROZFLSR.js} +1 -1
- package/chunks/chunk-56UTQKXO.js +56 -0
- package/chunks/{chunk-YYS2H33A.js → chunk-5ETI27Q3.js} +2 -2
- package/chunks/{chunk-3ZNI7F42.js → chunk-5NFIY2SJ.js} +3 -3
- package/chunks/{chunk-A5QO7N3S.js → chunk-5PFRE522.js} +1 -1
- package/chunks/{chunk-EH2WTNY7.js → chunk-5WAHHZBF.js} +1424 -859
- package/chunks/{chunk-WIYNYNL2.js → chunk-6XMFCVJS.js} +1 -1
- package/chunks/chunk-7UHAXEOV.js +289 -0
- package/chunks/{chunk-CP6HANBE.js → chunk-BD7WULFS.js} +4 -3
- package/chunks/{chunk-T7ZEVY5G.js → chunk-BMDG6T7D.js} +815 -41
- package/chunks/{chunk-QMICC5O2.js → chunk-BOBIAHKA.js} +2 -2
- package/chunks/{chunk-VDOWARMJ.js → chunk-BPU6M42R.js} +15 -1
- package/chunks/{chunk-UELXHK2Y.js → chunk-CGBDEST2.js} +16 -5
- package/chunks/{remote-workflow-runtime-RGQ5ECMN.js → chunk-CJRZSWII.js} +39 -8
- package/chunks/chunk-F2P25DJY.js +5421 -0
- package/chunks/{chunk-TO35Y326.js → chunk-GTED3FSZ.js} +5 -2
- package/chunks/{chunk-LT7BFGXA.js → chunk-GV5WXDHY.js} +10 -10
- package/chunks/{chunk-LTEE2JWK.js → chunk-GXXX7AGH.js} +251 -8
- package/chunks/chunk-GZA7RGK7.js +5198 -0
- package/chunks/{chunk-KHPOSLCF.js → chunk-H5QURBBK.js} +174 -710
- package/chunks/chunk-I43YYHDU.js +566 -0
- package/chunks/{chunk-62ENS6XO.js → chunk-IIBNQTOK.js} +3 -2
- package/chunks/{chunk-BF5FIK7H.js → chunk-IJ6UPW3H.js} +108 -24
- package/chunks/{chunk-TPUJZ74W.js → chunk-ILRMLA6J.js} +2 -2
- package/chunks/{chunk-I3OCJ2OA.js → chunk-JWSOUKFF.js} +5 -3
- package/chunks/{chunk-UZUELPFW.js → chunk-K74DRDC5.js} +1 -1
- package/chunks/chunk-LMP2T4G2.js +700 -0
- package/chunks/{chunk-K55B4OH4.js → chunk-NBV4I237.js} +1 -1
- package/chunks/chunk-OOMBOLAF.js +295 -0
- package/chunks/{chunk-YAEJAZYW.js → chunk-PJU24AKR.js} +2 -2
- package/chunks/{chunk-NI6QYQSK.js → chunk-PVJUPIQG.js} +6 -6
- package/chunks/{chunk-WYNZFNMF.js → chunk-Q7JKIKKF.js} +289 -10
- package/chunks/{chunk-ITES7BCY.js → chunk-QNRYOJEB.js} +3 -111
- package/chunks/{chunk-PIR6BNE7.js → chunk-R2XBH476.js} +2 -2
- package/chunks/{chunk-O6Z4XPOM.js → chunk-RURJYCWY.js} +1 -1
- package/chunks/chunk-RVJVM5L4.js +164 -0
- package/chunks/{chunk-NX4H6L4M.js → chunk-S2GITRD5.js} +2 -2
- package/chunks/{chunk-W5VNCB57.js → chunk-SU4IHQQI.js} +1 -1
- package/chunks/{chunk-V2BWXPZP.js → chunk-SZDD77KX.js} +6 -6
- package/chunks/{chunk-EJH2TNVH.js → chunk-TVS6WVSK.js} +3 -3
- package/chunks/{chunk-LVGZGG63.js → chunk-UJE4WOQS.js} +1 -1
- package/chunks/chunk-VU7V2SDW.js +284 -0
- package/chunks/chunk-W624J7NF.js +117 -0
- package/chunks/{chunk-OLSKXTQZ.js → chunk-WUPN3D37.js} +22 -248
- package/chunks/{chunk-HFDSIHTE.js → chunk-X2IPO5JO.js} +202 -30
- package/chunks/{chunk-JEYIWMGL.js → chunk-X2ZMSRTP.js} +1 -1
- package/chunks/{chunk-F344NYUN.js → chunk-XA2IBHPB.js} +1 -1
- package/chunks/{chunk-Y4HJRUFE.js → chunk-YERUDEXT.js} +876 -817
- package/chunks/{chunk-AAA4PRWK.js → chunk-YKWARO3T.js} +2 -2
- package/chunks/{chunk-P7KDN5PK.js → chunk-YSQWZ67M.js} +14 -14
- package/chunks/{chunk-4HGGNBKK.js → chunk-ZM6ANQZJ.js} +2593 -1563
- package/chunks/{codex-models-Y457ND6Q.js → codex-models-6XVNFRXZ.js} +7 -7
- package/chunks/{commands-PBDAOZKA.js → commands-FRPOFIO4.js} +1603 -6945
- package/chunks/dashboard-5HDSNBAU.js +76 -0
- package/chunks/{db-TPSI552V.js → db-BXJNWUYJ.js} +3 -3
- package/chunks/{deep-review-DKED6EN5.js → deep-review-GSJEBLCG.js} +34 -33
- package/chunks/{disclose-LDNKAVRH.js → disclose-OU6Z6GVT.js} +4 -2
- package/chunks/{dist-RLPNLRZD.js → dist-7KSYDDSG.js} +33 -1
- package/chunks/{dist-7Q5A6TQM.js → dist-RKLQIXDT.js} +18 -2
- package/chunks/{dist-4LGRIBOC.js → dist-TQMHMSBZ.js} +99 -64
- package/chunks/eval-runner-A2DIGVP7.js +31 -0
- package/chunks/{exploit-agent-RMFYNG7H.js → exploit-agent-Y2P4GFIY.js} +1 -1
- package/chunks/{exploit-autoclimb-2A2PQI4E.js → exploit-autoclimb-YRZ3TMS2.js} +1 -1
- package/chunks/{exploit-climb-DEJ232QN.js → exploit-climb-4LEY4SDW.js} +2 -2
- package/chunks/{fix-JGBW7XUN.js → fix-RQSIG75B.js} +7 -7
- package/chunks/{harness-CBOLMUHB.js → harness-3NVC3DDY.js} +3 -3
- package/chunks/{hunt-scan-MIRMABY4.js → hunt-scan-W246VWJC.js} +16 -16
- package/chunks/{kernel-primitive-NAPDMJC7.js → kernel-primitive-T47V3RD3.js} +2 -2
- package/chunks/{kernel-vm-runner-PR5OSDQ2.js → kernel-vm-runner-AEL5E3SV.js} +2 -2
- package/chunks/local-engine-ZCW4YC6E.js +21 -0
- package/chunks/managed-operation-6R2QPPW5.js +60 -0
- package/chunks/{memsafety-scan-RPS446CD.js → memsafety-scan-L2Z7E7TE.js} +2 -2
- package/chunks/{native-loop-CGOJMNHV.js → native-loop-26X2CHBV.js} +14 -13
- package/chunks/orchestrate-OBS37FWQ.js +63 -0
- package/chunks/{prepare-YVNENPNL.js → prepare-C3KGMBXT.js} +5 -5
- package/chunks/provider-model-discovery-QGUGL3XW.js +277 -0
- package/chunks/remote-workflow-runtime-DB52SINR.js +12 -0
- package/chunks/{run-VH4OIDKF.js → run-MU3MFL2Z.js} +902 -322
- package/chunks/{runtime-4TAJFVF7.js → runtime-AUBLQUOH.js} +2 -2
- package/chunks/{runtime-HWL6HG7A.js → runtime-U66JNSAY.js} +7 -7
- package/chunks/{scan-stream-HJAZJONE.js → scan-stream-34F3LTPV.js} +3 -2
- package/chunks/{scope-Q5PIX2IS.js → scope-HSTG63TQ.js} +2 -2
- package/chunks/service-plugins-5B23PWXC.js +64 -0
- package/chunks/{session-store-2FEIZGSV.js → session-store-MKAAP3WL.js} +2 -2
- package/chunks/{variant-candidates-TX5V6XOT.js → variant-candidates-LG767HWH.js} +7 -7
- package/chunks/{web-recon-prepass-6HOUGF7Q.js → web-recon-prepass-NJP6J3E4.js} +5 -5
- package/chunks/workflow-runtime-AR627I26.js +178 -0
- package/dashboard/assets/{abnfDiagram-VCTEODGH-BuvumFYR.js → abnfDiagram-VCTEODGH-Cq149Jpk.js} +1 -1
- package/dashboard/assets/{arc-DZzWDuCG.js → arc-CpP-3TRW.js} +1 -1
- package/dashboard/assets/architecture-7GRP2DOG-z5EHYkyH.js +1 -0
- package/dashboard/assets/{architectureDiagram-5GKGNRK7-Bw5el_EL.js → architectureDiagram-5GKGNRK7-ewtXpjR_.js} +1 -1
- package/dashboard/assets/{blockDiagram-I7D4REHJ-BjVLEApp.js → blockDiagram-I7D4REHJ-CZYkRRDi.js} +1 -1
- package/dashboard/assets/{c4Diagram-7LVT6UL2-B9nNzx2J.js → c4Diagram-7LVT6UL2-CV7Iu3_Z.js} +1 -1
- package/dashboard/assets/channel-CuYjfiC5.js +1 -0
- package/dashboard/assets/{chunk-4HAMMTFA-y72Q95nW.js → chunk-4HAMMTFA-PKCyW4m-.js} +1 -1
- package/dashboard/assets/{chunk-75Z2AOVW-BOhrOGMO.js → chunk-75Z2AOVW-C5MlFTc_.js} +1 -1
- package/dashboard/assets/{chunk-DU6HZSFF-B0EhAaNb.js → chunk-DU6HZSFF-3M37ulcO.js} +2 -2
- package/dashboard/assets/{chunk-F27PBJKO-BR-hiDvM.js → chunk-F27PBJKO-DTAok0qM.js} +1 -1
- package/dashboard/assets/{chunk-GMAD6QVW-H15vJYXg.js → chunk-GMAD6QVW-CPsr2F33.js} +1 -1
- package/dashboard/assets/{chunk-GVQU2GXP-BRndps0o.js → chunk-GVQU2GXP-C2AXGf9A.js} +1 -1
- package/dashboard/assets/{chunk-IMKFNOWR-CIzC_OWx.js → chunk-IMKFNOWR-DMG6yD_O.js} +1 -1
- package/dashboard/assets/{chunk-L3NEJ4N5-NR4P1Vko.js → chunk-L3NEJ4N5-BSvwdbXx.js} +1 -1
- package/dashboard/assets/{chunk-OSK3NFVY-DtjTDf8S.js → chunk-OSK3NFVY-CfB8V7FU.js} +1 -1
- package/dashboard/assets/{chunk-P2QGCYS3-CYT11Qjx.js → chunk-P2QGCYS3-CvmZvq6n.js} +1 -1
- package/dashboard/assets/{chunk-POPQ4Y6H-Duj2Ygwu.js → chunk-POPQ4Y6H-D_TvwDxL.js} +1 -1
- package/dashboard/assets/{chunk-PWAF6VOD-z4p5Tf_y.js → chunk-PWAF6VOD-Da5GnuOY.js} +1 -1
- package/dashboard/assets/{chunk-SHT3W25Y-DYeLYLS3.js → chunk-SHT3W25Y-CcsMJpR-.js} +1 -1
- package/dashboard/assets/{chunk-SVP7TREG-BKowxCVI.js → chunk-SVP7TREG-COojjieJ.js} +1 -1
- package/dashboard/assets/{chunk-TICWLB2K-GDAwEFlH.js → chunk-TICWLB2K-nBAmJwx6.js} +1 -1
- package/dashboard/assets/{chunk-XXDRQBXY-DRD79Mjx.js → chunk-XXDRQBXY-r5HyhWDv.js} +1 -1
- package/dashboard/assets/classDiagram-ZZMXUADV-DCuOrWUV.js +1 -0
- package/dashboard/assets/classDiagram-v2-VYDZK3BY-DCuOrWUV.js +1 -0
- package/dashboard/assets/{common-vnzd7UOF.js → common-C6snVPsk.js} +1 -1
- package/dashboard/assets/{cose-bilkent-JH36ORCC-GqCLsRyf.js → cose-bilkent-JH36ORCC-BLGcaZHk.js} +1 -1
- package/dashboard/assets/{cynefin-OW5HDTMX-CJN9YwWN.js → cynefin-OW5HDTMX-DbZMK00I.js} +1 -1
- package/dashboard/assets/{cynefinDiagram-5FMLGOSQ-DVJHCYQY.js → cynefinDiagram-5FMLGOSQ-xodkuQtW.js} +1 -1
- package/dashboard/assets/{dagre-GXQ25YYZ-BMCrrJJR.js → dagre-GXQ25YYZ-CRk9qfSG.js} +1 -1
- package/dashboard/assets/{diagram-S7CK7UJ4-CLYDdOEm.js → diagram-S7CK7UJ4-DNoTMlCO.js} +1 -1
- package/dashboard/assets/{diagram-UQ7AKVKN-CnPuAZK7.js → diagram-UQ7AKVKN-COccuyew.js} +1 -1
- package/dashboard/assets/{diagram-VSXAHHWV-Cr2I2DnG.js → diagram-VSXAHHWV-g6D1tWRb.js} +1 -1
- package/dashboard/assets/{diagram-VX7I27RA-_mGW1wpp.js → diagram-VX7I27RA-DhO4eVIC.js} +1 -1
- package/dashboard/assets/{diagram-Z3DM3KII-igybB0l9.js → diagram-Z3DM3KII-DeOQFexd.js} +1 -1
- package/dashboard/assets/{dist-Bb7_-x5y.js → dist-BQYeOQg3.js} +1 -1
- package/dashboard/assets/{ebnfDiagram-PWID7BFC-CVCICf2R.js → ebnfDiagram-PWID7BFC-MtkX2feM.js} +1 -1
- package/dashboard/assets/{erDiagram-RLTQ6QDP-CRjnfgxj.js → erDiagram-RLTQ6QDP-DIWSsoYZ.js} +1 -1
- package/dashboard/assets/eventmodeling-NTZA5JFV-D_3ez4Gv.js +1 -0
- package/dashboard/assets/flowDiagram-HODETNUW-D2boyYEd.js +1 -0
- package/dashboard/assets/{ganttDiagram-EL5Y4UJY-DppD7sD7.js → ganttDiagram-EL5Y4UJY-DKggkJe0.js} +1 -1
- package/dashboard/assets/{gitGraph-4MIJSDKK-Tw0vNnQc.js → gitGraph-4MIJSDKK-DFOQYwXc.js} +1 -1
- package/dashboard/assets/{gitGraphDiagram-WWUBYQGX-Cpf96-z3.js → gitGraphDiagram-WWUBYQGX-r_iR8Qzo.js} +1 -1
- package/dashboard/assets/{info-A6RAGUB7-DLyt9arx.js → info-A6RAGUB7-DeednLoB.js} +1 -1
- package/dashboard/assets/{infoDiagram-27XIBGKW-B6_piSNS.js → infoDiagram-27XIBGKW-ClQk7UyQ.js} +1 -1
- package/dashboard/assets/{ishikawaDiagram-5VMMS53U-DvMO0B0X.js → ishikawaDiagram-5VMMS53U-tR7Vziog.js} +1 -1
- package/dashboard/assets/{journeyDiagram-3NMN7TZE-f7ZK98b6.js → journeyDiagram-3NMN7TZE-Cpb9IqKL.js} +1 -1
- package/dashboard/assets/{kanban-definition-UXKFOSKX-Dso0nAxL.js → kanban-definition-UXKFOSKX-BzUuKbA9.js} +1 -1
- package/dashboard/assets/katex-BdBmVSus.js +257 -0
- package/dashboard/assets/{line-VcKaFG0G.js → line-BHY_tSHu.js} +1 -1
- package/dashboard/assets/{linear-D7YnpiWh.js → linear-naZZ1pHk.js} +1 -1
- package/dashboard/assets/{mermaid-parser.core-DriL2hrV.js → mermaid-parser.core-CPvd4cEx.js} +3 -3
- package/dashboard/assets/{mermaid.core-DJWYDh_P.js → mermaid.core-D_QsUPU8.js} +4 -4
- package/dashboard/assets/{mindmap-definition-YA3MSWOX-DZsoIeac.js → mindmap-definition-YA3MSWOX-CtfLTPPJ.js} +1 -1
- package/dashboard/assets/operations-BwCzhVnT.js +130 -0
- package/dashboard/assets/operations-QjKT0Hwi.css +1 -0
- package/dashboard/assets/{packet-AYTQ26CC-BQBIXKxk.js → packet-AYTQ26CC-DDQbkT9I.js} +1 -1
- package/dashboard/assets/{pegDiagram-XKGWAZYB-B0-lslgW.js → pegDiagram-XKGWAZYB-C1Dclbzj.js} +1 -1
- package/dashboard/assets/{pie-WAS4IAKB-DoY6dwQs.js → pie-WAS4IAKB-LpU4ULAs.js} +1 -1
- package/dashboard/assets/{pieDiagram-E7YTZNPT-ElmdRjp5.js → pieDiagram-E7YTZNPT-Cd7XwYo5.js} +1 -1
- package/dashboard/assets/{quadrantDiagram-AXDQQJYC-Ci1h98Q2.js → quadrantDiagram-AXDQQJYC-CaS-GQ4X.js} +1 -1
- package/dashboard/assets/{radar-RG4KPBEZ-DHod2WgB.js → radar-RG4KPBEZ-CcxW3NJm.js} +1 -1
- package/dashboard/assets/{railroad-74A4TZTK-90JxB4xV.js → railroad-74A4TZTK-9P5Rl8fP.js} +1 -1
- package/dashboard/assets/railroad-abnf-HS5TGJTU-CSfpwjna.js +1 -0
- package/dashboard/assets/railroad-ebnf-LZEXJU2U-D6R5qzr-.js +1 -0
- package/dashboard/assets/railroad-peg-WCYAUIDC-DKEX7ITG.js +1 -0
- package/dashboard/assets/{railroadDiagram-O6MQD6OU-k3190A6L.js → railroadDiagram-O6MQD6OU-BeesTrqn.js} +1 -1
- package/dashboard/assets/{requirementDiagram-BXWQKSXE-C3-eR7I5.js → requirementDiagram-BXWQKSXE-IjyK0DhW.js} +1 -1
- package/dashboard/assets/{sankeyDiagram-P5KCCOFB-Bc86pi8w.js → sankeyDiagram-P5KCCOFB-DmIluQqo.js} +1 -1
- package/dashboard/assets/{sequenceDiagram-WJ2MYXX4-Bv_MvEmz.js → sequenceDiagram-WJ2MYXX4-CUp8ZjTc.js} +1 -1
- package/dashboard/assets/{src-D7Dqq5yP.js → src-r61wDjcA.js} +1 -1
- package/dashboard/assets/{stateDiagram-D77RDMKH-Bq_GVmeW.js → stateDiagram-D77RDMKH-Dy9TQb8P.js} +1 -1
- package/dashboard/assets/stateDiagram-v2-MP3YSRHH-CQb0ZtPr.js +1 -0
- package/dashboard/assets/{swimlanes-42K2YHIH-q0iK-e0P.js → swimlanes-42K2YHIH-CZuDV7V5.js} +1 -1
- package/dashboard/assets/swimlanesDiagram-VR7AAH4N-BxgWMq8X.js +8 -0
- package/dashboard/assets/{timeline-definition-24CTP7MA-CNfF07hM.js → timeline-definition-24CTP7MA-BGdXW-iY.js} +1 -1
- package/dashboard/assets/{treeView-Q6P3EWNA-m629ePnS.js → treeView-Q6P3EWNA-DlRrayjM.js} +1 -1
- package/dashboard/assets/{treemap-WGGIJYW6-D9Cb2ETv.js → treemap-WGGIJYW6-C6UqLKfI.js} +1 -1
- package/dashboard/assets/{vennDiagram-4TSXK5OY-v4dKF-FE.js → vennDiagram-4TSXK5OY-DzKWHJsl.js} +1 -1
- package/dashboard/assets/{wardley-WFR3VGLG-DkwH_nRe.js → wardley-WFR3VGLG-thmyHKb0.js} +1 -1
- package/dashboard/assets/{wardleyDiagram-VM6X3IG4-3ImohVu4.js → wardleyDiagram-VM6X3IG4-DGsjYmNJ.js} +1 -1
- package/dashboard/assets/{xychartDiagram-S5SC5T6Z-QJu3dm7K.js → xychartDiagram-S5SC5T6Z-C7_T_tWt.js} +1 -1
- package/dashboard/index.html +3 -3
- package/package.json +3 -2
- package/worker-assets/demo-target/README.md +15 -0
- package/worker-assets/demo-target/include/decoder.h +27 -0
- package/worker-assets/demo-target/patched-decoder.c +40 -0
- package/worker-assets/demo-target/src/decoder.c +50 -0
- package/worker-assets/demo-target/witness-65537x1.bin +0 -0
- package/chunks/chunk-3P3XXSIJ.js +0 -463
- package/chunks/chunk-EWXOG6D3.js +0 -1695
- package/chunks/chunk-FXR3BT2G.js +0 -226
- package/chunks/chunk-R35KKJA4.js +0 -90
- package/chunks/eval-runner-RZKDOQ2G.js +0 -30
- package/chunks/managed-operation-YNQQEA5V.js +0 -59
- package/chunks/orchestrate-5NK34H3W.js +0 -62
- package/chunks/service-plugins-QYFITODK.js +0 -63
- package/chunks/workflow-runtime-ZEEBJFQG.js +0 -64
- package/dashboard/assets/architecture-7GRP2DOG-DK9bv1Md.js +0 -1
- package/dashboard/assets/channel-Ck17eKdX.js +0 -1
- package/dashboard/assets/classDiagram-ZZMXUADV-BaeZA6LE.js +0 -1
- package/dashboard/assets/classDiagram-v2-VYDZK3BY-BaeZA6LE.js +0 -1
- package/dashboard/assets/eventmodeling-NTZA5JFV-po5oDydv.js +0 -1
- package/dashboard/assets/flowDiagram-HODETNUW-TSV9s7q4.js +0 -1
- package/dashboard/assets/katex-CXMH3UgJ.js +0 -257
- package/dashboard/assets/operations-BIaUSnYv.js +0 -121
- package/dashboard/assets/operations-BeCdkT4S.css +0 -1
- package/dashboard/assets/railroad-abnf-HS5TGJTU-BkXGl114.js +0 -1
- package/dashboard/assets/railroad-ebnf-LZEXJU2U-QVAERn2C.js +0 -1
- package/dashboard/assets/railroad-peg-WCYAUIDC-B1-PM01z.js +0 -1
- package/dashboard/assets/stateDiagram-v2-MP3YSRHH-z1XRaftz.js +0 -1
- package/dashboard/assets/swimlanesDiagram-VR7AAH4N-C9L6XBQj.js +0 -8
- 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
|
@@ -9,7 +9,10 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
extractFileRefs,
|
|
11
11
|
redactSensitiveHeaders
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-CGBDEST2.js";
|
|
13
|
+
import {
|
|
14
|
+
getFindingPriority
|
|
15
|
+
} from "./chunk-GXXX7AGH.js";
|
|
13
16
|
import {
|
|
14
17
|
__toESM
|
|
15
18
|
} from "./chunk-VCSFCHAJ.js";
|
|
@@ -906,7 +909,7 @@ function impactForSeverity(severity) {
|
|
|
906
909
|
function impactLine(finding) {
|
|
907
910
|
const base = impactForSeverity(finding.severity);
|
|
908
911
|
const a = finding.impactAssessment;
|
|
909
|
-
if (!a)
|
|
912
|
+
if (!a || !getFindingPriority(finding).assessed)
|
|
910
913
|
return base;
|
|
911
914
|
const gain = {
|
|
912
915
|
rce: "remote code execution",
|
|
@@ -5,20 +5,20 @@ import {
|
|
|
5
5
|
captureObservation,
|
|
6
6
|
createEvolvedFinder,
|
|
7
7
|
loadAppsecFinderLenses
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ZM6ANQZJ.js";
|
|
9
|
+
import {
|
|
10
|
+
ScanCostLedger
|
|
11
|
+
} from "./chunk-BD7WULFS.js";
|
|
9
12
|
import {
|
|
10
13
|
loadEvolutionConfigFile
|
|
11
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-YKWARO3T.js";
|
|
12
15
|
import {
|
|
13
16
|
resolveOsecRunStorage,
|
|
14
17
|
writeOsecRunReport
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import {
|
|
17
|
-
ScanCostLedger
|
|
18
|
-
} from "./chunk-CP6HANBE.js";
|
|
18
|
+
} from "./chunk-BMDG6T7D.js";
|
|
19
19
|
import {
|
|
20
20
|
eventBus
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-5PFRE522.js";
|
|
22
22
|
|
|
23
23
|
// packages/cli/src/commands/deep-review.ts
|
|
24
24
|
import { readFileSync, realpathSync, statSync } from "node:fs";
|
|
@@ -283,7 +283,7 @@ async function runDeepReview(opts) {
|
|
|
283
283
|
cairoVerifyLenses,
|
|
284
284
|
moveFinderLenses,
|
|
285
285
|
moveVerifyLenses
|
|
286
|
-
} = await import("./dist-
|
|
286
|
+
} = await import("./dist-TQMHMSBZ.js");
|
|
287
287
|
opts.signal?.throwIfAborted();
|
|
288
288
|
const costLedger = opts.costLedger ?? new ScanCostLedger();
|
|
289
289
|
const scanStartedAt = Date.now();
|
|
@@ -330,7 +330,7 @@ async function runDeepReview(opts) {
|
|
|
330
330
|
let lanes = null;
|
|
331
331
|
let allocateAcrossLanes;
|
|
332
332
|
if (opts.useThreatModel) {
|
|
333
|
-
const threatModule = await import("./dist-
|
|
333
|
+
const threatModule = await import("./dist-TQMHMSBZ.js");
|
|
334
334
|
allocateAcrossLanes = threatModule.allocateCandidatesAcrossLanes;
|
|
335
335
|
const rtType = runtime !== "auto" ? runtime : "api";
|
|
336
336
|
const plannerRuntime = opts.nativeRuntime ? {
|
|
@@ -654,7 +654,7 @@ async function deepReviewAction(target, opts) {
|
|
|
654
654
|
costCeilingUsd = parsed;
|
|
655
655
|
}
|
|
656
656
|
const { writeFileSync } = await import("node:fs");
|
|
657
|
-
const { executeManagedOperation } = await import("./managed-operation-
|
|
657
|
+
const { executeManagedOperation } = await import("./managed-operation-6R2QPPW5.js");
|
|
658
658
|
const timeoutMs = parsePositive("--timeout", opts.timeout, 6e5);
|
|
659
659
|
const outcome = await executeManagedOperation({
|
|
660
660
|
type: "deep-review",
|
|
@@ -67,7 +67,7 @@ import { fileURLToPath } from "node:url";
|
|
|
67
67
|
import { dirname, join } from "node:path";
|
|
68
68
|
function loadVersion() {
|
|
69
69
|
if (true) {
|
|
70
|
-
return "0.
|
|
70
|
+
return "0.24.1";
|
|
71
71
|
}
|
|
72
72
|
try {
|
|
73
73
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
@@ -189,6 +189,22 @@ var MANUAL_PRICING = {
|
|
|
189
189
|
"qwen3.7-plus": { input: 0.5, output: 3, cachedInput: 0.05 },
|
|
190
190
|
"qwen3.6-plus": { input: 0.5, output: 3, cachedInput: 0.05 },
|
|
191
191
|
"qwen3.6-flash": { input: 0.1875, output: 1.125 },
|
|
192
|
+
// ClinePass reference quota rates, not incremental subscription charges.
|
|
193
|
+
// https://github.com/cline/cline/blob/main/docs/getting-started/clinepass.mdx
|
|
194
|
+
// checked 2026-10-05; DeepSeek uses peak rates; Qwen Plus <=256K only.
|
|
195
|
+
"cline-pass/glm-5.3": { input: 1.4, output: 4.4, cachedInput: 0.26 },
|
|
196
|
+
"cline-pass/glm-5.2": { input: 1.4, output: 4.4, cachedInput: 0.26 },
|
|
197
|
+
"cline-pass/kimi-k3": { input: 3, output: 15, cachedInput: 0.3 },
|
|
198
|
+
"cline-pass/kimi-k2.7-code": { input: 0.95, output: 4, cachedInput: 0.19 },
|
|
199
|
+
"cline-pass/kimi-k2.6": { input: 0.95, output: 4, cachedInput: 0.16 },
|
|
200
|
+
"cline-pass/deepseek-v4-pro": { input: 1.32, output: 3.96, cachedInput: 0.044 },
|
|
201
|
+
"cline-pass/deepseek-v4-flash": { input: 0.44, output: 1.32, cachedInput: 0.014 },
|
|
202
|
+
"cline-pass/mimo-v2.5": { input: 0.14, output: 0.28, cachedInput: 28e-4 },
|
|
203
|
+
"cline-pass/mimo-v2.5-pro": { input: 1.74, output: 3.48, cachedInput: 0.0145 },
|
|
204
|
+
"cline-pass/minimax-m3": { input: 0.3, output: 1.2, cachedInput: 0.06 },
|
|
205
|
+
"cline-pass/qwen3.8-max": { input: 2, output: 6, cachedInput: 0.25, cacheWrite: 2.5 },
|
|
206
|
+
"cline-pass/qwen3.7-max": { input: 2.5, output: 7.5, cachedInput: 0.5, cacheWrite: 3.125 },
|
|
207
|
+
"cline-pass/qwen3.7-plus": { input: 0.4, output: 1.6, cachedInput: 0.04, cacheWrite: 0.5 },
|
|
192
208
|
// OpenCode Zen free tier (https://opencode.ai/docs/zen/) — zero-rate gateway
|
|
193
209
|
// models; actual spend is $0 while the free period lasts.
|
|
194
210
|
"muse-spark-1.3-contributor-free": { input: 0, output: 0 },
|
|
@@ -293,7 +309,9 @@ var MODEL_VENDOR_PREFIXES = [
|
|
|
293
309
|
"openrouter/",
|
|
294
310
|
"opencode/",
|
|
295
311
|
"xai/",
|
|
296
|
-
"x-ai/"
|
|
312
|
+
"x-ai/",
|
|
313
|
+
"cline/",
|
|
314
|
+
"cline-pass/"
|
|
297
315
|
];
|
|
298
316
|
function normalizeModel(model) {
|
|
299
317
|
let key = model;
|
|
@@ -313,7 +331,7 @@ function normalizeModel(model) {
|
|
|
313
331
|
function getRates(model) {
|
|
314
332
|
const key = model ? normalizeModel(model) : "";
|
|
315
333
|
const aliasKey = azureDeploymentPriceKey(key);
|
|
316
|
-
const rates = (model && Object.hasOwn(MODEL_PRICING, model) ? MODEL_PRICING[model] : void 0) ?? (model ? DISCOVERED_PRICING.get(model) : void 0) ?? (Object.hasOwn(MODEL_PRICING, key) ? MODEL_PRICING[key] : void 0) ?? (aliasKey ? MODEL_PRICING[aliasKey] : void 0) ?? DISCOVERED_PRICING.get(key);
|
|
334
|
+
const rates = (model && Object.hasOwn(MODEL_PRICING, model) ? MODEL_PRICING[model] : void 0) ?? (model ? DISCOVERED_PRICING.get(model) : void 0) ?? (model?.startsWith("cline/") && Object.hasOwn(MODEL_PRICING, model.slice(6)) ? MODEL_PRICING[model.slice(6)] : void 0) ?? (Object.hasOwn(MODEL_PRICING, key) ? MODEL_PRICING[key] : void 0) ?? (aliasKey ? MODEL_PRICING[aliasKey] : void 0) ?? DISCOVERED_PRICING.get(key);
|
|
317
335
|
if (!rates) {
|
|
318
336
|
if (model)
|
|
319
337
|
console.warn(`[0] Unknown model for cost estimation: ${model}`);
|
|
@@ -336,6 +354,8 @@ function modelProvider(model) {
|
|
|
336
354
|
if (!model)
|
|
337
355
|
return "unknown";
|
|
338
356
|
const lowered = model.toLowerCase();
|
|
357
|
+
if (lowered.startsWith("cline/") || lowered.startsWith("cline-pass/"))
|
|
358
|
+
return "cline";
|
|
339
359
|
if (lowered.startsWith("openai/"))
|
|
340
360
|
return "openai";
|
|
341
361
|
if (lowered.startsWith("azure/"))
|
|
@@ -1820,7 +1840,8 @@ var BACKEND_CAPABILITIES = [
|
|
|
1820
1840
|
"artifacts",
|
|
1821
1841
|
"model-connections",
|
|
1822
1842
|
"process-controls",
|
|
1823
|
-
"operator-services"
|
|
1843
|
+
"operator-services",
|
|
1844
|
+
"learning"
|
|
1824
1845
|
];
|
|
1825
1846
|
var BackendCapabilitySchema = external_exports.enum(BACKEND_CAPABILITIES);
|
|
1826
1847
|
var BackendIdSchema = external_exports.string().min(1).max(128).regex(/^[A-Za-z0-9][A-Za-z0-9_.-]*$/).refine((value) => !["__proto__", "constructor", "prototype"].includes(value), "Reserved backend identifier.");
|
|
@@ -1918,9 +1939,14 @@ function backendCapabilitiesForApiPath(pathname) {
|
|
|
1918
1939
|
return ["workflow-engine"];
|
|
1919
1940
|
if (parts[0] === "control" && parts.length === 2 && ["recover-stale-workers", "prune-stopped-workers", "reset-database", "start-daemon", "stop-daemon", "launch-run"].includes(parts[1]))
|
|
1920
1941
|
return ["process-controls"];
|
|
1921
|
-
if (pathname === "/api/dashboard" || parts[0] === "scans" || parts[0] === "finding-family")
|
|
1942
|
+
if (pathname === "/api/dashboard" || parts[0] === "scans" || parts[0] === "finding-family" || pathname === "/api/findings/export")
|
|
1922
1943
|
add("artifacts");
|
|
1923
|
-
|
|
1944
|
+
if (parts[0] === "findings" && parts.length === 3 && parts[2] === "impact-assessment")
|
|
1945
|
+
add("artifacts");
|
|
1946
|
+
if (parts[0] === "scans" && parts[2] === "resume") {
|
|
1947
|
+
add("workflows");
|
|
1948
|
+
add("sessions");
|
|
1949
|
+
} else if (parts[0] === "events" || pathname === "/api/v1/presentation/events")
|
|
1924
1950
|
add("events");
|
|
1925
1951
|
else if (parts[0] === "console") {
|
|
1926
1952
|
const family = parts[1];
|
|
@@ -1935,7 +1961,9 @@ function backendCapabilitiesForApiPath(pathname) {
|
|
|
1935
1961
|
add("model-connections");
|
|
1936
1962
|
if (["files", "directories", "paths", "workspace", "project"].includes(operation ?? ""))
|
|
1937
1963
|
add("workspaces");
|
|
1938
|
-
} else if (
|
|
1964
|
+
} else if (family === "learning")
|
|
1965
|
+
add("learning");
|
|
1966
|
+
else if (["workflow-triggers", "workflow-schedules"].includes(family ?? ""))
|
|
1939
1967
|
add("schedules");
|
|
1940
1968
|
else if (["workflows", "workflow-definitions", "workflow-executions", "workflow-tool-catalog", "fixes"].includes(family ?? "")) {
|
|
1941
1969
|
add("workflows");
|
|
@@ -1958,6 +1986,205 @@ function backendCapabilitiesForApiPath(pathname) {
|
|
|
1958
1986
|
return [...capabilities];
|
|
1959
1987
|
}
|
|
1960
1988
|
|
|
1989
|
+
// packages/shared/dist/scan-resume.js
|
|
1990
|
+
var ScanResumeRequestSchema = external_exports.object({
|
|
1991
|
+
sessionId: external_exports.string().trim().min(1).max(160),
|
|
1992
|
+
approval: external_exports.literal("launch-authorized-run"),
|
|
1993
|
+
branchFromEntry: external_exports.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).optional(),
|
|
1994
|
+
timeCapMs: external_exports.number().int().positive().max(864e5).optional(),
|
|
1995
|
+
costCapUsd: external_exports.number().finite().positive().max(1e3).optional()
|
|
1996
|
+
}).strict();
|
|
1997
|
+
function resolvePersistedScanResume(scan) {
|
|
1998
|
+
if (!scan.id || scan.id.startsWith("console-"))
|
|
1999
|
+
throw new Error("Choose a persisted assessment scan, not a console conversation.");
|
|
2000
|
+
const depth = external_exports.enum(["quick", "default", "deep"]).parse(scan.depth);
|
|
2001
|
+
const storedMode = scan.mode ? external_exports.enum(["probe", "deep", "mcp", "web", "http_audit", "llm-ipi"]).parse(scan.mode) : void 0;
|
|
2002
|
+
const raw = external_exports.string().trim().min(1).max(4096).parse(scan.target);
|
|
2003
|
+
let parsed;
|
|
2004
|
+
let impliedMode;
|
|
2005
|
+
if (/^https?:\/\//.test(raw))
|
|
2006
|
+
parsed = { target: raw, targetType: "url", sourceDescription: "url" };
|
|
2007
|
+
else if (raw.startsWith("web:")) {
|
|
2008
|
+
parsed = { target: raw.slice(4), targetType: "web-app", sourceDescription: "web-app" };
|
|
2009
|
+
impliedMode = "web";
|
|
2010
|
+
} else if (raw.startsWith("mcp://")) {
|
|
2011
|
+
parsed = { target: raw, targetType: "url", sourceDescription: "mcp target" };
|
|
2012
|
+
impliedMode = "mcp";
|
|
2013
|
+
} else if (raw.startsWith("scan:"))
|
|
2014
|
+
parsed = { target: raw.slice(5), targetType: "url", sourceDescription: "url" };
|
|
2015
|
+
else if (raw.startsWith("repo:"))
|
|
2016
|
+
parsed = { target: raw.slice(5), targetType: "source-code", sourceDescription: "repository" };
|
|
2017
|
+
else {
|
|
2018
|
+
const match = /^(npm|pypi|cargo|oci):(.+)$/.exec(raw);
|
|
2019
|
+
if (!match)
|
|
2020
|
+
throw new Error(`Resume does not know how to route this persisted target yet: ${raw}`);
|
|
2021
|
+
const ecosystem = match[1];
|
|
2022
|
+
const spec = match[2];
|
|
2023
|
+
const at = spec.lastIndexOf("@");
|
|
2024
|
+
const target = at > 0 ? spec.slice(0, at) : spec;
|
|
2025
|
+
const packageVersion = at > 0 ? spec.slice(at + 1) : void 0;
|
|
2026
|
+
if (!target.trim() || packageVersion === "")
|
|
2027
|
+
throw new Error("Persisted package identity is incomplete.");
|
|
2028
|
+
const types = { npm: "npm-package", pypi: "pypi-package", cargo: "cargo-package", oci: "oci-image" };
|
|
2029
|
+
parsed = { target, targetType: types[ecosystem], ...packageVersion ? { packageVersion } : {}, sourceDescription: `${ecosystem} package` };
|
|
2030
|
+
}
|
|
2031
|
+
if (!parsed.target.trim())
|
|
2032
|
+
throw new Error("Persisted scan target is empty.");
|
|
2033
|
+
const targetType = storedMode === "web" ? "web-app" : parsed.targetType;
|
|
2034
|
+
return { ...parsed, targetType, depth, mode: impliedMode ?? storedMode ?? (targetType === "web-app" ? "web" : "deep") };
|
|
2035
|
+
}
|
|
2036
|
+
|
|
2037
|
+
// packages/shared/dist/engine-operations.js
|
|
2038
|
+
var ENGINE_OPERATION_DEFINITIONS = [
|
|
2039
|
+
{ id: "get_capabilities", capability: "operator-services", effect: "read" },
|
|
2040
|
+
{ id: "start_assessment", capability: "workflows", effect: "execute" },
|
|
2041
|
+
{ id: "attach_session", capability: "sessions", effect: "read" },
|
|
2042
|
+
{ id: "get_session_events", capability: "events", effect: "read" },
|
|
2043
|
+
{ id: "list_templates", capability: "workflows", effect: "read" },
|
|
2044
|
+
{ id: "get_template", capability: "workflows", effect: "read" },
|
|
2045
|
+
{ id: "list_workflows", capability: "workflows", effect: "read" },
|
|
2046
|
+
{ id: "get_workflow", capability: "workflows", effect: "read" },
|
|
2047
|
+
{ id: "save_workflow", capability: "workflows", effect: "write" },
|
|
2048
|
+
{ id: "start_run", capability: "workflows", effect: "execute" },
|
|
2049
|
+
{ id: "list_runs", capability: "workflows", effect: "read" },
|
|
2050
|
+
{ id: "get_run", capability: "workflows", effect: "read" },
|
|
2051
|
+
{ id: "get_run_results", capability: "workflows", effect: "read" },
|
|
2052
|
+
{ id: "cancel_run", capability: "workflows", effect: "cancel" },
|
|
2053
|
+
{ id: "list_sessions", capability: "sessions", effect: "read" },
|
|
2054
|
+
{ id: "create_session", capability: "sessions", effect: "write" },
|
|
2055
|
+
{ id: "get_session", capability: "sessions", effect: "read" },
|
|
2056
|
+
{ id: "send_message", capability: "sessions", effect: "execute" },
|
|
2057
|
+
{ id: "continue_session", capability: "sessions", effect: "execute" },
|
|
2058
|
+
{ id: "cancel_session", capability: "sessions", effect: "cancel" },
|
|
2059
|
+
{ id: "resolve_decision", capability: "approvals", effect: "approve" },
|
|
2060
|
+
{ id: "list_saved_sessions", capability: "sessions", effect: "read" },
|
|
2061
|
+
{ id: "resume_session", capability: "sessions", effect: "execute" },
|
|
2062
|
+
{ id: "resume_scan", capability: "scan-resume", effect: "execute" }
|
|
2063
|
+
];
|
|
2064
|
+
var ENGINE_REPORT_FORMATS = ["json", "md", "html", "sarif", "pdf"];
|
|
2065
|
+
var operationIds = ENGINE_OPERATION_DEFINITIONS.map((operation) => operation.id);
|
|
2066
|
+
var OperationIdSchema = external_exports.enum(operationIds);
|
|
2067
|
+
var unique = (values) => new Set(values).size === values.length;
|
|
2068
|
+
var EngineCapabilityManifestSchema = external_exports.object({
|
|
2069
|
+
schemaVersion: external_exports.literal(1),
|
|
2070
|
+
operations: external_exports.array(OperationIdSchema).refine(unique, "Engine operations must be unique"),
|
|
2071
|
+
reportExport: external_exports.object({ formats: external_exports.array(external_exports.enum(ENGINE_REPORT_FORMATS)).refine(unique, "Report formats must be unique") }).strict(),
|
|
2072
|
+
resume: external_exports.object({ session: external_exports.boolean(), scan: external_exports.boolean(), workflow: external_exports.literal(false) }).strict()
|
|
2073
|
+
}).strict().superRefine((manifest, context) => {
|
|
2074
|
+
if (manifest.resume.session !== manifest.operations.includes("resume_session") || manifest.resume.scan !== manifest.operations.includes("resume_scan")) {
|
|
2075
|
+
context.addIssue({ code: external_exports.ZodIssueCode.custom, message: "Resume support must match registered operations" });
|
|
2076
|
+
}
|
|
2077
|
+
});
|
|
2078
|
+
function createEngineCapabilityManifest(options) {
|
|
2079
|
+
return EngineCapabilityManifestSchema.parse({
|
|
2080
|
+
schemaVersion: 1,
|
|
2081
|
+
operations: [...options.operations],
|
|
2082
|
+
reportExport: { formats: [...options.reportFormats ?? []] },
|
|
2083
|
+
resume: { session: options.operations.includes("resume_session"), scan: options.operations.includes("resume_scan"), workflow: false }
|
|
2084
|
+
});
|
|
2085
|
+
}
|
|
2086
|
+
function requireEngineOperation(manifest, operation) {
|
|
2087
|
+
const valid = EngineCapabilityManifestSchema.parse(manifest);
|
|
2088
|
+
if (!valid.operations.includes(operation))
|
|
2089
|
+
throw new Error(`Engine does not support operation ${operation}.`);
|
|
2090
|
+
}
|
|
2091
|
+
var ENGINE_COMMAND_COVERAGE = [
|
|
2092
|
+
{ id: "assessment", classification: "workflow", cliCommands: ["scan", "review", "audit", "secure"], workflowSteps: ["audit"], templateIds: ["repository-review", "dependency-review", "api-security", "web-configuration", "scoped-penetration-test", "package-behavior", "contract-review", "native-code-review"], chatTools: [], limits: "Target-specific assessment options and admission still apply.", source: "packages/core/src/assessment.ts" },
|
|
2093
|
+
{ id: "fix", classification: "workflow", cliCommands: ["fix"], workflowSteps: ["fix"], templateIds: ["fix-candidate"], chatTools: ["generate_fix"], limits: "Chat generation is distinct from workflow candidate validation; applying requires exact live candidate proof and host/request approval.", source: "packages/cli/src/finding-workflow-executors.ts" },
|
|
2094
|
+
{ id: "verification", classification: "workflow", cliCommands: ["verify", "replay"], workflowSteps: ["verify"], templateIds: ["finding-verification"], chatTools: ["verify_finding"], limits: "Managed verification uses supported replay runners; CLI kernel verification is not a portable workflow operation.", source: "packages/cli/src/finding-workflow-executors.ts" },
|
|
2095
|
+
{ id: "research", classification: "workflow", cliCommands: ["research pipeline", "research mobile", "research linux-matrix"], workflowSteps: ["research"], templateIds: ["security-research"], chatTools: [], limits: "Managed modes pipeline/mobile/linux-matrix require authorized local workspace; pipeline is source-only. linux-matrix imports external evidence and does not execute boots.", source: "packages/cli/src/workflow-research-executors.ts" },
|
|
2096
|
+
{ id: "deep-review", classification: "workflow", cliCommands: ["deep-review"], workflowSteps: ["deep-review"], templateIds: ["deep-source-review"], chatTools: [], limits: "Authorized local source workspace and provider prerequisites apply.", source: "packages/cli/src/workflow-research-executors.ts" },
|
|
2097
|
+
{ id: "offensive-tools", classification: "chat-tool", cliCommands: ["hunt", "assumption-hunt", "protocol-check", "specdrift", "memsafety", "npm-discovery", "kernel", "cve"], workflowSteps: [], templateIds: [], chatTools: ["variant_hunt", "assumption_hunt", "protocol_conformance", "spec_drift", "safety_eval", "memsafety_fuzz", "npm_dynamic_discovery", "weaponize_kernel", "cve_adapt"], limits: "Tool availability is scope/feature/prerequisite gated. CLI engines and tools have different contracts; no portable specialist workflow executor is registered by this manifest.", source: "packages/core/src/agent/tools/offensive-engines.ts" },
|
|
2098
|
+
{ id: "kernel-research", classification: "cli-specialist", cliCommands: ["research linux"], workflowSteps: [], templateIds: [], chatTools: [], limits: "Managed kernel research rejects execution until the VM/build runner supports workflow cancellation and deadlines.", source: "packages/cli/src/workflow-research-executors.ts" },
|
|
2099
|
+
{ id: "specialist-cli", classification: "cli-specialist", cliCommands: ["binary", "exploit", "recency-hunt", "lens-synth", "xnu-fuzz", "disclose", "eval", "bench", "ingest"], workflowSteps: [], templateIds: [], chatTools: [], limits: "These CLI contracts are not exposed as portable workflow steps here; model-driven source review is not equivalent to their native proof engines.", source: "packages/cli/src/index.ts" },
|
|
2100
|
+
{ id: "maintenance", classification: "cli-maintenance", cliCommands: ["doctor", "db", "upgrade", "config", "plugin", "theme", "login", "logout"], workflowSteps: [], templateIds: [], chatTools: [], limits: "Host maintenance and credential changes are not workflow execution or model-tool grants.", source: "packages/cli/src/index.ts" }
|
|
2101
|
+
];
|
|
2102
|
+
|
|
2103
|
+
// packages/shared/dist/finding-priority.js
|
|
2104
|
+
var ImpactAssessmentSchema = external_exports.object({
|
|
2105
|
+
reachability_tier: external_exports.enum(["remote-unauth", "remote-auth", "proximity-rf", "local-unpriv", "local-priv", "needs-hardware", "needs-host-migration", "unknown"]),
|
|
2106
|
+
blast_radius: external_exports.string().trim().min(1).max(4096),
|
|
2107
|
+
weaponizability: external_exports.enum(["dos-crash", "info-leak", "integrity-tampering", "lpe-to-root", "rce", "unknown"]),
|
|
2108
|
+
business_impact: external_exports.enum(["headline", "notable", "modest", "noise", "unassessed"]),
|
|
2109
|
+
rationale: external_exports.string().trim().min(1).max(8192),
|
|
2110
|
+
assessment_source: external_exports.enum(["model", "provided", "heuristic"]).optional()
|
|
2111
|
+
}).strip();
|
|
2112
|
+
var UNKNOWN_PRIORITY = {
|
|
2113
|
+
rank: 1.5,
|
|
2114
|
+
label: "Not assessed",
|
|
2115
|
+
assessed: false,
|
|
2116
|
+
rationale: "Business impact has not been assessed. Establish the affected services, customers, data, and operational consequences."
|
|
2117
|
+
};
|
|
2118
|
+
var PRIORITIES = {
|
|
2119
|
+
headline: { rank: 3, label: "Urgent" },
|
|
2120
|
+
notable: { rank: 2, label: "High" },
|
|
2121
|
+
modest: { rank: 1, label: "Moderate" },
|
|
2122
|
+
noise: { rank: 0, label: "Low" }
|
|
2123
|
+
};
|
|
2124
|
+
function isHeuristicImpactAssessment(assessment) {
|
|
2125
|
+
return assessment.assessment_source === "heuristic" || /^deterministic fallback derived from severity\s*\+\s*category/i.test(assessment.rationale) || /^heuristic baseline for a /i.test(assessment.blast_radius);
|
|
2126
|
+
}
|
|
2127
|
+
function getFindingPriority(finding) {
|
|
2128
|
+
const parsed = ImpactAssessmentSchema.safeParse(finding.impactAssessment);
|
|
2129
|
+
if (!parsed.success || parsed.data.business_impact === "unassessed" || isHeuristicImpactAssessment(parsed.data)) {
|
|
2130
|
+
return { ...UNKNOWN_PRIORITY };
|
|
2131
|
+
}
|
|
2132
|
+
const priority = PRIORITIES[parsed.data.business_impact];
|
|
2133
|
+
return { ...priority, assessed: true, rationale: parsed.data.rationale };
|
|
2134
|
+
}
|
|
2135
|
+
var TECHNICAL_SEVERITY = { critical: 4, high: 3, medium: 2, low: 1, info: 0 };
|
|
2136
|
+
function technicalCvss(value) {
|
|
2137
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0 && value <= 10 ? value : -1;
|
|
2138
|
+
}
|
|
2139
|
+
function compareFindingsByBusinessPriority(a, b) {
|
|
2140
|
+
return getFindingPriority(b).rank - getFindingPriority(a).rank || (TECHNICAL_SEVERITY[b.severity?.toLowerCase() ?? ""] ?? -1) - (TECHNICAL_SEVERITY[a.severity?.toLowerCase() ?? ""] ?? -1) || technicalCvss(b.cvssScore) - technicalCvss(a.cvssScore);
|
|
2141
|
+
}
|
|
2142
|
+
|
|
2143
|
+
// packages/shared/dist/access-milestone.js
|
|
2144
|
+
var record = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : void 0;
|
|
2145
|
+
var successfulObservation = (value) => {
|
|
2146
|
+
const item = record(value);
|
|
2147
|
+
return item && typeof item.status === "number" && Number.isInteger(item.status) && item.status >= 200 && item.status < 300 && item.truncated === false && item.field_present === true && (typeof item.json_pointer_value === "string" || item.json_pointer_value === null) ? item : void 0;
|
|
2148
|
+
};
|
|
2149
|
+
function accessMilestoneFromArtifact(eventType, value, scopeId, evidenceEventId) {
|
|
2150
|
+
const item = record(value);
|
|
2151
|
+
if (eventType !== "tool_artifact" || !item || item.tool !== "access_control_workflow" || item.workflow !== "access_control_workflow" || item.verdict !== "confirmed" || typeof item.owner_identity !== "string" || !item.owner_identity || typeof item.actor_identity !== "string" || !item.actor_identity || item.owner_identity === item.actor_identity || typeof item.expected_state !== "string" || item.expected_state.length > 500 || typeof item.observation_url !== "string" || item.observation_url.length > 8192 || !scopeId || scopeId.length > 512)
|
|
2152
|
+
return null;
|
|
2153
|
+
const before = successfulObservation(item.observation_before);
|
|
2154
|
+
const after = successfulObservation(item.observation_after);
|
|
2155
|
+
if (!before || !after || before.json_pointer_value === item.expected_state || after.json_pointer_value !== item.expected_state || !Array.isArray(item.steps) || item.steps.length === 0 || item.steps.length > 10)
|
|
2156
|
+
return null;
|
|
2157
|
+
if (item.steps.some((value2, index) => {
|
|
2158
|
+
const step = record(value2);
|
|
2159
|
+
return !step || step.step_index !== index || typeof step.url !== "string" || !["GET", "POST", "PUT", "DELETE", "PATCH"].includes(String(step.method)) || typeof step.status !== "number" || !Number.isInteger(step.status) || step.status < 100 || step.status > 599 || step.error !== void 0;
|
|
2160
|
+
}))
|
|
2161
|
+
return null;
|
|
2162
|
+
let asset;
|
|
2163
|
+
try {
|
|
2164
|
+
const url = new URL(item.observation_url);
|
|
2165
|
+
if (!["https:", "http:"].includes(url.protocol) || url.username || url.password)
|
|
2166
|
+
return null;
|
|
2167
|
+
asset = url.origin;
|
|
2168
|
+
} catch {
|
|
2169
|
+
return null;
|
|
2170
|
+
}
|
|
2171
|
+
return {
|
|
2172
|
+
key: JSON.stringify([scopeId, "cross-identity-write", item.observation_url]),
|
|
2173
|
+
asset,
|
|
2174
|
+
status: "conditional",
|
|
2175
|
+
accessClass: "cross-identity-write",
|
|
2176
|
+
headline: "State change confirmed across request contexts",
|
|
2177
|
+
summary: "The observing context saw the declared marker after requests using different configured authentication headers. Authorization impact requires validation. Cleanup was not verified.",
|
|
2178
|
+
cleanup: "unknown",
|
|
2179
|
+
...evidenceEventId && evidenceEventId.length <= 512 ? { evidenceEventId } : {}
|
|
2180
|
+
};
|
|
2181
|
+
}
|
|
2182
|
+
function appendAccessMilestone(current, next, limit = 80) {
|
|
2183
|
+
if (current.some((item) => item.milestone.key === next.milestone.key))
|
|
2184
|
+
return [...current];
|
|
2185
|
+
return [...current, next].slice(-Math.max(1, Math.min(80, limit)));
|
|
2186
|
+
}
|
|
2187
|
+
|
|
1961
2188
|
export {
|
|
1962
2189
|
validateScanPlan,
|
|
1963
2190
|
defaultRoleFor,
|
|
@@ -1992,6 +2219,8 @@ export {
|
|
|
1992
2219
|
VerificationAssertionSchema,
|
|
1993
2220
|
EvidenceArtifactSchema,
|
|
1994
2221
|
VerificationResultSchema,
|
|
2222
|
+
pocStepActionSchema,
|
|
2223
|
+
pocStepExpectSchema,
|
|
1995
2224
|
pocStepSchema,
|
|
1996
2225
|
pocStepArraySchema,
|
|
1997
2226
|
findingSchema,
|
|
@@ -2076,5 +2305,19 @@ export {
|
|
|
2076
2305
|
BackendEventCursorSchema,
|
|
2077
2306
|
BackendApprovalRefSchema,
|
|
2078
2307
|
assertBackendReference,
|
|
2079
|
-
backendCapabilitiesForApiPath
|
|
2308
|
+
backendCapabilitiesForApiPath,
|
|
2309
|
+
ScanResumeRequestSchema,
|
|
2310
|
+
resolvePersistedScanResume,
|
|
2311
|
+
ENGINE_OPERATION_DEFINITIONS,
|
|
2312
|
+
ENGINE_REPORT_FORMATS,
|
|
2313
|
+
EngineCapabilityManifestSchema,
|
|
2314
|
+
createEngineCapabilityManifest,
|
|
2315
|
+
requireEngineOperation,
|
|
2316
|
+
ENGINE_COMMAND_COVERAGE,
|
|
2317
|
+
ImpactAssessmentSchema,
|
|
2318
|
+
isHeuristicImpactAssessment,
|
|
2319
|
+
getFindingPriority,
|
|
2320
|
+
compareFindingsByBusinessPriority,
|
|
2321
|
+
accessMilestoneFromArtifact,
|
|
2322
|
+
appendAccessMilestone
|
|
2080
2323
|
};
|