@qwen-code/qwen-code 0.19.10 → 0.19.11-nightly.20260718.767a32484
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/model-providers.md +11 -0
- package/bundled/qc-helper/docs/configuration/settings.md +15 -14
- package/bundled/qc-helper/docs/features/approval-mode.md +2 -2
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +30 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +66 -17
- package/bundled/qc-helper/docs/features/channels/wecom.md +8 -7
- package/bundled/qc-helper/docs/features/sandbox.md +2 -0
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +42 -7
- package/bundled/qc-helper/docs/qwen-serve.md +77 -46
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
- package/bundled/review/SKILL.md +163 -403
- package/chunks/{MaxSizedBox-67ODZ4SZ.js → MaxSizedBox-ZFHA4QEQ.js} +30 -30
- package/chunks/{StandaloneSessionPicker-SIPBQT5Z.js → StandaloneSessionPicker-YRWOQVQA.js} +44 -44
- package/chunks/{acpAgent-VPZJXLFX.js → acpAgent-U2P2IESZ.js} +1423 -487
- package/chunks/{agent-Z7NWL6XL.js → agent-GQXX6X5Y.js} +26 -26
- package/chunks/{agent-headless-73HZ6ROQ.js → agent-headless-3572NBCK.js} +26 -26
- package/chunks/{anthropicContentGenerator-56U3YCP2.js → anthropicContentGenerator-Y65DMM64.js} +103 -18
- package/chunks/{artifact-tool-BWZZJ42H.js → artifact-tool-WR7I2XON.js} +2 -2
- package/chunks/{askUserQuestion-WU3S5A5T.js → askUserQuestion-B4FUTPHD.js} +2 -44
- package/chunks/{bridge-XFKW6S7Q.js → bridge-N5RMGD7G.js} +31 -33
- package/chunks/{ca-C2JTT2N5.js → ca-M3GQQ26D.js} +7 -2
- package/chunks/channel-worker-group-HZVJKLGX.js +21 -0
- package/chunks/{channel-worker-manager-5RWKSGEU.js → channel-worker-manager-3WDK4HNS.js} +34 -10
- package/chunks/{channel-worker-supervisor-PCDAZN4D.js → channel-worker-supervisor-U2W6Q5F7.js} +6 -4
- package/chunks/{chunk-YYPXHMWO.js → chunk-2XRGFF5K.js} +6 -6
- package/chunks/{chunk-ZKMGAFYV.js → chunk-2YSZE74N.js} +2 -2
- package/chunks/{chunk-L5U3ELZX.js → chunk-335ECZTA.js} +1 -1
- package/chunks/{chunk-5EBKKSBX.js → chunk-336KPNNV.js} +2 -2
- package/chunks/{chunk-Q5GLXH5Q.js → chunk-3CL5SEDT.js} +6 -6
- package/chunks/{chunk-2FO5GFKZ.js → chunk-3DJY4IFO.js} +1 -1
- package/chunks/{chunk-CJFNEBYB.js → chunk-3NWYQ7FX.js} +2 -2
- package/chunks/{chunk-WIASPMLX.js → chunk-3X2CFOUM.js} +358 -298
- package/chunks/{chunk-K7CRWKOE.js → chunk-3YJZ6WNY.js} +5812 -4520
- package/chunks/{chunk-Y66VOBRP.js → chunk-4CA4WUMS.js} +2 -2
- package/chunks/{chunk-LQIDP6K5.js → chunk-4CHDYDG3.js} +1 -1
- package/chunks/{chunk-TISZXPAX.js → chunk-4HCYNDMG.js} +1 -1
- package/chunks/chunk-4JBTZBCW.js +140 -0
- package/chunks/{chunk-TV6K2FB4.js → chunk-4RPARQ5D.js} +2 -2
- package/chunks/{chunk-RCEEXIOO.js → chunk-4XCVGEEX.js} +3 -3
- package/chunks/{chunk-N6FXRR6P.js → chunk-57RWF6R7.js} +1 -1
- package/chunks/chunk-5O34IMY5.js +59 -0
- package/chunks/{chunk-5LROA5W4.js → chunk-5QRK2VZG.js} +8 -8
- package/chunks/{chunk-7L4XBYVW.js → chunk-632KROVU.js} +10 -3
- package/chunks/{chunk-65N2J6V2.js → chunk-64XGKNSI.js} +3 -3
- package/chunks/{chunk-P6LART6G.js → chunk-66IT3EY2.js} +1059 -129
- package/chunks/{chunk-FXMC7SL2.js → chunk-6ITLKEOZ.js} +3 -3
- package/chunks/{chunk-F7NXQH4Y.js → chunk-6YIRYY3P.js} +1 -1
- package/chunks/{chunk-GGJII3FM.js → chunk-6Z5NRZVU.js} +92 -3
- package/chunks/{chunk-DPFBNG72.js → chunk-AEKYFMYE.js} +1 -1
- package/chunks/{chunk-2UUAIFQO.js → chunk-ANRANWVE.js} +9 -1
- package/chunks/{chunk-SXU3KKNI.js → chunk-ATJ7H5AS.js} +419 -76
- package/chunks/{chunk-6GETGQWP.js → chunk-C5NSOSF4.js} +64 -18
- package/chunks/{chunk-TQBODCFD.js → chunk-CMVFTMRD.js} +251 -3
- package/chunks/{chunk-DK33QJ3V.js → chunk-CZSAIBUB.js} +733 -14
- package/chunks/{chunk-3MX7D6QN.js → chunk-DASWPKXR.js} +32 -4
- package/chunks/{chunk-JSJFKYWT.js → chunk-DPSHAB47.js} +2 -2
- package/chunks/{chunk-7MJAZMXK.js → chunk-ECZFTRTP.js} +29 -78
- package/chunks/{chunk-H3FQOPPS.js → chunk-EKG3BHQY.js} +4 -4
- package/chunks/{chunk-FSA7ERJ2.js → chunk-F2RR4HO2.js} +1 -1
- package/chunks/{chunk-EQY6POVO.js → chunk-F5XYN5VF.js} +2 -2
- package/chunks/chunk-FEOZBUMT.js +77 -0
- package/chunks/{chunk-L62SEJWY.js → chunk-FHUXCRAF.js} +4 -4
- package/chunks/{chunk-OFEVHGVU.js → chunk-FSJGBUQI.js} +818 -31
- package/chunks/{chunk-FBU7WRZI.js → chunk-FUTHTZVV.js} +1 -1
- package/chunks/{chunk-ZRKBI3DP.js → chunk-FZRES4GK.js} +1 -1
- package/chunks/{chunk-OKAIGAYW.js → chunk-G274ETR6.js} +3 -3
- package/chunks/{chunk-6GKMJPOC.js → chunk-GA3WUOO7.js} +5 -5
- package/chunks/{chunk-X362TMXZ.js → chunk-GAQOQMHY.js} +8 -6
- package/chunks/{chunk-WLXYAKV7.js → chunk-GG6RSNWS.js} +9 -4
- package/chunks/{chunk-CEW4HDPK.js → chunk-GUNTLALV.js} +2484 -362
- package/chunks/{chunk-LXLTBIDP.js → chunk-HCCR43AY.js} +1 -1
- package/chunks/{chunk-RDRVMDWV.js → chunk-HIMIG6PI.js} +11 -11
- package/chunks/{chunk-MO7O5722.js → chunk-HQXQCIT2.js} +45 -5
- package/chunks/{chunk-LTNI523B.js → chunk-HT7L5FCZ.js} +28 -5
- package/chunks/{chunk-7NAWTFVY.js → chunk-IENO2YAT.js} +3 -3
- package/chunks/{chunk-3XJFUTNM.js → chunk-IK5TYYVR.js} +59 -12
- package/chunks/{chunk-AAR5SGMD.js → chunk-IVKLDHU6.js} +7 -5
- package/chunks/{chunk-6W6DI34P.js → chunk-IX7O5WI3.js} +180 -8
- package/chunks/{chunk-SPJQO2CE.js → chunk-J2MKYJKZ.js} +2 -2
- package/chunks/{chunk-SPUYQB4T.js → chunk-JBAQ5BYX.js} +1 -1
- package/chunks/{chunk-TYLOFD2U.js → chunk-JCJPZMJV.js} +1 -1
- package/chunks/chunk-JDIUK2Y3.js +226 -0
- package/chunks/{chunk-L37RC7MQ.js → chunk-JUVTV4NF.js} +1 -1
- package/chunks/{chunk-WDWJ4OQJ.js → chunk-K2GBHL73.js} +4 -4
- package/chunks/{chunk-HHEFI4RP.js → chunk-KEVDWH3U.js} +857 -137
- package/chunks/{chunk-YU56QGXX.js → chunk-KTKETHMY.js} +1 -1
- package/chunks/{chunk-WDW64OW3.js → chunk-LGY7PG7Q.js} +5 -5
- package/chunks/{chunk-E67NFMF4.js → chunk-LKR7QQ63.js} +37 -3
- package/chunks/{chunk-4YWLED2A.js → chunk-LSFVUGXT.js} +9 -6
- package/chunks/{chunk-W34A5MJH.js → chunk-LTD3CHGS.js} +1 -1
- package/chunks/chunk-LXXMOYPL.js +22 -0
- package/chunks/{chunk-BBNVFRGD.js → chunk-MI2V6IWU.js} +1 -1
- package/chunks/{chunk-UFOKA4PR.js → chunk-O2K6BLPZ.js} +114 -4
- package/chunks/{chunk-B5I2IIWY.js → chunk-OBYAX5QZ.js} +6 -6
- package/chunks/{chunk-V7EQTZYR.js → chunk-OCQ2QTFJ.js} +203 -47
- package/chunks/{chunk-VBRRNQB7.js → chunk-OPVIKLKK.js} +112 -25
- package/chunks/{chunk-2Z5UX4KI.js → chunk-OSSDHJDU.js} +1 -1
- package/chunks/{chunk-TTUO4DNG.js → chunk-OXOEOOQU.js} +126 -734
- package/chunks/{chunk-4FMG7EDJ.js → chunk-PWYLF7SS.js} +79 -16
- package/chunks/chunk-QFEY6OXH.js +45 -0
- package/chunks/{chunk-YX4LLZ3D.js → chunk-QPRDXJIC.js} +115 -40
- package/chunks/{chunk-7R4DPSRA.js → chunk-R3VWUU2E.js} +1 -1
- package/chunks/{chunk-XLIRF7IK.js → chunk-S4N3G4BB.js} +1 -1
- package/chunks/{chunk-ARKANCNX.js → chunk-SGPFJMRP.js} +1 -1
- package/chunks/{chunk-WTSXKLG5.js → chunk-SUARMD4Q.js} +1 -1
- package/chunks/{chunk-PZL23GTM.js → chunk-T3W4SDRB.js} +2 -0
- package/chunks/chunk-T4TZQJ7W.js +48 -0
- package/chunks/{chunk-K4PZ5F5T.js → chunk-TVYM3Q3J.js} +101 -8
- package/chunks/{chunk-4LD5APFL.js → chunk-TYQMGACW.js} +1 -0
- package/chunks/{chunk-6OATMEYN.js → chunk-U2LNTX56.js} +12 -4
- package/chunks/{chunk-422XAKCK.js → chunk-U2XBPBO3.js} +4 -3
- package/chunks/{chunk-LNUXFLLJ.js → chunk-U4FJ26D2.js} +54 -6
- package/chunks/{chunk-ZQTZXVHP.js → chunk-U6OPT4H2.js} +4 -18
- package/chunks/{chunk-7NFB7LBQ.js → chunk-UE5TZ55T.js} +8 -0
- package/chunks/{chunk-CUUXANEQ.js → chunk-URP6O2PP.js} +6 -1
- package/chunks/{chunk-GDQQRV43.js → chunk-V2FRLYHN.js} +3 -3
- package/chunks/{chunk-WIEO4CWB.js → chunk-VAJS2E2D.js} +1 -1
- package/chunks/{chunk-TXY2C3D2.js → chunk-VNN3JNYT.js} +1 -1
- package/chunks/{chunk-YHN5SUIJ.js → chunk-W7H223ZZ.js} +1 -1
- package/chunks/{chunk-WX6SD4IQ.js → chunk-WEPXQKGP.js} +1 -1
- package/chunks/{chunk-KSO42X3Z.js → chunk-X6YQWCIJ.js} +21 -2
- package/chunks/{chunk-URU5UEK6.js → chunk-XA7OKDWM.js} +135 -68
- package/chunks/{chunk-Q6TUALBE.js → chunk-XAAEDML2.js} +1 -1
- package/chunks/{chunk-KKRTYONM.js → chunk-XSPFQQRE.js} +3 -3
- package/chunks/{chunk-OATTJGPJ.js → chunk-Y72B36CP.js} +7 -7
- package/chunks/{chunk-ZPAHLFZU.js → chunk-Z2LBNX3R.js} +2 -2
- package/chunks/{chunk-XXJKGHZV.js → chunk-ZTSDZQZO.js} +131 -4
- package/chunks/{computer-use-IYTX45WA.js → computer-use-UIFBH25Y.js} +26 -26
- package/chunks/{config-utils-CFT33LTP.js → config-utils-2LHI7JXU.js} +3 -3
- package/chunks/{contextCommand-272V77WU.js → contextCommand-VGZHKEH2.js} +28 -28
- package/chunks/{create-sub-session-WNX2OQVX.js → create-sub-session-DIJOV6HV.js} +2 -2
- package/chunks/{create-sub-session-CBJMQLYP.js → create-sub-session-OFVI4H6I.js} +26 -26
- package/chunks/{cron-create-36TIFKRT.js → cron-create-34GVLSW5.js} +4 -4
- package/chunks/{cron-delete-OQD3WULU.js → cron-delete-NMVKUL45.js} +4 -4
- package/chunks/{cron-list-4533T2FH.js → cron-list-277ZOR7L.js} +4 -4
- package/chunks/{daemon-RNGFPMAB.js → daemon-72MEV3TY.js} +361 -84
- package/chunks/daemon-status-provider-ZJJ6AOG2.js +75 -0
- package/chunks/{de-2VCDRDGU.js → de-56TMDIKS.js} +7 -2
- package/chunks/{dist-3V3ZV6ML.js → dist-4W3UGU2A.js} +1 -1
- package/chunks/{dist-HNN7DR2L.js → dist-G6QCGO2K.js} +58 -30
- package/chunks/{dist-ERCPDVA6.js → dist-ILVRL322.js} +4 -51
- package/chunks/{dist-PHEPJLXD.js → dist-KEZ5JWH4.js} +2 -2
- package/chunks/{dist-JZE7F6YR.js → dist-LQHDHBPP.js} +1 -1
- package/chunks/{dist-MOEC47TR.js → dist-SVHAGOLN.js} +1 -1
- package/chunks/{earlyInputCapture-EN4BRREQ.js → earlyInputCapture-NPF4PVUE.js} +27 -27
- package/chunks/{edit-OMAF2QDR.js → edit-F7CT6NZH.js} +27 -27
- package/chunks/{en-NJCA3TAA.js → en-AXS2N62H.js} +12 -3
- package/chunks/{enter-worktree-BBZX52HG.js → enter-worktree-Z4ET3MZL.js} +26 -26
- package/chunks/{enterPlanMode-5NNFMBUY.js → enterPlanMode-VYR7T5NX.js} +27 -29
- package/chunks/{environment-7TEWMJYN.js → environment-MBTXL57Q.js} +28 -28
- package/chunks/{errors-I4VKVX3F.js → errors-HN36J4FR.js} +28 -28
- package/chunks/{exit-worktree-FUWRJI33.js → exit-worktree-RU7JYFMF.js} +26 -26
- package/chunks/exitPlanMode-LUBAWMZQ.js +390 -0
- package/chunks/{fast-path-ZA57TOH4.js → fast-path-RFT3CDNZ.js} +2 -2
- package/chunks/{fr-5F3E7WKD.js → fr-ZJPE5OVN.js} +7 -2
- package/chunks/{gemini-UOAKVXBG.js → gemini-37NTNKZF.js} +215 -231
- package/chunks/{geminiContentGenerator-G6UCE6MW.js → geminiContentGenerator-76HNOYNQ.js} +5 -5
- package/chunks/{glob-4GJQ2UFF.js → glob-DWD7JCZE.js} +32 -27
- package/chunks/{grep-5QSYXF2E.js → grep-NJRXFV5C.js} +32 -27
- package/chunks/{handleAutoUpdate-ULHNWL6R.js → handleAutoUpdate-7GBDXW6U.js} +30 -30
- package/chunks/{i18n-CYDUTF6F.js → i18n-MYD5VGED.js} +27 -27
- package/chunks/{initializer-NRFKUGIO.js → initializer-4DHPNAZG.js} +32 -32
- package/chunks/{installationInfo-WELKRHHE.js → installationInfo-RWOW6BZO.js} +27 -27
- package/chunks/{ja-66J6B53L.js → ja-57GG4QSL.js} +7 -2
- package/chunks/{keychain-token-storage-AU22CQI6.js → keychain-token-storage-K23CFKGN.js} +2 -2
- package/chunks/{list-JVDXEG2E.js → list-MMCNNHE7.js} +34 -34
- package/chunks/{loadedSettingsAdapter-WAM4VUTG.js → loadedSettingsAdapter-UK4JWPYU.js} +31 -31
- package/chunks/{loop-wakeup-MVUKDVCP.js → loop-wakeup-KCLY4XQM.js} +5 -5
- package/chunks/{ls-RXNIAQDE.js → ls-UNI4LAJ3.js} +4 -4
- package/chunks/{lsp-HB5LM5IL.js → lsp-HPACPJAN.js} +2 -2
- package/chunks/{mcp-YHOZN3ZM.js → mcp-AFCVA4UV.js} +31 -31
- package/chunks/{monitor-R7XZPJHQ.js → monitor-RK637BNO.js} +28 -27
- package/chunks/nonInteractiveCli-OUGWLHNV.js +129 -0
- package/chunks/{notebook-edit-6RNKE2L2.js → notebook-edit-LY2X3CMF.js} +27 -27
- package/chunks/{openaiContentGenerator-XNS5S64I.js → openaiContentGenerator-MDYDW7IA.js} +14 -14
- package/chunks/{pidfile-XE4RRR2P.js → pidfile-2NUYRLKB.js} +27 -27
- package/chunks/processUtils-7QH3VBVN.js +29 -0
- package/chunks/{pt-TFZO5Y6T.js → pt-MCGZ3RZ4.js} +7 -2
- package/chunks/{qwenContentGenerator-APDPJ3VN.js → qwenContentGenerator-3HT4TVDL.js} +28 -28
- package/chunks/{qwenOAuth2-LEYOU7RU.js → qwenOAuth2-3A4TJVZT.js} +5 -5
- package/chunks/{read-file-XSUWXSR7.js → read-file-NE4FREFR.js} +10 -10
- package/chunks/{read-mcp-resource-6LRTZKXI.js → read-mcp-resource-C6NT52T6.js} +2 -2
- package/chunks/{record-artifact-PMDTY4OS.js → record-artifact-ENCU7QCL.js} +2 -2
- package/chunks/{ripGrep-APB3CDMU.js → ripGrep-DBLXWQCJ.js} +26 -26
- package/chunks/{ru-4L4LFHIT.js → ru-GA3NZW5Q.js} +7 -2
- package/chunks/{run-qwen-serve-NWTGPERT.js → run-qwen-serve-3NOCI6IL.js} +63 -39
- package/chunks/{runtime-EIO3NQKR.js → runtime-ZI7DSZSS.js} +35 -35
- package/chunks/{scheduler-JJDZBDRN.js → scheduler-SOVEP5K7.js} +26 -26
- package/chunks/{send-message-SR4WSXP2.js → send-message-5IFPZTPE.js} +3 -3
- package/chunks/{serve-WTIPB3EI.js → serve-DB6OCXIA.js} +31 -31
- package/chunks/{server-NJPHQHLH.js → server-LDY4YVU4.js} +2257 -648
- package/chunks/{session-O4AO7FTS.js → session-D6OG5SKX.js} +99 -72
- package/chunks/{settings-HQNDK7TG.js → settings-L52ZV5LO.js} +30 -30
- package/chunks/{shell-UIXM6PWG.js → shell-IU27OY3Q.js} +28 -26
- package/chunks/{skill-3XMB4ULV.js → skill-BSOJT7LE.js} +12 -12
- package/chunks/{spawnChannel-3R632QRM.js → spawnChannel-HQAM25DD.js} +28 -29
- package/chunks/{src-USZKPUOC.js → src-7ZBIMTJZ.js} +130 -51
- package/chunks/{standalone-update-L5XW3D7K.js → standalone-update-77457VVK.js} +28 -28
- package/chunks/{startInteractiveUI-CPZOL2WB.js → startInteractiveUI-S7WC6EZG.js} +2310 -1835
- package/chunks/{syntheticOutput-YKFNUQZD.js → syntheticOutput-ULOVVLY4.js} +3 -3
- package/chunks/{task-create-NUFOHU53.js → task-create-V2DCDSET.js} +7 -7
- package/chunks/{task-list-Z2IKQY3S.js → task-list-DPL5ZN55.js} +5 -5
- package/chunks/{task-stop-KQFIVQTJ.js → task-stop-CPEQWOT6.js} +2 -2
- package/chunks/{task-update-HKADXSTD.js → task-update-ZR45M5Q7.js} +7 -7
- package/chunks/{team-create-XXPRF3IQ.js → team-create-CO7HSUON.js} +26 -26
- package/chunks/{team-delete-SDNTGZLG.js → team-delete-HIWXCWJU.js} +5 -5
- package/chunks/{team-plan-approval-EOTTKHDW.js → team-plan-approval-QDZF5YZY.js} +26 -26
- package/chunks/{theme-manager-P6UITO2L.js → theme-manager-UTUT3I4P.js} +27 -27
- package/chunks/todoWrite-HK6B3RHJ.js +358 -0
- package/chunks/{tool-search-DDNGK2LR.js → tool-search-2UUORA35.js} +11 -11
- package/chunks/{total-session-admission-PL5N7DNY.js → total-session-admission-NTWG6G3F.js} +32 -34
- package/chunks/{trustedFolders-C5LMF3UR.js → trustedFolders-YF37ZCN5.js} +27 -27
- package/chunks/update-relaunch-QFNHPMZZ.js +87 -0
- package/chunks/{updateCheck-QTVVISH7.js → updateCheck-B6O42VMD.js} +30 -28
- package/chunks/{validateNonInterActiveAuth-RY4RKBQG.js → validateNonInterActiveAuth-SCIWJ4CX.js} +65 -65
- package/chunks/{version-U45RYOSD.js → version-7DA6LAI3.js} +1 -1
- package/chunks/{web-fetch-ZSPR3PRR.js → web-fetch-B62SJXM2.js} +5 -6
- package/chunks/{workflow-TCIAQYOA.js → workflow-Q5WG4THP.js} +27 -27
- package/chunks/{workspace-providers-status-I3G2HYLY.js → workspace-providers-status-WWLAGWQW.js} +34 -34
- package/chunks/{workspace-registration-store-IH5GLZ6Y.js → workspace-registration-store-BVYQVY2H.js} +1 -1
- package/chunks/{workspace-registry-QEKBELIX.js → workspace-registry-OD7ACADD.js} +32 -34
- package/chunks/{workspace-service-ORKHGLP3.js → workspace-service-4LYJWS63.js} +37 -38
- package/chunks/{workspace-skills-status-D7QCNDYY.js → workspace-skills-status-P2AQLZZS.js} +32 -32
- package/chunks/{write-file-JGRQR5VM.js → write-file-TEPGXNM3.js} +60 -27
- package/chunks/{zh-FSAH32JB.js → zh-E34DZ2S3.js} +12 -3
- package/chunks/{zh-TW-D2YIE2LO.js → zh-TW-PEI2ZWUR.js} +12 -3
- package/cli-entry.js +92 -8
- package/cli.js +11 -11
- package/locales/ca.js +12 -2
- package/locales/de.js +12 -2
- package/locales/en.js +20 -5
- package/locales/fr.js +12 -2
- package/locales/ja.js +12 -2
- package/locales/pt.js +12 -2
- package/locales/ru.js +12 -2
- package/locales/zh-TW.js +19 -3
- package/locales/zh.js +19 -3
- package/package.json +3 -3
- package/web-shell/assets/{arc-CUeDlxvE.js → arc-Dh-N5oEG.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-PiUszkQA.js → architectureDiagram-3BPJPVTR-DBOQgtfF.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-s2wYSO7e.js → blockDiagram-GPEHLZMM-Dyxbuyju.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DyLxZoz9.js → c4Diagram-AAUBKEIU-DCJR5HPT.js} +1 -1
- package/web-shell/assets/channel-DY0fkcKT.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-Dsdai7Tk.js → chunk-2J33WTMH-BkMUcy3O.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DEosOjV7.js → chunk-4BX2VUAB-BSm4pLQk.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-sNsRLTXf.js → chunk-55IACEB6-CuRr-XgW.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DkRNZzmh.js → chunk-727SXJPM-CLv7-w3t.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BrsRNpzd.js → chunk-AQP2D5EJ-Cz_n3-JW.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CI039lpl.js → chunk-FMBD7UC4-CFT_62Hq.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-M-pkeIfu.js → chunk-ND2GUHAM-DWz6DOZ6.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-C4ckGNbH.js → chunk-QZHKN3VN-C-mRhUzw.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-DBvJ6PZo.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DBvJ6PZo.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BciKUAFq.js → cose-bilkent-S5V4N54A-BqCZS3i1.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-C1nTSgU6.js → dagre-BM42HDAG-BGasdP8i.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BDPNWr1m.js → diagram-2AECGRRQ-BSyLDkMy.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-CNFhTszL.js → diagram-5GNKFQAL-CM-ZJxWC.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CjPa4p5a.js → diagram-KO2AKTUF-wJdzt_C5.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-ZzPykSyG.js → diagram-LMA3HP47-DiH2fhpL.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-0UVtZ9A4.js → diagram-OG6HWLK6-BZ9z1ZBl.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CajDZCat.js → erDiagram-TEJ5UH35-BsyWDziR.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BRuFBIvL.js → flowDiagram-I6XJVG4X-CzdkxIrq.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BevGmJqG.js → ganttDiagram-6RSMTGT7-javIv2r2.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DvPMpBMb.js → gitGraphDiagram-PVQCEYII-CjHstylC.js} +1 -1
- package/web-shell/assets/{index-DzHwQkQq.js → index-BnJGxpah.js} +1 -1
- package/web-shell/assets/index-DhXB9nTa.js +1161 -0
- package/web-shell/assets/index-vYHgZ7bL.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-Oixn7tA9.js → infoDiagram-5YYISTIA-yXuQsomo.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BgKpeg-j.js → ishikawaDiagram-YF4QCWOH-a85JhE6F.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-74mwxIaA.js → journeyDiagram-JHISSGLW-Dak_4BVj.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-D4D6cEqA.js → kanban-definition-UN3LZRKU-COA-LuCV.js} +1 -1
- package/web-shell/assets/{linear-atZRE_L2.js → linear-DNAAAQWq.js} +1 -1
- package/web-shell/assets/{mermaid.core-KKudX-JC.js → mermaid.core-7Ff3aIUD.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-CMCej9yG.js → mindmap-definition-RKZ34NQL-_rCOIODU.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-nhx40X7q.js → pieDiagram-4H26LBE5-C9QCQ8EW.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CUmVcN3M.js → quadrantDiagram-W4KKPZXB-CsaE4FA8.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-C_vyEwyy.js → requirementDiagram-4Y6WPE33-tV78naTg.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DU6G4VWR.js → sankeyDiagram-5OEKKPKP-Dk3Rw7BZ.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DdeRR_KJ.js → sequenceDiagram-3UESZ5HK-BGsAWcMX.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-C6iCI8ps.js → stateDiagram-AJRCARHV-zSxdtdoB.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-vLEEtDpO.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-B_Ea8Cb7.js → timeline-definition-PNZ67QCA-j0BQh9Go.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BPUVZEJA.js → vennDiagram-CIIHVFJN-CRaUFFIu.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-BWEj0lKY.js → wardley-L42UT6IY-D7Py_ofm.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BvDsdIQw.js → wardleyDiagram-YWT4CUSO-BrDIAZcp.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-crz0QhF_.js → xychartDiagram-2RQKCTM6-Cecdw-w2.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/channel-worker-group-K7QKH6IG.js +0 -13
- package/chunks/chunk-2HRYPZT5.js +0 -25
- package/chunks/chunk-B7NUUEXC.js +0 -311
- package/chunks/chunk-CARU2RR2.js +0 -24
- package/chunks/chunk-GYTKQYDB.js +0 -23
- package/chunks/chunk-LQU7EVFA.js +0 -30
- package/chunks/chunk-OCPBI7J5.js +0 -18
- package/chunks/chunk-OJAMDVF5.js +0 -66
- package/chunks/chunk-QAW7PIHT.js +0 -168
- package/chunks/chunk-TEGEBB2I.js +0 -122
- package/chunks/daemon-status-provider-L4STG5VO.js +0 -76
- package/chunks/exitPlanMode-IHCJ5EEI.js +0 -909
- package/chunks/nonInteractiveCli-NSOB6D74.js +0 -129
- package/chunks/todoWrite-YNXB27GB.js +0 -531
- package/web-shell/assets/channel-DkuJJ0qd.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +0 -1
- package/web-shell/assets/index-Cnvv4VcI.css +0 -5
- package/web-shell/assets/index-D1Uyklxa.js +0 -1088
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +0 -1
|
@@ -474,10 +474,106 @@ function composeAbortSignals(signals) {
|
|
|
474
474
|
}
|
|
475
475
|
__name(composeAbortSignals, "composeAbortSignals");
|
|
476
476
|
|
|
477
|
+
// packages/sdk-typescript/src/daemon/types.ts
|
|
478
|
+
init_esbuild_shims();
|
|
479
|
+
var DaemonCapabilityMissingError = class extends Error {
|
|
480
|
+
static {
|
|
481
|
+
__name(this, "DaemonCapabilityMissingError");
|
|
482
|
+
}
|
|
483
|
+
capability;
|
|
484
|
+
constructor(capability, hint) {
|
|
485
|
+
super(
|
|
486
|
+
`DaemonCapabilities.${capability} is missing \u2014 ${hint}. The daemon you are connected to likely predates the feature that added this field; upgrade the daemon or fall back to a different code path that doesn't require it.`
|
|
487
|
+
);
|
|
488
|
+
this.name = "DaemonCapabilityMissingError";
|
|
489
|
+
this.capability = capability;
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
function requireWorkspaceCwd(caps) {
|
|
493
|
+
if (typeof caps.workspaceCwd !== "string" || caps.workspaceCwd.length === 0) {
|
|
494
|
+
throw new DaemonCapabilityMissingError(
|
|
495
|
+
"workspaceCwd",
|
|
496
|
+
caps.workspaceCwd === "" ? "daemon returned an empty workspaceCwd (newer daemon with a bug)" : "daemon predates workspaceCwd support; upgrade it"
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
return caps.workspaceCwd;
|
|
500
|
+
}
|
|
501
|
+
__name(requireWorkspaceCwd, "requireWorkspaceCwd");
|
|
502
|
+
var DAEMON_ERROR_KINDS = [
|
|
503
|
+
"missing_binary",
|
|
504
|
+
"blocked_egress",
|
|
505
|
+
"auth_env_error",
|
|
506
|
+
"init_timeout",
|
|
507
|
+
"protocol_error",
|
|
508
|
+
"missing_file",
|
|
509
|
+
"parse_error",
|
|
510
|
+
// Budget refusal under `--mcp-budget-mode=enforce`.
|
|
511
|
+
"budget_exhausted",
|
|
512
|
+
// Runtime MCP mutation routes (POST/DELETE /workspace/mcp/servers).
|
|
513
|
+
"mcp_budget_would_exceed",
|
|
514
|
+
"mcp_server_spawn_failed",
|
|
515
|
+
"invalid_config",
|
|
516
|
+
// A prompt exceeded the daemon-configured wallclock cap (or the
|
|
517
|
+
// request's own `deadlineMs`, capped at the server flag).
|
|
518
|
+
"prompt_deadline_exceeded",
|
|
519
|
+
// An SSE writer's last successful flush was older than the daemon's
|
|
520
|
+
// writer-idle deadline.
|
|
521
|
+
"writer_idle_timeout",
|
|
522
|
+
// The model response stream ended before a complete turn could be read.
|
|
523
|
+
"model_stream_interrupted"
|
|
524
|
+
];
|
|
525
|
+
var DAEMON_CONTENT_HASH_RE = /^sha256:[0-9a-f]{64}$/;
|
|
526
|
+
function isDaemonContentHash(value) {
|
|
527
|
+
return typeof value === "string" && DAEMON_CONTENT_HASH_RE.test(value);
|
|
528
|
+
}
|
|
529
|
+
__name(isDaemonContentHash, "isDaemonContentHash");
|
|
530
|
+
var DAEMON_APPROVAL_MODES = [
|
|
531
|
+
"plan",
|
|
532
|
+
"default",
|
|
533
|
+
"auto-edit",
|
|
534
|
+
"auto",
|
|
535
|
+
"yolo"
|
|
536
|
+
];
|
|
537
|
+
|
|
477
538
|
// packages/sdk-typescript/src/daemon/DaemonClient.ts
|
|
478
539
|
var WORKSPACE_MEMORY_REMEMBER_PATH = "/workspace/memory/remember";
|
|
479
540
|
var WORKSPACE_MEMORY_FORGET_PATH = "/workspace/memory/forget";
|
|
480
541
|
var WORKSPACE_MEMORY_DREAM_PATH = "/workspace/memory/dream";
|
|
542
|
+
function parseSessionGenerationEvent(value) {
|
|
543
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
544
|
+
return void 0;
|
|
545
|
+
}
|
|
546
|
+
const event = value;
|
|
547
|
+
if (event["v"] !== 1 || typeof event["type"] !== "string") return void 0;
|
|
548
|
+
const requestId = event["requestId"];
|
|
549
|
+
const modelSource = event["modelSource"];
|
|
550
|
+
const validRequestId = typeof requestId === "string" && requestId.length > 0;
|
|
551
|
+
const validModelSource = modelSource === "fast" || modelSource === "main";
|
|
552
|
+
const validTokenCount = /* @__PURE__ */ __name((count) => count === void 0 || typeof count === "number" && Number.isSafeInteger(count) && count >= 0, "validTokenCount");
|
|
553
|
+
if (event["type"] === "started") {
|
|
554
|
+
if (!validRequestId || typeof event["model"] !== "string" || !validModelSource) {
|
|
555
|
+
return void 0;
|
|
556
|
+
}
|
|
557
|
+
} else if (event["type"] === "thinking") {
|
|
558
|
+
if (!validRequestId) return void 0;
|
|
559
|
+
} else if (event["type"] === "delta") {
|
|
560
|
+
if (!validRequestId || !Number.isSafeInteger(event["seq"]) || event["seq"] < 0 || typeof event["text"] !== "string" || event["text"].length === 0) {
|
|
561
|
+
return void 0;
|
|
562
|
+
}
|
|
563
|
+
} else if (event["type"] === "done") {
|
|
564
|
+
if (!validRequestId || typeof event["model"] !== "string" || !validModelSource || !validTokenCount(event["inputTokens"]) || !validTokenCount(event["outputTokens"])) {
|
|
565
|
+
return void 0;
|
|
566
|
+
}
|
|
567
|
+
} else if (event["type"] === "error") {
|
|
568
|
+
if (typeof event["code"] !== "string" || typeof event["message"] !== "string") {
|
|
569
|
+
return void 0;
|
|
570
|
+
}
|
|
571
|
+
} else {
|
|
572
|
+
return void 0;
|
|
573
|
+
}
|
|
574
|
+
return event;
|
|
575
|
+
}
|
|
576
|
+
__name(parseSessionGenerationEvent, "parseSessionGenerationEvent");
|
|
481
577
|
var DEFAULT_SESSION_LIST_PAGE_SIZE = 20;
|
|
482
578
|
var DEFAULT_FETCH_TIMEOUT_MS = 3e4;
|
|
483
579
|
var VOICE_TRANSCRIPTION_DEFAULT_TIMEOUT_MS = 65e3;
|
|
@@ -487,6 +583,17 @@ var DEFAULT_MAX_PENDING_PROMPTS_PER_SESSION = 5;
|
|
|
487
583
|
var MCP_RESTART_DEFAULT_TIMEOUT_MS = MCP_RESTART_SERVER_DEADLINE_MS + MCP_RESTART_CLIENT_HEADROOM_MS;
|
|
488
584
|
var CLIENT_ID_HEADER = "X-Qwen-Client-Id";
|
|
489
585
|
var urlEncode = encodeURIComponent;
|
|
586
|
+
function transcriptPageSuffix(opts) {
|
|
587
|
+
const query = new URLSearchParams();
|
|
588
|
+
if (opts.cursor !== void 0) query.set("cursor", opts.cursor);
|
|
589
|
+
if (opts.beforeRecordId !== void 0) {
|
|
590
|
+
query.set("beforeRecordId", opts.beforeRecordId);
|
|
591
|
+
}
|
|
592
|
+
if (opts.limit !== void 0) query.set("limit", String(opts.limit));
|
|
593
|
+
const value = query.toString();
|
|
594
|
+
return value ? `?${value}` : "";
|
|
595
|
+
}
|
|
596
|
+
__name(transcriptPageSuffix, "transcriptPageSuffix");
|
|
490
597
|
function normalizePermissionRuleInput(rule) {
|
|
491
598
|
const trimmed = rule.trim();
|
|
492
599
|
if (!trimmed) {
|
|
@@ -783,6 +890,15 @@ var DaemonClient = class {
|
|
|
783
890
|
}
|
|
784
891
|
);
|
|
785
892
|
}
|
|
893
|
+
async requireCapability(capability) {
|
|
894
|
+
const caps = await this.capabilities();
|
|
895
|
+
if (!caps.features.includes(capability)) {
|
|
896
|
+
throw new DaemonCapabilityMissingError(
|
|
897
|
+
capability,
|
|
898
|
+
`daemon does not advertise the ${capability} feature`
|
|
899
|
+
);
|
|
900
|
+
}
|
|
901
|
+
}
|
|
786
902
|
/**
|
|
787
903
|
* Consolidated daemon status report (`GET /daemon/status`). The default
|
|
788
904
|
* `summary` detail reads cheap in-memory counters; `full` adds per-session,
|
|
@@ -824,6 +940,38 @@ var DaemonClient = class {
|
|
|
824
940
|
}
|
|
825
941
|
);
|
|
826
942
|
}
|
|
943
|
+
async initializeWorkspaceMcp() {
|
|
944
|
+
return await this.fetchWithTimeout(
|
|
945
|
+
`${this.baseUrl}/workspace/mcp/initialize`,
|
|
946
|
+
{
|
|
947
|
+
method: "POST",
|
|
948
|
+
headers: this.headers({ "Content-Type": "application/json" }),
|
|
949
|
+
body: "{}"
|
|
950
|
+
},
|
|
951
|
+
async (res) => {
|
|
952
|
+
if (!res.ok) {
|
|
953
|
+
throw await this.failOnError(res, "POST /workspace/mcp/initialize");
|
|
954
|
+
}
|
|
955
|
+
return await res.json();
|
|
956
|
+
}
|
|
957
|
+
);
|
|
958
|
+
}
|
|
959
|
+
async reloadWorkspaceMcp() {
|
|
960
|
+
return await this.fetchWithTimeout(
|
|
961
|
+
`${this.baseUrl}/workspace/mcp/reload`,
|
|
962
|
+
{
|
|
963
|
+
method: "POST",
|
|
964
|
+
headers: this.headers({ "Content-Type": "application/json" }),
|
|
965
|
+
body: "{}"
|
|
966
|
+
},
|
|
967
|
+
async (res) => {
|
|
968
|
+
if (!res.ok) {
|
|
969
|
+
throw await this.failOnError(res, "POST /workspace/mcp/reload");
|
|
970
|
+
}
|
|
971
|
+
return await res.json();
|
|
972
|
+
}
|
|
973
|
+
);
|
|
974
|
+
}
|
|
827
975
|
async workspaceGit() {
|
|
828
976
|
return await this.jsonRequest(
|
|
829
977
|
"/workspace/git",
|
|
@@ -951,6 +1099,20 @@ var DaemonClient = class {
|
|
|
951
1099
|
{ mode: "rest" }
|
|
952
1100
|
);
|
|
953
1101
|
}
|
|
1102
|
+
async activeExtensionOperations() {
|
|
1103
|
+
return await this.jsonRequest(
|
|
1104
|
+
"/workspace/extensions/operations",
|
|
1105
|
+
"GET /workspace/extensions/operations",
|
|
1106
|
+
{ mode: "rest" }
|
|
1107
|
+
);
|
|
1108
|
+
}
|
|
1109
|
+
async respondToExtensionInteraction(operationId, interactionId, response, clientId) {
|
|
1110
|
+
return await this.jsonRequest(
|
|
1111
|
+
`/workspace/extensions/operations/${urlEncode(operationId)}/interactions/${urlEncode(interactionId)}`,
|
|
1112
|
+
"POST /workspace/extensions/operations/:operationId/interactions/:interactionId",
|
|
1113
|
+
{ method: "POST", body: response, clientId, mode: "rest" }
|
|
1114
|
+
);
|
|
1115
|
+
}
|
|
954
1116
|
async checkExtensionUpdates(clientId) {
|
|
955
1117
|
return await this.jsonRequest(
|
|
956
1118
|
"/workspace/extensions/check-updates",
|
|
@@ -1207,6 +1369,24 @@ var DaemonClient = class {
|
|
|
1207
1369
|
}
|
|
1208
1370
|
);
|
|
1209
1371
|
}
|
|
1372
|
+
/**
|
|
1373
|
+
* Directory-name suggestions for an absolute path prefix, for flows that
|
|
1374
|
+
* pick a path outside any registered workspace (e.g. "Add workspace").
|
|
1375
|
+
*/
|
|
1376
|
+
async workspacePathSuggestions(prefix) {
|
|
1377
|
+
const url = new URL(`${this.baseUrl}/workspace-path-suggestions`);
|
|
1378
|
+
url.searchParams.set("prefix", prefix);
|
|
1379
|
+
return await this.fetchWithTimeout(
|
|
1380
|
+
url.toString(),
|
|
1381
|
+
{ headers: this.headers() },
|
|
1382
|
+
async (res) => {
|
|
1383
|
+
if (!res.ok) {
|
|
1384
|
+
throw await this.failOnError(res, "GET /workspace-path-suggestions");
|
|
1385
|
+
}
|
|
1386
|
+
return await res.json();
|
|
1387
|
+
}
|
|
1388
|
+
);
|
|
1389
|
+
}
|
|
1210
1390
|
async glob(pattern) {
|
|
1211
1391
|
const url = new URL(`${this.baseUrl}/glob`);
|
|
1212
1392
|
url.searchParams.set("pattern", pattern);
|
|
@@ -1527,6 +1707,9 @@ var DaemonClient = class {
|
|
|
1527
1707
|
}
|
|
1528
1708
|
// -- Sessions ----------------------------------------------------------
|
|
1529
1709
|
async createOrAttachSession(req, clientId) {
|
|
1710
|
+
if (req.sourceType !== void 0 || req.sourceId !== void 0) {
|
|
1711
|
+
await this.requireCapability("session_source_metadata");
|
|
1712
|
+
}
|
|
1530
1713
|
return await this.fetchWithTimeout(
|
|
1531
1714
|
`${this.baseUrl}/session`,
|
|
1532
1715
|
{
|
|
@@ -1542,7 +1725,9 @@ var DaemonClient = class {
|
|
|
1542
1725
|
// bridge's own validation uses (`httpAcpBridge.ts:
|
|
1543
1726
|
// spawnOrAttach`); SDK should be a transparent layer here.
|
|
1544
1727
|
...req.sessionScope !== void 0 ? { sessionScope: req.sessionScope } : {},
|
|
1545
|
-
...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {}
|
|
1728
|
+
...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {},
|
|
1729
|
+
...req.sourceType !== void 0 ? { sourceType: req.sourceType } : {},
|
|
1730
|
+
...req.sourceId !== void 0 ? { sourceId: req.sourceId } : {}
|
|
1546
1731
|
})
|
|
1547
1732
|
},
|
|
1548
1733
|
async (res) => {
|
|
@@ -1560,6 +1745,9 @@ var DaemonClient = class {
|
|
|
1560
1745
|
return page.sessions;
|
|
1561
1746
|
}
|
|
1562
1747
|
async listWorkspaceSessionsPage(workspaceCwd, options) {
|
|
1748
|
+
if (options?.sourceType !== void 0 || options?.sourceId !== void 0) {
|
|
1749
|
+
await this.requireCapability("session_source_metadata");
|
|
1750
|
+
}
|
|
1563
1751
|
const requestedPageSize = options?.pageSize ?? DEFAULT_SESSION_LIST_PAGE_SIZE;
|
|
1564
1752
|
const pageSize = Math.max(
|
|
1565
1753
|
1,
|
|
@@ -1586,6 +1774,12 @@ var DaemonClient = class {
|
|
|
1586
1774
|
if (options?.parentSessionId !== void 0) {
|
|
1587
1775
|
query.set("parentSessionId", options.parentSessionId);
|
|
1588
1776
|
}
|
|
1777
|
+
if (options?.sourceType !== void 0) {
|
|
1778
|
+
query.set("sourceType", options.sourceType);
|
|
1779
|
+
}
|
|
1780
|
+
if (options?.sourceId !== void 0) {
|
|
1781
|
+
query.set("sourceId", options.sourceId);
|
|
1782
|
+
}
|
|
1589
1783
|
return await this.jsonRequest(
|
|
1590
1784
|
`/workspace/${urlEncode(workspaceCwd)}/sessions?${query.toString()}`,
|
|
1591
1785
|
"GET /workspace/sessions"
|
|
@@ -1638,12 +1832,8 @@ var DaemonClient = class {
|
|
|
1638
1832
|
);
|
|
1639
1833
|
}
|
|
1640
1834
|
async getSessionTranscriptPage(sessionId, opts = {}) {
|
|
1641
|
-
const params = new URLSearchParams();
|
|
1642
|
-
if (opts.cursor !== void 0) params.set("cursor", opts.cursor);
|
|
1643
|
-
if (opts.limit !== void 0) params.set("limit", String(opts.limit));
|
|
1644
|
-
const query = params.toString();
|
|
1645
1835
|
return await this.jsonRequest(
|
|
1646
|
-
`/session/${urlEncode(sessionId)}/transcript${
|
|
1836
|
+
`/session/${urlEncode(sessionId)}/transcript${transcriptPageSuffix(opts)}`,
|
|
1647
1837
|
"GET /session/:id/transcript",
|
|
1648
1838
|
{
|
|
1649
1839
|
clientId: opts.clientId,
|
|
@@ -1829,7 +2019,8 @@ var DaemonClient = class {
|
|
|
1829
2019
|
headers: this.headers({ "Content-Type": "application/json" }, clientId),
|
|
1830
2020
|
body: JSON.stringify({
|
|
1831
2021
|
cwd: req.workspaceCwd,
|
|
1832
|
-
...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {}
|
|
2022
|
+
...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {},
|
|
2023
|
+
...action === "load" && req.historyPageSize !== void 0 ? { historyPageSize: req.historyPageSize } : {}
|
|
1833
2024
|
})
|
|
1834
2025
|
},
|
|
1835
2026
|
async (res) => {
|
|
@@ -1960,6 +2151,31 @@ var DaemonClient = class {
|
|
|
1960
2151
|
if (!res.ok) throw await this.failOnError(res, "POST /session/:id/recap");
|
|
1961
2152
|
return await res.json();
|
|
1962
2153
|
}
|
|
2154
|
+
async *generateSessionContent(sessionId, prompt, opts) {
|
|
2155
|
+
const res = await this.transport.fetch(
|
|
2156
|
+
`${this.baseUrl}/session/${urlEncode(sessionId)}/generate`,
|
|
2157
|
+
{
|
|
2158
|
+
method: "POST",
|
|
2159
|
+
headers: this.headers(
|
|
2160
|
+
{
|
|
2161
|
+
"Content-Type": "application/json",
|
|
2162
|
+
Accept: "text/event-stream"
|
|
2163
|
+
},
|
|
2164
|
+
opts?.clientId
|
|
2165
|
+
),
|
|
2166
|
+
body: JSON.stringify({ prompt }),
|
|
2167
|
+
signal: opts?.signal
|
|
2168
|
+
}
|
|
2169
|
+
);
|
|
2170
|
+
if (!res.ok) {
|
|
2171
|
+
throw await this.failOnError(res, "POST /session/:id/generate");
|
|
2172
|
+
}
|
|
2173
|
+
if (!res.body) throw new Error("Generation response body is missing");
|
|
2174
|
+
for await (const event of parseSseStream(res.body, opts?.signal)) {
|
|
2175
|
+
const generationEvent = parseSessionGenerationEvent(event);
|
|
2176
|
+
if (generationEvent) yield generationEvent;
|
|
2177
|
+
}
|
|
2178
|
+
}
|
|
1963
2179
|
async btwSession(sessionId, question, opts) {
|
|
1964
2180
|
const res = await this.transport.fetch(
|
|
1965
2181
|
`${this.baseUrl}/session/${urlEncode(sessionId)}/btw`,
|
|
@@ -2139,6 +2355,19 @@ var DaemonClient = class {
|
|
|
2139
2355
|
}
|
|
2140
2356
|
);
|
|
2141
2357
|
}
|
|
2358
|
+
installWorkspaceSkill(request) {
|
|
2359
|
+
return this.jsonRequest("/workspace/skills/install", "Skill", {
|
|
2360
|
+
method: "POST",
|
|
2361
|
+
body: request
|
|
2362
|
+
});
|
|
2363
|
+
}
|
|
2364
|
+
deleteWorkspaceSkill(skillName, scope) {
|
|
2365
|
+
return this.jsonRequest(
|
|
2366
|
+
`/workspace/skills/${urlEncode(skillName)}?scope=${scope}`,
|
|
2367
|
+
"Skill",
|
|
2368
|
+
{ method: "DELETE" }
|
|
2369
|
+
);
|
|
2370
|
+
}
|
|
2142
2371
|
async workspaceSettings(opts) {
|
|
2143
2372
|
return await this.fetchWithTimeout(
|
|
2144
2373
|
`${this.baseUrl}/workspace/settings`,
|
|
@@ -2163,7 +2392,12 @@ var DaemonClient = class {
|
|
|
2163
2392
|
{ "Content-Type": "application/json" },
|
|
2164
2393
|
opts?.clientId
|
|
2165
2394
|
),
|
|
2166
|
-
body: JSON.stringify({
|
|
2395
|
+
body: JSON.stringify({
|
|
2396
|
+
scope,
|
|
2397
|
+
key,
|
|
2398
|
+
value,
|
|
2399
|
+
...opts?.mcpServerMutation ? { mcpServerMutation: opts.mcpServerMutation } : {}
|
|
2400
|
+
})
|
|
2167
2401
|
},
|
|
2168
2402
|
async (res) => {
|
|
2169
2403
|
if (!res.ok) {
|
|
@@ -3170,6 +3404,20 @@ var WorkspaceDaemonClient = class {
|
|
|
3170
3404
|
workspaceMcp() {
|
|
3171
3405
|
return this.get("/mcp", "GET /workspaces/:workspace/mcp");
|
|
3172
3406
|
}
|
|
3407
|
+
initializeWorkspaceMcp() {
|
|
3408
|
+
return this.post(
|
|
3409
|
+
"/mcp/initialize",
|
|
3410
|
+
"POST /workspaces/:workspace/mcp/initialize",
|
|
3411
|
+
{}
|
|
3412
|
+
);
|
|
3413
|
+
}
|
|
3414
|
+
reloadWorkspaceMcp() {
|
|
3415
|
+
return this.post(
|
|
3416
|
+
"/mcp/reload",
|
|
3417
|
+
"POST /workspaces/:workspace/mcp/reload",
|
|
3418
|
+
{}
|
|
3419
|
+
);
|
|
3420
|
+
}
|
|
3173
3421
|
workspaceVoice(clientId) {
|
|
3174
3422
|
return this.client.workspaceJsonRequest(
|
|
3175
3423
|
this.workspaceSelector,
|
|
@@ -3285,7 +3533,10 @@ var WorkspaceDaemonClient = class {
|
|
|
3285
3533
|
}
|
|
3286
3534
|
);
|
|
3287
3535
|
}
|
|
3288
|
-
listWorkspaceSessionsPage(options) {
|
|
3536
|
+
async listWorkspaceSessionsPage(options) {
|
|
3537
|
+
if (options?.sourceType !== void 0 || options?.sourceId !== void 0) {
|
|
3538
|
+
await this.client.requireCapability("session_source_metadata");
|
|
3539
|
+
}
|
|
3289
3540
|
const requestedPageSize = options?.pageSize ?? DEFAULT_SESSION_LIST_PAGE_SIZE;
|
|
3290
3541
|
const pageSize = Math.max(
|
|
3291
3542
|
1,
|
|
@@ -3306,7 +3557,13 @@ var WorkspaceDaemonClient = class {
|
|
|
3306
3557
|
if (options?.parentSessionId !== void 0) {
|
|
3307
3558
|
query.set("parentSessionId", options.parentSessionId);
|
|
3308
3559
|
}
|
|
3309
|
-
|
|
3560
|
+
if (options?.sourceType !== void 0) {
|
|
3561
|
+
query.set("sourceType", options.sourceType);
|
|
3562
|
+
}
|
|
3563
|
+
if (options?.sourceId !== void 0) {
|
|
3564
|
+
query.set("sourceId", options.sourceId);
|
|
3565
|
+
}
|
|
3566
|
+
return await this.get(
|
|
3310
3567
|
`/sessions?${query.toString()}`,
|
|
3311
3568
|
"GET /workspaces/:workspace/sessions"
|
|
3312
3569
|
);
|
|
@@ -3315,6 +3572,9 @@ var WorkspaceDaemonClient = class {
|
|
|
3315
3572
|
const page = await this.listWorkspaceSessionsPage(options);
|
|
3316
3573
|
return page.sessions;
|
|
3317
3574
|
}
|
|
3575
|
+
getWorkspaceSessionInfo() {
|
|
3576
|
+
return this.get("/session-info", "GET /workspaces/:workspace/session-info");
|
|
3577
|
+
}
|
|
3318
3578
|
/**
|
|
3319
3579
|
* Read one page from an active persisted session transcript in this
|
|
3320
3580
|
* workspace.
|
|
@@ -3322,13 +3582,9 @@ var WorkspaceDaemonClient = class {
|
|
|
3322
3582
|
* starting ACP. This method always uses native REST transport.
|
|
3323
3583
|
*/
|
|
3324
3584
|
getSessionTranscriptPage(sessionId, opts = {}) {
|
|
3325
|
-
const query = new URLSearchParams();
|
|
3326
|
-
if (opts.cursor !== void 0) query.set("cursor", opts.cursor);
|
|
3327
|
-
if (opts.limit !== void 0) query.set("limit", String(opts.limit));
|
|
3328
|
-
const suffix = query.size > 0 ? `?${query.toString()}` : "";
|
|
3329
3585
|
return this.client.workspaceJsonRequest(
|
|
3330
3586
|
this.workspaceSelector,
|
|
3331
|
-
`/session/${urlEncode(sessionId)}/transcript${
|
|
3587
|
+
`/session/${urlEncode(sessionId)}/transcript${transcriptPageSuffix(opts)}`,
|
|
3332
3588
|
"GET /workspaces/:workspace/session/:id/transcript",
|
|
3333
3589
|
{ clientId: opts.clientId, mode: "rest" }
|
|
3334
3590
|
);
|
|
@@ -3341,6 +3597,14 @@ var WorkspaceDaemonClient = class {
|
|
|
3341
3597
|
opts
|
|
3342
3598
|
);
|
|
3343
3599
|
}
|
|
3600
|
+
/** Export an archived persisted session from this registered workspace. */
|
|
3601
|
+
exportArchivedSession(sessionId, opts = {}) {
|
|
3602
|
+
return this.client.sessionExportRequest(
|
|
3603
|
+
`/workspaces/${this.workspaceSelector}/session/${urlEncode(sessionId)}/archive/export`,
|
|
3604
|
+
"GET /workspaces/:workspace/session/:id/archive/export",
|
|
3605
|
+
opts
|
|
3606
|
+
);
|
|
3607
|
+
}
|
|
3344
3608
|
listSessionGroups() {
|
|
3345
3609
|
return this.get(
|
|
3346
3610
|
"/session-groups",
|
|
@@ -3441,11 +3705,16 @@ var WorkspaceDaemonClient = class {
|
|
|
3441
3705
|
"GET /workspaces/:workspace/list"
|
|
3442
3706
|
);
|
|
3443
3707
|
}
|
|
3444
|
-
glob(pattern) {
|
|
3708
|
+
glob(pattern, opts = {}) {
|
|
3445
3709
|
const query = new URLSearchParams({ pattern });
|
|
3446
|
-
|
|
3710
|
+
if (opts.maxResults !== void 0) {
|
|
3711
|
+
query.set("maxResults", String(opts.maxResults));
|
|
3712
|
+
}
|
|
3713
|
+
return this.client.workspaceJsonRequest(
|
|
3714
|
+
this.workspaceSelector,
|
|
3447
3715
|
`/glob?${query.toString()}`,
|
|
3448
|
-
"GET /workspaces/:workspace/glob"
|
|
3716
|
+
"GET /workspaces/:workspace/glob",
|
|
3717
|
+
{ signal: opts.signal }
|
|
3449
3718
|
);
|
|
3450
3719
|
}
|
|
3451
3720
|
writeWorkspaceFile(req, clientId) {
|
|
@@ -3475,7 +3744,12 @@ var WorkspaceDaemonClient = class {
|
|
|
3475
3744
|
return this.post(
|
|
3476
3745
|
"/settings",
|
|
3477
3746
|
"POST /workspaces/:workspace/settings",
|
|
3478
|
-
{
|
|
3747
|
+
{
|
|
3748
|
+
scope,
|
|
3749
|
+
key,
|
|
3750
|
+
value,
|
|
3751
|
+
...opts?.mcpServerMutation ? { mcpServerMutation: opts.mcpServerMutation } : {}
|
|
3752
|
+
},
|
|
3479
3753
|
opts?.clientId
|
|
3480
3754
|
);
|
|
3481
3755
|
}
|
|
@@ -3671,6 +3945,7 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
3671
3945
|
state;
|
|
3672
3946
|
replaySnapshot;
|
|
3673
3947
|
hasActivePrompt;
|
|
3948
|
+
historyHasMore;
|
|
3674
3949
|
lastSeenEventId;
|
|
3675
3950
|
subscriptionActive = false;
|
|
3676
3951
|
/** In-flight `reattach()` so concurrent prompts re-register only once. */
|
|
@@ -3682,6 +3957,7 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
3682
3957
|
this.session = { ...opts.session };
|
|
3683
3958
|
this.state = { ...opts.state ?? {} };
|
|
3684
3959
|
this.hasActivePrompt = opts.hasActivePrompt ?? false;
|
|
3960
|
+
this.historyHasMore = opts.historyHasMore ?? false;
|
|
3685
3961
|
this.replaySnapshot = opts.replaySnapshot ?? {
|
|
3686
3962
|
compactedReplay: [],
|
|
3687
3963
|
liveJournal: []
|
|
@@ -3713,6 +3989,7 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
3713
3989
|
hasActivePrompt,
|
|
3714
3990
|
compactedReplay,
|
|
3715
3991
|
liveJournal,
|
|
3992
|
+
historyHasMore,
|
|
3716
3993
|
lastEventId: serverLastEventId,
|
|
3717
3994
|
...session
|
|
3718
3995
|
} = await client.loadSession(sessionId, req, clientId);
|
|
@@ -3725,7 +4002,8 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
3725
4002
|
replaySnapshot: {
|
|
3726
4003
|
compactedReplay: compactedReplay ?? [],
|
|
3727
4004
|
liveJournal: liveJournal ?? []
|
|
3728
|
-
}
|
|
4005
|
+
},
|
|
4006
|
+
historyHasMore
|
|
3729
4007
|
});
|
|
3730
4008
|
}
|
|
3731
4009
|
/**
|
|
@@ -3954,6 +4232,12 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
3954
4232
|
...this.clientId ? { clientId: this.clientId } : {}
|
|
3955
4233
|
});
|
|
3956
4234
|
}
|
|
4235
|
+
generateContent(prompt, opts) {
|
|
4236
|
+
return this.client.generateSessionContent(this.sessionId, prompt, {
|
|
4237
|
+
...opts?.signal ? { signal: opts.signal } : {},
|
|
4238
|
+
...this.clientId ? { clientId: this.clientId } : {}
|
|
4239
|
+
});
|
|
4240
|
+
}
|
|
3957
4241
|
async btw(question, opts) {
|
|
3958
4242
|
return await this.client.btwSession(this.sessionId, question, {
|
|
3959
4243
|
...opts?.signal ? { signal: opts.signal } : {},
|
|
@@ -4249,6 +4533,7 @@ var DAEMON_KNOWN_EVENT_TYPE_VALUES = [
|
|
|
4249
4533
|
"github_setup_completed",
|
|
4250
4534
|
"mcp_server_restarted",
|
|
4251
4535
|
"mcp_server_restart_refused",
|
|
4536
|
+
"mcp_server_changed",
|
|
4252
4537
|
"settings_reloaded",
|
|
4253
4538
|
// Runtime MCP server add/remove events. Fired by
|
|
4254
4539
|
// `POST /workspace/mcp/servers` on success (including replace and
|
|
@@ -4477,6 +4762,8 @@ function asKnownDaemonEvent(event) {
|
|
|
4477
4762
|
return isMcpServerRestartedData(event.data) ? event : void 0;
|
|
4478
4763
|
case "mcp_server_restart_refused":
|
|
4479
4764
|
return isMcpServerRestartRefusedData(event.data) ? event : void 0;
|
|
4765
|
+
case "mcp_server_changed":
|
|
4766
|
+
return isMcpServerChangedData(event.data) ? event : void 0;
|
|
4480
4767
|
case "settings_reloaded":
|
|
4481
4768
|
return event.data != null && typeof event.data === "object" ? event : void 0;
|
|
4482
4769
|
case "followup_suggestion":
|
|
@@ -4786,6 +5073,7 @@ function reduceDaemonSessionEvent(state, rawEvent) {
|
|
|
4786
5073
|
// reduced session-view state.
|
|
4787
5074
|
case "mcp_server_added":
|
|
4788
5075
|
case "mcp_server_removed":
|
|
5076
|
+
case "mcp_server_changed":
|
|
4789
5077
|
case "settings_reloaded":
|
|
4790
5078
|
case "extensions_changed":
|
|
4791
5079
|
case "artifact_changed":
|
|
@@ -5199,6 +5487,7 @@ var MCP_RESTART_REFUSED_REASONS = /* @__PURE__ */ new Set([
|
|
|
5199
5487
|
"in_flight",
|
|
5200
5488
|
"disabled",
|
|
5201
5489
|
"budget_would_exceed",
|
|
5490
|
+
"authentication_required",
|
|
5202
5491
|
// Pool-mode hard restart failure (entry's `client.connect()` or
|
|
5203
5492
|
// rediscover threw). Carried alongside the soft-skip reasons so
|
|
5204
5493
|
// SDK reducers maintain a single union for narrowing the event's
|
|
@@ -5242,6 +5531,13 @@ function isMcpServerRemovedData(value) {
|
|
|
5242
5531
|
return true;
|
|
5243
5532
|
}
|
|
5244
5533
|
__name(isMcpServerRemovedData, "isMcpServerRemovedData");
|
|
5534
|
+
function isMcpServerChangedData(value) {
|
|
5535
|
+
if (!isRecord(value) || !isNonEmptyString(value["serverName"])) {
|
|
5536
|
+
return false;
|
|
5537
|
+
}
|
|
5538
|
+
return value["action"] === "approve" || value["action"] === "enable" || value["action"] === "disable" || value["action"] === "authenticate" || value["action"] === "clear-auth";
|
|
5539
|
+
}
|
|
5540
|
+
__name(isMcpServerChangedData, "isMcpServerChangedData");
|
|
5245
5541
|
function isExtensionsChangedData(value) {
|
|
5246
5542
|
if (!isRecord(value)) return false;
|
|
5247
5543
|
if (typeof value["refreshed"] !== "number") return false;
|
|
@@ -5349,67 +5645,6 @@ init_esbuild_shims();
|
|
|
5349
5645
|
// packages/sdk-typescript/src/daemon/ui/normalizer.ts
|
|
5350
5646
|
init_esbuild_shims();
|
|
5351
5647
|
|
|
5352
|
-
// packages/sdk-typescript/src/daemon/types.ts
|
|
5353
|
-
init_esbuild_shims();
|
|
5354
|
-
var DaemonCapabilityMissingError = class extends Error {
|
|
5355
|
-
static {
|
|
5356
|
-
__name(this, "DaemonCapabilityMissingError");
|
|
5357
|
-
}
|
|
5358
|
-
capability;
|
|
5359
|
-
constructor(capability, hint) {
|
|
5360
|
-
super(
|
|
5361
|
-
`DaemonCapabilities.${capability} is missing \u2014 ${hint}. The daemon you are connected to likely predates the feature that added this field; upgrade the daemon or fall back to a different code path that doesn't require it.`
|
|
5362
|
-
);
|
|
5363
|
-
this.name = "DaemonCapabilityMissingError";
|
|
5364
|
-
this.capability = capability;
|
|
5365
|
-
}
|
|
5366
|
-
};
|
|
5367
|
-
function requireWorkspaceCwd(caps) {
|
|
5368
|
-
if (typeof caps.workspaceCwd !== "string" || caps.workspaceCwd.length === 0) {
|
|
5369
|
-
throw new DaemonCapabilityMissingError(
|
|
5370
|
-
"workspaceCwd",
|
|
5371
|
-
caps.workspaceCwd === "" ? "daemon returned an empty workspaceCwd (newer daemon with a bug)" : "daemon predates workspaceCwd support (1 daemon = 1 workspace); upgrade it"
|
|
5372
|
-
);
|
|
5373
|
-
}
|
|
5374
|
-
return caps.workspaceCwd;
|
|
5375
|
-
}
|
|
5376
|
-
__name(requireWorkspaceCwd, "requireWorkspaceCwd");
|
|
5377
|
-
var DAEMON_ERROR_KINDS = [
|
|
5378
|
-
"missing_binary",
|
|
5379
|
-
"blocked_egress",
|
|
5380
|
-
"auth_env_error",
|
|
5381
|
-
"init_timeout",
|
|
5382
|
-
"protocol_error",
|
|
5383
|
-
"missing_file",
|
|
5384
|
-
"parse_error",
|
|
5385
|
-
// Budget refusal under `--mcp-budget-mode=enforce`.
|
|
5386
|
-
"budget_exhausted",
|
|
5387
|
-
// Runtime MCP mutation routes (POST/DELETE /workspace/mcp/servers).
|
|
5388
|
-
"mcp_budget_would_exceed",
|
|
5389
|
-
"mcp_server_spawn_failed",
|
|
5390
|
-
"invalid_config",
|
|
5391
|
-
// A prompt exceeded the daemon-configured wallclock cap (or the
|
|
5392
|
-
// request's own `deadlineMs`, capped at the server flag).
|
|
5393
|
-
"prompt_deadline_exceeded",
|
|
5394
|
-
// An SSE writer's last successful flush was older than the daemon's
|
|
5395
|
-
// writer-idle deadline.
|
|
5396
|
-
"writer_idle_timeout",
|
|
5397
|
-
// The model response stream ended before a complete turn could be read.
|
|
5398
|
-
"model_stream_interrupted"
|
|
5399
|
-
];
|
|
5400
|
-
var DAEMON_CONTENT_HASH_RE = /^sha256:[0-9a-f]{64}$/;
|
|
5401
|
-
function isDaemonContentHash(value) {
|
|
5402
|
-
return typeof value === "string" && DAEMON_CONTENT_HASH_RE.test(value);
|
|
5403
|
-
}
|
|
5404
|
-
__name(isDaemonContentHash, "isDaemonContentHash");
|
|
5405
|
-
var DAEMON_APPROVAL_MODES = [
|
|
5406
|
-
"plan",
|
|
5407
|
-
"default",
|
|
5408
|
-
"auto-edit",
|
|
5409
|
-
"auto",
|
|
5410
|
-
"yolo"
|
|
5411
|
-
];
|
|
5412
|
-
|
|
5413
5648
|
// packages/sdk-typescript/src/daemon/ui/types.ts
|
|
5414
5649
|
init_esbuild_shims();
|
|
5415
5650
|
var DAEMON_PLAN_TOOL_CALL_ID = "daemon-plan";
|
|
@@ -5604,7 +5839,8 @@ var DEVICE_FLOW_PROVIDER_SET = /* @__PURE__ */ new Set(["qwen", "qwen-oauth"]);
|
|
|
5604
5839
|
var MCP_RESTART_REFUSED_REASONS2 = /* @__PURE__ */ new Set([
|
|
5605
5840
|
"in_flight",
|
|
5606
5841
|
"disabled",
|
|
5607
|
-
"budget_would_exceed"
|
|
5842
|
+
"budget_would_exceed",
|
|
5843
|
+
"authentication_required"
|
|
5608
5844
|
]);
|
|
5609
5845
|
var MALFORMED_MEMORY_CHANGED = "malformed memory_changed payload";
|
|
5610
5846
|
var MAX_DETAILS_LENGTH = 4096;
|
|
@@ -5836,6 +6072,12 @@ function normalizeDaemonEvent(event, opts = {}) {
|
|
|
5836
6072
|
return normalizeMcpServerRestarted(event, base);
|
|
5837
6073
|
case "mcp_server_restart_refused":
|
|
5838
6074
|
return normalizeMcpServerRestartRefused(event, base);
|
|
6075
|
+
case "mcp_server_added":
|
|
6076
|
+
return normalizeMcpServerChanged(event, base, "added");
|
|
6077
|
+
case "mcp_server_removed":
|
|
6078
|
+
return normalizeMcpServerChanged(event, base, "removed");
|
|
6079
|
+
case "mcp_server_changed":
|
|
6080
|
+
return normalizeMcpServerChanged(event, base);
|
|
5839
6081
|
case "extensions_changed":
|
|
5840
6082
|
return normalizeExtensionsChanged(event, base);
|
|
5841
6083
|
case "artifact_changed":
|
|
@@ -6119,8 +6361,13 @@ function normalizeSessionUpdate(event, base, opts) {
|
|
|
6119
6361
|
];
|
|
6120
6362
|
}
|
|
6121
6363
|
case "tool_call":
|
|
6122
|
-
case "tool_call_update":
|
|
6364
|
+
case "tool_call_update": {
|
|
6365
|
+
const meta = isRecord2(update["_meta"]) ? update["_meta"] : void 0;
|
|
6366
|
+
if (getString2(update, "status") === "in_progress" && getString2(update, "kind") === void 0 && meta?.["shellProgress"] !== void 0) {
|
|
6367
|
+
return [];
|
|
6368
|
+
}
|
|
6123
6369
|
return [normalizeToolUpdate(update, base)];
|
|
6370
|
+
}
|
|
6124
6371
|
case "shell_output":
|
|
6125
6372
|
case "tool_output": {
|
|
6126
6373
|
const text = getOutputText(update);
|
|
@@ -6748,6 +6995,30 @@ function normalizeMcpServerRestartRefused(event, base) {
|
|
|
6748
6995
|
];
|
|
6749
6996
|
}
|
|
6750
6997
|
__name(normalizeMcpServerRestartRefused, "normalizeMcpServerRestartRefused");
|
|
6998
|
+
function normalizeMcpServerChanged(event, base, fixedAction) {
|
|
6999
|
+
const serverName = getString2(event.data, fixedAction ? "name" : "serverName");
|
|
7000
|
+
const action = fixedAction ?? getString2(event.data, "action");
|
|
7001
|
+
if (!serverName || !action || ![
|
|
7002
|
+
"added",
|
|
7003
|
+
"removed",
|
|
7004
|
+
"approve",
|
|
7005
|
+
"enable",
|
|
7006
|
+
"disable",
|
|
7007
|
+
"authenticate",
|
|
7008
|
+
"clear-auth"
|
|
7009
|
+
].includes(action)) {
|
|
7010
|
+
return fallbackDebug(event, base, `malformed ${event.type} payload`);
|
|
7011
|
+
}
|
|
7012
|
+
return [
|
|
7013
|
+
{
|
|
7014
|
+
...base,
|
|
7015
|
+
type: "workspace.mcp.server_changed",
|
|
7016
|
+
serverName,
|
|
7017
|
+
action
|
|
7018
|
+
}
|
|
7019
|
+
];
|
|
7020
|
+
}
|
|
7021
|
+
__name(normalizeMcpServerChanged, "normalizeMcpServerChanged");
|
|
6751
7022
|
function normalizeExtensionsChanged(event, base) {
|
|
6752
7023
|
const refreshed = numberField(event.data, "refreshed");
|
|
6753
7024
|
const failed = numberField(event.data, "failed");
|
|
@@ -7338,12 +7609,15 @@ function appendLocalUserTranscriptMessage(state, text, opts = {}) {
|
|
|
7338
7609
|
return trimTranscriptState(next);
|
|
7339
7610
|
}
|
|
7340
7611
|
__name(appendLocalUserTranscriptMessage, "appendLocalUserTranscriptMessage");
|
|
7612
|
+
var FREEZE_TRANSCRIPT_BLOCKS = typeof process !== "undefined" && false;
|
|
7341
7613
|
function reduceDaemonTranscriptEvents(state, events, opts = {}) {
|
|
7342
7614
|
if (events.length === 0) return state;
|
|
7343
7615
|
const next = cloneTranscriptState(state, opts);
|
|
7344
7616
|
for (const event of events) applyDaemonTranscriptEvent(next, event);
|
|
7345
7617
|
const result = trimTranscriptState(next);
|
|
7346
|
-
|
|
7618
|
+
if (FREEZE_TRANSCRIPT_BLOCKS) {
|
|
7619
|
+
Object.freeze(result.blocks);
|
|
7620
|
+
}
|
|
7347
7621
|
return result;
|
|
7348
7622
|
}
|
|
7349
7623
|
__name(reduceDaemonTranscriptEvents, "reduceDaemonTranscriptEvents");
|
|
@@ -7508,6 +7782,7 @@ function applyDaemonTranscriptEvent(next, event) {
|
|
|
7508
7782
|
case "workspace.mcp.child_refused":
|
|
7509
7783
|
case "workspace.mcp.server_restarted":
|
|
7510
7784
|
case "workspace.mcp.server_restart_refused":
|
|
7785
|
+
case "workspace.mcp.server_changed":
|
|
7511
7786
|
case "auth.device_flow.started":
|
|
7512
7787
|
case "auth.device_flow.throttled":
|
|
7513
7788
|
case "auth.device_flow.authorized":
|
|
@@ -8679,6 +8954,8 @@ function daemonUiEventToTerminalText(event) {
|
|
|
8679
8954
|
`${event.serverName} restart refused: ${event.reason}`,
|
|
8680
8955
|
"33"
|
|
8681
8956
|
);
|
|
8957
|
+
case "workspace.mcp.server_changed":
|
|
8958
|
+
return terminalLine("mcp", `${event.serverName} ${event.action}`, "36");
|
|
8682
8959
|
case "workspace.extensions.changed":
|
|
8683
8960
|
if (event.status === "failed") {
|
|
8684
8961
|
return terminalLine(
|