@qwen-code/qwen-code 0.23.1-preview.2 → 0.23.2-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-ZZJT3PJF.js} +20 -20
- package/chunks/{StandaloneSessionPicker-AWB2OHX6.js → StandaloneSessionPicker-DIOSZTMX.js} +38 -38
- package/chunks/{acp-startup-profiler-BAL4LJTN.js → acp-startup-profiler-KEU6VAYR.js} +2 -2
- package/chunks/{acpAgent-ZC57OLS4.js → acpAgent-62JUP5A7.js} +118 -91
- package/chunks/{agent-GEBPAEJS.js → agent-NLPEQQDZ.js} +13 -13
- package/chunks/{agent-headless-63ZEYAJK.js → agent-headless-Y2GR5F2Q.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-Q66BD62H.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-R5STFWUW.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-ZJ2LM2SI.js → chunk-2OR32P5M.js} +104 -33
- package/chunks/chunk-2Z3T52OC.js +82 -0
- package/chunks/{chunk-5FYGZ7E3.js → chunk-33MLFMCL.js} +2 -2
- package/chunks/{chunk-RH344FKI.js → chunk-3BTHHXXE.js} +1 -1
- package/chunks/{chunk-OFB36ZBA.js → chunk-3LPJ776W.js} +1 -1
- package/chunks/{chunk-TSLRORQR.js → chunk-43CI6YWJ.js} +1467 -1323
- package/chunks/{chunk-LTCI6ZOJ.js → chunk-45ROPFQY.js} +1 -1
- package/chunks/{chunk-W4LL5RZO.js → chunk-4ALNJDHL.js} +52 -13
- package/chunks/{chunk-RRCNEW2A.js → chunk-4BLTSTF6.js} +58 -4
- package/chunks/{chunk-3RMVM33U.js → chunk-4JKLPTV6.js} +5 -5
- package/chunks/{chunk-ZRVFHLLK.js → chunk-5DQ4YTIZ.js} +1 -1
- package/chunks/{chunk-AWDF462I.js → chunk-5GD7LYOH.js} +2 -2
- package/chunks/{chunk-HZS3JRQW.js → chunk-5VZFJTL2.js} +40 -2
- package/chunks/{chunk-537SQ2AI.js → chunk-5WC2ECUK.js} +104 -16
- package/chunks/{chunk-ZT3XUGSU.js → chunk-63ACHB2H.js} +86 -9
- package/chunks/{chunk-3K65MUKD.js → chunk-65I7S4Z3.js} +2 -1
- package/chunks/{chunk-REDVV5NC.js → chunk-6GRDHIVI.js} +7 -7
- package/chunks/{chunk-2LD5U7Q3.js → chunk-6YEOCHSE.js} +29 -1
- package/chunks/{chunk-C4NXRR7T.js → chunk-743XE7N7.js} +2 -2
- package/chunks/{chunk-I7UNCY24.js → chunk-7GZCCHJL.js} +3 -3
- package/chunks/{chunk-XX4MBBFW.js → chunk-7L35FKPF.js} +3 -3
- package/chunks/{chunk-GEV66YGE.js → chunk-7RXOEUFF.js} +1 -1
- package/chunks/{chunk-TXAEXF2B.js → chunk-BL6B2QS2.js} +21 -8
- package/chunks/{chunk-KAZWXVI3.js → chunk-CABDNUJ4.js} +2 -2
- package/chunks/{chunk-R7TKFIQO.js → chunk-CALNF3Z3.js} +1 -1
- package/chunks/{chunk-22QOQKG4.js → chunk-CG2PDIGD.js} +1 -1
- package/chunks/{chunk-MFCWL4LI.js → chunk-CPJRFFPH.js} +451 -396
- package/chunks/{chunk-LD53HMPV.js → chunk-CRZBDVP2.js} +1 -0
- package/chunks/{chunk-RSU3I6UL.js → chunk-DCPRCDSR.js} +1 -1
- package/chunks/{chunk-PLUAIHZO.js → chunk-DTB5BXRG.js} +6 -6
- package/chunks/{chunk-FWH4736Q.js → chunk-EA4NFWVG.js} +3 -3
- package/chunks/{chunk-AX23QSX3.js → chunk-EHTKOO6W.js} +4 -4
- package/chunks/{chunk-37SOBIA3.js → chunk-ERXNTINK.js} +1 -1
- package/chunks/{chunk-EGRFCIXD.js → chunk-EUXF6URV.js} +79 -18
- package/chunks/{chunk-F47DITLZ.js → chunk-FAWTMDX7.js} +14 -0
- package/chunks/{chunk-5JLQWQK6.js → chunk-FV4DM2M4.js} +2 -2
- package/chunks/{chunk-C7M445SS.js → chunk-G5QLLD53.js} +1 -1
- package/chunks/{chunk-5V4B3EWA.js → chunk-GM44O6F7.js} +1 -1
- package/chunks/{chunk-Z6DDPSGJ.js → chunk-GNY7B3CA.js} +1 -1
- package/chunks/{chunk-7PMKXGRP.js → chunk-GXIHBIHC.js} +66 -9
- package/chunks/{chunk-ERMAXPXA.js → chunk-HIXUUCGY.js} +187 -12
- package/chunks/{chunk-EJNYBDYC.js → chunk-HNLMYDQE.js} +1 -1
- package/chunks/{chunk-RCUWMVN3.js → chunk-HZ2HUXX7.js} +1 -1
- package/chunks/{chunk-SHX2HIE7.js → chunk-ISPBBKJN.js} +1 -1
- package/chunks/{chunk-QQGAR64U.js → chunk-IUJLW6ZI.js} +4 -4
- package/chunks/{chunk-IMWCUWQT.js → chunk-J3TJH52D.js} +1 -1
- package/chunks/{chunk-AIMZIXZM.js → chunk-J4ECGDA3.js} +5 -7
- package/chunks/{chunk-HPE4LEWX.js → chunk-JDPBJIKI.js} +1 -1
- package/chunks/{chunk-Y3C5COGI.js → chunk-L6ZME3W7.js} +1 -1
- package/chunks/{chunk-EPZWBYQI.js → chunk-LBKYQ33T.js} +8 -6
- package/chunks/{chunk-KTLT7VCX.js → chunk-LN3WBOKU.js} +2 -2
- package/chunks/{chunk-FXYNIZPW.js → chunk-LUVXLLMS.js} +51 -10
- package/chunks/{chunk-RQNAO42A.js → chunk-M6YLOETP.js} +1 -1
- package/chunks/{chunk-6KYWU726.js → chunk-M73KHGNR.js} +13 -66
- package/chunks/{chunk-ADJD4LZF.js → chunk-MA5OUNN6.js} +1 -1
- package/chunks/{chunk-SI6Q52UI.js → chunk-MMMA36MN.js} +3 -3
- package/chunks/{chunk-QW7BUOSI.js → chunk-MWEF5MUK.js} +20 -3
- package/chunks/{chunk-JOV46WGX.js → chunk-NB3NDQQK.js} +1 -1
- package/chunks/chunk-NOO4QFXM.js +171 -0
- package/chunks/{chunk-UTVIIA7N.js → chunk-NVS4Z6GT.js} +1 -1
- package/chunks/{chunk-VMFPZXRT.js → chunk-ODBNTMZW.js} +43 -31
- package/chunks/{chunk-UKADFFL2.js → chunk-OFVAS4AR.js} +1 -1
- package/chunks/{chunk-WQBR7LN5.js → chunk-OIPUQE3S.js} +1 -1
- package/chunks/{chunk-2C3XDBGL.js → chunk-ORREXWOM.js} +4 -4
- package/chunks/{chunk-RD3VPM4E.js → chunk-PQWM4SX2.js} +2 -2
- package/chunks/{chunk-Z6KFLEG7.js → chunk-PSPAM24S.js} +1 -0
- package/chunks/{chunk-RUMSY4ES.js → chunk-Q2F43WTJ.js} +8 -7
- package/chunks/{chunk-VYCJITND.js → chunk-QJAFSFYA.js} +1 -1
- package/chunks/{chunk-L36LLVA5.js → chunk-QLM7D7W3.js} +3 -3
- package/chunks/{chunk-NUQFUXOG.js → chunk-QTNCGZHQ.js} +2 -0
- package/chunks/{chunk-XNC2TCUO.js → chunk-QXXBW2G4.js} +4 -4
- package/chunks/{chunk-TDHVOZ65.js → chunk-R2266LQ5.js} +2 -2
- package/chunks/{chunk-QJVZLILI.js → chunk-R7OO56VZ.js} +1 -1
- package/chunks/{chunk-LYHYXJJ3.js → chunk-RDV4NLI3.js} +3 -3
- package/chunks/{chunk-733KQL63.js → chunk-RN6V5HKE.js} +3 -3
- package/chunks/{chunk-WLZRMF3C.js → chunk-RX3FYFCN.js} +353 -11
- package/chunks/{chunk-NXWYCSPL.js → chunk-SOA4HKRJ.js} +1 -1
- package/chunks/{chunk-ZNI3V2XA.js → chunk-TK4XHPKW.js} +2 -2
- package/chunks/{chunk-RGAQDQ3Z.js → chunk-UHUT4IDM.js} +18 -9
- package/chunks/{chunk-T7TP5UQL.js → chunk-ULY4ISY2.js} +4 -4
- package/chunks/{chunk-PMGWY6ZP.js → chunk-UULHYZ4W.js} +13 -10
- package/chunks/{chunk-BNWIX6BM.js → chunk-UXDVUFKU.js} +3 -3
- package/chunks/{chunk-HY3DXYZK.js → chunk-UYDQYDW2.js} +1 -1
- package/chunks/{chunk-YLFICBYK.js → chunk-VEQBVJYH.js} +3 -3
- package/chunks/{chunk-3K456UJF.js → chunk-VF6D6EGV.js} +12 -4
- package/chunks/{chunk-KP5QK3FB.js → chunk-VH764G6B.js} +397 -54
- package/chunks/{chunk-IGOIYZBG.js → chunk-VHPG7BH6.js} +2 -2
- package/chunks/{chunk-I67KJGM6.js → chunk-W3ONSAYO.js} +3 -3
- package/chunks/{chunk-SHK2SIR5.js → chunk-W673V2H3.js} +4 -4
- package/chunks/{chunk-C55CR5I4.js → chunk-W7PXLIZJ.js} +6 -6
- package/chunks/{chunk-OHOO527W.js → chunk-WG7BL3FY.js} +52 -2
- package/chunks/{chunk-B5FF3LRF.js → chunk-WIRYFL2L.js} +22 -15
- package/chunks/{chunk-P5Z7VD23.js → chunk-WZ4YULVF.js} +106 -39
- package/chunks/{chunk-WFXD5OZH.js → chunk-WZS3X663.js} +1 -1
- package/chunks/{chunk-HWZOOSEB.js → chunk-XAXTQURR.js} +3 -3
- package/chunks/{chunk-ANVC5CSK.js → chunk-XBLG564H.js} +10 -10
- package/chunks/{chunk-VU7O7CGQ.js → chunk-XDNFODER.js} +1 -1
- package/chunks/{chunk-SD7Y2PMC.js → chunk-XI7RST4D.js} +2 -2
- package/chunks/{chunk-65GHQ4FX.js → chunk-XVTCSVBK.js} +514 -47
- package/chunks/{chunk-4OCYWXKF.js → chunk-Y6ZWXM44.js} +3 -3
- package/chunks/{chunk-7IKXTGZT.js → chunk-YI2YCNSP.js} +1 -1
- package/chunks/{chunk-E4VX6LXB.js → chunk-YZTGGCEE.js} +10 -2
- package/chunks/{chunk-75UQFGFE.js → chunk-ZIPYCXQP.js} +1 -1
- package/chunks/{chunk-AUJOWIT5.js → chunk-ZUNWKOAP.js} +3 -3
- package/chunks/{config-utils-F4CFJ4MW.js → config-utils-37FHWPTP.js} +24 -24
- package/chunks/{contextCommand-OIIGGOMU.js → contextCommand-R4JUBV5N.js} +22 -22
- package/chunks/{core-runtime-JEHLOGMB.js → core-runtime-6U4OXU5C.js} +20 -20
- package/chunks/{create-sub-session-MVFBE5RA.js → create-sub-session-LLUYAGZN.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-O2UTNFJC.js} +20 -20
- package/chunks/{daemon-status-provider-P6A5MPMW.js → daemon-status-provider-7GMAKSTX.js} +27 -27
- package/chunks/{daemon-trust-policy-ZJ3NFYUO.js → daemon-trust-policy-VNP76VMO.js} +27 -27
- package/chunks/{daemon-trust-policy-monitor-6SDLEW7S.js → daemon-trust-policy-monitor-TD5O3BZA.js} +27 -27
- package/chunks/{deferred-core-runtime-DWOXIU5S.js → deferred-core-runtime-NJM63YJS.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-GL7OA6RV.js} +13 -13
- package/chunks/{enter-worktree-5A6VW6BN.js → enter-worktree-YFTKHXHZ.js} +2 -2
- package/chunks/{enterPlanMode-JSODW7E2.js → enterPlanMode-VC4BCSZE.js} +13 -13
- package/chunks/{environment-5LLJ3I3W.js → environment-BI6IBAZJ.js} +23 -23
- package/chunks/{errors-IQT3YZEP.js → errors-D6G2ZM2R.js} +22 -22
- package/chunks/{exit-worktree-QV7E7KP6.js → exit-worktree-NF2XEMES.js} +3 -3
- package/chunks/{exitPlanMode-DDVFYNW4.js → exitPlanMode-DX446CA6.js} +13 -13
- package/chunks/{fast-path-PAUQQEVU.js → fast-path-MAYDLJIP.js} +3 -3
- package/chunks/{fast-path-settings-ISEJPRYE.js → fast-path-settings-SATXY3PD.js} +3 -3
- package/chunks/{glob-SQ7CTZ7F.js → glob-TVKRFY36.js} +13 -13
- package/chunks/{goal-tools-UWZRCLQB.js → goal-tools-CA6YANRN.js} +13 -13
- package/chunks/{handleAutoUpdate-RUPZZTSG.js → handleAutoUpdate-AW4ZAHON.js} +23 -23
- package/chunks/{i18n-SF5MPWEB.js → i18n-IH5CRAY7.js} +23 -21
- package/chunks/{image-gen-Q3RUTVKR.js → image-gen-XP4NNIYG.js} +4 -4
- package/chunks/{initializer-CK4WPYZG.js → initializer-UBR37ZNM.js} +27 -27
- package/chunks/{installationInfo-IRPQEYRF.js → installationInfo-Y52756EC.js} +20 -20
- package/chunks/{list-E3PS3EBJ.js → list-7V5JDZPO.js} +30 -30
- package/chunks/{llm-JQKBOYAF.js → llm-QDB6JVF5.js} +62 -62
- package/chunks/{llm-content-generator-2QWGBW42.js → llm-content-generator-EO6MZCEO.js} +23 -8
- package/chunks/{loadedSettingsAdapter-DGXGVYZS.js → loadedSettingsAdapter-I3YQKMC4.js} +27 -27
- package/chunks/{loggingContentGenerator-ZYURLJKK.js → loggingContentGenerator-MNXYUGDG.js} +14 -14
- package/chunks/{managed-npm-update-HTHR63EA.js → managed-npm-update-EA3EXPTO.js} +20 -20
- package/chunks/{mcp-I7G2AEWS.js → mcp-QTAJ544Y.js} +27 -27
- package/chunks/{monitor-4R76BCRZ.js → monitor-6FQKQOTP.js} +13 -13
- package/chunks/{nonInteractiveCli-24OQ3VP2.js → nonInteractiveCli-MRCTZL5X.js} +64 -61
- package/chunks/{notebook-edit-PPSH7FEX.js → notebook-edit-BQQCKI7K.js} +13 -13
- package/chunks/{openaiContentGenerator-K7V5EO7F.js → openaiContentGenerator-TTSKXNVH.js} +8 -8
- package/chunks/{pidfile-TGIUY2GG.js → pidfile-KPIS6RIT.js} +20 -20
- package/chunks/{processUtils-3USXUQWX.js → processUtils-ZCASPKK4.js} +2 -2
- package/chunks/{prompt-terminal-ledger-XHVZRXJI.js → prompt-terminal-ledger-D6HM6TV7.js} +21 -21
- package/chunks/{qwenContentGenerator-MPBOQB64.js → qwenContentGenerator-GGZEFLBD.js} +16 -16
- package/chunks/{qwenOAuth2-BS5D2LYV.js → qwenOAuth2-KX6LVYQ3.js} +4 -4
- package/chunks/{read-file-R256LDWQ.js → read-file-VE5GDFLP.js} +2 -2
- package/chunks/{resumeHistoryUtils-S43LTFHD.js → resumeHistoryUtils-HSSGMYDC.js} +23 -23
- package/chunks/{ripGrep-L7HPZ75Y.js → ripGrep-SEJE7AA6.js} +3 -3
- package/chunks/{run-qwen-serve-CTFL5R6U.js → run-qwen-serve-OJYVH7N6.js} +58 -60
- package/chunks/{runtime-FS5TL6P7.js → runtime-KGMQQFJD.js} +32 -32
- package/chunks/{scheduled-tasks-QXPV3Q35.js → scheduled-tasks-7H5HWHYD.js} +25 -25
- package/chunks/{scheduler-EXU5HMVK.js → scheduler-BE42AKDG.js} +22 -22
- package/chunks/{send-message-GQKXGMPI.js → send-message-AWKUDJBH.js} +1 -1
- package/chunks/{serve-ITJC7WNN.js → serve-KZVKYMSL.js} +27 -27
- package/chunks/{server-6JQY3PTU.js → server-PJRALPJQ.js} +1296 -822
- package/chunks/{session-PJDEKXD4.js → session-IHITXU2S.js} +63 -62
- package/chunks/{session-attachments-root-L37ORSST.js → session-attachments-root-GQ2TUI3Y.js} +20 -20
- package/chunks/{session-pr-refresh-WIFD52YL.js → session-pr-refresh-H43LULTE.js} +24 -24
- package/chunks/{settings-LO6J5SAZ.js → settings-RKEQQDFC.js} +26 -26
- package/chunks/{shell-ANAFVYGR.js → shell-6PJ444U5.js} +13 -13
- package/chunks/{skill-SHJWKSPH.js → skill-Q3UP7B5V.js} +2 -2
- package/chunks/{skill-settings-GX3XHZ5Q.js → skill-settings-LZR5YRRW.js} +26 -26
- package/chunks/{spawnChannel-WE42VBKM.js → spawnChannel-WM3DT2BF.js} +20 -20
- package/chunks/{standalone-update-CWDIKJRP.js → standalone-update-E5474IBI.js} +22 -22
- package/chunks/{start-opentui-ui-BBHGFOTF.js → start-opentui-ui-WLWZNQ2I.js} +1991 -986
- package/chunks/{startInteractiveUI-FQX7LUYP.js → startInteractiveUI-FBQSGWGO.js} +1119 -1478
- package/chunks/{team-create-WKTPCH6D.js → team-create-VIGUFUT4.js} +13 -13
- package/chunks/{team-plan-approval-Y23DL7WR.js → team-plan-approval-HQVZA3MD.js} +13 -13
- package/chunks/{terminal-image-renderer-B646HBDW.js → terminal-image-renderer-LUKNCOVM.js} +20 -20
- package/chunks/{theme-manager-BNWESY26.js → theme-manager-LOENKYLY.js} +20 -20
- package/chunks/{tool-search-PVQ5O5Y2.js → tool-search-ZIFAQCE2.js} +2 -2
- package/chunks/{total-session-admission-P5Z43KNW.js → total-session-admission-FUUJH3QH.js} +24 -24
- package/chunks/{trustedFolders-FH2LT2MZ.js → trustedFolders-C76KYROP.js} +21 -21
- package/chunks/{update-relaunch-WOWTKJSN.js → update-relaunch-4G2SRXKX.js} +5 -5
- package/chunks/{updateCheck-3MYFMM35.js → updateCheck-EIZIO7HI.js} +22 -22
- package/chunks/{useAutoAcceptIndicator-Q7ZRRRKO.js → useAutoAcceptIndicator-EAA6KSY4.js} +29 -29
- package/chunks/{validateNonInterActiveAuth-MYEWJX3G.js → validateNonInterActiveAuth-BRX22QCN.js} +59 -58
- package/chunks/{version-RO2FPO76.js → version-E56RU7PR.js} +1 -1
- package/chunks/{web-fetch-QAKY2LUA.js → web-fetch-AAUCD7RM.js} +5 -5
- package/chunks/{web-search-XA5Z4ZCD.js → web-search-HFUQF44Q.js} +18 -7
- package/chunks/{workflow-QFIOCMDM.js → workflow-3MABM53N.js} +15 -15
- package/chunks/{workspace-providers-status-B2UD7RAG.js → workspace-providers-status-2FRLBZ5I.js} +29 -29
- package/chunks/{workspace-registration-store-VZLRTI3Q.js → workspace-registration-store-YL7HLYYI.js} +1 -1
- package/chunks/{workspace-registry-GYOGG6TM.js → workspace-registry-BNRP2ELW.js} +24 -24
- package/chunks/{workspace-runtime-coordinator-7KRXGQ4V.js → workspace-runtime-coordinator-WKGF7VHS.js} +24 -24
- package/chunks/{workspace-service-DJEYGJE4.js → workspace-service-4MYO72MM.js} +31 -31
- package/chunks/{workspace-skills-status-MOKNESUC.js → workspace-skills-status-SU66TJLZ.js} +27 -27
- package/chunks/{workspace-trust-reconciler-AXOSUTQW.js → workspace-trust-reconciler-D5QT7WQB.js} +31 -31
- package/chunks/{write-file-QOYVHAKK.js → write-file-NVPQE2AZ.js} +14 -14
- package/chunks/{zoom-image-UCCLGFNC.js → zoom-image-RJHC66WG.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
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
import {
|
|
4
4
|
TURN_INTERRUPTION_HISTORY_TAIL_COUNT,
|
|
5
5
|
detectTurnInterruption
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BL6B2QS2.js";
|
|
7
7
|
import {
|
|
8
8
|
SessionService,
|
|
9
9
|
buildApiHistoryFromConversation
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-43CI6YWJ.js";
|
|
11
11
|
import {
|
|
12
12
|
init_esbuild_shims
|
|
13
13
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
customDeepMerge,
|
|
5
5
|
getSettingsSchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MWEF5MUK.js";
|
|
7
7
|
import {
|
|
8
8
|
DEFAULT_DARK_THEME_NAME,
|
|
9
9
|
DEFAULT_LIGHT_THEME_NAME
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from "./chunk-IDS7MSUP.js";
|
|
22
22
|
import {
|
|
23
23
|
t
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-CRZBDVP2.js";
|
|
25
25
|
import {
|
|
26
26
|
SUPPORTED_LANGUAGES,
|
|
27
27
|
getLanguageNameFromLocale
|
|
@@ -30,21 +30,21 @@ import {
|
|
|
30
30
|
getHomeEnvFallbackVars,
|
|
31
31
|
loadEnvironment,
|
|
32
32
|
preResolveHomeEnvOverrides
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-Y6ZWXM44.js";
|
|
34
34
|
import {
|
|
35
35
|
ENV_CORRUPTED_PATH,
|
|
36
36
|
ENV_WAS_RECOVERED
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-QTNCGZHQ.js";
|
|
38
38
|
import {
|
|
39
39
|
isWorkspaceTrusted,
|
|
40
40
|
updateSettingsFilePreservingFormat
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-7RXOEUFF.js";
|
|
42
42
|
import {
|
|
43
43
|
require_strip_json_comments
|
|
44
44
|
} from "./chunk-NPQ5ZKRP.js";
|
|
45
45
|
import {
|
|
46
46
|
resolveEnvVarsInObject
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-65I7S4Z3.js";
|
|
48
48
|
import {
|
|
49
49
|
stripRuntimeSnapshotPrefix
|
|
50
50
|
} from "./chunk-565U2ANU.js";
|
|
@@ -439,7 +439,8 @@ var WORKSPACE_RESTRICTED_SETTINGS = [
|
|
|
439
439
|
{ section: "tools", key: "workflowsEnabled" },
|
|
440
440
|
{ section: "security", key: "allowPrivateNetworkHooks" },
|
|
441
441
|
{ section: "security", key: "allowedInsecureVoiceBaseUrls" },
|
|
442
|
-
{ section: "goals", key: "modelProposed" }
|
|
442
|
+
{ section: "goals", key: "modelProposed" },
|
|
443
|
+
{ section: "outboundCorrelation", key: "allowDynamicHeaderValues" }
|
|
443
444
|
];
|
|
444
445
|
var WORKSPACE_TIGHTEN_ONLY_SETTINGS = [
|
|
445
446
|
{
|
|
@@ -27,10 +27,10 @@ import {
|
|
|
27
27
|
} from "./chunk-3VUENPWF.js";
|
|
28
28
|
import {
|
|
29
29
|
loadSettings
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-Q2F43WTJ.js";
|
|
31
31
|
import {
|
|
32
32
|
MCP_BUDGET_WARN_FRACTION
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-43CI6YWJ.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-OJYVH7N6.js");
|
|
451
451
|
try {
|
|
452
452
|
const serveOptions = {
|
|
453
453
|
port: argv.port,
|
|
@@ -39,6 +39,8 @@ var PROJECT_ENV_HARDCODED_EXCLUSIONS = [
|
|
|
39
39
|
"QWEN_RUNTIME_DIR",
|
|
40
40
|
"QWEN_CODE_MCP_APPROVALS_PATH",
|
|
41
41
|
"QWEN_CODE_TRUSTED_FOLDERS_PATH",
|
|
42
|
+
// Downloaded updates execute as the user; a project must not select them.
|
|
43
|
+
"QWEN_UPDATE_BASE_URL",
|
|
42
44
|
// This points to a host temp file that carries build warnings. A project
|
|
43
45
|
// `.env` must not redirect it to an arbitrary file to read or delete.
|
|
44
46
|
"QWEN_CODE_WARNINGS_FILE",
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
t
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-CRZBDVP2.js";
|
|
6
6
|
import {
|
|
7
7
|
SessionReferenceService,
|
|
8
8
|
readManyFiles
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-BL6B2QS2.js";
|
|
10
10
|
import {
|
|
11
11
|
emptyMcpResourceText,
|
|
12
12
|
formatMcpResourceContents,
|
|
@@ -15,10 +15,10 @@ import {
|
|
|
15
15
|
import {
|
|
16
16
|
SessionService,
|
|
17
17
|
stripTerminalControlSequences
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-43CI6YWJ.js";
|
|
19
19
|
import {
|
|
20
20
|
shouldRunVisionBridge
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-OIPUQE3S.js";
|
|
22
22
|
import {
|
|
23
23
|
Storage,
|
|
24
24
|
getErrorMessage,
|
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
|
|
7
7
|
// packages/cli/src/generated/git-commit.ts
|
|
8
8
|
init_esbuild_shims();
|
|
9
|
-
var GIT_COMMIT_INFO = "
|
|
10
|
-
var CLI_VERSION = "0.23.
|
|
9
|
+
var GIT_COMMIT_INFO = "88acf9947d";
|
|
10
|
+
var CLI_VERSION = "0.23.2-preview.0";
|
|
11
11
|
|
|
12
12
|
export {
|
|
13
13
|
GIT_COMMIT_INFO,
|
|
@@ -8,16 +8,16 @@ import {
|
|
|
8
8
|
initializeI18n,
|
|
9
9
|
resolveLanguageSetting,
|
|
10
10
|
t
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-CRZBDVP2.js";
|
|
12
12
|
import {
|
|
13
13
|
IdeClient
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-43CI6YWJ.js";
|
|
15
15
|
import {
|
|
16
16
|
AuthEvent,
|
|
17
17
|
IdeConnectionEvent,
|
|
18
18
|
logAuth,
|
|
19
19
|
logIdeConnection
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-OIPUQE3S.js";
|
|
21
21
|
import {
|
|
22
22
|
getErrorMessage
|
|
23
23
|
} from "./chunk-ZAFYHRVY.js";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
getUserSettingsPath,
|
|
5
5
|
v1ToV2Migration
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-Q2F43WTJ.js";
|
|
7
7
|
import {
|
|
8
8
|
getSystemDefaultsPath,
|
|
9
9
|
getSystemSettingsPath
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
TrustLevel,
|
|
14
14
|
getExplicitTrustLevel,
|
|
15
15
|
getTrustedFoldersPath
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-7RXOEUFF.js";
|
|
17
17
|
import {
|
|
18
18
|
require_strip_json_comments
|
|
19
19
|
} from "./chunk-NPQ5ZKRP.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
} from "./chunk-MR3PXB6E.js";
|
|
23
23
|
import {
|
|
24
24
|
ideContextStore
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-43CI6YWJ.js";
|
|
26
26
|
import {
|
|
27
27
|
init_esbuild_shims
|
|
28
28
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -23,10 +23,11 @@ import {
|
|
|
23
23
|
SessionConflictError,
|
|
24
24
|
SessionNotArchivedError,
|
|
25
25
|
SessionNotFoundError
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-FAWTMDX7.js";
|
|
27
27
|
import {
|
|
28
|
-
readWorktreeSession
|
|
29
|
-
|
|
28
|
+
readWorktreeSession,
|
|
29
|
+
readWorktreeSessionStrict
|
|
30
|
+
} from "./chunk-YZTGGCEE.js";
|
|
30
31
|
import {
|
|
31
32
|
SESSION_PR_LIST_LIMIT,
|
|
32
33
|
SESSION_PR_URL_MAX_LENGTH,
|
|
@@ -40,7 +41,12 @@ import {
|
|
|
40
41
|
gitEnv,
|
|
41
42
|
readSessionPrs,
|
|
42
43
|
toSessionPrInfo
|
|
43
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-43CI6YWJ.js";
|
|
45
|
+
import {
|
|
46
|
+
GitWorktreeService,
|
|
47
|
+
WORKTREE_SESSION_FILE,
|
|
48
|
+
readWorktreeSessionMarkerStrict
|
|
49
|
+
} from "./chunk-HIXUUCGY.js";
|
|
44
50
|
import {
|
|
45
51
|
updateCronTasks
|
|
46
52
|
} from "./chunk-F53KKZUD.js";
|
|
@@ -1322,6 +1328,7 @@ __name(createWorkspaceRuntimeSessionService, "createWorkspaceRuntimeSessionServi
|
|
|
1322
1328
|
|
|
1323
1329
|
// packages/cli/src/serve/server/session-archive.ts
|
|
1324
1330
|
init_esbuild_shims();
|
|
1331
|
+
import fs2 from "node:fs";
|
|
1325
1332
|
|
|
1326
1333
|
// packages/cli/src/serve/scheduled-task-session-lifecycle.ts
|
|
1327
1334
|
init_esbuild_shims();
|
|
@@ -1394,6 +1401,296 @@ async function removeTasksForSessions(projectRoot, sessionIds, options = {}) {
|
|
|
1394
1401
|
}
|
|
1395
1402
|
__name(removeTasksForSessions, "removeTasksForSessions");
|
|
1396
1403
|
|
|
1404
|
+
// packages/cli/src/serve/server/worktree-orphan-cleanup.ts
|
|
1405
|
+
init_esbuild_shims();
|
|
1406
|
+
import fs from "node:fs";
|
|
1407
|
+
import * as fsp from "node:fs/promises";
|
|
1408
|
+
import path2 from "node:path";
|
|
1409
|
+
import { execFile } from "node:child_process";
|
|
1410
|
+
import { promisify } from "node:util";
|
|
1411
|
+
|
|
1412
|
+
// packages/cli/src/serve/server/worktree-ownership-op.ts
|
|
1413
|
+
init_esbuild_shims();
|
|
1414
|
+
var worktreeOwnershipOpTails = /* @__PURE__ */ new Map();
|
|
1415
|
+
async function acquireWorktreeOwnershipOp(worktreeKey) {
|
|
1416
|
+
const previous = worktreeOwnershipOpTails.get(worktreeKey);
|
|
1417
|
+
let releaseGate;
|
|
1418
|
+
const gate = new Promise((resolve) => {
|
|
1419
|
+
releaseGate = resolve;
|
|
1420
|
+
});
|
|
1421
|
+
const tail = (previous ?? Promise.resolve()).then(() => gate);
|
|
1422
|
+
worktreeOwnershipOpTails.set(worktreeKey, tail);
|
|
1423
|
+
if (previous) {
|
|
1424
|
+
await previous;
|
|
1425
|
+
}
|
|
1426
|
+
let released = false;
|
|
1427
|
+
return () => {
|
|
1428
|
+
if (released) return;
|
|
1429
|
+
released = true;
|
|
1430
|
+
releaseGate();
|
|
1431
|
+
if (worktreeOwnershipOpTails.get(worktreeKey) === tail) {
|
|
1432
|
+
worktreeOwnershipOpTails.delete(worktreeKey);
|
|
1433
|
+
}
|
|
1434
|
+
};
|
|
1435
|
+
}
|
|
1436
|
+
__name(acquireWorktreeOwnershipOp, "acquireWorktreeOwnershipOp");
|
|
1437
|
+
|
|
1438
|
+
// packages/cli/src/serve/server/worktree-orphan-cleanup.ts
|
|
1439
|
+
function canonicalPath(candidate) {
|
|
1440
|
+
try {
|
|
1441
|
+
return fs.realpathSync(candidate);
|
|
1442
|
+
} catch {
|
|
1443
|
+
return candidate;
|
|
1444
|
+
}
|
|
1445
|
+
}
|
|
1446
|
+
__name(canonicalPath, "canonicalPath");
|
|
1447
|
+
var execFileAsync = promisify(execFile);
|
|
1448
|
+
var DISPOSABLE_IGNORED_ROOTS = /* @__PURE__ */ new Set(["node_modules", "dist", "coverage"]);
|
|
1449
|
+
async function checkoutHasWork(worktreePath) {
|
|
1450
|
+
try {
|
|
1451
|
+
const { stdout } = await execFileAsync(
|
|
1452
|
+
"git",
|
|
1453
|
+
[
|
|
1454
|
+
"status",
|
|
1455
|
+
"--porcelain",
|
|
1456
|
+
"--untracked-files=normal",
|
|
1457
|
+
"--ignored=matching"
|
|
1458
|
+
],
|
|
1459
|
+
{ cwd: worktreePath, env: gitEnv() }
|
|
1460
|
+
);
|
|
1461
|
+
return stdout.split("\n").filter((line) => line.trim().length > 0).some((line) => {
|
|
1462
|
+
const entry = line.slice(3);
|
|
1463
|
+
if (entry === WORKTREE_SESSION_FILE) return false;
|
|
1464
|
+
if (line.startsWith("!!")) {
|
|
1465
|
+
return !DISPOSABLE_IGNORED_ROOTS.has(entry.split("/")[0]);
|
|
1466
|
+
}
|
|
1467
|
+
return true;
|
|
1468
|
+
});
|
|
1469
|
+
} catch {
|
|
1470
|
+
return true;
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1473
|
+
__name(checkoutHasWork, "checkoutHasWork");
|
|
1474
|
+
function logWarning(message) {
|
|
1475
|
+
writeStderrLine(`qwen serve: ${message}`);
|
|
1476
|
+
}
|
|
1477
|
+
__name(logWarning, "logWarning");
|
|
1478
|
+
function logWorktreeCleanupPreserve(sessionId, reason) {
|
|
1479
|
+
logWarning(
|
|
1480
|
+
`worktree cleanup preserved checkout action=delete session=${safeLogValue(
|
|
1481
|
+
sessionId
|
|
1482
|
+
)} reason=${safeLogValue(reason)}`
|
|
1483
|
+
);
|
|
1484
|
+
}
|
|
1485
|
+
__name(logWorktreeCleanupPreserve, "logWorktreeCleanupPreserve");
|
|
1486
|
+
async function preclassifyWorktreeCleanup(service, sessionId, runtimeWorkspaceCwd) {
|
|
1487
|
+
let sidecarPath = service.getWorktreeSessionPath(sessionId);
|
|
1488
|
+
let sidecar = await readWorktreeSessionStrict(sidecarPath);
|
|
1489
|
+
if (sidecar.state === "missing") {
|
|
1490
|
+
const archivedPath = service.getWorktreeSessionPathForArchiveState(
|
|
1491
|
+
sessionId,
|
|
1492
|
+
"archived"
|
|
1493
|
+
);
|
|
1494
|
+
if (archivedPath !== sidecarPath) {
|
|
1495
|
+
sidecarPath = archivedPath;
|
|
1496
|
+
sidecar = await readWorktreeSessionStrict(sidecarPath);
|
|
1497
|
+
}
|
|
1498
|
+
}
|
|
1499
|
+
if (sidecar.state === "missing") return void 0;
|
|
1500
|
+
if (sidecar.state === "invalid") {
|
|
1501
|
+
logWorktreeCleanupPreserve(
|
|
1502
|
+
sessionId,
|
|
1503
|
+
`unreadable sidecar (${sidecar.reason})`
|
|
1504
|
+
);
|
|
1505
|
+
return void 0;
|
|
1506
|
+
}
|
|
1507
|
+
const session = sidecar.session;
|
|
1508
|
+
if (session.workspaceCwd === void 0) return void 0;
|
|
1509
|
+
if (session.supersededBy !== void 0) return void 0;
|
|
1510
|
+
if (!path2.isAbsolute(session.workspaceCwd) || !path2.isAbsolute(session.originalCwd)) {
|
|
1511
|
+
logWorktreeCleanupPreserve(
|
|
1512
|
+
sessionId,
|
|
1513
|
+
"sidecar base is not an absolute path"
|
|
1514
|
+
);
|
|
1515
|
+
return void 0;
|
|
1516
|
+
}
|
|
1517
|
+
if (runtimeWorkspaceCwd !== void 0) {
|
|
1518
|
+
if (canonicalPath(session.workspaceCwd) !== canonicalPath(runtimeWorkspaceCwd)) {
|
|
1519
|
+
logWorktreeCleanupPreserve(
|
|
1520
|
+
sessionId,
|
|
1521
|
+
"sidecar belongs to another workspace"
|
|
1522
|
+
);
|
|
1523
|
+
return void 0;
|
|
1524
|
+
}
|
|
1525
|
+
const workspaceRoots = [canonicalPath(runtimeWorkspaceCwd)];
|
|
1526
|
+
try {
|
|
1527
|
+
const repoTop = await new GitWorktreeService(
|
|
1528
|
+
runtimeWorkspaceCwd
|
|
1529
|
+
).getRepoTopLevel();
|
|
1530
|
+
if (repoTop && canonicalPath(repoTop) !== workspaceRoots[0]) {
|
|
1531
|
+
workspaceRoots.push(canonicalPath(repoTop));
|
|
1532
|
+
}
|
|
1533
|
+
} catch {
|
|
1534
|
+
}
|
|
1535
|
+
if (!workspaceRoots.includes(canonicalPath(session.originalCwd))) {
|
|
1536
|
+
logWorktreeCleanupPreserve(
|
|
1537
|
+
sessionId,
|
|
1538
|
+
"sidecar original cwd is outside the accepted roots"
|
|
1539
|
+
);
|
|
1540
|
+
return void 0;
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1543
|
+
return {
|
|
1544
|
+
sessionId,
|
|
1545
|
+
sidecar: session,
|
|
1546
|
+
sidecarPath,
|
|
1547
|
+
lockKey: canonicalPath(session.worktreePath)
|
|
1548
|
+
};
|
|
1549
|
+
}
|
|
1550
|
+
__name(preclassifyWorktreeCleanup, "preclassifyWorktreeCleanup");
|
|
1551
|
+
function acquireWorktreeCleanupLock(plan) {
|
|
1552
|
+
return acquireWorktreeOwnershipOp(plan.lockKey);
|
|
1553
|
+
}
|
|
1554
|
+
__name(acquireWorktreeCleanupLock, "acquireWorktreeCleanupLock");
|
|
1555
|
+
async function worktreeAllowedRoots(workspaceCwd, originalCwd) {
|
|
1556
|
+
const roots = /* @__PURE__ */ new Set();
|
|
1557
|
+
for (const base of [workspaceCwd, originalCwd]) {
|
|
1558
|
+
if (!path2.isAbsolute(base)) continue;
|
|
1559
|
+
roots.add(path2.join(base, ".qwen", "worktrees"));
|
|
1560
|
+
try {
|
|
1561
|
+
const repoTop = await new GitWorktreeService(base).getRepoTopLevel();
|
|
1562
|
+
if (repoTop) {
|
|
1563
|
+
roots.add(path2.join(repoTop, ".qwen", "worktrees"));
|
|
1564
|
+
}
|
|
1565
|
+
} catch {
|
|
1566
|
+
}
|
|
1567
|
+
}
|
|
1568
|
+
return [...roots];
|
|
1569
|
+
}
|
|
1570
|
+
__name(worktreeAllowedRoots, "worktreeAllowedRoots");
|
|
1571
|
+
async function verifyWorktreeCleanupOwnership(plan) {
|
|
1572
|
+
const { sessionId, sidecar } = plan;
|
|
1573
|
+
const locked = await readWorktreeSessionStrict(plan.sidecarPath);
|
|
1574
|
+
if (locked.state !== "valid") {
|
|
1575
|
+
return {
|
|
1576
|
+
ok: false,
|
|
1577
|
+
reason: locked.state === "missing" ? "sidecar disappeared before delete" : `unreadable sidecar (${locked.reason})`
|
|
1578
|
+
};
|
|
1579
|
+
}
|
|
1580
|
+
const current = locked.session;
|
|
1581
|
+
if (current.workspaceCwd === void 0 || current.supersededBy !== void 0 || current.slug !== sidecar.slug || current.worktreePath !== sidecar.worktreePath || current.originalCwd !== sidecar.originalCwd || current.workspaceCwd !== sidecar.workspaceCwd) {
|
|
1582
|
+
return { ok: false, reason: "sidecar changed before delete" };
|
|
1583
|
+
}
|
|
1584
|
+
const marker = await readWorktreeSessionMarkerStrict(plan.lockKey);
|
|
1585
|
+
if (marker.state !== "valid" || marker.sessionId !== sessionId) {
|
|
1586
|
+
return {
|
|
1587
|
+
ok: false,
|
|
1588
|
+
reason: marker.state === "valid" ? "marker names another session" : `marker ${marker.state}`
|
|
1589
|
+
};
|
|
1590
|
+
}
|
|
1591
|
+
const allowedRoots = await worktreeAllowedRoots(
|
|
1592
|
+
current.workspaceCwd,
|
|
1593
|
+
current.originalCwd
|
|
1594
|
+
);
|
|
1595
|
+
const contained = allowedRoots.some((root) => {
|
|
1596
|
+
try {
|
|
1597
|
+
const realRoot = fs.realpathSync(root);
|
|
1598
|
+
return plan.lockKey === realRoot || plan.lockKey.startsWith(realRoot + path2.sep);
|
|
1599
|
+
} catch {
|
|
1600
|
+
return false;
|
|
1601
|
+
}
|
|
1602
|
+
});
|
|
1603
|
+
if (!contained) {
|
|
1604
|
+
return { ok: false, reason: "checkout outside workspace worktree roots" };
|
|
1605
|
+
}
|
|
1606
|
+
const chatsDir = path2.dirname(plan.sidecarPath);
|
|
1607
|
+
const ownFile = path2.basename(plan.sidecarPath);
|
|
1608
|
+
let entries;
|
|
1609
|
+
try {
|
|
1610
|
+
entries = await fsp.readdir(chatsDir);
|
|
1611
|
+
} catch (error) {
|
|
1612
|
+
return {
|
|
1613
|
+
ok: false,
|
|
1614
|
+
reason: `sidecar scan failed: ${error instanceof Error ? error.message : String(error)}`
|
|
1615
|
+
};
|
|
1616
|
+
}
|
|
1617
|
+
for (const entry of entries) {
|
|
1618
|
+
if (!entry.endsWith(".worktree.json") || entry === ownFile) continue;
|
|
1619
|
+
const other = await readWorktreeSessionStrict(path2.join(chatsDir, entry));
|
|
1620
|
+
if (other.state === "missing") continue;
|
|
1621
|
+
if (other.state === "invalid") {
|
|
1622
|
+
return { ok: false, reason: `unreadable sibling sidecar ${entry}` };
|
|
1623
|
+
}
|
|
1624
|
+
if (canonicalPath(other.session.worktreePath) === plan.lockKey) {
|
|
1625
|
+
if (other.session.supersededBy === sessionId) continue;
|
|
1626
|
+
return { ok: false, reason: `checkout shared with ${entry}` };
|
|
1627
|
+
}
|
|
1628
|
+
}
|
|
1629
|
+
const removalTarget = canonicalPath(
|
|
1630
|
+
new GitWorktreeService(current.originalCwd).getUserWorktreePath(
|
|
1631
|
+
current.slug
|
|
1632
|
+
)
|
|
1633
|
+
);
|
|
1634
|
+
if (removalTarget !== plan.lockKey) {
|
|
1635
|
+
return {
|
|
1636
|
+
ok: false,
|
|
1637
|
+
reason: "slug does not resolve to the verified checkout"
|
|
1638
|
+
};
|
|
1639
|
+
}
|
|
1640
|
+
plan.sidecar = current;
|
|
1641
|
+
return { ok: true };
|
|
1642
|
+
}
|
|
1643
|
+
__name(verifyWorktreeCleanupOwnership, "verifyWorktreeCleanupOwnership");
|
|
1644
|
+
async function checkoutStillPopulated(worktreePath) {
|
|
1645
|
+
try {
|
|
1646
|
+
return (await fsp.readdir(worktreePath)).length > 0;
|
|
1647
|
+
} catch {
|
|
1648
|
+
return false;
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
__name(checkoutStillPopulated, "checkoutStillPopulated");
|
|
1652
|
+
async function executeWorktreeCleanup(plan) {
|
|
1653
|
+
const { sessionId, sidecar } = plan;
|
|
1654
|
+
const marker = await readWorktreeSessionMarkerStrict(plan.lockKey);
|
|
1655
|
+
if (marker.state !== "valid" || marker.sessionId !== sessionId) {
|
|
1656
|
+
logWorktreeCleanupPreserve(sessionId, "marker changed after delete");
|
|
1657
|
+
return;
|
|
1658
|
+
}
|
|
1659
|
+
if (await checkoutHasWork(plan.lockKey)) {
|
|
1660
|
+
logWorktreeCleanupPreserve(sessionId, "checkout has uncommitted work");
|
|
1661
|
+
return;
|
|
1662
|
+
}
|
|
1663
|
+
const result = await new GitWorktreeService(
|
|
1664
|
+
sidecar.originalCwd
|
|
1665
|
+
).removeUserWorktree(sidecar.slug, { deleteBranch: true });
|
|
1666
|
+
if (!result.success) {
|
|
1667
|
+
const errorText = result.error ?? "unknown error";
|
|
1668
|
+
if (await checkoutStillPopulated(plan.lockKey)) {
|
|
1669
|
+
logWorktreeCleanupPreserve(
|
|
1670
|
+
sessionId,
|
|
1671
|
+
`checkout removal failed: ${errorText}`
|
|
1672
|
+
);
|
|
1673
|
+
} else {
|
|
1674
|
+
logWarning(
|
|
1675
|
+
`worktree cleanup removal failed, checkout may be partially deleted action=delete session=${safeLogValue(
|
|
1676
|
+
sessionId
|
|
1677
|
+
)} reason=${safeLogValue(errorText)}`
|
|
1678
|
+
);
|
|
1679
|
+
}
|
|
1680
|
+
return;
|
|
1681
|
+
}
|
|
1682
|
+
if (result.branchPreserved) {
|
|
1683
|
+
logWarning(
|
|
1684
|
+
`worktree cleanup removed checkout but kept branch action=delete session=${safeLogValue(
|
|
1685
|
+
sessionId
|
|
1686
|
+
)} slug=${safeLogValue(sidecar.slug)} branch=${safeLogValue(
|
|
1687
|
+
sidecar.worktreeBranch
|
|
1688
|
+
)} reason=unmerged commits`
|
|
1689
|
+
);
|
|
1690
|
+
}
|
|
1691
|
+
}
|
|
1692
|
+
__name(executeWorktreeCleanup, "executeWorktreeCleanup");
|
|
1693
|
+
|
|
1397
1694
|
// packages/cli/src/serve/server/session-archive.ts
|
|
1398
1695
|
var DaemonDrainingError = class extends Error {
|
|
1399
1696
|
static {
|
|
@@ -1755,6 +2052,7 @@ async function deleteDaemonSessions(params) {
|
|
|
1755
2052
|
coordinator,
|
|
1756
2053
|
coordinatorLockHeld = false,
|
|
1757
2054
|
assertCanMutate,
|
|
2055
|
+
runtimeWorkspaceCwd,
|
|
1758
2056
|
onError
|
|
1759
2057
|
} = params;
|
|
1760
2058
|
const uniqueSessionIds = [
|
|
@@ -1765,6 +2063,49 @@ async function deleteDaemonSessions(params) {
|
|
|
1765
2063
|
coordinator.assertNotTransitioning(sessionId);
|
|
1766
2064
|
}
|
|
1767
2065
|
}
|
|
2066
|
+
const runWithWorktreeCleanup = /* @__PURE__ */ __name(async (sessionId, mutateSession) => {
|
|
2067
|
+
const activeSidecarPath = service.getWorktreeSessionPath(sessionId);
|
|
2068
|
+
const archivedSidecarPath = service.getWorktreeSessionPathForArchiveState(
|
|
2069
|
+
sessionId,
|
|
2070
|
+
"archived"
|
|
2071
|
+
);
|
|
2072
|
+
if (!fs2.existsSync(activeSidecarPath) && (archivedSidecarPath === activeSidecarPath || !fs2.existsSync(archivedSidecarPath))) {
|
|
2073
|
+
return coordinator.runExclusiveMany([sessionId], mutateSession);
|
|
2074
|
+
}
|
|
2075
|
+
const cleanupPlan = await preclassifyWorktreeCleanup(
|
|
2076
|
+
service,
|
|
2077
|
+
sessionId,
|
|
2078
|
+
runtimeWorkspaceCwd
|
|
2079
|
+
);
|
|
2080
|
+
if (!cleanupPlan) {
|
|
2081
|
+
return coordinator.runExclusiveMany([sessionId], mutateSession);
|
|
2082
|
+
}
|
|
2083
|
+
const releaseCleanupLock = await acquireWorktreeCleanupLock(cleanupPlan);
|
|
2084
|
+
try {
|
|
2085
|
+
const ownership = await verifyWorktreeCleanupOwnership(cleanupPlan);
|
|
2086
|
+
if (!ownership.ok) {
|
|
2087
|
+
logWorktreeCleanupPreserve(sessionId, ownership.reason);
|
|
2088
|
+
}
|
|
2089
|
+
const result = await coordinator.runExclusiveMany(
|
|
2090
|
+
[sessionId],
|
|
2091
|
+
mutateSession
|
|
2092
|
+
);
|
|
2093
|
+
if (ownership.ok && result.kind === "removed") {
|
|
2094
|
+
try {
|
|
2095
|
+
assertCanMutate?.();
|
|
2096
|
+
await executeWorktreeCleanup(cleanupPlan);
|
|
2097
|
+
} catch (error) {
|
|
2098
|
+
logWorktreeCleanupPreserve(
|
|
2099
|
+
sessionId,
|
|
2100
|
+
`cleanup execution failed: ${errorMessage(error)}`
|
|
2101
|
+
);
|
|
2102
|
+
}
|
|
2103
|
+
}
|
|
2104
|
+
return result;
|
|
2105
|
+
} finally {
|
|
2106
|
+
releaseCleanupLock();
|
|
2107
|
+
}
|
|
2108
|
+
}, "runWithWorktreeCleanup");
|
|
1768
2109
|
const results = await Promise.all(
|
|
1769
2110
|
uniqueSessionIds.map(async (sessionId) => {
|
|
1770
2111
|
try {
|
|
@@ -1810,7 +2151,7 @@ async function deleteDaemonSessions(params) {
|
|
|
1810
2151
|
try {
|
|
1811
2152
|
await bridge.closeSession(sessionId);
|
|
1812
2153
|
} catch (error) {
|
|
1813
|
-
if (isSessionNotFoundError(error)) {
|
|
2154
|
+
if (isSessionNotFoundError(error) && error.code !== "session_closing") {
|
|
1814
2155
|
return await removePersistedSession();
|
|
1815
2156
|
}
|
|
1816
2157
|
onError?.({
|
|
@@ -1826,7 +2167,7 @@ async function deleteDaemonSessions(params) {
|
|
|
1826
2167
|
}
|
|
1827
2168
|
return await removePersistedSession();
|
|
1828
2169
|
}, "mutateSession");
|
|
1829
|
-
return await (coordinatorLockHeld ? mutateSession() :
|
|
2170
|
+
return await (coordinatorLockHeld ? mutateSession() : runWithWorktreeCleanup(sessionId, mutateSession));
|
|
1830
2171
|
} catch (error) {
|
|
1831
2172
|
if (error instanceof DaemonDrainingError) {
|
|
1832
2173
|
throw error;
|
|
@@ -2361,12 +2702,12 @@ __name(unarchiveDaemonSessions, "unarchiveDaemonSessions");
|
|
|
2361
2702
|
|
|
2362
2703
|
// packages/cli/src/serve/server/aone-mrs.ts
|
|
2363
2704
|
init_esbuild_shims();
|
|
2364
|
-
import { execFile } from "node:child_process";
|
|
2365
|
-
import { promisify } from "node:util";
|
|
2366
|
-
var
|
|
2705
|
+
import { execFile as execFile2 } from "node:child_process";
|
|
2706
|
+
import { promisify as promisify2 } from "node:util";
|
|
2707
|
+
var execFileAsync2 = promisify2(execFile2);
|
|
2367
2708
|
var a1AvailabilityVerified = false;
|
|
2368
2709
|
var defaultA1Exec = /* @__PURE__ */ __name(async (args, options) => {
|
|
2369
|
-
const { stdout } = await
|
|
2710
|
+
const { stdout } = await execFileAsync2("a1", [...args], {
|
|
2370
2711
|
...options,
|
|
2371
2712
|
encoding: "utf8",
|
|
2372
2713
|
windowsHide: true
|
|
@@ -2409,7 +2750,7 @@ async function resolveAoneWorkspaceRepo(workspaceCwd, env) {
|
|
|
2409
2750
|
if (!gitRoot) return void 0;
|
|
2410
2751
|
let origin;
|
|
2411
2752
|
try {
|
|
2412
|
-
({ stdout: origin } = await
|
|
2753
|
+
({ stdout: origin } = await execFileAsync2(
|
|
2413
2754
|
"git",
|
|
2414
2755
|
["remote", "get-url", "origin"],
|
|
2415
2756
|
{
|
|
@@ -2578,6 +2919,7 @@ export {
|
|
|
2578
2919
|
parseSessionPageSizeQuery,
|
|
2579
2920
|
runWithWorkspaceRuntimeStorage,
|
|
2580
2921
|
createWorkspaceRuntimeSessionService,
|
|
2922
|
+
acquireWorktreeOwnershipOp,
|
|
2581
2923
|
DaemonDrainingError,
|
|
2582
2924
|
SessionArchiveCoordinator,
|
|
2583
2925
|
deleteDaemonSessions,
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
SCHEDULED_TASK_RUN_SOURCE_ID_PREFIX
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-63ACHB2H.js";
|
|
6
6
|
import {
|
|
7
7
|
ChannelDeliveryError,
|
|
8
8
|
MAX_CHANNEL_DELIVERY_TEXT_LENGTH
|
|
9
9
|
} from "./chunk-RKFGE7JH.js";
|
|
10
10
|
import {
|
|
11
11
|
stripTerminalControlSequences
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-43CI6YWJ.js";
|
|
13
13
|
import {
|
|
14
14
|
MAX_CHANNEL_DELIVERY_NAME_LENGTH,
|
|
15
15
|
MAX_CHANNEL_DELIVERY_TARGET_ID_LENGTH
|