@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,13 +3,30 @@
|
|
|
3
3
|
import {
|
|
4
4
|
require_proper_lockfile
|
|
5
5
|
} from "./chunk-MLXTMF7H.js";
|
|
6
|
+
import {
|
|
7
|
+
stringifyGenAiJson
|
|
8
|
+
} from "./chunk-V4264FEG.js";
|
|
6
9
|
import {
|
|
7
10
|
atomicWriteJSON
|
|
8
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-23RFD54N.js";
|
|
12
|
+
import {
|
|
13
|
+
DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH,
|
|
14
|
+
SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT,
|
|
15
|
+
SERVICE_NAME,
|
|
16
|
+
getMeter,
|
|
17
|
+
isTelemetrySdkInitialized,
|
|
18
|
+
isValidSensitiveSpanAttributeMaxLength
|
|
19
|
+
} from "./chunk-B5PHIJGI.js";
|
|
9
20
|
import {
|
|
21
|
+
FatalConfigError,
|
|
10
22
|
QWEN_DIR,
|
|
11
23
|
createDebugLogger
|
|
12
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-UHQFIS7N.js";
|
|
25
|
+
import {
|
|
26
|
+
ValueType,
|
|
27
|
+
diag,
|
|
28
|
+
init_esm
|
|
29
|
+
} from "./chunk-TBWQLLFO.js";
|
|
13
30
|
import {
|
|
14
31
|
init_esbuild_shims
|
|
15
32
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -1730,7 +1747,7 @@ var require_log = __commonJS({
|
|
|
1730
1747
|
console.log(...messages);
|
|
1731
1748
|
}
|
|
1732
1749
|
__name(debug, "debug");
|
|
1733
|
-
function
|
|
1750
|
+
function warn2(logLevel, warning) {
|
|
1734
1751
|
if (logLevel === "debug" || logLevel === "warn") {
|
|
1735
1752
|
if (typeof node_process.emitWarning === "function")
|
|
1736
1753
|
node_process.emitWarning(warning);
|
|
@@ -1738,9 +1755,9 @@ var require_log = __commonJS({
|
|
|
1738
1755
|
console.warn(warning);
|
|
1739
1756
|
}
|
|
1740
1757
|
}
|
|
1741
|
-
__name(
|
|
1758
|
+
__name(warn2, "warn");
|
|
1742
1759
|
exports.debug = debug;
|
|
1743
|
-
exports.warn =
|
|
1760
|
+
exports.warn = warn2;
|
|
1744
1761
|
}
|
|
1745
1762
|
});
|
|
1746
1763
|
|
|
@@ -7592,6 +7609,886 @@ var require_dist = __commonJS({
|
|
|
7592
7609
|
}
|
|
7593
7610
|
});
|
|
7594
7611
|
|
|
7612
|
+
// packages/core/src/telemetry/config.ts
|
|
7613
|
+
init_esbuild_shims();
|
|
7614
|
+
|
|
7615
|
+
// packages/core/src/telemetry/index.ts
|
|
7616
|
+
init_esbuild_shims();
|
|
7617
|
+
|
|
7618
|
+
// packages/core/src/telemetry/daemon-metrics.ts
|
|
7619
|
+
init_esbuild_shims();
|
|
7620
|
+
init_esm();
|
|
7621
|
+
var DAEMON_HTTP_REQUEST_COUNT = `${SERVICE_NAME}.daemon.http.request.count`;
|
|
7622
|
+
var DAEMON_HTTP_REQUEST_DURATION = `${SERVICE_NAME}.daemon.http.request.duration`;
|
|
7623
|
+
var DAEMON_SESSION_ACTIVE = `${SERVICE_NAME}.daemon.session.active`;
|
|
7624
|
+
var DAEMON_SESSION_LIFECYCLE = `${SERVICE_NAME}.daemon.session.lifecycle`;
|
|
7625
|
+
var DAEMON_CHANNEL_LIFECYCLE = `${SERVICE_NAME}.daemon.channel.lifecycle`;
|
|
7626
|
+
var DAEMON_PROMPT_QUEUE_WAIT = `${SERVICE_NAME}.daemon.prompt.queue_wait`;
|
|
7627
|
+
var DAEMON_PROMPT_DURATION = `${SERVICE_NAME}.daemon.prompt.duration`;
|
|
7628
|
+
var DAEMON_BRIDGE_ERROR_COUNT = `${SERVICE_NAME}.daemon.bridge.error.count`;
|
|
7629
|
+
var DAEMON_CANCEL_COUNT = `${SERVICE_NAME}.daemon.cancel.count`;
|
|
7630
|
+
var DAEMON_PIPE_MESSAGE_BYTES = `${SERVICE_NAME}.daemon.pipe.message_bytes`;
|
|
7631
|
+
var DAEMON_SSE_ACTIVE = `${SERVICE_NAME}.daemon.sse.active`;
|
|
7632
|
+
var DAEMON_PROCESS_HEAP_USED = `${SERVICE_NAME}.daemon.process.heap_used`;
|
|
7633
|
+
var KNOWN_ERROR_TYPES = /* @__PURE__ */ new Set([
|
|
7634
|
+
"SessionNotFoundError",
|
|
7635
|
+
"WorkspaceMismatchError",
|
|
7636
|
+
"InvalidClientIdError",
|
|
7637
|
+
"SessionLimitExceededError",
|
|
7638
|
+
"RestoreInProgressError",
|
|
7639
|
+
"InvalidSessionScopeError",
|
|
7640
|
+
"TrustGateError",
|
|
7641
|
+
"WorkspaceInitConflictError",
|
|
7642
|
+
"WorkspaceInitPathEscapeError",
|
|
7643
|
+
"WorkspaceInitSymlinkError",
|
|
7644
|
+
"WorkspaceInitRaceError",
|
|
7645
|
+
"McpServerNotFoundError",
|
|
7646
|
+
"McpServerRestartFailedError",
|
|
7647
|
+
"PromptDeadlineExceededError",
|
|
7648
|
+
"InvalidSessionMetadataError",
|
|
7649
|
+
"SubscriberLimitExceededError",
|
|
7650
|
+
"BridgeChannelClosedError",
|
|
7651
|
+
"BridgeTimeoutError",
|
|
7652
|
+
"SessionRestoreTimeoutError",
|
|
7653
|
+
"BridgeChannelQuarantinedError",
|
|
7654
|
+
"PermissionForbiddenError"
|
|
7655
|
+
]);
|
|
7656
|
+
var initialized = false;
|
|
7657
|
+
var httpRequestCounter;
|
|
7658
|
+
var httpRequestDurationHistogram;
|
|
7659
|
+
var sessionLifecycleCounter;
|
|
7660
|
+
var channelLifecycleCounter;
|
|
7661
|
+
var promptQueueWaitHistogram;
|
|
7662
|
+
var promptDurationHistogram;
|
|
7663
|
+
var bridgeErrorCounter;
|
|
7664
|
+
var cancelCounter;
|
|
7665
|
+
var pipeMessageBytesHistogram;
|
|
7666
|
+
function normalizeErrorType(err) {
|
|
7667
|
+
const name = err instanceof Error ? err.name : typeof err;
|
|
7668
|
+
return KNOWN_ERROR_TYPES.has(name) ? name : "unknown";
|
|
7669
|
+
}
|
|
7670
|
+
__name(normalizeErrorType, "normalizeErrorType");
|
|
7671
|
+
function initializeDaemonMetrics() {
|
|
7672
|
+
if (initialized) return;
|
|
7673
|
+
const meter = getMeter();
|
|
7674
|
+
if (!meter) return;
|
|
7675
|
+
httpRequestCounter = meter.createCounter(DAEMON_HTTP_REQUEST_COUNT, {
|
|
7676
|
+
description: "Daemon HTTP request count by route and status class.",
|
|
7677
|
+
valueType: ValueType.INT
|
|
7678
|
+
});
|
|
7679
|
+
httpRequestDurationHistogram = meter.createHistogram(
|
|
7680
|
+
DAEMON_HTTP_REQUEST_DURATION,
|
|
7681
|
+
{
|
|
7682
|
+
description: "Daemon HTTP request duration in milliseconds.",
|
|
7683
|
+
unit: "ms",
|
|
7684
|
+
valueType: ValueType.DOUBLE,
|
|
7685
|
+
advice: {
|
|
7686
|
+
explicitBucketBoundaries: [
|
|
7687
|
+
1,
|
|
7688
|
+
2,
|
|
7689
|
+
5,
|
|
7690
|
+
10,
|
|
7691
|
+
25,
|
|
7692
|
+
50,
|
|
7693
|
+
100,
|
|
7694
|
+
250,
|
|
7695
|
+
500,
|
|
7696
|
+
1e3,
|
|
7697
|
+
2500,
|
|
7698
|
+
5e3,
|
|
7699
|
+
1e4,
|
|
7700
|
+
3e4
|
|
7701
|
+
]
|
|
7702
|
+
}
|
|
7703
|
+
}
|
|
7704
|
+
);
|
|
7705
|
+
sessionLifecycleCounter = meter.createCounter(DAEMON_SESSION_LIFECYCLE, {
|
|
7706
|
+
description: "Daemon session lifecycle events (spawn, close, die).",
|
|
7707
|
+
valueType: ValueType.INT
|
|
7708
|
+
});
|
|
7709
|
+
channelLifecycleCounter = meter.createCounter(DAEMON_CHANNEL_LIFECYCLE, {
|
|
7710
|
+
description: "Daemon ACP channel lifecycle events (spawn, exit).",
|
|
7711
|
+
valueType: ValueType.INT
|
|
7712
|
+
});
|
|
7713
|
+
promptQueueWaitHistogram = meter.createHistogram(DAEMON_PROMPT_QUEUE_WAIT, {
|
|
7714
|
+
description: "Time a prompt waited in the per-session FIFO queue.",
|
|
7715
|
+
unit: "ms",
|
|
7716
|
+
valueType: ValueType.DOUBLE,
|
|
7717
|
+
advice: {
|
|
7718
|
+
explicitBucketBoundaries: [
|
|
7719
|
+
1,
|
|
7720
|
+
5,
|
|
7721
|
+
10,
|
|
7722
|
+
50,
|
|
7723
|
+
100,
|
|
7724
|
+
500,
|
|
7725
|
+
1e3,
|
|
7726
|
+
5e3,
|
|
7727
|
+
1e4,
|
|
7728
|
+
3e4,
|
|
7729
|
+
6e4
|
|
7730
|
+
]
|
|
7731
|
+
}
|
|
7732
|
+
});
|
|
7733
|
+
promptDurationHistogram = meter.createHistogram(DAEMON_PROMPT_DURATION, {
|
|
7734
|
+
description: "End-to-end prompt duration from dispatch to completion.",
|
|
7735
|
+
unit: "ms",
|
|
7736
|
+
valueType: ValueType.DOUBLE,
|
|
7737
|
+
advice: {
|
|
7738
|
+
explicitBucketBoundaries: [
|
|
7739
|
+
100,
|
|
7740
|
+
500,
|
|
7741
|
+
1e3,
|
|
7742
|
+
2500,
|
|
7743
|
+
5e3,
|
|
7744
|
+
1e4,
|
|
7745
|
+
3e4,
|
|
7746
|
+
6e4,
|
|
7747
|
+
12e4,
|
|
7748
|
+
3e5,
|
|
7749
|
+
6e5
|
|
7750
|
+
]
|
|
7751
|
+
}
|
|
7752
|
+
});
|
|
7753
|
+
bridgeErrorCounter = meter.createCounter(DAEMON_BRIDGE_ERROR_COUNT, {
|
|
7754
|
+
description: "Daemon bridge error count by normalized error type.",
|
|
7755
|
+
valueType: ValueType.INT
|
|
7756
|
+
});
|
|
7757
|
+
cancelCounter = meter.createCounter(DAEMON_CANCEL_COUNT, {
|
|
7758
|
+
description: "Daemon cancel request count.",
|
|
7759
|
+
valueType: ValueType.INT
|
|
7760
|
+
});
|
|
7761
|
+
pipeMessageBytesHistogram = meter.createHistogram(DAEMON_PIPE_MESSAGE_BYTES, {
|
|
7762
|
+
description: "Daemon ACP child pipe message payload size in bytes.",
|
|
7763
|
+
unit: "By",
|
|
7764
|
+
valueType: ValueType.INT,
|
|
7765
|
+
advice: {
|
|
7766
|
+
explicitBucketBoundaries: [
|
|
7767
|
+
256,
|
|
7768
|
+
1024,
|
|
7769
|
+
4096,
|
|
7770
|
+
16384,
|
|
7771
|
+
65536,
|
|
7772
|
+
262144,
|
|
7773
|
+
1048576,
|
|
7774
|
+
4194304,
|
|
7775
|
+
16777216
|
|
7776
|
+
]
|
|
7777
|
+
}
|
|
7778
|
+
});
|
|
7779
|
+
initialized = true;
|
|
7780
|
+
}
|
|
7781
|
+
__name(initializeDaemonMetrics, "initializeDaemonMetrics");
|
|
7782
|
+
var gaugesRegistered = false;
|
|
7783
|
+
function registerDaemonGaugeCallbacks(callbacks) {
|
|
7784
|
+
if (gaugesRegistered) return;
|
|
7785
|
+
const meter = getMeter();
|
|
7786
|
+
if (!meter) return;
|
|
7787
|
+
meter.createObservableGauge(DAEMON_SESSION_ACTIVE, {
|
|
7788
|
+
description: "Current number of active daemon sessions.",
|
|
7789
|
+
valueType: ValueType.INT
|
|
7790
|
+
}).addCallback((result) => {
|
|
7791
|
+
try {
|
|
7792
|
+
result.observe(callbacks.sessionCount());
|
|
7793
|
+
} catch {
|
|
7794
|
+
}
|
|
7795
|
+
});
|
|
7796
|
+
meter.createObservableGauge(DAEMON_SSE_ACTIVE, {
|
|
7797
|
+
description: "Current number of active SSE connections.",
|
|
7798
|
+
valueType: ValueType.INT
|
|
7799
|
+
}).addCallback((result) => {
|
|
7800
|
+
try {
|
|
7801
|
+
result.observe(callbacks.sseCount());
|
|
7802
|
+
} catch {
|
|
7803
|
+
}
|
|
7804
|
+
});
|
|
7805
|
+
meter.createObservableGauge(DAEMON_PROCESS_HEAP_USED, {
|
|
7806
|
+
description: "Daemon process heap memory usage in bytes.",
|
|
7807
|
+
unit: "bytes",
|
|
7808
|
+
valueType: ValueType.INT
|
|
7809
|
+
}).addCallback((result) => {
|
|
7810
|
+
try {
|
|
7811
|
+
result.observe(callbacks.heapUsed());
|
|
7812
|
+
} catch {
|
|
7813
|
+
}
|
|
7814
|
+
});
|
|
7815
|
+
gaugesRegistered = true;
|
|
7816
|
+
}
|
|
7817
|
+
__name(registerDaemonGaugeCallbacks, "registerDaemonGaugeCallbacks");
|
|
7818
|
+
function recordDaemonHttpRequest(durationMs, route, statusCode, deferredRuntimePath) {
|
|
7819
|
+
if (!initialized) return;
|
|
7820
|
+
const statusClass = `${Math.floor(statusCode / 100)}xx`;
|
|
7821
|
+
httpRequestCounter?.add(1, { route, status_class: statusClass });
|
|
7822
|
+
httpRequestDurationHistogram?.record(durationMs, {
|
|
7823
|
+
route,
|
|
7824
|
+
runtime_path: deferredRuntimePath ?? "none"
|
|
7825
|
+
});
|
|
7826
|
+
}
|
|
7827
|
+
__name(recordDaemonHttpRequest, "recordDaemonHttpRequest");
|
|
7828
|
+
function recordDaemonSessionLifecycle(action) {
|
|
7829
|
+
if (!initialized) return;
|
|
7830
|
+
sessionLifecycleCounter?.add(1, { action });
|
|
7831
|
+
}
|
|
7832
|
+
__name(recordDaemonSessionLifecycle, "recordDaemonSessionLifecycle");
|
|
7833
|
+
function recordDaemonChannelLifecycle(action, expected) {
|
|
7834
|
+
if (!initialized) return;
|
|
7835
|
+
channelLifecycleCounter?.add(1, {
|
|
7836
|
+
action,
|
|
7837
|
+
...expected != null ? { expected } : {}
|
|
7838
|
+
});
|
|
7839
|
+
}
|
|
7840
|
+
__name(recordDaemonChannelLifecycle, "recordDaemonChannelLifecycle");
|
|
7841
|
+
function recordDaemonPromptQueueWait(durationMs) {
|
|
7842
|
+
if (!initialized) return;
|
|
7843
|
+
promptQueueWaitHistogram?.record(durationMs);
|
|
7844
|
+
}
|
|
7845
|
+
__name(recordDaemonPromptQueueWait, "recordDaemonPromptQueueWait");
|
|
7846
|
+
function recordDaemonPromptDuration(durationMs) {
|
|
7847
|
+
if (!initialized) return;
|
|
7848
|
+
promptDurationHistogram?.record(durationMs);
|
|
7849
|
+
}
|
|
7850
|
+
__name(recordDaemonPromptDuration, "recordDaemonPromptDuration");
|
|
7851
|
+
function recordDaemonBridgeError(err) {
|
|
7852
|
+
if (!initialized) return;
|
|
7853
|
+
bridgeErrorCounter?.add(1, { error_type: normalizeErrorType(err) });
|
|
7854
|
+
}
|
|
7855
|
+
__name(recordDaemonBridgeError, "recordDaemonBridgeError");
|
|
7856
|
+
function recordDaemonCancel() {
|
|
7857
|
+
if (!initialized) return;
|
|
7858
|
+
cancelCounter?.add(1);
|
|
7859
|
+
}
|
|
7860
|
+
__name(recordDaemonCancel, "recordDaemonCancel");
|
|
7861
|
+
function recordDaemonPipeMessage(direction, bytes) {
|
|
7862
|
+
if (!initialized) return;
|
|
7863
|
+
pipeMessageBytesHistogram?.record(bytes, { direction });
|
|
7864
|
+
}
|
|
7865
|
+
__name(recordDaemonPipeMessage, "recordDaemonPipeMessage");
|
|
7866
|
+
|
|
7867
|
+
// packages/core/src/telemetry/event-loop-lag.ts
|
|
7868
|
+
init_esbuild_shims();
|
|
7869
|
+
import { monitorEventLoopDelay } from "node:perf_hooks";
|
|
7870
|
+
var DEFAULT_RESOLUTION_MS = 20;
|
|
7871
|
+
var DEFAULT_STALL_THRESHOLD_MS = 1e3;
|
|
7872
|
+
var DEFAULT_EVENT_LOOP_SUSPEND_THRESHOLD_MS = 5 * 60 * 1e3;
|
|
7873
|
+
var DEFAULT_SUSPEND_CPU_RATIO = 0.01;
|
|
7874
|
+
var NS_PER_MS = 1e6;
|
|
7875
|
+
function startEventLoopLagMonitor(options = {}) {
|
|
7876
|
+
const resolutionMs = positiveFiniteOrDefault(
|
|
7877
|
+
options.resolutionMs,
|
|
7878
|
+
DEFAULT_RESOLUTION_MS
|
|
7879
|
+
);
|
|
7880
|
+
const stallThresholdMs = positiveFiniteOrDefault(
|
|
7881
|
+
options.stallThresholdMs,
|
|
7882
|
+
DEFAULT_STALL_THRESHOLD_MS
|
|
7883
|
+
);
|
|
7884
|
+
const suspendThresholdMs = positiveFiniteOrDefault(
|
|
7885
|
+
options.suspendThresholdMs,
|
|
7886
|
+
DEFAULT_EVENT_LOOP_SUSPEND_THRESHOLD_MS
|
|
7887
|
+
);
|
|
7888
|
+
const suspendCpuRatio = fractionOrDefault(
|
|
7889
|
+
options.suspendCpuRatio,
|
|
7890
|
+
DEFAULT_SUSPEND_CPU_RATIO
|
|
7891
|
+
);
|
|
7892
|
+
const histogram = monitorEventLoopDelay({ resolution: resolutionMs });
|
|
7893
|
+
histogram.enable();
|
|
7894
|
+
let disposed = false;
|
|
7895
|
+
let lastReportedMaxMs = 0;
|
|
7896
|
+
let lastObservedMaxMs = 0;
|
|
7897
|
+
let lastCheckTimeMs = Date.now();
|
|
7898
|
+
let lastCpuUsage = safeCpuUsage();
|
|
7899
|
+
let pendingSuspendGapMs = 0;
|
|
7900
|
+
const readMaxMs = /* @__PURE__ */ __name(() => nsToMs(histogram.max), "readMaxMs");
|
|
7901
|
+
const checkHistogram = /* @__PURE__ */ __name(() => {
|
|
7902
|
+
if (disposed) return;
|
|
7903
|
+
const nowMs = Date.now();
|
|
7904
|
+
const cpuUsage = safeCpuUsage();
|
|
7905
|
+
const elapsedMs = Math.max(0, nowMs - lastCheckTimeMs);
|
|
7906
|
+
const maxMs = readMaxMs();
|
|
7907
|
+
const newMaxMs = maxMs > lastObservedMaxMs ? maxMs : 0;
|
|
7908
|
+
const cpuRatio = calculateCpuRatio(lastCpuUsage, cpuUsage, elapsedMs);
|
|
7909
|
+
lastCheckTimeMs = nowMs;
|
|
7910
|
+
if (cpuUsage) lastCpuUsage = cpuUsage;
|
|
7911
|
+
lastObservedMaxMs = maxMs;
|
|
7912
|
+
const isLowCpuGap = elapsedMs >= suspendThresholdMs && cpuRatio !== void 0 && cpuRatio <= suspendCpuRatio;
|
|
7913
|
+
const suspendGapMs = isLowCpuGap ? elapsedMs : pendingSuspendGapMs;
|
|
7914
|
+
pendingSuspendGapMs = isLowCpuGap ? elapsedMs : 0;
|
|
7915
|
+
if (newMaxMs >= suspendThresholdMs && suspendGapMs >= suspendThresholdMs && newMaxMs <= suspendGapMs * 1.5) {
|
|
7916
|
+
histogram.reset();
|
|
7917
|
+
lastObservedMaxMs = 0;
|
|
7918
|
+
lastReportedMaxMs = 0;
|
|
7919
|
+
pendingSuspendGapMs = 0;
|
|
7920
|
+
return;
|
|
7921
|
+
}
|
|
7922
|
+
if (options.onNewMaxStall && maxMs >= stallThresholdMs && maxMs > lastReportedMaxMs) {
|
|
7923
|
+
lastReportedMaxMs = maxMs;
|
|
7924
|
+
try {
|
|
7925
|
+
options.onNewMaxStall(maxMs);
|
|
7926
|
+
} catch {
|
|
7927
|
+
}
|
|
7928
|
+
}
|
|
7929
|
+
}, "checkHistogram");
|
|
7930
|
+
const interval = setInterval(checkHistogram, resolutionMs);
|
|
7931
|
+
interval.unref();
|
|
7932
|
+
return {
|
|
7933
|
+
snapshot() {
|
|
7934
|
+
return {
|
|
7935
|
+
meanMs: nsToMs(histogram.mean),
|
|
7936
|
+
p50Ms: nsToMs(histogram.percentile(50)),
|
|
7937
|
+
p99Ms: nsToMs(histogram.percentile(99)),
|
|
7938
|
+
maxMs: readMaxMs()
|
|
7939
|
+
};
|
|
7940
|
+
},
|
|
7941
|
+
dispose() {
|
|
7942
|
+
if (disposed) return;
|
|
7943
|
+
disposed = true;
|
|
7944
|
+
clearInterval(interval);
|
|
7945
|
+
histogram.disable();
|
|
7946
|
+
}
|
|
7947
|
+
};
|
|
7948
|
+
}
|
|
7949
|
+
__name(startEventLoopLagMonitor, "startEventLoopLagMonitor");
|
|
7950
|
+
function safeCpuUsage() {
|
|
7951
|
+
try {
|
|
7952
|
+
return process.cpuUsage();
|
|
7953
|
+
} catch {
|
|
7954
|
+
return void 0;
|
|
7955
|
+
}
|
|
7956
|
+
}
|
|
7957
|
+
__name(safeCpuUsage, "safeCpuUsage");
|
|
7958
|
+
function calculateCpuRatio(previous, current, elapsedMs) {
|
|
7959
|
+
if (!previous || !current || elapsedMs <= 0) return void 0;
|
|
7960
|
+
const cpuMicroseconds = current.user - previous.user + (current.system - previous.system);
|
|
7961
|
+
return Math.max(0, cpuMicroseconds / (elapsedMs * 1e3));
|
|
7962
|
+
}
|
|
7963
|
+
__name(calculateCpuRatio, "calculateCpuRatio");
|
|
7964
|
+
function nsToMs(value) {
|
|
7965
|
+
return Number.isFinite(value) ? value / NS_PER_MS : 0;
|
|
7966
|
+
}
|
|
7967
|
+
__name(nsToMs, "nsToMs");
|
|
7968
|
+
function positiveFiniteOrDefault(value, fallback) {
|
|
7969
|
+
return value !== void 0 && Number.isFinite(value) && value > 0 ? value : fallback;
|
|
7970
|
+
}
|
|
7971
|
+
__name(positiveFiniteOrDefault, "positiveFiniteOrDefault");
|
|
7972
|
+
function fractionOrDefault(value, fallback) {
|
|
7973
|
+
return value !== void 0 && Number.isFinite(value) && value >= 0 && value <= 1 ? value : fallback;
|
|
7974
|
+
}
|
|
7975
|
+
__name(fractionOrDefault, "fractionOrDefault");
|
|
7976
|
+
|
|
7977
|
+
// packages/core/src/telemetry/event-loop-lag-metrics.ts
|
|
7978
|
+
init_esbuild_shims();
|
|
7979
|
+
init_esm();
|
|
7980
|
+
var DAEMON_EVENT_LOOP_LAG = `${SERVICE_NAME}.daemon.event_loop.lag`;
|
|
7981
|
+
var ACP_EVENT_LOOP_LAG = `${SERVICE_NAME}.acp.event_loop.lag`;
|
|
7982
|
+
var daemonGaugeRegistered = false;
|
|
7983
|
+
var acpGaugeRegistered = false;
|
|
7984
|
+
function registerDaemonEventLoopLagGauge(read) {
|
|
7985
|
+
if (daemonGaugeRegistered) return;
|
|
7986
|
+
daemonGaugeRegistered = registerEventLoopLagGauge(
|
|
7987
|
+
DAEMON_EVENT_LOOP_LAG,
|
|
7988
|
+
read
|
|
7989
|
+
);
|
|
7990
|
+
}
|
|
7991
|
+
__name(registerDaemonEventLoopLagGauge, "registerDaemonEventLoopLagGauge");
|
|
7992
|
+
function registerAcpEventLoopLagGauge(read) {
|
|
7993
|
+
if (acpGaugeRegistered) return;
|
|
7994
|
+
acpGaugeRegistered = registerEventLoopLagGauge(ACP_EVENT_LOOP_LAG, read);
|
|
7995
|
+
}
|
|
7996
|
+
__name(registerAcpEventLoopLagGauge, "registerAcpEventLoopLagGauge");
|
|
7997
|
+
function registerEventLoopLagGauge(name, read) {
|
|
7998
|
+
const meter = getMeter();
|
|
7999
|
+
if (!meter) return false;
|
|
8000
|
+
meter.createObservableGauge(name, {
|
|
8001
|
+
description: "Event loop lag in milliseconds.",
|
|
8002
|
+
unit: "ms",
|
|
8003
|
+
valueType: ValueType.DOUBLE
|
|
8004
|
+
}).addCallback((result) => {
|
|
8005
|
+
try {
|
|
8006
|
+
const snapshot = read();
|
|
8007
|
+
result.observe(snapshot.meanMs, { stat: "mean" });
|
|
8008
|
+
result.observe(snapshot.p50Ms, { stat: "p50" });
|
|
8009
|
+
result.observe(snapshot.p99Ms, { stat: "p99" });
|
|
8010
|
+
result.observe(snapshot.maxMs, { stat: "max" });
|
|
8011
|
+
} catch {
|
|
8012
|
+
}
|
|
8013
|
+
});
|
|
8014
|
+
return true;
|
|
8015
|
+
}
|
|
8016
|
+
__name(registerEventLoopLagGauge, "registerEventLoopLagGauge");
|
|
8017
|
+
|
|
8018
|
+
// packages/core/src/telemetry/detailed-span-attributes.ts
|
|
8019
|
+
init_esbuild_shims();
|
|
8020
|
+
var SHORT_TRUNCATION_SUFFIX = "...[TRUNCATED]";
|
|
8021
|
+
var debugLogger = createDebugLogger("GEN_AI_CONTENT");
|
|
8022
|
+
function areSensitiveSpanAttributesEnabled(config) {
|
|
8023
|
+
return isTelemetrySdkInitialized() && config.getTelemetryIncludeSensitiveSpanAttributes();
|
|
8024
|
+
}
|
|
8025
|
+
__name(areSensitiveSpanAttributesEnabled, "areSensitiveSpanAttributesEnabled");
|
|
8026
|
+
function truncateContent(content, maxSize = DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH, originalLength = content.length) {
|
|
8027
|
+
if (!Number.isSafeInteger(maxSize) || maxSize < 1) {
|
|
8028
|
+
throw new TypeError(
|
|
8029
|
+
`maxSize must be a positive safe integer, got ${String(maxSize)}`
|
|
8030
|
+
);
|
|
8031
|
+
}
|
|
8032
|
+
if (!Number.isSafeInteger(originalLength) || originalLength < 0) {
|
|
8033
|
+
throw new TypeError(
|
|
8034
|
+
`originalLength must be a non-negative safe integer, got ${String(
|
|
8035
|
+
originalLength
|
|
8036
|
+
)}`
|
|
8037
|
+
);
|
|
8038
|
+
}
|
|
8039
|
+
if (originalLength < content.length) {
|
|
8040
|
+
throw new TypeError(
|
|
8041
|
+
`originalLength must be greater than or equal to content length, got ${originalLength} for content length ${content.length}`
|
|
8042
|
+
);
|
|
8043
|
+
}
|
|
8044
|
+
if (originalLength <= maxSize && content.length <= maxSize) {
|
|
8045
|
+
return { content, truncated: false };
|
|
8046
|
+
}
|
|
8047
|
+
if (originalLength > content.length && content.length <= maxSize) {
|
|
8048
|
+
return { content, truncated: true };
|
|
8049
|
+
}
|
|
8050
|
+
const suffix = `
|
|
8051
|
+
|
|
8052
|
+
[TRUNCATED - Content exceeds configured limit of ${maxSize} characters]`;
|
|
8053
|
+
if (suffix.length >= maxSize) {
|
|
8054
|
+
if (SHORT_TRUNCATION_SUFFIX.length >= maxSize) {
|
|
8055
|
+
return {
|
|
8056
|
+
content: SHORT_TRUNCATION_SUFFIX.slice(0, maxSize),
|
|
8057
|
+
truncated: true
|
|
8058
|
+
};
|
|
8059
|
+
}
|
|
8060
|
+
return {
|
|
8061
|
+
content: content.slice(0, maxSize - SHORT_TRUNCATION_SUFFIX.length) + SHORT_TRUNCATION_SUFFIX,
|
|
8062
|
+
truncated: true
|
|
8063
|
+
};
|
|
8064
|
+
}
|
|
8065
|
+
return {
|
|
8066
|
+
content: content.slice(0, maxSize - suffix.length) + suffix,
|
|
8067
|
+
truncated: true
|
|
8068
|
+
};
|
|
8069
|
+
}
|
|
8070
|
+
__name(truncateContent, "truncateContent");
|
|
8071
|
+
function getMaxContentSize(config) {
|
|
8072
|
+
return config.getTelemetrySensitiveSpanAttributeMaxLength();
|
|
8073
|
+
}
|
|
8074
|
+
__name(getMaxContentSize, "getMaxContentSize");
|
|
8075
|
+
function truncatePrefixedContent(prefix, content, maxSize) {
|
|
8076
|
+
const prefixedContent = `${prefix}${content}`;
|
|
8077
|
+
const result = truncateContent(prefixedContent, maxSize);
|
|
8078
|
+
return {
|
|
8079
|
+
...result,
|
|
8080
|
+
originalLength: content.length
|
|
8081
|
+
};
|
|
8082
|
+
}
|
|
8083
|
+
__name(truncatePrefixedContent, "truncatePrefixedContent");
|
|
8084
|
+
function addAgentInputMessageAttributes(config, span, promptText) {
|
|
8085
|
+
if (!areSensitiveSpanAttributesEnabled(config) || promptText.trim().length === 0) {
|
|
8086
|
+
return;
|
|
8087
|
+
}
|
|
8088
|
+
writeJsonAttribute(config, span, "gen_ai.input.messages", [
|
|
8089
|
+
{
|
|
8090
|
+
role: "user",
|
|
8091
|
+
parts: [{ type: "text", content: promptText }]
|
|
8092
|
+
}
|
|
8093
|
+
]);
|
|
8094
|
+
}
|
|
8095
|
+
__name(addAgentInputMessageAttributes, "addAgentInputMessageAttributes");
|
|
8096
|
+
function addAgentOutputMessageAttributes(config, span, responseText, finishReason) {
|
|
8097
|
+
if (!areSensitiveSpanAttributesEnabled(config) || responseText.trim().length === 0) {
|
|
8098
|
+
return;
|
|
8099
|
+
}
|
|
8100
|
+
const reason = normalizeAgentFinishReason(finishReason);
|
|
8101
|
+
if (!reason) return;
|
|
8102
|
+
writeJsonAttribute(config, span, "gen_ai.output.messages", [
|
|
8103
|
+
{
|
|
8104
|
+
role: "assistant",
|
|
8105
|
+
parts: [{ type: "text", content: responseText }],
|
|
8106
|
+
finish_reason: reason
|
|
8107
|
+
}
|
|
8108
|
+
]);
|
|
8109
|
+
}
|
|
8110
|
+
__name(addAgentOutputMessageAttributes, "addAgentOutputMessageAttributes");
|
|
8111
|
+
function normalizeAgentFinishReason(finishReason) {
|
|
8112
|
+
const reason = finishReason?.trim().toLowerCase();
|
|
8113
|
+
if (!reason || reason === "finish_reason_unspecified") return void 0;
|
|
8114
|
+
if (reason === "stop") return "stop";
|
|
8115
|
+
if (reason === "max_tokens") return "length";
|
|
8116
|
+
if (reason === "tool_calls" || reason === "function_call" || reason === "tool_call") {
|
|
8117
|
+
return "tool_call";
|
|
8118
|
+
}
|
|
8119
|
+
if (reason === "safety" || reason === "recitation" || reason === "language" || reason === "blocklist" || reason === "prohibited_content" || reason === "spii" || reason === "image_safety" || reason === "image_prohibited_content" || reason === "image_recitation" || reason === "image_other") {
|
|
8120
|
+
return "content_filter";
|
|
8121
|
+
}
|
|
8122
|
+
return reason;
|
|
8123
|
+
}
|
|
8124
|
+
__name(normalizeAgentFinishReason, "normalizeAgentFinishReason");
|
|
8125
|
+
var AgentOutputMessageCapture = class {
|
|
8126
|
+
constructor(config) {
|
|
8127
|
+
this.config = config;
|
|
8128
|
+
this.enabled = areSensitiveSpanAttributesEnabled(config);
|
|
8129
|
+
this.maxLength = this.enabled ? config.getTelemetrySensitiveSpanAttributeMaxLength() : 0;
|
|
8130
|
+
}
|
|
8131
|
+
static {
|
|
8132
|
+
__name(this, "AgentOutputMessageCapture");
|
|
8133
|
+
}
|
|
8134
|
+
enabled;
|
|
8135
|
+
maxLength;
|
|
8136
|
+
responseText = "";
|
|
8137
|
+
finishReason;
|
|
8138
|
+
overflow = false;
|
|
8139
|
+
committed;
|
|
8140
|
+
beginResponse() {
|
|
8141
|
+
if (!this.enabled) return;
|
|
8142
|
+
this.clearResponse();
|
|
8143
|
+
this.committed = void 0;
|
|
8144
|
+
}
|
|
8145
|
+
appendText(text) {
|
|
8146
|
+
if (!this.enabled || !text || this.overflow) return;
|
|
8147
|
+
const remaining = this.maxLength - this.responseText.length;
|
|
8148
|
+
if (text.length > remaining) {
|
|
8149
|
+
this.responseText = "";
|
|
8150
|
+
this.overflow = true;
|
|
8151
|
+
this.committed = void 0;
|
|
8152
|
+
return;
|
|
8153
|
+
}
|
|
8154
|
+
this.responseText += text;
|
|
8155
|
+
}
|
|
8156
|
+
observeFinishReason(finishReason) {
|
|
8157
|
+
if (!this.enabled) return;
|
|
8158
|
+
const normalized = normalizeAgentFinishReason(finishReason);
|
|
8159
|
+
if (normalized) this.finishReason = normalized;
|
|
8160
|
+
}
|
|
8161
|
+
restartAttempt(preserveText) {
|
|
8162
|
+
if (!this.enabled) return;
|
|
8163
|
+
if (!preserveText) {
|
|
8164
|
+
this.clearResponse();
|
|
8165
|
+
} else {
|
|
8166
|
+
this.finishReason = void 0;
|
|
8167
|
+
}
|
|
8168
|
+
this.committed = void 0;
|
|
8169
|
+
}
|
|
8170
|
+
commitResponse(hasToolCalls) {
|
|
8171
|
+
if (!this.enabled || hasToolCalls || this.overflow || this.responseText.trim().length === 0 || !this.finishReason) {
|
|
8172
|
+
this.committed = void 0;
|
|
8173
|
+
return;
|
|
8174
|
+
}
|
|
8175
|
+
this.committed = {
|
|
8176
|
+
responseText: this.responseText,
|
|
8177
|
+
finishReason: this.finishReason
|
|
8178
|
+
};
|
|
8179
|
+
}
|
|
8180
|
+
writeToSpan(span) {
|
|
8181
|
+
if (!span || !this.committed) return;
|
|
8182
|
+
addAgentOutputMessageAttributes(
|
|
8183
|
+
this.config,
|
|
8184
|
+
span,
|
|
8185
|
+
this.committed.responseText,
|
|
8186
|
+
this.committed.finishReason
|
|
8187
|
+
);
|
|
8188
|
+
}
|
|
8189
|
+
clearResponse() {
|
|
8190
|
+
this.responseText = "";
|
|
8191
|
+
this.finishReason = void 0;
|
|
8192
|
+
this.overflow = false;
|
|
8193
|
+
}
|
|
8194
|
+
};
|
|
8195
|
+
function addUserPromptAttributes(config, span, promptText) {
|
|
8196
|
+
if (!areSensitiveSpanAttributesEnabled(config) || !promptText) return;
|
|
8197
|
+
const { content, truncated, originalLength } = truncatePrefixedContent(
|
|
8198
|
+
`[USER PROMPT]
|
|
8199
|
+
`,
|
|
8200
|
+
promptText,
|
|
8201
|
+
getMaxContentSize(config)
|
|
8202
|
+
);
|
|
8203
|
+
span.setAttributes({
|
|
8204
|
+
new_context: content,
|
|
8205
|
+
...truncated && {
|
|
8206
|
+
new_context_truncated: true,
|
|
8207
|
+
new_context_original_length: originalLength
|
|
8208
|
+
}
|
|
8209
|
+
});
|
|
8210
|
+
}
|
|
8211
|
+
__name(addUserPromptAttributes, "addUserPromptAttributes");
|
|
8212
|
+
function addToolArgumentsAttributes(config, span, argumentsValue) {
|
|
8213
|
+
if (!areSensitiveSpanAttributesEnabled(config)) return;
|
|
8214
|
+
writeJsonAttribute(
|
|
8215
|
+
config,
|
|
8216
|
+
span,
|
|
8217
|
+
"gen_ai.tool.call.arguments",
|
|
8218
|
+
argumentsValue,
|
|
8219
|
+
true
|
|
8220
|
+
);
|
|
8221
|
+
}
|
|
8222
|
+
__name(addToolArgumentsAttributes, "addToolArgumentsAttributes");
|
|
8223
|
+
function addToolCallResultAttributes(config, span, result) {
|
|
8224
|
+
if (!areSensitiveSpanAttributesEnabled(config)) return;
|
|
8225
|
+
writeJsonAttribute(config, span, "gen_ai.tool.call.result", result, true);
|
|
8226
|
+
}
|
|
8227
|
+
__name(addToolCallResultAttributes, "addToolCallResultAttributes");
|
|
8228
|
+
function writeJsonAttribute(config, span, key, value, requireObject = false) {
|
|
8229
|
+
let serialized;
|
|
8230
|
+
try {
|
|
8231
|
+
serialized = stringifyGenAiJson(
|
|
8232
|
+
value,
|
|
8233
|
+
getMaxContentSize(config),
|
|
8234
|
+
requireObject
|
|
8235
|
+
);
|
|
8236
|
+
} catch {
|
|
8237
|
+
debugLogger.debug(`Failed to serialize ${key} span attribute`);
|
|
8238
|
+
return;
|
|
8239
|
+
}
|
|
8240
|
+
if (serialized === void 0) return;
|
|
8241
|
+
try {
|
|
8242
|
+
span.setAttribute(key, serialized);
|
|
8243
|
+
} catch {
|
|
8244
|
+
debugLogger.debug(`Failed to set ${key} span attribute`);
|
|
8245
|
+
}
|
|
8246
|
+
}
|
|
8247
|
+
__name(writeJsonAttribute, "writeJsonAttribute");
|
|
8248
|
+
|
|
8249
|
+
// packages/core/src/telemetry/index.ts
|
|
8250
|
+
var DEFAULT_TELEMETRY_TARGET = "local" /* LOCAL */;
|
|
8251
|
+
var DEFAULT_OTLP_ENDPOINT = "http://localhost:4317";
|
|
8252
|
+
|
|
8253
|
+
// packages/core/src/telemetry/resource-attributes.ts
|
|
8254
|
+
init_esbuild_shims();
|
|
8255
|
+
init_esm();
|
|
8256
|
+
var RESERVED_RESOURCE_ATTRIBUTE_KEYS = /* @__PURE__ */ new Set([
|
|
8257
|
+
"service.version",
|
|
8258
|
+
"session.id"
|
|
8259
|
+
]);
|
|
8260
|
+
function warn(msg, warnings) {
|
|
8261
|
+
diag.warn(msg);
|
|
8262
|
+
warnings?.push(msg);
|
|
8263
|
+
}
|
|
8264
|
+
__name(warn, "warn");
|
|
8265
|
+
function parseOtelResourceAttributes(raw, warnings) {
|
|
8266
|
+
if (!raw) return {};
|
|
8267
|
+
const out = {};
|
|
8268
|
+
for (const pair of raw.split(",")) {
|
|
8269
|
+
const trimmed = pair.trim();
|
|
8270
|
+
if (!trimmed) continue;
|
|
8271
|
+
const idx = trimmed.indexOf("=");
|
|
8272
|
+
if (idx < 0) {
|
|
8273
|
+
warn(
|
|
8274
|
+
`Skipping malformed OTEL_RESOURCE_ATTRIBUTES entry: "${trimmed}" (hint: percent-encode literal commas as %2C)`,
|
|
8275
|
+
warnings
|
|
8276
|
+
);
|
|
8277
|
+
continue;
|
|
8278
|
+
}
|
|
8279
|
+
const rawKey = trimmed.slice(0, idx).trim();
|
|
8280
|
+
if (!rawKey) continue;
|
|
8281
|
+
const valueRaw = trimmed.slice(idx + 1).trim();
|
|
8282
|
+
let key;
|
|
8283
|
+
try {
|
|
8284
|
+
key = decodeURIComponent(rawKey);
|
|
8285
|
+
} catch {
|
|
8286
|
+
warn(
|
|
8287
|
+
`Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES key "${rawKey}", using raw key`,
|
|
8288
|
+
warnings
|
|
8289
|
+
);
|
|
8290
|
+
key = rawKey;
|
|
8291
|
+
}
|
|
8292
|
+
let value;
|
|
8293
|
+
try {
|
|
8294
|
+
value = decodeURIComponent(valueRaw);
|
|
8295
|
+
} catch {
|
|
8296
|
+
warn(
|
|
8297
|
+
`Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES for key "${key}", using raw value`,
|
|
8298
|
+
warnings
|
|
8299
|
+
);
|
|
8300
|
+
value = valueRaw;
|
|
8301
|
+
}
|
|
8302
|
+
out[key] = value;
|
|
8303
|
+
}
|
|
8304
|
+
return out;
|
|
8305
|
+
}
|
|
8306
|
+
__name(parseOtelResourceAttributes, "parseOtelResourceAttributes");
|
|
8307
|
+
function stripReservedResourceAttributes(attrs, source, warnings) {
|
|
8308
|
+
for (const k of RESERVED_RESOURCE_ATTRIBUTE_KEYS) {
|
|
8309
|
+
if (k in attrs) {
|
|
8310
|
+
warn(`${source} cannot override reserved key "${k}"; ignoring`, warnings);
|
|
8311
|
+
delete attrs[k];
|
|
8312
|
+
}
|
|
8313
|
+
}
|
|
8314
|
+
return attrs;
|
|
8315
|
+
}
|
|
8316
|
+
__name(stripReservedResourceAttributes, "stripReservedResourceAttributes");
|
|
8317
|
+
function coerceStringResourceAttributes(raw, warnings) {
|
|
8318
|
+
if (raw === null || raw === void 0) return {};
|
|
8319
|
+
if (typeof raw !== "object" || Array.isArray(raw)) {
|
|
8320
|
+
warn(
|
|
8321
|
+
"settings.telemetry.resourceAttributes must be an object; ignoring",
|
|
8322
|
+
warnings
|
|
8323
|
+
);
|
|
8324
|
+
return {};
|
|
8325
|
+
}
|
|
8326
|
+
const out = {};
|
|
8327
|
+
for (const [k, v] of Object.entries(raw)) {
|
|
8328
|
+
const key = k.trim();
|
|
8329
|
+
if (!key) {
|
|
8330
|
+
warn(
|
|
8331
|
+
"settings.telemetry.resourceAttributes has an empty or whitespace-only key; ignoring",
|
|
8332
|
+
warnings
|
|
8333
|
+
);
|
|
8334
|
+
continue;
|
|
8335
|
+
}
|
|
8336
|
+
if (typeof v === "string") {
|
|
8337
|
+
out[key] = v;
|
|
8338
|
+
} else {
|
|
8339
|
+
warn(
|
|
8340
|
+
`settings.telemetry.resourceAttributes value for "${key}" must be a string (got ${typeof v}); ignoring`,
|
|
8341
|
+
warnings
|
|
8342
|
+
);
|
|
8343
|
+
}
|
|
8344
|
+
}
|
|
8345
|
+
return out;
|
|
8346
|
+
}
|
|
8347
|
+
__name(coerceStringResourceAttributes, "coerceStringResourceAttributes");
|
|
8348
|
+
|
|
8349
|
+
// packages/core/src/telemetry/config.ts
|
|
8350
|
+
function parseBooleanEnvFlag(value) {
|
|
8351
|
+
if (value === void 0) return void 0;
|
|
8352
|
+
return value === "true" || value === "1";
|
|
8353
|
+
}
|
|
8354
|
+
__name(parseBooleanEnvFlag, "parseBooleanEnvFlag");
|
|
8355
|
+
function parseTelemetryTargetValue(value) {
|
|
8356
|
+
if (value === void 0) return void 0;
|
|
8357
|
+
if (value === "local" /* LOCAL */ || value === "local") {
|
|
8358
|
+
return "local" /* LOCAL */;
|
|
8359
|
+
}
|
|
8360
|
+
if (value === "gcp" /* GCP */ || value === "gcp") {
|
|
8361
|
+
return "gcp" /* GCP */;
|
|
8362
|
+
}
|
|
8363
|
+
return void 0;
|
|
8364
|
+
}
|
|
8365
|
+
__name(parseTelemetryTargetValue, "parseTelemetryTargetValue");
|
|
8366
|
+
function parseSensitiveSpanAttributeMaxLengthEnvValue(envName, value) {
|
|
8367
|
+
if (value === void 0) return void 0;
|
|
8368
|
+
const trimmed = value.trim();
|
|
8369
|
+
const parsed = Number(trimmed);
|
|
8370
|
+
if (!/^\d+$/.test(trimmed) || !isValidSensitiveSpanAttributeMaxLength(parsed)) {
|
|
8371
|
+
throw new FatalConfigError(
|
|
8372
|
+
`Invalid ${envName}: must be a positive integer no greater than ${SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT}, got '${value}'`
|
|
8373
|
+
);
|
|
8374
|
+
}
|
|
8375
|
+
return parsed;
|
|
8376
|
+
}
|
|
8377
|
+
__name(parseSensitiveSpanAttributeMaxLengthEnvValue, "parseSensitiveSpanAttributeMaxLengthEnvValue");
|
|
8378
|
+
function parseSensitiveSpanAttributeMaxLengthSetting(settingName, value) {
|
|
8379
|
+
if (value === void 0) return void 0;
|
|
8380
|
+
if (typeof value !== "number" || !isValidSensitiveSpanAttributeMaxLength(value)) {
|
|
8381
|
+
throw new FatalConfigError(
|
|
8382
|
+
`Invalid ${settingName}: must be a positive integer no greater than ${SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT}, got ${String(
|
|
8383
|
+
value
|
|
8384
|
+
)}`
|
|
8385
|
+
);
|
|
8386
|
+
}
|
|
8387
|
+
return value;
|
|
8388
|
+
}
|
|
8389
|
+
__name(parseSensitiveSpanAttributeMaxLengthSetting, "parseSensitiveSpanAttributeMaxLengthSetting");
|
|
8390
|
+
function parseTelemetryUserId(source, value) {
|
|
8391
|
+
if (value === void 0) return void 0;
|
|
8392
|
+
if (typeof value !== "string") {
|
|
8393
|
+
throw new FatalConfigError(
|
|
8394
|
+
`Invalid ${source}: must be a string, got ${typeof value}`
|
|
8395
|
+
);
|
|
8396
|
+
}
|
|
8397
|
+
return value.trim() || void 0;
|
|
8398
|
+
}
|
|
8399
|
+
__name(parseTelemetryUserId, "parseTelemetryUserId");
|
|
8400
|
+
async function resolveTelemetrySettings(options) {
|
|
8401
|
+
const argv = options.argv ?? {};
|
|
8402
|
+
const env = options.env ?? {};
|
|
8403
|
+
const settings = options.settings ?? {};
|
|
8404
|
+
const enabled = argv.telemetry ?? parseBooleanEnvFlag(env["QWEN_TELEMETRY_ENABLED"]) ?? settings.enabled;
|
|
8405
|
+
const rawTarget = argv.telemetryTarget ?? env["QWEN_TELEMETRY_TARGET"] ?? settings.target;
|
|
8406
|
+
const target = parseTelemetryTargetValue(rawTarget);
|
|
8407
|
+
if (rawTarget !== void 0 && target === void 0) {
|
|
8408
|
+
throw new FatalConfigError(
|
|
8409
|
+
`Invalid telemetry target: ${String(
|
|
8410
|
+
rawTarget
|
|
8411
|
+
)}. Valid values are: local, gcp`
|
|
8412
|
+
);
|
|
8413
|
+
}
|
|
8414
|
+
const otlpEndpoint = argv.telemetryOtlpEndpoint ?? env["QWEN_TELEMETRY_OTLP_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_ENDPOINT"] ?? settings.otlpEndpoint;
|
|
8415
|
+
const rawProtocol = argv.telemetryOtlpProtocol ?? env["QWEN_TELEMETRY_OTLP_PROTOCOL"] ?? settings.otlpProtocol;
|
|
8416
|
+
const otlpProtocol = ["grpc", "http"].find(
|
|
8417
|
+
(p) => p === rawProtocol
|
|
8418
|
+
);
|
|
8419
|
+
if (rawProtocol !== void 0 && otlpProtocol === void 0) {
|
|
8420
|
+
throw new FatalConfigError(
|
|
8421
|
+
`Invalid telemetry OTLP protocol: ${String(
|
|
8422
|
+
rawProtocol
|
|
8423
|
+
)}. Valid values are: grpc, http`
|
|
8424
|
+
);
|
|
8425
|
+
}
|
|
8426
|
+
const logPrompts = argv.telemetryLogPrompts ?? parseBooleanEnvFlag(env["QWEN_TELEMETRY_LOG_PROMPTS"]) ?? settings.logPrompts;
|
|
8427
|
+
const userId = parseTelemetryUserId(
|
|
8428
|
+
"QWEN_TELEMETRY_USER_ID",
|
|
8429
|
+
env["QWEN_TELEMETRY_USER_ID"]
|
|
8430
|
+
) ?? parseTelemetryUserId("telemetry.userId", settings.userId);
|
|
8431
|
+
const includeSensitiveSpanAttributes = parseBooleanEnvFlag(
|
|
8432
|
+
env["QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES"]
|
|
8433
|
+
) ?? settings.includeSensitiveSpanAttributes ?? false;
|
|
8434
|
+
const sensitiveSpanAttributeMaxLength = parseSensitiveSpanAttributeMaxLengthEnvValue(
|
|
8435
|
+
"QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH",
|
|
8436
|
+
env["QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH"]
|
|
8437
|
+
) ?? parseSensitiveSpanAttributeMaxLengthSetting(
|
|
8438
|
+
"telemetry.sensitiveSpanAttributeMaxLength",
|
|
8439
|
+
settings.sensitiveSpanAttributeMaxLength
|
|
8440
|
+
) ?? DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH;
|
|
8441
|
+
const outfile = argv.telemetryOutfile ?? env["QWEN_TELEMETRY_OUTFILE"] ?? settings.outfile;
|
|
8442
|
+
const otlpTracesEndpoint = env["QWEN_TELEMETRY_OTLP_TRACES_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] ?? settings.otlpTracesEndpoint;
|
|
8443
|
+
const otlpLogsEndpoint = env["QWEN_TELEMETRY_OTLP_LOGS_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_LOGS_ENDPOINT"] ?? settings.otlpLogsEndpoint;
|
|
8444
|
+
const otlpMetricsEndpoint = env["QWEN_TELEMETRY_OTLP_METRICS_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_METRICS_ENDPOINT"] ?? settings.otlpMetricsEndpoint;
|
|
8445
|
+
const resourceAttributeWarnings = [];
|
|
8446
|
+
const envResourceAttrs = stripReservedResourceAttributes(
|
|
8447
|
+
parseOtelResourceAttributes(
|
|
8448
|
+
env["OTEL_RESOURCE_ATTRIBUTES"],
|
|
8449
|
+
resourceAttributeWarnings
|
|
8450
|
+
),
|
|
8451
|
+
"OTEL_RESOURCE_ATTRIBUTES",
|
|
8452
|
+
resourceAttributeWarnings
|
|
8453
|
+
);
|
|
8454
|
+
const settingsResourceAttrs = stripReservedResourceAttributes(
|
|
8455
|
+
coerceStringResourceAttributes(
|
|
8456
|
+
settings.resourceAttributes,
|
|
8457
|
+
resourceAttributeWarnings
|
|
8458
|
+
),
|
|
8459
|
+
"settings.telemetry.resourceAttributes",
|
|
8460
|
+
resourceAttributeWarnings
|
|
8461
|
+
);
|
|
8462
|
+
const mergedResourceAttrs = {
|
|
8463
|
+
...envResourceAttrs,
|
|
8464
|
+
...settingsResourceAttrs
|
|
8465
|
+
};
|
|
8466
|
+
const otelServiceName = env["OTEL_SERVICE_NAME"]?.trim();
|
|
8467
|
+
if (otelServiceName) {
|
|
8468
|
+
mergedResourceAttrs["service.name"] = otelServiceName;
|
|
8469
|
+
}
|
|
8470
|
+
const resourceAttributes = Object.keys(mergedResourceAttrs).length ? mergedResourceAttrs : void 0;
|
|
8471
|
+
const metricsIncludeSessionId = parseBooleanEnvFlag(env["QWEN_TELEMETRY_METRICS_INCLUDE_SESSION_ID"]) ?? settings.metrics?.includeSessionId ?? false;
|
|
8472
|
+
return {
|
|
8473
|
+
enabled,
|
|
8474
|
+
target,
|
|
8475
|
+
otlpEndpoint,
|
|
8476
|
+
otlpProtocol,
|
|
8477
|
+
otlpTracesEndpoint,
|
|
8478
|
+
otlpLogsEndpoint,
|
|
8479
|
+
otlpMetricsEndpoint,
|
|
8480
|
+
logPrompts,
|
|
8481
|
+
userId,
|
|
8482
|
+
includeSensitiveSpanAttributes,
|
|
8483
|
+
sensitiveSpanAttributeMaxLength,
|
|
8484
|
+
outfile,
|
|
8485
|
+
resourceAttributes,
|
|
8486
|
+
metrics: { includeSessionId: metricsIncludeSessionId },
|
|
8487
|
+
resourceAttributeWarnings: resourceAttributeWarnings.length ? resourceAttributeWarnings : void 0
|
|
8488
|
+
};
|
|
8489
|
+
}
|
|
8490
|
+
__name(resolveTelemetrySettings, "resolveTelemetrySettings");
|
|
8491
|
+
|
|
7595
8492
|
// packages/core/src/skills/skill-curator.ts
|
|
7596
8493
|
init_esbuild_shims();
|
|
7597
8494
|
var import_proper_lockfile = __toESM(require_proper_lockfile(), 1);
|
|
@@ -7602,7 +8499,7 @@ import * as path2 from "node:path";
|
|
|
7602
8499
|
// packages/core/src/utils/yaml-parser.ts
|
|
7603
8500
|
init_esbuild_shims();
|
|
7604
8501
|
var yaml = __toESM(require_dist(), 1);
|
|
7605
|
-
var
|
|
8502
|
+
var debugLogger2 = createDebugLogger("YAML_PARSER");
|
|
7606
8503
|
function parse2(yamlString) {
|
|
7607
8504
|
try {
|
|
7608
8505
|
const result = yaml.parse(yamlString, {
|
|
@@ -7619,11 +8516,11 @@ function parse2(yamlString) {
|
|
|
7619
8516
|
if (result && typeof result === "object" && !Array.isArray(result)) {
|
|
7620
8517
|
return stripNullValues(result);
|
|
7621
8518
|
}
|
|
7622
|
-
|
|
8519
|
+
debugLogger2.warn(
|
|
7623
8520
|
`Full YAML parser returned non-object (${typeof result}), falling back to simple parser`
|
|
7624
8521
|
);
|
|
7625
8522
|
} catch (error) {
|
|
7626
|
-
|
|
8523
|
+
debugLogger2.warn(
|
|
7627
8524
|
`Full YAML parser failed, falling back to simple parser: ${error}`
|
|
7628
8525
|
);
|
|
7629
8526
|
}
|
|
@@ -7936,7 +8833,7 @@ var SkillErrorCode = {
|
|
|
7936
8833
|
var AUTO_SKILL_CURATOR_INTERVAL_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
7937
8834
|
var AUTO_SKILL_STALE_AFTER_MS = 30 * 24 * 60 * 60 * 1e3;
|
|
7938
8835
|
var AUTO_SKILL_ARCHIVE_AFTER_MS = 90 * 24 * 60 * 60 * 1e3;
|
|
7939
|
-
var
|
|
8836
|
+
var debugLogger3 = createDebugLogger("SKILL_CURATOR");
|
|
7940
8837
|
var AUTO_SKILL_PREFIX = "auto-skill-";
|
|
7941
8838
|
var CURATOR_STATE_VERSION = 1;
|
|
7942
8839
|
var CURATOR_STATE_FILE = "skill-curator.json";
|
|
@@ -7978,7 +8875,7 @@ var LOCK_OPTIONS = {
|
|
|
7978
8875
|
},
|
|
7979
8876
|
stale: 1e4,
|
|
7980
8877
|
onCompromised: /* @__PURE__ */ __name((err) => {
|
|
7981
|
-
|
|
8878
|
+
debugLogger3.warn("skill curator lock compromised:", err);
|
|
7982
8879
|
}, "onCompromised")
|
|
7983
8880
|
};
|
|
7984
8881
|
function getCuratorPaths(projectRoot) {
|
|
@@ -8655,10 +9552,10 @@ __name(restoreArchivedAutoSkill, "restoreArchivedAutoSkill");
|
|
|
8655
9552
|
|
|
8656
9553
|
// packages/core/src/hooks/registerSkillHooks.ts
|
|
8657
9554
|
init_esbuild_shims();
|
|
8658
|
-
var
|
|
9555
|
+
var debugLogger4 = createDebugLogger("SKILL_HOOKS");
|
|
8659
9556
|
function registerSkillHooks(sessionHooksManager, sessionId, skill) {
|
|
8660
9557
|
if (!skill.hooks) {
|
|
8661
|
-
|
|
9558
|
+
debugLogger4.debug(`Skill '${skill.name}' has no hooks to register`);
|
|
8662
9559
|
return 0;
|
|
8663
9560
|
}
|
|
8664
9561
|
const hooksSettings = skill.hooks;
|
|
@@ -8670,7 +9567,7 @@ function registerSkillHooks(sessionHooksManager, sessionId, skill) {
|
|
|
8670
9567
|
const matcherPattern = matcher.matcher || "";
|
|
8671
9568
|
for (const hook of matcher.hooks) {
|
|
8672
9569
|
if (hook.type === "function" /* Function */) {
|
|
8673
|
-
|
|
9570
|
+
debugLogger4.debug(
|
|
8674
9571
|
"Skipping function hook from skill (not supported in frontmatter)"
|
|
8675
9572
|
);
|
|
8676
9573
|
continue;
|
|
@@ -8683,7 +9580,7 @@ function registerSkillHooks(sessionHooksManager, sessionId, skill) {
|
|
|
8683
9580
|
(entry) => entry.matcher === matcherPattern && entry.skillRoot === skill.skillRoot && hookConfigKey(entry.config) === hookConfigKey(hookConfig)
|
|
8684
9581
|
);
|
|
8685
9582
|
if (alreadyRegistered) {
|
|
8686
|
-
|
|
9583
|
+
debugLogger4.debug(
|
|
8687
9584
|
`Hook for ${eventName} with matcher '${matcherPattern}' from skill '${skill.name}' already registered; skipping duplicate`
|
|
8688
9585
|
);
|
|
8689
9586
|
continue;
|
|
@@ -8696,14 +9593,14 @@ function registerSkillHooks(sessionHooksManager, sessionId, skill) {
|
|
|
8696
9593
|
{ skillRoot: skill.skillRoot }
|
|
8697
9594
|
);
|
|
8698
9595
|
registeredCount++;
|
|
8699
|
-
|
|
9596
|
+
debugLogger4.debug(
|
|
8700
9597
|
`Registered hook for ${eventName} with matcher '${matcherPattern}' from skill '${skill.name}'`
|
|
8701
9598
|
);
|
|
8702
9599
|
}
|
|
8703
9600
|
}
|
|
8704
9601
|
}
|
|
8705
9602
|
if (registeredCount > 0) {
|
|
8706
|
-
|
|
9603
|
+
debugLogger4.info(
|
|
8707
9604
|
`Registered ${registeredCount} hooks from skill '${skill.name}'`
|
|
8708
9605
|
);
|
|
8709
9606
|
}
|
|
@@ -8729,6 +9626,30 @@ function prepareHookConfig(hook, skillRoot) {
|
|
|
8729
9626
|
__name(prepareHookConfig, "prepareHookConfig");
|
|
8730
9627
|
|
|
8731
9628
|
export {
|
|
9629
|
+
parseBooleanEnvFlag,
|
|
9630
|
+
resolveTelemetrySettings,
|
|
9631
|
+
initializeDaemonMetrics,
|
|
9632
|
+
registerDaemonGaugeCallbacks,
|
|
9633
|
+
recordDaemonHttpRequest,
|
|
9634
|
+
recordDaemonSessionLifecycle,
|
|
9635
|
+
recordDaemonChannelLifecycle,
|
|
9636
|
+
recordDaemonPromptQueueWait,
|
|
9637
|
+
recordDaemonPromptDuration,
|
|
9638
|
+
recordDaemonBridgeError,
|
|
9639
|
+
recordDaemonCancel,
|
|
9640
|
+
recordDaemonPipeMessage,
|
|
9641
|
+
startEventLoopLagMonitor,
|
|
9642
|
+
registerDaemonEventLoopLagGauge,
|
|
9643
|
+
registerAcpEventLoopLagGauge,
|
|
9644
|
+
areSensitiveSpanAttributesEnabled,
|
|
9645
|
+
addAgentInputMessageAttributes,
|
|
9646
|
+
addAgentOutputMessageAttributes,
|
|
9647
|
+
AgentOutputMessageCapture,
|
|
9648
|
+
addUserPromptAttributes,
|
|
9649
|
+
addToolArgumentsAttributes,
|
|
9650
|
+
addToolCallResultAttributes,
|
|
9651
|
+
DEFAULT_TELEMETRY_TARGET,
|
|
9652
|
+
DEFAULT_OTLP_ENDPOINT,
|
|
8732
9653
|
require_dist,
|
|
8733
9654
|
SKILL_FILE_NAME,
|
|
8734
9655
|
getProjectSkillsRoot,
|
|
@@ -8756,11 +9677,16 @@ export {
|
|
|
8756
9677
|
};
|
|
8757
9678
|
/**
|
|
8758
9679
|
* @license
|
|
8759
|
-
* Copyright
|
|
9680
|
+
* Copyright 2026 Qwen Team
|
|
8760
9681
|
* SPDX-License-Identifier: Apache-2.0
|
|
8761
9682
|
*/
|
|
8762
9683
|
/**
|
|
8763
9684
|
* @license
|
|
8764
|
-
* Copyright
|
|
9685
|
+
* Copyright 2025 Google LLC
|
|
9686
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
9687
|
+
*/
|
|
9688
|
+
/**
|
|
9689
|
+
* @license
|
|
9690
|
+
* Copyright 2025 Qwen
|
|
8765
9691
|
* SPDX-License-Identifier: Apache-2.0
|
|
8766
9692
|
*/
|