@qwen-code/qwen-code 0.23.1-preview.2 → 0.23.1
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/bundled/computer-use/SKILL.md +189 -116
- package/bundled/goal-draft/SKILL.md +23 -13
- package/bundled/qc-helper/docs/_meta.ts +1 -0
- package/bundled/qc-helper/docs/configuration/model-providers.md +47 -1
- package/bundled/qc-helper/docs/configuration/settings.md +50 -0
- package/bundled/qc-helper/docs/conversations-recovery.md +102 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
- package/bundled/qc-helper/docs/features/computer-use.md +9 -7
- package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
- package/bundled/qc-helper/docs/features/goals.md +15 -3
- package/bundled/qc-helper/docs/qwen-serve.md +19 -1
- package/chunks/{MaxSizedBox-IYIQ43IZ.js → MaxSizedBox-UDO6Y7RB.js} +20 -20
- package/chunks/{StandaloneSessionPicker-AWB2OHX6.js → StandaloneSessionPicker-D4CUOO4H.js} +38 -38
- package/chunks/{acp-startup-profiler-BAL4LJTN.js → acp-startup-profiler-KEU6VAYR.js} +2 -2
- package/chunks/{acpAgent-ZC57OLS4.js → acpAgent-KWLJFADK.js} +118 -91
- package/chunks/{agent-GEBPAEJS.js → agent-GSUPGEOL.js} +13 -13
- package/chunks/{agent-headless-63ZEYAJK.js → agent-headless-HNYCQUJB.js} +13 -13
- package/chunks/{anthropicContentGenerator-6XDHXIII.js → anthropicContentGenerator-I7LQZH26.js} +30 -7
- package/chunks/{askUserQuestion-3KAYLLMM.js → askUserQuestion-I5W5S3D6.js} +1 -1
- package/chunks/{bridge-MHWO5I5T.js → bridge-B7CV6RVI.js} +23 -23
- package/chunks/{channel-management-service-NFRZXQFO.js → channel-management-service-TRTLQTSV.js} +4 -4
- package/chunks/{channel-settings-store-T7PMIHKC.js → channel-settings-store-FW45IRUP.js} +31 -31
- package/chunks/{channel-worker-group-O2BWK5F7.js → channel-worker-group-PIYPVCTF.js} +6 -6
- package/chunks/{channel-worker-manager-4WP7VJOD.js → channel-worker-manager-FQHEDTD2.js} +6 -6
- package/chunks/{channel-worker-supervisor-CCUXD6J5.js → channel-worker-supervisor-XJPZZ3VK.js} +3 -3
- package/chunks/{chunk-KTLT7VCX.js → chunk-25CBAK3H.js} +2 -2
- package/chunks/{chunk-SHX2HIE7.js → chunk-27LTEY6D.js} +1 -1
- package/chunks/{chunk-ZT3XUGSU.js → chunk-2TMJRF46.js} +86 -9
- package/chunks/{chunk-HWZOOSEB.js → chunk-2YS3NU4A.js} +3 -3
- package/chunks/chunk-2Z3T52OC.js +82 -0
- package/chunks/{chunk-QW7BUOSI.js → chunk-2ZFO5JD7.js} +20 -3
- package/chunks/{chunk-RH344FKI.js → chunk-3BTHHXXE.js} +1 -1
- package/chunks/{chunk-OFB36ZBA.js → chunk-3LPJ776W.js} +1 -1
- package/chunks/{chunk-GEV66YGE.js → chunk-3VDLQUR2.js} +1 -1
- package/chunks/{chunk-RRCNEW2A.js → chunk-3VWPPK5Q.js} +58 -4
- package/chunks/{chunk-L36LLVA5.js → chunk-3YQMUBTS.js} +3 -3
- package/chunks/{chunk-LTCI6ZOJ.js → chunk-45ROPFQY.js} +1 -1
- package/chunks/{chunk-W4LL5RZO.js → chunk-4ALNJDHL.js} +52 -13
- package/chunks/{chunk-4OCYWXKF.js → chunk-5CVY5Q2P.js} +3 -3
- package/chunks/{chunk-ZRVFHLLK.js → chunk-5DQ4YTIZ.js} +1 -1
- package/chunks/{chunk-FWH4736Q.js → chunk-5IL2BZHW.js} +3 -3
- package/chunks/{chunk-537SQ2AI.js → chunk-5WC2ECUK.js} +104 -16
- package/chunks/{chunk-3K65MUKD.js → chunk-65I7S4Z3.js} +2 -1
- package/chunks/{chunk-RUMSY4ES.js → chunk-66JBCTJF.js} +8 -7
- package/chunks/{chunk-YLFICBYK.js → chunk-6JXHO7LG.js} +3 -3
- package/chunks/{chunk-TDHVOZ65.js → chunk-6QILGINT.js} +2 -2
- package/chunks/{chunk-WQBR7LN5.js → chunk-6QV7Z74P.js} +1 -1
- package/chunks/{chunk-RSU3I6UL.js → chunk-6SADVYQQ.js} +1 -1
- package/chunks/{chunk-AIMZIXZM.js → chunk-6TPVIESH.js} +5 -7
- package/chunks/{chunk-2LD5U7Q3.js → chunk-6YEOCHSE.js} +29 -1
- package/chunks/{chunk-7PMKXGRP.js → chunk-75LBC7SV.js} +66 -9
- package/chunks/{chunk-B5FF3LRF.js → chunk-7SL55L5H.js} +22 -15
- package/chunks/{chunk-I7UNCY24.js → chunk-ARYNBBBM.js} +3 -3
- package/chunks/{chunk-QQGAR64U.js → chunk-B3EL44K3.js} +4 -4
- package/chunks/{chunk-KAZWXVI3.js → chunk-CABDNUJ4.js} +2 -2
- package/chunks/{chunk-R7TKFIQO.js → chunk-CALNF3Z3.js} +1 -1
- package/chunks/{chunk-75UQFGFE.js → chunk-CHVU543W.js} +1 -1
- package/chunks/{chunk-C4NXRR7T.js → chunk-CIKL2DQP.js} +2 -2
- package/chunks/{chunk-LD53HMPV.js → chunk-CRZBDVP2.js} +1 -0
- package/chunks/{chunk-SHK2SIR5.js → chunk-D6AQNMUA.js} +4 -4
- package/chunks/{chunk-EPZWBYQI.js → chunk-DO5SMV52.js} +8 -6
- package/chunks/{chunk-P5Z7VD23.js → chunk-DXQ6Z7AH.js} +106 -39
- package/chunks/{chunk-3RMVM33U.js → chunk-DZ6D4B3K.js} +5 -5
- package/chunks/{chunk-T7TP5UQL.js → chunk-E7XSUYCZ.js} +4 -4
- package/chunks/{chunk-2C3XDBGL.js → chunk-EEKU6COG.js} +4 -4
- package/chunks/{chunk-AX23QSX3.js → chunk-EHTKOO6W.js} +4 -4
- package/chunks/{chunk-XNC2TCUO.js → chunk-ENZDGHGJ.js} +4 -4
- package/chunks/{chunk-733KQL63.js → chunk-EOET4H7C.js} +3 -3
- package/chunks/{chunk-37SOBIA3.js → chunk-ERXNTINK.js} +1 -1
- package/chunks/{chunk-F47DITLZ.js → chunk-FAWTMDX7.js} +14 -0
- package/chunks/{chunk-5JLQWQK6.js → chunk-FV4DM2M4.js} +2 -2
- package/chunks/{chunk-UTVIIA7N.js → chunk-FW4E4QPG.js} +1 -1
- package/chunks/{chunk-REDVV5NC.js → chunk-FWRRUITH.js} +7 -7
- package/chunks/{chunk-5V4B3EWA.js → chunk-GM44O6F7.js} +1 -1
- package/chunks/{chunk-Z6DDPSGJ.js → chunk-GNY7B3CA.js} +1 -1
- package/chunks/{chunk-ERMAXPXA.js → chunk-HIXUUCGY.js} +187 -12
- package/chunks/{chunk-EJNYBDYC.js → chunk-HNLMYDQE.js} +1 -1
- package/chunks/{chunk-XX4MBBFW.js → chunk-HUX2DOTF.js} +3 -3
- package/chunks/{chunk-RCUWMVN3.js → chunk-HZ2HUXX7.js} +1 -1
- package/chunks/{chunk-RD3VPM4E.js → chunk-IKG2YVRZ.js} +2 -2
- package/chunks/{chunk-IMWCUWQT.js → chunk-J3TJH52D.js} +1 -1
- package/chunks/{chunk-ZJ2LM2SI.js → chunk-JGDRB4FP.js} +104 -33
- package/chunks/{chunk-ANVC5CSK.js → chunk-L7V52QEZ.js} +10 -10
- package/chunks/{chunk-MFCWL4LI.js → chunk-LNCNUMJ5.js} +451 -396
- package/chunks/{chunk-AUJOWIT5.js → chunk-LZGFVUWZ.js} +3 -3
- package/chunks/{chunk-6KYWU726.js → chunk-M73KHGNR.js} +13 -66
- package/chunks/{chunk-ADJD4LZF.js → chunk-MA5OUNN6.js} +1 -1
- package/chunks/{chunk-I67KJGM6.js → chunk-MFYH2VXV.js} +3 -3
- package/chunks/{chunk-PLUAIHZO.js → chunk-N7YQEKGX.js} +6 -6
- package/chunks/{chunk-JOV46WGX.js → chunk-NB3NDQQK.js} +1 -1
- package/chunks/chunk-NOO4QFXM.js +171 -0
- package/chunks/{chunk-VYCJITND.js → chunk-O2JBJQCF.js} +1 -1
- package/chunks/{chunk-RQNAO42A.js → chunk-OESZTXTG.js} +1 -1
- package/chunks/{chunk-UKADFFL2.js → chunk-OFVAS4AR.js} +1 -1
- package/chunks/{chunk-Y3C5COGI.js → chunk-OPMKGOLD.js} +1 -1
- package/chunks/{chunk-TSLRORQR.js → chunk-PDUMGZ2P.js} +1467 -1323
- package/chunks/{chunk-Z6KFLEG7.js → chunk-PSPAM24S.js} +1 -0
- package/chunks/{chunk-5FYGZ7E3.js → chunk-QK4K76T6.js} +2 -2
- package/chunks/{chunk-NUQFUXOG.js → chunk-QTNCGZHQ.js} +2 -0
- package/chunks/{chunk-WFXD5OZH.js → chunk-QZOXVQPK.js} +1 -1
- package/chunks/{chunk-QJVZLILI.js → chunk-R7OO56VZ.js} +1 -1
- package/chunks/{chunk-KP5QK3FB.js → chunk-RNYENHN5.js} +397 -54
- package/chunks/{chunk-22QOQKG4.js → chunk-RXT4QBDX.js} +1 -1
- package/chunks/{chunk-LYHYXJJ3.js → chunk-S6QVI3MV.js} +3 -3
- package/chunks/{chunk-NXWYCSPL.js → chunk-SOA4HKRJ.js} +1 -1
- package/chunks/{chunk-IGOIYZBG.js → chunk-T2IHCZLS.js} +2 -2
- package/chunks/{chunk-C55CR5I4.js → chunk-TGC4264Q.js} +6 -6
- package/chunks/{chunk-EGRFCIXD.js → chunk-TWAMIEQ2.js} +79 -18
- package/chunks/{chunk-PMGWY6ZP.js → chunk-TWWS7XUW.js} +13 -10
- package/chunks/{chunk-RGAQDQ3Z.js → chunk-UHUT4IDM.js} +18 -9
- package/chunks/{chunk-HPE4LEWX.js → chunk-USN6VNTO.js} +1 -1
- package/chunks/{chunk-BNWIX6BM.js → chunk-UXDVUFKU.js} +3 -3
- package/chunks/{chunk-HY3DXYZK.js → chunk-UYDQYDW2.js} +1 -1
- package/chunks/{chunk-3K456UJF.js → chunk-VF6D6EGV.js} +12 -4
- package/chunks/{chunk-ZNI3V2XA.js → chunk-WAASYFPK.js} +2 -2
- package/chunks/{chunk-OHOO527W.js → chunk-WG7BL3FY.js} +52 -2
- package/chunks/{chunk-C7M445SS.js → chunk-WJDXKQIO.js} +1 -1
- package/chunks/{chunk-HZS3JRQW.js → chunk-WNISCNTA.js} +40 -2
- package/chunks/{chunk-AWDF462I.js → chunk-WQMUGQ6G.js} +2 -2
- package/chunks/{chunk-VU7O7CGQ.js → chunk-XDNFODER.js} +1 -1
- package/chunks/{chunk-65GHQ4FX.js → chunk-XVTCSVBK.js} +514 -47
- package/chunks/{chunk-SI6Q52UI.js → chunk-XZ3Z43XL.js} +3 -3
- package/chunks/{chunk-SD7Y2PMC.js → chunk-YAC7H4K3.js} +2 -2
- package/chunks/{chunk-FXYNIZPW.js → chunk-YCEKI7QX.js} +51 -10
- package/chunks/{chunk-7IKXTGZT.js → chunk-YI2YCNSP.js} +1 -1
- package/chunks/{chunk-E4VX6LXB.js → chunk-YZTGGCEE.js} +10 -2
- package/chunks/{chunk-VMFPZXRT.js → chunk-ZNO5BUAD.js} +43 -31
- package/chunks/{chunk-WLZRMF3C.js → chunk-ZPL2TZNA.js} +353 -11
- package/chunks/{chunk-TXAEXF2B.js → chunk-ZU2T5JIS.js} +21 -8
- package/chunks/{config-utils-F4CFJ4MW.js → config-utils-KTDSQ4MU.js} +24 -24
- package/chunks/{contextCommand-OIIGGOMU.js → contextCommand-UQ3KRYGK.js} +22 -22
- package/chunks/{core-runtime-JEHLOGMB.js → core-runtime-JR34JAFH.js} +20 -20
- package/chunks/{create-sub-session-MVFBE5RA.js → create-sub-session-RGPJOI4S.js} +21 -21
- package/chunks/{daemon-LCUELM6E.js → daemon-UI6SQSBV.js} +1 -1
- package/chunks/{daemon-git-worktree-guard-5FTKLJOU.js → daemon-git-worktree-guard-H3OA26KQ.js} +20 -20
- package/chunks/{daemon-status-provider-P6A5MPMW.js → daemon-status-provider-6WZLKSZU.js} +27 -27
- package/chunks/{daemon-trust-policy-ZJ3NFYUO.js → daemon-trust-policy-3EDP2BYD.js} +27 -27
- package/chunks/{daemon-trust-policy-monitor-6SDLEW7S.js → daemon-trust-policy-monitor-CRHZPK52.js} +27 -27
- package/chunks/{deferred-core-runtime-DWOXIU5S.js → deferred-core-runtime-LO5NTQQ4.js} +20 -20
- package/chunks/{discovery-TUM3ZQ6U.js → discovery-XP4RMDUM.js} +4 -2
- package/chunks/{dist-NXW4DUUX.js → dist-24TCWK5H.js} +1 -1
- package/chunks/{dist-I74QLLQS.js → dist-5I4HLUTO.js} +1 -1
- package/chunks/{dist-XINEKB5A.js → dist-FDISN4AK.js} +1 -1
- package/chunks/{dist-VCAS67N5.js → dist-M4CBX53H.js} +1 -1
- package/chunks/{dist-AI25RVRA.js → dist-NQ2636VT.js} +1 -1
- package/chunks/{dist-3H3WODVS.js → dist-OR2ZQTXZ.js} +1 -1
- package/chunks/{dist-P6YWBITG.js → dist-STAGIFNB.js} +430 -51
- package/chunks/{dist-YNQU4CKC.js → dist-WZTUKIDR.js} +2 -2
- package/chunks/{dist-T4PRA5EZ.js → dist-XJ25G6OH.js} +1 -1
- package/chunks/{edit-WPVXLL3T.js → edit-LB7Z7XK5.js} +13 -13
- package/chunks/{enter-worktree-5A6VW6BN.js → enter-worktree-YFTKHXHZ.js} +2 -2
- package/chunks/{enterPlanMode-JSODW7E2.js → enterPlanMode-P6TVUFIY.js} +13 -13
- package/chunks/{environment-5LLJ3I3W.js → environment-QATJNNKI.js} +23 -23
- package/chunks/{errors-IQT3YZEP.js → errors-3XJ37PS2.js} +22 -22
- package/chunks/{exit-worktree-QV7E7KP6.js → exit-worktree-NF2XEMES.js} +3 -3
- package/chunks/{exitPlanMode-DDVFYNW4.js → exitPlanMode-A3OKL5UO.js} +13 -13
- package/chunks/{fast-path-PAUQQEVU.js → fast-path-DBIT5YQQ.js} +3 -3
- package/chunks/{fast-path-settings-ISEJPRYE.js → fast-path-settings-SATXY3PD.js} +3 -3
- package/chunks/{glob-SQ7CTZ7F.js → glob-73EDTXUE.js} +13 -13
- package/chunks/{goal-tools-UWZRCLQB.js → goal-tools-DFI6YMSD.js} +13 -13
- package/chunks/{handleAutoUpdate-RUPZZTSG.js → handleAutoUpdate-2FUNJO3B.js} +23 -23
- package/chunks/{i18n-SF5MPWEB.js → i18n-FDIA6KFI.js} +23 -21
- package/chunks/{image-gen-Q3RUTVKR.js → image-gen-XP4NNIYG.js} +4 -4
- package/chunks/{initializer-CK4WPYZG.js → initializer-4MJTJOTW.js} +27 -27
- package/chunks/{installationInfo-IRPQEYRF.js → installationInfo-232RA2OK.js} +20 -20
- package/chunks/{list-E3PS3EBJ.js → list-WN6WSGEB.js} +30 -30
- package/chunks/{llm-JQKBOYAF.js → llm-UDFWQWZA.js} +62 -62
- package/chunks/{llm-content-generator-2QWGBW42.js → llm-content-generator-VLMZ2A7A.js} +23 -8
- package/chunks/{loadedSettingsAdapter-DGXGVYZS.js → loadedSettingsAdapter-OBQEIXM7.js} +27 -27
- package/chunks/{loggingContentGenerator-ZYURLJKK.js → loggingContentGenerator-RGVUMUVX.js} +14 -14
- package/chunks/{managed-npm-update-HTHR63EA.js → managed-npm-update-QBAJYCFU.js} +20 -20
- package/chunks/{mcp-I7G2AEWS.js → mcp-OTIZZCPY.js} +27 -27
- package/chunks/{monitor-4R76BCRZ.js → monitor-BV5XF6LL.js} +13 -13
- package/chunks/{nonInteractiveCli-24OQ3VP2.js → nonInteractiveCli-W6MUKDVJ.js} +64 -61
- package/chunks/{notebook-edit-PPSH7FEX.js → notebook-edit-HGBEKGTE.js} +13 -13
- package/chunks/{openaiContentGenerator-K7V5EO7F.js → openaiContentGenerator-NSU3ERBH.js} +8 -8
- package/chunks/{pidfile-TGIUY2GG.js → pidfile-LE3TU4GE.js} +20 -20
- package/chunks/{processUtils-3USXUQWX.js → processUtils-YFBGJK67.js} +2 -2
- package/chunks/{prompt-terminal-ledger-XHVZRXJI.js → prompt-terminal-ledger-4W4W7DSO.js} +21 -21
- package/chunks/{qwenContentGenerator-MPBOQB64.js → qwenContentGenerator-HTA57WFC.js} +16 -16
- package/chunks/{qwenOAuth2-BS5D2LYV.js → qwenOAuth2-KX6LVYQ3.js} +4 -4
- package/chunks/{read-file-R256LDWQ.js → read-file-KHPQ2MB6.js} +2 -2
- package/chunks/{resumeHistoryUtils-S43LTFHD.js → resumeHistoryUtils-K7RV3QBN.js} +23 -23
- package/chunks/{ripGrep-L7HPZ75Y.js → ripGrep-NBBVCMG4.js} +3 -3
- package/chunks/{run-qwen-serve-CTFL5R6U.js → run-qwen-serve-A3JBOZCM.js} +58 -60
- package/chunks/{runtime-FS5TL6P7.js → runtime-7YOU2KJ3.js} +32 -32
- package/chunks/{scheduled-tasks-QXPV3Q35.js → scheduled-tasks-52LXK7LN.js} +25 -25
- package/chunks/{scheduler-EXU5HMVK.js → scheduler-J44M72VM.js} +22 -22
- package/chunks/{send-message-GQKXGMPI.js → send-message-AWKUDJBH.js} +1 -1
- package/chunks/{serve-ITJC7WNN.js → serve-TRC6XJUB.js} +27 -27
- package/chunks/{server-6JQY3PTU.js → server-YPNTJLX2.js} +1296 -822
- package/chunks/{session-PJDEKXD4.js → session-FMMIBFYX.js} +63 -62
- package/chunks/{session-attachments-root-L37ORSST.js → session-attachments-root-LDJMNK7K.js} +20 -20
- package/chunks/{session-pr-refresh-WIFD52YL.js → session-pr-refresh-NLR4EK2J.js} +24 -24
- package/chunks/{settings-LO6J5SAZ.js → settings-A46L577J.js} +26 -26
- package/chunks/{shell-ANAFVYGR.js → shell-Q5LSQPPY.js} +13 -13
- package/chunks/{skill-SHJWKSPH.js → skill-75KPJRCM.js} +2 -2
- package/chunks/{skill-settings-GX3XHZ5Q.js → skill-settings-775YT4YR.js} +26 -26
- package/chunks/{spawnChannel-WE42VBKM.js → spawnChannel-XY73I5CU.js} +20 -20
- package/chunks/{standalone-update-CWDIKJRP.js → standalone-update-L46XXNQ2.js} +22 -22
- package/chunks/{start-opentui-ui-BBHGFOTF.js → start-opentui-ui-WLV43247.js} +1991 -986
- package/chunks/{startInteractiveUI-FQX7LUYP.js → startInteractiveUI-F5DKMLOV.js} +1119 -1478
- package/chunks/{team-create-WKTPCH6D.js → team-create-2PATB77U.js} +13 -13
- package/chunks/{team-plan-approval-Y23DL7WR.js → team-plan-approval-QTANEWOS.js} +13 -13
- package/chunks/{terminal-image-renderer-B646HBDW.js → terminal-image-renderer-OGULCFNF.js} +20 -20
- package/chunks/{theme-manager-BNWESY26.js → theme-manager-CNO3QERP.js} +20 -20
- package/chunks/{tool-search-PVQ5O5Y2.js → tool-search-VXWEOZE7.js} +2 -2
- package/chunks/{total-session-admission-P5Z43KNW.js → total-session-admission-4KAADZPB.js} +24 -24
- package/chunks/{trustedFolders-FH2LT2MZ.js → trustedFolders-PPJSOPOT.js} +21 -21
- package/chunks/{update-relaunch-WOWTKJSN.js → update-relaunch-4PT4MW7B.js} +5 -5
- package/chunks/{updateCheck-3MYFMM35.js → updateCheck-WAVFLWNG.js} +22 -22
- package/chunks/{useAutoAcceptIndicator-Q7ZRRRKO.js → useAutoAcceptIndicator-XNED4NRB.js} +29 -29
- package/chunks/{validateNonInterActiveAuth-MYEWJX3G.js → validateNonInterActiveAuth-J676DUQ2.js} +59 -58
- package/chunks/{version-RO2FPO76.js → version-J6SRRQB2.js} +1 -1
- package/chunks/{web-fetch-QAKY2LUA.js → web-fetch-FMZZYX44.js} +5 -5
- package/chunks/{web-search-XA5Z4ZCD.js → web-search-3G2KXCX5.js} +18 -7
- package/chunks/{workflow-QFIOCMDM.js → workflow-PPZZICQ7.js} +15 -15
- package/chunks/{workspace-providers-status-B2UD7RAG.js → workspace-providers-status-IIYTAQST.js} +29 -29
- package/chunks/{workspace-registration-store-VZLRTI3Q.js → workspace-registration-store-VHCDXAV7.js} +1 -1
- package/chunks/{workspace-registry-GYOGG6TM.js → workspace-registry-I7VQIPS2.js} +24 -24
- package/chunks/{workspace-runtime-coordinator-7KRXGQ4V.js → workspace-runtime-coordinator-DBGNY32G.js} +24 -24
- package/chunks/{workspace-service-DJEYGJE4.js → workspace-service-QSKB2T54.js} +31 -31
- package/chunks/{workspace-skills-status-MOKNESUC.js → workspace-skills-status-T7GPT65J.js} +27 -27
- package/chunks/{workspace-trust-reconciler-AXOSUTQW.js → workspace-trust-reconciler-2PKRDAU4.js} +31 -31
- package/chunks/{write-file-QOYVHAKK.js → write-file-L76CGFTQ.js} +14 -14
- package/chunks/{zoom-image-UCCLGFNC.js → zoom-image-TDJJY2VZ.js} +2 -2
- package/cli.js +13 -13
- package/export-transcript-document.js +126 -122
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-CTstZpXw.js → abnfDiagram-VCTEODGH-DHc6plZn.js} +1 -1
- package/web-shell/assets/{arc-DKW0mbPo.js → arc-BQ9m8TDV.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-DkMpJ42t.js → architectureDiagram-5GKGNRK7-D5ap3oVB.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-7Cp1_4i3.js → blockDiagram-NRAW4CY4-BIbnyNph.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BfaoSlBK.js → c4Diagram-UCG6FXSJ-BRsdx_iG.js} +1 -1
- package/web-shell/assets/channel-uMMdTrYk.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-_n1qzAio.js → chunk-2Q5K7J3B-3lf1fNlx.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-0cira5ZV.js → chunk-5VM5RSS4-DP8VNRc4.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-DseRXSHC.js → chunk-F27PBJKO-DrohDmZ6.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-BehQWin0.js → chunk-G27WJ6UU-UZ2QhSx6.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-B5ftg1Bb.js → chunk-JWPE2WC7-BIMHVcZK.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-D7rnbVdk.js → chunk-LCL6LL3I-izRxdSDd.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-2Bp-Orju.js → chunk-POPQ4Y6H-CXADD4PP.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-CD2goGva.js → chunk-SVP7TREG-B96d8Y_1.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-DzQt-Rji.js → chunk-XXDRQBXY-CF2sVQpv.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-C-BZXSUn.js → cose-bilkent-JH36ORCC-CT6tXVAS.js} +1 -1
- package/web-shell/assets/csv-CX7rUNeC.svg +1 -0
- package/web-shell/assets/{cynefin-OW5HDTMX-BTcvowe1.js → cynefin-OW5HDTMX-X1NS4vtV.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BoUE6K81.js → cynefinDiagram-5FMLGOSQ-DNsKNOT4.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-BHxy9xeB.js → dagre-3AP2YEHR-9-AHKqsb.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-DMiJIvDT.js → diagram-S7CK7UJ4-Bjgms7j6.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-DXV09Aes.js → diagram-UQ7AKVKN-h6bCprbE.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-CocpRomV.js → diagram-VSXAHHWV-4SbQXVLt.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-DL7nqtb4.js → diagram-VX7I27RA-B5gPCzzB.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-CPZ2Jux_.js → diagram-Z3DM3KII-DFJXIA3A.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-BX-eVNsX.js → ebnfDiagram-PWID7BFC-FwyaU7VY.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-CPy_Ir6y.js → erDiagram-SSCWMZ5O-8vJQh2te.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-eknAOte9.js → flowDiagram-A5DVABFB-BzA_1gMN.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-crAxw_t7.js → ganttDiagram-EL5Y4UJY-Co-ABbVX.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-M29pa3Tc.js → gitGraphDiagram-WWUBYQGX-DW_FcyrX.js} +1 -1
- package/web-shell/assets/{index-C9R-iojE.js → index-BbMXfhNG.js} +1 -1
- package/web-shell/assets/{index-B4TLaxWs.js → index-Bu-rZoJ-.js} +462 -454
- package/web-shell/assets/index-CsPwZ1ut.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-XqspXdOU.js → infoDiagram-RXCK75RN-BEgfhUFN.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-C5KFS-7j.js → ishikawaDiagram-5VMMS53U-DCsMxQmc.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-Cc57LVRo.js → journeyDiagram-EYS64GPL-DyIEYoHz.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-C81OG-AI.js → kanban-definition-3QL26DDD-CkxjqCNr.js} +1 -1
- package/web-shell/assets/{layout-CFVu37BB.js → layout-BEWc0Al9.js} +1 -1
- package/web-shell/assets/{linear-ChBxdtWf.js → linear-CNuNxirL.js} +1 -1
- package/web-shell/assets/{mermaid.core-CMLfue0w.js → mermaid.core-DZBre674.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-DFsvJThp.js → mindmap-definition-FBJOCRG2-CpafFz_F.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-BzpRzM4F.js → pegDiagram-XKGWAZYB-DfZqk_dq.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-Cv0Kankl.js → pieDiagram-E7YTZNPT-S0UWXlgC.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-Bh2BJ3Ay.js → quadrantDiagram-AXDQQJYC-dd37_Ohj.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-y8rNDdDS.js → railroadDiagram-O6MQD6OU-CH8NJZ7u.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C0m2DKJ_.js → requirementDiagram-EFPCY7ZU-CFdqWYih.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-BzdGnSF4.js → sankeyDiagram-P5KCCOFB-CsddcEGD.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DPzAVmzz.js → sequenceDiagram-WJ2MYXX4-BZ270mGw.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-LcHG28Zh.js → sizeCapture-X5ZJPWSS-CGaS4DBV.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-C1Bzy3IT.js → stateDiagram-HBIQ2CUA-COpIzMu6.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-Bftk8V64.js → swimlanes-XN3QIQJK-CMF889m3.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-BfXHcN1A.js → timeline-definition-24CTP7MA-BelnxYz5.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-DRSlI9-V.js → vennDiagram-4TSXK5OY-CU-NRqIB.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CaLmqGau.js → wardleyDiagram-VM6X3IG4-CDNKqWh-.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-8lgUT6e8.js → xychartDiagram-S5SC5T6Z-CLqguL5D.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-3UMWOKJC.js +0 -78
- package/chunks/chunk-IQAFKVXS.js +0 -22
- package/web-shell/assets/channel-CQx7VSAp.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-C-Uz8hHk.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-C-Uz8hHk.js +0 -1
- package/web-shell/assets/index-CCrkEbzz.css +0 -36
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-LuuL5byY.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-COmnNq8s.js +0 -8
|
@@ -75,7 +75,7 @@ import {
|
|
|
75
75
|
clampActiveWorkIntervalMs,
|
|
76
76
|
isValidTrustedModelPrompt,
|
|
77
77
|
sessionCloseDrainBudgetMs
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-PSPAM24S.js";
|
|
79
79
|
import {
|
|
80
80
|
BranchWhilePromptActiveError,
|
|
81
81
|
BridgeChannelQuarantinedError,
|
|
@@ -94,12 +94,13 @@ import {
|
|
|
94
94
|
SessionBusyError,
|
|
95
95
|
SessionLimitExceededError,
|
|
96
96
|
SessionNotFoundError,
|
|
97
|
+
SessionResetPendingError,
|
|
97
98
|
SessionShellClientRequiredError,
|
|
98
99
|
SessionShellDisabledError,
|
|
99
100
|
StandaloneSessionSpawnError,
|
|
100
101
|
WorkspaceMismatchError,
|
|
101
102
|
isNotCurrentlyGeneratingCancelError
|
|
102
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-FAWTMDX7.js";
|
|
103
104
|
import {
|
|
104
105
|
canonicalizeWorkspace,
|
|
105
106
|
translateAndCheckAbsoluteWorkspacePath
|
|
@@ -147,7 +148,7 @@ import {
|
|
|
147
148
|
canonicalSessionPrUrl,
|
|
148
149
|
normalizeTurnResultError,
|
|
149
150
|
toSessionPrInfo
|
|
150
|
-
} from "./chunk-
|
|
151
|
+
} from "./chunk-PDUMGZ2P.js";
|
|
151
152
|
import {
|
|
152
153
|
isUnverifiableIdentityError,
|
|
153
154
|
openNoFollow
|
|
@@ -4245,7 +4246,7 @@ var BridgeClient = class {
|
|
|
4245
4246
|
v: ACTIVE_WORK_HEARTBEAT_VERSION,
|
|
4246
4247
|
seq: snapshot.seq,
|
|
4247
4248
|
sessions: snapshot.sessions.filter(
|
|
4248
|
-
(session) => this.ownsSession(session.sessionId)
|
|
4249
|
+
(session) => this.ownsSession(session.sessionId) || this.hasSessionSpawnInFlight()
|
|
4249
4250
|
)
|
|
4250
4251
|
});
|
|
4251
4252
|
}
|
|
@@ -7843,6 +7844,10 @@ function getChannelPromptDisplayText(entry, displayText) {
|
|
|
7843
7844
|
return entry.sourceType === "channel" && typeof displayText === "string" ? displayText : void 0;
|
|
7844
7845
|
}
|
|
7845
7846
|
__name(getChannelPromptDisplayText, "getChannelPromptDisplayText");
|
|
7847
|
+
function hasInFlightPromptActivity(entry) {
|
|
7848
|
+
return entry.promptActive || entry.goalTurnActive === true || (entry.deferredRestoreAskUserQuestionPrompts?.size ?? 0) > 0;
|
|
7849
|
+
}
|
|
7850
|
+
__name(hasInFlightPromptActivity, "hasInFlightPromptActivity");
|
|
7846
7851
|
function isDefinitiveAcpRequestError(error) {
|
|
7847
7852
|
if (error instanceof RequestError) return true;
|
|
7848
7853
|
if (!isRecord3(error)) return false;
|
|
@@ -9164,6 +9169,20 @@ function createAcpSessionBridge(opts) {
|
|
|
9164
9169
|
return entryHasLocalWork(entry) || childReportsHeldWork(entry) || childWorkIsUnknown(entry);
|
|
9165
9170
|
}
|
|
9166
9171
|
__name(entryHasActiveWork, "entryHasActiveWork");
|
|
9172
|
+
function entryActiveWorkState(entry) {
|
|
9173
|
+
if (entryHasLocalWork(entry) || childReportsHeldWork(entry)) {
|
|
9174
|
+
return "active";
|
|
9175
|
+
}
|
|
9176
|
+
const capability = channelInfoForEntry(entry)?.activeWork;
|
|
9177
|
+
if (!capability) return "unsupported";
|
|
9178
|
+
if (childWorkIsUnknown(entry) || ACTIVE_WORK_HOLD_CATEGORIES.some(
|
|
9179
|
+
(category) => !capability.categories.includes(category)
|
|
9180
|
+
)) {
|
|
9181
|
+
return "unknown";
|
|
9182
|
+
}
|
|
9183
|
+
return "idle";
|
|
9184
|
+
}
|
|
9185
|
+
__name(entryActiveWorkState, "entryActiveWorkState");
|
|
9167
9186
|
function entryIsAutoCloseCandidate(entry) {
|
|
9168
9187
|
if (byId.get(entry.sessionId) !== entry) return false;
|
|
9169
9188
|
if (isClosingOrAuthorizingClose(entry)) return false;
|
|
@@ -9345,6 +9364,7 @@ function createAcpSessionBridge(opts) {
|
|
|
9345
9364
|
for (const hold of session.holds) holds.set(hold.id, hold.category);
|
|
9346
9365
|
reported.set(session.sessionId, holds);
|
|
9347
9366
|
}
|
|
9367
|
+
info.activeWork.snapshot = { receivedAt: now, sessions: reported };
|
|
9348
9368
|
for (const sessionId of Array.from(info.sessionIds)) {
|
|
9349
9369
|
const entry = byId.get(sessionId);
|
|
9350
9370
|
if (!entry || entry.channel !== info.channel) continue;
|
|
@@ -9750,7 +9770,8 @@ function createAcpSessionBridge(opts) {
|
|
|
9750
9770
|
...entry.sourceType ? { sourceType: entry.sourceType } : {},
|
|
9751
9771
|
...entry.sourceId !== void 0 ? { sourceId: entry.sourceId } : {},
|
|
9752
9772
|
clientCount: entry.clientIds.size,
|
|
9753
|
-
hasActivePrompt: entry
|
|
9773
|
+
hasActivePrompt: hasInFlightPromptActivity(entry),
|
|
9774
|
+
activeWorkState: entryActiveWorkState(entry),
|
|
9754
9775
|
isWaitingForPermission,
|
|
9755
9776
|
isWaitingForUserQuestion,
|
|
9756
9777
|
pendingInteractionCount: entry.pendingInteractions.size,
|
|
@@ -9799,6 +9820,13 @@ function createAcpSessionBridge(opts) {
|
|
|
9799
9820
|
const inFlightSessionIdReservations = /* @__PURE__ */ new Map();
|
|
9800
9821
|
const abandonedSessionIdReservations = /* @__PURE__ */ new Set();
|
|
9801
9822
|
const inFlightRestores = /* @__PURE__ */ new Map();
|
|
9823
|
+
const resetPendingSessions = /* @__PURE__ */ new Set();
|
|
9824
|
+
function assertSessionResetNotPending(sessionId) {
|
|
9825
|
+
if (resetPendingSessions.has(sessionId)) {
|
|
9826
|
+
throw new SessionResetPendingError(sessionId);
|
|
9827
|
+
}
|
|
9828
|
+
}
|
|
9829
|
+
__name(assertSessionResetNotPending, "assertSessionResetNotPending");
|
|
9802
9830
|
async function settleReleasedRuntimeWork(context, armIdleTimer = true) {
|
|
9803
9831
|
for (const ci2 of Array.from(aliveChannels)) {
|
|
9804
9832
|
await reapPendingEmptyChannel(ci2);
|
|
@@ -11595,6 +11623,8 @@ function createAcpSessionBridge(opts) {
|
|
|
11595
11623
|
}
|
|
11596
11624
|
}, "reconcileAfterRoundtrip");
|
|
11597
11625
|
const createSessionEntry = /* @__PURE__ */ __name((ci, sessionId, workspaceCwd, events = createSessionEventBus(sessionId), options = {}) => {
|
|
11626
|
+
const childSnapshot = ci.activeWork?.snapshot;
|
|
11627
|
+
const reportedChildHolds = childSnapshot?.sessions.get(sessionId);
|
|
11598
11628
|
const entry = {
|
|
11599
11629
|
sessionId,
|
|
11600
11630
|
workspaceCwd,
|
|
@@ -11650,8 +11680,8 @@ function createAcpSessionBridge(opts) {
|
|
|
11650
11680
|
attachRefs: /* @__PURE__ */ new Map(),
|
|
11651
11681
|
spawnOwnerWantedKill: false,
|
|
11652
11682
|
promptActive: false,
|
|
11653
|
-
childHolds: null,
|
|
11654
|
-
childHoldsAt: null,
|
|
11683
|
+
childHolds: reportedChildHolds ?? null,
|
|
11684
|
+
childHoldsAt: childSnapshot && reportedChildHolds !== void 0 ? childSnapshot.receivedAt : null,
|
|
11655
11685
|
activeWorkCloseInFlight: false,
|
|
11656
11686
|
activeWorkCloseFailures: 0,
|
|
11657
11687
|
activeWorkCloseRetryAt: null,
|
|
@@ -12326,7 +12356,11 @@ function createAcpSessionBridge(opts) {
|
|
|
12326
12356
|
attached: true,
|
|
12327
12357
|
clientId,
|
|
12328
12358
|
createdAt: entry.createdAt,
|
|
12329
|
-
|
|
12359
|
+
// Unlike the owner-side restore responses, the waiter has no
|
|
12360
|
+
// `restorePromptAdmitted` term; a prompt the owner parked while the
|
|
12361
|
+
// restore was in flight must still read as active here so the
|
|
12362
|
+
// waiter's caller never relocates or resets under a deferred prompt.
|
|
12363
|
+
hasActivePrompt: hasInFlightPromptActivity(entry),
|
|
12330
12364
|
...entry.sourceType ? { sourceType: entry.sourceType } : {},
|
|
12331
12365
|
...entry.sourceId !== void 0 ? { sourceId: entry.sourceId } : {},
|
|
12332
12366
|
...sourcePersisted !== void 0 ? { sourcePersisted } : {},
|
|
@@ -13281,7 +13315,7 @@ function createAcpSessionBridge(opts) {
|
|
|
13281
13315
|
attachCount: entry.attachCount,
|
|
13282
13316
|
pendingPromptCount: entry.pendingPromptCount,
|
|
13283
13317
|
pendingPermissionCount: entry.pendingPermissionIds.size,
|
|
13284
|
-
hasActivePrompt: entry
|
|
13318
|
+
hasActivePrompt: hasInFlightPromptActivity(entry),
|
|
13285
13319
|
lastEventId: entry.events.lastEventId,
|
|
13286
13320
|
...entry.sessionLastSeenAt !== void 0 ? { lastSeenAt: entry.sessionLastSeenAt } : {},
|
|
13287
13321
|
...entry.currentModelId ? { currentModelId: entry.currentModelId } : {},
|
|
@@ -13694,6 +13728,9 @@ function createAcpSessionBridge(opts) {
|
|
|
13694
13728
|
)
|
|
13695
13729
|
);
|
|
13696
13730
|
}
|
|
13731
|
+
if (resetPendingSessions.has(sessionId)) {
|
|
13732
|
+
throw new SessionResetPendingError(sessionId);
|
|
13733
|
+
}
|
|
13697
13734
|
if (isReservedStandaloneSessionSourceType(entry.sourceType) && entry.managedConversationBinding?.released !== true) {
|
|
13698
13735
|
return Promise.reject(standaloneWorkingDirectoryMissingError());
|
|
13699
13736
|
}
|
|
@@ -14354,6 +14391,7 @@ function createAcpSessionBridge(opts) {
|
|
|
14354
14391
|
if (context?.clientId !== void 0) {
|
|
14355
14392
|
resolveTrustedClientId(entry, context.clientId);
|
|
14356
14393
|
}
|
|
14394
|
+
assertSessionResetNotPending(sessionId);
|
|
14357
14395
|
const concurrentSideTask = isSideTask && entry.promptActive;
|
|
14358
14396
|
if (!isSideTask && (entry.pendingPromptCount > 0 || entry.promptActive)) {
|
|
14359
14397
|
throw new BranchWhilePromptActiveError(sessionId);
|
|
@@ -14591,6 +14629,7 @@ function createAcpSessionBridge(opts) {
|
|
|
14591
14629
|
entry,
|
|
14592
14630
|
context?.clientId
|
|
14593
14631
|
);
|
|
14632
|
+
assertSessionResetNotPending(sessionId);
|
|
14594
14633
|
const cdPromise = entry.promptQueue.then(async () => {
|
|
14595
14634
|
const ci = assertLivePromptEntry(sessionId, entry);
|
|
14596
14635
|
runtimeOperationReservations++;
|
|
@@ -14773,6 +14812,39 @@ function createAcpSessionBridge(opts) {
|
|
|
14773
14812
|
markSessionCatalogChanged();
|
|
14774
14813
|
}
|
|
14775
14814
|
},
|
|
14815
|
+
clearSessionWorktree(sessionId) {
|
|
14816
|
+
const entry = byId.get(sessionId);
|
|
14817
|
+
if (entry?.worktree !== void 0) {
|
|
14818
|
+
delete entry.worktree;
|
|
14819
|
+
markSessionCatalogChanged();
|
|
14820
|
+
}
|
|
14821
|
+
},
|
|
14822
|
+
setSessionResetPending(sessionId) {
|
|
14823
|
+
resetPendingSessions.add(sessionId);
|
|
14824
|
+
return byId.has(sessionId);
|
|
14825
|
+
},
|
|
14826
|
+
clearSessionResetPending(sessionId) {
|
|
14827
|
+
resetPendingSessions.delete(sessionId);
|
|
14828
|
+
},
|
|
14829
|
+
async severSessionClients(sessionId) {
|
|
14830
|
+
const entry = byId.get(sessionId);
|
|
14831
|
+
if (!entry) return true;
|
|
14832
|
+
const registrations = /* @__PURE__ */ __name(() => {
|
|
14833
|
+
let total = 0;
|
|
14834
|
+
for (const count of entry.clientIds.values()) total += count;
|
|
14835
|
+
return total;
|
|
14836
|
+
}, "registrations");
|
|
14837
|
+
let outstanding = registrations();
|
|
14838
|
+
while (outstanding > 0 && byId.get(sessionId) === entry) {
|
|
14839
|
+
for (const clientId of [...entry.clientIds.keys()]) {
|
|
14840
|
+
await bridgeApi.detachClient(sessionId, clientId);
|
|
14841
|
+
}
|
|
14842
|
+
const remaining = registrations();
|
|
14843
|
+
if (remaining >= outstanding) break;
|
|
14844
|
+
outstanding = remaining;
|
|
14845
|
+
}
|
|
14846
|
+
return !byId.has(sessionId);
|
|
14847
|
+
},
|
|
14776
14848
|
fireDeferredRestoreAskUserQuestionPrompt(sessionId, clientId) {
|
|
14777
14849
|
if (clientId === void 0) return false;
|
|
14778
14850
|
const entry = byId.get(sessionId);
|
|
@@ -15354,6 +15426,7 @@ function createAcpSessionBridge(opts) {
|
|
|
15354
15426
|
const entry = byId.get(sessionId);
|
|
15355
15427
|
if (!entry) throw new SessionNotFoundError(sessionId);
|
|
15356
15428
|
resolveTrustedClientId(entry, context?.clientId);
|
|
15429
|
+
assertSessionResetNotPending(sessionId);
|
|
15357
15430
|
return requestSessionStatus(sessionId, SERVE_CONTROL_EXT_METHODS.sessionWorkflowTaskAction, {
|
|
15358
15431
|
taskId,
|
|
15359
15432
|
action
|
|
@@ -15365,6 +15438,7 @@ function createAcpSessionBridge(opts) {
|
|
|
15365
15438
|
const info = channelInfoForEntry(entry);
|
|
15366
15439
|
if (!info || info.isDying) throw new SessionNotFoundError(sessionId);
|
|
15367
15440
|
resolveTrustedClientId(entry, context?.clientId);
|
|
15441
|
+
assertSessionResetNotPending(sessionId);
|
|
15368
15442
|
return requestSessionStatus(
|
|
15369
15443
|
sessionId,
|
|
15370
15444
|
SERVE_CONTROL_EXT_METHODS.sessionGoalControl,
|
|
@@ -16250,6 +16324,7 @@ function createAcpSessionBridge(opts) {
|
|
|
16250
16324
|
if (!trimmed) {
|
|
16251
16325
|
throw new Error("Fork directive is required");
|
|
16252
16326
|
}
|
|
16327
|
+
assertSessionResetNotPending(sessionId);
|
|
16253
16328
|
if (entry.pendingPromptCount > 0 || entry.promptActive) {
|
|
16254
16329
|
throw new SessionBusyError(
|
|
16255
16330
|
sessionId,
|
|
@@ -16319,6 +16394,7 @@ function createAcpSessionBridge(opts) {
|
|
|
16319
16394
|
entry,
|
|
16320
16395
|
context.clientId
|
|
16321
16396
|
);
|
|
16397
|
+
assertSessionResetNotPending(sessionId);
|
|
16322
16398
|
if (signal?.aborted) {
|
|
16323
16399
|
return { exitCode: null, output: "", aborted: true };
|
|
16324
16400
|
}
|
|
@@ -16461,6 +16537,7 @@ function createAcpSessionBridge(opts) {
|
|
|
16461
16537
|
entry,
|
|
16462
16538
|
context?.clientId
|
|
16463
16539
|
);
|
|
16540
|
+
assertSessionResetNotPending(sessionId);
|
|
16464
16541
|
if (entry.pendingPromptCount > 0 || entry.promptActive) {
|
|
16465
16542
|
throw new SessionBusyError(
|
|
16466
16543
|
sessionId,
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
appEvents
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-DXQ6Z7AH.js";
|
|
6
6
|
import {
|
|
7
7
|
assembleMcpServers,
|
|
8
8
|
getPendingGatedMcpServers,
|
|
9
9
|
getPromptableMcpServers
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-TGC4264Q.js";
|
|
11
11
|
import {
|
|
12
12
|
getMCPServerStatus
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-6QV7Z74P.js";
|
|
14
14
|
import {
|
|
15
15
|
require_fast_deep_equal
|
|
16
16
|
} from "./chunk-MWIO7MF6.js";
|
|
@@ -0,0 +1,82 @@
|
|
|
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/serve/conversations/conversation-runtime-errors.ts
|
|
11
|
+
init_esbuild_shims();
|
|
12
|
+
var DEFAULT_MESSAGES = {
|
|
13
|
+
conversation_runtime_in_use: "The Conversations runtime is owned by another daemon.",
|
|
14
|
+
conversation_runtime_unavailable: "The Conversations runtime is temporarily unavailable.",
|
|
15
|
+
conversation_root_compromised: "The Conversations root could not be verified.",
|
|
16
|
+
conversation_runtime_ownership_compromised: "The Conversations runtime ownership state could not be verified."
|
|
17
|
+
};
|
|
18
|
+
var ConversationRuntimeOwnershipError = class extends Error {
|
|
19
|
+
constructor(code, retryable, options) {
|
|
20
|
+
super(DEFAULT_MESSAGES[code], options);
|
|
21
|
+
this.code = code;
|
|
22
|
+
this.retryable = retryable;
|
|
23
|
+
this.name = "ConversationRuntimeOwnershipError";
|
|
24
|
+
}
|
|
25
|
+
static {
|
|
26
|
+
__name(this, "ConversationRuntimeOwnershipError");
|
|
27
|
+
}
|
|
28
|
+
status = 503;
|
|
29
|
+
};
|
|
30
|
+
function conversationRuntimeInUseError() {
|
|
31
|
+
return new ConversationRuntimeOwnershipError(
|
|
32
|
+
"conversation_runtime_in_use",
|
|
33
|
+
true
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
__name(conversationRuntimeInUseError, "conversationRuntimeInUseError");
|
|
37
|
+
function conversationRuntimeUnavailableError(cause) {
|
|
38
|
+
return new ConversationRuntimeOwnershipError(
|
|
39
|
+
"conversation_runtime_unavailable",
|
|
40
|
+
true,
|
|
41
|
+
{ cause }
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
__name(conversationRuntimeUnavailableError, "conversationRuntimeUnavailableError");
|
|
45
|
+
function conversationRuntimeOwnershipCompromisedError(cause) {
|
|
46
|
+
return new ConversationRuntimeOwnershipError(
|
|
47
|
+
"conversation_runtime_ownership_compromised",
|
|
48
|
+
false,
|
|
49
|
+
{ cause }
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
__name(conversationRuntimeOwnershipCompromisedError, "conversationRuntimeOwnershipCompromisedError");
|
|
53
|
+
function conversationRootCompromisedError(cause) {
|
|
54
|
+
return new ConversationRuntimeOwnershipError(
|
|
55
|
+
"conversation_root_compromised",
|
|
56
|
+
false,
|
|
57
|
+
{ cause }
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
__name(conversationRootCompromisedError, "conversationRootCompromisedError");
|
|
61
|
+
|
|
62
|
+
// packages/cli/src/serve/live/types.ts
|
|
63
|
+
init_esbuild_shims();
|
|
64
|
+
var LIVE_HOST_PROTOCOL_VERSION = 7;
|
|
65
|
+
var LIVE_HOST_BUNDLE_ID = "com.alibaba.qwen-code.live-host";
|
|
66
|
+
var LIVE_INPUT_AUDIO_EPOCH_BYTES = 8;
|
|
67
|
+
|
|
68
|
+
export {
|
|
69
|
+
ConversationRuntimeOwnershipError,
|
|
70
|
+
conversationRuntimeInUseError,
|
|
71
|
+
conversationRuntimeUnavailableError,
|
|
72
|
+
conversationRuntimeOwnershipCompromisedError,
|
|
73
|
+
conversationRootCompromisedError,
|
|
74
|
+
LIVE_HOST_PROTOCOL_VERSION,
|
|
75
|
+
LIVE_HOST_BUNDLE_ID,
|
|
76
|
+
LIVE_INPUT_AUDIO_EPOCH_BYTES
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* @license
|
|
80
|
+
* Copyright 2026 Qwen Team
|
|
81
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
82
|
+
*/
|
|
@@ -10,11 +10,12 @@ import {
|
|
|
10
10
|
DEFAULT_TOOL_OUTPUT_BATCH_BUDGET,
|
|
11
11
|
DEFAULT_TOOL_RESULTS_TOTAL_CHARS_THRESHOLD,
|
|
12
12
|
DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES,
|
|
13
|
-
DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD
|
|
14
|
-
|
|
13
|
+
DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD,
|
|
14
|
+
GOAL_CHECKPOINT_TIMEOUT_SECONDS_CAP
|
|
15
|
+
} from "./chunk-PDUMGZ2P.js";
|
|
15
16
|
import {
|
|
16
17
|
REASONING_EFFORT_TIERS
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-6YEOCHSE.js";
|
|
18
19
|
import {
|
|
19
20
|
DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH,
|
|
20
21
|
SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT
|
|
@@ -1249,6 +1250,11 @@ var SETTINGS_SCHEMA = {
|
|
|
1249
1250
|
description: "Requires `telemetry.enabled: true`. Inject W3C `traceparent` on outbound `fetch` requests (LLM SDK calls, MCP StreamableHTTP, WebFetch, ...) AND as a `TRACEPARENT` environment variable in shell child processes (Bash tool, hooks, monitor). When enabled, any existing `TRACEPARENT` in the parent environment is overwritten with qwen-code's own trace context. Default: false \u2014 trace context stays internal to the operator's OTLP collector. Set true when you want cross-process trace stitching with an OTel-aware LLM provider (e.g. ARMS+DashScope) or need shell scripts / CLI tools to participate in distributed tracing.",
|
|
1250
1251
|
type: "boolean",
|
|
1251
1252
|
default: false
|
|
1253
|
+
},
|
|
1254
|
+
allowDynamicHeaderValues: {
|
|
1255
|
+
description: "SECURITY-RELEVANT. Allow `modelProviders[].generationConfig.customHeaders` values to contain runtime placeholders \u2014 currently `${session_id}` \u2014 expanded per request instead of frozen at client construction. Default false: a value containing a placeholder is dropped rather than sent. Enable when a gateway requires a stable per-conversation identifier (e.g. OpenCode Go requires `x-opencode-session`). Which hosts receive the value and what the header is called are decided by the provider entry you attach the header to; this switch only decides whether `${session_id}` may be expanded from live session state and does not identify which settings source supplied the header.",
|
|
1256
|
+
type: "boolean",
|
|
1257
|
+
default: false
|
|
1252
1258
|
}
|
|
1253
1259
|
},
|
|
1254
1260
|
additionalProperties: false
|
|
@@ -1405,6 +1411,17 @@ var SETTINGS_SCHEMA = {
|
|
|
1405
1411
|
description: "Autonomous spend window armed on each new Goal, in tokens as counted by the Goal meter (totalTokenCount summed over every model call the Goal makes in its own turns; side queries and checkpoint verification are not metered). When a Goal spends its window it gets one wind-down turn to hand off, then stops until you resume it, which arms another window. Unset uses the built-in default of 30,000,000; -1 means unlimited. Zero, values above 300,000,000 (10x the default, a typo guard), other negative, fractional, or non-number values are rejected at startup.",
|
|
1406
1412
|
showInDialog: false
|
|
1407
1413
|
},
|
|
1414
|
+
goalCheckpointTimeoutSeconds: {
|
|
1415
|
+
type: "integer",
|
|
1416
|
+
label: "Goal Checkpoint Timeout (seconds)",
|
|
1417
|
+
category: "Model",
|
|
1418
|
+
requiresRestart: false,
|
|
1419
|
+
default: void 0,
|
|
1420
|
+
minimum: 1,
|
|
1421
|
+
maximum: GOAL_CHECKPOINT_TIMEOUT_SECONDS_CAP,
|
|
1422
|
+
description: "Ceiling on one Goal evidence-checkpoint call, in seconds. A long Goal periodically compresses its evidence into checkpoint claims with a side model call; a call that does not finish in time is abandoned as an inconclusive check \u2014 the checkpoint stall streak is preserved rather than incremented \u2014 and a later turn retries it. Unset uses the built-in default of 180. Must be an integer between 1 and 900; other values are rejected at startup. The call is streamed, so the per-request transport timeout (model.generationConfig.timeout, default 120 s) bounds only connect and first response, and values above 900 are rejected because past the default stream lifetime guard that guard, not this setting, ends the call. The 900 ceiling is fixed: raising QWEN_STREAM_MAX_LIFETIME_MS does not lift it.",
|
|
1423
|
+
showInDialog: false
|
|
1424
|
+
},
|
|
1408
1425
|
maxToolCalls: {
|
|
1409
1426
|
type: "number",
|
|
1410
1427
|
label: "Max Tool Calls",
|
|
@@ -369,7 +369,7 @@ ${taskManagementToolGuidance}- **Parallel Tool Calls:** You can call multiple to
|
|
|
369
369
|
- **Background Processes:** Use background execution with \`is_background: true\` for commands that are unlikely to stop on their own, e.g. \`node server.js\`. Do not append a trailing \`&\` when using the shell tool's managed background mode. If unsure, follow the active interaction mode's question guidance.
|
|
370
370
|
- **Interactive Commands:** Try to avoid shell commands that are likely to require user interaction (e.g. \`git rebase -i\`). Use non-interactive versions of commands (e.g. \`npm init -y\` instead of \`npm init\`) when available, and otherwise remind the user that interactive shell commands are not supported and may cause hangs until canceled by the user.
|
|
371
371
|
- **Questions:** ${interaction.questions}
|
|
372
|
-
- **Subagent Delegation:** Use the '${ToolNames.AGENT}' tool with specialized agents when the task at hand matches the agent's description. Subagents are valuable for parallelizing independent queries or for protecting the main context window from excessive results, but they should not be used excessively when not needed. Importantly, avoid duplicating work that subagents are already doing - if you delegate research to a subagent, do not also perform the same searches yourself.
|
|
372
|
+
- **Subagent Delegation:** Use the '${ToolNames.AGENT}' tool with specialized agents when the task at hand matches the agent's description. Subagents are valuable for parallelizing independent queries or for protecting the main context window from excessive results, but they should not be used excessively when not needed. Importantly, avoid duplicating work that subagents are already doing - if you delegate research to a subagent, do not also perform the same searches yourself. A background subagent's result arrives as a task notification in a later turn; while waiting, do not read its transcript, predict its findings, or launch a replacement for the same task.
|
|
373
373
|
- **Codebase Search:** For simple, directed codebase searches (e.g. for a specific file/class/function) use the '${ToolNames.GREP}' or '${ToolNames.GLOB}' tools directly. For broader codebase exploration and deep research, use the '${ToolNames.AGENT}' tool with subagent_type=Explore. This is slower than using '${ToolNames.GREP}' or '${ToolNames.GLOB}' directly, so use this only when a simple, directed search proves to be insufficient or when your task will clearly require more than 3 queries.
|
|
374
374
|
- **Respect Tool Decisions:** Tool permissions are enforced by the runtime. If a call is denied or canceled, respect that decision and do _not_ try the same action through another path. Retry only if the user subsequently requests that action.
|
|
375
375
|
|
|
@@ -2,20 +2,21 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
functionResponsePartsToString
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ZNO5BUAD.js";
|
|
6
6
|
import {
|
|
7
7
|
observeHeadlessToolResultProjection,
|
|
8
8
|
observeHeadlessToolResultWire,
|
|
9
9
|
projectJsonStringToByteBudget
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-TWWS7XUW.js";
|
|
11
11
|
import {
|
|
12
|
+
createNotStartedToolErrorResponse,
|
|
12
13
|
parseAndFormatApiError,
|
|
13
14
|
toolResultBoundaryArtifact
|
|
14
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-PDUMGZ2P.js";
|
|
15
16
|
import {
|
|
16
17
|
formatVisionBridgeNoticeDisplay,
|
|
17
18
|
isVisionBridgeNoticeDisplay
|
|
18
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-6QV7Z74P.js";
|
|
19
20
|
import {
|
|
20
21
|
init_esbuild_shims
|
|
21
22
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -378,6 +379,49 @@ var BaseJsonOutputAdapter = class {
|
|
|
378
379
|
startAssistantMessage() {
|
|
379
380
|
this.startAssistantMessageInternal(this.mainAgentMessageState);
|
|
380
381
|
}
|
|
382
|
+
/**
|
|
383
|
+
* Starts a replacement provider attempt. Continuation retries keep the
|
|
384
|
+
* already-delivered text; fresh retries and fallbacks discard the pending
|
|
385
|
+
* assistant state. Streaming adapters override this to pair any tool_use
|
|
386
|
+
* frames that are already on the wire before resetting.
|
|
387
|
+
*/
|
|
388
|
+
restartAttempt(preserveText, discardedToolCalls) {
|
|
389
|
+
if (preserveText) {
|
|
390
|
+
const discardedIds = new Set(
|
|
391
|
+
discardedToolCalls.map((request) => request.callId)
|
|
392
|
+
);
|
|
393
|
+
if (discardedIds.size > 0) {
|
|
394
|
+
const state = this.mainAgentMessageState;
|
|
395
|
+
const retainedBlocks = [];
|
|
396
|
+
const retainedOpenBlocks = /* @__PURE__ */ new Set();
|
|
397
|
+
for (const [index, block] of state.blocks.entries()) {
|
|
398
|
+
if (block.type === "tool_use" && discardedIds.has(block.id)) {
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
401
|
+
const retainedIndex = retainedBlocks.length;
|
|
402
|
+
retainedBlocks.push(block);
|
|
403
|
+
if (state.openBlocks.has(index)) {
|
|
404
|
+
retainedOpenBlocks.add(retainedIndex);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
state.blocks = retainedBlocks;
|
|
408
|
+
state.openBlocks = retainedOpenBlocks;
|
|
409
|
+
state.currentBlockType = retainedBlocks.at(-1)?.type ?? null;
|
|
410
|
+
state.messageStarted = retainedBlocks.length > 0;
|
|
411
|
+
}
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
this.startAssistantMessageInternal(this.mainAgentMessageState);
|
|
415
|
+
}
|
|
416
|
+
emitDiscardedAttemptToolResults(discardedToolCalls) {
|
|
417
|
+
const message = "Skipped because the provider attempt was retried before execution.";
|
|
418
|
+
for (const request of discardedToolCalls) {
|
|
419
|
+
this.emitToolResult(
|
|
420
|
+
request,
|
|
421
|
+
createNotStartedToolErrorResponse(request, message)
|
|
422
|
+
);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
381
425
|
/**
|
|
382
426
|
* Processes an LLM stream event.
|
|
383
427
|
* This is a shared implementation used by both streaming and non-streaming adapters.
|
|
@@ -1072,6 +1116,16 @@ var StreamJsonOutputAdapter = class extends BaseJsonOutputAdapter {
|
|
|
1072
1116
|
this.mainTurnMessageStartEmitted = false;
|
|
1073
1117
|
super.startAssistantMessage();
|
|
1074
1118
|
}
|
|
1119
|
+
restartAttempt(preserveText, discardedToolCalls) {
|
|
1120
|
+
if (preserveText && discardedToolCalls.length === 0) {
|
|
1121
|
+
return;
|
|
1122
|
+
}
|
|
1123
|
+
if (this.mainAgentMessageState.messageStarted && !this.mainAgentMessageState.finalized) {
|
|
1124
|
+
this.finalizeAssistantMessage();
|
|
1125
|
+
}
|
|
1126
|
+
this.emitDiscardedAttemptToolResults(discardedToolCalls);
|
|
1127
|
+
super.restartAttempt(false, discardedToolCalls);
|
|
1128
|
+
}
|
|
1075
1129
|
finalizeAssistantMessage() {
|
|
1076
1130
|
const message = this.finalizeAssistantMessageInternal(
|
|
1077
1131
|
this.mainAgentMessageState,
|
|
@@ -27,10 +27,10 @@ import {
|
|
|
27
27
|
} from "./chunk-3VUENPWF.js";
|
|
28
28
|
import {
|
|
29
29
|
loadSettings
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-66JBCTJF.js";
|
|
31
31
|
import {
|
|
32
32
|
MCP_BUDGET_WARN_FRACTION
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-PDUMGZ2P.js";
|
|
34
34
|
import {
|
|
35
35
|
parsePositiveIntegerEnv
|
|
36
36
|
} from "./chunk-6PVPNMXU.js";
|
|
@@ -447,7 +447,7 @@ var serveCommand = {
|
|
|
447
447
|
delete process.env[EXTERNAL_TOOL_GUARD_TOKEN_ENV];
|
|
448
448
|
const openWithAuth = argv["open-with-auth"];
|
|
449
449
|
const open = argv.open || openWithAuth;
|
|
450
|
-
const { runQwenServe } = await import("./run-qwen-serve-
|
|
450
|
+
const { runQwenServe } = await import("./run-qwen-serve-A3JBOZCM.js");
|
|
451
451
|
try {
|
|
452
452
|
const serveOptions = {
|
|
453
453
|
port: argv.port,
|
|
@@ -146,12 +146,49 @@ init_esbuild_shims();
|
|
|
146
146
|
var RATE_LIMIT_ERROR_CODES = /* @__PURE__ */ new Set([429, 503, 1302, 1305]);
|
|
147
147
|
function isRateLimitError(error, extraCodes) {
|
|
148
148
|
const code = getErrorCode(error);
|
|
149
|
-
if (code === null) return
|
|
149
|
+
if (code === null) return isStatuslessThrottle(error);
|
|
150
150
|
if (RATE_LIMIT_ERROR_CODES.has(code)) return true;
|
|
151
151
|
if (extraCodes && extraCodes.includes(code)) return true;
|
|
152
152
|
return false;
|
|
153
153
|
}
|
|
154
154
|
__name(isRateLimitError, "isRateLimitError");
|
|
155
|
+
function isStatuslessThrottle(error) {
|
|
156
|
+
for (const payload of [error, ...getJsonPayloads(error)]) {
|
|
157
|
+
const selected = providerErrorSource(payload);
|
|
158
|
+
if (!selected) continue;
|
|
159
|
+
const { source } = selected;
|
|
160
|
+
const { type, message } = source;
|
|
161
|
+
if (type === "rate_limit_error" || type === "overloaded_error") return true;
|
|
162
|
+
if (type !== "invalid_request_error" || typeof message !== "string")
|
|
163
|
+
continue;
|
|
164
|
+
const detail = decodeProviderMessage(message)?.["message"] ?? message;
|
|
165
|
+
if (typeof detail === "string" && /^too many requests\b/i.test(detail.trim()) && /\b(?:wait|try(?:ing)? again)\b/i.test(detail)) {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
__name(isStatuslessThrottle, "isStatuslessThrottle");
|
|
172
|
+
function providerErrorSource(payload) {
|
|
173
|
+
if (typeof payload !== "object" || payload === null) return null;
|
|
174
|
+
const direct = payload;
|
|
175
|
+
const nested = direct["error"];
|
|
176
|
+
const source = typeof nested === "object" && nested !== null ? nested : direct;
|
|
177
|
+
return { source, direct };
|
|
178
|
+
}
|
|
179
|
+
__name(providerErrorSource, "providerErrorSource");
|
|
180
|
+
function decodeProviderMessage(message) {
|
|
181
|
+
try {
|
|
182
|
+
const selected = providerErrorSource(JSON.parse(message));
|
|
183
|
+
if (!selected || typeof selected.source["message"] !== "string") {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
return { ...selected.direct, ...selected.source };
|
|
187
|
+
} catch {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
__name(decodeProviderMessage, "decodeProviderMessage");
|
|
155
192
|
function getRateLimitErrorDetails(error) {
|
|
156
193
|
const statusCode = getErrorStatus(error);
|
|
157
194
|
const payload = getProviderErrorPayload(error);
|
|
@@ -159,7 +196,7 @@ function getRateLimitErrorDetails(error) {
|
|
|
159
196
|
const transport = message?.includes("event:error") || message?.includes("HTTP_STATUS/") ? "sse" : statusCode !== void 0 ? "http" : "unknown";
|
|
160
197
|
return {
|
|
161
198
|
...statusCode !== void 0 ? { statusCode } : {},
|
|
162
|
-
...payload?.code !== void 0 ? { providerCode: String(payload.code) } : {},
|
|
199
|
+
...payload?.code !== void 0 || payload?.type !== void 0 ? { providerCode: String(payload.code ?? payload.type) } : {},
|
|
163
200
|
...payload?.message !== void 0 ? { providerMessage: payload.message } : {},
|
|
164
201
|
...payload?.requestId !== void 0 ? { requestId: payload.requestId } : {},
|
|
165
202
|
transport
|
|
@@ -208,22 +245,24 @@ function getErrorCode(error) {
|
|
|
208
245
|
__name(getErrorCode, "getErrorCode");
|
|
209
246
|
function getProviderErrorPayload(error) {
|
|
210
247
|
for (const payload of getJsonPayloads(error)) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const
|
|
214
|
-
const
|
|
215
|
-
const
|
|
216
|
-
const
|
|
217
|
-
const message = typeof source
|
|
218
|
-
const requestId = typeof source
|
|
219
|
-
if (code !== void 0 || message !== void 0 || requestId !== void 0) {
|
|
220
|
-
return { code, message, requestId };
|
|
248
|
+
const selected = providerErrorSource(payload);
|
|
249
|
+
if (!selected) continue;
|
|
250
|
+
const { source, direct } = selected;
|
|
251
|
+
const decoded = typeof source["message"] === "string" ? decodeProviderMessage(source["message"]) : null;
|
|
252
|
+
const code = typeof source["code"] === "string" || typeof source["code"] === "number" ? source["code"] : typeof decoded?.["code"] === "string" || typeof decoded?.["code"] === "number" ? decoded["code"] : void 0;
|
|
253
|
+
const type = typeof source["type"] === "string" ? source["type"] : typeof decoded?.["type"] === "string" ? decoded["type"] : void 0;
|
|
254
|
+
const message = typeof decoded?.["message"] === "string" ? decoded["message"] : typeof source["message"] === "string" ? source["message"] : void 0;
|
|
255
|
+
const requestId = typeof source["request_id"] === "string" ? source["request_id"] : typeof source["requestId"] === "string" ? source["requestId"] : typeof direct["request_id"] === "string" ? direct["request_id"] : typeof direct["requestId"] === "string" ? direct["requestId"] : typeof decoded?.["request_id"] === "string" ? decoded["request_id"] : typeof decoded?.["requestId"] === "string" ? decoded["requestId"] : void 0;
|
|
256
|
+
if (code !== void 0 || type !== void 0 || message !== void 0 || requestId !== void 0) {
|
|
257
|
+
return { code, type, message, requestId };
|
|
221
258
|
}
|
|
222
259
|
}
|
|
223
260
|
if (isApiError(error)) {
|
|
261
|
+
const decoded = decodeProviderMessage(error.error.message);
|
|
224
262
|
return {
|
|
225
263
|
code: error.error.code,
|
|
226
|
-
|
|
264
|
+
...typeof decoded?.["type"] === "string" ? { type: decoded["type"] } : {},
|
|
265
|
+
message: typeof decoded?.["message"] === "string" ? decoded["message"] : error.error.message
|
|
227
266
|
};
|
|
228
267
|
}
|
|
229
268
|
return null;
|