@qwen-code/qwen-code 0.21.9 → 0.21.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +1 -1
- package/bundled/qc-helper/docs/features/status-line.md +13 -13
- package/bundled/qc-helper/docs/integration-jetbrains.md +1 -0
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +14 -10
- package/bundled/review/SKILL.md +2 -2
- package/chunks/{MaxSizedBox-6BZANW7X.js → MaxSizedBox-FKXYULMW.js} +5 -5
- package/chunks/{StandaloneSessionPicker-VDC5KE7T.js → StandaloneSessionPicker-OQS3M7AY.js} +19 -19
- package/chunks/{acp-startup-profiler-B5BYAMYQ.js → acp-startup-profiler-VNTFWYAC.js} +2 -2
- package/chunks/{acpAgent-F2NSBCUF.js → acpAgent-AGS6HLQQ.js} +95 -43
- package/chunks/{agent-VOHJOEBB.js → agent-4NCVO27U.js} +5 -5
- package/chunks/{agent-headless-J5NFOPHP.js → agent-headless-HYEHZFH6.js} +5 -5
- package/chunks/{anthropicContentGenerator-SSFE2753.js → anthropicContentGenerator-D3Y4RFT4.js} +1 -1
- package/chunks/{bridge-NQIZZLAS.js → bridge-FHINXZMN.js} +8 -8
- package/chunks/{channel-settings-store-VIY2OENO.js → channel-settings-store-OXYG5S5X.js} +11 -11
- package/chunks/{channel-worker-group-MSHT6CWR.js → channel-worker-group-WQP4RCDO.js} +3 -3
- package/chunks/{channel-worker-manager-XXD3GDSK.js → channel-worker-manager-MRDFAKIM.js} +3 -3
- package/chunks/{chunk-7AEPJGL4.js → chunk-26CXSA6V.js} +1 -1
- package/chunks/{chunk-KTQGGPGV.js → chunk-2PLNY5TN.js} +4 -4
- package/chunks/{chunk-G2TX5ZXC.js → chunk-47PEPJO7.js} +3 -3
- package/chunks/{chunk-3XVDTHBJ.js → chunk-4MKXUHXY.js} +2 -2
- package/chunks/{chunk-D7BXVKSF.js → chunk-4WL6SY4F.js} +1 -1
- package/chunks/{chunk-P3RBMQ4P.js → chunk-5MZCSWI4.js} +4 -4
- package/chunks/{chunk-LP2QGNSP.js → chunk-624NHDGB.js} +3 -1
- package/chunks/{chunk-FBMCDU63.js → chunk-6LP743KE.js} +4 -4
- package/chunks/{chunk-II6G3EY6.js → chunk-7GTMV7UE.js} +339 -213
- package/chunks/{chunk-4XQNB3KN.js → chunk-A7XMDZRI.js} +2 -2
- package/chunks/{chunk-PNBBJOCP.js → chunk-AAE6SR4Q.js} +1 -1
- package/chunks/{chunk-JUWS2Z5K.js → chunk-ABVRJU3D.js} +5 -5
- package/chunks/{chunk-IOEZE2YT.js → chunk-AEL7KN2O.js} +1 -1
- package/chunks/{chunk-OGDIJKHK.js → chunk-AQAJJMRR.js} +1 -1
- package/chunks/{chunk-AKJQSWV4.js → chunk-BSI645OU.js} +2 -2
- package/chunks/{chunk-FCLHHEUK.js → chunk-D27I6YJT.js} +11 -11
- package/chunks/{chunk-P2FK2HBV.js → chunk-DCZEPFB4.js} +2 -2
- package/chunks/{chunk-GAKGOXTC.js → chunk-EBZ6BJTF.js} +1 -1
- package/chunks/{chunk-KSAFZ5TA.js → chunk-ECWR5LQR.js} +1 -1
- package/chunks/{chunk-XX7QFP34.js → chunk-EI3NWELG.js} +116 -62
- package/chunks/{chunk-P4ZEZSJZ.js → chunk-F24A2JBM.js} +260 -65
- package/chunks/{chunk-DH5YXSIF.js → chunk-F6WDTQ3M.js} +2 -2
- package/chunks/{chunk-ZOSTTOUJ.js → chunk-GWVUR3QZ.js} +1 -1
- package/chunks/{chunk-BZP4QPNK.js → chunk-IBUGFUXC.js} +9 -9
- package/chunks/{chunk-SCAZZ3Q4.js → chunk-IRZ2ZH72.js} +4 -4
- package/chunks/{chunk-OGNFHGIG.js → chunk-IWTMYQ32.js} +4 -4
- package/chunks/{chunk-CG3WBKJK.js → chunk-JT7XS4YW.js} +1 -1
- package/chunks/{chunk-MTCYGTWH.js → chunk-KID7K6H2.js} +4 -4
- package/chunks/{chunk-DGEIYUC3.js → chunk-KM73TBQ4.js} +7 -1
- package/chunks/{chunk-TZ6KJ44L.js → chunk-KONVMRK7.js} +1 -1
- package/chunks/{scheduler-YNQNOU2E.js → chunk-KZ22NXBY.js} +238 -110
- package/chunks/{chunk-RBHQXGDK.js → chunk-LLCWZQCU.js} +1 -1
- package/chunks/{chunk-UJUM2SRN.js → chunk-MIKXJYZB.js} +27 -26
- package/chunks/{chunk-THIKWITR.js → chunk-NDU63YLI.js} +2 -2
- package/chunks/{chunk-ATMO54WE.js → chunk-NEOXOWYH.js} +2 -2
- package/chunks/{chunk-QSNSL4R4.js → chunk-NRLFZWCT.js} +1 -1
- package/chunks/{chunk-TQCYNLNJ.js → chunk-NV65ZUVM.js} +1 -1
- package/chunks/{chunk-HZGBKOX3.js → chunk-O3EU6GMH.js} +2 -2
- package/chunks/{chunk-46YJDYCU.js → chunk-OCSFNUU4.js} +7 -7
- package/chunks/{chunk-T5RLUXWJ.js → chunk-OJUQF2PL.js} +2 -2
- package/chunks/{chunk-ZTQSOV56.js → chunk-OONWZLFK.js} +3 -3
- package/chunks/{chunk-23VQTELM.js → chunk-P3BJLFSZ.js} +1 -1
- package/chunks/{chunk-BIRWP6LU.js → chunk-Q3AL4JQ3.js} +1 -1
- package/chunks/{chunk-CMOBWHWW.js → chunk-QBJYSIQ4.js} +1 -1
- package/chunks/{chunk-XTY5DN4Y.js → chunk-QG3FFJYU.js} +1 -1
- package/chunks/{chunk-W3FSZSF2.js → chunk-QGNOFE5E.js} +1 -1
- package/chunks/{chunk-3WDYBTTI.js → chunk-QJMOAMXT.js} +4 -4
- package/chunks/{chunk-67N6HB5H.js → chunk-QUI267ZP.js} +1 -0
- package/chunks/{chunk-K4ADGWHU.js → chunk-TRRF5BSP.js} +1 -1
- package/chunks/{chunk-7GOYZQPR.js → chunk-UBX6NL47.js} +3 -3
- package/chunks/{chunk-WP5VOXF7.js → chunk-UEOKWYGY.js} +1 -1
- package/chunks/{chunk-HADWBW5R.js → chunk-UMD7WQTR.js} +4 -4
- package/chunks/{chunk-RVSTTOJ4.js → chunk-URKIBIFC.js} +2 -2
- package/chunks/{chunk-7S4JBJLU.js → chunk-VSFKIRRW.js} +3 -3
- package/chunks/{chunk-ZBXGWQ4S.js → chunk-VWKER4ZH.js} +2 -2
- package/chunks/{chunk-M2PNLYGY.js → chunk-W5UC37EE.js} +2 -0
- package/chunks/{chunk-BT6GQIEJ.js → chunk-X2UOOG5V.js} +1 -1
- package/chunks/{chunk-WGK4TSB7.js → chunk-XVHYA33G.js} +3 -3
- package/chunks/{chunk-BAMN6XSD.js → chunk-Y3OVRWRY.js} +1 -1
- package/chunks/{chunk-PVOGHGSF.js → chunk-Y4R47ZUH.js} +6 -6
- package/chunks/{chunk-LZZLUCRS.js → chunk-YF5MALI4.js} +3 -3
- package/chunks/{chunk-5RBDAGC6.js → chunk-YWPSGJFI.js} +2 -2
- package/chunks/{chunk-MHP476D3.js → chunk-Z4JX4NSH.js} +52 -39
- package/chunks/{chunk-T6HEQR2Q.js → chunk-ZJ4W6SUY.js} +1 -1
- package/chunks/{chunk-UYAUA63Q.js → chunk-ZRBMO3C7.js} +1 -1
- package/chunks/{chunk-KTKYGS2P.js → chunk-ZZCWJWTF.js} +8 -1
- package/chunks/{computer-use-PMZ7ICGY.js → computer-use-WQFK33Z3.js} +5 -5
- package/chunks/{contextCommand-GEZU7YHE.js → contextCommand-7EOZND7C.js} +7 -7
- package/chunks/{core-runtime-HRJI2MN6.js → core-runtime-FGMQRM6E.js} +5 -5
- package/chunks/{create-sub-session-VBNVI4YU.js → create-sub-session-QM2K5HLZ.js} +6 -6
- package/chunks/{daemon-POSQPD3G.js → daemon-GWD7BT6E.js} +46 -5
- package/chunks/{daemon-status-provider-N4CRQKFI.js → daemon-status-provider-L3J6GKCT.js} +12 -12
- package/chunks/{daemon-trust-policy-BHO3JUHM.js → daemon-trust-policy-4PHPY23S.js} +11 -11
- package/chunks/{daemon-trust-policy-monitor-YEKJ2726.js → daemon-trust-policy-monitor-6UKEABN5.js} +11 -11
- package/chunks/{deferred-core-runtime-SH57E3J3.js → deferred-core-runtime-67GJXHXS.js} +5 -5
- package/chunks/{earlyInputCapture-B2JJ2HME.js → earlyInputCapture-IWMYR6OB.js} +5 -5
- package/chunks/{edit-7FTXENAN.js → edit-ZFGROCAF.js} +5 -5
- package/chunks/{enter-worktree-JPHV2PBG.js → enter-worktree-TZZZCDM5.js} +5 -5
- package/chunks/{enterPlanMode-CGBJ3AHJ.js → enterPlanMode-U77BI3R6.js} +5 -5
- package/chunks/{environment-LXASZAHD.js → environment-HC37DS2I.js} +7 -7
- package/chunks/{errors-XIGVT2AD.js → errors-6AG54JPD.js} +7 -7
- package/chunks/{exit-worktree-DKSGXW65.js → exit-worktree-UYYWFPNK.js} +5 -5
- package/chunks/{exitPlanMode-THFL2HYN.js → exitPlanMode-RWJR2KGB.js} +5 -5
- package/chunks/{fast-path-4NXAT5UL.js → fast-path-F5FSZ3O7.js} +2 -2
- package/chunks/{gemini-B3N6FACU.js → gemini-NKQHYM36.js} +76 -52
- package/chunks/{geminiContentGenerator-YYFE2HIE.js → geminiContentGenerator-HCWZOUX3.js} +1 -1
- package/chunks/{glob-BPHSCFJP.js → glob-3PDXKBAO.js} +5 -5
- package/chunks/{goal-tools-PXWN5VK3.js → goal-tools-SWNB6GP4.js} +1 -1
- package/chunks/{grep-ROZIRFLU.js → grep-5HZKZYVD.js} +5 -5
- package/chunks/{handleAutoUpdate-WV6SPZQB.js → handleAutoUpdate-NHFSGYTF.js} +9 -9
- package/chunks/{i18n-YWJWPQKD.js → i18n-Q27KKNDL.js} +6 -6
- package/chunks/{image-gen-SISRZ6FS.js → image-gen-2Z2RJ6W7.js} +1 -1
- package/chunks/{initializer-66OAD6GO.js → initializer-Y5DJLT43.js} +11 -11
- package/chunks/{installationInfo-3YUGIP36.js → installationInfo-XXB75T7O.js} +6 -6
- package/chunks/{list-VEYR66XB.js → list-YHNQ32CS.js} +14 -14
- package/chunks/{loadedSettingsAdapter-V2JCPCYD.js → loadedSettingsAdapter-GHUQK7H4.js} +11 -11
- package/chunks/{loggingContentGenerator-RBLNDREC.js → loggingContentGenerator-6NTFBM7Q.js} +1 -1
- package/chunks/{managed-npm-update-C5ID5R4R.js → managed-npm-update-SPHYQUWZ.js} +6 -6
- package/chunks/{mcp-OZ54NZJQ.js → mcp-EA3KO6FS.js} +11 -11
- package/chunks/{monitor-7Y4TVFTK.js → monitor-ZBBPAA54.js} +5 -5
- package/chunks/{nonInteractiveCli-QEK4LHAC.js → nonInteractiveCli-NNOR56HU.js} +35 -35
- package/chunks/{notebook-edit-OG35EBGY.js → notebook-edit-5W3FW7Z2.js} +5 -5
- package/chunks/{openaiContentGenerator-443BNRPJ.js → openaiContentGenerator-TQANPEVZ.js} +1 -1
- package/chunks/{pidfile-ZK4OLRZA.js → pidfile-EQOBLH4E.js} +5 -5
- package/chunks/{processUtils-4YGB4RUZ.js → processUtils-7XQG7EHS.js} +2 -2
- package/chunks/{qwenContentGenerator-D5C2LCSZ.js → qwenContentGenerator-BKCPHHXU.js} +5 -5
- package/chunks/{qwenOAuth2-Z4YQBMYN.js → qwenOAuth2-BJ6PQKE6.js} +1 -1
- package/chunks/{read-file-EXTJLWMU.js → read-file-KKTXGIZD.js} +1 -1
- package/chunks/{resumeHistoryUtils-UPCGRJUL.js → resumeHistoryUtils-6N6XGJJW.js} +8 -8
- package/chunks/{ripGrep-QBVIRCU4.js → ripGrep-SJVAAYDV.js} +5 -5
- package/chunks/{run-qwen-serve-ZYGJNE3E.js → run-qwen-serve-BCKBCAMX.js} +34 -34
- package/chunks/{runtime-BZZ4LWCP.js → runtime-E2437YKL.js} +12 -12
- package/chunks/scheduler-K3D5Z655.js +108 -0
- package/chunks/{serve-LJHAXDCH.js → serve-IH4XR5IL.js} +11 -11
- package/chunks/{server-ADMLELR6.js → server-UD6INW7J.js} +616 -245
- package/chunks/{session-YKZXFFTM.js → session-GR4ZEVW4.js} +43 -44
- package/chunks/{settings-EQBUAQ7Y.js → settings-5O24D3OJ.js} +10 -10
- package/chunks/{shell-3QZOJGTT.js → shell-UTLWLG5G.js} +5 -5
- package/chunks/{skill-UWSSMXE7.js → skill-QQAZL4VO.js} +1 -1
- package/chunks/{skill-settings-T6MLB7NU.js → skill-settings-P3YHJVBZ.js} +10 -10
- package/chunks/{spawnChannel-VS7ZFUFP.js → spawnChannel-UAQMH6Y6.js} +5 -5
- package/chunks/{standalone-update-2W26SRRO.js → standalone-update-QP742MGP.js} +7 -7
- package/chunks/{startInteractiveUI-CVS7K3D6.js → startInteractiveUI-YCS6AEPN.js} +1209 -926
- package/chunks/{team-create-4WFTNNUL.js → team-create-WFH7OCDQ.js} +5 -5
- package/chunks/{team-plan-approval-DBYI33S3.js → team-plan-approval-EGTT53MV.js} +5 -5
- package/chunks/{terminal-image-renderer-S5WPPQKH.js → terminal-image-renderer-BWRESAQ7.js} +5 -5
- package/chunks/{theme-manager-LI2RIOVR.js → theme-manager-ZNDGAHJN.js} +5 -5
- package/chunks/{tool-search-4773EUQ4.js → tool-search-TI5PTIBF.js} +1 -1
- package/chunks/{total-session-admission-PAY5CH2Z.js → total-session-admission-66UDSOHO.js} +9 -9
- package/chunks/{trustedFolders-FRSLE674.js → trustedFolders-4KYHA4IG.js} +6 -6
- package/chunks/{update-relaunch-ZSFQTU6M.js → update-relaunch-WB6LGIF2.js} +5 -5
- package/chunks/{updateCheck-AXWSO7KA.js → updateCheck-LOS5GYFC.js} +8 -8
- package/chunks/{useAutoAcceptIndicator-VHLXIA7U.js → useAutoAcceptIndicator-MHAPY52L.js} +11 -11
- package/chunks/{validateNonInterActiveAuth-PDJECMFU.js → validateNonInterActiveAuth-QV22HNQU.js} +32 -32
- package/chunks/{version-RBN764QS.js → version-DALWZHKQ.js} +1 -1
- package/chunks/{web-fetch-7BJK42AF.js → web-fetch-JMJVMYFE.js} +1 -1
- package/chunks/{web-search-L2CILQXV.js → web-search-DNDUIPU5.js} +2 -2
- package/chunks/{workflow-5VH2R74I.js → workflow-JGNN64PM.js} +6 -6
- package/chunks/{workspace-providers-status-OZTQ6JFH.js → workspace-providers-status-K22B3Z6B.js} +13 -13
- package/chunks/{workspace-registration-store-IX5RJQS5.js → workspace-registration-store-LRJG7QA4.js} +1 -1
- package/chunks/{workspace-registry-73N4BGG4.js → workspace-registry-KVXIFM36.js} +9 -9
- package/chunks/{workspace-service-I5RUPSNV.js → workspace-service-PO4AAKKT.js} +15 -15
- package/chunks/{workspace-skills-status-DMK6VYDO.js → workspace-skills-status-DDYCBVSH.js} +11 -11
- package/chunks/{workspace-trust-reconciler-QX4RL3TC.js → workspace-trust-reconciler-DOZPCVHG.js} +15 -15
- package/chunks/{write-file-UGDD5UTS.js → write-file-TT6MWIKC.js} +5 -5
- package/chunks/{zoom-image-ZAHEO3YP.js → zoom-image-CNC77ZMA.js} +1 -1
- package/cli.js +13 -13
- package/package.json +3 -3
- package/web-shell/assets/{arc-CHY4saMJ.js → arc-CDk0d60K.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-Bu6CwvHj.js → architectureDiagram-3BPJPVTR-h-W3I2lP.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-XGt6iGf_.js → blockDiagram-GPEHLZMM-D1pvSmZg.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-CBbYl19W.js → c4Diagram-AAUBKEIU-ByAm5ZNf.js} +1 -1
- package/web-shell/assets/channel-DPFUV4oi.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-BEhmVrdx.js → chunk-2J33WTMH-VrGPPOGV.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-fQLyE0Bg.js → chunk-4BX2VUAB-B7hTowgG.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-yGdtyx4a.js → chunk-55IACEB6-j1Fq8DpE.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DYbX2GLo.js → chunk-727SXJPM-UjABYpF2.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-DyKTEsYn.js → chunk-AQP2D5EJ-D4uBItrs.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-D8Uy_GzX.js → chunk-FMBD7UC4-DeFbKlb8.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-C8wNR2K7.js → chunk-ND2GUHAM-rQJ8TIgT.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BnybNxnt.js → chunk-QZHKN3VN-DAGcRxvq.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CLm0hVvw.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CLm0hVvw.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-jq4uiFRp.js → cose-bilkent-S5V4N54A-MaE7MJSt.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-Bs7oye1U.js → dagre-BM42HDAG-DzijYGSb.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BHGGJNyM.js → diagram-2AECGRRQ-WdbG7WnX.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BJezVLGT.js → diagram-5GNKFQAL-NYutsBnw.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-5JzQN_rL.js → diagram-KO2AKTUF-Dqg0eBY0.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BlPYOgY9.js → diagram-LMA3HP47-C7vRP2Lb.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CtMHEaFK.js → diagram-OG6HWLK6-B2sEPpPt.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CRNdq2AB.js → erDiagram-TEJ5UH35-a4zIbzm8.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-De1WwLzu.js → flowDiagram-I6XJVG4X-BK9y89ya.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-YbWfL5Zn.js → ganttDiagram-6RSMTGT7-wUQTSNvV.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DzCN8bmd.js → gitGraphDiagram-PVQCEYII-Dnzt4SAi.js} +1 -1
- package/web-shell/assets/{index-CocPvF9Q.js → index-BA3wUcKL.js} +1 -1
- package/web-shell/assets/{index-BDOGGGaN.css → index-BjC3yjjL.css} +2 -2
- package/web-shell/assets/index-QzFq6w7o.js +1775 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DLHoopnE.js → infoDiagram-5YYISTIA-DcaoToij.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-XnbU04SS.js → ishikawaDiagram-YF4QCWOH-DzduqhP2.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CipPyEeJ.js → journeyDiagram-JHISSGLW-BvviZR_O.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DrSeyE5d.js → kanban-definition-UN3LZRKU-Efm2JxY3.js} +1 -1
- package/web-shell/assets/{linear-LrBKnAo_.js → linear-DtY3IbOs.js} +1 -1
- package/web-shell/assets/{mermaid.core-C3U9UVmf.js → mermaid.core-PzpFqoMe.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DqRWgC9H.js → mindmap-definition-RKZ34NQL-BLlTkHS0.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-BNXY5p6H.js → pieDiagram-4H26LBE5-D-mKF-jE.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Ccj9QzE4.js → quadrantDiagram-W4KKPZXB-DYCzslGm.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CjPM2_gx.js → requirementDiagram-4Y6WPE33-Dfpxlk7R.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-C0RsvKbj.js → sankeyDiagram-5OEKKPKP-D5cRaaxh.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-ClN1P5z7.js → sequenceDiagram-3UESZ5HK-s04DReiS.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-By0eiB2Y.js → stateDiagram-AJRCARHV-01UNFgnb.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DXb5olqv.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-g_iaSQgv.js → timeline-definition-PNZ67QCA-DX8_wZBC.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-y9ZqJ-TD.js → vennDiagram-CIIHVFJN-BK0FlBme.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-BVVfaxpF.js → wardley-L42UT6IY-DkPc9UlD.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-D3ooZKZT.js → wardleyDiagram-YWT4CUSO-DNKkpDAo.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-6GXrY6M1.js → xychartDiagram-2RQKCTM6-CiPwg8QG.js} +1 -1
- package/web-shell/index.html +2 -2
- package/web-shell/assets/channel-B40srHOa.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-qumcXQW_.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-qumcXQW_.js +0 -1
- package/web-shell/assets/index-DSH2KrMc.js +0 -1771
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Ds0WlK3F.js +0 -1
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
loadSettings
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ABVRJU3D.js";
|
|
6
6
|
import {
|
|
7
7
|
getCurrentLanguage
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-UEOKWYGY.js";
|
|
9
9
|
import {
|
|
10
10
|
isWorkspaceTrusted
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-GWVUR3QZ.js";
|
|
12
12
|
import {
|
|
13
13
|
require_strip_json_comments
|
|
14
14
|
} from "./chunk-NPQ5ZKRP.js";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
isGatedMcpScope,
|
|
24
24
|
normalizeClaudeMcpServer,
|
|
25
25
|
runWithTimeout
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-EI3NWELG.js";
|
|
27
27
|
import {
|
|
28
28
|
atomicWriteFile
|
|
29
29
|
} from "./chunk-FOGU3LJX.js";
|
|
@@ -64,11 +64,17 @@ function clampReasoningEffort(requested, supported) {
|
|
|
64
64
|
return ranked[ranked.length - 1];
|
|
65
65
|
}
|
|
66
66
|
__name(clampReasoningEffort, "clampReasoningEffort");
|
|
67
|
+
function applyReasoningEffort(config, effort) {
|
|
68
|
+
config.setReasoningEffort(effort);
|
|
69
|
+
return config.getReasoningEffort() === effort;
|
|
70
|
+
}
|
|
71
|
+
__name(applyReasoningEffort, "applyReasoningEffort");
|
|
67
72
|
|
|
68
73
|
export {
|
|
69
74
|
REASONING_EFFORT_TIERS,
|
|
70
75
|
normalizeReasoningEffort,
|
|
71
|
-
clampReasoningEffort
|
|
76
|
+
clampReasoningEffort,
|
|
77
|
+
applyReasoningEffort
|
|
72
78
|
};
|
|
73
79
|
/**
|
|
74
80
|
* @license
|
|
@@ -5,89 +5,18 @@ import {
|
|
|
5
5
|
} from "./chunk-KW7NOTN6.js";
|
|
6
6
|
import {
|
|
7
7
|
DEFAULT_OPENAI_LOG_RETENTION_DAYS
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-5EJZE3FP.js";
|
|
8
|
+
} from "./chunk-UBX6NL47.js";
|
|
10
9
|
import {
|
|
11
10
|
FILE_HISTORY_DIR,
|
|
12
11
|
getSubagentsRootDir
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-GOFAQQZA.js";
|
|
15
|
-
import "./chunk-5M6IDOMF.js";
|
|
16
|
-
import "./chunk-TWPJO254.js";
|
|
17
|
-
import "./chunk-H6XPXXMH.js";
|
|
18
|
-
import "./chunk-2UUMVNYT.js";
|
|
19
|
-
import "./chunk-MVUQRLOH.js";
|
|
20
|
-
import "./chunk-XCWO3SMQ.js";
|
|
21
|
-
import "./chunk-7MH4J33A.js";
|
|
22
|
-
import "./chunk-6PVPNMXU.js";
|
|
23
|
-
import "./chunk-K4ADGWHU.js";
|
|
24
|
-
import "./chunk-IRH27ZC2.js";
|
|
25
|
-
import "./chunk-QHWCP53L.js";
|
|
26
|
-
import "./chunk-GNPNYXJB.js";
|
|
27
|
-
import "./chunk-HUWENAHO.js";
|
|
28
|
-
import "./chunk-O6GEWCJA.js";
|
|
29
|
-
import "./chunk-T26EAKDL.js";
|
|
30
|
-
import "./chunk-ZPJWUGCS.js";
|
|
31
|
-
import "./chunk-CPBF7KYF.js";
|
|
32
|
-
import "./chunk-J6SZID63.js";
|
|
33
|
-
import "./chunk-KRXPRVGL.js";
|
|
34
|
-
import "./chunk-GM463R2B.js";
|
|
35
|
-
import "./chunk-SEZ556DZ.js";
|
|
36
|
-
import "./chunk-2FRY5CRX.js";
|
|
37
|
-
import "./chunk-67N6HB5H.js";
|
|
38
|
-
import "./chunk-WAUGQKUU.js";
|
|
12
|
+
} from "./chunk-EI3NWELG.js";
|
|
39
13
|
import {
|
|
40
14
|
resolveOpenAILogDir
|
|
41
15
|
} from "./chunk-DZUO626D.js";
|
|
42
|
-
import "./chunk-4TRQPFDP.js";
|
|
43
|
-
import "./chunk-SAH4BD2J.js";
|
|
44
|
-
import "./chunk-CPG6P4GG.js";
|
|
45
|
-
import "./chunk-S6LOFUVP.js";
|
|
46
|
-
import "./chunk-2J3OJGTL.js";
|
|
47
|
-
import "./chunk-IA7TGCN2.js";
|
|
48
|
-
import "./chunk-K623ENWT.js";
|
|
49
|
-
import "./chunk-AQ37AY7B.js";
|
|
50
|
-
import "./chunk-EQL65XGA.js";
|
|
51
|
-
import "./chunk-3P2LV43B.js";
|
|
52
|
-
import "./chunk-NAVJD2PQ.js";
|
|
53
|
-
import "./chunk-HV76SFIA.js";
|
|
54
|
-
import "./chunk-4PYCZH2V.js";
|
|
55
|
-
import "./chunk-P3QQPMQA.js";
|
|
56
|
-
import "./chunk-SR7RZ4MS.js";
|
|
57
|
-
import "./chunk-M6HMMKVG.js";
|
|
58
|
-
import "./chunk-DGEIYUC3.js";
|
|
59
|
-
import "./chunk-MPHPFVKK.js";
|
|
60
|
-
import "./chunk-AXMWHKXA.js";
|
|
61
|
-
import "./chunk-GLCZKT5V.js";
|
|
62
|
-
import "./chunk-DJ2GSRLV.js";
|
|
63
|
-
import "./chunk-EI3HZX6C.js";
|
|
64
|
-
import "./chunk-YGT2AUJ7.js";
|
|
65
|
-
import "./chunk-WOJZWRAZ.js";
|
|
66
|
-
import "./chunk-VGC4I5JJ.js";
|
|
67
|
-
import "./chunk-FVKHVJZQ.js";
|
|
68
|
-
import "./chunk-COBO5EBO.js";
|
|
69
|
-
import "./chunk-6ZRFAKXK.js";
|
|
70
|
-
import "./chunk-PYQADEFD.js";
|
|
71
|
-
import "./chunk-PVOGHGSF.js";
|
|
72
|
-
import "./chunk-F6WFNA7U.js";
|
|
73
|
-
import "./chunk-46UV252V.js";
|
|
74
|
-
import "./chunk-ZBVS26BY.js";
|
|
75
|
-
import "./chunk-KKBPOU75.js";
|
|
76
|
-
import "./chunk-EUNWC2VS.js";
|
|
77
|
-
import "./chunk-FOGU3LJX.js";
|
|
78
|
-
import "./chunk-L2AFWWJE.js";
|
|
79
|
-
import "./chunk-W4RQUHY3.js";
|
|
80
|
-
import "./chunk-PDPFQ2FO.js";
|
|
81
16
|
import {
|
|
82
17
|
Storage,
|
|
83
18
|
createDebugLogger
|
|
84
19
|
} from "./chunk-OIVKILPI.js";
|
|
85
|
-
import "./chunk-VOQXFAY5.js";
|
|
86
|
-
import "./chunk-75DOP5OR.js";
|
|
87
|
-
import "./chunk-DMTGGOSA.js";
|
|
88
|
-
import "./chunk-YQ3U5MUC.js";
|
|
89
|
-
import "./chunk-AMDSOFFV.js";
|
|
90
|
-
import "./chunk-QUGAUQGJ.js";
|
|
91
20
|
import {
|
|
92
21
|
init_esbuild_shims
|
|
93
22
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -167,7 +96,15 @@ async function cleanupOldSubagentTranscripts(opts) {
|
|
|
167
96
|
__name(cleanupOldSubagentTranscripts, "cleanupOldSubagentTranscripts");
|
|
168
97
|
var OPENAI_LOG_FILE_PATTERN = /^openai-(\d{4}-\d{2}-\d{2})T\d{2}-\d{2}-\d{2}\.\d{3}Z-[a-f0-9]{8}(?:-[a-zA-Z0-9._](?:[a-zA-Z0-9._-]*[a-zA-Z0-9._])?)?\.json$/;
|
|
169
98
|
async function cleanupOldOpenAILogs(opts) {
|
|
170
|
-
const result = {
|
|
99
|
+
const result = {
|
|
100
|
+
removed: 0,
|
|
101
|
+
errors: 0,
|
|
102
|
+
completed: true
|
|
103
|
+
};
|
|
104
|
+
if (opts.signal?.aborted) {
|
|
105
|
+
result.completed = false;
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
171
108
|
let dir;
|
|
172
109
|
try {
|
|
173
110
|
dir = await opendir(opts.logDir);
|
|
@@ -179,6 +116,10 @@ async function cleanupOldOpenAILogs(opts) {
|
|
|
179
116
|
const cutoffDay = opts.cutoffDate.toISOString().slice(0, 10);
|
|
180
117
|
let batch = [];
|
|
181
118
|
for await (const entry of dir) {
|
|
119
|
+
if (opts.signal?.aborted) {
|
|
120
|
+
result.completed = false;
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
182
123
|
const filenameDate = entry.isFile() ? OPENAI_LOG_FILE_PATTERN.exec(entry.name)?.[1] : void 0;
|
|
183
124
|
if (!filenameDate) continue;
|
|
184
125
|
const filePath = join(opts.logDir, entry.name);
|
|
@@ -231,8 +172,13 @@ async function runThrottledOnce(opts, task) {
|
|
|
231
172
|
() => {
|
|
232
173
|
}
|
|
233
174
|
);
|
|
234
|
-
|
|
235
|
-
|
|
175
|
+
const firstFreshForMs = await markerFreshForMs(
|
|
176
|
+
opts.markerPath,
|
|
177
|
+
minIntervalMs,
|
|
178
|
+
opts.name
|
|
179
|
+
);
|
|
180
|
+
if (firstFreshForMs !== void 0) {
|
|
181
|
+
return { status: "fresh", retryAfterMs: firstFreshForMs };
|
|
236
182
|
}
|
|
237
183
|
let acquired = await tryAcquire(opts.lockPath);
|
|
238
184
|
if (!acquired) {
|
|
@@ -248,17 +194,21 @@ async function runThrottledOnce(opts, task) {
|
|
|
248
194
|
}
|
|
249
195
|
if (!acquired) {
|
|
250
196
|
debugLogger2.debug(`${opts.name}: skipping, lock held`);
|
|
251
|
-
return
|
|
197
|
+
return { status: "locked" };
|
|
252
198
|
}
|
|
253
199
|
}
|
|
254
200
|
try {
|
|
255
|
-
|
|
256
|
-
|
|
201
|
+
const secondFreshForMs = await markerFreshForMs(
|
|
202
|
+
opts.markerPath,
|
|
203
|
+
minIntervalMs,
|
|
204
|
+
opts.name
|
|
205
|
+
);
|
|
206
|
+
if (secondFreshForMs !== void 0) {
|
|
207
|
+
return { status: "fresh", retryAfterMs: secondFreshForMs };
|
|
257
208
|
}
|
|
258
209
|
let taskCompleted = false;
|
|
259
210
|
try {
|
|
260
|
-
await task();
|
|
261
|
-
taskCompleted = true;
|
|
211
|
+
taskCompleted = await task() !== false;
|
|
262
212
|
} finally {
|
|
263
213
|
if (taskCompleted) {
|
|
264
214
|
try {
|
|
@@ -271,7 +221,7 @@ async function runThrottledOnce(opts, task) {
|
|
|
271
221
|
}
|
|
272
222
|
}
|
|
273
223
|
}
|
|
274
|
-
return taskCompleted;
|
|
224
|
+
return { status: taskCompleted ? "completed" : "incomplete" };
|
|
275
225
|
} finally {
|
|
276
226
|
await unlink2(opts.lockPath).catch(() => {
|
|
277
227
|
debugLogger2.debug(`${opts.name}: lock unlink failed (harmless)`);
|
|
@@ -279,19 +229,19 @@ async function runThrottledOnce(opts, task) {
|
|
|
279
229
|
}
|
|
280
230
|
}
|
|
281
231
|
__name(runThrottledOnce, "runThrottledOnce");
|
|
282
|
-
async function
|
|
232
|
+
async function markerFreshForMs(markerPath, minIntervalMs, name) {
|
|
283
233
|
try {
|
|
284
234
|
const s = await stat2(markerPath);
|
|
285
235
|
const age = Date.now() - s.mtimeMs;
|
|
286
236
|
if (age < minIntervalMs) {
|
|
287
237
|
debugLogger2.debug(`${name}: skipping, ran ${age}ms ago`);
|
|
288
|
-
return
|
|
238
|
+
return minIntervalMs - age;
|
|
289
239
|
}
|
|
290
240
|
} catch {
|
|
291
241
|
}
|
|
292
|
-
return
|
|
242
|
+
return void 0;
|
|
293
243
|
}
|
|
294
|
-
__name(
|
|
244
|
+
__name(markerFreshForMs, "markerFreshForMs");
|
|
295
245
|
async function tryAcquire(lockPath) {
|
|
296
246
|
try {
|
|
297
247
|
const fh = await open(lockPath, "wx");
|
|
@@ -313,10 +263,20 @@ var RECURRING_INTERVAL_MS = 24 * 60 * 60 * 1e3;
|
|
|
313
263
|
var RECENT_INTERACTION_MS = 60 * 1e3;
|
|
314
264
|
var CATCHUP_THRESHOLD_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
315
265
|
var STARTUP_DELAY_CATCHUP_MS = 60 * 1e3;
|
|
266
|
+
var NON_INTERACTIVE_LOCK_RETRY_MS = 60 * 1e3;
|
|
267
|
+
var NON_INTERACTIVE_FAILURE_RETRY_MS = 10 * 60 * 1e3;
|
|
268
|
+
var NON_INTERACTIVE_STOP_GRACE_MS = 250;
|
|
316
269
|
var FILE_HISTORY_MARKER = ".file-history-cleanup";
|
|
317
270
|
var SUBAGENT_MARKER = ".subagent-cleanup";
|
|
318
271
|
var OPENAI_LOGS_MARKER = ".openai-logs-cleanup";
|
|
319
272
|
var started = false;
|
|
273
|
+
var nonInteractiveJobs = /* @__PURE__ */ new Map();
|
|
274
|
+
var nonInteractiveQueue = [];
|
|
275
|
+
var activeNonInteractiveJob;
|
|
276
|
+
var activeNonInteractiveAbortController;
|
|
277
|
+
var nonInteractiveWorker;
|
|
278
|
+
var nonInteractiveStopping = false;
|
|
279
|
+
var nonInteractiveStopPromise;
|
|
320
280
|
function startBackgroundHousekeeping(config, settings) {
|
|
321
281
|
if (started) return;
|
|
322
282
|
started = true;
|
|
@@ -367,7 +327,7 @@ function getOpenAILogsMarkerPath(qwenDir, logDir) {
|
|
|
367
327
|
__name(getOpenAILogsMarkerPath, "getOpenAILogsMarkerPath");
|
|
368
328
|
function getOpenAILogCleanupTarget(config, settings) {
|
|
369
329
|
try {
|
|
370
|
-
const customLogDir = config.getContentGeneratorConfig?.()?.openAILoggingDir ?? settings.merged.model?.openAILoggingDir;
|
|
330
|
+
const customLogDir = config.getContentGeneratorConfig?.()?.openAILoggingDir ?? config.getModelsConfig?.()?.getGenerationConfig?.().openAILoggingDir ?? settings.merged.model?.openAILoggingDir;
|
|
371
331
|
const systemRetention = settings.system?.settings.model?.openAILogRetentionDays;
|
|
372
332
|
const workspaceRetention = settings.isTrusted ? settings.workspace?.settings.model?.openAILogRetentionDays : void 0;
|
|
373
333
|
if (customLogDir && workspaceRetention !== void 0 && systemRetention === void 0) {
|
|
@@ -390,6 +350,168 @@ function getOpenAILogCleanupTarget(config, settings) {
|
|
|
390
350
|
}
|
|
391
351
|
}
|
|
392
352
|
__name(getOpenAILogCleanupTarget, "getOpenAILogCleanupTarget");
|
|
353
|
+
function startNonInteractiveOpenAILogHousekeeping(config, settings) {
|
|
354
|
+
if (nonInteractiveStopping) return;
|
|
355
|
+
try {
|
|
356
|
+
const target = getOpenAILogCleanupTarget(config, settings);
|
|
357
|
+
if (!target || nonInteractiveJobs.has(target.logDir)) return;
|
|
358
|
+
const markerPath = getOpenAILogsMarkerPath(
|
|
359
|
+
Storage.getGlobalQwenDir(),
|
|
360
|
+
target.logDir
|
|
361
|
+
);
|
|
362
|
+
const job = {
|
|
363
|
+
target,
|
|
364
|
+
markerPath,
|
|
365
|
+
queued: false
|
|
366
|
+
};
|
|
367
|
+
nonInteractiveJobs.set(target.logDir, job);
|
|
368
|
+
enqueueNonInteractiveJob(job);
|
|
369
|
+
} catch (err) {
|
|
370
|
+
debugLogger3.error(
|
|
371
|
+
"failed to start non-interactive OpenAI log cleanup; skipping",
|
|
372
|
+
err
|
|
373
|
+
);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
__name(startNonInteractiveOpenAILogHousekeeping, "startNonInteractiveOpenAILogHousekeeping");
|
|
377
|
+
function stopNonInteractiveOpenAILogHousekeeping() {
|
|
378
|
+
if (nonInteractiveStopPromise) return nonInteractiveStopPromise;
|
|
379
|
+
nonInteractiveStopping = true;
|
|
380
|
+
for (const job of nonInteractiveJobs.values()) {
|
|
381
|
+
if (job.timer) {
|
|
382
|
+
clearTimeout(job.timer);
|
|
383
|
+
job.timer = void 0;
|
|
384
|
+
}
|
|
385
|
+
job.queued = false;
|
|
386
|
+
}
|
|
387
|
+
nonInteractiveQueue.length = 0;
|
|
388
|
+
activeNonInteractiveAbortController?.abort();
|
|
389
|
+
nonInteractiveStopPromise = waitForNonInteractiveWorkerToStop();
|
|
390
|
+
return nonInteractiveStopPromise;
|
|
391
|
+
}
|
|
392
|
+
__name(stopNonInteractiveOpenAILogHousekeeping, "stopNonInteractiveOpenAILogHousekeeping");
|
|
393
|
+
function enqueueNonInteractiveJob(job) {
|
|
394
|
+
if (nonInteractiveStopping || job.queued || activeNonInteractiveJob === job) {
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
job.queued = true;
|
|
398
|
+
nonInteractiveQueue.push(job);
|
|
399
|
+
startNonInteractiveWorker();
|
|
400
|
+
}
|
|
401
|
+
__name(enqueueNonInteractiveJob, "enqueueNonInteractiveJob");
|
|
402
|
+
function startNonInteractiveWorker() {
|
|
403
|
+
if (nonInteractiveWorker || nonInteractiveStopping) return;
|
|
404
|
+
nonInteractiveWorker = drainNonInteractiveQueue().catch((err) => {
|
|
405
|
+
debugLogger3.error("non-interactive OpenAI log worker failed", err);
|
|
406
|
+
}).finally(() => {
|
|
407
|
+
nonInteractiveWorker = void 0;
|
|
408
|
+
if (nonInteractiveQueue.length > 0 && !nonInteractiveStopping) {
|
|
409
|
+
startNonInteractiveWorker();
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
__name(startNonInteractiveWorker, "startNonInteractiveWorker");
|
|
414
|
+
async function drainNonInteractiveQueue() {
|
|
415
|
+
while (!nonInteractiveStopping) {
|
|
416
|
+
const job = nonInteractiveQueue.shift();
|
|
417
|
+
if (!job) return;
|
|
418
|
+
job.queued = false;
|
|
419
|
+
activeNonInteractiveJob = job;
|
|
420
|
+
const abortController = new AbortController();
|
|
421
|
+
activeNonInteractiveAbortController = abortController;
|
|
422
|
+
try {
|
|
423
|
+
const result = await runOpenAILogCleanup(
|
|
424
|
+
job.target,
|
|
425
|
+
job.markerPath,
|
|
426
|
+
abortController.signal
|
|
427
|
+
);
|
|
428
|
+
if (nonInteractiveStopping) continue;
|
|
429
|
+
switch (result.status) {
|
|
430
|
+
case "completed":
|
|
431
|
+
scheduleNonInteractiveJob(job, RECURRING_INTERVAL_MS);
|
|
432
|
+
break;
|
|
433
|
+
case "fresh":
|
|
434
|
+
scheduleNonInteractiveJob(
|
|
435
|
+
job,
|
|
436
|
+
Math.min(
|
|
437
|
+
RECURRING_INTERVAL_MS,
|
|
438
|
+
Math.max(NON_INTERACTIVE_LOCK_RETRY_MS, result.retryAfterMs)
|
|
439
|
+
)
|
|
440
|
+
);
|
|
441
|
+
break;
|
|
442
|
+
case "locked":
|
|
443
|
+
scheduleNonInteractiveJob(job, NON_INTERACTIVE_LOCK_RETRY_MS);
|
|
444
|
+
break;
|
|
445
|
+
case "incomplete":
|
|
446
|
+
break;
|
|
447
|
+
default:
|
|
448
|
+
break;
|
|
449
|
+
}
|
|
450
|
+
} catch (err) {
|
|
451
|
+
debugLogger3.error(
|
|
452
|
+
`non-interactive OpenAI log cleanup failed for ${job.target.logDir}`,
|
|
453
|
+
err
|
|
454
|
+
);
|
|
455
|
+
if (!nonInteractiveStopping) {
|
|
456
|
+
scheduleNonInteractiveJob(job, NON_INTERACTIVE_FAILURE_RETRY_MS);
|
|
457
|
+
}
|
|
458
|
+
} finally {
|
|
459
|
+
activeNonInteractiveJob = void 0;
|
|
460
|
+
activeNonInteractiveAbortController = void 0;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
__name(drainNonInteractiveQueue, "drainNonInteractiveQueue");
|
|
465
|
+
async function runOpenAILogCleanup(target, markerPath, signal) {
|
|
466
|
+
return runThrottledOnce(
|
|
467
|
+
{
|
|
468
|
+
name: "openai-logs-cleanup",
|
|
469
|
+
markerPath,
|
|
470
|
+
lockPath: markerPath + ".lock"
|
|
471
|
+
},
|
|
472
|
+
async () => {
|
|
473
|
+
const r = await cleanupOldOpenAILogs({
|
|
474
|
+
logDir: target.logDir,
|
|
475
|
+
cutoffDate: getCutoffDate(target.retentionDays),
|
|
476
|
+
signal
|
|
477
|
+
});
|
|
478
|
+
debugLogger3.debug(
|
|
479
|
+
`openai-logs: removed=${r.removed} errors=${r.errors} completed=${r.completed}`
|
|
480
|
+
);
|
|
481
|
+
return r.completed ? void 0 : false;
|
|
482
|
+
}
|
|
483
|
+
);
|
|
484
|
+
}
|
|
485
|
+
__name(runOpenAILogCleanup, "runOpenAILogCleanup");
|
|
486
|
+
function scheduleNonInteractiveJob(job, delayMs) {
|
|
487
|
+
if (nonInteractiveStopping) return;
|
|
488
|
+
job.timer = setTimeout(() => {
|
|
489
|
+
job.timer = void 0;
|
|
490
|
+
enqueueNonInteractiveJob(job);
|
|
491
|
+
}, delayMs);
|
|
492
|
+
job.timer.unref();
|
|
493
|
+
}
|
|
494
|
+
__name(scheduleNonInteractiveJob, "scheduleNonInteractiveJob");
|
|
495
|
+
async function waitForNonInteractiveWorkerToStop() {
|
|
496
|
+
const worker = nonInteractiveWorker;
|
|
497
|
+
if (!worker) {
|
|
498
|
+
nonInteractiveJobs.clear();
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
let timeout;
|
|
502
|
+
try {
|
|
503
|
+
await Promise.race([
|
|
504
|
+
worker,
|
|
505
|
+
new Promise((resolve) => {
|
|
506
|
+
timeout = setTimeout(resolve, NON_INTERACTIVE_STOP_GRACE_MS);
|
|
507
|
+
})
|
|
508
|
+
]);
|
|
509
|
+
} finally {
|
|
510
|
+
if (timeout) clearTimeout(timeout);
|
|
511
|
+
nonInteractiveJobs.clear();
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
__name(waitForNonInteractiveWorkerToStop, "waitForNonInteractiveWorkerToStop");
|
|
393
515
|
async function runPass(config, settings) {
|
|
394
516
|
if (msSinceLastInteraction() < RECENT_INTERACTION_MS) {
|
|
395
517
|
debugLogger3.debug("user active, deferring 10 min");
|
|
@@ -458,23 +580,9 @@ async function runHousekeeping(config, settings) {
|
|
|
458
580
|
}
|
|
459
581
|
const openaiTarget = getOpenAILogCleanupTarget(config, settings);
|
|
460
582
|
if (openaiTarget) {
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
{
|
|
465
|
-
name: "openai-logs-cleanup",
|
|
466
|
-
markerPath,
|
|
467
|
-
lockPath: markerPath + ".lock"
|
|
468
|
-
},
|
|
469
|
-
async () => {
|
|
470
|
-
const r = await cleanupOldOpenAILogs({
|
|
471
|
-
logDir,
|
|
472
|
-
cutoffDate: getCutoffDate(retentionDays)
|
|
473
|
-
});
|
|
474
|
-
debugLogger3.debug(
|
|
475
|
-
`openai-logs: removed=${r.removed} errors=${r.errors}`
|
|
476
|
-
);
|
|
477
|
-
}
|
|
583
|
+
await runOpenAILogCleanup(
|
|
584
|
+
openaiTarget,
|
|
585
|
+
getOpenAILogsMarkerPath(qwenDir, openaiTarget.logDir)
|
|
478
586
|
);
|
|
479
587
|
}
|
|
480
588
|
}
|
|
@@ -483,6 +591,22 @@ function _resetForTesting() {
|
|
|
483
591
|
started = false;
|
|
484
592
|
}
|
|
485
593
|
__name(_resetForTesting, "_resetForTesting");
|
|
594
|
+
async function _resetNonInteractiveForTesting() {
|
|
595
|
+
nonInteractiveStopping = true;
|
|
596
|
+
for (const job of nonInteractiveJobs.values()) {
|
|
597
|
+
if (job.timer) clearTimeout(job.timer);
|
|
598
|
+
}
|
|
599
|
+
nonInteractiveQueue.length = 0;
|
|
600
|
+
activeNonInteractiveAbortController?.abort();
|
|
601
|
+
await nonInteractiveWorker;
|
|
602
|
+
nonInteractiveJobs.clear();
|
|
603
|
+
activeNonInteractiveJob = void 0;
|
|
604
|
+
activeNonInteractiveAbortController = void 0;
|
|
605
|
+
nonInteractiveWorker = void 0;
|
|
606
|
+
nonInteractiveStopping = false;
|
|
607
|
+
nonInteractiveStopPromise = void 0;
|
|
608
|
+
}
|
|
609
|
+
__name(_resetNonInteractiveForTesting, "_resetNonInteractiveForTesting");
|
|
486
610
|
var _needsCatchUpForTesting = needsCatchUp;
|
|
487
611
|
var _getFirstPassDelayForTesting = getFirstPassDelay;
|
|
488
612
|
var _runHousekeepingForTesting = runHousekeeping;
|
|
@@ -490,16 +614,20 @@ var _runPassForTesting = runPass;
|
|
|
490
614
|
var _FILE_HISTORY_MARKER_FOR_TESTING = FILE_HISTORY_MARKER;
|
|
491
615
|
var _getSubagentMarkerPathForTesting = getSubagentMarkerPath;
|
|
492
616
|
var _getOpenAILogsMarkerPathForTesting = getOpenAILogsMarkerPath;
|
|
617
|
+
|
|
493
618
|
export {
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
_getSubagentMarkerPathForTesting,
|
|
498
|
-
_needsCatchUpForTesting,
|
|
619
|
+
startBackgroundHousekeeping,
|
|
620
|
+
startNonInteractiveOpenAILogHousekeeping,
|
|
621
|
+
stopNonInteractiveOpenAILogHousekeeping,
|
|
499
622
|
_resetForTesting,
|
|
623
|
+
_resetNonInteractiveForTesting,
|
|
624
|
+
_needsCatchUpForTesting,
|
|
625
|
+
_getFirstPassDelayForTesting,
|
|
500
626
|
_runHousekeepingForTesting,
|
|
501
627
|
_runPassForTesting,
|
|
502
|
-
|
|
628
|
+
_FILE_HISTORY_MARKER_FOR_TESTING,
|
|
629
|
+
_getSubagentMarkerPathForTesting,
|
|
630
|
+
_getOpenAILogsMarkerPathForTesting
|
|
503
631
|
};
|
|
504
632
|
/**
|
|
505
633
|
* @license
|