@qwen-code/qwen-code 0.20.2-headless-image-routing.1 → 0.21.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 (370) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +5 -0
  2. package/bundled/qc-helper/docs/features/sub-agents.md +23 -5
  3. package/bundled/qc-helper/docs/integration-github-action.md +9 -9
  4. package/bundled/review/SKILL.md +7 -3
  5. package/chunks/MaxSizedBox-5DPPWPGT.js +85 -0
  6. package/chunks/{StandaloneSessionPicker-PLQQB22E.js → StandaloneSessionPicker-BIRMPLRD.js} +66 -59
  7. package/chunks/{acp-startup-profiler-N3RHHXJ3.js → acp-startup-profiler-RV3IV562.js} +2 -2
  8. package/chunks/{acpAgent-AIVK2EM5.js → acpAgent-6J2U72PQ.js} +705 -182
  9. package/chunks/agent-6ODUANDO.js +81 -0
  10. package/chunks/agent-headless-7BYQTMHW.js +75 -0
  11. package/chunks/{anthropicContentGenerator-HGWAHO24.js → anthropicContentGenerator-75BKLTSP.js} +117 -43
  12. package/chunks/{artifact-tool-56T5IMBP.js → artifact-tool-Y5T7GG7F.js} +3 -3
  13. package/chunks/{askUserQuestion-E25OBIC2.js → askUserQuestion-2H6747FR.js} +3 -3
  14. package/chunks/bridge-ZUB64FAE.js +90 -0
  15. package/chunks/{build-GHIZ4MSZ.js → build-RV63TIRH.js} +2 -3
  16. package/chunks/{ca-N6VVUFVB.js → ca-25EDXPFZ.js} +2 -0
  17. package/chunks/{channel-worker-group-QZV2SP5U.js → channel-worker-group-2ZD7TVAT.js} +8 -7
  18. package/chunks/{channel-worker-manager-3GMAU45H.js → channel-worker-manager-4OA4BCGB.js} +190 -30
  19. package/chunks/{channel-worker-supervisor-QCXSXCRY.js → channel-worker-supervisor-V7KCFJTS.js} +7 -6
  20. package/chunks/{chunk-TYQMGACW.js → chunk-22C7BQ6D.js} +508 -10967
  21. package/chunks/chunk-2JZBVYTU.js +452 -0
  22. package/chunks/{chunk-H2XVO6NE.js → chunk-2MIN6GRR.js} +1 -1
  23. package/chunks/{chunk-4DWTDZGS.js → chunk-2NH6DYI4.js} +12 -12
  24. package/chunks/chunk-2SCDWPXI.js +246 -0
  25. package/chunks/{chunk-QE4KFTBS.js → chunk-2X55UKQE.js} +3 -3
  26. package/chunks/{chunk-QBUDF33N.js → chunk-3QMGYBFN.js} +1 -1
  27. package/chunks/{chunk-3OAKYHRG.js → chunk-3RN6GBKS.js} +1 -1
  28. package/chunks/{chunk-QR6U5QPP.js → chunk-3SJ43L4W.js} +4 -0
  29. package/chunks/chunk-46UV252V.js +128 -0
  30. package/chunks/{chunk-GHRSKGHF.js → chunk-4WIZGAH3.js} +7 -7
  31. package/chunks/{chunk-CAS7CB3T.js → chunk-55DJUCI2.js} +87 -29
  32. package/chunks/{chunk-QNLNLENL.js → chunk-5I2IWRSH.js} +2 -2
  33. package/chunks/{chunk-H24SOJIQ.js → chunk-5NBDS5S6.js} +147 -7
  34. package/chunks/{chunk-E4IMU4Y5.js → chunk-63P4EL5V.js} +1 -1
  35. package/chunks/chunk-6FGBXPWM.js +293 -0
  36. package/chunks/{chunk-FFFM6NJV.js → chunk-6GMVPFB2.js} +155 -73
  37. package/chunks/{chunk-KWK7UE6L.js → chunk-6OUGMXDC.js} +6 -6
  38. package/chunks/{chunk-QRUIS3DN.js → chunk-6PEXNQTX.js} +22 -1
  39. package/chunks/{chunk-FZPTCQY7.js → chunk-7JURR4JT.js} +1 -1
  40. package/chunks/{chunk-Q6NAKZTA.js → chunk-7MVVZO4N.js} +4 -4
  41. package/chunks/{chunk-6ZBPS62S.js → chunk-7ZCNENPP.js} +1 -1
  42. package/chunks/{chunk-6X4GWOPW.js → chunk-A5L3JMUA.js} +1 -1
  43. package/chunks/{chunk-YO2XRXY6.js → chunk-ACY3A37B.js} +3 -3
  44. package/chunks/chunk-AMDSOFFV.js +10860 -0
  45. package/chunks/{chunk-RV4C2ZFG.js → chunk-BIQWWWJN.js} +1 -1
  46. package/chunks/{chunk-ZHERRXZJ.js → chunk-BJX6ZSUK.js} +4 -4
  47. package/chunks/chunk-BK2UNYWD.js +29 -0
  48. package/chunks/{chunk-FRPDJNK3.js → chunk-BKHWX6I2.js} +3 -3
  49. package/chunks/chunk-BPJSQIJX.js +100 -0
  50. package/chunks/{chunk-M7WBGLYP.js → chunk-BULDBTYC.js} +2 -0
  51. package/chunks/{chunk-ZDP2Y2AL.js → chunk-CIKQ7KKO.js} +4625 -8645
  52. package/chunks/{chunk-PEJWA3QQ.js → chunk-D3UEZIQH.js} +4 -2
  53. package/chunks/chunk-DHHOYAPR.js +1462 -0
  54. package/chunks/{chunk-LESHKUWF.js → chunk-DLWL3Z7A.js} +5 -3
  55. package/chunks/{chunk-XHATNRQA.js → chunk-DP3IHZGG.js} +0 -2
  56. package/chunks/chunk-E5TUC6CA.js +479 -0
  57. package/chunks/{chunk-JC26SJ5Y.js → chunk-EBJQ6AXW.js} +13 -12
  58. package/chunks/{chunk-RCWKCN2Z.js → chunk-EPDRMGT4.js} +164 -17
  59. package/chunks/{chunk-FUFCALSJ.js → chunk-ETSW4KLJ.js} +2 -2
  60. package/chunks/{chunk-KHOVYUHX.js → chunk-FNQ6T3CV.js} +20 -3
  61. package/chunks/{chunk-SP5WRGVG.js → chunk-FQK6JAFG.js} +72 -23
  62. package/chunks/{chunk-NWZY2SPY.js → chunk-FSITMZJH.js} +8 -8
  63. package/chunks/{chunk-6RLROE6G.js → chunk-GLWP3FDB.js} +80 -15
  64. package/chunks/{chunk-KPBVP6SL.js → chunk-GSN55ZRI.js} +5 -5
  65. package/chunks/{chunk-MLYGPZGU.js → chunk-H4SBPHSA.js} +3 -3
  66. package/chunks/chunk-H5FFA6TH.js +902 -0
  67. package/chunks/{chunk-TDKQP3M6.js → chunk-HIJQF5B5.js} +1 -1
  68. package/chunks/{chunk-5G3ZVADU.js → chunk-IJTOWOD7.js} +17 -6
  69. package/chunks/chunk-IKCX4CCL.js +469 -0
  70. package/chunks/{chunk-LPEONXNV.js → chunk-IKYJHJNF.js} +3 -3
  71. package/chunks/{chunk-DTZY2SH2.js → chunk-IO3IX5Q4.js} +1 -1
  72. package/chunks/{chunk-RS7MT2QG.js → chunk-IPUUTYMV.js} +2 -4
  73. package/chunks/{chunk-XU457J4V.js → chunk-IRH27ZC2.js} +2 -2
  74. package/chunks/{chunk-46DK772E.js → chunk-J24WCGIN.js} +4 -4
  75. package/chunks/{chunk-4LVZNIDO.js → chunk-J56UI34H.js} +4 -13
  76. package/chunks/{chunk-TJTKSVIV.js → chunk-JLU636DO.js} +5 -1
  77. package/chunks/{chunk-RKWX4CMO.js → chunk-JVPM2ULZ.js} +6 -6
  78. package/chunks/{chunk-ENPCQK44.js → chunk-JXJFVC6E.js} +37 -18
  79. package/chunks/{chunk-NABLFI57.js → chunk-JZA3JUDJ.js} +1 -1
  80. package/chunks/{chunk-CGLQAVZE.js → chunk-K36B6G2O.js} +5 -5
  81. package/chunks/{chunk-GPSKDNEE.js → chunk-K4XWPEWB.js} +4 -4
  82. package/chunks/{chunk-QOZOIPSF.js → chunk-KIM5GUMA.js} +650 -113
  83. package/chunks/{chunk-JZSM2IZ3.js → chunk-KMQ33DO4.js} +7 -5
  84. package/chunks/{chunk-E2UVIFI2.js → chunk-KRXPRVGL.js} +0 -1
  85. package/chunks/{chunk-WHGVTP7Q.js → chunk-L26JL52R.js} +3 -3
  86. package/chunks/{chunk-7Z6JQEL6.js → chunk-L5UHQJTJ.js} +1 -1
  87. package/chunks/{chunk-O2XSCRCS.js → chunk-LB6DUZ26.js} +259 -67
  88. package/chunks/chunk-LEH5C7FV.js +232 -0
  89. package/chunks/{chunk-RWV32G2M.js → chunk-LH2BYDQ5.js} +6 -4
  90. package/chunks/{chunk-QKTHJXCS.js → chunk-LK7CHLVP.js} +79 -2
  91. package/chunks/{chunk-VRRF3GW5.js → chunk-LKEJ26GS.js} +11 -11
  92. package/chunks/{chunk-SQFXI7VK.js → chunk-LQIW3YFY.js} +227 -41
  93. package/chunks/chunk-LS77BEZP.js +405 -0
  94. package/chunks/{chunk-BSHD62QJ.js → chunk-M4FMGVY4.js} +3 -3
  95. package/chunks/{chunk-57FIIFJN.js → chunk-M5JM7OSF.js} +1 -1
  96. package/chunks/{chunk-7362QS5B.js → chunk-MB4MZHMJ.js} +80 -37
  97. package/chunks/{chunk-4K56OJFJ.js → chunk-MUP3T3AD.js} +1 -1
  98. package/chunks/{chunk-3HFNGB2O.js → chunk-MVSUYZDT.js} +4 -4
  99. package/chunks/{chunk-T5IO6FZ4.js → chunk-MZAXJAUM.js} +1 -1
  100. package/chunks/{chunk-QKNXKTZX.js → chunk-NH6KE4JX.js} +3 -3
  101. package/chunks/chunk-NIBLUX3Y.js +934 -0
  102. package/chunks/{chunk-OQB4EXO4.js → chunk-NL7LTRLR.js} +1 -1
  103. package/chunks/{chunk-CS2FSS7W.js → chunk-OFDOK3VM.js} +5 -5
  104. package/chunks/{chunk-LIZRAKPB.js → chunk-OHNBB4XR.js} +1 -1
  105. package/chunks/{chunk-MDZTPSXO.js → chunk-OKY7HXPG.js} +2 -2
  106. package/chunks/{chunk-NHDKSOEY.js → chunk-P3QQPMQA.js} +5 -5
  107. package/chunks/{chunk-7THPNISK.js → chunk-PC6JANNU.js} +5 -5
  108. package/chunks/{chunk-OTQ6PSZC.js → chunk-PHOF65IG.js} +3498 -1030
  109. package/chunks/{chunk-OQ5SYCPE.js → chunk-PJIZUQVC.js} +2 -2
  110. package/chunks/{chunk-5DTTYNB7.js → chunk-PQNHRFJC.js} +16 -3
  111. package/chunks/{chunk-YM3SZTH4.js → chunk-PR75REBZ.js} +18 -1
  112. package/chunks/{chunk-RECUEJ7B.js → chunk-PSOO6YXD.js} +18 -15
  113. package/chunks/{chunk-X6N25LXS.js → chunk-PWTZEM3C.js} +2 -2
  114. package/chunks/{chunk-5NJTNQUW.js → chunk-PWVFN2LF.js} +1 -1
  115. package/chunks/{chunk-7AUH6A4T.js → chunk-Q4M4MDQ4.js} +2 -2
  116. package/chunks/{chunk-EZPB6S2I.js → chunk-QAF7NMK7.js} +1 -1
  117. package/chunks/{chunk-5GI55PF5.js → chunk-R5AFZNQW.js} +5 -5
  118. package/chunks/{chunk-T5B5NQZX.js → chunk-RF3EXIHJ.js} +47 -60
  119. package/chunks/{chunk-4K7VDKAD.js → chunk-RHLZR4E5.js} +1 -1
  120. package/chunks/{chunk-TJDW42MV.js → chunk-RIBKPMRP.js} +220 -141
  121. package/chunks/{chunk-RVLZCXEE.js → chunk-RWTEFFPU.js} +82 -3
  122. package/chunks/{chunk-L5QZGCRH.js → chunk-RZIX2G32.js} +1 -1
  123. package/chunks/{chunk-LLKWRXSS.js → chunk-SQCQ4KO2.js} +350 -418
  124. package/chunks/{chunk-THJNPLI4.js → chunk-TARRHLLG.js} +1 -0
  125. package/chunks/{chunk-XCXYRDHB.js → chunk-TEHGS6UP.js} +47 -18
  126. package/chunks/{chunk-PQIVAWXN.js → chunk-TGILQ3YH.js} +8 -8
  127. package/chunks/{chunk-Q2YKNMLS.js → chunk-TOFQCPDC.js} +43 -10
  128. package/chunks/{chunk-L3KUB6XM.js → chunk-TPRQ7RZH.js} +586 -242
  129. package/chunks/{chunk-T4TZQJ7W.js → chunk-TWPJO254.js} +5 -16
  130. package/chunks/{chunk-HIP6TVWA.js → chunk-U7M2DMGW.js} +3 -3
  131. package/chunks/{chunk-ACW3VNUE.js → chunk-UDX5OBWR.js} +41 -9
  132. package/chunks/{chunk-LW2FUYBN.js → chunk-USTWD7QV.js} +6 -4
  133. package/chunks/{chunk-NPQDJGKU.js → chunk-UUUTRMI2.js} +1 -1
  134. package/chunks/chunk-UW5EOVUN.js +249 -0
  135. package/chunks/{chunk-6IL7KRLE.js → chunk-VAK25FTU.js} +1 -1
  136. package/chunks/{chunk-O4BHWVUD.js → chunk-VIA5XA4U.js} +5 -2
  137. package/chunks/{chunk-EBXZ2YGV.js → chunk-VRYUBFMC.js} +1 -1
  138. package/chunks/{chunk-TWVE5ZS5.js → chunk-VULLI6WQ.js} +172 -6
  139. package/chunks/{chunk-LNDD3IML.js → chunk-WCXCRJYB.js} +1 -1
  140. package/chunks/{chunk-2LI23QA6.js → chunk-X5XDDSSH.js} +1 -1
  141. package/chunks/{chunk-Q35QUZDQ.js → chunk-Y34KJKDC.js} +1 -1
  142. package/chunks/{chunk-7NR2AIK6.js → chunk-YBL3QUDD.js} +2 -2
  143. package/chunks/{chunk-H4AR2JQF.js → chunk-YH6G52F2.js} +3 -3
  144. package/chunks/{chunk-MBOJHHPI.js → chunk-YPE6A4GC.js} +2 -2
  145. package/chunks/{chunk-3EK5ZOUQ.js → chunk-YX324OPW.js} +1 -1
  146. package/chunks/{chunk-4PTLZ3NX.js → chunk-Z2BC6UJ5.js} +3 -3
  147. package/chunks/{chunk-QLJUC7TG.js → chunk-ZD6UTE4A.js} +1 -1
  148. package/chunks/{chunk-LX3COOXF.js → chunk-ZFDTEDCF.js} +6 -6
  149. package/chunks/chunk-ZJHVAS7M.js +289 -0
  150. package/chunks/{chunk-4OWXOUYF.js → chunk-ZNAUOR2I.js} +15 -12
  151. package/chunks/{chunk-T2L47JJK.js → chunk-ZOIFNCKL.js} +4 -4
  152. package/chunks/{computer-use-2VIV73WK.js → computer-use-SOQ4E3VX.js} +43 -35
  153. package/chunks/{config-utils-FYTBZLCJ.js → config-utils-7V7GGIW6.js} +3 -3
  154. package/chunks/contextCommand-JLHYA34Z.js +80 -0
  155. package/chunks/{create-sub-session-AZ77LBL3.js → create-sub-session-IWW2IZ2T.js} +3 -3
  156. package/chunks/{create-sub-session-XDHHC2P4.js → create-sub-session-QRJLW5BV.js} +43 -35
  157. package/chunks/{cron-create-KTWJM7QT.js → cron-create-YIID5XAW.js} +6 -6
  158. package/chunks/{cron-delete-2P3I5ULL.js → cron-delete-ZVHYCEP2.js} +5 -5
  159. package/chunks/{cron-list-PXDPGEDQ.js → cron-list-XEGS463Q.js} +5 -5
  160. package/chunks/{daemon-RAPSDJH7.js → daemon-YO6433NF.js} +350 -53
  161. package/chunks/daemon-status-provider-2233Q37D.js +89 -0
  162. package/chunks/{de-4IBXM7CN.js → de-HGRCYDEJ.js} +1 -0
  163. package/chunks/{dist-UIFWIFRO.js → dist-46NQKLTW.js} +2 -2
  164. package/chunks/{dist-XRYV6TJP.js → dist-AIKFMUKK.js} +50 -4
  165. package/chunks/{dist-XBJVSWS2.js → dist-BBLXMS3N.js} +14 -2
  166. package/chunks/{dist-OMW6WDEO.js → dist-F6IBUDR4.js} +40 -9
  167. package/chunks/{dist-PJLG2XYX.js → dist-WEAHOXDM.js} +1 -1
  168. package/chunks/{dist-OAV7LJGJ.js → dist-YFNEUWSE.js} +26 -2
  169. package/chunks/earlyInputCapture-A7NDU3PF.js +82 -0
  170. package/chunks/{edit-CS6SFEXC.js → edit-OBDSQURM.js} +43 -35
  171. package/chunks/{en-USMCCJAJ.js → en-MTWBNGDO.js} +15 -0
  172. package/chunks/{enter-worktree-LMAL75DY.js → enter-worktree-U6MRPQ2P.js} +43 -35
  173. package/chunks/{enterPlanMode-WVJB4DSS.js → enterPlanMode-BC5QUZZ2.js} +43 -35
  174. package/chunks/{environment-6YHC4JAJ.js → environment-W5UFC2CH.js} +46 -38
  175. package/chunks/errors-M7CLORXH.js +88 -0
  176. package/chunks/{exit-worktree-KPFD742L.js → exit-worktree-DGNYMECB.js} +43 -35
  177. package/chunks/{exitPlanMode-UEJS6CDY.js → exitPlanMode-GXTBWQAR.js} +43 -35
  178. package/chunks/{fast-path-G2N4NRCA.js → fast-path-JJZFJANL.js} +6 -6
  179. package/chunks/{fast-path-settings-DAOVFADC.js → fast-path-settings-WQJU2LAT.js} +2 -2
  180. package/chunks/{fr-WVHEBDDB.js → fr-45RLL55O.js} +1 -0
  181. package/chunks/{gemini-2MDVIOVT.js → gemini-QS36EBZV.js} +132 -102
  182. package/chunks/{geminiContentGenerator-ZXTDBMFR.js → geminiContentGenerator-AG4KB6CV.js} +14 -8
  183. package/chunks/{getMachineId-bsd-QFVLPUPT.js → getMachineId-bsd-V7W3GODC.js} +1 -1
  184. package/chunks/{getMachineId-darwin-DGMQQE2E.js → getMachineId-darwin-TDO75DQP.js} +1 -1
  185. package/chunks/{getMachineId-linux-R4Z6CSWC.js → getMachineId-linux-TF43WQT2.js} +1 -1
  186. package/chunks/{getMachineId-unsupported-Z3SBVBUV.js → getMachineId-unsupported-ZGUO3TXT.js} +1 -1
  187. package/chunks/{getMachineId-win-SCK5UFDT.js → getMachineId-win-ECFYZZFQ.js} +1 -1
  188. package/chunks/{glob-562XFLIZ.js → glob-V7R3PSK3.js} +43 -35
  189. package/chunks/{grep-MGEFBDQK.js → grep-QYPSK7OP.js} +43 -35
  190. package/chunks/handleAutoUpdate-6DBEZYPV.js +81 -0
  191. package/chunks/{i18n-R6HJENXA.js → i18n-VUJJZIMU.js} +44 -36
  192. package/chunks/image-gen-Z3VPGKRC.js +240 -0
  193. package/chunks/initializer-UWAK5U5O.js +86 -0
  194. package/chunks/installationInfo-6O2YAA52.js +80 -0
  195. package/chunks/{ja-KY4ROZTE.js → ja-B7DF7DFG.js} +1 -0
  196. package/chunks/{keychain-token-storage-6ACJDYIB.js → keychain-token-storage-MDTG3WRM.js} +3 -3
  197. package/chunks/{kittyProtocolDetector-HCNNKJTI.js → kittyProtocolDetector-MBRTDRBK.js} +5 -3
  198. package/chunks/list-GB4ESM3T.js +89 -0
  199. package/chunks/list-agents-5KJJHR6I.js +80 -0
  200. package/chunks/loadedSettingsAdapter-OT6JVQ7U.js +83 -0
  201. package/chunks/loggingContentGenerator-HS3S5H3Q.js +1077 -0
  202. package/chunks/{loop-wakeup-RNMRVA66.js → loop-wakeup-FXKNNYSY.js} +7 -7
  203. package/chunks/{ls-J2ZI5XYK.js → ls-NTK6VOQJ.js} +5 -5
  204. package/chunks/{lsp-UMS3NUB5.js → lsp-2JI24STP.js} +3 -3
  205. package/chunks/{managed-npm-update-4KNYSOYC.js → managed-npm-update-JYEMMXA3.js} +94 -38
  206. package/chunks/mcp-6DBDJPFU.js +83 -0
  207. package/chunks/{monitor-DMHKE4SW.js → monitor-R3ODH5U6.js} +45 -36
  208. package/chunks/node-UUDY34IG.js +305 -0
  209. package/chunks/nonInteractiveCli-MOYCYBBU.js +141 -0
  210. package/chunks/{notebook-edit-35SJGEOR.js → notebook-edit-BNOK452R.js} +43 -35
  211. package/chunks/{openaiContentGenerator-5LPAFXPF.js → openaiContentGenerator-WMCU3O2H.js} +27 -17
  212. package/chunks/pidfile-TFRZZZIO.js +86 -0
  213. package/chunks/{processUtils-GM2I55KF.js → processUtils-RT7UNCC2.js} +2 -2
  214. package/chunks/{pt-OK455PLH.js → pt-22Q3FP73.js} +1 -0
  215. package/chunks/{qwenContentGenerator-HKOYNP7H.js → qwenContentGenerator-HHCRK4SX.js} +56 -42
  216. package/chunks/{qwenOAuth2-NUUYC3V5.js → qwenOAuth2-OWLB5AKH.js} +14 -27
  217. package/chunks/read-file-APMO3PSX.js +31 -0
  218. package/chunks/{read-mcp-resource-F6HYMDUY.js → read-mcp-resource-4DKQWGHD.js} +3 -3
  219. package/chunks/{record-artifact-7GCFLDD7.js → record-artifact-RQKFYO5B.js} +3 -3
  220. package/chunks/resumeHistoryUtils-6KRYEAWZ.js +91 -0
  221. package/chunks/ripGrep-BEJDEDXW.js +73 -0
  222. package/chunks/{ru-7SPDGMGD.js → ru-FZCNZHDC.js} +1 -0
  223. package/chunks/{run-qwen-serve-5VH3F4NW.js → run-qwen-serve-FU6HEM4J.js} +271 -57
  224. package/chunks/{runtime-OH77YH7W.js → runtime-XXRRTNP6.js} +55 -45
  225. package/chunks/{scheduler-WJQSLCSV.js → scheduler-G2ZS2Z7E.js} +43 -35
  226. package/chunks/{sdk-exporters-grpc-ETLH47EP.js → sdk-exporters-grpc-AK3LGHNO.js} +3 -3
  227. package/chunks/{sdk-exporters-http-T3POX73F.js → sdk-exporters-http-FYBSUCPD.js} +6 -6
  228. package/chunks/{sdk-impl-NSLPDH6I.js → sdk-impl-GMVPB7NB.js} +6 -6
  229. package/chunks/{send-message-PYIJ2PZL.js → send-message-Q6OOR6BR.js} +46 -9
  230. package/chunks/serve-7BSTXJ4T.js +89 -0
  231. package/chunks/{server-E4N4AI6Z.js → server-4UMH7OIZ.js} +2362 -411
  232. package/chunks/{session-5YUWIOQE.js → session-K3O3Q2SV.js} +105 -87
  233. package/chunks/{settings-YY7ZSFO7.js → settings-CR2EWTBA.js} +53 -45
  234. package/chunks/shell-HH3PF3A2.js +83 -0
  235. package/chunks/{skill-PAIDX3EU.js → skill-I3SDA4MB.js} +17 -16
  236. package/chunks/spawnChannel-RWNDBXGA.js +82 -0
  237. package/chunks/{src-IZXLJI5M.js → src-GE4TTTML.js} +302 -184
  238. package/chunks/{standalone-update-X675JVBL.js → standalone-update-Q6WFRZZQ.js} +45 -37
  239. package/chunks/{startInteractiveUI-ND2IVBU3.js → startInteractiveUI-SLZGHRPH.js} +747 -310
  240. package/chunks/{syntheticOutput-H7RTI5KL.js → syntheticOutput-I3757IWH.js} +4 -4
  241. package/chunks/{task-create-7474AJJD.js → task-create-N7WQSGYA.js} +10 -10
  242. package/chunks/{task-list-633HGOIB.js → task-list-FOPULZEP.js} +7 -7
  243. package/chunks/{task-stop-MNUGHPIA.js → task-stop-H6RHXFVQ.js} +4 -4
  244. package/chunks/{task-update-66GQB5LI.js → task-update-M57TFZJT.js} +10 -10
  245. package/chunks/{team-create-2DEYNMMN.js → team-create-YJALH5D2.js} +46 -38
  246. package/chunks/{team-delete-BB3CG3QF.js → team-delete-QE2UXJL7.js} +7 -7
  247. package/chunks/{team-plan-approval-65AVAOCT.js → team-plan-approval-34QFYKGN.js} +43 -35
  248. package/chunks/theme-manager-SWRILQHI.js +77 -0
  249. package/chunks/{todoWrite-KRAUN54W.js → todoWrite-VQ7FKOHL.js} +5 -5
  250. package/chunks/{tool-search-ZQP3SMTV.js → tool-search-NF7GB6LE.js} +16 -16
  251. package/chunks/total-session-admission-DLHHHLD3.js +84 -0
  252. package/chunks/{tree-sitter-FS4VPMZA.js → tree-sitter-4D7QS7F6.js} +1 -1
  253. package/chunks/{tree-sitter-bash-6B46JJCV.js → tree-sitter-bash-VEJGF5XF.js} +1 -1
  254. package/chunks/{trustedFolders-LURI52LP.js → trustedFolders-KHXHY6PY.js} +44 -36
  255. package/chunks/{update-relaunch-BPWFIDLM.js → update-relaunch-WBUZJC5O.js} +5 -5
  256. package/chunks/updateCheck-RKL6M5XN.js +92 -0
  257. package/chunks/useAutoAcceptIndicator-CFQ5BUJL.js +93 -0
  258. package/chunks/{validateNonInterActiveAuth-HWD6Y22I.js → validateNonInterActiveAuth-3R223G3R.js} +89 -80
  259. package/chunks/{version-OD4JAFG7.js → version-HS7YSFHV.js} +1 -1
  260. package/chunks/{web-fetch-RFBKNU24.js → web-fetch-NKCSG7ZE.js} +18 -16
  261. package/chunks/{web-search-AKTVS5YZ.js → web-search-S62WAP4S.js} +13 -27
  262. package/chunks/{workflow-VZVCOSZN.js → workflow-QAGU5RU4.js} +44 -36
  263. package/chunks/workspace-providers-status-QSVZUETE.js +86 -0
  264. package/chunks/{workspace-registration-store-Q5SFJSX4.js → workspace-registration-store-24JMHDGF.js} +2 -2
  265. package/chunks/workspace-registry-UT4RBNBM.js +88 -0
  266. package/chunks/workspace-service-JFWRUS4V.js +98 -0
  267. package/chunks/workspace-skills-status-ZBBKJOI2.js +85 -0
  268. package/chunks/write-file-VHIXW5M7.js +73 -0
  269. package/chunks/{zh-WY5DWYZD.js → zh-LUIGBD55.js} +15 -0
  270. package/chunks/{zh-TW-BM47YBFH.js → zh-TW-F5KG2IYD.js} +15 -0
  271. package/cli-entry.js +10 -1
  272. package/cli.js +13 -13
  273. package/locales/ca.js +2 -0
  274. package/locales/de.js +1 -0
  275. package/locales/en.js +25 -0
  276. package/locales/fr.js +1 -0
  277. package/locales/ja.js +1 -0
  278. package/locales/pt.js +1 -0
  279. package/locales/ru.js +1 -0
  280. package/locales/zh-TW.js +23 -0
  281. package/locales/zh.js +23 -0
  282. package/package.json +3 -3
  283. package/web-shell/assets/{arc-BWFm0SI0.js → arc-DcbWnB9T.js} +1 -1
  284. package/web-shell/assets/{architectureDiagram-3BPJPVTR-CZ_yL-DQ.js → architectureDiagram-3BPJPVTR-kMMF5sud.js} +1 -1
  285. package/web-shell/assets/{blockDiagram-GPEHLZMM-B9F9mJvG.js → blockDiagram-GPEHLZMM-Htl9vTJS.js} +1 -1
  286. package/web-shell/assets/{c4Diagram-AAUBKEIU-BUdwJW5f.js → c4Diagram-AAUBKEIU-BnZnm0mQ.js} +1 -1
  287. package/web-shell/assets/channel-Cq7YKtfC.js +1 -0
  288. package/web-shell/assets/{chunk-2J33WTMH-w4cF-qlF.js → chunk-2J33WTMH-DziB7kDG.js} +1 -1
  289. package/web-shell/assets/{chunk-4BX2VUAB-BXwURxHJ.js → chunk-4BX2VUAB-CmkD8daw.js} +1 -1
  290. package/web-shell/assets/{chunk-55IACEB6-Gem3LalC.js → chunk-55IACEB6-CHAd9A_U.js} +1 -1
  291. package/web-shell/assets/{chunk-727SXJPM-A3ddVojI.js → chunk-727SXJPM-Dqaam3fE.js} +1 -1
  292. package/web-shell/assets/{chunk-AQP2D5EJ-CjHZ5L_R.js → chunk-AQP2D5EJ-D_-saBYM.js} +1 -1
  293. package/web-shell/assets/{chunk-FMBD7UC4-CKgdgcpv.js → chunk-FMBD7UC4-B9r_veWD.js} +1 -1
  294. package/web-shell/assets/{chunk-ND2GUHAM-Cn2Dykjb.js → chunk-ND2GUHAM-B3EaCSpL.js} +1 -1
  295. package/web-shell/assets/{chunk-QZHKN3VN--0SyraC5.js → chunk-QZHKN3VN-CYq8x9mn.js} +1 -1
  296. package/web-shell/assets/classDiagram-4FO5ZUOK-CQ9aC1Tg.js +1 -0
  297. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ9aC1Tg.js +1 -0
  298. package/web-shell/assets/{cose-bilkent-S5V4N54A-CphhAity.js → cose-bilkent-S5V4N54A-D0ng4uiB.js} +1 -1
  299. package/web-shell/assets/{dagre-BM42HDAG-DU--jiKp.js → dagre-BM42HDAG-DCZollQv.js} +1 -1
  300. package/web-shell/assets/{diagram-2AECGRRQ-BzvuZw1Y.js → diagram-2AECGRRQ-Dfk2pWS0.js} +1 -1
  301. package/web-shell/assets/{diagram-5GNKFQAL-D84-49Y0.js → diagram-5GNKFQAL-kX38ltWR.js} +1 -1
  302. package/web-shell/assets/{diagram-KO2AKTUF-DQTq-3_3.js → diagram-KO2AKTUF-CJz2vsXh.js} +1 -1
  303. package/web-shell/assets/{diagram-LMA3HP47-8FTrshzN.js → diagram-LMA3HP47-BvMLZm_7.js} +1 -1
  304. package/web-shell/assets/{diagram-OG6HWLK6-BCjpDBCm.js → diagram-OG6HWLK6-l7kfStkO.js} +1 -1
  305. package/web-shell/assets/{erDiagram-TEJ5UH35-BtRObkmg.js → erDiagram-TEJ5UH35-BSVa8GGT.js} +1 -1
  306. package/web-shell/assets/{flowDiagram-I6XJVG4X-DTrW6oxy.js → flowDiagram-I6XJVG4X-CoawKIXH.js} +1 -1
  307. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BgPNSW6j.js → ganttDiagram-6RSMTGT7-DFUDH0zF.js} +1 -1
  308. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BTclNgGV.js → gitGraphDiagram-PVQCEYII-Y2pvpT4e.js} +1 -1
  309. package/web-shell/assets/{index-CxA7AqY6.js → index-D0GX0zZf.js} +1 -1
  310. package/web-shell/assets/index-D9haPt0X.css +5 -0
  311. package/web-shell/assets/index-ckX9Pq5k.js +1230 -0
  312. package/web-shell/assets/{infoDiagram-5YYISTIA-DCE4AJt2.js → infoDiagram-5YYISTIA-CU8_zLiX.js} +1 -1
  313. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-C8iE6q4Y.js → ishikawaDiagram-YF4QCWOH-AVQiV0DU.js} +1 -1
  314. package/web-shell/assets/{journeyDiagram-JHISSGLW-C_dxdyEc.js → journeyDiagram-JHISSGLW-DQ0VSKa3.js} +1 -1
  315. package/web-shell/assets/{kanban-definition-UN3LZRKU-Dw3n1u3w.js → kanban-definition-UN3LZRKU-BqnWqsE_.js} +1 -1
  316. package/web-shell/assets/{linear-C2BF2zJ9.js → linear-BkoihsaA.js} +1 -1
  317. package/web-shell/assets/{mermaid.core-CGTQU3MA.js → mermaid.core-5RJs-31j.js} +5 -5
  318. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BVFZm9ZC.js → mindmap-definition-RKZ34NQL-D33Bxnpd.js} +1 -1
  319. package/web-shell/assets/{pieDiagram-4H26LBE5-Cc-TNN3n.js → pieDiagram-4H26LBE5-BuEAw3BH.js} +1 -1
  320. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CgW3Rzsi.js → quadrantDiagram-W4KKPZXB-Kox_usEq.js} +1 -1
  321. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BAaj0Y3B.js → requirementDiagram-4Y6WPE33-CNjeUif0.js} +1 -1
  322. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-XJWmekxS.js → sankeyDiagram-5OEKKPKP-BCd2OL_U.js} +1 -1
  323. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CtRc_0wf.js → sequenceDiagram-3UESZ5HK-CF2ZTsz0.js} +1 -1
  324. package/web-shell/assets/{stateDiagram-AJRCARHV-WCnvMGy5.js → stateDiagram-AJRCARHV-qenSzHtm.js} +1 -1
  325. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-B7W4zlCr.js +1 -0
  326. package/web-shell/assets/{timeline-definition-PNZ67QCA-C9cRx49L.js → timeline-definition-PNZ67QCA-B5DyWdgs.js} +1 -1
  327. package/web-shell/assets/{vennDiagram-CIIHVFJN-BvXOCEt-.js → vennDiagram-CIIHVFJN-DqP4I_o_.js} +1 -1
  328. package/web-shell/assets/{wardley-L42UT6IY-ByafGtzu.js → wardley-L42UT6IY-CJe2e4mg.js} +1 -1
  329. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-CozAnw8x.js → wardleyDiagram-YWT4CUSO-BMDSw-Rr.js} +1 -1
  330. package/web-shell/assets/{xychartDiagram-2RQKCTM6-Camu9Qvq.js → xychartDiagram-2RQKCTM6-BTVZYkxD.js} +1 -1
  331. package/web-shell/index.html +17 -13
  332. package/chunks/MaxSizedBox-3XQIBACV.js +0 -78
  333. package/chunks/agent-QXD5NSKA.js +0 -73
  334. package/chunks/agent-headless-4VXR2TBK.js +0 -67
  335. package/chunks/bridge-GIBRSPE6.js +0 -81
  336. package/chunks/chunk-CBOQ3HY7.js +0 -2019
  337. package/chunks/chunk-MA6GYKK7.js +0 -6928
  338. package/chunks/contextCommand-XQU7KLIH.js +0 -72
  339. package/chunks/daemon-status-provider-KQVNB4VA.js +0 -80
  340. package/chunks/earlyInputCapture-WP5SA3KH.js +0 -74
  341. package/chunks/errors-JEYPXX4S.js +0 -80
  342. package/chunks/handleAutoUpdate-2VJPAW43.js +0 -73
  343. package/chunks/initializer-UOX67ZFQ.js +0 -78
  344. package/chunks/installationInfo-NQNY34X3.js +0 -72
  345. package/chunks/list-2Z7KS7ZF.js +0 -81
  346. package/chunks/loadedSettingsAdapter-LIYY3LE4.js +0 -75
  347. package/chunks/mcp-AJ4QW3JA.js +0 -75
  348. package/chunks/nonInteractiveCli-PUSO5QF6.js +0 -134
  349. package/chunks/pidfile-EH2JW2PB.js +0 -78
  350. package/chunks/read-file-JZ5VXILQ.js +0 -31
  351. package/chunks/resumeHistoryUtils-Z3HG4WKM.js +0 -84
  352. package/chunks/ripGrep-JNLJCT2B.js +0 -65
  353. package/chunks/serve-NN5FXWR6.js +0 -81
  354. package/chunks/shell-FXT3NVC6.js +0 -75
  355. package/chunks/spawnChannel-XAWLXNOD.js +0 -74
  356. package/chunks/theme-manager-2WZHPK2M.js +0 -69
  357. package/chunks/total-session-admission-HULB2TEQ.js +0 -75
  358. package/chunks/updateCheck-D4ESCHBJ.js +0 -88
  359. package/chunks/useAutoAcceptIndicator-CBNLOF2P.js +0 -86
  360. package/chunks/workspace-providers-status-TJTVHORI.js +0 -78
  361. package/chunks/workspace-registry-H6VM5WXK.js +0 -79
  362. package/chunks/workspace-service-ZNKD3I2J.js +0 -90
  363. package/chunks/workspace-skills-status-OOBIXADG.js +0 -77
  364. package/chunks/write-file-CAKK5IAO.js +0 -65
  365. package/web-shell/assets/channel-DiLlxxIf.js +0 -1
  366. package/web-shell/assets/classDiagram-4FO5ZUOK-CkylTdM4.js +0 -1
  367. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CkylTdM4.js +0 -1
  368. package/web-shell/assets/index-CGtQqOIa.css +0 -5
  369. package/web-shell/assets/index-TtM0hVjU.js +0 -1207
  370. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-D1gzH2Ue.js +0 -1
@@ -7,15 +7,17 @@ import {
7
7
  resolveRequestTimeout
8
8
  } from "./chunk-GLNBDYUX.js";
9
9
  import {
10
- buildRuntimeFetchOptions,
11
10
  defaultOutputCeiling,
12
11
  hasExplicitOutputLimit,
13
12
  parsePositiveIntegerEnvValue,
14
13
  tokenLimit
15
- } from "./chunk-CBOQ3HY7.js";
14
+ } from "./chunk-UW5EOVUN.js";
15
+ import {
16
+ buildRuntimeFetchOptions
17
+ } from "./chunk-2JZBVYTU.js";
16
18
  import {
17
19
  createDebugLogger
18
- } from "./chunk-OQB4EXO4.js";
20
+ } from "./chunk-NL7LTRLR.js";
19
21
  import {
20
22
  init_esbuild_shims
21
23
  } from "./chunk-5O2XNYP6.js";
@@ -1494,7 +1494,5 @@ var require_semver2 = __commonJS({
1494
1494
  });
1495
1495
 
1496
1496
  export {
1497
- require_diff,
1498
- require_gt,
1499
1497
  require_semver2 as require_semver
1500
1498
  };
@@ -0,0 +1,479 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ isPrivateHost
5
+ } from "./chunk-NH6KE4JX.js";
6
+ import {
7
+ loadUndici
8
+ } from "./chunk-2JZBVYTU.js";
9
+ import {
10
+ getErrorMessage
11
+ } from "./chunk-NL7LTRLR.js";
12
+ import {
13
+ init_esbuild_shims
14
+ } from "./chunk-5O2XNYP6.js";
15
+ import {
16
+ __name
17
+ } from "./chunk-J2S4EL5Y.js";
18
+
19
+ // packages/core/src/services/image-generation-service.ts
20
+ init_esbuild_shims();
21
+
22
+ // packages/core/src/extension/network-policy.ts
23
+ init_esbuild_shims();
24
+ import { promises as dns } from "node:dns";
25
+ import { BlockList, isIP } from "node:net";
26
+ var blockedAddresses = new BlockList();
27
+ var publicIpv6Addresses = new BlockList();
28
+ publicIpv6Addresses.addSubnet("2000::", 3, "ipv6");
29
+ for (const [address, prefix] of [
30
+ ["0.0.0.0", 8],
31
+ ["10.0.0.0", 8],
32
+ ["100.64.0.0", 10],
33
+ ["127.0.0.0", 8],
34
+ ["169.254.0.0", 16],
35
+ ["172.16.0.0", 12],
36
+ ["192.0.0.0", 24],
37
+ ["192.0.2.0", 24],
38
+ ["192.88.99.0", 24],
39
+ ["192.168.0.0", 16],
40
+ ["198.18.0.0", 15],
41
+ ["198.51.100.0", 24],
42
+ ["203.0.113.0", 24],
43
+ ["224.0.0.0", 4],
44
+ ["240.0.0.0", 4]
45
+ ]) {
46
+ blockedAddresses.addSubnet(address, prefix, "ipv4");
47
+ }
48
+ for (const [address, prefix] of [
49
+ ["2001::", 23],
50
+ ["2001:db8::", 32],
51
+ ["2002::", 16],
52
+ ["3fff::", 20]
53
+ ]) {
54
+ blockedAddresses.addSubnet(address, prefix, "ipv6");
55
+ }
56
+ async function waitForAbortable(promise, signal) {
57
+ if (!signal) return await promise;
58
+ signal.throwIfAborted();
59
+ return await new Promise((resolve, reject) => {
60
+ let settled = false;
61
+ const finish = /* @__PURE__ */ __name((callback) => {
62
+ if (settled) return;
63
+ settled = true;
64
+ signal.removeEventListener("abort", onAbort);
65
+ callback();
66
+ }, "finish");
67
+ const onAbort = /* @__PURE__ */ __name(() => finish(() => reject(signal.reason)), "onAbort");
68
+ signal.addEventListener("abort", onAbort, { once: true });
69
+ if (signal.aborted) {
70
+ onAbort();
71
+ return;
72
+ }
73
+ promise.then(
74
+ (value) => finish(() => resolve(value)),
75
+ (error) => finish(() => reject(error))
76
+ );
77
+ });
78
+ }
79
+ __name(waitForAbortable, "waitForAbortable");
80
+ function stripIpv6Brackets(hostname) {
81
+ return hostname.startsWith("[") && hostname.endsWith("]") ? hostname.slice(1, -1) : hostname;
82
+ }
83
+ __name(stripIpv6Brackets, "stripIpv6Brackets");
84
+ function parseMappedIpv4(address) {
85
+ const suffix = address.toLowerCase().slice("::ffff:".length);
86
+ if (isIP(suffix) === 4) return suffix;
87
+ const parts = suffix.split(":");
88
+ if (parts.length !== 2 || parts.some((part) => !/^[\da-f]{1,4}$/.test(part))) {
89
+ return void 0;
90
+ }
91
+ const upper = Number.parseInt(parts[0], 16);
92
+ const lower = Number.parseInt(parts[1], 16);
93
+ return `${upper >> 8}.${upper & 255}.${lower >> 8}.${lower & 255}`;
94
+ }
95
+ __name(parseMappedIpv4, "parseMappedIpv4");
96
+ function isBlockedAddress(address, family) {
97
+ if (family === 6 && address.toLowerCase().startsWith("::ffff:")) {
98
+ const mapped = parseMappedIpv4(address);
99
+ return mapped === void 0 || isBlockedAddress(mapped, 4);
100
+ }
101
+ if (family === 6 && !publicIpv6Addresses.check(address, "ipv6")) return true;
102
+ return blockedAddresses.check(address, family === 6 ? "ipv6" : "ipv4");
103
+ }
104
+ __name(isBlockedAddress, "isBlockedAddress");
105
+ async function resolveNetworkTarget(value, policy, signal) {
106
+ signal?.throwIfAborted();
107
+ const url = value instanceof URL ? value : new URL(value);
108
+ if (policy !== "public") return { url };
109
+ if (url.protocol !== "https:") {
110
+ throw new Error("Public extension network requests must use HTTPS.");
111
+ }
112
+ if (url.username || url.password) {
113
+ throw new Error(
114
+ "Public extension network requests must not use credentials."
115
+ );
116
+ }
117
+ const hostname = stripIpv6Brackets(url.hostname);
118
+ const literalFamily = isIP(hostname);
119
+ const addresses = literalFamily ? [{ address: hostname, family: literalFamily }] : await waitForAbortable(
120
+ dns.lookup(hostname, { all: true, verbatim: true }),
121
+ signal
122
+ );
123
+ if (addresses.length === 0) {
124
+ throw new Error(`Extension network host did not resolve: ${hostname}`);
125
+ }
126
+ if (addresses.some(({ address, family }) => isBlockedAddress(address, family))) {
127
+ throw new Error(
128
+ `Extension network host resolved to a blocked address: ${hostname}`
129
+ );
130
+ }
131
+ const selected = addresses[0];
132
+ const lookup = /* @__PURE__ */ __name((requestedHostname, options, callback) => {
133
+ if (stripIpv6Brackets(requestedHostname) !== hostname) {
134
+ const error = new Error(
135
+ "Pinned extension lookup hostname mismatch"
136
+ );
137
+ error.code = "ENOTFOUND";
138
+ callback(error, "", 0);
139
+ return;
140
+ }
141
+ if (options.all) {
142
+ callback(null, [selected]);
143
+ } else {
144
+ callback(null, selected.address, selected.family);
145
+ }
146
+ }, "lookup");
147
+ const port = url.port || "443";
148
+ const curlHostname = literalFamily === 6 ? `[${hostname}]` : hostname;
149
+ const curlAddress = selected.family === 6 ? `[${selected.address}]` : selected.address;
150
+ return {
151
+ url,
152
+ lookup,
153
+ curlResolve: `${curlHostname}:${port}:${curlAddress}`
154
+ };
155
+ }
156
+ __name(resolveNetworkTarget, "resolveNetworkTarget");
157
+
158
+ // packages/core/src/services/image-generation-service.ts
159
+ var GENERATION_TIMEOUT_MS = 24e4;
160
+ var DOWNLOAD_TIMEOUT_MS = 12e4;
161
+ var MAX_API_RESPONSE_BYTES = 1024 * 1024;
162
+ var MAX_IMAGE_BYTES = 10 * 1024 * 1024;
163
+ var MAX_DOWNLOAD_REDIRECTS = 3;
164
+ var REDIRECT_STATUSES = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
165
+ var PNG_SIGNATURE = Buffer.from([
166
+ 137,
167
+ 80,
168
+ 78,
169
+ 71,
170
+ 13,
171
+ 10,
172
+ 26,
173
+ 10
174
+ ]);
175
+ var ResponseSizeLimitError = class extends Error {
176
+ static {
177
+ __name(this, "ResponseSizeLimitError");
178
+ }
179
+ };
180
+ function normalizeImageGenerationBaseUrl(value) {
181
+ const baseUrl = value?.trim();
182
+ if (!baseUrl) return void 0;
183
+ let parsed;
184
+ try {
185
+ parsed = new URL(baseUrl);
186
+ } catch {
187
+ return void 0;
188
+ }
189
+ if (parsed.protocol !== "https:" || parsed.username || parsed.password || parsed.search || parsed.hash) {
190
+ return void 0;
191
+ }
192
+ return parsed.toString().replace(/\/+$/, "");
193
+ }
194
+ __name(normalizeImageGenerationBaseUrl, "normalizeImageGenerationBaseUrl");
195
+ async function generateImage(request) {
196
+ const fetchFn = request.fetchFn ?? fetch;
197
+ const baseUrl = normalizeImageGenerationBaseUrl(request.baseUrl);
198
+ if (!baseUrl) {
199
+ throw new Error(
200
+ "Image generation baseUrl must be a valid HTTPS URL without credentials, query, or fragment."
201
+ );
202
+ }
203
+ const generationUrl = baseUrl.endsWith(
204
+ "/services/aigc/multimodal-generation/generation"
205
+ ) ? baseUrl : `${baseUrl}/services/aigc/multimodal-generation/generation`;
206
+ const parameters = {
207
+ n: 1,
208
+ prompt_extend: true,
209
+ watermark: false
210
+ };
211
+ if (request.size) {
212
+ parameters["size"] = request.size;
213
+ }
214
+ let response;
215
+ try {
216
+ response = await fetchFn(generationUrl, {
217
+ method: "POST",
218
+ headers: {
219
+ Authorization: `Bearer ${request.apiKey}`,
220
+ "Content-Type": "application/json"
221
+ },
222
+ body: JSON.stringify({
223
+ model: request.model,
224
+ input: {
225
+ messages: [
226
+ {
227
+ role: "user",
228
+ content: [{ text: request.prompt }]
229
+ }
230
+ ]
231
+ },
232
+ parameters
233
+ }),
234
+ redirect: "error",
235
+ signal: combineWithTimeout(request.signal, GENERATION_TIMEOUT_MS)
236
+ });
237
+ } catch (error) {
238
+ throw new Error(
239
+ `Image generation request failed: ${getErrorMessage(error)}`,
240
+ { cause: error }
241
+ );
242
+ }
243
+ if (!response.ok) {
244
+ let payload2 = {};
245
+ try {
246
+ payload2 = await readJsonResponse(response, MAX_API_RESPONSE_BYTES);
247
+ } catch {
248
+ }
249
+ throw new Error(formatImageGenerationError(response.status, payload2));
250
+ }
251
+ const payload = await readJsonResponse(response, MAX_API_RESPONSE_BYTES);
252
+ const imageUrl = findGeneratedImageUrl(payload);
253
+ if (!imageUrl) {
254
+ throw new Error("Image generation response did not contain an image URL.");
255
+ }
256
+ const bytes = await downloadPng(imageUrl, fetchFn, request.signal);
257
+ const requestId = readString(payload, "request_id", "requestId");
258
+ return {
259
+ bytes,
260
+ mimeType: "image/png",
261
+ ...requestId ? { requestId } : {}
262
+ };
263
+ }
264
+ __name(generateImage, "generateImage");
265
+ async function readJsonResponse(response, maxBytes) {
266
+ const bytes = await readBoundedBody(response, maxBytes);
267
+ if (bytes.length === 0) {
268
+ return {};
269
+ }
270
+ try {
271
+ return JSON.parse(bytes.toString("utf8"));
272
+ } catch {
273
+ throw new Error(
274
+ `Image generation endpoint returned malformed JSON (HTTP ${response.status}).`
275
+ );
276
+ }
277
+ }
278
+ __name(readJsonResponse, "readJsonResponse");
279
+ async function readBoundedBody(response, maxBytes) {
280
+ const contentLength = Number(response.headers.get("content-length"));
281
+ if (Number.isFinite(contentLength) && contentLength > maxBytes) {
282
+ await response.body?.cancel().catch(() => {
283
+ });
284
+ throw new ResponseSizeLimitError(
285
+ `Response exceeds the ${maxBytes}-byte limit.`
286
+ );
287
+ }
288
+ if (!response.body) {
289
+ return Buffer.alloc(0);
290
+ }
291
+ const chunks = [];
292
+ let total = 0;
293
+ const reader = response.body.getReader();
294
+ try {
295
+ for (; ; ) {
296
+ const { done, value } = await reader.read();
297
+ if (done) break;
298
+ total += value.byteLength;
299
+ if (total > maxBytes) {
300
+ throw new ResponseSizeLimitError(
301
+ `Response exceeds the ${maxBytes}-byte limit.`
302
+ );
303
+ }
304
+ chunks.push(value);
305
+ }
306
+ } finally {
307
+ await reader.cancel().catch(() => {
308
+ });
309
+ reader.releaseLock();
310
+ }
311
+ return Buffer.concat(chunks, total);
312
+ }
313
+ __name(readBoundedBody, "readBoundedBody");
314
+ function formatImageGenerationError(status, payload) {
315
+ const code = readString(payload, "code");
316
+ const message = readString(payload, "message");
317
+ const suffix = [code, message].filter(Boolean).join(": ");
318
+ if (status === 429 || /throttl|rate.?limit/i.test(`${code} ${message}`)) {
319
+ return `Image generation rate limit reached${suffix ? ` (${suffix})` : ""}.`;
320
+ }
321
+ if (status === 401 || status === 403 || /access|permission/i.test(code ?? "")) {
322
+ return `Image generation access denied${suffix ? ` (${suffix})` : ""}. Check the API key, endpoint, and model access.`;
323
+ }
324
+ if (/DataInspectionFailed/i.test(code ?? "")) {
325
+ return `The image generation endpoint blocked the prompt during content moderation${message ? `: ${message}` : "."}`;
326
+ }
327
+ return `Image generation failed with HTTP ${status}${suffix ? ` (${suffix})` : ""}.`;
328
+ }
329
+ __name(formatImageGenerationError, "formatImageGenerationError");
330
+ function findGeneratedImageUrl(payload) {
331
+ if (!isRecord(payload)) return void 0;
332
+ const output = payload["output"];
333
+ if (!isRecord(output) || !Array.isArray(output["choices"])) return void 0;
334
+ for (const choice of output["choices"]) {
335
+ if (!isRecord(choice)) continue;
336
+ const message = choice["message"];
337
+ if (!isRecord(message) || !Array.isArray(message["content"])) continue;
338
+ for (const part of message["content"]) {
339
+ if (!isRecord(part)) continue;
340
+ const image = part["image"];
341
+ if (typeof image === "string" && image.trim()) {
342
+ return image.trim();
343
+ }
344
+ }
345
+ }
346
+ return void 0;
347
+ }
348
+ __name(findGeneratedImageUrl, "findGeneratedImageUrl");
349
+ async function downloadPng(imageUrl, fetchFn, signal) {
350
+ const combinedSignal = combineWithTimeout(signal, DOWNLOAD_TIMEOUT_MS);
351
+ let currentTarget = await validateResultUrl(imageUrl, combinedSignal);
352
+ for (let redirectCount = 0; redirectCount <= MAX_DOWNLOAD_REDIRECTS; redirectCount++) {
353
+ let dispatcher;
354
+ if (currentTarget.lookup) {
355
+ const undici = await loadUndici();
356
+ const { Agent } = undici;
357
+ dispatcher = new Agent({ connect: { lookup: currentTarget.lookup } });
358
+ }
359
+ let response;
360
+ try {
361
+ response = await fetchFn(currentTarget.url.toString(), {
362
+ method: "GET",
363
+ headers: { Accept: "image/png" },
364
+ redirect: "manual",
365
+ signal: combinedSignal,
366
+ ...dispatcher ? { dispatcher } : {}
367
+ });
368
+ } catch (error) {
369
+ await dispatcher?.close();
370
+ throw new Error("Generated image download failed before completion.", {
371
+ cause: error
372
+ });
373
+ }
374
+ try {
375
+ if (REDIRECT_STATUSES.has(response.status)) {
376
+ const location = response.headers.get("location");
377
+ await response.body?.cancel().catch(() => {
378
+ });
379
+ if (!location) {
380
+ throw new Error(
381
+ "Generated image redirect is missing a Location header."
382
+ );
383
+ }
384
+ let redirectUrl;
385
+ try {
386
+ redirectUrl = new URL(
387
+ location,
388
+ currentTarget.url.toString()
389
+ ).toString();
390
+ } catch {
391
+ throw new Error("Generated image redirect URL is invalid.");
392
+ }
393
+ currentTarget = await validateResultUrl(redirectUrl, combinedSignal);
394
+ continue;
395
+ }
396
+ if (!response.ok) {
397
+ await response.body?.cancel().catch(() => {
398
+ });
399
+ throw new Error(
400
+ `Generated image download failed with HTTP ${response.status}.`
401
+ );
402
+ }
403
+ let bytes;
404
+ try {
405
+ bytes = await readBoundedBody(response, MAX_IMAGE_BYTES);
406
+ } catch (error) {
407
+ if (error instanceof ResponseSizeLimitError) {
408
+ throw error;
409
+ }
410
+ throw new Error("Generated image download failed before completion.", {
411
+ cause: error
412
+ });
413
+ }
414
+ if (bytes.length < PNG_SIGNATURE.length || !bytes.subarray(0, PNG_SIGNATURE.length).equals(PNG_SIGNATURE)) {
415
+ throw new Error("Downloaded result is not a valid PNG image.");
416
+ }
417
+ return bytes;
418
+ } finally {
419
+ await dispatcher?.close();
420
+ }
421
+ }
422
+ throw new Error(
423
+ `Generated image download exceeded ${MAX_DOWNLOAD_REDIRECTS} redirects.`
424
+ );
425
+ }
426
+ __name(downloadPng, "downloadPng");
427
+ async function validateResultUrl(value, signal) {
428
+ let parsed;
429
+ try {
430
+ parsed = new URL(value);
431
+ } catch {
432
+ throw new Error("Image generation returned an invalid image URL.");
433
+ }
434
+ if (parsed.protocol !== "https:" || parsed.username || parsed.password || isPrivateHost(parsed.toString())) {
435
+ throw new Error(
436
+ "Image generation returned an image URL that is not a safe public HTTPS URL."
437
+ );
438
+ }
439
+ try {
440
+ return await resolveNetworkTarget(parsed, "public", signal);
441
+ } catch (error) {
442
+ signal.throwIfAborted();
443
+ throw new Error(
444
+ "Image generation returned an image URL that is not a safe public HTTPS URL.",
445
+ { cause: error }
446
+ );
447
+ }
448
+ }
449
+ __name(validateResultUrl, "validateResultUrl");
450
+ function combineWithTimeout(signal, timeoutMs) {
451
+ return AbortSignal.any([signal, AbortSignal.timeout(timeoutMs)]);
452
+ }
453
+ __name(combineWithTimeout, "combineWithTimeout");
454
+ function readString(value, ...keys) {
455
+ if (!isRecord(value)) return void 0;
456
+ for (const key of keys) {
457
+ const candidate = value[key];
458
+ if (typeof candidate === "string" && candidate.trim()) {
459
+ return candidate.trim();
460
+ }
461
+ }
462
+ return void 0;
463
+ }
464
+ __name(readString, "readString");
465
+ function isRecord(value) {
466
+ return typeof value === "object" && value !== null && !Array.isArray(value);
467
+ }
468
+ __name(isRecord, "isRecord");
469
+
470
+ export {
471
+ resolveNetworkTarget,
472
+ normalizeImageGenerationBaseUrl,
473
+ generateImage
474
+ };
475
+ /**
476
+ * @license
477
+ * Copyright 2025 Qwen Team
478
+ * SPDX-License-Identifier: Apache-2.0
479
+ */
@@ -1,11 +1,11 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import {
4
- formatHistoryGapNotice
5
- } from "./chunk-LNDD3IML.js";
6
3
  import {
7
4
  sanitizeTerminalText
8
- } from "./chunk-RS7MT2QG.js";
5
+ } from "./chunk-IPUUTYMV.js";
6
+ import {
7
+ formatHistoryGapNotice
8
+ } from "./chunk-WCXCRJYB.js";
9
9
  import {
10
10
  isGoalStatusKind,
11
11
  isTerminalGoalStatusKind
@@ -23,18 +23,18 @@ import {
23
23
  setGoalTerminalObserver,
24
24
  setLastGoalTerminal,
25
25
  unregisterGoalHook
26
- } from "./chunk-OTQ6PSZC.js";
26
+ } from "./chunk-PHOF65IG.js";
27
27
  import {
28
28
  apiActivityTracker,
29
29
  formatVisionBridgeNoticeDisplay,
30
30
  isVisionBridgeNoticeDisplay
31
- } from "./chunk-ZDP2Y2AL.js";
31
+ } from "./chunk-CIKQ7KKO.js";
32
32
  import {
33
33
  ToolNames
34
- } from "./chunk-YM3SZTH4.js";
34
+ } from "./chunk-PR75REBZ.js";
35
35
  import {
36
36
  createDebugLogger
37
- } from "./chunk-OQB4EXO4.js";
37
+ } from "./chunk-NL7LTRLR.js";
38
38
  import {
39
39
  init_esbuild_shims
40
40
  } from "./chunk-5O2XNYP6.js";
@@ -677,9 +677,6 @@ async function realpathOrResolve(input) {
677
677
  }
678
678
  __name(realpathOrResolve, "realpathOrResolve");
679
679
 
680
- // packages/cli/src/acp-integration/session/emitters/MessageEmitter.ts
681
- init_esbuild_shims();
682
-
683
680
  // packages/acp-bridge/src/transcript-replay.ts
684
681
  init_esbuild_shims();
685
682
  var MISSING_TRANSCRIPT_TOOL_RESULT_MESSAGE = "Tool result missing from saved history; the previous run likely ended before this tool completed.";
@@ -1535,6 +1532,9 @@ function dedupeStrings(values) {
1535
1532
  }
1536
1533
  __name(dedupeStrings, "dedupeStrings");
1537
1534
 
1535
+ // packages/cli/src/acp-integration/session/emitters/MessageEmitter.ts
1536
+ init_esbuild_shims();
1537
+
1538
1538
  // packages/cli/src/acp-integration/session/emitters/base-emitter.ts
1539
1539
  init_esbuild_shims();
1540
1540
  var BaseEmitter = class {
@@ -2496,7 +2496,7 @@ async function extractMetadata(conversation, config) {
2496
2496
  const gitBranch = firstRecord?.gitBranch;
2497
2497
  let gitRepo;
2498
2498
  if (cwd) {
2499
- const { getGitRepoName } = await import("./src-IZXLJI5M.js");
2499
+ const { getGitRepoName } = await import("./src-GE4TTTML.js");
2500
2500
  gitRepo = getGitRepoName(cwd);
2501
2501
  }
2502
2502
  let model;
@@ -3351,6 +3351,7 @@ export {
3351
3351
  GITHUB_WORKFLOW_PATHS,
3352
3352
  SetupGithubError,
3353
3353
  setupGithub,
3354
+ createTranscriptMessageUpdate,
3354
3355
  MessageEmitter,
3355
3356
  PlanEmitter,
3356
3357
  ToolCallEmitter,