@qwen-code/qwen-code 0.22.1 → 0.22.2-nightly.20260828.7357136dd1
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/goal-draft/SKILL.md +109 -0
- package/bundled/qc-helper/docs/configuration/settings.md +13 -13
- package/bundled/qc-helper/docs/features/_meta.ts +1 -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/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/review/SKILL.md +70 -22
- package/bundled/review/references/persistence.md +7 -3
- package/bundled/review/references/posting.md +2 -0
- package/chunks/MaxSizedBox-LMWXCLDV.js +110 -0
- package/chunks/{StandaloneSessionPicker-XF2TVJFK.js → StandaloneSessionPicker-W3F7U3JL.js} +79 -81
- package/chunks/{acpAgent-GY53MJIW.js → acpAgent-EYZ6EEHD.js} +1132 -339
- package/chunks/{agent-7U6CC5KF.js → agent-RBLGBY65.js} +44 -46
- package/chunks/agent-headless-L5T4Y4OZ.js +85 -0
- package/chunks/{anthropicContentGenerator-U76GTVB6.js → anthropicContentGenerator-GMHML35Q.js} +10 -11
- 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-5LR2F2ND.js +119 -0
- package/chunks/{channel-management-service-HXXS3HOZ.js → channel-management-service-KHR3N6CH.js} +6 -6
- package/chunks/channel-settings-store-4FOAZW72.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-LJP2BBMK.js → chunk-2SXSLSQE.js} +4 -4
- package/chunks/chunk-2TNL5KPM.js +49 -0
- package/chunks/chunk-335CJSNF.js +2320 -0
- package/chunks/chunk-36LGBEM6.js +130 -0
- package/chunks/{chunk-ZWKGZB2K.js → chunk-3JXM2CVW.js} +3 -3
- package/chunks/{chunk-ICWGPK23.js → chunk-3K6TUZHS.js} +7 -7
- package/chunks/{chunk-43C2II2G.js → chunk-3OOXT6CR.js} +5 -5
- package/chunks/{chunk-ILPXSKGQ.js → chunk-3WK3QDNV.js} +2 -2
- package/chunks/{chunk-2YDYDDE2.js → chunk-3XOKEVII.js} +3 -3
- package/chunks/chunk-3Y34Q3JV.js +1584 -0
- package/chunks/{chunk-ZLTEQYNC.js → chunk-42IDLQWS.js} +26 -20
- package/chunks/{chunk-5MK32KJV.js → chunk-454XFGH4.js} +3 -3
- package/chunks/chunk-4CMJKUND.js +95 -0
- package/chunks/{chunk-77TOMRBG.js → chunk-4K7KNVWH.js} +3 -3
- package/chunks/{chunk-V3GINY6K.js → chunk-4QHPPXK2.js} +16 -8
- package/chunks/{chunk-UCSV2IZW.js → chunk-62GQFYID.js} +3 -3
- package/chunks/{chunk-SLEWBQWM.js → chunk-6DIGWMGT.js} +2 -2
- package/chunks/{chunk-I6YW3T3W.js → chunk-6JCGO55P.js} +723 -3399
- package/chunks/{chunk-PVBT5QPD.js → chunk-6PJOTWAN.js} +1 -1
- package/chunks/{chunk-5Y2JCJAH.js → chunk-6W2IK5KC.js} +956 -17
- package/chunks/{chunk-A7X32SCT.js → chunk-6ZZBRRKQ.js} +5 -5
- package/chunks/{chunk-ELY4QVIB.js → chunk-7EQQR46F.js} +1 -1
- package/chunks/{chunk-4DCP3362.js → chunk-7GWQW5ID.js} +4 -4
- package/chunks/chunk-7J6OTNGO.js +424 -0
- package/chunks/{chunk-CITGRGCM.js → chunk-7TUBJBBJ.js} +4 -1
- package/chunks/{chunk-L436XFLJ.js → chunk-7VD6IPQM.js} +1 -1
- package/chunks/{chunk-E4I5MVBR.js → chunk-ABS25QER.js} +1 -1
- package/chunks/{chunk-2ZV3CZKI.js → chunk-AJGR6E6Z.js} +49 -32
- package/chunks/{chunk-HJOWQUE2.js → chunk-AU3MMVJF.js} +31 -14
- package/chunks/{chunk-I32QCIK7.js → chunk-AXC26UCQ.js} +1 -1
- package/chunks/{chunk-7AS7QX72.js → chunk-AY3BNYEQ.js} +1 -1
- package/chunks/{chunk-FVDQ5E67.js → chunk-B466ZSHZ.js} +3 -3
- package/chunks/{chunk-OI2DR6QB.js → chunk-B5OUL5EL.js} +2 -2
- package/chunks/{chunk-6US7BF3G.js → chunk-B5PHIJGI.js} +183 -5
- package/chunks/{chunk-5T4LWWNX.js → chunk-B7CDU2SL.js} +2 -2
- package/chunks/{chunk-4TPAG3O7.js → chunk-BFPESSTR.js} +1 -1
- package/chunks/{chunk-WBT3STGU.js → chunk-BKWNKLZB.js} +20 -20
- package/chunks/{chunk-73WFGVIZ.js → chunk-BOWFGCEU.js} +3 -3
- package/chunks/{chunk-EMGAVCBZ.js → chunk-BPAKYXQ3.js} +2 -2
- 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-T2HMXHYA.js → chunk-C3KURPP7.js} +6 -6
- package/chunks/{chunk-JUIJ3FXC.js → chunk-CAJTKR6W.js} +5 -5
- package/chunks/{chunk-2FN2HNTI.js → chunk-CFJY4DGX.js} +2 -2
- package/chunks/{chunk-DP7LABIB.js → chunk-CMHFCLBU.js} +1 -1
- package/chunks/{chunk-LRKMQPMD.js → chunk-CQH5KTKC.js} +1 -1
- package/chunks/{chunk-J7MLXFC5.js → chunk-CRKKHXTI.js} +185 -174
- package/chunks/{chunk-XNXWEGKB.js → chunk-CYAUBK46.js} +3 -3
- package/chunks/{chunk-JECO75XD.js → chunk-D5LUXLUH.js} +2 -2
- package/chunks/{chunk-SRGENTPF.js → chunk-DFDWJE6Z.js} +48 -31
- package/chunks/chunk-DJBQCO2E.js +842 -0
- package/chunks/{chunk-2CRNTW2B.js → chunk-DP4MWIM3.js} +2 -2
- package/chunks/{chunk-EB4VDXNI.js → chunk-DYXFD5RO.js} +182 -3
- package/chunks/{chunk-ODXCSIH5.js → chunk-E3XVSVKK.js} +26 -4
- package/chunks/{chunk-ZKAZP2ZG.js → chunk-EB6QRGHM.js} +3 -3
- package/chunks/{chunk-GNRVKN76.js → chunk-EKNBU2X7.js} +4 -4
- package/chunks/{chunk-3UZCLCXR.js → chunk-EKSCLBBF.js} +3 -3
- package/chunks/{chunk-624NHDGB.js → chunk-ERFDKH32.js} +11 -0
- package/chunks/chunk-EW5VVLJT.js +3525 -0
- package/chunks/{chunk-XYX474JQ.js → chunk-EWIQ3NAE.js} +2522 -2030
- package/chunks/{chunk-O5YGAEQS.js → chunk-FALBWZF4.js} +6 -6
- package/chunks/{chunk-GZJUCMH4.js → chunk-FEHMA4RO.js} +542 -654
- package/chunks/{chunk-2YEZNBSD.js → chunk-FMFBLTLY.js} +320 -86
- package/chunks/{chunk-MZS7GEC7.js → chunk-FTF2YIZ5.js} +1 -1
- package/chunks/{chunk-ZJG323IA.js → chunk-G6FECKTJ.js} +7 -5
- package/chunks/{chunk-6KS24S3X.js → chunk-GGNE3JAW.js} +1 -1
- package/chunks/{chunk-BQBUZDDH.js → chunk-H33EQVMG.js} +4 -4
- package/chunks/chunk-H72BQNM3.js +645 -0
- package/chunks/{chunk-5ZYZPDDF.js → chunk-HGIMWQVT.js} +30 -25
- package/chunks/{chunk-DCSAVGDJ.js → chunk-HOCJDUFY.js} +2 -2
- package/chunks/{chunk-MDZO5V2O.js → chunk-HPXV655A.js} +9 -7
- package/chunks/{chunk-7JPW6IYH.js → chunk-HVC3PNVC.js} +1 -1
- package/chunks/{chunk-2MHGD7EE.js → chunk-HYDJDQGJ.js} +1 -1
- package/chunks/{chunk-BDHLBR46.js → chunk-IB7FQJRY.js} +34 -11
- package/chunks/{chunk-E55H6BZ7.js → chunk-ICURCKIU.js} +1335 -119
- package/chunks/{chunk-PAJGKZAA.js → chunk-ISKH4QX3.js} +14 -12
- package/chunks/{chunk-3B5DCAQU.js → chunk-J6S24ZJE.js} +34 -34
- package/chunks/{chunk-AYVIGUUK.js → chunk-JB4JIVTJ.js} +1 -1
- package/chunks/{chunk-C4WBKZJT.js → chunk-JN4IWWMN.js} +4 -4
- package/chunks/{chunk-6HTMIKXZ.js → chunk-JUUBLSZU.js} +4 -4
- package/chunks/{chunk-T6OODF2U.js → chunk-JWALNCLT.js} +1 -1
- package/chunks/{chunk-SKNVVYIJ.js → chunk-K5KXUXWC.js} +3 -3
- package/chunks/{chunk-IRIX323G.js → chunk-KTJFDCX4.js} +2 -2
- package/chunks/{chunk-FK4H3V6S.js → chunk-LEFCFTEX.js} +6 -6
- package/chunks/{chunk-OQ6LTSX3.js → chunk-LEGTMYAE.js} +1 -1
- package/chunks/{chunk-NY3IJYAV.js → chunk-LLZA2IK3.js} +15 -9
- package/chunks/{chunk-5CI4AXDD.js → chunk-LNETQKBE.js} +4 -4
- package/chunks/{chunk-TOF4UZHH.js → chunk-LUEHOUHM.js} +3 -3
- package/chunks/{chunk-62PXFOK4.js → chunk-LVPZO674.js} +4 -4
- package/chunks/{chunk-EEQYTWGU.js → chunk-M4ORUPYI.js} +5 -5
- package/chunks/{chunk-GNMJNDZE.js → chunk-M6FOJXW3.js} +1 -1
- package/chunks/{chunk-MYLXL7F6.js → chunk-MAYHGRP4.js} +9 -9
- package/chunks/{chunk-K3LPAED5.js → chunk-MQM5PJML.js} +24 -4
- package/chunks/{chunk-SM7ZVKTF.js → chunk-MTJN7FOT.js} +7 -7
- package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
- package/chunks/{chunk-27ONXAFY.js → chunk-NIFYWDYN.js} +1 -1
- package/chunks/{chunk-IJVDHPKD.js → chunk-NU7RKEZR.js} +2 -2
- package/chunks/{chunk-R2ZJH3FV.js → chunk-NXMBRVMQ.js} +3 -3
- package/chunks/{chunk-JLGFGPZJ.js → chunk-OI4NY7RA.js} +2 -2
- 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-MW5AHWOZ.js → chunk-PWIGAMA4.js} +93 -14
- package/chunks/{chunk-WEGXPP5E.js → chunk-QFCDF5PL.js} +1 -1
- package/chunks/{chunk-EAV3TENS.js → chunk-QPTRRPZU.js} +44 -7
- package/chunks/{chunk-SQPOJ4ZI.js → chunk-RFI4YGMR.js} +21 -266
- package/chunks/{chunk-JVPFTDBK.js → chunk-RFIDDFAL.js} +1 -1
- package/chunks/chunk-RKFGE7JH.js +93 -0
- package/chunks/chunk-RNVFRIOO.js +275 -0
- package/chunks/{chunk-CPPYZHBN.js → chunk-RU7BK6B3.js} +1 -1
- package/chunks/{chunk-OT26ITEY.js → chunk-RVXDXY6I.js} +3 -3
- package/chunks/{chunk-W2WRNJKX.js → chunk-RWZB422L.js} +5 -5
- package/chunks/{chunk-6YAR6ZU3.js → chunk-RYNZQGXN.js} +19 -2
- package/chunks/{chunk-EKP3M4RF.js → chunk-SJ5ERAW3.js} +1 -1
- package/chunks/{chunk-DEYPMJPD.js → chunk-SMPR7SPO.js} +1 -1
- package/chunks/{chunk-3BV7TZNQ.js → chunk-SRZZY4IY.js} +3 -3
- package/chunks/{chunk-7CWEZQ6T.js → chunk-STUJ7IMZ.js} +0 -77
- package/chunks/{chunk-TKO4TLT6.js → chunk-SUX7HDNA.js} +3 -3
- package/chunks/{chunk-76WGY6LW.js → chunk-SVNO44PF.js} +3 -3
- package/chunks/{chunk-UX3IFLJM.js → chunk-SZLBBZH4.js} +150 -23
- package/chunks/{chunk-K63NK3KL.js → chunk-T2NKRHZZ.js} +13 -13
- package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
- package/chunks/{chunk-2NCVUT3C.js → chunk-TLHUNMO7.js} +4 -4
- package/chunks/{chunk-EC5BONC3.js → chunk-TPI7O7HR.js} +1 -1
- package/chunks/{chunk-ZXDM7DYV.js → chunk-TQHGJYR3.js} +2029 -616
- package/chunks/{chunk-T2CRBIDJ.js → chunk-TTX2JUE6.js} +1 -1
- package/chunks/{chunk-OX44MOAN.js → chunk-TW3E6YNO.js} +3 -3
- package/chunks/chunk-U54AYGEC.js +337 -0
- package/chunks/{chunk-2NNTE2ED.js → chunk-UHQFIS7N.js} +15 -0
- package/chunks/{chunk-KOJ6MHD5.js → chunk-UTLCH2FK.js} +1 -1
- package/chunks/{chunk-KCOXDRQL.js → chunk-UY3PBNY3.js} +17 -29
- package/chunks/{chunk-7DPKPBOQ.js → chunk-V2NDP3I4.js} +2 -2
- package/chunks/{chunk-47SIHHPL.js → chunk-V2QDDC5J.js} +19 -9
- package/chunks/{chunk-BVE5EMIG.js → chunk-V5J4J5TP.js} +2 -2
- package/chunks/{chunk-X2UOOG5V.js → chunk-VQUGEVGR.js} +1 -1
- package/chunks/{chunk-XJS54K4A.js → chunk-VTHREBQM.js} +2 -2
- package/chunks/{chunk-VMDURMFY.js → chunk-W6DUQ5GA.js} +11307 -10424
- package/chunks/{chunk-BX2BZPFJ.js → chunk-WALC5VJH.js} +4 -4
- package/chunks/{chunk-FPH6TXD3.js → chunk-WAOIHTJS.js} +1 -1
- package/chunks/{chunk-LI2HEMKO.js → chunk-WBHKK3CU.js} +4 -4
- package/chunks/{chunk-O3BUXIPM.js → chunk-WXEA74YB.js} +3 -3
- package/chunks/{chunk-NER3H7PI.js → chunk-X3ZRTCJD.js} +1 -1
- package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
- package/chunks/{chunk-VL4YX3FH.js → chunk-XF63PKEN.js} +1 -1
- package/chunks/{chunk-FN5C6C7G.js → chunk-XLLQJRAH.js} +190 -478
- package/chunks/{chunk-3FSBMAYD.js → chunk-XQFT3QUF.js} +1 -1
- package/chunks/{chunk-FJWICLG7.js → chunk-Y3QL45LS.js} +1 -1
- package/chunks/{chunk-IKN3IUJP.js → chunk-Y4TPOUEV.js} +17 -9
- package/chunks/{chunk-NVK4HJYQ.js → chunk-YRZX2PHA.js} +1 -1
- package/chunks/{chunk-2SERYG4T.js → chunk-YTDVNSUQ.js} +1 -1
- package/chunks/{chunk-KWFP3WV6.js → chunk-YWQ237GX.js} +4 -193
- package/chunks/{chunk-6E4WHQJV.js → chunk-ZTP35P4B.js} +1 -1
- package/chunks/{chunk-E6FGMDFQ.js → chunk-ZU4UDIWX.js} +19 -1
- package/chunks/config-utils-JVGAP34H.js +113 -0
- package/chunks/contextCommand-XDB7OSO7.js +106 -0
- package/chunks/{core-runtime-PKNQ63VL.js → core-runtime-XHYA2RH7.js} +59 -61
- package/chunks/{create-sub-session-RVHSWVAP.js → create-sub-session-23ITIELI.js} +3 -3
- package/chunks/{create-sub-session-PLGPY6TV.js → create-sub-session-MHYCFNCM.js} +163 -84
- 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-K5XS42ID.js} +516 -3
- package/chunks/{daemon-git-worktree-guard-LDBJXH2U.js → daemon-git-worktree-guard-V3P5XLHB.js} +56 -58
- package/chunks/daemon-status-provider-KKU7ZTLM.js +117 -0
- package/chunks/daemon-trust-policy-TZGK34DW.js +112 -0
- package/chunks/{daemon-trust-policy-monitor-IGEJPHQ4.js → daemon-trust-policy-monitor-F23DD2M4.js} +62 -64
- package/chunks/deferred-core-runtime-LKLGBCGZ.js +114 -0
- package/chunks/{display-image-DR55LL6M.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-QDLFKWOL.js} +2 -2
- package/chunks/{dist-UQUFZDIY.js → dist-SWQMYP2Q.js} +18 -16
- package/chunks/earlyInputCapture-NERYFYTR.js +107 -0
- package/chunks/{edit-KSPVUEAS.js → edit-ACCATIXB.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-DZTABSKN.js → enterPlanMode-NEN6EPVM.js} +44 -46
- package/chunks/{environment-JXOSW25V.js → environment-CKWHBC5T.js} +58 -60
- package/chunks/errors-XTZPNQ77.js +113 -0
- package/chunks/{exit-worktree-G2QATUCV.js → exit-worktree-XQD6D543.js} +7 -7
- package/chunks/exitPlanMode-CY344X5J.js +83 -0
- package/chunks/{fast-path-EBS7NAVL.js → fast-path-YSOX4PAM.js} +5 -5
- package/chunks/{gemini-JELEKOVS.js → gemini-VQY2YCPH.js} +110 -108
- package/chunks/{geminiContentGenerator-I2CKP7XI.js → geminiContentGenerator-PAPXNIGU.js} +8 -8
- package/chunks/{glob-TDVEVPQZ.js → glob-GVCUSBBF.js} +44 -46
- package/chunks/{goal-tools-CNVXMSZD.js → goal-tools-5STK6OXW.js} +10 -8
- package/chunks/{grep-3NLSS32D.js → grep-5GPICQBU.js} +6 -6
- package/chunks/handleAutoUpdate-ZJPJN42W.js +109 -0
- package/chunks/i18n-BZYKOST7.js +124 -0
- package/chunks/{image-gen-63NN2H5N.js → image-gen-J6FDGUZP.js} +8 -10
- package/chunks/initializer-GO2C5HE3.js +113 -0
- package/chunks/installationInfo-WM2GXQZ6.js +107 -0
- package/chunks/{keychain-token-storage-3MGFRYGM.js → keychain-token-storage-37XPR34V.js} +2 -2
- package/chunks/list-ERDJB7PQ.js +116 -0
- package/chunks/{list-agents-EXRSHIDJ.js → list-agents-DI3YFTDT.js} +2 -2
- package/chunks/loadedSettingsAdapter-7JOCVOKV.js +110 -0
- package/chunks/{loggingContentGenerator-CZWUAHAI.js → loggingContentGenerator-3ONLU3BS.js} +321 -30
- 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-54W23SP5.js → managed-npm-update-TLRCC2GE.js} +57 -59
- package/chunks/mcp-2LH3QXR2.js +110 -0
- package/chunks/{monitor-A4J5QRGJ.js → monitor-P7LDAL4W.js} +44 -46
- package/chunks/nonInteractiveCli-E5T7PZ27.js +184 -0
- package/chunks/{notebook-edit-4ANFZON5.js → notebook-edit-F7KSG4WQ.js} +45 -47
- package/chunks/{openaiContentGenerator-JCCJJQZC.js → openaiContentGenerator-2EXCZUGN.js} +26 -28
- package/chunks/pidfile-P25DWA5Q.js +111 -0
- package/chunks/process-registry-OAEG6WGC.js +662 -0
- package/chunks/{processUtils-JJAR56SO.js → processUtils-PVDKBL35.js} +2 -2
- package/chunks/prompt-terminal-ledger-AJ7T7OIV.js +105 -0
- package/chunks/{qwenContentGenerator-5JM44ZSA.js → qwenContentGenerator-TBBRLWIT.js} +49 -51
- package/chunks/{qwenOAuth2-JIYAWXTW.js → qwenOAuth2-OF5WRBQT.js} +7 -9
- package/chunks/{read-file-N3E5DY7N.js → read-file-6IIY4RLJ.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-XA3FJG3N.js} +5 -5
- package/chunks/{request-shutdown-AXVOFN5C.js → request-shutdown-BCLA3JV2.js} +7 -7
- package/chunks/resumeHistoryUtils-44IETXDY.js +118 -0
- package/chunks/ripGrep-E7ESZ7SS.js +39 -0
- package/chunks/{run-qwen-serve-IWGPZADI.js → run-qwen-serve-DXBCYW7V.js} +356 -331
- package/chunks/{runtime-I76HPFUE.js → runtime-RUSPD35D.js} +67 -69
- package/chunks/scheduled-tasks-DVRJZO6I.js +127 -0
- package/chunks/{scheduler-M6YL4K4I.js → scheduler-TDRB2NSY.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-A2GXDX3B.js → send-message-AJ4OCUBV.js} +25 -9
- package/chunks/serve-KITOM7OR.js +118 -0
- package/chunks/{server-TWXRRREO.js → server-THCOMUC2.js} +5476 -4771
- package/chunks/{session-IT5ZXU7A.js → session-XKR5MPXE.js} +105 -106
- package/chunks/session-pr-refresh-KRBH7KDA.js +278 -0
- package/chunks/{settings-IX5HOOCG.js → settings-YXZ4XBKK.js} +61 -63
- package/chunks/{shell-LZ55AAJB.js → shell-5FJ2DZ3W.js} +44 -46
- package/chunks/{skill-WSZ53D2R.js → skill-VMMJZ6CJ.js} +71 -26
- package/chunks/skill-settings-7SG4YA2W.js +118 -0
- package/chunks/spawnChannel-BPMIXRBI.js +112 -0
- package/chunks/standalone-update-QN5HFRIC.js +118 -0
- package/chunks/{startInteractiveUI-O6BI2OSA.js → startInteractiveUI-5A7RQFRP.js} +2902 -2289
- package/chunks/{syntheticOutput-5AJ444QT.js → syntheticOutput-ML43GEFN.js} +3 -3
- package/chunks/{task-create-CDJSOEQD.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-77VCFDDZ.js → task-update-IWEOJFV2.js} +11 -11
- package/chunks/{team-create-UF4TMQEH.js → team-create-HVGVUL2L.js} +44 -46
- package/chunks/{team-delete-YWFXX77L.js → team-delete-RZVVSGCY.js} +5 -5
- package/chunks/{team-plan-approval-U57NSR6C.js → team-plan-approval-S5A5FQWU.js} +44 -46
- package/chunks/terminal-image-renderer-SIVPPXDI.js +114 -0
- package/chunks/theme-manager-TA33UZZX.js +102 -0
- package/chunks/{todoWrite-435EO2CS.js → todoWrite-WDJNQEMW.js} +43 -25
- package/chunks/{tool-search-SV35UV72.js → tool-search-NX7IPDKP.js} +18 -18
- package/chunks/total-session-admission-PWXZBOVX.js +114 -0
- package/chunks/{trustedFolders-YKK67IP3.js → trustedFolders-V6Y4CU3F.js} +57 -59
- package/chunks/{update-relaunch-DX7LVA4P.js → update-relaunch-CGSX3R37.js} +5 -5
- package/chunks/updateCheck-T5O2WGIB.js +118 -0
- package/chunks/useAutoAcceptIndicator-ULBJJWPY.js +120 -0
- package/chunks/{validateNonInterActiveAuth-B26O4YJP.js → validateNonInterActiveAuth-E5S2JSRC.js} +101 -102
- package/chunks/{version-K5D7VJ4B.js → version-LS5JPU36.js} +1 -1
- package/chunks/{web-fetch-VFHZLLNZ.js → web-fetch-RLMFZTS3.js} +16 -18
- package/chunks/{web-search-AQE5A4J5.js → web-search-LMCIC4N5.js} +9 -11
- package/chunks/{workflow-XL6AEUZ7.js → workflow-JBXU3IGA.js} +128 -94
- package/chunks/workspace-providers-status-525ORQBH.js +114 -0
- package/chunks/{workspace-registration-store-I4U3V5LL.js → workspace-registration-store-7Y44R4LV.js} +1 -1
- package/chunks/workspace-registry-HS4RWUSQ.js +123 -0
- package/chunks/workspace-service-7PXDM6EB.js +129 -0
- package/chunks/workspace-skills-status-FMJGC2XI.js +113 -0
- package/chunks/{workspace-trust-reconciler-GJ466KCE.js → workspace-trust-reconciler-3YTWSQBY.js} +70 -70
- package/chunks/write-file-BVQRYQQO.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-NYJPC3NI.js → zoom-image-FGCELNS4.js} +13 -13
- package/cli.js +14 -14
- 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-yq7z7Anb.js → abnfDiagram-VCTEODGH-2XZDeWYO.js} +1 -1
- package/web-shell/assets/{arc-CbJO0xnT.js → arc-B6UgMh90.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-CRh89421.js → architectureDiagram-5GKGNRK7-DZgNFeN1.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-C75KAhKv.js → blockDiagram-NRAW4CY4-DQ2wvBFN.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BzlMveFB.js → c4Diagram-UCG6FXSJ-DMmQMrc4.js} +1 -1
- package/web-shell/assets/channel-D_TyfiTx.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-DA8QDX3a.js → chunk-2Q5K7J3B-C8Zh2e9y.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-Bgu7gQ7Y.js → chunk-5VM5RSS4-C3LTenP8.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-BOew7pIK.js → chunk-F27PBJKO-CxABOc8n.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-DHx1I-hO.js → chunk-G27WJ6UU-CD_JxHDC.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-SarFW0WU.js → chunk-JWPE2WC7-BdmZPmce.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-BLzP083Z.js → chunk-LCL6LL3I-80bcHmfK.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-Bmkv_iKm.js → chunk-POPQ4Y6H-CNpLZyQF.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-MPx9r1N2.js → chunk-SVP7TREG-CXlKgMv3.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-Ck-09rKG.js → chunk-XXDRQBXY-CivyYyvL.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-Bw_H3xMd.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-Bw_H3xMd.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-DWm6lfOG.js → cose-bilkent-JH36ORCC-COAjRH3w.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-DcBUyr5R.js → cynefin-OW5HDTMX-DqU1JHO6.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-Df8qmd_p.js → cynefinDiagram-5FMLGOSQ-BCLI1Bvj.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-DDmGspD7.js → dagre-3AP2YEHR-DmAz8nqF.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-BK_qFvbi.js → diagram-S7CK7UJ4-Ck-5QLT5.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-Uw3AP_bi.js → diagram-UQ7AKVKN-C0ljX0mW.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-CJOQKxY7.js → diagram-VSXAHHWV-DPgvT24v.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-DhdvZna5.js → diagram-VX7I27RA-D7hWr1LR.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-edQU0nlP.js → diagram-Z3DM3KII-D59tlOta.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-4kugBEsO.js → ebnfDiagram-PWID7BFC-CY2DDx00.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-BMkFivWO.js → erDiagram-SSCWMZ5O-AR4h8Q8k.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-BM1ea8g-.js → flowDiagram-A5DVABFB-DbF0HqBz.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-CXj_cKRf.js → ganttDiagram-EL5Y4UJY-J52mrIhc.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-D0nEqwqu.js → gitGraphDiagram-WWUBYQGX-CcgMY5EV.js} +1 -1
- package/web-shell/assets/index-BjUg3vPr.css +5 -0
- package/web-shell/assets/index-CFwYYVFU.js +1873 -0
- package/web-shell/assets/{index-B6JN54Pd.js → index-MQs7l15A.js} +1 -1
- package/web-shell/assets/{infoDiagram-RXCK75RN-DF7aGGbQ.js → infoDiagram-RXCK75RN-Buu3ibp2.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-CZYNX1lL.js → ishikawaDiagram-5VMMS53U-CoKQxnF3.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-CvrqMUz1.js → journeyDiagram-EYS64GPL-CxK35mTC.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-BZNJQZBj.js → kanban-definition-3QL26DDD-tk2CHTQ1.js} +1 -1
- package/web-shell/assets/{layout-Bf83x7D6.js → layout-DEpMwb4u.js} +1 -1
- package/web-shell/assets/{linear-Bkc3ES2f.js → linear-DSQsLh53.js} +1 -1
- package/web-shell/assets/{mermaid.core-C6xuovwz.js → mermaid.core-DIZuPBQT.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-DzH6gVRg.js → mindmap-definition-FBJOCRG2-CCAvk8r_.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-DCvLh2fa.js → pegDiagram-XKGWAZYB-CpJ28jxz.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-BtjVlx_6.js → pieDiagram-E7YTZNPT-ziJR2R32.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-IbroqxFe.js → quadrantDiagram-AXDQQJYC-B60zE3Mh.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-BvMykiWW.js → railroadDiagram-O6MQD6OU-M3GqQ_g1.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-D-HHMyrh.js → requirementDiagram-EFPCY7ZU-ntCtYqTk.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C0XXhB6d.js → sankeyDiagram-P5KCCOFB-AYLoItcZ.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DseAXj5d.js → sequenceDiagram-WJ2MYXX4-DEWk4Mlj.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-Cek2EweK.js → sizeCapture-X5ZJPWSS-OOWvzPay.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-yLv8wafW.js → stateDiagram-HBIQ2CUA-BcMmvxem.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DRLLqPWO.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-Cwz-opvE.js → swimlanes-XN3QIQJK-DuZTWWvh.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DOfLQQYt.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-BJuFD7OG.js → timeline-definition-24CTP7MA-CjqtZXEd.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-CNAavdoV.js → vennDiagram-4TSXK5OY-knVCVkQ4.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-DaIjAidq.js → wardleyDiagram-VM6X3IG4-yoWhw0a2.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DkcQXjTy.js → xychartDiagram-S5SC5T6Z-ue14E_gL.js} +1 -1
- package/web-shell/index.html +3 -3
- package/chunks/MaxSizedBox-UUTUE42J.js +0 -112
- package/chunks/agent-headless-32O4L2CT.js +0 -87
- package/chunks/bridge-DFX2FFH4.js +0 -119
- package/chunks/channel-settings-store-ELLH2M4M.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-7M6PCTLT.js +0 -113
- package/chunks/contextCommand-G4QG3TW6.js +0 -108
- package/chunks/daemon-status-provider-F5FEHVVG.js +0 -118
- package/chunks/daemon-trust-policy-C6YTU5CQ.js +0 -114
- package/chunks/deferred-core-runtime-GHT3GDOR.js +0 -116
- package/chunks/earlyInputCapture-HOSJTLWP.js +0 -109
- package/chunks/errors-IOXFDE4J.js +0 -115
- package/chunks/exitPlanMode-PZG4FXRB.js +0 -85
- package/chunks/handleAutoUpdate-AWAGHKOX.js +0 -111
- package/chunks/i18n-CYA25C5F.js +0 -126
- package/chunks/initializer-JD2FLNLO.js +0 -115
- package/chunks/installationInfo-N3DCWVWR.js +0 -109
- package/chunks/list-XDQAUET5.js +0 -118
- package/chunks/loadedSettingsAdapter-IK7H5JRK.js +0 -112
- package/chunks/mcp-2E7ZLMEE.js +0 -112
- package/chunks/nonInteractiveCli-ZNDXB62Y.js +0 -185
- package/chunks/pidfile-DHV2Y7UD.js +0 -113
- package/chunks/process-registry-PMJOA5CO.js +0 -172
- package/chunks/prompt-terminal-ledger-LDZ6QVYA.js +0 -107
- package/chunks/resumeHistoryUtils-YQRITQAG.js +0 -120
- package/chunks/ripGrep-NEIHKBKB.js +0 -39
- package/chunks/serve-XY5S63GN.js +0 -120
- package/chunks/skill-settings-5U7FTJIK.js +0 -120
- package/chunks/spawnChannel-TMC6VXGN.js +0 -113
- package/chunks/standalone-update-CUYGWTR4.js +0 -120
- package/chunks/terminal-image-renderer-DRL3BROJ.js +0 -116
- package/chunks/theme-manager-HHJPUDRN.js +0 -104
- package/chunks/total-session-admission-TQI7TCTL.js +0 -114
- package/chunks/updateCheck-6JRTKTUF.js +0 -120
- package/chunks/useAutoAcceptIndicator-MYXYSKSL.js +0 -122
- package/chunks/workspace-providers-status-H6TG34YV.js +0 -116
- package/chunks/workspace-registry-2PWNIYNI.js +0 -123
- package/chunks/workspace-service-4FGTUJLA.js +0 -131
- package/chunks/workspace-skills-status-7VOLUDT6.js +0 -115
- package/chunks/write-file-PWOYCT2K.js +0 -90
- package/web-shell/assets/channel-B3sGR79J.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-sTGo0K3v.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-sTGo0K3v.js +0 -1
- package/web-shell/assets/index-C-XlQn24.css +0 -5
- package/web-shell/assets/index-DLjXM0dn.js +0 -1860
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DeThXnol.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-GW0R1ZSv.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-RFI4YGMR.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-RNVFRIOO.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";
|
|
@@ -90,12 +103,12 @@ import {
|
|
|
90
103
|
MAX_REGISTERED_WORKSPACES,
|
|
91
104
|
resolveWorkspaceInputs,
|
|
92
105
|
workspaceRegistrationId
|
|
93
|
-
} from "./chunk-
|
|
94
|
-
import "./chunk-
|
|
106
|
+
} from "./chunk-LEGTMYAE.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 {
|
|
@@ -150,7 +165,7 @@ import {
|
|
|
150
165
|
} from "./chunk-5PA6UEYA.js";
|
|
151
166
|
import {
|
|
152
167
|
getCliVersion
|
|
153
|
-
} from "./chunk-
|
|
168
|
+
} from "./chunk-GGNE3JAW.js";
|
|
154
169
|
import "./chunk-W3N5XAZ6.js";
|
|
155
170
|
import "./chunk-NPQ5ZKRP.js";
|
|
156
171
|
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-P25DWA5Q.js"),
|
|
3743
|
+
import("./runtime-RUSPD35D.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-XHYA2RH7.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-YXZ4XBKK.js"),
|
|
3889
|
+
import("./environment-CKWHBC5T.js"),
|
|
3890
|
+
import("./loadedSettingsAdapter-7JOCVOKV.js"),
|
|
3891
|
+
import("./trustedFolders-V6Y4CU3F.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-RUSPD35D.js"),
|
|
3905
|
+
import("./config-utils-JVGAP34H.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-
|
|
3931
|
+
import("./server-THCOMUC2.js"),
|
|
3932
|
+
import("./bridge-5LR2F2ND.js"),
|
|
3933
|
+
import("./spawnChannel-BPMIXRBI.js"),
|
|
3934
|
+
import("./process-registry-OAEG6WGC.js"),
|
|
3935
|
+
import("./workspace-service-7PXDM6EB.js"),
|
|
3997
3936
|
import("./types-WYCFCEHR.js"),
|
|
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-
|
|
3937
|
+
import("./daemon-status-provider-KKU7ZTLM.js"),
|
|
3938
|
+
import("./workspace-providers-status-525ORQBH.js"),
|
|
3939
|
+
import("./workspace-skills-status-FMJGC2XI.js"),
|
|
3940
|
+
import("./total-session-admission-PWXZBOVX.js"),
|
|
3941
|
+
import("./workspace-registry-HS4RWUSQ.js"),
|
|
3942
|
+
import("./prompt-terminal-ledger-AJ7T7OIV.js")
|
|
4004
3943
|
]);
|
|
4005
3944
|
return {
|
|
4006
3945
|
createServeApp: serverModule.createServeApp,
|
|
@@ -4045,7 +3984,7 @@ function sessionIdleTimeoutMs(value) {
|
|
|
4045
3984
|
return value !== void 0 ? channelIdleTimeoutMs(value) : DEFAULT_SESSION_IDLE_TIMEOUT_MS;
|
|
4046
3985
|
}
|
|
4047
3986
|
__name(sessionIdleTimeoutMs, "sessionIdleTimeoutMs");
|
|
4048
|
-
function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled, sessionArtifactsPersistenceAvailable, env) {
|
|
3987
|
+
function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled, sessionArtifactsPersistenceAvailable, currentSessionSchedulingAvailable, env) {
|
|
4049
3988
|
return getAdvertisedServeFeatures(void 0, {
|
|
4050
3989
|
requireAuth: opts.requireAuth === true,
|
|
4051
3990
|
mcpPoolActive: opts.mcpPoolActive !== false,
|
|
@@ -4057,6 +3996,7 @@ function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled, s
|
|
|
4057
3996
|
sessionShellCommandEnabled,
|
|
4058
3997
|
sessionArtifactsPersistenceAvailable,
|
|
4059
3998
|
sessionGenerationAvailable: true,
|
|
3999
|
+
currentSessionSchedulingAvailable,
|
|
4060
4000
|
workspaceGenerationAvailable: true,
|
|
4061
4001
|
rateLimit: opts.rateLimit === true,
|
|
4062
4002
|
reloadAvailable: true,
|
|
@@ -4083,6 +4023,7 @@ function createBootstrapCapabilities(input) {
|
|
|
4083
4023
|
input.opts,
|
|
4084
4024
|
input.sessionShellCommandEnabled,
|
|
4085
4025
|
input.sessionArtifactsPersistenceAvailable,
|
|
4026
|
+
input.currentSessionSchedulingAvailable,
|
|
4086
4027
|
input.env
|
|
4087
4028
|
),
|
|
4088
4029
|
modelServices: [],
|
|
@@ -4198,12 +4139,12 @@ async function waitForRuntimeStartingForShutdown(runtimeStarting, daemonLog, tim
|
|
|
4198
4139
|
let timer;
|
|
4199
4140
|
await Promise.race([
|
|
4200
4141
|
runtimeStarting,
|
|
4201
|
-
new Promise((
|
|
4142
|
+
new Promise((resolve3) => {
|
|
4202
4143
|
timer = setTimeout(() => {
|
|
4203
4144
|
daemonLog.warn(
|
|
4204
4145
|
`${timeoutMs}ms runtime-startup wait reached during shutdown; continuing listener close`
|
|
4205
4146
|
);
|
|
4206
|
-
|
|
4147
|
+
resolve3();
|
|
4207
4148
|
}, timeoutMs);
|
|
4208
4149
|
timer.unref();
|
|
4209
4150
|
})
|
|
@@ -4242,6 +4183,7 @@ function createBootstrapServeApp(input) {
|
|
|
4242
4183
|
qwenCodeVersion,
|
|
4243
4184
|
sessionShellCommandEnabled,
|
|
4244
4185
|
sessionArtifactsPersistenceAvailable,
|
|
4186
|
+
currentSessionSchedulingAvailable,
|
|
4245
4187
|
permissionPolicy,
|
|
4246
4188
|
multiWorkspaceCapabilitiesRequireRuntime,
|
|
4247
4189
|
getRuntimeError,
|
|
@@ -4301,6 +4243,7 @@ function createBootstrapServeApp(input) {
|
|
|
4301
4243
|
qwenCodeVersion,
|
|
4302
4244
|
sessionShellCommandEnabled,
|
|
4303
4245
|
sessionArtifactsPersistenceAvailable,
|
|
4246
|
+
currentSessionSchedulingAvailable,
|
|
4304
4247
|
permissionPolicy,
|
|
4305
4248
|
env: process.env
|
|
4306
4249
|
})
|
|
@@ -4418,6 +4361,7 @@ function createBootstrapServeApp(input) {
|
|
|
4418
4361
|
opts,
|
|
4419
4362
|
sessionShellCommandEnabled,
|
|
4420
4363
|
sessionArtifactsPersistenceAvailable,
|
|
4364
|
+
currentSessionSchedulingAvailable,
|
|
4421
4365
|
process.env
|
|
4422
4366
|
)
|
|
4423
4367
|
},
|
|
@@ -4614,8 +4558,8 @@ function matchesWebhookSecret(candidate, expected) {
|
|
|
4614
4558
|
if (typeof candidate !== "string" || typeof expected !== "string" || expected.length === 0) {
|
|
4615
4559
|
return false;
|
|
4616
4560
|
}
|
|
4617
|
-
const expectedDigest =
|
|
4618
|
-
const candidateDigest =
|
|
4561
|
+
const expectedDigest = createHash2("sha256").update(expected).digest();
|
|
4562
|
+
const candidateDigest = createHash2("sha256").update(candidate).digest();
|
|
4619
4563
|
return timingSafeEqual(expectedDigest, candidateDigest);
|
|
4620
4564
|
}
|
|
4621
4565
|
__name(matchesWebhookSecret, "matchesWebhookSecret");
|
|
@@ -5041,7 +4985,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5041
4985
|
}
|
|
5042
4986
|
let workspaceRegistrationStore = deps.workspaceRegistrationStore;
|
|
5043
4987
|
if (workspaceRegistrationStore === void 0 && process.env["QWEN_SERVE_NO_PERSISTENT_REGISTRATION"] !== "1") {
|
|
5044
|
-
const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-
|
|
4988
|
+
const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-7Y44R4LV.js");
|
|
5045
4989
|
workspaceRegistrationStore = new WorkspaceRegistrationStore(boundWorkspace);
|
|
5046
4990
|
}
|
|
5047
4991
|
if (workspaceRegistrationStore) {
|
|
@@ -5325,7 +5269,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5325
5269
|
"qwen serve: required external tool guard handshake succeeded."
|
|
5326
5270
|
);
|
|
5327
5271
|
}
|
|
5328
|
-
const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-
|
|
5272
|
+
const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-V3P5XLHB.js");
|
|
5329
5273
|
const daemonToolGuardHandler = createDaemonToolGuard(
|
|
5330
5274
|
externalToolGuardHandler
|
|
5331
5275
|
);
|
|
@@ -5371,8 +5315,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5371
5315
|
let resolveServeAppStartup;
|
|
5372
5316
|
let rejectServeAppStartup;
|
|
5373
5317
|
let serveAppStartupSettled = false;
|
|
5374
|
-
const serveAppStartupReady = new Promise((
|
|
5375
|
-
resolveServeAppStartup =
|
|
5318
|
+
const serveAppStartupReady = new Promise((resolve3, reject) => {
|
|
5319
|
+
resolveServeAppStartup = resolve3;
|
|
5376
5320
|
rejectServeAppStartup = reject;
|
|
5377
5321
|
});
|
|
5378
5322
|
void serveAppStartupReady.catch(() => void 0);
|
|
@@ -5394,6 +5338,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5394
5338
|
const internalRuntimeBridgesForCleanup = [];
|
|
5395
5339
|
let daemonEventLoopMonitor;
|
|
5396
5340
|
let daemonMetricsSampler;
|
|
5341
|
+
let sessionPrRefreshTimer;
|
|
5342
|
+
let sessionPrRefreshGeneration = 0;
|
|
5397
5343
|
let runtimeStartupError;
|
|
5398
5344
|
let runtimeStarting;
|
|
5399
5345
|
let markRuntimeReady;
|
|
@@ -5402,8 +5348,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5402
5348
|
let startRuntimeAfterHealth;
|
|
5403
5349
|
let startRuntimeForRequest;
|
|
5404
5350
|
const deferRuntimeUntilFirstHealth = deps.resolveOnListen === true && deps.deferRuntimeUntilFirstHealth === true;
|
|
5405
|
-
const runtimeReady = new Promise((
|
|
5406
|
-
markRuntimeReady =
|
|
5351
|
+
const runtimeReady = new Promise((resolve3, reject) => {
|
|
5352
|
+
markRuntimeReady = resolve3;
|
|
5407
5353
|
markRuntimeFailed = reject;
|
|
5408
5354
|
});
|
|
5409
5355
|
void runtimeReady.catch(() => {
|
|
@@ -5413,6 +5359,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5413
5359
|
daemonEventLoopMonitor = void 0;
|
|
5414
5360
|
const metricsSampler = daemonMetricsSampler;
|
|
5415
5361
|
daemonMetricsSampler = void 0;
|
|
5362
|
+
const prRefreshTimer = sessionPrRefreshTimer;
|
|
5363
|
+
sessionPrRefreshTimer = void 0;
|
|
5364
|
+
sessionPrRefreshGeneration += 1;
|
|
5365
|
+
prRefreshTimer?.dispose();
|
|
5416
5366
|
try {
|
|
5417
5367
|
eventLoopMonitor?.dispose();
|
|
5418
5368
|
} catch (err) {
|
|
@@ -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-TZGK34DW.js")
|
|
5668
5618
|
]);
|
|
5669
5619
|
cliVersion = resolvedCliVersion;
|
|
5670
5620
|
settingsRuntime.environment.preResolveHomeEnvOverrides();
|
|
@@ -6040,7 +5990,7 @@ 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-7SG4YA2W.js");
|
|
6044
5994
|
const fresh = loadSettingsForPersistence(workspace);
|
|
6045
5995
|
const normalizedName = skillName.trim().toLowerCase();
|
|
6046
5996
|
const resolved = resolveSkillSettings(fresh);
|
|
@@ -6105,7 +6055,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6105
6055
|
resolveSkillSettings,
|
|
6106
6056
|
skillSettingStrings,
|
|
6107
6057
|
updateWorkspaceSkillSettingLists
|
|
6108
|
-
} = await import("./skill-settings-
|
|
6058
|
+
} = await import("./skill-settings-7SG4YA2W.js");
|
|
6109
6059
|
const fresh = loadSettingsForPersistence(workspace);
|
|
6110
6060
|
const resolved = resolveSkillSettings(fresh);
|
|
6111
6061
|
const initialDisabled = skillSettingStrings(
|
|
@@ -6210,7 +6160,43 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6210
6160
|
);
|
|
6211
6161
|
}
|
|
6212
6162
|
}), "persistSettingsFn");
|
|
6213
|
-
const { createSubSessionLauncher } = await
|
|
6163
|
+
const [{ createSubSessionLauncher }, scheduledTaskRoutes] = await Promise.all([
|
|
6164
|
+
import("./create-sub-session-MHYCFNCM.js"),
|
|
6165
|
+
import("./scheduled-tasks-DVRJZO6I.js")
|
|
6166
|
+
]);
|
|
6167
|
+
const createCurrentSessionScheduledTaskHandler = /* @__PURE__ */ __name((workspaceCwd, runtimeBaseDir, getBridge, assertGenerationOpen) => async ({
|
|
6168
|
+
callerSessionId,
|
|
6169
|
+
cron,
|
|
6170
|
+
prompt,
|
|
6171
|
+
recurring,
|
|
6172
|
+
assertCallerPromptActive
|
|
6173
|
+
}) => {
|
|
6174
|
+
const targetBridge = getBridge();
|
|
6175
|
+
if (!targetBridge) {
|
|
6176
|
+
throw new Error(
|
|
6177
|
+
"Current-session scheduling is unavailable while the workspace runtime is starting."
|
|
6178
|
+
);
|
|
6179
|
+
}
|
|
6180
|
+
const task = await scheduledTaskRoutes.createScheduledTaskWithExistingSession(
|
|
6181
|
+
{
|
|
6182
|
+
workspaceCwd,
|
|
6183
|
+
runtimeBaseDir,
|
|
6184
|
+
bridge: targetBridge,
|
|
6185
|
+
assertGenerationOpen,
|
|
6186
|
+
resolveLiveSessionOwner: /* @__PURE__ */ __name((sessionId) => workspaceRegistryForPersistence.current === void 0 ? { kind: "unavailable" } : workspaceRegistryForPersistence.current.resolveLiveSessionOwner(
|
|
6187
|
+
sessionId
|
|
6188
|
+
), "resolveLiveSessionOwner")
|
|
6189
|
+
},
|
|
6190
|
+
{
|
|
6191
|
+
sessionId: callerSessionId,
|
|
6192
|
+
cron,
|
|
6193
|
+
prompt,
|
|
6194
|
+
recurring
|
|
6195
|
+
},
|
|
6196
|
+
{ source: "cron-tool", assertCallerPromptActive }
|
|
6197
|
+
);
|
|
6198
|
+
return { id: task.id, cron: task.cron };
|
|
6199
|
+
}, "createCurrentSessionScheduledTaskHandler");
|
|
6214
6200
|
const subSessionLauncher = createSubSessionLauncher({
|
|
6215
6201
|
getBridge: /* @__PURE__ */ __name(() => bridgeRef, "getBridge"),
|
|
6216
6202
|
boundWorkspace,
|
|
@@ -6227,6 +6213,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6227
6213
|
// connection that hosts a named client MCP server (#5626).
|
|
6228
6214
|
clientMcpSender: clientMcpSenderRegistry.lookup,
|
|
6229
6215
|
onCreateSubSession: subSessionLauncher.launch,
|
|
6216
|
+
onCreateCurrentSessionScheduledTask: createCurrentSessionScheduledTaskHandler(
|
|
6217
|
+
boundWorkspace,
|
|
6218
|
+
primarySessionRuntimeBaseDir,
|
|
6219
|
+
() => bridgeRef,
|
|
6220
|
+
() => primaryGenerationGuard.assertOpen()
|
|
6221
|
+
),
|
|
6230
6222
|
onChannelDelivery: createBoundChannelDeliveryHandler(
|
|
6231
6223
|
boundWorkspace,
|
|
6232
6224
|
() => channelWorkerManager,
|
|
@@ -6572,6 +6564,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6572
6564
|
),
|
|
6573
6565
|
clientMcpSender: secondaryClientMcpSenderRegistry.lookup,
|
|
6574
6566
|
onCreateSubSession: secondarySubSessionLauncher.launch,
|
|
6567
|
+
onCreateCurrentSessionScheduledTask: createCurrentSessionScheduledTaskHandler(
|
|
6568
|
+
workspaceInput.cwd,
|
|
6569
|
+
secondaryEnv.sessionRuntimeBaseDir,
|
|
6570
|
+
() => secondaryBridgeRef,
|
|
6571
|
+
() => secondaryGenerationGuard.assertOpen()
|
|
6572
|
+
),
|
|
6575
6573
|
onChannelDelivery: createBoundChannelDeliveryHandler(
|
|
6576
6574
|
workspaceInput.cwd,
|
|
6577
6575
|
() => channelWorkerManager,
|
|
@@ -6860,6 +6858,22 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6860
6858
|
metricsLoopDelay.disable();
|
|
6861
6859
|
}
|
|
6862
6860
|
};
|
|
6861
|
+
sessionPrRefreshTimer?.dispose();
|
|
6862
|
+
const refreshGeneration = ++sessionPrRefreshGeneration;
|
|
6863
|
+
void import("./session-pr-refresh-KRBH7KDA.js").then((mod) => {
|
|
6864
|
+
if (refreshGeneration !== sessionPrRefreshGeneration) return;
|
|
6865
|
+
sessionPrRefreshTimer = mod.startSessionPrRefreshTimer({
|
|
6866
|
+
workspaceRegistry,
|
|
6867
|
+
// The coordinator lives on the serve app (createServeApp below),
|
|
6868
|
+
// which is built after this timer starts; read it per tick like
|
|
6869
|
+
// the metrics sampler reads `acpHandle`.
|
|
6870
|
+
getArchiveCoordinator: /* @__PURE__ */ __name(() => app2.locals.sessionArchiveCoordinator, "getArchiveCoordinator")
|
|
6871
|
+
});
|
|
6872
|
+
}).catch((error) => {
|
|
6873
|
+
daemonLog.warn(
|
|
6874
|
+
`session-pr-refresh load failed: ${error instanceof Error ? error.message : String(error)}`
|
|
6875
|
+
);
|
|
6876
|
+
});
|
|
6863
6877
|
const createDynamicWorkspaceRuntime = /* @__PURE__ */ __name(async (cwd, buildOptions) => {
|
|
6864
6878
|
const provenance = buildOptions?.provenance ?? "existing";
|
|
6865
6879
|
if (provenance === "managed-scratch" && (!managedScratchRoot || !isManagedScratchChild(cwd, managedScratchRoot.canonicalRoot))) {
|
|
@@ -6931,6 +6945,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6931
6945
|
boundWorkspace: cwd,
|
|
6932
6946
|
...provenance === "live-conversation" ? {
|
|
6933
6947
|
notifySentCompletion: true,
|
|
6948
|
+
getStandaloneSessionService: /* @__PURE__ */ __name(() => (runtimeApp ?? runtimeAppForCleanup)?.locals?.["standaloneSessionService"], "getStandaloneSessionService"),
|
|
6934
6949
|
isolatedWorkspace: {
|
|
6935
6950
|
materializeDirectory: /* @__PURE__ */ __name((sessionId) => liveConversationWorkspace.materializeConversationDirectory(
|
|
6936
6951
|
sessionId
|
|
@@ -6953,6 +6968,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6953
6968
|
),
|
|
6954
6969
|
clientMcpSender: wsClientMcpRegistry.lookup,
|
|
6955
6970
|
onCreateSubSession: wsSubSessionLauncher.launch,
|
|
6971
|
+
onCreateCurrentSessionScheduledTask: createCurrentSessionScheduledTaskHandler(
|
|
6972
|
+
cwd,
|
|
6973
|
+
wsEnv.sessionRuntimeBaseDir,
|
|
6974
|
+
() => wsBridgeRef,
|
|
6975
|
+
() => generationGuard.assertOpen()
|
|
6976
|
+
),
|
|
6956
6977
|
onChannelDelivery: createBoundChannelDeliveryHandler(
|
|
6957
6978
|
cwd,
|
|
6958
6979
|
() => channelWorkerManager,
|
|
@@ -7439,8 +7460,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7439
7460
|
{ createChannelManagementService },
|
|
7440
7461
|
{ WorkspaceChannelSettingsStore }
|
|
7441
7462
|
] = await Promise.all([
|
|
7442
|
-
import("./channel-management-service-
|
|
7443
|
-
import("./channel-settings-store-
|
|
7463
|
+
import("./channel-management-service-KHR3N6CH.js"),
|
|
7464
|
+
import("./channel-settings-store-4FOAZW72.js")
|
|
7444
7465
|
]);
|
|
7445
7466
|
return createChannelManagementService({
|
|
7446
7467
|
workspaceCwd: targetRuntime.workspaceCwd,
|
|
@@ -7520,6 +7541,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7520
7541
|
// (keepalive) and reloads them on boot (rehydration). Off by default so
|
|
7521
7542
|
// direct createServeApp embeds/tests don't spawn sessions.
|
|
7522
7543
|
manageScheduledTaskSessions: true,
|
|
7544
|
+
currentSessionSchedulingAvailable: deps.bridge === void 0,
|
|
7523
7545
|
fsFactory: routeFsFactory,
|
|
7524
7546
|
primaryWorkspaceTrusted: trustedWorkspace,
|
|
7525
7547
|
primaryRuntimeEnv,
|
|
@@ -7644,8 +7666,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7644
7666
|
{ createWorkspaceTrustReconciler },
|
|
7645
7667
|
{ createDaemonTrustPolicyMonitor }
|
|
7646
7668
|
] = await Promise.all([
|
|
7647
|
-
import("./workspace-trust-reconciler-
|
|
7648
|
-
import("./daemon-trust-policy-monitor-
|
|
7669
|
+
import("./workspace-trust-reconciler-3YTWSQBY.js"),
|
|
7670
|
+
import("./daemon-trust-policy-monitor-F23DD2M4.js")
|
|
7649
7671
|
]);
|
|
7650
7672
|
const materializationFor = /* @__PURE__ */ __name((entry, snapshot, decision) => {
|
|
7651
7673
|
const boundWorkspaces2 = entry.primary && decision.targetTrusted ? runtime.resolveBoundWorkspacesFromIdeEnv(
|
|
@@ -7740,7 +7762,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7740
7762
|
handle?.disposeWorkspace(runtimeToDispose.workspaceId);
|
|
7741
7763
|
const deadline = Date.now() + 1e3;
|
|
7742
7764
|
while ((handle?.getWorkspaceActivity(runtimeToDispose.workspaceId).memoryTasks ?? 0) > 0 && Date.now() < deadline) {
|
|
7743
|
-
await new Promise((
|
|
7765
|
+
await new Promise((resolve3) => setTimeout(resolve3, 25));
|
|
7744
7766
|
}
|
|
7745
7767
|
if ((handle?.getWorkspaceActivity(runtimeToDispose.workspaceId).memoryTasks ?? 0) > 0) {
|
|
7746
7768
|
throw new Error(
|
|
@@ -7817,6 +7839,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7817
7839
|
qwenCodeVersion: cliVersion,
|
|
7818
7840
|
sessionShellCommandEnabled,
|
|
7819
7841
|
sessionArtifactsPersistenceAvailable,
|
|
7842
|
+
currentSessionSchedulingAvailable: false,
|
|
7820
7843
|
permissionPolicy,
|
|
7821
7844
|
multiWorkspaceCapabilitiesRequireRuntime: workspaceInputs.length > 1,
|
|
7822
7845
|
getRuntimeError: /* @__PURE__ */ __name(() => runtimeStartupError, "getRuntimeError"),
|
|
@@ -7860,7 +7883,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7860
7883
|
);
|
|
7861
7884
|
}
|
|
7862
7885
|
const channelValidationSettingsRuntime = opts.channelSelection ? await loadSettingsRuntimeModules() : void 0;
|
|
7863
|
-
const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-
|
|
7886
|
+
const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-TZGK34DW.js") : void 0;
|
|
7864
7887
|
const channelValidationTrustSnapshot = channelValidationTrustPolicy ? await channelValidationTrustPolicy.readDaemonTrustPolicySnapshot() : void 0;
|
|
7865
7888
|
const resolveChannelWorkspaceGroupsAtListen = /* @__PURE__ */ __name(() => {
|
|
7866
7889
|
if (!opts.channelSelection || !channelValidationSettingsRuntime || !channelRuntime) {
|
|
@@ -7966,7 +7989,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
7966
7989
|
if (opts.channelSelection) {
|
|
7967
7990
|
reserveChannelServicePidfile(opts.channelSelection);
|
|
7968
7991
|
}
|
|
7969
|
-
return await new Promise((
|
|
7992
|
+
return await new Promise((resolve3, reject) => {
|
|
7970
7993
|
let closeHost;
|
|
7971
7994
|
const onListening = /* @__PURE__ */ __name((error) => {
|
|
7972
7995
|
if (error) return;
|
|
@@ -8748,6 +8771,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
8748
8771
|
if (!preserveSignalHandlers) {
|
|
8749
8772
|
process.removeListener("SIGINT", onSignal);
|
|
8750
8773
|
process.removeListener("SIGTERM", onSignal);
|
|
8774
|
+
process.removeListener("SIGHUP", onSignal);
|
|
8751
8775
|
}
|
|
8752
8776
|
process.removeListener(
|
|
8753
8777
|
"uncaughtExceptionMonitor",
|
|
@@ -8967,6 +8991,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
8967
8991
|
}
|
|
8968
8992
|
process.on("SIGINT", onSignal);
|
|
8969
8993
|
process.on("SIGTERM", onSignal);
|
|
8994
|
+
process.on("SIGHUP", onSignal);
|
|
8970
8995
|
process.on("uncaughtExceptionMonitor", onUncaughtExceptionMonitor);
|
|
8971
8996
|
server.on("error", (err) => {
|
|
8972
8997
|
daemonLog.error("server error", err instanceof Error ? err : null);
|
|
@@ -8997,7 +9022,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
8997
9022
|
loggerPublished = true;
|
|
8998
9023
|
loggerLifecycle.published();
|
|
8999
9024
|
void (liveDiscoveryPublish ?? Promise.resolve()).then(
|
|
9000
|
-
() =>
|
|
9025
|
+
() => resolve3(handle)
|
|
9001
9026
|
);
|
|
9002
9027
|
} else {
|
|
9003
9028
|
void runtimeReady.then(
|
|
@@ -9005,7 +9030,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
9005
9030
|
await liveDiscoveryPublish;
|
|
9006
9031
|
loggerPublished = true;
|
|
9007
9032
|
loggerLifecycle.published();
|
|
9008
|
-
|
|
9033
|
+
resolve3(handle);
|
|
9009
9034
|
},
|
|
9010
9035
|
(err) => {
|
|
9011
9036
|
void handle.close().then(
|
|
@@ -9054,10 +9079,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
9054
9079
|
drainHost: /* @__PURE__ */ __name(() => {
|
|
9055
9080
|
if (closeHost) return closeHost();
|
|
9056
9081
|
if (!server.listening) return Promise.resolve();
|
|
9057
|
-
return new Promise((
|
|
9082
|
+
return new Promise((resolve4, rejectClose) => {
|
|
9058
9083
|
server.close((error) => {
|
|
9059
9084
|
if (error) rejectClose(error);
|
|
9060
|
-
else
|
|
9085
|
+
else resolve4();
|
|
9061
9086
|
});
|
|
9062
9087
|
});
|
|
9063
9088
|
}, "drainHost")
|