@qwen-code/qwen-code 0.21.7 → 0.21.8
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.
- package/README.md +2 -0
- package/bundled/qc-helper/docs/configuration/settings.md +43 -30
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +40 -2
- package/bundled/qc-helper/docs/features/channels/feishu.md +13 -2
- package/bundled/qc-helper/docs/features/channels/github.md +13 -11
- package/bundled/qc-helper/docs/features/channels/gitlab.md +13 -11
- package/bundled/qc-helper/docs/features/channels/overview.md +49 -31
- package/bundled/qc-helper/docs/features/channels/plugins.md +2 -2
- package/bundled/qc-helper/docs/features/channels/qqbot.md +4 -2
- package/bundled/qc-helper/docs/features/channels/telegram.md +4 -2
- package/bundled/qc-helper/docs/features/channels/wecom.md +1 -1
- package/bundled/qc-helper/docs/features/code-review.md +4 -0
- package/bundled/qc-helper/docs/features/commands.md +1 -1
- package/bundled/qc-helper/docs/features/hooks.md +52 -0
- package/bundled/qc-helper/docs/integration-jetbrains.md +1 -0
- package/bundled/qc-helper/docs/qwen-serve.md +4 -1
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +50 -36
- package/bundled/review/SKILL.md +28 -5
- package/chunks/{MaxSizedBox-ANWZBPTS.js → MaxSizedBox-7PM6BGJ5.js} +26 -22
- package/chunks/{StandaloneSessionPicker-XKS3VU3A.js → StandaloneSessionPicker-3UQHM7GV.js} +44 -40
- package/chunks/{acp-startup-profiler-ORIQ2CCQ.js → acp-startup-profiler-B5BYAMYQ.js} +2 -2
- package/chunks/{acpAgent-KUAZ3GCZ.js → acpAgent-5UWLFV6V.js} +534 -262
- package/chunks/{agent-T6PTGX5R.js → agent-624T2BLO.js} +26 -22
- package/chunks/{agent-headless-PR7YCB7S.js → agent-headless-2EE5J2KX.js} +26 -22
- package/chunks/{artifact-tool-U4VOZIK5.js → artifact-tool-N652YE4L.js} +1 -1
- package/chunks/{askUserQuestion-XOBQLPFA.js → askUserQuestion-ONW74PKJ.js} +1 -1
- package/chunks/{bridge-NU6YEEHK.js → bridge-JENKGFFP.js} +29 -25
- package/chunks/{ca-NYKNH222.js → ca-ZLKAB4K3.js} +6 -0
- package/chunks/{channel-management-service-FSQ7SHYI.js → channel-management-service-DDWUPHMU.js} +19 -10
- package/chunks/{channel-settings-store-35VQVUVV.js → channel-settings-store-SA6JZSPH.js} +34 -30
- package/chunks/{channel-worker-group-JWQK224X.js → channel-worker-group-E67EN3RV.js} +5 -5
- package/chunks/{channel-worker-manager-77E3OXRQ.js → channel-worker-manager-SW4C45CF.js} +5 -5
- package/chunks/{channel-worker-supervisor-62YWUGP2.js → channel-worker-supervisor-5SRD24FG.js} +3 -3
- package/chunks/{chunk-CJXIIILK.js → chunk-2FRY5CRX.js} +1 -1
- package/chunks/{chunk-ZJ3VGYHK.js → chunk-2ILAOM2I.js} +34 -17
- package/chunks/{chunk-6XJMFJ4D.js → chunk-2M4K4KYS.js} +177 -120
- package/chunks/{chunk-CNIID3TV.js → chunk-2UUMVNYT.js} +1 -1
- package/chunks/{chunk-22NBYCPD.js → chunk-3P2LV43B.js} +1 -1
- package/chunks/{chunk-2U3WZGZG.js → chunk-3PY4LPJF.js} +19 -131
- package/chunks/{chunk-SPMY6CX6.js → chunk-3SE7J4DR.js} +3 -3
- package/chunks/{chunk-6UWFTUQL.js → chunk-3WNQOYHQ.js} +66 -22
- package/chunks/{chunk-KXSDEOFU.js → chunk-4ALIARFY.js} +1 -1
- package/chunks/{chunk-D3UEZIQH.js → chunk-4DU3NCHG.js} +48 -55
- package/chunks/{chunk-BGG4MBYD.js → chunk-4PYCZH2V.js} +4 -187
- package/chunks/{chunk-H2UQ2M5Z.js → chunk-4WU6NY7F.js} +96 -22
- package/chunks/{chunk-TLV2IMHR.js → chunk-5ZGR6RKJ.js} +3 -3
- package/chunks/{chunk-3K7FH2KQ.js → chunk-67N6HB5H.js} +1310 -171
- package/chunks/{chunk-EORNAQDT.js → chunk-6TR7CFXH.js} +1 -1
- package/chunks/{chunk-NG2R4N5O.js → chunk-6ZRFAKXK.js} +1 -1
- package/chunks/{chunk-P2AJ7FTI.js → chunk-757GB46F.js} +1 -1
- package/chunks/{chunk-72LNFGUY.js → chunk-77QVBFCU.js} +3 -3
- package/chunks/{chunk-OH2VKQXH.js → chunk-7DVT4LVV.js} +37 -30
- package/chunks/{chunk-KKJJB5X6.js → chunk-7VUERJHS.js} +1503 -815
- package/chunks/{chunk-VOARQPTA.js → chunk-B52AWKBB.js} +65 -21
- package/chunks/{chunk-Y4EWSQF7.js → chunk-BF224XHL.js} +2 -2
- package/chunks/{chunk-PJOBIWUG.js → chunk-BF52U4XJ.js} +1 -1
- package/chunks/{chunk-55LYDVPU.js → chunk-C5VWPTGT.js} +1 -1
- package/chunks/{chunk-W7U4ESW2.js → chunk-CG3WBKJK.js} +1 -1
- package/chunks/chunk-COBO5EBO.js +135 -0
- package/chunks/chunk-CPG6P4GG.js +82 -0
- package/chunks/{chunk-DIEFUBV6.js → chunk-DIWZNWZT.js} +205 -35
- package/chunks/{chunk-AE77C5ZU.js → chunk-DQSDACD2.js} +1 -1
- package/chunks/{chunk-P3LEG54R.js → chunk-DX5W5AON.js} +2 -2
- package/chunks/{chunk-EUQTXRKZ.js → chunk-E4ZBKMSF.js} +5 -5
- package/chunks/{chunk-FPM27XN4.js → chunk-EIVICVHM.js} +4 -4
- package/chunks/{chunk-YHEEE624.js → chunk-EN2TKTFH.js} +1 -1
- package/chunks/chunk-F6WFNA7U.js +22 -0
- package/chunks/{chunk-FZBZSYKU.js → chunk-FN6YXJOP.js} +1 -1
- package/chunks/{chunk-KR4ZSC7K.js → chunk-FWBXMANW.js} +3 -3
- package/chunks/{chunk-LA7YLSR6.js → chunk-FYAXKJK7.js} +327 -67
- package/chunks/{chunk-CSZEXZBE.js → chunk-GBDINRIL.js} +3 -3
- package/chunks/{chunk-SCI7K3GM.js → chunk-GOEVOFQI.js} +19 -10
- package/chunks/{chunk-LEMXGVEP.js → chunk-GQCEQPYQ.js} +3 -3
- package/chunks/{chunk-Y7E5LNLO.js → chunk-GXSNGY5M.js} +1027 -876
- package/chunks/{chunk-6XU3PH66.js → chunk-HA3SAB64.js} +22 -69
- package/chunks/{chunk-Y4NGLFGJ.js → chunk-HUWENAHO.js} +1 -1
- package/chunks/{chunk-3ULCB3NE.js → chunk-HV76SFIA.js} +1 -1
- package/chunks/{chunk-CB2464BK.js → chunk-HWX5HPUG.js} +14 -4
- package/chunks/{chunk-LZC3B5N2.js → chunk-IA7TGCN2.js} +2 -2
- package/chunks/{chunk-RERATVSK.js → chunk-IBYULW65.js} +6 -6
- package/chunks/{chunk-HYRDKNUY.js → chunk-IUQ52YJK.js} +1 -1
- package/chunks/{chunk-TDXGKHDN.js → chunk-IYES5WOT.js} +2 -2
- package/chunks/{chunk-RGSBTHSU.js → chunk-KAQCJO6Y.js} +131 -4
- package/chunks/{chunk-VWOVHOTT.js → chunk-KJZ26VBX.js} +1 -1
- package/chunks/{chunk-6GONZVLS.js → chunk-KKDVZLGL.js} +1 -1
- package/chunks/{chunk-MKVZE4ZJ.js → chunk-KTJFU7RT.js} +3 -2
- package/chunks/{chunk-R574ATRM.js → chunk-M2PNLYGY.js} +41 -0
- package/chunks/{chunk-6EOI4HOK.js → chunk-M3STHEMM.js} +12 -17
- package/chunks/chunk-NGYI5EF5.js +244 -0
- package/chunks/{chunk-ALGGS7UH.js → chunk-NPQ5ZKRP.js} +82 -1
- package/chunks/{chunk-HQB2KUAN.js → chunk-NPUXXRJI.js} +1 -1
- package/chunks/{chunk-QETYKPMG.js → chunk-NVRDQFCX.js} +1 -1
- package/chunks/{chunk-PQBHU2IA.js → chunk-OHKJVAKG.js} +10 -10
- package/chunks/{chunk-CYR3HI5X.js → chunk-OQTXYMKW.js} +2 -2
- package/chunks/{chunk-DBOFL3LQ.js → chunk-PG62DFWD.js} +10 -10
- package/chunks/{chunk-2VSTGY6M.js → chunk-PJRW65JO.js} +1 -1
- package/chunks/{chunk-33ACCIIY.js → chunk-PLFATELK.js} +1 -1
- package/chunks/{chunk-IC4Z6LX6.js → chunk-PYQADEFD.js} +5 -0
- package/chunks/{chunk-MAJS7AT4.js → chunk-QGHSP65Z.js} +2 -2
- package/chunks/{chunk-OHJLEW5J.js → chunk-QQWD7LZV.js} +4 -4
- package/chunks/{chunk-ZXU5UHMI.js → chunk-QXVSWG66.js} +2 -2
- package/chunks/{chunk-E33LOKRA.js → chunk-RPWVIXDB.js} +18 -1
- package/chunks/{chunk-TYKC75AX.js → chunk-S3Y3GBFD.js} +1 -1
- package/chunks/{chunk-7UFKAV7Y.js → chunk-S6HYI3MF.js} +2 -2
- package/chunks/chunk-SAH4BD2J.js +92 -0
- package/chunks/{chunk-OMKQH5C5.js → chunk-SNRT2TJJ.js} +6 -23
- package/chunks/chunk-SR7RZ4MS.js +202 -0
- package/chunks/{chunk-CXE7E23H.js → chunk-TE3ZAJE7.js} +45 -17
- package/chunks/{chunk-S7CV4KO6.js → chunk-TKSZJ5BV.js} +3 -3
- package/chunks/{chunk-3NB7TSE2.js → chunk-U5SLIG7E.js} +1 -1
- package/chunks/chunk-UA5H3DS2.js +203 -0
- package/chunks/{chunk-24ER7UV4.js → chunk-UFALT4LK.js} +1 -1
- package/chunks/{chunk-YJQCUTT2.js → chunk-VWMUDKLC.js} +3 -3
- package/chunks/{chunk-RMH5OWLD.js → chunk-VXZ5HAOV.js} +1 -1
- package/chunks/{chunk-BVWVWGLE.js → chunk-WAUGQKUU.js} +4 -64
- package/chunks/{chunk-SHZYHGQH.js → chunk-WG6542MA.js} +1 -1
- package/chunks/{chunk-5KH532V7.js → chunk-WV5J6Q6N.js} +1 -1
- package/chunks/{chunk-RNVQB725.js → chunk-XHD7CRP2.js} +2 -2
- package/chunks/{chunk-W4B7UBUS.js → chunk-XZKQT2B2.js} +5 -5
- package/chunks/{chunk-6HVUFDS2.js → chunk-Y4TETC74.js} +22 -13
- package/chunks/{chunk-RZHU3ILK.js → chunk-YEF7XEO2.js} +4 -4
- package/chunks/{chunk-RUL4S3K3.js → chunk-YHJFF7KH.js} +146 -45
- package/chunks/{chunk-23RZCH76.js → chunk-YOM7DEGB.js} +3 -3
- package/chunks/{chunk-OFI7IGST.js → chunk-ZCLLJARV.js} +9 -9
- package/chunks/{chunk-GSS34377.js → chunk-ZHA242R4.js} +2 -2
- package/chunks/{chunk-TRLYP7OF.js → chunk-ZPLALRXZ.js} +17 -9
- package/chunks/{chunk-WUC6ZFXO.js → chunk-ZWBUH5UP.js} +1 -1
- package/chunks/{computer-use-KEAPATUY.js → computer-use-ESQYJ3JY.js} +26 -22
- package/chunks/{config-utils-K7SCOWHD.js → config-utils-XQHBJP7G.js} +4 -4
- package/chunks/{contextCommand-ZJA6A5K5.js → contextCommand-CX3YF4ZE.js} +28 -24
- package/chunks/{core-runtime-QMJPWHCI.js → core-runtime-DIAU7JMG.js} +30 -26
- package/chunks/{create-sub-session-DJE6XICH.js → create-sub-session-HDPD6HOA.js} +26 -22
- package/chunks/{create-sub-session-E4PBYXV5.js → create-sub-session-QIDZUOPU.js} +1 -1
- package/chunks/{cron-create-GRBWYMIJ.js → cron-create-VONA5JYY.js} +1 -1
- package/chunks/{cron-delete-4CMKBR2M.js → cron-delete-5JXSP2MI.js} +1 -1
- package/chunks/{cron-list-W7K4ASOA.js → cron-list-KE4F2CIR.js} +1 -1
- package/chunks/{daemon-SCTQMM7Z.js → daemon-VZBGJUNL.js} +30 -0
- package/chunks/{daemon-status-provider-FSWDPE2G.js → daemon-status-provider-H6O4UQ4F.js} +33 -29
- package/chunks/{daemon-trust-policy-P5L5VFAY.js → daemon-trust-policy-BNUXG6MT.js} +33 -29
- package/chunks/{daemon-trust-policy-monitor-73JYN6ET.js → daemon-trust-policy-monitor-E4EQ7GF4.js} +33 -29
- package/chunks/{de-VL76CPLV.js → de-LIW4XVLN.js} +5 -0
- package/chunks/{deferred-core-runtime-BWRCCFTE.js → deferred-core-runtime-CBMSHPAU.js} +26 -22
- package/chunks/{display-image-O2XFPQTC.js → display-image-NQRSIBXM.js} +2 -2
- package/chunks/{dist-DPPHJAVL.js → dist-EEEQGCZA.js} +918 -142
- package/chunks/{dist-K4WWQBHS.js → dist-HIACTZEK.js} +55 -15
- package/chunks/{dist-3BMEUGTG.js → dist-IRL7WA5Z.js} +1 -1
- package/chunks/{dist-HVBMEYWK.js → dist-KVISB2O2.js} +1 -1
- package/chunks/{dist-KS4O2NKE.js → dist-MBF3I5MX.js} +14 -8
- package/chunks/{dist-SFQ34F4M.js → dist-MKX5OSFF.js} +5 -4
- package/chunks/{dist-7JGAAQSC.js → dist-RCH3I7SS.js} +2 -2
- package/chunks/{dist-C5U4LJKW.js → dist-TUSWNE2I.js} +5 -4
- package/chunks/{earlyInputCapture-L5ST23A6.js → earlyInputCapture-UIOP7OIN.js} +26 -22
- package/chunks/{edit-LHHRFNFK.js → edit-ITMZYFKA.js} +26 -22
- package/chunks/{en-IRJ2WN5T.js → en-SY5GTIGX.js} +6 -0
- package/chunks/{enter-worktree-6NXCRZPF.js → enter-worktree-S4PL5UV6.js} +26 -22
- package/chunks/{enterPlanMode-ZVQT4U7D.js → enterPlanMode-YV52NNJT.js} +26 -22
- package/chunks/{environment-GJ2HWJOS.js → environment-NGOWPRZV.js} +30 -26
- package/chunks/{errors-6RLH3XXC.js → errors-BU26DTDX.js} +28 -24
- package/chunks/{exit-worktree-I2YLUHHY.js → exit-worktree-XRM6LH5F.js} +26 -22
- package/chunks/{exitPlanMode-7CCWKO7I.js → exitPlanMode-ZLI5F7KR.js} +26 -22
- package/chunks/{fast-path-DVFD4HQD.js → fast-path-UJWORIED.js} +23 -3
- package/chunks/{fast-path-settings-WQJU2LAT.js → fast-path-settings-37WQD5B2.js} +6 -3
- package/chunks/{fr-GK3HQYVB.js → fr-RQFO7U4P.js} +5 -0
- package/chunks/{gemini-7FWGOYD4.js → gemini-ZSKNDUMU.js} +77 -65
- package/chunks/{geminiContentGenerator-V2WVLIXU.js → geminiContentGenerator-YGEXOEKD.js} +1 -1
- package/chunks/{glob-3N6GGI75.js → glob-7KZG44BR.js} +26 -22
- package/chunks/{goal-tools-APOW6UXL.js → goal-tools-PXWN5VK3.js} +4 -2
- package/chunks/{grep-V43ILZVX.js → grep-6ZFC7RJ5.js} +26 -22
- package/chunks/{handleAutoUpdate-A5WFVWIA.js → handleAutoUpdate-KSEL3TQS.js} +30 -26
- package/chunks/{i18n-PLVQ4FBZ.js → i18n-ZIUXBW5V.js} +27 -23
- package/chunks/{image-gen-7C6IK6DC.js → image-gen-AUIZJJNK.js} +7 -5
- package/chunks/{initializer-CVAIKZYL.js → initializer-7AHY3N6Q.js} +33 -29
- package/chunks/{installationInfo-J6QDHNTK.js → installationInfo-VGBXMYLY.js} +27 -23
- package/chunks/{ja-3FA46IKD.js → ja-KOZKHJHZ.js} +5 -0
- package/chunks/{list-ZZ4OUUWV.js → list-PSFKQHLB.js} +36 -32
- package/chunks/{list-agents-KFFIIS2G.js → list-agents-Z4WABFDZ.js} +1 -1
- package/chunks/{loadedSettingsAdapter-QRYRJSWL.js → loadedSettingsAdapter-FTMRCTOF.js} +33 -29
- package/chunks/{loggingContentGenerator-OJCO75HM.js → loggingContentGenerator-MZAN52UV.js} +7 -5
- package/chunks/{loop-wakeup-TLMJPMMP.js → loop-wakeup-UZ5RL5Y2.js} +2 -2
- package/chunks/{ls-UVVE2XGE.js → ls-TVHDGIES.js} +1 -1
- package/chunks/{lsp-QMEA2VLB.js → lsp-CVN6OQPI.js} +1 -1
- package/chunks/{managed-npm-update-PCOSCP2N.js → managed-npm-update-O4NHK45X.js} +27 -23
- package/chunks/{mcp-M3WKKWKY.js → mcp-6CFP2AYQ.js} +33 -29
- package/chunks/{monitor-GN24FH6C.js → monitor-DAKD6OU4.js} +26 -22
- package/chunks/{nonInteractiveCli-KPTU3VSQ.js → nonInteractiveCli-RC7VIUZL.js} +66 -60
- package/chunks/{notebook-edit-4YM65BBO.js → notebook-edit-474DPMRL.js} +34 -22
- package/chunks/{openaiContentGenerator-EDQT6GTV.js → openaiContentGenerator-2NFY2MWO.js} +19 -9
- package/chunks/{pidfile-JOIIRN2C.js → pidfile-KBFVDNQP.js} +26 -22
- package/chunks/{process-registry-2CHQBXH5.js → process-registry-PMJOA5CO.js} +15 -0
- package/chunks/{processUtils-5SV4MX3Q.js → processUtils-6GRYH4Y3.js} +2 -2
- package/chunks/{pt-3AOBKPIJ.js → pt-U6AOCTMF.js} +5 -0
- package/chunks/{qwenContentGenerator-ODRJSUGR.js → qwenContentGenerator-KAHU6IZY.js} +33 -28
- package/chunks/{qwenOAuth2-NESCMZ47.js → qwenOAuth2-RRQTCP4W.js} +7 -5
- package/chunks/{read-file-HPSODLPK.js → read-file-3M6WXDXP.js} +6 -4
- package/chunks/{read-mcp-resource-2TNSJTC3.js → read-mcp-resource-PZ4ZF6YL.js} +1 -1
- package/chunks/{record-artifact-RAON52FC.js → record-artifact-P4HFMS7X.js} +2 -2
- package/chunks/{resumeHistoryUtils-TXCOFFMQ.js → resumeHistoryUtils-D6TAY3HX.js} +30 -26
- package/chunks/{ripGrep-ZKQGTQAO.js → ripGrep-PLPENT3E.js} +26 -22
- package/chunks/{ru-VJRAMC4W.js → ru-CMX4UMYP.js} +5 -0
- package/chunks/{run-qwen-serve-ZPKPKECF.js → run-qwen-serve-ZAFIJKJC.js} +168 -54
- package/chunks/{runtime-2FLNNM36.js → runtime-ZED7CYOZ.js} +38 -34
- package/chunks/{scheduler-365PJHNR.js → scheduler-MD3AL2W5.js} +26 -22
- package/chunks/{send-message-ZM7MRUGP.js → send-message-CAMSLG2L.js} +4 -3
- package/chunks/{serve-QD2RNLKJ.js → serve-E3VUDRZN.js} +33 -29
- package/chunks/{server-XLJVLTYM.js → server-OWMEMAKR.js} +450 -231
- package/chunks/{session-3VTUHH4Q.js → session-HZ57QK7K.js} +158 -97
- package/chunks/{settings-KULVPCQC.js → settings-V7BR3RKP.js} +32 -28
- package/chunks/{shell-3SWW22MH.js → shell-23OMNMW6.js} +26 -22
- package/chunks/{skill-KDHWYS7W.js → skill-6HBDYZRS.js} +7 -5
- package/chunks/{skill-settings-NMY4JEJC.js → skill-settings-HWJLTU7M.js} +32 -28
- package/chunks/{spawnChannel-ZKS4Q5OU.js → spawnChannel-N6KKUW5B.js} +27 -23
- package/chunks/{standalone-update-7CXPGAQ4.js → standalone-update-QGIKHATD.js} +28 -24
- package/chunks/{startInteractiveUI-2QQLEKM6.js → startInteractiveUI-GX2CRL42.js} +365 -155
- package/chunks/{syntheticOutput-ZLCUTKO2.js → syntheticOutput-PEBJQYJV.js} +2 -2
- package/chunks/{task-create-CQP5UEA3.js → task-create-5NWCQSJF.js} +5 -4
- package/chunks/{task-list-XLEZOJXP.js → task-list-53265TRZ.js} +1 -1
- package/chunks/{task-stop-7ZQM5CFF.js → task-stop-FPCOIRYX.js} +1 -1
- package/chunks/{task-update-JA75U2SN.js → task-update-5HN577LS.js} +5 -4
- package/chunks/{team-create-2WTNGAOX.js → team-create-CFFKU7KL.js} +26 -22
- package/chunks/{team-delete-MHY3UZGY.js → team-delete-MMQB4OSC.js} +1 -1
- package/chunks/{team-plan-approval-LZTYLEG4.js → team-plan-approval-6EFOKR6A.js} +26 -22
- package/chunks/{terminal-image-renderer-R5HHAFJN.js → terminal-image-renderer-TLDNACQY.js} +28 -24
- package/chunks/{theme-manager-PAUCSJFF.js → theme-manager-5LJ3H7VO.js} +26 -22
- package/chunks/{todoWrite-UPVOHYGD.js → todoWrite-JGV6VLOX.js} +1 -1
- package/chunks/{tool-search-2BFCGLI6.js → tool-search-UJV3A24H.js} +9 -6
- package/chunks/{total-session-admission-MK4SINFK.js → total-session-admission-D63QYXGO.js} +29 -25
- package/chunks/{trustedFolders-TJ5S26N7.js → trustedFolders-KZCOB53W.js} +30 -24
- package/chunks/{update-relaunch-N7AYLARF.js → update-relaunch-IFILM3SA.js} +5 -5
- package/chunks/{updateCheck-QRZ3DVT5.js → updateCheck-YZ2CRCFC.js} +29 -25
- package/chunks/{useAutoAcceptIndicator-DBJ7Y5AF.js → useAutoAcceptIndicator-AXEVNA3Q.js} +35 -31
- package/chunks/{validateNonInterActiveAuth-6ZQWUDS3.js → validateNonInterActiveAuth-3WTOJFWA.js} +61 -57
- package/chunks/{version-AJQGQWXC.js → version-GXK7OHZY.js} +1 -1
- package/chunks/{web-fetch-QWJYRXFL.js → web-fetch-ILB4GAVR.js} +12 -8
- package/chunks/{web-search-2AOXJGHU.js → web-search-HKRPGPZZ.js} +8 -6
- package/chunks/{workflow-ERH3SJG2.js → workflow-FXIPRQQA.js} +750 -147
- package/chunks/{workspace-providers-status-HZ474RA4.js → workspace-providers-status-NYHC7HSR.js} +35 -31
- package/chunks/{workspace-registration-store-6EUP4JXG.js → workspace-registration-store-AKEB7OMW.js} +1 -1
- package/chunks/{workspace-registry-R4APRRNC.js → workspace-registry-CDAS5TVZ.js} +29 -25
- package/chunks/{workspace-service-HFIFDMU7.js → workspace-service-PAMUKMAV.js} +36 -32
- package/chunks/{workspace-skills-status-HAHEIHGK.js → workspace-skills-status-YQSHCCMS.js} +33 -29
- package/chunks/{workspace-trust-reconciler-65GTAGDK.js → workspace-trust-reconciler-RPTXOIY2.js} +36 -32
- package/chunks/{write-file-B34CDELV.js → write-file-CGS57TS4.js} +26 -22
- package/chunks/{zh-ARWDLDLR.js → zh-AGL2FVBI.js} +6 -0
- package/chunks/{zh-TW-Y4RGI3P7.js → zh-TW-KI66MHQY.js} +6 -0
- package/chunks/{zoom-image-HPRBZHSS.js → zoom-image-E7D72GYV.js} +6 -4
- package/cli.js +13 -13
- package/locales/ca.js +10 -0
- package/locales/de.js +9 -0
- package/locales/en.js +10 -0
- package/locales/fr.js +9 -0
- package/locales/ja.js +9 -0
- package/locales/pt.js +9 -0
- package/locales/ru.js +9 -0
- package/locales/zh-TW.js +10 -0
- package/locales/zh.js +10 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-Ip-FFDJ0.js → arc-DybZaz32.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-CChqgwIb.js → architectureDiagram-3BPJPVTR-jN3qBd19.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-BHN-Tfss.js → blockDiagram-GPEHLZMM-Ct5DZPrj.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-BhyjzDjN.js → c4Diagram-AAUBKEIU-CUAFMlUG.js} +1 -1
- package/web-shell/assets/channel-BMwLrwLW.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-BB9eyHrx.js → chunk-2J33WTMH-CuV8n90B.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BeV7ce_J.js → chunk-4BX2VUAB-BUzl_kls.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DO7kXDiV.js → chunk-55IACEB6-BnDBLX6A.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-B27MPznD.js → chunk-727SXJPM-B83uTOjm.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-DHIjqjD_.js → chunk-AQP2D5EJ-DM3HLgpT.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-DabMqyN2.js → chunk-FMBD7UC4-CSQ5hgyb.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-Dw7Nnnxc.js → chunk-ND2GUHAM-BWOF4SxX.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-DdaZew1Q.js → chunk-QZHKN3VN-BsOH9LMi.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BGDv98jY.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BGDv98jY.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-CgBpCYH5.js → cose-bilkent-S5V4N54A-IENqH2iJ.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-BB4IU8G0.js → dagre-BM42HDAG--dyzDTGo.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BcUTHU37.js → diagram-2AECGRRQ-BE7Dcqof.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-B6Lyihyv.js → diagram-5GNKFQAL-Cr8-5OTj.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CRIJOjpG.js → diagram-KO2AKTUF-Bzey3uAY.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DdNiwWWT.js → diagram-LMA3HP47-sErl28Xb.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-Dz4b32Do.js → diagram-OG6HWLK6-Dq30ATIo.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-D-8NGw77.js → erDiagram-TEJ5UH35-BkCoEfVW.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-Dun26LyM.js → flowDiagram-I6XJVG4X-DHwO0rrI.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-F10Hu1Gc.js → ganttDiagram-6RSMTGT7-s7vAPxWq.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Bf8Ez6-D.js → gitGraphDiagram-PVQCEYII-CQxhwPOU.js} +1 -1
- package/web-shell/assets/index-Bckpjr-I.css +5 -0
- package/web-shell/assets/{index-BXqw-nGq.js → index-CF4wApWp.js} +1 -1
- package/web-shell/assets/index-DwEr9HEW.js +1768 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DVgTMLvj.js → infoDiagram-5YYISTIA-BnFrD0bq.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-uT-KepvK.js → ishikawaDiagram-YF4QCWOH-Bf9zK5NK.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-Vg_XadQf.js → journeyDiagram-JHISSGLW-CyGAhsxi.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-Dyv1ESBE.js → kanban-definition-UN3LZRKU-CbsK5akB.js} +1 -1
- package/web-shell/assets/{linear-BMIepYX3.js → linear-cQsF4P8D.js} +1 -1
- package/web-shell/assets/{mermaid.core-zA8pJ9ag.js → mermaid.core-Z4HVqrKY.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BCW_BZ_5.js → mindmap-definition-RKZ34NQL-CYnrBo_f.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-DseNEGp2.js → pieDiagram-4H26LBE5-CBzOfhrs.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-6Z7wr1Fi.js → quadrantDiagram-W4KKPZXB-D4LK1Ebn.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CVOlCRPf.js → requirementDiagram-4Y6WPE33-Bzti2Lcj.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CGhgrUJZ.js → sankeyDiagram-5OEKKPKP-yTBw5Z2s.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-dlqmpLuQ.js → sequenceDiagram-3UESZ5HK-D07UVRiZ.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-B9EW10Xb.js → stateDiagram-AJRCARHV-UE_lHsTn.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DC6xgXjX.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-BBRh0mgZ.js → timeline-definition-PNZ67QCA-DRvYdiTs.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-B8Gs-REP.js → vennDiagram-CIIHVFJN-CQLIXs0u.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-D_y80Ur7.js → wardley-L42UT6IY-JZz_Xqse.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-D-CNfHJ-.js → wardleyDiagram-YWT4CUSO--i7BiJwB.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-DQ5CvELo.js → xychartDiagram-2RQKCTM6-Bkc-bW0S.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-6PEXNQTX.js +0 -68
- package/chunks/chunk-IUFV6FYU.js +0 -81
- package/web-shell/assets/channel-Cu8qd6OB.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BI3KrXhq.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BI3KrXhq.js +0 -1
- package/web-shell/assets/index-QQlUCJGg.css +0 -5
- package/web-shell/assets/index-hcgjV7vS.js +0 -1768
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CJTZJJ5X.js +0 -1
- package/chunks/{anthropicContentGenerator-DTMVEL5M.js → anthropicContentGenerator-SSFE2753.js} +9 -9
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
import {
|
|
4
4
|
retryContext
|
|
5
5
|
} from "./chunk-P3QQPMQA.js";
|
|
6
|
+
import {
|
|
7
|
+
classifyRetryError
|
|
8
|
+
} from "./chunk-SR7RZ4MS.js";
|
|
6
9
|
import {
|
|
7
10
|
formatQuotaExhaustedMessage,
|
|
8
|
-
getRateLimitErrorDetails,
|
|
9
11
|
getRetryAfterDelayMs,
|
|
10
12
|
getRetryDelayMs,
|
|
11
13
|
isQuotaExhaustedError,
|
|
@@ -14,8 +16,7 @@ import {
|
|
|
14
16
|
} from "./chunk-M6HMMKVG.js";
|
|
15
17
|
import {
|
|
16
18
|
createDebugLogger,
|
|
17
|
-
getErrorStatus
|
|
18
|
-
isAbortError
|
|
19
|
+
getErrorStatus
|
|
19
20
|
} from "./chunk-OIVKILPI.js";
|
|
20
21
|
import {
|
|
21
22
|
init_esbuild_shims
|
|
@@ -26,183 +27,6 @@ import {
|
|
|
26
27
|
|
|
27
28
|
// packages/core/src/utils/retry.ts
|
|
28
29
|
init_esbuild_shims();
|
|
29
|
-
|
|
30
|
-
// packages/core/src/utils/retryErrorClassification.ts
|
|
31
|
-
init_esbuild_shims();
|
|
32
|
-
function classifyRetryError(error, context = {}) {
|
|
33
|
-
if (isRetryAbortError(error)) {
|
|
34
|
-
return {
|
|
35
|
-
kind: "abort",
|
|
36
|
-
diagnosis: "fail-fast",
|
|
37
|
-
reason: "aborted"
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
const details = getRateLimitErrorDetails(error);
|
|
41
|
-
const statusCode = details.statusCode;
|
|
42
|
-
const providerFields = getProviderFields(error);
|
|
43
|
-
const providerCode = details.providerCode ?? providerFields.providerCode;
|
|
44
|
-
const providerMessage = details.providerMessage ?? providerFields.providerMessage;
|
|
45
|
-
const requestId = details.requestId ?? providerFields.requestId;
|
|
46
|
-
const common = {
|
|
47
|
-
...statusCode !== void 0 ? { statusCode } : {},
|
|
48
|
-
...providerCode !== void 0 ? { providerCode } : {},
|
|
49
|
-
...providerMessage !== void 0 ? { providerMessage } : {},
|
|
50
|
-
...requestId !== void 0 ? { requestId } : {}
|
|
51
|
-
};
|
|
52
|
-
if (context.authType === "qwen-oauth" /* QWEN_OAUTH */ && isQwenQuotaExceededError(error)) {
|
|
53
|
-
return {
|
|
54
|
-
kind: "provider-business",
|
|
55
|
-
diagnosis: "fail-fast",
|
|
56
|
-
reason: "qwen-oauth-free-tier-quota",
|
|
57
|
-
...common
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
if (isAllocatedQuotaExceeded(providerCode)) {
|
|
61
|
-
return {
|
|
62
|
-
kind: "provider-business",
|
|
63
|
-
diagnosis: "fail-fast",
|
|
64
|
-
reason: "allocated-quota-exceeded",
|
|
65
|
-
...common
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
if (isRateLimitError(error, context.extraRetryErrorCodes)) {
|
|
69
|
-
const kind = details.transport === "sse" ? "sse-provider" : statusCode !== void 0 ? "http" : "provider";
|
|
70
|
-
return {
|
|
71
|
-
kind,
|
|
72
|
-
diagnosis: "retryable",
|
|
73
|
-
reason: "rate-limit",
|
|
74
|
-
...common
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
const transportCode = getTransportCode(error);
|
|
78
|
-
if (transportCode !== void 0 && (statusCode === void 0 || statusCode >= 500)) {
|
|
79
|
-
return {
|
|
80
|
-
kind: "transport",
|
|
81
|
-
diagnosis: "retryable",
|
|
82
|
-
reason: "transport-error",
|
|
83
|
-
transportCode,
|
|
84
|
-
...statusCode !== void 0 ? { statusCode } : {}
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
if (statusCode !== void 0) {
|
|
88
|
-
const kind = details.transport === "sse" ? "sse-provider" : "http";
|
|
89
|
-
if (statusCode === 529) {
|
|
90
|
-
return {
|
|
91
|
-
kind,
|
|
92
|
-
diagnosis: "retryable",
|
|
93
|
-
reason: "capacity-overload",
|
|
94
|
-
...common
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
if (statusCode === 401 || statusCode === 403) {
|
|
98
|
-
return {
|
|
99
|
-
kind,
|
|
100
|
-
diagnosis: "fail-fast",
|
|
101
|
-
reason: "auth-error",
|
|
102
|
-
...common
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
if (statusCode >= 400 && statusCode < 500) {
|
|
106
|
-
return {
|
|
107
|
-
kind,
|
|
108
|
-
diagnosis: "fail-fast",
|
|
109
|
-
reason: "client-error",
|
|
110
|
-
...common
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
if (statusCode >= 500 && statusCode < 600) {
|
|
114
|
-
return {
|
|
115
|
-
kind,
|
|
116
|
-
diagnosis: "retryable",
|
|
117
|
-
reason: "server-error",
|
|
118
|
-
...common
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
return {
|
|
122
|
-
kind,
|
|
123
|
-
diagnosis: "unknown",
|
|
124
|
-
reason: "http-status",
|
|
125
|
-
...common
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
return {
|
|
129
|
-
kind: "unknown",
|
|
130
|
-
diagnosis: "unknown",
|
|
131
|
-
reason: "unclassified",
|
|
132
|
-
...common
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
__name(classifyRetryError, "classifyRetryError");
|
|
136
|
-
function isRetryAbortError(error) {
|
|
137
|
-
if (isAbortError(error)) {
|
|
138
|
-
return true;
|
|
139
|
-
}
|
|
140
|
-
return error instanceof Error && error.name === "CanceledError";
|
|
141
|
-
}
|
|
142
|
-
__name(isRetryAbortError, "isRetryAbortError");
|
|
143
|
-
var MAX_TRANSPORT_CAUSE_DEPTH = 4;
|
|
144
|
-
function getTransportCode(error) {
|
|
145
|
-
let current = error;
|
|
146
|
-
for (let depth = 0; depth <= MAX_TRANSPORT_CAUSE_DEPTH; depth++) {
|
|
147
|
-
if (typeof current !== "object" || current === null) {
|
|
148
|
-
return void 0;
|
|
149
|
-
}
|
|
150
|
-
const code = current.code;
|
|
151
|
-
if (typeof code === "string" && isTransportCode(code)) {
|
|
152
|
-
return code;
|
|
153
|
-
}
|
|
154
|
-
current = current instanceof Error ? current.cause : void 0;
|
|
155
|
-
}
|
|
156
|
-
return void 0;
|
|
157
|
-
}
|
|
158
|
-
__name(getTransportCode, "getTransportCode");
|
|
159
|
-
function isTransportCode(code) {
|
|
160
|
-
return TRANSPORT_ERROR_CODES.has(code);
|
|
161
|
-
}
|
|
162
|
-
__name(isTransportCode, "isTransportCode");
|
|
163
|
-
var TRANSPORT_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
164
|
-
"EAI_AGAIN",
|
|
165
|
-
"ECONNABORTED",
|
|
166
|
-
"ECONNREFUSED",
|
|
167
|
-
"ECONNRESET",
|
|
168
|
-
"EHOSTUNREACH",
|
|
169
|
-
"ENETUNREACH",
|
|
170
|
-
"ENOTFOUND",
|
|
171
|
-
"EPIPE",
|
|
172
|
-
"ETIMEDOUT",
|
|
173
|
-
"UND_ERR_BODY_TIMEOUT",
|
|
174
|
-
"UND_ERR_CONNECT_TIMEOUT",
|
|
175
|
-
"UND_ERR_HEADERS_TIMEOUT",
|
|
176
|
-
"UND_ERR_SOCKET"
|
|
177
|
-
]);
|
|
178
|
-
function isAllocatedQuotaExceeded(providerCode) {
|
|
179
|
-
return providerCode === "Throttling.AllocationQuota";
|
|
180
|
-
}
|
|
181
|
-
__name(isAllocatedQuotaExceeded, "isAllocatedQuotaExceeded");
|
|
182
|
-
function getProviderFields(error) {
|
|
183
|
-
if (typeof error !== "object" || error === null) {
|
|
184
|
-
return {};
|
|
185
|
-
}
|
|
186
|
-
const source = error;
|
|
187
|
-
const rawCode = typeof source.code === "string" || typeof source.code === "number" ? String(source.code) : void 0;
|
|
188
|
-
const isHttpStatusEcho = typeof source.code === "number" && source.code >= 100 && source.code < 600;
|
|
189
|
-
const providerCode = error instanceof Error && rawCode?.startsWith("ERR_") || isHttpStatusEcho ? void 0 : rawCode;
|
|
190
|
-
const requestId = typeof source.request_id === "string" ? source.request_id : typeof source.requestId === "string" ? source.requestId : void 0;
|
|
191
|
-
const providerMessage = typeof source.message === "string" && (!(error instanceof Error) || providerCode !== void 0 || requestId !== void 0) ? source.message : void 0;
|
|
192
|
-
return {
|
|
193
|
-
...providerCode !== void 0 ? { providerCode } : {},
|
|
194
|
-
...providerMessage !== void 0 ? { providerMessage } : {},
|
|
195
|
-
...requestId !== void 0 ? { requestId } : {}
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
__name(getProviderFields, "getProviderFields");
|
|
199
|
-
var FALLBACK_ELIGIBLE_STATUS_CODES = /* @__PURE__ */ new Set([429, 503, 529]);
|
|
200
|
-
function isFallbackEligible(classification) {
|
|
201
|
-
return classification.kind !== "transport" && classification.statusCode !== void 0 && FALLBACK_ELIGIBLE_STATUS_CODES.has(classification.statusCode) && classification.diagnosis !== "fail-fast" && classification.diagnosis !== "unknown";
|
|
202
|
-
}
|
|
203
|
-
__name(isFallbackEligible, "isFallbackEligible");
|
|
204
|
-
|
|
205
|
-
// packages/core/src/utils/retry.ts
|
|
206
30
|
var debugLogger = createDebugLogger("RETRY");
|
|
207
31
|
var PERSISTENT_MAX_BACKOFF_MS = 5 * 60 * 1e3;
|
|
208
32
|
var PERSISTENT_CAP_MS = 6 * 60 * 60 * 1e3;
|
|
@@ -507,17 +331,10 @@ function logRetryAtStatusLevel(message, retryDiagnostics, error, errorStatus) {
|
|
|
507
331
|
__name(logRetryAtStatusLevel, "logRetryAtStatusLevel");
|
|
508
332
|
|
|
509
333
|
export {
|
|
510
|
-
classifyRetryError,
|
|
511
|
-
isFallbackEligible,
|
|
512
334
|
isUnattendedMode,
|
|
513
335
|
delay,
|
|
514
336
|
retryWithBackoff
|
|
515
337
|
};
|
|
516
|
-
/**
|
|
517
|
-
* @license
|
|
518
|
-
* Copyright 2026 Google LLC
|
|
519
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
520
|
-
*/
|
|
521
338
|
/**
|
|
522
339
|
* @license
|
|
523
340
|
* Copyright 2025 Google LLC
|
|
@@ -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-
|
|
6
|
+
} from "./chunk-NGYI5EF5.js";
|
|
6
7
|
import {
|
|
7
8
|
loadSettings,
|
|
8
9
|
saveSettings
|
|
9
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-OHKJVAKG.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
|
|
172
|
-
|
|
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 "${
|
|
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 "${
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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, {
|
|
@@ -8,16 +8,16 @@ import {
|
|
|
8
8
|
initializeI18n,
|
|
9
9
|
resolveLanguageSetting,
|
|
10
10
|
t
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-PG62DFWD.js";
|
|
12
12
|
import {
|
|
13
13
|
IdeClient
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-GXSNGY5M.js";
|
|
15
15
|
import {
|
|
16
16
|
AuthEvent,
|
|
17
17
|
IdeConnectionEvent,
|
|
18
18
|
logAuth,
|
|
19
19
|
logIdeConnection
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-3PY4LPJF.js";
|
|
21
21
|
import {
|
|
22
22
|
getErrorMessage
|
|
23
23
|
} from "./chunk-OIVKILPI.js";
|