@qwen-code/qwen-code 0.23.2 → 0.23.3

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 (373) hide show
  1. package/README.md +35 -15
  2. package/bundled/computer-use/SKILL.md +1 -1
  3. package/bundled/qc-helper/docs/configuration/model-providers.md +66 -28
  4. package/bundled/qc-helper/docs/configuration/settings.md +5 -3
  5. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  6. package/bundled/qc-helper/docs/features/channels/dws.md +7 -1
  7. package/bundled/qc-helper/docs/features/commands.md +57 -9
  8. package/bundled/qc-helper/docs/features/computer-use.md +1 -1
  9. package/bundled/qc-helper/docs/features/cross-session-protocol.md +320 -0
  10. package/bundled/qc-helper/docs/features/goals.md +1 -1
  11. package/bundled/qc-helper/docs/qwen-serve.md +16 -3
  12. package/bundled/review/SKILL.md +82 -79
  13. package/bundled/review/references/posting.md +31 -14
  14. package/chunks/{MaxSizedBox-4C3BKKKY.js → MaxSizedBox-D4LW7RZZ.js} +58 -51
  15. package/chunks/{StandaloneSessionPicker-TXVF65YW.js → StandaloneSessionPicker-ALTTRWUP.js} +80 -73
  16. package/chunks/acp-subagent-executor-LEUN3N7N.js +919 -0
  17. package/chunks/{acpAgent-H5XBKGB4.js → acpAgent-BBSW7XZG.js} +509 -201
  18. package/chunks/{agent-T5LEFJIU.js → agent-SQ6OY3QD.js} +42 -36
  19. package/chunks/{agent-headless-VZKSRH36.js → agent-headless-RI2THRQ7.js} +42 -36
  20. package/chunks/{anthropicContentGenerator-PRJWWVYJ.js → anthropicContentGenerator-JSKMKS6V.js} +66 -34
  21. package/chunks/{artifact-tool-G5LHNECG.js → artifact-tool-PMYZCYNH.js} +2 -2
  22. package/chunks/{askUserQuestion-I5W5S3D6.js → askUserQuestion-4M4YYIB4.js} +2 -2
  23. package/chunks/{bridge-AOX5IY44.js → bridge-DAFMI72L.js} +62 -55
  24. package/chunks/{channel-management-service-MWQGHPAS.js → channel-management-service-OWDXVL7R.js} +8 -8
  25. package/chunks/{channel-settings-store-XZCGDGHW.js → channel-settings-store-4I6JONT7.js} +69 -62
  26. package/chunks/{channel-worker-group-SQ5FRWOH.js → channel-worker-group-F2ZZMLNS.js} +8 -8
  27. package/chunks/{channel-worker-manager-TU4ZNWOE.js → channel-worker-manager-2SZLJJSJ.js} +18 -9
  28. package/chunks/{channel-worker-supervisor-EMITFMCP.js → channel-worker-supervisor-ZFNWMG6D.js} +6 -6
  29. package/chunks/{chunk-GNY7B3CA.js → chunk-2ALXPGB4.js} +1 -1
  30. package/chunks/{chunk-LUNC5KCL.js → chunk-2PJRI3EH.js} +7 -7
  31. package/chunks/{chunk-CLKE4IY3.js → chunk-2SZH22YO.js} +1 -1
  32. package/chunks/{chunk-RNAJVXUG.js → chunk-2ZN3O5FT.js} +6 -6
  33. package/chunks/{chunk-HIXUUCGY.js → chunk-36HCNKDS.js} +1 -1
  34. package/chunks/{chunk-FGHPZGOP.js → chunk-3BTSSIJO.js} +38 -54
  35. package/chunks/{chunk-VBLAI2HA.js → chunk-3FPYT6QC.js} +0 -31
  36. package/chunks/{chunk-QB3KS3N3.js → chunk-3I7W2POO.js} +1 -1
  37. package/chunks/{chunk-QTB4VP4K.js → chunk-3KQBQ6FM.js} +136 -11
  38. package/chunks/{chunk-JO77FGNZ.js → chunk-3UXUOFO6.js} +19 -7
  39. package/chunks/{chunk-WDN64MVT.js → chunk-3XLK2QMY.js} +82 -16
  40. package/chunks/chunk-532WHF4F.js +127 -0
  41. package/chunks/{chunk-NX7ZTXFF.js → chunk-53GWJOLP.js} +1 -1
  42. package/chunks/{chunk-QQK4L3UU.js → chunk-5GLDOLNQ.js} +131 -26
  43. package/chunks/{chunk-WK7P62DV.js → chunk-5KI7ZDTB.js} +6 -6
  44. package/chunks/{chunk-ERXNTINK.js → chunk-6JACAGYH.js} +1 -1
  45. package/chunks/{chunk-CMWU6P4D.js → chunk-6W4HBUA2.js} +1 -1
  46. package/chunks/{chunk-AUTUFD5X.js → chunk-76RGWKLS.js} +1 -1
  47. package/chunks/{chunk-PDN7FJZV.js → chunk-7APZIRH3.js} +2 -2
  48. package/chunks/{chunk-WBU2PIZ5.js → chunk-7BXXIQG4.js} +16 -16
  49. package/chunks/{chunk-APXIW2TF.js → chunk-7ICHPMBQ.js} +4 -4
  50. package/chunks/{chunk-CWVZBIZJ.js → chunk-7Q2AXRDJ.js} +1 -1
  51. package/chunks/{chunk-WDVV3LRM.js → chunk-7QYWGTHB.js} +1 -1
  52. package/chunks/{chunk-RM244SCQ.js → chunk-AC6KDLH3.js} +1 -1
  53. package/chunks/{chunk-2WC3Y7YY.js → chunk-AEY27Z35.js} +401 -23
  54. package/chunks/{chunk-XDNFODER.js → chunk-AXTFYDXT.js} +1 -1
  55. package/chunks/chunk-AYEJOTIU.js +43 -0
  56. package/chunks/{chunk-ZN5TKAVR.js → chunk-BV6Q5HMY.js} +3 -3
  57. package/chunks/{chunk-TOOOLHVS.js → chunk-BWAMMKIS.js} +3 -3
  58. package/chunks/{chunk-IRGDIDGJ.js → chunk-BWQLXU37.js} +26 -19
  59. package/chunks/{process-registry-OAEG6WGC.js → chunk-BYUAT5OC.js} +1 -0
  60. package/chunks/{chunk-GOEVQADN.js → chunk-BZM5U74J.js} +287 -169
  61. package/chunks/chunk-CF5KXZZX.js +150 -0
  62. package/chunks/{chunk-TGNNLRC3.js → chunk-CJ3DHN5I.js} +1 -0
  63. package/chunks/{chunk-PFKGV6PO.js → chunk-CUEXOHQH.js} +9 -9
  64. package/chunks/chunk-CXTPVBFA.js +937 -0
  65. package/chunks/{chunk-LEAOJ43M.js → chunk-DAWWT2ID.js} +62 -59
  66. package/chunks/{chunk-CALTQWTZ.js → chunk-DLH7YIX6.js} +2 -2
  67. package/chunks/chunk-DT75RKNH.js +691 -0
  68. package/chunks/{chunk-TRWQQBVH.js → chunk-DTNV6UZY.js} +1 -1
  69. package/chunks/{chunk-3OAXF3UK.js → chunk-DYFOSJHU.js} +3080 -933
  70. package/chunks/{chunk-GSFV5RQW.js → chunk-E4UEO3XM.js} +3 -2
  71. package/chunks/{chunk-A7EFXK7P.js → chunk-E7LB57MB.js} +5 -5
  72. package/chunks/{chunk-KEPC5BOL.js → chunk-EDMXGXAK.js} +9 -9
  73. package/chunks/chunk-ELRMZTPF.js +374 -0
  74. package/chunks/chunk-ERU3SDXT.js +27 -0
  75. package/chunks/{chunk-O2FEO2CB.js → chunk-EUURTIV6.js} +18 -2
  76. package/chunks/{chunk-QFJZAY7W.js → chunk-EVTNACMT.js} +3 -3
  77. package/chunks/{chunk-4HOEU2OR.js → chunk-EWJTAP3Y.js} +1 -19
  78. package/chunks/{chunk-YQGW3M6Z.js → chunk-F42YYSCK.js} +8 -8
  79. package/chunks/{chunk-7PD7ZMX5.js → chunk-FCQJLMA2.js} +98 -5
  80. package/chunks/{chunk-4VY3ITHR.js → chunk-FN3JNDRU.js} +3 -3
  81. package/chunks/{chunk-R457KFV7.js → chunk-GCDXVPFK.js} +3 -3
  82. package/chunks/{chunk-IR6JKBAP.js → chunk-GOXQL4YH.js} +2 -2
  83. package/chunks/{chunk-YLOHCA6I.js → chunk-GSILBZLN.js} +2 -2
  84. package/chunks/{chunk-LNYV4GXX.js → chunk-GSKX53AN.js} +0 -139
  85. package/chunks/{chunk-4WMGYG3F.js → chunk-HBQ2NXOU.js} +2 -2
  86. package/chunks/{chunk-F2NYVASI.js → chunk-HBU7EKY4.js} +14 -12
  87. package/chunks/{chunk-6G4V7SE4.js → chunk-HG46TTAG.js} +1 -1
  88. package/chunks/{chunk-G5VOXCRX.js → chunk-HGAELO7B.js} +2 -2
  89. package/chunks/{chunk-FETY36NQ.js → chunk-HGEUHUEV.js} +1 -1
  90. package/chunks/{chunk-E6TI726I.js → chunk-HUXPEUFL.js} +1 -1
  91. package/chunks/{chunk-LYT2OU7D.js → chunk-IAEXTMED.js} +1 -1
  92. package/chunks/{chunk-IW6RQPQB.js → chunk-IJOS26LH.js} +1 -3
  93. package/chunks/{chunk-ORFIYTI2.js → chunk-IK2MWJP5.js} +1 -1
  94. package/chunks/{chunk-WXD7INFV.js → chunk-IL5M5NYD.js} +8 -8
  95. package/chunks/{chunk-KA5HR3G2.js → chunk-IUVIBDKU.js} +2 -2
  96. package/chunks/{chunk-5DQ4YTIZ.js → chunk-IV7GDNKC.js} +1 -1
  97. package/chunks/chunk-JL6APGBX.js +43 -0
  98. package/chunks/{chunk-N6S3NUYJ.js → chunk-JXNIF2O5.js} +1 -1
  99. package/chunks/{chunk-DAI65CMX.js → chunk-JYKWOREU.js} +1 -1
  100. package/chunks/chunk-K2OJUPOE.js +78 -0
  101. package/chunks/{chunk-KFECPHLV.js → chunk-KFZYGSJN.js} +3 -3
  102. package/chunks/{chunk-BK7D2JR6.js → chunk-KOKPXIAN.js} +3 -3
  103. package/chunks/{chunk-4I3WFI3U.js → chunk-LDVNJZGH.js} +12 -12
  104. package/chunks/{chunk-WXFCI3O5.js → chunk-LG5Y4OWO.js} +2 -2
  105. package/chunks/{chunk-3LPJ776W.js → chunk-LILGKQ4B.js} +10 -7
  106. package/chunks/{chunk-X7LFJF5D.js → chunk-LK2WUCDQ.js} +36 -84
  107. package/chunks/{chunk-7LTCFO6T.js → chunk-MF6E7FSA.js} +6 -5
  108. package/chunks/{chunk-ELD3OBPU.js → chunk-MHAADZOZ.js} +3 -3
  109. package/chunks/{chunk-4JNHNVAZ.js → chunk-MLQNSPRZ.js} +4 -4
  110. package/chunks/{chunk-NPKCVSXX.js → chunk-MOS5OAOG.js} +10 -8
  111. package/chunks/{chunk-IWABUX6T.js → chunk-MSNHNAQZ.js} +6 -6
  112. package/chunks/{chunk-HJ5UJQQL.js → chunk-N7VWZDWW.js} +1699 -1312
  113. package/chunks/{chunk-NB3NDQQK.js → chunk-NE624IVP.js} +1 -1
  114. package/chunks/{chunk-SOA4HKRJ.js → chunk-NFYEQRLG.js} +2 -2
  115. package/chunks/{chunk-G3ZUMSFS.js → chunk-NHCZJQE4.js} +6 -6
  116. package/chunks/{chunk-B25JYXZE.js → chunk-NHJKAR6E.js} +4 -4
  117. package/chunks/{chunk-ZP5XDLSA.js → chunk-NJQTG2G3.js} +12 -12
  118. package/chunks/{chunk-DARWOZY6.js → chunk-NLNQNBZ2.js} +1 -1
  119. package/chunks/{chunk-CCBTNJB4.js → chunk-NMCDMLHL.js} +27 -27
  120. package/chunks/{chunk-AO2VMS72.js → chunk-NMRCXKQ5.js} +3 -3
  121. package/chunks/{chunk-5BH2AIEY.js → chunk-NOAG7N22.js} +2 -2
  122. package/chunks/{chunk-VJJXG73H.js → chunk-NRXWJXJ4.js} +15 -0
  123. package/chunks/chunk-NUQ4GK5I.js +315 -0
  124. package/chunks/{chunk-J3VZF2AL.js → chunk-NUQVB25K.js} +2 -2
  125. package/chunks/{chunk-U6REWGVR.js → chunk-OLTN767L.js} +2 -2
  126. package/chunks/{chunk-R3JIDRUL.js → chunk-OX7IZ2G5.js} +4 -4
  127. package/chunks/{chunk-QAZ2MGYT.js → chunk-PLLIWEM3.js} +2 -2
  128. package/chunks/{chunk-KCF2436G.js → chunk-POC3YMHG.js} +4 -4
  129. package/chunks/{chunk-HZ2HUXX7.js → chunk-Q2LVVIKF.js} +1 -1
  130. package/chunks/{chunk-7NDZKE2M.js → chunk-Q5BD56BW.js} +3 -3
  131. package/chunks/{chunk-22GORRNY.js → chunk-QMUYLYT5.js} +1 -1
  132. package/chunks/{chunk-MV5DTLJV.js → chunk-R4Q2PEFV.js} +1 -1
  133. package/chunks/{chunk-GOKAOSCN.js → chunk-RLLRJJDR.js} +1 -1
  134. package/chunks/{chunk-5OZUKLL7.js → chunk-RWVD5RRY.js} +4 -4
  135. package/chunks/{chunk-ULZECEIP.js → chunk-RZHU3K6M.js} +2 -2
  136. package/chunks/{chunk-UYDQYDW2.js → chunk-S6Q6Q4P2.js} +1 -1
  137. package/chunks/{chunk-PQEISIKS.js → chunk-SAH4BD2J.js} +0 -67
  138. package/chunks/{chunk-LWX4WDFF.js → chunk-SBRX4BDI.js} +43 -15
  139. package/chunks/{chunk-TODNHE76.js → chunk-SODMFNAR.js} +5 -5
  140. package/chunks/{chunk-FAJPLSYF.js → chunk-SSGAAWLY.js} +89 -85
  141. package/chunks/{chunk-46MMBZHI.js → chunk-SYLECP23.js} +4 -4
  142. package/chunks/{chunk-6RZX2HIH.js → chunk-TBEXLLAO.js} +2 -2
  143. package/chunks/{chunk-MWIO7MF6.js → chunk-TP6FYVQT.js} +2 -0
  144. package/chunks/{chunk-HRPFBHW7.js → chunk-TPKQIA7G.js} +1 -0
  145. package/chunks/{chunk-QHLHE2OT.js → chunk-TWUKBNWM.js} +1 -1
  146. package/chunks/{chunk-H3Q3RSKZ.js → chunk-U7O65WKL.js} +1 -1
  147. package/chunks/{chunk-S5QR6CB5.js → chunk-UKMWZ5NS.js} +108 -887
  148. package/chunks/{chunk-OXR34GCD.js → chunk-UKZ45TJL.js} +1851 -34
  149. package/chunks/{chunk-CALNF3Z3.js → chunk-V2P3DOQR.js} +1 -1
  150. package/chunks/{chunk-FV4DM2M4.js → chunk-VG3Q2NC4.js} +7 -7
  151. package/chunks/{chunk-QTNCGZHQ.js → chunk-VX63RJXE.js} +9 -0
  152. package/chunks/{chunk-CRZBDVP2.js → chunk-VZUCTJ2P.js} +4 -4
  153. package/chunks/{chunk-2BMXHB6N.js → chunk-W5FIP7FC.js} +7 -7
  154. package/chunks/{chunk-7VEYUF3N.js → chunk-W5ZQMAEM.js} +1 -1
  155. package/chunks/{chunk-XQ4RDO5B.js → chunk-WBCPROWX.js} +1 -1
  156. package/chunks/{chunk-JYGIJA4W.js → chunk-X6K77VHC.js} +1 -1
  157. package/chunks/{chunk-7SVM3RP2.js → chunk-X7UJKOHZ.js} +3 -3
  158. package/chunks/{chunk-WXPPUPHM.js → chunk-XBZTAGB7.js} +1 -1
  159. package/chunks/{chunk-TRQNRP2H.js → chunk-XGYHNWL3.js} +45 -2
  160. package/chunks/{chunk-2EKVPSIJ.js → chunk-Y2MYW47X.js} +1 -1
  161. package/chunks/{chunk-OFVAS4AR.js → chunk-YBUMTY7B.js} +1 -1
  162. package/chunks/{chunk-67XTVRVB.js → chunk-YQHLFCPU.js} +7 -7
  163. package/chunks/{chunk-G37O7YO6.js → chunk-Z3GF56ME.js} +2 -2
  164. package/chunks/{chunk-XBVNNDPK.js → chunk-ZHKTKHMO.js} +8 -1
  165. package/chunks/{chunk-OWCFKIFQ.js → chunk-ZKYR7QS4.js} +1 -1
  166. package/chunks/{chunk-YZTGGCEE.js → chunk-ZKZHSB5W.js} +1 -1
  167. package/chunks/{chunk-565U2ANU.js → chunk-ZTTC7T4X.js} +1 -1
  168. package/chunks/{chunk-XSOXPG2L.js → chunk-ZU47FBOC.js} +36 -7
  169. package/chunks/{chunk-7OCIQNKX.js → chunk-ZW2EUO2A.js} +1 -1
  170. package/chunks/{config-utils-GPLIABL2.js → config-utils-L6KLDYIV.js} +62 -55
  171. package/chunks/{contextCommand-NCUQUDBY.js → contextCommand-UYEH7NIU.js} +59 -52
  172. package/chunks/{core-runtime-WKYKWVYU.js → core-runtime-NVHT3Z3V.js} +61 -54
  173. package/chunks/{create-sub-session-TGIX63YU.js → create-sub-session-TIGCFGCS.js} +2 -2
  174. package/chunks/{create-sub-session-PPLXB3JJ.js → create-sub-session-YWASE5VH.js} +59 -52
  175. package/chunks/{cron-create-GTPVMJCF.js → cron-create-AKWX67FO.js} +1 -1
  176. package/chunks/{cron-delete-ZBK27Z4K.js → cron-delete-XPB6IYZJ.js} +1 -1
  177. package/chunks/{cron-list-KTFKFDKC.js → cron-list-XBKO4WU5.js} +1 -1
  178. package/chunks/{daemon-2CKIAO3I.js → daemon-G5TYKZD6.js} +2 -2
  179. package/chunks/{daemon-git-worktree-guard-73ZWOLKL.js → daemon-git-worktree-guard-FOW4RQSK.js} +60 -53
  180. package/chunks/{daemon-status-provider-OK7VONJG.js → daemon-status-provider-O5KQZYMP.js} +67 -60
  181. package/chunks/{daemon-trust-policy-CAUCREG2.js → daemon-trust-policy-3ATXEON7.js} +64 -57
  182. package/chunks/{daemon-trust-policy-monitor-3Y36OOEQ.js → daemon-trust-policy-monitor-7MCNDNEC.js} +64 -57
  183. package/chunks/{deferred-core-runtime-Q7WFWYD3.js → deferred-core-runtime-JK5IXL5K.js} +57 -50
  184. package/chunks/{display-image-CTNHJRZC.js → display-image-NAH3AZ63.js} +3 -3
  185. package/chunks/{dist-NP7QKLVG.js → dist-AHJYPSJL.js} +3 -3
  186. package/chunks/{dist-6YDUH3BB.js → dist-AIKC5E5P.js} +2 -2
  187. package/chunks/{dist-Y5KC3IHW.js → dist-F2DVGTL3.js} +225 -6
  188. package/chunks/{dist-BNQVF565.js → dist-GWNQVPZT.js} +5 -5
  189. package/chunks/{dist-F6JLAJLE.js → dist-H6G3K26N.js} +3 -3
  190. package/chunks/{dist-ZDNJK74R.js → dist-KJGRVIGJ.js} +2 -2
  191. package/chunks/{dist-F34J4FZX.js → dist-KLZ7XGEQ.js} +2 -2
  192. package/chunks/{dist-UFTFGI6I.js → dist-ZA52JXAS.js} +2 -2
  193. package/chunks/{dist-XLV33CLY.js → dist-ZXTZTE54.js} +2 -2
  194. package/chunks/{edit-YJD6IETK.js → edit-SY35KYIE.js} +45 -39
  195. package/chunks/{en-YJNRUQG4.js → en-CAJHTIQT.js} +1 -0
  196. package/chunks/{enter-worktree-YFTKHXHZ.js → enter-worktree-54L5QJ3N.js} +4 -4
  197. package/chunks/{enterPlanMode-EFPVTWIH.js → enterPlanMode-HXX6KQJR.js} +42 -36
  198. package/chunks/{environment-HP3AXFTB.js → environment-DKXHG4HB.js} +60 -53
  199. package/chunks/{errors-22ON46G7.js → errors-ADY7LQJJ.js} +59 -52
  200. package/chunks/{exit-worktree-NF2XEMES.js → exit-worktree-EORJDKDS.js} +4 -4
  201. package/chunks/{exitPlanMode-MOQUNCBH.js → exitPlanMode-HSK2CQI6.js} +42 -36
  202. package/chunks/{fast-path-2X7BPMXX.js → fast-path-U636VWN2.js} +6 -6
  203. package/chunks/{fast-path-settings-SATXY3PD.js → fast-path-settings-V7MI7EZJ.js} +2 -2
  204. package/chunks/{glob-Y7ACIB3P.js → glob-GUGGTH5L.js} +45 -39
  205. package/chunks/{goal-tools-DABMICUC.js → goal-tools-PXYRSQGX.js} +42 -36
  206. package/chunks/{grep-BLHF2S5D.js → grep-3PKFKLCA.js} +2 -2
  207. package/chunks/{handleAutoUpdate-MCAMHYDI.js → handleAutoUpdate-5KHS4HIN.js} +60 -53
  208. package/chunks/{i18n-C3GDCALP.js → i18n-KSGKMUPT.js} +58 -51
  209. package/chunks/{image-gen-XP4NNIYG.js → image-gen-OCCR2WWU.js} +5 -4
  210. package/chunks/{initializer-4URDQL2G.js → initializer-YYT5XEZF.js} +64 -57
  211. package/chunks/{installationInfo-LBOL6SBV.js → installationInfo-UNSBPYW2.js} +57 -50
  212. package/chunks/{list-JOGBAC2R.js → list-YL6LDQKQ.js} +67 -60
  213. package/chunks/{list-agents-2CXPGJUE.js → list-agents-QLDXS5OD.js} +17 -7
  214. package/chunks/{llm-2KPNSAVY.js → llm-XGGLBGPH.js} +126 -119
  215. package/chunks/{llm-content-generator-GR3FOHLB.js → llm-content-generator-ZHQQT5W7.js} +5 -4
  216. package/chunks/{loadedSettingsAdapter-DVKROEJD.js → loadedSettingsAdapter-3DXLASK7.js} +64 -57
  217. package/chunks/{loggingContentGenerator-P4K6K5W4.js → loggingContentGenerator-V72OCCJO.js} +64 -57
  218. package/chunks/{loop-wakeup-HL6XOWI4.js → loop-wakeup-HHMYIC7Z.js} +2 -2
  219. package/chunks/{ls-YV7RKLKY.js → ls-N7ABR6HI.js} +4 -4
  220. package/chunks/{lsp-NO3AMRZT.js → lsp-LTOFWG5P.js} +1 -1
  221. package/chunks/{managed-npm-update-VWBKHNIN.js → managed-npm-update-HV5LPZH2.js} +57 -50
  222. package/chunks/{mcp-6YYNSYLK.js → mcp-IYVSIW6O.js} +64 -57
  223. package/chunks/{monitor-A255TNZR.js → monitor-TLBNM4MV.js} +44 -38
  224. package/chunks/{nonInteractiveCli-LXGIKQAT.js → nonInteractiveCli-LSJSQ2W4.js} +110 -103
  225. package/chunks/{notebook-edit-5UYHS2DM.js → notebook-edit-OSPOLZP6.js} +43 -37
  226. package/chunks/openai-WX26N5OJ.js +47 -0
  227. package/chunks/{openaiContentGenerator-A6MAMEO5.js → openaiContentGenerator-BE4S5TRD.js} +29 -23
  228. package/chunks/openaiResponsesContentGenerator-RTCAJ5V5.js +1658 -0
  229. package/chunks/{pidfile-B7DZC4TP.js → pidfile-H32FEPWA.js} +57 -50
  230. package/chunks/process-registry-X6ZCASEN.js +10 -0
  231. package/chunks/{processUtils-BPZ2MCZS.js → processUtils-SSLIPDEA.js} +2 -2
  232. package/chunks/{prompt-terminal-ledger-FYYTAOXS.js → prompt-terminal-ledger-I5SLL6UF.js} +58 -51
  233. package/chunks/{qwenContentGenerator-4IOJFD4S.js → qwenContentGenerator-TMQC623Z.js} +55 -47
  234. package/chunks/{qwenOAuth2-KX6LVYQ3.js → qwenOAuth2-3ZRQHHTC.js} +4 -3
  235. package/chunks/{read-file-A4H4O3VQ.js → read-file-T2QAIZE2.js} +11 -9
  236. package/chunks/{read-mcp-resource-D3N75DGF.js → read-mcp-resource-B37WANAQ.js} +1 -1
  237. package/chunks/{record-artifact-Q5CRGJTP.js → record-artifact-OAXWXZ5D.js} +2 -2
  238. package/chunks/record-source-D7R7X3GT.js +22 -0
  239. package/chunks/{report-findings-TJ34R7QK.js → report-findings-AR3VC6EQ.js} +3 -3
  240. package/chunks/{request-shutdown-LRKMTBAD.js → request-shutdown-IKNWTX5M.js} +5 -5
  241. package/chunks/{resumeHistoryUtils-YQQ43E4N.js → resumeHistoryUtils-QLKDH5GY.js} +63 -56
  242. package/chunks/{ripGrep-W32NWFTA.js → ripGrep-YGWL7KCV.js} +15 -13
  243. package/chunks/{run-qwen-serve-WBSWWIRV.js → run-qwen-serve-26KZDECC.js} +127 -102
  244. package/chunks/{runtime-VRVBX2E5.js → runtime-BMEIVDDG.js} +70 -63
  245. package/chunks/{scheduled-tasks-D65KJDA3.js → scheduled-tasks-NCFPP6VQ.js} +64 -57
  246. package/chunks/{scheduler-M2YPN7Z7.js → scheduler-47TVMUVN.js} +59 -52
  247. package/chunks/{sdk-exporters-grpc-MXTVSE3C.js → sdk-exporters-grpc-Y2ZUQDUQ.js} +2 -2
  248. package/chunks/{sdk-exporters-http-7R2ARBPV.js → sdk-exporters-http-VWTF4W6K.js} +3 -3
  249. package/chunks/{sdk-impl-YOLO7LV4.js → sdk-impl-G6FVTBQZ.js} +9 -9
  250. package/chunks/{send-message-76BKWKFZ.js → send-message-TWOGWCBG.js} +12 -9
  251. package/chunks/{serve-BE3H2P6P.js → serve-KL3G6LQQ.js} +64 -57
  252. package/chunks/{server-FLY5JERG.js → server-LBPYXZ5G.js} +2931 -518
  253. package/chunks/{session-JVN62R5K.js → session-YG6742LO.js} +118 -111
  254. package/chunks/{session-attachments-root-7ACGLHXA.js → session-attachments-root-OUBQDYC4.js} +57 -50
  255. package/chunks/{session-pr-refresh-TQS57SDK.js → session-pr-refresh-EKGMYNAW.js} +64 -57
  256. package/chunks/{settings-D44YMZFT.js → settings-DDNHJX2L.js} +69 -62
  257. package/chunks/{shell-3VE6I4V5.js → shell-KUCXWITU.js} +42 -36
  258. package/chunks/{skill-FHEGRRZU.js → skill-JQLKPNWZ.js} +33 -23
  259. package/chunks/{skill-settings-VHEJMBFL.js → skill-settings-XERQCUXZ.js} +63 -56
  260. package/chunks/{spawnChannel-T6MX2ZDN.js → spawnChannel-GQ45QFGB.js} +60 -53
  261. package/chunks/{standalone-update-QUGHFMCS.js → standalone-update-PRF3ILGZ.js} +59 -52
  262. package/chunks/{start-opentui-ui-IHIIZ2LE.js → start-opentui-ui-JDSOZE3N.js} +174 -157
  263. package/chunks/{startInteractiveUI-LR7K2ARZ.js → startInteractiveUI-RRW3JVHN.js} +533 -1119
  264. package/chunks/{syntheticOutput-D2P5V6RG.js → syntheticOutput-F6F27JMK.js} +2 -2
  265. package/chunks/{task-create-MWXJFRRM.js → task-create-Y623TBHB.js} +8 -8
  266. package/chunks/{task-list-EYO3FE57.js → task-list-FCPEEGWL.js} +1 -1
  267. package/chunks/{task-stop-BFSKRTGV.js → task-stop-QTKZXLPH.js} +1 -1
  268. package/chunks/{task-update-2JJJRHMT.js → task-update-YLSXF25N.js} +8 -8
  269. package/chunks/{team-create-GY3VFY47.js → team-create-5DRLOLOE.js} +44 -38
  270. package/chunks/{team-delete-IQZ6XGFI.js → team-delete-S7TLHZCF.js} +1 -1
  271. package/chunks/{team-plan-approval-BQPGZOT5.js → team-plan-approval-MWSGAL5T.js} +42 -36
  272. package/chunks/{terminal-image-renderer-YNYW5CQG.js → terminal-image-renderer-H7PD4FQW.js} +59 -52
  273. package/chunks/{theme-manager-U6CIK3GM.js → theme-manager-7AV73D6R.js} +57 -50
  274. package/chunks/{todoWrite-5ERKFWAK.js → todoWrite-5QI2H2FW.js} +4 -4
  275. package/chunks/{tool-search-XI3QWD5I.js → tool-search-UGYTBLUV.js} +17 -15
  276. package/chunks/{total-session-admission-3SNSJJ32.js → total-session-admission-JIHSTJ5S.js} +62 -55
  277. package/chunks/{trustedFolders-OVAQKNV5.js → trustedFolders-5VCBXFOP.js} +58 -51
  278. package/chunks/{update-relaunch-XV5O74E3.js → update-relaunch-4LF3APCV.js} +5 -5
  279. package/chunks/{updateCheck-CHUYWD6L.js → updateCheck-4T3WUE5F.js} +59 -52
  280. package/chunks/{useAutoAcceptIndicator-VKSVIXZC.js → useAutoAcceptIndicator-UMGB64Z6.js} +67 -60
  281. package/chunks/{validateNonInterActiveAuth-ZNUTD3E5.js → validateNonInterActiveAuth-GFJ72U2C.js} +107 -100
  282. package/chunks/{version-EK7VAGSI.js → version-EAAZN4T2.js} +1 -1
  283. package/chunks/{web-fetch-24KZO763.js → web-fetch-VRU3A2NI.js} +13 -11
  284. package/chunks/{web-search-CRNXKZ2X.js → web-search-NEGYQNDJ.js} +14 -10
  285. package/chunks/{web-shell-static-BFDESDD4.js → web-shell-static-CCN4JZEE.js} +1 -1
  286. package/chunks/workflow-UHPFALVZ.js +1224 -0
  287. package/chunks/{workspace-providers-status-MAM42IZS.js → workspace-providers-status-AEYISSU2.js} +68 -61
  288. package/chunks/{workspace-registration-store-HKLJEDQX.js → workspace-registration-store-A7RGKW62.js} +3 -1
  289. package/chunks/{workspace-registry-7RDDOBLN.js → workspace-registry-C2NGE6SD.js} +62 -55
  290. package/chunks/{workspace-runtime-coordinator-LEPDPXJO.js → workspace-runtime-coordinator-QKMZ24YF.js} +63 -56
  291. package/chunks/{workspace-service-5IFDCNN3.js → workspace-service-RQTTAGGC.js} +70 -63
  292. package/chunks/{workspace-skills-status-FJ3HNH4H.js → workspace-skills-status-5HWZU3HX.js} +65 -58
  293. package/chunks/{workspace-trust-reconciler-PQFHIWLR.js → workspace-trust-reconciler-KFWATZUU.js} +69 -62
  294. package/chunks/{write-file-ERG67ZFX.js → write-file-DPVB2SBQ.js} +44 -38
  295. package/chunks/{zh-VBFCRQBL.js → zh-S5V3Z5CR.js} +1 -0
  296. package/chunks/{zh-TW-N2TBF2F2.js → zh-TW-2K2WRFPY.js} +1 -0
  297. package/chunks/{zoom-image-WQYEC3SR.js → zoom-image-S7AWLAPC.js} +12 -10
  298. package/cli.js +13 -13
  299. package/export-transcript-document.css +1 -0
  300. package/export-transcript-document.js +164 -165
  301. package/locales/en.js +1 -0
  302. package/locales/zh-TW.js +1 -0
  303. package/locales/zh.js +1 -0
  304. package/package.json +5 -4
  305. package/web-shell/assets/{abnfDiagram-VCTEODGH-BRLgQbnT.js → abnfDiagram-VCTEODGH-nU24rpIE.js} +1 -1
  306. package/web-shell/assets/{arc-qAF9_XsR.js → arc-D1hTu8QI.js} +1 -1
  307. package/web-shell/assets/{architectureDiagram-5GKGNRK7-BorUttEz.js → architectureDiagram-5GKGNRK7-B_fgkKe7.js} +1 -1
  308. package/web-shell/assets/{blockDiagram-NRAW4CY4-Bj0qZVxu.js → blockDiagram-NRAW4CY4-C3pddUNg.js} +1 -1
  309. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BTqJis32.js → c4Diagram-UCG6FXSJ-kEFoC1ei.js} +1 -1
  310. package/web-shell/assets/channel-Blod4z1X.js +1 -0
  311. package/web-shell/assets/{chunk-2Q5K7J3B-RrQ5X8m-.js → chunk-2Q5K7J3B-DbT9wS7j.js} +1 -1
  312. package/web-shell/assets/{chunk-5VM5RSS4-uUjDl8wO.js → chunk-5VM5RSS4-CNbULt6O.js} +1 -1
  313. package/web-shell/assets/{chunk-F27PBJKO-C3JhpyzI.js → chunk-F27PBJKO-CbQRy4Tb.js} +1 -1
  314. package/web-shell/assets/{chunk-G27WJ6UU-C8ZNFs7F.js → chunk-G27WJ6UU-CVbXTxYk.js} +1 -1
  315. package/web-shell/assets/{chunk-JWPE2WC7-DNpXtEOs.js → chunk-JWPE2WC7-D89c_BXy.js} +1 -1
  316. package/web-shell/assets/{chunk-LCL6LL3I-DagA2ZLw.js → chunk-LCL6LL3I-B7-I_9KB.js} +1 -1
  317. package/web-shell/assets/{chunk-POPQ4Y6H-R23uH7Xm.js → chunk-POPQ4Y6H-DcLQFzS4.js} +1 -1
  318. package/web-shell/assets/{chunk-SVP7TREG-Qz9RN_BR.js → chunk-SVP7TREG-DyBb2Axj.js} +1 -1
  319. package/web-shell/assets/{chunk-XXDRQBXY-jYb1_hni.js → chunk-XXDRQBXY-BIA0eb5B.js} +1 -1
  320. package/web-shell/assets/classDiagram-DTDB5LWJ-D6hFDMqb.js +1 -0
  321. package/web-shell/assets/classDiagram-v2-JRS7N3AN-D6hFDMqb.js +1 -0
  322. package/web-shell/assets/{cose-bilkent-JH36ORCC-Cv2OunpE.js → cose-bilkent-JH36ORCC-Db2FYN85.js} +1 -1
  323. package/web-shell/assets/{cynefin-OW5HDTMX-LH42KFJx.js → cynefin-OW5HDTMX-i4GwmBVy.js} +1 -1
  324. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-Dha4_OoR.js → cynefinDiagram-5FMLGOSQ-LENf_IUy.js} +1 -1
  325. package/web-shell/assets/{dagre-3AP2YEHR-Br5lnUKD.js → dagre-3AP2YEHR-CF9XVrD9.js} +1 -1
  326. package/web-shell/assets/{diagram-S7CK7UJ4-dpKq2bBX.js → diagram-S7CK7UJ4-DD5PJfSm.js} +1 -1
  327. package/web-shell/assets/{diagram-UQ7AKVKN-BAgHWpXr.js → diagram-UQ7AKVKN-CjD_sBMj.js} +1 -1
  328. package/web-shell/assets/{diagram-VSXAHHWV-GRRzpyE2.js → diagram-VSXAHHWV-U5WwMqyA.js} +1 -1
  329. package/web-shell/assets/{diagram-VX7I27RA-BNFiaYpG.js → diagram-VX7I27RA-BujpHJJf.js} +1 -1
  330. package/web-shell/assets/{diagram-Z3DM3KII-BisZzB_h.js → diagram-Z3DM3KII-3ZLtKEXo.js} +1 -1
  331. package/web-shell/assets/{ebnfDiagram-PWID7BFC-B1xbwycf.js → ebnfDiagram-PWID7BFC-BGpiquRm.js} +1 -1
  332. package/web-shell/assets/{erDiagram-SSCWMZ5O-CQMzbGE5.js → erDiagram-SSCWMZ5O-D0besu_U.js} +1 -1
  333. package/web-shell/assets/{flowDiagram-A5DVABFB-CZ_Zondl.js → flowDiagram-A5DVABFB-9DwDuIyr.js} +1 -1
  334. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BTh2ShxS.js → ganttDiagram-EL5Y4UJY-CNlsAeNr.js} +1 -1
  335. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-oHOB-Uxt.js → gitGraphDiagram-WWUBYQGX-C_pPFiTR.js} +1 -1
  336. package/web-shell/assets/{index-DWoFMu5x.js → index-BYWs4JWq.js} +1 -1
  337. package/web-shell/assets/index-D3YS6KuJ.js +2173 -0
  338. package/web-shell/assets/index-eBxK3rs2.css +36 -0
  339. package/web-shell/assets/{infoDiagram-RXCK75RN-C0QpudbG.js → infoDiagram-RXCK75RN-Bpai64Ll.js} +1 -1
  340. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-a6B741uT.js → ishikawaDiagram-5VMMS53U-ktpJFq4r.js} +1 -1
  341. package/web-shell/assets/{journeyDiagram-EYS64GPL-Dbht9ICp.js → journeyDiagram-EYS64GPL-iz_DKgFX.js} +1 -1
  342. package/web-shell/assets/{kanban-definition-3QL26DDD-D4OFR8-h.js → kanban-definition-3QL26DDD-m_gG00Yt.js} +1 -1
  343. package/web-shell/assets/{layout-Dvdh5jRH.js → layout-qEvKgnvU.js} +1 -1
  344. package/web-shell/assets/{linear-Dvc6KIW2.js → linear-C6lklGdq.js} +1 -1
  345. package/web-shell/assets/{mermaid.core-CB36RfIb.js → mermaid.core-DSCYB_2P.js} +6 -6
  346. package/web-shell/assets/{mindmap-definition-FBJOCRG2-Fmqo1CjP.js → mindmap-definition-FBJOCRG2-DRQbT8w-.js} +1 -1
  347. package/web-shell/assets/{pegDiagram-XKGWAZYB-CCxYBoA4.js → pegDiagram-XKGWAZYB-BhD0q0i6.js} +1 -1
  348. package/web-shell/assets/{pieDiagram-E7YTZNPT-BVHKQFzt.js → pieDiagram-E7YTZNPT-BvIGQCSd.js} +1 -1
  349. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-l95IznwR.js → quadrantDiagram-AXDQQJYC-BDQtfpU-.js} +1 -1
  350. package/web-shell/assets/{railroadDiagram-O6MQD6OU-BlLdRdXp.js → railroadDiagram-O6MQD6OU-E1g2KIFK.js} +1 -1
  351. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BkDLBR5w.js → requirementDiagram-EFPCY7ZU-CuerYJOe.js} +1 -1
  352. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-jAIqRp65.js → sankeyDiagram-P5KCCOFB-CqWyCZGA.js} +1 -1
  353. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-f-soZYPr.js → sequenceDiagram-WJ2MYXX4-B-YWb8x4.js} +1 -1
  354. package/web-shell/assets/{sizeCapture-X5ZJPWSS-BzOuAfB2.js → sizeCapture-X5ZJPWSS-BB7YY4Tl.js} +1 -1
  355. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BPLSs12r.js → stateDiagram-HBIQ2CUA-C8LDpNHS.js} +1 -1
  356. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C4CbdvGa.js +1 -0
  357. package/web-shell/assets/{swimlanes-XN3QIQJK-D-9E_RIR.js → swimlanes-XN3QIQJK-D94vOoxZ.js} +1 -1
  358. package/web-shell/assets/swimlanesDiagram-VK2B7HYN--QNSIOC8.js +8 -0
  359. package/web-shell/assets/{timeline-definition-24CTP7MA-CT56K-gV.js → timeline-definition-24CTP7MA-C9C8uEYm.js} +1 -1
  360. package/web-shell/assets/{vennDiagram-4TSXK5OY-B-vi4IyO.js → vennDiagram-4TSXK5OY-CYzMHbVW.js} +1 -1
  361. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9O7Ju98.js → wardleyDiagram-VM6X3IG4-G9nhtLES.js} +1 -1
  362. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-6d8w3jg2.js → xychartDiagram-S5SC5T6Z-ruD2Wjhg.js} +1 -1
  363. package/web-shell/index.html +29 -5
  364. package/chunks/chunk-V7RNNPGC.js +0 -44
  365. package/chunks/workflow-HD5NYMW5.js +0 -2907
  366. package/web-shell/assets/channel-COIuCrVH.js +0 -1
  367. package/web-shell/assets/classDiagram-DTDB5LWJ-DoX6OYqu.js +0 -1
  368. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DoX6OYqu.js +0 -1
  369. package/web-shell/assets/index-CI1ysIEv.js +0 -2154
  370. package/web-shell/assets/index-CpxXGH-8.css +0 -36
  371. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-IRul-LaT.js +0 -1
  372. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-D6lgKepA.js +0 -8
  373. /package/chunks/{chunk-JA5CBKRP.js → chunk-7NXSVSFB.js} +0 -0
@@ -0,0 +1,691 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ DropNoticeThrottle,
5
+ DropReceiptCoalescer,
6
+ getPeerControllerRegistryPath,
7
+ readPeerControllerRegistrySync,
8
+ resolveControllerToken,
9
+ startPeerInbox
10
+ } from "./chunk-BZM5U74J.js";
11
+ import {
12
+ InboundGate,
13
+ MAX_HELD_MESSAGES,
14
+ PEER_ADMISSION_LIMITS,
15
+ canonicalizeMsgId,
16
+ drainSendPacer,
17
+ forgetSendPacerMessages,
18
+ peerSenderKey,
19
+ refundSendPacerMessage,
20
+ refundSendPacerToken,
21
+ sendDeliveryStatus,
22
+ settleSentPeerMessage
23
+ } from "./chunk-LK2WUCDQ.js";
24
+ import {
25
+ formatPeerDisplay,
26
+ formatPeerEnvelope
27
+ } from "./chunk-5GLDOLNQ.js";
28
+ import {
29
+ createDebugLogger
30
+ } from "./chunk-ZAFYHRVY.js";
31
+ import {
32
+ MESSAGING_SOCKET_ENV,
33
+ MESSAGING_TOKEN_ENV,
34
+ clearInheritedPeerMessagingEnv
35
+ } from "./chunk-V5U2NZNJ.js";
36
+ import {
37
+ init_esbuild_shims
38
+ } from "./chunk-5O2XNYP6.js";
39
+ import {
40
+ __name
41
+ } from "./chunk-J2S4EL5Y.js";
42
+
43
+ // packages/cli/src/peerMessaging/peer-messaging.ts
44
+ init_esbuild_shims();
45
+ import { randomBytes } from "node:crypto";
46
+ var debugLogger = createDebugLogger("PEER_MESSAGING");
47
+ var MAX_ACCEPTED_BACKLOG = MAX_HELD_MESSAGES;
48
+ var CLOSE_DROP_FLUSH_BOUND_MS = 1e3;
49
+ var MAX_UNHEARD_DROP_NOTICES = 20;
50
+ var RECEIVER_REFILL_MS = PEER_ADMISSION_LIMITS.bucketCapacity / PEER_ADMISSION_LIMITS.refillPerSecond * 1e3;
51
+ var PeerMessaging = class _PeerMessaging {
52
+ static {
53
+ __name(this, "PeerMessaging");
54
+ }
55
+ inbox = null;
56
+ gate = null;
57
+ updateSessionRegistryIpcPath = /* @__PURE__ */ __name(async () => {
58
+ }, "updateSessionRegistryIpcPath");
59
+ getSessionId = null;
60
+ ownsSessionId = null;
61
+ settleSentMessage = settleSentPeerMessage;
62
+ reassertSessionRecord = null;
63
+ drainMirror = drainSendPacer;
64
+ forgetMirror = forgetSendPacerMessages;
65
+ refundMirror = refundSendPacerMessage;
66
+ refundMirrorToken = refundSendPacerToken;
67
+ receiptListeners = /* @__PURE__ */ new Set();
68
+ dropListeners = /* @__PURE__ */ new Set();
69
+ /** Notices raised before anything subscribed; see `onDropped`. */
70
+ unheardDrops = [];
71
+ /** Folds dropped receipts so a flood draws few connections, not many. */
72
+ dropReceipts = null;
73
+ submitFn = null;
74
+ buffered = [];
75
+ controllerRegistryPath = null;
76
+ validControllerIds = null;
77
+ /**
78
+ * Accepted frames whose 'delivered' receipt has not been earned yet:
79
+ * still buffered here or still queued in the session's input queue.
80
+ * Settled with a corrective receipt at close.
81
+ */
82
+ outstanding = [];
83
+ queuedPeerCount = null;
84
+ heldListeners = /* @__PURE__ */ new Set();
85
+ listedHeld = null;
86
+ closed = false;
87
+ // Options are consumed by `start`, which wires them into the gate and the
88
+ // inbox; the instance itself holds none of them.
89
+ constructor() {
90
+ }
91
+ /**
92
+ * Bind the socket and start accepting messages.
93
+ *
94
+ * Returns null when the inbox could not be bound. Callers treat that as
95
+ * "this session is not reachable" and carry on — it is never fatal.
96
+ */
97
+ static async start(options) {
98
+ if (options.getSessionId && options.ownsSessionId) {
99
+ throw new Error(
100
+ "PeerMessaging: pass getSessionId or ownsSessionId, not both"
101
+ );
102
+ }
103
+ const messaging = new _PeerMessaging();
104
+ const controllerRegistryPath = options.controllerRegistryPath ?? getPeerControllerRegistryPath();
105
+ messaging.controllerRegistryPath = controllerRegistryPath;
106
+ const dropReceipts = new DropReceiptCoalescer(
107
+ ({ frame, reason, droppedMsgIds }) => {
108
+ if (!frame.from) return;
109
+ return sendDeliveryStatus(
110
+ frame.from,
111
+ {
112
+ status: "dropped",
113
+ origMsgId: frame.msgId,
114
+ from: messaging.inbox?.socketPath,
115
+ dropReason: reason,
116
+ droppedMsgIds
117
+ },
118
+ frame.replyToken
119
+ );
120
+ },
121
+ options.dropReceiptTrailMs !== void 0 ? { trailMs: options.dropReceiptTrailMs } : {}
122
+ );
123
+ messaging.dropReceipts = dropReceipts;
124
+ const dropNotices = new DropNoticeThrottle(
125
+ (notice) => messaging.emitDropped(notice)
126
+ );
127
+ const gate = new InboundGate({
128
+ getApprovalMode: options.getApprovalMode,
129
+ getPolicySetting: options.getPolicySetting,
130
+ ...options.getHeldExpiryMs !== void 0 ? { getHeldExpiryMs: options.getHeldExpiryMs } : {},
131
+ ...options.getPolicyScope ? { getPolicyScope: options.getPolicyScope } : {},
132
+ isControllerValid: /* @__PURE__ */ __name((id) => messaging.validControllerIds?.has(id) ?? true, "isControllerValid"),
133
+ ...options.admission ? { admission: options.admission } : {},
134
+ getSessionId: options.getSessionId,
135
+ ...options.ownsSessionId ? { ownsSessionId: options.ownsSessionId } : {},
136
+ deliver: /* @__PURE__ */ __name((frame, origin) => messaging.deliver(frame, origin), "deliver"),
137
+ reportDropped: /* @__PURE__ */ __name((frame, reason, origin) => dropReceipts.note(frame, origin ?? { selfSent: false }, reason), "reportDropped"),
138
+ onDropped: /* @__PURE__ */ __name((frame, origin, reason) => dropNotices.note(frame, origin, reason), "onDropped"),
139
+ reportStatus: /* @__PURE__ */ __name((frame, status) => {
140
+ if (!frame.from) return;
141
+ return sendDeliveryStatus(
142
+ frame.from,
143
+ {
144
+ status,
145
+ origMsgId: frame.msgId,
146
+ from: messaging.inbox?.socketPath
147
+ },
148
+ frame.replyToken
149
+ );
150
+ }, "reportStatus"),
151
+ onHeldChange: /* @__PURE__ */ __name((held) => messaging.emitHeldChange(held), "onHeldChange")
152
+ });
153
+ messaging.gate = gate;
154
+ messaging.getSessionId = options.getSessionId ?? null;
155
+ messaging.ownsSessionId = options.ownsSessionId ?? null;
156
+ messaging.settleSentMessage = options.settleSentMessage ?? settleSentPeerMessage;
157
+ messaging.reassertSessionRecord = options.reassertSessionRecord ?? null;
158
+ messaging.drainMirror = options.drainMirror ?? drainSendPacer;
159
+ messaging.forgetMirror = options.forgetMirror ?? forgetSendPacerMessages;
160
+ messaging.refundMirror = options.refundMirror ?? refundSendPacerMessage;
161
+ messaging.refundMirrorToken = options.refundMirrorToken ?? refundSendPacerToken;
162
+ clearInheritedPeerMessagingEnv();
163
+ const ipcToken = options.ipcToken ?? randomBytes(32).toString("hex");
164
+ const childToken = options.childToken ?? randomBytes(32).toString("hex");
165
+ const inbox = await startPeerInbox({
166
+ ...options.socketPath !== void 0 ? { socketPath: options.socketPath } : {},
167
+ requiredToken: ipcToken,
168
+ childToken,
169
+ // Read from disk per auth line rather than captured here: a grant
170
+ // the user mints or revokes mid-session must take effect on the
171
+ // next connection, with nothing to restart.
172
+ resolveController: /* @__PURE__ */ __name((presented) => resolveControllerToken(presented, controllerRegistryPath), "resolveController"),
173
+ onFrame: /* @__PURE__ */ __name((frame, auth, controller) => messaging.onFrame(frame, {
174
+ selfSent: auth === "child",
175
+ ...controller ? { controller } : {}
176
+ }), "onFrame")
177
+ });
178
+ if (!inbox) return null;
179
+ messaging.inbox = inbox;
180
+ messaging.updateSessionRegistryIpcPath = options.updateSessionRegistryIpcPath;
181
+ await messaging.updateSessionRegistryIpcPath(inbox.socketPath, ipcToken);
182
+ process.env[MESSAGING_SOCKET_ENV] = inbox.socketPath;
183
+ process.env[MESSAGING_TOKEN_ENV] = childToken;
184
+ return messaging;
185
+ }
186
+ get socketPath() {
187
+ return this.inbox?.socketPath;
188
+ }
189
+ /**
190
+ * Register the TUI's submit function and flush anything accepted before
191
+ * the queue existed.
192
+ */
193
+ setSubmitFn(fn) {
194
+ if (this.closed) return;
195
+ this.withControllerValidity(() => {
196
+ this.submitFn = fn;
197
+ while (this.buffered.length > 0) {
198
+ const head = this.buffered[0];
199
+ if (!head || !this.submit(head.frame, head.origin)) break;
200
+ this.buffered.shift();
201
+ }
202
+ });
203
+ }
204
+ /**
205
+ * Register a counter for the peer entries still waiting in the
206
+ * session's input queue. At close, that many of the most recently
207
+ * submitted frames are settled alongside the buffered ones: the queue
208
+ * drains in order, so the unconsumed tail is exactly the queue's
209
+ * current depth.
210
+ */
211
+ setQueuedPeerCount(fn) {
212
+ this.queuedPeerCount = fn;
213
+ }
214
+ getHeld() {
215
+ return this.withControllerValidity(() => this.gate?.getHeld() ?? []);
216
+ }
217
+ /**
218
+ * How long a held message has to live, in milliseconds, or null when
219
+ * holds do not expire. Used by `/peers` to show what is left.
220
+ */
221
+ getHeldExpiryMs() {
222
+ return this.gate?.getHeldExpiryMs() ?? null;
223
+ }
224
+ /**
225
+ * Remember the held entries the `/peers` listing just showed the user.
226
+ *
227
+ * Accept/deny decisions are bound to this snapshot: the held set moves
228
+ * between listing and decision (arrivals, evictions, releases), and a
229
+ * handle that uniquely named the message the user reviewed must not
230
+ * resolve to a different one by decide time. The snapshot pins each
231
+ * entry's `heldAt` as well as its id: once an id's eviction tombstone
232
+ * is pruned from the gate's bounded settled-memory, a peer can re-send
233
+ * it with a swapped body, and only the fresh hold timestamp tells the
234
+ * re-admitted entry apart from the one the user reviewed.
235
+ */
236
+ recordHeldListing(heldEntries) {
237
+ this.listedHeld = heldEntries.map((entry) => ({
238
+ id: entry.frame.msgId,
239
+ heldAt: entry.heldAt
240
+ }));
241
+ }
242
+ /**
243
+ * True when the held set no longer matches the last recorded listing.
244
+ *
245
+ * Entries *leaving* the set are not a change. The expiry timer removes
246
+ * them with no peer or user activity -- a fourth mover the rationale
247
+ * above does not name -- and a shrinking set can never make a printed
248
+ * handle resolve to a different message: `resolveHeld` prefix-matches
249
+ * over the current set, so removing entries only narrows it. Bouncing
250
+ * those refuses a decision that would have been correct, and tells the
251
+ * user the list changed when what they can still uniquely name is
252
+ * exactly what they reviewed.
253
+ *
254
+ * Dropping an expired entry is safe because the gate tombstones it
255
+ * before it leaves the set, so a re-admitted id arrives with a fresh
256
+ * `heldAt` and still mismatches the pin below.
257
+ *
258
+ * What must still bounce: an arrival, and a re-sent id whose body may
259
+ * have been swapped, which the `heldAt` pin is what catches.
260
+ */
261
+ heldSetChangedSinceListing() {
262
+ const listed = this.listedHeld;
263
+ if (listed === null) return true;
264
+ const pinned = new Map(listed.map((entry) => [entry.id, entry.heldAt]));
265
+ const current = this.getHeld();
266
+ if (current.some((entry) => pinned.get(entry.frame.msgId) !== entry.heldAt))
267
+ return true;
268
+ const liveIds = current.map(
269
+ (entry) => canonicalizeMsgId(entry.frame.msgId)
270
+ );
271
+ const liveSet = new Set(liveIds);
272
+ for (const id of pinned.keys()) {
273
+ const departed = canonicalizeMsgId(id);
274
+ if (liveSet.has(departed)) continue;
275
+ if (liveIds.some((live) => live.startsWith(departed))) return true;
276
+ }
277
+ return false;
278
+ }
279
+ decide(msgId, decision) {
280
+ return this.withControllerValidity(
281
+ () => this.gate?.decide(msgId, decision) ?? "gone"
282
+ );
283
+ }
284
+ /** Remove a revoked grant's authority from messages already waiting. */
285
+ forgetController(id) {
286
+ return this.withControllerValidity(
287
+ () => this.gate?.forgetController(id) ?? 0
288
+ );
289
+ }
290
+ /** Release everything the gate now considers acceptable. */
291
+ reevaluate(reason) {
292
+ return this.withControllerValidity(
293
+ () => this.gate?.reevaluate(reason) ?? 0
294
+ );
295
+ }
296
+ onHeldChange(listener) {
297
+ this.heldListeners.add(listener);
298
+ try {
299
+ listener(this.getHeld());
300
+ } catch (error) {
301
+ debugLogger.debug(
302
+ `held-change listener threw: ${error instanceof Error ? error.message : String(error)}`
303
+ );
304
+ }
305
+ return () => this.heldListeners.delete(listener);
306
+ }
307
+ /** Subscribe to receipts for messages this session sent. */
308
+ onReceipt(listener) {
309
+ this.receiptListeners.add(listener);
310
+ return () => this.receiptListeners.delete(listener);
311
+ }
312
+ /**
313
+ * Subscribe to notices about messages this session turned away.
314
+ *
315
+ * Already throttled when they get here: one per sender per minute,
316
+ * carrying the count of what it stands for.
317
+ */
318
+ onDropped(listener) {
319
+ const first = this.dropListeners.size === 0;
320
+ this.dropListeners.add(listener);
321
+ if (first && this.unheardDrops.length > 0) {
322
+ const unheard = this.unheardDrops.splice(0, this.unheardDrops.length);
323
+ for (const notice of unheard) {
324
+ try {
325
+ listener(notice);
326
+ } catch (error) {
327
+ debugLogger.debug(
328
+ `drop listener threw on replay: ${error instanceof Error ? error.message : String(error)}`
329
+ );
330
+ }
331
+ }
332
+ }
333
+ return () => this.dropListeners.delete(listener);
334
+ }
335
+ emitDropped(notice) {
336
+ if (this.dropListeners.size === 0) {
337
+ if (this.unheardDrops.length < MAX_UNHEARD_DROP_NOTICES) {
338
+ this.unheardDrops.push(notice);
339
+ }
340
+ return;
341
+ }
342
+ for (const listener of this.dropListeners) {
343
+ try {
344
+ listener(notice);
345
+ } catch (error) {
346
+ debugLogger.debug(
347
+ `drop listener threw: ${error instanceof Error ? error.message : String(error)}`
348
+ );
349
+ }
350
+ }
351
+ }
352
+ emitReceipt(receipt) {
353
+ for (const listener of this.receiptListeners) {
354
+ try {
355
+ listener(receipt);
356
+ } catch (error) {
357
+ debugLogger.debug(
358
+ `receipt listener threw: ${error instanceof Error ? error.message : String(error)}`
359
+ );
360
+ }
361
+ }
362
+ }
363
+ async close() {
364
+ if (this.closed) return;
365
+ this.closed = true;
366
+ const shuttingDown = this.gate?.shutdown();
367
+ await this.inbox?.close();
368
+ await shuttingDown;
369
+ await this.settleUnconsumed();
370
+ clearInheritedPeerMessagingEnv();
371
+ await this.updateSessionRegistryIpcPath(void 0);
372
+ await this.dropReceipts?.flush(CLOSE_DROP_FLUSH_BOUND_MS);
373
+ this.dropReceipts?.dispose();
374
+ }
375
+ /**
376
+ * Correct the 'delivered' receipts of accepted messages the session
377
+ * never consumed. Without this, a sender told "delivered" about a
378
+ * message that dies in the buffer or the input queue at exit cannot
379
+ * tell that from "delivered and read" — the distinction the receipts
380
+ * exist to carry.
381
+ */
382
+ async settleUnconsumed() {
383
+ const queued = this.queuedPeerCount?.() ?? 0;
384
+ const dropped = this.outstanding.slice(
385
+ Math.max(0, this.outstanding.length - this.buffered.length - queued)
386
+ );
387
+ const receipts = dropped.filter((frame) => frame.from !== void 0).map(
388
+ (frame) => sendDeliveryStatus(
389
+ frame.from,
390
+ {
391
+ status: "expired",
392
+ origMsgId: frame.msgId,
393
+ from: this.inbox?.socketPath
394
+ },
395
+ frame.replyToken
396
+ )
397
+ );
398
+ await Promise.allSettled(receipts);
399
+ }
400
+ /**
401
+ * Apply a receipt that says a burst of this session's messages was
402
+ * turned away at the far inbox.
403
+ *
404
+ * Every id it names is settled, but only ids this session actually sent
405
+ * and has not settled already — the same rule every other receipt
406
+ * follows, applied to a list. A receipt that moves nothing is noise
407
+ * from a stranger, or a repeat, and says nothing to the user.
408
+ *
409
+ * One notice for the whole batch: the point of folding the receipt was
410
+ * that a flood must not become a flood of lines, and unfolding it here
411
+ * would undo that.
412
+ */
413
+ onDroppedReceipt(frame) {
414
+ const ids = [frame.origMsgId, ...frame.droppedMsgIds ?? []];
415
+ let first;
416
+ let settledCount = 0;
417
+ const settledByPath = /* @__PURE__ */ new Map();
418
+ for (const id of ids) {
419
+ const settled = this.settleSentMessage(id, "dropped");
420
+ if (!settled) continue;
421
+ first ??= settled;
422
+ settledCount += 1;
423
+ const entry = settledByPath.get(settled.ipcPath) ?? {
424
+ ids: [],
425
+ freshestAgeMs: Number.POSITIVE_INFINITY
426
+ };
427
+ entry.ids.push(id);
428
+ entry.freshestAgeMs = Math.min(entry.freshestAgeMs, settled.ageMs);
429
+ settledByPath.set(settled.ipcPath, entry);
430
+ }
431
+ if (!first) {
432
+ debugLogger.debug(
433
+ `ignoring dropped receipt for ${frame.origMsgId}: unknown message or repeated receipt`
434
+ );
435
+ return;
436
+ }
437
+ debugLogger.debug(
438
+ `dropped receipt from ${first.address} (${frame.dropReason ?? "unspecified"}) settled ${settledCount} message(s)`
439
+ );
440
+ if (frame.dropReason === "duplicate") {
441
+ for (const [ipcPath, entry] of settledByPath) {
442
+ for (const id of entry.ids) this.refundMirrorToken(ipcPath, id);
443
+ }
444
+ } else {
445
+ for (const [ipcPath, entry] of settledByPath) {
446
+ this.forgetMirror(ipcPath, entry.ids);
447
+ }
448
+ }
449
+ if (frame.dropReason === "rate-limited") {
450
+ for (const [ipcPath, entry] of settledByPath) {
451
+ if (entry.freshestAgeMs <= RECEIVER_REFILL_MS)
452
+ this.drainMirror(ipcPath);
453
+ }
454
+ }
455
+ this.emitReceipt({
456
+ status: "dropped",
457
+ address: first.address,
458
+ origMsgId: frame.origMsgId,
459
+ // A drop can only follow `pending`; the ledger enforced that above.
460
+ previous: "pending",
461
+ ...frame.dropReason ? { dropReason: frame.dropReason } : {},
462
+ dropped: settledCount
463
+ });
464
+ }
465
+ /**
466
+ * `origin` is what the transport established from the connection's auth
467
+ * line — the child token, or a controller grant the user minted. None
468
+ * of it is ever read off the frame.
469
+ */
470
+ onFrame(frame, origin) {
471
+ if (frame.type === "control") {
472
+ if (frame.status === "dropped") {
473
+ this.onDroppedReceipt(frame);
474
+ return;
475
+ }
476
+ const settled = this.settleSentMessage(frame.origMsgId, frame.status);
477
+ if (!settled) {
478
+ debugLogger.debug(
479
+ `ignoring delivery status ${frame.status} for ${frame.origMsgId}: unknown message or repeated receipt`
480
+ );
481
+ return;
482
+ }
483
+ debugLogger.debug(
484
+ `delivery status from ${settled.address}: ${settled.previous} -> ${frame.status} for ${frame.origMsgId}`
485
+ );
486
+ if (frame.status !== "held" && frame.status !== "delivered") {
487
+ if (frame.status === "misaddressed") {
488
+ this.refundMirror(settled.ipcPath, frame.origMsgId);
489
+ } else {
490
+ this.forgetMirror(settled.ipcPath, [frame.origMsgId]);
491
+ }
492
+ }
493
+ this.emitReceipt({
494
+ status: frame.status,
495
+ address: settled.address,
496
+ origMsgId: frame.origMsgId,
497
+ previous: settled.previous
498
+ });
499
+ return;
500
+ }
501
+ const ownSessionId = this.getSessionId?.();
502
+ const ownsSessionId = this.ownsSessionId;
503
+ const misaddressed = ownsSessionId ? (
504
+ // Hosting several sessions: a frame has to say which, and name one
505
+ // this process still holds.
506
+ frame.toSessionId === void 0 || !ownsSessionId(frame.toSessionId)
507
+ ) : frame.toSessionId !== void 0 && ownSessionId !== void 0 && frame.toSessionId !== ownSessionId;
508
+ if (misaddressed) {
509
+ debugLogger.debug(
510
+ `refusing peer message ${frame.msgId}: addressed to session ${frame.toSessionId ?? "(unspecified)"}, this process does not hold it`
511
+ );
512
+ if (frame.from) {
513
+ void sendDeliveryStatus(
514
+ frame.from,
515
+ {
516
+ status: "misaddressed",
517
+ origMsgId: frame.msgId,
518
+ from: this.inbox?.socketPath
519
+ },
520
+ frame.replyToken
521
+ );
522
+ }
523
+ void this.reassertSessionRecord?.().catch((error) => {
524
+ debugLogger.debug(
525
+ `re-asserting the session record failed: ${error instanceof Error ? error.message : String(error)}`
526
+ );
527
+ });
528
+ return;
529
+ }
530
+ this.gate?.admit(frame, origin);
531
+ }
532
+ deliver(frame, origin) {
533
+ if (!this.submitFn) {
534
+ if (this.buffered.length >= MAX_ACCEPTED_BACKLOG) {
535
+ throw new Error("accepted-message backlog is full");
536
+ }
537
+ this.buffered.push({ frame, origin });
538
+ this.trackOutstanding(frame);
539
+ return;
540
+ }
541
+ if (this.buffered.length > 0) {
542
+ this.withControllerValidity(() => {
543
+ while (this.buffered.length > 0) {
544
+ const head = this.buffered[0];
545
+ if (!head || !this.submit(head.frame, head.origin)) {
546
+ throw new Error("accepted-message backlog is full");
547
+ }
548
+ this.buffered.shift();
549
+ }
550
+ });
551
+ }
552
+ if (!this.submit(frame, origin)) {
553
+ throw new Error("accepted-message backlog is full");
554
+ }
555
+ this.trackOutstanding(frame);
556
+ }
557
+ trackOutstanding(frame) {
558
+ this.outstanding.push(frame);
559
+ while (this.outstanding.length > 2 * MAX_ACCEPTED_BACKLOG) {
560
+ this.outstanding.shift();
561
+ }
562
+ }
563
+ withControllerValidity(action) {
564
+ if (this.controllerRegistryPath === null || this.validControllerIds) {
565
+ return action();
566
+ }
567
+ this.validControllerIds = new Set(
568
+ readPeerControllerRegistrySync(
569
+ this.controllerRegistryPath
570
+ ).controllers.map((controller) => controller.id)
571
+ );
572
+ for (const delivery of this.buffered) {
573
+ const controller = delivery.origin.controller;
574
+ if (controller && !this.validControllerIds.has(controller.id)) {
575
+ delete delivery.origin.controller;
576
+ }
577
+ }
578
+ try {
579
+ return action();
580
+ } finally {
581
+ this.validControllerIds = null;
582
+ }
583
+ }
584
+ submit(frame, origin) {
585
+ const from = frame.from ?? (origin.controller ? "controller" : origin.selfSent ? "own process" : "unknown session");
586
+ const attribution = {
587
+ selfSent: origin.selfSent,
588
+ ...origin.controller ? { controller: origin.controller } : {}
589
+ };
590
+ return this.submitFn?.(
591
+ formatPeerEnvelope({
592
+ from,
593
+ ...frame.fromName !== void 0 ? { fromName: frame.fromName } : {},
594
+ content: frame.message.content,
595
+ ...attribution
596
+ }),
597
+ formatPeerDisplay({
598
+ from,
599
+ ...frame.fromName !== void 0 ? { fromName: frame.fromName } : {},
600
+ content: frame.message.content,
601
+ ...attribution
602
+ }),
603
+ {
604
+ msgId: frame.msgId,
605
+ admissionKey: peerSenderKey(frame, origin),
606
+ ...frame.from !== void 0 ? { from: frame.from } : {},
607
+ ...frame.replyToken !== void 0 ? { replyToken: frame.replyToken } : {},
608
+ ...frame.toSessionId !== void 0 ? { toSessionId: frame.toSessionId } : {}
609
+ }
610
+ ) ?? false;
611
+ }
612
+ /** Drop a queued frame if an in-process session swap invalidated its pin. */
613
+ drainQueuedFrame(delivery) {
614
+ const ownSessionId = this.getSessionId?.();
615
+ if (delivery?.toSessionId === void 0 || ownSessionId === void 0 || delivery.toSessionId === ownSessionId) {
616
+ return true;
617
+ }
618
+ debugLogger.debug(
619
+ `dropping queued peer message ${delivery.msgId}: addressed to session ${delivery.toSessionId}, this is ${ownSessionId}`
620
+ );
621
+ if (delivery.from) {
622
+ void sendDeliveryStatus(
623
+ delivery.from,
624
+ {
625
+ status: "misaddressed",
626
+ origMsgId: delivery.msgId,
627
+ from: this.inbox?.socketPath
628
+ },
629
+ delivery.replyToken
630
+ );
631
+ }
632
+ if (delivery.admissionKey !== void 0) {
633
+ this.gate?.forgetAdmittedMessage(delivery.admissionKey, delivery.msgId);
634
+ }
635
+ return false;
636
+ }
637
+ emitHeldChange(held) {
638
+ for (const listener of this.heldListeners) {
639
+ try {
640
+ listener(held);
641
+ } catch (error) {
642
+ debugLogger.debug(
643
+ `held-change listener threw: ${error instanceof Error ? error.message : String(error)}`
644
+ );
645
+ }
646
+ }
647
+ }
648
+ };
649
+
650
+ // packages/cli/src/utils/classify-api-error.ts
651
+ init_esbuild_shims();
652
+ function classifyApiError(error) {
653
+ const status = error.status;
654
+ const message = error.message?.toLowerCase() ?? "";
655
+ if (status === 429 || message.includes("rate limit")) {
656
+ return "rate_limit";
657
+ }
658
+ if (status === 401 || message.includes("unauthorized")) {
659
+ return "authentication_failed";
660
+ }
661
+ if (status === 402 || status === 403 || message.includes("billing") || message.includes("quota")) {
662
+ return "billing_error";
663
+ }
664
+ if (status === 400 || message.includes("invalid")) {
665
+ return "invalid_request";
666
+ }
667
+ if (status !== void 0 && status >= 500) {
668
+ return "server_error";
669
+ }
670
+ if (message.includes("max_tokens") || message.includes("token limit")) {
671
+ return "max_output_tokens";
672
+ }
673
+ return "unknown";
674
+ }
675
+ __name(classifyApiError, "classifyApiError");
676
+
677
+ export {
678
+ classifyApiError,
679
+ MAX_ACCEPTED_BACKLOG,
680
+ PeerMessaging
681
+ };
682
+ /**
683
+ * @license
684
+ * Copyright 2026 Qwen
685
+ * SPDX-License-Identifier: Apache-2.0
686
+ */
687
+ /**
688
+ * @license
689
+ * Copyright 2025 Google LLC
690
+ * SPDX-License-Identifier: Apache-2.0
691
+ */
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  execCommand,
5
5
  isCommandAvailable
6
- } from "./chunk-N6S3NUYJ.js";
6
+ } from "./chunk-JXNIF2O5.js";
7
7
  import {
8
8
  fileExists
9
9
  } from "./chunk-J6MB5ZHZ.js";