@qwen-code/qwen-code 0.20.0-nightly.20260721.cda0e0348 → 0.20.0-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/qc-helper/docs/configuration/settings.md +1 -1
- package/bundled/qc-helper/docs/features/auto-mode.md +19 -16
- package/bundled/qc-helper/docs/features/sub-agents.md +16 -7
- package/bundled/qc-helper/docs/integration-github-action.md +9 -9
- package/bundled/review/DESIGN.md +2 -2
- package/bundled/review/SKILL.md +4 -4
- package/chunks/{MaxSizedBox-EE76OHAP.js → MaxSizedBox-53BTJ3JK.js} +41 -34
- package/chunks/{StandaloneSessionPicker-WZH4PC3K.js → StandaloneSessionPicker-VMFIXQ44.js} +57 -50
- package/chunks/{acpAgent-2ATF4LMP.js → acpAgent-5WYAVSFG.js} +1135 -428
- package/chunks/{agent-KTOOFWMV.js → agent-44FM7PBX.js} +37 -30
- package/chunks/agent-headless-CDBMKM44.js +68 -0
- package/chunks/{anthropicContentGenerator-W4JLNYWQ.js → anthropicContentGenerator-NMSS7IMV.js} +13 -12
- package/chunks/{artifact-tool-WBCAMD3O.js → artifact-tool-56T5IMBP.js} +3 -3
- package/chunks/{askUserQuestion-6DZC4UV5.js → askUserQuestion-E25OBIC2.js} +3 -3
- package/chunks/{bridge-T4TLAZSJ.js → bridge-IQZT3KU2.js} +42 -35
- package/chunks/{build-SSCNEHZZ.js → build-GHIZ4MSZ.js} +1 -1
- package/chunks/{ca-ISKASTR5.js → ca-N6VVUFVB.js} +5 -1
- package/chunks/{channel-worker-group-QZV2SP5U.js → channel-worker-group-LFBT7K64.js} +3 -3
- package/chunks/{channel-worker-manager-3GMAU45H.js → channel-worker-manager-3RUPERG2.js} +3 -3
- package/chunks/{channel-worker-supervisor-QCXSXCRY.js → channel-worker-supervisor-A3KVATD3.js} +2 -2
- package/chunks/{chunk-OV2KB55J.js → chunk-22OH7L7I.js} +5 -5
- package/chunks/chunk-2RFKHEXL.js +74 -0
- package/chunks/{chunk-KRI4VCHX.js → chunk-45AIVIUL.js} +9 -9
- package/chunks/{chunk-2GFRA3MN.js → chunk-45DNGJKC.js} +3 -3
- package/chunks/{chunk-JD3MKVKL.js → chunk-4K56OJFJ.js} +1 -1
- package/chunks/{chunk-KTUQMDEP.js → chunk-4K7VDKAD.js} +1 -1
- package/chunks/{chunk-QKYTTBYW.js → chunk-4LVZNIDO.js} +1 -1
- package/chunks/{chunk-ZEOZL37W.js → chunk-57FIIFJN.js} +1 -1
- package/chunks/{chunk-6EFTQYW7.js → chunk-5I5BM454.js} +1 -1
- package/chunks/{chunk-JR6UJ24K.js → chunk-5JX7FPHW.js} +2 -2
- package/chunks/{chunk-25Y6JSH2.js → chunk-5MZSD2JX.js} +6 -6
- package/chunks/{chunk-GPILFVPY.js → chunk-66RKDODM.js} +1 -1
- package/chunks/{chunk-L4YSPHR4.js → chunk-6AWRQ4T2.js} +8 -6
- package/chunks/{chunk-GMGDLUC7.js → chunk-6IL7KRLE.js} +1 -1
- package/chunks/{chunk-JQMBPGOU.js → chunk-6NHK6HS7.js} +3 -3
- package/chunks/{chunk-EDMGFJ3E.js → chunk-6OHCY3OB.js} +2 -2
- package/chunks/chunk-6PVPNMXU.js +29 -0
- package/chunks/{chunk-NO6XTCYT.js → chunk-6RQ5IPUX.js} +18366 -16879
- package/chunks/{chunk-BDBMYST4.js → chunk-6X4GWOPW.js} +1 -1
- package/chunks/chunk-7362QS5B.js +2256 -0
- package/chunks/{chunk-USTF7LPI.js → chunk-7KZ2KYAD.js} +27 -23
- package/chunks/{chunk-AYCDXHZB.js → chunk-7Z6JQEL6.js} +1 -1
- package/chunks/{chunk-ABIL4ZQU.js → chunk-A7CUSHP7.js} +1 -1
- package/chunks/{chunk-246TW4IX.js → chunk-BEKZWVJJ.js} +3 -373
- package/chunks/{chunk-LC5CAVMS.js → chunk-BKZEHVPV.js} +171 -169
- package/chunks/{chunk-4CWPMWCD.js → chunk-BRHHXGWL.js} +6 -4
- package/chunks/{chunk-AY3CSB6F.js → chunk-BXXWWCLA.js} +4 -4
- package/chunks/{chunk-G45NOBV7.js → chunk-C3YZ5CLY.js} +7 -6
- package/chunks/{chunk-XCHUDLER.js → chunk-CHLNJN3C.js} +1 -1
- package/chunks/{chunk-JRW46GQX.js → chunk-CJTAUXKG.js} +3 -3
- package/chunks/{chunk-KTNIZG2C.js → chunk-CMRYLH67.js} +2 -2
- package/chunks/{chunk-WQQDJE2P.js → chunk-DKZISEDB.js} +54 -51
- package/chunks/{chunk-2ITGJJE2.js → chunk-DORJSBMF.js} +6 -6
- package/chunks/{chunk-5SCI6E3E.js → chunk-E4IMU4Y5.js} +1 -1
- package/chunks/{chunk-7KGXAXF7.js → chunk-E5MVGARW.js} +1 -1
- package/chunks/{chunk-FYA3Y5JR.js → chunk-EJFHUF3D.js} +5 -5
- package/chunks/{chunk-CG2HPAVD.js → chunk-EPN5MKRH.js} +2 -2
- package/chunks/{chunk-NEEB7UEN.js → chunk-FFFM6NJV.js} +1 -2
- package/chunks/chunk-FMXMKPI5.js +1780 -0
- package/chunks/{chunk-FEOZBUMT.js → chunk-FODK6UMO.js} +0 -27
- package/chunks/{chunk-DZZIOIVF.js → chunk-FSXCGBXB.js} +1 -1
- package/chunks/chunk-GLNBDYUX.js +38 -0
- package/chunks/{chunk-6MC5ASQK.js → chunk-GOWMC4CS.js} +4 -4
- package/chunks/{chunk-OONJNQ42.js → chunk-GPSKDNEE.js} +3 -3
- package/chunks/{chunk-W3BKN3LO.js → chunk-GZBHRTNM.js} +1 -1
- package/chunks/{chunk-XVVH63JG.js → chunk-H4AR2JQF.js} +3 -3
- package/chunks/{chunk-LWQ4IAOJ.js → chunk-H4OWOFZL.js} +2 -2
- package/chunks/chunk-HTR4WV6U.js +327 -0
- package/chunks/{chunk-IYZENXFW.js → chunk-IE7TPOXP.js} +1 -1
- package/chunks/{chunk-R3VZNHRX.js → chunk-IT27F3ES.js} +290 -80
- package/chunks/{chunk-5JX5EWR5.js → chunk-J3VSRG5Y.js} +61 -21
- package/chunks/{chunk-R5N7NF5D.js → chunk-J63IP5ZT.js} +7 -7
- package/chunks/{chunk-G45X5TRN.js → chunk-JCW2R7WC.js} +1 -72
- package/chunks/{chunk-U4VGYZN7.js → chunk-JD5FHQ3N.js} +3 -3
- package/chunks/{chunk-5WG2K5RH.js → chunk-JIHHXJFH.js} +90 -31
- package/chunks/{chunk-AWVS63WA.js → chunk-JJEFX6U5.js} +28 -1766
- package/chunks/{chunk-5PZ6R37W.js → chunk-JT7HACMQ.js} +2 -2
- package/chunks/{chunk-2GOPPEHK.js → chunk-JWJVZHT5.js} +2 -2
- package/chunks/{chunk-FZVSFBNW.js → chunk-JYS55H6Z.js} +41 -1
- package/chunks/{chunk-6DHWO5ZF.js → chunk-K4VB66QF.js} +11 -11
- package/chunks/{chunk-EIAK6Q2B.js → chunk-KHOVYUHX.js} +2 -2
- package/chunks/{chunk-2CWOJ2FA.js → chunk-KNTYRZD4.js} +8 -8
- package/chunks/{chunk-ACW3VNUE.js → chunk-KQQ757OQ.js} +1 -1
- package/chunks/chunk-KWK7UE6L.js +6194 -0
- package/chunks/{chunk-OOCI5VVU.js → chunk-LIZRAKPB.js} +1 -1
- package/chunks/{chunk-4RA7PWIY.js → chunk-LMQNDPVP.js} +3 -3
- package/chunks/chunk-M7WBGLYP.js +151 -0
- package/chunks/chunk-NABLFI57.js +82 -0
- package/chunks/{chunk-EZVDJFZ7.js → chunk-NPQDJGKU.js} +1 -1
- package/chunks/{chunk-GH7OEOYU.js → chunk-NYPUWHHC.js} +4 -4
- package/chunks/{chunk-DMRO4GU2.js → chunk-OAGG6CRR.js} +1 -1
- package/chunks/chunk-OQ5SYCPE.js +10017 -0
- package/chunks/{chunk-C27BYUX6.js → chunk-OQB4EXO4.js} +14 -11
- package/chunks/chunk-OZYV6F53.js +391 -0
- package/chunks/{chunk-EAUYY7SS.js → chunk-Q2YKNMLS.js} +3 -3
- package/chunks/{chunk-PYNCSQSI.js → chunk-Q6DEGTYO.js} +50 -1493
- package/chunks/{chunk-PBATSWUQ.js → chunk-QBUDF33N.js} +1 -1
- package/chunks/{chunk-32F7BZSK.js → chunk-QD6BRERJ.js} +2 -2
- package/chunks/{chunk-6RVJRVQR.js → chunk-QF4DPYPH.js} +1 -1
- package/chunks/{chunk-BVLROR2T.js → chunk-QLJUC7TG.js} +1 -1
- package/chunks/{chunk-UEY4AYUL.js → chunk-QNLNLENL.js} +2 -2
- package/chunks/{chunk-XZOBDSDG.js → chunk-QTROYZUC.js} +83 -39
- package/chunks/{chunk-BWK3FX3K.js → chunk-RAUHV362.js} +3 -3
- package/chunks/{chunk-JPRLCXAO.js → chunk-RUNR5DAE.js} +4 -4
- package/chunks/{chunk-RFIAR4YL.js → chunk-RV4C2ZFG.js} +1 -1
- package/chunks/{chunk-E5QFCC4X.js → chunk-RWCQJC5W.js} +51 -35
- package/chunks/{chunk-BUKOHGBE.js → chunk-S4BT3PX3.js} +3 -3
- package/chunks/{chunk-PFKNXN67.js → chunk-SOMSZ6W3.js} +13 -8
- package/chunks/{chunk-JNWZQ27S.js → chunk-SP5WRGVG.js} +3 -3
- package/chunks/{chunk-FSL5W5TI.js → chunk-T2L47JJK.js} +3 -3
- package/chunks/{chunk-TB6UDU4T.js → chunk-THJNPLI4.js} +16 -16
- package/chunks/chunk-TJQXJJX7.js +121 -0
- package/chunks/chunk-U7ZFW55U.js +2098 -0
- package/chunks/{chunk-W7H223ZZ.js → chunk-UGYMA4EI.js} +1 -1
- package/chunks/{chunk-X6YQWCIJ.js → chunk-UH3WSE5L.js} +13 -1
- package/chunks/{chunk-WRRF6TEQ.js → chunk-VHYCUGOT.js} +5 -1
- package/chunks/{chunk-LLDGOZMJ.js → chunk-VI7UU7ZI.js} +4 -4
- package/chunks/{chunk-IM2A6YO3.js → chunk-VLBJ7ZUG.js} +1 -1
- package/chunks/{chunk-CUJX3F4X.js → chunk-VTKWURCJ.js} +5 -5
- package/chunks/{chunk-R3VWUU2E.js → chunk-VYPFXUCB.js} +1 -1
- package/chunks/chunk-WHGVTP7Q.js +1049 -0
- package/chunks/{chunk-5YVZ2XLV.js → chunk-X6KLM4LZ.js} +8 -8
- package/chunks/{chunk-D2VIDMVM.js → chunk-X6N25LXS.js} +2 -2
- package/chunks/{chunk-B452RETY.js → chunk-XFWD3PCA.js} +1 -1
- package/chunks/chunk-XHATNRQA.js +1500 -0
- package/chunks/{chunk-YGIUIIIF.js → chunk-XP32LURS.js} +3 -3
- package/chunks/{chunk-FCUUJKZF.js → chunk-YDLVKCZJ.js} +496 -278
- package/chunks/{chunk-OP4MOGXF.js → chunk-YM3SZTH4.js} +8 -1
- package/chunks/{chunk-GKY2OJ7R.js → chunk-ZHERRXZJ.js} +1 -1
- package/chunks/chunk-ZJVVETCV.js +20600 -0
- package/chunks/{computer-use-M6MGRJF2.js → computer-use-FMEBQMCB.js} +42 -35
- package/chunks/{config-utils-MOGE4EVB.js → config-utils-WYUQ7II4.js} +1 -1
- package/chunks/contextCommand-5YK3QNNJ.js +73 -0
- package/chunks/{create-sub-session-P26FE5GG.js → create-sub-session-AZ77LBL3.js} +3 -3
- package/chunks/{create-sub-session-MB35IHCR.js → create-sub-session-MLELTOCW.js} +37 -30
- package/chunks/{cron-create-JWFHBDRQ.js → cron-create-KTWJM7QT.js} +5 -5
- package/chunks/{cron-delete-GDX4E26G.js → cron-delete-2P3I5ULL.js} +5 -5
- package/chunks/{cron-list-USMAIWPT.js → cron-list-PXDPGEDQ.js} +5 -5
- package/chunks/daemon-status-provider-FXMOD242.js +81 -0
- package/chunks/{de-I7ZIYXZC.js → de-4IBXM7CN.js} +5 -1
- package/chunks/{dist-VGJTZL4E.js → dist-XRYV6TJP.js} +32 -3
- package/chunks/{earlyInputCapture-7QJX25AC.js → earlyInputCapture-N3J42S2G.js} +38 -31
- package/chunks/{edit-BTPQWGAA.js → edit-T6GO7VPW.js} +42 -37
- package/chunks/{en-XE34GKAA.js → en-USMCCJAJ.js} +5 -1
- package/chunks/{enter-worktree-N3SEYKOO.js → enter-worktree-OL3FMR3A.js} +42 -35
- package/chunks/{enterPlanMode-TN2JV5MY.js → enterPlanMode-LEP7BSBX.js} +42 -35
- package/chunks/{environment-HP6RK262.js → environment-6LNBH2LJ.js} +39 -32
- package/chunks/{errors-VHGRDDOQ.js → errors-IM3H4DNG.js} +39 -32
- package/chunks/{exit-worktree-FI3SQY3U.js → exit-worktree-6MOANJMY.js} +42 -35
- package/chunks/{exitPlanMode-NZWRVIIY.js → exitPlanMode-VLBSWDJK.js} +42 -35
- package/chunks/{fast-path-EGP7AXNR.js → fast-path-3Z3JY4BL.js} +3 -3
- package/chunks/{fast-path-settings-DAOVFADC.js → fast-path-settings-XB3CPUJT.js} +2 -2
- package/chunks/{fr-X7KDVZIY.js → fr-WVHEBDDB.js} +5 -1
- package/chunks/{gemini-AN5YMD5O.js → gemini-VDE6O6CX.js} +89 -82
- package/chunks/{geminiContentGenerator-ABTMU4FE.js → geminiContentGenerator-NN4ZWALY.js} +5 -5
- package/chunks/{getMachineId-bsd-EXV7SWPA.js → getMachineId-bsd-QFVLPUPT.js} +1 -1
- package/chunks/{getMachineId-darwin-IUOMFXU3.js → getMachineId-darwin-DGMQQE2E.js} +1 -1
- package/chunks/{getMachineId-linux-K7XJYFHL.js → getMachineId-linux-R4Z6CSWC.js} +1 -1
- package/chunks/{getMachineId-unsupported-EA5FDRJ6.js → getMachineId-unsupported-Z3SBVBUV.js} +1 -1
- package/chunks/{getMachineId-win-KBA6RAI5.js → getMachineId-win-SCK5UFDT.js} +1 -1
- package/chunks/{glob-5YABOPJB.js → glob-7AZHIY3Z.js} +42 -35
- package/chunks/{grep-U67FKUJT.js → grep-E2KEORSD.js} +42 -35
- package/chunks/handleAutoUpdate-BCNVTQWW.js +74 -0
- package/chunks/{i18n-GMQV324P.js → i18n-VP4NCTZN.js} +38 -31
- package/chunks/initializer-5UB4SRPK.js +79 -0
- package/chunks/installationInfo-LNYJCXN3.js +73 -0
- package/chunks/{ja-2ICT3KXF.js → ja-KY4ROZTE.js} +5 -1
- package/chunks/{keychain-token-storage-DWRJMNH3.js → keychain-token-storage-6ACJDYIB.js} +3 -3
- package/chunks/list-NIZ77KPE.js +82 -0
- package/chunks/loadedSettingsAdapter-IQPRO2SO.js +76 -0
- package/chunks/{loop-wakeup-5GLTUBHA.js → loop-wakeup-RNMRVA66.js} +6 -6
- package/chunks/{ls-FHBY3Y7I.js → ls-J2ZI5XYK.js} +5 -5
- package/chunks/{lsp-B6VMEW6Y.js → lsp-UMS3NUB5.js} +3 -3
- package/chunks/managed-npm-update-GFRDCD77.js +333 -0
- package/chunks/mcp-TCUL7LT2.js +76 -0
- package/chunks/{monitor-Z7NZNNRC.js → monitor-NDYKU5VS.js} +42 -35
- package/chunks/nonInteractiveCli-UHSHJDFD.js +133 -0
- package/chunks/{notebook-edit-GFOYAQAZ.js → notebook-edit-GF3HSMXN.js} +43 -38
- package/chunks/{openaiContentGenerator-XAAYV6WR.js → openaiContentGenerator-GE2I3C2T.js} +22 -17
- package/chunks/{pidfile-ILI37KRQ.js → pidfile-KS4IGGNX.js} +38 -31
- package/chunks/{processUtils-LIPJMLVZ.js → processUtils-TEQQ47A2.js} +2 -2
- package/chunks/{pt-JJ4XPIBP.js → pt-OK455PLH.js} +5 -1
- package/chunks/{qwenContentGenerator-DLJ3KKGZ.js → qwenContentGenerator-NDYOEIUY.js} +44 -35
- package/chunks/{qwenOAuth2-J47FU5PW.js → qwenOAuth2-CXDOBPSK.js} +18 -15
- package/chunks/{read-file-LCQ2KNNP.js → read-file-QDVJX75S.js} +13 -11
- package/chunks/{read-mcp-resource-AKCL7I43.js → read-mcp-resource-F6HYMDUY.js} +3 -3
- package/chunks/{record-artifact-PEUB7727.js → record-artifact-7GCFLDD7.js} +3 -3
- package/chunks/{resumeHistoryUtils-PSCSAKA6.js → resumeHistoryUtils-5EAQ76W4.js} +43 -36
- package/chunks/ripGrep-WANMXNVT.js +66 -0
- package/chunks/{ru-STR4KTW7.js → ru-7SPDGMGD.js} +5 -1
- package/chunks/{run-qwen-serve-DQ5ZIR36.js → run-qwen-serve-TC6M3WTJ.js} +85 -80
- package/chunks/{runtime-6MQFF2A6.js → runtime-BB73E3Z3.js} +45 -38
- package/chunks/{scheduler-K4S7NY3G.js → scheduler-NDU5OFSJ.js} +37 -30
- package/chunks/sdk-exporters-grpc-ETLH47EP.js +23214 -0
- package/chunks/sdk-exporters-http-T3POX73F.js +563 -0
- package/chunks/sdk-impl-NSLPDH6I.js +9193 -0
- package/chunks/{send-message-3RHE7HSM.js → send-message-PYIJ2PZL.js} +6 -4
- package/chunks/{serve-JFAAPC5J.js → serve-BTIRWZJ4.js} +43 -36
- package/chunks/{server-QB6CHRZN.js → server-JKAQBE2E.js} +277 -208
- package/chunks/{session-FKPVXAAB.js → session-66QFVVDS.js} +81 -74
- package/chunks/{settings-CADELKSU.js → settings-NBN6GY7E.js} +46 -39
- package/chunks/{shell-EON6WVVH.js → shell-JDSLAQVH.js} +37 -30
- package/chunks/{skill-FKSYXJ5U.js → skill-TNMHTO3C.js} +24 -20
- package/chunks/{spawnChannel-VM5IHLJO.js → spawnChannel-TFLHHXOC.js} +39 -32
- package/chunks/{src-Q4XB6SVD.js → src-YFXMPRBL.js} +254 -210
- package/chunks/{standalone-update-KGZHPBMA.js → standalone-update-2CQVQRSC.js} +39 -32
- package/chunks/{startInteractiveUI-EYDJIIIZ.js → startInteractiveUI-6C6PENRW.js} +370 -266
- package/chunks/{syntheticOutput-FG5PQKIR.js → syntheticOutput-H7RTI5KL.js} +4 -4
- package/chunks/{task-create-HX32YXO7.js → task-create-7474AJJD.js} +10 -8
- package/chunks/{task-list-QWSY4ZIU.js → task-list-633HGOIB.js} +6 -6
- package/chunks/{task-stop-GWC6UWAL.js → task-stop-MNUGHPIA.js} +3 -3
- package/chunks/{task-update-NCTAB73Q.js → task-update-66GQB5LI.js} +10 -8
- package/chunks/{team-create-CYP3YKYT.js → team-create-IPBHD26Z.js} +42 -35
- package/chunks/{team-delete-KK37HTOG.js → team-delete-BB3CG3QF.js} +6 -6
- package/chunks/{team-plan-approval-5LXIFKNV.js → team-plan-approval-WIGEJXXM.js} +42 -35
- package/chunks/theme-manager-OZYKJG3W.js +70 -0
- package/chunks/{todoWrite-ERCAMLFS.js → todoWrite-KRAUN54W.js} +5 -5
- package/chunks/{tool-search-Q27QHQU3.js → tool-search-J3CBYJRB.js} +21 -17
- package/chunks/total-session-admission-CNBQRM44.js +76 -0
- package/chunks/{trustedFolders-C6664IQC.js → trustedFolders-5FJRCHGN.js} +38 -31
- package/chunks/{update-relaunch-QC3E4FZW.js → update-relaunch-S5APSFJS.js} +13 -13
- package/chunks/{updateCheck-MVUKJMBX.js → updateCheck-BPSMOZXS.js} +46 -34
- package/chunks/{useAutoAcceptIndicator-J234IFIS.js → useAutoAcceptIndicator-WZVJ52U3.js} +47 -40
- package/chunks/{validateNonInterActiveAuth-YPPEKX4N.js → validateNonInterActiveAuth-64SVMELJ.js} +75 -68
- package/chunks/{version-5IXFQ4PT.js → version-SQL27GUA.js} +1 -1
- package/chunks/{web-fetch-L62NQVKN.js → web-fetch-K7QCHIOJ.js} +100 -41
- package/chunks/web-search-KQPQFM7A.js +731 -0
- package/chunks/{workflow-6MHBBFQU.js → workflow-BFTW72A5.js} +47 -39
- package/chunks/workspace-providers-status-4PLI2VFC.js +79 -0
- package/chunks/{workspace-registration-store-P6QHCSMU.js → workspace-registration-store-VAVPVIF3.js} +2 -2
- package/chunks/workspace-registry-I4ZRHGBS.js +80 -0
- package/chunks/workspace-service-RXYBWBDJ.js +91 -0
- package/chunks/workspace-skills-status-35Z2FU4I.js +78 -0
- package/chunks/write-file-KCL5RI2I.js +66 -0
- package/chunks/{zh-TW-4RR3YHNN.js → zh-TW-BM47YBFH.js} +5 -1
- package/chunks/{zh-6ANG2HTL.js → zh-WY5DWYZD.js} +5 -1
- package/cli-entry.js +164 -12
- package/cli.js +18 -11
- package/locales/ca.js +10 -3
- package/locales/de.js +8 -2
- package/locales/en.js +8 -2
- package/locales/fr.js +8 -2
- package/locales/ja.js +8 -2
- package/locales/pt.js +8 -2
- package/locales/ru.js +8 -2
- package/locales/zh-TW.js +8 -2
- package/locales/zh.js +8 -2
- package/package.json +3 -3
- package/web-shell/assets/{arc-B0iTWRo2.js → arc-ByltRugA.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-DSQP4-9D.js → architectureDiagram-3BPJPVTR-CCRTto5d.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-BNPVXVT3.js → blockDiagram-GPEHLZMM-Jfy36u1L.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DEHfJFiD.js → c4Diagram-AAUBKEIU-4d5FfEZ0.js} +1 -1
- package/web-shell/assets/channel-4N2UIFcG.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-VZ0uL1p9.js → chunk-2J33WTMH-BPwxCEro.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-D5TKmvwG.js → chunk-4BX2VUAB-jY7ZmJWY.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-BDW1Lcq-.js → chunk-55IACEB6-C98HgCsS.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-Cj4h85iM.js → chunk-727SXJPM-cDu-ge-q.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-5LeqiOhZ.js → chunk-AQP2D5EJ-BKdJwxXK.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-BaTgsco7.js → chunk-FMBD7UC4-DnuxqwMu.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-t3uGlIUk.js → chunk-ND2GUHAM-C4fZNPv0.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-rOnNXL2Q.js → chunk-QZHKN3VN-Cf4XWOmz.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-Q4dYOtsh.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Q4dYOtsh.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-CcqXykgA.js → cose-bilkent-S5V4N54A-C82mFiqj.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-Dkjrchoy.js → dagre-BM42HDAG-Df8KACER.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-B6lcra9M.js → diagram-2AECGRRQ-EzNs7s_2.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-bAIzq3PT.js → diagram-5GNKFQAL-BRLNvreg.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-G9MAZDNW.js → diagram-KO2AKTUF-2HLYHRjC.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DVLF1uWZ.js → diagram-LMA3HP47-DeH0NzSp.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-Cf7y20Tc.js → diagram-OG6HWLK6-k5Gn47-G.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-C7ETZB3o.js → erDiagram-TEJ5UH35-gPHFo79f.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-Cl2xgL6J.js → flowDiagram-I6XJVG4X-DYBOiTRW.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BgjbMs3q.js → ganttDiagram-6RSMTGT7-cxjAuic9.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-JVX34Omm.js → gitGraphDiagram-PVQCEYII-3nPqpmCP.js} +1 -1
- package/web-shell/assets/index-B7jzUZ_s.css +5 -0
- package/web-shell/assets/{index-BG7Zc4f_.js → index-Cl8d-1bK.js} +1 -1
- package/web-shell/assets/index-gE8OWwj_.js +1197 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-3NYyMeZU.js → infoDiagram-5YYISTIA-Dph21pR5.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-C03VCu-U.js → ishikawaDiagram-YF4QCWOH-Cjg1hSaG.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-C9PuBRZW.js → journeyDiagram-JHISSGLW-CR-IzvnU.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-C3LvioWR.js → kanban-definition-UN3LZRKU-BYmuybuC.js} +1 -1
- package/web-shell/assets/{linear-Du6Yw8N_.js → linear-CngEEoy8.js} +1 -1
- package/web-shell/assets/{mermaid.core-BXY5D2-X.js → mermaid.core-G6fbZRPf.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-2UrHLaDp.js → mindmap-definition-RKZ34NQL-BtnqnUwJ.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-dC03ml45.js → pieDiagram-4H26LBE5-XTq6UHIA.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CD6jARrp.js → quadrantDiagram-W4KKPZXB-D1J5PrsS.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BrK8aXfv.js → requirementDiagram-4Y6WPE33-CLcBUy3t.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-B5Vitki_.js → sankeyDiagram-5OEKKPKP-iwKV02_6.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CBy2t6Bo.js → sequenceDiagram-3UESZ5HK-7NFYQcEX.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-Enrka6T2.js → stateDiagram-AJRCARHV-Bvm4Wih6.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-xXU_zO2Z.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-CwFq78ss.js → timeline-definition-PNZ67QCA-B4FZFE9O.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BkOidM0g.js → vennDiagram-CIIHVFJN-CvMBpmtL.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-D_j13hQW.js → wardley-L42UT6IY-E3ag2327.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-7EveB1w6.js → wardleyDiagram-YWT4CUSO-BEXWlgxC.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-DRkBhMXr.js → xychartDiagram-2RQKCTM6-CICK05gI.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/agent-headless-WVJCQ27D.js +0 -61
- package/chunks/chunk-CPCVCKKF.js +0 -358
- package/chunks/chunk-P64HXIC5.js +0 -74712
- package/chunks/chunk-RF34V75B.js +0 -45
- package/chunks/chunk-W7FJ3N32.js +0 -49
- package/chunks/contextCommand-HTRJJYNE.js +0 -66
- package/chunks/daemon-status-provider-67EKK6S3.js +0 -74
- package/chunks/handleAutoUpdate-OOKBP5VD.js +0 -67
- package/chunks/initializer-NWALZGQ5.js +0 -72
- package/chunks/installationInfo-Y3M433E7.js +0 -66
- package/chunks/list-CQDDWHTS.js +0 -75
- package/chunks/loadedSettingsAdapter-I5KG37EI.js +0 -69
- package/chunks/mcp-24HHCBSP.js +0 -69
- package/chunks/nonInteractiveCli-GVF2XDJT.js +0 -126
- package/chunks/ripGrep-Y2XW4EFC.js +0 -59
- package/chunks/theme-manager-QOUMDWMP.js +0 -63
- package/chunks/total-session-admission-HWVCZ2WR.js +0 -69
- package/chunks/workspace-providers-status-ZTW2B5QU.js +0 -72
- package/chunks/workspace-registry-R54M5O3W.js +0 -73
- package/chunks/workspace-service-WYLRGM4A.js +0 -84
- package/chunks/workspace-skills-status-NN5QFU3A.js +0 -71
- package/chunks/write-file-EAT3CHUK.js +0 -596
- package/web-shell/assets/channel-tVz-qNSq.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CWuaBxYV.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CWuaBxYV.js +0 -1
- package/web-shell/assets/index-48bIcdqF.js +0 -1197
- package/web-shell/assets/index-BI-JAO07.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DUtYfXpW.js +0 -1
- package/chunks/{chunk-H24SOJIQ.js → chunk-D7WXIW7H.js} +3 -3
- package/chunks/{chunk-PEJWA3QQ.js → chunk-QZJY47IE.js} +5 -5
- package/chunks/{dist-XBJVSWS2.js → dist-HMU6CYS4.js} +1 -1
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import {
|
|
4
|
-
openQwenAsrRealtimeStream,
|
|
5
|
-
openVoiceStream,
|
|
6
|
-
openVoiceStreamWithRetry
|
|
7
|
-
} from "./chunk-GKY2OJ7R.js";
|
|
8
3
|
import {
|
|
9
4
|
GENERATION_MAX_PROMPT_BYTES,
|
|
10
5
|
MAX_REMEMBER_CONTENT_BYTES,
|
|
@@ -19,7 +14,12 @@ import {
|
|
|
19
14
|
shouldSuppressRememberErrorDetails,
|
|
20
15
|
workspaceMemoryFailureCode,
|
|
21
16
|
workspaceMemoryFailureDiagnostics
|
|
22
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-EPN5MKRH.js";
|
|
18
|
+
import {
|
|
19
|
+
openQwenAsrRealtimeStream,
|
|
20
|
+
openVoiceStream,
|
|
21
|
+
openVoiceStreamWithRetry
|
|
22
|
+
} from "./chunk-ZHERRXZJ.js";
|
|
23
23
|
import {
|
|
24
24
|
SetupGithubError,
|
|
25
25
|
collectSessionData,
|
|
@@ -30,21 +30,17 @@ import {
|
|
|
30
30
|
toJson,
|
|
31
31
|
toJsonl,
|
|
32
32
|
toMarkdown
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-SOMSZ6W3.js";
|
|
34
34
|
import {
|
|
35
35
|
OBSERVED_CONTACT_MAX_FRESH_WITHIN_SECONDS,
|
|
36
36
|
ObservedChannelContactStore
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import "./chunk-6RVJRVQR.js";
|
|
37
|
+
} from "./chunk-4K7VDKAD.js";
|
|
39
38
|
import "./chunk-RS7MT2QG.js";
|
|
39
|
+
import "./chunk-QF4DPYPH.js";
|
|
40
40
|
import "./chunk-H2XVO6NE.js";
|
|
41
41
|
import "./chunk-QHTIBUWB.js";
|
|
42
42
|
import "./chunk-QTERJVPZ.js";
|
|
43
43
|
import "./chunk-L573Z2QZ.js";
|
|
44
|
-
import {
|
|
45
|
-
createSingleWorkspaceRegistry,
|
|
46
|
-
createWorkspaceSessionOwnerIndex
|
|
47
|
-
} from "./chunk-W7H223ZZ.js";
|
|
48
44
|
import {
|
|
49
45
|
CAPABILITIES_SCHEMA_VERSION,
|
|
50
46
|
CLIENT_ID_HEADER,
|
|
@@ -100,29 +96,29 @@ import {
|
|
|
100
96
|
setRateLimiter,
|
|
101
97
|
unsafeRevealSecret,
|
|
102
98
|
validateMcpRuntimeServerName
|
|
103
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-BKZEHVPV.js";
|
|
104
100
|
import {
|
|
105
101
|
isLoopbackBind
|
|
106
102
|
} from "./chunk-RXFQM6FQ.js";
|
|
107
103
|
import {
|
|
108
104
|
createDaemonStatusProvider
|
|
109
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-VI7UU7ZI.js";
|
|
110
106
|
import "./chunk-LXXMOYPL.js";
|
|
111
|
-
import "./chunk-
|
|
107
|
+
import "./chunk-NYPUWHHC.js";
|
|
112
108
|
import "./chunk-E5Z2AVNV.js";
|
|
113
109
|
import {
|
|
114
110
|
createWorkspaceProvidersStatusProvider
|
|
115
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-KNTYRZD4.js";
|
|
116
112
|
import {
|
|
117
113
|
getAuthTypeFromEnv,
|
|
118
114
|
resolveCliGenerationConfig
|
|
119
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-6AWRQ4T2.js";
|
|
120
116
|
import {
|
|
121
117
|
snapshotProcessEnv
|
|
122
|
-
} from "./chunk-
|
|
118
|
+
} from "./chunk-5JX7FPHW.js";
|
|
123
119
|
import {
|
|
124
120
|
createWorkspaceSkillsStatusProvider
|
|
125
|
-
} from "./chunk-
|
|
121
|
+
} from "./chunk-CJTAUXKG.js";
|
|
126
122
|
import "./chunk-2W3OOD4W.js";
|
|
127
123
|
import {
|
|
128
124
|
EMPTY_WORKSPACE_VOICE_UPDATE_ERROR,
|
|
@@ -137,14 +133,14 @@ import {
|
|
|
137
133
|
validateWorkspaceSkillName,
|
|
138
134
|
validateWorkspaceVoiceState,
|
|
139
135
|
voiceSettingsScopeToWire
|
|
140
|
-
} from "./chunk-
|
|
136
|
+
} from "./chunk-45AIVIUL.js";
|
|
141
137
|
import {
|
|
142
138
|
PermissionRulesValidationError,
|
|
143
139
|
buildPermissionSettings,
|
|
144
140
|
isPermissionRuleType,
|
|
145
141
|
normalizePermissionRules,
|
|
146
142
|
readPermissionRuleSet
|
|
147
|
-
} from "./chunk-
|
|
143
|
+
} from "./chunk-VLBJ7ZUG.js";
|
|
148
144
|
import {
|
|
149
145
|
assertVoiceBaseUrlNetworkAllowed,
|
|
150
146
|
isStreamingVoiceModel,
|
|
@@ -152,13 +148,13 @@ import {
|
|
|
152
148
|
resolveVoiceTranscriptionConfig,
|
|
153
149
|
sanitizeVoiceErrorMessage,
|
|
154
150
|
transcribeVoiceAudio
|
|
155
|
-
} from "./chunk-
|
|
151
|
+
} from "./chunk-JD5FHQ3N.js";
|
|
156
152
|
import {
|
|
157
153
|
isVoiceEnabled,
|
|
158
154
|
isVoiceMode,
|
|
159
155
|
readVoiceModel
|
|
160
|
-
} from "./chunk-
|
|
161
|
-
import "./chunk-
|
|
156
|
+
} from "./chunk-66RKDODM.js";
|
|
157
|
+
import "./chunk-QLJUC7TG.js";
|
|
162
158
|
import {
|
|
163
159
|
WorkspacePermissionRulesSessionRequiredError,
|
|
164
160
|
WorkspaceSettingsPartialPersistError,
|
|
@@ -167,21 +163,35 @@ import {
|
|
|
167
163
|
} from "./chunk-OA4JVLSA.js";
|
|
168
164
|
import {
|
|
169
165
|
createTotalSessionAdmissionController
|
|
170
|
-
} from "./chunk-
|
|
166
|
+
} from "./chunk-VYPFXUCB.js";
|
|
167
|
+
import {
|
|
168
|
+
createSingleWorkspaceRegistry,
|
|
169
|
+
createWorkspaceSessionOwnerIndex
|
|
170
|
+
} from "./chunk-UGYMA4EI.js";
|
|
171
171
|
import "./chunk-GRC5HGPI.js";
|
|
172
|
+
import {
|
|
173
|
+
daemonObservedContactsPath,
|
|
174
|
+
loadChannelsConfig
|
|
175
|
+
} from "./chunk-VTKWURCJ.js";
|
|
176
|
+
import "./chunk-GOWMC4CS.js";
|
|
177
|
+
import "./chunk-57OAHC2Y.js";
|
|
178
|
+
import {
|
|
179
|
+
parseChannelWebhookConfigLenient
|
|
180
|
+
} from "./chunk-QD6BRERJ.js";
|
|
181
|
+
import "./chunk-6ZBPS62S.js";
|
|
182
|
+
import "./chunk-V6WHFGST.js";
|
|
172
183
|
import {
|
|
173
184
|
SessionArtifactAuthorizationError,
|
|
174
185
|
SessionArtifactValidationError,
|
|
175
186
|
createAcpSessionBridge,
|
|
176
187
|
parseSessionSource
|
|
177
|
-
} from "./chunk-
|
|
188
|
+
} from "./chunk-IT27F3ES.js";
|
|
178
189
|
import {
|
|
179
190
|
EVENT_SCHEMA_VERSION,
|
|
180
191
|
SubscriberLimitExceededError
|
|
181
192
|
} from "./chunk-6RLROE6G.js";
|
|
182
193
|
import "./chunk-COH43MRJ.js";
|
|
183
194
|
import "./chunk-QR6U5QPP.js";
|
|
184
|
-
import "./chunk-DMRO4GU2.js";
|
|
185
195
|
import {
|
|
186
196
|
BranchWhilePromptActiveError,
|
|
187
197
|
CancelSentinelCollisionError,
|
|
@@ -195,6 +205,7 @@ import {
|
|
|
195
205
|
McpServerRestartFailedError,
|
|
196
206
|
PermissionForbiddenError,
|
|
197
207
|
PermissionPolicyNotImplementedError,
|
|
208
|
+
PromptDeadlineExceededError,
|
|
198
209
|
PromptQueueFullError,
|
|
199
210
|
RestoreInProgressError,
|
|
200
211
|
SessionArchivedError,
|
|
@@ -213,37 +224,13 @@ import {
|
|
|
213
224
|
WorkspaceInitRaceError,
|
|
214
225
|
WorkspaceInitSymlinkError,
|
|
215
226
|
WorkspaceMismatchError
|
|
216
|
-
} from "./chunk-
|
|
227
|
+
} from "./chunk-UH3WSE5L.js";
|
|
228
|
+
import "./chunk-OAGG6CRR.js";
|
|
217
229
|
import {
|
|
218
230
|
STATUS_SCHEMA_VERSION,
|
|
219
231
|
createIdleWorkspaceMemoryStatus,
|
|
220
232
|
mapDomainErrorToErrorKind
|
|
221
|
-
} from "./chunk-
|
|
222
|
-
import "./chunk-WBL3FJEU.js";
|
|
223
|
-
import {
|
|
224
|
-
daemonObservedContactsPath,
|
|
225
|
-
loadChannelsConfig
|
|
226
|
-
} from "./chunk-CUJX3F4X.js";
|
|
227
|
-
import "./chunk-6MC5ASQK.js";
|
|
228
|
-
import "./chunk-57OAHC2Y.js";
|
|
229
|
-
import {
|
|
230
|
-
parseChannelWebhookConfigLenient
|
|
231
|
-
} from "./chunk-32F7BZSK.js";
|
|
232
|
-
import "./chunk-6ZBPS62S.js";
|
|
233
|
-
import "./chunk-V6WHFGST.js";
|
|
234
|
-
import {
|
|
235
|
-
MAX_REGISTERED_WORKSPACES,
|
|
236
|
-
WorkspaceDisplayNameValidationError,
|
|
237
|
-
WorkspaceRegistrationStoreCommittedError,
|
|
238
|
-
WorkspaceRegistrationStoreLimitError,
|
|
239
|
-
normalizeWorkspaceDisplayName,
|
|
240
|
-
workspaceRegistrationId
|
|
241
|
-
} from "./chunk-LWQ4IAOJ.js";
|
|
242
|
-
import {
|
|
243
|
-
MAX_WORKSPACE_PATH_LENGTH,
|
|
244
|
-
canonicalizeWorkspace,
|
|
245
|
-
canonicalizeWorkspaces
|
|
246
|
-
} from "./chunk-W7FJ3N32.js";
|
|
233
|
+
} from "./chunk-FSXCGBXB.js";
|
|
247
234
|
import {
|
|
248
235
|
MAX_CHANNEL_STARTUP_FAILURES,
|
|
249
236
|
MAX_CHANNEL_STARTUP_FAILURE_CHANNEL_LENGTH,
|
|
@@ -259,7 +246,7 @@ import {
|
|
|
259
246
|
import {
|
|
260
247
|
redactLogCredentials
|
|
261
248
|
} from "./chunk-M5GB774H.js";
|
|
262
|
-
import "./chunk-
|
|
249
|
+
import "./chunk-WBL3FJEU.js";
|
|
263
250
|
import "./chunk-T2NCM2ET.js";
|
|
264
251
|
import {
|
|
265
252
|
sanitizeLogText
|
|
@@ -274,23 +261,38 @@ import {
|
|
|
274
261
|
getWritableScopes,
|
|
275
262
|
loadSettings,
|
|
276
263
|
validateSettingValue
|
|
277
|
-
} from "./chunk-
|
|
264
|
+
} from "./chunk-J3VSRG5Y.js";
|
|
278
265
|
import "./chunk-RKUWKYED.js";
|
|
279
|
-
import "./chunk-GOXKNSDZ.js";
|
|
280
|
-
import "./chunk-IDS7MSUP.js";
|
|
281
266
|
import {
|
|
282
267
|
SUPPORTED_LANGUAGES,
|
|
283
268
|
detectSystemLanguage,
|
|
284
269
|
resolveLanguageSetting,
|
|
285
270
|
resolveSupportedLanguage
|
|
286
|
-
} from "./chunk-
|
|
287
|
-
import "./chunk-
|
|
271
|
+
} from "./chunk-K4VB66QF.js";
|
|
272
|
+
import "./chunk-CMRYLH67.js";
|
|
273
|
+
import "./chunk-GOXKNSDZ.js";
|
|
288
274
|
import "./chunk-QRUIS3DN.js";
|
|
289
|
-
import
|
|
275
|
+
import {
|
|
276
|
+
MAX_REGISTERED_WORKSPACES,
|
|
277
|
+
WorkspaceDisplayNameValidationError,
|
|
278
|
+
WorkspaceRegistrationStoreCommittedError,
|
|
279
|
+
WorkspaceRegistrationStoreLimitError,
|
|
280
|
+
normalizeWorkspaceDisplayName,
|
|
281
|
+
workspaceRegistrationId
|
|
282
|
+
} from "./chunk-H4OWOFZL.js";
|
|
283
|
+
import {
|
|
284
|
+
MAX_WORKSPACE_PATH_LENGTH,
|
|
285
|
+
canonicalizeWorkspace,
|
|
286
|
+
canonicalizeWorkspaces,
|
|
287
|
+
translateAndCheckAbsoluteWorkspacePath
|
|
288
|
+
} from "./chunk-2RFKHEXL.js";
|
|
289
|
+
import "./chunk-5HBA2Z7V.js";
|
|
290
|
+
import "./chunk-IDS7MSUP.js";
|
|
291
|
+
import "./chunk-CHLNJN3C.js";
|
|
290
292
|
import "./chunk-VJNBRRZG.js";
|
|
291
293
|
import {
|
|
292
294
|
getWorkspaceTrustStatus
|
|
293
|
-
} from "./chunk-
|
|
295
|
+
} from "./chunk-LMQNDPVP.js";
|
|
294
296
|
import "./chunk-ALGGS7UH.js";
|
|
295
297
|
import {
|
|
296
298
|
isWithinRoot as isWithinRoot2
|
|
@@ -316,6 +318,7 @@ import {
|
|
|
316
318
|
SESSION_TRANSCRIPT_MAX_INDEX_BYTES,
|
|
317
319
|
SESSION_TRANSCRIPT_MAX_LIMIT,
|
|
318
320
|
SESSION_TRANSCRIPT_MAX_PAGE_BYTES,
|
|
321
|
+
SESSION_WRITER_RPC_CODES,
|
|
319
322
|
SessionOrganizationError,
|
|
320
323
|
SessionOrganizationService,
|
|
321
324
|
SessionService,
|
|
@@ -324,6 +327,7 @@ import {
|
|
|
324
327
|
SessionTranscriptReader,
|
|
325
328
|
SessionTranscriptSnapshotUnavailableError,
|
|
326
329
|
SessionTranscriptTooLargeError,
|
|
330
|
+
SessionWriterError,
|
|
327
331
|
StandardFileSystemService,
|
|
328
332
|
StdioClientTransport,
|
|
329
333
|
StreamableHTTPClientTransport,
|
|
@@ -354,18 +358,18 @@ import {
|
|
|
354
358
|
writeWorkspaceContextFile,
|
|
355
359
|
writeWorktreeSession,
|
|
356
360
|
writeWorktreeSessionMarker
|
|
357
|
-
} from "./chunk-
|
|
358
|
-
import "./chunk-5M6IDOMF.js";
|
|
361
|
+
} from "./chunk-6RQ5IPUX.js";
|
|
359
362
|
import "./chunk-T4TZQJ7W.js";
|
|
360
363
|
import "./chunk-H6XPXXMH.js";
|
|
364
|
+
import "./chunk-5M6IDOMF.js";
|
|
365
|
+
import "./chunk-T2L47JJK.js";
|
|
366
|
+
import "./chunk-GPSKDNEE.js";
|
|
367
|
+
import "./chunk-X6N25LXS.js";
|
|
368
|
+
import "./chunk-E2UVIFI2.js";
|
|
361
369
|
import {
|
|
362
370
|
MAX_JOBS,
|
|
363
371
|
nextDurableFireMs
|
|
364
|
-
} from "./chunk-
|
|
365
|
-
import "./chunk-FSL5W5TI.js";
|
|
366
|
-
import "./chunk-OONJNQ42.js";
|
|
367
|
-
import "./chunk-D2VIDMVM.js";
|
|
368
|
-
import "./chunk-E2UVIFI2.js";
|
|
372
|
+
} from "./chunk-Q2YKNMLS.js";
|
|
369
373
|
import {
|
|
370
374
|
nextFireTime,
|
|
371
375
|
parseCron
|
|
@@ -378,20 +382,27 @@ import {
|
|
|
378
382
|
readCronTasks,
|
|
379
383
|
taskHasLegacyCondition,
|
|
380
384
|
updateCronTasks
|
|
381
|
-
} from "./chunk-
|
|
385
|
+
} from "./chunk-KHOVYUHX.js";
|
|
382
386
|
import "./chunk-SZRN75WQ.js";
|
|
383
|
-
import "./chunk-
|
|
387
|
+
import "./chunk-6PVPNMXU.js";
|
|
388
|
+
import "./chunk-TJQXJJX7.js";
|
|
384
389
|
import "./chunk-CPBF7KYF.js";
|
|
390
|
+
import "./chunk-NABLFI57.js";
|
|
391
|
+
import "./chunk-QBUDF33N.js";
|
|
392
|
+
import "./chunk-LIZRAKPB.js";
|
|
385
393
|
import {
|
|
386
394
|
APPROVAL_MODES,
|
|
387
395
|
SubagentError,
|
|
388
396
|
SubagentErrorCode
|
|
389
|
-
} from "./chunk-
|
|
397
|
+
} from "./chunk-WHGVTP7Q.js";
|
|
390
398
|
import "./chunk-6AM5D4ME.js";
|
|
391
|
-
import "./chunk-
|
|
392
|
-
import "./chunk-
|
|
393
|
-
import "./chunk-
|
|
394
|
-
import "./chunk-
|
|
399
|
+
import "./chunk-JCW2R7WC.js";
|
|
400
|
+
import "./chunk-57FIIFJN.js";
|
|
401
|
+
import "./chunk-HTO4JFDZ.js";
|
|
402
|
+
import "./chunk-XVNQMZ2I.js";
|
|
403
|
+
import "./chunk-CR3C7WXL.js";
|
|
404
|
+
import "./chunk-FODK6UMO.js";
|
|
405
|
+
import "./chunk-GLNBDYUX.js";
|
|
395
406
|
import {
|
|
396
407
|
QwenOAuth2Client,
|
|
397
408
|
QwenOAuthPollError,
|
|
@@ -400,9 +411,12 @@ import {
|
|
|
400
411
|
isDeviceAuthorizationSuccess,
|
|
401
412
|
isDeviceTokenPending,
|
|
402
413
|
isDeviceTokenSuccess
|
|
403
|
-
} from "./chunk-
|
|
404
|
-
import "./chunk-246TW4IX.js";
|
|
414
|
+
} from "./chunk-5MZSD2JX.js";
|
|
405
415
|
import "./chunk-JESCGQM3.js";
|
|
416
|
+
import "./chunk-OZYV6F53.js";
|
|
417
|
+
import "./chunk-BEKZWVJJ.js";
|
|
418
|
+
import "./chunk-DJ2GSRLV.js";
|
|
419
|
+
import "./chunk-5I5BM454.js";
|
|
406
420
|
import {
|
|
407
421
|
addDaemonRequestAttribute,
|
|
408
422
|
decodeBufferWithEncodingInfo,
|
|
@@ -416,37 +430,35 @@ import {
|
|
|
416
430
|
recordDaemonHttpRequest,
|
|
417
431
|
recordDaemonHttpResponse,
|
|
418
432
|
withDaemonRequestSpan
|
|
419
|
-
} from "./chunk-
|
|
420
|
-
import "./chunk-4WKAA4KS.js";
|
|
421
|
-
import "./chunk-CR3C7WXL.js";
|
|
433
|
+
} from "./chunk-ZJVVETCV.js";
|
|
422
434
|
import "./chunk-VGC4I5JJ.js";
|
|
423
|
-
import "./chunk-
|
|
424
|
-
import "./chunk-
|
|
425
|
-
import "./chunk-BDBMYST4.js";
|
|
426
|
-
import "./chunk-EZVDJFZ7.js";
|
|
427
|
-
import "./chunk-OP4MOGXF.js";
|
|
428
|
-
import "./chunk-XVNQMZ2I.js";
|
|
429
|
-
import "./chunk-FEOZBUMT.js";
|
|
430
|
-
import "./chunk-DJ2GSRLV.js";
|
|
431
|
-
import "./chunk-6EFTQYW7.js";
|
|
432
|
-
import "./chunk-FZVSFBNW.js";
|
|
435
|
+
import "./chunk-4K56OJFJ.js";
|
|
436
|
+
import "./chunk-JYS55H6Z.js";
|
|
433
437
|
import "./chunk-A4UCTEB5.js";
|
|
434
438
|
import "./chunk-XWRJCPHC.js";
|
|
439
|
+
import "./chunk-QNLNLENL.js";
|
|
440
|
+
import "./chunk-6X4GWOPW.js";
|
|
435
441
|
import "./chunk-TYQMGACW.js";
|
|
436
442
|
import {
|
|
437
443
|
import_websocket_server
|
|
438
444
|
} from "./chunk-TYAMGABM.js";
|
|
439
445
|
import "./chunk-FCMNKVXT.js";
|
|
446
|
+
import "./chunk-7362QS5B.js";
|
|
447
|
+
import "./chunk-HTR4WV6U.js";
|
|
448
|
+
import "./chunk-M7WBGLYP.js";
|
|
449
|
+
import "./chunk-U7ZFW55U.js";
|
|
450
|
+
import "./chunk-NPQDJGKU.js";
|
|
451
|
+
import "./chunk-YM3SZTH4.js";
|
|
440
452
|
import {
|
|
441
453
|
FatalConfigError,
|
|
442
454
|
Storage,
|
|
443
455
|
createDebugLogger,
|
|
444
456
|
runWithoutDebugLogSession
|
|
445
|
-
} from "./chunk-
|
|
457
|
+
} from "./chunk-OQB4EXO4.js";
|
|
446
458
|
import "./chunk-75DOP5OR.js";
|
|
447
459
|
import "./chunk-DMTGGOSA.js";
|
|
448
460
|
import "./chunk-YQ3U5MUC.js";
|
|
449
|
-
import "./chunk-
|
|
461
|
+
import "./chunk-THJNPLI4.js";
|
|
450
462
|
import {
|
|
451
463
|
init_esbuild_shims
|
|
452
464
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -465,7 +477,6 @@ import { createHash as createHash3, timingSafeEqual } from "node:crypto";
|
|
|
465
477
|
|
|
466
478
|
// packages/cli/src/serve/acp-http/dispatch.ts
|
|
467
479
|
init_esbuild_shims();
|
|
468
|
-
import path9 from "node:path";
|
|
469
480
|
|
|
470
481
|
// packages/cli/src/serve/fs/errors.ts
|
|
471
482
|
init_esbuild_shims();
|
|
@@ -6573,6 +6584,43 @@ function errMsg(err) {
|
|
|
6573
6584
|
return err instanceof Error ? err.message : String(err);
|
|
6574
6585
|
}
|
|
6575
6586
|
__name(errMsg, "errMsg");
|
|
6587
|
+
var SESSION_WRITER_RPC_ERRORS = {
|
|
6588
|
+
session_writer_conflict: {
|
|
6589
|
+
code: SESSION_WRITER_RPC_CODES.session_writer_conflict,
|
|
6590
|
+
message: "This session is already open in another Qwen process."
|
|
6591
|
+
},
|
|
6592
|
+
session_writer_lost: {
|
|
6593
|
+
code: SESSION_WRITER_RPC_CODES.session_writer_lost,
|
|
6594
|
+
message: "Write ownership for this session was lost."
|
|
6595
|
+
},
|
|
6596
|
+
session_transcript_changed: {
|
|
6597
|
+
code: SESSION_WRITER_RPC_CODES.session_transcript_changed,
|
|
6598
|
+
message: "The session transcript changed outside its active writer."
|
|
6599
|
+
},
|
|
6600
|
+
session_writer_unavailable: {
|
|
6601
|
+
code: SESSION_WRITER_RPC_CODES.session_writer_unavailable,
|
|
6602
|
+
message: "Session write ownership could not be verified."
|
|
6603
|
+
}
|
|
6604
|
+
};
|
|
6605
|
+
function sessionWriterRpcError(err) {
|
|
6606
|
+
if (!err || typeof err !== "object") return void 0;
|
|
6607
|
+
const candidate = err;
|
|
6608
|
+
const data = isObject(candidate["data"]) ? candidate["data"] : void 0;
|
|
6609
|
+
const errorKind = data?.["errorKind"] ?? candidate["errorKind"];
|
|
6610
|
+
if (typeof errorKind !== "string" || !(errorKind in SESSION_WRITER_RPC_ERRORS)) {
|
|
6611
|
+
return void 0;
|
|
6612
|
+
}
|
|
6613
|
+
const typedKind = errorKind;
|
|
6614
|
+
const expected = SESSION_WRITER_RPC_ERRORS[typedKind];
|
|
6615
|
+
const code = candidate["code"] ?? candidate["rpcCode"];
|
|
6616
|
+
if (code !== expected.code) return void 0;
|
|
6617
|
+
return {
|
|
6618
|
+
code: expected.code,
|
|
6619
|
+
message: expected.message,
|
|
6620
|
+
data: { errorKind: typedKind }
|
|
6621
|
+
};
|
|
6622
|
+
}
|
|
6623
|
+
__name(sessionWriterRpcError, "sessionWriterRpcError");
|
|
6576
6624
|
var debugLogger2 = createDebugLogger("ACP_HTTP_DISPATCH");
|
|
6577
6625
|
var SESSION_SHELL_METHOD = `${QWEN_METHOD_NS}session/shell`;
|
|
6578
6626
|
var INVALID_PERMISSION_OUTCOME_ERROR = '`outcome` must be `{ outcome: "cancelled" }` or `{ outcome: "selected", optionId: string }`';
|
|
@@ -6705,10 +6753,11 @@ function parseOptionalWorkspaceCwd2(params, boundWorkspace) {
|
|
|
6705
6753
|
`\`cwd\` exceeds the ${MAX_WORKSPACE_PATH_LENGTH}-character limit`
|
|
6706
6754
|
);
|
|
6707
6755
|
}
|
|
6708
|
-
|
|
6756
|
+
const sandboxCwd = translateAndCheckAbsoluteWorkspacePath(cwd);
|
|
6757
|
+
if (sandboxCwd === null) {
|
|
6709
6758
|
throw new AcpParamError("`cwd` must be an absolute path when provided");
|
|
6710
6759
|
}
|
|
6711
|
-
return
|
|
6760
|
+
return sandboxCwd;
|
|
6712
6761
|
}
|
|
6713
6762
|
__name(parseOptionalWorkspaceCwd2, "parseOptionalWorkspaceCwd");
|
|
6714
6763
|
function validatePrompt(params) {
|
|
@@ -6785,6 +6834,8 @@ function pickSessionArtifactInput(params) {
|
|
|
6785
6834
|
}
|
|
6786
6835
|
__name(pickSessionArtifactInput, "pickSessionArtifactInput");
|
|
6787
6836
|
function toRpcError(err) {
|
|
6837
|
+
const writerError = sessionWriterRpcError(err);
|
|
6838
|
+
if (writerError) return writerError;
|
|
6788
6839
|
if (err instanceof AcpParamError || err instanceof InvalidCursorError) {
|
|
6789
6840
|
return { code: RPC.INVALID_PARAMS, message: err.message };
|
|
6790
6841
|
}
|
|
@@ -7521,22 +7572,21 @@ var AcpDispatcher = class {
|
|
|
7521
7572
|
conn.ownedSessions.delete(sessionId);
|
|
7522
7573
|
conn.closingSessions.add(sessionId);
|
|
7523
7574
|
let closeStarted = false;
|
|
7524
|
-
const
|
|
7525
|
-
closeStarted = true;
|
|
7575
|
+
const closeLocalSessionStream = /* @__PURE__ */ __name(() => {
|
|
7526
7576
|
try {
|
|
7527
|
-
|
|
7528
|
-
|
|
7529
|
-
|
|
7577
|
+
conn.closeSessionStream(sessionId);
|
|
7578
|
+
} catch (teardownErr) {
|
|
7579
|
+
writeStderrLine(
|
|
7580
|
+
`qwen serve: /acp session/close local teardown failed (${logSafe(sessionId)}): ${logSafe(errMsg(teardownErr))}`
|
|
7530
7581
|
);
|
|
7531
|
-
} finally {
|
|
7532
|
-
try {
|
|
7533
|
-
conn.closeSessionStream(sessionId);
|
|
7534
|
-
} catch (teardownErr) {
|
|
7535
|
-
writeStderrLine(
|
|
7536
|
-
`qwen serve: /acp session/close local teardown failed (${logSafe(sessionId)}): ${logSafe(errMsg(teardownErr))}`
|
|
7537
|
-
);
|
|
7538
|
-
}
|
|
7539
7582
|
}
|
|
7583
|
+
}, "closeLocalSessionStream");
|
|
7584
|
+
const closeSession = /* @__PURE__ */ __name(async () => {
|
|
7585
|
+
closeStarted = true;
|
|
7586
|
+
await this.bridge.closeSession(
|
|
7587
|
+
sessionId,
|
|
7588
|
+
this.sessionCtx(conn, sessionId, loopback)
|
|
7589
|
+
);
|
|
7540
7590
|
}, "closeSession");
|
|
7541
7591
|
try {
|
|
7542
7592
|
try {
|
|
@@ -7558,11 +7608,19 @@ var AcpDispatcher = class {
|
|
|
7558
7608
|
} catch (err) {
|
|
7559
7609
|
if (!closeStarted) {
|
|
7560
7610
|
conn.ownedSessions.add(sessionId);
|
|
7611
|
+
} else {
|
|
7612
|
+
try {
|
|
7613
|
+
this.bridge.getSessionSummary(sessionId);
|
|
7614
|
+
conn.ownedSessions.add(sessionId);
|
|
7615
|
+
} catch {
|
|
7616
|
+
closeLocalSessionStream();
|
|
7617
|
+
}
|
|
7561
7618
|
}
|
|
7562
7619
|
throw err;
|
|
7563
7620
|
} finally {
|
|
7564
7621
|
conn.closingSessions.delete(sessionId);
|
|
7565
7622
|
}
|
|
7623
|
+
closeLocalSessionStream();
|
|
7566
7624
|
this.replyConn(conn, id, {});
|
|
7567
7625
|
return;
|
|
7568
7626
|
}
|
|
@@ -11954,7 +12012,7 @@ function mountAcpHttp(app, bridge, opts) {
|
|
|
11954
12012
|
if (!enabled) return void 0;
|
|
11955
12013
|
const daemonEnv = opts.daemonEnv ?? process.env;
|
|
11956
12014
|
const primaryEnv = opts.workspaceRegistry ? runtimeEffectiveEnv(opts.workspaceRegistry.primary, daemonEnv) : daemonEnv;
|
|
11957
|
-
const
|
|
12015
|
+
const path15 = opts.path ?? "/acp";
|
|
11958
12016
|
const dispatcherRef = {};
|
|
11959
12017
|
let disposed = false;
|
|
11960
12018
|
const rejectIfDisposed = /* @__PURE__ */ __name((res) => {
|
|
@@ -12116,7 +12174,7 @@ function mountAcpHttp(app, bridge, opts) {
|
|
|
12116
12174
|
const primaryMount = {
|
|
12117
12175
|
primary: true,
|
|
12118
12176
|
workspaceCwd: opts.boundWorkspace,
|
|
12119
|
-
routeLabel: logSafe(
|
|
12177
|
+
routeLabel: logSafe(path15),
|
|
12120
12178
|
rateLimitScope: opts.workspaceRegistry?.primary.workspaceId ?? "primary",
|
|
12121
12179
|
registry,
|
|
12122
12180
|
dispatcher,
|
|
@@ -12270,7 +12328,7 @@ function mountAcpHttp(app, bridge, opts) {
|
|
|
12270
12328
|
});
|
|
12271
12329
|
}, "handleAcpPost");
|
|
12272
12330
|
app.post(
|
|
12273
|
-
|
|
12331
|
+
path15,
|
|
12274
12332
|
(req, res) => handleAcpPost(primaryMount, req, res)
|
|
12275
12333
|
);
|
|
12276
12334
|
const handleAcpGet = /* @__PURE__ */ __name((mount, req, res) => {
|
|
@@ -12360,10 +12418,10 @@ function mountAcpHttp(app, bridge, opts) {
|
|
|
12360
12418
|
onPumpSettled();
|
|
12361
12419
|
});
|
|
12362
12420
|
}, "handleAcpGet");
|
|
12363
|
-
app.get(
|
|
12421
|
+
app.get(path15, (req, res) => {
|
|
12364
12422
|
handleAcpGet(primaryMount, req, res);
|
|
12365
12423
|
});
|
|
12366
|
-
app.delete(
|
|
12424
|
+
app.delete(path15, (req, res) => {
|
|
12367
12425
|
handleAcpDelete(primaryMount, req, res);
|
|
12368
12426
|
});
|
|
12369
12427
|
const createSecondaryAcpMount = /* @__PURE__ */ __name((rt) => {
|
|
@@ -12555,7 +12613,7 @@ function mountAcpHttp(app, bridge, opts) {
|
|
|
12555
12613
|
const isPluralAcpShape = pluralRawSelector !== null;
|
|
12556
12614
|
const pluralVoiceRawSelector = opts.workspaceVoiceConnection ? pluralWorkspaceRawSelector(rawPath, PLURAL_VOICE_WS_SUFFIX) : null;
|
|
12557
12615
|
const isPluralVoiceShape = pluralVoiceRawSelector !== null;
|
|
12558
|
-
if (rawPath !==
|
|
12616
|
+
if (rawPath !== path15 && !isCdpPath && !extraRoute && !isPluralAcpShape && !isPluralVoiceShape) {
|
|
12559
12617
|
logReject(`unknown-path ${logSafe(rawPath)}`);
|
|
12560
12618
|
socket.destroy();
|
|
12561
12619
|
return;
|
|
@@ -13080,7 +13138,7 @@ function mountAcpHttp(app, bridge, opts) {
|
|
|
13080
13138
|
});
|
|
13081
13139
|
}, "upgradeListener");
|
|
13082
13140
|
httpServer.on("upgrade", upgradeListener);
|
|
13083
|
-
writeStderrLine(`qwen serve: /acp WebSocket transport enabled on ${
|
|
13141
|
+
writeStderrLine(`qwen serve: /acp WebSocket transport enabled on ${path15}`);
|
|
13084
13142
|
}
|
|
13085
13143
|
__name(setupWebSocket, "setupWebSocket");
|
|
13086
13144
|
return {
|
|
@@ -13710,7 +13768,7 @@ var CdpTunnelRegistry = class {
|
|
|
13710
13768
|
// packages/cli/src/serve/web-shell-static.ts
|
|
13711
13769
|
init_esbuild_shims();
|
|
13712
13770
|
var import_express2 = __toESM(require_express(), 1);
|
|
13713
|
-
import * as
|
|
13771
|
+
import * as path9 from "node:path";
|
|
13714
13772
|
var WEB_SHELL_CSP_DIRECTIVES = [
|
|
13715
13773
|
"default-src 'self'",
|
|
13716
13774
|
"script-src 'self' 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'",
|
|
@@ -13738,7 +13796,7 @@ function isDocumentNavigation(req) {
|
|
|
13738
13796
|
}
|
|
13739
13797
|
__name(isDocumentNavigation, "isDocumentNavigation");
|
|
13740
13798
|
function createSendIndex(webShellDir, frameAncestors = []) {
|
|
13741
|
-
const indexPath =
|
|
13799
|
+
const indexPath = path9.join(webShellDir, "index.html");
|
|
13742
13800
|
const csp = buildWebShellCsp(frameAncestors);
|
|
13743
13801
|
return (res) => {
|
|
13744
13802
|
res.status(200).set("Content-Security-Policy", csp).set("X-Content-Type-Options", "nosniff").set("Referrer-Policy", "no-referrer").set(
|
|
@@ -13774,7 +13832,7 @@ function mountWebShellAssets(app, webShellDir, frameAncestors = []) {
|
|
|
13774
13832
|
const sendIndex = createSendIndex(webShellDir, frameAncestors);
|
|
13775
13833
|
app.use(
|
|
13776
13834
|
"/assets",
|
|
13777
|
-
import_express2.default.static(
|
|
13835
|
+
import_express2.default.static(path9.join(webShellDir, "assets"), {
|
|
13778
13836
|
index: false,
|
|
13779
13837
|
immutable: true,
|
|
13780
13838
|
maxAge: "1y"
|
|
@@ -18068,8 +18126,8 @@ function decodePathSegment(value) {
|
|
|
18068
18126
|
}
|
|
18069
18127
|
__name(decodePathSegment, "decodePathSegment");
|
|
18070
18128
|
function matchLegacySessionTelemetryRoute(method, requestPath) {
|
|
18071
|
-
const
|
|
18072
|
-
const requestSegments =
|
|
18129
|
+
const path15 = requestPath.length > 1 && requestPath.endsWith("/") ? requestPath.slice(0, -1) : requestPath;
|
|
18130
|
+
const requestSegments = path15.split("/").slice(1);
|
|
18073
18131
|
const prefix = requestSegments[0]?.toLowerCase();
|
|
18074
18132
|
if (prefix !== "session" && prefix !== "sessions" && prefix !== "permission") {
|
|
18075
18133
|
return void 0;
|
|
@@ -18121,23 +18179,23 @@ __name(setDaemonTelemetryWorkspace, "setDaemonTelemetryWorkspace");
|
|
|
18121
18179
|
function resolveDaemonTelemetryRoute(req) {
|
|
18122
18180
|
const legacyRoute = matchLegacySessionTelemetryRoute(req.method, req.path);
|
|
18123
18181
|
if (legacyRoute) return legacyRoute;
|
|
18124
|
-
const
|
|
18125
|
-
if (req.method === "GET" &&
|
|
18182
|
+
const path15 = req.path.replace(/\/$/, "") || "/";
|
|
18183
|
+
if (req.method === "GET" && path15 === "/daemon/status") {
|
|
18126
18184
|
return { route: "GET /daemon/status" };
|
|
18127
18185
|
}
|
|
18128
|
-
if (req.method === "GET" && /^\/workspace\/[^/]+\/sessions$/.test(
|
|
18186
|
+
if (req.method === "GET" && /^\/workspace\/[^/]+\/sessions$/.test(path15)) {
|
|
18129
18187
|
return { route: "GET /workspace/:id/sessions" };
|
|
18130
18188
|
}
|
|
18131
|
-
if (req.method === "GET" && /^\/workspaces\/[^/]+\/sessions$/.test(
|
|
18189
|
+
if (req.method === "GET" && /^\/workspaces\/[^/]+\/sessions$/.test(path15)) {
|
|
18132
18190
|
return { route: "GET /workspace/:id/sessions" };
|
|
18133
18191
|
}
|
|
18134
|
-
if (req.method === "GET" && /^\/workspace\/[^/]+\/session-info$/.test(
|
|
18192
|
+
if (req.method === "GET" && /^\/workspace\/[^/]+\/session-info$/.test(path15)) {
|
|
18135
18193
|
return { route: "GET /workspace/:id/session-info" };
|
|
18136
18194
|
}
|
|
18137
|
-
if (req.method === "GET" && /^\/workspaces\/[^/]+\/session-info$/.test(
|
|
18195
|
+
if (req.method === "GET" && /^\/workspaces\/[^/]+\/session-info$/.test(path15)) {
|
|
18138
18196
|
return { route: "GET /workspace/:id/session-info" };
|
|
18139
18197
|
}
|
|
18140
|
-
const workspaceTranscript =
|
|
18198
|
+
const workspaceTranscript = path15.match(
|
|
18141
18199
|
/^\/workspaces\/[^/]+\/session\/([^/]+)\/transcript$/
|
|
18142
18200
|
);
|
|
18143
18201
|
if (workspaceTranscript?.[1] && req.method === "GET") {
|
|
@@ -18146,7 +18204,7 @@ function resolveDaemonTelemetryRoute(req) {
|
|
|
18146
18204
|
sessionId: decodePathSegment(workspaceTranscript[1])
|
|
18147
18205
|
};
|
|
18148
18206
|
}
|
|
18149
|
-
const workspaceExport =
|
|
18207
|
+
const workspaceExport = path15.match(
|
|
18150
18208
|
/^\/workspaces\/[^/]+\/session\/([^/]+)\/export$/
|
|
18151
18209
|
);
|
|
18152
18210
|
if (workspaceExport?.[1] && req.method === "GET") {
|
|
@@ -18155,7 +18213,7 @@ function resolveDaemonTelemetryRoute(req) {
|
|
|
18155
18213
|
sessionId: decodePathSegment(workspaceExport[1])
|
|
18156
18214
|
};
|
|
18157
18215
|
}
|
|
18158
|
-
const workspaceArchivedExport =
|
|
18216
|
+
const workspaceArchivedExport = path15.match(
|
|
18159
18217
|
/^\/workspaces\/[^/]+\/session\/([^/]+)\/archive\/export$/
|
|
18160
18218
|
);
|
|
18161
18219
|
if (workspaceArchivedExport?.[1] && req.method === "GET") {
|
|
@@ -18165,8 +18223,8 @@ function resolveDaemonTelemetryRoute(req) {
|
|
|
18165
18223
|
};
|
|
18166
18224
|
}
|
|
18167
18225
|
const pluralWorkspacePrefix = /^\/workspaces\/[^/]+/;
|
|
18168
|
-
if (pluralWorkspacePrefix.test(
|
|
18169
|
-
const suffix =
|
|
18226
|
+
if (pluralWorkspacePrefix.test(path15)) {
|
|
18227
|
+
const suffix = path15.replace(pluralWorkspacePrefix, "/workspace");
|
|
18170
18228
|
if (req.method === "GET") {
|
|
18171
18229
|
if (suffix === "/workspace/mcp" || suffix === "/workspace/skills" || suffix === "/workspace/tools" || suffix === "/workspace/providers" || suffix === "/workspace/env" || suffix === "/workspace/preflight" || suffix === "/workspace/hooks" || suffix === "/workspace/settings" || suffix === "/workspace/voice" || suffix === "/workspace/permissions" || suffix === "/workspace/trust" || suffix === "/workspace/memory" || suffix === "/workspace/agents") {
|
|
18172
18230
|
return { route: `GET ${suffix}` };
|
|
@@ -18225,58 +18283,58 @@ function resolveDaemonTelemetryRoute(req) {
|
|
|
18225
18283
|
return { route: "DELETE /workspace/session-groups/:groupId" };
|
|
18226
18284
|
}
|
|
18227
18285
|
}
|
|
18228
|
-
if (req.method === "POST" &&
|
|
18286
|
+
if (req.method === "POST" && path15 === "/workspace/init") {
|
|
18229
18287
|
return { route: "POST /workspace/init" };
|
|
18230
18288
|
}
|
|
18231
|
-
if (req.method === "POST" &&
|
|
18289
|
+
if (req.method === "POST" && path15 === "/workspace/setup-github") {
|
|
18232
18290
|
return { route: "POST /workspace/setup-github" };
|
|
18233
18291
|
}
|
|
18234
|
-
if (req.method === "POST" &&
|
|
18292
|
+
if (req.method === "POST" && path15 === "/workspace/reload") {
|
|
18235
18293
|
return { route: "POST /workspace/reload" };
|
|
18236
18294
|
}
|
|
18237
|
-
const mcpRestart =
|
|
18295
|
+
const mcpRestart = path15.match(/^\/workspace\/mcp\/([^/]+)\/restart$/);
|
|
18238
18296
|
if (mcpRestart?.[1] && req.method === "POST") {
|
|
18239
18297
|
return { route: "POST /workspace/mcp/:server/restart" };
|
|
18240
18298
|
}
|
|
18241
|
-
if (req.method === "POST" &&
|
|
18299
|
+
if (req.method === "POST" && path15 === "/workspace/mcp/servers") {
|
|
18242
18300
|
return { route: "POST /workspace/mcp/servers" };
|
|
18243
18301
|
}
|
|
18244
|
-
const mcpDelete =
|
|
18302
|
+
const mcpDelete = path15.match(/^\/workspace\/mcp\/servers\/([^/]+)$/);
|
|
18245
18303
|
if (mcpDelete?.[1] && req.method === "DELETE") {
|
|
18246
18304
|
return { route: "DELETE /workspace/mcp/servers/:name" };
|
|
18247
18305
|
}
|
|
18248
|
-
if (req.method === "POST" &&
|
|
18306
|
+
if (req.method === "POST" && path15 === "/workspace/auth/device-flow") {
|
|
18249
18307
|
return { route: "POST /workspace/auth/device-flow" };
|
|
18250
18308
|
}
|
|
18251
|
-
const deviceFlowDelete =
|
|
18309
|
+
const deviceFlowDelete = path15.match(
|
|
18252
18310
|
/^\/workspace\/auth\/device-flow\/([^/]+)$/
|
|
18253
18311
|
);
|
|
18254
18312
|
if (deviceFlowDelete?.[1] && req.method === "DELETE") {
|
|
18255
18313
|
return { route: "DELETE /workspace/auth/device-flow/:id" };
|
|
18256
18314
|
}
|
|
18257
|
-
const toolEnable =
|
|
18315
|
+
const toolEnable = path15.match(/^\/workspace\/tools\/([^/]+)\/enable$/);
|
|
18258
18316
|
if (toolEnable?.[1] && req.method === "POST") {
|
|
18259
18317
|
return { route: "POST /workspace/tools/:name/enable" };
|
|
18260
18318
|
}
|
|
18261
|
-
if (
|
|
18319
|
+
if (path15 === "/workspace/settings") {
|
|
18262
18320
|
if (req.method === "GET") return { route: "GET /workspace/settings" };
|
|
18263
18321
|
if (req.method === "POST") return { route: "POST /workspace/settings" };
|
|
18264
18322
|
}
|
|
18265
|
-
if (
|
|
18323
|
+
if (path15 === "/workspace/permissions") {
|
|
18266
18324
|
if (req.method === "GET") return { route: "GET /workspace/permissions" };
|
|
18267
18325
|
if (req.method === "POST") return { route: "POST /workspace/permissions" };
|
|
18268
18326
|
}
|
|
18269
|
-
if (
|
|
18327
|
+
if (path15 === "/workspace/trust") {
|
|
18270
18328
|
if (req.method === "GET") return { route: "GET /workspace/trust" };
|
|
18271
18329
|
}
|
|
18272
|
-
if (req.method === "POST" &&
|
|
18330
|
+
if (req.method === "POST" && path15 === "/workspace/trust/request") {
|
|
18273
18331
|
return { route: "POST /workspace/trust/request" };
|
|
18274
18332
|
}
|
|
18275
|
-
if (
|
|
18333
|
+
if (path15 === "/workspace/voice") {
|
|
18276
18334
|
if (req.method === "GET") return { route: "GET /workspace/voice" };
|
|
18277
18335
|
if (req.method === "POST") return { route: "POST /workspace/voice" };
|
|
18278
18336
|
}
|
|
18279
|
-
if (req.method === "POST" &&
|
|
18337
|
+
if (req.method === "POST" && path15 === "/workspace/voice/transcribe") {
|
|
18280
18338
|
return { route: "POST /workspace/voice/transcribe" };
|
|
18281
18339
|
}
|
|
18282
18340
|
return void 0;
|
|
@@ -18536,21 +18594,10 @@ __name(registerPermissionRoutes, "registerPermissionRoutes");
|
|
|
18536
18594
|
init_esbuild_shims();
|
|
18537
18595
|
import * as crypto3 from "node:crypto";
|
|
18538
18596
|
import * as fs3 from "node:fs";
|
|
18539
|
-
import * as
|
|
18597
|
+
import * as path10 from "node:path";
|
|
18540
18598
|
|
|
18541
18599
|
// packages/cli/src/serve/server/prompt-deadline.ts
|
|
18542
18600
|
init_esbuild_shims();
|
|
18543
|
-
var PromptDeadlineExceededError = class extends Error {
|
|
18544
|
-
static {
|
|
18545
|
-
__name(this, "PromptDeadlineExceededError");
|
|
18546
|
-
}
|
|
18547
|
-
deadlineMs;
|
|
18548
|
-
constructor(deadlineMs) {
|
|
18549
|
-
super(`prompt exceeded the ${deadlineMs}ms deadline`);
|
|
18550
|
-
this.name = "PromptDeadlineExceededError";
|
|
18551
|
-
this.deadlineMs = deadlineMs;
|
|
18552
|
-
}
|
|
18553
|
-
};
|
|
18554
18601
|
function resolvePromptDeadlineMs(serverMs, requestMs) {
|
|
18555
18602
|
if (serverMs === void 0 || !Number.isFinite(serverMs) || serverMs <= 0) {
|
|
18556
18603
|
return void 0;
|
|
@@ -19477,7 +19524,7 @@ function registerSessionRoutes(app, deps) {
|
|
|
19477
19524
|
const workspaceParam = req.params[paramName] ?? "";
|
|
19478
19525
|
const byId = workspaceRegistry.getByWorkspaceId(workspaceParam);
|
|
19479
19526
|
if (byId) return byId;
|
|
19480
|
-
if (!
|
|
19527
|
+
if (!path10.isAbsolute(workspaceParam)) {
|
|
19481
19528
|
res.status(400).json({
|
|
19482
19529
|
error: `\`:${paramName}\` must decode to a workspace id or absolute path`
|
|
19483
19530
|
});
|
|
@@ -19891,7 +19938,7 @@ function registerSessionRoutes(app, deps) {
|
|
|
19891
19938
|
})), "serializeSessionErrors");
|
|
19892
19939
|
const resolveWorkspaceParam = /* @__PURE__ */ __name((req, res) => {
|
|
19893
19940
|
const workspaceCwd = req.params["id"] ?? "";
|
|
19894
|
-
if (!
|
|
19941
|
+
if (!path10.isAbsolute(workspaceCwd)) {
|
|
19895
19942
|
res.status(400).json({ error: "`:id` must decode to an absolute workspace path" });
|
|
19896
19943
|
return null;
|
|
19897
19944
|
}
|
|
@@ -20077,7 +20124,7 @@ function registerSessionRoutes(app, deps) {
|
|
|
20077
20124
|
if (worktreeMeta) {
|
|
20078
20125
|
try {
|
|
20079
20126
|
const createAllowedRoots = [
|
|
20080
|
-
|
|
20127
|
+
path10.join(workspaceCwd, ".qwen", "worktrees")
|
|
20081
20128
|
];
|
|
20082
20129
|
let createRepoTop = null;
|
|
20083
20130
|
try {
|
|
@@ -20088,7 +20135,7 @@ function registerSessionRoutes(app, deps) {
|
|
|
20088
20135
|
}
|
|
20089
20136
|
if (createRepoTop && createRepoTop !== workspaceCwd) {
|
|
20090
20137
|
createAllowedRoots.push(
|
|
20091
|
-
|
|
20138
|
+
path10.join(createRepoTop, ".qwen", "worktrees")
|
|
20092
20139
|
);
|
|
20093
20140
|
}
|
|
20094
20141
|
await runtime.bridge.changeSessionCwd(session.sessionId, {
|
|
@@ -20233,7 +20280,7 @@ function registerSessionRoutes(app, deps) {
|
|
|
20233
20280
|
if (sidecar) {
|
|
20234
20281
|
let realTarget;
|
|
20235
20282
|
const candidateRoots = [
|
|
20236
|
-
|
|
20283
|
+
path10.join(workspaceCwd, ".qwen", "worktrees")
|
|
20237
20284
|
];
|
|
20238
20285
|
try {
|
|
20239
20286
|
realTarget = fs3.realpathSync(sidecar.worktreePath);
|
|
@@ -20245,13 +20292,13 @@ function registerSessionRoutes(app, deps) {
|
|
|
20245
20292
|
} catch {
|
|
20246
20293
|
}
|
|
20247
20294
|
if (repoTop && repoTop !== workspaceCwd) {
|
|
20248
|
-
candidateRoots.push(
|
|
20295
|
+
candidateRoots.push(path10.join(repoTop, ".qwen", "worktrees"));
|
|
20249
20296
|
}
|
|
20250
20297
|
const contained = candidateRoots.some((root) => {
|
|
20251
20298
|
try {
|
|
20252
20299
|
const realRoot = fs3.realpathSync(root);
|
|
20253
|
-
const rel =
|
|
20254
|
-
return !rel.startsWith("..") && !
|
|
20300
|
+
const rel = path10.relative(realRoot, realTarget);
|
|
20301
|
+
return !rel.startsWith("..") && !path10.isAbsolute(rel);
|
|
20255
20302
|
} catch {
|
|
20256
20303
|
return false;
|
|
20257
20304
|
}
|
|
@@ -20274,10 +20321,12 @@ function registerSessionRoutes(app, deps) {
|
|
|
20274
20321
|
branch: sidecar.worktreeBranch
|
|
20275
20322
|
};
|
|
20276
20323
|
try {
|
|
20277
|
-
|
|
20278
|
-
|
|
20279
|
-
|
|
20280
|
-
|
|
20324
|
+
if (!session.hasActivePrompt) {
|
|
20325
|
+
await runtime.bridge.changeSessionCwd(sessionId, {
|
|
20326
|
+
path: wt.path,
|
|
20327
|
+
allowedRoots: candidateRoots
|
|
20328
|
+
});
|
|
20329
|
+
}
|
|
20281
20330
|
runtime.bridge.setSessionWorktree(sessionId, wt);
|
|
20282
20331
|
session.worktree = wt;
|
|
20283
20332
|
} catch (restoreErr) {
|
|
@@ -20371,7 +20420,7 @@ function registerSessionRoutes(app, deps) {
|
|
|
20371
20420
|
async (req, res, sessionId) => {
|
|
20372
20421
|
const body = safeBody(req);
|
|
20373
20422
|
const targetPath = body["path"];
|
|
20374
|
-
if (typeof targetPath !== "string" || targetPath.length === 0 || !
|
|
20423
|
+
if (typeof targetPath !== "string" || targetPath.length === 0 || !path10.isAbsolute(targetPath)) {
|
|
20375
20424
|
res.status(400).json({
|
|
20376
20425
|
error: "`path` is required and must be an absolute path",
|
|
20377
20426
|
code: "invalid_path"
|
|
@@ -20873,15 +20922,6 @@ function registerSessionRoutes(app, deps) {
|
|
|
20873
20922
|
promptDeadlineMs,
|
|
20874
20923
|
requestDeadlineMs
|
|
20875
20924
|
);
|
|
20876
|
-
let deadlineTimer;
|
|
20877
|
-
if (effectiveDeadlineMs !== void 0) {
|
|
20878
|
-
deadlineTimer = setTimeout(() => {
|
|
20879
|
-
if (!abort.signal.aborted) {
|
|
20880
|
-
abort.abort(new PromptDeadlineExceededError(effectiveDeadlineMs));
|
|
20881
|
-
}
|
|
20882
|
-
}, effectiveDeadlineMs);
|
|
20883
|
-
deadlineTimer.unref();
|
|
20884
|
-
}
|
|
20885
20925
|
let promptPromise;
|
|
20886
20926
|
try {
|
|
20887
20927
|
promptPromise = ownerBridge.sendPrompt(
|
|
@@ -20894,11 +20934,11 @@ function registerSessionRoutes(app, deps) {
|
|
|
20894
20934
|
abort.signal,
|
|
20895
20935
|
{
|
|
20896
20936
|
...clientId !== void 0 ? { clientId } : {},
|
|
20897
|
-
promptId
|
|
20937
|
+
promptId,
|
|
20938
|
+
...effectiveDeadlineMs !== void 0 ? { deadlineMs: effectiveDeadlineMs } : {}
|
|
20898
20939
|
}
|
|
20899
20940
|
);
|
|
20900
20941
|
} catch (err) {
|
|
20901
|
-
if (deadlineTimer !== void 0) clearTimeout(deadlineTimer);
|
|
20902
20942
|
res.off("close", onResClose);
|
|
20903
20943
|
res.off("finish", onResFinish);
|
|
20904
20944
|
if (daemonLog && err instanceof PromptQueueFullError) {
|
|
@@ -20943,9 +20983,7 @@ function registerSessionRoutes(app, deps) {
|
|
|
20943
20983
|
);
|
|
20944
20984
|
}
|
|
20945
20985
|
}
|
|
20946
|
-
).
|
|
20947
|
-
if (deadlineTimer !== void 0) clearTimeout(deadlineTimer);
|
|
20948
|
-
}).catch(() => {
|
|
20986
|
+
).catch(() => {
|
|
20949
20987
|
});
|
|
20950
20988
|
if (daemonLog) {
|
|
20951
20989
|
daemonLog.info("prompt enqueued", { sessionId, promptId, clientId });
|
|
@@ -22818,7 +22856,7 @@ __name(registerUsageStatsRoutes, "registerUsageStatsRoutes");
|
|
|
22818
22856
|
// packages/cli/src/serve/scheduled-task-keepalive.ts
|
|
22819
22857
|
init_esbuild_shims();
|
|
22820
22858
|
import * as fsSync from "node:fs";
|
|
22821
|
-
import * as
|
|
22859
|
+
import * as path11 from "node:path";
|
|
22822
22860
|
var log = createDebugLogger("SCHED_KEEPALIVE");
|
|
22823
22861
|
function collectBoundSessionIds(tasks) {
|
|
22824
22862
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -23029,8 +23067,8 @@ function startScheduledTaskKeepalive(opts) {
|
|
|
23029
23067
|
timer.unref?.();
|
|
23030
23068
|
let bindDebounce;
|
|
23031
23069
|
const cronFilePath = getCronFilePath(boundWorkspace);
|
|
23032
|
-
const cronDir =
|
|
23033
|
-
const cronFileName =
|
|
23070
|
+
const cronDir = path11.dirname(cronFilePath);
|
|
23071
|
+
const cronFileName = path11.basename(cronFilePath);
|
|
23034
23072
|
let fileWatcher;
|
|
23035
23073
|
try {
|
|
23036
23074
|
fsSync.mkdirSync(cronDir, { recursive: true });
|
|
@@ -24220,6 +24258,12 @@ init_esbuild_shims();
|
|
|
24220
24258
|
|
|
24221
24259
|
// packages/cli/src/serve/server/error-response.ts
|
|
24222
24260
|
init_esbuild_shims();
|
|
24261
|
+
var SESSION_WRITER_ERROR_MESSAGES = {
|
|
24262
|
+
session_writer_conflict: "This session is already open in another Qwen process.",
|
|
24263
|
+
session_writer_lost: "Write ownership for this session was lost.",
|
|
24264
|
+
session_transcript_changed: "The session transcript changed outside its active writer.",
|
|
24265
|
+
session_writer_unavailable: "Session write ownership could not be verified."
|
|
24266
|
+
};
|
|
24223
24267
|
function bridgeErrorExtraContext(ctx) {
|
|
24224
24268
|
const extra = {};
|
|
24225
24269
|
for (const [key, value] of Object.entries(ctx ?? {})) {
|
|
@@ -24272,6 +24316,14 @@ function sendPermissionVoteError(res, err, ctx, daemonLog) {
|
|
|
24272
24316
|
}
|
|
24273
24317
|
__name(sendPermissionVoteError, "sendPermissionVoteError");
|
|
24274
24318
|
function sendBridgeError(res, err, ctx, daemonLog) {
|
|
24319
|
+
if (err instanceof SessionWriterError) {
|
|
24320
|
+
res.status(err.httpStatus).json({
|
|
24321
|
+
error: err.message,
|
|
24322
|
+
code: err.errorKind,
|
|
24323
|
+
errorKind: err.errorKind
|
|
24324
|
+
});
|
|
24325
|
+
return;
|
|
24326
|
+
}
|
|
24275
24327
|
if (err instanceof WorkspaceSkillNotFoundError) {
|
|
24276
24328
|
res.status(404).json({
|
|
24277
24329
|
error: err.message,
|
|
@@ -24584,6 +24636,22 @@ function sendBridgeError(res, err, ctx, daemonLog) {
|
|
|
24584
24636
|
const data = err.data;
|
|
24585
24637
|
if (data && typeof data === "object") {
|
|
24586
24638
|
const kind = data.errorKind;
|
|
24639
|
+
if (kind === "session_writer_conflict" || kind === "session_writer_lost" || kind === "session_transcript_changed") {
|
|
24640
|
+
res.status(409).json({
|
|
24641
|
+
error: SESSION_WRITER_ERROR_MESSAGES[kind],
|
|
24642
|
+
code: kind,
|
|
24643
|
+
errorKind: kind
|
|
24644
|
+
});
|
|
24645
|
+
return;
|
|
24646
|
+
}
|
|
24647
|
+
if (kind === "session_writer_unavailable") {
|
|
24648
|
+
res.status(503).json({
|
|
24649
|
+
error: SESSION_WRITER_ERROR_MESSAGES[kind],
|
|
24650
|
+
code: kind,
|
|
24651
|
+
errorKind: kind
|
|
24652
|
+
});
|
|
24653
|
+
return;
|
|
24654
|
+
}
|
|
24587
24655
|
if (kind === "mcp_budget_would_exceed") {
|
|
24588
24656
|
const d = data;
|
|
24589
24657
|
res.status(409).json({
|
|
@@ -25215,7 +25283,7 @@ __name(registerWorkspaceModelsRoutes, "registerWorkspaceModelsRoutes");
|
|
|
25215
25283
|
// packages/cli/src/serve/routes/a2ui-action.ts
|
|
25216
25284
|
init_esbuild_shims();
|
|
25217
25285
|
import * as fsp4 from "node:fs/promises";
|
|
25218
|
-
import * as
|
|
25286
|
+
import * as path12 from "node:path";
|
|
25219
25287
|
var A2UI_MIME = "application/a2ui+json";
|
|
25220
25288
|
var ACTION_TOOL = "action";
|
|
25221
25289
|
var CALL_TIMEOUT_MS = 15e3;
|
|
@@ -25238,7 +25306,7 @@ __name(usableServerConfig, "usableServerConfig");
|
|
|
25238
25306
|
async function findFromSettingsFile(workspaceCwd) {
|
|
25239
25307
|
try {
|
|
25240
25308
|
const raw = await fsp4.readFile(
|
|
25241
|
-
|
|
25309
|
+
path12.join(workspaceCwd, ".qwen", "settings.json"),
|
|
25242
25310
|
"utf8"
|
|
25243
25311
|
);
|
|
25244
25312
|
const settings = JSON.parse(raw);
|
|
@@ -25375,7 +25443,7 @@ __name(registerA2uiActionRoutes, "registerA2uiActionRoutes");
|
|
|
25375
25443
|
|
|
25376
25444
|
// packages/cli/src/serve/server/fs-factory.ts
|
|
25377
25445
|
init_esbuild_shims();
|
|
25378
|
-
import * as
|
|
25446
|
+
import * as path13 from "node:path";
|
|
25379
25447
|
var IDE_WORKSPACE_PATH_ENV_VAR = "QWEN_CODE_IDE_WORKSPACE_PATH";
|
|
25380
25448
|
function createDefaultFsAuditEmit() {
|
|
25381
25449
|
const WARN_EVERY = 100;
|
|
@@ -25449,14 +25517,14 @@ function parseIdeWorkspacePathEnv(value) {
|
|
|
25449
25517
|
const parsed = JSON.parse(value);
|
|
25450
25518
|
if (Array.isArray(parsed) && parsed.every((item) => typeof item === "string")) {
|
|
25451
25519
|
return parsed.filter(
|
|
25452
|
-
(workspace) => workspace.length > 0 &&
|
|
25520
|
+
(workspace) => workspace.length > 0 && path13.isAbsolute(workspace)
|
|
25453
25521
|
);
|
|
25454
25522
|
}
|
|
25455
25523
|
throw new Error("IDE workspace path JSON must be a string array");
|
|
25456
25524
|
} catch {
|
|
25457
25525
|
}
|
|
25458
25526
|
}
|
|
25459
|
-
return value.split(
|
|
25527
|
+
return value.split(path13.delimiter).filter((workspace) => workspace.length > 0 && path13.isAbsolute(workspace));
|
|
25460
25528
|
}
|
|
25461
25529
|
__name(parseIdeWorkspacePathEnv, "parseIdeWorkspacePathEnv");
|
|
25462
25530
|
function dropNestedWorkspacesPreservingPrimary(workspaces) {
|
|
@@ -25780,10 +25848,10 @@ function installRateLimiter(app, opts, daemonLog, options = {}) {
|
|
|
25780
25848
|
{ tier, key: key.slice(0, 64) }
|
|
25781
25849
|
);
|
|
25782
25850
|
} : void 0,
|
|
25783
|
-
onError: daemonLog ? (err,
|
|
25851
|
+
onError: daemonLog ? (err, path15) => {
|
|
25784
25852
|
daemonLog.warn(
|
|
25785
25853
|
`rate limiter error (fail-open): ${err instanceof Error ? err.message : String(err)}`,
|
|
25786
|
-
{ path:
|
|
25854
|
+
{ path: path15 }
|
|
25787
25855
|
);
|
|
25788
25856
|
} : void 0
|
|
25789
25857
|
});
|
|
@@ -26134,23 +26202,24 @@ function registerWorkspaceManagementRoutes(app, deps) {
|
|
|
26134
26202
|
});
|
|
26135
26203
|
return;
|
|
26136
26204
|
}
|
|
26137
|
-
if (
|
|
26205
|
+
if (cwd.length > MAX_WORKSPACE_PATH_LENGTH) {
|
|
26138
26206
|
res.status(400).json({
|
|
26139
|
-
error:
|
|
26207
|
+
error: `\`cwd\` exceeds the ${MAX_WORKSPACE_PATH_LENGTH}-character limit`,
|
|
26140
26208
|
code: "invalid_path"
|
|
26141
26209
|
});
|
|
26142
26210
|
return;
|
|
26143
26211
|
}
|
|
26144
|
-
|
|
26212
|
+
const sandboxCwd = translateAndCheckAbsoluteWorkspacePath(cwd);
|
|
26213
|
+
if (sandboxCwd === null) {
|
|
26145
26214
|
res.status(400).json({
|
|
26146
|
-
error:
|
|
26215
|
+
error: "`cwd` must be an absolute path",
|
|
26147
26216
|
code: "invalid_path"
|
|
26148
26217
|
});
|
|
26149
26218
|
return;
|
|
26150
26219
|
}
|
|
26151
26220
|
let canonical;
|
|
26152
26221
|
try {
|
|
26153
|
-
canonical = realpathSync2.native(resolve4(
|
|
26222
|
+
canonical = realpathSync2.native(resolve4(sandboxCwd));
|
|
26154
26223
|
} catch {
|
|
26155
26224
|
res.status(400).json({
|
|
26156
26225
|
error: "Path does not exist or is not accessible",
|
|
@@ -26971,7 +27040,7 @@ __name(registerWorkspaceManagementRoutes, "registerWorkspaceManagementRoutes");
|
|
|
26971
27040
|
// packages/cli/src/serve/routes/workspace-git.ts
|
|
26972
27041
|
init_esbuild_shims();
|
|
26973
27042
|
import * as fs4 from "node:fs";
|
|
26974
|
-
import * as
|
|
27043
|
+
import * as path14 from "node:path";
|
|
26975
27044
|
function registerWorkspaceGitRoutes(app, deps) {
|
|
26976
27045
|
app.get("/workspace/git", async (_req, res) => {
|
|
26977
27046
|
try {
|
|
@@ -26997,10 +27066,10 @@ function registerWorkspaceQualifiedGitRoutes(app, deps) {
|
|
|
26997
27066
|
let gitCwd = runtime.workspaceCwd;
|
|
26998
27067
|
if (typeof rawCwd === "string" && rawCwd.length > 0) {
|
|
26999
27068
|
try {
|
|
27000
|
-
const resolved = fs4.realpathSync(
|
|
27069
|
+
const resolved = fs4.realpathSync(path14.resolve(rawCwd));
|
|
27001
27070
|
const root = fs4.realpathSync(runtime.workspaceCwd);
|
|
27002
|
-
const rel =
|
|
27003
|
-
if (!rel.startsWith("..") && !
|
|
27071
|
+
const rel = path14.relative(root, resolved);
|
|
27072
|
+
if (!rel.startsWith("..") && !path14.isAbsolute(rel)) {
|
|
27004
27073
|
gitCwd = resolved;
|
|
27005
27074
|
}
|
|
27006
27075
|
} catch {
|
|
@@ -27052,8 +27121,8 @@ function buildDiffList(workspaceCwd, result) {
|
|
|
27052
27121
|
hiddenCount: 0
|
|
27053
27122
|
};
|
|
27054
27123
|
}
|
|
27055
|
-
const files = [...result.perFileStats.entries()].map(([
|
|
27056
|
-
path:
|
|
27124
|
+
const files = [...result.perFileStats.entries()].map(([path15, s]) => ({
|
|
27125
|
+
path: path15,
|
|
27057
27126
|
oldPath: s.oldPath,
|
|
27058
27127
|
added: s.added,
|
|
27059
27128
|
removed: s.removed,
|