@qwen-code/qwen-code 0.19.2 → 0.19.3-nightly.20260630.e00fe6a27
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/extension-creator/SKILL.md +357 -0
- package/bundled/loop/SKILL.md +21 -7
- package/bundled/loop/SKILL.test.ts +41 -0
- package/bundled/loop/loop-task-file.test.ts +1064 -0
- package/bundled/loop/loop-task-file.ts +404 -0
- package/bundled/loop/loop-tick-resolver.test.ts +665 -0
- package/bundled/loop/loop-tick-resolver.ts +347 -0
- package/bundled/qc-helper/SKILL.md +26 -19
- package/bundled/qc-helper/docs/configuration/auth.md +11 -11
- package/bundled/qc-helper/docs/configuration/model-providers.md +13 -13
- package/bundled/qc-helper/docs/configuration/settings.md +76 -75
- package/bundled/qc-helper/docs/features/channels/plugins.md +1 -1
- package/bundled/qc-helper/docs/features/commands.md +108 -77
- package/bundled/qc-helper/docs/features/hooks.md +6 -1
- package/bundled/qc-helper/docs/features/memory.md +52 -0
- package/bundled/qc-helper/docs/qwen-serve.md +24 -2
- package/bundled/qc-helper/docs/support/tos-privacy.md +16 -3
- package/bundled/qc-helper/docs/support/troubleshooting.md +6 -0
- package/chunks/{MaxSizedBox-7RERNLFK.js → MaxSizedBox-T5X5MN5Q.js} +29 -27
- package/chunks/{StandaloneSessionPicker-S22XBSN6.js → StandaloneSessionPicker-P3E3WTOQ.js} +42 -37
- package/chunks/{acpAgent-4MCETHF2.js → acpAgent-QEP6DXFW.js} +864 -175
- package/chunks/{agent-K3ENVYSB.js → agent-UDANDUF7.js} +24 -23
- package/chunks/{agent-headless-HO3V3A3A.js → agent-headless-KYVSZHSO.js} +24 -23
- package/chunks/{anthropicContentGenerator-E3TQ5XJJ.js → anthropicContentGenerator-KWSJAQ7B.js} +33 -12
- package/chunks/{artifact-tool-QA4KRO3B.js → artifact-tool-D2X7G3C3.js} +2 -2
- package/chunks/{askUserQuestion-HMWXW6VN.js → askUserQuestion-UGETICJQ.js} +2 -2
- package/chunks/{bridge-4LV2HBH2.js → bridge-X42LXPTA.js} +31 -30
- package/chunks/{ca-7WC7ELX6.js → ca-IUFWESZL.js} +1 -0
- package/chunks/{chunk-JXQ23SNT.js → chunk-2JKEQWDZ.js} +623 -78
- package/chunks/{chunk-2TJ3YN6Q.js → chunk-2RJA6J57.js} +416 -401
- package/chunks/{chunk-3UALQ56H.js → chunk-3227DZO4.js} +1 -1
- package/chunks/{chunk-BGUDAULQ.js → chunk-3CPCDXFR.js} +5 -5
- package/chunks/{chunk-5RVSM6NW.js → chunk-3HUHAQF3.js} +1 -1
- package/chunks/{chunk-D5E5TMYH.js → chunk-3M4W4U5G.js} +16 -2
- package/chunks/{chunk-DBZUXSSV.js → chunk-4X7NIEQJ.js} +3 -3
- package/chunks/chunk-5GOVVXEV.js +73 -0
- package/chunks/{chunk-2BAQ3ACS.js → chunk-5SM4VT6V.js} +405 -5
- package/chunks/{chunk-NYOHZYHM.js → chunk-5XQ4A26L.js} +45 -3
- package/chunks/{chunk-CI5O6SQL.js → chunk-6FKEVYCD.js} +4 -4
- package/chunks/{chunk-ZD3NW5KL.js → chunk-7LM4XHPE.js} +63 -9
- package/chunks/chunk-7UNP2XM7.js +840 -0
- package/chunks/{chunk-OQHQHJRK.js → chunk-ARYCHZ4B.js} +151 -4775
- package/chunks/chunk-BC3C4F3Q.js +40 -0
- package/chunks/{chunk-CGEGHF2C.js → chunk-BKXBARJZ.js} +1 -1
- package/chunks/chunk-BMFMJINR.js +45 -0
- package/chunks/chunk-BOJWHRMX.js +11273 -0
- package/chunks/{chunk-CGOMICBE.js → chunk-BSZEQNUA.js} +34 -1
- package/chunks/{chunk-OIC6S73E.js → chunk-BUUQ5HPX.js} +1 -1
- package/chunks/{chunk-2BIF2NVV.js → chunk-BVSVIN45.js} +2 -2
- package/chunks/{chunk-TOEGRAVX.js → chunk-BX5YO7UW.js} +17 -5
- package/chunks/{chunk-4W4T77MO.js → chunk-BXVWV4GI.js} +109 -6
- package/chunks/{chunk-VQRYPFCV.js → chunk-CYHVPQYT.js} +10 -460
- package/chunks/{chunk-PRYMDRBV.js → chunk-DDMOU62Q.js} +1 -1
- package/chunks/{chunk-S566HKUS.js → chunk-DHXWNSJA.js} +15 -1
- package/chunks/{chunk-F6XNTYNE.js → chunk-E6XQPQXW.js} +30 -307
- package/chunks/{chunk-QBZ22PQX.js → chunk-EWALXUAD.js} +3 -1
- package/chunks/{chunk-EL5IHQON.js → chunk-EWYQFWYF.js} +6 -27
- package/chunks/{chunk-HG6YKEBI.js → chunk-F2DOT6UZ.js} +161 -30
- package/chunks/{chunk-JTYRZODB.js → chunk-FOOIZCWL.js} +16 -7
- package/chunks/{chunk-EX4W6ZYG.js → chunk-G5G4TFZ7.js} +1 -1
- package/chunks/{chunk-EW6C27XX.js → chunk-GEHVIWAT.js} +9 -3
- package/chunks/chunk-HEVBZSXG.js +4923 -0
- package/chunks/chunk-HFQ2XSE7.js +690 -0
- package/chunks/{chunk-PF523XJX.js → chunk-HPGTGMP3.js} +1 -1
- package/chunks/{chunk-OTBK43JR.js → chunk-HYCC3XM3.js} +1 -1
- package/chunks/{chunk-TMBPDHXD.js → chunk-I4H7PRWQ.js} +1 -1
- package/chunks/{chunk-EEEZIVFJ.js → chunk-JOLIREYR.js} +1 -1
- package/chunks/{chunk-TZM5JIAX.js → chunk-JYPQTRA3.js} +10 -7
- package/chunks/chunk-K5XU6E4T.js +167 -0
- package/chunks/{chunk-BS64PXY3.js → chunk-KFVU7ODN.js} +1 -1
- package/chunks/{chunk-3RJ3ZPPR.js → chunk-KKQWC6WS.js} +7 -7
- package/chunks/{chunk-3QFE4OTE.js → chunk-LBW7NW7X.js} +4 -4
- package/chunks/{chunk-Z7XXFPGP.js → chunk-LDWTYE33.js} +1 -1
- package/chunks/{chunk-EXMX5YHG.js → chunk-LP5E4YIH.js} +1 -1
- package/chunks/{chunk-ZUAXI2OA.js → chunk-M2U5NM24.js} +188 -11366
- package/chunks/{chunk-I5T6PIBQ.js → chunk-MBV2CTRL.js} +1010 -925
- package/chunks/{chunk-5JZLXFPD.js → chunk-MTHMXSNT.js} +11 -11
- package/chunks/{chunk-FPACXT7T.js → chunk-MTJVHQDP.js} +534 -164
- package/chunks/chunk-NDOC6M5S.js +481 -0
- package/chunks/{chunk-HGNSRCRB.js → chunk-NL4C3H6C.js} +1 -1
- package/chunks/{chunk-GZCJS5WH.js → chunk-O2VBQ3Y2.js} +2 -2
- package/chunks/{chunk-UN3C6GOR.js → chunk-PPFWEV7G.js} +10 -108
- package/chunks/{chunk-RS4HRC75.js → chunk-QI2CFVRF.js} +85 -8
- package/chunks/{chunk-XU5P23GN.js → chunk-QLDPRILK.js} +3 -3
- package/chunks/chunk-QYUE6W3T.js +123 -0
- package/chunks/{chunk-USGMPVOY.js → chunk-R3LHDWF2.js} +21 -12
- package/chunks/{chunk-BNXANYLH.js → chunk-RD6YJJJ6.js} +81 -1
- package/chunks/{chunk-PXFFKNCO.js → chunk-RIP623NO.js} +4877 -2469
- package/chunks/{chunk-XKBP7M7A.js → chunk-RYBSUGOR.js} +142 -30
- package/chunks/{chunk-BG4BIP7F.js → chunk-SBBN4BWR.js} +4 -2
- package/chunks/{chunk-T2VDEFUU.js → chunk-SKQZZVAV.js} +2 -2
- package/chunks/{chunk-5R4SBCX6.js → chunk-SL5MOGQH.js} +3 -3
- package/chunks/chunk-SMXULRAN.js +37 -0
- package/chunks/{chunk-WA5OJGFL.js → chunk-SS6WJMQK.js} +363 -76
- package/chunks/{chunk-UAARVVBI.js → chunk-TNWFHGN6.js} +1 -1
- package/chunks/{chunk-I2RFAW6Q.js → chunk-TT6Q3EN4.js} +7 -5
- package/chunks/chunk-UAKXW3DN.js +30 -0
- package/chunks/{chunk-C4K3FEQ2.js → chunk-UX4SGCGN.js} +32 -3
- package/chunks/{chunk-J6AW7O5D.js → chunk-WHDQZHRU.js} +2 -2
- package/chunks/{chunk-WGAEWQTF.js → chunk-WN6K47NR.js} +1 -2
- package/chunks/{chunk-UAARJR2G.js → chunk-WQT5SOI6.js} +2 -2
- package/chunks/{chunk-VYFMN7C6.js → chunk-WUMVIRTN.js} +225 -37
- package/chunks/{chunk-R36VMVEP.js → chunk-XJMKOTVV.js} +5 -5
- package/chunks/{chunk-TXVGVZYR.js → chunk-XJYUPHRC.js} +3 -3
- package/chunks/{chunk-2JD55C6G.js → chunk-Y6YMRS3U.js} +2 -2
- package/chunks/{chunk-LLFFKXZZ.js → chunk-YALKC62D.js} +56 -29
- package/chunks/{chunk-GYZQA2FO.js → chunk-YLZJCUH6.js} +1 -1
- package/chunks/chunk-YTFBURQD.js +313 -0
- package/chunks/{chunk-KBXLIVWQ.js → chunk-ZFPRYHWR.js} +2 -2
- package/chunks/{chunk-X6EDWN44.js → chunk-ZP6UKOPB.js} +1 -1
- package/chunks/{computer-use-6BBRNT6S.js → computer-use-LF2S6LUZ.js} +103 -49
- package/chunks/{contextCommand-UJAJ6N57.js → contextCommand-VPX5UG55.js} +26 -25
- package/chunks/{cron-create-4KQE6YLH.js → cron-create-SKEY55RG.js} +4 -4
- package/chunks/{cron-delete-THME66UP.js → cron-delete-I3NAT32Z.js} +6 -6
- package/chunks/{cron-list-7A54SJ5N.js → cron-list-6XRRL6TH.js} +5 -5
- package/chunks/{daemon-status-provider-CSL3BUOY.js → daemon-status-provider-5JAWZS4V.js} +34 -34
- package/chunks/{de-ACHALDED.js → de-EOW5PVHF.js} +1 -0
- package/chunks/{dist-BD27IA3L.js → dist-4FCNM6KJ.js} +2 -2
- package/chunks/{dist-OD2FY543.js → dist-O3H4PABL.js} +2 -2
- package/chunks/{dist-BOOH5JWN.js → dist-SCAAUWPS.js} +18 -4
- package/chunks/{dist-QHJRBCMP.js → dist-UKPWQJCL.js} +44 -2
- package/chunks/{dist-QFFZWACU.js → dist-VD7HXTML.js} +20 -9
- package/chunks/{earlyInputCapture-X6KMCSHD.js → earlyInputCapture-7FRQMU4P.js} +25 -24
- package/chunks/{edit-7J6WXARF.js → edit-REKJDIRL.js} +68 -27
- package/chunks/{en-NCUBOJOY.js → en-HPWEJBTR.js} +8 -0
- package/chunks/{enter-worktree-KULCKJPJ.js → enter-worktree-GBKUDCD3.js} +24 -23
- package/chunks/{enterPlanMode-H2CIOLMH.js → enterPlanMode-WB3Y4FGT.js} +24 -23
- package/chunks/{errors-6G2JYR54.js → errors-2XJDYO3M.js} +26 -25
- package/chunks/{exit-worktree-ECBWBVC5.js → exit-worktree-KKC7O2ZV.js} +24 -23
- package/chunks/{exitPlanMode-DQV56GTW.js → exitPlanMode-7HMS3TF7.js} +24 -23
- package/chunks/{fast-path-35JJFS3C.js → fast-path-XVNIYWGG.js} +4 -4
- package/chunks/{fast-path-settings-TSVI53EB.js → fast-path-settings-UQLRFDQP.js} +3 -2
- package/chunks/{fr-GVKZ27MF.js → fr-BN5NKSAC.js} +1 -0
- package/chunks/{gemini-NDTG7WAX.js → gemini-U5TPU3IQ.js} +210 -104
- package/chunks/{geminiContentGenerator-XTG6SFLA.js → geminiContentGenerator-ZVWRHXOO.js} +4 -4
- package/chunks/{glob-SJ2JBZK4.js → glob-FEJWIH2W.js} +24 -23
- package/chunks/{grep-BRMWFEWR.js → grep-KMP25IIA.js} +24 -23
- package/chunks/{headlessSafetyWarnings-LJ6FJX77.js → headlessSafetyWarnings-5DEDET4M.js} +24 -23
- package/chunks/{initializer-P5AXF7PV.js → initializer-FJTACLOH.js} +31 -28
- package/chunks/{ja-FKZ2WZ4D.js → ja-7DEUB2TS.js} +1 -0
- package/chunks/{keychain-token-storage-CSYMNRPP.js → keychain-token-storage-YLMDLKXT.js} +2 -2
- package/chunks/{list-6COK34BP.js → list-SCQXYJUW.js} +32 -29
- package/chunks/{loadedSettingsAdapter-XIUTN245.js → loadedSettingsAdapter-P6KPNAG7.js} +30 -27
- package/chunks/{loop-wakeup-33GPXJLA.js → loop-wakeup-FYEQEJUA.js} +7 -7
- package/chunks/{ls-BYQY7RVV.js → ls-R5WP4BGZ.js} +4 -4
- package/chunks/{lsp-X54RO4IV.js → lsp-GSICJMMW.js} +2 -2
- package/chunks/{monitor-DH7KFSJV.js → monitor-JU3HHHVY.js} +24 -23
- package/chunks/nonInteractiveCli-IZEKUHU3.js +100 -0
- package/chunks/{notebook-edit-D4R4ZLMA.js → notebook-edit-YHY3Z2QQ.js} +52 -23
- package/chunks/{openaiContentGenerator-F74IPQ6E.js → openaiContentGenerator-4WUVA3Q2.js} +13 -12
- package/chunks/{pt-SY5NCFGR.js → pt-TNZRNLQB.js} +1 -0
- package/chunks/{qwenContentGenerator-ATTK5P4D.js → qwenContentGenerator-MVYYR44B.js} +26 -25
- package/chunks/{qwenOAuth2-K4AASPCV.js → qwenOAuth2-6HNGHALT.js} +5 -4
- package/chunks/{read-file-767G23OY.js → read-file-NABEO2X4.js} +8 -8
- package/chunks/{read-mcp-resource-I5HCZJ6X.js → read-mcp-resource-DQQW7H7T.js} +2 -2
- package/chunks/{ripGrep-4OMMGSWX.js → ripGrep-YXLK6UTX.js} +24 -23
- package/chunks/{ru-FWNXJG4F.js → ru-NIAUBKCN.js} +1 -0
- package/chunks/{run-qwen-serve-REKSTYRA.js → run-qwen-serve-4B5QBMLQ.js} +144 -41
- package/chunks/{scheduler-UNTFDQLG.js → scheduler-XAKIYBDL.js} +24 -23
- package/chunks/{send-message-2DAFXEYP.js → send-message-EE4TWKVU.js} +2 -2
- package/chunks/{serve-KZ56QB5S.js → serve-4RXVLUKD.js} +30 -28
- package/chunks/{server-BV5TZUMU.js → server-7PA5QGIA.js} +11037 -8747
- package/chunks/{session-OIBXFSGD.js → session-WNVWRYAH.js} +194 -57
- package/chunks/{settings-WJTCBIRA.js → settings-YJH32TFF.js} +30 -27
- package/chunks/{shell-WC52IBHW.js → shell-YFLABOS5.js} +24 -23
- package/chunks/{skill-U7F7JR4M.js → skill-N3J7FUAY.js} +38 -11
- package/chunks/{spawnChannel-EI2E5BCW.js → spawnChannel-D6WVMFZJ.js} +26 -25
- package/chunks/{src-4F6FBZFI.js → src-IU5GDBEH.js} +88 -28
- package/chunks/{startInteractiveUI-SFRVB3CE.js → startInteractiveUI-QIPQTRT4.js} +2784 -2474
- package/chunks/{syntheticOutput-PPS3HDVA.js → syntheticOutput-T5YHQ6S2.js} +3 -3
- package/chunks/{task-create-OUYCA553.js → task-create-BLY7RHXX.js} +6 -6
- package/chunks/{task-list-WAX7I2IA.js → task-list-3QUYNVYR.js} +5 -5
- package/chunks/{task-stop-CAIL6FNH.js → task-stop-U4RATK2V.js} +2 -2
- package/chunks/{task-update-AHEO5OUT.js → task-update-U54O7KJX.js} +6 -6
- package/chunks/{team-create-3WC7CIIW.js → team-create-TP4CLLM3.js} +24 -23
- package/chunks/{team-delete-HGHFG23B.js → team-delete-LKBYPASD.js} +5 -5
- package/chunks/{theme-manager-DICFCT3P.js → theme-manager-N2TBIBZT.js} +25 -24
- package/chunks/{todoWrite-IFBMN3FH.js → todoWrite-OYXKTVYN.js} +4 -4
- package/chunks/{tool-search-L5K7HLER.js → tool-search-GBBSICYB.js} +101 -16
- package/chunks/trustedFolders-F7TBU5CD.js +76 -0
- package/chunks/types-QX5C3CHJ.js +12 -0
- package/chunks/{validateNonInterActiveAuth-GCH4Z6KI.js → validateNonInterActiveAuth-EQDQPSMI.js} +55 -50
- package/chunks/{web-fetch-B5IIQ5TT.js → web-fetch-PCVCML2X.js} +29 -15
- package/chunks/{workflow-OB3AND7I.js → workflow-ANJ4FYBK.js} +32 -30
- package/chunks/{workspace-providers-status-ZIR5EPOO.js → workspace-providers-status-462QQKQM.js} +32 -29
- package/chunks/workspace-service-VTG4G6CW.js +75 -0
- package/chunks/{write-file-SEXBNDZM.js → write-file-3P3WMQQW.js} +63 -27
- package/chunks/{zh-RBEGQVQT.js → zh-5EUYXASN.js} +8 -0
- package/chunks/{zh-TW-QGAVRXT3.js → zh-TW-TR3XYGE5.js} +8 -0
- package/cli-entry.js +20 -9
- package/cli.js +6 -6
- package/locales/ca.js +2 -0
- package/locales/de.js +2 -0
- package/locales/en.js +14 -0
- package/locales/fr.js +2 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +2 -0
- package/locales/ru.js +2 -0
- package/locales/zh-TW.js +12 -0
- package/locales/zh.js +12 -0
- package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +35 -0
- package/node_modules/@qwen-code/audio-capture/dist/index.js +48 -0
- package/node_modules/@qwen-code/audio-capture/dist/index.js.map +1 -0
- package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +7 -0
- package/node_modules/@qwen-code/audio-capture/dist/platform.js +18 -0
- package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +1 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +21 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +58 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +5 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +84 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +19 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +6 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +207 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +7 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +43 -0
- package/node_modules/@qwen-code/audio-capture/package.json +30 -0
- 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/linux-arm64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/linux-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 +18 -6
- package/patches/chrome-devtools-mcp+1.4.0.patch +31 -0
- package/postinstall.js +50 -0
- package/web-shell/assets/{arc-D_ae_Y9k.js → arc-DIemsO_F.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BMLRjppa.js → architectureDiagram-3BPJPVTR-CTlUvIQv.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-qVDQC8KL.js → blockDiagram-GPEHLZMM-DG0jmIZK.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-CxWS6MBd.js → c4Diagram-AAUBKEIU-WljDBi55.js} +1 -1
- package/web-shell/assets/channel-CbzRbdpA.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-BtNuY5Yp.js → chunk-2J33WTMH-8nc6onr2.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BU-x368d.js → chunk-4BX2VUAB-EopXix8Z.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DRgTLvBu.js → chunk-55IACEB6-BE4Jz3N3.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-D2aElv7q.js → chunk-727SXJPM-C_eErgDN.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BwHCMRQ0.js → chunk-AQP2D5EJ-DFtVW-Is.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-BMyPH-ku.js → chunk-FMBD7UC4-CJPyxIg9.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-BNKTstUf.js → chunk-ND2GUHAM-Bk-xgj6M.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-gD3vsFId.js → chunk-QZHKN3VN-p3Y4yaFB.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BFdyQ52h.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BFdyQ52h.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BG9FAsXE.js → cose-bilkent-S5V4N54A-BCMO6Js3.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-Cy1sR7om.js → dagre-BM42HDAG-DUMrwASf.js} +1 -1
- package/web-shell/assets/default-aEtf0G7-.svg +1 -0
- package/web-shell/assets/{diagram-2AECGRRQ-Bxi1I_Vu.js → diagram-2AECGRRQ-C5d7qJbL.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BGCJjO6y.js → diagram-5GNKFQAL-CjLzMhbT.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CMTeLXp7.js → diagram-KO2AKTUF-RCoNWeAm.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BN1wyAGh.js → diagram-LMA3HP47-KThXjaNV.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-UYSG_zcp.js → diagram-OG6HWLK6-DKsC2BWz.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-DqXL08lw.js → erDiagram-TEJ5UH35-DJ2ukmq0.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BPJ9SFji.js → flowDiagram-I6XJVG4X-zzqaARRX.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BEd9Pnms.js → ganttDiagram-6RSMTGT7-kFUg-gqT.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DrNRH3oi.js → gitGraphDiagram-PVQCEYII-C6JnMVzD.js} +1 -1
- package/web-shell/assets/index-B3XUm7dw.js +713 -0
- package/web-shell/assets/index-CHmzAWys.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CFYBrkVI.js → infoDiagram-5YYISTIA-XqPVhp89.js} +1 -1
- package/web-shell/assets/insert-DmRbh9Rv.svg +1 -0
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Dxsddth7.js → ishikawaDiagram-YF4QCWOH-D2k8sGpf.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-DxaDK80t.js → journeyDiagram-JHISSGLW-CQEST1GE.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-Q0jQCOct.js → kanban-definition-UN3LZRKU-DZ7kqVBC.js} +1 -1
- package/web-shell/assets/{linear-DGGM2kcP.js → linear-B6C_6q_E.js} +1 -1
- package/web-shell/assets/{mermaid.core-ByoxnWut.js → mermaid.core-CsyNP1qt.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-C0ZseHsi.js → mindmap-definition-RKZ34NQL-B1VDIzJq.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-MQXNhl5A.js → pieDiagram-4H26LBE5-DN0E7Jwu.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DIR4ee2A.js → quadrantDiagram-W4KKPZXB-UKTQdHKm.js} +1 -1
- package/web-shell/assets/queue-DWpnpFgW.svg +1 -0
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BTR0UdYQ.js → requirementDiagram-4Y6WPE33-BRGceQvN.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-sfnhMELN.js → sankeyDiagram-5OEKKPKP-2DDyu41v.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DXczHOHH.js → sequenceDiagram-3UESZ5HK-CT5iE8ZU.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-DdE_KQFH.js → stateDiagram-AJRCARHV-CqMQ_s4G.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CamhV5pM.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-DIc61uE8.js → timeline-definition-PNZ67QCA-Di37QSZU.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BF7ODmxB.js → vennDiagram-CIIHVFJN-DCXvpz5S.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-3pc1MEaw.js → wardley-L42UT6IY-CpUCk6OX.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-9jnPcZuP.js → wardleyDiagram-YWT4CUSO-D01pVEBg.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-DcthaZK6.js → xychartDiagram-2RQKCTM6-DOu5JDoz.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-B6HQGTYR.js +0 -410
- package/chunks/chunk-R2BXK7SX.js +0 -13
- package/chunks/chunk-RKIZXJMB.js +0 -13
- package/chunks/nonInteractiveCli-7575LBXP.js +0 -91
- package/chunks/workspace-service-OM5D4OI2.js +0 -60
- package/web-shell/assets/channel-DYPNiTww.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-p_g25Tni.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-p_g25Tni.js +0 -1
- package/web-shell/assets/index-CpOXWDPh.js +0 -714
- package/web-shell/assets/index-oVK7qhre.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BHUSEndU.js +0 -1
|
@@ -2,26 +2,28 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
handleAtCommand
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-7UNP2XM7.js";
|
|
6
6
|
import {
|
|
7
7
|
JsonOutputAdapter
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-G5G4TFZ7.js";
|
|
9
9
|
import {
|
|
10
10
|
StreamJsonOutputAdapter
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-WHDQZHRU.js";
|
|
12
12
|
import {
|
|
13
|
+
buildInitialSystemReminders,
|
|
13
14
|
buildSystemMessage,
|
|
14
15
|
computeUsageFromMetrics,
|
|
15
16
|
createAgentToolProgressHandler,
|
|
16
17
|
createToolProgressHandler,
|
|
17
18
|
extractPartsFromUserMessage,
|
|
18
19
|
handleSlashCommand,
|
|
20
|
+
insertAfterFunctionResponses,
|
|
19
21
|
isSlashCommand,
|
|
20
22
|
normalizePartList
|
|
21
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-2RJA6J57.js";
|
|
22
24
|
import {
|
|
23
25
|
RunBudgetEnforcer
|
|
24
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-BOJWHRMX.js";
|
|
25
27
|
import {
|
|
26
28
|
AlreadyReportedError,
|
|
27
29
|
handleBudgetExceededError,
|
|
@@ -29,26 +31,33 @@ import {
|
|
|
29
31
|
handleError,
|
|
30
32
|
handleMaxTurnsExceededError,
|
|
31
33
|
handleToolError
|
|
32
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-SL5MOGQH.js";
|
|
33
35
|
import {
|
|
36
|
+
ORPHAN_TOOL_USE_REPAIR_REASON,
|
|
37
|
+
buildSyntheticToolResponseParts,
|
|
34
38
|
createDuplicateProviderToolCallResponse,
|
|
39
|
+
detectLoopSentinel,
|
|
40
|
+
detectTurnInterruption,
|
|
35
41
|
executeToolCall,
|
|
42
|
+
findRepeatedDuplicateProviderToolCall,
|
|
43
|
+
isSystemReminderContent,
|
|
44
|
+
markDuplicateProviderToolCallResponseSent,
|
|
36
45
|
parseAndFormatApiError,
|
|
37
46
|
promptIdContext,
|
|
38
47
|
restoreWorktreeContext
|
|
39
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-RIP623NO.js";
|
|
40
49
|
import {
|
|
41
50
|
isTelemetrySdkInitialized,
|
|
42
51
|
shutdownTelemetry,
|
|
43
52
|
uiTelemetryService
|
|
44
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-SS6WJMQK.js";
|
|
45
54
|
import {
|
|
46
55
|
ToolNames
|
|
47
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-BX5YO7UW.js";
|
|
48
57
|
import {
|
|
49
58
|
FatalInputError,
|
|
50
59
|
createDebugLogger
|
|
51
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-UX4SGCGN.js";
|
|
52
61
|
import {
|
|
53
62
|
init_esbuild_shims
|
|
54
63
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -72,6 +81,7 @@ var LOOP_TYPE_LABELS = {
|
|
|
72
81
|
["repetitive_thoughts" /* REPETITIVE_THOUGHTS */]: "the model repeated the same reasoning thought",
|
|
73
82
|
["read_file_loop" /* READ_FILE_LOOP */]: "the model spent too many consecutive calls reading files without making progress",
|
|
74
83
|
["action_stagnation" /* ACTION_STAGNATION */]: "the model kept calling the same tool without making progress",
|
|
84
|
+
["shell_command_stagnation" /* SHELL_COMMAND_STAGNATION */]: "the model repeated similar shell inspection commands without making progress",
|
|
75
85
|
["global_tool_call_duplicate" /* GLOBAL_TOOL_CALL_DUPLICATE */]: "the model repeated the same tool call across the turn, even when not back-to-back",
|
|
76
86
|
["alternating_tool_call_pattern" /* ALTERNATING_TOOL_CALL_PATTERN */]: "the model alternated between the same two tool calls in a repeating pattern",
|
|
77
87
|
["turn_tool_call_cap" /* TURN_TOOL_CALL_CAP */]: "the model exceeded the maximum number of tool calls allowed in a single turn"
|
|
@@ -79,11 +89,26 @@ var LOOP_TYPE_LABELS = {
|
|
|
79
89
|
function formatLoopDetectedMessage(loopType) {
|
|
80
90
|
const reason = loopType ? LOOP_TYPE_LABELS[loopType] : void 0;
|
|
81
91
|
const detail = reason ? ` (${loopType}: ${reason})` : "";
|
|
82
|
-
const isAlwaysOn = loopType === "turn_tool_call_cap" /* TURN_TOOL_CALL_CAP */ || loopType === "consecutive_identical_tool_calls" /* CONSECUTIVE_IDENTICAL_TOOL_CALLS */;
|
|
92
|
+
const isAlwaysOn = loopType === "turn_tool_call_cap" /* TURN_TOOL_CALL_CAP */ || loopType === "consecutive_identical_tool_calls" /* CONSECUTIVE_IDENTICAL_TOOL_CALLS */ || loopType === "shell_command_stagnation" /* SHELL_COMMAND_STAGNATION */ || loopType === "global_tool_call_duplicate" /* GLOBAL_TOOL_CALL_DUPLICATE */;
|
|
83
93
|
const hint = isAlwaysOn ? " This is an always-on guard and cannot be disabled via `model.skipLoopDetection`." : " Set the `model.skipLoopDetection` setting to true to disable.";
|
|
84
94
|
return `Loop detection halted the run${detail}.${hint}`;
|
|
85
95
|
}
|
|
86
96
|
__name(formatLoopDetectedMessage, "formatLoopDetectedMessage");
|
|
97
|
+
function skipHeadlessLoopSentinel(scheduler, job) {
|
|
98
|
+
if (!detectLoopSentinel(job.prompt)) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
if (job.recurring && !job.durable) {
|
|
102
|
+
debugLogger.debug(
|
|
103
|
+
"skipHeadlessLoopSentinel: cleaning up recurring session loop.md cron in headless mode",
|
|
104
|
+
{ jobId: job.id }
|
|
105
|
+
);
|
|
106
|
+
void scheduler.delete(job.id).catch(() => {
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
__name(skipHeadlessLoopSentinel, "skipHeadlessLoopSentinel");
|
|
87
112
|
function emitLoopDetectedMessage(config, loopType) {
|
|
88
113
|
const message = formatLoopDetectedMessage(loopType);
|
|
89
114
|
if (config.getOutputFormat() !== "text" /* TEXT */) {
|
|
@@ -132,6 +157,10 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
|
|
|
132
157
|
} else {
|
|
133
158
|
adapter = new JsonOutputAdapter(config);
|
|
134
159
|
}
|
|
160
|
+
const emitResult = /* @__PURE__ */ __name((result) => {
|
|
161
|
+
adapter.emitResult(result);
|
|
162
|
+
options.onResultEmitted?.();
|
|
163
|
+
}, "emitResult");
|
|
135
164
|
const sessionId = config.getSessionId();
|
|
136
165
|
const permissionMode = config.getApprovalMode();
|
|
137
166
|
let turnCount = 0;
|
|
@@ -247,6 +276,7 @@ ${reason}
|
|
|
247
276
|
manager.getEventEmitter().on("teammate_approval_request" /* TEAMMATE_APPROVAL_REQUEST */, approvalListener);
|
|
248
277
|
}
|
|
249
278
|
}, "onTeamManagerChangeHandler");
|
|
279
|
+
let continueSendType = null;
|
|
250
280
|
try {
|
|
251
281
|
process.stdout.on("error", stdoutErrorHandler);
|
|
252
282
|
process.on("SIGINT", shutdownHandler);
|
|
@@ -265,6 +295,49 @@ ${reason}
|
|
|
265
295
|
let initialPartList = extractPartsFromUserMessage(
|
|
266
296
|
options.userMessage
|
|
267
297
|
);
|
|
298
|
+
if (options.continueInterrupted) {
|
|
299
|
+
const detection = detectTurnInterruption(
|
|
300
|
+
geminiClient.getChat().getHistory()
|
|
301
|
+
);
|
|
302
|
+
debugLogger.info("[runNonInteractive] continueInterrupted detection", {
|
|
303
|
+
kind: detection.kind,
|
|
304
|
+
partsCount: detection.kind === "interrupted_prompt" ? detection.parts.length : 0,
|
|
305
|
+
danglingCallCount: detection.kind === "interrupted_turn" ? detection.danglingCalls.length : 0
|
|
306
|
+
});
|
|
307
|
+
if (detection.kind === "none") {
|
|
308
|
+
await emitNonInteractiveFinalMessage({
|
|
309
|
+
message: "No interrupted turn to continue.",
|
|
310
|
+
isError: false,
|
|
311
|
+
adapter,
|
|
312
|
+
config,
|
|
313
|
+
startTimeMs: startTime
|
|
314
|
+
});
|
|
315
|
+
return 0;
|
|
316
|
+
}
|
|
317
|
+
if (detection.kind === "interrupted_prompt") {
|
|
318
|
+
initialPartList = detection.parts;
|
|
319
|
+
continueSendType = "retry" /* Retry */;
|
|
320
|
+
} else {
|
|
321
|
+
initialPartList = buildSyntheticToolResponseParts(
|
|
322
|
+
detection.danglingCalls,
|
|
323
|
+
ORPHAN_TOOL_USE_REPAIR_REASON
|
|
324
|
+
);
|
|
325
|
+
continueSendType = "toolResult" /* ToolResult */;
|
|
326
|
+
}
|
|
327
|
+
const reminderParts = buildInitialSystemReminders(config);
|
|
328
|
+
if (reminderParts.length > 0 && initialPartList) {
|
|
329
|
+
const continuationParts = normalizePartList(initialPartList);
|
|
330
|
+
const hasSystemReminderPart = continuationParts.some(
|
|
331
|
+
(part) => isSystemReminderContent({ role: "user", parts: [part] })
|
|
332
|
+
);
|
|
333
|
+
if (!hasSystemReminderPart) {
|
|
334
|
+
initialPartList = insertAfterFunctionResponses(
|
|
335
|
+
continuationParts,
|
|
336
|
+
reminderParts
|
|
337
|
+
);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
268
341
|
if (!initialPartList) {
|
|
269
342
|
let slashHandled = false;
|
|
270
343
|
if (isSlashCommand(input)) {
|
|
@@ -343,13 +416,13 @@ ${text}
|
|
|
343
416
|
};
|
|
344
417
|
return Array.isArray(existing) ? [reminderPart, ...existing] : [reminderPart, existing];
|
|
345
418
|
}, "withReminder");
|
|
346
|
-
const startupNotice = config.consumePendingStartupWorktreeNotice();
|
|
419
|
+
const startupNotice = options.continueInterrupted ? null : config.consumePendingStartupWorktreeNotice();
|
|
347
420
|
if (startupNotice) {
|
|
348
421
|
initialPartList = withReminder(initialPartList, startupNotice);
|
|
349
422
|
adapter.emitSystemMessage("worktree_started", {
|
|
350
423
|
notice: startupNotice
|
|
351
424
|
});
|
|
352
|
-
} else if (config.getResumedSessionData()) {
|
|
425
|
+
} else if (!options.continueInterrupted && config.getResumedSessionData()) {
|
|
353
426
|
try {
|
|
354
427
|
const sessionPath = config.getSessionService().getWorktreeSessionPath(sessionId);
|
|
355
428
|
const restored = await restoreWorktreeContext(sessionPath);
|
|
@@ -451,7 +524,7 @@ ${text}
|
|
|
451
524
|
const metrics = uiTelemetryService.getMetrics();
|
|
452
525
|
const usage = computeUsageFromMetrics(metrics);
|
|
453
526
|
const stats = outputFormat === "json" /* JSON */ ? uiTelemetryService.getMetrics() : void 0;
|
|
454
|
-
|
|
527
|
+
emitResult({
|
|
455
528
|
isError: false,
|
|
456
529
|
durationMs: Date.now() - startTime,
|
|
457
530
|
apiDurationMs: totalApiDurationMs,
|
|
@@ -484,9 +557,11 @@ ${text}
|
|
|
484
557
|
return 1;
|
|
485
558
|
}, "emitLoopDetectedResult");
|
|
486
559
|
const handledProviderToolCallIds = geminiClient.getHistoryFunctionResponseIds();
|
|
560
|
+
const duplicateProviderToolCallResponseIds = /* @__PURE__ */ new Set();
|
|
487
561
|
const processToolCallBatch = /* @__PURE__ */ __name(async (batchRequests, setModelOverride) => {
|
|
488
562
|
const toolResponseParts = [];
|
|
489
563
|
const structuredOutputActive = config.getJsonSchema() && batchRequests.some((r) => r.name === ToolNames.STRUCTURED_OUTPUT);
|
|
564
|
+
const getProviderResponseId = /* @__PURE__ */ __name((request) => request.providerCallId ?? (structuredOutputActive ? void 0 : request.callId || void 0), "getProviderResponseId");
|
|
490
565
|
const seenBatchCallIds = /* @__PURE__ */ new Set();
|
|
491
566
|
const duplicateBatchRequests = [];
|
|
492
567
|
const uniqueBatchRequests = batchRequests.filter((request) => {
|
|
@@ -505,22 +580,43 @@ ${text}
|
|
|
505
580
|
}
|
|
506
581
|
return true;
|
|
507
582
|
});
|
|
583
|
+
const repeatedDuplicateRequest = findRepeatedDuplicateProviderToolCall(
|
|
584
|
+
[...uniqueBatchRequests, ...duplicateBatchRequests],
|
|
585
|
+
getProviderResponseId,
|
|
586
|
+
handledProviderToolCallIds,
|
|
587
|
+
duplicateProviderToolCallResponseIds
|
|
588
|
+
);
|
|
589
|
+
if (repeatedDuplicateRequest) {
|
|
590
|
+
const providerCallId = repeatedDuplicateRequest.providerCallId ?? repeatedDuplicateRequest.callId;
|
|
591
|
+
debugLogger.debug(
|
|
592
|
+
`[runNonInteractive] Dropping batch after repeated duplicate provider tool-call id: ${providerCallId} (tool: ${repeatedDuplicateRequest.name})`
|
|
593
|
+
);
|
|
594
|
+
return {
|
|
595
|
+
responseParts: [],
|
|
596
|
+
repeatedDuplicateProviderToolCall: true
|
|
597
|
+
};
|
|
598
|
+
}
|
|
508
599
|
const respondedRequests = /* @__PURE__ */ new Set();
|
|
509
600
|
const executableBatchRequests = [];
|
|
510
601
|
const duplicatePendingResponses = [];
|
|
511
602
|
for (const requestInfo of uniqueBatchRequests) {
|
|
512
|
-
|
|
603
|
+
const providerCallId = getProviderResponseId(requestInfo);
|
|
604
|
+
if (!providerCallId) {
|
|
513
605
|
executableBatchRequests.push(requestInfo);
|
|
514
606
|
continue;
|
|
515
607
|
}
|
|
516
|
-
if (!handledProviderToolCallIds.has(
|
|
517
|
-
handledProviderToolCallIds.add(
|
|
608
|
+
if (!handledProviderToolCallIds.has(providerCallId)) {
|
|
609
|
+
handledProviderToolCallIds.add(providerCallId);
|
|
518
610
|
executableBatchRequests.push(requestInfo);
|
|
519
611
|
continue;
|
|
520
612
|
}
|
|
613
|
+
markDuplicateProviderToolCallResponseSent(
|
|
614
|
+
providerCallId,
|
|
615
|
+
duplicateProviderToolCallResponseIds
|
|
616
|
+
);
|
|
521
617
|
const toolResponse = createDuplicateProviderToolCallResponse(requestInfo);
|
|
522
618
|
debugLogger.debug(
|
|
523
|
-
`[runNonInteractive] Suppressing duplicate provider tool-call id: ${
|
|
619
|
+
`[runNonInteractive] Suppressing duplicate provider tool-call id: ${providerCallId} (tool: ${requestInfo.name})`
|
|
524
620
|
);
|
|
525
621
|
respondedRequests.add(requestInfo);
|
|
526
622
|
adapter.emitToolResult(requestInfo, toolResponse);
|
|
@@ -615,11 +711,20 @@ ${text}
|
|
|
615
711
|
}
|
|
616
712
|
}
|
|
617
713
|
for (const requestInfo of duplicateBatchRequests) {
|
|
714
|
+
const providerCallId = getProviderResponseId(requestInfo);
|
|
715
|
+
if (!providerCallId) continue;
|
|
716
|
+
markDuplicateProviderToolCallResponseSent(
|
|
717
|
+
providerCallId,
|
|
718
|
+
duplicateProviderToolCallResponseIds
|
|
719
|
+
);
|
|
618
720
|
const toolResponse = createDuplicateProviderToolCallResponse(requestInfo);
|
|
619
721
|
adapter.emitToolResult(requestInfo, toolResponse);
|
|
620
722
|
toolResponseParts.push(...toolResponse.responseParts);
|
|
621
723
|
}
|
|
622
|
-
return
|
|
724
|
+
return {
|
|
725
|
+
responseParts: toolResponseParts,
|
|
726
|
+
repeatedDuplicateProviderToolCall: false
|
|
727
|
+
};
|
|
623
728
|
}, "processToolCallBatch");
|
|
624
729
|
while (true) {
|
|
625
730
|
let isTeammateTurn = false;
|
|
@@ -643,7 +748,7 @@ ${text}
|
|
|
643
748
|
}
|
|
644
749
|
let sendType;
|
|
645
750
|
if (isFirstTurn) {
|
|
646
|
-
sendType = options.sendMessageType ?? "userQuery" /* UserQuery */;
|
|
751
|
+
sendType = continueSendType ?? options.sendMessageType ?? "userQuery" /* UserQuery */;
|
|
647
752
|
} else if (isTeammateTurn) {
|
|
648
753
|
sendType = "teammate" /* Teammate */;
|
|
649
754
|
} else {
|
|
@@ -703,15 +808,22 @@ ${text}
|
|
|
703
808
|
return emitLoopDetectedResult();
|
|
704
809
|
}
|
|
705
810
|
if (toolCallRequests.length > 0) {
|
|
706
|
-
const
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
);
|
|
811
|
+
const {
|
|
812
|
+
responseParts: toolResponseParts,
|
|
813
|
+
repeatedDuplicateProviderToolCall
|
|
814
|
+
} = await processToolCallBatch(toolCallRequests, (override) => {
|
|
815
|
+
modelOverride = override;
|
|
816
|
+
});
|
|
712
817
|
if (structuredSubmission !== void 0) {
|
|
713
818
|
return emitStructuredSuccess();
|
|
714
819
|
}
|
|
820
|
+
if (repeatedDuplicateProviderToolCall && toolResponseParts.length === 0) {
|
|
821
|
+
loopDetectedMessage = emitLoopDetectedMessage(
|
|
822
|
+
config,
|
|
823
|
+
"global_tool_call_duplicate" /* GLOBAL_TOOL_CALL_DUPLICATE */
|
|
824
|
+
);
|
|
825
|
+
return emitLoopDetectedResult();
|
|
826
|
+
}
|
|
715
827
|
currentMessages = [{ role: "user", parts: toolResponseParts }];
|
|
716
828
|
hasUnsentToolResponse = true;
|
|
717
829
|
} else {
|
|
@@ -837,7 +949,10 @@ ${text}
|
|
|
837
949
|
return;
|
|
838
950
|
}
|
|
839
951
|
if (itemToolCallRequests.length > 0) {
|
|
840
|
-
const
|
|
952
|
+
const {
|
|
953
|
+
responseParts: itemToolResponseParts,
|
|
954
|
+
repeatedDuplicateProviderToolCall
|
|
955
|
+
} = await processToolCallBatch(
|
|
841
956
|
itemToolCallRequests,
|
|
842
957
|
(override) => {
|
|
843
958
|
itemModelOverride = override;
|
|
@@ -846,6 +961,14 @@ ${text}
|
|
|
846
961
|
if (structuredSubmission !== void 0) {
|
|
847
962
|
return;
|
|
848
963
|
}
|
|
964
|
+
if (repeatedDuplicateProviderToolCall && itemToolResponseParts.length === 0) {
|
|
965
|
+
loopDetectedMessage = emitLoopDetectedMessage(
|
|
966
|
+
config,
|
|
967
|
+
"global_tool_call_duplicate" /* GLOBAL_TOOL_CALL_DUPLICATE */
|
|
968
|
+
);
|
|
969
|
+
loopDetected = true;
|
|
970
|
+
return;
|
|
971
|
+
}
|
|
849
972
|
itemMessages = [{ role: "user", parts: itemToolResponseParts }];
|
|
850
973
|
} else {
|
|
851
974
|
break;
|
|
@@ -870,6 +993,9 @@ ${text}
|
|
|
870
993
|
}, "drainLocalQueue");
|
|
871
994
|
const scheduler = !config.isCronEnabled() ? null : config.getCronScheduler();
|
|
872
995
|
if (scheduler) {
|
|
996
|
+
scheduler.setSkipDurableFire(
|
|
997
|
+
(job) => detectLoopSentinel(job.prompt) !== null
|
|
998
|
+
);
|
|
873
999
|
await scheduler.enableDurable(config.getSessionId()).catch((err) => {
|
|
874
1000
|
debugLogger.warn(
|
|
875
1001
|
`Durable cron init failed \u2014 persistent tasks will not fire in this run: ${err}`
|
|
@@ -912,6 +1038,10 @@ ${text}
|
|
|
912
1038
|
reject(err);
|
|
913
1039
|
}, "onDrainError");
|
|
914
1040
|
scheduler.start((job) => {
|
|
1041
|
+
if (skipHeadlessLoopSentinel(scheduler, job)) {
|
|
1042
|
+
checkCronDone();
|
|
1043
|
+
return;
|
|
1044
|
+
}
|
|
915
1045
|
const label = job.prompt.slice(0, 40);
|
|
916
1046
|
localQueue.push({
|
|
917
1047
|
displayText: `${job.cronExpr === "@wakeup" ? "Loop" : "Cron"}: ${label}`,
|
|
@@ -953,7 +1083,7 @@ ${text}
|
|
|
953
1083
|
const previewSnippet = plainTextPreview.trim();
|
|
954
1084
|
const previewSuffix = previewSnippet ? ` Output preview (${plainTextPreview.length}${plainTextPreview.length >= PLAIN_TEXT_PREVIEW_LIMIT ? "+" : ""} chars): ${JSON.stringify(previewSnippet)}.` : "";
|
|
955
1085
|
const errorMessage = `Model produced plain text instead of calling the structured_output tool as required by --json-schema after ${turnCount} turn(s).` + previewSuffix;
|
|
956
|
-
|
|
1086
|
+
emitResult({
|
|
957
1087
|
isError: true,
|
|
958
1088
|
durationMs: Date.now() - startTime,
|
|
959
1089
|
apiDurationMs: totalApiDurationMs,
|
|
@@ -964,7 +1094,7 @@ ${text}
|
|
|
964
1094
|
});
|
|
965
1095
|
return 1;
|
|
966
1096
|
}
|
|
967
|
-
|
|
1097
|
+
emitResult({
|
|
968
1098
|
isError: false,
|
|
969
1099
|
durationMs: Date.now() - startTime,
|
|
970
1100
|
apiDurationMs: totalApiDurationMs,
|
|
@@ -991,7 +1121,7 @@ ${text}
|
|
|
991
1121
|
const skipAdapterEmit = outputFormat === "text" /* TEXT */ && isAlreadyReportedError;
|
|
992
1122
|
if (!skipAdapterEmit) {
|
|
993
1123
|
try {
|
|
994
|
-
|
|
1124
|
+
emitResult({
|
|
995
1125
|
isError: true,
|
|
996
1126
|
durationMs: Date.now() - startTime,
|
|
997
1127
|
apiDurationMs: totalApiDurationMs,
|
|
@@ -1043,6 +1173,7 @@ ${text}
|
|
|
1043
1173
|
__name(runNonInteractive, "runNonInteractive");
|
|
1044
1174
|
|
|
1045
1175
|
export {
|
|
1176
|
+
skipHeadlessLoopSentinel,
|
|
1046
1177
|
runNonInteractive
|
|
1047
1178
|
};
|
|
1048
1179
|
/**
|
|
@@ -7,28 +7,28 @@ import {
|
|
|
7
7
|
require_jsx_runtime,
|
|
8
8
|
use_stdin_default,
|
|
9
9
|
use_stdout_default
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-WQT5SOI6.js";
|
|
11
11
|
import {
|
|
12
12
|
require_react
|
|
13
13
|
} from "./chunk-KYMBIKIW.js";
|
|
14
14
|
import {
|
|
15
15
|
sanitizeFilenameForDisplay
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-BSZEQNUA.js";
|
|
17
17
|
import {
|
|
18
18
|
t
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-MTHMXSNT.js";
|
|
20
20
|
import {
|
|
21
21
|
fetchGitDiff,
|
|
22
22
|
findProviderByCredentials,
|
|
23
23
|
resolveMetadataKey
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-RIP623NO.js";
|
|
25
25
|
import {
|
|
26
26
|
KittySequenceOverflowEvent,
|
|
27
27
|
logKittySequenceOverflow
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-SS6WJMQK.js";
|
|
29
29
|
import {
|
|
30
30
|
createDebugLogger
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-UX4SGCGN.js";
|
|
32
32
|
import {
|
|
33
33
|
init_esbuild_shims
|
|
34
34
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -759,6 +759,7 @@ var useFocus = /* @__PURE__ */ __name(() => {
|
|
|
759
759
|
// packages/cli/src/ui/contexts/KeypressContext.tsx
|
|
760
760
|
var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
|
|
761
761
|
var ESC3 = "\x1B";
|
|
762
|
+
var OPTION_T_COMPOSED_GLYPH = "\u2020";
|
|
762
763
|
var PASTE_MODE_PREFIX = `${ESC3}[200~`;
|
|
763
764
|
var PASTE_MODE_SUFFIX = `${ESC3}[201~`;
|
|
764
765
|
var KITTY_SEQUENCE_TIMEOUT_MS = 200;
|
|
@@ -1529,6 +1530,10 @@ function KeypressProvider({
|
|
|
1529
1530
|
if (key.name === "return" && key.sequence === `${ESC3}\r`) {
|
|
1530
1531
|
key.meta = true;
|
|
1531
1532
|
}
|
|
1533
|
+
if (process.platform === "darwin" && !isPaste && key.sequence === OPTION_T_COMPOSED_GLYPH) {
|
|
1534
|
+
key.name = "t";
|
|
1535
|
+
key.meta = true;
|
|
1536
|
+
}
|
|
1532
1537
|
broadcast({ ...key, paste: isPaste });
|
|
1533
1538
|
}, "handleKeypress");
|
|
1534
1539
|
const clearRawFlushTimeout = /* @__PURE__ */ __name(() => {
|
|
@@ -2036,7 +2041,11 @@ function convertToHistoryItems(conversation, config) {
|
|
|
2036
2041
|
});
|
|
2037
2042
|
currentToolGroup = [];
|
|
2038
2043
|
}
|
|
2039
|
-
items.push({
|
|
2044
|
+
items.push({
|
|
2045
|
+
type: "gemini",
|
|
2046
|
+
text,
|
|
2047
|
+
timestamp: new Date(record.timestamp).getTime()
|
|
2048
|
+
});
|
|
2040
2049
|
}
|
|
2041
2050
|
for (const fc of functionCalls) {
|
|
2042
2051
|
const tool = getTool(config, fc.name);
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
isTlsVerificationDisabled
|
|
5
|
+
} from "./chunk-E6XQPQXW.js";
|
|
3
6
|
import {
|
|
4
7
|
getErrorMessage,
|
|
5
8
|
isNodeError
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-UX4SGCGN.js";
|
|
7
10
|
import {
|
|
8
11
|
init_esbuild_shims
|
|
9
12
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -146,8 +149,11 @@ function formatFetchErrorForUser(error, options = {}) {
|
|
|
146
149
|
"Troubleshooting:",
|
|
147
150
|
...options.url ? [`- Confirm you can reach ${options.url} from this machine.`] : [],
|
|
148
151
|
"- If you are behind a proxy, pass `--proxy <url>` (or set `proxy` in settings).",
|
|
149
|
-
...shouldShowTlsHint ? [
|
|
150
|
-
"-
|
|
152
|
+
...shouldShowTlsHint ? isTlsVerificationDisabled() ? [
|
|
153
|
+
"- TLS verification is already disabled (`--insecure` / `QWEN_TLS_INSECURE`), so this is likely a network or protocol issue rather than a certificate trust problem."
|
|
154
|
+
] : [
|
|
155
|
+
"- If your network uses a corporate TLS inspection CA, set `NODE_EXTRA_CA_CERTS` to your CA bundle.",
|
|
156
|
+
"- For a trusted self-signed endpoint, pass `--insecure` (or set `QWEN_TLS_INSECURE=1`) to skip certificate verification."
|
|
151
157
|
] : []
|
|
152
158
|
];
|
|
153
159
|
return `${fullErrorMessage}${hintLines.join("\n")}`;
|