0sec-cli 0.23.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/0.js +66 -67
  2. package/README.md +37 -11
  3. package/chunks/{adapt-loop-V3JFWOKC.js → adapt-loop-TEJPXWFG.js} +4 -4
  4. package/chunks/{artifact-scraper-NYKUF2M5.js → artifact-scraper-AJZ3LOQY.js} +2 -2
  5. package/chunks/{assumption-mining-ZX3YVWEH.js → assumption-mining-EATDC4BB.js} +18 -18
  6. package/chunks/{backend-connections-H52NIVH2.js → backend-connections-QE4NASAK.js} +3 -3
  7. package/chunks/chunk-3XLEDCFX.js +566 -0
  8. package/chunks/{chunk-I3OCJ2OA.js → chunk-3XLFB46W.js} +5 -3
  9. package/chunks/{chunk-TPUJZ74W.js → chunk-4TUR47H5.js} +2 -2
  10. package/chunks/{chunk-3ZNI7F42.js → chunk-4YRXIVPZ.js} +3 -3
  11. package/chunks/{chunk-A5QO7N3S.js → chunk-52AWIBCT.js} +1 -1
  12. package/chunks/{chunk-TO35Y326.js → chunk-554D4AYM.js} +5 -2
  13. package/chunks/{chunk-KHPOSLCF.js → chunk-5FHFG5P2.js} +174 -710
  14. package/chunks/{chunk-LT7BFGXA.js → chunk-5POT5OYF.js} +10 -10
  15. package/chunks/chunk-62PGWN7Y.js +700 -0
  16. package/chunks/{chunk-EH2WTNY7.js → chunk-A3EKBUEM.js} +1424 -859
  17. package/chunks/{chunk-YYS2H33A.js → chunk-A6AZZ6XX.js} +2 -2
  18. package/chunks/{chunk-A2ADXAC5.js → chunk-AV5BF4V7.js} +1288 -2313
  19. package/chunks/{chunk-NI6QYQSK.js → chunk-BIJPMYFA.js} +6 -6
  20. package/chunks/{chunk-JEYIWMGL.js → chunk-CIMN2AO6.js} +1 -1
  21. package/chunks/{chunk-P7KDN5PK.js → chunk-CSPF47S3.js} +14 -14
  22. package/chunks/{chunk-F344NYUN.js → chunk-DNV3ZMPX.js} +1 -1
  23. package/chunks/{chunk-YAEJAZYW.js → chunk-E42XEJTK.js} +2 -2
  24. package/chunks/{chunk-VDOWARMJ.js → chunk-ESM447R6.js} +15 -1
  25. package/chunks/{chunk-UZUELPFW.js → chunk-EXTN4SQV.js} +1 -1
  26. package/chunks/{chunk-BF5FIK7H.js → chunk-EYBMTELO.js} +108 -24
  27. package/chunks/chunk-FEOPHBMY.js +56 -0
  28. package/chunks/{chunk-XORZUR2H.js → chunk-FKGFHLLS.js} +1 -1
  29. package/chunks/chunk-G2EJ3R5I.js +5198 -0
  30. package/chunks/chunk-GHEBZKUS.js +5417 -0
  31. package/chunks/chunk-GNR3APR6.js +295 -0
  32. package/chunks/{chunk-EJH2TNVH.js → chunk-H76JYUPE.js} +3 -3
  33. package/chunks/{chunk-WIYNYNL2.js → chunk-HRBOZBMC.js} +1 -1
  34. package/chunks/{chunk-62ENS6XO.js → chunk-IIBNQTOK.js} +3 -2
  35. package/chunks/{chunk-UELXHK2Y.js → chunk-IK27KMVV.js} +16 -5
  36. package/chunks/{chunk-O6Z4XPOM.js → chunk-J6G73WYF.js} +1 -1
  37. package/chunks/chunk-JSTLXPJS.js +284 -0
  38. package/chunks/{chunk-K55B4OH4.js → chunk-O3ADFN2A.js} +1 -1
  39. package/chunks/chunk-O7Q2G2KW.js +117 -0
  40. package/chunks/{chunk-HFDSIHTE.js → chunk-QEA2VHBD.js} +202 -30
  41. package/chunks/{chunk-ITES7BCY.js → chunk-RBOMXUYL.js} +3 -111
  42. package/chunks/{chunk-T7ZEVY5G.js → chunk-RCHAFSWS.js} +815 -41
  43. package/chunks/{chunk-W5VNCB57.js → chunk-RD4FKFWR.js} +1 -1
  44. package/chunks/{chunk-LVGZGG63.js → chunk-RPTO5FY2.js} +1 -1
  45. package/chunks/{chunk-LTEE2JWK.js → chunk-RZR2XXAK.js} +251 -8
  46. package/chunks/chunk-SGILXLR3.js +289 -0
  47. package/chunks/{chunk-QMICC5O2.js → chunk-TOAAYJVN.js} +2 -2
  48. package/chunks/{chunk-PIR6BNE7.js → chunk-TOFIGQ63.js} +2 -2
  49. package/chunks/{chunk-V2BWXPZP.js → chunk-TTDFBFNZ.js} +6 -6
  50. package/chunks/{chunk-WYNZFNMF.js → chunk-TZRHWP7R.js} +289 -10
  51. package/chunks/chunk-UHUW45S3.js +164 -0
  52. package/chunks/{chunk-NX4H6L4M.js → chunk-V4BD7GSP.js} +2 -2
  53. package/chunks/{chunk-4HGGNBKK.js → chunk-V5I5GAQH.js} +2593 -1563
  54. package/chunks/{chunk-MQJVU2GZ.js → chunk-W6IYTSZH.js} +79 -9
  55. package/chunks/{chunk-OLSKXTQZ.js → chunk-WUPN3D37.js} +22 -248
  56. package/chunks/{chunk-AAA4PRWK.js → chunk-Y7KV7WV6.js} +2 -2
  57. package/chunks/{chunk-Y4HJRUFE.js → chunk-YERUDEXT.js} +876 -817
  58. package/chunks/{chunk-65H3MRBF.js → chunk-YJU7QACE.js} +1 -1
  59. package/chunks/{chunk-3E54JYS4.js → chunk-YORL5S5V.js} +1 -1
  60. package/chunks/{chunk-CP6HANBE.js → chunk-YYOQADBB.js} +4 -3
  61. package/chunks/{remote-workflow-runtime-RGQ5ECMN.js → chunk-ZPFBQ3SD.js} +39 -8
  62. package/chunks/{codex-models-Y457ND6Q.js → codex-models-FQPCWRPC.js} +7 -7
  63. package/chunks/{commands-PBDAOZKA.js → commands-I5L3VD2A.js} +1603 -6945
  64. package/chunks/dashboard-B2AEGCFM.js +76 -0
  65. package/chunks/{db-TPSI552V.js → db-P5EIKMLP.js} +3 -3
  66. package/chunks/{deep-review-DKED6EN5.js → deep-review-I7RD5QSS.js} +34 -33
  67. package/chunks/{disclose-LDNKAVRH.js → disclose-PFBWESVJ.js} +4 -2
  68. package/chunks/{dist-7Q5A6TQM.js → dist-3SWWY5FZ.js} +18 -2
  69. package/chunks/{dist-4LGRIBOC.js → dist-AJU25UXA.js} +99 -64
  70. package/chunks/{dist-RLPNLRZD.js → dist-VK2M4HNW.js} +33 -1
  71. package/chunks/eval-runner-XVRX3R2Y.js +31 -0
  72. package/chunks/{exploit-agent-RMFYNG7H.js → exploit-agent-A4RTIJ4J.js} +1 -1
  73. package/chunks/{exploit-autoclimb-2A2PQI4E.js → exploit-autoclimb-ABMMBC3M.js} +1 -1
  74. package/chunks/{exploit-climb-DEJ232QN.js → exploit-climb-BQ2SVU63.js} +2 -2
  75. package/chunks/{fix-JGBW7XUN.js → fix-4YCLHFDT.js} +7 -7
  76. package/chunks/{harness-CBOLMUHB.js → harness-DHWULEIZ.js} +3 -3
  77. package/chunks/{hunt-scan-MIRMABY4.js → hunt-scan-DXV5H6YN.js} +16 -16
  78. package/chunks/{kernel-primitive-NAPDMJC7.js → kernel-primitive-SF4NALVR.js} +2 -2
  79. package/chunks/{kernel-vm-runner-PR5OSDQ2.js → kernel-vm-runner-WEBEZEIC.js} +2 -2
  80. package/chunks/local-engine-XUG7XRKM.js +21 -0
  81. package/chunks/managed-operation-SQFMBWHG.js +60 -0
  82. package/chunks/{memsafety-scan-RPS446CD.js → memsafety-scan-L2Z7E7TE.js} +2 -2
  83. package/chunks/{native-loop-CGOJMNHV.js → native-loop-ZNAELJGB.js} +14 -13
  84. package/chunks/orchestrate-YHFJXGID.js +63 -0
  85. package/chunks/{prepare-YVNENPNL.js → prepare-SODWQN6O.js} +5 -5
  86. package/chunks/provider-model-discovery-QGUGL3XW.js +277 -0
  87. package/chunks/remote-workflow-runtime-XNNGI2PG.js +12 -0
  88. package/chunks/{run-VH4OIDKF.js → run-5T4Z3Q2D.js} +902 -322
  89. package/chunks/{runtime-4TAJFVF7.js → runtime-HFFRUOPL.js} +2 -2
  90. package/chunks/{runtime-HWL6HG7A.js → runtime-MB4GEFBY.js} +7 -7
  91. package/chunks/{scan-stream-HJAZJONE.js → scan-stream-GXBJHCDF.js} +3 -2
  92. package/chunks/{scope-Q5PIX2IS.js → scope-M7L3CD6X.js} +2 -2
  93. package/chunks/service-plugins-BGS6QKSZ.js +64 -0
  94. package/chunks/{session-store-2FEIZGSV.js → session-store-K7I4GLNH.js} +2 -2
  95. package/chunks/{variant-candidates-TX5V6XOT.js → variant-candidates-2KSP5EHH.js} +7 -7
  96. package/chunks/{web-recon-prepass-6HOUGF7Q.js → web-recon-prepass-RAXXTEWH.js} +5 -5
  97. package/chunks/workflow-runtime-V26HIJO3.js +178 -0
  98. package/dashboard/assets/{abnfDiagram-VCTEODGH-BuvumFYR.js → abnfDiagram-VCTEODGH-CGCueOp5.js} +1 -1
  99. package/dashboard/assets/{arc-DZzWDuCG.js → arc-BjZaQcCc.js} +1 -1
  100. package/dashboard/assets/architecture-7GRP2DOG-hcbO-9zX.js +1 -0
  101. package/dashboard/assets/{architectureDiagram-5GKGNRK7-Bw5el_EL.js → architectureDiagram-5GKGNRK7-DReOXTSq.js} +1 -1
  102. package/dashboard/assets/{blockDiagram-I7D4REHJ-BjVLEApp.js → blockDiagram-I7D4REHJ-C-byT12_.js} +1 -1
  103. package/dashboard/assets/{c4Diagram-7LVT6UL2-B9nNzx2J.js → c4Diagram-7LVT6UL2-DoYjz-Uv.js} +1 -1
  104. package/dashboard/assets/channel-CUURBnpZ.js +1 -0
  105. package/dashboard/assets/{chunk-4HAMMTFA-y72Q95nW.js → chunk-4HAMMTFA-NBNp2zdt.js} +1 -1
  106. package/dashboard/assets/{chunk-75Z2AOVW-BOhrOGMO.js → chunk-75Z2AOVW-BHmkuP0B.js} +1 -1
  107. package/dashboard/assets/{chunk-DU6HZSFF-B0EhAaNb.js → chunk-DU6HZSFF-DgfLNaL2.js} +2 -2
  108. package/dashboard/assets/{chunk-F27PBJKO-BR-hiDvM.js → chunk-F27PBJKO-3wwNFUgZ.js} +1 -1
  109. package/dashboard/assets/{chunk-GMAD6QVW-H15vJYXg.js → chunk-GMAD6QVW-Btg7huZW.js} +1 -1
  110. package/dashboard/assets/{chunk-GVQU2GXP-BRndps0o.js → chunk-GVQU2GXP-ihCURK5O.js} +1 -1
  111. package/dashboard/assets/{chunk-IMKFNOWR-CIzC_OWx.js → chunk-IMKFNOWR-FsXj7slg.js} +1 -1
  112. package/dashboard/assets/{chunk-L3NEJ4N5-NR4P1Vko.js → chunk-L3NEJ4N5-DorFIxJY.js} +1 -1
  113. package/dashboard/assets/{chunk-OSK3NFVY-DtjTDf8S.js → chunk-OSK3NFVY-DKun_KfC.js} +1 -1
  114. package/dashboard/assets/{chunk-P2QGCYS3-CYT11Qjx.js → chunk-P2QGCYS3-XGgiU1Bz.js} +1 -1
  115. package/dashboard/assets/{chunk-POPQ4Y6H-Duj2Ygwu.js → chunk-POPQ4Y6H-BTXEnGhJ.js} +1 -1
  116. package/dashboard/assets/{chunk-PWAF6VOD-z4p5Tf_y.js → chunk-PWAF6VOD-DYZcGkTL.js} +1 -1
  117. package/dashboard/assets/{chunk-SHT3W25Y-DYeLYLS3.js → chunk-SHT3W25Y-C4WQfwf8.js} +1 -1
  118. package/dashboard/assets/{chunk-SVP7TREG-BKowxCVI.js → chunk-SVP7TREG-C4nCh0-1.js} +1 -1
  119. package/dashboard/assets/{chunk-TICWLB2K-GDAwEFlH.js → chunk-TICWLB2K-DSB-IiGc.js} +1 -1
  120. package/dashboard/assets/{chunk-XXDRQBXY-DRD79Mjx.js → chunk-XXDRQBXY-CS6fjUcj.js} +1 -1
  121. package/dashboard/assets/classDiagram-ZZMXUADV-CD1Buc26.js +1 -0
  122. package/dashboard/assets/classDiagram-v2-VYDZK3BY-CD1Buc26.js +1 -0
  123. package/dashboard/assets/{common-vnzd7UOF.js → common-BMdQBwfR.js} +1 -1
  124. package/dashboard/assets/{cose-bilkent-JH36ORCC-GqCLsRyf.js → cose-bilkent-JH36ORCC-CUjQHTML.js} +1 -1
  125. package/dashboard/assets/{cynefin-OW5HDTMX-CJN9YwWN.js → cynefin-OW5HDTMX-BC7zCtFq.js} +1 -1
  126. package/dashboard/assets/{cynefinDiagram-5FMLGOSQ-DVJHCYQY.js → cynefinDiagram-5FMLGOSQ-CgDOOY67.js} +1 -1
  127. package/dashboard/assets/{dagre-GXQ25YYZ-BMCrrJJR.js → dagre-GXQ25YYZ-Dqc8FS9x.js} +1 -1
  128. package/dashboard/assets/{diagram-S7CK7UJ4-CLYDdOEm.js → diagram-S7CK7UJ4-CrKqRXZb.js} +1 -1
  129. package/dashboard/assets/{diagram-UQ7AKVKN-CnPuAZK7.js → diagram-UQ7AKVKN-Cu6Es0-v.js} +1 -1
  130. package/dashboard/assets/{diagram-VSXAHHWV-Cr2I2DnG.js → diagram-VSXAHHWV-eK4d8FwS.js} +1 -1
  131. package/dashboard/assets/{diagram-VX7I27RA-_mGW1wpp.js → diagram-VX7I27RA-bFxeFKOc.js} +1 -1
  132. package/dashboard/assets/{diagram-Z3DM3KII-igybB0l9.js → diagram-Z3DM3KII-C0ClmnhC.js} +1 -1
  133. package/dashboard/assets/{dist-Bb7_-x5y.js → dist-BZh8Kb3O.js} +1 -1
  134. package/dashboard/assets/{ebnfDiagram-PWID7BFC-CVCICf2R.js → ebnfDiagram-PWID7BFC-CUqxFPzf.js} +1 -1
  135. package/dashboard/assets/{erDiagram-RLTQ6QDP-CRjnfgxj.js → erDiagram-RLTQ6QDP-CcYM7pLi.js} +1 -1
  136. package/dashboard/assets/eventmodeling-NTZA5JFV-D8ZNnPkV.js +1 -0
  137. package/dashboard/assets/flowDiagram-HODETNUW-pDb1AYm8.js +1 -0
  138. package/dashboard/assets/{ganttDiagram-EL5Y4UJY-DppD7sD7.js → ganttDiagram-EL5Y4UJY-UmZfbMyD.js} +1 -1
  139. package/dashboard/assets/{gitGraph-4MIJSDKK-Tw0vNnQc.js → gitGraph-4MIJSDKK-mvNUo0ZA.js} +1 -1
  140. package/dashboard/assets/{gitGraphDiagram-WWUBYQGX-Cpf96-z3.js → gitGraphDiagram-WWUBYQGX-CvzeCxVy.js} +1 -1
  141. package/dashboard/assets/{info-A6RAGUB7-DLyt9arx.js → info-A6RAGUB7-DChKqZMi.js} +1 -1
  142. package/dashboard/assets/{infoDiagram-27XIBGKW-B6_piSNS.js → infoDiagram-27XIBGKW-DjkpNtVW.js} +1 -1
  143. package/dashboard/assets/{ishikawaDiagram-5VMMS53U-DvMO0B0X.js → ishikawaDiagram-5VMMS53U-8FhjJaWT.js} +1 -1
  144. package/dashboard/assets/{journeyDiagram-3NMN7TZE-f7ZK98b6.js → journeyDiagram-3NMN7TZE-DyNJ755f.js} +1 -1
  145. package/dashboard/assets/{kanban-definition-UXKFOSKX-Dso0nAxL.js → kanban-definition-UXKFOSKX-_jCmtaY1.js} +1 -1
  146. package/dashboard/assets/katex-BdBmVSus.js +257 -0
  147. package/dashboard/assets/{line-VcKaFG0G.js → line-Bf0nxyWf.js} +1 -1
  148. package/dashboard/assets/{linear-D7YnpiWh.js → linear-Bl6JKbf4.js} +1 -1
  149. package/dashboard/assets/{mermaid-parser.core-DriL2hrV.js → mermaid-parser.core-Cc6sgCzs.js} +3 -3
  150. package/dashboard/assets/{mermaid.core-DJWYDh_P.js → mermaid.core-B4yCwiN-.js} +4 -4
  151. package/dashboard/assets/{mindmap-definition-YA3MSWOX-DZsoIeac.js → mindmap-definition-YA3MSWOX-D5DjWyXj.js} +1 -1
  152. package/dashboard/assets/operations-B7JAWOi6.js +130 -0
  153. package/dashboard/assets/operations-QjKT0Hwi.css +1 -0
  154. package/dashboard/assets/{packet-AYTQ26CC-BQBIXKxk.js → packet-AYTQ26CC-bQXLDhQC.js} +1 -1
  155. package/dashboard/assets/{pegDiagram-XKGWAZYB-B0-lslgW.js → pegDiagram-XKGWAZYB-Bf6a1vaf.js} +1 -1
  156. package/dashboard/assets/{pie-WAS4IAKB-DoY6dwQs.js → pie-WAS4IAKB-DfzoABIi.js} +1 -1
  157. package/dashboard/assets/{pieDiagram-E7YTZNPT-ElmdRjp5.js → pieDiagram-E7YTZNPT-D0L1qbch.js} +1 -1
  158. package/dashboard/assets/{quadrantDiagram-AXDQQJYC-Ci1h98Q2.js → quadrantDiagram-AXDQQJYC-CbFyy2Pe.js} +1 -1
  159. package/dashboard/assets/{radar-RG4KPBEZ-DHod2WgB.js → radar-RG4KPBEZ-CZ2pyeUT.js} +1 -1
  160. package/dashboard/assets/{railroad-74A4TZTK-90JxB4xV.js → railroad-74A4TZTK-CP4Jazfd.js} +1 -1
  161. package/dashboard/assets/railroad-abnf-HS5TGJTU-3MvEiHwD.js +1 -0
  162. package/dashboard/assets/railroad-ebnf-LZEXJU2U-BWto6cXE.js +1 -0
  163. package/dashboard/assets/railroad-peg-WCYAUIDC-DasEjbyf.js +1 -0
  164. package/dashboard/assets/{railroadDiagram-O6MQD6OU-k3190A6L.js → railroadDiagram-O6MQD6OU-t7Gp9g2R.js} +1 -1
  165. package/dashboard/assets/{requirementDiagram-BXWQKSXE-C3-eR7I5.js → requirementDiagram-BXWQKSXE-LYmqeBXi.js} +1 -1
  166. package/dashboard/assets/{sankeyDiagram-P5KCCOFB-Bc86pi8w.js → sankeyDiagram-P5KCCOFB-DnpfA_94.js} +1 -1
  167. package/dashboard/assets/{sequenceDiagram-WJ2MYXX4-Bv_MvEmz.js → sequenceDiagram-WJ2MYXX4-C8s3pTUE.js} +1 -1
  168. package/dashboard/assets/{src-D7Dqq5yP.js → src-CaNUT1AQ.js} +1 -1
  169. package/dashboard/assets/{stateDiagram-D77RDMKH-Bq_GVmeW.js → stateDiagram-D77RDMKH-BMzm6fK1.js} +1 -1
  170. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-B3REMjpY.js +1 -0
  171. package/dashboard/assets/{swimlanes-42K2YHIH-q0iK-e0P.js → swimlanes-42K2YHIH-uJE05Tt_.js} +1 -1
  172. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-CIaVMZEy.js +8 -0
  173. package/dashboard/assets/{timeline-definition-24CTP7MA-CNfF07hM.js → timeline-definition-24CTP7MA-BfLJMVeG.js} +1 -1
  174. package/dashboard/assets/{treeView-Q6P3EWNA-m629ePnS.js → treeView-Q6P3EWNA-ZOE2enu2.js} +1 -1
  175. package/dashboard/assets/{treemap-WGGIJYW6-D9Cb2ETv.js → treemap-WGGIJYW6-yIZoPBF5.js} +1 -1
  176. package/dashboard/assets/{vennDiagram-4TSXK5OY-v4dKF-FE.js → vennDiagram-4TSXK5OY-BYJRHEaL.js} +1 -1
  177. package/dashboard/assets/{wardley-WFR3VGLG-DkwH_nRe.js → wardley-WFR3VGLG-D5V-jLbB.js} +1 -1
  178. package/dashboard/assets/{wardleyDiagram-VM6X3IG4-3ImohVu4.js → wardleyDiagram-VM6X3IG4-DgPN4nSe.js} +1 -1
  179. package/dashboard/assets/{xychartDiagram-S5SC5T6Z-QJu3dm7K.js → xychartDiagram-S5SC5T6Z-BhkAMAOT.js} +1 -1
  180. package/dashboard/index.html +3 -3
  181. package/package.json +3 -2
  182. package/worker-assets/demo-target/README.md +15 -0
  183. package/worker-assets/demo-target/include/decoder.h +27 -0
  184. package/worker-assets/demo-target/patched-decoder.c +40 -0
  185. package/worker-assets/demo-target/src/decoder.c +50 -0
  186. package/worker-assets/demo-target/witness-65537x1.bin +0 -0
  187. package/chunks/chunk-3P3XXSIJ.js +0 -463
  188. package/chunks/chunk-EWXOG6D3.js +0 -1695
  189. package/chunks/chunk-FXR3BT2G.js +0 -226
  190. package/chunks/chunk-R35KKJA4.js +0 -90
  191. package/chunks/eval-runner-RZKDOQ2G.js +0 -30
  192. package/chunks/managed-operation-YNQQEA5V.js +0 -59
  193. package/chunks/orchestrate-5NK34H3W.js +0 -62
  194. package/chunks/service-plugins-QYFITODK.js +0 -63
  195. package/chunks/workflow-runtime-ZEEBJFQG.js +0 -64
  196. package/dashboard/assets/architecture-7GRP2DOG-DK9bv1Md.js +0 -1
  197. package/dashboard/assets/channel-Ck17eKdX.js +0 -1
  198. package/dashboard/assets/classDiagram-ZZMXUADV-BaeZA6LE.js +0 -1
  199. package/dashboard/assets/classDiagram-v2-VYDZK3BY-BaeZA6LE.js +0 -1
  200. package/dashboard/assets/eventmodeling-NTZA5JFV-po5oDydv.js +0 -1
  201. package/dashboard/assets/flowDiagram-HODETNUW-TSV9s7q4.js +0 -1
  202. package/dashboard/assets/katex-CXMH3UgJ.js +0 -257
  203. package/dashboard/assets/operations-BIaUSnYv.js +0 -121
  204. package/dashboard/assets/operations-BeCdkT4S.css +0 -1
  205. package/dashboard/assets/railroad-abnf-HS5TGJTU-BkXGl114.js +0 -1
  206. package/dashboard/assets/railroad-ebnf-LZEXJU2U-QVAERn2C.js +0 -1
  207. package/dashboard/assets/railroad-peg-WCYAUIDC-B1-PM01z.js +0 -1
  208. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-z1XRaftz.js +0 -1
  209. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-C9L6XBQj.js +0 -8
  210. package/dashboard/assets/zero-connect-BGDY0PMZ.webp +0 -0
  211. package/dashboard/assets/zero-curious-DovTLOs8.webp +0 -0
  212. package/dashboard/assets/zero-peek-Dzm3MT3X.png +0 -0
  213. package/dashboard/assets/zero-planning-CBeHDrG_.webp +0 -0
@@ -0,0 +1,566 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
+ import {
5
+ source_default
6
+ } from "./chunk-HLFS6WV2.js";
7
+ import {
8
+ formatHtml,
9
+ formatMarkdown,
10
+ formatSarif
11
+ } from "./chunk-5FHFG5P2.js";
12
+ import {
13
+ compareFindingsByBusinessPriority,
14
+ createAuditReportDocument,
15
+ createReviewReportDocument,
16
+ createScanReportDocument,
17
+ getFindingPriority
18
+ } from "./chunk-RZR2XXAK.js";
19
+
20
+ // packages/cli/src/utils.ts
21
+ import { gzipSync } from "zlib";
22
+ async function getRuntimeAvailability() {
23
+ const { detectAvailableRuntimes, LlmApiRuntime } = await import("./dist-AJU25UXA.js");
24
+ const apiRuntimeDiagnostics = new LlmApiRuntime({ type: "api", timeout: 5e3 }).getConfigurationDiagnostics();
25
+ const hasApiKey = apiRuntimeDiagnostics.valid;
26
+ const availableRuntimes = [...await detectAvailableRuntimes()];
27
+ return {
28
+ hasApiKey,
29
+ availableRuntimes,
30
+ apiRuntime: {
31
+ configured: apiRuntimeDiagnostics.reason !== "missing_key",
32
+ valid: apiRuntimeDiagnostics.valid,
33
+ providerLabel: apiRuntimeDiagnostics.providerLabel,
34
+ error: apiRuntimeDiagnostics.fatalError
35
+ }
36
+ };
37
+ }
38
+ async function checkRuntimeAvailability(runtime) {
39
+ const availability = await getRuntimeAvailability();
40
+ const { hasApiKey, availableRuntimes, apiRuntime } = availability;
41
+ if (hasApiKey) return;
42
+ console.log("");
43
+ if ((runtime === "api" || runtime === "auto") && apiRuntime.configured && apiRuntime.error) {
44
+ console.log(source_default.red(` ${apiRuntime.providerLabel} config error: ${apiRuntime.error.split("\n")[0]}`));
45
+ }
46
+ if (runtime === "api") {
47
+ console.log(source_default.yellow(
48
+ apiRuntime.configured ? " Warning: `--runtime api` needs a valid provider configuration. AI analysis will fail until this is fixed." : " Warning: `--runtime api` needs provider credentials. AI analysis may be skipped."
49
+ ));
50
+ } else if (availableRuntimes.length > 0) {
51
+ console.log(source_default.cyan(` Using local runtime(s): ${availableRuntimes.join(", ")}`));
52
+ } else {
53
+ console.log(source_default.yellow(" Warning: No API key or local agent runtime detected. AI analysis will be skipped."));
54
+ }
55
+ console.log(source_default.gray(" Provider credentials: ZERO_CHATGPT_ACCESS_TOKEN | ZERO_CHATGPT_OAUTH_REFRESH_TOKEN, OPENROUTER_API_KEY, ANTHROPIC_API_KEY, AZURE_OPENAI_API_KEY, OPENAI_API_KEY"));
56
+ console.log("");
57
+ }
58
+ function buildShareUrl(report) {
59
+ const json = JSON.stringify(report);
60
+ const compressed = gzipSync(Buffer.from(json, "utf-8"));
61
+ const b64 = compressed.toString("base64url");
62
+ return `https://0.security/r#${b64}`;
63
+ }
64
+
65
+ // packages/cli/src/formatters/terminal.ts
66
+ var SEVERITY_COUNT_COLOR = {
67
+ critical: source_default.red.bold,
68
+ high: source_default.redBright.bold,
69
+ medium: source_default.yellow.bold,
70
+ low: source_default.blue,
71
+ info: source_default.gray
72
+ };
73
+ function formatTerminal(report) {
74
+ const W = 60;
75
+ const lines = [];
76
+ lines.push("");
77
+ if (report.warnings.length > 0) {
78
+ lines.push(` ${source_default.yellow.bold("WARNINGS")}`);
79
+ lines.push("");
80
+ for (const warning of report.warnings) {
81
+ lines.push(
82
+ ` ${source_default.yellow.bold("!")} ${source_default.yellow(`[${warning.stage}] ${warning.message}`)}`
83
+ );
84
+ }
85
+ lines.push("");
86
+ }
87
+ if (report.findings.length === 0) {
88
+ lines.push("");
89
+ if (report.warnings.length > 0 || report.executionSuccessful === false) {
90
+ lines.push(
91
+ ` ${source_default.yellow.bold("!")} ${source_default.yellow("No vulnerabilities confirmed. Scan finished with warnings.")}`
92
+ );
93
+ } else if (report.reviewChecks?.some((check) => check.status !== "pass")) {
94
+ lines.push(` ${source_default.yellow.bold("!")} ${source_default.yellow("No security vulnerabilities found. Advisory review checks need attention.")}`);
95
+ } else {
96
+ lines.push(` ${source_default.green.bold("\u2713")} ${source_default.green("No vulnerabilities found.")}`);
97
+ }
98
+ } else {
99
+ lines.push(` ${source_default.bold.white("FINDINGS")}`);
100
+ lines.push("");
101
+ const sorted = [...report.findings].sort(compareFindingsByBusinessPriority);
102
+ for (const finding of sorted) {
103
+ lines.push(formatFinding(finding));
104
+ }
105
+ }
106
+ if (report.reviewChecks?.length) {
107
+ lines.push("", ` ${source_default.bold.white("REVIEW CHECKS (advisory)")}`, "");
108
+ for (const check of report.reviewChecks) {
109
+ const color = check.status === "pass" ? source_default.green : source_default.yellow;
110
+ lines.push(` ${color(check.status.toUpperCase())} ${check.name} (${check.id})`);
111
+ lines.push(` Reason: ${check.reason}`);
112
+ if (check.fix) lines.push(` Suggested fix: ${check.fix}`);
113
+ lines.push("");
114
+ }
115
+ }
116
+ lines.push("");
117
+ lines.push(` ${source_default.gray("\u2500".repeat(50))}`);
118
+ lines.push("");
119
+ const { summary } = report;
120
+ const sev = [
121
+ summary.critical > 0 ? source_default.red.bold(`${summary.critical} critical`) : source_default.gray(`${summary.critical} critical`),
122
+ summary.high > 0 ? source_default.hex("#f97316").bold(`${summary.high} high`) : source_default.gray(`${summary.high} high`),
123
+ summary.medium > 0 ? source_default.yellow.bold(`${summary.medium} medium`) : source_default.gray(`${summary.medium} medium`),
124
+ source_default.gray(`${summary.low} low`),
125
+ source_default.gray(`${summary.info} info`)
126
+ ].join(source_default.gray(" "));
127
+ for (const label of ["Urgent", "High", "Moderate", "Low", "Not assessed"]) {
128
+ const count = report.findings.filter((finding) => getFindingPriority(finding).label === label).length;
129
+ if (count) lines.push(` Business priority ${label}: ${count}`);
130
+ }
131
+ lines.push(` ${source_default.gray("Technical severity:")} ${sev}`);
132
+ lines.push(` ${source_default.white.bold(String(summary.totalFindings))} findings ${source_default.gray("in")} ${source_default.white(formatDuration(report.durationMs))}`);
133
+ lines.push(` ${source_default.gray("Share:")} ${source_default.cyan(buildShareUrl(report))}`);
134
+ lines.push("");
135
+ return lines.join("\n");
136
+ }
137
+ function formatFinding(finding) {
138
+ const priority = getFindingPriority(finding);
139
+ const lines = [];
140
+ lines.push(` ${source_default.bold(`Business priority: ${priority.label}`)} ${source_default.bold.white(finding.title)}`);
141
+ lines.push(` ${source_default.gray("Business impact rationale:")} ${priority.rationale}`);
142
+ lines.push(` ${source_default.gray("Technical severity:")} ${finding.severity}${finding.cvssScore !== void 0 ? ` CVSS: ${finding.cvssScore}` : ""}${finding.cvssVector ? ` CVSS vector: ${finding.cvssVector}` : ""}`);
143
+ const meta = [];
144
+ meta.push(`${source_default.gray("Category:")} ${formatCategory(finding.category)}`);
145
+ if (finding.status === "confirmed") {
146
+ meta.push(source_default.green("\u2713 Confirmed"));
147
+ }
148
+ lines.push(` ${" ".repeat(11)}${meta.join(source_default.gray(" \xB7 "))}`);
149
+ if (finding.description) {
150
+ const desc = finding.description.length > 100 ? finding.description.slice(0, 97) + "..." : finding.description;
151
+ lines.push(` ${" ".repeat(11)}${source_default.gray(desc)}`);
152
+ }
153
+ if (finding.evidence.analysis) {
154
+ const ev = finding.evidence.analysis.length > 100 ? finding.evidence.analysis.slice(0, 97) + "..." : finding.evidence.analysis;
155
+ lines.push(` ${" ".repeat(11)}${source_default.gray.italic("\u21B3 " + ev)}`);
156
+ }
157
+ lines.push("");
158
+ return lines.join("\n");
159
+ }
160
+ function formatCategory(cat) {
161
+ return cat.split("-").map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
162
+ }
163
+ function formatDuration(ms) {
164
+ if (ms < 1e3) return `${ms}ms`;
165
+ return `${(ms / 1e3).toFixed(1)}s`;
166
+ }
167
+
168
+ // packages/cli/src/formatters/json.ts
169
+ function formatJson(report) {
170
+ return JSON.stringify(report, null, 2);
171
+ }
172
+
173
+ // packages/cli/src/formatters/replay.ts
174
+ function sleep(ms) {
175
+ return new Promise((resolve) => setTimeout(resolve, ms));
176
+ }
177
+ function stripAnsi(s) {
178
+ return s.replace(/\x1b\[[0-9;]*m/g, "");
179
+ }
180
+ var BOX_WIDTH = 55;
181
+ function boxTop(label) {
182
+ const inner = ` ${label} `;
183
+ const remaining = BOX_WIDTH - inner.length - 1;
184
+ return source_default.dim("\u250C\u2500 ") + source_default.bold.white(label) + source_default.dim(" " + "\u2500".repeat(Math.max(0, remaining)) + "\u2510");
185
+ }
186
+ function boxRow(content) {
187
+ const visible = stripAnsi(content);
188
+ const pad = Math.max(0, BOX_WIDTH - visible.length - 2);
189
+ return source_default.dim("\u2502") + " " + content + " ".repeat(pad) + source_default.dim("\u2502");
190
+ }
191
+ function boxBottom(withArrow) {
192
+ if (withArrow) {
193
+ const half = Math.floor((BOX_WIDTH - 1) / 2);
194
+ const rest = BOX_WIDTH - half - 1;
195
+ return source_default.dim("\u2514" + "\u2500".repeat(half) + "\u2534" + "\u2500".repeat(rest) + "\u2518");
196
+ }
197
+ return source_default.dim("\u2514" + "\u2500".repeat(BOX_WIDTH) + "\u2518");
198
+ }
199
+ function connector() {
200
+ const half = Math.floor((BOX_WIDTH + 1) / 2);
201
+ return " ".repeat(half) + source_default.dim("\u25BC");
202
+ }
203
+ function outcomeLabel(outcome) {
204
+ switch (outcome) {
205
+ case "vulnerable":
206
+ return source_default.red.bold("VULNERABLE");
207
+ case "leaked":
208
+ return source_default.red.bold("LEAKED");
209
+ case "bypassed":
210
+ return source_default.red.bold("BYPASSED");
211
+ case "safe":
212
+ return source_default.green("SAFE");
213
+ case "error":
214
+ return source_default.yellow("ERROR");
215
+ default:
216
+ return source_default.gray(outcome.toUpperCase());
217
+ }
218
+ }
219
+ function buildReplayLines(data) {
220
+ const lines = [];
221
+ const FAST = 50;
222
+ const MED = 75;
223
+ const SLOW = 100;
224
+ const PAUSE = 200;
225
+ lines.push({ text: boxTop("DISCOVER"), delay: PAUSE });
226
+ if (data.targetInfo) {
227
+ const t = data.targetInfo;
228
+ const truncUrl = t.url.length > 30 ? t.url.slice(0, 27) + "..." : t.url;
229
+ lines.push({
230
+ text: boxRow(
231
+ source_default.dim("\u25B8") + " " + source_default.white(`GET ${truncUrl}`) + source_default.dim(" \u2192 ") + source_default.white(`200`) + source_default.gray(` (${t.type} endpoint detected)`)
232
+ ),
233
+ delay: MED
234
+ });
235
+ if (t.systemPrompt) {
236
+ lines.push({
237
+ text: boxRow(
238
+ source_default.dim("\u25B8") + " " + source_default.white(`System prompt extracted`) + source_default.gray(` (${t.systemPrompt.length} chars)`)
239
+ ),
240
+ delay: MED
241
+ });
242
+ }
243
+ if (t.detectedFeatures && t.detectedFeatures.length > 0) {
244
+ lines.push({
245
+ text: boxRow(
246
+ source_default.dim("\u25B8") + " " + source_default.white(`${t.detectedFeatures.length} features detected: `) + source_default.gray(t.detectedFeatures.slice(0, 3).join(", "))
247
+ ),
248
+ delay: MED
249
+ });
250
+ }
251
+ if (t.endpoints && t.endpoints.length > 0) {
252
+ lines.push({
253
+ text: boxRow(
254
+ source_default.dim("\u25B8") + " " + source_default.white(`${t.endpoints.length} endpoints found`)
255
+ ),
256
+ delay: MED
257
+ });
258
+ }
259
+ } else {
260
+ const truncTarget = data.target.length > 30 ? data.target.slice(0, 27) + "..." : data.target;
261
+ lines.push({
262
+ text: boxRow(
263
+ source_default.dim("\u25B8") + " " + source_default.white(`GET ${truncTarget}`) + source_default.dim(" \u2192 ") + source_default.white("200") + source_default.gray(" (LLM API detected)")
264
+ ),
265
+ delay: MED
266
+ });
267
+ }
268
+ lines.push({ text: boxBottom(true), delay: FAST });
269
+ lines.push({ text: connector(), delay: PAUSE });
270
+ lines.push({ text: boxTop("ATTACK"), delay: PAUSE });
271
+ const vulnerableFindings = data.findings.filter(
272
+ (f) => f.status !== "false-positive"
273
+ );
274
+ if (vulnerableFindings.length > 0) {
275
+ for (const finding of vulnerableFindings.slice(0, 8)) {
276
+ const truncTitle = finding.title.length > 30 ? finding.title.slice(0, 27) + "..." : finding.title;
277
+ let outcome = "VULNERABLE";
278
+ const cat = finding.category;
279
+ if (cat === "system-prompt-extraction") outcome = "LEAKED";
280
+ if (cat === "jailbreak") outcome = "BYPASSED";
281
+ lines.push({
282
+ text: boxRow(
283
+ source_default.dim("\u25B8") + " " + source_default.white(truncTitle) + source_default.dim(" \u2192 ") + " " + outcomeLabel(outcome.toLowerCase())
284
+ ),
285
+ delay: MED
286
+ });
287
+ }
288
+ if (vulnerableFindings.length > 8) {
289
+ lines.push({
290
+ text: boxRow(
291
+ source_default.gray(
292
+ ` ... and ${vulnerableFindings.length - 8} more attacks`
293
+ )
294
+ ),
295
+ delay: FAST
296
+ });
297
+ }
298
+ } else {
299
+ lines.push({
300
+ text: boxRow(
301
+ source_default.dim("\u25B8") + " " + source_default.white(`${data.summary.totalAttacks} probes executed`) + source_default.dim(" \u2192 ") + source_default.green("ALL SAFE")
302
+ ),
303
+ delay: MED
304
+ });
305
+ }
306
+ lines.push({ text: boxBottom(true), delay: FAST });
307
+ lines.push({ text: connector(), delay: PAUSE });
308
+ lines.push({ text: boxTop("VERIFY"), delay: PAUSE });
309
+ const confirmed = data.findings.filter(
310
+ (f) => f.status === "confirmed" || f.status === "verified" || f.status === "scored" || f.status === "reported"
311
+ );
312
+ const falsePositives = data.findings.filter(
313
+ (f) => f.status === "false-positive"
314
+ );
315
+ if (confirmed.length > 0 || data.findings.length > 0) {
316
+ const reproduced = confirmed.length > 0 ? confirmed.length : data.findings.length;
317
+ lines.push({
318
+ text: boxRow(
319
+ source_default.green("\u2713") + " " + source_default.white(`Reproduced ${reproduced}/${reproduced} findings`)
320
+ ),
321
+ delay: MED
322
+ });
323
+ }
324
+ if (falsePositives.length > 0) {
325
+ lines.push({
326
+ text: boxRow(
327
+ source_default.red("\u2717") + " " + source_default.white(`Eliminated ${falsePositives.length} false positives`)
328
+ ),
329
+ delay: MED
330
+ });
331
+ }
332
+ if (confirmed.length === 0 && falsePositives.length === 0 && data.findings.length === 0) {
333
+ lines.push({
334
+ text: boxRow(source_default.green("\u2713") + " " + source_default.white("No findings to verify")),
335
+ delay: MED
336
+ });
337
+ }
338
+ lines.push({ text: boxBottom(true), delay: FAST });
339
+ lines.push({ text: connector(), delay: PAUSE });
340
+ lines.push({ text: boxTop("REPORT"), delay: PAUSE });
341
+ const totalFindings = data.summary.totalFindings;
342
+ if (totalFindings > 0) {
343
+ const parts = [];
344
+ if (data.summary.critical > 0) parts.push(source_default.red.bold(`${data.summary.critical} CRITICAL`));
345
+ if (data.summary.high > 0) parts.push(source_default.redBright(`${data.summary.high} HIGH`));
346
+ if (data.summary.medium > 0) parts.push(source_default.yellow(`${data.summary.medium} MEDIUM`));
347
+ if (data.summary.low > 0) parts.push(source_default.blue(`${data.summary.low} LOW`));
348
+ if (data.summary.info > 0) parts.push(source_default.gray(`${data.summary.info} INFO`));
349
+ lines.push({
350
+ text: boxRow(
351
+ source_default.white(`${totalFindings} verified findings: `) + parts.join(source_default.dim(", "))
352
+ ),
353
+ delay: MED
354
+ });
355
+ } else {
356
+ lines.push({
357
+ text: boxRow(source_default.green.bold("0 findings") + source_default.white(" - target appears secure")),
358
+ delay: MED
359
+ });
360
+ }
361
+ const duration = data.durationMs < 1e3 ? `${data.durationMs}ms` : `${(data.durationMs / 1e3).toFixed(1)}s`;
362
+ lines.push({
363
+ text: boxRow(
364
+ source_default.white(`Completed in ${duration}`) + source_default.dim(" \u2192 ") + source_default.gray("./0-report.json")
365
+ ),
366
+ delay: MED
367
+ });
368
+ lines.push({ text: boxBottom(false), delay: FAST });
369
+ return lines;
370
+ }
371
+ async function renderReplay(data) {
372
+ const lines = buildReplayLines(data);
373
+ process.stdout.write("\n");
374
+ process.stdout.write(
375
+ source_default.red.bold(" \u25C6 0") + source_default.gray(" attack replay") + "\n"
376
+ );
377
+ process.stdout.write(
378
+ source_default.dim(" " + "\u2500".repeat(BOX_WIDTH + 1)) + "\n"
379
+ );
380
+ process.stdout.write("\n");
381
+ await sleep(200);
382
+ for (const line of lines) {
383
+ await sleep(line.delay);
384
+ process.stdout.write(" " + line.text + "\n");
385
+ }
386
+ process.stdout.write("\n");
387
+ }
388
+
389
+ // packages/cli/src/formatters/timeline.ts
390
+ var TIMELINE_FORMATS = ["json", "csv", "markdown"];
391
+ function isTimelineFormat(value) {
392
+ return TIMELINE_FORMATS.includes(value);
393
+ }
394
+ function formatTimeline(record, format) {
395
+ switch (format) {
396
+ case "json":
397
+ return formatTimelineJson(record);
398
+ case "csv":
399
+ return formatTimelineCsv(record);
400
+ case "markdown":
401
+ return formatTimelineMarkdown(record);
402
+ }
403
+ }
404
+ function formatTimelineJson(record) {
405
+ return JSON.stringify(record, null, 2);
406
+ }
407
+ var CSV_COLUMNS = [
408
+ "timestamp",
409
+ "stage",
410
+ "eventType",
411
+ "agentRole",
412
+ "findingId",
413
+ "action",
414
+ "attackTechniqueIds",
415
+ "attackTactics",
416
+ // Appended, never interleaved with the ATT&CK columns — an importer that
417
+ // only knows the ATT&CK pair keeps working, and the two taxonomies stay
418
+ // visibly distinct in a spreadsheet.
419
+ "atlasTechniqueIds",
420
+ "atlasTactics"
421
+ ];
422
+ function formatTimelineCsv(record) {
423
+ const lines = [CSV_COLUMNS.join(",")];
424
+ for (const entry of record.entries) {
425
+ lines.push(
426
+ [
427
+ entry.timestamp,
428
+ entry.stage,
429
+ entry.eventType,
430
+ entry.agentRole ?? "",
431
+ entry.findingId ?? "",
432
+ entry.action,
433
+ entry.techniques.map((t) => t.id).join(" "),
434
+ uniq(entry.techniques.map((t) => t.tactic)).join(" "),
435
+ entry.atlasTechniques.map((t) => t.id).join(" "),
436
+ uniq(entry.atlasTechniques.map((t) => t.tactic)).join(" ")
437
+ ].map(csvCell).join(",")
438
+ );
439
+ }
440
+ return lines.join("\n") + "\n";
441
+ }
442
+ function csvCell(value) {
443
+ if (!/[",\r\n]/.test(value)) return value;
444
+ return `"${value.replace(/"/g, '""')}"`;
445
+ }
446
+ function formatTimelineMarkdown(record) {
447
+ const out = [];
448
+ out.push(`# Forensic timeline \u2014 scan \`${record.scanId}\``);
449
+ out.push("");
450
+ if (record.target) out.push(`- **Target:** ${record.target}`);
451
+ out.push(`- **Generated:** ${record.generatedAt}`);
452
+ out.push(`- **Events:** ${record.eventCount} of ${record.totalEventCount} recorded`);
453
+ if (record.filters.since) out.push(`- **Since:** ${record.filters.since}`);
454
+ if (record.filters.until) out.push(`- **Until:** ${record.filters.until}`);
455
+ if (record.filters.attackOnly) {
456
+ out.push(`- **Filter:** technique-mapped events only (pipeline lifecycle events omitted)`);
457
+ }
458
+ out.push("");
459
+ out.push("All timestamps are UTC (ISO-8601).");
460
+ out.push("");
461
+ out.push(
462
+ "ATT&CK (Enterprise) and ATLAS (AI systems) are separate matrices; a row may carry either, both, or neither."
463
+ );
464
+ out.push("");
465
+ if (record.entries.length === 0) {
466
+ out.push("_No pipeline events recorded for this scan in the selected window._");
467
+ out.push("");
468
+ return out.join("\n");
469
+ }
470
+ out.push("| # | Timestamp (UTC) | Stage | Event | Agent | Finding | Action | ATT&CK | ATLAS |");
471
+ out.push("| --- | --- | --- | --- | --- | --- | --- | --- | --- |");
472
+ record.entries.forEach((entry, i) => {
473
+ out.push(
474
+ "| " + [
475
+ String(i + 1),
476
+ entry.timestamp,
477
+ mdCell(entry.stage),
478
+ mdCell(entry.eventType),
479
+ mdCell(entry.agentRole ?? "\u2014"),
480
+ mdCell(entry.findingId ?? "\u2014"),
481
+ mdCell(entry.action),
482
+ mdTechniques(entry.techniques),
483
+ mdTechniques(entry.atlasTechniques)
484
+ ].join(" | ") + " |"
485
+ );
486
+ });
487
+ out.push("");
488
+ return out.join("\n");
489
+ }
490
+ function mdTechniques(techniques) {
491
+ return techniques.length > 0 ? techniques.map(mdTechnique).join(", ") : "\u2014";
492
+ }
493
+ function mdTechnique(technique) {
494
+ const label = mdCell(`${technique.id} ${technique.name}`);
495
+ return technique.url ? `[${label}](${technique.url})` : label;
496
+ }
497
+ function mdCell(value) {
498
+ return value.replace(/\s+/g, " ").replace(/\|/g, "\\|").trim();
499
+ }
500
+ function uniq(values) {
501
+ return [...new Set(values.filter((v) => v.length > 0))];
502
+ }
503
+
504
+ // packages/cli/src/formatters/index.ts
505
+ function formatPresentationDocument(document, format) {
506
+ if (format === "json" && document.documentType !== "scan-report") {
507
+ return JSON.stringify(document.report, null, 2);
508
+ }
509
+ const report = document.documentType === "scan-report" ? document.report : document.documentType === "audit-report" ? {
510
+ target: `${document.report.package}@${document.report.version}`,
511
+ scanDepth: "deep",
512
+ startedAt: document.report.startedAt,
513
+ completedAt: document.report.completedAt,
514
+ durationMs: document.report.durationMs,
515
+ summary: document.report.summary,
516
+ findings: document.report.findings,
517
+ warnings: []
518
+ } : {
519
+ target: document.report.repo,
520
+ scanDepth: "deep",
521
+ startedAt: document.report.startedAt,
522
+ completedAt: document.report.completedAt,
523
+ durationMs: document.report.durationMs,
524
+ summary: document.report.summary,
525
+ findings: document.report.findings,
526
+ warnings: document.report.warnings?.map((warning) => ({ stage: "report", message: `[${warning.stage}] ${warning.message}` })) ?? [],
527
+ executionSuccessful: document.report.researchFailed ? false : void 0,
528
+ reviewChecks: document.report.reviewChecks
529
+ };
530
+ switch (format) {
531
+ case "terminal":
532
+ return formatTerminal(report);
533
+ case "json":
534
+ return formatJson(report);
535
+ case "markdown":
536
+ return formatMarkdown(report);
537
+ case "html":
538
+ return formatHtml(report);
539
+ case "sarif":
540
+ return formatSarif(report);
541
+ case "pdf":
542
+ return "[PDF output requires generatePdfReport()]";
543
+ }
544
+ }
545
+ function formatReport(report, format) {
546
+ return formatPresentationDocument(createScanReportDocument(report), format);
547
+ }
548
+ function formatAuditReport(report, format) {
549
+ return formatPresentationDocument(createAuditReportDocument(report), format);
550
+ }
551
+ function formatReviewReport(report, format) {
552
+ return formatPresentationDocument(createReviewReportDocument(report), format);
553
+ }
554
+
555
+ export {
556
+ renderReplay,
557
+ getRuntimeAvailability,
558
+ checkRuntimeAvailability,
559
+ buildShareUrl,
560
+ TIMELINE_FORMATS,
561
+ isTimelineFormat,
562
+ formatTimeline,
563
+ formatReport,
564
+ formatAuditReport,
565
+ formatReviewReport
566
+ };
@@ -3,7 +3,7 @@ import { createRequire as __0CreateRequire } from "node:module";
3
3
  const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  homeStateDir
6
- } from "./chunk-LTEE2JWK.js";
6
+ } from "./chunk-RZR2XXAK.js";
7
7
  import {
8
8
  external_exports
9
9
  } from "./chunk-VIT5ALXF.js";
@@ -89,6 +89,7 @@ var workerTurnSchema = external_exports.object({
89
89
  partial: external_exports.boolean().optional(),
90
90
  tools: external_exports.array(external_exports.object({ callIndex: finite, call: toolCallSchema, result: jsonValueSchema, running: external_exports.boolean().optional() }).strict()).max(1e3).optional()
91
91
  }).strict();
92
+ var messageAuthorSchema = external_exports.object({ userId: external_exports.string().min(1).max(256), displayName: external_exports.string().min(1).max(256), proposalId: external_exports.string().min(1).max(256).optional() }).strict();
92
93
  var workerSchema = external_exports.object({
93
94
  id: external_exports.string().max(256),
94
95
  parentId: external_exports.string().max(256),
@@ -97,7 +98,7 @@ var workerSchema = external_exports.object({
97
98
  task: boundedString,
98
99
  transcript: external_exports.array(workerTurnSchema).max(1e4),
99
100
  telemetry: external_exports.record(jsonValueSchema).optional(),
100
- operatorMessages: external_exports.array(external_exports.object({ id: external_exports.string().max(256), text: boundedString, createdAt: external_exports.string().max(64) }).strict()).max(1e4).optional(),
101
+ operatorMessages: external_exports.array(external_exports.object({ id: external_exports.string().max(256), text: boundedString, createdAt: external_exports.string().max(64), author: messageAuthorSchema.optional() }).strict()).max(1e4).optional(),
101
102
  summary: boundedString.optional(),
102
103
  error: boundedString.optional(),
103
104
  model: external_exports.string().max(256).optional(),
@@ -145,7 +146,8 @@ var consoleStateSchema = external_exports.object({
145
146
  }).strict().nullable(),
146
147
  workers: external_exports.array(workerSchema).max(1e3),
147
148
  compaction: jsonValueSchema.nullable(),
148
- queuedMessages: external_exports.array(external_exports.object({ id: external_exports.string().max(256), text: boundedString, createdAt: external_exports.string().max(64) }).strict()).max(20),
149
+ queuedMessages: external_exports.array(external_exports.object({ id: external_exports.string().max(256), text: boundedString, createdAt: external_exports.string().max(64), author: messageAuthorSchema.optional() }).strict()).max(20),
150
+ userAttributions: external_exports.array(external_exports.object({ text: boundedString, author: messageAuthorSchema.optional() }).strict()).max(1e4).optional(),
149
151
  focusedFindingId: external_exports.string().max(256).optional(),
150
152
  stagedPrompt: boundedString.optional()
151
153
  }).strict();
@@ -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-LTEE2JWK.js";
6
+ } from "./chunk-RZR2XXAK.js";
7
7
 
8
8
  // packages/cli/src/tui/runtime.ts
9
9
  function getReleaseChannel(env = process.env) {
@@ -25,7 +25,7 @@ function isBunRuntime() {
25
25
  return typeof globalThis === "object" && globalThis !== null && "Bun" in globalThis;
26
26
  }
27
27
  function canUseOpenTui() {
28
- return !!(process.stdout.isTTY && process.stdin.isTTY);
28
+ return false;
29
29
  }
30
30
 
31
31
  export {
@@ -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-3E54JYS4.js";
6
+ } from "./chunk-YORL5S5V.js";
7
7
  import {
8
8
  verifyKernelFinding
9
- } from "./chunk-F344NYUN.js";
9
+ } from "./chunk-DNV3ZMPX.js";
10
10
  import {
11
11
  homeStateDir
12
- } from "./chunk-LTEE2JWK.js";
12
+ } from "./chunk-RZR2XXAK.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,7 +3,7 @@ import { createRequire as __0CreateRequire } from "node:module";
3
3
  const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  createPresentationEvent
6
- } from "./chunk-LTEE2JWK.js";
6
+ } from "./chunk-RZR2XXAK.js";
7
7
 
8
8
  // packages/core/dist/events/bus.js
9
9
  function presentationEventSink(sink, options = {}) {
@@ -9,7 +9,10 @@ import {
9
9
  import {
10
10
  extractFileRefs,
11
11
  redactSensitiveHeaders
12
- } from "./chunk-UELXHK2Y.js";
12
+ } from "./chunk-IK27KMVV.js";
13
+ import {
14
+ getFindingPriority
15
+ } from "./chunk-RZR2XXAK.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",