@qwen-code/qwen-code 0.21.7 → 0.21.8-nightly.20260810.55e20db328

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 (334) hide show
  1. package/README.md +2 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +73 -59
  3. package/bundled/qc-helper/docs/extension/introduction.md +15 -1
  4. package/bundled/qc-helper/docs/features/channels/dingtalk.md +40 -2
  5. package/bundled/qc-helper/docs/features/channels/feishu.md +13 -2
  6. package/bundled/qc-helper/docs/features/channels/github.md +13 -11
  7. package/bundled/qc-helper/docs/features/channels/gitlab.md +13 -11
  8. package/bundled/qc-helper/docs/features/channels/overview.md +49 -31
  9. package/bundled/qc-helper/docs/features/channels/plugins.md +2 -2
  10. package/bundled/qc-helper/docs/features/channels/qqbot.md +4 -2
  11. package/bundled/qc-helper/docs/features/channels/telegram.md +4 -2
  12. package/bundled/qc-helper/docs/features/channels/wecom.md +1 -1
  13. package/bundled/qc-helper/docs/features/code-review.md +4 -0
  14. package/bundled/qc-helper/docs/features/commands.md +1 -1
  15. package/bundled/qc-helper/docs/features/hooks.md +52 -0
  16. package/bundled/qc-helper/docs/integration-jetbrains.md +1 -0
  17. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
  18. package/bundled/qc-helper/docs/qwen-serve.md +10 -5
  19. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +50 -36
  20. package/bundled/review/SKILL.md +32 -5
  21. package/chunks/{MaxSizedBox-ANWZBPTS.js → MaxSizedBox-A52T4GEU.js} +29 -25
  22. package/chunks/{StandaloneSessionPicker-XKS3VU3A.js → StandaloneSessionPicker-4J654SOB.js} +48 -44
  23. package/chunks/{acp-startup-profiler-ORIQ2CCQ.js → acp-startup-profiler-B5BYAMYQ.js} +2 -2
  24. package/chunks/{acpAgent-KUAZ3GCZ.js → acpAgent-65AM4AOR.js} +1833 -843
  25. package/chunks/{agent-T6PTGX5R.js → agent-SVQ7U7NJ.js} +28 -24
  26. package/chunks/{agent-headless-PR7YCB7S.js → agent-headless-XXGY2SQO.js} +28 -24
  27. package/chunks/{artifact-tool-U4VOZIK5.js → artifact-tool-N652YE4L.js} +1 -1
  28. package/chunks/{askUserQuestion-XOBQLPFA.js → askUserQuestion-ONW74PKJ.js} +1 -1
  29. package/chunks/{bridge-NU6YEEHK.js → bridge-Y32B5S3G.js} +34 -30
  30. package/chunks/{ca-NYKNH222.js → ca-ZLKAB4K3.js} +6 -0
  31. package/chunks/{channel-management-service-FSQ7SHYI.js → channel-management-service-PHELKOW2.js} +19 -10
  32. package/chunks/{channel-settings-store-35VQVUVV.js → channel-settings-store-OW43U6VB.js} +36 -32
  33. package/chunks/{channel-worker-group-JWQK224X.js → channel-worker-group-MSHT6CWR.js} +7 -7
  34. package/chunks/{channel-worker-manager-77E3OXRQ.js → channel-worker-manager-XXD3GDSK.js} +7 -7
  35. package/chunks/{channel-worker-supervisor-62YWUGP2.js → channel-worker-supervisor-IVSDIMI4.js} +4 -4
  36. package/chunks/{chunk-HYRDKNUY.js → chunk-2545EHZR.js} +1 -1
  37. package/chunks/{chunk-SPMY6CX6.js → chunk-2ASQDZSJ.js} +3 -3
  38. package/chunks/{chunk-CJXIIILK.js → chunk-2FRY5CRX.js} +1 -1
  39. package/chunks/{chunk-CNIID3TV.js → chunk-2UUMVNYT.js} +1 -1
  40. package/chunks/{chunk-KXSDEOFU.js → chunk-3KJQZEN3.js} +1 -1
  41. package/chunks/{chunk-22NBYCPD.js → chunk-3P2LV43B.js} +1 -1
  42. package/chunks/{chunk-Y7E5LNLO.js → chunk-47ZUMGGY.js} +2634 -2114
  43. package/chunks/{chunk-LA7YLSR6.js → chunk-4EOURKA4.js} +839 -153
  44. package/chunks/chunk-4JRM2BSM.js +48 -0
  45. package/chunks/{chunk-BGG4MBYD.js → chunk-4PYCZH2V.js} +4 -187
  46. package/chunks/{chunk-L4N6TIP7.js → chunk-4TRQPFDP.js} +4 -2
  47. package/chunks/{chunk-6XJMFJ4D.js → chunk-5WZL724W.js} +177 -120
  48. package/chunks/{chunk-23RZCH76.js → chunk-5ZTS3OQ3.js} +3 -3
  49. package/chunks/{chunk-VWOVHOTT.js → chunk-67EWJE77.js} +1 -1
  50. package/chunks/{chunk-3K7FH2KQ.js → chunk-67N6HB5H.js} +1310 -171
  51. package/chunks/{chunk-CXE7E23H.js → chunk-6Q5ABMTU.js} +45 -17
  52. package/chunks/{chunk-NG2R4N5O.js → chunk-6ZRFAKXK.js} +1 -1
  53. package/chunks/{chunk-RERATVSK.js → chunk-7XX5IBXL.js} +145 -10
  54. package/chunks/{chunk-S7CV4KO6.js → chunk-AKJQSWV4.js} +4 -4
  55. package/chunks/{chunk-5KH532V7.js → chunk-AUWN7BAG.js} +1 -1
  56. package/chunks/{chunk-DBOFL3LQ.js → chunk-BL65MO72.js} +10 -10
  57. package/chunks/{chunk-AKA24BGO.js → chunk-BT6GQIEJ.js} +1 -1
  58. package/chunks/{chunk-W7U4ESW2.js → chunk-CG3WBKJK.js} +1 -1
  59. package/chunks/{chunk-2M5N3DHY.js → chunk-CMOBWHWW.js} +1 -1
  60. package/chunks/chunk-COBO5EBO.js +135 -0
  61. package/chunks/chunk-CPG6P4GG.js +82 -0
  62. package/chunks/{chunk-3NB7TSE2.js → chunk-D2D7J3EW.js} +1 -1
  63. package/chunks/{chunk-NLREQJFK.js → chunk-DA4HRSBW.js} +15 -0
  64. package/chunks/{chunk-RNVQB725.js → chunk-DPMJLKUP.js} +2 -2
  65. package/chunks/{chunk-DIEFUBV6.js → chunk-DX3RGJMS.js} +218 -37
  66. package/chunks/{chunk-33ACCIIY.js → chunk-DZUO626D.js} +1 -1
  67. package/chunks/chunk-E2FPSSKP.js +244 -0
  68. package/chunks/{chunk-72LNFGUY.js → chunk-E2N554HK.js} +3 -3
  69. package/chunks/{chunk-6EOI4HOK.js → chunk-E2T7FLDU.js} +12 -17
  70. package/chunks/{chunk-EUQTXRKZ.js → chunk-EISUQQPS.js} +6 -6
  71. package/chunks/{chunk-H2UQ2M5Z.js → chunk-EUVOKP6Y.js} +96 -22
  72. package/chunks/{chunk-RMH5OWLD.js → chunk-F3II4BTZ.js} +1 -1
  73. package/chunks/{chunk-P3LEG54R.js → chunk-F6TUUA2U.js} +3 -3
  74. package/chunks/chunk-F6WFNA7U.js +22 -0
  75. package/chunks/{chunk-RZHU3ILK.js → chunk-FAD7OC7V.js} +4 -4
  76. package/chunks/{chunk-OMKQH5C5.js → chunk-FWWQIFDT.js} +6 -23
  77. package/chunks/{chunk-TLV2IMHR.js → chunk-FYB4GIDW.js} +3 -3
  78. package/chunks/{chunk-ZJ3VGYHK.js → chunk-GY24H6IA.js} +40 -22
  79. package/chunks/{chunk-P2AJ7FTI.js → chunk-H4JC7LZX.js} +1 -1
  80. package/chunks/{chunk-55LYDVPU.js → chunk-HDYQYYWB.js} +1 -1
  81. package/chunks/{chunk-PQBHU2IA.js → chunk-HKI3KHAO.js} +11 -11
  82. package/chunks/{chunk-Y4NGLFGJ.js → chunk-HUWENAHO.js} +1 -1
  83. package/chunks/{chunk-3ULCB3NE.js → chunk-HV76SFIA.js} +1 -1
  84. package/chunks/{chunk-CSZEXZBE.js → chunk-HWXGX534.js} +3 -3
  85. package/chunks/{chunk-E33LOKRA.js → chunk-I5VM3SKY.js} +22 -5
  86. package/chunks/{chunk-LZC3B5N2.js → chunk-IA7TGCN2.js} +2 -2
  87. package/chunks/{chunk-RGSBTHSU.js → chunk-KMS57JDD.js} +137 -7
  88. package/chunks/{chunk-VOARQPTA.js → chunk-KP25NJNM.js} +65 -21
  89. package/chunks/{chunk-6M26GBKX.js → chunk-L2AFWWJE.js} +42 -3
  90. package/chunks/{chunk-ZXU5UHMI.js → chunk-LHEC5V6G.js} +2 -2
  91. package/chunks/{chunk-J26HHFI5.js → chunk-LP2QGNSP.js} +32 -2
  92. package/chunks/{chunk-R574ATRM.js → chunk-M2PNLYGY.js} +41 -0
  93. package/chunks/{chunk-MKVZE4ZJ.js → chunk-MFDYOYZZ.js} +3 -2
  94. package/chunks/{chunk-ALGGS7UH.js → chunk-NPQ5ZKRP.js} +82 -1
  95. package/chunks/{chunk-YHEEE624.js → chunk-NV3F44FL.js} +7 -3
  96. package/chunks/{chunk-6GONZVLS.js → chunk-NZMXUSKS.js} +1 -1
  97. package/chunks/{chunk-HQB2KUAN.js → chunk-O277O7U6.js} +1 -1
  98. package/chunks/{chunk-Y4EWSQF7.js → chunk-OBP6QWD5.js} +2 -2
  99. package/chunks/{chunk-CYR3HI5X.js → chunk-OQTXYMKW.js} +2 -2
  100. package/chunks/{chunk-TYKC75AX.js → chunk-OR6R3IUW.js} +2 -2
  101. package/chunks/{chunk-TRLYP7OF.js → chunk-OSVH4SMN.js} +16 -141
  102. package/chunks/{chunk-FPM27XN4.js → chunk-OW2BWT2P.js} +4 -4
  103. package/chunks/{chunk-TDXGKHDN.js → chunk-P5ULXPK5.js} +2 -2
  104. package/chunks/{chunk-24ER7UV4.js → chunk-PBRVUF5B.js} +1 -1
  105. package/chunks/{chunk-LKRMNRSN.js → chunk-PDPFQ2FO.js} +2 -0
  106. package/chunks/{chunk-2VSTGY6M.js → chunk-PJRW65JO.js} +1 -1
  107. package/chunks/{chunk-6HVUFDS2.js → chunk-PNVPFARW.js} +22 -13
  108. package/chunks/{chunk-IC4Z6LX6.js → chunk-PYQADEFD.js} +5 -0
  109. package/chunks/chunk-R4ZA6GBK.js +208 -0
  110. package/chunks/{chunk-KR4ZSC7K.js → chunk-RMPLEWF3.js} +3 -3
  111. package/chunks/{chunk-EORNAQDT.js → chunk-RQ6U2JJQ.js} +1 -1
  112. package/chunks/{chunk-AE77C5ZU.js → chunk-RYQMJCUO.js} +1 -1
  113. package/chunks/{chunk-6UWFTUQL.js → chunk-S5CULOHB.js} +75 -31
  114. package/chunks/{chunk-7UFKAV7Y.js → chunk-S6HYI3MF.js} +2 -2
  115. package/chunks/chunk-SAH4BD2J.js +92 -0
  116. package/chunks/chunk-SR7RZ4MS.js +202 -0
  117. package/chunks/{chunk-QETYKPMG.js → chunk-T2O6NIOY.js} +1 -1
  118. package/chunks/chunk-TQOF5KBL.js +71 -0
  119. package/chunks/{chunk-OHJLEW5J.js → chunk-TWFFY5BP.js} +4 -4
  120. package/chunks/{chunk-SCI7K3GM.js → chunk-TXO5BMR2.js} +19 -10
  121. package/chunks/{chunk-YJQCUTT2.js → chunk-UAB6J2IE.js} +4 -4
  122. package/chunks/{chunk-OFI7IGST.js → chunk-UGUKH3SU.js} +10 -10
  123. package/chunks/{chunk-SHZYHGQH.js → chunk-V2226RFW.js} +1 -1
  124. package/chunks/{chunk-KKJJB5X6.js → chunk-V47QNK5W.js} +1526 -833
  125. package/chunks/{chunk-W4B7UBUS.js → chunk-VHXPSL57.js} +6 -6
  126. package/chunks/{chunk-WUC6ZFXO.js → chunk-VKJ4KTPJ.js} +1 -1
  127. package/chunks/{chunk-MAJS7AT4.js → chunk-VNNWAZSI.js} +2 -2
  128. package/chunks/{chunk-BVWVWGLE.js → chunk-WAUGQKUU.js} +4 -64
  129. package/chunks/{chunk-OH2VKQXH.js → chunk-WH6QMLUW.js} +37 -30
  130. package/chunks/{chunk-PJOBIWUG.js → chunk-WQYWK4DG.js} +1 -1
  131. package/chunks/{chunk-LEMXGVEP.js → chunk-YFRFZCIP.js} +3 -3
  132. package/chunks/{chunk-2U3WZGZG.js → chunk-YGT2AUJ7.js} +103 -135
  133. package/chunks/{chunk-6XU3PH66.js → chunk-YR7ZQ4RD.js} +22 -69
  134. package/chunks/{chunk-OA4JVLSA.js → chunk-Z7VOMGDC.js} +22 -1
  135. package/chunks/{chunk-RUL4S3K3.js → chunk-ZCJBCKL5.js} +175 -60
  136. package/chunks/{chunk-GSS34377.js → chunk-ZI5IH2HP.js} +2 -2
  137. package/chunks/{chunk-CB2464BK.js → chunk-ZIKTCMQF.js} +117 -10
  138. package/chunks/chunk-ZLBIFIMV.js +1099 -0
  139. package/chunks/{chunk-D3UEZIQH.js → chunk-ZSNBQXMZ.js} +48 -55
  140. package/chunks/{chunk-FZBZSYKU.js → chunk-ZV7LTLFE.js} +1 -1
  141. package/chunks/{computer-use-KEAPATUY.js → computer-use-SLN7DV2E.js} +28 -24
  142. package/chunks/{config-utils-K7SCOWHD.js → config-utils-ULCSRMWD.js} +4 -4
  143. package/chunks/{contextCommand-ZJA6A5K5.js → contextCommand-EHFYX6FW.js} +30 -26
  144. package/chunks/{core-runtime-QMJPWHCI.js → core-runtime-FBSP5IIG.js} +33 -29
  145. package/chunks/{create-sub-session-E4PBYXV5.js → create-sub-session-QIDZUOPU.js} +1 -1
  146. package/chunks/{create-sub-session-DJE6XICH.js → create-sub-session-WC7YGVSL.js} +29 -25
  147. package/chunks/{cron-create-GRBWYMIJ.js → cron-create-VONA5JYY.js} +1 -1
  148. package/chunks/{cron-delete-4CMKBR2M.js → cron-delete-5JXSP2MI.js} +1 -1
  149. package/chunks/{cron-list-W7K4ASOA.js → cron-list-KE4F2CIR.js} +1 -1
  150. package/chunks/{daemon-SCTQMM7Z.js → daemon-VSX3FHTY.js} +119 -4
  151. package/chunks/{daemon-status-provider-FSWDPE2G.js → daemon-status-provider-WW2AD2T7.js} +39 -35
  152. package/chunks/{daemon-trust-policy-P5L5VFAY.js → daemon-trust-policy-E4MAYWPI.js} +35 -31
  153. package/chunks/{daemon-trust-policy-monitor-73JYN6ET.js → daemon-trust-policy-monitor-XVIDV6T4.js} +35 -31
  154. package/chunks/{de-VL76CPLV.js → de-LIW4XVLN.js} +5 -0
  155. package/chunks/{deferred-core-runtime-BWRCCFTE.js → deferred-core-runtime-5SVUC6UC.js} +28 -24
  156. package/chunks/{display-image-O2XFPQTC.js → display-image-NQRSIBXM.js} +2 -2
  157. package/chunks/{dist-HVBMEYWK.js → dist-3NTTUAHT.js} +1 -1
  158. package/chunks/{dist-7JGAAQSC.js → dist-6BMOAE3Z.js} +2 -2
  159. package/chunks/{dist-3BMEUGTG.js → dist-B2CGTW6T.js} +1 -1
  160. package/chunks/{dist-C5U4LJKW.js → dist-EWW3J4HQ.js} +5 -4
  161. package/chunks/{dist-K4WWQBHS.js → dist-EZE3V3Q7.js} +55 -15
  162. package/chunks/{dist-DPPHJAVL.js → dist-J47AXBZC.js} +918 -142
  163. package/chunks/{dist-SFQ34F4M.js → dist-OTUO3AS2.js} +8 -1091
  164. package/chunks/{dist-KS4O2NKE.js → dist-Z3CS4OVP.js} +14 -8
  165. package/chunks/{earlyInputCapture-L5ST23A6.js → earlyInputCapture-72FYHYRD.js} +28 -24
  166. package/chunks/{edit-LHHRFNFK.js → edit-SWVVWHXW.js} +28 -24
  167. package/chunks/{en-IRJ2WN5T.js → en-SY5GTIGX.js} +6 -0
  168. package/chunks/{enter-worktree-6NXCRZPF.js → enter-worktree-2HF6WQEO.js} +28 -24
  169. package/chunks/{enterPlanMode-ZVQT4U7D.js → enterPlanMode-OW6S7L4P.js} +28 -24
  170. package/chunks/{environment-GJ2HWJOS.js → environment-LRTBTDXH.js} +32 -28
  171. package/chunks/{errors-6RLH3XXC.js → errors-4CO2DME6.js} +30 -26
  172. package/chunks/{exit-worktree-I2YLUHHY.js → exit-worktree-GHJEIRGL.js} +28 -24
  173. package/chunks/{exitPlanMode-7CCWKO7I.js → exitPlanMode-JVP4FNNK.js} +28 -24
  174. package/chunks/{fast-path-DVFD4HQD.js → fast-path-HCCY7GR2.js} +24 -3
  175. package/chunks/{fast-path-settings-WQJU2LAT.js → fast-path-settings-MN5QQQET.js} +6 -3
  176. package/chunks/{fr-GK3HQYVB.js → fr-RQFO7U4P.js} +5 -0
  177. package/chunks/{gemini-7FWGOYD4.js → gemini-V3YVRKXU.js} +85 -72
  178. package/chunks/{geminiContentGenerator-V2WVLIXU.js → geminiContentGenerator-LVPMQUWX.js} +1 -1
  179. package/chunks/{glob-3N6GGI75.js → glob-7HRXHYDR.js} +28 -24
  180. package/chunks/{goal-tools-APOW6UXL.js → goal-tools-PXWN5VK3.js} +4 -2
  181. package/chunks/{grep-V43ILZVX.js → grep-BITQUON5.js} +28 -24
  182. package/chunks/{handleAutoUpdate-A5WFVWIA.js → handleAutoUpdate-DKFY454S.js} +32 -28
  183. package/chunks/{i18n-PLVQ4FBZ.js → i18n-53BQIQSH.js} +29 -25
  184. package/chunks/{image-gen-7C6IK6DC.js → image-gen-H62FLDFB.js} +7 -5
  185. package/chunks/{initializer-CVAIKZYL.js → initializer-Q7NUQRSU.js} +35 -31
  186. package/chunks/{installationInfo-J6QDHNTK.js → installationInfo-BWFHT7WU.js} +29 -25
  187. package/chunks/{ja-3FA46IKD.js → ja-KOZKHJHZ.js} +5 -0
  188. package/chunks/{list-ZZ4OUUWV.js → list-OWQKR6JK.js} +38 -34
  189. package/chunks/{list-agents-KFFIIS2G.js → list-agents-Z4WABFDZ.js} +1 -1
  190. package/chunks/{loadedSettingsAdapter-QRYRJSWL.js → loadedSettingsAdapter-HNPKQMFA.js} +35 -31
  191. package/chunks/{loggingContentGenerator-OJCO75HM.js → loggingContentGenerator-A5I3VQUC.js} +10 -8
  192. package/chunks/{loop-wakeup-TLMJPMMP.js → loop-wakeup-UZ5RL5Y2.js} +2 -2
  193. package/chunks/{ls-UVVE2XGE.js → ls-TVHDGIES.js} +1 -1
  194. package/chunks/{lsp-QMEA2VLB.js → lsp-CVN6OQPI.js} +1 -1
  195. package/chunks/main-PXAUXNF2.js +8 -0
  196. package/chunks/{managed-npm-update-PCOSCP2N.js → managed-npm-update-CUUJGUTV.js} +29 -25
  197. package/chunks/{mcp-M3WKKWKY.js → mcp-GJSC7ZPO.js} +35 -31
  198. package/chunks/{monitor-GN24FH6C.js → monitor-TZ2II7JM.js} +38 -30
  199. package/chunks/{nonInteractiveCli-KPTU3VSQ.js → nonInteractiveCli-22RS4EVH.js} +72 -66
  200. package/chunks/{notebook-edit-4YM65BBO.js → notebook-edit-YZC3YPY2.js} +36 -24
  201. package/chunks/{openaiContentGenerator-EDQT6GTV.js → openaiContentGenerator-OIGO5XNF.js} +21 -11
  202. package/chunks/{pidfile-JOIIRN2C.js → pidfile-QJQ65RJ2.js} +28 -24
  203. package/chunks/{process-registry-2CHQBXH5.js → process-registry-PMJOA5CO.js} +15 -0
  204. package/chunks/{processUtils-5SV4MX3Q.js → processUtils-V5VSDIKS.js} +2 -2
  205. package/chunks/{pt-3AOBKPIJ.js → pt-U6AOCTMF.js} +5 -0
  206. package/chunks/{qwenContentGenerator-ODRJSUGR.js → qwenContentGenerator-HXM25BGB.js} +35 -30
  207. package/chunks/{qwenOAuth2-NESCMZ47.js → qwenOAuth2-7MTMS2Z5.js} +7 -5
  208. package/chunks/{read-file-HPSODLPK.js → read-file-PMGXB3ZB.js} +8 -6
  209. package/chunks/{read-mcp-resource-2TNSJTC3.js → read-mcp-resource-PZ4ZF6YL.js} +1 -1
  210. package/chunks/{record-artifact-RAON52FC.js → record-artifact-P4HFMS7X.js} +2 -2
  211. package/chunks/{resumeHistoryUtils-TXCOFFMQ.js → resumeHistoryUtils-YUTPLHUH.js} +33 -29
  212. package/chunks/{ripGrep-ZKQGTQAO.js → ripGrep-XUS66YIV.js} +28 -24
  213. package/chunks/{ru-VJRAMC4W.js → ru-CMX4UMYP.js} +5 -0
  214. package/chunks/{run-qwen-serve-ZPKPKECF.js → run-qwen-serve-4NVSU75L.js} +261 -62
  215. package/chunks/{runtime-2FLNNM36.js → runtime-QLRVP6HM.js} +40 -36
  216. package/chunks/{scheduler-365PJHNR.js → scheduler-PBB2NSOP.js} +28 -24
  217. package/chunks/{sdk-exporters-http-KHAB5JSD.js → sdk-exporters-http-XVTZQRCE.js} +2 -2
  218. package/chunks/{sdk-impl-KD7FSTC3.js → sdk-impl-7W7AKCS4.js} +7 -3
  219. package/chunks/{send-message-ZM7MRUGP.js → send-message-CAMSLG2L.js} +4 -3
  220. package/chunks/{serve-QD2RNLKJ.js → serve-BWKTRX72.js} +37 -31
  221. package/chunks/{server-XLJVLTYM.js → server-E7CH7WPK.js} +1437 -593
  222. package/chunks/{session-3VTUHH4Q.js → session-QEKSJ6YU.js} +166 -105
  223. package/chunks/{settings-KULVPCQC.js → settings-BRAOSJIM.js} +34 -30
  224. package/chunks/{shell-3SWW22MH.js → shell-OF3CK4AT.js} +28 -24
  225. package/chunks/{skill-KDHWYS7W.js → skill-HLH2NO2H.js} +9 -7
  226. package/chunks/{skill-settings-NMY4JEJC.js → skill-settings-DRPU7YI5.js} +34 -30
  227. package/chunks/{spawnChannel-ZKS4Q5OU.js → spawnChannel-4KO7YTFM.js} +31 -27
  228. package/chunks/{standalone-update-7CXPGAQ4.js → standalone-update-DJN2R3YW.js} +30 -26
  229. package/chunks/{startInteractiveUI-2QQLEKM6.js → startInteractiveUI-O3WQQ2WC.js} +384 -173
  230. package/chunks/{syntheticOutput-ZLCUTKO2.js → syntheticOutput-PEBJQYJV.js} +2 -2
  231. package/chunks/{task-create-CQP5UEA3.js → task-create-5NWCQSJF.js} +5 -4
  232. package/chunks/{task-list-XLEZOJXP.js → task-list-53265TRZ.js} +1 -1
  233. package/chunks/{task-stop-7ZQM5CFF.js → task-stop-FPCOIRYX.js} +1 -1
  234. package/chunks/{task-update-JA75U2SN.js → task-update-5HN577LS.js} +5 -4
  235. package/chunks/{team-create-2WTNGAOX.js → team-create-2E4ACBJD.js} +28 -24
  236. package/chunks/{team-delete-MHY3UZGY.js → team-delete-MMQB4OSC.js} +1 -1
  237. package/chunks/{team-plan-approval-LZTYLEG4.js → team-plan-approval-LWIDXYOA.js} +28 -24
  238. package/chunks/{terminal-image-renderer-R5HHAFJN.js → terminal-image-renderer-PJM7663W.js} +30 -26
  239. package/chunks/{theme-manager-PAUCSJFF.js → theme-manager-FDQTM3RP.js} +28 -24
  240. package/chunks/{todoWrite-UPVOHYGD.js → todoWrite-JGV6VLOX.js} +1 -1
  241. package/chunks/{tool-search-2BFCGLI6.js → tool-search-TL5ZXBF4.js} +11 -8
  242. package/chunks/{total-session-admission-MK4SINFK.js → total-session-admission-LS6EY5KT.js} +37 -32
  243. package/chunks/{trustedFolders-TJ5S26N7.js → trustedFolders-5RWP5OB7.js} +32 -26
  244. package/chunks/{types-ML3TRJQ5.js → types-WYCFCEHR.js} +5 -3
  245. package/chunks/{update-relaunch-N7AYLARF.js → update-relaunch-HWQ4USKY.js} +5 -5
  246. package/chunks/{updateCheck-QRZ3DVT5.js → updateCheck-EZMBTEIR.js} +31 -27
  247. package/chunks/{useAutoAcceptIndicator-DBJ7Y5AF.js → useAutoAcceptIndicator-JDMI627A.js} +37 -33
  248. package/chunks/{validateNonInterActiveAuth-6ZQWUDS3.js → validateNonInterActiveAuth-RRUHC5RO.js} +67 -63
  249. package/chunks/{version-AJQGQWXC.js → version-XS4UTKUX.js} +1 -1
  250. package/chunks/{web-fetch-QWJYRXFL.js → web-fetch-2JV7H6OM.js} +14 -10
  251. package/chunks/{web-search-2AOXJGHU.js → web-search-RCTN2GAM.js} +10 -7
  252. package/chunks/{workflow-ERH3SJG2.js → workflow-6MKLKQ6R.js} +909 -273
  253. package/chunks/{workspace-providers-status-HZ474RA4.js → workspace-providers-status-YZ2IJ4DK.js} +38 -34
  254. package/chunks/{workspace-registration-store-6EUP4JXG.js → workspace-registration-store-IYN72LBS.js} +1 -1
  255. package/chunks/{workspace-registry-R4APRRNC.js → workspace-registry-7LFBZQLT.js} +37 -32
  256. package/chunks/{workspace-service-HFIFDMU7.js → workspace-service-2EHSPRJB.js} +45 -39
  257. package/chunks/{workspace-skills-status-HAHEIHGK.js → workspace-skills-status-5VJ2D5HN.js} +36 -32
  258. package/chunks/{workspace-trust-reconciler-65GTAGDK.js → workspace-trust-reconciler-X2LZ6XCI.js} +44 -39
  259. package/chunks/{write-file-B34CDELV.js → write-file-CJK6SCCF.js} +28 -24
  260. package/chunks/{zh-ARWDLDLR.js → zh-AGL2FVBI.js} +6 -0
  261. package/chunks/{zh-TW-Y4RGI3P7.js → zh-TW-KI66MHQY.js} +6 -0
  262. package/chunks/{zoom-image-HPRBZHSS.js → zoom-image-BVW4RFYW.js} +8 -6
  263. package/cli.js +13 -13
  264. package/locales/ca.js +10 -0
  265. package/locales/de.js +9 -0
  266. package/locales/en.js +10 -0
  267. package/locales/fr.js +9 -0
  268. package/locales/ja.js +9 -0
  269. package/locales/pt.js +9 -0
  270. package/locales/ru.js +9 -0
  271. package/locales/zh-TW.js +10 -0
  272. package/locales/zh.js +10 -0
  273. package/package.json +3 -3
  274. package/web-shell/assets/{arc-Ip-FFDJ0.js → arc-DDtoJrAW.js} +1 -1
  275. package/web-shell/assets/{architectureDiagram-3BPJPVTR-CChqgwIb.js → architectureDiagram-3BPJPVTR-BAInIW4O.js} +1 -1
  276. package/web-shell/assets/{blockDiagram-GPEHLZMM-BHN-Tfss.js → blockDiagram-GPEHLZMM-ChPDk7fP.js} +1 -1
  277. package/web-shell/assets/{c4Diagram-AAUBKEIU-BhyjzDjN.js → c4Diagram-AAUBKEIU-Cd9BJuUy.js} +1 -1
  278. package/web-shell/assets/channel-0OQklTfP.js +1 -0
  279. package/web-shell/assets/{chunk-2J33WTMH-BB9eyHrx.js → chunk-2J33WTMH-COQkLp56.js} +1 -1
  280. package/web-shell/assets/{chunk-4BX2VUAB-BeV7ce_J.js → chunk-4BX2VUAB-GUJshQ_l.js} +1 -1
  281. package/web-shell/assets/{chunk-55IACEB6-DO7kXDiV.js → chunk-55IACEB6-Boaa7c10.js} +1 -1
  282. package/web-shell/assets/{chunk-727SXJPM-B27MPznD.js → chunk-727SXJPM-CcRXaly2.js} +1 -1
  283. package/web-shell/assets/{chunk-AQP2D5EJ-DHIjqjD_.js → chunk-AQP2D5EJ-BY0OARHh.js} +1 -1
  284. package/web-shell/assets/{chunk-FMBD7UC4-DabMqyN2.js → chunk-FMBD7UC4-DLFQfv0S.js} +1 -1
  285. package/web-shell/assets/{chunk-ND2GUHAM-Dw7Nnnxc.js → chunk-ND2GUHAM-C_S0u-D2.js} +1 -1
  286. package/web-shell/assets/{chunk-QZHKN3VN-DdaZew1Q.js → chunk-QZHKN3VN-DP9m64hw.js} +1 -1
  287. package/web-shell/assets/classDiagram-4FO5ZUOK-CZ4-apsu.js +1 -0
  288. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CZ4-apsu.js +1 -0
  289. package/web-shell/assets/{cose-bilkent-S5V4N54A-CgBpCYH5.js → cose-bilkent-S5V4N54A-CGY6zGE1.js} +1 -1
  290. package/web-shell/assets/{dagre-BM42HDAG-BB4IU8G0.js → dagre-BM42HDAG-yB7whKNn.js} +1 -1
  291. package/web-shell/assets/{diagram-2AECGRRQ-BcUTHU37.js → diagram-2AECGRRQ-Bdlc59La.js} +1 -1
  292. package/web-shell/assets/{diagram-5GNKFQAL-B6Lyihyv.js → diagram-5GNKFQAL-BUClP18L.js} +1 -1
  293. package/web-shell/assets/{diagram-KO2AKTUF-CRIJOjpG.js → diagram-KO2AKTUF-aZm08kjn.js} +1 -1
  294. package/web-shell/assets/{diagram-LMA3HP47-DdNiwWWT.js → diagram-LMA3HP47-7DGwEkxC.js} +1 -1
  295. package/web-shell/assets/{diagram-OG6HWLK6-Dz4b32Do.js → diagram-OG6HWLK6-CAGKayxx.js} +1 -1
  296. package/web-shell/assets/{erDiagram-TEJ5UH35-D-8NGw77.js → erDiagram-TEJ5UH35-CptoHHQi.js} +1 -1
  297. package/web-shell/assets/{flowDiagram-I6XJVG4X-Dun26LyM.js → flowDiagram-I6XJVG4X-CNOH0s7Q.js} +1 -1
  298. package/web-shell/assets/{ganttDiagram-6RSMTGT7-F10Hu1Gc.js → ganttDiagram-6RSMTGT7-CCQuCU3y.js} +1 -1
  299. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Bf8Ez6-D.js → gitGraphDiagram-PVQCEYII-B7gv9f4E.js} +1 -1
  300. package/web-shell/assets/{index-BXqw-nGq.js → index-BoUPVvpf.js} +1 -1
  301. package/web-shell/assets/index-D1YQXYsB.css +5 -0
  302. package/web-shell/assets/index-J4N7zCmU.js +1768 -0
  303. package/web-shell/assets/{infoDiagram-5YYISTIA-DVgTMLvj.js → infoDiagram-5YYISTIA-Bb3KYEbR.js} +1 -1
  304. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-uT-KepvK.js → ishikawaDiagram-YF4QCWOH-DWEzbAGi.js} +1 -1
  305. package/web-shell/assets/{journeyDiagram-JHISSGLW-Vg_XadQf.js → journeyDiagram-JHISSGLW-CmxwEqeb.js} +1 -1
  306. package/web-shell/assets/{kanban-definition-UN3LZRKU-Dyv1ESBE.js → kanban-definition-UN3LZRKU-Ci0gDD8O.js} +1 -1
  307. package/web-shell/assets/{linear-BMIepYX3.js → linear-BqxZqGhS.js} +1 -1
  308. package/web-shell/assets/{mermaid.core-zA8pJ9ag.js → mermaid.core-BDAFffHv.js} +5 -5
  309. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BCW_BZ_5.js → mindmap-definition-RKZ34NQL-Btvx-xvS.js} +1 -1
  310. package/web-shell/assets/{pieDiagram-4H26LBE5-DseNEGp2.js → pieDiagram-4H26LBE5-CKAg7yG7.js} +1 -1
  311. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-6Z7wr1Fi.js → quadrantDiagram-W4KKPZXB-DIt8E1mC.js} +1 -1
  312. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CVOlCRPf.js → requirementDiagram-4Y6WPE33-BA7mQWQJ.js} +1 -1
  313. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CGhgrUJZ.js → sankeyDiagram-5OEKKPKP-D0JppnVU.js} +1 -1
  314. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-dlqmpLuQ.js → sequenceDiagram-3UESZ5HK-29DIQFjB.js} +1 -1
  315. package/web-shell/assets/{stateDiagram-AJRCARHV-B9EW10Xb.js → stateDiagram-AJRCARHV-iiXMdK--.js} +1 -1
  316. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CEGK3l80.js +1 -0
  317. package/web-shell/assets/{timeline-definition-PNZ67QCA-BBRh0mgZ.js → timeline-definition-PNZ67QCA-CeF7ngSW.js} +1 -1
  318. package/web-shell/assets/{vennDiagram-CIIHVFJN-B8Gs-REP.js → vennDiagram-CIIHVFJN-Beilq8D6.js} +1 -1
  319. package/web-shell/assets/{wardley-L42UT6IY-D_y80Ur7.js → wardley-L42UT6IY-DOYjY4zO.js} +1 -1
  320. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-D-CNfHJ-.js → wardleyDiagram-YWT4CUSO-Dtqp8o18.js} +1 -1
  321. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DQ5CvELo.js → xychartDiagram-2RQKCTM6-cdAc0Dfv.js} +1 -1
  322. package/web-shell/index.html +2 -2
  323. package/chunks/chunk-6PEXNQTX.js +0 -68
  324. package/chunks/chunk-IUFV6FYU.js +0 -81
  325. package/chunks/chunk-RXFQM6FQ.js +0 -42
  326. package/web-shell/assets/channel-Cu8qd6OB.js +0 -1
  327. package/web-shell/assets/classDiagram-4FO5ZUOK-BI3KrXhq.js +0 -1
  328. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BI3KrXhq.js +0 -1
  329. package/web-shell/assets/index-QQlUCJGg.css +0 -5
  330. package/web-shell/assets/index-hcgjV7vS.js +0 -1768
  331. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CJTZJJ5X.js +0 -1
  332. package/chunks/{anthropicContentGenerator-DTMVEL5M.js → anthropicContentGenerator-SSFE2753.js} +9 -9
  333. /package/chunks/{chunk-VXZBKKQR.js → chunk-NTTBXH7U.js} +0 -0
  334. /package/chunks/{chunk-GRC5HGPI.js → chunk-OIBUG24X.js} +0 -0
@@ -0,0 +1,244 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-5O2XNYP6.js";
6
+ import {
7
+ __name
8
+ } from "./chunk-J2S4EL5Y.js";
9
+
10
+ // packages/cli/src/commands/channel/channel-registry.ts
11
+ init_esbuild_shims();
12
+ var registry = /* @__PURE__ */ new Map();
13
+ var builtinsPromise = null;
14
+ var UNSAFE_OBJECT_KEYS = /* @__PURE__ */ new Set([
15
+ "__proto__",
16
+ "constructor",
17
+ "prototype"
18
+ ]);
19
+ var FIELD_KINDS = /* @__PURE__ */ new Set([
20
+ "string",
21
+ "secret",
22
+ "boolean",
23
+ "number",
24
+ "enum",
25
+ "string-list",
26
+ "record",
27
+ "object"
28
+ ]);
29
+ function assertManagementFields(fields, parentPath, nested = false) {
30
+ const seen = /* @__PURE__ */ new Set();
31
+ for (const field of fields) {
32
+ const path = parentPath ? `${parentPath}.${field.key}` : field.key;
33
+ if (typeof field.key !== "string" || field.key.length === 0) {
34
+ throw new Error(
35
+ `Channel field "${path}" must declare a non-empty string key.`
36
+ );
37
+ }
38
+ if (seen.has(field.key)) {
39
+ throw new Error(`Channel field "${path}" is declared more than once.`);
40
+ }
41
+ seen.add(field.key);
42
+ assertManagementField(field, path, nested);
43
+ }
44
+ }
45
+ __name(assertManagementFields, "assertManagementFields");
46
+ function assertManagementField(field, path, nested) {
47
+ if (!FIELD_KINDS.has(field.kind)) {
48
+ throw new Error(
49
+ `Channel field "${path}" declares an unknown kind "${field.kind}".`
50
+ );
51
+ }
52
+ if (UNSAFE_OBJECT_KEYS.has(field.key)) {
53
+ throw new Error(`Channel field "${path}" cannot use a reserved key.`);
54
+ }
55
+ if (!nested && field.key === "type") {
56
+ throw new Error(
57
+ `Channel field "${path}" cannot use the reserved key "type".`
58
+ );
59
+ }
60
+ if (typeof field.label !== "string" || field.label.length === 0) {
61
+ throw new Error(`Channel field "${path}" must declare a string label.`);
62
+ }
63
+ if (field.description !== void 0 && typeof field.description !== "string") {
64
+ throw new Error(
65
+ `Channel field "${path}" must declare a string description.`
66
+ );
67
+ }
68
+ if (field.default !== void 0 && typeof field.default !== "string") {
69
+ throw new Error(`Channel field "${path}" must declare a string default.`);
70
+ }
71
+ const envResolvable = Boolean(field.envResolvable);
72
+ const required = Boolean(field.required);
73
+ if (field.kind === "secret" && nested) {
74
+ throw new Error(`Channel field "${path}" cannot declare a nested secret.`);
75
+ }
76
+ if (envResolvable && (nested || field.kind !== "string" && field.kind !== "secret")) {
77
+ throw new Error(
78
+ `Channel field "${path}" cannot resolve environment references.`
79
+ );
80
+ }
81
+ const exclusiveMinimum = field.exclusiveMinimum;
82
+ if (exclusiveMinimum !== void 0) {
83
+ if (field.kind !== "number") {
84
+ throw new Error(
85
+ `Channel field "${path}" can only declare exclusiveMinimum on number fields.`
86
+ );
87
+ }
88
+ if (typeof exclusiveMinimum !== "number" || !Number.isFinite(exclusiveMinimum)) {
89
+ throw new Error(
90
+ `Channel field "${path}" must declare a finite exclusiveMinimum.`
91
+ );
92
+ }
93
+ }
94
+ if (field.kind === "enum") {
95
+ if (!Array.isArray(field.options) || field.options.length === 0) {
96
+ throw new Error(
97
+ `Channel field "${path}" must declare at least one option.`
98
+ );
99
+ }
100
+ if (field.options.some(
101
+ (option) => typeof option?.value !== "string" || option.value.length === 0
102
+ )) {
103
+ throw new Error(
104
+ `Channel field "${path}" must declare non-empty string option values.`
105
+ );
106
+ }
107
+ if (new Set(field.options.map((option) => option.value)).size !== field.options.length) {
108
+ throw new Error(
109
+ `Channel field "${path}" declares duplicate option values.`
110
+ );
111
+ }
112
+ if (field.default !== void 0 && !field.options.some((option) => option.value === field.default)) {
113
+ throw new Error(
114
+ `Channel field "${path}" declares a default that is not one of its options.`
115
+ );
116
+ }
117
+ }
118
+ if (field.kind !== "object") return;
119
+ if (required) {
120
+ throw new Error(`Channel field "${path}" cannot be a required object.`);
121
+ }
122
+ if (!Array.isArray(field.properties)) {
123
+ throw new Error(`Channel field "${path}" must declare a properties array.`);
124
+ }
125
+ if (field.properties.length === 0) {
126
+ throw new Error(
127
+ `Channel field "${path}" must declare at least one property.`
128
+ );
129
+ }
130
+ assertManagementFields(field.properties, path, true);
131
+ }
132
+ __name(assertManagementField, "assertManagementField");
133
+ function assertManagementDescriptor(plugin) {
134
+ const management = plugin.management;
135
+ if (management === void 0) return;
136
+ if (management.validateConfig !== void 0 && (typeof management.validateConfig !== "function" || management.validateConfig.constructor.name === "AsyncFunction")) {
137
+ throw new Error(
138
+ "Channel management metadata must declare validateConfig as a synchronous function."
139
+ );
140
+ }
141
+ if (!Array.isArray(management.fields)) {
142
+ throw new Error("Channel management metadata must declare a fields array.");
143
+ }
144
+ assertManagementFields(management.fields);
145
+ }
146
+ __name(assertManagementDescriptor, "assertManagementDescriptor");
147
+ function ensureBuiltins() {
148
+ if (!builtinsPromise) {
149
+ builtinsPromise = (async () => {
150
+ const labelled = [
151
+ { name: "telegram", promise: import("./dist-B2CGTW6T.js") },
152
+ { name: "weixin", promise: import("./dist-6BMOAE3Z.js") },
153
+ { name: "dingtalk", promise: import("./dist-EZE3V3Q7.js") },
154
+ { name: "wecom", promise: import("./dist-3NTTUAHT.js") },
155
+ { name: "feishu", promise: import("./dist-J47AXBZC.js") },
156
+ { name: "qqbot", promise: import("./dist-OTUO3AS2.js") },
157
+ { name: "github", promise: import("./dist-Z3CS4OVP.js") },
158
+ { name: "gitlab", promise: import("./dist-EWW3J4HQ.js") }
159
+ ];
160
+ const results = await Promise.allSettled(labelled.map((l) => l.promise));
161
+ for (let i = 0; i < results.length; i++) {
162
+ const result = results[i];
163
+ if (result.status === "fulfilled") {
164
+ registerWithManagementValidation(
165
+ result.value.plugin,
166
+ labelled[i].name
167
+ );
168
+ } else {
169
+ process.stderr.write(
170
+ `[channel-registry] Failed to load "${labelled[i].name}" channel: ${result.reason}
171
+ `
172
+ );
173
+ }
174
+ }
175
+ })();
176
+ }
177
+ return builtinsPromise;
178
+ }
179
+ __name(ensureBuiltins, "ensureBuiltins");
180
+ function registerPlugin(plugin) {
181
+ if (registry.has(plugin.channelType)) {
182
+ throw new Error(
183
+ `Channel type "${plugin.channelType}" is already registered.`
184
+ );
185
+ }
186
+ registerWithManagementValidation(plugin, plugin.channelType);
187
+ }
188
+ __name(registerPlugin, "registerPlugin");
189
+ function registerWithManagementValidation(plugin, label) {
190
+ try {
191
+ assertManagementDescriptor(plugin);
192
+ } catch (error) {
193
+ process.stderr.write(
194
+ `[channel-registry] Invalid management metadata in "${label}" channel: ${error instanceof Error ? error.message : String(error)}
195
+ `
196
+ );
197
+ const stripped = Object.assign(
198
+ Object.create(
199
+ Object.getPrototypeOf(plugin) ?? Object.prototype
200
+ ),
201
+ plugin
202
+ );
203
+ Object.defineProperty(stripped, "management", {
204
+ value: void 0,
205
+ writable: true,
206
+ enumerable: true,
207
+ configurable: true
208
+ });
209
+ registry.set(plugin.channelType, stripped);
210
+ return;
211
+ }
212
+ registry.set(plugin.channelType, plugin);
213
+ }
214
+ __name(registerWithManagementValidation, "registerWithManagementValidation");
215
+ async function getPlugin(channelType) {
216
+ await ensureBuiltins();
217
+ return registry.get(channelType);
218
+ }
219
+ __name(getPlugin, "getPlugin");
220
+ async function supportedTypes() {
221
+ await ensureBuiltins();
222
+ return [...registry.keys()];
223
+ }
224
+ __name(supportedTypes, "supportedTypes");
225
+ async function supportedChannelCatalog() {
226
+ await ensureBuiltins();
227
+ return [...registry.values()].map(
228
+ ({ channelType, displayName, management }) => ({
229
+ type: channelType,
230
+ displayName,
231
+ manageable: management !== void 0,
232
+ fields: management?.fields ?? []
233
+ })
234
+ );
235
+ }
236
+ __name(supportedChannelCatalog, "supportedChannelCatalog");
237
+
238
+ export {
239
+ UNSAFE_OBJECT_KEYS,
240
+ registerPlugin,
241
+ getPlugin,
242
+ supportedTypes,
243
+ supportedChannelCatalog
244
+ };
@@ -2,14 +2,14 @@
2
2
  "use strict";
3
3
  import {
4
4
  functionResponsePartsToString
5
- } from "./chunk-RUL4S3K3.js";
5
+ } from "./chunk-ZCJBCKL5.js";
6
6
  import {
7
7
  parseAndFormatApiError
8
- } from "./chunk-Y7E5LNLO.js";
8
+ } from "./chunk-47ZUMGGY.js";
9
9
  import {
10
10
  formatVisionBridgeNoticeDisplay,
11
11
  isVisionBridgeNoticeDisplay
12
- } from "./chunk-2U3WZGZG.js";
12
+ } from "./chunk-YGT2AUJ7.js";
13
13
  import {
14
14
  init_esbuild_shims
15
15
  } from "./chunk-5O2XNYP6.js";
@@ -1,5 +1,9 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ DEFAULT_QWEN_MODEL,
5
+ MAINLINE_CODER_MODEL
6
+ } from "./chunk-F6WFNA7U.js";
3
7
  import {
4
8
  preloadRuntimeFetchModule
5
9
  } from "./chunk-KKBPOU75.js";
@@ -10,12 +14,6 @@ import {
10
14
  __name
11
15
  } from "./chunk-J2S4EL5Y.js";
12
16
 
13
- // packages/core/src/config/models.ts
14
- init_esbuild_shims();
15
- var DEFAULT_QWEN_MODEL = "coder-model";
16
- var DEFAULT_QWEN_EMBEDDING_MODEL = "text-embedding-v4";
17
- var MAINLINE_CODER_MODEL = "qwen3.7-max";
18
-
19
17
  // packages/core/src/core/contentGenerator.ts
20
18
  init_esbuild_shims();
21
19
 
@@ -407,18 +405,18 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
407
405
  try {
408
406
  if (authType === "openai" /* USE_OPENAI */) {
409
407
  loadBaseGenerator = /* @__PURE__ */ __name(async () => {
410
- const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-EDQT6GTV.js");
408
+ const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-OIGO5XNF.js");
411
409
  return createOpenAIContentGenerator(generatorConfig, config);
412
410
  }, "loadBaseGenerator");
413
411
  } else if (authType === "qwen-oauth" /* QWEN_OAUTH */) {
414
- const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-NESCMZ47.js");
412
+ const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-7MTMS2Z5.js");
415
413
  try {
416
414
  const qwenClient = await getQwenOauthClient(
417
415
  config,
418
416
  isInitialAuth ? { requireCachedCredentials: true } : void 0
419
417
  );
420
418
  loadBaseGenerator = /* @__PURE__ */ __name(async () => {
421
- const { QwenContentGenerator } = await import("./qwenContentGenerator-ODRJSUGR.js");
419
+ const { QwenContentGenerator } = await import("./qwenContentGenerator-HXM25BGB.js");
422
420
  return new QwenContentGenerator(qwenClient, generatorConfig, config);
423
421
  }, "loadBaseGenerator");
424
422
  } catch (error) {
@@ -429,12 +427,12 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
429
427
  }
430
428
  } else if (authType === "anthropic" /* USE_ANTHROPIC */) {
431
429
  loadBaseGenerator = /* @__PURE__ */ __name(async () => {
432
- const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-DTMVEL5M.js");
430
+ const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-SSFE2753.js");
433
431
  return createAnthropicContentGenerator(generatorConfig, config);
434
432
  }, "loadBaseGenerator");
435
433
  } else if (authType === "gemini" /* USE_GEMINI */ || authType === "vertex-ai" /* USE_VERTEX_AI */) {
436
434
  loadBaseGenerator = /* @__PURE__ */ __name(async () => {
437
- const { createGeminiContentGenerator } = await import("./geminiContentGenerator-V2WVLIXU.js");
435
+ const { createGeminiContentGenerator } = await import("./geminiContentGenerator-LVPMQUWX.js");
438
436
  return createGeminiContentGenerator(generatorConfig, config);
439
437
  }, "loadBaseGenerator");
440
438
  } else {
@@ -450,7 +448,7 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
450
448
  try {
451
449
  const [baseGenerator, { LoggingContentGenerator }] = await Promise.all([
452
450
  loadBaseGenerator(),
453
- import("./loggingContentGenerator-OJCO75HM.js")
451
+ import("./loggingContentGenerator-A5I3VQUC.js")
454
452
  ]);
455
453
  return new LoggingContentGenerator(
456
454
  baseGenerator,
@@ -467,9 +465,6 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
467
465
  __name(createContentGenerator, "createContentGenerator");
468
466
 
469
467
  export {
470
- DEFAULT_QWEN_MODEL,
471
- DEFAULT_QWEN_EMBEDDING_MODEL,
472
- MAINLINE_CODER_MODEL,
473
468
  MODEL_GENERATION_CONFIG_FIELDS,
474
469
  PROVIDER_SOURCED_FIELDS,
475
470
  AUTH_ENV_MAPPINGS,
@@ -484,11 +479,11 @@ export {
484
479
  };
485
480
  /**
486
481
  * @license
487
- * Copyright 2025 Google LLC
482
+ * Copyright 2025 Qwen Team
488
483
  * SPDX-License-Identifier: Apache-2.0
489
484
  */
490
485
  /**
491
486
  * @license
492
- * Copyright 2025 Qwen Team
487
+ * Copyright 2025 Google LLC
493
488
  * SPDX-License-Identifier: Apache-2.0
494
489
  */
@@ -2,23 +2,23 @@
2
2
  "use strict";
3
3
  import {
4
4
  getExtensionManager
5
- } from "./chunk-OHJLEW5J.js";
5
+ } from "./chunk-TWFFY5BP.js";
6
6
  import {
7
7
  parseChannelConfig
8
- } from "./chunk-ZXU5UHMI.js";
8
+ } from "./chunk-LHEC5V6G.js";
9
9
  import {
10
10
  getPlugin,
11
11
  registerPlugin
12
- } from "./chunk-IUFV6FYU.js";
12
+ } from "./chunk-E2FPSSKP.js";
13
13
  import {
14
14
  sanitizeLogText
15
- } from "./chunk-DIEFUBV6.js";
15
+ } from "./chunk-DX3RGJMS.js";
16
16
  import {
17
17
  loadSettings
18
- } from "./chunk-PQBHU2IA.js";
18
+ } from "./chunk-HKI3KHAO.js";
19
19
  import {
20
20
  hashDaemonWorkspace
21
- } from "./chunk-L4N6TIP7.js";
21
+ } from "./chunk-4TRQPFDP.js";
22
22
  import {
23
23
  Storage
24
24
  } from "./chunk-OIVKILPI.js";
@@ -1,12 +1,13 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
3
  import {
4
+ UNSAFE_OBJECT_KEYS,
4
5
  getPlugin
5
- } from "./chunk-IUFV6FYU.js";
6
+ } from "./chunk-E2FPSSKP.js";
6
7
  import {
7
8
  loadSettings,
8
9
  saveSettings
9
- } from "./chunk-PQBHU2IA.js";
10
+ } from "./chunk-HKI3KHAO.js";
10
11
  import {
11
12
  init_esbuild_shims
12
13
  } from "./chunk-5O2XNYP6.js";
@@ -50,7 +51,6 @@ function invalidConfig(message) {
50
51
  return new ChannelSettingsError("channel_settings_invalid_config", message);
51
52
  }
52
53
  __name(invalidConfig, "invalidConfig");
53
- var UNSAFE_OBJECT_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
54
54
  function assertSafeChannelName(name) {
55
55
  if (UNSAFE_OBJECT_KEYS.has(name)) {
56
56
  throw new ChannelSettingsError(
@@ -108,7 +108,7 @@ function assertSharedField(key, value) {
108
108
  const enumValues = {
109
109
  senderPolicy: /* @__PURE__ */ new Set(["allowlist", "pairing", "open"]),
110
110
  dmPolicy: /* @__PURE__ */ new Set(["open", "disabled"]),
111
- groupPolicy: /* @__PURE__ */ new Set(["disabled", "allowlist", "open"]),
111
+ groupPolicy: /* @__PURE__ */ new Set(["disabled", "allowlist", "pairing", "open"]),
112
112
  sessionScope: /* @__PURE__ */ new Set(["user", "thread", "single"]),
113
113
  dispatchMode: /* @__PURE__ */ new Set(["steer", "followup", "collect"]),
114
114
  blockStreaming: /* @__PURE__ */ new Set(["on", "off"])
@@ -168,40 +168,101 @@ function assertSharedField(key, value) {
168
168
  return false;
169
169
  }
170
170
  __name(assertSharedField, "assertSharedField");
171
- function assertDescriptorValue(field, value) {
172
- const invalidEnvironment = typeof value === "string" && isEnvironmentReference(value) && field.envResolvable !== true;
171
+ function containsUnsafeObjectKey(value) {
172
+ if (Array.isArray(value)) {
173
+ return value.some((item) => containsUnsafeObjectKey(item));
174
+ }
175
+ if (!isRecord(value)) return false;
176
+ return Object.entries(value).some(
177
+ ([key, nested]) => UNSAFE_OBJECT_KEYS.has(key) || containsUnsafeObjectKey(nested)
178
+ );
179
+ }
180
+ __name(containsUnsafeObjectKey, "containsUnsafeObjectKey");
181
+ function assertDescriptorValue(field, value, path = field.key, previous) {
182
+ if (field.kind === "object") {
183
+ if (isDeepStrictEqual(previous, value) && !containsUnsafeObjectKey(value)) {
184
+ return;
185
+ }
186
+ if (!isRecord(value)) {
187
+ throw invalidConfig(`Channel field "${path}" has an invalid value.`);
188
+ }
189
+ const previousRecord = isRecord(previous) ? previous : {};
190
+ const properties = new Map(
191
+ field.properties.map((property) => [property.key, property])
192
+ );
193
+ for (const [key, nestedValue] of Object.entries(value)) {
194
+ const property = properties.get(key);
195
+ if (!property) {
196
+ assertPreservedUnknownField(path, key, nestedValue, previousRecord);
197
+ continue;
198
+ }
199
+ assertDescriptorValue(
200
+ property,
201
+ nestedValue,
202
+ `${path}.${key}`,
203
+ Object.hasOwn(previousRecord, key) ? previousRecord[key] : void 0
204
+ );
205
+ }
206
+ assertRequiredFields(field.properties, value, path);
207
+ return;
208
+ }
209
+ const invalidEnvironment = typeof value === "string" && isEnvironmentReference(value) && !field.envResolvable;
173
210
  if (invalidEnvironment) {
174
211
  throw invalidConfig(
175
- `Channel field "${field.key}" does not support environment references.`
212
+ `Channel field "${path}" does not support environment references.`
176
213
  );
177
214
  }
178
- const valid = (field.kind === "string" || field.kind === "secret") && typeof value === "string" && value.length > 0 || field.kind === "boolean" && typeof value === "boolean" || field.kind === "number" && typeof value === "number" && Number.isFinite(value) || field.kind === "enum" && typeof value === "string" && field.options?.some((option) => option.value === value) === true || field.kind === "string-list" && Array.isArray(value) && value.every((item) => typeof item === "string") || field.kind === "record" && isRecord(value) && Object.values(value).every((v) => typeof v === "string");
215
+ const valid = (field.kind === "string" || field.kind === "secret") && typeof value === "string" && value.length > 0 || field.kind === "boolean" && typeof value === "boolean" || field.kind === "number" && typeof value === "number" && Number.isFinite(value) && (field.exclusiveMinimum === void 0 || value > field.exclusiveMinimum) || field.kind === "enum" && typeof value === "string" && field.options?.some((option) => option.value === value) === true || field.kind === "string-list" && Array.isArray(value) && value.every((item) => typeof item === "string") || field.kind === "record" && isRecord(value) && Object.values(value).every((v) => typeof v === "string") && !containsUnsafeObjectKey(value);
179
216
  if (!valid) {
180
- throw invalidConfig(`Channel field "${field.key}" has an invalid value.`);
217
+ throw invalidConfig(`Channel field "${path}" has an invalid value.`);
181
218
  }
182
219
  }
183
220
  __name(assertDescriptorValue, "assertDescriptorValue");
221
+ function assertRequiredFields(fields, values, path) {
222
+ for (const field of fields) {
223
+ if (!field.required) continue;
224
+ const value = Object.hasOwn(values, field.key) ? values[field.key] : void 0;
225
+ if (value === void 0 || value === null || value === "") {
226
+ const fieldPath = path ? `${path}.${field.key}` : field.key;
227
+ throw invalidConfig(`Channel field "${fieldPath}" is required.`);
228
+ }
229
+ }
230
+ }
231
+ __name(assertRequiredFields, "assertRequiredFields");
232
+ function assertPreservedUnknownField(path, key, value, previous) {
233
+ const fieldPath = path ? `${path}.${key}` : key;
234
+ if (UNSAFE_OBJECT_KEYS.has(key)) {
235
+ throw invalidConfig(`Channel field "${fieldPath}" is not manageable.`);
236
+ }
237
+ if (containsUnsafeObjectKey(value)) {
238
+ throw invalidConfig(
239
+ `Channel field "${fieldPath}" cannot use a reserved key.`
240
+ );
241
+ }
242
+ if (Object.hasOwn(previous, key) && isDeepStrictEqual(previous[key], value)) {
243
+ return;
244
+ }
245
+ throw invalidConfig(`Channel field "${fieldPath}" is not manageable.`);
246
+ }
247
+ __name(assertPreservedUnknownField, "assertPreservedUnknownField");
184
248
  function assertManagedConfig(config, previous, fields) {
185
249
  const descriptorFields = new Map(fields.map((field) => [field.key, field]));
186
250
  for (const [key, value] of Object.entries(config)) {
187
251
  if (key === "type") continue;
188
252
  const field = descriptorFields.get(key);
189
253
  if (field) {
190
- assertDescriptorValue(field, value);
254
+ assertDescriptorValue(
255
+ field,
256
+ value,
257
+ field.key,
258
+ Object.hasOwn(previous, key) ? previous[key] : void 0
259
+ );
191
260
  continue;
192
261
  }
193
262
  if (assertSharedField(key, value)) continue;
194
- if (!Object.hasOwn(previous, key) || !isDeepStrictEqual(previous[key], value)) {
195
- throw invalidConfig(`Channel field "${key}" is not manageable.`);
196
- }
197
- }
198
- for (const field of fields) {
199
- if (!field.required) continue;
200
- const value = config[field.key];
201
- if (value === void 0 || value === null || value === "") {
202
- throw invalidConfig(`Channel field "${field.key}" is required.`);
203
- }
263
+ assertPreservedUnknownField(void 0, key, value, previous);
204
264
  }
265
+ assertRequiredFields(fields, config);
205
266
  }
206
267
  __name(assertManagedConfig, "assertManagedConfig");
207
268
  function validateSecretUpdate(update) {
@@ -294,9 +355,22 @@ var WorkspaceChannelSettingsStore = class {
294
355
  if (value !== void 0) nextConfig[key] = value;
295
356
  }
296
357
  assertManagedConfig(nextConfig, previous, plugin.management.fields);
297
- const crossFieldError = plugin.management.validateConfig?.(nextConfig);
358
+ let crossFieldError;
359
+ try {
360
+ crossFieldError = plugin.management.validateConfig?.(nextConfig);
361
+ if (crossFieldError instanceof Promise) {
362
+ void crossFieldError.catch(() => {
363
+ });
364
+ }
365
+ } catch (error) {
366
+ throw invalidConfig(
367
+ `Channel validateConfig failed: ${error instanceof Error ? error.message : String(error)}`
368
+ );
369
+ }
298
370
  if (crossFieldError !== void 0) {
299
- throw invalidConfig(crossFieldError);
371
+ throw invalidConfig(
372
+ typeof crossFieldError === "string" ? crossFieldError : "Channel validateConfig must return a string error message."
373
+ );
300
374
  }
301
375
  const channels = { ...current.channels, [name]: nextConfig };
302
376
  const workspaceFile = loadSettings(this.workspaceCwd, {
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  AuthType
5
- } from "./chunk-6EOI4HOK.js";
5
+ } from "./chunk-E2T7FLDU.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -8,14 +8,14 @@ import {
8
8
  } from "./chunk-Z4X5MTRT.js";
9
9
  import {
10
10
  STATUS_SCHEMA_VERSION
11
- } from "./chunk-NLREQJFK.js";
11
+ } from "./chunk-DA4HRSBW.js";
12
12
  import {
13
13
  loadSettings
14
- } from "./chunk-PQBHU2IA.js";
14
+ } from "./chunk-HKI3KHAO.js";
15
15
  import {
16
16
  SkillManager,
17
17
  isSafeModeEnv
18
- } from "./chunk-Y7E5LNLO.js";
18
+ } from "./chunk-47ZUMGGY.js";
19
19
  import {
20
20
  writeStderrLine
21
21
  } from "./chunk-KGJGEEVR.js";
@@ -0,0 +1,22 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-5O2XNYP6.js";
6
+
7
+ // packages/core/src/config/models.ts
8
+ init_esbuild_shims();
9
+ var DEFAULT_QWEN_MODEL = "coder-model";
10
+ var DEFAULT_QWEN_EMBEDDING_MODEL = "text-embedding-v4";
11
+ var MAINLINE_CODER_MODEL = "qwen3.7-max";
12
+
13
+ export {
14
+ DEFAULT_QWEN_MODEL,
15
+ DEFAULT_QWEN_EMBEDDING_MODEL,
16
+ MAINLINE_CODER_MODEL
17
+ };
18
+ /**
19
+ * @license
20
+ * Copyright 2025 Google LLC
21
+ * SPDX-License-Identifier: Apache-2.0
22
+ */
@@ -2,18 +2,18 @@
2
2
  "use strict";
3
3
  import {
4
4
  appEvents
5
- } from "./chunk-KKJJB5X6.js";
5
+ } from "./chunk-V47QNK5W.js";
6
6
  import {
7
7
  assembleMcpServers,
8
8
  getPendingGatedMcpServers,
9
9
  getPromptableMcpServers
10
- } from "./chunk-6HVUFDS2.js";
10
+ } from "./chunk-PNVPFARW.js";
11
11
  import {
12
12
  getMCPServerStatus
13
- } from "./chunk-2U3WZGZG.js";
13
+ } from "./chunk-YGT2AUJ7.js";
14
14
  import {
15
15
  require_fast_deep_equal
16
- } from "./chunk-IC4Z6LX6.js";
16
+ } from "./chunk-PYQADEFD.js";
17
17
  import {
18
18
  createDebugLogger
19
19
  } from "./chunk-OIVKILPI.js";