@qwen-code/qwen-code 0.19.5 → 0.19.6-nightly.20260705.015ee4248
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/dataviz/SKILL.md +50 -0
- package/bundled/dataviz/references/anti-patterns.md +12 -0
- package/bundled/dataviz/references/choosing-a-form.md +16 -0
- package/bundled/dataviz/references/palette.md +57 -0
- package/bundled/dataviz/scripts/validate_palette.js +328 -0
- package/bundled/loop/SKILL.md +1 -1
- package/bundled/qc-helper/docs/configuration/settings.md +14 -8
- package/bundled/qc-helper/docs/features/headless.md +2 -2
- package/bundled/qc-helper/docs/features/scheduled-tasks.md +4 -2
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
- package/bundled/review/DESIGN.md +23 -0
- package/bundled/review/SKILL.md +65 -8
- package/chunks/{MaxSizedBox-5JV77KRA.js → MaxSizedBox-PRXTXIGC.js} +31 -30
- package/chunks/{StandaloneSessionPicker-MGUGB6PH.js → StandaloneSessionPicker-PV7BSC5D.js} +42 -41
- package/chunks/{acpAgent-4F36XM3X.js → acpAgent-F34HNAM3.js} +939 -424
- package/chunks/{agent-IWBUZI6A.js → agent-XSQDKLST.js} +26 -25
- package/chunks/{agent-headless-JUTICAYO.js → agent-headless-B63XCKWX.js} +26 -25
- package/chunks/{anthropicContentGenerator-WL3LJOUB.js → anthropicContentGenerator-INXXI4PW.js} +7 -7
- package/chunks/{artifact-tool-W76WC2JX.js → artifact-tool-H2TNPNP5.js} +16 -3
- package/chunks/{askUserQuestion-J3P6TH3V.js → askUserQuestion-MKL5ZTMC.js} +2 -2
- package/chunks/{bridge-DHZHQ4UV.js → bridge-NCZDJBRF.js} +34 -32
- package/chunks/{channel-worker-supervisor-EVPAYNZ5.js → channel-worker-supervisor-JUYQ5Z4R.js} +5 -5
- package/chunks/{chunk-AVQDCKNF.js → chunk-22MNNNXE.js} +4 -0
- package/chunks/chunk-3RW4AZJV.js +5063 -0
- package/chunks/chunk-3VJ7MT3N.js +111 -0
- package/chunks/{chunk-JKGCBO3O.js → chunk-3VRMGS3A.js} +4 -4
- package/chunks/{chunk-TN6RT6EJ.js → chunk-3WOJO5EJ.js} +16 -4
- package/chunks/{chunk-G7OQ3RFJ.js → chunk-42XGFRJS.js} +3 -3
- package/chunks/{chunk-MOUXUCXQ.js → chunk-4KJ2BPIT.js} +1 -1
- package/chunks/{chunk-PPFWEV7G.js → chunk-4RQIB5UZ.js} +62 -62
- package/chunks/{chunk-JJ6B3ZD3.js → chunk-544UZQBD.js} +3 -3
- package/chunks/{chunk-B236XPGF.js → chunk-5UDYETKK.js} +1 -1
- package/chunks/{chunk-7DMQRPC7.js → chunk-6BEOH4KK.js} +1 -1
- package/chunks/{chunk-CXBG27SF.js → chunk-6IAWPIQ6.js} +3 -2
- package/chunks/{chunk-MDBNFHIO.js → chunk-6MDY7FX3.js} +5 -5
- package/chunks/{chunk-RM3PGSGL.js → chunk-6SHO7WFF.js} +15 -2
- package/chunks/{chunk-YCU7QV7Q.js → chunk-73WGF3NW.js} +34 -1
- package/chunks/{chunk-T42ACHFI.js → chunk-7LTB54MK.js} +1 -1
- package/chunks/{chunk-SJVPSHXU.js → chunk-7U6J224Z.js} +132 -25
- package/chunks/{chunk-CSPSJU5R.js → chunk-7WLJPMWU.js} +17 -17
- package/chunks/{chunk-R6RI2HIC.js → chunk-ACD5DFUY.js} +41 -14
- package/chunks/{chunk-EWALXUAD.js → chunk-AGHU5VRK.js} +8 -0
- package/chunks/{chunk-GLPV75ES.js → chunk-AHNJGLFV.js} +2 -2
- package/chunks/{chunk-DRS2HTNT.js → chunk-AOAFX4PL.js} +5 -5
- package/chunks/{chunk-QHYITL6P.js → chunk-CK7IUFOB.js} +63 -22
- package/chunks/{chunk-RSBQS6M4.js → chunk-CODWJXQA.js} +1 -1
- package/chunks/{chunk-LWGLBVWA.js → chunk-CSOTA7KX.js} +1 -1
- package/chunks/{chunk-UJT42DB6.js → chunk-DFH4T5IQ.js} +6 -6
- package/chunks/{chunk-DX3TKXNT.js → chunk-DJACOX4C.js} +2 -2
- package/chunks/{chunk-KKQWC6WS.js → chunk-DNV4FSN5.js} +1 -1
- package/chunks/{chunk-YPCPZSZB.js → chunk-DT3B47QP.js} +1 -1
- package/chunks/{chunk-NIOPRZNN.js → chunk-E7KNELIZ.js} +1 -1
- package/chunks/{chunk-DG573EOO.js → chunk-FEJ2FZ3U.js} +1 -1
- package/chunks/{chunk-M5ITDKSM.js → chunk-FHGQFG2K.js} +1 -1
- package/chunks/{chunk-HISPEX42.js → chunk-FSXFNDTI.js} +7 -7
- package/chunks/{chunk-LHMZCIKL.js → chunk-FUW7YGJU.js} +3 -1
- package/chunks/{chunk-Y4UQT3PM.js → chunk-FV5SBNNC.js} +1 -1
- package/chunks/{chunk-YTFBURQD.js → chunk-GB6HDZIK.js} +10 -2
- package/chunks/{chunk-D5KISTLW.js → chunk-H6EMK6QK.js} +1 -1
- package/chunks/{chunk-2Z43HUXT.js → chunk-HLKG6CZN.js} +3 -2
- package/chunks/{chunk-VXGPYF7U.js → chunk-IFEWJXFS.js} +1 -1
- package/chunks/{chunk-TENOUWY2.js → chunk-IJRL2S3D.js} +3 -3
- package/chunks/{chunk-OQHLUA2Y.js → chunk-IL6ZEDZ2.js} +4 -4
- package/chunks/{chunk-2CAII5HD.js → chunk-J7XUJALJ.js} +1 -1
- package/chunks/chunk-JFFOH2XO.js +2472 -0
- package/chunks/{chunk-NNEJEBCF.js → chunk-K3FZXSTO.js} +95 -107
- package/chunks/{chunk-NDY7OENU.js → chunk-KB4ICCA5.js} +3 -3
- package/chunks/{chunk-MNOXKSM2.js → chunk-LFFF2SPV.js} +3 -3
- package/chunks/{chunk-J3ERRYYI.js → chunk-LTMDKOZC.js} +2 -2
- package/chunks/{chunk-R3UWLLRQ.js → chunk-M7AGQP5D.js} +1 -1
- package/chunks/{chunk-CBJE2PLG.js → chunk-MLB5AB2I.js} +4 -4
- package/chunks/{chunk-YHTNWGRR.js → chunk-MZ7BABX3.js} +1 -1
- package/chunks/{chunk-SJBIFVD2.js → chunk-NFE3DQ4R.js} +7 -3
- package/chunks/{chunk-BC4R5C5R.js → chunk-NLD2WKE3.js} +55 -12
- package/chunks/{chunk-ALX6BUYW.js → chunk-NUGPZXAZ.js} +35 -1
- package/chunks/{chunk-NSSVORTQ.js → chunk-NYKWPUAE.js} +17 -13
- package/chunks/{chunk-K4I4STSL.js → chunk-OGEJMKN5.js} +2 -2
- package/chunks/{chunk-HTWHAN44.js → chunk-PC4ZXHU2.js} +1 -1
- package/chunks/{chunk-2YH27UNF.js → chunk-QLBBV7C6.js} +1 -1
- package/chunks/chunk-QT7XKZT7.js +293 -0
- package/chunks/{chunk-NPQWQYU6.js → chunk-QYNNN7BK.js} +1 -1
- package/chunks/chunk-R4N3OALZ.js +5631 -0
- package/chunks/{chunk-G4M7FPNY.js → chunk-RB5GAQR6.js} +2 -2
- package/chunks/{chunk-SBMHB6N5.js → chunk-RPHMD5UC.js} +15 -15
- package/chunks/{chunk-CHY5C5T4.js → chunk-SJ2CTIYH.js} +185 -88
- package/chunks/chunk-SLQXGMYY.js +949 -0
- package/chunks/{chunk-BZHLWC6T.js → chunk-SUAKHHK7.js} +2 -2
- package/chunks/{chunk-IMAMNLY6.js → chunk-SWV4CVYG.js} +158 -3
- package/chunks/{chunk-XKSCTXPK.js → chunk-TDGF35EN.js} +4 -3
- package/chunks/{chunk-TOAUDIS7.js → chunk-TLWA7TPR.js} +6 -2
- package/chunks/{chunk-WALEWZ44.js → chunk-UVHL5TCO.js} +1 -1
- package/chunks/{chunk-ZISMVA6U.js → chunk-VDMM5LVR.js} +1566 -37
- package/chunks/{chunk-BPFJQGY7.js → chunk-VEB3NYSO.js} +164 -5
- package/chunks/{chunk-L7OJ3ZO3.js → chunk-VZ7HY3YU.js} +1 -1
- package/chunks/{chunk-6KPZJJ6U.js → chunk-W4I6PLEG.js} +131 -38
- package/chunks/{chunk-QOMAHFYI.js → chunk-W7EEOR7D.js} +3 -3
- package/chunks/{chunk-6QVQZAW6.js → chunk-WKP5QZOP.js} +1 -1
- package/chunks/{chunk-YXK4GPYO.js → chunk-WMPVYQ4P.js} +30 -1
- package/chunks/{chunk-DM4E337C.js → chunk-WNTS5A2R.js} +5 -5
- package/chunks/{chunk-6QTCOQX7.js → chunk-WOG7QWIT.js} +3086 -2635
- package/chunks/{chunk-UY2TCIZS.js → chunk-X265R5C6.js} +3 -3
- package/chunks/{chunk-LKWAVAB5.js → chunk-X2XNQQJI.js} +2 -2
- package/chunks/{chunk-MTNTVOJR.js → chunk-X3YGAX7V.js} +6 -3
- package/chunks/{chunk-EROWZQN7.js → chunk-XD3OLPII.js} +6 -6
- package/chunks/{chunk-RNGAT2Y2.js → chunk-YYL6HROQ.js} +1 -1
- package/chunks/{chunk-XKZXGIRM.js → chunk-YZ2LNTHO.js} +2 -2
- package/chunks/{chunk-Z7XNVNPM.js → chunk-YZ5ANQMR.js} +3 -3
- package/chunks/{chunk-4MCC4XHH.js → chunk-Z7EYROOJ.js} +3568 -5508
- package/chunks/{chunk-5B2WNM6V.js → chunk-ZI4MGBB5.js} +1 -1
- package/chunks/{chunk-WZ724G6K.js → chunk-ZPGE42V7.js} +6 -6
- package/chunks/{computer-use-ON3JQUHW.js → computer-use-5I2UHVNY.js} +26 -25
- package/chunks/{contextCommand-OGCG7W6N.js → contextCommand-3NWY7AJG.js} +28 -27
- package/chunks/{cron-create-6YTCOX6P.js → cron-create-O6ZHD3JN.js} +22 -7
- package/chunks/{cron-delete-E3NIFSUK.js → cron-delete-BFD5B2XX.js} +4 -4
- package/chunks/{cron-list-Q64MNQNE.js → cron-list-KI6FV4KN.js} +4 -4
- package/chunks/{daemon-EEB2RYOL.js → daemon-DRUMLVFP.js} +140 -0
- package/chunks/daemon-status-provider-A2DK3ZTO.js +74 -0
- package/chunks/{dist-AP5V4WYU.js → dist-AAO65DPC.js} +2 -2
- package/chunks/{dist-X4ZDE726.js → dist-ABQ7VWRR.js} +3 -3
- package/chunks/{dist-SNXOUPYS.js → dist-AW5ZYMUI.js} +2 -2
- package/chunks/{dist-Z57Q4YF5.js → dist-DN6M6TJ5.js} +525 -95
- package/chunks/{dist-IZP2VV4C.js → dist-JPSVN367.js} +2 -2
- package/chunks/{earlyInputCapture-DAFHSGVW.js → earlyInputCapture-5TMSSPQ5.js} +27 -26
- package/chunks/{edit-3QFNCSZH.js → edit-V4ITLSUD.js} +27 -26
- package/chunks/{en-M4EBUBNU.js → en-AXARKOWO.js} +2 -0
- package/chunks/{enter-worktree-62EQQMLD.js → enter-worktree-7ULPRMTJ.js} +26 -25
- package/chunks/{enterPlanMode-VUQSE4EG.js → enterPlanMode-YSHMLHJZ.js} +26 -25
- package/chunks/{errors-PW75PZXE.js → errors-TCUTD7NF.js} +28 -27
- package/chunks/{exit-worktree-VVNH7OVY.js → exit-worktree-JZDCKR6A.js} +26 -25
- package/chunks/{exitPlanMode-RUYRCYZW.js → exitPlanMode-GOQBN6SG.js} +26 -25
- package/chunks/{fast-path-TFRJRTTR.js → fast-path-F2HGAKO2.js} +3 -3
- package/chunks/{fast-path-settings-UQLRFDQP.js → fast-path-settings-RCRXH2JG.js} +2 -2
- package/chunks/{gemini-XW7ZDUVR.js → gemini-3M7ECKNW.js} +86 -80
- package/chunks/{geminiContentGenerator-MZDVHVZH.js → geminiContentGenerator-5EG3QEJM.js} +4 -4
- package/chunks/{glob-WAY2PUWA.js → glob-2DBDTLR4.js} +54 -29
- package/chunks/{grep-W6CBKSYC.js → grep-R27DLGWT.js} +26 -25
- package/chunks/{initializer-HK2XE6P2.js → initializer-OXB6BJZU.js} +32 -31
- package/chunks/{keychain-token-storage-GPAKRDKQ.js → keychain-token-storage-UJV5XP4Z.js} +2 -2
- package/chunks/{list-RVLIIKKL.js → list-HLCOEOSF.js} +33 -32
- package/chunks/{loadedSettingsAdapter-C63OUYZC.js → loadedSettingsAdapter-JHTVH3YO.js} +31 -30
- package/chunks/{loop-wakeup-G2EHBRGR.js → loop-wakeup-CUVIY2JY.js} +5 -5
- package/chunks/{ls-IDHUVSAG.js → ls-L654WOAT.js} +4 -4
- package/chunks/{lsp-FSRYXGFT.js → lsp-M35KE54Y.js} +2 -2
- package/chunks/mcp-2JWEFAIN.js +67 -0
- package/chunks/{monitor-FOG36ABM.js → monitor-5QKFZFDX.js} +26 -25
- package/chunks/nonInteractiveCli-W5W5PIHI.js +112 -0
- package/chunks/{notebook-edit-GC6NXRCX.js → notebook-edit-XAFBWORI.js} +27 -26
- package/chunks/{openaiContentGenerator-EXR3ZL3Z.js → openaiContentGenerator-NULJROYV.js} +13 -12
- package/chunks/{pidfile-FNZM2DDH.js → pidfile-3LT7PZSW.js} +27 -26
- package/chunks/{qwenContentGenerator-A7B6J4U7.js → qwenContentGenerator-KLSURVNH.js} +28 -27
- package/chunks/{qwenOAuth2-LWLA6MQG.js → qwenOAuth2-ZV7YLMND.js} +5 -5
- package/chunks/{read-file-6JL4ULMY.js → read-file-HDAM3RHJ.js} +8 -8
- package/chunks/{read-mcp-resource-PIJF24RO.js → read-mcp-resource-CNQHBSJM.js} +2 -2
- package/chunks/record-artifact-PP3LKHTS.js +343 -0
- package/chunks/{ripGrep-DIUGLJE5.js → ripGrep-W36NLR7M.js} +26 -25
- package/chunks/{run-qwen-serve-CME3AKM4.js → run-qwen-serve-IMI2CQB5.js} +72 -28
- package/chunks/{scheduler-L7F6GDDT.js → scheduler-I5NKE5UJ.js} +26 -25
- package/chunks/{send-message-33PYFMCT.js → send-message-OA6MV4EU.js} +3 -3
- package/chunks/{serve-SRCBOJGP.js → serve-JMHMOYBO.js} +33 -32
- package/chunks/{server-QSQ45QFR.js → server-QIYIN34N.js} +1358 -492
- package/chunks/{session-5DG6NXHZ.js → session-BLL6HB35.js} +68 -65
- package/chunks/{settings-3EEQI4MN.js → settings-ABECXCTY.js} +30 -29
- package/chunks/{shell-B7FNYF5S.js → shell-A2TQI3U4.js} +26 -25
- package/chunks/{skill-AAOGHD5O.js → skill-4GTWZZWR.js} +10 -10
- package/chunks/{spawnChannel-3CBN3ZLK.js → spawnChannel-DFUVGP53.js} +30 -29
- package/chunks/{src-T5A7P7FS.js → src-ZORBMUM7.js} +77 -43
- package/chunks/{startInteractiveUI-2FGEQ6AS.js → startInteractiveUI-FH5MVXUE.js} +449 -175
- package/chunks/{syntheticOutput-YOSWIHDJ.js → syntheticOutput-F7LSDCAR.js} +3 -3
- package/chunks/{task-create-NHS2NGB3.js → task-create-RPFZNB4B.js} +7 -7
- package/chunks/{task-list-5UIB564R.js → task-list-TGGJX7EA.js} +5 -5
- package/chunks/{task-stop-HGXZ2VZ3.js → task-stop-W7NGTMYQ.js} +2 -2
- package/chunks/{task-update-IYYWUILG.js → task-update-5WUG5MVQ.js} +7 -7
- package/chunks/{team-create-KDF6W6PV.js → team-create-F76QOR6H.js} +26 -25
- package/chunks/{team-delete-FEKJCU4P.js → team-delete-UHQQ2QQX.js} +5 -5
- package/chunks/{team-plan-approval-PSFKQX7M.js → team-plan-approval-OKM7YZC2.js} +26 -25
- package/chunks/{theme-manager-5XOA2AO7.js → theme-manager-6R7EVWHW.js} +27 -26
- package/chunks/{todoWrite-TKMVZ2HT.js → todoWrite-C4ZAMSR3.js} +4 -4
- package/chunks/{tool-search-LFRILZXC.js → tool-search-UWXDKI7D.js} +9 -9
- package/chunks/{trustedFolders-7HQY6T6X.js → trustedFolders-DHASVVUP.js} +27 -26
- package/chunks/{validateNonInterActiveAuth-UC27B7BA.js → validateNonInterActiveAuth-56J7MOOP.js} +62 -59
- package/chunks/version-NE2I4PBN.js +10 -0
- package/chunks/{web-fetch-J4PIW36Q.js → web-fetch-UYGMOHW4.js} +5 -5
- package/chunks/{workflow-KUTESS6L.js → workflow-HGF3URV3.js} +35 -27
- package/chunks/{workspace-providers-status-LJT5AQDS.js → workspace-providers-status-KXB2OZFQ.js} +33 -32
- package/chunks/{workspace-service-YOBYVDXH.js → workspace-service-NSTI55BC.js} +39 -38
- package/chunks/workspace-skills-status-X5S6JGQZ.js +69 -0
- package/chunks/{write-file-FJYBZUHP.js → write-file-HVKT5VTX.js} +27 -26
- package/chunks/yargs-B64EYTCF.js +10 -0
- package/chunks/{zh-SLZNSSZB.js → zh-RS3HZHFH.js} +2 -0
- package/chunks/{zh-TW-P53C2SL5.js → zh-TW-L5GRQ4S4.js} +2 -0
- package/cli-entry.js +81 -8
- package/cli.js +348 -55
- package/locales/en.js +2 -0
- package/locales/zh-TW.js +2 -0
- package/locales/zh.js +2 -0
- package/node_modules/@qwen-code/audio-capture/package.json +1 -1
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-D_rAuMDd.js → arc-Csx4m4N0.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-DUCzbHVo.js → architectureDiagram-3BPJPVTR-BEa0vCM7.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-BEEBt1LL.js → blockDiagram-GPEHLZMM-BPzbKnn3.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-5ZJ_DeFL.js → c4Diagram-AAUBKEIU-B8YO71yP.js} +1 -1
- package/web-shell/assets/channel-QU1XUuVe.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-Cfw7EiLn.js → chunk-2J33WTMH-32XhwSHt.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-FGuZNCZY.js → chunk-4BX2VUAB-Bmoyo6PS.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-CaBwYPBF.js → chunk-55IACEB6-TwH6PFhs.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-BlR04OFz.js → chunk-727SXJPM-RI_IVUtZ.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-D3_mYJH5.js → chunk-AQP2D5EJ-DH6GIAZD.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-7D4q4SbB.js → chunk-FMBD7UC4-DeD3k3D5.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-BjX_Iwmr.js → chunk-ND2GUHAM-BLPb8nv3.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-C3Hz_ZQh.js → chunk-QZHKN3VN-PZpyglW1.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-fv1EWO-L.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-fv1EWO-L.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-Ax4UycaT.js → cose-bilkent-S5V4N54A-Jsd0yKfz.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-C6hmPtGt.js → dagre-BM42HDAG-B-zADciZ.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-tXZnxjmw.js → diagram-2AECGRRQ-Cn6GDxoo.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-99dwIzQG.js → diagram-5GNKFQAL-udLgyJxO.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-Bqhn0-2s.js → diagram-KO2AKTUF-EcLpfzy3.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DzThVSvo.js → diagram-LMA3HP47-D-YFbYsJ.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-DPE8vjln.js → diagram-OG6HWLK6-C8oRUATa.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-KzUKgQCV.js → erDiagram-TEJ5UH35-DPH5nStc.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-DBN-DXw5.js → flowDiagram-I6XJVG4X-CSOTwkAt.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-DuBsP9u8.js → ganttDiagram-6RSMTGT7-D0L988t0.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BjWHMyKR.js → gitGraphDiagram-PVQCEYII-B9Oo7gxS.js} +1 -1
- package/web-shell/assets/index-BYZZL5N7.css +5 -0
- package/web-shell/assets/index-C_oTyz0s.js +753 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-BVux0vP6.js → infoDiagram-5YYISTIA-Ddj4YN2P.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-2qzw7f--.js → ishikawaDiagram-YF4QCWOH-CBjafcl7.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-Dnl65sxL.js → journeyDiagram-JHISSGLW-Bn3XD99u.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-BElSQYtY.js → kanban-definition-UN3LZRKU-D7PBPJmE.js} +1 -1
- package/web-shell/assets/{linear-BjoycSSY.js → linear-Bmfo22rZ.js} +1 -1
- package/web-shell/assets/{mermaid.core-xe6bvMRz.js → mermaid.core-xRkAI-EI.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-D8DQgI4U.js → mindmap-definition-RKZ34NQL-B30zRinm.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-Dwh7Gp7c.js → pieDiagram-4H26LBE5-DblnKR9Z.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BXKNBln2.js → quadrantDiagram-W4KKPZXB-COkHFKjF.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BzaC3cIA.js → requirementDiagram-4Y6WPE33-DDU3MMyn.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DP2t7eZk.js → sankeyDiagram-5OEKKPKP-Dt4lqEYv.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-XlFiWEYv.js → sequenceDiagram-3UESZ5HK-BRzby5gN.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-CupgUMJO.js → stateDiagram-AJRCARHV-CylzByc3.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BKWZIKkM.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-DstuGywa.js → timeline-definition-PNZ67QCA-BSzaNx6w.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-CnbNp6zu.js → vennDiagram-CIIHVFJN-BbzeKzCo.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-DnvoHq6R.js → wardley-L42UT6IY-BRJwCgE_.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Cz0xHEWB.js → wardleyDiagram-YWT4CUSO-BmAs0mJ-.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-p36gfo88.js → xychartDiagram-2RQKCTM6-DqywSqVW.js} +1 -1
- package/web-shell/index.html +2 -2
- package/bundled/loop/SKILL.test.ts +0 -119
- package/bundled/loop/autonomous-loop.test.ts +0 -59
- package/bundled/loop/loop-task-file.test.ts +0 -1064
- package/bundled/loop/loop-tick-resolver.test.ts +0 -906
- package/chunks/chunk-EJ7BN3EN.js +0 -11396
- package/chunks/chunk-L7QPM2YD.js +0 -481
- package/chunks/daemon-status-provider-P72STMLB.js +0 -72
- package/chunks/nonInteractiveCli-6BYQSJTB.js +0 -109
- package/chunks/workspace-skills-status-ONEPXJV6.js +0 -62
- package/web-shell/assets/channel-B5ynH0q8.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CK3ibywp.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CK3ibywp.js +0 -1
- package/web-shell/assets/index-9qfvU0_r.css +0 -5
- package/web-shell/assets/index-CWzDaQT5.js +0 -717
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-By3E4QwN.js +0 -1
- package/chunks/{chunk-UFC57OYT.js → chunk-VRDMOSQS.js} +54 -54
|
@@ -3,26 +3,26 @@
|
|
|
3
3
|
import {
|
|
4
4
|
Colors,
|
|
5
5
|
RowMouseController
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-KB4ICCA5.js";
|
|
7
7
|
import {
|
|
8
8
|
theme
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-IFEWJXFS.js";
|
|
10
10
|
import {
|
|
11
11
|
Box_default,
|
|
12
12
|
Text,
|
|
13
13
|
require_jsx_runtime
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-YZ2LNTHO.js";
|
|
15
15
|
import {
|
|
16
16
|
require_react
|
|
17
17
|
} from "./chunk-KYMBIKIW.js";
|
|
18
18
|
import {
|
|
19
19
|
t
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-WNTS5A2R.js";
|
|
21
21
|
import {
|
|
22
22
|
readManyFiles,
|
|
23
23
|
shouldRunVisionBridge,
|
|
24
24
|
stripTerminalControlSequences
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-WOG7QWIT.js";
|
|
26
26
|
import {
|
|
27
27
|
emptyMcpResourceText,
|
|
28
28
|
formatMcpResourceContents,
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
isNodeError,
|
|
35
35
|
isSubpath,
|
|
36
36
|
unescapePath
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-22MNNNXE.js";
|
|
38
38
|
import {
|
|
39
39
|
init_esbuild_shims
|
|
40
40
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -435,6 +435,52 @@ function getExtensionSuggestions(config, pattern) {
|
|
|
435
435
|
}
|
|
436
436
|
__name(getExtensionSuggestions, "getExtensionSuggestions");
|
|
437
437
|
|
|
438
|
+
// packages/cli/src/utils/mcp-server-mention.ts
|
|
439
|
+
init_esbuild_shims();
|
|
440
|
+
var MCP_SERVER_REF_PREFIX = "mcp:";
|
|
441
|
+
function parseMcpServerRef(pathName) {
|
|
442
|
+
if (!pathName.startsWith(MCP_SERVER_REF_PREFIX)) return null;
|
|
443
|
+
const name = pathName.slice(MCP_SERVER_REF_PREFIX.length);
|
|
444
|
+
if (!name) return null;
|
|
445
|
+
return { name };
|
|
446
|
+
}
|
|
447
|
+
__name(parseMcpServerRef, "parseMcpServerRef");
|
|
448
|
+
function buildMcpServerRef(serverName) {
|
|
449
|
+
return `${MCP_SERVER_REF_PREFIX}${serverName}`;
|
|
450
|
+
}
|
|
451
|
+
__name(buildMcpServerRef, "buildMcpServerRef");
|
|
452
|
+
function matchMcpServerByRef(name, servers) {
|
|
453
|
+
const lower = name.toLowerCase();
|
|
454
|
+
const matchedName = Object.keys(servers).find(
|
|
455
|
+
(serverName) => serverName.toLowerCase() === lower
|
|
456
|
+
);
|
|
457
|
+
if (!matchedName) return void 0;
|
|
458
|
+
return { serverName: matchedName, server: servers[matchedName] };
|
|
459
|
+
}
|
|
460
|
+
__name(matchMcpServerByRef, "matchMcpServerByRef");
|
|
461
|
+
function buildMcpServerContextText(config, serverName) {
|
|
462
|
+
const lines = [
|
|
463
|
+
`--- MCP Server: ${serverName} ---`,
|
|
464
|
+
`The user explicitly mentioned this MCP server. Prefer using tools and resources from this server when relevant for this turn. This is advisory context, not a hard restriction.`
|
|
465
|
+
];
|
|
466
|
+
const prompts = config.getPromptRegistry?.()?.getPromptsByServer(serverName) ?? [];
|
|
467
|
+
const resources = config.getResourceRegistry?.()?.getResourcesByServer(serverName) ?? [];
|
|
468
|
+
const details = [];
|
|
469
|
+
if (resources.length > 0) {
|
|
470
|
+
details.push(`- Resources: ${resources.length}`);
|
|
471
|
+
}
|
|
472
|
+
if (prompts.length > 0) {
|
|
473
|
+
details.push(`- Prompts: ${prompts.length}`);
|
|
474
|
+
}
|
|
475
|
+
if (details.length > 0) {
|
|
476
|
+
lines.push("Available capabilities from this MCP server:");
|
|
477
|
+
lines.push(...details);
|
|
478
|
+
}
|
|
479
|
+
lines.push(`--- End MCP Server: ${serverName} ---`);
|
|
480
|
+
return lines.join("\n");
|
|
481
|
+
}
|
|
482
|
+
__name(buildMcpServerContextText, "buildMcpServerContextText");
|
|
483
|
+
|
|
438
484
|
// packages/cli/src/ui/hooks/atCommandProcessor.ts
|
|
439
485
|
function parseAllAtCommands(query) {
|
|
440
486
|
const parts = [];
|
|
@@ -521,6 +567,7 @@ async function resolveAtCommandQuery({
|
|
|
521
567
|
};
|
|
522
568
|
const mcpServerNames = new Set(Object.keys(config.getMcpServers() || {}));
|
|
523
569
|
const mcpResourceRefs = [];
|
|
570
|
+
const mcpServerMentions = [];
|
|
524
571
|
const activeExtensions = config.getActiveExtensions?.() ?? [];
|
|
525
572
|
const extensionMentions = [];
|
|
526
573
|
for (const atPathPart of atPathCommandParts) {
|
|
@@ -553,6 +600,30 @@ async function resolveAtCommandQuery({
|
|
|
553
600
|
atPathToResolvedSpecMap.set(originalAtPath, pathName);
|
|
554
601
|
continue;
|
|
555
602
|
}
|
|
603
|
+
const mcpServerRef = parseMcpServerRef(pathName);
|
|
604
|
+
if (mcpServerRef) {
|
|
605
|
+
const matched = matchMcpServerByRef(
|
|
606
|
+
mcpServerRef.name,
|
|
607
|
+
config.getMcpServers() || {}
|
|
608
|
+
);
|
|
609
|
+
if (matched) {
|
|
610
|
+
if (!mcpServerMentions.some((m) => m.serverName === matched.serverName)) {
|
|
611
|
+
mcpServerMentions.push({
|
|
612
|
+
originalAtPath,
|
|
613
|
+
serverName: matched.serverName
|
|
614
|
+
});
|
|
615
|
+
}
|
|
616
|
+
atPathToResolvedSpecMap.set(
|
|
617
|
+
originalAtPath,
|
|
618
|
+
buildMcpServerRef(matched.serverName)
|
|
619
|
+
);
|
|
620
|
+
continue;
|
|
621
|
+
}
|
|
622
|
+
onDebugMessage(
|
|
623
|
+
`MCP server "${mcpServerRef.name}" not found among configured MCP servers. Available: ${Object.keys(config.getMcpServers() || {}).join(", ") || "(none)"}`
|
|
624
|
+
);
|
|
625
|
+
continue;
|
|
626
|
+
}
|
|
556
627
|
const workspaceContext = config.getWorkspaceContext();
|
|
557
628
|
const projectTempDir = Storage.getGlobalTempDir();
|
|
558
629
|
const absolutePathName = path.isAbsolute(pathName) ? pathName : path.resolve(workspaceContext.getDirectories()[0] || "", pathName);
|
|
@@ -697,7 +768,7 @@ ${messages.join("\n")}`;
|
|
|
697
768
|
confirmationDetails: void 0
|
|
698
769
|
});
|
|
699
770
|
}
|
|
700
|
-
if (pathSpecsToRead.length === 0 && mcpResourceRefs.length === 0 && extensionMentions.length === 0) {
|
|
771
|
+
if (pathSpecsToRead.length === 0 && mcpResourceRefs.length === 0 && mcpServerMentions.length === 0 && extensionMentions.length === 0) {
|
|
701
772
|
onDebugMessage("No valid file paths found in @ commands to read.");
|
|
702
773
|
if (initialQueryText === "@" && query.trim() === "@") {
|
|
703
774
|
return { processedQuery: [{ text: query }], shouldProceed: true };
|
|
@@ -710,11 +781,9 @@ ${messages.join("\n")}`;
|
|
|
710
781
|
};
|
|
711
782
|
}
|
|
712
783
|
let extensionContextBudgetRemaining = EXTENSION_CONTEXT_BUDGET;
|
|
713
|
-
const
|
|
714
|
-
const extensionDisplays = [];
|
|
715
|
-
const extensionLabels = [];
|
|
784
|
+
const scopedMentionEntries = [];
|
|
716
785
|
for (let i = 0; i < extensionMentions.length; i++) {
|
|
717
|
-
const { extension } = extensionMentions[i];
|
|
786
|
+
const { originalAtPath, extension } = extensionMentions[i];
|
|
718
787
|
const displayName = getExtensionDisplayName(extension);
|
|
719
788
|
const callId = `client-extension-${userMessageTimestamp}-${i}`;
|
|
720
789
|
const context = await buildExtensionMentionContext(extension, {
|
|
@@ -723,17 +792,47 @@ ${messages.join("\n")}`;
|
|
|
723
792
|
onDebugMessage
|
|
724
793
|
});
|
|
725
794
|
extensionContextBudgetRemaining = context.remainingBudget;
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
795
|
+
scopedMentionEntries.push({
|
|
796
|
+
originalAtPath,
|
|
797
|
+
part: { text: context.text },
|
|
798
|
+
label: buildExtensionRef(extension.name),
|
|
799
|
+
display: {
|
|
800
|
+
callId,
|
|
801
|
+
name: "Activate Extension",
|
|
802
|
+
description: `Activated extension ${displayName}`,
|
|
803
|
+
status: "Success" /* Success */,
|
|
804
|
+
resultDisplay: void 0,
|
|
805
|
+
confirmationDetails: void 0
|
|
806
|
+
}
|
|
735
807
|
});
|
|
736
808
|
}
|
|
809
|
+
for (let i = 0; i < mcpServerMentions.length; i++) {
|
|
810
|
+
const { originalAtPath, serverName } = mcpServerMentions[i];
|
|
811
|
+
scopedMentionEntries.push({
|
|
812
|
+
originalAtPath,
|
|
813
|
+
part: { text: buildMcpServerContextText(config, serverName) },
|
|
814
|
+
label: buildMcpServerRef(serverName),
|
|
815
|
+
display: {
|
|
816
|
+
callId: `client-mcp-server-${userMessageTimestamp}-${i}`,
|
|
817
|
+
name: "Activate MCP Server",
|
|
818
|
+
description: `Activated MCP server ${serverName}`,
|
|
819
|
+
status: "Success" /* Success */,
|
|
820
|
+
resultDisplay: void 0,
|
|
821
|
+
confirmationDetails: void 0
|
|
822
|
+
}
|
|
823
|
+
});
|
|
824
|
+
}
|
|
825
|
+
const scopedMentionOrder = new Map(
|
|
826
|
+
atPathCommandParts.map((part, index) => [part.content, index])
|
|
827
|
+
);
|
|
828
|
+
scopedMentionEntries.sort(
|
|
829
|
+
(a, b) => (scopedMentionOrder.get(a.originalAtPath) ?? Number.MAX_SAFE_INTEGER) - (scopedMentionOrder.get(b.originalAtPath) ?? Number.MAX_SAFE_INTEGER)
|
|
830
|
+
);
|
|
831
|
+
const scopedMentionParts = scopedMentionEntries.map((entry) => entry.part);
|
|
832
|
+
const scopedMentionLabels = scopedMentionEntries.map((entry) => entry.label);
|
|
833
|
+
const scopedMentionDisplays = scopedMentionEntries.map(
|
|
834
|
+
(entry) => entry.display
|
|
835
|
+
);
|
|
737
836
|
const fileParts = [];
|
|
738
837
|
let fileDisplays = [];
|
|
739
838
|
if (pathSpecsToRead.length > 0) {
|
|
@@ -770,7 +869,7 @@ ${messages.join("\n")}`;
|
|
|
770
869
|
};
|
|
771
870
|
const errorMessage = typeof errorToolCallDisplay.resultDisplay === "string" ? errorToolCallDisplay.resultDisplay : void 0;
|
|
772
871
|
const labelsOnError = [
|
|
773
|
-
...
|
|
872
|
+
...scopedMentionLabels,
|
|
774
873
|
...contentLabelsForDisplay,
|
|
775
874
|
...resourceLabels
|
|
776
875
|
];
|
|
@@ -778,7 +877,7 @@ ${messages.join("\n")}`;
|
|
|
778
877
|
processedQuery: null,
|
|
779
878
|
shouldProceed: false,
|
|
780
879
|
toolDisplays: [
|
|
781
|
-
...
|
|
880
|
+
...scopedMentionDisplays,
|
|
782
881
|
...resourceDisplays,
|
|
783
882
|
errorToolCallDisplay
|
|
784
883
|
],
|
|
@@ -793,19 +892,23 @@ ${messages.join("\n")}`;
|
|
|
793
892
|
}
|
|
794
893
|
const processedQueryParts = [
|
|
795
894
|
{ text: initialQueryText },
|
|
796
|
-
...
|
|
895
|
+
...scopedMentionParts,
|
|
797
896
|
...fileParts,
|
|
798
897
|
...resourceParts
|
|
799
898
|
];
|
|
800
899
|
const allLabels = [
|
|
801
|
-
...
|
|
900
|
+
...scopedMentionLabels,
|
|
802
901
|
...contentLabelsForDisplay,
|
|
803
902
|
...resourceLabels
|
|
804
903
|
];
|
|
805
904
|
return {
|
|
806
905
|
processedQuery: processedQueryParts,
|
|
807
906
|
shouldProceed: true,
|
|
808
|
-
toolDisplays: [
|
|
907
|
+
toolDisplays: [
|
|
908
|
+
...scopedMentionDisplays,
|
|
909
|
+
...fileDisplays,
|
|
910
|
+
...resourceDisplays
|
|
911
|
+
],
|
|
809
912
|
filesRead: allLabels,
|
|
810
913
|
recording: {
|
|
811
914
|
filesRead: allLabels,
|
|
@@ -852,6 +955,10 @@ export {
|
|
|
852
955
|
matchExtensionByRef,
|
|
853
956
|
buildExtensionMentionContext,
|
|
854
957
|
getExtensionSuggestions,
|
|
958
|
+
parseMcpServerRef,
|
|
959
|
+
buildMcpServerRef,
|
|
960
|
+
matchMcpServerByRef,
|
|
961
|
+
buildMcpServerContextText,
|
|
855
962
|
resolveAtCommandQuery,
|
|
856
963
|
handleAtCommand
|
|
857
964
|
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
buildPermissionSettings
|
|
5
|
+
} from "./chunk-WKP5QZOP.js";
|
|
3
6
|
import {
|
|
4
7
|
resolveVoiceStreamConfig,
|
|
5
8
|
resolveVoiceTranscriptionConfig,
|
|
6
9
|
transcribeVoiceAudio
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import {
|
|
9
|
-
buildPermissionSettings
|
|
10
|
-
} from "./chunk-6QVQZAW6.js";
|
|
10
|
+
} from "./chunk-LFFF2SPV.js";
|
|
11
11
|
import {
|
|
12
12
|
getVoiceSettingsScope,
|
|
13
13
|
isSelectableVoiceModel,
|
|
@@ -16,7 +16,15 @@ import {
|
|
|
16
16
|
readVoiceMode,
|
|
17
17
|
readVoiceModel,
|
|
18
18
|
resolveVoiceTransport
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-FV5SBNNC.js";
|
|
20
|
+
import {
|
|
21
|
+
WorkspacePermissionRulesSessionRequiredError,
|
|
22
|
+
WorkspaceSettingsPartialPersistError
|
|
23
|
+
} from "./chunk-BMFMJINR.js";
|
|
24
|
+
import {
|
|
25
|
+
getPersistScopeForModelSelection,
|
|
26
|
+
loadSettings
|
|
27
|
+
} from "./chunk-NLD2WKE3.js";
|
|
20
28
|
import {
|
|
21
29
|
MCP_RESTART_SERVER_DEADLINE_MS
|
|
22
30
|
} from "./chunk-P7M4GA57.js";
|
|
@@ -41,27 +49,19 @@ import {
|
|
|
41
49
|
createIdleWorkspaceProvidersStatus,
|
|
42
50
|
createIdleWorkspaceSkillsStatus,
|
|
43
51
|
mapDomainErrorToErrorKind
|
|
44
|
-
} from "./chunk-
|
|
45
|
-
import {
|
|
46
|
-
WorkspacePermissionRulesSessionRequiredError,
|
|
47
|
-
WorkspaceSettingsPartialPersistError
|
|
48
|
-
} from "./chunk-BMFMJINR.js";
|
|
49
|
-
import {
|
|
50
|
-
getPersistScopeForModelSelection,
|
|
51
|
-
loadSettings
|
|
52
|
-
} from "./chunk-BC4R5C5R.js";
|
|
52
|
+
} from "./chunk-FUW7YGJU.js";
|
|
53
53
|
import {
|
|
54
54
|
getWorkspaceTrustStatus
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-YZ5ANQMR.js";
|
|
56
56
|
import {
|
|
57
57
|
writeStderrLine
|
|
58
58
|
} from "./chunk-Y6Z2O3WR.js";
|
|
59
59
|
import {
|
|
60
60
|
ModelsConfig
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-WOG7QWIT.js";
|
|
62
62
|
import {
|
|
63
63
|
createDebugLogger
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-22MNNNXE.js";
|
|
65
65
|
import {
|
|
66
66
|
init_esbuild_shims
|
|
67
67
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -15,15 +15,15 @@ import {
|
|
|
15
15
|
readCronTasks,
|
|
16
16
|
removeCronTasks,
|
|
17
17
|
updateCronTasks
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-NFE3DQ4R.js";
|
|
19
19
|
import {
|
|
20
20
|
ToolNames
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-X3YGAX7V.js";
|
|
22
22
|
import {
|
|
23
23
|
Storage,
|
|
24
24
|
createDebugLogger,
|
|
25
25
|
getProjectHash
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-22MNNNXE.js";
|
|
27
27
|
import {
|
|
28
28
|
init_esbuild_shims
|
|
29
29
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -139,7 +139,13 @@ __name(releaseLock, "releaseLock");
|
|
|
139
139
|
// packages/core/src/services/cronScheduler.ts
|
|
140
140
|
var debugLogger = createDebugLogger("CRON_SCHEDULER");
|
|
141
141
|
var MAX_JOBS = 50;
|
|
142
|
-
var
|
|
142
|
+
var DEFAULT_RECURRING_MAX_AGE_DAYS = 7;
|
|
143
|
+
var DEFAULT_RECURRING_MAX_AGE_MS = DEFAULT_RECURRING_MAX_AGE_DAYS * 24 * 60 * 60 * 1e3;
|
|
144
|
+
function normalizeRecurringMaxAge(value, fallback) {
|
|
145
|
+
if (value === 0) return Infinity;
|
|
146
|
+
return value > 0 ? value : fallback;
|
|
147
|
+
}
|
|
148
|
+
__name(normalizeRecurringMaxAge, "normalizeRecurringMaxAge");
|
|
143
149
|
var MAX_RECURRING_JITTER_MS = 15 * 60 * 1e3;
|
|
144
150
|
var MAX_ONESHOT_JITTER_MS = 90 * 1e3;
|
|
145
151
|
var LOCK_PROBE_INTERVAL_MS = 5e3;
|
|
@@ -218,9 +224,18 @@ __name(truncatePrompt, "truncatePrompt");
|
|
|
218
224
|
var CronScheduler = class {
|
|
219
225
|
/** `projectRoot` anchors durable storage; without it only session-only
|
|
220
226
|
* jobs work. Production constructs via `Config.getCronScheduler()`,
|
|
221
|
-
* which always supplies it.
|
|
222
|
-
|
|
227
|
+
* which always supplies it (and the configured `recurringMaxAgeMs`).
|
|
228
|
+
* `normalizeRecurringMaxAge` owns the expiry contract for both this
|
|
229
|
+
* constructor and the config layer: `0` and `Infinity` both mean
|
|
230
|
+
* "never expire" — so a direct caller passing `0` gets disabled
|
|
231
|
+
* expiry, not the default — while negative or NaN input falls back to
|
|
232
|
+
* the 7-day default rather than expiring everything at birth. */
|
|
233
|
+
constructor(projectRoot = null, recurringMaxAgeMs = DEFAULT_RECURRING_MAX_AGE_MS) {
|
|
223
234
|
this.projectRoot = projectRoot;
|
|
235
|
+
this.recurringMaxAgeMs = normalizeRecurringMaxAge(
|
|
236
|
+
recurringMaxAgeMs,
|
|
237
|
+
DEFAULT_RECURRING_MAX_AGE_MS
|
|
238
|
+
);
|
|
224
239
|
}
|
|
225
240
|
static {
|
|
226
241
|
__name(this, "CronScheduler");
|
|
@@ -284,6 +299,9 @@ var CronScheduler = class {
|
|
|
284
299
|
// removals), chained so stop() can hold the lock until they land — a
|
|
285
300
|
// successor reading the file pre-write would re-run the same work.
|
|
286
301
|
pendingPersist = Promise.resolve();
|
|
302
|
+
/** Age after which recurring jobs expire, evaluated at fire time.
|
|
303
|
+
* Infinity = never expire. Guarded in the constructor. */
|
|
304
|
+
recurringMaxAgeMs;
|
|
287
305
|
/**
|
|
288
306
|
* Creates a new session-only cron job. Returns the created job.
|
|
289
307
|
* Throws if the max job limit is reached.
|
|
@@ -303,7 +321,7 @@ var CronScheduler = class {
|
|
|
303
321
|
prompt,
|
|
304
322
|
recurring,
|
|
305
323
|
createdAt: now,
|
|
306
|
-
expiresAt: recurring ? now +
|
|
324
|
+
expiresAt: recurring ? now + this.recurringMaxAgeMs : Infinity,
|
|
307
325
|
// Prevent the scheduler from firing during the creation minute
|
|
308
326
|
lastFiredAt: now - now % 6e4,
|
|
309
327
|
jitterMs
|
|
@@ -558,7 +576,12 @@ var CronScheduler = class {
|
|
|
558
576
|
if (nextFire === null || nextFire >= now) continue;
|
|
559
577
|
if (!t.recurring) {
|
|
560
578
|
missedOneShots.push(t);
|
|
561
|
-
} else if (now - t.createdAt >=
|
|
579
|
+
} else if (now - t.createdAt >= this.recurringMaxAgeMs) {
|
|
580
|
+
console.warn(
|
|
581
|
+
`Durable cron task ${t.id} (created ${new Date(
|
|
582
|
+
t.createdAt
|
|
583
|
+
).toISOString()}) is past the recurring max age at load; it will fire one final time and be deleted.`
|
|
584
|
+
);
|
|
562
585
|
finalTasks.push(t);
|
|
563
586
|
} else {
|
|
564
587
|
catchUpIds.push(t.id);
|
|
@@ -588,7 +611,7 @@ var CronScheduler = class {
|
|
|
588
611
|
);
|
|
589
612
|
continue;
|
|
590
613
|
}
|
|
591
|
-
const job = durableTaskToJob(task, existing);
|
|
614
|
+
const job = durableTaskToJob(task, this.recurringMaxAgeMs, existing);
|
|
592
615
|
if (existing?.lastFiredAt !== void 0) {
|
|
593
616
|
job.lastFiredAt = Math.max(existing.lastFiredAt, job.lastFiredAt ?? 0);
|
|
594
617
|
}
|
|
@@ -610,7 +633,9 @@ var CronScheduler = class {
|
|
|
610
633
|
if (finalTasks.length > 0) {
|
|
611
634
|
this.fireOrBuffer({
|
|
612
635
|
kind: "final",
|
|
613
|
-
jobs: finalTasks.map(
|
|
636
|
+
jobs: finalTasks.map(
|
|
637
|
+
(t) => durableTaskToJob(t, this.recurringMaxAgeMs)
|
|
638
|
+
)
|
|
614
639
|
});
|
|
615
640
|
}
|
|
616
641
|
}
|
|
@@ -633,7 +658,7 @@ var CronScheduler = class {
|
|
|
633
658
|
case "missed": {
|
|
634
659
|
const skipped = [];
|
|
635
660
|
const runnable = pending.tasks.filter((t) => {
|
|
636
|
-
const job = durableTaskToJob(t);
|
|
661
|
+
const job = durableTaskToJob(t, this.recurringMaxAgeMs);
|
|
637
662
|
if (job.durable && this.skipDurableFire?.(job)) {
|
|
638
663
|
debugLogger.debug(
|
|
639
664
|
`Skipping durable job ${t.id} (missed): consumer cannot run it`
|
|
@@ -646,7 +671,7 @@ var CronScheduler = class {
|
|
|
646
671
|
for (const id of skipped) this.pendingRemoval.delete(id);
|
|
647
672
|
if (runnable.length > 0) {
|
|
648
673
|
onFire({
|
|
649
|
-
...durableTaskToJob(runnable[0]),
|
|
674
|
+
...durableTaskToJob(runnable[0], this.recurringMaxAgeMs),
|
|
650
675
|
prompt: buildMissedCronNotification(runnable),
|
|
651
676
|
missed: true
|
|
652
677
|
});
|
|
@@ -1034,7 +1059,7 @@ function hasParseableCron(task) {
|
|
|
1034
1059
|
}
|
|
1035
1060
|
}
|
|
1036
1061
|
__name(hasParseableCron, "hasParseableCron");
|
|
1037
|
-
function durableTaskToJob(task, existing) {
|
|
1062
|
+
function durableTaskToJob(task, recurringMaxAgeMs, existing) {
|
|
1038
1063
|
const jitterMs = existing && existing.cronExpr === task.cron && existing.recurring === task.recurring ? existing.jitterMs : computeJitter(task.id, task.cron, task.recurring);
|
|
1039
1064
|
return {
|
|
1040
1065
|
id: task.id,
|
|
@@ -1042,7 +1067,7 @@ function durableTaskToJob(task, existing) {
|
|
|
1042
1067
|
prompt: task.prompt,
|
|
1043
1068
|
recurring: task.recurring,
|
|
1044
1069
|
createdAt: task.createdAt,
|
|
1045
|
-
expiresAt: task.recurring ? task.createdAt +
|
|
1070
|
+
expiresAt: task.recurring ? task.createdAt + recurringMaxAgeMs : Infinity,
|
|
1046
1071
|
lastFiredAt: task.lastFiredAt ?? void 0,
|
|
1047
1072
|
jitterMs,
|
|
1048
1073
|
durable: true
|
|
@@ -1072,6 +1097,8 @@ function computeNextFireMs(cronExpr, afterMs, jitterMs) {
|
|
|
1072
1097
|
__name(computeNextFireMs, "computeNextFireMs");
|
|
1073
1098
|
|
|
1074
1099
|
export {
|
|
1100
|
+
DEFAULT_RECURRING_MAX_AGE_DAYS,
|
|
1101
|
+
normalizeRecurringMaxAge,
|
|
1075
1102
|
WAKEUP_MIN_SECONDS,
|
|
1076
1103
|
WAKEUP_MAX_SECONDS,
|
|
1077
1104
|
clampWakeupSeconds,
|
|
@@ -6,10 +6,18 @@ import {
|
|
|
6
6
|
|
|
7
7
|
// packages/acp-bridge/src/bridgeTypes.ts
|
|
8
8
|
init_esbuild_shims();
|
|
9
|
+
var LOAD_REPLAY_MODE_META_KEY = "qwen.session.loadReplayMode";
|
|
10
|
+
var LOAD_REPLAY_META_KEY = "qwen.session.loadReplay";
|
|
11
|
+
var LOAD_REPLAY_BULK_MODE = "bulk";
|
|
12
|
+
var LOAD_REPLAY_VERSION = 1;
|
|
9
13
|
var MID_TURN_QUEUE_DRAIN_METHOD = "craft/drainMidTurnQueue";
|
|
10
14
|
var CLIENT_MCP_OVER_WS_CONFIG_FLAG = "__clientMcpOverWs";
|
|
11
15
|
|
|
12
16
|
export {
|
|
17
|
+
LOAD_REPLAY_MODE_META_KEY,
|
|
18
|
+
LOAD_REPLAY_META_KEY,
|
|
19
|
+
LOAD_REPLAY_BULK_MODE,
|
|
20
|
+
LOAD_REPLAY_VERSION,
|
|
13
21
|
MID_TURN_QUEUE_DRAIN_METHOD,
|
|
14
22
|
CLIENT_MCP_OVER_WS_CONFIG_FLAG
|
|
15
23
|
};
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
isTlsVerificationDisabled
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-H6EMK6QK.js";
|
|
6
6
|
import {
|
|
7
7
|
getErrorMessage,
|
|
8
8
|
isNodeError
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-22MNNNXE.js";
|
|
10
10
|
import {
|
|
11
11
|
init_esbuild_shims
|
|
12
12
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -5,19 +5,19 @@ import {
|
|
|
5
5
|
} from "./chunk-3GONHQOA.js";
|
|
6
6
|
import {
|
|
7
7
|
getErrorMessage
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-544UZQBD.js";
|
|
9
9
|
import {
|
|
10
10
|
loadSettings
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-NLD2WKE3.js";
|
|
12
12
|
import {
|
|
13
13
|
getCurrentLanguage,
|
|
14
14
|
initializeI18n,
|
|
15
15
|
resolveLanguageSetting,
|
|
16
16
|
t
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-WNTS5A2R.js";
|
|
18
18
|
import {
|
|
19
19
|
isWorkspaceTrusted
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-YZ5ANQMR.js";
|
|
21
21
|
import {
|
|
22
22
|
writeStderrLine,
|
|
23
23
|
writeStdoutLine
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
redactUrlCredentials,
|
|
30
30
|
require_prompts,
|
|
31
31
|
stripAnsi
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-WOG7QWIT.js";
|
|
33
33
|
import {
|
|
34
34
|
init_esbuild_shims
|
|
35
35
|
} from "./chunk-A4BMJM77.js";
|