0sec-cli 0.22.1 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/0.js +64 -47
  2. package/README.md +73 -53
  3. package/chunks/{adapt-loop-J6QCZZTB.js → adapt-loop-V3JFWOKC.js} +4 -4
  4. package/chunks/{artifact-scraper-MFKT6OI4.js → artifact-scraper-NYKUF2M5.js} +2 -2
  5. package/chunks/{assumption-mining-646LYSJY.js → assumption-mining-ZX3YVWEH.js} +19 -15
  6. package/chunks/backend-connections-H52NIVH2.js +23 -0
  7. package/chunks/{chunk-NLH4LMWH.js → chunk-3E54JYS4.js} +1 -1
  8. package/chunks/chunk-3P3XXSIJ.js +463 -0
  9. package/chunks/{chunk-CPWA6RWE.js → chunk-3ZNI7F42.js} +3 -3
  10. package/chunks/{chunk-LGCASF2C.js → chunk-4HGGNBKK.js} +7405 -2225
  11. package/chunks/{chunk-TM74SSHC.js → chunk-62ENS6XO.js} +1 -1
  12. package/chunks/{chunk-4VGLO2YS.js → chunk-65H3MRBF.js} +5 -2
  13. package/chunks/chunk-A2ADXAC5.js +5329 -0
  14. package/chunks/chunk-A5QO7N3S.js +74 -0
  15. package/chunks/chunk-AAA4PRWK.js +990 -0
  16. package/chunks/{chunk-AV2LG2L7.js → chunk-BF5FIK7H.js} +257 -145
  17. package/chunks/chunk-CP6HANBE.js +355 -0
  18. package/chunks/{chunk-HHPWRY2M.js → chunk-EH2WTNY7.js} +23474 -22746
  19. package/chunks/{chunk-OSBPGWTE.js → chunk-EJH2TNVH.js} +3 -3
  20. package/chunks/chunk-EWXOG6D3.js +1695 -0
  21. package/chunks/{chunk-WZRVS7SB.js → chunk-F344NYUN.js} +1 -1
  22. package/chunks/chunk-FXR3BT2G.js +226 -0
  23. package/chunks/{chunk-GOEA3NW6.js → chunk-HFDSIHTE.js} +1603 -1295
  24. package/chunks/chunk-I3OCJ2OA.js +309 -0
  25. package/chunks/{chunk-X7LAEEUW.js → chunk-ITES7BCY.js} +1 -1
  26. package/chunks/{chunk-YL6YAGLL.js → chunk-JEYIWMGL.js} +1 -1
  27. package/chunks/{chunk-WSDDGFA6.js → chunk-K55B4OH4.js} +1 -1
  28. package/chunks/{chunk-TH2LW437.js → chunk-KCA35IL3.js} +2 -190
  29. package/chunks/chunk-KHPOSLCF.js +1659 -0
  30. package/chunks/chunk-LT7BFGXA.js +733 -0
  31. package/chunks/{chunk-KAU6NLGP.js → chunk-LTEE2JWK.js} +786 -20
  32. package/chunks/{chunk-ZKQ2I3S2.js → chunk-LVGZGG63.js} +1 -1
  33. package/chunks/chunk-MQJVU2GZ.js +277 -0
  34. package/chunks/{chunk-OHHCGDJ2.js → chunk-NI6QYQSK.js} +126 -1089
  35. package/chunks/{chunk-6YNKRUMC.js → chunk-NJLKFC66.js} +321 -5
  36. package/chunks/{chunk-3E2KALZ5.js → chunk-NX4H6L4M.js} +2 -2
  37. package/chunks/{chunk-W6UWZFKL.js → chunk-O6KPVYOI.js} +100 -5
  38. package/chunks/{chunk-IVQV574Y.js → chunk-O6Z4XPOM.js} +1 -1
  39. package/chunks/{chunk-V6GHX34G.js → chunk-OLSKXTQZ.js} +8 -274
  40. package/chunks/{chunk-5BTJMINS.js → chunk-P7KDN5PK.js} +208 -46
  41. package/chunks/chunk-PIR6BNE7.js +83 -0
  42. package/chunks/{chunk-XCISCI4T.js → chunk-QMICC5O2.js} +30 -12
  43. package/chunks/{chunk-6GHSR47F.js → chunk-R35KKJA4.js} +1 -58
  44. package/chunks/chunk-RS4MAN3Q.js +73 -0
  45. package/chunks/{chunk-VWITLWXB.js → chunk-T7ZEVY5G.js} +307 -34
  46. package/chunks/chunk-TPUJZ74W.js +36 -0
  47. package/chunks/{chunk-IFME676H.js → chunk-UZUELPFW.js} +79 -18
  48. package/chunks/{chunk-TV27OWIW.js → chunk-V2BWXPZP.js} +9 -9
  49. package/chunks/chunk-VDOWARMJ.js +63 -0
  50. package/chunks/{chunk-XDKB2P5X.js → chunk-W5VNCB57.js} +1 -1
  51. package/chunks/{chunk-4G7OVYJX.js → chunk-WIYNYNL2.js} +1 -1
  52. package/chunks/chunk-WYNZFNMF.js +457 -0
  53. package/chunks/{chunk-7XCKYNLO.js → chunk-XORZUR2H.js} +1 -1
  54. package/chunks/{chunk-2OQOQ2FZ.js → chunk-Y4HJRUFE.js} +20 -4
  55. package/chunks/{chunk-V36HVTUL.js → chunk-YAEJAZYW.js} +21 -18
  56. package/chunks/{chunk-XA2O4WXA.js → chunk-YYS2H33A.js} +169 -15
  57. package/chunks/{codex-models-NHQW45SO.js → codex-models-Y457ND6Q.js} +9 -3
  58. package/chunks/{commands-N6GN5SBF.js → commands-PBDAOZKA.js} +7019 -5937
  59. package/chunks/{db-5IWEJUYV.js → db-TPSI552V.js} +3 -3
  60. package/chunks/deep-review-DKED6EN5.js +81 -0
  61. package/chunks/{dist-L3XJWWZ6.js → dist-4LGRIBOC.js} +209 -114
  62. package/chunks/{dist-FSS7MBDF.js → dist-7Q5A6TQM.js} +12 -2
  63. package/chunks/{dist-KEULE5IQ.js → dist-LNXGATR2.js} +2 -2
  64. package/chunks/{dist-XZB53PS5.js → dist-M2X367VW.js} +2 -2
  65. package/chunks/{dist-BS4CY4RG.js → dist-RLPNLRZD.js} +79 -1
  66. package/chunks/eval-runner-RZKDOQ2G.js +30 -0
  67. package/chunks/{exploit-agent-KW4EB7BE.js → exploit-agent-RMFYNG7H.js} +1 -1
  68. package/chunks/{exploit-autoclimb-CXJ2ERRO.js → exploit-autoclimb-2A2PQI4E.js} +1 -1
  69. package/chunks/{exploit-climb-TJWLY4XC.js → exploit-climb-DEJ232QN.js} +2 -2
  70. package/chunks/{fix-UUKPXCFB.js → fix-JGBW7XUN.js} +12 -6
  71. package/chunks/{harness-C5HOKIEV.js → harness-CBOLMUHB.js} +3 -3
  72. package/chunks/{hunt-scan-KZZ444V2.js → hunt-scan-MIRMABY4.js} +17 -13
  73. package/chunks/{kernel-primitive-Z77IR7YS.js → kernel-primitive-NAPDMJC7.js} +2 -2
  74. package/chunks/{kernel-vm-runner-JW77P276.js → kernel-vm-runner-PR5OSDQ2.js} +2 -2
  75. package/chunks/managed-operation-YNQQEA5V.js +59 -0
  76. package/chunks/{memsafety-scan-FCPAXIZE.js → memsafety-scan-RPS446CD.js} +2 -2
  77. package/chunks/{native-loop-P6P5GYVJ.js → native-loop-CGOJMNHV.js} +19 -9
  78. package/chunks/orchestrate-5NK34H3W.js +62 -0
  79. package/chunks/{prepare-KYHGFWCJ.js → prepare-YVNENPNL.js} +6 -2
  80. package/chunks/{process-N245QIQG.js → process-MJYJ2K5E.js} +2 -1
  81. package/chunks/remote-workflow-runtime-RGQ5ECMN.js +96 -0
  82. package/chunks/{run-GAFKBCTN.js → run-VH4OIDKF.js} +1919 -4817
  83. package/chunks/{runtime-XFWJTBUO.js → runtime-4TAJFVF7.js} +7 -1
  84. package/chunks/{runtime-H7YBR5IZ.js → runtime-HWL6HG7A.js} +10 -4
  85. package/chunks/{scan-stream-BMOCPKQX.js → scan-stream-HJAZJONE.js} +7 -1
  86. package/chunks/{scope-QWY4VQZ7.js → scope-Q5PIX2IS.js} +2 -2
  87. package/chunks/service-plugins-QYFITODK.js +63 -0
  88. package/chunks/{session-store-XIDFGG7K.js → session-store-2FEIZGSV.js} +6 -4
  89. package/chunks/{variant-candidates-7D4F5E4H.js → variant-candidates-TX5V6XOT.js} +9 -3
  90. package/chunks/{web-recon-prepass-VXXBPDAV.js → web-recon-prepass-6HOUGF7Q.js} +11 -6
  91. package/chunks/workflow-runtime-ZEEBJFQG.js +64 -0
  92. package/dashboard/apple-touch-icon.png +0 -0
  93. package/dashboard/assets/abnfDiagram-VCTEODGH-BuvumFYR.js +1 -0
  94. package/dashboard/assets/arc-DZzWDuCG.js +1 -0
  95. package/dashboard/assets/architecture-7GRP2DOG-DK9bv1Md.js +1 -0
  96. package/dashboard/assets/architectureDiagram-5GKGNRK7-Bw5el_EL.js +36 -0
  97. package/dashboard/assets/array-BifhSqXX.js +1 -0
  98. package/dashboard/assets/blockDiagram-I7D4REHJ-BjVLEApp.js +129 -0
  99. package/dashboard/assets/c4Diagram-7LVT6UL2-B9nNzx2J.js +38 -0
  100. package/dashboard/assets/channel-Ck17eKdX.js +1 -0
  101. package/dashboard/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  102. package/dashboard/assets/chunk-4HAMMTFA-y72Q95nW.js +62 -0
  103. package/dashboard/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  104. package/dashboard/assets/chunk-75Z2AOVW-BOhrOGMO.js +2 -0
  105. package/dashboard/assets/chunk-DU6HZSFF-B0EhAaNb.js +127 -0
  106. package/dashboard/assets/chunk-F27PBJKO-BR-hiDvM.js +1 -0
  107. package/dashboard/assets/chunk-FOHPRMQF-DHwB1DNv.js +161 -0
  108. package/dashboard/assets/chunk-GMAD6QVW-H15vJYXg.js +72 -0
  109. package/dashboard/assets/chunk-GVQU2GXP-BRndps0o.js +1 -0
  110. package/dashboard/assets/chunk-IMKFNOWR-CIzC_OWx.js +231 -0
  111. package/dashboard/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  112. package/dashboard/assets/chunk-L3NEJ4N5-NR4P1Vko.js +1 -0
  113. package/dashboard/assets/chunk-OSK3NFVY-DtjTDf8S.js +10 -0
  114. package/dashboard/assets/chunk-P2QGCYS3-CYT11Qjx.js +1 -0
  115. package/dashboard/assets/chunk-POPQ4Y6H-Duj2Ygwu.js +1 -0
  116. package/dashboard/assets/chunk-PWAF6VOD-z4p5Tf_y.js +1 -0
  117. package/dashboard/assets/chunk-SHT3W25Y-DYeLYLS3.js +168 -0
  118. package/dashboard/assets/chunk-SVP7TREG-BKowxCVI.js +88 -0
  119. package/dashboard/assets/chunk-TICWLB2K-GDAwEFlH.js +206 -0
  120. package/dashboard/assets/chunk-XXDRQBXY-DRD79Mjx.js +1 -0
  121. package/dashboard/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  122. package/dashboard/assets/classDiagram-ZZMXUADV-BaeZA6LE.js +1 -0
  123. package/dashboard/assets/classDiagram-v2-VYDZK3BY-BaeZA6LE.js +1 -0
  124. package/dashboard/assets/common-vnzd7UOF.js +5 -0
  125. package/dashboard/assets/cose-bilkent-JH36ORCC-GqCLsRyf.js +1 -0
  126. package/dashboard/assets/cynefin-OW5HDTMX-CJN9YwWN.js +1 -0
  127. package/dashboard/assets/cynefinDiagram-5FMLGOSQ-DVJHCYQY.js +62 -0
  128. package/dashboard/assets/cytoscape.esm-CGd-uY3x.js +321 -0
  129. package/dashboard/assets/dagre-GXQ25YYZ-BMCrrJJR.js +4 -0
  130. package/dashboard/assets/dagre-PrKaheQc.js +1 -0
  131. package/dashboard/assets/defaultLocale-BFoDCU3G.js +1 -0
  132. package/dashboard/assets/diagram-S7CK7UJ4-CLYDdOEm.js +30 -0
  133. package/dashboard/assets/diagram-UQ7AKVKN-CnPuAZK7.js +41 -0
  134. package/dashboard/assets/diagram-VSXAHHWV-Cr2I2DnG.js +3 -0
  135. package/dashboard/assets/diagram-VX7I27RA-_mGW1wpp.js +24 -0
  136. package/dashboard/assets/diagram-Z3DM3KII-igybB0l9.js +24 -0
  137. package/dashboard/assets/dist-Bb7_-x5y.js +1 -0
  138. package/dashboard/assets/ebnfDiagram-PWID7BFC-CVCICf2R.js +1 -0
  139. package/dashboard/assets/erDiagram-RLTQ6QDP-CRjnfgxj.js +99 -0
  140. package/dashboard/assets/eventmodeling-NTZA5JFV-po5oDydv.js +1 -0
  141. package/dashboard/assets/flowDiagram-HODETNUW-TSV9s7q4.js +1 -0
  142. package/dashboard/assets/ganttDiagram-EL5Y4UJY-DppD7sD7.js +292 -0
  143. package/dashboard/assets/gitGraph-4MIJSDKK-Tw0vNnQc.js +1 -0
  144. package/dashboard/assets/gitGraphDiagram-WWUBYQGX-Cpf96-z3.js +106 -0
  145. package/dashboard/assets/graphlib-DS17s2tU.js +1 -0
  146. package/dashboard/assets/info-A6RAGUB7-DLyt9arx.js +1 -0
  147. package/dashboard/assets/infoDiagram-27XIBGKW-B6_piSNS.js +2 -0
  148. package/dashboard/assets/init-C-OQMol4.js +1 -0
  149. package/dashboard/assets/ishikawaDiagram-5VMMS53U-DvMO0B0X.js +70 -0
  150. package/dashboard/assets/journeyDiagram-3NMN7TZE-f7ZK98b6.js +139 -0
  151. package/dashboard/assets/kanban-definition-UXKFOSKX-Dso0nAxL.js +89 -0
  152. package/dashboard/assets/katex-CXMH3UgJ.js +257 -0
  153. package/dashboard/assets/line-VcKaFG0G.js +1 -0
  154. package/dashboard/assets/linear-D7YnpiWh.js +1 -0
  155. package/dashboard/assets/mermaid-parser.core-DriL2hrV.js +7 -0
  156. package/dashboard/assets/mermaid.core-DJWYDh_P.js +44 -0
  157. package/dashboard/assets/mindmap-definition-YA3MSWOX-DZsoIeac.js +96 -0
  158. package/dashboard/assets/operations-BIaUSnYv.js +121 -0
  159. package/dashboard/assets/operations-BeCdkT4S.css +1 -0
  160. package/dashboard/assets/ordinal-BDEzSJ7C.js +1 -0
  161. package/dashboard/assets/packet-AYTQ26CC-BQBIXKxk.js +1 -0
  162. package/dashboard/assets/path-fybaL0A-.js +1 -0
  163. package/dashboard/assets/pegDiagram-XKGWAZYB-B0-lslgW.js +1 -0
  164. package/dashboard/assets/pie-WAS4IAKB-DoY6dwQs.js +1 -0
  165. package/dashboard/assets/pieDiagram-E7YTZNPT-ElmdRjp5.js +39 -0
  166. package/dashboard/assets/quadrantDiagram-AXDQQJYC-Ci1h98Q2.js +7 -0
  167. package/dashboard/assets/radar-RG4KPBEZ-DHod2WgB.js +1 -0
  168. package/dashboard/assets/railroad-74A4TZTK-90JxB4xV.js +1 -0
  169. package/dashboard/assets/railroad-abnf-HS5TGJTU-BkXGl114.js +1 -0
  170. package/dashboard/assets/railroad-ebnf-LZEXJU2U-QVAERn2C.js +1 -0
  171. package/dashboard/assets/railroad-peg-WCYAUIDC-B1-PM01z.js +1 -0
  172. package/dashboard/assets/railroadDiagram-O6MQD6OU-k3190A6L.js +1 -0
  173. package/dashboard/assets/requirementDiagram-BXWQKSXE-C3-eR7I5.js +84 -0
  174. package/dashboard/assets/rough.esm-Dy-Kn_BL.js +1 -0
  175. package/dashboard/assets/sankeyDiagram-P5KCCOFB-Bc86pi8w.js +40 -0
  176. package/dashboard/assets/sequenceDiagram-WJ2MYXX4-Bv_MvEmz.js +162 -0
  177. package/dashboard/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
  178. package/dashboard/assets/src-D7Dqq5yP.js +1 -0
  179. package/dashboard/assets/stateDiagram-D77RDMKH-Bq_GVmeW.js +1 -0
  180. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-z1XRaftz.js +1 -0
  181. package/dashboard/assets/swimlanes-42K2YHIH-q0iK-e0P.js +1 -0
  182. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-C9L6XBQj.js +8 -0
  183. package/dashboard/assets/timeline-definition-24CTP7MA-CNfF07hM.js +120 -0
  184. package/dashboard/assets/treeView-Q6P3EWNA-m629ePnS.js +1 -0
  185. package/dashboard/assets/treemap-WGGIJYW6-D9Cb2ETv.js +1 -0
  186. package/dashboard/assets/vennDiagram-4TSXK5OY-v4dKF-FE.js +34 -0
  187. package/dashboard/assets/wardley-WFR3VGLG-DkwH_nRe.js +1 -0
  188. package/dashboard/assets/wardleyDiagram-VM6X3IG4-3ImohVu4.js +78 -0
  189. package/dashboard/assets/xychartDiagram-S5SC5T6Z-QJu3dm7K.js +7 -0
  190. package/dashboard/assets/zero-connect-BGDY0PMZ.webp +0 -0
  191. package/dashboard/assets/zero-curious-DovTLOs8.webp +0 -0
  192. package/dashboard/assets/zero-peek-Dzm3MT3X.png +0 -0
  193. package/dashboard/assets/zero-planning-CBeHDrG_.webp +0 -0
  194. package/dashboard/favicon.ico +0 -0
  195. package/dashboard/favicon.svg +10 -0
  196. package/dashboard/index.html +5 -3
  197. package/package.json +1 -1
  198. package/chunks/chunk-BCSRRQG5.js +0 -3514
  199. package/chunks/chunk-BOUGKEKA.js +0 -193
  200. package/chunks/chunk-GHWODZMR.js +0 -16
  201. package/chunks/eval-runner-EMEGF24P.js +0 -26
  202. package/chunks/orchestrate-DWWUT5RC.js +0 -58
  203. package/dashboard/assets/bot-Bg1Tp9_d.js +0 -1
  204. package/dashboard/assets/dist-B_dDCPbu.js +0 -1
  205. package/dashboard/assets/findings-page-mayGhNx6.js +0 -5
  206. package/dashboard/assets/format--susmHX7.js +0 -1
  207. package/dashboard/assets/input-TuVPR3Zl.js +0 -1
  208. package/dashboard/assets/jsx-runtime-MGseXjj5.js +0 -3
  209. package/dashboard/assets/live-page-HWWHX99U.js +0 -1
  210. package/dashboard/assets/meta-tile-ckHo-w7k.js +0 -1
  211. package/dashboard/assets/operations-BxZ0OoXO.js +0 -10
  212. package/dashboard/assets/operations-CMFVrXEe.css +0 -2
  213. package/dashboard/assets/operations-app-D3d35rgo.js +0 -46
  214. package/dashboard/assets/overview-page-W_4IteEr.js +0 -1
  215. package/dashboard/assets/page-header-Bw9AJgBV.js +0 -1
  216. package/dashboard/assets/scans-page-CgzVXHnn.js +0 -1
  217. package/dashboard/assets/siren-KQj8QAnJ.js +0 -1
  218. package/dashboard/assets/table-8EDklulN.js +0 -1
  219. package/dashboard/assets/tabs-CFHPOwg8.js +0 -1
@@ -3,7 +3,10 @@ import { createRequire as __0CreateRequire } from "node:module";
3
3
  const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  jitterFor
6
- } from "./chunk-YL6YAGLL.js";
6
+ } from "./chunk-JEYIWMGL.js";
7
+ import {
8
+ scanExecutionSignal
9
+ } from "./chunk-CP6HANBE.js";
7
10
 
8
11
  // packages/core/dist/scope/rate-limit.js
9
12
  var TokenBucket = class {
@@ -57,24 +60,26 @@ var TokenBucket = class {
57
60
  * the 429 park deadline first, then refill-and-spin with sleeps
58
61
  * sized to the exact next-token-available time.
59
62
  */
60
- async acquire(n = 1) {
63
+ async acquire(n = 1, signal = scanExecutionSignal()) {
64
+ signal?.throwIfAborted();
61
65
  if (n > this.state.capacity) {
62
66
  n = this.state.capacity;
63
67
  }
64
68
  while (this.nowFn() < this.state.retryUntil) {
65
69
  const wait = this.state.retryUntil - this.nowFn();
66
- await this.sleepFn(Math.max(1, Math.min(wait, 1e3)));
70
+ await this.sleepFn(Math.max(1, Math.min(wait, 1e3)), signal);
67
71
  }
68
72
  while (true) {
73
+ signal?.throwIfAborted();
69
74
  this.refill();
70
75
  if (this.state.tokens >= n) {
71
76
  this.state.tokens -= n;
72
- await this.pace();
77
+ await this.pace(signal);
73
78
  return;
74
79
  }
75
80
  const tokensNeeded = n - this.state.tokens;
76
81
  const waitMs = Math.max(1, Math.ceil(tokensNeeded / this.state.refillRatePerMs));
77
- await this.sleepFn(waitMs);
82
+ await this.sleepFn(waitMs, signal);
78
83
  }
79
84
  }
80
85
  /**
@@ -85,12 +90,13 @@ var TokenBucket = class {
85
90
  * yields full jitter in `[0, baseMs]` — rather than growing a second
86
91
  * jitter implementation.
87
92
  */
88
- async pace() {
93
+ async pace(signal = scanExecutionSignal()) {
94
+ signal?.throwIfAborted();
89
95
  if (!this.jitter)
90
96
  return;
91
97
  const ms = jitterFor(0, this.jitter.baseMs, this.jitter.rng ?? Math.random);
92
98
  if (ms > 0)
93
- await this.sleepFn(ms);
99
+ await this.sleepFn(ms, signal);
94
100
  }
95
101
  /**
96
102
  * Park the bucket until `deadline` (ms since epoch). Subsequent
@@ -187,17 +193,18 @@ var RateLimiter = class _RateLimiter {
187
193
  * immediately) — callers should not rely on rate-limiting unknowable
188
194
  * hosts. The fetch sites that wire this up always pass full URLs.
189
195
  */
190
- async acquire(urlOrHost, n = 1) {
196
+ async acquire(urlOrHost, n = 1, signal = scanExecutionSignal()) {
197
+ signal?.throwIfAborted();
191
198
  const host = this.hostKey(urlOrHost);
192
199
  if (!host)
193
200
  return;
194
201
  const bucket = this.getBucket(host);
195
202
  if (bucket.tryConsume(n)) {
196
- await bucket.pace();
203
+ await bucket.pace(signal);
197
204
  return;
198
205
  }
199
206
  this.onThrottle?.();
200
- await bucket.acquire(n);
207
+ await bucket.acquire(n, signal);
201
208
  }
202
209
  /**
203
210
  * Non-blocking variant. Returns true and consumes if available,
@@ -238,8 +245,19 @@ var RateLimiter = class _RateLimiter {
238
245
  this.buckets.clear();
239
246
  }
240
247
  };
241
- function defaultSleep(ms) {
242
- return new Promise((r) => setTimeout(r, ms));
248
+ function defaultSleep(ms, signal) {
249
+ signal?.throwIfAborted();
250
+ const { promise, resolve, reject } = Promise.withResolvers();
251
+ const timer = setTimeout(() => {
252
+ signal?.removeEventListener("abort", abort);
253
+ resolve();
254
+ }, ms);
255
+ const abort = () => {
256
+ clearTimeout(timer);
257
+ reject(signal?.reason ?? new Error("Rate-limit wait cancelled."));
258
+ };
259
+ signal?.addEventListener("abort", abort, { once: true });
260
+ return promise;
243
261
  }
244
262
  function readHeader(headers, name) {
245
263
  if (typeof headers.get === "function") {
@@ -5,54 +5,7 @@ import {
5
5
  expandHomePath,
6
6
  isExistingLocalTargetPath,
7
7
  isExplicitLocalTargetPath
8
- } from "./chunk-V36HVTUL.js";
9
-
10
- // packages/cli/src/herdr-state.ts
11
- var sink = null;
12
- function setHerdrSink(next) {
13
- sink = next;
14
- }
15
- function reportOperatorGate(blocked) {
16
- if (!sink) return;
17
- try {
18
- if (blocked) sink.reportBlocked();
19
- else sink.reportWorking();
20
- } catch {
21
- }
22
- }
23
- function withSink(fn) {
24
- if (!sink) return;
25
- try {
26
- fn(sink);
27
- } catch {
28
- }
29
- }
30
- function reportHerdrModel(model, provider) {
31
- withSink((s) => s.setModel(model, provider));
32
- }
33
- function reportHerdrContextPercent(percent) {
34
- withSink((s) => s.setContextPercent(percent));
35
- }
36
- function reportHerdrTarget(target) {
37
- withSink((s) => s.setTarget(target));
38
- }
39
- function reportHerdrObjective(objective) {
40
- withSink((s) => s.setObjective(objective));
41
- }
42
- function reportHerdrActivity(activity) {
43
- withSink((s) => s.setActivity(activity));
44
- }
45
- function reportHerdrCompaction() {
46
- withSink((s) => s.reportCompacting());
47
- }
48
- function reportHerdrSession(ref) {
49
- withSink((s) => s.reportSession(ref));
50
- }
51
- function reportHerdrSessionClose() {
52
- withSink((s) => {
53
- void s.release();
54
- });
55
- }
8
+ } from "./chunk-YAEJAZYW.js";
56
9
 
57
10
  // packages/cli/src/engagement-plan.ts
58
11
  var PACKAGE_PREFIXES = {
@@ -133,15 +86,5 @@ function resolveEngagement(rawTarget) {
133
86
  }
134
87
 
135
88
  export {
136
- setHerdrSink,
137
- reportOperatorGate,
138
- reportHerdrModel,
139
- reportHerdrContextPercent,
140
- reportHerdrTarget,
141
- reportHerdrObjective,
142
- reportHerdrActivity,
143
- reportHerdrCompaction,
144
- reportHerdrSession,
145
- reportHerdrSessionClose,
146
89
  resolveEngagement
147
90
  };
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
+
5
+ // packages/core/dist/runtime/prompt-cache.js
6
+ var MAX_CACHE_BREAKPOINTS = 4;
7
+ var MESSAGE_CACHE_BREAKPOINTS = MAX_CACHE_BREAKPOINTS - 1;
8
+ var BREAKPOINT_SPACING_BLOCKS = 15;
9
+ var NATIVE_CACHE_PROVIDERS = /* @__PURE__ */ new Set(["anthropic"]);
10
+ var OPT_IN_CACHE_PROVIDERS = /* @__PURE__ */ new Set(["z-ai", "kimi"]);
11
+ function providerSupportsPromptCache(provider) {
12
+ if (NATIVE_CACHE_PROVIDERS.has(provider))
13
+ return true;
14
+ if (!OPT_IN_CACHE_PROVIDERS.has(provider))
15
+ return false;
16
+ return readExtraCacheProviders().has(provider);
17
+ }
18
+ function readExtraCacheProviders() {
19
+ const raw = process.env["ZERO_PROMPT_CACHE_EXTRA_PROVIDERS"];
20
+ if (!raw)
21
+ return /* @__PURE__ */ new Set();
22
+ return new Set(raw.split(",").map((entry) => entry.trim().toLowerCase()).filter((entry) => entry.length > 0));
23
+ }
24
+ function planMessageBreakpoints(messages, budget = MESSAGE_CACHE_BREAKPOINTS) {
25
+ if (messages.length === 0 || budget <= 0)
26
+ return [];
27
+ const lastIndex = messages.length - 1;
28
+ const picks = /* @__PURE__ */ new Set([lastIndex]);
29
+ const rollingBudget = Math.max(1, budget - 1);
30
+ let blocksSincePick = blockCount(messages[lastIndex]);
31
+ for (let i = lastIndex - 1; i >= 0 && picks.size < rollingBudget; i--) {
32
+ if (blocksSincePick >= BREAKPOINT_SPACING_BLOCKS) {
33
+ picks.add(i);
34
+ blocksSincePick = 0;
35
+ }
36
+ blocksSincePick += blockCount(messages[i]);
37
+ }
38
+ if (picks.size < budget)
39
+ picks.add(0);
40
+ return [...picks].sort((a, b) => a - b).slice(0, budget);
41
+ }
42
+ function blockCount(message) {
43
+ return message?.content.length ?? 0;
44
+ }
45
+ function withCacheControl(block) {
46
+ return { ...block, cache_control: { type: "ephemeral" } };
47
+ }
48
+ function readCacheUsage(raw) {
49
+ if (typeof raw !== "object" || raw === null)
50
+ return void 0;
51
+ const usage = raw;
52
+ const uncachedInput = numberOr(usage.input_tokens, 0);
53
+ const outputTokens = numberOr(usage.output_tokens, 0);
54
+ const cacheRead = numberOr(usage.cache_read_input_tokens, void 0);
55
+ const cacheWrite = numberOr(usage.cache_creation_input_tokens, void 0);
56
+ return {
57
+ inputTokens: uncachedInput + (cacheRead ?? 0) + (cacheWrite ?? 0),
58
+ outputTokens,
59
+ ...cacheRead !== void 0 ? { cachedInputTokens: cacheRead } : {},
60
+ ...cacheWrite !== void 0 ? { cacheWriteTokens: cacheWrite } : {}
61
+ };
62
+ }
63
+ function numberOr(value, fallback) {
64
+ return typeof value === "number" && Number.isFinite(value) ? value : fallback;
65
+ }
66
+
67
+ export {
68
+ MESSAGE_CACHE_BREAKPOINTS,
69
+ providerSupportsPromptCache,
70
+ planMessageBreakpoints,
71
+ withCacheControl,
72
+ readCacheUsage
73
+ };