@qwen-code/qwen-code 0.23.1-preview.2 → 0.23.1
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/computer-use/SKILL.md +189 -116
- package/bundled/goal-draft/SKILL.md +23 -13
- package/bundled/qc-helper/docs/_meta.ts +1 -0
- package/bundled/qc-helper/docs/configuration/model-providers.md +47 -1
- package/bundled/qc-helper/docs/configuration/settings.md +50 -0
- package/bundled/qc-helper/docs/conversations-recovery.md +102 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
- package/bundled/qc-helper/docs/features/computer-use.md +9 -7
- package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
- package/bundled/qc-helper/docs/features/goals.md +15 -3
- package/bundled/qc-helper/docs/qwen-serve.md +19 -1
- package/chunks/{MaxSizedBox-IYIQ43IZ.js → MaxSizedBox-UDO6Y7RB.js} +20 -20
- package/chunks/{StandaloneSessionPicker-AWB2OHX6.js → StandaloneSessionPicker-D4CUOO4H.js} +38 -38
- package/chunks/{acp-startup-profiler-BAL4LJTN.js → acp-startup-profiler-KEU6VAYR.js} +2 -2
- package/chunks/{acpAgent-ZC57OLS4.js → acpAgent-KWLJFADK.js} +118 -91
- package/chunks/{agent-GEBPAEJS.js → agent-GSUPGEOL.js} +13 -13
- package/chunks/{agent-headless-63ZEYAJK.js → agent-headless-HNYCQUJB.js} +13 -13
- package/chunks/{anthropicContentGenerator-6XDHXIII.js → anthropicContentGenerator-I7LQZH26.js} +30 -7
- package/chunks/{askUserQuestion-3KAYLLMM.js → askUserQuestion-I5W5S3D6.js} +1 -1
- package/chunks/{bridge-MHWO5I5T.js → bridge-B7CV6RVI.js} +23 -23
- package/chunks/{channel-management-service-NFRZXQFO.js → channel-management-service-TRTLQTSV.js} +4 -4
- package/chunks/{channel-settings-store-T7PMIHKC.js → channel-settings-store-FW45IRUP.js} +31 -31
- package/chunks/{channel-worker-group-O2BWK5F7.js → channel-worker-group-PIYPVCTF.js} +6 -6
- package/chunks/{channel-worker-manager-4WP7VJOD.js → channel-worker-manager-FQHEDTD2.js} +6 -6
- package/chunks/{channel-worker-supervisor-CCUXD6J5.js → channel-worker-supervisor-XJPZZ3VK.js} +3 -3
- package/chunks/{chunk-KTLT7VCX.js → chunk-25CBAK3H.js} +2 -2
- package/chunks/{chunk-SHX2HIE7.js → chunk-27LTEY6D.js} +1 -1
- package/chunks/{chunk-ZT3XUGSU.js → chunk-2TMJRF46.js} +86 -9
- package/chunks/{chunk-HWZOOSEB.js → chunk-2YS3NU4A.js} +3 -3
- package/chunks/chunk-2Z3T52OC.js +82 -0
- package/chunks/{chunk-QW7BUOSI.js → chunk-2ZFO5JD7.js} +20 -3
- package/chunks/{chunk-RH344FKI.js → chunk-3BTHHXXE.js} +1 -1
- package/chunks/{chunk-OFB36ZBA.js → chunk-3LPJ776W.js} +1 -1
- package/chunks/{chunk-GEV66YGE.js → chunk-3VDLQUR2.js} +1 -1
- package/chunks/{chunk-RRCNEW2A.js → chunk-3VWPPK5Q.js} +58 -4
- package/chunks/{chunk-L36LLVA5.js → chunk-3YQMUBTS.js} +3 -3
- package/chunks/{chunk-LTCI6ZOJ.js → chunk-45ROPFQY.js} +1 -1
- package/chunks/{chunk-W4LL5RZO.js → chunk-4ALNJDHL.js} +52 -13
- package/chunks/{chunk-4OCYWXKF.js → chunk-5CVY5Q2P.js} +3 -3
- package/chunks/{chunk-ZRVFHLLK.js → chunk-5DQ4YTIZ.js} +1 -1
- package/chunks/{chunk-FWH4736Q.js → chunk-5IL2BZHW.js} +3 -3
- package/chunks/{chunk-537SQ2AI.js → chunk-5WC2ECUK.js} +104 -16
- package/chunks/{chunk-3K65MUKD.js → chunk-65I7S4Z3.js} +2 -1
- package/chunks/{chunk-RUMSY4ES.js → chunk-66JBCTJF.js} +8 -7
- package/chunks/{chunk-YLFICBYK.js → chunk-6JXHO7LG.js} +3 -3
- package/chunks/{chunk-TDHVOZ65.js → chunk-6QILGINT.js} +2 -2
- package/chunks/{chunk-WQBR7LN5.js → chunk-6QV7Z74P.js} +1 -1
- package/chunks/{chunk-RSU3I6UL.js → chunk-6SADVYQQ.js} +1 -1
- package/chunks/{chunk-AIMZIXZM.js → chunk-6TPVIESH.js} +5 -7
- package/chunks/{chunk-2LD5U7Q3.js → chunk-6YEOCHSE.js} +29 -1
- package/chunks/{chunk-7PMKXGRP.js → chunk-75LBC7SV.js} +66 -9
- package/chunks/{chunk-B5FF3LRF.js → chunk-7SL55L5H.js} +22 -15
- package/chunks/{chunk-I7UNCY24.js → chunk-ARYNBBBM.js} +3 -3
- package/chunks/{chunk-QQGAR64U.js → chunk-B3EL44K3.js} +4 -4
- package/chunks/{chunk-KAZWXVI3.js → chunk-CABDNUJ4.js} +2 -2
- package/chunks/{chunk-R7TKFIQO.js → chunk-CALNF3Z3.js} +1 -1
- package/chunks/{chunk-75UQFGFE.js → chunk-CHVU543W.js} +1 -1
- package/chunks/{chunk-C4NXRR7T.js → chunk-CIKL2DQP.js} +2 -2
- package/chunks/{chunk-LD53HMPV.js → chunk-CRZBDVP2.js} +1 -0
- package/chunks/{chunk-SHK2SIR5.js → chunk-D6AQNMUA.js} +4 -4
- package/chunks/{chunk-EPZWBYQI.js → chunk-DO5SMV52.js} +8 -6
- package/chunks/{chunk-P5Z7VD23.js → chunk-DXQ6Z7AH.js} +106 -39
- package/chunks/{chunk-3RMVM33U.js → chunk-DZ6D4B3K.js} +5 -5
- package/chunks/{chunk-T7TP5UQL.js → chunk-E7XSUYCZ.js} +4 -4
- package/chunks/{chunk-2C3XDBGL.js → chunk-EEKU6COG.js} +4 -4
- package/chunks/{chunk-AX23QSX3.js → chunk-EHTKOO6W.js} +4 -4
- package/chunks/{chunk-XNC2TCUO.js → chunk-ENZDGHGJ.js} +4 -4
- package/chunks/{chunk-733KQL63.js → chunk-EOET4H7C.js} +3 -3
- package/chunks/{chunk-37SOBIA3.js → chunk-ERXNTINK.js} +1 -1
- package/chunks/{chunk-F47DITLZ.js → chunk-FAWTMDX7.js} +14 -0
- package/chunks/{chunk-5JLQWQK6.js → chunk-FV4DM2M4.js} +2 -2
- package/chunks/{chunk-UTVIIA7N.js → chunk-FW4E4QPG.js} +1 -1
- package/chunks/{chunk-REDVV5NC.js → chunk-FWRRUITH.js} +7 -7
- package/chunks/{chunk-5V4B3EWA.js → chunk-GM44O6F7.js} +1 -1
- package/chunks/{chunk-Z6DDPSGJ.js → chunk-GNY7B3CA.js} +1 -1
- package/chunks/{chunk-ERMAXPXA.js → chunk-HIXUUCGY.js} +187 -12
- package/chunks/{chunk-EJNYBDYC.js → chunk-HNLMYDQE.js} +1 -1
- package/chunks/{chunk-XX4MBBFW.js → chunk-HUX2DOTF.js} +3 -3
- package/chunks/{chunk-RCUWMVN3.js → chunk-HZ2HUXX7.js} +1 -1
- package/chunks/{chunk-RD3VPM4E.js → chunk-IKG2YVRZ.js} +2 -2
- package/chunks/{chunk-IMWCUWQT.js → chunk-J3TJH52D.js} +1 -1
- package/chunks/{chunk-ZJ2LM2SI.js → chunk-JGDRB4FP.js} +104 -33
- package/chunks/{chunk-ANVC5CSK.js → chunk-L7V52QEZ.js} +10 -10
- package/chunks/{chunk-MFCWL4LI.js → chunk-LNCNUMJ5.js} +451 -396
- package/chunks/{chunk-AUJOWIT5.js → chunk-LZGFVUWZ.js} +3 -3
- package/chunks/{chunk-6KYWU726.js → chunk-M73KHGNR.js} +13 -66
- package/chunks/{chunk-ADJD4LZF.js → chunk-MA5OUNN6.js} +1 -1
- package/chunks/{chunk-I67KJGM6.js → chunk-MFYH2VXV.js} +3 -3
- package/chunks/{chunk-PLUAIHZO.js → chunk-N7YQEKGX.js} +6 -6
- package/chunks/{chunk-JOV46WGX.js → chunk-NB3NDQQK.js} +1 -1
- package/chunks/chunk-NOO4QFXM.js +171 -0
- package/chunks/{chunk-VYCJITND.js → chunk-O2JBJQCF.js} +1 -1
- package/chunks/{chunk-RQNAO42A.js → chunk-OESZTXTG.js} +1 -1
- package/chunks/{chunk-UKADFFL2.js → chunk-OFVAS4AR.js} +1 -1
- package/chunks/{chunk-Y3C5COGI.js → chunk-OPMKGOLD.js} +1 -1
- package/chunks/{chunk-TSLRORQR.js → chunk-PDUMGZ2P.js} +1467 -1323
- package/chunks/{chunk-Z6KFLEG7.js → chunk-PSPAM24S.js} +1 -0
- package/chunks/{chunk-5FYGZ7E3.js → chunk-QK4K76T6.js} +2 -2
- package/chunks/{chunk-NUQFUXOG.js → chunk-QTNCGZHQ.js} +2 -0
- package/chunks/{chunk-WFXD5OZH.js → chunk-QZOXVQPK.js} +1 -1
- package/chunks/{chunk-QJVZLILI.js → chunk-R7OO56VZ.js} +1 -1
- package/chunks/{chunk-KP5QK3FB.js → chunk-RNYENHN5.js} +397 -54
- package/chunks/{chunk-22QOQKG4.js → chunk-RXT4QBDX.js} +1 -1
- package/chunks/{chunk-LYHYXJJ3.js → chunk-S6QVI3MV.js} +3 -3
- package/chunks/{chunk-NXWYCSPL.js → chunk-SOA4HKRJ.js} +1 -1
- package/chunks/{chunk-IGOIYZBG.js → chunk-T2IHCZLS.js} +2 -2
- package/chunks/{chunk-C55CR5I4.js → chunk-TGC4264Q.js} +6 -6
- package/chunks/{chunk-EGRFCIXD.js → chunk-TWAMIEQ2.js} +79 -18
- package/chunks/{chunk-PMGWY6ZP.js → chunk-TWWS7XUW.js} +13 -10
- package/chunks/{chunk-RGAQDQ3Z.js → chunk-UHUT4IDM.js} +18 -9
- package/chunks/{chunk-HPE4LEWX.js → chunk-USN6VNTO.js} +1 -1
- package/chunks/{chunk-BNWIX6BM.js → chunk-UXDVUFKU.js} +3 -3
- package/chunks/{chunk-HY3DXYZK.js → chunk-UYDQYDW2.js} +1 -1
- package/chunks/{chunk-3K456UJF.js → chunk-VF6D6EGV.js} +12 -4
- package/chunks/{chunk-ZNI3V2XA.js → chunk-WAASYFPK.js} +2 -2
- package/chunks/{chunk-OHOO527W.js → chunk-WG7BL3FY.js} +52 -2
- package/chunks/{chunk-C7M445SS.js → chunk-WJDXKQIO.js} +1 -1
- package/chunks/{chunk-HZS3JRQW.js → chunk-WNISCNTA.js} +40 -2
- package/chunks/{chunk-AWDF462I.js → chunk-WQMUGQ6G.js} +2 -2
- package/chunks/{chunk-VU7O7CGQ.js → chunk-XDNFODER.js} +1 -1
- package/chunks/{chunk-65GHQ4FX.js → chunk-XVTCSVBK.js} +514 -47
- package/chunks/{chunk-SI6Q52UI.js → chunk-XZ3Z43XL.js} +3 -3
- package/chunks/{chunk-SD7Y2PMC.js → chunk-YAC7H4K3.js} +2 -2
- package/chunks/{chunk-FXYNIZPW.js → chunk-YCEKI7QX.js} +51 -10
- package/chunks/{chunk-7IKXTGZT.js → chunk-YI2YCNSP.js} +1 -1
- package/chunks/{chunk-E4VX6LXB.js → chunk-YZTGGCEE.js} +10 -2
- package/chunks/{chunk-VMFPZXRT.js → chunk-ZNO5BUAD.js} +43 -31
- package/chunks/{chunk-WLZRMF3C.js → chunk-ZPL2TZNA.js} +353 -11
- package/chunks/{chunk-TXAEXF2B.js → chunk-ZU2T5JIS.js} +21 -8
- package/chunks/{config-utils-F4CFJ4MW.js → config-utils-KTDSQ4MU.js} +24 -24
- package/chunks/{contextCommand-OIIGGOMU.js → contextCommand-UQ3KRYGK.js} +22 -22
- package/chunks/{core-runtime-JEHLOGMB.js → core-runtime-JR34JAFH.js} +20 -20
- package/chunks/{create-sub-session-MVFBE5RA.js → create-sub-session-RGPJOI4S.js} +21 -21
- package/chunks/{daemon-LCUELM6E.js → daemon-UI6SQSBV.js} +1 -1
- package/chunks/{daemon-git-worktree-guard-5FTKLJOU.js → daemon-git-worktree-guard-H3OA26KQ.js} +20 -20
- package/chunks/{daemon-status-provider-P6A5MPMW.js → daemon-status-provider-6WZLKSZU.js} +27 -27
- package/chunks/{daemon-trust-policy-ZJ3NFYUO.js → daemon-trust-policy-3EDP2BYD.js} +27 -27
- package/chunks/{daemon-trust-policy-monitor-6SDLEW7S.js → daemon-trust-policy-monitor-CRHZPK52.js} +27 -27
- package/chunks/{deferred-core-runtime-DWOXIU5S.js → deferred-core-runtime-LO5NTQQ4.js} +20 -20
- package/chunks/{discovery-TUM3ZQ6U.js → discovery-XP4RMDUM.js} +4 -2
- package/chunks/{dist-NXW4DUUX.js → dist-24TCWK5H.js} +1 -1
- package/chunks/{dist-I74QLLQS.js → dist-5I4HLUTO.js} +1 -1
- package/chunks/{dist-XINEKB5A.js → dist-FDISN4AK.js} +1 -1
- package/chunks/{dist-VCAS67N5.js → dist-M4CBX53H.js} +1 -1
- package/chunks/{dist-AI25RVRA.js → dist-NQ2636VT.js} +1 -1
- package/chunks/{dist-3H3WODVS.js → dist-OR2ZQTXZ.js} +1 -1
- package/chunks/{dist-P6YWBITG.js → dist-STAGIFNB.js} +430 -51
- package/chunks/{dist-YNQU4CKC.js → dist-WZTUKIDR.js} +2 -2
- package/chunks/{dist-T4PRA5EZ.js → dist-XJ25G6OH.js} +1 -1
- package/chunks/{edit-WPVXLL3T.js → edit-LB7Z7XK5.js} +13 -13
- package/chunks/{enter-worktree-5A6VW6BN.js → enter-worktree-YFTKHXHZ.js} +2 -2
- package/chunks/{enterPlanMode-JSODW7E2.js → enterPlanMode-P6TVUFIY.js} +13 -13
- package/chunks/{environment-5LLJ3I3W.js → environment-QATJNNKI.js} +23 -23
- package/chunks/{errors-IQT3YZEP.js → errors-3XJ37PS2.js} +22 -22
- package/chunks/{exit-worktree-QV7E7KP6.js → exit-worktree-NF2XEMES.js} +3 -3
- package/chunks/{exitPlanMode-DDVFYNW4.js → exitPlanMode-A3OKL5UO.js} +13 -13
- package/chunks/{fast-path-PAUQQEVU.js → fast-path-DBIT5YQQ.js} +3 -3
- package/chunks/{fast-path-settings-ISEJPRYE.js → fast-path-settings-SATXY3PD.js} +3 -3
- package/chunks/{glob-SQ7CTZ7F.js → glob-73EDTXUE.js} +13 -13
- package/chunks/{goal-tools-UWZRCLQB.js → goal-tools-DFI6YMSD.js} +13 -13
- package/chunks/{handleAutoUpdate-RUPZZTSG.js → handleAutoUpdate-2FUNJO3B.js} +23 -23
- package/chunks/{i18n-SF5MPWEB.js → i18n-FDIA6KFI.js} +23 -21
- package/chunks/{image-gen-Q3RUTVKR.js → image-gen-XP4NNIYG.js} +4 -4
- package/chunks/{initializer-CK4WPYZG.js → initializer-4MJTJOTW.js} +27 -27
- package/chunks/{installationInfo-IRPQEYRF.js → installationInfo-232RA2OK.js} +20 -20
- package/chunks/{list-E3PS3EBJ.js → list-WN6WSGEB.js} +30 -30
- package/chunks/{llm-JQKBOYAF.js → llm-UDFWQWZA.js} +62 -62
- package/chunks/{llm-content-generator-2QWGBW42.js → llm-content-generator-VLMZ2A7A.js} +23 -8
- package/chunks/{loadedSettingsAdapter-DGXGVYZS.js → loadedSettingsAdapter-OBQEIXM7.js} +27 -27
- package/chunks/{loggingContentGenerator-ZYURLJKK.js → loggingContentGenerator-RGVUMUVX.js} +14 -14
- package/chunks/{managed-npm-update-HTHR63EA.js → managed-npm-update-QBAJYCFU.js} +20 -20
- package/chunks/{mcp-I7G2AEWS.js → mcp-OTIZZCPY.js} +27 -27
- package/chunks/{monitor-4R76BCRZ.js → monitor-BV5XF6LL.js} +13 -13
- package/chunks/{nonInteractiveCli-24OQ3VP2.js → nonInteractiveCli-W6MUKDVJ.js} +64 -61
- package/chunks/{notebook-edit-PPSH7FEX.js → notebook-edit-HGBEKGTE.js} +13 -13
- package/chunks/{openaiContentGenerator-K7V5EO7F.js → openaiContentGenerator-NSU3ERBH.js} +8 -8
- package/chunks/{pidfile-TGIUY2GG.js → pidfile-LE3TU4GE.js} +20 -20
- package/chunks/{processUtils-3USXUQWX.js → processUtils-YFBGJK67.js} +2 -2
- package/chunks/{prompt-terminal-ledger-XHVZRXJI.js → prompt-terminal-ledger-4W4W7DSO.js} +21 -21
- package/chunks/{qwenContentGenerator-MPBOQB64.js → qwenContentGenerator-HTA57WFC.js} +16 -16
- package/chunks/{qwenOAuth2-BS5D2LYV.js → qwenOAuth2-KX6LVYQ3.js} +4 -4
- package/chunks/{read-file-R256LDWQ.js → read-file-KHPQ2MB6.js} +2 -2
- package/chunks/{resumeHistoryUtils-S43LTFHD.js → resumeHistoryUtils-K7RV3QBN.js} +23 -23
- package/chunks/{ripGrep-L7HPZ75Y.js → ripGrep-NBBVCMG4.js} +3 -3
- package/chunks/{run-qwen-serve-CTFL5R6U.js → run-qwen-serve-A3JBOZCM.js} +58 -60
- package/chunks/{runtime-FS5TL6P7.js → runtime-7YOU2KJ3.js} +32 -32
- package/chunks/{scheduled-tasks-QXPV3Q35.js → scheduled-tasks-52LXK7LN.js} +25 -25
- package/chunks/{scheduler-EXU5HMVK.js → scheduler-J44M72VM.js} +22 -22
- package/chunks/{send-message-GQKXGMPI.js → send-message-AWKUDJBH.js} +1 -1
- package/chunks/{serve-ITJC7WNN.js → serve-TRC6XJUB.js} +27 -27
- package/chunks/{server-6JQY3PTU.js → server-YPNTJLX2.js} +1296 -822
- package/chunks/{session-PJDEKXD4.js → session-FMMIBFYX.js} +63 -62
- package/chunks/{session-attachments-root-L37ORSST.js → session-attachments-root-LDJMNK7K.js} +20 -20
- package/chunks/{session-pr-refresh-WIFD52YL.js → session-pr-refresh-NLR4EK2J.js} +24 -24
- package/chunks/{settings-LO6J5SAZ.js → settings-A46L577J.js} +26 -26
- package/chunks/{shell-ANAFVYGR.js → shell-Q5LSQPPY.js} +13 -13
- package/chunks/{skill-SHJWKSPH.js → skill-75KPJRCM.js} +2 -2
- package/chunks/{skill-settings-GX3XHZ5Q.js → skill-settings-775YT4YR.js} +26 -26
- package/chunks/{spawnChannel-WE42VBKM.js → spawnChannel-XY73I5CU.js} +20 -20
- package/chunks/{standalone-update-CWDIKJRP.js → standalone-update-L46XXNQ2.js} +22 -22
- package/chunks/{start-opentui-ui-BBHGFOTF.js → start-opentui-ui-WLV43247.js} +1991 -986
- package/chunks/{startInteractiveUI-FQX7LUYP.js → startInteractiveUI-F5DKMLOV.js} +1119 -1478
- package/chunks/{team-create-WKTPCH6D.js → team-create-2PATB77U.js} +13 -13
- package/chunks/{team-plan-approval-Y23DL7WR.js → team-plan-approval-QTANEWOS.js} +13 -13
- package/chunks/{terminal-image-renderer-B646HBDW.js → terminal-image-renderer-OGULCFNF.js} +20 -20
- package/chunks/{theme-manager-BNWESY26.js → theme-manager-CNO3QERP.js} +20 -20
- package/chunks/{tool-search-PVQ5O5Y2.js → tool-search-VXWEOZE7.js} +2 -2
- package/chunks/{total-session-admission-P5Z43KNW.js → total-session-admission-4KAADZPB.js} +24 -24
- package/chunks/{trustedFolders-FH2LT2MZ.js → trustedFolders-PPJSOPOT.js} +21 -21
- package/chunks/{update-relaunch-WOWTKJSN.js → update-relaunch-4PT4MW7B.js} +5 -5
- package/chunks/{updateCheck-3MYFMM35.js → updateCheck-WAVFLWNG.js} +22 -22
- package/chunks/{useAutoAcceptIndicator-Q7ZRRRKO.js → useAutoAcceptIndicator-XNED4NRB.js} +29 -29
- package/chunks/{validateNonInterActiveAuth-MYEWJX3G.js → validateNonInterActiveAuth-J676DUQ2.js} +59 -58
- package/chunks/{version-RO2FPO76.js → version-J6SRRQB2.js} +1 -1
- package/chunks/{web-fetch-QAKY2LUA.js → web-fetch-FMZZYX44.js} +5 -5
- package/chunks/{web-search-XA5Z4ZCD.js → web-search-3G2KXCX5.js} +18 -7
- package/chunks/{workflow-QFIOCMDM.js → workflow-PPZZICQ7.js} +15 -15
- package/chunks/{workspace-providers-status-B2UD7RAG.js → workspace-providers-status-IIYTAQST.js} +29 -29
- package/chunks/{workspace-registration-store-VZLRTI3Q.js → workspace-registration-store-VHCDXAV7.js} +1 -1
- package/chunks/{workspace-registry-GYOGG6TM.js → workspace-registry-I7VQIPS2.js} +24 -24
- package/chunks/{workspace-runtime-coordinator-7KRXGQ4V.js → workspace-runtime-coordinator-DBGNY32G.js} +24 -24
- package/chunks/{workspace-service-DJEYGJE4.js → workspace-service-QSKB2T54.js} +31 -31
- package/chunks/{workspace-skills-status-MOKNESUC.js → workspace-skills-status-T7GPT65J.js} +27 -27
- package/chunks/{workspace-trust-reconciler-AXOSUTQW.js → workspace-trust-reconciler-2PKRDAU4.js} +31 -31
- package/chunks/{write-file-QOYVHAKK.js → write-file-L76CGFTQ.js} +14 -14
- package/chunks/{zoom-image-UCCLGFNC.js → zoom-image-TDJJY2VZ.js} +2 -2
- package/cli.js +13 -13
- package/export-transcript-document.js +126 -122
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-CTstZpXw.js → abnfDiagram-VCTEODGH-DHc6plZn.js} +1 -1
- package/web-shell/assets/{arc-DKW0mbPo.js → arc-BQ9m8TDV.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-DkMpJ42t.js → architectureDiagram-5GKGNRK7-D5ap3oVB.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-7Cp1_4i3.js → blockDiagram-NRAW4CY4-BIbnyNph.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BfaoSlBK.js → c4Diagram-UCG6FXSJ-BRsdx_iG.js} +1 -1
- package/web-shell/assets/channel-uMMdTrYk.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-_n1qzAio.js → chunk-2Q5K7J3B-3lf1fNlx.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-0cira5ZV.js → chunk-5VM5RSS4-DP8VNRc4.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-DseRXSHC.js → chunk-F27PBJKO-DrohDmZ6.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-BehQWin0.js → chunk-G27WJ6UU-UZ2QhSx6.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-B5ftg1Bb.js → chunk-JWPE2WC7-BIMHVcZK.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-D7rnbVdk.js → chunk-LCL6LL3I-izRxdSDd.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-2Bp-Orju.js → chunk-POPQ4Y6H-CXADD4PP.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-CD2goGva.js → chunk-SVP7TREG-B96d8Y_1.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-DzQt-Rji.js → chunk-XXDRQBXY-CF2sVQpv.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-C-BZXSUn.js → cose-bilkent-JH36ORCC-CT6tXVAS.js} +1 -1
- package/web-shell/assets/csv-CX7rUNeC.svg +1 -0
- package/web-shell/assets/{cynefin-OW5HDTMX-BTcvowe1.js → cynefin-OW5HDTMX-X1NS4vtV.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BoUE6K81.js → cynefinDiagram-5FMLGOSQ-DNsKNOT4.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-BHxy9xeB.js → dagre-3AP2YEHR-9-AHKqsb.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-DMiJIvDT.js → diagram-S7CK7UJ4-Bjgms7j6.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-DXV09Aes.js → diagram-UQ7AKVKN-h6bCprbE.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-CocpRomV.js → diagram-VSXAHHWV-4SbQXVLt.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-DL7nqtb4.js → diagram-VX7I27RA-B5gPCzzB.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-CPZ2Jux_.js → diagram-Z3DM3KII-DFJXIA3A.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-BX-eVNsX.js → ebnfDiagram-PWID7BFC-FwyaU7VY.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-CPy_Ir6y.js → erDiagram-SSCWMZ5O-8vJQh2te.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-eknAOte9.js → flowDiagram-A5DVABFB-BzA_1gMN.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-crAxw_t7.js → ganttDiagram-EL5Y4UJY-Co-ABbVX.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-M29pa3Tc.js → gitGraphDiagram-WWUBYQGX-DW_FcyrX.js} +1 -1
- package/web-shell/assets/{index-C9R-iojE.js → index-BbMXfhNG.js} +1 -1
- package/web-shell/assets/{index-B4TLaxWs.js → index-Bu-rZoJ-.js} +462 -454
- package/web-shell/assets/index-CsPwZ1ut.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-XqspXdOU.js → infoDiagram-RXCK75RN-BEgfhUFN.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-C5KFS-7j.js → ishikawaDiagram-5VMMS53U-DCsMxQmc.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-Cc57LVRo.js → journeyDiagram-EYS64GPL-DyIEYoHz.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-C81OG-AI.js → kanban-definition-3QL26DDD-CkxjqCNr.js} +1 -1
- package/web-shell/assets/{layout-CFVu37BB.js → layout-BEWc0Al9.js} +1 -1
- package/web-shell/assets/{linear-ChBxdtWf.js → linear-CNuNxirL.js} +1 -1
- package/web-shell/assets/{mermaid.core-CMLfue0w.js → mermaid.core-DZBre674.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-DFsvJThp.js → mindmap-definition-FBJOCRG2-CpafFz_F.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-BzpRzM4F.js → pegDiagram-XKGWAZYB-DfZqk_dq.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-Cv0Kankl.js → pieDiagram-E7YTZNPT-S0UWXlgC.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-Bh2BJ3Ay.js → quadrantDiagram-AXDQQJYC-dd37_Ohj.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-y8rNDdDS.js → railroadDiagram-O6MQD6OU-CH8NJZ7u.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C0m2DKJ_.js → requirementDiagram-EFPCY7ZU-CFdqWYih.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-BzdGnSF4.js → sankeyDiagram-P5KCCOFB-CsddcEGD.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DPzAVmzz.js → sequenceDiagram-WJ2MYXX4-BZ270mGw.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-LcHG28Zh.js → sizeCapture-X5ZJPWSS-CGaS4DBV.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-C1Bzy3IT.js → stateDiagram-HBIQ2CUA-COpIzMu6.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-Bftk8V64.js → swimlanes-XN3QIQJK-CMF889m3.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-BfXHcN1A.js → timeline-definition-24CTP7MA-BelnxYz5.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-DRSlI9-V.js → vennDiagram-4TSXK5OY-CU-NRqIB.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CaLmqGau.js → wardleyDiagram-VM6X3IG4-CDNKqWh-.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-8lgUT6e8.js → xychartDiagram-S5SC5T6Z-CLqguL5D.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-3UMWOKJC.js +0 -78
- package/chunks/chunk-IQAFKVXS.js +0 -22
- package/web-shell/assets/channel-CQx7VSAp.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-C-Uz8hHk.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-C-Uz8hHk.js +0 -1
- package/web-shell/assets/index-CCrkEbzz.css +0 -36
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-LuuL5byY.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-COmnNq8s.js +0 -8
|
@@ -5,20 +5,20 @@ import {
|
|
|
5
5
|
} from "./chunk-57OAHC2Y.js";
|
|
6
6
|
import {
|
|
7
7
|
loadSettings
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-66JBCTJF.js";
|
|
9
9
|
import {
|
|
10
10
|
getCurrentLanguage,
|
|
11
11
|
t
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-CRZBDVP2.js";
|
|
13
13
|
import {
|
|
14
14
|
isWorkspaceTrusted
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-3VDLQUR2.js";
|
|
16
16
|
import {
|
|
17
17
|
ExtensionManager,
|
|
18
18
|
getExtensionDescription,
|
|
19
19
|
getExtensionDisplayName,
|
|
20
20
|
require_prompts
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-PDUMGZ2P.js";
|
|
22
22
|
import {
|
|
23
23
|
stripAnsi
|
|
24
24
|
} from "./chunk-TWPJO254.js";
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
CLIENT_MCP_OVER_WS_CONFIG_FLAG
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-PSPAM24S.js";
|
|
6
6
|
import {
|
|
7
7
|
SessionNotFoundError
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-FAWTMDX7.js";
|
|
9
9
|
import {
|
|
10
10
|
ChannelWorkerStartupError
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-CABDNUJ4.js";
|
|
12
12
|
import {
|
|
13
13
|
ChannelWebhookEnqueueError
|
|
14
14
|
} from "./chunk-STUJ7IMZ.js";
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "./chunk-RKFGE7JH.js";
|
|
18
18
|
import {
|
|
19
19
|
CHANNEL_LOOP_MCP_SERVER_NAME
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-XVTCSVBK.js";
|
|
21
21
|
import {
|
|
22
22
|
init_esbuild_shims
|
|
23
23
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
t
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-CRZBDVP2.js";
|
|
6
6
|
import {
|
|
7
7
|
SessionReferenceService,
|
|
8
8
|
readManyFiles
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ZU2T5JIS.js";
|
|
10
10
|
import {
|
|
11
11
|
emptyMcpResourceText,
|
|
12
12
|
formatMcpResourceContents,
|
|
@@ -15,10 +15,10 @@ import {
|
|
|
15
15
|
import {
|
|
16
16
|
SessionService,
|
|
17
17
|
stripTerminalControlSequences
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-PDUMGZ2P.js";
|
|
19
19
|
import {
|
|
20
20
|
shouldRunVisionBridge
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-6QV7Z74P.js";
|
|
22
22
|
import {
|
|
23
23
|
Storage,
|
|
24
24
|
getErrorMessage,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
getUserSettingsPath,
|
|
5
5
|
v1ToV2Migration
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-66JBCTJF.js";
|
|
7
7
|
import {
|
|
8
8
|
getSystemDefaultsPath,
|
|
9
9
|
getSystemSettingsPath
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
TrustLevel,
|
|
14
14
|
getExplicitTrustLevel,
|
|
15
15
|
getTrustedFoldersPath
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-3VDLQUR2.js";
|
|
17
17
|
import {
|
|
18
18
|
require_strip_json_comments
|
|
19
19
|
} from "./chunk-NPQ5ZKRP.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
} from "./chunk-MR3PXB6E.js";
|
|
23
23
|
import {
|
|
24
24
|
ideContextStore
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-PDUMGZ2P.js";
|
|
26
26
|
import {
|
|
27
27
|
init_esbuild_shims
|
|
28
28
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -473,6 +473,19 @@ var CdWhilePromptActiveError = class extends Error {
|
|
|
473
473
|
this.sessionId = sessionId;
|
|
474
474
|
}
|
|
475
475
|
};
|
|
476
|
+
var SessionResetPendingError = class extends Error {
|
|
477
|
+
static {
|
|
478
|
+
__name(this, "SessionResetPendingError");
|
|
479
|
+
}
|
|
480
|
+
sessionId;
|
|
481
|
+
constructor(sessionId) {
|
|
482
|
+
super(
|
|
483
|
+
`Session ${sessionId} is mid worktree reset; prompt admission is closed until the reset completes`
|
|
484
|
+
);
|
|
485
|
+
this.name = "SessionResetPendingError";
|
|
486
|
+
this.sessionId = sessionId;
|
|
487
|
+
}
|
|
488
|
+
};
|
|
476
489
|
var McpAuthenticationInProgressError = class extends Error {
|
|
477
490
|
static {
|
|
478
491
|
__name(this, "McpAuthenticationInProgressError");
|
|
@@ -519,6 +532,7 @@ export {
|
|
|
519
532
|
InvalidRewindTargetError,
|
|
520
533
|
BranchWhilePromptActiveError,
|
|
521
534
|
CdWhilePromptActiveError,
|
|
535
|
+
SessionResetPendingError,
|
|
522
536
|
McpAuthenticationInProgressError
|
|
523
537
|
};
|
|
524
538
|
/**
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
isPrivateProvenanceEnvKey,
|
|
18
18
|
publishPendingCompileCache,
|
|
19
19
|
reportRejectedLoaderKeys
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-QTNCGZHQ.js";
|
|
21
21
|
import {
|
|
22
22
|
buildTrustPrecedenceRules,
|
|
23
23
|
require_strip_json_comments,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
import {
|
|
30
30
|
require_main,
|
|
31
31
|
resolveEnvVarsInObject
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-65I7S4Z3.js";
|
|
33
33
|
import {
|
|
34
34
|
init_esbuild_shims
|
|
35
35
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
buildPermissionSettings
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-CHVU543W.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveVoiceStreamConfig,
|
|
8
8
|
resolveVoiceTranscriptionConfig,
|
|
9
9
|
transcribeVoiceAudio
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-GNY7B3CA.js";
|
|
11
11
|
import {
|
|
12
12
|
getVoiceSettingsScope,
|
|
13
13
|
isSelectableVoiceModel,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
readVoiceMode,
|
|
17
17
|
readVoiceModel,
|
|
18
18
|
resolveVoiceTransport
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-NB3NDQQK.js";
|
|
20
20
|
import {
|
|
21
21
|
MCP_RESTART_SERVER_DEADLINE_MS
|
|
22
22
|
} from "./chunk-OCPBI7J5.js";
|
|
@@ -47,19 +47,19 @@ import {
|
|
|
47
47
|
WorkspaceInitPathEscapeError,
|
|
48
48
|
WorkspaceInitRaceError,
|
|
49
49
|
WorkspaceInitSymlinkError
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-FAWTMDX7.js";
|
|
51
51
|
import {
|
|
52
52
|
getPersistScopeForModelSelection,
|
|
53
53
|
loadSettings
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-66JBCTJF.js";
|
|
55
55
|
import {
|
|
56
56
|
getWorkspaceTrustStatus
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-3VDLQUR2.js";
|
|
58
58
|
import {
|
|
59
59
|
ModelsConfig,
|
|
60
60
|
SkillManager,
|
|
61
61
|
require_yauzl
|
|
62
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-PDUMGZ2P.js";
|
|
63
63
|
import {
|
|
64
64
|
Storage,
|
|
65
65
|
createDebugLogger
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
isWithinRoot
|
|
9
9
|
} from "./chunk-J6MB5ZHZ.js";
|
|
10
10
|
import {
|
|
11
|
+
atomicWriteFile,
|
|
11
12
|
atomicWriteJSON
|
|
12
13
|
} from "./chunk-XFFRI3WM.js";
|
|
13
14
|
import {
|
|
@@ -171,11 +172,17 @@ async function addWorktreeSessionMarkerExclude(worktreePath) {
|
|
|
171
172
|
existing = await fs2.readFile(excludePath, "utf8");
|
|
172
173
|
} catch {
|
|
173
174
|
}
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
175
|
+
const rules = [WORKTREE_SESSION_FILE, `${WORKTREE_SESSION_FILE}.*.tmp`];
|
|
176
|
+
let next = existing;
|
|
177
|
+
for (const rule of rules) {
|
|
178
|
+
if (!next.split(/\r?\n/).includes(rule)) {
|
|
179
|
+
const sep = next.length === 0 || next.endsWith("\n") ? "" : "\n";
|
|
180
|
+
next = `${next}${sep}${rule}
|
|
181
|
+
`;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (next !== existing) {
|
|
185
|
+
await fs2.writeFile(excludePath, next, "utf8");
|
|
179
186
|
}
|
|
180
187
|
} catch {
|
|
181
188
|
}
|
|
@@ -190,15 +197,32 @@ async function writeWorktreeSessionMarker(worktreePath, sessionId) {
|
|
|
190
197
|
await addWorktreeSessionMarkerExclude(worktreePath);
|
|
191
198
|
}
|
|
192
199
|
__name(writeWorktreeSessionMarker, "writeWorktreeSessionMarker");
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
200
|
+
var WorktreeMarkerCommittedError = class extends Error {
|
|
201
|
+
static {
|
|
202
|
+
__name(this, "WorktreeMarkerCommittedError");
|
|
196
203
|
}
|
|
204
|
+
committedOwner;
|
|
205
|
+
constructor(committedOwner, options) {
|
|
206
|
+
super(
|
|
207
|
+
`Worktree session marker committed for ${committedOwner}; the post-commit close failed`,
|
|
208
|
+
options
|
|
209
|
+
);
|
|
210
|
+
this.name = "WorktreeMarkerCommittedError";
|
|
211
|
+
this.committedOwner = committedOwner;
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
async function createWorktreeSessionMarkerExclusive(worktreePath, sessionId) {
|
|
215
|
+
assertValidWorktreeSessionMarkerOwner(sessionId);
|
|
197
216
|
const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
|
|
217
|
+
const stagedPath = `${markerPath}.${randomBytes(6).toString("hex")}.tmp`;
|
|
198
218
|
const flags = nodeFs.constants.O_WRONLY | nodeFs.constants.O_CREAT | nodeFs.constants.O_EXCL | (nodeFs.constants.O_NOFOLLOW ?? 0);
|
|
199
|
-
const handle = await fs2.open(
|
|
219
|
+
const handle = await fs2.open(stagedPath, flags, 384);
|
|
220
|
+
let stagedDev = 0;
|
|
221
|
+
let stagedIno = 0;
|
|
200
222
|
try {
|
|
201
223
|
const before = await handle.stat();
|
|
224
|
+
stagedDev = before.dev;
|
|
225
|
+
stagedIno = before.ino;
|
|
202
226
|
if (!before.isFile() || before.nlink !== 1 || before.ino === 0) {
|
|
203
227
|
throw new Error("Worktree session marker has an unsafe identity");
|
|
204
228
|
}
|
|
@@ -206,17 +230,43 @@ async function createWorktreeSessionMarkerExclusive(worktreePath, sessionId) {
|
|
|
206
230
|
await handle.sync();
|
|
207
231
|
const [after, pathStats] = await Promise.all([
|
|
208
232
|
handle.stat(),
|
|
209
|
-
fs2.lstat(
|
|
233
|
+
fs2.lstat(stagedPath)
|
|
210
234
|
]);
|
|
211
235
|
if (!after.isFile() || after.nlink !== 1 || after.size > WORKTREE_SESSION_MARKER_MAX_BYTES || after.dev !== before.dev || after.ino !== before.ino || pathStats.dev !== after.dev || pathStats.ino !== after.ino) {
|
|
212
236
|
throw new Error("Worktree session marker identity changed");
|
|
213
237
|
}
|
|
214
|
-
|
|
238
|
+
await fs2.link(stagedPath, markerPath);
|
|
239
|
+
} catch (error) {
|
|
240
|
+
await handle.close().catch(() => {
|
|
241
|
+
});
|
|
242
|
+
if (stagedIno !== 0) {
|
|
243
|
+
try {
|
|
244
|
+
const current = await fs2.lstat(stagedPath);
|
|
245
|
+
if (current.dev === stagedDev && current.ino === stagedIno) {
|
|
246
|
+
await fs2.unlink(stagedPath);
|
|
247
|
+
}
|
|
248
|
+
} catch {
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
throw error;
|
|
252
|
+
}
|
|
253
|
+
try {
|
|
254
|
+
await fs2.unlink(stagedPath);
|
|
215
255
|
await handle.close();
|
|
256
|
+
} catch (error) {
|
|
257
|
+
await handle.close().catch(() => {
|
|
258
|
+
});
|
|
259
|
+
throw new WorktreeMarkerCommittedError(sessionId, { cause: error });
|
|
216
260
|
}
|
|
217
261
|
await addWorktreeSessionMarkerExclude(worktreePath);
|
|
218
262
|
}
|
|
219
263
|
__name(createWorktreeSessionMarkerExclusive, "createWorktreeSessionMarkerExclusive");
|
|
264
|
+
function assertValidWorktreeSessionMarkerOwner(sessionId) {
|
|
265
|
+
if (sessionId.length === 0 || Buffer.byteLength(sessionId, "utf8") > WORKTREE_SESSION_MARKER_MAX_BYTES || sessionId.trim() !== sessionId) {
|
|
266
|
+
throw new Error("Invalid worktree session marker owner");
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
__name(assertValidWorktreeSessionMarkerOwner, "assertValidWorktreeSessionMarkerOwner");
|
|
220
270
|
async function readWorktreeSessionMarkerStrict(worktreePath) {
|
|
221
271
|
const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
|
|
222
272
|
let handle;
|
|
@@ -267,7 +317,13 @@ async function readWorktreeSessionMarkerStrict(worktreePath) {
|
|
|
267
317
|
if (sessionId.length === 0 || sessionId !== raw || Buffer.byteLength(sessionId, "utf8") > WORKTREE_SESSION_MARKER_MAX_BYTES) {
|
|
268
318
|
return { state: "invalid", reason: "invalid marker owner" };
|
|
269
319
|
}
|
|
270
|
-
return {
|
|
320
|
+
return {
|
|
321
|
+
state: "valid",
|
|
322
|
+
sessionId,
|
|
323
|
+
uid: process.geteuid === void 0 ? null : after.uid,
|
|
324
|
+
dev: after.dev,
|
|
325
|
+
ino: after.ino
|
|
326
|
+
};
|
|
271
327
|
} catch (error) {
|
|
272
328
|
if (isNodeError(error) && error.code === "ENOENT") {
|
|
273
329
|
return observedMarker ? { state: "invalid", reason: "marker disappeared during read" } : { state: "missing" };
|
|
@@ -282,6 +338,122 @@ async function readWorktreeSessionMarkerStrict(worktreePath) {
|
|
|
282
338
|
}
|
|
283
339
|
}
|
|
284
340
|
__name(readWorktreeSessionMarkerStrict, "readWorktreeSessionMarkerStrict");
|
|
341
|
+
function readWorktreeSessionMarkerStrictSync(worktreePath) {
|
|
342
|
+
const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
|
|
343
|
+
let fd;
|
|
344
|
+
let observedMarker = false;
|
|
345
|
+
try {
|
|
346
|
+
const flags = nodeFs.constants.O_RDONLY | (nodeFs.constants.O_NOFOLLOW ?? 0) | (nodeFs.constants.O_NONBLOCK ?? 0);
|
|
347
|
+
const before = nodeFs.lstatSync(markerPath);
|
|
348
|
+
observedMarker = true;
|
|
349
|
+
if (before.isSymbolicLink() || !before.isFile() || before.nlink !== 1) {
|
|
350
|
+
return { state: "invalid", reason: "unsafe marker file type" };
|
|
351
|
+
}
|
|
352
|
+
if (before.ino === 0 || before.size > WORKTREE_SESSION_MARKER_MAX_BYTES) {
|
|
353
|
+
return { state: "invalid", reason: "unsafe marker size or identity" };
|
|
354
|
+
}
|
|
355
|
+
fd = nodeFs.openSync(markerPath, flags);
|
|
356
|
+
const opened = nodeFs.fstatSync(fd);
|
|
357
|
+
if (!opened.isFile() || opened.nlink !== 1 || opened.dev !== before.dev || opened.ino !== before.ino) {
|
|
358
|
+
return {
|
|
359
|
+
state: "invalid",
|
|
360
|
+
reason: "marker identity changed before read"
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
const markerBuffer = Buffer.alloc(WORKTREE_SESSION_MARKER_MAX_BYTES + 1);
|
|
364
|
+
let bytesRead = 0;
|
|
365
|
+
while (bytesRead < markerBuffer.length) {
|
|
366
|
+
const chunk = nodeFs.readSync(
|
|
367
|
+
fd,
|
|
368
|
+
markerBuffer,
|
|
369
|
+
bytesRead,
|
|
370
|
+
markerBuffer.length - bytesRead,
|
|
371
|
+
bytesRead
|
|
372
|
+
);
|
|
373
|
+
if (chunk === 0) break;
|
|
374
|
+
bytesRead += chunk;
|
|
375
|
+
}
|
|
376
|
+
if (bytesRead > WORKTREE_SESSION_MARKER_MAX_BYTES) {
|
|
377
|
+
return { state: "invalid", reason: "unsafe marker size or identity" };
|
|
378
|
+
}
|
|
379
|
+
const raw = markerBuffer.subarray(0, bytesRead).toString("utf8");
|
|
380
|
+
const after = nodeFs.fstatSync(fd);
|
|
381
|
+
const pathStats = nodeFs.lstatSync(markerPath);
|
|
382
|
+
if (!after.isFile() || after.nlink !== 1 || after.size !== bytesRead || after.size > WORKTREE_SESSION_MARKER_MAX_BYTES || after.dev !== opened.dev || after.ino !== opened.ino || !pathStats.isFile() || pathStats.nlink !== 1 || pathStats.dev !== after.dev || pathStats.ino !== after.ino) {
|
|
383
|
+
return {
|
|
384
|
+
state: "invalid",
|
|
385
|
+
reason: "marker identity changed during read"
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
const sessionId = raw.trim();
|
|
389
|
+
if (sessionId.length === 0 || sessionId !== raw || Buffer.byteLength(sessionId, "utf8") > WORKTREE_SESSION_MARKER_MAX_BYTES) {
|
|
390
|
+
return { state: "invalid", reason: "invalid marker owner" };
|
|
391
|
+
}
|
|
392
|
+
return {
|
|
393
|
+
state: "valid",
|
|
394
|
+
sessionId,
|
|
395
|
+
uid: process.geteuid === void 0 ? null : after.uid,
|
|
396
|
+
dev: after.dev,
|
|
397
|
+
ino: after.ino
|
|
398
|
+
};
|
|
399
|
+
} catch (error) {
|
|
400
|
+
if (isNodeError(error) && error.code === "ENOENT") {
|
|
401
|
+
return observedMarker ? { state: "invalid", reason: "marker disappeared during read" } : { state: "missing" };
|
|
402
|
+
}
|
|
403
|
+
return {
|
|
404
|
+
state: "invalid",
|
|
405
|
+
reason: error instanceof Error ? error.message : String(error)
|
|
406
|
+
};
|
|
407
|
+
} finally {
|
|
408
|
+
if (fd !== void 0) {
|
|
409
|
+
try {
|
|
410
|
+
nodeFs.closeSync(fd);
|
|
411
|
+
} catch {
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
__name(readWorktreeSessionMarkerStrictSync, "readWorktreeSessionMarkerStrictSync");
|
|
417
|
+
async function transferWorktreeSessionMarkerOwner(worktreePath, expectedOwner, newOwner) {
|
|
418
|
+
assertValidWorktreeSessionMarkerOwner(newOwner);
|
|
419
|
+
if (expectedOwner !== null) {
|
|
420
|
+
assertValidWorktreeSessionMarkerOwner(expectedOwner);
|
|
421
|
+
if (expectedOwner === newOwner) {
|
|
422
|
+
throw new Error("Worktree marker transfer needs a distinct new owner");
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
const opening = await readWorktreeSessionMarkerStrict(worktreePath);
|
|
426
|
+
if (opening.state === "invalid") {
|
|
427
|
+
throw new Error(`Worktree marker is invalid: ${opening.reason}`);
|
|
428
|
+
}
|
|
429
|
+
if (opening.state === "missing") {
|
|
430
|
+
if (expectedOwner !== null) {
|
|
431
|
+
throw new Error("Worktree marker owner does not match the expectation");
|
|
432
|
+
}
|
|
433
|
+
await createWorktreeSessionMarkerExclusive(worktreePath, newOwner);
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
if (opening.sessionId !== expectedOwner) {
|
|
437
|
+
throw new Error("Worktree marker owner does not match the expectation");
|
|
438
|
+
}
|
|
439
|
+
const euid = process.geteuid?.();
|
|
440
|
+
if (euid !== void 0 && opening.uid !== null && opening.uid !== euid) {
|
|
441
|
+
throw new Error("Worktree marker is owned by a different uid");
|
|
442
|
+
}
|
|
443
|
+
const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
|
|
444
|
+
await atomicWriteFile(markerPath, newOwner, {
|
|
445
|
+
mode: 384,
|
|
446
|
+
noFollow: true,
|
|
447
|
+
assertCanCommit: /* @__PURE__ */ __name(() => {
|
|
448
|
+
const current = readWorktreeSessionMarkerStrictSync(worktreePath);
|
|
449
|
+
if (current.state !== "valid" || current.sessionId !== opening.sessionId || current.dev !== opening.dev || current.ino !== opening.ino || current.uid !== opening.uid) {
|
|
450
|
+
throw new Error("Worktree marker changed during ownership transfer");
|
|
451
|
+
}
|
|
452
|
+
}, "assertCanCommit")
|
|
453
|
+
});
|
|
454
|
+
await addWorktreeSessionMarkerExclude(worktreePath);
|
|
455
|
+
}
|
|
456
|
+
__name(transferWorktreeSessionMarkerOwner, "transferWorktreeSessionMarkerOwner");
|
|
285
457
|
async function readWorktreeSessionMarker(worktreePath) {
|
|
286
458
|
const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
|
|
287
459
|
try {
|
|
@@ -1826,9 +1998,12 @@ export {
|
|
|
1826
1998
|
clearRuntimeStatus,
|
|
1827
1999
|
loadSimpleGit,
|
|
1828
2000
|
worktreeBranchForSlug,
|
|
2001
|
+
WORKTREE_SESSION_FILE,
|
|
1829
2002
|
writeWorktreeSessionMarker,
|
|
2003
|
+
WorktreeMarkerCommittedError,
|
|
1830
2004
|
createWorktreeSessionMarkerExclusive,
|
|
1831
2005
|
readWorktreeSessionMarkerStrict,
|
|
2006
|
+
transferWorktreeSessionMarkerOwner,
|
|
1832
2007
|
readWorktreeSessionMarker,
|
|
1833
2008
|
AGENT_WORKTREE_SLUG_PATTERN,
|
|
1834
2009
|
generateAgentWorktreeSlug,
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
t
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-CRZBDVP2.js";
|
|
6
6
|
import {
|
|
7
7
|
computeThresholds,
|
|
8
8
|
estimateContextTextTokens,
|
|
9
9
|
formatContextFileDisplayPath,
|
|
10
10
|
getMainSessionBaseSystemPrompt
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-PDUMGZ2P.js";
|
|
12
12
|
import {
|
|
13
13
|
DiscoveredMCPTool,
|
|
14
14
|
uiTelemetryService
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-6QV7Z74P.js";
|
|
16
16
|
import {
|
|
17
17
|
DEFAULT_TOKEN_LIMIT
|
|
18
18
|
} from "./chunk-FPGTNKCP.js";
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
import {
|
|
4
4
|
TURN_INTERRUPTION_HISTORY_TAIL_COUNT,
|
|
5
5
|
detectTurnInterruption
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZU2T5JIS.js";
|
|
7
7
|
import {
|
|
8
8
|
SessionService,
|
|
9
9
|
buildApiHistoryFromConversation
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PDUMGZ2P.js";
|
|
11
11
|
import {
|
|
12
12
|
init_esbuild_shims
|
|
13
13
|
} from "./chunk-5O2XNYP6.js";
|