@qwen-code/qwen-code 0.22.2-preview.1 → 0.22.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/computer-use/SKILL.md +3 -3
- package/bundled/goal-draft/SKILL.md +109 -0
- package/bundled/qc-helper/docs/configuration/settings.md +37 -36
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dws.md +2 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +34 -3
- package/bundled/qc-helper/docs/features/code-review.md +3 -3
- package/bundled/qc-helper/docs/features/commands.md +2 -1
- package/bundled/qc-helper/docs/features/computer-use.md +2 -2
- package/bundled/qc-helper/docs/features/goals.md +58 -0
- package/bundled/qc-helper/docs/features/headless.md +13 -11
- package/bundled/qc-helper/docs/features/status-line.md +3 -3
- package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +1 -1
- package/bundled/review/SKILL.md +81 -31
- package/bundled/review/references/persistence.md +7 -3
- package/bundled/review/references/posting.md +10 -4
- package/chunks/MaxSizedBox-X42SXBJH.js +110 -0
- package/chunks/{StandaloneSessionPicker-5D2L22SF.js → StandaloneSessionPicker-2FJAOLGG.js} +81 -83
- package/chunks/{acpAgent-4DCKLA32.js → acpAgent-2ZMIJAFV.js} +1153 -357
- package/chunks/{agent-B4AFZL6H.js → agent-X5WX3L2I.js} +44 -46
- package/chunks/agent-headless-IZM25LJA.js +85 -0
- package/chunks/{anthropicContentGenerator-U76GTVB6.js → anthropicContentGenerator-YVTB6QX7.js} +46 -50
- package/chunks/{artifact-tool-XDJCZZCF.js → artifact-tool-XSMPHZBT.js} +11 -3
- package/chunks/{askUserQuestion-ZXXERLEV.js → askUserQuestion-4SWJY65V.js} +2 -2
- package/chunks/bridge-ME6QXZNA.js +119 -0
- package/chunks/{channel-management-service-HXXS3HOZ.js → channel-management-service-HQ6KDS7C.js} +6 -6
- package/chunks/channel-settings-store-PEOI7XCG.js +120 -0
- package/chunks/{channel-worker-group-EVDC2P4K.js → channel-worker-group-6NA6BBZV.js} +8 -7
- package/chunks/{channel-worker-manager-IJJZHGEI.js → channel-worker-manager-NEZ2J6RK.js} +10 -8
- package/chunks/{channel-worker-supervisor-YSKB5GVB.js → channel-worker-supervisor-FKU7DIHJ.js} +6 -5
- package/chunks/{chunk-7QGEJI7M.js → chunk-23RFD54N.js} +1 -1
- package/chunks/{chunk-JLU3FPQR.js → chunk-2HYKTO7V.js} +5 -5
- package/chunks/chunk-2LNNVAUV.js +1584 -0
- package/chunks/{chunk-FJAITR4L.js → chunk-2OBKDPZZ.js} +2 -2
- package/chunks/{chunk-JSY43GMI.js → chunk-2OUD5T67.js} +185 -174
- package/chunks/{chunk-LJP2BBMK.js → chunk-2SXSLSQE.js} +4 -4
- package/chunks/chunk-2TNL5KPM.js +49 -0
- package/chunks/{chunk-XMSMTU6H.js → chunk-2YOHKHYR.js} +4 -4
- package/chunks/{chunk-MCKJTBZN.js → chunk-36GSQ3MM.js} +2 -2
- package/chunks/chunk-36LGBEM6.js +130 -0
- package/chunks/{chunk-ZWKGZB2K.js → chunk-3JXM2CVW.js} +3 -3
- package/chunks/{chunk-X3XGCJ32.js → chunk-3SZC4VP4.js} +28 -111
- package/chunks/{chunk-ILPXSKGQ.js → chunk-3WK3QDNV.js} +2 -2
- package/chunks/{chunk-IKN3IUJP.js → chunk-3XKLXHGK.js} +17 -9
- package/chunks/{chunk-ZLTEQYNC.js → chunk-42IDLQWS.js} +26 -20
- package/chunks/chunk-4CMJKUND.js +95 -0
- package/chunks/{chunk-77TOMRBG.js → chunk-4K7KNVWH.js} +3 -3
- package/chunks/{chunk-SQPOJ4ZI.js → chunk-4NDLQAY2.js} +27 -270
- package/chunks/{chunk-V3GINY6K.js → chunk-4QHPPXK2.js} +16 -8
- package/chunks/{chunk-VBF4KZRQ.js → chunk-4TT3IVGA.js} +1 -1
- package/chunks/{chunk-IOGKXPL3.js → chunk-4VPCTGH6.js} +6 -6
- package/chunks/chunk-4VQBQLIZ.js +293 -0
- package/chunks/{chunk-UCSV2IZW.js → chunk-62GQFYID.js} +3 -3
- package/chunks/{chunk-SLEWBQWM.js → chunk-6DIGWMGT.js} +2 -2
- package/chunks/{chunk-BRVWYMKV.js → chunk-6MBXY6WM.js} +1 -1
- package/chunks/{chunk-PVBT5QPD.js → chunk-6PJOTWAN.js} +1 -1
- package/chunks/{chunk-WZ3QKPMQ.js → chunk-6X7EU5TI.js} +19 -31
- package/chunks/{chunk-KQYW2GB5.js → chunk-6ZPDLGHN.js} +6 -6
- package/chunks/{chunk-AKQA3WCH.js → chunk-734C6JGI.js} +723 -3399
- package/chunks/{chunk-F7M6ZFGU.js → chunk-73RM4POK.js} +8 -8
- package/chunks/{chunk-ELY4QVIB.js → chunk-7EQQR46F.js} +1 -1
- package/chunks/{chunk-KGJGEEVR.js → chunk-7FA2II6K.js} +10 -1
- package/chunks/chunk-7J6OTNGO.js +424 -0
- package/chunks/{chunk-LWLEPXKK.js → chunk-7LOELM2I.js} +19 -2
- package/chunks/{chunk-DIMEPKCW.js → chunk-7S226YTK.js} +1 -1
- package/chunks/{chunk-AWFZDYSD.js → chunk-7T52W4SW.js} +1 -1
- package/chunks/{chunk-3JKUX4PB.js → chunk-7VMIMAVB.js} +9 -9
- package/chunks/{chunk-2MHGD7EE.js → chunk-A3LWD5MK.js} +1 -1
- package/chunks/{chunk-E4I5MVBR.js → chunk-ABS25QER.js} +1 -1
- package/chunks/{chunk-TDQBVEPK.js → chunk-AIAOIFY4.js} +10 -8
- package/chunks/{chunk-NEZZHGEI.js → chunk-AYFA7MZV.js} +6 -6
- package/chunks/{chunk-FVDQ5E67.js → chunk-B466ZSHZ.js} +3 -3
- package/chunks/{chunk-6US7BF3G.js → chunk-B5PHIJGI.js} +183 -5
- package/chunks/{chunk-4TPAG3O7.js → chunk-BFPESSTR.js} +1 -1
- package/chunks/{chunk-WBT3STGU.js → chunk-BKWNKLZB.js} +20 -20
- package/chunks/{chunk-T45CL2NT.js → chunk-BOWFGCEU.js} +3 -3
- package/chunks/{chunk-IPQA4SR5.js → chunk-BWORX6FA.js} +1 -1
- package/chunks/{chunk-BKDAF7ES.js → chunk-BXDAPVQU.js} +2 -2
- package/chunks/{chunk-ZEADBZLO.js → chunk-C2X7KY45.js} +3 -3
- package/chunks/{chunk-PTQF7WRA.js → chunk-C3PEFRKD.js} +6 -6
- package/chunks/{chunk-7OBH4AM2.js → chunk-CAJTKR6W.js} +5 -5
- package/chunks/{chunk-2FN2HNTI.js → chunk-CFJY4DGX.js} +2 -2
- package/chunks/{chunk-SUE2ZMUH.js → chunk-CIZCL2MW.js} +49 -31
- package/chunks/{chunk-W2WRNJKX.js → chunk-CLWO3B77.js} +6 -6
- package/chunks/{chunk-U45D46O5.js → chunk-CMHFCLBU.js} +1 -1
- package/chunks/{chunk-LRKMQPMD.js → chunk-CQH5KTKC.js} +1 -1
- package/chunks/{chunk-JECO75XD.js → chunk-D5LUXLUH.js} +2 -2
- package/chunks/chunk-DJBQCO2E.js +842 -0
- package/chunks/{chunk-BQBUZDDH.js → chunk-DJECZIJX.js} +42 -42
- package/chunks/{chunk-GTUZ3R6I.js → chunk-DJEZ55D4.js} +351 -113
- package/chunks/{chunk-HPECDZ6X.js → chunk-DJPASAUV.js} +3866 -1077
- package/chunks/{chunk-VYWCFWI5.js → chunk-DMLVSW7L.js} +542 -654
- package/chunks/{chunk-EB4VDXNI.js → chunk-DYXFD5RO.js} +182 -3
- package/chunks/{chunk-ZKAZP2ZG.js → chunk-EB6QRGHM.js} +3 -3
- package/chunks/{chunk-UWICO5KN.js → chunk-EFWRMA2I.js} +3 -3
- package/chunks/{chunk-3UZCLCXR.js → chunk-EKSCLBBF.js} +3 -3
- package/chunks/{chunk-ALTQLFEG.js → chunk-EQSBPBZ3.js} +5 -194
- package/chunks/{chunk-624NHDGB.js → chunk-ERFDKH32.js} +11 -0
- package/chunks/{chunk-4K44OMLI.js → chunk-FROAFEFB.js} +3 -3
- package/chunks/{chunk-MZS7GEC7.js → chunk-FTF2YIZ5.js} +1 -1
- package/chunks/{chunk-Z7VOMGDC.js → chunk-FTJMWDND.js} +0 -24
- package/chunks/{chunk-ZJG323IA.js → chunk-G6FECKTJ.js} +7 -5
- package/chunks/{chunk-TMGAS5TO.js → chunk-GBJBJ4HX.js} +26 -4
- package/chunks/{chunk-UCQOSV6A.js → chunk-GPGU4S2N.js} +3 -3
- package/chunks/{chunk-BHTJAO36.js → chunk-GVIVASYK.js} +7 -7
- package/chunks/chunk-H72BQNM3.js +645 -0
- package/chunks/{chunk-Z4X5MTRT.js → chunk-HCOBAG2L.js} +2 -4
- package/chunks/{chunk-FCSWZAS3.js → chunk-HP5LR5HL.js} +5 -5
- package/chunks/{chunk-7JPW6IYH.js → chunk-HVC3PNVC.js} +1 -1
- package/chunks/{chunk-OI2DR6QB.js → chunk-I6LYRJPB.js} +3 -3
- package/chunks/{chunk-E55H6BZ7.js → chunk-ICURCKIU.js} +1335 -119
- package/chunks/{chunk-PAJGKZAA.js → chunk-ISKH4QX3.js} +14 -12
- package/chunks/{chunk-AYVIGUUK.js → chunk-JB4JIVTJ.js} +1 -1
- package/chunks/{chunk-FN5C6C7G.js → chunk-JHYH6PYQ.js} +192 -478
- package/chunks/{chunk-T6OODF2U.js → chunk-JWALNCLT.js} +1 -1
- package/chunks/{chunk-SKNVVYIJ.js → chunk-K5KXUXWC.js} +3 -3
- package/chunks/{chunk-XUX6O2ZT.js → chunk-KID24ZFN.js} +4 -1
- package/chunks/{chunk-I6DY753S.js → chunk-KJO2LBUK.js} +944 -18
- package/chunks/{chunk-5T4LWWNX.js → chunk-KYWTPLBJ.js} +18 -21
- package/chunks/{chunk-CZFQ62RM.js → chunk-LHBUKJG2.js} +4 -4
- package/chunks/{chunk-TOF4UZHH.js → chunk-LUEHOUHM.js} +3 -3
- package/chunks/{chunk-2YDYDDE2.js → chunk-M3QRM3DE.js} +3 -3
- package/chunks/{chunk-GNMJNDZE.js → chunk-M6FOJXW3.js} +1 -1
- package/chunks/{chunk-ZGWDHSUM.js → chunk-MF7HCQWZ.js} +4 -4
- package/chunks/{chunk-66GIFJ63.js → chunk-MK2GIB46.js} +1 -1
- package/chunks/{chunk-TFV4RXPU.js → chunk-MO3FC2WT.js} +1 -1
- package/chunks/{chunk-TR7G7XFQ.js → chunk-MPNBVAEU.js} +5 -5
- package/chunks/{chunk-K3LPAED5.js → chunk-MQM5PJML.js} +24 -4
- package/chunks/{chunk-3WBMPR3S.js → chunk-MSBO7X2W.js} +1 -1
- package/chunks/{chunk-5PA6UEYA.js → chunk-MZCJWS5Y.js} +1 -1
- package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
- package/chunks/{chunk-27ONXAFY.js → chunk-NIFYWDYN.js} +1 -1
- package/chunks/{chunk-AP7WZONS.js → chunk-NMOD2FXQ.js} +19 -9
- package/chunks/{chunk-IJVDHPKD.js → chunk-NU7RKEZR.js} +2 -2
- package/chunks/{chunk-5URK47RN.js → chunk-NV55WWD6.js} +11595 -10375
- package/chunks/{chunk-HABT2Z7R.js → chunk-OU5APVWO.js} +4 -4
- package/chunks/{chunk-QR4AHMGQ.js → chunk-P2G476QN.js} +13 -13
- package/chunks/{chunk-5SM2AK65.js → chunk-PADPMMYM.js} +5 -5
- package/chunks/{chunk-RRKNX553.js → chunk-PDQGMSZK.js} +1 -1
- package/chunks/{chunk-GTUKW3I6.js → chunk-PPKZ7JOE.js} +1 -1
- package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
- package/chunks/{chunk-XIRDDFRS.js → chunk-PZ66FRIC.js} +2644 -2296
- package/chunks/{chunk-H3HZ4AWW.js → chunk-Q2MSPKIJ.js} +1 -1
- package/chunks/{chunk-WEGXPP5E.js → chunk-QFCDF5PL.js} +1 -1
- package/chunks/{chunk-OF2DPXUS.js → chunk-QYMAKPY5.js} +119 -24
- package/chunks/{chunk-JVPFTDBK.js → chunk-RFIDDFAL.js} +1 -1
- package/chunks/chunk-RKFGE7JH.js +93 -0
- package/chunks/{chunk-CPPYZHBN.js → chunk-RU7BK6B3.js} +1 -1
- package/chunks/chunk-SEONHUS3.js +275 -0
- package/chunks/{chunk-DEYPMJPD.js → chunk-SMPR7SPO.js} +1 -1
- package/chunks/chunk-SS4MRMKE.js +3525 -0
- package/chunks/{chunk-BPMVPWBT.js → chunk-SS5SDCD3.js} +6 -6
- package/chunks/{chunk-J3CBIEDS.js → chunk-ST5MDGH3.js} +32 -15
- package/chunks/{chunk-J5352S3S.js → chunk-ST5V3ZOC.js} +3 -3
- package/chunks/{chunk-7CWEZQ6T.js → chunk-STUJ7IMZ.js} +0 -77
- package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
- package/chunks/{chunk-TWSKM647.js → chunk-T7KMERIX.js} +1 -1
- package/chunks/{chunk-5CMWFBML.js → chunk-TEBDFQBZ.js} +1 -1
- package/chunks/{chunk-EC5BONC3.js → chunk-TPI7O7HR.js} +1 -1
- package/chunks/{chunk-T2CRBIDJ.js → chunk-TTX2JUE6.js} +1 -1
- package/chunks/{chunk-VOEMVOM4.js → chunk-TVC6HQ2U.js} +2 -2
- package/chunks/{chunk-WXDZZFH3.js → chunk-TZBSGJ6C.js} +6 -6
- package/chunks/chunk-U54AYGEC.js +337 -0
- package/chunks/{chunk-2NNTE2ED.js → chunk-UHQFIS7N.js} +15 -0
- package/chunks/{chunk-76WGY6LW.js → chunk-URE3QBBB.js} +3 -3
- package/chunks/{chunk-KOJ6MHD5.js → chunk-UTLCH2FK.js} +1 -1
- package/chunks/{chunk-7DPKPBOQ.js → chunk-V2NDP3I4.js} +2 -2
- package/chunks/{chunk-FJWICLG7.js → chunk-V4264FEG.js} +9 -9
- package/chunks/{chunk-XR7OIAQF.js → chunk-V5J4J5TP.js} +2 -2
- package/chunks/{chunk-7UJTY5V3.js → chunk-V7EESTJV.js} +1 -1
- package/chunks/{chunk-Z6L3C4VF.js → chunk-VBCPNIQD.js} +39 -39
- package/chunks/{chunk-ATLGYSYH.js → chunk-VGIFXISB.js} +4 -4
- package/chunks/{chunk-X2UOOG5V.js → chunk-VQUGEVGR.js} +1 -1
- package/chunks/{chunk-XJS54K4A.js → chunk-VTHREBQM.js} +2 -2
- package/chunks/{chunk-AA7VBRBG.js → chunk-W3JH33JE.js} +8 -8
- package/chunks/{chunk-FPH6TXD3.js → chunk-WAOIHTJS.js} +1 -1
- package/chunks/{chunk-CDUN63IN.js → chunk-WGY3AVGM.js} +3 -3
- package/chunks/{chunk-JLGFGPZJ.js → chunk-WNPDGUJO.js} +22 -3
- package/chunks/{chunk-O3BUXIPM.js → chunk-WXEA74YB.js} +3 -3
- package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
- package/chunks/{chunk-VL4YX3FH.js → chunk-XF63PKEN.js} +1 -1
- package/chunks/{chunk-R7G7GKOX.js → chunk-XHF7WQ6B.js} +3 -3
- package/chunks/{chunk-3FSBMAYD.js → chunk-XQFT3QUF.js} +1 -1
- package/chunks/{chunk-3D6PDLNJ.js → chunk-XSG6G3G6.js} +49 -32
- package/chunks/{chunk-5JCZ3UKB.js → chunk-Y5S7LBOZ.js} +44 -7
- package/chunks/{chunk-OLS3MAXQ.js → chunk-YLSQLSH7.js} +15 -9
- package/chunks/{chunk-2SERYG4T.js → chunk-YTDVNSUQ.js} +1 -1
- package/chunks/{chunk-KPF2K55D.js → chunk-ZEYFMJQA.js} +39 -8
- package/chunks/{chunk-OT4YKUUV.js → chunk-ZU4UDIWX.js} +2 -2
- package/chunks/chunk-ZWJDJ6RU.js +2597 -0
- package/chunks/{chunk-R3T33BG5.js → chunk-ZYMLPEZQ.js} +3 -3
- package/chunks/{chunk-DID6IRGC.js → chunk-ZZMSC3RG.js} +56 -39
- package/chunks/{chunk-L436XFLJ.js → chunk-ZZUKP7HV.js} +1 -1
- package/chunks/config-utils-R6M3TA34.js +113 -0
- package/chunks/contextCommand-ZCAP23J6.js +106 -0
- package/chunks/{core-runtime-CEJRHCRF.js → core-runtime-AXB6SK5D.js} +59 -61
- package/chunks/{create-sub-session-RVHSWVAP.js → create-sub-session-23ITIELI.js} +3 -3
- package/chunks/{create-sub-session-DFZVIG56.js → create-sub-session-4QNE64MR.js} +164 -85
- package/chunks/{cron-create-IJGVR5R2.js → cron-create-KJ4IY6PP.js} +57 -10
- package/chunks/{cron-delete-4N5BI6GL.js → cron-delete-MBLQCAYY.js} +4 -4
- package/chunks/{cron-list-2CATIPUX.js → cron-list-DWH2PQ47.js} +4 -4
- package/chunks/{daemon-NAYK4XXU.js → daemon-3GNHB3M2.js} +523 -8
- package/chunks/{daemon-git-worktree-guard-L6ZUFKF7.js → daemon-git-worktree-guard-IVAJJWYK.js} +56 -58
- package/chunks/daemon-status-provider-K3SJ5C2U.js +117 -0
- package/chunks/daemon-trust-policy-DOR3YG62.js +112 -0
- package/chunks/{daemon-trust-policy-monitor-2G3EKQEU.js → daemon-trust-policy-monitor-KGGROSIV.js} +64 -66
- package/chunks/deferred-core-runtime-WOYLUQQ7.js +114 -0
- package/chunks/{display-image-6KHQNEAE.js → display-image-BE7I6ZB6.js} +5 -5
- package/chunks/{dist-DJBNNPLN.js → dist-4WXLCBDR.js} +1 -1
- package/chunks/{dist-TJUDJTCB.js → dist-5VXFRTWU.js} +280 -48
- package/chunks/{dist-6H6RZ5H6.js → dist-6BPYWHVD.js} +89 -65
- package/chunks/{dist-ZBVOXSKF.js → dist-GFN5DCBX.js} +74 -65
- package/chunks/{dist-SATKXKUR.js → dist-HZNT6GQS.js} +1 -1
- package/chunks/{dist-FVJZSIO4.js → dist-LVZCXVPF.js} +72 -20
- package/chunks/{dist-7CKN54NL.js → dist-N6W6E753.js} +71 -64
- package/chunks/{dist-4Q7NTUNB.js → dist-NSV4NBPK.js} +31 -14
- package/chunks/{dist-UQUFZDIY.js → dist-SWQMYP2Q.js} +18 -16
- package/chunks/earlyInputCapture-OHBEVO4K.js +107 -0
- package/chunks/{edit-ZERGX3RV.js → edit-LEQLAGPZ.js} +45 -47
- package/chunks/{en-6MDBWMTG.js → en-YLXBXM4Z.js} +2 -1
- package/chunks/{enter-worktree-UOZ6ZTP7.js → enter-worktree-35QCAAFP.js} +7 -7
- package/chunks/{enterPlanMode-W2RP3P5B.js → enterPlanMode-ONQN3WHE.js} +47 -49
- package/chunks/{environment-ZBJ23YVR.js → environment-UANTR7A4.js} +60 -62
- package/chunks/errors-WAK6KFBC.js +113 -0
- package/chunks/{exit-worktree-G2QATUCV.js → exit-worktree-XQD6D543.js} +7 -7
- package/chunks/exitPlanMode-UEYBG6P5.js +83 -0
- package/chunks/{fast-path-4MWBCEUF.js → fast-path-WUL7UZ6H.js} +7 -7
- package/chunks/{fast-path-settings-XMFBYFUH.js → fast-path-settings-XH426LUU.js} +3 -3
- package/chunks/{glob-DKTNG32L.js → glob-Y54QUWDY.js} +44 -46
- package/chunks/{goal-tools-CNVXMSZD.js → goal-tools-PTD3MBA7.js} +10 -8
- package/chunks/{grep-3NLSS32D.js → grep-5GPICQBU.js} +6 -6
- package/chunks/handleAutoUpdate-FP3NWNSG.js +109 -0
- package/chunks/i18n-INIU5X7A.js +124 -0
- package/chunks/{image-gen-63NN2H5N.js → image-gen-J6FDGUZP.js} +8 -10
- package/chunks/initializer-TYODV6GE.js +113 -0
- package/chunks/installationInfo-AAPKYDSZ.js +107 -0
- package/chunks/{keychain-token-storage-3MGFRYGM.js → keychain-token-storage-37XPR34V.js} +2 -2
- package/chunks/list-TUODDN6J.js +116 -0
- package/chunks/{list-agents-EXRSHIDJ.js → list-agents-DI3YFTDT.js} +2 -2
- package/chunks/{gemini-X5GQHQYF.js → llm-NSAVK5V3.js} +117 -114
- package/chunks/{geminiContentGenerator-UDSWXZXL.js → llm-content-generator-AY2QKXHE.js} +29 -29
- package/chunks/loadedSettingsAdapter-KJCLZ3C4.js +110 -0
- package/chunks/{loggingContentGenerator-73C7TKDK.js → loggingContentGenerator-DSFQHXIF.js} +328 -37
- package/chunks/{loop-wakeup-XBPB2BRO.js → loop-wakeup-XJFONSQ7.js} +5 -5
- package/chunks/{ls-WFONAND2.js → ls-3VAT2J7A.js} +4 -4
- package/chunks/{lsp-DUKPDUXN.js → lsp-5W7IRUBH.js} +2 -2
- package/chunks/{managed-npm-update-H2KOLQZU.js → managed-npm-update-TSWENTK5.js} +57 -59
- package/chunks/mcp-MWSAPFOL.js +110 -0
- package/chunks/{monitor-TGCMNJJH.js → monitor-RW4GWJHB.js} +44 -46
- package/chunks/nonInteractiveCli-JXKL343Q.js +185 -0
- package/chunks/{notebook-edit-YEUNZYDX.js → notebook-edit-CQNYS5OR.js} +45 -47
- package/chunks/{open-with-auth-4UI3KHUR.js → open-with-auth-YN3QZHVM.js} +1 -1
- package/chunks/{openaiContentGenerator-J7LD4VSL.js → openaiContentGenerator-J6QIF7EX.js} +26 -28
- package/chunks/pidfile-QOIQZFT2.js +111 -0
- package/chunks/process-registry-OAEG6WGC.js +662 -0
- package/chunks/{processUtils-ZHFC7CSL.js → processUtils-GPHNANKZ.js} +2 -2
- package/chunks/prompt-terminal-ledger-FOMFTYOM.js +105 -0
- package/chunks/{qwenContentGenerator-YEWWK3JQ.js → qwenContentGenerator-WWDXPYQI.js} +49 -51
- package/chunks/{qwenOAuth2-JIYAWXTW.js → qwenOAuth2-OF5WRBQT.js} +7 -9
- package/chunks/{read-file-ZQI3WPVK.js → read-file-FQUQHC6N.js} +13 -13
- package/chunks/{read-mcp-resource-7A7NFSFL.js → read-mcp-resource-XD257PGJ.js} +2 -2
- package/chunks/{record-artifact-CPJ4IJSD.js → record-artifact-VW23GS4F.js} +4 -4
- package/chunks/{report-findings-VFM5DENC.js → report-findings-AO5VYFLR.js} +9 -5
- package/chunks/{request-shutdown-6IW46GD7.js → request-shutdown-BCLA3JV2.js} +7 -7
- package/chunks/resumeHistoryUtils-NSGF3UCB.js +118 -0
- package/chunks/ripGrep-4CAT6SKV.js +39 -0
- package/chunks/{run-qwen-serve-WHWU7NZ6.js → run-qwen-serve-5X6IDZER.js} +371 -357
- package/chunks/{runtime-E7BSPWQP.js → runtime-HK27GMPF.js} +69 -71
- package/chunks/scheduled-tasks-MN2ZZ5P6.js +127 -0
- package/chunks/{scheduler-TJPATFOM.js → scheduler-WD4MHMO5.js} +58 -60
- package/chunks/{sdk-exporters-http-XXSKBD2C.js → sdk-exporters-http-TTU2CHBU.js} +2 -2
- package/chunks/{sdk-impl-VPNBLV7I.js → sdk-impl-UUMVYMAL.js} +11 -5
- package/chunks/{send-message-OXZK6USO.js → send-message-AJ4OCUBV.js} +25 -9
- package/chunks/serve-2XCHPPGG.js +118 -0
- package/chunks/{server-AXCN7QBJ.js → server-GO2N5DH7.js} +6080 -4964
- package/chunks/{session-HO4US3AG.js → session-IFNHTUBT.js} +112 -112
- package/chunks/session-pr-refresh-I3UBWMVP.js +364 -0
- package/chunks/{settings-B2PFJJN4.js → settings-L6N54CU6.js} +63 -65
- package/chunks/{shell-7XMSANI3.js → shell-4Y5LLW6N.js} +44 -46
- package/chunks/{skill-NL3VH562.js → skill-YOWTRAKQ.js} +68 -24
- package/chunks/skill-settings-ZL4JY5UE.js +118 -0
- package/chunks/spawnChannel-ZST6XJVJ.js +112 -0
- package/chunks/standalone-update-THVU3OKY.js +118 -0
- package/chunks/{startInteractiveUI-G2XKSCQ7.js → startInteractiveUI-XDFSHBZD.js} +3076 -2475
- package/chunks/{stdioHelpers-7A2EE64Z.js → stdioHelpers-AY6XCDY2.js} +3 -1
- package/chunks/{syntheticOutput-5AJ444QT.js → syntheticOutput-ML43GEFN.js} +3 -3
- package/chunks/{task-create-TY7P6UHG.js → task-create-QN4LYRSE.js} +11 -11
- package/chunks/{task-list-BELMPA75.js → task-list-JPLGK45U.js} +5 -5
- package/chunks/{task-stop-U3S3KZG2.js → task-stop-CXEH5L2D.js} +2 -2
- package/chunks/{task-update-O4IGDPCK.js → task-update-IWEOJFV2.js} +11 -11
- package/chunks/{team-create-IYBUOORE.js → team-create-OOPXCDBA.js} +44 -46
- package/chunks/{team-delete-YWFXX77L.js → team-delete-RZVVSGCY.js} +5 -5
- package/chunks/{team-plan-approval-YKU57LBM.js → team-plan-approval-DSX5EWAT.js} +44 -46
- package/chunks/terminal-image-renderer-KS25G33E.js +114 -0
- package/chunks/theme-manager-YMZNG45F.js +102 -0
- package/chunks/{todoWrite-435EO2CS.js → todoWrite-WDJNQEMW.js} +43 -25
- package/chunks/{tool-search-4Q3KASIQ.js → tool-search-J5Q6U7DN.js} +22 -22
- package/chunks/total-session-admission-PVN64JVV.js +114 -0
- package/chunks/trustedFolders-FATSC4YI.js +122 -0
- package/chunks/{types-WYCFCEHR.js → types-HKLPXZB3.js} +1 -3
- package/chunks/{update-relaunch-4DC2KKFS.js → update-relaunch-SIKHLHVR.js} +6 -6
- package/chunks/updateCheck-D3YG2WCD.js +118 -0
- package/chunks/useAutoAcceptIndicator-ILINOSAS.js +120 -0
- package/chunks/{validateNonInterActiveAuth-YAE4YPO3.js → validateNonInterActiveAuth-JUDQP6V4.js} +105 -105
- package/chunks/{version-QFP7OGWX.js → version-C63GDDWN.js} +1 -1
- package/chunks/{web-fetch-6T23IK6Q.js → web-fetch-FOQZMNSC.js} +16 -18
- package/chunks/{web-search-WBWTCZK2.js → web-search-PUJTBFUC.js} +9 -11
- package/chunks/{web-shell-static-A6QMUNNV.js → web-shell-static-HNB4FDOE.js} +2 -2
- package/chunks/{workflow-FMAA3D4R.js → workflow-Y5IPINVH.js} +128 -94
- package/chunks/workspace-providers-status-IJ4VHFMB.js +114 -0
- package/chunks/{workspace-registration-store-CMMX7EPX.js → workspace-registration-store-SMJWI2AI.js} +1 -1
- package/chunks/workspace-registry-BTGZIMPK.js +123 -0
- package/chunks/workspace-service-SIN67ITC.js +126 -0
- package/chunks/workspace-skills-status-F3RKCUIX.js +113 -0
- package/chunks/{workspace-trust-reconciler-PJDQUTJL.js → workspace-trust-reconciler-PLIDLJZX.js} +72 -72
- package/chunks/write-file-PAIGB33C.js +88 -0
- package/chunks/{zh-TW-MV4FWFB6.js → zh-TW-RPTMRTHG.js} +2 -1
- package/chunks/{zh-X3WGU6SI.js → zh-UNY63FR3.js} +2 -1
- package/chunks/{zoom-image-WVYVFRXF.js → zoom-image-LYQD7BQA.js} +13 -13
- package/cli.js +16 -16
- package/locales/en.js +2 -0
- package/locales/zh-TW.js +2 -0
- package/locales/zh.js +2 -0
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-d-8xa8uz.js → abnfDiagram-VCTEODGH-TRCMSA_6.js} +1 -1
- package/web-shell/assets/{arc-BhB7CrGK.js → arc-D9Uls5b3.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-BDCd_IcJ.js → architectureDiagram-5GKGNRK7-Bwb8jPXg.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-C-AHu6mi.js → blockDiagram-NRAW4CY4-DHj71TSX.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-CFjQt0vl.js → c4Diagram-UCG6FXSJ-uKBBdbyr.js} +1 -1
- package/web-shell/assets/channel-CXjVLaBa.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-DRjwqaDq.js → chunk-2Q5K7J3B-BZd0Phrl.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-eHM9noJE.js → chunk-5VM5RSS4-7KNeNBqN.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-CcSWUYn1.js → chunk-F27PBJKO-BeboS7Fi.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-DNr-RF5S.js → chunk-G27WJ6UU-RV3JONoj.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-rVJHoNF8.js → chunk-JWPE2WC7-Yw9FCFsP.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-B2aX0Gzy.js → chunk-LCL6LL3I-GIMnydDe.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-DVp07n32.js → chunk-POPQ4Y6H-Cfrux7bL.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-C6QB_KUr.js → chunk-SVP7TREG-BlvIN0CO.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-CLVxDNCy.js → chunk-XXDRQBXY-DMs7Rr4t.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DANEijO3.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DANEijO3.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-B_aKX3A3.js → cose-bilkent-JH36ORCC-DNGqTNwI.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-BBw2pPUa.js → cynefin-OW5HDTMX-CojMpaoH.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-WWPiBTwk.js → cynefinDiagram-5FMLGOSQ-DF07YXGo.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-CPtIdka-.js → dagre-3AP2YEHR-17-4WtCH.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-Dj5og1Xi.js → diagram-S7CK7UJ4-G3Wuyz9m.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-CC_x70YC.js → diagram-UQ7AKVKN-nyWIKZ8P.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-rXMfsO4n.js → diagram-VSXAHHWV-tKHhmYSC.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-DEmLYQbh.js → diagram-VX7I27RA-CpDf1hYk.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-B0ys6Vxx.js → diagram-Z3DM3KII-Cah2IFXG.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-Bq6y6lKH.js → ebnfDiagram-PWID7BFC-DNaCkgxy.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-l69JeBZ4.js → erDiagram-SSCWMZ5O-CAdRgcf1.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-Cm-EzGY4.js → flowDiagram-A5DVABFB-CMUJAShL.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BRS9ZOp7.js → ganttDiagram-EL5Y4UJY-o-_MUNey.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DAMRKgLk.js → gitGraphDiagram-WWUBYQGX-_aG-2Z7O.js} +1 -1
- package/web-shell/assets/{index-Bncx8E8M.js → index-BK_NKxiJ.js} +1 -1
- package/web-shell/assets/index-Ci-z4zWY.js +1913 -0
- package/web-shell/assets/index-LDlXZRHA.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-DasffaZp.js → infoDiagram-RXCK75RN-qJPeZbGP.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-CmRUt3C-.js → ishikawaDiagram-5VMMS53U-7Om4vNo1.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-DzhE_c1Z.js → journeyDiagram-EYS64GPL-BNtXqmBW.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-BH5b6nn3.js → kanban-definition-3QL26DDD-COgFec8P.js} +1 -1
- package/web-shell/assets/{layout-BxoLK-LY.js → layout-B9n81PC9.js} +1 -1
- package/web-shell/assets/{linear-CqDPvVI7.js → linear-Bb6nXZQq.js} +1 -1
- package/web-shell/assets/{mermaid.core-DBoN4plo.js → mermaid.core-Cgrm3JVT.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-DJJtXPEM.js → mindmap-definition-FBJOCRG2-TKwLTjnG.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-DmgPXP5l.js → pegDiagram-XKGWAZYB-BJPuvlpi.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-1ezjzcI5.js → pieDiagram-E7YTZNPT-D01VkNsW.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-ChKARz3k.js → quadrantDiagram-AXDQQJYC-C4hHsiv-.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-k7mNB_QT.js → railroadDiagram-O6MQD6OU-CuEO4xK2.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-B0XFsii0.js → requirementDiagram-EFPCY7ZU-D5J_vIo5.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-repJ2Ukk.js → sankeyDiagram-P5KCCOFB-DQKY223V.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-D0gUSKGu.js → sequenceDiagram-WJ2MYXX4-D27YV_cm.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-CE463F74.js → sizeCapture-X5ZJPWSS-TJg8UcwV.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-003zYtJa.js → stateDiagram-HBIQ2CUA-CmnPzUIx.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DNKPyrDc.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-DBj8MFpu.js → swimlanes-XN3QIQJK-ByeP3_Nu.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-ZL1HPC6w.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-D2aCh4a9.js → timeline-definition-24CTP7MA-BsFA5juR.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-BHMfWBpl.js → vennDiagram-4TSXK5OY-DREP2ECo.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-RdHAj66j.js → wardleyDiagram-VM6X3IG4-iyd9lKi2.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-BgJWOvq0.js → xychartDiagram-S5SC5T6Z-CVr1_j9q.js} +1 -1
- package/web-shell/index.html +3 -3
- package/chunks/MaxSizedBox-BFVLZP2E.js +0 -112
- package/chunks/agent-headless-UCBCS4V4.js +0 -87
- package/chunks/bridge-FRNYLYY7.js +0 -119
- package/chunks/channel-settings-store-IV4KDL7N.js +0 -117
- package/chunks/chunk-I6VVOZDK.js +0 -202
- package/chunks/chunk-JS73NNWF.js +0 -30
- package/chunks/chunk-K2OJUPOE.js +0 -78
- package/chunks/chunk-P3QQPMQA.js +0 -19
- package/chunks/chunk-SDVF6A42.js +0 -945
- package/chunks/chunk-VGHZT6JR.js +0 -51
- package/chunks/config-utils-PMX4QZ5Y.js +0 -113
- package/chunks/contextCommand-NZRLVAFC.js +0 -108
- package/chunks/daemon-status-provider-FTTYZEKN.js +0 -118
- package/chunks/daemon-trust-policy-WMGFPA3Z.js +0 -114
- package/chunks/deferred-core-runtime-BUFEFYNA.js +0 -116
- package/chunks/earlyInputCapture-ROPLMXA7.js +0 -109
- package/chunks/errors-U5KNAADB.js +0 -115
- package/chunks/exitPlanMode-VFJ5R5DD.js +0 -85
- package/chunks/handleAutoUpdate-W4BUYFT7.js +0 -111
- package/chunks/i18n-KX7FEKJJ.js +0 -126
- package/chunks/initializer-SNVVLS7Y.js +0 -115
- package/chunks/installationInfo-D4XGQNHJ.js +0 -109
- package/chunks/list-WYECMLXZ.js +0 -118
- package/chunks/loadedSettingsAdapter-5WZBXBCR.js +0 -112
- package/chunks/mcp-CBWAROY3.js +0 -112
- package/chunks/nonInteractiveCli-O232UUV7.js +0 -185
- package/chunks/pidfile-MSPQ255Y.js +0 -113
- package/chunks/process-registry-PMJOA5CO.js +0 -172
- package/chunks/prompt-terminal-ledger-YPGMNDXT.js +0 -107
- package/chunks/resumeHistoryUtils-35D4KAVT.js +0 -120
- package/chunks/ripGrep-46N4FLOS.js +0 -39
- package/chunks/serve-WQ54UIYG.js +0 -120
- package/chunks/skill-settings-SKMN5YXC.js +0 -120
- package/chunks/spawnChannel-NE43EEO3.js +0 -113
- package/chunks/standalone-update-XOCWGXAH.js +0 -120
- package/chunks/terminal-image-renderer-NREKYTAD.js +0 -116
- package/chunks/theme-manager-IJS6OICX.js +0 -104
- package/chunks/total-session-admission-L5RPEFZ2.js +0 -114
- package/chunks/trustedFolders-OILZCHRD.js +0 -124
- package/chunks/updateCheck-AK4COHNK.js +0 -120
- package/chunks/useAutoAcceptIndicator-O2N2Q6KG.js +0 -122
- package/chunks/workspace-providers-status-OCFEWIPQ.js +0 -116
- package/chunks/workspace-registry-WJLZPRTG.js +0 -123
- package/chunks/workspace-service-5ZOBMMIB.js +0 -131
- package/chunks/workspace-skills-status-B6NJZD4B.js +0 -115
- package/chunks/write-file-B2RNX6SU.js +0 -90
- package/web-shell/assets/channel-CU-Zyv0r.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-C0J2_LKs.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-C0J2_LKs.js +0 -1
- package/web-shell/assets/index-C-XlQn24.css +0 -5
- package/web-shell/assets/index-gdvMN4J1.js +0 -1860
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-2uACDdJN.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-C4JJkavU.js +0 -8
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
import {
|
|
4
4
|
computeCpuPercent
|
|
5
5
|
} from "./chunk-LBOVL47Y.js";
|
|
6
|
-
import {
|
|
7
|
-
RUNTIME_STARTUP_CANCELLED_MESSAGE
|
|
8
|
-
} from "./chunk-QUPXZXLV.js";
|
|
9
6
|
import {
|
|
10
7
|
resolveServeToken
|
|
11
8
|
} from "./chunk-ZELCTN6Y.js";
|
|
9
|
+
import {
|
|
10
|
+
RUNTIME_STARTUP_CANCELLED_MESSAGE
|
|
11
|
+
} from "./chunk-QUPXZXLV.js";
|
|
12
12
|
import {
|
|
13
13
|
ACCESS_LOG_CONTROLLER_LOCAL,
|
|
14
14
|
CAPABILITIES_SCHEMA_VERSION,
|
|
@@ -38,13 +38,20 @@ import {
|
|
|
38
38
|
positiveFiniteOrNull,
|
|
39
39
|
prepareManagedScratchRoot,
|
|
40
40
|
resolveAcpHttpEnabled,
|
|
41
|
-
setDeferredRuntimeRequestTiming,
|
|
42
41
|
toDaemonStatusMemoryLimits
|
|
43
|
-
} from "./chunk-
|
|
44
|
-
import "./chunk-VGHZT6JR.js";
|
|
42
|
+
} from "./chunk-4NDLQAY2.js";
|
|
45
43
|
import {
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
ConversationDirectoryIdentityError,
|
|
45
|
+
assertExactConversationRootIdentity,
|
|
46
|
+
createConversationRootIdentity,
|
|
47
|
+
getConversationDirectoryName,
|
|
48
|
+
getConversationStagedDirectoryName,
|
|
49
|
+
inspectConversationDirectoryIdentity,
|
|
50
|
+
inspectConversationStagedDirectoryIdentity,
|
|
51
|
+
isSameConversationDirectoryObject,
|
|
52
|
+
materializeConversationDirectoryIdentity,
|
|
53
|
+
revalidateConversationRootIdentity
|
|
54
|
+
} from "./chunk-U54AYGEC.js";
|
|
48
55
|
import {
|
|
49
56
|
isLoopbackBind
|
|
50
57
|
} from "./chunk-RXFQM6FQ.js";
|
|
@@ -53,6 +60,12 @@ import {
|
|
|
53
60
|
resolveDaemonMemoryBudget,
|
|
54
61
|
serveJournalGrowthPoolMb
|
|
55
62
|
} from "./chunk-UXEO7E3V.js";
|
|
63
|
+
import {
|
|
64
|
+
setDeferredRuntimeRequestTiming
|
|
65
|
+
} from "./chunk-SEONHUS3.js";
|
|
66
|
+
import {
|
|
67
|
+
normalizeSessionIdForLookup
|
|
68
|
+
} from "./chunk-ZEZKIS2K.js";
|
|
56
69
|
import "./chunk-NYWWQ437.js";
|
|
57
70
|
import {
|
|
58
71
|
resolveSessionRestoreTimeoutMs
|
|
@@ -74,7 +87,7 @@ import {
|
|
|
74
87
|
} from "./chunk-FBX2SDQ4.js";
|
|
75
88
|
import {
|
|
76
89
|
resolveChannelCwd
|
|
77
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-HVC3PNVC.js";
|
|
78
91
|
import {
|
|
79
92
|
LIVE_HOST_PROTOCOL_VERSION
|
|
80
93
|
} from "./chunk-NKLP3DCK.js";
|
|
@@ -85,17 +98,17 @@ import {
|
|
|
85
98
|
consumeServeFastPathRejectedLoaderKeys,
|
|
86
99
|
loadServeFastPathSettings,
|
|
87
100
|
preResolveServeFastPathHomeEnvOverrides
|
|
88
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-T7KMERIX.js";
|
|
89
102
|
import {
|
|
90
103
|
MAX_REGISTERED_WORKSPACES,
|
|
91
104
|
resolveWorkspaceInputs,
|
|
92
105
|
workspaceRegistrationId
|
|
93
|
-
} from "./chunk-
|
|
94
|
-
import "./chunk-
|
|
106
|
+
} from "./chunk-TEBDFQBZ.js";
|
|
107
|
+
import "./chunk-G6FECKTJ.js";
|
|
95
108
|
import {
|
|
96
109
|
LOAD_REPLAY_META_KEY
|
|
97
110
|
} from "./chunk-OZ6KS6KW.js";
|
|
98
|
-
import "./chunk-
|
|
111
|
+
import "./chunk-ERFDKH32.js";
|
|
99
112
|
import {
|
|
100
113
|
canonicalizeWorkspace,
|
|
101
114
|
translateAndCheckAbsoluteWorkspacePath
|
|
@@ -103,26 +116,27 @@ import {
|
|
|
103
116
|
import {
|
|
104
117
|
ExtraCaInspectionError,
|
|
105
118
|
loadableCertificates
|
|
106
|
-
} from "./chunk-
|
|
119
|
+
} from "./chunk-ISKH4QX3.js";
|
|
107
120
|
import "./chunk-FYJ7W2PI.js";
|
|
108
121
|
import "./chunk-Z7B6SRPM.js";
|
|
109
122
|
import {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
isChannelDeliveryError
|
|
113
|
-
} from "./chunk-7CWEZQ6T.js";
|
|
114
|
-
import {
|
|
115
|
-
normalizeWorkerDiagnostic,
|
|
116
|
-
sanitizeWorkerDiagnostic
|
|
117
|
-
} from "./chunk-JVPFTDBK.js";
|
|
123
|
+
ChannelWebhookEnqueueError
|
|
124
|
+
} from "./chunk-STUJ7IMZ.js";
|
|
118
125
|
import {
|
|
119
126
|
QWEN_SERVER_TOKEN_ENV
|
|
120
127
|
} from "./chunk-GYTKQYDB.js";
|
|
128
|
+
import {
|
|
129
|
+
normalizeWorkerDiagnostic,
|
|
130
|
+
sanitizeWorkerDiagnostic
|
|
131
|
+
} from "./chunk-RFIDDFAL.js";
|
|
121
132
|
import {
|
|
122
133
|
channelSelectionNames
|
|
123
134
|
} from "./chunk-ALMR3E6Q.js";
|
|
135
|
+
import {
|
|
136
|
+
ChannelDeliveryError,
|
|
137
|
+
isChannelDeliveryError
|
|
138
|
+
} from "./chunk-RKFGE7JH.js";
|
|
124
139
|
import "./chunk-UDG5EZJI.js";
|
|
125
|
-
import "./chunk-M5GB774H.js";
|
|
126
140
|
import {
|
|
127
141
|
EXTERNAL_TOOL_GUARD_PROVIDER_ATTACHED_VALUE,
|
|
128
142
|
EXTERNAL_TOOL_GUARD_REQUIRED_VALUE,
|
|
@@ -130,12 +144,13 @@ import {
|
|
|
130
144
|
PRIVATE_EXTERNAL_TOOL_GUARD_ENV,
|
|
131
145
|
PRIVATE_EXTERNAL_TOOL_GUARD_PROVIDER_ENV
|
|
132
146
|
} from "./chunk-3VUENPWF.js";
|
|
147
|
+
import "./chunk-M5GB774H.js";
|
|
133
148
|
import {
|
|
134
149
|
MAX_DAEMON_WORKSPACES
|
|
135
150
|
} from "./chunk-5HBA2Z7V.js";
|
|
136
151
|
import {
|
|
137
152
|
sanitizeLogText
|
|
138
|
-
} from "./chunk-
|
|
153
|
+
} from "./chunk-ICURCKIU.js";
|
|
139
154
|
import "./chunk-IW6RQPQB.js";
|
|
140
155
|
import "./chunk-GOXKNSDZ.js";
|
|
141
156
|
import {
|
|
@@ -147,10 +162,10 @@ import {
|
|
|
147
162
|
clearLoaderKeyRejectionReporterIfCurrent,
|
|
148
163
|
scrubInheritedLoaderEnv,
|
|
149
164
|
setLoaderKeyRejectionReporter
|
|
150
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-MZCJWS5Y.js";
|
|
151
166
|
import {
|
|
152
167
|
getCliVersion
|
|
153
|
-
} from "./chunk-
|
|
168
|
+
} from "./chunk-Q2MSPKIJ.js";
|
|
154
169
|
import "./chunk-W3N5XAZ6.js";
|
|
155
170
|
import "./chunk-NPQ5ZKRP.js";
|
|
156
171
|
import {
|
|
@@ -173,7 +188,7 @@ import "./chunk-JVEGA3MM.js";
|
|
|
173
188
|
import {
|
|
174
189
|
writeStderrLine,
|
|
175
190
|
writeStdoutLine
|
|
176
|
-
} from "./chunk-
|
|
191
|
+
} from "./chunk-7FA2II6K.js";
|
|
177
192
|
import "./chunk-DMTGGOSA.js";
|
|
178
193
|
import "./chunk-YQ3U5MUC.js";
|
|
179
194
|
import {
|
|
@@ -193,7 +208,7 @@ import {
|
|
|
193
208
|
// packages/cli/src/serve/run-qwen-serve.ts
|
|
194
209
|
init_esbuild_shims();
|
|
195
210
|
var import_express = __toESM(require_express(), 1);
|
|
196
|
-
import { X509Certificate, createHash as
|
|
211
|
+
import { X509Certificate, createHash as createHash2, timingSafeEqual } from "node:crypto";
|
|
197
212
|
import { execFile } from "node:child_process";
|
|
198
213
|
import * as fs from "node:fs";
|
|
199
214
|
import { createServer } from "node:http";
|
|
@@ -611,11 +626,11 @@ async function ensureRealDirectory(fs2, dirPath, mutationAllowed = () => true) {
|
|
|
611
626
|
__name(ensureRealDirectory, "ensureRealDirectory");
|
|
612
627
|
async function activeFileSize(fs2, activePath) {
|
|
613
628
|
try {
|
|
614
|
-
const
|
|
615
|
-
if (!
|
|
629
|
+
const stat2 = await fs2.lstat(activePath);
|
|
630
|
+
if (!stat2.isFile() || stat2.isSymbolicLink()) {
|
|
616
631
|
throw new Error(`${activePath} is not a regular file`);
|
|
617
632
|
}
|
|
618
|
-
return
|
|
633
|
+
return stat2.size;
|
|
619
634
|
} catch (error) {
|
|
620
635
|
if (isErrno(error, "ENOENT")) return 0;
|
|
621
636
|
throw error;
|
|
@@ -1036,8 +1051,8 @@ __name(closeFallbackFamily, "closeFallbackFamily");
|
|
|
1036
1051
|
async function cleanupFallbacksBestEffort(input) {
|
|
1037
1052
|
const runsDir = nodePath.join(input.daemonDir, "runs");
|
|
1038
1053
|
try {
|
|
1039
|
-
const
|
|
1040
|
-
if (!
|
|
1054
|
+
const stat2 = await input.fs.lstat(runsDir);
|
|
1055
|
+
if (!stat2.isDirectory() || stat2.isSymbolicLink()) {
|
|
1041
1056
|
throw new Error(`${runsDir} is not a real directory`);
|
|
1042
1057
|
}
|
|
1043
1058
|
} catch (error) {
|
|
@@ -1404,7 +1419,7 @@ function createConcreteLogger(input) {
|
|
|
1404
1419
|
}
|
|
1405
1420
|
});
|
|
1406
1421
|
let timeout;
|
|
1407
|
-
const deadline = new Promise((
|
|
1422
|
+
const deadline = new Promise((resolve3) => {
|
|
1408
1423
|
timeout = setTimeout(() => {
|
|
1409
1424
|
try {
|
|
1410
1425
|
input.warnOnce(
|
|
@@ -1413,7 +1428,7 @@ function createConcreteLogger(input) {
|
|
|
1413
1428
|
);
|
|
1414
1429
|
} catch {
|
|
1415
1430
|
} finally {
|
|
1416
|
-
|
|
1431
|
+
resolve3();
|
|
1417
1432
|
}
|
|
1418
1433
|
}, input.policy.closeDrainBudgetMs);
|
|
1419
1434
|
timeout.unref();
|
|
@@ -1759,251 +1774,10 @@ __name(initDaemonLogger, "initDaemonLogger");
|
|
|
1759
1774
|
|
|
1760
1775
|
// packages/cli/src/serve/conversations/conversation-workspace.ts
|
|
1761
1776
|
init_esbuild_shims();
|
|
1762
|
-
import {
|
|
1777
|
+
import { constants as fsConstants } from "node:fs";
|
|
1778
|
+
import { open, readdir, rename, rm, rmdir, stat } from "node:fs/promises";
|
|
1763
1779
|
import { homedir } from "node:os";
|
|
1764
|
-
import {
|
|
1765
|
-
|
|
1766
|
-
// packages/cli/src/utils/conversation-directory-identity.ts
|
|
1767
|
-
init_esbuild_shims();
|
|
1768
|
-
import { createHash as createHash2 } from "node:crypto";
|
|
1769
|
-
import { lstat, mkdir, realpath } from "node:fs/promises";
|
|
1770
|
-
import { isAbsolute, join as join2, relative as relative2, resolve, sep } from "node:path";
|
|
1771
|
-
function hasVerifiableInode(ino) {
|
|
1772
|
-
return Number(ino) !== 0;
|
|
1773
|
-
}
|
|
1774
|
-
__name(hasVerifiableInode, "hasVerifiableInode");
|
|
1775
|
-
var ConversationDirectoryIdentityError = class extends Error {
|
|
1776
|
-
constructor(scope, reason, cause) {
|
|
1777
|
-
super(
|
|
1778
|
-
`Conversation ${scope} identity validation failed: ${reason}`,
|
|
1779
|
-
cause !== void 0 ? { cause } : void 0
|
|
1780
|
-
);
|
|
1781
|
-
this.scope = scope;
|
|
1782
|
-
this.reason = reason;
|
|
1783
|
-
}
|
|
1784
|
-
static {
|
|
1785
|
-
__name(this, "ConversationDirectoryIdentityError");
|
|
1786
|
-
}
|
|
1787
|
-
name = "ConversationDirectoryIdentityError";
|
|
1788
|
-
};
|
|
1789
|
-
function throwIdentityIoError(scope, cause) {
|
|
1790
|
-
throw new ConversationDirectoryIdentityError(scope, "io_error", cause);
|
|
1791
|
-
}
|
|
1792
|
-
__name(throwIdentityIoError, "throwIdentityIoError");
|
|
1793
|
-
var isSameConversationPath = /* @__PURE__ */ __name((left, right) => process.platform === "win32" ? left.toLowerCase() === right.toLowerCase() : left === right, "isSameConversationPath");
|
|
1794
|
-
function getConversationDirectoryName(storageSessionId) {
|
|
1795
|
-
if (storageSessionId.length === 0 || storageSessionId.length > 256) {
|
|
1796
|
-
throw new ConversationDirectoryIdentityError("child", "invalid_session_id");
|
|
1797
|
-
}
|
|
1798
|
-
return `conversation-${createHash2("sha256").update(storageSessionId).digest("hex")}`;
|
|
1799
|
-
}
|
|
1800
|
-
__name(getConversationDirectoryName, "getConversationDirectoryName");
|
|
1801
|
-
function validateDirectoryStats(stats, scope) {
|
|
1802
|
-
if (stats.isSymbolicLink() || !stats.isDirectory()) {
|
|
1803
|
-
throw new ConversationDirectoryIdentityError(scope, "not_directory");
|
|
1804
|
-
}
|
|
1805
|
-
if (process.platform !== "win32" && typeof process.getuid === "function" && stats.uid !== process.getuid()) {
|
|
1806
|
-
throw new ConversationDirectoryIdentityError(scope, "wrong_owner");
|
|
1807
|
-
}
|
|
1808
|
-
if (process.platform !== "win32" && (stats.mode & 63) !== 0) {
|
|
1809
|
-
throw new ConversationDirectoryIdentityError(scope, "wrong_mode");
|
|
1810
|
-
}
|
|
1811
|
-
}
|
|
1812
|
-
__name(validateDirectoryStats, "validateDirectoryStats");
|
|
1813
|
-
function hasRootIdentity(stats, root) {
|
|
1814
|
-
if (!root.inodeVerifiable) return stats.dev === root.device;
|
|
1815
|
-
return hasVerifiableInode(stats.ino) && stats.dev === root.device && stats.ino === root.inode;
|
|
1816
|
-
}
|
|
1817
|
-
__name(hasRootIdentity, "hasRootIdentity");
|
|
1818
|
-
function isSameDirectoryIdentity(before, after) {
|
|
1819
|
-
if (!hasVerifiableInode(before.ino) || !hasVerifiableInode(after.ino)) {
|
|
1820
|
-
return before.dev === after.dev;
|
|
1821
|
-
}
|
|
1822
|
-
return before.dev === after.dev && before.ino === after.ino;
|
|
1823
|
-
}
|
|
1824
|
-
__name(isSameDirectoryIdentity, "isSameDirectoryIdentity");
|
|
1825
|
-
function hasExpectedDirectoryIdentity(identity, expected) {
|
|
1826
|
-
const inodesProvable = hasVerifiableInode(identity.inode) && hasVerifiableInode(expected.inode);
|
|
1827
|
-
return identity.storageSessionId === expected.storageSessionId && identity.name === expected.name && isSameConversationPath(identity.canonicalPath, expected.canonicalPath) && identity.device === expected.device && (!inodesProvable || identity.inode === expected.inode) && isSameConversationPath(
|
|
1828
|
-
identity.root.configuredRoot,
|
|
1829
|
-
expected.root.configuredRoot
|
|
1830
|
-
) && isSameConversationPath(
|
|
1831
|
-
identity.root.canonicalRoot,
|
|
1832
|
-
expected.root.canonicalRoot
|
|
1833
|
-
) && identity.root.device === expected.root.device && (!identity.root.inodeVerifiable || !expected.root.inodeVerifiable || identity.root.inode === expected.root.inode);
|
|
1834
|
-
}
|
|
1835
|
-
__name(hasExpectedDirectoryIdentity, "hasExpectedDirectoryIdentity");
|
|
1836
|
-
async function createConversationRootIdentity(configuredRoot) {
|
|
1837
|
-
try {
|
|
1838
|
-
await mkdir(configuredRoot, { recursive: true, mode: 448 });
|
|
1839
|
-
} catch (error) {
|
|
1840
|
-
let existing;
|
|
1841
|
-
try {
|
|
1842
|
-
existing = await lstat(configuredRoot);
|
|
1843
|
-
} catch {
|
|
1844
|
-
throwIdentityIoError("root", error);
|
|
1845
|
-
}
|
|
1846
|
-
validateDirectoryStats(existing, "root");
|
|
1847
|
-
throwIdentityIoError("root", error);
|
|
1848
|
-
}
|
|
1849
|
-
let before;
|
|
1850
|
-
try {
|
|
1851
|
-
before = await lstat(configuredRoot);
|
|
1852
|
-
} catch (error) {
|
|
1853
|
-
throwIdentityIoError("root", error);
|
|
1854
|
-
}
|
|
1855
|
-
validateDirectoryStats(before, "root");
|
|
1856
|
-
let canonicalRoot;
|
|
1857
|
-
let after;
|
|
1858
|
-
try {
|
|
1859
|
-
canonicalRoot = await realpath(configuredRoot);
|
|
1860
|
-
after = await lstat(canonicalRoot);
|
|
1861
|
-
} catch (error) {
|
|
1862
|
-
throwIdentityIoError("root", error);
|
|
1863
|
-
}
|
|
1864
|
-
validateDirectoryStats(after, "root");
|
|
1865
|
-
if (!isSameDirectoryIdentity(before, after)) {
|
|
1866
|
-
throw new ConversationDirectoryIdentityError("root", "identity_changed");
|
|
1867
|
-
}
|
|
1868
|
-
return {
|
|
1869
|
-
configuredRoot,
|
|
1870
|
-
canonicalRoot,
|
|
1871
|
-
device: after.dev,
|
|
1872
|
-
inode: after.ino,
|
|
1873
|
-
inodeVerifiable: hasVerifiableInode(after.ino)
|
|
1874
|
-
};
|
|
1875
|
-
}
|
|
1876
|
-
__name(createConversationRootIdentity, "createConversationRootIdentity");
|
|
1877
|
-
async function revalidateConversationRootIdentity(root) {
|
|
1878
|
-
let configuredStats;
|
|
1879
|
-
try {
|
|
1880
|
-
configuredStats = await lstat(root.configuredRoot);
|
|
1881
|
-
} catch (error) {
|
|
1882
|
-
throwIdentityIoError("root", error);
|
|
1883
|
-
}
|
|
1884
|
-
validateDirectoryStats(configuredStats, "root");
|
|
1885
|
-
if (!hasRootIdentity(configuredStats, root)) {
|
|
1886
|
-
throw new ConversationDirectoryIdentityError("root", "identity_changed");
|
|
1887
|
-
}
|
|
1888
|
-
let canonical;
|
|
1889
|
-
try {
|
|
1890
|
-
canonical = await realpath(root.configuredRoot);
|
|
1891
|
-
} catch (error) {
|
|
1892
|
-
throwIdentityIoError("root", error);
|
|
1893
|
-
}
|
|
1894
|
-
if (!isSameConversationPath(canonical, root.canonicalRoot)) {
|
|
1895
|
-
throw new ConversationDirectoryIdentityError(
|
|
1896
|
-
"root",
|
|
1897
|
-
"canonical_path_changed"
|
|
1898
|
-
);
|
|
1899
|
-
}
|
|
1900
|
-
let canonicalStats;
|
|
1901
|
-
try {
|
|
1902
|
-
canonicalStats = await lstat(root.canonicalRoot);
|
|
1903
|
-
} catch (error) {
|
|
1904
|
-
throwIdentityIoError("root", error);
|
|
1905
|
-
}
|
|
1906
|
-
validateDirectoryStats(canonicalStats, "root");
|
|
1907
|
-
if (!hasRootIdentity(canonicalStats, root)) {
|
|
1908
|
-
throw new ConversationDirectoryIdentityError("root", "identity_changed");
|
|
1909
|
-
}
|
|
1910
|
-
return root;
|
|
1911
|
-
}
|
|
1912
|
-
__name(revalidateConversationRootIdentity, "revalidateConversationRootIdentity");
|
|
1913
|
-
async function assertExactConversationRootIdentity(root, candidate) {
|
|
1914
|
-
await revalidateConversationRootIdentity(root);
|
|
1915
|
-
const resolvedCandidate = resolve(candidate);
|
|
1916
|
-
if (!isSameConversationPath(resolvedCandidate, root.configuredRoot) && !isSameConversationPath(resolvedCandidate, root.canonicalRoot)) {
|
|
1917
|
-
throw new ConversationDirectoryIdentityError("root", "unexpected_identity");
|
|
1918
|
-
}
|
|
1919
|
-
let stats;
|
|
1920
|
-
let canonical;
|
|
1921
|
-
try {
|
|
1922
|
-
stats = await lstat(resolvedCandidate);
|
|
1923
|
-
validateDirectoryStats(stats, "root");
|
|
1924
|
-
canonical = await realpath(resolvedCandidate);
|
|
1925
|
-
} catch (error) {
|
|
1926
|
-
if (error instanceof ConversationDirectoryIdentityError) throw error;
|
|
1927
|
-
throwIdentityIoError("root", error);
|
|
1928
|
-
}
|
|
1929
|
-
if (!isSameConversationPath(canonical, root.canonicalRoot) || !hasRootIdentity(stats, root)) {
|
|
1930
|
-
throw new ConversationDirectoryIdentityError("root", "unexpected_identity");
|
|
1931
|
-
}
|
|
1932
|
-
return root;
|
|
1933
|
-
}
|
|
1934
|
-
__name(assertExactConversationRootIdentity, "assertExactConversationRootIdentity");
|
|
1935
|
-
async function inspectConversationDirectoryIdentity(root, storageSessionId, expected) {
|
|
1936
|
-
await revalidateConversationRootIdentity(root);
|
|
1937
|
-
const name = getConversationDirectoryName(storageSessionId);
|
|
1938
|
-
const candidate = join2(root.canonicalRoot, name);
|
|
1939
|
-
let before;
|
|
1940
|
-
try {
|
|
1941
|
-
before = await lstat(candidate);
|
|
1942
|
-
} catch (error) {
|
|
1943
|
-
if (error.code === "ENOENT") return void 0;
|
|
1944
|
-
throwIdentityIoError("child", error);
|
|
1945
|
-
}
|
|
1946
|
-
validateDirectoryStats(before, "child");
|
|
1947
|
-
let canonical;
|
|
1948
|
-
let after;
|
|
1949
|
-
try {
|
|
1950
|
-
canonical = await realpath(candidate);
|
|
1951
|
-
after = await lstat(canonical);
|
|
1952
|
-
} catch (error) {
|
|
1953
|
-
if (error.code === "ENOENT") return void 0;
|
|
1954
|
-
throwIdentityIoError("child", error);
|
|
1955
|
-
}
|
|
1956
|
-
validateDirectoryStats(after, "child");
|
|
1957
|
-
const child = relative2(root.canonicalRoot, canonical);
|
|
1958
|
-
if (child !== name || child.includes(sep) || child.startsWith("..") || isAbsolute(child)) {
|
|
1959
|
-
throw new ConversationDirectoryIdentityError("child", "not_direct_child");
|
|
1960
|
-
}
|
|
1961
|
-
if (!isSameDirectoryIdentity(before, after)) {
|
|
1962
|
-
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
1963
|
-
}
|
|
1964
|
-
await revalidateConversationRootIdentity(root);
|
|
1965
|
-
const identity = {
|
|
1966
|
-
root,
|
|
1967
|
-
storageSessionId,
|
|
1968
|
-
name,
|
|
1969
|
-
canonicalPath: canonical,
|
|
1970
|
-
device: after.dev,
|
|
1971
|
-
inode: after.ino
|
|
1972
|
-
};
|
|
1973
|
-
if (expected && !hasExpectedDirectoryIdentity(identity, expected)) {
|
|
1974
|
-
throw new ConversationDirectoryIdentityError(
|
|
1975
|
-
"child",
|
|
1976
|
-
"unexpected_identity"
|
|
1977
|
-
);
|
|
1978
|
-
}
|
|
1979
|
-
return identity;
|
|
1980
|
-
}
|
|
1981
|
-
__name(inspectConversationDirectoryIdentity, "inspectConversationDirectoryIdentity");
|
|
1982
|
-
async function materializeConversationDirectoryIdentity(root, storageSessionId) {
|
|
1983
|
-
await revalidateConversationRootIdentity(root);
|
|
1984
|
-
const name = getConversationDirectoryName(storageSessionId);
|
|
1985
|
-
const candidate = join2(root.canonicalRoot, name);
|
|
1986
|
-
let created = false;
|
|
1987
|
-
try {
|
|
1988
|
-
await mkdir(candidate, { mode: 448 });
|
|
1989
|
-
created = true;
|
|
1990
|
-
} catch (error) {
|
|
1991
|
-
if (error.code !== "EEXIST") {
|
|
1992
|
-
throwIdentityIoError("child", error);
|
|
1993
|
-
}
|
|
1994
|
-
}
|
|
1995
|
-
const identity = await inspectConversationDirectoryIdentity(
|
|
1996
|
-
root,
|
|
1997
|
-
storageSessionId
|
|
1998
|
-
);
|
|
1999
|
-
if (!identity) {
|
|
2000
|
-
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
2001
|
-
}
|
|
2002
|
-
return { identity, created };
|
|
2003
|
-
}
|
|
2004
|
-
__name(materializeConversationDirectoryIdentity, "materializeConversationDirectoryIdentity");
|
|
2005
|
-
|
|
2006
|
-
// packages/cli/src/serve/conversations/conversation-workspace.ts
|
|
1780
|
+
import { join as join2, resolve } from "node:path";
|
|
2007
1781
|
function liveIdentityError(error, exactRoot = false, creatingRoot = false) {
|
|
2008
1782
|
if (!(error instanceof ConversationDirectoryIdentityError)) throw error;
|
|
2009
1783
|
if (error.reason === "io_error" && error.cause !== void 0) {
|
|
@@ -2061,7 +1835,7 @@ function liveIdentityError(error, exactRoot = false, creatingRoot = false) {
|
|
|
2061
1835
|
}
|
|
2062
1836
|
__name(liveIdentityError, "liveIdentityError");
|
|
2063
1837
|
function getConversationRootPath(homeDir = homedir()) {
|
|
2064
|
-
return
|
|
1838
|
+
return resolve(homeDir, "Documents", "Qwen Code", "Conversations");
|
|
2065
1839
|
}
|
|
2066
1840
|
__name(getConversationRootPath, "getConversationRootPath");
|
|
2067
1841
|
async function revalidateConversationRoot(root) {
|
|
@@ -2245,6 +2019,171 @@ var ConversationWorkspace = class {
|
|
|
2245
2019
|
throw error;
|
|
2246
2020
|
}
|
|
2247
2021
|
}
|
|
2022
|
+
async inspectStandaloneDeletionPaths(storageSessionId, expected) {
|
|
2023
|
+
const root = await this.revalidateStandaloneRoot();
|
|
2024
|
+
try {
|
|
2025
|
+
const normal = await inspectConversationDirectoryIdentity(
|
|
2026
|
+
root,
|
|
2027
|
+
storageSessionId
|
|
2028
|
+
);
|
|
2029
|
+
const staged = await inspectConversationStagedDirectoryIdentity(
|
|
2030
|
+
root,
|
|
2031
|
+
storageSessionId
|
|
2032
|
+
);
|
|
2033
|
+
if (normal && staged) {
|
|
2034
|
+
throw new ConversationDirectoryIdentityError(
|
|
2035
|
+
"child",
|
|
2036
|
+
"unexpected_identity"
|
|
2037
|
+
);
|
|
2038
|
+
}
|
|
2039
|
+
const identity = normal ?? staged;
|
|
2040
|
+
if (identity && expected && !isSameConversationDirectoryObject(identity, expected)) {
|
|
2041
|
+
throw new ConversationDirectoryIdentityError(
|
|
2042
|
+
"child",
|
|
2043
|
+
"unexpected_identity"
|
|
2044
|
+
);
|
|
2045
|
+
}
|
|
2046
|
+
if (normal) return { status: "normal", identity: normal };
|
|
2047
|
+
if (staged) return { status: "staged", identity: staged };
|
|
2048
|
+
return { status: "absent" };
|
|
2049
|
+
} catch (error) {
|
|
2050
|
+
if (error instanceof ConversationDirectoryIdentityError && error.scope === "child") {
|
|
2051
|
+
return { status: "compromised", error };
|
|
2052
|
+
}
|
|
2053
|
+
throw error;
|
|
2054
|
+
}
|
|
2055
|
+
}
|
|
2056
|
+
async createStandaloneDeletionExpectation(storageSessionId, recorded) {
|
|
2057
|
+
if (recorded.inodeVerifiable !== (recorded.inode !== 0)) {
|
|
2058
|
+
throw new ConversationDirectoryIdentityError(
|
|
2059
|
+
"child",
|
|
2060
|
+
"unexpected_identity"
|
|
2061
|
+
);
|
|
2062
|
+
}
|
|
2063
|
+
const root = await this.revalidateStandaloneRoot();
|
|
2064
|
+
const name = getConversationDirectoryName(storageSessionId);
|
|
2065
|
+
return {
|
|
2066
|
+
root,
|
|
2067
|
+
storageSessionId,
|
|
2068
|
+
name,
|
|
2069
|
+
canonicalPath: join2(root.canonicalRoot, name),
|
|
2070
|
+
device: recorded.device,
|
|
2071
|
+
inode: recorded.inode
|
|
2072
|
+
};
|
|
2073
|
+
}
|
|
2074
|
+
async stageStandaloneDirectory(storageSessionId, expected) {
|
|
2075
|
+
const inspected = await this.inspectStandaloneDeletionPaths(
|
|
2076
|
+
storageSessionId,
|
|
2077
|
+
expected
|
|
2078
|
+
);
|
|
2079
|
+
if (inspected.status === "compromised") throw inspected.error;
|
|
2080
|
+
if (inspected.status !== "normal") {
|
|
2081
|
+
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
2082
|
+
}
|
|
2083
|
+
const root = await this.revalidateStandaloneRoot();
|
|
2084
|
+
await rename(
|
|
2085
|
+
inspected.identity.canonicalPath,
|
|
2086
|
+
join2(
|
|
2087
|
+
root.canonicalRoot,
|
|
2088
|
+
getConversationStagedDirectoryName(storageSessionId)
|
|
2089
|
+
)
|
|
2090
|
+
);
|
|
2091
|
+
await revalidateConversationRootIdentity(root);
|
|
2092
|
+
const staged = await inspectConversationStagedDirectoryIdentity(
|
|
2093
|
+
root,
|
|
2094
|
+
storageSessionId
|
|
2095
|
+
);
|
|
2096
|
+
if (!staged || !isSameConversationDirectoryObject(staged, inspected.identity)) {
|
|
2097
|
+
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
2098
|
+
}
|
|
2099
|
+
await this.syncStandaloneRoot(root);
|
|
2100
|
+
return staged;
|
|
2101
|
+
}
|
|
2102
|
+
async restoreStagedStandaloneDirectory(storageSessionId, expected) {
|
|
2103
|
+
const inspected = await this.inspectStandaloneDeletionPaths(
|
|
2104
|
+
storageSessionId,
|
|
2105
|
+
expected
|
|
2106
|
+
);
|
|
2107
|
+
if (inspected.status === "compromised") throw inspected.error;
|
|
2108
|
+
if (inspected.status !== "staged") {
|
|
2109
|
+
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
2110
|
+
}
|
|
2111
|
+
const root = await this.revalidateStandaloneRoot();
|
|
2112
|
+
await rename(
|
|
2113
|
+
inspected.identity.canonicalPath,
|
|
2114
|
+
join2(root.canonicalRoot, getConversationDirectoryName(storageSessionId))
|
|
2115
|
+
);
|
|
2116
|
+
await revalidateConversationRootIdentity(root);
|
|
2117
|
+
const restored = await inspectConversationDirectoryIdentity(
|
|
2118
|
+
root,
|
|
2119
|
+
storageSessionId
|
|
2120
|
+
);
|
|
2121
|
+
if (!restored || !isSameConversationDirectoryObject(restored, inspected.identity)) {
|
|
2122
|
+
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
2123
|
+
}
|
|
2124
|
+
await this.syncStandaloneRoot(root);
|
|
2125
|
+
return restored;
|
|
2126
|
+
}
|
|
2127
|
+
async removeStagedStandaloneDirectory(storageSessionId, expected) {
|
|
2128
|
+
const inspected = await this.inspectStandaloneDeletionPaths(
|
|
2129
|
+
storageSessionId,
|
|
2130
|
+
expected
|
|
2131
|
+
);
|
|
2132
|
+
if (inspected.status === "compromised") throw inspected.error;
|
|
2133
|
+
if (inspected.status !== "staged") {
|
|
2134
|
+
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
2135
|
+
}
|
|
2136
|
+
const confirmed = await inspectConversationStagedDirectoryIdentity(
|
|
2137
|
+
inspected.identity.root,
|
|
2138
|
+
storageSessionId
|
|
2139
|
+
);
|
|
2140
|
+
if (!confirmed || !isSameConversationDirectoryObject(confirmed, inspected.identity)) {
|
|
2141
|
+
throw new ConversationDirectoryIdentityError("child", "identity_changed");
|
|
2142
|
+
}
|
|
2143
|
+
await rm(confirmed.canonicalPath, { recursive: true });
|
|
2144
|
+
await this.syncStandaloneRoot(confirmed.root);
|
|
2145
|
+
}
|
|
2146
|
+
async confirmStandaloneRootDurability(root) {
|
|
2147
|
+
await this.syncStandaloneRoot(root);
|
|
2148
|
+
}
|
|
2149
|
+
async syncStandaloneRoot(root) {
|
|
2150
|
+
await revalidateConversationRootIdentity(root);
|
|
2151
|
+
let handle;
|
|
2152
|
+
try {
|
|
2153
|
+
handle = await open(
|
|
2154
|
+
root.canonicalRoot,
|
|
2155
|
+
fsConstants.O_RDONLY | (process.platform === "win32" ? 0 : fsConstants.O_NOFOLLOW ?? 0)
|
|
2156
|
+
);
|
|
2157
|
+
const stats = await handle.stat();
|
|
2158
|
+
const inodeVerifiable = Number.isSafeInteger(stats.ino) && stats.ino > 0;
|
|
2159
|
+
if (!stats.isDirectory() || stats.dev !== root.device || inodeVerifiable !== root.inodeVerifiable || root.inodeVerifiable && stats.ino !== root.inode) {
|
|
2160
|
+
throw new ConversationDirectoryIdentityError(
|
|
2161
|
+
"root",
|
|
2162
|
+
"identity_changed"
|
|
2163
|
+
);
|
|
2164
|
+
}
|
|
2165
|
+
try {
|
|
2166
|
+
await handle.sync();
|
|
2167
|
+
} catch (error) {
|
|
2168
|
+
if (process.platform !== "win32" || !["EACCES", "EINVAL", "EPERM"].includes(
|
|
2169
|
+
error.code ?? ""
|
|
2170
|
+
)) {
|
|
2171
|
+
throw error;
|
|
2172
|
+
}
|
|
2173
|
+
}
|
|
2174
|
+
const current = await stat(root.canonicalRoot);
|
|
2175
|
+
const currentInodeVerifiable = Number.isSafeInteger(current.ino) && current.ino > 0;
|
|
2176
|
+
if (!current.isDirectory() || current.dev !== root.device || currentInodeVerifiable !== root.inodeVerifiable || root.inodeVerifiable && current.ino !== root.inode) {
|
|
2177
|
+
throw new ConversationDirectoryIdentityError(
|
|
2178
|
+
"root",
|
|
2179
|
+
"identity_changed"
|
|
2180
|
+
);
|
|
2181
|
+
}
|
|
2182
|
+
} finally {
|
|
2183
|
+
await handle?.close().catch(() => void 0);
|
|
2184
|
+
}
|
|
2185
|
+
await revalidateConversationRootIdentity(root);
|
|
2186
|
+
}
|
|
2248
2187
|
};
|
|
2249
2188
|
|
|
2250
2189
|
// packages/cli/src/serve/daemon-metrics-ring.ts
|
|
@@ -3105,8 +3044,8 @@ async function flushDaemonLogBounded(daemonLog, budgetMs) {
|
|
|
3105
3044
|
await Promise.race([
|
|
3106
3045
|
daemonLog.flush().catch(() => {
|
|
3107
3046
|
}),
|
|
3108
|
-
new Promise((
|
|
3109
|
-
timer = setTimeout(
|
|
3047
|
+
new Promise((resolve3) => {
|
|
3048
|
+
timer = setTimeout(resolve3, budgetMs);
|
|
3110
3049
|
timer.unref();
|
|
3111
3050
|
})
|
|
3112
3051
|
]);
|
|
@@ -3337,7 +3276,7 @@ try {
|
|
|
3337
3276
|
`;
|
|
3338
3277
|
async function verifyWorkerTlsTrust(opts) {
|
|
3339
3278
|
const timeoutMs = opts.timeoutMs ?? 5e3;
|
|
3340
|
-
return new Promise((
|
|
3279
|
+
return new Promise((resolve3) => {
|
|
3341
3280
|
execFile(
|
|
3342
3281
|
process.execPath,
|
|
3343
3282
|
[
|
|
@@ -3358,10 +3297,10 @@ async function verifyWorkerTlsTrust(opts) {
|
|
|
3358
3297
|
(error, stdout) => {
|
|
3359
3298
|
try {
|
|
3360
3299
|
const result = JSON.parse(stdout);
|
|
3361
|
-
|
|
3300
|
+
resolve3(result.ok ? void 0 : result);
|
|
3362
3301
|
} catch {
|
|
3363
3302
|
const failure = error;
|
|
3364
|
-
|
|
3303
|
+
resolve3({
|
|
3365
3304
|
code: failure?.code != null ? String(failure.code) : "WORKER_TLS_VERIFY_FAILED",
|
|
3366
3305
|
message: failure?.message ?? "TLS verification probe failed."
|
|
3367
3306
|
});
|
|
@@ -3799,12 +3738,12 @@ __name(hasRetryableChannelWorkerShutdownError, "hasRetryableChannelWorkerShutdow
|
|
|
3799
3738
|
var channelWorkerRuntimePromise;
|
|
3800
3739
|
async function loadChannelWorkerRuntime() {
|
|
3801
3740
|
channelWorkerRuntimePromise ??= Promise.all([
|
|
3802
|
-
import("./channel-worker-supervisor-
|
|
3803
|
-
import("./pidfile-
|
|
3804
|
-
import("./runtime-
|
|
3741
|
+
import("./channel-worker-supervisor-FKU7DIHJ.js"),
|
|
3742
|
+
import("./pidfile-QOIQZFT2.js"),
|
|
3743
|
+
import("./runtime-HK27GMPF.js"),
|
|
3805
3744
|
import("./cli-entry-path-4VJ3Y6T2.js"),
|
|
3806
|
-
import("./channel-worker-group-
|
|
3807
|
-
import("./channel-worker-manager-
|
|
3745
|
+
import("./channel-worker-group-6NA6BBZV.js"),
|
|
3746
|
+
import("./channel-worker-manager-NEZ2J6RK.js")
|
|
3808
3747
|
]).then(
|
|
3809
3748
|
([
|
|
3810
3749
|
supervisor,
|
|
@@ -3910,7 +3849,7 @@ function shouldPreheatBridge(deps) {
|
|
|
3910
3849
|
__name(shouldPreheatBridge, "shouldPreheatBridge");
|
|
3911
3850
|
var coreRuntimePromise;
|
|
3912
3851
|
function loadCoreRuntime() {
|
|
3913
|
-
coreRuntimePromise ??= import("./core-runtime-
|
|
3852
|
+
coreRuntimePromise ??= import("./core-runtime-AXB6SK5D.js");
|
|
3914
3853
|
return coreRuntimePromise;
|
|
3915
3854
|
}
|
|
3916
3855
|
__name(loadCoreRuntime, "loadCoreRuntime");
|
|
@@ -3946,10 +3885,10 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
|
|
|
3946
3885
|
var settingsRuntimePromise;
|
|
3947
3886
|
function loadSettingsRuntimeModules() {
|
|
3948
3887
|
settingsRuntimePromise ??= Promise.all([
|
|
3949
|
-
import("./settings-
|
|
3950
|
-
import("./environment-
|
|
3951
|
-
import("./loadedSettingsAdapter-
|
|
3952
|
-
import("./trustedFolders-
|
|
3888
|
+
import("./settings-L6N54CU6.js"),
|
|
3889
|
+
import("./environment-UANTR7A4.js"),
|
|
3890
|
+
import("./loadedSettingsAdapter-KJCLZ3C4.js"),
|
|
3891
|
+
import("./trustedFolders-FATSC4YI.js")
|
|
3953
3892
|
]).then(([settings, environment, loadedSettingsAdapter, trustedFolders]) => ({
|
|
3954
3893
|
settings,
|
|
3955
3894
|
environment,
|
|
@@ -3962,8 +3901,8 @@ __name(loadSettingsRuntimeModules, "loadSettingsRuntimeModules");
|
|
|
3962
3901
|
var channelWebhookConfigRuntimePromise;
|
|
3963
3902
|
function loadChannelWebhookConfigRuntime() {
|
|
3964
3903
|
channelWebhookConfigRuntimePromise ??= Promise.all([
|
|
3965
|
-
import("./runtime-
|
|
3966
|
-
import("./config-utils-
|
|
3904
|
+
import("./runtime-HK27GMPF.js"),
|
|
3905
|
+
import("./config-utils-R6M3TA34.js")
|
|
3967
3906
|
]).then(([channelRuntime, configUtils]) => ({
|
|
3968
3907
|
loadChannelsConfig: channelRuntime.loadChannelsConfig,
|
|
3969
3908
|
parseChannelWebhookConfig: configUtils.parseChannelWebhookConfig
|
|
@@ -3989,18 +3928,18 @@ async function loadServeRuntimeModules() {
|
|
|
3989
3928
|
workspaceRegistryModule,
|
|
3990
3929
|
promptLedgerModule
|
|
3991
3930
|
] = await Promise.all([
|
|
3992
|
-
import("./server-
|
|
3993
|
-
import("./bridge-
|
|
3994
|
-
import("./spawnChannel-
|
|
3995
|
-
import("./process-registry-
|
|
3996
|
-
import("./workspace-service-
|
|
3997
|
-
import("./types-
|
|
3998
|
-
import("./daemon-status-provider-
|
|
3999
|
-
import("./workspace-providers-status-
|
|
4000
|
-
import("./workspace-skills-status-
|
|
4001
|
-
import("./total-session-admission-
|
|
4002
|
-
import("./workspace-registry-
|
|
4003
|
-
import("./prompt-terminal-ledger-
|
|
3931
|
+
import("./server-GO2N5DH7.js"),
|
|
3932
|
+
import("./bridge-ME6QXZNA.js"),
|
|
3933
|
+
import("./spawnChannel-ZST6XJVJ.js"),
|
|
3934
|
+
import("./process-registry-OAEG6WGC.js"),
|
|
3935
|
+
import("./workspace-service-SIN67ITC.js"),
|
|
3936
|
+
import("./types-HKLPXZB3.js"),
|
|
3937
|
+
import("./daemon-status-provider-K3SJ5C2U.js"),
|
|
3938
|
+
import("./workspace-providers-status-IJ4VHFMB.js"),
|
|
3939
|
+
import("./workspace-skills-status-F3RKCUIX.js"),
|
|
3940
|
+
import("./total-session-admission-PVN64JVV.js"),
|
|
3941
|
+
import("./workspace-registry-BTGZIMPK.js"),
|
|
3942
|
+
import("./prompt-terminal-ledger-FOMFTYOM.js")
|
|
4004
3943
|
]);
|
|
4005
3944
|
return {
|
|
4006
3945
|
createServeApp: serverModule.createServeApp,
|
|
@@ -4013,7 +3952,6 @@ async function loadServeRuntimeModules() {
|
|
|
4013
3952
|
ProcessRegistry: processRegistryModule.ProcessRegistry,
|
|
4014
3953
|
createDaemonWorkspaceService: workspaceModule.createDaemonWorkspaceService,
|
|
4015
3954
|
WorkspaceSettingsPartialPersistError: workspaceTypesModule.WorkspaceSettingsPartialPersistError,
|
|
4016
|
-
WorkspaceSkillNotToggleableError: workspaceTypesModule.WorkspaceSkillNotToggleableError,
|
|
4017
3955
|
createDaemonStatusProvider: daemonStatusProviderModule.createDaemonStatusProvider,
|
|
4018
3956
|
createWorkspaceProvidersStatusProvider: workspaceProvidersStatusModule.createWorkspaceProvidersStatusProvider,
|
|
4019
3957
|
createWorkspaceSkillsStatusProvider: workspaceSkillsStatusModule.createWorkspaceSkillsStatusProvider,
|
|
@@ -4045,7 +3983,7 @@ function sessionIdleTimeoutMs(value) {
|
|
|
4045
3983
|
return value !== void 0 ? channelIdleTimeoutMs(value) : DEFAULT_SESSION_IDLE_TIMEOUT_MS;
|
|
4046
3984
|
}
|
|
4047
3985
|
__name(sessionIdleTimeoutMs, "sessionIdleTimeoutMs");
|
|
4048
|
-
function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled, sessionArtifactsPersistenceAvailable, env) {
|
|
3986
|
+
function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled, sessionArtifactsPersistenceAvailable, currentSessionSchedulingAvailable, env) {
|
|
4049
3987
|
return getAdvertisedServeFeatures(void 0, {
|
|
4050
3988
|
requireAuth: opts.requireAuth === true,
|
|
4051
3989
|
mcpPoolActive: opts.mcpPoolActive !== false,
|
|
@@ -4057,6 +3995,7 @@ function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled, s
|
|
|
4057
3995
|
sessionShellCommandEnabled,
|
|
4058
3996
|
sessionArtifactsPersistenceAvailable,
|
|
4059
3997
|
sessionGenerationAvailable: true,
|
|
3998
|
+
currentSessionSchedulingAvailable,
|
|
4060
3999
|
workspaceGenerationAvailable: true,
|
|
4061
4000
|
rateLimit: opts.rateLimit === true,
|
|
4062
4001
|
reloadAvailable: true,
|
|
@@ -4083,6 +4022,7 @@ function createBootstrapCapabilities(input) {
|
|
|
4083
4022
|
input.opts,
|
|
4084
4023
|
input.sessionShellCommandEnabled,
|
|
4085
4024
|
input.sessionArtifactsPersistenceAvailable,
|
|
4025
|
+
input.currentSessionSchedulingAvailable,
|
|
4086
4026
|
input.env
|
|
4087
4027
|
),
|
|
4088
4028
|
modelServices: [],
|
|
@@ -4198,12 +4138,12 @@ async function waitForRuntimeStartingForShutdown(runtimeStarting, daemonLog, tim
|
|
|
4198
4138
|
let timer;
|
|
4199
4139
|
await Promise.race([
|
|
4200
4140
|
runtimeStarting,
|
|
4201
|
-
new Promise((
|
|
4141
|
+
new Promise((resolve3) => {
|
|
4202
4142
|
timer = setTimeout(() => {
|
|
4203
4143
|
daemonLog.warn(
|
|
4204
4144
|
`${timeoutMs}ms runtime-startup wait reached during shutdown; continuing listener close`
|
|
4205
4145
|
);
|
|
4206
|
-
|
|
4146
|
+
resolve3();
|
|
4207
4147
|
}, timeoutMs);
|
|
4208
4148
|
timer.unref();
|
|
4209
4149
|
})
|
|
@@ -4242,6 +4182,7 @@ function createBootstrapServeApp(input) {
|
|
|
4242
4182
|
qwenCodeVersion,
|
|
4243
4183
|
sessionShellCommandEnabled,
|
|
4244
4184
|
sessionArtifactsPersistenceAvailable,
|
|
4185
|
+
currentSessionSchedulingAvailable,
|
|
4245
4186
|
permissionPolicy,
|
|
4246
4187
|
multiWorkspaceCapabilitiesRequireRuntime,
|
|
4247
4188
|
getRuntimeError,
|
|
@@ -4301,6 +4242,7 @@ function createBootstrapServeApp(input) {
|
|
|
4301
4242
|
qwenCodeVersion,
|
|
4302
4243
|
sessionShellCommandEnabled,
|
|
4303
4244
|
sessionArtifactsPersistenceAvailable,
|
|
4245
|
+
currentSessionSchedulingAvailable,
|
|
4304
4246
|
permissionPolicy,
|
|
4305
4247
|
env: process.env
|
|
4306
4248
|
})
|
|
@@ -4418,6 +4360,7 @@ function createBootstrapServeApp(input) {
|
|
|
4418
4360
|
opts,
|
|
4419
4361
|
sessionShellCommandEnabled,
|
|
4420
4362
|
sessionArtifactsPersistenceAvailable,
|
|
4363
|
+
currentSessionSchedulingAvailable,
|
|
4421
4364
|
process.env
|
|
4422
4365
|
)
|
|
4423
4366
|
},
|
|
@@ -4614,8 +4557,8 @@ function matchesWebhookSecret(candidate, expected) {
|
|
|
4614
4557
|
if (typeof candidate !== "string" || typeof expected !== "string" || expected.length === 0) {
|
|
4615
4558
|
return false;
|
|
4616
4559
|
}
|
|
4617
|
-
const expectedDigest =
|
|
4618
|
-
const candidateDigest =
|
|
4560
|
+
const expectedDigest = createHash2("sha256").update(expected).digest();
|
|
4561
|
+
const candidateDigest = createHash2("sha256").update(candidate).digest();
|
|
4619
4562
|
return timingSafeEqual(expectedDigest, candidateDigest);
|
|
4620
4563
|
}
|
|
4621
4564
|
__name(matchesWebhookSecret, "matchesWebhookSecret");
|
|
@@ -5041,7 +4984,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5041
4984
|
}
|
|
5042
4985
|
let workspaceRegistrationStore = deps.workspaceRegistrationStore;
|
|
5043
4986
|
if (workspaceRegistrationStore === void 0 && process.env["QWEN_SERVE_NO_PERSISTENT_REGISTRATION"] !== "1") {
|
|
5044
|
-
const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-
|
|
4987
|
+
const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-SMJWI2AI.js");
|
|
5045
4988
|
workspaceRegistrationStore = new WorkspaceRegistrationStore(boundWorkspace);
|
|
5046
4989
|
}
|
|
5047
4990
|
if (workspaceRegistrationStore) {
|
|
@@ -5325,7 +5268,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5325
5268
|
"qwen serve: required external tool guard handshake succeeded."
|
|
5326
5269
|
);
|
|
5327
5270
|
}
|
|
5328
|
-
const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-
|
|
5271
|
+
const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-IVAJJWYK.js");
|
|
5329
5272
|
const daemonToolGuardHandler = createDaemonToolGuard(
|
|
5330
5273
|
externalToolGuardHandler
|
|
5331
5274
|
);
|
|
@@ -5371,8 +5314,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5371
5314
|
let resolveServeAppStartup;
|
|
5372
5315
|
let rejectServeAppStartup;
|
|
5373
5316
|
let serveAppStartupSettled = false;
|
|
5374
|
-
const serveAppStartupReady = new Promise((
|
|
5375
|
-
resolveServeAppStartup =
|
|
5317
|
+
const serveAppStartupReady = new Promise((resolve3, reject) => {
|
|
5318
|
+
resolveServeAppStartup = resolve3;
|
|
5376
5319
|
rejectServeAppStartup = reject;
|
|
5377
5320
|
});
|
|
5378
5321
|
void serveAppStartupReady.catch(() => void 0);
|
|
@@ -5394,6 +5337,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5394
5337
|
const internalRuntimeBridgesForCleanup = [];
|
|
5395
5338
|
let daemonEventLoopMonitor;
|
|
5396
5339
|
let daemonMetricsSampler;
|
|
5340
|
+
let sessionPrRefreshTimer;
|
|
5341
|
+
let sessionPrRefreshGeneration = 0;
|
|
5397
5342
|
let runtimeStartupError;
|
|
5398
5343
|
let runtimeStarting;
|
|
5399
5344
|
let markRuntimeReady;
|
|
@@ -5402,8 +5347,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5402
5347
|
let startRuntimeAfterHealth;
|
|
5403
5348
|
let startRuntimeForRequest;
|
|
5404
5349
|
const deferRuntimeUntilFirstHealth = deps.resolveOnListen === true && deps.deferRuntimeUntilFirstHealth === true;
|
|
5405
|
-
const runtimeReady = new Promise((
|
|
5406
|
-
markRuntimeReady =
|
|
5350
|
+
const runtimeReady = new Promise((resolve3, reject) => {
|
|
5351
|
+
markRuntimeReady = resolve3;
|
|
5407
5352
|
markRuntimeFailed = reject;
|
|
5408
5353
|
});
|
|
5409
5354
|
void runtimeReady.catch(() => {
|
|
@@ -5413,6 +5358,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5413
5358
|
daemonEventLoopMonitor = void 0;
|
|
5414
5359
|
const metricsSampler = daemonMetricsSampler;
|
|
5415
5360
|
daemonMetricsSampler = void 0;
|
|
5361
|
+
const prRefreshTimer = sessionPrRefreshTimer;
|
|
5362
|
+
sessionPrRefreshTimer = void 0;
|
|
5363
|
+
sessionPrRefreshGeneration += 1;
|
|
5364
|
+
prRefreshTimer?.dispose();
|
|
5416
5365
|
try {
|
|
5417
5366
|
eventLoopMonitor?.dispose();
|
|
5418
5367
|
} catch (err) {
|
|
@@ -5597,6 +5546,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5597
5546
|
stopSafely("scheduled-task keepalive", locals.stopScheduledTaskKeepalive);
|
|
5598
5547
|
stopSafely("workspace git state", locals.stopWorkspaceGitState);
|
|
5599
5548
|
stopSafely("Live Host coordinator", locals.stopLiveCoordinator);
|
|
5549
|
+
stopSafely("web terminal registry", locals.stopWebTerminalRegistry);
|
|
5600
5550
|
stopTrustPolicyMonitor(app2);
|
|
5601
5551
|
for (const stop of locals.subSessionStoppers ?? []) {
|
|
5602
5552
|
stopSafely("sub-session launcher", stop);
|
|
@@ -5664,7 +5614,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5664
5614
|
loadCoreRuntime(),
|
|
5665
5615
|
loadSettingsRuntimeModules(),
|
|
5666
5616
|
cliVersionPromise,
|
|
5667
|
-
import("./daemon-trust-policy-
|
|
5617
|
+
import("./daemon-trust-policy-DOR3YG62.js")
|
|
5668
5618
|
]);
|
|
5669
5619
|
cliVersion = resolvedCliVersion;
|
|
5670
5620
|
settingsRuntime.environment.preResolveHomeEnvOverrides();
|
|
@@ -6040,18 +5990,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6040
5990
|
resolveSkillSettings,
|
|
6041
5991
|
skillSettingStrings,
|
|
6042
5992
|
updateWorkspaceSkillSettingLists
|
|
6043
|
-
} = await import("./skill-settings-
|
|
5993
|
+
} = await import("./skill-settings-ZL4JY5UE.js");
|
|
6044
5994
|
const fresh = loadSettingsForPersistence(workspace);
|
|
6045
5995
|
const normalizedName = skillName.trim().toLowerCase();
|
|
6046
5996
|
const resolved = resolveSkillSettings(fresh);
|
|
6047
|
-
const disablement = resolved.disablements.get(normalizedName);
|
|
6048
|
-
if (disablement?.reason === "hard" && disablement.lockedScope) {
|
|
6049
|
-
throw new runtime.WorkspaceSkillNotToggleableError(
|
|
6050
|
-
skillName,
|
|
6051
|
-
"locked",
|
|
6052
|
-
disablement.lockedScope
|
|
6053
|
-
);
|
|
6054
|
-
}
|
|
6055
5997
|
const workspaceDisabled = skillSettingStrings(
|
|
6056
5998
|
fresh,
|
|
6057
5999
|
WORKSPACE_SETTING_SCOPE,
|
|
@@ -6105,7 +6047,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6105
6047
|
resolveSkillSettings,
|
|
6106
6048
|
skillSettingStrings,
|
|
6107
6049
|
updateWorkspaceSkillSettingLists
|
|
6108
|
-
} = await import("./skill-settings-
|
|
6050
|
+
} = await import("./skill-settings-ZL4JY5UE.js");
|
|
6109
6051
|
const fresh = loadSettingsForPersistence(workspace);
|
|
6110
6052
|
const resolved = resolveSkillSettings(fresh);
|
|
6111
6053
|
const initialDisabled = skillSettingStrings(
|
|
@@ -6122,18 +6064,6 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6122
6064
|
const outcomes = [];
|
|
6123
6065
|
for (const skillName of skillNames) {
|
|
6124
6066
|
const normalizedName = skillName.trim().toLowerCase();
|
|
6125
|
-
const disablement = resolved.disablements.get(normalizedName);
|
|
6126
|
-
if (disablement?.reason === "hard" && disablement.lockedScope) {
|
|
6127
|
-
outcomes.push({
|
|
6128
|
-
skillName,
|
|
6129
|
-
error: new runtime.WorkspaceSkillNotToggleableError(
|
|
6130
|
-
skillName,
|
|
6131
|
-
"locked",
|
|
6132
|
-
disablement.lockedScope
|
|
6133
|
-
)
|
|
6134
|
-
});
|
|
6135
|
-
continue;
|
|
6136
|
-
}
|
|
6137
6067
|
const updated = updateWorkspaceSkillSettingLists(
|
|
6138
6068
|
next,
|
|
6139
6069
|
skillName,
|
|
@@ -6210,7 +6140,43 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6210
6140
|
);
|
|
6211
6141
|
}
|
|
6212
6142
|
}), "persistSettingsFn");
|
|
6213
|
-
const { createSubSessionLauncher } = await
|
|
6143
|
+
const [{ createSubSessionLauncher }, scheduledTaskRoutes] = await Promise.all([
|
|
6144
|
+
import("./create-sub-session-4QNE64MR.js"),
|
|
6145
|
+
import("./scheduled-tasks-MN2ZZ5P6.js")
|
|
6146
|
+
]);
|
|
6147
|
+
const createCurrentSessionScheduledTaskHandler = /* @__PURE__ */ __name((workspaceCwd, runtimeBaseDir, getBridge, assertGenerationOpen) => async ({
|
|
6148
|
+
callerSessionId,
|
|
6149
|
+
cron,
|
|
6150
|
+
prompt,
|
|
6151
|
+
recurring,
|
|
6152
|
+
assertCallerPromptActive
|
|
6153
|
+
}) => {
|
|
6154
|
+
const targetBridge = getBridge();
|
|
6155
|
+
if (!targetBridge) {
|
|
6156
|
+
throw new Error(
|
|
6157
|
+
"Current-session scheduling is unavailable while the workspace runtime is starting."
|
|
6158
|
+
);
|
|
6159
|
+
}
|
|
6160
|
+
const task = await scheduledTaskRoutes.createScheduledTaskWithExistingSession(
|
|
6161
|
+
{
|
|
6162
|
+
workspaceCwd,
|
|
6163
|
+
runtimeBaseDir,
|
|
6164
|
+
bridge: targetBridge,
|
|
6165
|
+
assertGenerationOpen,
|
|
6166
|
+
resolveLiveSessionOwner: /* @__PURE__ */ __name((sessionId) => workspaceRegistryForPersistence.current === void 0 ? { kind: "unavailable" } : workspaceRegistryForPersistence.current.resolveLiveSessionOwner(
|
|
6167
|
+
sessionId
|
|
6168
|
+
), "resolveLiveSessionOwner")
|
|
6169
|
+
},
|
|
6170
|
+
{
|
|
6171
|
+
sessionId: callerSessionId,
|
|
6172
|
+
cron,
|
|
6173
|
+
prompt,
|
|
6174
|
+
recurring
|
|
6175
|
+
},
|
|
6176
|
+
{ source: "cron-tool", assertCallerPromptActive }
|
|
6177
|
+
);
|
|
6178
|
+
return { id: task.id, cron: task.cron };
|
|
6179
|
+
}, "createCurrentSessionScheduledTaskHandler");
|
|
6214
6180
|
const subSessionLauncher = createSubSessionLauncher({
|
|
6215
6181
|
getBridge: /* @__PURE__ */ __name(() => bridgeRef, "getBridge"),
|
|
6216
6182
|
boundWorkspace,
|
|
@@ -6227,6 +6193,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6227
6193
|
// connection that hosts a named client MCP server (#5626).
|
|
6228
6194
|
clientMcpSender: clientMcpSenderRegistry.lookup,
|
|
6229
6195
|
onCreateSubSession: subSessionLauncher.launch,
|
|
6196
|
+
onCreateCurrentSessionScheduledTask: createCurrentSessionScheduledTaskHandler(
|
|
6197
|
+
boundWorkspace,
|
|
6198
|
+
primarySessionRuntimeBaseDir,
|
|
6199
|
+
() => bridgeRef,
|
|
6200
|
+
() => primaryGenerationGuard.assertOpen()
|
|
6201
|
+
),
|
|
6230
6202
|
onChannelDelivery: createBoundChannelDeliveryHandler(
|
|
6231
6203
|
boundWorkspace,
|
|
6232
6204
|
() => channelWorkerManager,
|
|
@@ -6572,6 +6544,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6572
6544
|
),
|
|
6573
6545
|
clientMcpSender: secondaryClientMcpSenderRegistry.lookup,
|
|
6574
6546
|
onCreateSubSession: secondarySubSessionLauncher.launch,
|
|
6547
|
+
onCreateCurrentSessionScheduledTask: createCurrentSessionScheduledTaskHandler(
|
|
6548
|
+
workspaceInput.cwd,
|
|
6549
|
+
secondaryEnv.sessionRuntimeBaseDir,
|
|
6550
|
+
() => secondaryBridgeRef,
|
|
6551
|
+
() => secondaryGenerationGuard.assertOpen()
|
|
6552
|
+
),
|
|
6575
6553
|
onChannelDelivery: createBoundChannelDeliveryHandler(
|
|
6576
6554
|
workspaceInput.cwd,
|
|
6577
6555
|
() => channelWorkerManager,
|
|
@@ -6860,6 +6838,22 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6860
6838
|
metricsLoopDelay.disable();
|
|
6861
6839
|
}
|
|
6862
6840
|
};
|
|
6841
|
+
sessionPrRefreshTimer?.dispose();
|
|
6842
|
+
const refreshGeneration = ++sessionPrRefreshGeneration;
|
|
6843
|
+
void import("./session-pr-refresh-I3UBWMVP.js").then((mod) => {
|
|
6844
|
+
if (refreshGeneration !== sessionPrRefreshGeneration) return;
|
|
6845
|
+
sessionPrRefreshTimer = mod.startSessionPrRefreshTimer({
|
|
6846
|
+
workspaceRegistry,
|
|
6847
|
+
// The coordinator lives on the serve app (createServeApp below),
|
|
6848
|
+
// which is built after this timer starts; read it per tick like
|
|
6849
|
+
// the metrics sampler reads `acpHandle`.
|
|
6850
|
+
getArchiveCoordinator: /* @__PURE__ */ __name(() => app2.locals.sessionArchiveCoordinator, "getArchiveCoordinator")
|
|
6851
|
+
});
|
|
6852
|
+
}).catch((error) => {
|
|
6853
|
+
daemonLog.warn(
|
|
6854
|
+
`session-pr-refresh load failed: ${error instanceof Error ? error.message : String(error)}`
|
|
6855
|
+
);
|
|
6856
|
+
});
|
|
6863
6857
|
const createDynamicWorkspaceRuntime = /* @__PURE__ */ __name(async (cwd, buildOptions) => {
|
|
6864
6858
|
const provenance = buildOptions?.provenance ?? "existing";
|
|
6865
6859
|
if (provenance === "managed-scratch" && (!managedScratchRoot || !isManagedScratchChild(cwd, managedScratchRoot.canonicalRoot))) {
|
|
@@ -6931,6 +6925,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6931
6925
|
boundWorkspace: cwd,
|
|
6932
6926
|
...provenance === "live-conversation" ? {
|
|
6933
6927
|
notifySentCompletion: true,
|
|
6928
|
+
getStandaloneSessionService: /* @__PURE__ */ __name(() => (runtimeApp ?? runtimeAppForCleanup)?.locals?.["standaloneSessionService"], "getStandaloneSessionService"),
|
|
6934
6929
|
isolatedWorkspace: {
|
|
6935
6930
|
materializeDirectory: /* @__PURE__ */ __name((sessionId) => liveConversationWorkspace.materializeConversationDirectory(
|
|
6936
6931
|
sessionId
|
|
@@ -6953,6 +6948,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6953
6948
|
),
|
|
6954
6949
|
clientMcpSender: wsClientMcpRegistry.lookup,
|
|
6955
6950
|
onCreateSubSession: wsSubSessionLauncher.launch,
|
|
6951
|
+
onCreateCurrentSessionScheduledTask: createCurrentSessionScheduledTaskHandler(
|
|
6952
|
+
cwd,
|
|
6953
|
+
wsEnv.sessionRuntimeBaseDir,
|
|
6954
|
+
() => wsBridgeRef,
|
|
6955
|
+
() => generationGuard.assertOpen()
|
|
6956
|
+
),
|
|
6956
6957
|
onChannelDelivery: createBoundChannelDeliveryHandler(
|
|
6957
6958
|
cwd,
|
|
6958
6959
|
() => channelWorkerManager,
|
|
@@ -7350,6 +7351,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7350
7351
|
const app3 = serveAppForRuntimeLifecycle.current ?? runtimeApp ?? runtimeAppForCleanup;
|
|
7351
7352
|
const stopWorkspaceGitStateForWorkspace = app3?.locals?.["stopWorkspaceGitStateForWorkspace"];
|
|
7352
7353
|
const stopScheduledTaskKeepaliveForWorkspace = app3?.locals?.["stopScheduledTaskKeepaliveForWorkspace"];
|
|
7354
|
+
const releaseWebTerminalsForWorkspace = app3?.locals?.["releaseWebTerminalsForWorkspace"];
|
|
7353
7355
|
try {
|
|
7354
7356
|
stopWorkspaceGitStateForWorkspace?.(runtimeToDrain.workspaceCwd);
|
|
7355
7357
|
} catch (err) {
|
|
@@ -7368,6 +7370,14 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7368
7370
|
err instanceof Error ? err : null
|
|
7369
7371
|
);
|
|
7370
7372
|
}
|
|
7373
|
+
try {
|
|
7374
|
+
releaseWebTerminalsForWorkspace?.(runtimeToDrain.workspaceCwd);
|
|
7375
|
+
} catch (err) {
|
|
7376
|
+
daemonLog.error(
|
|
7377
|
+
"workspace web-terminal cleanup error",
|
|
7378
|
+
err instanceof Error ? err : null
|
|
7379
|
+
);
|
|
7380
|
+
}
|
|
7371
7381
|
}
|
|
7372
7382
|
let bridgeStopped = false;
|
|
7373
7383
|
try {
|
|
@@ -7439,8 +7449,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7439
7449
|
{ createChannelManagementService },
|
|
7440
7450
|
{ WorkspaceChannelSettingsStore }
|
|
7441
7451
|
] = await Promise.all([
|
|
7442
|
-
import("./channel-management-service-
|
|
7443
|
-
import("./channel-settings-store-
|
|
7452
|
+
import("./channel-management-service-HQ6KDS7C.js"),
|
|
7453
|
+
import("./channel-settings-store-PEOI7XCG.js")
|
|
7444
7454
|
]);
|
|
7445
7455
|
return createChannelManagementService({
|
|
7446
7456
|
workspaceCwd: targetRuntime.workspaceCwd,
|
|
@@ -7520,6 +7530,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7520
7530
|
// (keepalive) and reloads them on boot (rehydration). Off by default so
|
|
7521
7531
|
// direct createServeApp embeds/tests don't spawn sessions.
|
|
7522
7532
|
manageScheduledTaskSessions: true,
|
|
7533
|
+
currentSessionSchedulingAvailable: deps.bridge === void 0,
|
|
7523
7534
|
fsFactory: routeFsFactory,
|
|
7524
7535
|
primaryWorkspaceTrusted: trustedWorkspace,
|
|
7525
7536
|
primaryRuntimeEnv,
|
|
@@ -7644,8 +7655,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7644
7655
|
{ createWorkspaceTrustReconciler },
|
|
7645
7656
|
{ createDaemonTrustPolicyMonitor }
|
|
7646
7657
|
] = await Promise.all([
|
|
7647
|
-
import("./workspace-trust-reconciler-
|
|
7648
|
-
import("./daemon-trust-policy-monitor-
|
|
7658
|
+
import("./workspace-trust-reconciler-PLIDLJZX.js"),
|
|
7659
|
+
import("./daemon-trust-policy-monitor-KGGROSIV.js")
|
|
7649
7660
|
]);
|
|
7650
7661
|
const materializationFor = /* @__PURE__ */ __name((entry, snapshot, decision) => {
|
|
7651
7662
|
const boundWorkspaces2 = entry.primary && decision.targetTrusted ? runtime.resolveBoundWorkspacesFromIdeEnv(
|
|
@@ -7740,7 +7751,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7740
7751
|
handle?.disposeWorkspace(runtimeToDispose.workspaceId);
|
|
7741
7752
|
const deadline = Date.now() + 1e3;
|
|
7742
7753
|
while ((handle?.getWorkspaceActivity(runtimeToDispose.workspaceId).memoryTasks ?? 0) > 0 && Date.now() < deadline) {
|
|
7743
|
-
await new Promise((
|
|
7754
|
+
await new Promise((resolve3) => setTimeout(resolve3, 25));
|
|
7744
7755
|
}
|
|
7745
7756
|
if ((handle?.getWorkspaceActivity(runtimeToDispose.workspaceId).memoryTasks ?? 0) > 0) {
|
|
7746
7757
|
throw new Error(
|
|
@@ -7817,6 +7828,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7817
7828
|
qwenCodeVersion: cliVersion,
|
|
7818
7829
|
sessionShellCommandEnabled,
|
|
7819
7830
|
sessionArtifactsPersistenceAvailable,
|
|
7831
|
+
currentSessionSchedulingAvailable: false,
|
|
7820
7832
|
permissionPolicy,
|
|
7821
7833
|
multiWorkspaceCapabilitiesRequireRuntime: workspaceInputs.length > 1,
|
|
7822
7834
|
getRuntimeError: /* @__PURE__ */ __name(() => runtimeStartupError, "getRuntimeError"),
|
|
@@ -7840,7 +7852,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7840
7852
|
// through (and start the runtime) exactly like the warm app would.
|
|
7841
7853
|
// Dynamic import keeps web-shell-static out of the serve fast-path
|
|
7842
7854
|
// static closure (see the import-boundary guards in fast-path.test.ts).
|
|
7843
|
-
isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-
|
|
7855
|
+
isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-HNB4FDOE.js").then(
|
|
7844
7856
|
(webShellStatic) => webShellStatic.isPreAuthWebShellRequest(req)
|
|
7845
7857
|
) : void 0
|
|
7846
7858
|
});
|
|
@@ -7860,7 +7872,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7860
7872
|
);
|
|
7861
7873
|
}
|
|
7862
7874
|
const channelValidationSettingsRuntime = opts.channelSelection ? await loadSettingsRuntimeModules() : void 0;
|
|
7863
|
-
const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-
|
|
7875
|
+
const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-DOR3YG62.js") : void 0;
|
|
7864
7876
|
const channelValidationTrustSnapshot = channelValidationTrustPolicy ? await channelValidationTrustPolicy.readDaemonTrustPolicySnapshot() : void 0;
|
|
7865
7877
|
const resolveChannelWorkspaceGroupsAtListen = /* @__PURE__ */ __name(() => {
|
|
7866
7878
|
if (!opts.channelSelection || !channelValidationSettingsRuntime || !channelRuntime) {
|
|
@@ -7966,7 +7978,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7966
7978
|
if (opts.channelSelection) {
|
|
7967
7979
|
reserveChannelServicePidfile(opts.channelSelection);
|
|
7968
7980
|
}
|
|
7969
|
-
return await new Promise((
|
|
7981
|
+
return await new Promise((resolve3, reject) => {
|
|
7970
7982
|
let closeHost;
|
|
7971
7983
|
const onListening = /* @__PURE__ */ __name((error) => {
|
|
7972
7984
|
if (error) return;
|
|
@@ -8748,6 +8760,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
8748
8760
|
if (!preserveSignalHandlers) {
|
|
8749
8761
|
process.removeListener("SIGINT", onSignal);
|
|
8750
8762
|
process.removeListener("SIGTERM", onSignal);
|
|
8763
|
+
process.removeListener("SIGHUP", onSignal);
|
|
8751
8764
|
}
|
|
8752
8765
|
process.removeListener(
|
|
8753
8766
|
"uncaughtExceptionMonitor",
|
|
@@ -8967,6 +8980,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
8967
8980
|
}
|
|
8968
8981
|
process.on("SIGINT", onSignal);
|
|
8969
8982
|
process.on("SIGTERM", onSignal);
|
|
8983
|
+
process.on("SIGHUP", onSignal);
|
|
8970
8984
|
process.on("uncaughtExceptionMonitor", onUncaughtExceptionMonitor);
|
|
8971
8985
|
server.on("error", (err) => {
|
|
8972
8986
|
daemonLog.error("server error", err instanceof Error ? err : null);
|
|
@@ -8997,7 +9011,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
8997
9011
|
loggerPublished = true;
|
|
8998
9012
|
loggerLifecycle.published();
|
|
8999
9013
|
void (liveDiscoveryPublish ?? Promise.resolve()).then(
|
|
9000
|
-
() =>
|
|
9014
|
+
() => resolve3(handle)
|
|
9001
9015
|
);
|
|
9002
9016
|
} else {
|
|
9003
9017
|
void runtimeReady.then(
|
|
@@ -9005,7 +9019,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
9005
9019
|
await liveDiscoveryPublish;
|
|
9006
9020
|
loggerPublished = true;
|
|
9007
9021
|
loggerLifecycle.published();
|
|
9008
|
-
|
|
9022
|
+
resolve3(handle);
|
|
9009
9023
|
},
|
|
9010
9024
|
(err) => {
|
|
9011
9025
|
void handle.close().then(
|
|
@@ -9054,10 +9068,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
9054
9068
|
drainHost: /* @__PURE__ */ __name(() => {
|
|
9055
9069
|
if (closeHost) return closeHost();
|
|
9056
9070
|
if (!server.listening) return Promise.resolve();
|
|
9057
|
-
return new Promise((
|
|
9071
|
+
return new Promise((resolve4, rejectClose) => {
|
|
9058
9072
|
server.close((error) => {
|
|
9059
9073
|
if (error) rejectClose(error);
|
|
9060
|
-
else
|
|
9074
|
+
else resolve4();
|
|
9061
9075
|
});
|
|
9062
9076
|
});
|
|
9063
9077
|
}, "drainHost")
|