@qwen-code/qwen-code 0.21.13 → 0.21.14-nightly.20260822.7a4566cb3b
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 +15 -7
- package/bundled/qc-helper/docs/extension/introduction.md +2 -0
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
- package/bundled/qc-helper/docs/features/code-review.md +25 -3
- package/bundled/qc-helper/docs/features/commands.md +120 -8
- package/bundled/qc-helper/docs/features/markdown-rendering.md +6 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +3 -3
- package/bundled/qc-helper/docs/features/terminal-images.md +50 -0
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +21 -4
- package/bundled/review/SKILL.md +113 -62
- package/chunks/MaxSizedBox-NCWYES5B.js +98 -0
- package/chunks/{StandaloneSessionPicker-KEGXNUG6.js → StandaloneSessionPicker-A4V4F64Y.js} +80 -79
- package/chunks/{acp-startup-profiler-NMDXYGDN.js → acp-startup-profiler-DDVSJKJK.js} +2 -2
- package/chunks/{acpAgent-XPES32S7.js → acpAgent-YYRH7HTQ.js} +1094 -278
- package/chunks/{agent-DPTOZFEM.js → agent-NEM254CJ.js} +52 -51
- package/chunks/agent-headless-AVFYIRPV.js +88 -0
- package/chunks/{anthropicContentGenerator-G7BVXTKN.js → anthropicContentGenerator-IWFTSBSV.js} +25 -25
- package/chunks/{artifact-tool-GEXTOPVO.js → artifact-tool-SBXMTVCB.js} +3 -3
- package/chunks/{askUserQuestion-B33XRSB7.js → askUserQuestion-KEQJRFD6.js} +3 -3
- package/chunks/{bridge-YNQBAA4Z.js → bridge-2CGOUO25.js} +59 -57
- package/chunks/{ca-4CQ6MYNQ.js → ca-SLZJD6QH.js} +8 -0
- package/chunks/{channel-management-service-GWY2GAIC.js → channel-management-service-FUJ2EFTF.js} +1 -1
- package/chunks/channel-settings-store-AZKNHHDC.js +103 -0
- package/chunks/{channel-worker-group-7LXCMZ77.js → channel-worker-group-CTE54QL6.js} +8 -7
- package/chunks/{channel-worker-manager-RYEME4ZZ.js → channel-worker-manager-4EHTD3T4.js} +8 -7
- package/chunks/{channel-worker-supervisor-OEVWBHGT.js → channel-worker-supervisor-F6I6WSWW.js} +6 -5
- package/chunks/{chunk-KD5BOPLP.js → chunk-2G4QF4VI.js} +125 -31
- package/chunks/{chunk-BHILXOC3.js → chunk-2MTIAN5Z.js} +3 -3
- package/chunks/{chunk-A4QRWUDE.js → chunk-2NWPB6T4.js} +6 -6
- package/chunks/{chunk-KV27IEHM.js → chunk-2TRNCJK4.js} +1 -1
- package/chunks/{chunk-EL5SXY3T.js → chunk-32CHFLGV.js} +198 -23
- package/chunks/{chunk-5CVO7YES.js → chunk-36OF5PRW.js} +1 -1
- package/chunks/{chunk-X26JYGTD.js → chunk-37BZSWEV.js} +1 -1
- package/chunks/{chunk-WFSTRPRO.js → chunk-3CLIDIVQ.js} +3 -3
- package/chunks/{chunk-A267JX7H.js → chunk-3HWN4E7N.js} +18 -18
- package/chunks/{chunk-ZYYTZUI2.js → chunk-3LYGXZ2H.js} +3 -3
- package/chunks/chunk-3SIGAHUX.js +3969 -0
- package/chunks/{chunk-BVJS5BSP.js → chunk-3XD4PT3B.js} +1 -1
- package/chunks/{chunk-6QFDQMQX.js → chunk-3ZFJUBTP.js} +1 -1
- package/chunks/{chunk-HUTNYWBG.js → chunk-45UD2TU4.js} +19 -11
- package/chunks/{chunk-4W5U2TUT.js → chunk-4F5WV4RF.js} +4 -4
- package/chunks/{chunk-I3G5JWBV.js → chunk-4GP3MNQ2.js} +2695 -1524
- package/chunks/{chunk-V26NVGAU.js → chunk-4MIDDJLJ.js} +8 -3
- package/chunks/{chunk-TS6625XH.js → chunk-5MK45KZ3.js} +9 -5
- package/chunks/{chunk-V57QC6WW.js → chunk-5OTMZVPL.js} +11 -9
- package/chunks/{chunk-MC4TLKEI.js → chunk-5PHLBWBL.js} +3 -3
- package/chunks/chunk-64LXOKG4.js +367 -0
- package/chunks/{chunk-6HY6IF3Z.js → chunk-6NFAEG54.js} +22 -2
- package/chunks/{chunk-TIGA2IVL.js → chunk-6NJIPX6W.js} +10 -298
- package/chunks/{chunk-MRMJCLIY.js → chunk-6RB2S4QP.js} +3 -3
- package/chunks/chunk-6S2OXVJT.js +369 -0
- package/chunks/{chunk-O4D7SPJN.js → chunk-6U46RZ25.js} +3 -3
- package/chunks/{chunk-JOOFMXGF.js → chunk-6UDHEIUT.js} +6 -6
- package/chunks/{chunk-VOQXFAY5.js → chunk-74TONY4F.js} +286 -0
- package/chunks/{chunk-LJQAUZMR.js → chunk-7CPJMZVJ.js} +1627 -180
- package/chunks/{chunk-T3CHYWJZ.js → chunk-7E7UCJHS.js} +100 -4
- package/chunks/{chunk-YZHRN3CF.js → chunk-7IV52LTO.js} +2 -2
- package/chunks/{chunk-4PKCUT7F.js → chunk-7JDGSJQH.js} +7 -7
- package/chunks/{chunk-GO7STP6N.js → chunk-7VITNOH6.js} +4 -4
- package/chunks/{chunk-CU6GJD55.js → chunk-7WLFSDLG.js} +1 -1
- package/chunks/{chunk-4WKAA4KS.js → chunk-A4N4FTMH.js} +1 -11
- package/chunks/{chunk-BUQDLC2G.js → chunk-A5F2YNO6.js} +3 -3
- package/chunks/{chunk-OY5RNSV4.js → chunk-AGCLK4G7.js} +3 -3
- package/chunks/{chunk-IA2K2HJE.js → chunk-AP3B7LKD.js} +2 -2
- package/chunks/{chunk-Y3YCSWG5.js → chunk-AZF6SME3.js} +2 -2
- package/chunks/{chunk-QFJ5JHQR.js → chunk-C72BXMJ5.js} +1 -1
- package/chunks/chunk-CETB5XY4.js +3654 -0
- package/chunks/{chunk-AA2BEKV3.js → chunk-CTAP6PO3.js} +3 -3
- package/chunks/{chunk-MS7GNABG.js → chunk-CXJHQVEK.js} +8 -0
- package/chunks/{chunk-QF2NHSPB.js → chunk-D534POS2.js} +274 -225
- package/chunks/{chunk-UKMR3CKV.js → chunk-D7QQ6RUB.js} +24 -9
- package/chunks/{chunk-DXIBNLBZ.js → chunk-DB2OKNTU.js} +2 -2
- package/chunks/{chunk-DGZEMW5R.js → chunk-DJEHYM4H.js} +3 -3
- package/chunks/{chunk-O565M6A4.js → chunk-DRVS6K7A.js} +260 -16
- package/chunks/{chunk-U3VNBPUO.js → chunk-DV4375RD.js} +5 -5
- package/chunks/{chunk-OXCMMLED.js → chunk-E63A23D7.js} +3 -3
- package/chunks/{chunk-4NFY2S7N.js → chunk-E7REAOTN.js} +15 -0
- package/chunks/{chunk-6ORZ2EDC.js → chunk-EW2IQ3ID.js} +3 -3
- package/chunks/{chunk-DGK6P3BQ.js → chunk-EXVK5R7X.js} +13 -13
- package/chunks/{chunk-NWNEANAT.js → chunk-FOGQO4FG.js} +953 -660
- package/chunks/{chunk-3U3VAL47.js → chunk-FV6PXZRO.js} +1 -1
- package/chunks/{chunk-76J3IJ3M.js → chunk-FX5TGHDE.js} +8 -8
- package/chunks/{chunk-QIH2HAEN.js → chunk-GXG4PYQB.js} +1 -1
- package/chunks/{chunk-FDGGZIYW.js → chunk-HDKCKCYO.js} +3 -3
- package/chunks/{chunk-RIAABG2K.js → chunk-HERHU33B.js} +2 -2
- package/chunks/{chunk-ZYBBISBY.js → chunk-HETN3NE2.js} +18 -15
- package/chunks/{chunk-XIT3GURH.js → chunk-HGBACZGD.js} +3 -3
- package/chunks/{chunk-UZPM4XHR.js → chunk-HGH7DXNI.js} +29 -8
- package/chunks/{chunk-CHHABXPE.js → chunk-HIK2OF33.js} +1 -1
- package/chunks/{chunk-FC4KQFCS.js → chunk-HMJ2P3SV.js} +1 -1
- package/chunks/chunk-HRVMTN37.js +26 -0
- package/chunks/{chunk-PQ36L4F5.js → chunk-HZZGYJIP.js} +1 -1
- package/chunks/{chunk-PT4I7NBA.js → chunk-I432KXWD.js} +1 -1
- package/chunks/{chunk-3EZLLVDF.js → chunk-IBJ5S45N.js} +3 -3
- package/chunks/{chunk-A4MFR4C5.js → chunk-IO257NUD.js} +3 -5
- package/chunks/{chunk-MIPFDQAF.js → chunk-ISJMN3ML.js} +1 -1
- package/chunks/chunk-IWOWEENB.js +9169 -0
- package/chunks/{chunk-XHRY7BXD.js → chunk-J6SIP2IT.js} +4 -4
- package/chunks/{chunk-OD2WU5QY.js → chunk-J7JQXYVL.js} +1 -1
- package/chunks/{chunk-NEFOOD54.js → chunk-J7VPB2HF.js} +4 -4
- package/chunks/{chunk-P7MPQI75.js → chunk-JGUBDRBC.js} +2 -2
- package/chunks/{chunk-SXCOEJO4.js → chunk-JOLJTKIG.js} +1 -1
- package/chunks/{chunk-NTTBXH7U.js → chunk-JS73NNWF.js} +8 -0
- package/chunks/{chunk-QRCNA3SR.js → chunk-JXLPQTMW.js} +50 -70
- package/chunks/{chunk-NNHNLJ2X.js → chunk-K2MSGB3W.js} +317 -72
- package/chunks/{chunk-KBXKR5R2.js → chunk-K52PZNU4.js} +1 -1
- package/chunks/{chunk-OOQUVWIG.js → chunk-K5OIW3I7.js} +4 -4
- package/chunks/{chunk-SOORFWKY.js → chunk-KSPRQSB4.js} +1 -1
- package/chunks/{chunk-WSH6GRKG.js → chunk-KVGR4MCF.js} +3 -3
- package/chunks/{chunk-6YKYPVDV.js → chunk-LC5M7YVE.js} +4 -4
- package/chunks/{chunk-M6NDLY2T.js → chunk-LD5VIJ7S.js} +1 -1
- package/chunks/{chunk-OMLJNPBE.js → chunk-LDGWX737.js} +84 -4
- package/chunks/{chunk-FAAUPSY2.js → chunk-LI4YHTQK.js} +1 -1
- package/chunks/{chunk-CXAOG665.js → chunk-LIKIJAUH.js} +2 -2
- package/chunks/chunk-LJZSMWOH.js +18 -0
- package/chunks/{chunk-BKPPWD33.js → chunk-M2IL2RTA.js} +22 -2
- package/chunks/{chunk-N5YPT6PH.js → chunk-MHOY756Q.js} +25 -13
- package/chunks/{chunk-YP5KH5Y7.js → chunk-ND7NOI4P.js} +1 -1
- package/chunks/{chunk-AW4TRXOC.js → chunk-NP2LV67M.js} +1 -1
- package/chunks/{chunk-GGDBMYGZ.js → chunk-NQB52P65.js} +5 -5
- package/chunks/{chunk-E3DYKPYZ.js → chunk-NUGZAFR2.js} +3 -3
- package/chunks/{chunk-GMIEIY3Y.js → chunk-O5BDEWBC.js} +3 -3
- package/chunks/{chunk-GDXET5XU.js → chunk-O5Z7EB6Y.js} +3 -3
- package/chunks/{chunk-5EYKMUUY.js → chunk-OTXXOZKW.js} +1 -1
- package/chunks/{chunk-M732YJPW.js → chunk-PALTIYXB.js} +6 -6
- package/chunks/{chunk-7UXUJ5T3.js → chunk-PLECQWDB.js} +1 -1
- package/chunks/{chunk-MLPXSYXR.js → chunk-PMIKPGDF.js} +66 -32
- package/chunks/{chunk-IWPYVAO2.js → chunk-PSQJ24ZZ.js} +3 -3
- package/chunks/{chunk-CPHEPGAO.js → chunk-PZRUV52H.js} +2 -2
- package/chunks/{chunk-PP4FUZNV.js → chunk-Q7RPLE33.js} +2 -2
- package/chunks/{chunk-S5DWMTHO.js → chunk-QQUVPMMZ.js} +2 -0
- package/chunks/{chunk-JUEPY766.js → chunk-RNGTMHKN.js} +3 -3
- package/chunks/{chunk-TUGSVUJB.js → chunk-ROV6B34L.js} +6 -6
- package/chunks/{chunk-RVOJ2FBP.js → chunk-RPJOOK6N.js} +1576 -10633
- package/chunks/{chunk-AXN7UPYQ.js → chunk-RQJJZQOH.js} +2 -2
- package/chunks/{chunk-AFSG32D5.js → chunk-RRRCWDFO.js} +1 -1
- package/chunks/{chunk-2M55OBEB.js → chunk-S3G6YFQC.js} +1 -1
- package/chunks/{chunk-4S5337WV.js → chunk-SVU5KGR7.js} +6527 -3314
- package/chunks/chunk-TBVSALA3.js +1109 -0
- package/chunks/{chunk-QUGAUQGJ.js → chunk-TBWQLLFO.js} +2 -0
- package/chunks/{chunk-AS5IN4GK.js → chunk-THK3QUU6.js} +5 -5
- package/chunks/{chunk-JNDY2MDR.js → chunk-TLDZKNZP.js} +1 -1
- package/chunks/{chunk-ZZO74WKW.js → chunk-TNAIZBPQ.js} +115 -28
- package/chunks/{chunk-3Z43GZUQ.js → chunk-TXASDT2M.js} +1 -1
- package/chunks/{chunk-CZBYX5MY.js → chunk-U53XZHAE.js} +1 -1
- package/chunks/{chunk-HIBNSEJE.js → chunk-UDG5EZJI.js} +0 -2
- package/chunks/{chunk-QNQAPSN2.js → chunk-URN2JIAQ.js} +4 -1
- package/chunks/{chunk-EZ5RP345.js → chunk-UYQTX2P6.js} +44 -13
- package/chunks/{chunk-BZ263IKX.js → chunk-UZPYR3EV.js} +1 -1
- package/chunks/{chunk-YZOSNW4R.js → chunk-VFACN2CE.js} +1 -1
- package/chunks/{chunk-RWDNJBWN.js → chunk-VLRBJ24J.js} +2 -2
- package/chunks/{chunk-NHDR76JX.js → chunk-VMJL7RH6.js} +4 -4
- package/chunks/{chunk-E23IPNGS.js → chunk-VOTDAZR7.js} +35 -6
- package/chunks/{chunk-XLLKYULU.js → chunk-VSNPOSDN.js} +2 -2
- package/chunks/{chunk-25EYDK42.js → chunk-VUMLT7E5.js} +2 -2
- package/chunks/{chunk-H4A72DE5.js → chunk-W4CRPSC5.js} +1 -1
- package/chunks/{chunk-NM5V5OVW.js → chunk-WJJYJVQE.js} +3 -3
- package/chunks/{chunk-ROIYNTHJ.js → chunk-WRT324N6.js} +3 -3
- package/chunks/chunk-WZAD4ZNJ.js +59 -0
- package/chunks/{chunk-SG7ZP5PG.js → chunk-WZDM44SB.js} +4 -4
- package/chunks/{chunk-JE7KQ2UP.js → chunk-XIQ5HQ2F.js} +469 -77
- package/chunks/{chunk-QV5YN5YD.js → chunk-XJOHLP2A.js} +5 -5
- package/chunks/{chunk-XUJNK7Y6.js → chunk-XL5K4SVK.js} +1 -1
- package/chunks/{chunk-CKSJECTU.js → chunk-XZJKSETB.js} +9 -5
- package/chunks/{chunk-YEYY7TEP.js → chunk-Y2FEAXLP.js} +7 -7
- package/chunks/{chunk-2B2BF7P7.js → chunk-YDJRMQU4.js} +3 -3
- package/chunks/{chunk-46UV252V.js → chunk-YHC2EYYG.js} +35 -38
- package/chunks/{chunk-OVZPVYZB.js → chunk-YMVFIYHV.js} +96 -18
- package/chunks/{chunk-WGHHA7ZH.js → chunk-Z3JMO2CH.js} +1 -1
- package/chunks/{chunk-MA2HEDVP.js → chunk-ZRYQMWEP.js} +3 -3
- package/chunks/{chunk-IGGGG5CX.js → chunk-ZTAT23TL.js} +15948 -10201
- package/chunks/{computer-use-77C5FHMW.js → computer-use-H2T7IFYX.js} +55 -54
- package/chunks/{config-utils-IVHRSXWI.js → config-utils-3DY73VIJ.js} +2 -2
- package/chunks/contextCommand-5AAZFFFV.js +94 -0
- package/chunks/{core-runtime-7VMIKUTG.js → core-runtime-JWFNKO2S.js} +57 -55
- package/chunks/{create-sub-session-2L5MQRN4.js → create-sub-session-33HIYIJE.js} +58 -56
- package/chunks/{create-sub-session-KRQULJE6.js → create-sub-session-XBCVGNFU.js} +6 -4
- package/chunks/{cron-create-H7UEPDSN.js → cron-create-IKA56DAF.js} +5 -5
- package/chunks/{cron-delete-6SZK7YFM.js → cron-delete-K5Q62EGH.js} +5 -5
- package/chunks/{cron-list-H25JIHEZ.js → cron-list-QBFGAMP7.js} +5 -5
- package/chunks/{daemon-2KTG7ZBN.js → daemon-NNCQ3HWT.js} +806 -147
- package/chunks/{daemon-git-worktree-guard-DXYIMWFT.js → daemon-git-worktree-guard-6233JAPJ.js} +54 -53
- package/chunks/daemon-status-provider-3EI2KALQ.js +104 -0
- package/chunks/daemon-trust-policy-QWWU7CON.js +100 -0
- package/chunks/{daemon-trust-policy-monitor-RYYGCQ3J.js → daemon-trust-policy-monitor-FH7GBAKN.js} +60 -59
- package/chunks/{de-UBEBKG6V.js → de-AH4LGCF5.js} +8 -0
- package/chunks/{deferred-core-runtime-3SGXFXEQ.js → deferred-core-runtime-EDUZQRME.js} +52 -51
- package/chunks/{discovery-ORA5J7YP.js → discovery-X2NV535U.js} +1 -1
- package/chunks/{display-image-ON3EYFRD.js → display-image-OEJMJV3S.js} +5 -5
- package/chunks/{dist-YEPL4RAW.js → dist-5EV2G6MC.js} +2 -3
- package/chunks/{dist-MAQXAQ2Y.js → dist-EQ3Q5XHX.js} +45337 -32756
- package/chunks/{dist-WJ4BHIEW.js → dist-ESS34DHC.js} +72 -0
- package/chunks/{dist-JWMKPWT5.js → dist-EUOUPUFO.js} +3 -4
- package/chunks/{dist-IYYN3RUT.js → dist-UOFRXJT6.js} +2798 -1250
- package/chunks/{earlyInputCapture-KJMLFVQV.js → earlyInputCapture-VSP42LUR.js} +53 -52
- package/chunks/{edit-I4LQFAEC.js → edit-ZTLO5ASX.js} +60 -58
- package/chunks/{en-X6YV7GME.js → en-MD3GP5YL.js} +8 -0
- package/chunks/{enter-worktree-YNPOJSRH.js → enter-worktree-TMTPDS2S.js} +55 -54
- package/chunks/{enterPlanMode-XCPK62ER.js → enterPlanMode-UBAXFMYI.js} +55 -54
- package/chunks/{environment-S7CTIHMX.js → environment-C2CZN7CB.js} +55 -54
- package/chunks/{errors-7HB2AIDS.js → errors-ZUNFQINF.js} +54 -53
- package/chunks/{exit-worktree-AIIY7SR6.js → exit-worktree-572NWEPJ.js} +55 -54
- package/chunks/exitPlanMode-QTIXFGZT.js +86 -0
- package/chunks/{fast-path-NDJV3ZFJ.js → fast-path-CEEVHQL3.js} +3 -3
- package/chunks/{fast-path-settings-LNOFM2YP.js → fast-path-settings-WHX3J3ZI.js} +2 -2
- package/chunks/{fr-VENTC2BS.js → fr-ZEML2JWS.js} +8 -0
- package/chunks/{gemini-RSUFP5OE.js → gemini-I2YR6GMS.js} +114 -112
- package/chunks/{geminiContentGenerator-SQ5XBPZ7.js → geminiContentGenerator-GQWNDZQF.js} +7 -7
- package/chunks/getMachineId-bsd-FBOAYNSY.js +48 -0
- package/chunks/{getMachineId-bsd-FG7IUY6U.js → getMachineId-bsd-YH7RURBZ.js} +4 -4
- package/chunks/{getMachineId-darwin-GLCJI2RA.js → getMachineId-darwin-H6USQYNI.js} +4 -4
- package/chunks/getMachineId-darwin-RNJLJUXY.js +47 -0
- package/chunks/{getMachineId-linux-O6OPPAKO.js → getMachineId-linux-HF2N63ET.js} +3 -3
- package/chunks/getMachineId-linux-UEVRAIAB.js +41 -0
- package/chunks/getMachineId-unsupported-FWXYJ7HW.js +31 -0
- package/chunks/{getMachineId-unsupported-S6CKYVGC.js → getMachineId-unsupported-NYA5DXRB.js} +3 -3
- package/chunks/getMachineId-win-LRVGMHLW.js +50 -0
- package/chunks/{getMachineId-win-X5SRNEH7.js → getMachineId-win-SMEGY2DW.js} +4 -4
- package/chunks/{glob-J4RUJAHX.js → glob-XFBL2RVT.js} +58 -57
- package/chunks/{goal-tools-VHTNVOKK.js → goal-tools-TLJCE7YZ.js} +6 -6
- package/chunks/{grep-VJWPLFOT.js → grep-U675LEXE.js} +55 -54
- package/chunks/handleAutoUpdate-R6RUCIA2.js +97 -0
- package/chunks/{i18n-RM5YOICI.js → i18n-SJCZDZ4C.js} +53 -52
- package/chunks/{image-gen-EXECB5XM.js → image-gen-6VY7CA7C.js} +14 -14
- package/chunks/initializer-CRDZXJOG.js +101 -0
- package/chunks/installationInfo-EW3NEJDZ.js +95 -0
- package/chunks/{ja-QHT4EQTO.js → ja-UM5B2HMD.js} +8 -0
- package/chunks/{keychain-token-storage-3XFJ5ZB2.js → keychain-token-storage-MTFTAESK.js} +3 -3
- package/chunks/list-TZEMTXDH.js +104 -0
- package/chunks/{list-agents-OSVDFI6S.js → list-agents-43XUEXJV.js} +6 -6
- package/chunks/loadedSettingsAdapter-47DG424L.js +98 -0
- package/chunks/{loggingContentGenerator-WF4ZOJEZ.js → loggingContentGenerator-77C6O5VW.js} +31 -29
- package/chunks/{loop-wakeup-WQS6JYAG.js → loop-wakeup-E54KDUXC.js} +6 -6
- package/chunks/{ls-D3HUFHDP.js → ls-CGL2UC3H.js} +7 -7
- package/chunks/{lsp-3QDDJTCS.js → lsp-5IKUO5DX.js} +3 -3
- package/chunks/{managed-npm-update-E7IW6N7V.js → managed-npm-update-AJ5GZRUA.js} +53 -52
- package/chunks/mcp-AQK656Y4.js +98 -0
- package/chunks/{monitor-EE2UYMGE.js → monitor-UDZXKYT3.js} +55 -54
- package/chunks/nonInteractiveCli-6NC3NLZM.js +166 -0
- package/chunks/{notebook-edit-NTDY4QDU.js → notebook-edit-G6WZI2YT.js} +59 -57
- package/chunks/{openaiContentGenerator-YNFVJMRJ.js → openaiContentGenerator-IHVHP3VB.js} +32 -32
- package/chunks/{pidfile-4XSFLYBZ.js → pidfile-EBKS2HBK.js} +53 -52
- package/chunks/{processUtils-WDA2MJFD.js → processUtils-B7M35ZLR.js} +2 -2
- package/chunks/prompt-terminal-ledger-5JYOPOII.js +93 -0
- package/chunks/{pt-VL3I5RNY.js → pt-5BMJ3XYH.js} +8 -0
- package/chunks/{qwenContentGenerator-434M7QKY.js → qwenContentGenerator-WCJPPTED.js} +59 -58
- package/chunks/{qwenOAuth2-GMYZOO6A.js → qwenOAuth2-S2CLBSEZ.js} +10 -10
- package/chunks/read-file-WFM53FTW.js +33 -0
- package/chunks/{read-mcp-resource-XD54ZQMC.js → read-mcp-resource-XYES2B42.js} +3 -3
- package/chunks/{record-artifact-SEYFJEJF.js → record-artifact-W3IBTGL7.js} +10 -6
- package/chunks/{resumeHistoryUtils-EVG3WYK2.js → resumeHistoryUtils-CK4ZC6YO.js} +59 -58
- package/chunks/ripGrep-B3PBLEQ3.js +86 -0
- package/chunks/{ru-4RCKL4PY.js → ru-6GL66ORV.js} +8 -0
- package/chunks/{run-qwen-serve-3QSGRXAN.js → run-qwen-serve-DC5RXI6N.js} +537 -185
- package/chunks/{runtime-5MLLZ7DC.js → runtime-UVEETF54.js} +63 -62
- package/chunks/{scheduler-RPBJ63CH.js → scheduler-MWT3UMVN.js} +54 -53
- package/chunks/{sdk-exporters-grpc-54L4LS5L.js → sdk-exporters-grpc-6J5CKOMO.js} +194 -75
- package/chunks/{sdk-exporters-http-XUVP63H6.js → sdk-exporters-http-Q3YZ4752.js} +40 -45
- package/chunks/{sdk-impl-YXUEN2Z2.js → sdk-impl-BOMCAN2Z.js} +7211 -5454
- package/chunks/{send-message-VZENRWRH.js → send-message-J4VT46OI.js} +8 -8
- package/chunks/{serve-HS3XLPXU.js → serve-AKM75GTE.js} +60 -61
- package/chunks/{server-TC4A7AAZ.js → server-KU7XIDVT.js} +2221 -399
- package/chunks/{session-UBOFXVMN.js → session-DKVYIRWN.js} +108 -105
- package/chunks/{settings-D5644OM5.js → settings-NS3PXZDP.js} +63 -62
- package/chunks/{shell-3PZULQQV.js → shell-UXCNM2OK.js} +52 -51
- package/chunks/{skill-PEVVXQ3L.js → skill-KV7YCCTM.js} +30 -28
- package/chunks/{skill-settings-J65JKKES.js → skill-settings-EXW7ESWJ.js} +59 -58
- package/chunks/{spawnChannel-IYGXRHSQ.js → spawnChannel-FCP44P4V.js} +55 -54
- package/chunks/{standalone-update-IFM53PE7.js → standalone-update-RGW3B2DX.js} +55 -54
- package/chunks/{startInteractiveUI-3AVH7L6H.js → startInteractiveUI-UZMF2BIJ.js} +615 -392
- package/chunks/{syntheticOutput-7GWFIDXT.js → syntheticOutput-JAXMIMZP.js} +4 -4
- package/chunks/{task-create-FCBDX7UH.js → task-create-I2H322E4.js} +12 -12
- package/chunks/{task-list-YIYIUFUA.js → task-list-3OLIWFTQ.js} +21 -7
- package/chunks/{task-stop-X37KYTKB.js → task-stop-JAUY6MSY.js} +3 -3
- package/chunks/{task-update-MYPFVOVM.js → task-update-B3XO4CPI.js} +87 -16
- package/chunks/{team-create-ZAIA7KAV.js → team-create-77XY3KAE.js} +56 -56
- package/chunks/{team-delete-6UMU4XLS.js → team-delete-Q7GE7RRI.js} +6 -6
- package/chunks/{team-plan-approval-UNIUS7OD.js → team-plan-approval-TAQANDQG.js} +55 -54
- package/chunks/{terminal-image-renderer-G343P2RV.js → terminal-image-renderer-V4LIF5NS.js} +54 -53
- package/chunks/theme-manager-KKBAJ574.js +90 -0
- package/chunks/{todoWrite-U2R4NVF4.js → todoWrite-FJJTY2TI.js} +7 -7
- package/chunks/{tool-search-5R2OE4C7.js → tool-search-GZJYRK4I.js} +25 -24
- package/chunks/{total-session-admission-4KBHMQQ2.js → total-session-admission-NIBNWXHE.js} +59 -57
- package/chunks/{trustedFolders-LK6T4XC7.js → trustedFolders-7GEI2NYC.js} +53 -52
- package/chunks/{undici-PYHBDDPN.js → undici-S7WJSKGJ.js} +962 -391
- package/chunks/{update-relaunch-UBKROIC6.js → update-relaunch-OA3OEBMD.js} +5 -5
- package/chunks/{updateCheck-W4Y2GFSD.js → updateCheck-QVHQEVIY.js} +56 -55
- package/chunks/{useAutoAcceptIndicator-C7BEICBF.js → useAutoAcceptIndicator-WZ27J7NY.js} +64 -63
- package/chunks/{validateNonInterActiveAuth-LTEI2TB6.js → validateNonInterActiveAuth-OXJA2JWG.js} +99 -96
- package/chunks/{version-G5A5DGVS.js → version-KJO64WD7.js} +1 -1
- package/chunks/{web-fetch-RTEQTR5Z.js → web-fetch-CC5INI2R.js} +25 -23
- package/chunks/{web-search-5OXHEZPV.js → web-search-MOAUAN6N.js} +18 -18
- package/chunks/{web-shell-static-O73YPVVC.js → web-shell-static-3NUTRHAH.js} +4 -5
- package/chunks/{workflow-ISQJHPG2.js → workflow-BN2ZEJMK.js} +366 -105
- package/chunks/workspace-providers-status-R5QTZFK3.js +101 -0
- package/chunks/{workspace-registration-store-CYNY6IP6.js → workspace-registration-store-WMSLM36M.js} +1 -1
- package/chunks/{workspace-registry-34GTUUHB.js → workspace-registry-J3RUCXH6.js} +59 -57
- package/chunks/{workspace-service-XCDQLE2Y.js → workspace-service-JJZFPKM4.js} +66 -65
- package/chunks/workspace-skills-status-DRIOZRIA.js +101 -0
- package/chunks/{workspace-trust-reconciler-AYGXC7A3.js → workspace-trust-reconciler-YAYSN6CX.js} +69 -67
- package/chunks/write-file-7HXHFFOY.js +88 -0
- package/chunks/{zh-TW-SQ4HTSCW.js → zh-TW-LVLBK4KF.js} +8 -0
- package/chunks/{zh-LMSTK4WD.js → zh-UBMWS2BJ.js} +8 -0
- package/chunks/{zoom-image-4BFYJ3HG.js → zoom-image-EFMQMU4G.js} +24 -22
- package/cli.js +15 -15
- package/locales/ca.js +13 -0
- package/locales/de.js +12 -0
- package/locales/en.js +11 -0
- package/locales/fr.js +13 -0
- package/locales/ja.js +13 -0
- package/locales/pt.js +12 -0
- package/locales/ru.js +12 -0
- package/locales/zh-TW.js +11 -0
- package/locales/zh.js +11 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-CgOpDKvm.js → arc-BCP1f-bN.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-0Ag_m34F.js → architectureDiagram-3BPJPVTR-D-6ajMay.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-IwTwFau0.js → blockDiagram-GPEHLZMM-CcLlnVnf.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DLa5GUv8.js → c4Diagram-AAUBKEIU-C_Sp9UwQ.js} +1 -1
- package/web-shell/assets/channel-BcImYzbA.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DcYP-WFG.js → chunk-2J33WTMH-CG0ngvo9.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-C8MVPMiQ.js → chunk-4BX2VUAB-D43LsVdk.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-BUi4Yfv3.js → chunk-55IACEB6-BqNIn5rz.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-Cy3Su2YY.js → chunk-727SXJPM-BSHmO08Y.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-Dp8Teqv6.js → chunk-AQP2D5EJ-CMUbr5tQ.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-BDTDM-4j.js → chunk-FMBD7UC4-Cm6JflnZ.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-7HfDt0r2.js → chunk-ND2GUHAM-CBR39YQZ.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BIBU0uCF.js → chunk-QZHKN3VN-CWnqaLb-.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-OWx0rDRW.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-OWx0rDRW.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-DRLdcg9p.js → cose-bilkent-S5V4N54A-DJlTdnfD.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-DCCgDwqW.js → dagre-BM42HDAG-1AFN1uVc.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CsBTBmk3.js → diagram-2AECGRRQ-gC0GGNSW.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-C9qjH8Lt.js → diagram-5GNKFQAL-CPmRPT1s.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-Brjs_lj2.js → diagram-KO2AKTUF-atigp6Hr.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DtiWCl_F.js → diagram-LMA3HP47-BJnJFSRQ.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-DmfKLkBT.js → diagram-OG6HWLK6-CyvJ4fG2.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-Bve_4deH.js → erDiagram-TEJ5UH35-CZac_jT6.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-C2_kXCcV.js → flowDiagram-I6XJVG4X-pd-LQxWB.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BSBIjiTF.js → ganttDiagram-6RSMTGT7-CvB1at7l.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CyebwI55.js → gitGraphDiagram-PVQCEYII-B5Y6nkil.js} +1 -1
- package/web-shell/assets/index-Bg3DAn8Z.js +1788 -0
- package/web-shell/assets/{index-d0yfnV1M.js → index-Bj3ZSUHL.js} +1 -1
- package/web-shell/assets/index-mp32EO88.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CSDGnWxU.js → infoDiagram-5YYISTIA-BdyWvU4P.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BK4jU13p.js → ishikawaDiagram-YF4QCWOH-CaHbUdvN.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-D_W6j-oF.js → journeyDiagram-JHISSGLW-DR9F3FpG.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-C7xf-SdC.js → kanban-definition-UN3LZRKU-BoEUbkw2.js} +1 -1
- package/web-shell/assets/{linear-DQmzxpxd.js → linear-DUbfzV4T.js} +1 -1
- package/web-shell/assets/{mermaid.core-9P7AGOLG.js → mermaid.core-CLLkPcpD.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DgcgMyPk.js → mindmap-definition-RKZ34NQL-FuKI3Stt.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-3wWGb9eG.js → pieDiagram-4H26LBE5-CVAHL7l5.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BeCXnQw9.js → quadrantDiagram-W4KKPZXB-BkGi5fRj.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-Bi1UOHDz.js → requirementDiagram-4Y6WPE33-B5ghV8-K.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-lrLUjjbb.js → sankeyDiagram-5OEKKPKP-CKFbVhkQ.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-BFuqKz6Q.js → sequenceDiagram-3UESZ5HK-C5P9ujPd.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-8DemQLhu.js → stateDiagram-AJRCARHV-CsDn-Rez.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DpGKD1ez.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-uzEuVQXg.js → timeline-definition-PNZ67QCA-B6oLBkTr.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BQTeZ_-o.js → vennDiagram-CIIHVFJN-DvtBkYwp.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-B6yM5Im7.js → wardley-L42UT6IY-D2UwTX16.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-ChM8bmgn.js → wardleyDiagram-YWT4CUSO-FnnfCxYI.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-oNG6HyB1.js → xychartDiagram-2RQKCTM6-C1SaMQ7d.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/MaxSizedBox-UQALOVVT.js +0 -97
- package/chunks/agent-headless-GJCQMURW.js +0 -87
- package/chunks/channel-settings-store-WNWYFHG7.js +0 -102
- package/chunks/chunk-AZQ3DT76.js +0 -10017
- package/chunks/chunk-CR3C7WXL.js +0 -113
- package/chunks/chunk-K5IDV3PC.js +0 -519
- package/chunks/chunk-MPHPFVKK.js +0 -48
- package/chunks/chunk-RLKC46YT.js +0 -3582
- package/chunks/chunk-UPDOZBWO.js +0 -358
- package/chunks/contextCommand-PJ77GBWL.js +0 -93
- package/chunks/daemon-status-provider-ZDOYJCU6.js +0 -102
- package/chunks/daemon-trust-policy-E67OYUK2.js +0 -99
- package/chunks/exitPlanMode-R4JY7V2O.js +0 -85
- package/chunks/handleAutoUpdate-POCX2MNB.js +0 -94
- package/chunks/initializer-Z2AFGBNR.js +0 -100
- package/chunks/installationInfo-4I5FXNMH.js +0 -92
- package/chunks/list-ZMBFIGZA.js +0 -103
- package/chunks/loadedSettingsAdapter-T6TV4YJ7.js +0 -97
- package/chunks/mcp-6UNYX4HG.js +0 -97
- package/chunks/nonInteractiveCli-WAY237O4.js +0 -163
- package/chunks/read-file-TAFBKMNI.js +0 -32
- package/chunks/ripGrep-WOEK2PXS.js +0 -85
- package/chunks/theme-manager-Z3RIT7DB.js +0 -89
- package/chunks/undici-3FJYTMOF.js +0 -25914
- package/chunks/workspace-providers-status-2ZPZPUPZ.js +0 -100
- package/chunks/workspace-skills-status-RS4O7AIJ.js +0 -100
- package/chunks/write-file-EWXKVVXF.js +0 -87
- package/web-shell/assets/channel-BrGVBa2L.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B5TUzJzI.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B5TUzJzI.js +0 -1
- package/web-shell/assets/index-CIDsgxTe.js +0 -1792
- package/web-shell/assets/index-DiQnWi_E.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DhM5ixYd.js +0 -1
- package/chunks/{dist-BROOP2EG.js → dist-LZO24N3E.js} +1 -1
|
@@ -36,10 +36,11 @@ import {
|
|
|
36
36
|
resolveAcpHttpEnabled,
|
|
37
37
|
setDeferredRuntimeRequestTiming,
|
|
38
38
|
toDaemonStatusMemoryLimits
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-DRVS6K7A.js";
|
|
40
40
|
import "./chunk-VGHZT6JR.js";
|
|
41
41
|
import {
|
|
42
|
-
isLoopbackBind
|
|
42
|
+
isLoopbackBind,
|
|
43
|
+
normalizeSessionIdForLookup
|
|
43
44
|
} from "./chunk-TQOF5KBL.js";
|
|
44
45
|
import {
|
|
45
46
|
formatMemoryBudgetStderr,
|
|
@@ -47,9 +48,16 @@ import {
|
|
|
47
48
|
serveJournalGrowthPoolMb
|
|
48
49
|
} from "./chunk-UXEO7E3V.js";
|
|
49
50
|
import "./chunk-NYWWQ437.js";
|
|
51
|
+
import {
|
|
52
|
+
require_express,
|
|
53
|
+
resolveWebShellDir
|
|
54
|
+
} from "./chunk-O5Z7EB6Y.js";
|
|
50
55
|
import {
|
|
51
56
|
resolveSessionRestoreTimeoutMs
|
|
52
57
|
} from "./chunk-4JRM2BSM.js";
|
|
58
|
+
import {
|
|
59
|
+
LIVE_HOST_PROTOCOL_VERSION
|
|
60
|
+
} from "./chunk-NKLP3DCK.js";
|
|
53
61
|
import {
|
|
54
62
|
DEFAULT_COMPACTED_REPLAY_MAX_BYTES,
|
|
55
63
|
DEFAULT_MAX_JOURNAL_BYTES,
|
|
@@ -59,39 +67,25 @@ import {
|
|
|
59
67
|
normalizeMaxJournalBytes,
|
|
60
68
|
normalizeMaxJournalEvents
|
|
61
69
|
} from "./chunk-WCCLLK7X.js";
|
|
62
|
-
import
|
|
63
|
-
require_express,
|
|
64
|
-
resolveWebShellDir
|
|
65
|
-
} from "./chunk-GDXET5XU.js";
|
|
70
|
+
import "./chunk-HMJ2P3SV.js";
|
|
66
71
|
import {
|
|
67
72
|
resolveChannelCwd
|
|
68
73
|
} from "./chunk-45NQKMYB.js";
|
|
69
|
-
import {
|
|
70
|
-
LIVE_HOST_PROTOCOL_VERSION
|
|
71
|
-
} from "./chunk-NKLP3DCK.js";
|
|
72
|
-
import "./chunk-K6KS3LTN.js";
|
|
73
|
-
import "./chunk-FC4KQFCS.js";
|
|
74
|
-
import "./chunk-T3CHYWJZ.js";
|
|
75
|
-
import {
|
|
76
|
-
consumeServeFastPathRejectedLoaderKeys,
|
|
77
|
-
loadServeFastPathSettings,
|
|
78
|
-
preResolveServeFastPathHomeEnvOverrides
|
|
79
|
-
} from "./chunk-M6NDLY2T.js";
|
|
80
74
|
import {
|
|
81
75
|
MAX_REGISTERED_WORKSPACES,
|
|
82
76
|
resolveWorkspaceInputs,
|
|
83
77
|
workspaceRegistrationId
|
|
84
|
-
} from "./chunk-
|
|
85
|
-
import "./chunk-
|
|
78
|
+
} from "./chunk-TLDZKNZP.js";
|
|
79
|
+
import "./chunk-CTAP6PO3.js";
|
|
86
80
|
import {
|
|
87
81
|
LOAD_REPLAY_META_KEY
|
|
88
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-QQUVPMMZ.js";
|
|
89
83
|
import "./chunk-624NHDGB.js";
|
|
90
84
|
import {
|
|
91
85
|
canonicalizeWorkspace,
|
|
92
86
|
translateAndCheckAbsoluteWorkspacePath
|
|
93
87
|
} from "./chunk-6PLDPT2C.js";
|
|
94
|
-
import "./chunk-
|
|
88
|
+
import "./chunk-4F5WV4RF.js";
|
|
95
89
|
import "./chunk-FYJ7W2PI.js";
|
|
96
90
|
import "./chunk-Z7B6SRPM.js";
|
|
97
91
|
import {
|
|
@@ -99,7 +93,7 @@ import {
|
|
|
99
93
|
ChannelWebhookEnqueueError,
|
|
100
94
|
QWEN_SERVER_TOKEN_ENV,
|
|
101
95
|
isChannelDeliveryError
|
|
102
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-ND7NOI4P.js";
|
|
103
97
|
import {
|
|
104
98
|
normalizeWorkerDiagnostic,
|
|
105
99
|
sanitizeWorkerDiagnostic
|
|
@@ -107,8 +101,7 @@ import {
|
|
|
107
101
|
import {
|
|
108
102
|
channelSelectionNames
|
|
109
103
|
} from "./chunk-ALMR3E6Q.js";
|
|
110
|
-
import "./chunk-
|
|
111
|
-
import "./chunk-M5GB774H.js";
|
|
104
|
+
import "./chunk-UDG5EZJI.js";
|
|
112
105
|
import {
|
|
113
106
|
EXTERNAL_TOOL_GUARD_PROVIDER_ATTACHED_VALUE,
|
|
114
107
|
EXTERNAL_TOOL_GUARD_REQUIRED_VALUE,
|
|
@@ -116,13 +109,21 @@ import {
|
|
|
116
109
|
PRIVATE_EXTERNAL_TOOL_GUARD_ENV,
|
|
117
110
|
PRIVATE_EXTERNAL_TOOL_GUARD_PROVIDER_ENV
|
|
118
111
|
} from "./chunk-3VUENPWF.js";
|
|
112
|
+
import "./chunk-M5GB774H.js";
|
|
113
|
+
import {
|
|
114
|
+
MAX_DAEMON_WORKSPACES
|
|
115
|
+
} from "./chunk-5HBA2Z7V.js";
|
|
116
|
+
import "./chunk-K6KS3LTN.js";
|
|
117
|
+
import "./chunk-7E7UCJHS.js";
|
|
119
118
|
import {
|
|
120
119
|
sanitizeLogText
|
|
121
120
|
} from "./chunk-AW27A43Y.js";
|
|
122
121
|
import "./chunk-IW6RQPQB.js";
|
|
123
122
|
import {
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
consumeServeFastPathRejectedLoaderKeys,
|
|
124
|
+
loadServeFastPathSettings,
|
|
125
|
+
preResolveServeFastPathHomeEnvOverrides
|
|
126
|
+
} from "./chunk-LD5VIJ7S.js";
|
|
126
127
|
import "./chunk-GOXKNSDZ.js";
|
|
127
128
|
import {
|
|
128
129
|
getGlobalQwenDirLite,
|
|
@@ -133,23 +134,23 @@ import {
|
|
|
133
134
|
clearLoaderKeyRejectionReporterIfCurrent,
|
|
134
135
|
scrubInheritedLoaderEnv,
|
|
135
136
|
setLoaderKeyRejectionReporter
|
|
136
|
-
} from "./chunk-
|
|
137
|
+
} from "./chunk-CXJHQVEK.js";
|
|
137
138
|
import {
|
|
138
139
|
getCliVersion
|
|
139
|
-
} from "./chunk-
|
|
140
|
+
} from "./chunk-7WLFSDLG.js";
|
|
140
141
|
import "./chunk-WZMH7II3.js";
|
|
141
142
|
import "./chunk-NPQ5ZKRP.js";
|
|
142
143
|
import {
|
|
143
144
|
isWithinRoot
|
|
144
145
|
} from "./chunk-MR3PXB6E.js";
|
|
146
|
+
import "./chunk-LJZSMWOH.js";
|
|
145
147
|
import "./chunk-GOFAQQZA.js";
|
|
146
|
-
import "./chunk-5M6IDOMF.js";
|
|
147
148
|
import "./chunk-TWPJO254.js";
|
|
148
149
|
import "./chunk-CQ35AJ4Z.js";
|
|
150
|
+
import "./chunk-5M6IDOMF.js";
|
|
149
151
|
import {
|
|
150
152
|
require_proper_lockfile
|
|
151
153
|
} from "./chunk-MLXTMF7H.js";
|
|
152
|
-
import "./chunk-CR3C7WXL.js";
|
|
153
154
|
import "./chunk-XWRJCPHC.js";
|
|
154
155
|
import {
|
|
155
156
|
finalizeStartupProfile,
|
|
@@ -167,7 +168,7 @@ import {
|
|
|
167
168
|
init_esm,
|
|
168
169
|
isSpanContextValid,
|
|
169
170
|
trace
|
|
170
|
-
} from "./chunk-
|
|
171
|
+
} from "./chunk-TBWQLLFO.js";
|
|
171
172
|
import {
|
|
172
173
|
init_esbuild_shims
|
|
173
174
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -1388,7 +1389,7 @@ function createConcreteLogger(input) {
|
|
|
1388
1389
|
}
|
|
1389
1390
|
});
|
|
1390
1391
|
let timeout;
|
|
1391
|
-
const deadline = new Promise((
|
|
1392
|
+
const deadline = new Promise((resolve4) => {
|
|
1392
1393
|
timeout = setTimeout(() => {
|
|
1393
1394
|
try {
|
|
1394
1395
|
input.warnOnce(
|
|
@@ -1397,7 +1398,7 @@ function createConcreteLogger(input) {
|
|
|
1397
1398
|
);
|
|
1398
1399
|
} catch {
|
|
1399
1400
|
} finally {
|
|
1400
|
-
|
|
1401
|
+
resolve4();
|
|
1401
1402
|
}
|
|
1402
1403
|
}, input.policy.closeDrainBudgetMs);
|
|
1403
1404
|
timeout.unref();
|
|
@@ -1743,61 +1744,81 @@ __name(initDaemonLogger, "initDaemonLogger");
|
|
|
1743
1744
|
|
|
1744
1745
|
// packages/cli/src/serve/conversations/conversation-workspace.ts
|
|
1745
1746
|
init_esbuild_shims();
|
|
1746
|
-
import {
|
|
1747
|
-
import { lstat, mkdir, realpath, rmdir } from "node:fs/promises";
|
|
1747
|
+
import { readdir, rmdir } from "node:fs/promises";
|
|
1748
1748
|
import { homedir } from "node:os";
|
|
1749
|
+
import { resolve as resolve2 } from "node:path";
|
|
1750
|
+
|
|
1751
|
+
// packages/cli/src/utils/conversation-directory-identity.ts
|
|
1752
|
+
init_esbuild_shims();
|
|
1753
|
+
import { createHash as createHash2 } from "node:crypto";
|
|
1754
|
+
import { lstat, mkdir, realpath } from "node:fs/promises";
|
|
1749
1755
|
import { isAbsolute, join as join2, relative as relative2, resolve, sep } from "node:path";
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1756
|
+
function hasVerifiableInode(ino) {
|
|
1757
|
+
return Number(ino) !== 0;
|
|
1758
|
+
}
|
|
1759
|
+
__name(hasVerifiableInode, "hasVerifiableInode");
|
|
1760
|
+
var ConversationDirectoryIdentityError = class extends Error {
|
|
1761
|
+
constructor(scope, reason, cause) {
|
|
1762
|
+
super(
|
|
1763
|
+
`Conversation ${scope} identity validation failed: ${reason}`,
|
|
1764
|
+
cause !== void 0 ? { cause } : void 0
|
|
1765
|
+
);
|
|
1766
|
+
this.scope = scope;
|
|
1767
|
+
this.reason = reason;
|
|
1768
|
+
}
|
|
1769
|
+
static {
|
|
1770
|
+
__name(this, "ConversationDirectoryIdentityError");
|
|
1771
|
+
}
|
|
1772
|
+
name = "ConversationDirectoryIdentityError";
|
|
1773
|
+
};
|
|
1774
|
+
function throwIdentityIoError(scope, cause) {
|
|
1775
|
+
throw new ConversationDirectoryIdentityError(scope, "io_error", cause);
|
|
1776
|
+
}
|
|
1777
|
+
__name(throwIdentityIoError, "throwIdentityIoError");
|
|
1778
|
+
var isSameConversationPath = /* @__PURE__ */ __name((left, right) => process.platform === "win32" ? left.toLowerCase() === right.toLowerCase() : left === right, "isSameConversationPath");
|
|
1779
|
+
function getConversationDirectoryName(storageSessionId) {
|
|
1780
|
+
if (storageSessionId.length === 0 || storageSessionId.length > 256) {
|
|
1781
|
+
throw new ConversationDirectoryIdentityError("child", "invalid_session_id");
|
|
1754
1782
|
}
|
|
1755
|
-
return `conversation-${createHash2("sha256").update(
|
|
1783
|
+
return `conversation-${createHash2("sha256").update(storageSessionId).digest("hex")}`;
|
|
1756
1784
|
}
|
|
1757
|
-
__name(
|
|
1758
|
-
function
|
|
1785
|
+
__name(getConversationDirectoryName, "getConversationDirectoryName");
|
|
1786
|
+
function validateDirectoryStats(stats, scope) {
|
|
1759
1787
|
if (stats.isSymbolicLink() || !stats.isDirectory()) {
|
|
1760
|
-
throw new
|
|
1761
|
-
`Live conversation ${label} must be a non-symlink directory`
|
|
1762
|
-
);
|
|
1788
|
+
throw new ConversationDirectoryIdentityError(scope, "not_directory");
|
|
1763
1789
|
}
|
|
1764
1790
|
if (process.platform !== "win32" && typeof process.getuid === "function" && stats.uid !== process.getuid()) {
|
|
1765
|
-
throw new
|
|
1766
|
-
`Live conversation ${label} must be owned by the daemon user`
|
|
1767
|
-
);
|
|
1791
|
+
throw new ConversationDirectoryIdentityError(scope, "wrong_owner");
|
|
1768
1792
|
}
|
|
1769
1793
|
if (process.platform !== "win32" && (stats.mode & 63) !== 0) {
|
|
1770
|
-
throw new
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
}
|
|
1799
|
-
__name(getConversationRootPath, "getConversationRootPath");
|
|
1800
|
-
async function createRoot(configuredRoot) {
|
|
1794
|
+
throw new ConversationDirectoryIdentityError(scope, "wrong_mode");
|
|
1795
|
+
}
|
|
1796
|
+
}
|
|
1797
|
+
__name(validateDirectoryStats, "validateDirectoryStats");
|
|
1798
|
+
function hasRootIdentity(stats, root) {
|
|
1799
|
+
if (!root.inodeVerifiable) return stats.dev === root.device;
|
|
1800
|
+
return hasVerifiableInode(stats.ino) && stats.dev === root.device && stats.ino === root.inode;
|
|
1801
|
+
}
|
|
1802
|
+
__name(hasRootIdentity, "hasRootIdentity");
|
|
1803
|
+
function isSameDirectoryIdentity(before, after) {
|
|
1804
|
+
if (!hasVerifiableInode(before.ino) || !hasVerifiableInode(after.ino)) {
|
|
1805
|
+
return before.dev === after.dev;
|
|
1806
|
+
}
|
|
1807
|
+
return before.dev === after.dev && before.ino === after.ino;
|
|
1808
|
+
}
|
|
1809
|
+
__name(isSameDirectoryIdentity, "isSameDirectoryIdentity");
|
|
1810
|
+
function hasExpectedDirectoryIdentity(identity, expected) {
|
|
1811
|
+
const inodesProvable = hasVerifiableInode(identity.inode) && hasVerifiableInode(expected.inode);
|
|
1812
|
+
return identity.storageSessionId === expected.storageSessionId && identity.name === expected.name && isSameConversationPath(identity.canonicalPath, expected.canonicalPath) && identity.device === expected.device && (!inodesProvable || identity.inode === expected.inode) && isSameConversationPath(
|
|
1813
|
+
identity.root.configuredRoot,
|
|
1814
|
+
expected.root.configuredRoot
|
|
1815
|
+
) && isSameConversationPath(
|
|
1816
|
+
identity.root.canonicalRoot,
|
|
1817
|
+
expected.root.canonicalRoot
|
|
1818
|
+
) && identity.root.device === expected.root.device && (!identity.root.inodeVerifiable || !expected.root.inodeVerifiable || identity.root.inode === expected.root.inode);
|
|
1819
|
+
}
|
|
1820
|
+
__name(hasExpectedDirectoryIdentity, "hasExpectedDirectoryIdentity");
|
|
1821
|
+
async function createConversationRootIdentity(configuredRoot) {
|
|
1801
1822
|
try {
|
|
1802
1823
|
await mkdir(configuredRoot, { recursive: true, mode: 448 });
|
|
1803
1824
|
} catch (error) {
|
|
@@ -1805,61 +1826,246 @@ async function createRoot(configuredRoot) {
|
|
|
1805
1826
|
try {
|
|
1806
1827
|
existing = await lstat(configuredRoot);
|
|
1807
1828
|
} catch {
|
|
1808
|
-
|
|
1829
|
+
throwIdentityIoError("root", error);
|
|
1809
1830
|
}
|
|
1810
|
-
|
|
1811
|
-
|
|
1831
|
+
validateDirectoryStats(existing, "root");
|
|
1832
|
+
throwIdentityIoError("root", error);
|
|
1812
1833
|
}
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1834
|
+
let before;
|
|
1835
|
+
try {
|
|
1836
|
+
before = await lstat(configuredRoot);
|
|
1837
|
+
} catch (error) {
|
|
1838
|
+
throwIdentityIoError("root", error);
|
|
1839
|
+
}
|
|
1840
|
+
validateDirectoryStats(before, "root");
|
|
1841
|
+
let canonicalRoot;
|
|
1842
|
+
let after;
|
|
1843
|
+
try {
|
|
1844
|
+
canonicalRoot = await realpath(configuredRoot);
|
|
1845
|
+
after = await lstat(canonicalRoot);
|
|
1846
|
+
} catch (error) {
|
|
1847
|
+
throwIdentityIoError("root", error);
|
|
1848
|
+
}
|
|
1849
|
+
validateDirectoryStats(after, "root");
|
|
1850
|
+
if (!isSameDirectoryIdentity(before, after)) {
|
|
1851
|
+
throw new ConversationDirectoryIdentityError("root", "identity_changed");
|
|
1822
1852
|
}
|
|
1823
1853
|
return {
|
|
1824
1854
|
configuredRoot,
|
|
1825
1855
|
canonicalRoot,
|
|
1826
1856
|
device: after.dev,
|
|
1827
|
-
inode: after.ino
|
|
1857
|
+
inode: after.ino,
|
|
1858
|
+
inodeVerifiable: hasVerifiableInode(after.ino)
|
|
1828
1859
|
};
|
|
1829
1860
|
}
|
|
1830
|
-
__name(
|
|
1831
|
-
async function
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1861
|
+
__name(createConversationRootIdentity, "createConversationRootIdentity");
|
|
1862
|
+
async function revalidateConversationRootIdentity(root) {
|
|
1863
|
+
let configuredStats;
|
|
1864
|
+
try {
|
|
1865
|
+
configuredStats = await lstat(root.configuredRoot);
|
|
1866
|
+
} catch (error) {
|
|
1867
|
+
throwIdentityIoError("root", error);
|
|
1868
|
+
}
|
|
1869
|
+
validateDirectoryStats(configuredStats, "root");
|
|
1870
|
+
if (!hasRootIdentity(configuredStats, root)) {
|
|
1871
|
+
throw new ConversationDirectoryIdentityError("root", "identity_changed");
|
|
1836
1872
|
}
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1873
|
+
let canonical;
|
|
1874
|
+
try {
|
|
1875
|
+
canonical = await realpath(root.configuredRoot);
|
|
1876
|
+
} catch (error) {
|
|
1877
|
+
throwIdentityIoError("root", error);
|
|
1878
|
+
}
|
|
1879
|
+
if (!isSameConversationPath(canonical, root.canonicalRoot)) {
|
|
1880
|
+
throw new ConversationDirectoryIdentityError(
|
|
1881
|
+
"root",
|
|
1882
|
+
"canonical_path_changed"
|
|
1883
|
+
);
|
|
1884
|
+
}
|
|
1885
|
+
let canonicalStats;
|
|
1886
|
+
try {
|
|
1887
|
+
canonicalStats = await lstat(root.canonicalRoot);
|
|
1888
|
+
} catch (error) {
|
|
1889
|
+
throwIdentityIoError("root", error);
|
|
1840
1890
|
}
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
throw new Error("Live conversation root identity changed");
|
|
1891
|
+
validateDirectoryStats(canonicalStats, "root");
|
|
1892
|
+
if (!hasRootIdentity(canonicalStats, root)) {
|
|
1893
|
+
throw new ConversationDirectoryIdentityError("root", "identity_changed");
|
|
1845
1894
|
}
|
|
1846
1895
|
return root;
|
|
1847
1896
|
}
|
|
1848
|
-
__name(
|
|
1849
|
-
async function
|
|
1850
|
-
await
|
|
1897
|
+
__name(revalidateConversationRootIdentity, "revalidateConversationRootIdentity");
|
|
1898
|
+
async function assertExactConversationRootIdentity(root, candidate) {
|
|
1899
|
+
await revalidateConversationRootIdentity(root);
|
|
1851
1900
|
const resolvedCandidate = resolve(candidate);
|
|
1852
|
-
if (!
|
|
1853
|
-
throw new
|
|
1901
|
+
if (!isSameConversationPath(resolvedCandidate, root.configuredRoot) && !isSameConversationPath(resolvedCandidate, root.canonicalRoot)) {
|
|
1902
|
+
throw new ConversationDirectoryIdentityError("root", "unexpected_identity");
|
|
1854
1903
|
}
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1904
|
+
let stats;
|
|
1905
|
+
let canonical;
|
|
1906
|
+
try {
|
|
1907
|
+
stats = await lstat(resolvedCandidate);
|
|
1908
|
+
validateDirectoryStats(stats, "root");
|
|
1909
|
+
canonical = await realpath(resolvedCandidate);
|
|
1910
|
+
} catch (error) {
|
|
1911
|
+
if (error instanceof ConversationDirectoryIdentityError) throw error;
|
|
1912
|
+
throwIdentityIoError("root", error);
|
|
1913
|
+
}
|
|
1914
|
+
if (!isSameConversationPath(canonical, root.canonicalRoot) || !hasRootIdentity(stats, root)) {
|
|
1915
|
+
throw new ConversationDirectoryIdentityError("root", "unexpected_identity");
|
|
1860
1916
|
}
|
|
1861
1917
|
return root;
|
|
1862
1918
|
}
|
|
1919
|
+
__name(assertExactConversationRootIdentity, "assertExactConversationRootIdentity");
|
|
1920
|
+
async function inspectConversationDirectoryIdentity(root, storageSessionId, expected) {
|
|
1921
|
+
await revalidateConversationRootIdentity(root);
|
|
1922
|
+
const name = getConversationDirectoryName(storageSessionId);
|
|
1923
|
+
const candidate = join2(root.canonicalRoot, name);
|
|
1924
|
+
let before;
|
|
1925
|
+
try {
|
|
1926
|
+
before = await lstat(candidate);
|
|
1927
|
+
} catch (error) {
|
|
1928
|
+
if (error.code === "ENOENT") return void 0;
|
|
1929
|
+
throwIdentityIoError("child", error);
|
|
1930
|
+
}
|
|
1931
|
+
validateDirectoryStats(before, "child");
|
|
1932
|
+
let canonical;
|
|
1933
|
+
let after;
|
|
1934
|
+
try {
|
|
1935
|
+
canonical = await realpath(candidate);
|
|
1936
|
+
after = await lstat(canonical);
|
|
1937
|
+
} catch (error) {
|
|
1938
|
+
if (error.code === "ENOENT") {
|
|
1939
|
+
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
1940
|
+
}
|
|
1941
|
+
throwIdentityIoError("child", error);
|
|
1942
|
+
}
|
|
1943
|
+
validateDirectoryStats(after, "child");
|
|
1944
|
+
const child = relative2(root.canonicalRoot, canonical);
|
|
1945
|
+
if (child !== name || child.includes(sep) || child.startsWith("..") || isAbsolute(child)) {
|
|
1946
|
+
throw new ConversationDirectoryIdentityError("child", "not_direct_child");
|
|
1947
|
+
}
|
|
1948
|
+
if (!isSameDirectoryIdentity(before, after)) {
|
|
1949
|
+
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
1950
|
+
}
|
|
1951
|
+
await revalidateConversationRootIdentity(root);
|
|
1952
|
+
const identity = {
|
|
1953
|
+
root,
|
|
1954
|
+
storageSessionId,
|
|
1955
|
+
name,
|
|
1956
|
+
canonicalPath: canonical,
|
|
1957
|
+
device: after.dev,
|
|
1958
|
+
inode: after.ino
|
|
1959
|
+
};
|
|
1960
|
+
if (expected && !hasExpectedDirectoryIdentity(identity, expected)) {
|
|
1961
|
+
throw new ConversationDirectoryIdentityError(
|
|
1962
|
+
"child",
|
|
1963
|
+
"unexpected_identity"
|
|
1964
|
+
);
|
|
1965
|
+
}
|
|
1966
|
+
return identity;
|
|
1967
|
+
}
|
|
1968
|
+
__name(inspectConversationDirectoryIdentity, "inspectConversationDirectoryIdentity");
|
|
1969
|
+
async function materializeConversationDirectoryIdentity(root, storageSessionId) {
|
|
1970
|
+
await revalidateConversationRootIdentity(root);
|
|
1971
|
+
const name = getConversationDirectoryName(storageSessionId);
|
|
1972
|
+
const candidate = join2(root.canonicalRoot, name);
|
|
1973
|
+
let created = false;
|
|
1974
|
+
try {
|
|
1975
|
+
await mkdir(candidate, { mode: 448 });
|
|
1976
|
+
created = true;
|
|
1977
|
+
} catch (error) {
|
|
1978
|
+
if (error.code !== "EEXIST") {
|
|
1979
|
+
throwIdentityIoError("child", error);
|
|
1980
|
+
}
|
|
1981
|
+
}
|
|
1982
|
+
const identity = await inspectConversationDirectoryIdentity(
|
|
1983
|
+
root,
|
|
1984
|
+
storageSessionId
|
|
1985
|
+
);
|
|
1986
|
+
if (!identity) {
|
|
1987
|
+
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
1988
|
+
}
|
|
1989
|
+
return { identity, created };
|
|
1990
|
+
}
|
|
1991
|
+
__name(materializeConversationDirectoryIdentity, "materializeConversationDirectoryIdentity");
|
|
1992
|
+
|
|
1993
|
+
// packages/cli/src/serve/conversations/conversation-workspace.ts
|
|
1994
|
+
function liveIdentityError(error, exactRoot = false, creatingRoot = false) {
|
|
1995
|
+
if (!(error instanceof ConversationDirectoryIdentityError)) throw error;
|
|
1996
|
+
if (error.reason === "io_error" && error.cause !== void 0) {
|
|
1997
|
+
throw error.cause;
|
|
1998
|
+
}
|
|
1999
|
+
if (error.scope === "root") {
|
|
2000
|
+
switch (error.reason) {
|
|
2001
|
+
case "not_directory":
|
|
2002
|
+
throw new Error(
|
|
2003
|
+
"Live conversation root must be a non-symlink directory"
|
|
2004
|
+
);
|
|
2005
|
+
case "wrong_owner":
|
|
2006
|
+
throw new Error(
|
|
2007
|
+
"Live conversation root must be owned by the daemon user"
|
|
2008
|
+
);
|
|
2009
|
+
case "wrong_mode":
|
|
2010
|
+
throw new Error(
|
|
2011
|
+
"Live conversation root must be accessible only to its owner"
|
|
2012
|
+
);
|
|
2013
|
+
case "canonical_path_changed":
|
|
2014
|
+
throw new Error("Live conversation root canonical path changed");
|
|
2015
|
+
case "identity_changed":
|
|
2016
|
+
throw new Error(
|
|
2017
|
+
creatingRoot ? "Live conversation root identity changed during validation" : "Live conversation root identity changed"
|
|
2018
|
+
);
|
|
2019
|
+
case "unexpected_identity":
|
|
2020
|
+
if (exactRoot) {
|
|
2021
|
+
throw new Error("Workspace must be the exact Live conversation root");
|
|
2022
|
+
}
|
|
2023
|
+
throw new Error("Live conversation root identity changed");
|
|
2024
|
+
default:
|
|
2025
|
+
throw new Error("Live conversation root identity changed");
|
|
2026
|
+
}
|
|
2027
|
+
}
|
|
2028
|
+
switch (error.reason) {
|
|
2029
|
+
case "invalid_session_id":
|
|
2030
|
+
throw new Error("Live conversation session id is invalid");
|
|
2031
|
+
case "not_directory":
|
|
2032
|
+
throw new Error(
|
|
2033
|
+
"Live conversation directory must be a non-symlink directory"
|
|
2034
|
+
);
|
|
2035
|
+
case "wrong_owner":
|
|
2036
|
+
throw new Error(
|
|
2037
|
+
"Live conversation directory must be owned by the daemon user"
|
|
2038
|
+
);
|
|
2039
|
+
case "wrong_mode":
|
|
2040
|
+
throw new Error(
|
|
2041
|
+
"Live conversation directory must be accessible only to its owner"
|
|
2042
|
+
);
|
|
2043
|
+
default:
|
|
2044
|
+
throw new Error(
|
|
2045
|
+
"Live conversation directory must be an owned direct child"
|
|
2046
|
+
);
|
|
2047
|
+
}
|
|
2048
|
+
}
|
|
2049
|
+
__name(liveIdentityError, "liveIdentityError");
|
|
2050
|
+
function getConversationRootPath(homeDir = homedir()) {
|
|
2051
|
+
return resolve2(homeDir, "Documents", "Qwen Code", "Conversations");
|
|
2052
|
+
}
|
|
2053
|
+
__name(getConversationRootPath, "getConversationRootPath");
|
|
2054
|
+
async function revalidateConversationRoot(root) {
|
|
2055
|
+
try {
|
|
2056
|
+
return await revalidateConversationRootIdentity(root);
|
|
2057
|
+
} catch (error) {
|
|
2058
|
+
liveIdentityError(error);
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
__name(revalidateConversationRoot, "revalidateConversationRoot");
|
|
2062
|
+
async function assertExactConversationRoot(root, candidate) {
|
|
2063
|
+
try {
|
|
2064
|
+
return await assertExactConversationRootIdentity(root, candidate);
|
|
2065
|
+
} catch (error) {
|
|
2066
|
+
liveIdentityError(error, true);
|
|
2067
|
+
}
|
|
2068
|
+
}
|
|
1863
2069
|
__name(assertExactConversationRoot, "assertExactConversationRoot");
|
|
1864
2070
|
var ConversationWorkspace = class {
|
|
1865
2071
|
static {
|
|
@@ -1870,9 +2076,9 @@ var ConversationWorkspace = class {
|
|
|
1870
2076
|
constructor(options = {}) {
|
|
1871
2077
|
this.rootPath = getConversationRootPath(options.homeDir);
|
|
1872
2078
|
}
|
|
1873
|
-
|
|
2079
|
+
getRootIdentity() {
|
|
1874
2080
|
if (!this.rootPromise) {
|
|
1875
|
-
const pending =
|
|
2081
|
+
const pending = createConversationRootIdentity(this.rootPath);
|
|
1876
2082
|
this.rootPromise = pending;
|
|
1877
2083
|
void pending.catch(() => {
|
|
1878
2084
|
if (this.rootPromise === pending) this.rootPromise = void 0;
|
|
@@ -1880,42 +2086,61 @@ var ConversationWorkspace = class {
|
|
|
1880
2086
|
}
|
|
1881
2087
|
return this.rootPromise;
|
|
1882
2088
|
}
|
|
2089
|
+
async getRoot() {
|
|
2090
|
+
try {
|
|
2091
|
+
return await this.getRootIdentity();
|
|
2092
|
+
} catch (error) {
|
|
2093
|
+
liveIdentityError(error, false, true);
|
|
2094
|
+
}
|
|
2095
|
+
}
|
|
2096
|
+
async revalidateStandaloneRoot() {
|
|
2097
|
+
return revalidateConversationRootIdentity(await this.getRootIdentity());
|
|
2098
|
+
}
|
|
1883
2099
|
async revalidate() {
|
|
1884
2100
|
return revalidateConversationRoot(await this.getRoot());
|
|
1885
2101
|
}
|
|
1886
2102
|
async assertExactRoot(candidate) {
|
|
1887
2103
|
return assertExactConversationRoot(await this.getRoot(), candidate);
|
|
1888
2104
|
}
|
|
2105
|
+
/**
|
|
2106
|
+
* The private directory is derived from the canonical session id, not from
|
|
2107
|
+
* whatever spelling a caller happens to hold.
|
|
2108
|
+
*
|
|
2109
|
+
* `getConversationDirectoryName()` is a case-sensitive hash, and callers reach
|
|
2110
|
+
* these methods with a mix of request ids, live-entry ids and ids echoed back
|
|
2111
|
+
* from tool arguments. Canonicalizing here makes one session resolve to one
|
|
2112
|
+
* directory by construction instead of leaving it to every call site.
|
|
2113
|
+
*/
|
|
2114
|
+
directoryKey(sessionId) {
|
|
2115
|
+
return normalizeSessionIdForLookup(sessionId);
|
|
2116
|
+
}
|
|
1889
2117
|
async materializeConversationDirectory(sessionId) {
|
|
1890
2118
|
const root = await this.revalidate();
|
|
1891
|
-
const name = conversationDirectoryName(sessionId);
|
|
1892
|
-
const candidate = join2(root.canonicalRoot, name);
|
|
1893
2119
|
try {
|
|
1894
|
-
await
|
|
2120
|
+
return (await materializeConversationDirectoryIdentity(
|
|
2121
|
+
root,
|
|
2122
|
+
this.directoryKey(sessionId)
|
|
2123
|
+
)).identity.canonicalPath;
|
|
1895
2124
|
} catch (error) {
|
|
1896
|
-
|
|
1897
|
-
throw error;
|
|
1898
|
-
}
|
|
2125
|
+
liveIdentityError(error);
|
|
1899
2126
|
}
|
|
1900
|
-
return validateConversationDirectory(root, name, candidate);
|
|
1901
2127
|
}
|
|
1902
2128
|
async discardEmptyConversationDirectory(sessionId) {
|
|
1903
2129
|
const root = await this.revalidate();
|
|
1904
|
-
|
|
1905
|
-
const candidate = join2(root.canonicalRoot, name);
|
|
1906
|
-
let canonical;
|
|
2130
|
+
let identity;
|
|
1907
2131
|
try {
|
|
1908
|
-
|
|
2132
|
+
identity = await inspectConversationDirectoryIdentity(
|
|
2133
|
+
root,
|
|
2134
|
+
this.directoryKey(sessionId)
|
|
2135
|
+
);
|
|
1909
2136
|
} catch (error) {
|
|
1910
|
-
|
|
1911
|
-
return false;
|
|
1912
|
-
}
|
|
1913
|
-
throw error;
|
|
2137
|
+
liveIdentityError(error);
|
|
1914
2138
|
}
|
|
2139
|
+
if (!identity) return false;
|
|
1915
2140
|
try {
|
|
1916
|
-
await rmdir(
|
|
2141
|
+
await rmdir(identity.canonicalPath);
|
|
1917
2142
|
} catch (error) {
|
|
1918
|
-
if (error
|
|
2143
|
+
if (error.code === "ENOENT" || error.code === "ENOTEMPTY") {
|
|
1919
2144
|
return false;
|
|
1920
2145
|
}
|
|
1921
2146
|
throw error;
|
|
@@ -1923,6 +2148,87 @@ var ConversationWorkspace = class {
|
|
|
1923
2148
|
await revalidateConversationRoot(root);
|
|
1924
2149
|
return true;
|
|
1925
2150
|
}
|
|
2151
|
+
async prepareStandaloneDirectory(storageSessionId) {
|
|
2152
|
+
const root = await this.revalidateStandaloneRoot();
|
|
2153
|
+
const prepared = await materializeConversationDirectoryIdentity(
|
|
2154
|
+
root,
|
|
2155
|
+
storageSessionId
|
|
2156
|
+
);
|
|
2157
|
+
const identity = await inspectConversationDirectoryIdentity(
|
|
2158
|
+
root,
|
|
2159
|
+
storageSessionId,
|
|
2160
|
+
prepared.identity
|
|
2161
|
+
);
|
|
2162
|
+
if (!identity) {
|
|
2163
|
+
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
2164
|
+
}
|
|
2165
|
+
let entries;
|
|
2166
|
+
try {
|
|
2167
|
+
entries = await readdir(identity.canonicalPath);
|
|
2168
|
+
} catch (error) {
|
|
2169
|
+
if (error.code === "ENOENT") {
|
|
2170
|
+
throw new ConversationDirectoryIdentityError(
|
|
2171
|
+
"child",
|
|
2172
|
+
"identity_changed"
|
|
2173
|
+
);
|
|
2174
|
+
}
|
|
2175
|
+
throw new ConversationDirectoryIdentityError("child", "io_error", error);
|
|
2176
|
+
}
|
|
2177
|
+
if (entries.length > 0) {
|
|
2178
|
+
throw new ConversationDirectoryIdentityError("child", "not_empty");
|
|
2179
|
+
}
|
|
2180
|
+
return { identity, created: prepared.created };
|
|
2181
|
+
}
|
|
2182
|
+
async inspectStandaloneDirectory(storageSessionId, expected) {
|
|
2183
|
+
const root = await this.revalidateStandaloneRoot();
|
|
2184
|
+
try {
|
|
2185
|
+
const identity = await inspectConversationDirectoryIdentity(
|
|
2186
|
+
root,
|
|
2187
|
+
storageSessionId,
|
|
2188
|
+
expected
|
|
2189
|
+
);
|
|
2190
|
+
return identity ? { status: "ready", identity } : { status: "missing" };
|
|
2191
|
+
} catch (error) {
|
|
2192
|
+
if (error instanceof ConversationDirectoryIdentityError && error.scope === "child") {
|
|
2193
|
+
return { status: "compromised", error };
|
|
2194
|
+
}
|
|
2195
|
+
throw error;
|
|
2196
|
+
}
|
|
2197
|
+
}
|
|
2198
|
+
async ensureStandaloneDirectory(storageSessionId, expected) {
|
|
2199
|
+
const inspected = await this.inspectStandaloneDirectory(
|
|
2200
|
+
storageSessionId,
|
|
2201
|
+
expected
|
|
2202
|
+
);
|
|
2203
|
+
if (inspected.status !== "missing") return inspected;
|
|
2204
|
+
const root = await this.revalidateStandaloneRoot();
|
|
2205
|
+
try {
|
|
2206
|
+
const materialized = await materializeConversationDirectoryIdentity(
|
|
2207
|
+
root,
|
|
2208
|
+
storageSessionId
|
|
2209
|
+
);
|
|
2210
|
+
if (!materialized.created) {
|
|
2211
|
+
const raced = await this.inspectStandaloneDirectory(
|
|
2212
|
+
storageSessionId,
|
|
2213
|
+
expected
|
|
2214
|
+
);
|
|
2215
|
+
if (raced.status !== "missing") return raced;
|
|
2216
|
+
throw new ConversationDirectoryIdentityError(
|
|
2217
|
+
"child",
|
|
2218
|
+
"identity_changed"
|
|
2219
|
+
);
|
|
2220
|
+
}
|
|
2221
|
+
return {
|
|
2222
|
+
status: expected ? "recreated" : "created",
|
|
2223
|
+
identity: materialized.identity
|
|
2224
|
+
};
|
|
2225
|
+
} catch (error) {
|
|
2226
|
+
if (error instanceof ConversationDirectoryIdentityError && error.scope === "child") {
|
|
2227
|
+
return { status: "compromised", error };
|
|
2228
|
+
}
|
|
2229
|
+
throw error;
|
|
2230
|
+
}
|
|
2231
|
+
}
|
|
1926
2232
|
};
|
|
1927
2233
|
|
|
1928
2234
|
// packages/cli/src/serve/daemon-metrics-ring.ts
|
|
@@ -2783,8 +3089,8 @@ async function flushDaemonLogBounded(daemonLog, budgetMs) {
|
|
|
2783
3089
|
await Promise.race([
|
|
2784
3090
|
daemonLog.flush().catch(() => {
|
|
2785
3091
|
}),
|
|
2786
|
-
new Promise((
|
|
2787
|
-
timer = setTimeout(
|
|
3092
|
+
new Promise((resolve4) => {
|
|
3093
|
+
timer = setTimeout(resolve4, budgetMs);
|
|
2788
3094
|
timer.unref();
|
|
2789
3095
|
})
|
|
2790
3096
|
]);
|
|
@@ -3038,12 +3344,12 @@ __name(hasRetryableChannelWorkerShutdownError, "hasRetryableChannelWorkerShutdow
|
|
|
3038
3344
|
var channelWorkerRuntimePromise;
|
|
3039
3345
|
async function loadChannelWorkerRuntime() {
|
|
3040
3346
|
channelWorkerRuntimePromise ??= Promise.all([
|
|
3041
|
-
import("./channel-worker-supervisor-
|
|
3042
|
-
import("./pidfile-
|
|
3043
|
-
import("./runtime-
|
|
3347
|
+
import("./channel-worker-supervisor-F6I6WSWW.js"),
|
|
3348
|
+
import("./pidfile-EBKS2HBK.js"),
|
|
3349
|
+
import("./runtime-UVEETF54.js"),
|
|
3044
3350
|
import("./cli-entry-path-4VJ3Y6T2.js"),
|
|
3045
|
-
import("./channel-worker-group-
|
|
3046
|
-
import("./channel-worker-manager-
|
|
3351
|
+
import("./channel-worker-group-CTE54QL6.js"),
|
|
3352
|
+
import("./channel-worker-manager-4EHTD3T4.js")
|
|
3047
3353
|
]).then(
|
|
3048
3354
|
([
|
|
3049
3355
|
supervisor,
|
|
@@ -3148,13 +3454,13 @@ function shouldPreheatBridge(deps) {
|
|
|
3148
3454
|
__name(shouldPreheatBridge, "shouldPreheatBridge");
|
|
3149
3455
|
var coreRuntimePromise;
|
|
3150
3456
|
function loadCoreRuntime() {
|
|
3151
|
-
coreRuntimePromise ??= import("./core-runtime-
|
|
3457
|
+
coreRuntimePromise ??= import("./core-runtime-JWFNKO2S.js");
|
|
3152
3458
|
return coreRuntimePromise;
|
|
3153
3459
|
}
|
|
3154
3460
|
__name(loadCoreRuntime, "loadCoreRuntime");
|
|
3155
3461
|
var liveDiscoveryRuntimePromise;
|
|
3156
3462
|
function loadLiveDiscoveryRuntime() {
|
|
3157
|
-
liveDiscoveryRuntimePromise ??= import("./discovery-
|
|
3463
|
+
liveDiscoveryRuntimePromise ??= import("./discovery-X2NV535U.js");
|
|
3158
3464
|
return liveDiscoveryRuntimePromise;
|
|
3159
3465
|
}
|
|
3160
3466
|
__name(loadLiveDiscoveryRuntime, "loadLiveDiscoveryRuntime");
|
|
@@ -3184,10 +3490,10 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
|
|
|
3184
3490
|
var settingsRuntimePromise;
|
|
3185
3491
|
function loadSettingsRuntimeModules() {
|
|
3186
3492
|
settingsRuntimePromise ??= Promise.all([
|
|
3187
|
-
import("./settings-
|
|
3188
|
-
import("./environment-
|
|
3189
|
-
import("./loadedSettingsAdapter-
|
|
3190
|
-
import("./trustedFolders-
|
|
3493
|
+
import("./settings-NS3PXZDP.js"),
|
|
3494
|
+
import("./environment-C2CZN7CB.js"),
|
|
3495
|
+
import("./loadedSettingsAdapter-47DG424L.js"),
|
|
3496
|
+
import("./trustedFolders-7GEI2NYC.js")
|
|
3191
3497
|
]).then(([settings, environment, loadedSettingsAdapter, trustedFolders]) => ({
|
|
3192
3498
|
settings,
|
|
3193
3499
|
environment,
|
|
@@ -3200,8 +3506,8 @@ __name(loadSettingsRuntimeModules, "loadSettingsRuntimeModules");
|
|
|
3200
3506
|
var channelWebhookConfigRuntimePromise;
|
|
3201
3507
|
function loadChannelWebhookConfigRuntime() {
|
|
3202
3508
|
channelWebhookConfigRuntimePromise ??= Promise.all([
|
|
3203
|
-
import("./runtime-
|
|
3204
|
-
import("./config-utils-
|
|
3509
|
+
import("./runtime-UVEETF54.js"),
|
|
3510
|
+
import("./config-utils-3DY73VIJ.js")
|
|
3205
3511
|
]).then(([channelRuntime, configUtils]) => ({
|
|
3206
3512
|
loadChannelsConfig: channelRuntime.loadChannelsConfig,
|
|
3207
3513
|
parseChannelWebhookConfig: configUtils.parseChannelWebhookConfig
|
|
@@ -3224,19 +3530,21 @@ async function loadServeRuntimeModules() {
|
|
|
3224
3530
|
workspaceProvidersStatusModule,
|
|
3225
3531
|
workspaceSkillsStatusModule,
|
|
3226
3532
|
totalSessionAdmissionModule,
|
|
3227
|
-
workspaceRegistryModule
|
|
3533
|
+
workspaceRegistryModule,
|
|
3534
|
+
promptLedgerModule
|
|
3228
3535
|
] = await Promise.all([
|
|
3229
|
-
import("./server-
|
|
3230
|
-
import("./bridge-
|
|
3231
|
-
import("./spawnChannel-
|
|
3536
|
+
import("./server-KU7XIDVT.js"),
|
|
3537
|
+
import("./bridge-2CGOUO25.js"),
|
|
3538
|
+
import("./spawnChannel-FCP44P4V.js"),
|
|
3232
3539
|
import("./process-registry-PMJOA5CO.js"),
|
|
3233
|
-
import("./workspace-service-
|
|
3540
|
+
import("./workspace-service-JJZFPKM4.js"),
|
|
3234
3541
|
import("./types-WYCFCEHR.js"),
|
|
3235
|
-
import("./daemon-status-provider-
|
|
3236
|
-
import("./workspace-providers-status-
|
|
3237
|
-
import("./workspace-skills-status-
|
|
3238
|
-
import("./total-session-admission-
|
|
3239
|
-
import("./workspace-registry-
|
|
3542
|
+
import("./daemon-status-provider-3EI2KALQ.js"),
|
|
3543
|
+
import("./workspace-providers-status-R5QTZFK3.js"),
|
|
3544
|
+
import("./workspace-skills-status-DRIOZRIA.js"),
|
|
3545
|
+
import("./total-session-admission-NIBNWXHE.js"),
|
|
3546
|
+
import("./workspace-registry-J3RUCXH6.js"),
|
|
3547
|
+
import("./prompt-terminal-ledger-5JYOPOII.js")
|
|
3240
3548
|
]);
|
|
3241
3549
|
return {
|
|
3242
3550
|
createServeApp: serverModule.createServeApp,
|
|
@@ -3256,7 +3564,8 @@ async function loadServeRuntimeModules() {
|
|
|
3256
3564
|
createTotalSessionAdmissionController: totalSessionAdmissionModule.createTotalSessionAdmissionController,
|
|
3257
3565
|
createWorkspaceRegistry: workspaceRegistryModule.createWorkspaceRegistry,
|
|
3258
3566
|
createWorkspaceSessionOwnerIndex: workspaceRegistryModule.createWorkspaceSessionOwnerIndex,
|
|
3259
|
-
createWorkspaceGenerationGuard: workspaceRegistryModule.createWorkspaceGenerationGuard
|
|
3567
|
+
createWorkspaceGenerationGuard: workspaceRegistryModule.createWorkspaceGenerationGuard,
|
|
3568
|
+
createPromptLedgerSink: promptLedgerModule.createPromptLedgerSink
|
|
3260
3569
|
};
|
|
3261
3570
|
}
|
|
3262
3571
|
__name(loadServeRuntimeModules, "loadServeRuntimeModules");
|
|
@@ -3433,12 +3742,12 @@ async function waitForRuntimeStartingForShutdown(runtimeStarting, daemonLog, tim
|
|
|
3433
3742
|
let timer;
|
|
3434
3743
|
await Promise.race([
|
|
3435
3744
|
runtimeStarting,
|
|
3436
|
-
new Promise((
|
|
3745
|
+
new Promise((resolve4) => {
|
|
3437
3746
|
timer = setTimeout(() => {
|
|
3438
3747
|
daemonLog.warn(
|
|
3439
3748
|
`${timeoutMs}ms runtime-startup wait reached during shutdown; continuing listener close`
|
|
3440
3749
|
);
|
|
3441
|
-
|
|
3750
|
+
resolve4();
|
|
3442
3751
|
}, timeoutMs);
|
|
3443
3752
|
timer.unref();
|
|
3444
3753
|
})
|
|
@@ -4275,7 +4584,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4275
4584
|
}
|
|
4276
4585
|
let workspaceRegistrationStore = deps.workspaceRegistrationStore;
|
|
4277
4586
|
if (workspaceRegistrationStore === void 0 && process.env["QWEN_SERVE_NO_PERSISTENT_REGISTRATION"] !== "1") {
|
|
4278
|
-
const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-
|
|
4587
|
+
const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-WMSLM36M.js");
|
|
4279
4588
|
workspaceRegistrationStore = new WorkspaceRegistrationStore(boundWorkspace);
|
|
4280
4589
|
}
|
|
4281
4590
|
if (workspaceRegistrationStore) {
|
|
@@ -4559,7 +4868,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4559
4868
|
"qwen serve: required external tool guard handshake succeeded."
|
|
4560
4869
|
);
|
|
4561
4870
|
}
|
|
4562
|
-
const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-
|
|
4871
|
+
const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-6233JAPJ.js");
|
|
4563
4872
|
const daemonToolGuardHandler = createDaemonToolGuard(
|
|
4564
4873
|
externalToolGuardHandler
|
|
4565
4874
|
);
|
|
@@ -4602,8 +4911,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4602
4911
|
let resolveServeAppStartup;
|
|
4603
4912
|
let rejectServeAppStartup;
|
|
4604
4913
|
let serveAppStartupSettled = false;
|
|
4605
|
-
const serveAppStartupReady = new Promise((
|
|
4606
|
-
resolveServeAppStartup =
|
|
4914
|
+
const serveAppStartupReady = new Promise((resolve4, reject) => {
|
|
4915
|
+
resolveServeAppStartup = resolve4;
|
|
4607
4916
|
rejectServeAppStartup = reject;
|
|
4608
4917
|
});
|
|
4609
4918
|
void serveAppStartupReady.catch(() => void 0);
|
|
@@ -4633,8 +4942,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4633
4942
|
let startRuntimeAfterHealth;
|
|
4634
4943
|
let startRuntimeForRequest;
|
|
4635
4944
|
const deferRuntimeUntilFirstHealth = deps.resolveOnListen === true && deps.deferRuntimeUntilFirstHealth === true;
|
|
4636
|
-
const runtimeReady = new Promise((
|
|
4637
|
-
markRuntimeReady =
|
|
4945
|
+
const runtimeReady = new Promise((resolve4, reject) => {
|
|
4946
|
+
markRuntimeReady = resolve4;
|
|
4638
4947
|
markRuntimeFailed = reject;
|
|
4639
4948
|
});
|
|
4640
4949
|
void runtimeReady.catch(() => {
|
|
@@ -4848,6 +5157,14 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4848
5157
|
);
|
|
4849
5158
|
}
|
|
4850
5159
|
}
|
|
5160
|
+
const localControlService = app2.locals?.["localControlService"];
|
|
5161
|
+
if (localControlService) {
|
|
5162
|
+
void localControlService.dispose().catch((err) => {
|
|
5163
|
+
daemonLog.warn(
|
|
5164
|
+
`Local Control dispose error: ${err instanceof Error ? err.message : String(err)}`
|
|
5165
|
+
);
|
|
5166
|
+
});
|
|
5167
|
+
}
|
|
4851
5168
|
const acpHandle = app2.locals?.["acpHandle"];
|
|
4852
5169
|
if (acpHandle?.dispose) {
|
|
4853
5170
|
try {
|
|
@@ -4887,7 +5204,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4887
5204
|
loadCoreRuntime(),
|
|
4888
5205
|
loadSettingsRuntimeModules(),
|
|
4889
5206
|
cliVersionPromise,
|
|
4890
|
-
import("./daemon-trust-policy-
|
|
5207
|
+
import("./daemon-trust-policy-QWWU7CON.js")
|
|
4891
5208
|
]);
|
|
4892
5209
|
cliVersion = resolvedCliVersion;
|
|
4893
5210
|
settingsRuntime.environment.preResolveHomeEnvOverrides();
|
|
@@ -4980,6 +5297,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4980
5297
|
runtimeBootSettings,
|
|
4981
5298
|
runtimeEnvSnapshot.effectiveEnv
|
|
4982
5299
|
);
|
|
5300
|
+
const sessionAttachmentsRoot = /* @__PURE__ */ __name((workspace, runtimeBaseDir) => path.join(
|
|
5301
|
+
new core.Storage(workspace, runtimeBaseDir).getProjectTempDir(),
|
|
5302
|
+
"attachments"
|
|
5303
|
+
), "sessionAttachmentsRoot");
|
|
4983
5304
|
const runtimeEffectiveEnv = {
|
|
4984
5305
|
...runtimeEnvSnapshot.effectiveEnv,
|
|
4985
5306
|
QWEN_RUNTIME_DIR: primarySessionRuntimeBaseDir
|
|
@@ -5259,7 +5580,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5259
5580
|
resolveSkillSettings,
|
|
5260
5581
|
skillSettingStrings,
|
|
5261
5582
|
updateWorkspaceSkillSettingLists
|
|
5262
|
-
} = await import("./skill-settings-
|
|
5583
|
+
} = await import("./skill-settings-EXW7ESWJ.js");
|
|
5263
5584
|
const fresh = loadSettingsForPersistence(workspace);
|
|
5264
5585
|
const normalizedName = skillName.trim().toLowerCase();
|
|
5265
5586
|
const resolved = resolveSkillSettings(fresh);
|
|
@@ -5324,7 +5645,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5324
5645
|
resolveSkillSettings,
|
|
5325
5646
|
skillSettingStrings,
|
|
5326
5647
|
updateWorkspaceSkillSettingLists
|
|
5327
|
-
} = await import("./skill-settings-
|
|
5648
|
+
} = await import("./skill-settings-EXW7ESWJ.js");
|
|
5328
5649
|
const fresh = loadSettingsForPersistence(workspace);
|
|
5329
5650
|
const resolved = resolveSkillSettings(fresh);
|
|
5330
5651
|
const initialDisabled = skillSettingStrings(
|
|
@@ -5429,7 +5750,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5429
5750
|
);
|
|
5430
5751
|
}
|
|
5431
5752
|
}), "persistSettingsFn");
|
|
5432
|
-
const { createSubSessionLauncher } = await import("./create-sub-session-
|
|
5753
|
+
const { createSubSessionLauncher } = await import("./create-sub-session-33HIYIJE.js");
|
|
5433
5754
|
const subSessionLauncher = createSubSessionLauncher({
|
|
5434
5755
|
getBridge: /* @__PURE__ */ __name(() => bridgeRef, "getBridge"),
|
|
5435
5756
|
boundWorkspace,
|
|
@@ -5438,6 +5759,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5438
5759
|
)
|
|
5439
5760
|
});
|
|
5440
5761
|
const bridge = deps.bridge ?? runtime.createAcpSessionBridge({
|
|
5762
|
+
sessionAttachmentsRoot: sessionAttachmentsRoot(
|
|
5763
|
+
boundWorkspace,
|
|
5764
|
+
primarySessionRuntimeBaseDir
|
|
5765
|
+
),
|
|
5441
5766
|
// Reverse tool channel: let `BridgeClient.extMethod` reach the WS
|
|
5442
5767
|
// connection that hosts a named client MCP server (#5626).
|
|
5443
5768
|
clientMcpSender: clientMcpSenderRegistry.lookup,
|
|
@@ -5474,6 +5799,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5474
5799
|
...opts.sessionIdleTimeoutMs !== void 0 ? { sessionIdleTimeoutMs: opts.sessionIdleTimeoutMs } : {},
|
|
5475
5800
|
...opts.permissionResponseTimeoutMs !== void 0 ? { permissionResponseTimeoutMs: opts.permissionResponseTimeoutMs } : {},
|
|
5476
5801
|
boundWorkspace,
|
|
5802
|
+
// Prompt terminal ledger: persisted beside the transcript so a
|
|
5803
|
+
// restarted daemon can reconcile dangling prompts on cold load.
|
|
5804
|
+
promptLedger: runtime.createPromptLedgerSink(
|
|
5805
|
+
boundWorkspace,
|
|
5806
|
+
primarySessionRuntimeBaseDir
|
|
5807
|
+
),
|
|
5477
5808
|
sessionShellCommandEnabled,
|
|
5478
5809
|
childEnvOverrides,
|
|
5479
5810
|
channelFactory,
|
|
@@ -5753,6 +6084,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5753
6084
|
)
|
|
5754
6085
|
});
|
|
5755
6086
|
const secondaryBridge = runtime.createAcpSessionBridge({
|
|
6087
|
+
sessionAttachmentsRoot: sessionAttachmentsRoot(
|
|
6088
|
+
workspaceInput.cwd,
|
|
6089
|
+
secondaryEnv.sessionRuntimeBaseDir
|
|
6090
|
+
),
|
|
5756
6091
|
clientMcpSender: secondaryClientMcpSenderRegistry.lookup,
|
|
5757
6092
|
onCreateSubSession: secondarySubSessionLauncher.launch,
|
|
5758
6093
|
onChannelDelivery: createBoundChannelDeliveryHandler(
|
|
@@ -5787,6 +6122,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5787
6122
|
...opts.sessionIdleTimeoutMs !== void 0 ? { sessionIdleTimeoutMs: opts.sessionIdleTimeoutMs } : {},
|
|
5788
6123
|
...opts.permissionResponseTimeoutMs !== void 0 ? { permissionResponseTimeoutMs: opts.permissionResponseTimeoutMs } : {},
|
|
5789
6124
|
boundWorkspace: workspaceInput.cwd,
|
|
6125
|
+
promptLedger: runtime.createPromptLedgerSink(
|
|
6126
|
+
workspaceInput.cwd,
|
|
6127
|
+
secondaryEnv.sessionRuntimeBaseDir
|
|
6128
|
+
),
|
|
5790
6129
|
sessionShellCommandEnabled,
|
|
5791
6130
|
childEnvOverrides,
|
|
5792
6131
|
channelFactory: secondaryChannelFactory,
|
|
@@ -6125,6 +6464,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6125
6464
|
let wsBridge;
|
|
6126
6465
|
try {
|
|
6127
6466
|
wsBridge = runtime.createAcpSessionBridge({
|
|
6467
|
+
sessionAttachmentsRoot: sessionAttachmentsRoot(
|
|
6468
|
+
cwd,
|
|
6469
|
+
wsEnv.sessionRuntimeBaseDir
|
|
6470
|
+
),
|
|
6128
6471
|
clientMcpSender: wsClientMcpRegistry.lookup,
|
|
6129
6472
|
onCreateSubSession: wsSubSessionLauncher.launch,
|
|
6130
6473
|
onChannelDelivery: createBoundChannelDeliveryHandler(
|
|
@@ -6157,6 +6500,14 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6157
6500
|
...opts.sessionIdleTimeoutMs !== void 0 ? { sessionIdleTimeoutMs: opts.sessionIdleTimeoutMs } : {},
|
|
6158
6501
|
...opts.permissionResponseTimeoutMs !== void 0 ? { permissionResponseTimeoutMs: opts.permissionResponseTimeoutMs } : {},
|
|
6159
6502
|
boundWorkspace: cwd,
|
|
6503
|
+
// Live-conversation workspaces keep transcripts outside the
|
|
6504
|
+
// runtime storage layout, so no ledger sink is wired there.
|
|
6505
|
+
...provenance === "live-conversation" ? {} : {
|
|
6506
|
+
promptLedger: runtime.createPromptLedgerSink(
|
|
6507
|
+
cwd,
|
|
6508
|
+
wsEnv.sessionRuntimeBaseDir
|
|
6509
|
+
)
|
|
6510
|
+
},
|
|
6160
6511
|
sessionShellCommandEnabled,
|
|
6161
6512
|
childEnvOverrides,
|
|
6162
6513
|
channelFactory: wsChannelFactory,
|
|
@@ -6604,8 +6955,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6604
6955
|
{ createChannelManagementService },
|
|
6605
6956
|
{ WorkspaceChannelSettingsStore }
|
|
6606
6957
|
] = await Promise.all([
|
|
6607
|
-
import("./channel-management-service-
|
|
6608
|
-
import("./channel-settings-store-
|
|
6958
|
+
import("./channel-management-service-FUJ2EFTF.js"),
|
|
6959
|
+
import("./channel-settings-store-AZKNHHDC.js")
|
|
6609
6960
|
]);
|
|
6610
6961
|
return createChannelManagementService({
|
|
6611
6962
|
workspaceCwd: targetRuntime.workspaceCwd,
|
|
@@ -6808,8 +7159,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6808
7159
|
{ createWorkspaceTrustReconciler },
|
|
6809
7160
|
{ createDaemonTrustPolicyMonitor }
|
|
6810
7161
|
] = await Promise.all([
|
|
6811
|
-
import("./workspace-trust-reconciler-
|
|
6812
|
-
import("./daemon-trust-policy-monitor-
|
|
7162
|
+
import("./workspace-trust-reconciler-YAYSN6CX.js"),
|
|
7163
|
+
import("./daemon-trust-policy-monitor-FH7GBAKN.js")
|
|
6813
7164
|
]);
|
|
6814
7165
|
const materializationFor = /* @__PURE__ */ __name((entry, snapshot, decision) => {
|
|
6815
7166
|
const boundWorkspaces2 = entry.primary && decision.targetTrusted ? runtime.resolveBoundWorkspacesFromIdeEnv(
|
|
@@ -6904,7 +7255,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6904
7255
|
handle?.disposeWorkspace(runtimeToDispose.workspaceId);
|
|
6905
7256
|
const deadline = Date.now() + 1e3;
|
|
6906
7257
|
while ((handle?.getWorkspaceActivity(runtimeToDispose.workspaceId).memoryTasks ?? 0) > 0 && Date.now() < deadline) {
|
|
6907
|
-
await new Promise((
|
|
7258
|
+
await new Promise((resolve4) => setTimeout(resolve4, 25));
|
|
6908
7259
|
}
|
|
6909
7260
|
if ((handle?.getWorkspaceActivity(runtimeToDispose.workspaceId).memoryTasks ?? 0) > 0) {
|
|
6910
7261
|
throw new Error(
|
|
@@ -7004,7 +7355,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7004
7355
|
// through (and start the runtime) exactly like the warm app would.
|
|
7005
7356
|
// Dynamic import keeps web-shell-static out of the serve fast-path
|
|
7006
7357
|
// static closure (see the import-boundary guards in fast-path.test.ts).
|
|
7007
|
-
isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-
|
|
7358
|
+
isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-3NUTRHAH.js").then(
|
|
7008
7359
|
(webShellStatic) => webShellStatic.isPreAuthWebShellRequest(req)
|
|
7009
7360
|
) : void 0
|
|
7010
7361
|
});
|
|
@@ -7024,7 +7375,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7024
7375
|
);
|
|
7025
7376
|
}
|
|
7026
7377
|
const channelValidationSettingsRuntime = opts.channelSelection ? await loadSettingsRuntimeModules() : void 0;
|
|
7027
|
-
const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-
|
|
7378
|
+
const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-QWWU7CON.js") : void 0;
|
|
7028
7379
|
const channelValidationTrustSnapshot = channelValidationTrustPolicy ? await channelValidationTrustPolicy.readDaemonTrustPolicySnapshot() : void 0;
|
|
7029
7380
|
const resolveChannelWorkspaceGroupsAtListen = /* @__PURE__ */ __name(() => {
|
|
7030
7381
|
if (!opts.channelSelection || !channelValidationSettingsRuntime || !channelRuntime) {
|
|
@@ -7130,7 +7481,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7130
7481
|
if (opts.channelSelection) {
|
|
7131
7482
|
reserveChannelServicePidfile(opts.channelSelection);
|
|
7132
7483
|
}
|
|
7133
|
-
return await new Promise((
|
|
7484
|
+
return await new Promise((resolve4, reject) => {
|
|
7134
7485
|
let closeHost;
|
|
7135
7486
|
const onListening = /* @__PURE__ */ __name((error) => {
|
|
7136
7487
|
if (error) return;
|
|
@@ -7811,6 +8162,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7811
8162
|
webShellMounted,
|
|
7812
8163
|
resolvedToken: token,
|
|
7813
8164
|
runtimeReady,
|
|
8165
|
+
getLocalControl: /* @__PURE__ */ __name(() => (runtimeApp ?? runtimeAppForCleanup)?.locals?.["localControlService"], "getLocalControl"),
|
|
7814
8166
|
close: /* @__PURE__ */ __name(() => {
|
|
7815
8167
|
if (closePromise) return closePromise;
|
|
7816
8168
|
closePromise = new Promise((res, rej) => {
|
|
@@ -8099,7 +8451,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
8099
8451
|
loggerPublished = true;
|
|
8100
8452
|
loggerLifecycle.published();
|
|
8101
8453
|
void (liveDiscoveryPublish ?? Promise.resolve()).then(
|
|
8102
|
-
() =>
|
|
8454
|
+
() => resolve4(handle)
|
|
8103
8455
|
);
|
|
8104
8456
|
} else {
|
|
8105
8457
|
void runtimeReady.then(
|
|
@@ -8107,7 +8459,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
8107
8459
|
await liveDiscoveryPublish;
|
|
8108
8460
|
loggerPublished = true;
|
|
8109
8461
|
loggerLifecycle.published();
|
|
8110
|
-
|
|
8462
|
+
resolve4(handle);
|
|
8111
8463
|
},
|
|
8112
8464
|
(err) => {
|
|
8113
8465
|
void handle.close().then(
|
|
@@ -8156,10 +8508,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
8156
8508
|
drainHost: /* @__PURE__ */ __name(() => {
|
|
8157
8509
|
if (closeHost) return closeHost();
|
|
8158
8510
|
if (!server.listening) return Promise.resolve();
|
|
8159
|
-
return new Promise((
|
|
8511
|
+
return new Promise((resolve5, rejectClose) => {
|
|
8160
8512
|
server.close((error) => {
|
|
8161
8513
|
if (error) rejectClose(error);
|
|
8162
|
-
else
|
|
8514
|
+
else resolve5();
|
|
8163
8515
|
});
|
|
8164
8516
|
});
|
|
8165
8517
|
}, "drainHost")
|
|
@@ -8172,7 +8524,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
8172
8524
|
const handleError = /* @__PURE__ */ __name((err) => {
|
|
8173
8525
|
server.removeListener("listening", handleListening);
|
|
8174
8526
|
const nextPort = attemptPort + 1;
|
|
8175
|
-
if (err.code === "EADDRINUSE" && opts.
|
|
8527
|
+
if (err.code === "EADDRINUSE" && opts.port !== 0 && nextPort <= 65535 && attempt < MAX_PORT_ATTEMPTS - 1) {
|
|
8176
8528
|
writeStderrLine(
|
|
8177
8529
|
`qwen serve: port ${attemptPort} is in use, trying ${nextPort}...`
|
|
8178
8530
|
);
|