@qwen-code/qwen-code 0.19.8 → 0.19.9-nightly.20260714.9dd8389eb
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/SKILL.md +1 -0
- package/bundled/qc-helper/docs/configuration/auth.md +40 -55
- package/bundled/qc-helper/docs/configuration/model-providers.md +224 -218
- package/bundled/qc-helper/docs/configuration/settings.md +61 -51
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -2
- package/bundled/qc-helper/docs/features/channels/overview.md +82 -7
- package/bundled/qc-helper/docs/features/channels/wecom.md +6 -0
- package/bundled/qc-helper/docs/features/code-review.md +109 -41
- package/bundled/qc-helper/docs/features/commands.md +45 -44
- package/bundled/qc-helper/docs/features/computer-use.md +77 -0
- package/bundled/qc-helper/docs/features/hooks.md +29 -0
- package/bundled/qc-helper/docs/features/tool-use-summaries.md +19 -23
- package/bundled/qc-helper/docs/integration-vscode.md +2 -2
- package/bundled/qc-helper/docs/qwen-serve.md +60 -22
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +2 -2
- package/bundled/review/DESIGN.md +303 -46
- package/bundled/review/SKILL.md +658 -165
- package/chunks/MaxSizedBox-QAYHOC4F.js +71 -0
- package/chunks/{StandaloneSessionPicker-EYRGH6PJ.js → StandaloneSessionPicker-D3R6YYX3.js} +82 -79
- package/chunks/{acpAgent-GRFTTRHW.js → acpAgent-ENHBW72A.js} +1178 -421
- package/chunks/agent-57LX4KMG.js +69 -0
- package/chunks/agent-headless-AC6EVNAP.js +63 -0
- package/chunks/{anthropicContentGenerator-CPF22MA7.js → anthropicContentGenerator-56U3YCP2.js} +187 -31
- package/chunks/{artifact-tool-D233YJFH.js → artifact-tool-BWZZJ42H.js} +5 -5
- package/chunks/{askUserQuestion-MKL5ZTMC.js → askUserQuestion-WU3S5A5T.js} +6 -6
- package/chunks/bridge-4OZH44MK.js +79 -0
- package/chunks/{ca-MKD32FQL.js → ca-C2JTT2N5.js} +68 -6
- package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
- package/chunks/channel-worker-manager-5RWKSGEU.js +418 -0
- package/chunks/channel-worker-supervisor-PCDAZN4D.js +20 -0
- package/chunks/{chunk-CSOTA7KX.js → chunk-2FO5GFKZ.js} +2 -2
- package/chunks/{chunk-QQDPRDVW.js → chunk-2HRYPZT5.js} +1 -1
- package/chunks/{chunk-I6WGFJJ3.js → chunk-2MF6ICOL.js} +38 -12
- package/chunks/{chunk-X3YGAX7V.js → chunk-2UUAIFQO.js} +4 -2
- package/chunks/{chunk-2PSWA5ID.js → chunk-2X56YUSZ.js} +1 -1
- package/chunks/{chunk-NQKLOAVJ.js → chunk-2Z5UX4KI.js} +2 -2
- package/chunks/chunk-3MX7D6QN.js +516 -0
- package/chunks/{chunk-YDOXPLYL.js → chunk-4DYYRLIE.js} +3890 -975
- package/chunks/{chunk-OQXDAMKY.js → chunk-4FPUAYTT.js} +8 -8
- package/chunks/{chunk-55ZMG67I.js → chunk-4LD5APFL.js} +4 -4
- package/chunks/{chunk-YKZIAK7C.js → chunk-4LJNI7MU.js} +166 -37
- package/chunks/{chunk-BOBOCR5H.js → chunk-4QOPEEL2.js} +4 -4
- package/chunks/{chunk-UIDXQNMV.js → chunk-4WGODMVR.js} +1 -1
- package/chunks/{chunk-E6US47KI.js → chunk-4WKAA4KS.js} +1 -1
- package/chunks/{chunk-3GONHQOA.js → chunk-57OAHC2Y.js} +1 -1
- package/chunks/{chunk-JZSY4WP3.js → chunk-5DTTYNB7.js} +1 -1
- package/chunks/chunk-5HBA2Z7V.js +28 -0
- package/chunks/{chunk-SKAZWEV5.js → chunk-5M6IDOMF.js} +35 -98
- package/chunks/{chunk-A4BMJM77.js → chunk-5O2XNYP6.js} +1 -0
- package/chunks/{chunk-GO6LNQXT.js → chunk-6AM5D4ME.js} +1 -1
- package/chunks/{chunk-BJBWRCSK.js → chunk-6H67XLET.js} +1 -1
- package/chunks/{chunk-AYNCLGTW.js → chunk-6HHAADP2.js} +8 -51
- package/chunks/{chunk-VZ7HY3YU.js → chunk-6OATMEYN.js} +3 -3
- package/chunks/{chunk-3UP777ZS.js → chunk-6RLROE6G.js} +1 -1
- package/chunks/{chunk-ZERZSAZL.js → chunk-75DOP5OR.js} +2 -2
- package/chunks/{chunk-RMLZAUWH.js → chunk-7BIZARI2.js} +10 -12
- package/chunks/{chunk-GN3F6PIU.js → chunk-7NAWTFVY.js} +5 -5
- package/chunks/{chunk-22MNNNXE.js → chunk-7NFB7LBQ.js} +11 -3
- package/chunks/{chunk-ZL5HN75Q.js → chunk-7R4DPSRA.js} +37 -3
- package/chunks/{chunk-BVYU3ZTI.js → chunk-7U7UIO5W.js} +1005 -942
- package/chunks/{chunk-SAIILPQ3.js → chunk-7X7TEQNX.js} +5 -3
- package/chunks/{chunk-IRJWHZWU.js → chunk-A4UCTEB5.js} +2 -2
- package/chunks/{chunk-WF4FAXDL.js → chunk-AAS2Q2TV.js} +62 -62
- package/chunks/{chunk-O7FIRWJV.js → chunk-AAWKZ5R7.js} +3 -3
- package/chunks/{chunk-JCH35JB3.js → chunk-AGBFWLA5.js} +2 -2
- package/chunks/{chunk-QYUE6W3T.js → chunk-ALGGS7UH.js} +2 -39
- package/chunks/{chunk-WMPVYQ4P.js → chunk-ARKANCNX.js} +3 -2
- package/chunks/{chunk-HDOH3QYE.js → chunk-ASVORVFT.js} +2 -2
- package/chunks/{chunk-CHB5SLZZ.js → chunk-AUGSSJX3.js} +3 -3
- package/chunks/{chunk-PUVCVELY.js → chunk-B6ABUBYY.js} +4 -4
- package/chunks/{chunk-L4AMBVQG.js → chunk-B6KHOCU7.js} +49 -21
- package/chunks/{chunk-HW4N45EE.js → chunk-B7NUUEXC.js} +38 -11
- package/chunks/{chunk-CD6USWHZ.js → chunk-BBNVFRGD.js} +2 -2
- package/chunks/{chunk-ZN5T4BHI.js → chunk-BPZALHVR.js} +2 -2
- package/chunks/{chunk-VGGOPZUL.js → chunk-C4CXFRKY.js} +12 -5
- package/chunks/{chunk-OFEVLU4C.js → chunk-CARU2RR2.js} +1 -1
- package/chunks/{chunk-SQ2UATK7.js → chunk-CLTWL6HD.js} +11 -11
- package/chunks/{chunk-GLE2YUPU.js → chunk-COH43MRJ.js} +1 -1
- package/chunks/{chunk-E5A7LHNN.js → chunk-CPBF7KYF.js} +1 -1
- package/chunks/{chunk-UWCTAVOD.js → chunk-CR3C7WXL.js} +1 -1
- package/chunks/{chunk-DIWVZ3VM.js → chunk-CSACSGAW.js} +5 -5
- package/chunks/{chunk-5P5XGNYH.js → chunk-CU3L64TP.js} +1 -1
- package/chunks/{chunk-IWKSG2AR.js → chunk-CXAOG665.js} +1 -1
- package/chunks/{chunk-64WXLC72.js → chunk-DJ2GSRLV.js} +1 -1
- package/chunks/chunk-DKXW66XA.js +38 -0
- package/chunks/{chunk-QN5NZ3UQ.js → chunk-DMTGGOSA.js} +2 -2
- package/chunks/{chunk-JZHIQJOE.js → chunk-DMTQY5GY.js} +6 -6
- package/chunks/{chunk-GSHQYYIV.js → chunk-DNKX35GS.js} +6 -26
- package/chunks/{chunk-6IAWPIQ6.js → chunk-DPSWJWZI.js} +4 -3
- package/chunks/{chunk-X2XNQQJI.js → chunk-E2UVIFI2.js} +186 -399
- package/chunks/{chunk-KHDZHZMH.js → chunk-E5Z2AVNV.js} +1 -1
- package/chunks/{chunk-3B26UVCX.js → chunk-E67NFMF4.js} +39 -10
- package/chunks/{chunk-ON3JA3RU.js → chunk-EU3U7USF.js} +7 -9
- package/chunks/{chunk-L46XKEGM.js → chunk-EUNRLYJG.js} +5 -8
- package/chunks/{chunk-OACJLMLD.js → chunk-FBU7WRZI.js} +18 -2
- package/chunks/{chunk-5IFG2VC4.js → chunk-FCMNKVXT.js} +1 -1
- package/chunks/{chunk-A5JOJ77H.js → chunk-FDL4PB5H.js} +38 -15
- package/chunks/{chunk-E7KNELIZ.js → chunk-FSA7ERJ2.js} +2 -2
- package/chunks/{chunk-TI3BWD4D.js → chunk-G6QTKQN4.js} +39 -19
- package/chunks/{chunk-44NROQYV.js → chunk-GDQQRV43.js} +4 -4
- package/chunks/{chunk-O2YT7VB4.js → chunk-GOXKNSDZ.js} +2 -65
- package/chunks/{chunk-V35MD7KN.js → chunk-GRC5HGPI.js} +1 -1
- package/chunks/chunk-GYGGUR4Q.js +253 -0
- package/chunks/{chunk-S6RLAIUR.js → chunk-GYTKQYDB.js} +1 -1
- package/chunks/{chunk-A2X3KLC3.js → chunk-GZXCZHCT.js} +3 -3
- package/chunks/{chunk-K5PGHDBN.js → chunk-H6XPXXMH.js} +1 -1
- package/chunks/{chunk-E7EMCSUG.js → chunk-HE54PGVI.js} +64 -42
- package/chunks/{chunk-KYMBIKIW.js → chunk-HTHUX2T5.js} +1 -1
- package/chunks/{chunk-LQ7TMOCE.js → chunk-HTO4JFDZ.js} +1 -1
- package/chunks/chunk-HZYUNZDQ.js +296 -0
- package/chunks/chunk-IDS7MSUP.js +74 -0
- package/chunks/chunk-J2TDDOSM.js +493 -0
- package/chunks/{chunk-4CGOWHKM.js → chunk-J4MOFEOK.js} +2 -2
- package/chunks/{chunk-22IFUCVR.js → chunk-JESCGQM3.js} +1 -1
- package/chunks/chunk-JR63TOV4.js +91 -0
- package/chunks/chunk-K3PPUB46.js +445 -0
- package/chunks/{chunk-42XGFRJS.js → chunk-KKRTYONM.js} +8 -6
- package/chunks/{chunk-GGQQA4JW.js → chunk-KSO42X3Z.js} +15 -2
- package/chunks/{chunk-MRO43B25.js → chunk-KW7NOTN6.js} +1 -1
- package/chunks/{chunk-54YZOP7P.js → chunk-L573Z2QZ.js} +11894 -5190
- package/chunks/{chunk-TLWA7TPR.js → chunk-L5U3ELZX.js} +2 -2
- package/chunks/{chunk-WHJQ3JUS.js → chunk-LAM6CGP5.js} +10 -10
- package/chunks/{chunk-H6EMK6QK.js → chunk-LQIDP6K5.js} +11913 -5207
- package/chunks/{chunk-MZ7BABX3.js → chunk-LXLTBIDP.js} +44 -7
- package/chunks/{chunk-HLKG6CZN.js → chunk-M5GB774H.js} +1 -1
- package/chunks/{chunk-EEN2TKST.js → chunk-MBJ3D6SF.js} +2 -2
- package/chunks/{chunk-PMFULMLX.js → chunk-MBP3K324.js} +2234 -377
- package/chunks/chunk-MR3PXB6E.js +48 -0
- package/chunks/{chunk-ZE6E424U.js → chunk-N7FCSERB.js} +2 -2
- package/chunks/{chunk-332PWN27.js → chunk-NHDKSOEY.js} +1 -1
- package/chunks/chunk-OATTJGPJ.js +448 -0
- package/chunks/{chunk-UX6OTBVD.js → chunk-OCC3UTWA.js} +2 -2
- package/chunks/{chunk-P7M4GA57.js → chunk-OCPBI7J5.js} +1 -1
- package/chunks/chunk-OJAMDVF5.js +66 -0
- package/chunks/{chunk-IJRL2S3D.js → chunk-OKAIGAYW.js} +6 -6
- package/chunks/{chunk-WQTHLB5T.js → chunk-P3S67A5R.js} +7 -7
- package/chunks/{chunk-FBET5XZ2.js → chunk-PEJWA3QQ.js} +29 -10
- package/chunks/{chunk-J7RCB6N5.js → chunk-PHYCWSDG.js} +2 -2
- package/chunks/{chunk-LAXNEOBG.js → chunk-PMRH4YYW.js} +18 -3
- package/chunks/{chunk-AGHU5VRK.js → chunk-PZL23GTM.js} +1 -1
- package/chunks/{chunk-PC4ZXHU2.js → chunk-Q6TUALBE.js} +3 -3
- package/chunks/{chunk-FXGLL2HL.js → chunk-Q7YDKOGY.js} +1 -1
- package/chunks/{chunk-P3XEEI3X.js → chunk-QABSSDQH.js} +36 -7
- package/chunks/{chunk-XOHNA2S6.js → chunk-QAW7PIHT.js} +3 -3
- package/chunks/{chunk-LGFAYIKX.js → chunk-QHTIBUWB.js} +1 -1
- package/chunks/{chunk-P3MYAZBY.js → chunk-QMGX2KO2.js} +1 -1
- package/chunks/{chunk-Z3I3QJK3.js → chunk-QRUIS3DN.js} +1 -1
- package/chunks/{chunk-ITOGNELQ.js → chunk-QSWDGAIC.js} +2 -2
- package/chunks/{chunk-GHOTR7HL.js → chunk-QUPXZXLV.js} +1 -1
- package/chunks/{chunk-W7EEOR7D.js → chunk-RCEEXIOO.js} +8 -6
- package/chunks/{chunk-2EM7ECZD.js → chunk-RJL5T4WJ.js} +281 -65
- package/chunks/{chunk-TLRYABYP.js → chunk-RKUWKYED.js} +1 -1
- package/chunks/{chunk-RNBYOUGV.js → chunk-RXFQM6FQ.js} +1 -1
- package/chunks/{chunk-JRQ7EVGE.js → chunk-S2QXYLUB.js} +2 -2
- package/chunks/{chunk-QXPI7FEC.js → chunk-S3TWXGKA.js} +4 -4
- package/chunks/{chunk-O33TBKDC.js → chunk-SE74CIZD.js} +155 -19
- package/chunks/{chunk-FV7425LN.js → chunk-SPJQO2CE.js} +18 -5
- package/chunks/{chunk-3GNOQZDC.js → chunk-SSFDPGFN.js} +11866 -11542
- package/chunks/{chunk-DCZWC4PF.js → chunk-SUWGUGAD.js} +5 -5
- package/chunks/{chunk-IBY3Q3HG.js → chunk-SXU3KKNI.js} +963 -181
- package/chunks/{chunk-MLZQVCF3.js → chunk-SZRN75WQ.js} +1 -1
- package/chunks/{chunk-M7S4GK5Z.js → chunk-T2L6SGQY.js} +115 -29
- package/chunks/{chunk-7RYW5LQV.js → chunk-T2NCM2ET.js} +2 -2
- package/chunks/{chunk-JPALE3PA.js → chunk-T5C2OUCI.js} +6 -6
- package/chunks/{chunk-BUZ6HGL4.js → chunk-T7FSRWQ5.js} +248 -55
- package/chunks/{chunk-Z2Z3GUXZ.js → chunk-TB6UDU4T.js} +1 -1
- package/chunks/{chunk-EXPMGZZV.js → chunk-TEGEBB2I.js} +1 -1
- package/chunks/{chunk-MX2YXRER.js → chunk-TJTKSVIV.js} +1 -1
- package/chunks/{chunk-CCGOFQV3.js → chunk-TQBODCFD.js} +8 -7
- package/chunks/chunk-TV6K2FB4.js +224 -0
- package/chunks/{chunk-5MBO76SL.js → chunk-TXY2C3D2.js} +3 -3
- package/chunks/{chunk-H6BD2ELD.js → chunk-TYAMGABM.js} +2 -2
- package/chunks/{chunk-QYNNN7BK.js → chunk-TYLOFD2U.js} +2 -2
- package/chunks/{chunk-VRDMOSQS.js → chunk-UDXSXLER.js} +2 -2
- package/chunks/{chunk-UXEW557D.js → chunk-UI3W56WF.js} +3 -3
- package/chunks/{chunk-CJCKDMWO.js → chunk-URK542T4.js} +1 -1
- package/chunks/{channel-worker-supervisor-NZQUOEFJ.js → chunk-URU5UEK6.js} +190 -34
- package/chunks/{chunk-AHNXYU4O.js → chunk-V6WHFGST.js} +1 -1
- package/chunks/chunk-V75IOTWF.js +71 -0
- package/chunks/{chunk-ZTQ26VBE.js → chunk-VDDGDZMA.js} +1 -1
- package/chunks/{chunk-OMX7CUOE.js → chunk-VGC4I5JJ.js} +1 -1
- package/chunks/{chunk-43W4YSO6.js → chunk-VJNBRRZG.js} +2 -2
- package/chunks/{chunk-ER3BKOLB.js → chunk-W7FJ3N32.js} +1 -1
- package/chunks/{chunk-3HX5LZ6R.js → chunk-WBL3FJEU.js} +2 -2
- package/chunks/{chunk-7LTB54MK.js → chunk-WIEO4CWB.js} +2 -2
- package/chunks/{chunk-BMFMJINR.js → chunk-WL4L7EZH.js} +1 -1
- package/chunks/{chunk-6VK6FIMQ.js → chunk-WM5HY72H.js} +415 -379
- package/chunks/{chunk-BOBRZZKD.js → chunk-WN4D7YCI.js} +5 -5
- package/chunks/{chunk-DHOLNQLC.js → chunk-WWQ3QIJS.js} +60 -40
- package/chunks/{chunk-FEJ2FZ3U.js → chunk-WX6SD4IQ.js} +2 -2
- package/chunks/{chunk-DICGXFAI.js → chunk-X7EBAABW.js} +11 -9
- package/chunks/{chunk-3RW4AZJV.js → chunk-XFSFZCM5.js} +1 -1
- package/chunks/{chunk-YHKAK72D.js → chunk-XHW5VUIQ.js} +102 -16
- package/chunks/{chunk-2MPVVENX.js → chunk-XU457J4V.js} +2 -2
- package/chunks/{chunk-SIUQ3YYX.js → chunk-XVNQMZ2I.js} +1 -1
- package/chunks/{chunk-SYCJMSIJ.js → chunk-XWRJCPHC.js} +1 -1
- package/chunks/{chunk-SUAKHHK7.js → chunk-Y66VOBRP.js} +3 -3
- package/chunks/chunk-YAF2MQZ6.js +19 -0
- package/chunks/{chunk-FQNC62B2.js → chunk-YH4J5XI3.js} +11 -11
- package/chunks/chunk-YHN5SUIJ.js +219 -0
- package/chunks/{chunk-BR4QREVK.js → chunk-YQ3U5MUC.js} +1 -1
- package/chunks/{chunk-Y6Z2O3WR.js → chunk-YUZI3WAC.js} +1 -1
- package/chunks/{chunk-II73RK2S.js → chunk-YVEDCAUE.js} +1 -1
- package/chunks/{chunk-XYR5RUA5.js → chunk-YWUK7OS7.js} +10 -3
- package/chunks/{chunk-27BHARDE.js → chunk-Z56JO4JZ.js} +2124 -30
- package/chunks/{chunk-TSPB77TG.js → chunk-ZLM3KXBT.js} +1015 -2967
- package/chunks/{chunk-AHNJGLFV.js → chunk-ZPAHLFZU.js} +3 -3
- package/chunks/chunk-ZRKBI3DP.js +34 -0
- package/chunks/cli-entry-path-4VJ3Y6T2.js +10 -0
- package/chunks/{computer-use-WMY3UOBX.js → computer-use-DIP5BWXP.js} +51 -50
- package/chunks/config-utils-CFT33LTP.js +24 -0
- package/chunks/contextCommand-QU4GJWWD.js +69 -0
- package/chunks/create-sub-session-TCLIYVGR.js +376 -0
- package/chunks/create-sub-session-WNX2OQVX.js +207 -0
- package/chunks/{cron-create-JSXEIPVS.js → cron-create-36TIFKRT.js} +9 -9
- package/chunks/{cron-delete-OIFVEPGU.js → cron-delete-OQD3WULU.js} +7 -7
- package/chunks/{cron-list-D4ZX4IOE.js → cron-list-4533T2FH.js} +14 -10
- package/chunks/{daemon-WPAENEBW.js → daemon-CEZ27OH4.js} +734 -24
- package/chunks/daemon-status-provider-SIBFMLBQ.js +77 -0
- package/chunks/{de-ZFPPQVSF.js → de-2VCDRDGU.js} +68 -6
- package/chunks/{devtools-FM6GJPYG.js → devtools-4QFYJT6U.js} +3 -3
- package/chunks/{dist-E6UANPIM.js → dist-3V3ZV6ML.js} +1011 -197
- package/chunks/{dist-SCFLLYMK.js → dist-ERCPDVA6.js} +12 -11
- package/chunks/{dist-Z34QPAQW.js → dist-HNN7DR2L.js} +529 -79
- package/chunks/{dist-O2IRTRPP.js → dist-JZE7F6YR.js} +10 -10
- package/chunks/{dist-BEXOZXLQ.js → dist-MOEC47TR.js} +36 -15
- package/chunks/{dist-H2AEJCZ5.js → dist-PHEPJLXD.js} +5 -5
- package/chunks/{dist-63IS3ZMI.js → dist-PZV5RKM6.js} +4 -4
- package/chunks/earlyInputCapture-L66BEG2C.js +70 -0
- package/chunks/{edit-OTYWAXGP.js → edit-Y5LAJSST.js} +52 -51
- package/chunks/{en-N4EPZAQI.js → en-NJCA3TAA.js} +78 -6
- package/chunks/{enter-worktree-HNYBDVCX.js → enter-worktree-X5LML7T4.js} +51 -50
- package/chunks/{enterPlanMode-CJCNGT63.js → enterPlanMode-XWF32QOW.js} +67 -51
- package/chunks/environment-YVMA5F4I.js +90 -0
- package/chunks/errors-4Y5SUAOC.js +76 -0
- package/chunks/{exit-worktree-DUUKOE3X.js → exit-worktree-SFHU7XYC.js} +51 -50
- package/chunks/{exitPlanMode-AMMSXOAJ.js → exitPlanMode-FP3NAN6E.js} +52 -51
- package/chunks/{fast-path-OV6NIP3K.js → fast-path-ZJNFFCBM.js} +8 -8
- package/chunks/{fast-path-settings-7RIFI3PK.js → fast-path-settings-DAOVFADC.js} +8 -6
- package/chunks/{fileFromPath-IBEHA3CO.js → fileFromPath-UDALK7FM.js} +3 -3
- package/chunks/{fr-5WWMY53B.js → fr-5F3E7WKD.js} +68 -6
- package/chunks/{gemini-NQ3WWBKB.js → gemini-5CAB22BI.js} +122 -109
- package/chunks/{geminiContentGenerator-CDUNEJQE.js → geminiContentGenerator-GE3HPIFB.js} +9 -9
- package/chunks/{getMachineId-bsd-4CASPIU4.js → getMachineId-bsd-EXV7SWPA.js} +3 -3
- package/chunks/{getMachineId-darwin-HPQPEMZR.js → getMachineId-darwin-IUOMFXU3.js} +3 -3
- package/chunks/{getMachineId-linux-AUARKYHL.js → getMachineId-linux-K7XJYFHL.js} +2 -2
- package/chunks/{getMachineId-unsupported-S32ZDA2T.js → getMachineId-unsupported-EA5FDRJ6.js} +2 -2
- package/chunks/{getMachineId-win-4EFLHYIJ.js → getMachineId-win-KBA6RAI5.js} +3 -3
- package/chunks/{glob-ROV3YS4R.js → glob-YPACZAEL.js} +98 -75
- package/chunks/{grep-NRITKDCD.js → grep-IPR4XW37.js} +51 -50
- package/chunks/handleAutoUpdate-P2KEP56V.js +70 -0
- package/chunks/i18n-BRCT66AA.js +85 -0
- package/chunks/initializer-34HXSK3A.js +74 -0
- package/chunks/installationInfo-WOTDQMSC.js +66 -0
- package/chunks/{ja-CUHZOLEJ.js → ja-66J6B53L.js} +69 -7
- package/chunks/{keychain-token-storage-UJV5XP4Z.js → keychain-token-storage-AU22CQI6.js} +4 -4
- package/chunks/{kittyProtocolDetector-OJRCJLIU.js → kittyProtocolDetector-HCNNKJTI.js} +2 -2
- package/chunks/list-XOGP7UPP.js +77 -0
- package/chunks/loadedSettingsAdapter-L4YKGU6F.js +71 -0
- package/chunks/{loop-wakeup-OHWEMFP5.js → loop-wakeup-MVUKDVCP.js} +10 -10
- package/chunks/{lowlight-FYAAUU5J.js → lowlight-J2OZNPCA.js} +1 -1
- package/chunks/{ls-7MFU2QYW.js → ls-RXNIAQDE.js} +6 -6
- package/chunks/{lsp-XHDTPTGV.js → lsp-HB5LM5IL.js} +4 -4
- package/chunks/mcp-HH7DIP7Y.js +71 -0
- package/chunks/{monitor-FL2ZO33W.js → monitor-25DEBT6U.js} +51 -50
- package/chunks/{multipart-parser-AJ4WASWR.js → multipart-parser-AWZKXSQN.js} +3 -3
- package/chunks/nonInteractiveCli-CT3VSSLK.js +130 -0
- package/chunks/{notebook-edit-6PULTHL5.js → notebook-edit-TAVXSWQ6.js} +52 -51
- package/chunks/openaiContentGenerator-6I7DKUAN.js +56 -0
- package/chunks/pidfile-SIQGCFLZ.js +74 -0
- package/chunks/{pt-OLYN42DS.js → pt-TFZO5Y6T.js} +68 -6
- package/chunks/{qwenContentGenerator-NX2E7PB7.js → qwenContentGenerator-5DDIXI2N.js} +53 -52
- package/chunks/{qwenOAuth2-ZV7YLMND.js → qwenOAuth2-LEYOU7RU.js} +9 -9
- package/chunks/read-file-WDOAYRFU.js +30 -0
- package/chunks/{read-mcp-resource-CNQHBSJM.js → read-mcp-resource-6LRTZKXI.js} +5 -5
- package/chunks/{read-package-up-ER5OJUGP.js → read-package-up-TCM6I7S2.js} +2 -2
- package/chunks/{record-artifact-SQ2OKRJW.js → record-artifact-PMDTY4OS.js} +4 -4
- package/chunks/ripGrep-MI7PHN3Q.js +61 -0
- package/chunks/{ru-LDM3GWVQ.js → ru-4L4LFHIT.js} +68 -6
- package/chunks/{run-qwen-serve-JK2DL7PI.js → run-qwen-serve-PNTYF3RE.js} +1289 -256
- package/chunks/runtime-V3FBMUTG.js +100 -0
- package/chunks/{scheduler-O4IGVZKK.js → scheduler-4TAUIJBM.js} +52 -51
- package/chunks/{send-message-76GT3JMC.js → send-message-SR4WSXP2.js} +7 -7
- package/chunks/serve-WB2TR7XM.js +77 -0
- package/chunks/{server-SGNPKX2O.js → server-AF6LNFPK.js} +8094 -2800
- package/chunks/{session-5BNM25EZ.js → session-BIGK4NRW.js} +341 -135
- package/chunks/settings-IXF5FIQO.js +121 -0
- package/chunks/shell-5VWJ2PPG.js +69 -0
- package/chunks/{skill-I22QK5XS.js → skill-SI667Y3B.js} +24 -24
- package/chunks/spawnChannel-IKX6DD7J.js +71 -0
- package/chunks/{src-BBQSM46M.js → src-55DZWDAK.js} +151 -52
- package/chunks/{src-7XL4G4DC.js → src-VLI3TKEY.js} +4 -4
- package/chunks/standalone-update-MHLSFHE6.js +80 -0
- package/chunks/{startInteractiveUI-JII36UGN.js → startInteractiveUI-V2EDWLAX.js} +2239 -1846
- package/chunks/stdioHelpers-UMY72QRP.js +14 -0
- package/chunks/{syntheticOutput-F7LSDCAR.js → syntheticOutput-YKFNUQZD.js} +5 -5
- package/chunks/task-create-NUFOHU53.js +23 -0
- package/chunks/{task-list-TGGJX7EA.js → task-list-Z2IKQY3S.js} +11 -10
- package/chunks/{task-stop-W7NGTMYQ.js → task-stop-KQFIVQTJ.js} +4 -4
- package/chunks/{task-update-XYWMHJGJ.js → task-update-HKADXSTD.js} +13 -12
- package/chunks/{team-create-A7NUU5AQ.js → team-create-IZAMLBJS.js} +51 -50
- package/chunks/{team-delete-UHQQ2QQX.js → team-delete-SDNTGZLG.js} +11 -10
- package/chunks/{team-plan-approval-TOQRJ2KI.js → team-plan-approval-3R4RCKCP.js} +51 -50
- package/chunks/theme-manager-LCOXZ5DO.js +65 -0
- package/chunks/{todoWrite-C4ZAMSR3.js → todoWrite-YNXB27GB.js} +6 -6
- package/chunks/{tool-search-SZ4EFS2T.js → tool-search-NYNCD5LF.js} +24 -24
- package/chunks/total-session-admission-PJWGOMQE.js +73 -0
- package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
- package/chunks/trustedFolders-DOJDHNYP.js +81 -0
- package/chunks/{types-QX5C3CHJ.js → types-JNKGKUJT.js} +2 -2
- package/chunks/updateCheck-ZXL66KIG.js +70 -0
- package/chunks/updateEventEmitter-5MKC7BLQ.js +10 -0
- package/chunks/validateNonInterActiveAuth-JSNJZCYY.js +195 -0
- package/chunks/{version-NO2XSNNP.js → version-3NLBENG5.js} +3 -3
- package/chunks/{web-fetch-UYGMOHW4.js → web-fetch-ZSPR3PRR.js} +8 -8
- package/chunks/{workflow-WO2H6NRI.js → workflow-BQYLF7XP.js} +52 -51
- package/chunks/workspace-providers-status-FA2DGEZW.js +74 -0
- package/chunks/workspace-registration-store-TARTAGMI.js +27 -0
- package/chunks/workspace-registry-AGE7WAXX.js +77 -0
- package/chunks/workspace-service-ERC5VR2B.js +83 -0
- package/chunks/workspace-skills-status-FKYWGNCN.js +73 -0
- package/chunks/{write-file-PX2Z7IBE.js → write-file-S47KSK7Z.js} +52 -51
- package/chunks/{yargs-B64EYTCF.js → yargs-6H2AUULL.js} +2 -2
- package/chunks/{zh-J4F6QWQV.js → zh-FSAH32JB.js} +79 -7
- package/chunks/{zh-TW-XVDWOLSW.js → zh-TW-D2YIE2LO.js} +79 -7
- package/cli.js +18 -17
- package/locales/ca.js +91 -7
- package/locales/de.js +90 -7
- package/locales/en.js +109 -7
- package/locales/fr.js +91 -7
- package/locales/ja.js +93 -7
- package/locales/pt.js +90 -7
- package/locales/ru.js +90 -7
- package/locales/zh-TW.js +106 -7
- package/locales/zh.js +106 -7
- package/package.json +3 -6
- package/web-shell/assets/{arc-BWyoJpY2.js → arc-Zj4EkBUY.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BT0mGrz2.js → architectureDiagram-3BPJPVTR-DAk1Ua3Y.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-BLgUWvyf.js → blockDiagram-GPEHLZMM-DBNqUthM.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DYx9M7oU.js → c4Diagram-AAUBKEIU-Dq5QGJ53.js} +1 -1
- package/web-shell/assets/channel-DWfYijFS.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-CfMHWbuZ.js → chunk-2J33WTMH-DY0AeGru.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-B1URoqEV.js → chunk-4BX2VUAB-COX3OyIi.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DAIaM4QF.js → chunk-55IACEB6-Csoyddbh.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-B2X34knw.js → chunk-727SXJPM-BJPONdxX.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-Cif-zLTQ.js → chunk-AQP2D5EJ-syLVH6fg.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-H18WCXdY.js → chunk-FMBD7UC4-Cfm59Nhw.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-YFtetHi0.js → chunk-ND2GUHAM-DZf6tAqS.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-By2hiH3r.js → chunk-QZHKN3VN-DKBp_v5q.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-DDht-78J.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DDht-78J.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-VrcnnLZu.js → cose-bilkent-S5V4N54A-DUU3mMQ5.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-CGo-IaVV.js → dagre-BM42HDAG-BUgNfbh-.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-Dl4QjzIB.js → diagram-2AECGRRQ-DT7MVfAg.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-qMLmsO0u.js → diagram-5GNKFQAL-Cv4YG-ec.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CHlmuxPI.js → diagram-KO2AKTUF-BAe9LLkn.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BUwU3GwT.js → diagram-LMA3HP47-DW8wqTIP.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-HEhwPDUM.js → diagram-OG6HWLK6-CmkuWbaK.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-1n0llBmM.js → erDiagram-TEJ5UH35-DwvdHjZ9.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BN74uMnt.js → flowDiagram-I6XJVG4X-CSsXrhW_.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BoOq78i3.js → ganttDiagram-6RSMTGT7-BtuznCdi.js} +3 -3
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CN8b00c8.js → gitGraphDiagram-PVQCEYII-DGmAm06g.js} +1 -1
- package/web-shell/assets/index-B9Xwf4OS.css +5 -0
- package/web-shell/assets/index-BEtz1cvN.js +3 -0
- package/web-shell/assets/index-BUkM4ZXX.js +1088 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CCurnIna.js → infoDiagram-5YYISTIA-OAiZ1q0K.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-AwuRqdUP.js → ishikawaDiagram-YF4QCWOH-DyK0KTIT.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-B7IICk-E.js → journeyDiagram-JHISSGLW-DzYJlwfO.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-BYF0OKhx.js → kanban-definition-UN3LZRKU-CU_tcDwi.js} +1 -1
- package/web-shell/assets/{linear-GWWguGfD.js → linear-DvZXjF17.js} +1 -1
- package/web-shell/assets/{mermaid.core-JqtkxvCl.js → mermaid.core-_ZFEQlOl.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-B0MmHsZ6.js → mindmap-definition-RKZ34NQL-Or4p64HB.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-DhImUZLQ.js → pieDiagram-4H26LBE5-lXE-zZ6b.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DGeSC3DT.js → quadrantDiagram-W4KKPZXB-DUXb9mUV.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-DkspY6Re.js → requirementDiagram-4Y6WPE33-D_10uHfo.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CaOofS2x.js → sankeyDiagram-5OEKKPKP-E8c0fPqe.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DFQ_kFnN.js → sequenceDiagram-3UESZ5HK-CJMtFttK.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-D3snw0Tz.js → stateDiagram-AJRCARHV-DhbviRbB.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CntljfwW.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-l4zH8nLM.js → timeline-definition-PNZ67QCA-CM5yMkFK.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BnRlA98M.js → vennDiagram-CIIHVFJN-BCi-zWNN.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-BS0xUdmd.js → wardley-L42UT6IY-BJ_yJNjJ.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DKGBUWyQ.js → wardleyDiagram-YWT4CUSO-TjtLk-qN.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-DVb2HuOB.js → xychartDiagram-2RQKCTM6-D1TjyoQ3.js} +1 -1
- package/web-shell/index.html +16 -4
- package/chunks/MaxSizedBox-5DT2SD7B.js +0 -71
- package/chunks/agent-H2DGKS77.js +0 -68
- package/chunks/agent-headless-KFMFIT6J.js +0 -62
- package/chunks/bridge-NA3ZQQKJ.js +0 -78
- package/chunks/chunk-6SHO7WFF.js +0 -79
- package/chunks/chunk-IFEWJXFS.js +0 -37
- package/chunks/chunk-XNXVCNAT.js +0 -88
- package/chunks/contextCommand-LXFZRP4L.js +0 -68
- package/chunks/daemon-status-provider-GJRXY5EN.js +0 -76
- package/chunks/earlyInputCapture-KNOYZ4MJ.js +0 -69
- package/chunks/environment-ATFTYMLZ.js +0 -88
- package/chunks/errors-A54HAADA.js +0 -75
- package/chunks/handleAutoUpdate-CEZJAARW.js +0 -65
- package/chunks/initializer-BRFJKRRX.js +0 -71
- package/chunks/list-KVHF7O4X.js +0 -73
- package/chunks/loadedSettingsAdapter-LL5PSFKX.js +0 -68
- package/chunks/mcp-3GCXRTOQ.js +0 -68
- package/chunks/nonInteractiveCli-PTQI3DV6.js +0 -119
- package/chunks/openaiContentGenerator-YE42PKCY.js +0 -56
- package/chunks/pidfile-NZYSCFRK.js +0 -73
- package/chunks/read-file-33XGP5HF.js +0 -30
- package/chunks/ripGrep-QWZLGTAN.js +0 -60
- package/chunks/serve-JTMIGANH.js +0 -74
- package/chunks/settings-3MI4XXP6.js +0 -118
- package/chunks/shell-YJKBE67T.js +0 -68
- package/chunks/spawnChannel-UNV6W4DU.js +0 -70
- package/chunks/task-create-WCHTB435.js +0 -22
- package/chunks/theme-manager-WZ4RRMMB.js +0 -64
- package/chunks/total-session-admission-ULXJWXFV.js +0 -72
- package/chunks/trustedFolders-LAZZPZ3D.js +0 -79
- package/chunks/updateCheck-KONLM73X.js +0 -65
- package/chunks/validateNonInterActiveAuth-MPKSRCXD.js +0 -184
- package/chunks/workspace-providers-status-3W7E7DFW.js +0 -71
- package/chunks/workspace-registry-SXJZNN3O.js +0 -74
- package/chunks/workspace-service-CZRQZ4Q4.js +0 -80
- package/chunks/workspace-skills-status-K7WFREPD.js +0 -70
- package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +0 -35
- package/node_modules/@qwen-code/audio-capture/dist/index.js +0 -48
- package/node_modules/@qwen-code/audio-capture/dist/index.js.map +0 -1
- package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +0 -7
- package/node_modules/@qwen-code/audio-capture/dist/platform.js +0 -18
- package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +0 -1
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +0 -21
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +0 -58
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +0 -5
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +0 -84
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +0 -19
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +0 -6
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +0 -207
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +0 -7
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +0 -43
- package/node_modules/@qwen-code/audio-capture/package.json +0 -30
- 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/web-shell/assets/channel-wmPUGHtg.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +0 -1
- package/web-shell/assets/index-CNwoO1Cn.js +0 -783
- package/web-shell/assets/index-CWQ0z6kZ.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +0 -1
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
CHANNEL_CONTROL_DEFAULT_TIMEOUT_MS
|
|
5
|
+
} from "./chunk-5HBA2Z7V.js";
|
|
3
6
|
import {
|
|
4
7
|
init_esbuild_shims
|
|
5
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-5O2XNYP6.js";
|
|
6
9
|
import {
|
|
7
10
|
__name
|
|
8
11
|
} from "./chunk-J2S4EL5Y.js";
|
|
@@ -339,10 +342,12 @@ var RestSseTransport = class {
|
|
|
339
342
|
_disposed = false;
|
|
340
343
|
type = "rest";
|
|
341
344
|
supportsReplay = true;
|
|
345
|
+
restFetch;
|
|
342
346
|
constructor(baseUrl, token, fetchFn) {
|
|
343
347
|
this.baseUrl = baseUrl;
|
|
344
348
|
this.token = token;
|
|
345
349
|
this._fetch = fetchFn;
|
|
350
|
+
this.restFetch = fetchFn;
|
|
346
351
|
}
|
|
347
352
|
get connected() {
|
|
348
353
|
return !this._disposed;
|
|
@@ -567,7 +572,7 @@ var DaemonClient = class {
|
|
|
567
572
|
constructor(opts) {
|
|
568
573
|
this.baseUrl = stripTrailingSlashes(opts.baseUrl);
|
|
569
574
|
this.token = opts.token ?? readTokenFromEnv();
|
|
570
|
-
this._fetch = opts.fetch ?? globalThis.fetch.bind(globalThis);
|
|
575
|
+
this._fetch = opts.fetch ?? opts.transport?.restFetch ?? globalThis.fetch.bind(globalThis);
|
|
571
576
|
const raw = opts.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;
|
|
572
577
|
this.fetchTimeoutMs = Number.isFinite(raw) && raw > 0 ? raw : 0;
|
|
573
578
|
this.promptLimit = normalizePendingPromptLimit(
|
|
@@ -683,9 +688,51 @@ var DaemonClient = class {
|
|
|
683
688
|
if (!res.ok) throw await this.failOnError(res, label);
|
|
684
689
|
return await res.json();
|
|
685
690
|
},
|
|
691
|
+
opts.timeoutMs,
|
|
692
|
+
opts.mode
|
|
693
|
+
);
|
|
694
|
+
}
|
|
695
|
+
/** @internal */
|
|
696
|
+
async workspaceJsonRequest(workspaceSelector, path, label, opts = {}) {
|
|
697
|
+
return await this.jsonRequest(
|
|
698
|
+
`/workspaces/${workspaceSelector}${path}`,
|
|
699
|
+
label,
|
|
700
|
+
opts
|
|
701
|
+
);
|
|
702
|
+
}
|
|
703
|
+
/** @internal */
|
|
704
|
+
async workspaceNoContentRequest(workspaceSelector, path, label, opts = {}) {
|
|
705
|
+
return await this.fetchWithTimeout(
|
|
706
|
+
`${this.baseUrl}/workspaces/${workspaceSelector}${path}`,
|
|
707
|
+
{
|
|
708
|
+
...opts.method ? { method: opts.method } : {},
|
|
709
|
+
headers: this.headers({}, opts.clientId)
|
|
710
|
+
},
|
|
711
|
+
async (res) => {
|
|
712
|
+
if (res.status === 204) {
|
|
713
|
+
try {
|
|
714
|
+
await res.body?.cancel();
|
|
715
|
+
} catch {
|
|
716
|
+
}
|
|
717
|
+
return;
|
|
718
|
+
}
|
|
719
|
+
if (res.status === 404 && opts.okNotFoundCode) {
|
|
720
|
+
const err = await this.failOnError(res, label);
|
|
721
|
+
const body = err.body;
|
|
722
|
+
if (body?.code === opts.okNotFoundCode) return;
|
|
723
|
+
throw err;
|
|
724
|
+
}
|
|
725
|
+
throw await this.failOnError(res, label);
|
|
726
|
+
},
|
|
686
727
|
opts.timeoutMs
|
|
687
728
|
);
|
|
688
729
|
}
|
|
730
|
+
workspaceById(workspaceId) {
|
|
731
|
+
return new WorkspaceDaemonClient(this, urlEncode(workspaceId));
|
|
732
|
+
}
|
|
733
|
+
workspaceByCwd(workspaceCwd) {
|
|
734
|
+
return new WorkspaceDaemonClient(this, urlEncode(workspaceCwd));
|
|
735
|
+
}
|
|
689
736
|
// -- Lifecycle / discovery ---------------------------------------------
|
|
690
737
|
async health() {
|
|
691
738
|
return await this.fetchWithTimeout(
|
|
@@ -748,6 +795,13 @@ var DaemonClient = class {
|
|
|
748
795
|
}
|
|
749
796
|
);
|
|
750
797
|
}
|
|
798
|
+
async workspaceGit() {
|
|
799
|
+
return await this.jsonRequest(
|
|
800
|
+
"/workspace/git",
|
|
801
|
+
"GET /workspace/git",
|
|
802
|
+
{ mode: "rest" }
|
|
803
|
+
);
|
|
804
|
+
}
|
|
751
805
|
async workspaceMcpTools(serverName) {
|
|
752
806
|
return await this.fetchWithTimeout(
|
|
753
807
|
`${this.baseUrl}/workspace/mcp/${urlEncode(serverName)}/tools`,
|
|
@@ -787,6 +841,33 @@ var DaemonClient = class {
|
|
|
787
841
|
}
|
|
788
842
|
);
|
|
789
843
|
}
|
|
844
|
+
async workspaceAcpPreheat(timeoutMs) {
|
|
845
|
+
const serverBudgetMs = timeoutMs ?? 5e3;
|
|
846
|
+
const suffix = timeoutMs !== void 0 ? `?timeoutMs=${encodeURIComponent(timeoutMs)}` : "";
|
|
847
|
+
return await this.fetchWithTimeout(
|
|
848
|
+
`${this.baseUrl}/workspace/acp/preheat${suffix}`,
|
|
849
|
+
{ method: "POST", headers: this.headers() },
|
|
850
|
+
async (res) => {
|
|
851
|
+
if (!res.ok) {
|
|
852
|
+
throw await this.failOnError(res, "POST /workspace/acp/preheat");
|
|
853
|
+
}
|
|
854
|
+
return await res.json();
|
|
855
|
+
},
|
|
856
|
+
serverBudgetMs + 2e3
|
|
857
|
+
);
|
|
858
|
+
}
|
|
859
|
+
async workspaceAcpStatus() {
|
|
860
|
+
return await this.fetchWithTimeout(
|
|
861
|
+
`${this.baseUrl}/workspace/acp/status`,
|
|
862
|
+
{ headers: this.headers() },
|
|
863
|
+
async (res) => {
|
|
864
|
+
if (!res.ok) {
|
|
865
|
+
throw await this.failOnError(res, "GET /workspace/acp/status");
|
|
866
|
+
}
|
|
867
|
+
return await res.json();
|
|
868
|
+
}
|
|
869
|
+
);
|
|
870
|
+
}
|
|
790
871
|
async workspaceProviders() {
|
|
791
872
|
return await this.fetchWithTimeout(
|
|
792
873
|
`${this.baseUrl}/workspace/providers`,
|
|
@@ -1279,7 +1360,8 @@ var DaemonClient = class {
|
|
|
1279
1360
|
// invalid_session_scope` surface the bug. Same shape the
|
|
1280
1361
|
// bridge's own validation uses (`httpAcpBridge.ts:
|
|
1281
1362
|
// spawnOrAttach`); SDK should be a transparent layer here.
|
|
1282
|
-
...req.sessionScope !== void 0 ? { sessionScope: req.sessionScope } : {}
|
|
1363
|
+
...req.sessionScope !== void 0 ? { sessionScope: req.sessionScope } : {},
|
|
1364
|
+
...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {}
|
|
1283
1365
|
})
|
|
1284
1366
|
},
|
|
1285
1367
|
async (res) => {
|
|
@@ -1289,8 +1371,8 @@ var DaemonClient = class {
|
|
|
1289
1371
|
);
|
|
1290
1372
|
}
|
|
1291
1373
|
/**
|
|
1292
|
-
* Enumerate
|
|
1293
|
-
*
|
|
1374
|
+
* Enumerate the session catalog for a workspace. Used by session-picker UIs.
|
|
1375
|
+
* Returns an empty list (not 404) when the workspace has no sessions.
|
|
1294
1376
|
*/
|
|
1295
1377
|
async listWorkspaceSessions(workspaceCwd, options) {
|
|
1296
1378
|
const page = await this.listWorkspaceSessionsPage(workspaceCwd, options);
|
|
@@ -1320,6 +1402,9 @@ var DaemonClient = class {
|
|
|
1320
1402
|
if (options?.group !== void 0) {
|
|
1321
1403
|
query.set("group", options.group);
|
|
1322
1404
|
}
|
|
1405
|
+
if (options?.parentSessionId !== void 0) {
|
|
1406
|
+
query.set("parentSessionId", options.parentSessionId);
|
|
1407
|
+
}
|
|
1323
1408
|
return await this.jsonRequest(
|
|
1324
1409
|
`/workspace/${urlEncode(workspaceCwd)}/sessions?${query.toString()}`,
|
|
1325
1410
|
"GET /workspace/sessions"
|
|
@@ -1390,6 +1475,20 @@ var DaemonClient = class {
|
|
|
1390
1475
|
"rest"
|
|
1391
1476
|
);
|
|
1392
1477
|
}
|
|
1478
|
+
async getSessionTranscriptPage(sessionId, opts = {}) {
|
|
1479
|
+
const params = new URLSearchParams();
|
|
1480
|
+
if (opts.cursor !== void 0) params.set("cursor", opts.cursor);
|
|
1481
|
+
if (opts.limit !== void 0) params.set("limit", String(opts.limit));
|
|
1482
|
+
const query = params.toString();
|
|
1483
|
+
return await this.jsonRequest(
|
|
1484
|
+
`/session/${urlEncode(sessionId)}/transcript${query ? `?${query}` : ""}`,
|
|
1485
|
+
"GET /session/:id/transcript",
|
|
1486
|
+
{
|
|
1487
|
+
clientId: opts.clientId,
|
|
1488
|
+
mode: "rest"
|
|
1489
|
+
}
|
|
1490
|
+
);
|
|
1491
|
+
}
|
|
1393
1492
|
async resumeSession(sessionId, req = {}, clientId) {
|
|
1394
1493
|
return this.restoreSession("resume", sessionId, req, clientId);
|
|
1395
1494
|
}
|
|
@@ -1437,6 +1536,21 @@ var DaemonClient = class {
|
|
|
1437
1536
|
}
|
|
1438
1537
|
);
|
|
1439
1538
|
}
|
|
1539
|
+
/**
|
|
1540
|
+
* Read the current in-memory runtime status for one live daemon session.
|
|
1541
|
+
*/
|
|
1542
|
+
async sessionStatus(sessionId, clientId) {
|
|
1543
|
+
return await this.fetchWithTimeout(
|
|
1544
|
+
`${this.baseUrl}/session/${urlEncode(sessionId)}/status`,
|
|
1545
|
+
{ headers: this.headers({}, clientId) },
|
|
1546
|
+
async (res) => {
|
|
1547
|
+
if (!res.ok) {
|
|
1548
|
+
throw await this.failOnError(res, "GET /session/:id/status");
|
|
1549
|
+
}
|
|
1550
|
+
return await res.json();
|
|
1551
|
+
}
|
|
1552
|
+
);
|
|
1553
|
+
}
|
|
1440
1554
|
async sessionContextUsage(sessionId, opts = {}, clientId) {
|
|
1441
1555
|
const params = new URLSearchParams();
|
|
1442
1556
|
if (opts.detail === true) params.set("detail", "true");
|
|
@@ -1551,7 +1665,10 @@ var DaemonClient = class {
|
|
|
1551
1665
|
{
|
|
1552
1666
|
method: "POST",
|
|
1553
1667
|
headers: this.headers({ "Content-Type": "application/json" }, clientId),
|
|
1554
|
-
body: JSON.stringify({
|
|
1668
|
+
body: JSON.stringify({
|
|
1669
|
+
cwd: req.workspaceCwd,
|
|
1670
|
+
...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {}
|
|
1671
|
+
})
|
|
1555
1672
|
},
|
|
1556
1673
|
async (res) => {
|
|
1557
1674
|
if (!res.ok) {
|
|
@@ -1610,7 +1727,9 @@ var DaemonClient = class {
|
|
|
1610
1727
|
);
|
|
1611
1728
|
}
|
|
1612
1729
|
return await res.json();
|
|
1613
|
-
}
|
|
1730
|
+
},
|
|
1731
|
+
void 0,
|
|
1732
|
+
"rest"
|
|
1614
1733
|
);
|
|
1615
1734
|
}
|
|
1616
1735
|
async rewindSession(sessionId, promptId, opts) {
|
|
@@ -1632,7 +1751,9 @@ var DaemonClient = class {
|
|
|
1632
1751
|
throw await this.failOnError(res, "POST /session/:id/rewind");
|
|
1633
1752
|
}
|
|
1634
1753
|
return await res.json();
|
|
1635
|
-
}
|
|
1754
|
+
},
|
|
1755
|
+
void 0,
|
|
1756
|
+
"rest"
|
|
1636
1757
|
);
|
|
1637
1758
|
}
|
|
1638
1759
|
/**
|
|
@@ -1861,6 +1982,25 @@ var DaemonClient = class {
|
|
|
1861
1982
|
}
|
|
1862
1983
|
);
|
|
1863
1984
|
}
|
|
1985
|
+
async deleteModel(target, opts) {
|
|
1986
|
+
return await this.fetchWithTimeout(
|
|
1987
|
+
`${this.baseUrl}/workspace/models`,
|
|
1988
|
+
{
|
|
1989
|
+
method: "DELETE",
|
|
1990
|
+
headers: this.headers(
|
|
1991
|
+
{ "Content-Type": "application/json" },
|
|
1992
|
+
opts?.clientId
|
|
1993
|
+
),
|
|
1994
|
+
body: JSON.stringify(target)
|
|
1995
|
+
},
|
|
1996
|
+
async (res) => {
|
|
1997
|
+
if (!res.ok) {
|
|
1998
|
+
throw await this.failOnError(res, "DELETE /workspace/models");
|
|
1999
|
+
}
|
|
2000
|
+
return await res.json();
|
|
2001
|
+
}
|
|
2002
|
+
);
|
|
2003
|
+
}
|
|
1864
2004
|
async workspaceVoice(clientId) {
|
|
1865
2005
|
return await this.jsonRequest(
|
|
1866
2006
|
"/workspace/voice",
|
|
@@ -2047,6 +2187,84 @@ var DaemonClient = class {
|
|
|
2047
2187
|
opts?.timeoutMs
|
|
2048
2188
|
);
|
|
2049
2189
|
}
|
|
2190
|
+
/**
|
|
2191
|
+
* Reload the daemon-managed channel worker: the daemon stops and relaunches
|
|
2192
|
+
* it so it re-reads settings.json (channels / proxy / per-channel model).
|
|
2193
|
+
* Requires an enabled runtime selection; otherwise the route responds 409.
|
|
2194
|
+
* Pre-flight the dynamic `channel_reload` capability.
|
|
2195
|
+
*/
|
|
2196
|
+
async reloadChannelWorker(opts) {
|
|
2197
|
+
return await this.fetchWithTimeout(
|
|
2198
|
+
`${this.baseUrl}/workspace/channel/reload`,
|
|
2199
|
+
{
|
|
2200
|
+
method: "POST",
|
|
2201
|
+
headers: this.headers(
|
|
2202
|
+
{ "Content-Type": "application/json" },
|
|
2203
|
+
opts?.clientId
|
|
2204
|
+
),
|
|
2205
|
+
body: "{}"
|
|
2206
|
+
},
|
|
2207
|
+
async (res) => {
|
|
2208
|
+
if (!res.ok) {
|
|
2209
|
+
throw await this.failOnError(res, "POST /workspace/channel/reload");
|
|
2210
|
+
}
|
|
2211
|
+
return await res.json();
|
|
2212
|
+
},
|
|
2213
|
+
opts?.timeoutMs ?? CHANNEL_CONTROL_DEFAULT_TIMEOUT_MS
|
|
2214
|
+
);
|
|
2215
|
+
}
|
|
2216
|
+
async getChannelWorkerControl(opts) {
|
|
2217
|
+
return await this.fetchWithTimeout(
|
|
2218
|
+
`${this.baseUrl}/workspace/channel`,
|
|
2219
|
+
{
|
|
2220
|
+
method: "GET",
|
|
2221
|
+
headers: this.headers({}, opts?.clientId)
|
|
2222
|
+
},
|
|
2223
|
+
async (res) => {
|
|
2224
|
+
if (!res.ok) {
|
|
2225
|
+
throw await this.failOnError(res, "GET /workspace/channel");
|
|
2226
|
+
}
|
|
2227
|
+
return await res.json();
|
|
2228
|
+
},
|
|
2229
|
+
opts?.timeoutMs
|
|
2230
|
+
);
|
|
2231
|
+
}
|
|
2232
|
+
async setChannelWorkerSelection(selection, opts) {
|
|
2233
|
+
return await this.fetchWithTimeout(
|
|
2234
|
+
`${this.baseUrl}/workspace/channel`,
|
|
2235
|
+
{
|
|
2236
|
+
method: "PUT",
|
|
2237
|
+
headers: this.headers(
|
|
2238
|
+
{ "Content-Type": "application/json" },
|
|
2239
|
+
opts?.clientId
|
|
2240
|
+
),
|
|
2241
|
+
body: JSON.stringify({ selection })
|
|
2242
|
+
},
|
|
2243
|
+
async (res) => {
|
|
2244
|
+
if (!res.ok) {
|
|
2245
|
+
throw await this.failOnError(res, "PUT /workspace/channel");
|
|
2246
|
+
}
|
|
2247
|
+
return await res.json();
|
|
2248
|
+
},
|
|
2249
|
+
opts?.timeoutMs ?? CHANNEL_CONTROL_DEFAULT_TIMEOUT_MS
|
|
2250
|
+
);
|
|
2251
|
+
}
|
|
2252
|
+
async stopChannelWorker(opts) {
|
|
2253
|
+
return await this.fetchWithTimeout(
|
|
2254
|
+
`${this.baseUrl}/workspace/channel`,
|
|
2255
|
+
{
|
|
2256
|
+
method: "DELETE",
|
|
2257
|
+
headers: this.headers({}, opts?.clientId)
|
|
2258
|
+
},
|
|
2259
|
+
async (res) => {
|
|
2260
|
+
if (!res.ok) {
|
|
2261
|
+
throw await this.failOnError(res, "DELETE /workspace/channel");
|
|
2262
|
+
}
|
|
2263
|
+
return await res.json();
|
|
2264
|
+
},
|
|
2265
|
+
opts?.timeoutMs ?? CHANNEL_CONTROL_DEFAULT_TIMEOUT_MS
|
|
2266
|
+
);
|
|
2267
|
+
}
|
|
2050
2268
|
async manageMcpServer(serverName, action, opts) {
|
|
2051
2269
|
return await this.fetchWithTimeout(
|
|
2052
2270
|
`${this.baseUrl}/workspace/mcp/${urlEncode(serverName)}/${urlEncode(action)}`,
|
|
@@ -2653,6 +2871,25 @@ var DaemonClient = class {
|
|
|
2653
2871
|
}
|
|
2654
2872
|
);
|
|
2655
2873
|
}
|
|
2874
|
+
async addWorkspace(cwd, options = {}) {
|
|
2875
|
+
return await this.fetchWithTimeout(
|
|
2876
|
+
`${this.baseUrl}/workspaces`,
|
|
2877
|
+
{
|
|
2878
|
+
method: "POST",
|
|
2879
|
+
headers: this.headers({ "Content-Type": "application/json" }),
|
|
2880
|
+
body: JSON.stringify({
|
|
2881
|
+
cwd,
|
|
2882
|
+
...options.persist ? { persist: true } : {}
|
|
2883
|
+
})
|
|
2884
|
+
},
|
|
2885
|
+
async (res) => {
|
|
2886
|
+
if (!res.ok) {
|
|
2887
|
+
throw await this.failOnError(res, "POST /workspaces");
|
|
2888
|
+
}
|
|
2889
|
+
return await res.json();
|
|
2890
|
+
}
|
|
2891
|
+
);
|
|
2892
|
+
}
|
|
2656
2893
|
// -- Lifecycle / disposal ------------------------------------------------
|
|
2657
2894
|
/**
|
|
2658
2895
|
* Release transport resources (WS close, etc.). Idempotent.
|
|
@@ -2714,6 +2951,377 @@ var DaemonClient = class {
|
|
|
2714
2951
|
);
|
|
2715
2952
|
}
|
|
2716
2953
|
};
|
|
2954
|
+
var WorkspaceDaemonClient = class {
|
|
2955
|
+
constructor(client, workspaceSelector) {
|
|
2956
|
+
this.client = client;
|
|
2957
|
+
this.workspaceSelector = workspaceSelector;
|
|
2958
|
+
}
|
|
2959
|
+
static {
|
|
2960
|
+
__name(this, "WorkspaceDaemonClient");
|
|
2961
|
+
}
|
|
2962
|
+
workspaceMcp() {
|
|
2963
|
+
return this.get("/mcp", "GET /workspaces/:workspace/mcp");
|
|
2964
|
+
}
|
|
2965
|
+
workspaceGit() {
|
|
2966
|
+
return this.client.workspaceJsonRequest(
|
|
2967
|
+
this.workspaceSelector,
|
|
2968
|
+
"/git",
|
|
2969
|
+
"GET /workspaces/:workspace/git",
|
|
2970
|
+
{ mode: "rest" }
|
|
2971
|
+
);
|
|
2972
|
+
}
|
|
2973
|
+
workspaceSkills() {
|
|
2974
|
+
return this.get("/skills", "GET /workspaces/:workspace/skills");
|
|
2975
|
+
}
|
|
2976
|
+
workspaceProviders() {
|
|
2977
|
+
return this.get("/providers", "GET /workspaces/:workspace/providers");
|
|
2978
|
+
}
|
|
2979
|
+
workspaceHooks() {
|
|
2980
|
+
return this.get("/hooks", "GET /workspaces/:workspace/hooks");
|
|
2981
|
+
}
|
|
2982
|
+
workspaceEnv() {
|
|
2983
|
+
return this.get("/env", "GET /workspaces/:workspace/env");
|
|
2984
|
+
}
|
|
2985
|
+
workspacePreflight() {
|
|
2986
|
+
return this.get("/preflight", "GET /workspaces/:workspace/preflight");
|
|
2987
|
+
}
|
|
2988
|
+
workspaceTools() {
|
|
2989
|
+
return this.get("/tools", "GET /workspaces/:workspace/tools");
|
|
2990
|
+
}
|
|
2991
|
+
workspaceMemory() {
|
|
2992
|
+
return this.get("/memory", "GET /workspaces/:workspace/memory");
|
|
2993
|
+
}
|
|
2994
|
+
remove(options) {
|
|
2995
|
+
const body = options?.force === void 0 ? void 0 : {
|
|
2996
|
+
force: options.force
|
|
2997
|
+
};
|
|
2998
|
+
return this.client.workspaceJsonRequest(
|
|
2999
|
+
this.workspaceSelector,
|
|
3000
|
+
"",
|
|
3001
|
+
"DELETE /workspaces/:workspace",
|
|
3002
|
+
{
|
|
3003
|
+
method: "DELETE",
|
|
3004
|
+
...body ? { body } : {},
|
|
3005
|
+
...options?.timeoutMs !== void 0 ? { timeoutMs: options.timeoutMs } : {},
|
|
3006
|
+
mode: "rest"
|
|
3007
|
+
}
|
|
3008
|
+
);
|
|
3009
|
+
}
|
|
3010
|
+
writeWorkspaceMemory(req, clientId) {
|
|
3011
|
+
return this.post(
|
|
3012
|
+
"/memory",
|
|
3013
|
+
"POST /workspaces/:workspace/memory",
|
|
3014
|
+
{ ...req, scope: "workspace" },
|
|
3015
|
+
clientId
|
|
3016
|
+
);
|
|
3017
|
+
}
|
|
3018
|
+
listWorkspaceAgents() {
|
|
3019
|
+
return this.get("/agents", "GET /workspaces/:workspace/agents");
|
|
3020
|
+
}
|
|
3021
|
+
createWorkspaceAgent(req, clientId) {
|
|
3022
|
+
return this.post(
|
|
3023
|
+
"/agents",
|
|
3024
|
+
"POST /workspaces/:workspace/agents",
|
|
3025
|
+
{ ...req, scope: req.scope ?? "workspace" },
|
|
3026
|
+
clientId
|
|
3027
|
+
);
|
|
3028
|
+
}
|
|
3029
|
+
getWorkspaceAgent(agentType) {
|
|
3030
|
+
return this.get(
|
|
3031
|
+
`/agents/${urlEncode(agentType)}`,
|
|
3032
|
+
"GET /workspaces/:workspace/agents/:agentType"
|
|
3033
|
+
);
|
|
3034
|
+
}
|
|
3035
|
+
updateWorkspaceAgent(agentType, req, opts = {}) {
|
|
3036
|
+
const query = opts.scope ? `?scope=${urlEncode(opts.scope)}` : "";
|
|
3037
|
+
return this.post(
|
|
3038
|
+
`/agents/${urlEncode(agentType)}${query}`,
|
|
3039
|
+
"POST /workspaces/:workspace/agents/:agentType",
|
|
3040
|
+
req,
|
|
3041
|
+
opts.clientId
|
|
3042
|
+
);
|
|
3043
|
+
}
|
|
3044
|
+
async deleteWorkspaceAgent(agentType, opts = {}) {
|
|
3045
|
+
const query = opts.scope ? `?scope=${urlEncode(opts.scope)}` : "";
|
|
3046
|
+
return await this.client.workspaceNoContentRequest(
|
|
3047
|
+
this.workspaceSelector,
|
|
3048
|
+
`/agents/${urlEncode(agentType)}${query}`,
|
|
3049
|
+
"DELETE /workspaces/:workspace/agents/:agentType",
|
|
3050
|
+
{
|
|
3051
|
+
method: "DELETE",
|
|
3052
|
+
clientId: opts.clientId,
|
|
3053
|
+
okNotFoundCode: "agent_not_found"
|
|
3054
|
+
}
|
|
3055
|
+
);
|
|
3056
|
+
}
|
|
3057
|
+
listWorkspaceSessionsPage(options) {
|
|
3058
|
+
const requestedPageSize = options?.pageSize ?? DEFAULT_SESSION_LIST_PAGE_SIZE;
|
|
3059
|
+
const pageSize = Math.max(
|
|
3060
|
+
1,
|
|
3061
|
+
Math.min(
|
|
3062
|
+
1e3,
|
|
3063
|
+
Math.round(
|
|
3064
|
+
Number.isFinite(requestedPageSize) ? requestedPageSize : DEFAULT_SESSION_LIST_PAGE_SIZE
|
|
3065
|
+
)
|
|
3066
|
+
)
|
|
3067
|
+
);
|
|
3068
|
+
const query = new URLSearchParams({ size: String(pageSize) });
|
|
3069
|
+
if (options?.cursor !== void 0) query.set("cursor", options.cursor);
|
|
3070
|
+
if (options?.archiveState !== void 0) {
|
|
3071
|
+
query.set("archiveState", options.archiveState);
|
|
3072
|
+
}
|
|
3073
|
+
if (options?.view !== void 0) query.set("view", options.view);
|
|
3074
|
+
if (options?.group !== void 0) query.set("group", options.group);
|
|
3075
|
+
if (options?.parentSessionId !== void 0) {
|
|
3076
|
+
query.set("parentSessionId", options.parentSessionId);
|
|
3077
|
+
}
|
|
3078
|
+
return this.get(
|
|
3079
|
+
`/sessions?${query.toString()}`,
|
|
3080
|
+
"GET /workspaces/:workspace/sessions"
|
|
3081
|
+
);
|
|
3082
|
+
}
|
|
3083
|
+
async listWorkspaceSessions(options) {
|
|
3084
|
+
const page = await this.listWorkspaceSessionsPage(options);
|
|
3085
|
+
return page.sessions;
|
|
3086
|
+
}
|
|
3087
|
+
/**
|
|
3088
|
+
* Read one page from an active persisted session transcript in this
|
|
3089
|
+
* workspace.
|
|
3090
|
+
* The daemon performs replay locally without attaching to the session or
|
|
3091
|
+
* starting ACP. This method always uses native REST transport.
|
|
3092
|
+
*/
|
|
3093
|
+
getSessionTranscriptPage(sessionId, opts = {}) {
|
|
3094
|
+
const query = new URLSearchParams();
|
|
3095
|
+
if (opts.cursor !== void 0) query.set("cursor", opts.cursor);
|
|
3096
|
+
if (opts.limit !== void 0) query.set("limit", String(opts.limit));
|
|
3097
|
+
const suffix = query.size > 0 ? `?${query.toString()}` : "";
|
|
3098
|
+
return this.client.workspaceJsonRequest(
|
|
3099
|
+
this.workspaceSelector,
|
|
3100
|
+
`/session/${urlEncode(sessionId)}/transcript${suffix}`,
|
|
3101
|
+
"GET /workspaces/:workspace/session/:id/transcript",
|
|
3102
|
+
{ clientId: opts.clientId, mode: "rest" }
|
|
3103
|
+
);
|
|
3104
|
+
}
|
|
3105
|
+
listSessionGroups() {
|
|
3106
|
+
return this.get(
|
|
3107
|
+
"/session-groups",
|
|
3108
|
+
"GET /workspaces/:workspace/session-groups"
|
|
3109
|
+
);
|
|
3110
|
+
}
|
|
3111
|
+
async createSessionGroup(input) {
|
|
3112
|
+
const body = await this.post(
|
|
3113
|
+
"/session-groups",
|
|
3114
|
+
"POST /workspaces/:workspace/session-groups",
|
|
3115
|
+
input
|
|
3116
|
+
);
|
|
3117
|
+
return body.group;
|
|
3118
|
+
}
|
|
3119
|
+
async updateSessionGroup(groupId, update) {
|
|
3120
|
+
const body = await this.client.workspaceJsonRequest(
|
|
3121
|
+
this.workspaceSelector,
|
|
3122
|
+
`/session-groups/${urlEncode(groupId)}`,
|
|
3123
|
+
"PATCH /workspaces/:workspace/session-groups/:groupId",
|
|
3124
|
+
{ method: "PATCH", body: update }
|
|
3125
|
+
);
|
|
3126
|
+
return body.group;
|
|
3127
|
+
}
|
|
3128
|
+
deleteSessionGroup(groupId) {
|
|
3129
|
+
return this.client.workspaceJsonRequest(
|
|
3130
|
+
this.workspaceSelector,
|
|
3131
|
+
`/session-groups/${urlEncode(groupId)}`,
|
|
3132
|
+
"DELETE /workspaces/:workspace/session-groups/:groupId",
|
|
3133
|
+
{ method: "DELETE" }
|
|
3134
|
+
);
|
|
3135
|
+
}
|
|
3136
|
+
updateSessionOrganization(sessionId, update, clientId) {
|
|
3137
|
+
return this.client.workspaceJsonRequest(
|
|
3138
|
+
this.workspaceSelector,
|
|
3139
|
+
`/session/${urlEncode(sessionId)}/organization`,
|
|
3140
|
+
"PATCH /workspaces/:workspace/session/:id/organization",
|
|
3141
|
+
{ method: "PATCH", body: update, clientId }
|
|
3142
|
+
);
|
|
3143
|
+
}
|
|
3144
|
+
deleteSessionsData(sessionIds, clientId) {
|
|
3145
|
+
return this.post(
|
|
3146
|
+
"/sessions/delete",
|
|
3147
|
+
"POST /workspaces/:workspace/sessions/delete",
|
|
3148
|
+
{ sessionIds },
|
|
3149
|
+
clientId
|
|
3150
|
+
);
|
|
3151
|
+
}
|
|
3152
|
+
archiveSessionsData(sessionIds, clientId) {
|
|
3153
|
+
return this.post(
|
|
3154
|
+
"/sessions/archive",
|
|
3155
|
+
"POST /workspaces/:workspace/sessions/archive",
|
|
3156
|
+
{ sessionIds },
|
|
3157
|
+
clientId
|
|
3158
|
+
);
|
|
3159
|
+
}
|
|
3160
|
+
unarchiveSessionsData(sessionIds, clientId) {
|
|
3161
|
+
return this.post(
|
|
3162
|
+
"/sessions/unarchive",
|
|
3163
|
+
"POST /workspaces/:workspace/sessions/unarchive",
|
|
3164
|
+
{ sessionIds },
|
|
3165
|
+
clientId
|
|
3166
|
+
);
|
|
3167
|
+
}
|
|
3168
|
+
readWorkspaceFile(filePath, opts = {}, clientId) {
|
|
3169
|
+
const query = new URLSearchParams({ path: filePath });
|
|
3170
|
+
if (opts.maxBytes !== void 0)
|
|
3171
|
+
query.set("maxBytes", String(opts.maxBytes));
|
|
3172
|
+
if (opts.line !== void 0) query.set("line", String(opts.line));
|
|
3173
|
+
if (opts.limit !== void 0) query.set("limit", String(opts.limit));
|
|
3174
|
+
return this.get(
|
|
3175
|
+
`/file?${query.toString()}`,
|
|
3176
|
+
"GET /workspaces/:workspace/file",
|
|
3177
|
+
clientId
|
|
3178
|
+
);
|
|
3179
|
+
}
|
|
3180
|
+
readWorkspaceFileBytes(filePath, opts = {}, clientId) {
|
|
3181
|
+
const query = new URLSearchParams({ path: filePath });
|
|
3182
|
+
if (opts.offset !== void 0) query.set("offset", String(opts.offset));
|
|
3183
|
+
if (opts.maxBytes !== void 0)
|
|
3184
|
+
query.set("maxBytes", String(opts.maxBytes));
|
|
3185
|
+
return this.get(
|
|
3186
|
+
`/file/bytes?${query.toString()}`,
|
|
3187
|
+
"GET /workspaces/:workspace/file/bytes",
|
|
3188
|
+
clientId
|
|
3189
|
+
);
|
|
3190
|
+
}
|
|
3191
|
+
fileStat(filePath) {
|
|
3192
|
+
const query = new URLSearchParams({ path: filePath });
|
|
3193
|
+
return this.get(
|
|
3194
|
+
`/stat?${query.toString()}`,
|
|
3195
|
+
"GET /workspaces/:workspace/stat"
|
|
3196
|
+
);
|
|
3197
|
+
}
|
|
3198
|
+
dirList(dirPath) {
|
|
3199
|
+
const query = new URLSearchParams({ path: dirPath });
|
|
3200
|
+
return this.get(
|
|
3201
|
+
`/list?${query.toString()}`,
|
|
3202
|
+
"GET /workspaces/:workspace/list"
|
|
3203
|
+
);
|
|
3204
|
+
}
|
|
3205
|
+
glob(pattern) {
|
|
3206
|
+
const query = new URLSearchParams({ pattern });
|
|
3207
|
+
return this.get(
|
|
3208
|
+
`/glob?${query.toString()}`,
|
|
3209
|
+
"GET /workspaces/:workspace/glob"
|
|
3210
|
+
);
|
|
3211
|
+
}
|
|
3212
|
+
writeWorkspaceFile(req, clientId) {
|
|
3213
|
+
return this.post(
|
|
3214
|
+
"/file/write",
|
|
3215
|
+
"POST /workspaces/:workspace/file/write",
|
|
3216
|
+
req,
|
|
3217
|
+
clientId
|
|
3218
|
+
);
|
|
3219
|
+
}
|
|
3220
|
+
editWorkspaceFile(req, clientId) {
|
|
3221
|
+
return this.post(
|
|
3222
|
+
"/file/edit",
|
|
3223
|
+
"POST /workspaces/:workspace/file/edit",
|
|
3224
|
+
req,
|
|
3225
|
+
clientId
|
|
3226
|
+
);
|
|
3227
|
+
}
|
|
3228
|
+
workspaceSettings(opts) {
|
|
3229
|
+
return this.get(
|
|
3230
|
+
"/settings",
|
|
3231
|
+
"GET /workspaces/:workspace/settings",
|
|
3232
|
+
opts?.clientId
|
|
3233
|
+
);
|
|
3234
|
+
}
|
|
3235
|
+
setWorkspaceSetting(scope, key, value, opts) {
|
|
3236
|
+
return this.post(
|
|
3237
|
+
"/settings",
|
|
3238
|
+
"POST /workspaces/:workspace/settings",
|
|
3239
|
+
{ scope, key, value },
|
|
3240
|
+
opts?.clientId
|
|
3241
|
+
);
|
|
3242
|
+
}
|
|
3243
|
+
workspaceTrust(opts) {
|
|
3244
|
+
return this.get(
|
|
3245
|
+
"/trust",
|
|
3246
|
+
"GET /workspaces/:workspace/trust",
|
|
3247
|
+
opts?.clientId
|
|
3248
|
+
);
|
|
3249
|
+
}
|
|
3250
|
+
requestWorkspaceTrustChange(request, clientId) {
|
|
3251
|
+
return this.post(
|
|
3252
|
+
"/trust/request",
|
|
3253
|
+
"POST /workspaces/:workspace/trust/request",
|
|
3254
|
+
request,
|
|
3255
|
+
clientId
|
|
3256
|
+
);
|
|
3257
|
+
}
|
|
3258
|
+
workspacePermissions(opts) {
|
|
3259
|
+
return this.get(
|
|
3260
|
+
"/permissions",
|
|
3261
|
+
"GET /workspaces/:workspace/permissions",
|
|
3262
|
+
opts?.clientId
|
|
3263
|
+
);
|
|
3264
|
+
}
|
|
3265
|
+
setWorkspacePermissionRules(ruleType, rules, opts) {
|
|
3266
|
+
return this.post(
|
|
3267
|
+
"/permissions",
|
|
3268
|
+
"POST /workspaces/:workspace/permissions",
|
|
3269
|
+
{ scope: "workspace", ruleType, rules: [...rules] },
|
|
3270
|
+
opts?.clientId
|
|
3271
|
+
);
|
|
3272
|
+
}
|
|
3273
|
+
setWorkspaceToolEnabled(toolName, enabled, opts) {
|
|
3274
|
+
return this.post(
|
|
3275
|
+
`/tools/${urlEncode(toolName)}/enable`,
|
|
3276
|
+
"POST /workspaces/:workspace/tools/:name/enable",
|
|
3277
|
+
{ enabled },
|
|
3278
|
+
opts?.clientId
|
|
3279
|
+
);
|
|
3280
|
+
}
|
|
3281
|
+
restartMcpServer(serverName, opts) {
|
|
3282
|
+
const query = opts?.entryIndex === void 0 ? "" : `?entryIndex=${urlEncode(String(opts.entryIndex))}`;
|
|
3283
|
+
return this.post(
|
|
3284
|
+
`/mcp/${urlEncode(serverName)}/restart${query}`,
|
|
3285
|
+
"POST /workspaces/:workspace/mcp/:server/restart",
|
|
3286
|
+
{},
|
|
3287
|
+
opts?.clientId,
|
|
3288
|
+
opts?.timeoutMs ?? MCP_RESTART_DEFAULT_TIMEOUT_MS
|
|
3289
|
+
);
|
|
3290
|
+
}
|
|
3291
|
+
reload(opts) {
|
|
3292
|
+
return this.post(
|
|
3293
|
+
"/reload",
|
|
3294
|
+
"POST /workspaces/:workspace/reload",
|
|
3295
|
+
{},
|
|
3296
|
+
opts?.clientId,
|
|
3297
|
+
opts?.timeoutMs
|
|
3298
|
+
);
|
|
3299
|
+
}
|
|
3300
|
+
initWorkspace(opts) {
|
|
3301
|
+
return this.post(
|
|
3302
|
+
"/init",
|
|
3303
|
+
"POST /workspaces/:workspace/init",
|
|
3304
|
+
opts?.force === true ? { force: true } : {},
|
|
3305
|
+
opts?.clientId
|
|
3306
|
+
);
|
|
3307
|
+
}
|
|
3308
|
+
get(path, label, clientId) {
|
|
3309
|
+
return this.client.workspaceJsonRequest(
|
|
3310
|
+
this.workspaceSelector,
|
|
3311
|
+
path,
|
|
3312
|
+
label,
|
|
3313
|
+
{ clientId }
|
|
3314
|
+
);
|
|
3315
|
+
}
|
|
3316
|
+
post(path, label, body, clientId, timeoutMs) {
|
|
3317
|
+
return this.client.workspaceJsonRequest(
|
|
3318
|
+
this.workspaceSelector,
|
|
3319
|
+
path,
|
|
3320
|
+
label,
|
|
3321
|
+
{ method: "POST", body, clientId, timeoutMs }
|
|
3322
|
+
);
|
|
3323
|
+
}
|
|
3324
|
+
};
|
|
2717
3325
|
function composeAbortSignals2(signals) {
|
|
2718
3326
|
const anyFn = AbortSignal.any;
|
|
2719
3327
|
if (typeof anyFn === "function") return anyFn.call(AbortSignal, signals);
|
|
@@ -2807,7 +3415,7 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
2807
3415
|
*/
|
|
2808
3416
|
static async createOrAttach(client, req = {}, clientId) {
|
|
2809
3417
|
const session = await client.createOrAttachSession(req, clientId);
|
|
2810
|
-
const lastEventId = !session.attached || req.modelServiceId ? 0 : void 0;
|
|
3418
|
+
const lastEventId = !session.attached || req.modelServiceId || req.approvalMode ? 0 : void 0;
|
|
2811
3419
|
return new _DaemonSessionClient({
|
|
2812
3420
|
client,
|
|
2813
3421
|
session,
|
|
@@ -3110,6 +3718,9 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
3110
3718
|
async context() {
|
|
3111
3719
|
return await this.client.sessionContext(this.sessionId, this.clientId);
|
|
3112
3720
|
}
|
|
3721
|
+
async status() {
|
|
3722
|
+
return await this.client.sessionStatus(this.sessionId, this.clientId);
|
|
3723
|
+
}
|
|
3113
3724
|
async contextUsage(opts = {}) {
|
|
3114
3725
|
return await this.client.sessionContextUsage(
|
|
3115
3726
|
this.sessionId,
|
|
@@ -3304,6 +3915,7 @@ var DAEMON_KNOWN_EVENT_TYPE_VALUES = [
|
|
|
3304
3915
|
"session_died",
|
|
3305
3916
|
"session_closed",
|
|
3306
3917
|
"session_metadata_updated",
|
|
3918
|
+
"session_recording_degraded",
|
|
3307
3919
|
"artifact_changed",
|
|
3308
3920
|
MID_TURN_MESSAGE_INJECTED_EVENT,
|
|
3309
3921
|
PENDING_PROMPT_ADDED_EVENT,
|
|
@@ -3414,7 +4026,8 @@ var DAEMON_KNOWN_EVENT_TYPE_VALUES = [
|
|
|
3414
4026
|
// `replay_complete` when `?snapshot=1` is set on the SSE endpoint.
|
|
3415
4027
|
// Carries `currentModelId` and `currentApprovalMode` so reconnecting
|
|
3416
4028
|
// clients can seed their reducer without an extra round-trip.
|
|
3417
|
-
"session_snapshot"
|
|
4029
|
+
"session_snapshot",
|
|
4030
|
+
"git_branch_changed"
|
|
3418
4031
|
];
|
|
3419
4032
|
var DAEMON_KNOWN_EVENT_TYPES = new Set(
|
|
3420
4033
|
DAEMON_KNOWN_EVENT_TYPE_VALUES
|
|
@@ -3428,6 +4041,7 @@ var RESYNC_PASSTHROUGH_TYPES = /* @__PURE__ */ new Set([
|
|
|
3428
4041
|
"session_closed",
|
|
3429
4042
|
"client_evicted",
|
|
3430
4043
|
"stream_error",
|
|
4044
|
+
"session_recording_degraded",
|
|
3431
4045
|
// A5 (#4511): the snapshot is a full-state authoritative frame, not a
|
|
3432
4046
|
// delta, so it is safe to apply during resync — and it is exactly what
|
|
3433
4047
|
// lets a client that reconnected past the ring recover currentModelId /
|
|
@@ -3442,6 +4056,7 @@ function createDaemonSessionViewState(seed = {}) {
|
|
|
3442
4056
|
sessionId: seed.sessionId,
|
|
3443
4057
|
currentModelId: seed.currentModelId,
|
|
3444
4058
|
displayName: seed.displayName,
|
|
4059
|
+
recordingDegraded: seed.recordingDegraded ?? false,
|
|
3445
4060
|
lastSessionUpdate: seed.lastSessionUpdate,
|
|
3446
4061
|
lastModelSwitchFailure: seed.lastModelSwitchFailure,
|
|
3447
4062
|
terminalEvent: seed.terminalEvent,
|
|
@@ -3527,6 +4142,8 @@ function asKnownDaemonEvent(event) {
|
|
|
3527
4142
|
return isSessionClosedData(event.data) ? event : void 0;
|
|
3528
4143
|
case "session_metadata_updated":
|
|
3529
4144
|
return isSessionMetadataUpdatedData(event.data) ? event : void 0;
|
|
4145
|
+
case "session_recording_degraded":
|
|
4146
|
+
return isSessionRecordingDegradedData(event.data) ? event : void 0;
|
|
3530
4147
|
case "artifact_changed":
|
|
3531
4148
|
return isArtifactChangedData(event.data) ? event : void 0;
|
|
3532
4149
|
case MID_TURN_MESSAGE_INJECTED_EVENT:
|
|
@@ -3909,7 +4526,14 @@ function reduceDaemonSessionEvent(state, rawEvent) {
|
|
|
3909
4526
|
...base,
|
|
3910
4527
|
sessionId: event.data.sessionId,
|
|
3911
4528
|
...event.data.currentModelId != null ? { currentModelId: event.data.currentModelId } : {},
|
|
3912
|
-
...event.data.currentApprovalMode != null ? { approvalMode: event.data.currentApprovalMode } : {}
|
|
4529
|
+
...event.data.currentApprovalMode != null ? { approvalMode: event.data.currentApprovalMode } : {},
|
|
4530
|
+
...event.data.recordingDegraded !== void 0 ? { recordingDegraded: event.data.recordingDegraded } : {}
|
|
4531
|
+
};
|
|
4532
|
+
case "session_recording_degraded":
|
|
4533
|
+
return {
|
|
4534
|
+
...base,
|
|
4535
|
+
sessionId: event.data.sessionId,
|
|
4536
|
+
recordingDegraded: true
|
|
3913
4537
|
};
|
|
3914
4538
|
case "session_branched":
|
|
3915
4539
|
return {
|
|
@@ -4153,7 +4777,7 @@ function isStateResyncRequiredData(value) {
|
|
|
4153
4777
|
}
|
|
4154
4778
|
__name(isStateResyncRequiredData, "isStateResyncRequiredData");
|
|
4155
4779
|
function isHistoryTruncatedData(value) {
|
|
4156
|
-
if (!isRecord(value) || value["reason"] !== "replay_window_exceeded" || !isFiniteNumber(value["truncatedEvents"]) || !isFiniteNumber(value["retainedEvents"]) || !isFiniteNumber(value["maxBytes"]) || value["fullTranscriptAvailable"] !==
|
|
4780
|
+
if (!isRecord(value) || value["reason"] !== "replay_window_exceeded" || !isFiniteNumber(value["truncatedEvents"]) || !isFiniteNumber(value["retainedEvents"]) || !isFiniteNumber(value["maxBytes"]) || typeof value["fullTranscriptAvailable"] !== "boolean") {
|
|
4157
4781
|
return false;
|
|
4158
4782
|
}
|
|
4159
4783
|
const truncatedTurns = value["truncatedTurns"];
|
|
@@ -4370,9 +4994,14 @@ function isSessionSnapshotData(value) {
|
|
|
4370
4994
|
if (!isRecord(value) || !isNonEmptyString(value["sessionId"])) return false;
|
|
4371
4995
|
const model = value["currentModelId"];
|
|
4372
4996
|
const mode = value["currentApprovalMode"];
|
|
4373
|
-
|
|
4997
|
+
const recordingDegraded = value["recordingDegraded"];
|
|
4998
|
+
return (model === null || typeof model === "string") && (mode === null || typeof mode === "string") && (recordingDegraded === void 0 || typeof recordingDegraded === "boolean");
|
|
4374
4999
|
}
|
|
4375
5000
|
__name(isSessionSnapshotData, "isSessionSnapshotData");
|
|
5001
|
+
function isSessionRecordingDegradedData(value) {
|
|
5002
|
+
return isRecord(value) && isNonEmptyString(value["sessionId"]) && value["reason"] === "write_failed";
|
|
5003
|
+
}
|
|
5004
|
+
__name(isSessionRecordingDegradedData, "isSessionRecordingDegradedData");
|
|
4376
5005
|
function isPermissionOption(value) {
|
|
4377
5006
|
return isRecord(value) && isNonEmptyString(value["optionId"]);
|
|
4378
5007
|
}
|
|
@@ -4700,6 +5329,7 @@ var MCP_RESTART_REFUSED_REASONS2 = /* @__PURE__ */ new Set([
|
|
|
4700
5329
|
]);
|
|
4701
5330
|
var MALFORMED_MEMORY_CHANGED = "malformed memory_changed payload";
|
|
4702
5331
|
var MAX_DETAILS_LENGTH = 4096;
|
|
5332
|
+
var SESSION_RECORDING_DEGRADED_MESSAGE = "Session recording stopped after a write failure. New messages for the affected session will not be saved. Check disk space and permissions, then start a new session to resume recording.";
|
|
4703
5333
|
function normalizeDaemonEvent(event, opts = {}) {
|
|
4704
5334
|
const base = createBase(event, opts);
|
|
4705
5335
|
switch (event.type) {
|
|
@@ -4760,6 +5390,42 @@ function normalizeDaemonEvent(event, opts = {}) {
|
|
|
4760
5390
|
text: `Session closed: ${getString2(event.data, "reason") ?? "closed"}`
|
|
4761
5391
|
}
|
|
4762
5392
|
];
|
|
5393
|
+
case "session_recording_degraded": {
|
|
5394
|
+
const sessionId = getString2(event.data, "sessionId");
|
|
5395
|
+
if (!sessionId || getString2(event.data, "reason") !== "write_failed") {
|
|
5396
|
+
return fallbackDebug(event, base, "malformed recording state");
|
|
5397
|
+
}
|
|
5398
|
+
return [
|
|
5399
|
+
{
|
|
5400
|
+
...base,
|
|
5401
|
+
type: "error",
|
|
5402
|
+
recoverable: true,
|
|
5403
|
+
code: "session_recording_degraded",
|
|
5404
|
+
text: SESSION_RECORDING_DEGRADED_MESSAGE
|
|
5405
|
+
}
|
|
5406
|
+
];
|
|
5407
|
+
}
|
|
5408
|
+
case "session_snapshot": {
|
|
5409
|
+
if (!isRecord2(event.data) || !getString2(event.data, "sessionId")) {
|
|
5410
|
+
return fallbackDebug(event, base, "malformed recording snapshot");
|
|
5411
|
+
}
|
|
5412
|
+
const recordingDegraded = event.data["recordingDegraded"];
|
|
5413
|
+
if (recordingDegraded !== void 0 && typeof recordingDegraded !== "boolean") {
|
|
5414
|
+
return fallbackDebug(event, base, "malformed recording snapshot");
|
|
5415
|
+
}
|
|
5416
|
+
if (recordingDegraded === true) {
|
|
5417
|
+
return [
|
|
5418
|
+
{
|
|
5419
|
+
...base,
|
|
5420
|
+
type: "error",
|
|
5421
|
+
recoverable: true,
|
|
5422
|
+
code: "session_recording_degraded",
|
|
5423
|
+
text: SESSION_RECORDING_DEGRADED_MESSAGE
|
|
5424
|
+
}
|
|
5425
|
+
];
|
|
5426
|
+
}
|
|
5427
|
+
return [];
|
|
5428
|
+
}
|
|
4763
5429
|
case "client_evicted":
|
|
4764
5430
|
return [
|
|
4765
5431
|
{
|
|
@@ -4865,6 +5531,8 @@ function normalizeDaemonEvent(event, opts = {}) {
|
|
|
4865
5531
|
case "approval_mode_changed":
|
|
4866
5532
|
return normalizeApprovalModeChanged(event, base);
|
|
4867
5533
|
// ── Workspace events ──────────────────────────────────────
|
|
5534
|
+
case "git_branch_changed":
|
|
5535
|
+
return [];
|
|
4868
5536
|
case "memory_changed":
|
|
4869
5537
|
return normalizeMemoryChanged(event, base);
|
|
4870
5538
|
case "agent_changed":
|
|
@@ -4891,6 +5559,8 @@ function normalizeDaemonEvent(event, opts = {}) {
|
|
|
4891
5559
|
return normalizeMcpServerRestartRefused(event, base);
|
|
4892
5560
|
case "extensions_changed":
|
|
4893
5561
|
return normalizeExtensionsChanged(event, base);
|
|
5562
|
+
case "artifact_changed":
|
|
5563
|
+
return normalizeArtifactChanged(event, base);
|
|
4894
5564
|
// ── Auth device-flow events (RFC 8628) ─────────────────
|
|
4895
5565
|
case "auth_device_flow_started":
|
|
4896
5566
|
return normalizeAuthDeviceFlowStarted(event, base);
|
|
@@ -4903,16 +5573,20 @@ function normalizeDaemonEvent(event, opts = {}) {
|
|
|
4903
5573
|
case "auth_device_flow_cancelled":
|
|
4904
5574
|
return normalizeAuthDeviceFlowCancelled(event, base);
|
|
4905
5575
|
default:
|
|
4906
|
-
return
|
|
4907
|
-
{
|
|
4908
|
-
...base,
|
|
4909
|
-
type: "debug",
|
|
4910
|
-
text: `${event.type} (unrecognized daemon event): ${stringifyRedactedJson(event.data)}`
|
|
4911
|
-
}
|
|
4912
|
-
];
|
|
5576
|
+
return normalizeUnrecognizedEvent(event, base);
|
|
4913
5577
|
}
|
|
4914
5578
|
}
|
|
4915
5579
|
__name(normalizeDaemonEvent, "normalizeDaemonEvent");
|
|
5580
|
+
function normalizeUnrecognizedEvent(event, base) {
|
|
5581
|
+
return [
|
|
5582
|
+
{
|
|
5583
|
+
...base,
|
|
5584
|
+
type: "debug",
|
|
5585
|
+
text: `${event.type} (unrecognized daemon event): ${stringifyRedactedJson(event.data)}`
|
|
5586
|
+
}
|
|
5587
|
+
];
|
|
5588
|
+
}
|
|
5589
|
+
__name(normalizeUnrecognizedEvent, "normalizeUnrecognizedEvent");
|
|
4916
5590
|
function normalizeStateResyncRequired(event, base) {
|
|
4917
5591
|
const reason = getString2(event.data, "reason");
|
|
4918
5592
|
const lastDeliveredId = numberField(event.data, "lastDeliveredId");
|
|
@@ -4940,7 +5614,7 @@ function normalizeHistoryTruncated(event, base) {
|
|
|
4940
5614
|
const truncatedEvents = numberField(event.data, "truncatedEvents");
|
|
4941
5615
|
const retainedEvents = numberField(event.data, "retainedEvents");
|
|
4942
5616
|
const maxBytes = numberField(event.data, "maxBytes");
|
|
4943
|
-
if (reason !== "replay_window_exceeded" || truncatedEvents === void 0 || retainedEvents === void 0 || maxBytes === void 0 || isRecord2(event.data)
|
|
5617
|
+
if (reason !== "replay_window_exceeded" || truncatedEvents === void 0 || retainedEvents === void 0 || maxBytes === void 0 || !isRecord2(event.data) || typeof event.data["fullTranscriptAvailable"] !== "boolean") {
|
|
4944
5618
|
return fallbackDebug(event, base, "malformed history_truncated payload");
|
|
4945
5619
|
}
|
|
4946
5620
|
return [
|
|
@@ -5488,6 +6162,27 @@ function normalizeSessionMetadataUpdated(event, base) {
|
|
|
5488
6162
|
];
|
|
5489
6163
|
}
|
|
5490
6164
|
__name(normalizeSessionMetadataUpdated, "normalizeSessionMetadataUpdated");
|
|
6165
|
+
function normalizeArtifactChanged(event, base) {
|
|
6166
|
+
const sessionId = getString2(event.data, "sessionId");
|
|
6167
|
+
const change = isRecord2(event.data) ? event.data["change"] : void 0;
|
|
6168
|
+
if (!sessionId || !isRecord2(change)) {
|
|
6169
|
+
return fallbackDebug(event, base, "malformed artifact_changed payload");
|
|
6170
|
+
}
|
|
6171
|
+
const action = getString2(change, "action");
|
|
6172
|
+
const artifactId = getString2(change, "artifactId");
|
|
6173
|
+
if (!action || !artifactId) {
|
|
6174
|
+
return fallbackDebug(event, base, "missing action or artifactId");
|
|
6175
|
+
}
|
|
6176
|
+
return [
|
|
6177
|
+
{
|
|
6178
|
+
...base,
|
|
6179
|
+
type: "session.artifact.changed",
|
|
6180
|
+
sessionId,
|
|
6181
|
+
change
|
|
6182
|
+
}
|
|
6183
|
+
];
|
|
6184
|
+
}
|
|
6185
|
+
__name(normalizeArtifactChanged, "normalizeArtifactChanged");
|
|
5491
6186
|
function normalizeApprovalModeChanged(event, base) {
|
|
5492
6187
|
const sessionId = getString2(event.data, "sessionId");
|
|
5493
6188
|
const previous = getString2(event.data, "previous");
|
|
@@ -6348,7 +7043,14 @@ var RESYNC_PASSTHROUGH_TYPES2 = /* @__PURE__ */ new Set([
|
|
|
6348
7043
|
function appendLocalUserTranscriptMessage(state, text, opts = {}) {
|
|
6349
7044
|
const next = cloneTranscriptState(state, opts);
|
|
6350
7045
|
finishAssistant(next);
|
|
6351
|
-
const block = createTextBlock(
|
|
7046
|
+
const block = createTextBlock(
|
|
7047
|
+
next,
|
|
7048
|
+
"user",
|
|
7049
|
+
text,
|
|
7050
|
+
void 0,
|
|
7051
|
+
void 0,
|
|
7052
|
+
opts.meta
|
|
7053
|
+
);
|
|
6352
7054
|
if (opts.images && opts.images.length > 0) {
|
|
6353
7055
|
block.images = [...opts.images];
|
|
6354
7056
|
}
|
|
@@ -6487,6 +7189,7 @@ function applyDaemonTranscriptEvent(next, event) {
|
|
|
6487
7189
|
next.approvalMode = event.next;
|
|
6488
7190
|
break;
|
|
6489
7191
|
case "session.metadata.changed":
|
|
7192
|
+
case "session.artifact.changed":
|
|
6490
7193
|
case "session.available_commands":
|
|
6491
7194
|
break;
|
|
6492
7195
|
case "session.state_resync_required":
|
|
@@ -7441,8 +8144,8 @@ function createDaemonTranscriptStore(seed = {}) {
|
|
|
7441
8144
|
state = reduceDaemonTranscriptEvents(state, events);
|
|
7442
8145
|
scheduleNotify();
|
|
7443
8146
|
},
|
|
7444
|
-
appendLocalUserMessage(text, images) {
|
|
7445
|
-
state = appendLocalUserTranscriptMessage(state, text, { images });
|
|
8147
|
+
appendLocalUserMessage(text, images, meta) {
|
|
8148
|
+
state = appendLocalUserTranscriptMessage(state, text, { images, meta });
|
|
7446
8149
|
scheduleNotify();
|
|
7447
8150
|
},
|
|
7448
8151
|
reset(nextSeed = {}) {
|
|
@@ -7587,6 +8290,12 @@ function daemonUiEventToTerminalText(event) {
|
|
|
7587
8290
|
`metadata: ${event.displayName ?? "(no display name)"}`,
|
|
7588
8291
|
"36"
|
|
7589
8292
|
);
|
|
8293
|
+
case "session.artifact.changed":
|
|
8294
|
+
return terminalLine(
|
|
8295
|
+
"artifact",
|
|
8296
|
+
`${event.change.action} ${event.change.artifact?.title ?? event.change.artifactId}`,
|
|
8297
|
+
"36"
|
|
8298
|
+
);
|
|
7590
8299
|
case "session.approval_mode.changed":
|
|
7591
8300
|
return terminalLine(
|
|
7592
8301
|
"approval-mode",
|
|
@@ -8691,6 +9400,7 @@ export {
|
|
|
8691
9400
|
PENDING_PROMPT_COMPLETED_EVENT,
|
|
8692
9401
|
PENDING_PROMPT_STARTED_EVENT,
|
|
8693
9402
|
SseFramingError,
|
|
9403
|
+
WorkspaceDaemonClient,
|
|
8694
9404
|
appendLocalUserTranscriptMessage,
|
|
8695
9405
|
asKnownDaemonEvent,
|
|
8696
9406
|
createDaemonAuthState,
|