@qwen-code/qwen-code 0.20.0 → 0.20.1-nightly.20260724.7d17c44a3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +1 -1
- package/bundled/qc-helper/docs/features/auto-mode.md +19 -16
- package/bundled/qc-helper/docs/features/commands.md +54 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +16 -7
- package/bundled/qc-helper/docs/integration-github-action.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +2 -1
- package/bundled/review/DESIGN.md +2 -2
- package/bundled/review/SKILL.md +7 -5
- package/chunks/MaxSizedBox-LGRTXB47.js +84 -0
- package/chunks/{StandaloneSessionPicker-CEGO2AZX.js → StandaloneSessionPicker-H3TBU3C3.js} +68 -56
- package/chunks/{acp-startup-profiler-N3RHHXJ3.js → acp-startup-profiler-RV3IV562.js} +2 -2
- package/chunks/{acpAgent-YUR43TLG.js → acpAgent-5D7P4BB5.js} +2061 -556
- package/chunks/agent-W7UAHCCI.js +80 -0
- package/chunks/agent-headless-KTBMPRSC.js +74 -0
- package/chunks/{anthropicContentGenerator-HVKLXOOU.js → anthropicContentGenerator-ZLQ3X2HI.js} +112 -45
- package/chunks/{artifact-tool-WBCAMD3O.js → artifact-tool-OKMWONT6.js} +3 -3
- package/chunks/{askUserQuestion-6DZC4UV5.js → askUserQuestion-V6FUS23G.js} +3 -3
- package/chunks/bridge-FFC4C6VD.js +89 -0
- package/chunks/{build-SSCNEHZZ.js → build-RV63TIRH.js} +2 -3
- package/chunks/{ca-2SL2BXTK.js → ca-GKRQZ7AM.js} +612 -201
- package/chunks/{channel-worker-group-53CMOPFT.js → channel-worker-group-MA3WXWYX.js} +7 -6
- package/chunks/{channel-worker-manager-UTXILKC2.js → channel-worker-manager-TIYYYBCT.js} +189 -29
- package/chunks/{channel-worker-supervisor-ZGO2W2MD.js → channel-worker-supervisor-CXRCDA4Y.js} +6 -5
- package/chunks/{chunk-TYQMGACW.js → chunk-22C7BQ6D.js} +508 -10967
- package/chunks/{chunk-4EP2PYYL.js → chunk-2G6QIHYL.js} +5 -5
- package/chunks/{chunk-H2XVO6NE.js → chunk-2MIN6GRR.js} +1 -1
- package/chunks/chunk-2RFKHEXL.js +74 -0
- package/chunks/{chunk-7SXZC7ID.js → chunk-2WTVWAKT.js} +7 -6
- package/chunks/{chunk-TIH2ZTOC.js → chunk-32A4PI3E.js} +2 -2
- package/chunks/chunk-36HSVBBU.js +469 -0
- package/chunks/{chunk-IR46U7RB.js → chunk-3FB2Y2OE.js} +3 -3
- package/chunks/{chunk-QR6U5QPP.js → chunk-3SJ43L4W.js} +4 -0
- package/chunks/chunk-3Z43GZUQ.js +32 -0
- package/chunks/chunk-43T5WDQ7.js +127 -0
- package/chunks/chunk-46UV252V.js +128 -0
- package/chunks/{chunk-JD3MKVKL.js → chunk-4K56OJFJ.js} +1 -1
- package/chunks/{chunk-KTUQMDEP.js → chunk-4K7VDKAD.js} +1 -1
- package/chunks/{chunk-QKYTTBYW.js → chunk-4LVZNIDO.js} +1 -1
- package/chunks/{chunk-OWCALFEG.js → chunk-54R2CV2G.js} +1 -1
- package/chunks/{chunk-ZEOZL37W.js → chunk-57FIIFJN.js} +1 -1
- package/chunks/chunk-5BS3KLRP.js +6194 -0
- package/chunks/{chunk-NEEB7UEN.js → chunk-6GMVPFB2.js} +153 -72
- package/chunks/{chunk-GMGDLUC7.js → chunk-6IL7KRLE.js} +1 -1
- package/chunks/chunk-6PVPNMXU.js +29 -0
- package/chunks/chunk-6QHAUJUE.js +293 -0
- package/chunks/chunk-6VK3IRTX.js +10017 -0
- package/chunks/{chunk-BDBMYST4.js → chunk-6X4GWOPW.js} +1 -1
- package/chunks/{chunk-AYCDXHZB.js → chunk-7Z6JQEL6.js} +1 -1
- package/chunks/{chunk-FSL5W5TI.js → chunk-AFFGGOF6.js} +4 -4
- package/chunks/chunk-AMDSOFFV.js +10860 -0
- package/chunks/chunk-AXUW635Q.js +934 -0
- package/chunks/{chunk-A5LYNIW7.js → chunk-BJBUDCM3.js} +8 -8
- package/chunks/chunk-BK2UNYWD.js +29 -0
- package/chunks/{chunk-6RLROE6G.js → chunk-BLFVGB7D.js} +30 -4
- package/chunks/chunk-BPJSQIJX.js +100 -0
- package/chunks/{chunk-FLSVD6BS.js → chunk-BRTR7S7O.js} +3 -3
- package/chunks/{chunk-KG3XV6FH.js → chunk-BSNWBC33.js} +32 -2
- package/chunks/chunk-BULDBTYC.js +153 -0
- package/chunks/{chunk-PBWEWI4N.js → chunk-BW5Z5NOG.js} +83 -74
- package/chunks/{chunk-EIAK6Q2B.js → chunk-C3VHAXP2.js} +20 -3
- package/chunks/{chunk-6AFUCL3D.js → chunk-CEZB3XFD.js} +1 -1
- package/chunks/chunk-CHMENNJV.js +1832 -0
- package/chunks/{chunk-TMQ6XQCX.js → chunk-CK3IEEHR.js} +416 -291
- package/chunks/{chunk-OYZWQNWG.js → chunk-CK6UABV2.js} +2 -2
- package/chunks/{chunk-VZQUV7VK.js → chunk-CKTMY3EP.js} +1 -1
- package/chunks/{chunk-VDWBQ5AW.js → chunk-CUPAVLRY.js} +5 -2
- package/chunks/{chunk-I2PYAYFM.js → chunk-CXUFILV3.js} +3 -3
- package/chunks/chunk-DP3IHZGG.js +1498 -0
- package/chunks/{chunk-BMWMT5Y2.js → chunk-DP5GT2MW.js} +7 -375
- package/chunks/{chunk-D22SX43D.js → chunk-DWNZ6PVQ.js} +1 -1
- package/chunks/{chunk-5SCI6E3E.js → chunk-E4IMU4Y5.js} +1 -1
- package/chunks/{chunk-DP5GXXNZ.js → chunk-EL2IQ2S5.js} +5 -1
- package/chunks/{chunk-EZVDJFZ7.js → chunk-ERLGR7GI.js} +1 -1
- package/chunks/{chunk-IVPSS6EL.js → chunk-F5MBYZSU.js} +4 -4
- package/chunks/{chunk-AQIEINAY.js → chunk-F6IYL66A.js} +28 -1766
- package/chunks/{chunk-FEOZBUMT.js → chunk-FODK6UMO.js} +0 -27
- package/chunks/{chunk-PGEPSDJI.js → chunk-FWNZ7CVN.js} +24 -20
- package/chunks/{chunk-5JBR5XIK.js → chunk-G7EFBBVF.js} +220 -141
- package/chunks/chunk-GLNBDYUX.js +38 -0
- package/chunks/{chunk-ANPINBOF.js → chunk-H4YKEV2X.js} +5 -5
- package/chunks/{chunk-TDKQP3M6.js → chunk-HIJQF5B5.js} +1 -1
- package/chunks/{chunk-FQD7GFSV.js → chunk-HJJDKFL5.js} +3 -3
- package/chunks/{chunk-4N3KMAIL.js → chunk-HPWHDJID.js} +152 -35
- package/chunks/{chunk-KQNM4EO7.js → chunk-HQCSRJ3P.js} +138 -6
- package/chunks/chunk-HTR4WV6U.js +327 -0
- package/chunks/{chunk-YWEW33JY.js → chunk-HVO55LUD.js} +7 -7
- package/chunks/{chunk-MJ6S23WZ.js → chunk-HZEWYOVI.js} +5 -5
- package/chunks/chunk-IFG6TYJ2.js +16577 -0
- package/chunks/{chunk-B3KGZCQN.js → chunk-IJTOWOD7.js} +322 -202
- package/chunks/{chunk-RS7MT2QG.js → chunk-IPUUTYMV.js} +2 -4
- package/chunks/{chunk-4ILMYHEI.js → chunk-IRDZJSCL.js} +3 -3
- package/chunks/{chunk-XU457J4V.js → chunk-IRH27ZC2.js} +2 -2
- package/chunks/{chunk-33XUAINQ.js → chunk-J5UKQEFG.js} +69 -9
- package/chunks/{chunk-G45X5TRN.js → chunk-JCW2R7WC.js} +1 -72
- package/chunks/{chunk-S2XVRHDN.js → chunk-JDFBBGRD.js} +1 -1
- package/chunks/{chunk-4XNLIGVA.js → chunk-JKCALGYN.js} +1023 -383
- package/chunks/{chunk-TJTKSVIV.js → chunk-JLU636DO.js} +5 -1
- package/chunks/{chunk-VEXFOTEO.js → chunk-JYUSL2V4.js} +3 -3
- package/chunks/{chunk-S2PD3EZD.js → chunk-KJEMJWNH.js} +1 -1
- package/chunks/{chunk-E2UVIFI2.js → chunk-KRXPRVGL.js} +0 -1
- package/chunks/{chunk-CZF3E5GF.js → chunk-LA5H3LM5.js} +1 -1
- package/chunks/{chunk-NDMQLV4Y.js → chunk-LBAO2XRA.js} +4 -4
- package/chunks/{chunk-7RMOXZTC.js → chunk-LDPP5VTZ.js} +4 -4
- package/chunks/{chunk-KDC6GNQR.js → chunk-LEEWLFHW.js} +4 -4
- package/chunks/{chunk-KX6UK4VJ.js → chunk-LI4I37W4.js} +22152 -18007
- package/chunks/{chunk-OOCI5VVU.js → chunk-LIZRAKPB.js} +1 -1
- package/chunks/{chunk-AJSJ5TTU.js → chunk-LP2E4MQG.js} +1 -1
- package/chunks/chunk-LS77BEZP.js +405 -0
- package/chunks/{chunk-BRRF37CO.js → chunk-LYTBLSSW.js} +5 -5
- package/chunks/{chunk-DBE4QFZS.js → chunk-MB7ENXPR.js} +39 -37
- package/chunks/{chunk-GKY2OJ7R.js → chunk-MOHAWVLH.js} +4 -4
- package/chunks/chunk-NABLFI57.js +82 -0
- package/chunks/chunk-NBQDBANR.js +411 -0
- package/chunks/{chunk-EAUYY7SS.js → chunk-NOAAFNTJ.js} +43 -10
- package/chunks/chunk-NXS53EA7.js +1462 -0
- package/chunks/{chunk-C27BYUX6.js → chunk-OQB4EXO4.js} +14 -11
- package/chunks/{chunk-NHDKSOEY.js → chunk-P3QQPMQA.js} +5 -5
- package/chunks/{chunk-OP4MOGXF.js → chunk-P5RRUHL7.js} +23 -1
- package/chunks/{chunk-KOR3XKCA.js → chunk-PBII2NFX.js} +12 -6
- package/chunks/{chunk-O3OCNYY5.js → chunk-PDYB7HG2.js} +2 -2
- package/chunks/{chunk-2HOVDT7W.js → chunk-PFSUKTZH.js} +1 -1
- package/chunks/chunk-PKL3HGNZ.js +2299 -0
- package/chunks/{chunk-5DTTYNB7.js → chunk-PQNHRFJC.js} +16 -3
- package/chunks/{chunk-OLMETXLX.js → chunk-PXHK5ONM.js} +41 -9
- package/chunks/{chunk-PF4CHQOJ.js → chunk-Q6GU6TKM.js} +11 -10
- package/chunks/{chunk-4ODB7WIB.js → chunk-QAFKR7WR.js} +1 -1
- package/chunks/{chunk-PBATSWUQ.js → chunk-QBUDF33N.js} +1 -1
- package/chunks/{chunk-BVLROR2T.js → chunk-QLJUC7TG.js} +1 -1
- package/chunks/{chunk-UEY4AYUL.js → chunk-QNLNLENL.js} +2 -2
- package/chunks/{chunk-333CXMNJ.js → chunk-QXZTZJLX.js} +5 -5
- package/chunks/chunk-R6D2CTQR.js +289 -0
- package/chunks/{chunk-7PZ2ATFZ.js → chunk-R6SKHK3T.js} +54 -29
- package/chunks/{chunk-OONJNQ42.js → chunk-RGG6M2WF.js} +4 -4
- package/chunks/{chunk-RFIAR4YL.js → chunk-RV4C2ZFG.js} +1 -1
- package/chunks/{chunk-O3Z73NBP.js → chunk-RW2NEXYJ.js} +15 -11
- package/chunks/{chunk-HZPN55E5.js → chunk-SJEDL7DI.js} +1 -1
- package/chunks/{chunk-AKX4WPPP.js → chunk-SWBJRDYC.js} +866 -183
- package/chunks/{chunk-NBMIC7DR.js → chunk-SX4PK3FC.js} +145 -5
- package/chunks/chunk-T3452DP5.js +246 -0
- package/chunks/{chunk-TB6UDU4T.js → chunk-THJNPLI4.js} +16 -16
- package/chunks/{chunk-T4TZQJ7W.js → chunk-TWPJO254.js} +5 -16
- package/chunks/chunk-U7ZFW55U.js +2098 -0
- package/chunks/{chunk-JNWZQ27S.js → chunk-UCOJC6EB.js} +72 -23
- package/chunks/{chunk-W7H223ZZ.js → chunk-UGYMA4EI.js} +1 -1
- package/chunks/{chunk-X6YQWCIJ.js → chunk-UH3WSE5L.js} +13 -1
- package/chunks/{chunk-2LL7TXB4.js → chunk-UH7242DI.js} +3 -3
- package/chunks/{chunk-CB2HFGRV.js → chunk-UJV643E2.js} +31 -6
- package/chunks/chunk-UO7DCGEV.js +121 -0
- package/chunks/{chunk-Y2ENGUD6.js → chunk-UPF7PTBI.js} +79 -2
- package/chunks/chunk-UW5EOVUN.js +249 -0
- package/chunks/{chunk-SJMV7ZBK.js → chunk-VLVO52KC.js} +8 -8
- package/chunks/{chunk-R3VWUU2E.js → chunk-VYPFXUCB.js} +1 -1
- package/chunks/{chunk-S2W2LVDU.js → chunk-WHFK6G6U.js} +8 -9
- package/chunks/chunk-WI3KCKZ5.js +391 -0
- package/chunks/{chunk-NGFEPAE6.js → chunk-WLEFWSSC.js} +8 -6
- package/chunks/{chunk-XVVH63JG.js → chunk-WUJXJ34P.js} +3 -3
- package/chunks/{chunk-MAQQGNQ5.js → chunk-WYLPWQHJ.js} +56 -717
- package/chunks/{chunk-D2VIDMVM.js → chunk-X6N25LXS.js} +2 -2
- package/chunks/chunk-XAWJ2526.js +1049 -0
- package/chunks/{chunk-CV63PP6U.js → chunk-YCIM6O3I.js} +1 -1
- package/chunks/{chunk-OEO2ERWK.js → chunk-Z44CVEUF.js} +54 -33
- package/chunks/{chunk-TKLLK6XQ.js → chunk-ZT4POVWC.js} +11 -11
- package/chunks/{chunk-NIJEXGV6.js → chunk-ZXYUQXY5.js} +148 -10
- package/chunks/{computer-use-NIWQNUZF.js → computer-use-UJ5T34TE.js} +50 -37
- package/chunks/{config-utils-AHQ6YZ66.js → config-utils-XQRXHAN3.js} +3 -3
- package/chunks/contextCommand-CSCB4E5M.js +79 -0
- package/chunks/{create-sub-session-MGNX52P3.js → create-sub-session-55F3GOLK.js} +46 -33
- package/chunks/{create-sub-session-P26FE5GG.js → create-sub-session-JPCSYZAJ.js} +3 -3
- package/chunks/{cron-create-JWFHBDRQ.js → cron-create-CUMELMPL.js} +6 -6
- package/chunks/{cron-delete-GDX4E26G.js → cron-delete-QZFV6U3P.js} +5 -5
- package/chunks/{cron-list-USMAIWPT.js → cron-list-IDKO7ZO2.js} +5 -5
- package/chunks/{daemon-RG2MAI6T.js → daemon-7LP7R6IU.js} +500 -133
- package/chunks/daemon-status-provider-6YNZ3UAE.js +88 -0
- package/chunks/{de-I7ZIYXZC.js → de-4IBXM7CN.js} +5 -1
- package/chunks/{dist-WGTQO7F2.js → dist-376652EZ.js} +114 -28
- package/chunks/{dist-53PZYC5B.js → dist-3YCTE6HD.js} +2 -2
- package/chunks/{dist-2BHAYBKP.js → dist-D7Z3HOO7.js} +14 -2
- package/chunks/{dist-FUTEXY6A.js → dist-MEGJFGAI.js} +40 -9
- package/chunks/{dist-2MIU4UUH.js → dist-NQ436QEX.js} +1 -1
- package/chunks/{dist-AU7NQQRP.js → dist-NQNTOIEN.js} +26 -2
- package/chunks/earlyInputCapture-HPUVJ2KH.js +81 -0
- package/chunks/{edit-3QV3JZJL.js → edit-7CMAN3F4.js} +50 -39
- package/chunks/{en-XE34GKAA.js → en-SALLIJS7.js} +6 -1
- package/chunks/{enter-worktree-4GMMF7EG.js → enter-worktree-3PH4YTY2.js} +49 -36
- package/chunks/{enterPlanMode-L5UWBAUC.js → enterPlanMode-MSXLSWLI.js} +55 -37
- package/chunks/{environment-3OV7UQOT.js → environment-KS36ZHBE.js} +48 -35
- package/chunks/errors-LCPFS62A.js +87 -0
- package/chunks/{exit-worktree-DDP57JLV.js → exit-worktree-ARA4C3CK.js} +49 -36
- package/chunks/{exitPlanMode-CJBLGPIP.js → exitPlanMode-GCDIQPB7.js} +49 -36
- package/chunks/{fast-path-M6RP2ING.js → fast-path-IDHBVIT6.js} +3 -2
- package/chunks/{fr-X7KDVZIY.js → fr-WVHEBDDB.js} +5 -1
- package/chunks/{gemini-H4PHBJTL.js → gemini-2AFQJMX5.js} +141 -105
- package/chunks/{geminiContentGenerator-VURJYPWP.js → geminiContentGenerator-UDIH3YI6.js} +9 -8
- package/chunks/{getMachineId-bsd-EXV7SWPA.js → getMachineId-bsd-QFVLPUPT.js} +1 -1
- package/chunks/{getMachineId-darwin-IUOMFXU3.js → getMachineId-darwin-DGMQQE2E.js} +1 -1
- package/chunks/{getMachineId-linux-K7XJYFHL.js → getMachineId-linux-R4Z6CSWC.js} +1 -1
- package/chunks/{getMachineId-unsupported-EA5FDRJ6.js → getMachineId-unsupported-Z3SBVBUV.js} +1 -1
- package/chunks/{getMachineId-win-KBA6RAI5.js → getMachineId-win-SCK5UFDT.js} +1 -1
- package/chunks/{glob-2KUSRAVQ.js → glob-HCL7HZ67.js} +49 -36
- package/chunks/{grep-B5RXVESV.js → grep-CJLBSCTV.js} +49 -36
- package/chunks/handleAutoUpdate-Q572P3FL.js +80 -0
- package/chunks/i18n-OBB4R7SR.js +96 -0
- package/chunks/initializer-LXEY6V3C.js +85 -0
- package/chunks/installationInfo-XUAOVMEE.js +79 -0
- package/chunks/{ja-2ICT3KXF.js → ja-KY4ROZTE.js} +5 -1
- package/chunks/{keychain-token-storage-DWRJMNH3.js → keychain-token-storage-6ACJDYIB.js} +3 -3
- package/chunks/{kittyProtocolDetector-HCNNKJTI.js → kittyProtocolDetector-MBRTDRBK.js} +5 -3
- package/chunks/list-WAXY7QOU.js +88 -0
- package/chunks/list-agents-AH3P5NB7.js +80 -0
- package/chunks/loadedSettingsAdapter-OZFNBRHE.js +82 -0
- package/chunks/loggingContentGenerator-7WDTTE6G.js +1068 -0
- package/chunks/{loop-wakeup-5GLTUBHA.js → loop-wakeup-IHRW6TNB.js} +7 -7
- package/chunks/{ls-FHBY3Y7I.js → ls-ZAXZ2G2W.js} +5 -5
- package/chunks/{lsp-B6VMEW6Y.js → lsp-R4ZG3UGQ.js} +3 -3
- package/chunks/managed-npm-update-N42DO5QW.js +339 -0
- package/chunks/mcp-6SOORKTY.js +82 -0
- package/chunks/{monitor-GLJZDNPS.js → monitor-4PSVNVU4.js} +51 -37
- package/chunks/node-UUDY34IG.js +305 -0
- package/chunks/nonInteractiveCli-FBR5S7IZ.js +140 -0
- package/chunks/{notebook-edit-AVCIWS4F.js → notebook-edit-QK26632S.js} +50 -39
- package/chunks/{openaiContentGenerator-B7W24G3D.js → openaiContentGenerator-IXJS6C2U.js} +33 -20
- package/chunks/pidfile-UCFCJOAP.js +85 -0
- package/chunks/{processUtils-XZPY2PBB.js → processUtils-YL2LXON2.js} +2 -2
- package/chunks/{pt-JJ4XPIBP.js → pt-OK455PLH.js} +5 -1
- package/chunks/{qwenContentGenerator-6GUTWJIC.js → qwenContentGenerator-H6WZPJKC.js} +56 -36
- package/chunks/{qwenOAuth2-GASEEWGU.js → qwenOAuth2-HTROHKXO.js} +10 -23
- package/chunks/read-file-FOYTMUNL.js +31 -0
- package/chunks/{read-mcp-resource-AKCL7I43.js → read-mcp-resource-65BWNF3F.js} +3 -3
- package/chunks/{record-artifact-PEUB7727.js → record-artifact-2RLSOP6U.js} +3 -3
- package/chunks/resumeHistoryUtils-ZNHTWBXS.js +90 -0
- package/chunks/ripGrep-K4K4QLNJ.js +72 -0
- package/chunks/{ru-STR4KTW7.js → ru-7SPDGMGD.js} +5 -1
- package/chunks/{run-qwen-serve-OZGR3FQA.js → run-qwen-serve-XI4MCAFV.js} +343 -88
- package/chunks/runtime-4CTBU5WX.js +115 -0
- package/chunks/{scheduler-Z7QLMUWA.js → scheduler-TTEITHBF.js} +46 -33
- package/chunks/sdk-exporters-grpc-N3OLDF63.js +23214 -0
- package/chunks/sdk-exporters-http-AOHAEOMC.js +563 -0
- package/chunks/sdk-impl-TLQOC7P4.js +9193 -0
- package/chunks/{send-message-3RHE7HSM.js → send-message-GEY4CNPS.js} +47 -8
- package/chunks/serve-W7UKJTQT.js +88 -0
- package/chunks/{server-SO64U3X5.js → server-JD5PIE7A.js} +3069 -517
- package/chunks/{session-2KL2WQAH.js → session-R4BDHLYR.js} +112 -177
- package/chunks/{settings-KITVOUSV.js → settings-BXZHA6TZ.js} +50 -37
- package/chunks/shell-XYMFCGN5.js +82 -0
- package/chunks/{skill-SOQHY455.js → skill-YKXYEPOF.js} +25 -20
- package/chunks/spawnChannel-IO4HQLFS.js +81 -0
- package/chunks/{src-43LM7JLB.js → src-LKKTJ4NG.js} +382 -235
- package/chunks/standalone-update-76JG7DVN.js +91 -0
- package/chunks/{startInteractiveUI-3RGTGEX5.js → startInteractiveUI-BXWQUXAS.js} +1314 -958
- package/chunks/{syntheticOutput-FG5PQKIR.js → syntheticOutput-2WNMXEU5.js} +4 -4
- package/chunks/task-create-R5H74Y76.js +25 -0
- package/chunks/{task-list-QWSY4ZIU.js → task-list-WXAFDSRY.js} +7 -7
- package/chunks/{task-stop-GWC6UWAL.js → task-stop-CHFZP23W.js} +4 -4
- package/chunks/{task-update-NCTAB73Q.js → task-update-Z44A4GAR.js} +11 -9
- package/chunks/{team-create-FXN3PEBP.js → team-create-5Y3MCAIM.js} +49 -36
- package/chunks/{team-delete-KK37HTOG.js → team-delete-YDCMRSI4.js} +7 -7
- package/chunks/{team-plan-approval-GEIZ356Q.js → team-plan-approval-HYJJZ76T.js} +49 -36
- package/chunks/theme-manager-3YF2SUZL.js +76 -0
- package/chunks/{todoWrite-ERCAMLFS.js → todoWrite-ED2IVZJL.js} +5 -5
- package/chunks/{tool-search-XKK7DNOK.js → tool-search-3ZO2XMEP.js} +21 -17
- package/chunks/total-session-admission-NDF7EVG7.js +83 -0
- package/chunks/trustedFolders-Q7RALK4T.js +92 -0
- package/chunks/{chunk-6EFTQYW7.js → undici-3FJYTMOF.js} +24 -399
- package/chunks/{chunk-L573Z2QZ.js → undici-PYHBDDPN.js} +1 -5
- package/chunks/{update-relaunch-FMVZK6XF.js → update-relaunch-BTW5XGVT.js} +17 -17
- package/chunks/updateCheck-MXIU6DWQ.js +91 -0
- package/chunks/useAutoAcceptIndicator-BJXHJW77.js +92 -0
- package/chunks/{validateNonInterActiveAuth-PRVEB6GG.js → validateNonInterActiveAuth-FLEPF3QQ.js} +90 -76
- package/chunks/{version-AZMG6KWL.js → version-75VRONIL.js} +1 -1
- package/chunks/{web-fetch-EPGJ5OQQ.js → web-fetch-5X27LYHB.js} +101 -41
- package/chunks/web-search-IDMTBJUP.js +718 -0
- package/chunks/{workflow-UTNVPW22.js → workflow-JOD2OPFQ.js} +54 -40
- package/chunks/workspace-providers-status-WDLBDLPG.js +85 -0
- package/chunks/{workspace-registration-store-F3ZX3YHT.js → workspace-registration-store-26Z6J6P5.js} +9 -3
- package/chunks/workspace-registry-IABDATX3.js +87 -0
- package/chunks/workspace-service-BI4KDYPD.js +97 -0
- package/chunks/workspace-skills-status-OVB4LPHA.js +84 -0
- package/chunks/write-file-276AJ7KE.js +72 -0
- package/chunks/{zh-6ANG2HTL.js → zh-Q54GA5SV.js} +6 -1
- package/chunks/{zh-TW-4RR3YHNN.js → zh-TW-VOBNFOPU.js} +6 -1
- package/cli-entry.js +164 -12
- package/cli.js +19 -12
- package/locales/ca.js +773 -203
- package/locales/de.js +8 -2
- package/locales/en.js +9 -2
- package/locales/fr.js +8 -2
- package/locales/ja.js +8 -2
- package/locales/pt.js +8 -2
- package/locales/ru.js +8 -2
- package/locales/zh-TW.js +9 -2
- package/locales/zh.js +9 -2
- package/package.json +3 -3
- package/web-shell/assets/{arc-Buk1besA.js → arc-CMb7lr2P.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-B1aUKYDC.js → architectureDiagram-3BPJPVTR-D6KQ5Kwm.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-CRTdg3Zx.js → blockDiagram-GPEHLZMM-Ce7YYSf8.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DFdRMp5g.js → c4Diagram-AAUBKEIU-DaStHfor.js} +1 -1
- package/web-shell/assets/channel-Dg4f-Kry.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-4rYQdkEI.js → chunk-2J33WTMH-CPaqadg9.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-Coi-pQJy.js → chunk-4BX2VUAB-Veh9ZGKg.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-BtBjz02t.js → chunk-55IACEB6-BPTX5n4q.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CGYOWorl.js → chunk-727SXJPM-CtXsE_ca.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-CH5AKhqx.js → chunk-AQP2D5EJ-D8DDCJ8h.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-Cd50-w85.js → chunk-FMBD7UC4-cjMDGzHz.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-C2wF3KCK.js → chunk-ND2GUHAM-BaZ1hNhV.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-pCeRTaWi.js → chunk-QZHKN3VN-C7w-9w5-.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CT7Fo2aW.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CT7Fo2aW.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-B-_fAB6D.js → cose-bilkent-S5V4N54A-DqvBEEIe.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-ChSPNHpL.js → dagre-BM42HDAG-RkPyoMAk.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BX7cFOF3.js → diagram-2AECGRRQ-D9b6nNyg.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BQUTW92n.js → diagram-5GNKFQAL-CiiNKUIy.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BkYPh3e4.js → diagram-KO2AKTUF-CP1qizXd.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-Cl6jsNyx.js → diagram-LMA3HP47-BGe30TWx.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-DRWoHz8n.js → diagram-OG6HWLK6-CvoEPARH.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CGvFcZco.js → erDiagram-TEJ5UH35-DWfLzVkV.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-vms6oVdv.js → flowDiagram-I6XJVG4X-D-dTQmo6.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-ukT_sfmi.js → ganttDiagram-6RSMTGT7-CYPHKaGY.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Bn2ZE2Ut.js → gitGraphDiagram-PVQCEYII-DA7_aQYD.js} +1 -1
- package/web-shell/assets/index-B0i-TOYM.css +5 -0
- package/web-shell/assets/index-CgCHD46L.js +1225 -0
- package/web-shell/assets/{index-wFXp7W68.js → index-DqHNAB8C.js} +1 -1
- package/web-shell/assets/{infoDiagram-5YYISTIA-DHJdSi7x.js → infoDiagram-5YYISTIA-B87ljDPa.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DOvd2Wph.js → ishikawaDiagram-YF4QCWOH-CYSpyjaN.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CH_urMCT.js → journeyDiagram-JHISSGLW-DAL6Js6f.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-FKiBdgbH.js → kanban-definition-UN3LZRKU-_zufKGJv.js} +1 -1
- package/web-shell/assets/{linear-0ZVQFVKf.js → linear-DidhMgku.js} +1 -1
- package/web-shell/assets/{mermaid.core-DJ05ZZIK.js → mermaid.core-DAkX3h3a.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BPuUhkUm.js → mindmap-definition-RKZ34NQL-DbZxUBEH.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-yLFKcXyG.js → pieDiagram-4H26LBE5-Du9uoqrf.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-irWqc1pE.js → quadrantDiagram-W4KKPZXB-DwjELuKm.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-B_4uMoIV.js → requirementDiagram-4Y6WPE33-BAqfVtBL.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-ciA4GPwk.js → sankeyDiagram-5OEKKPKP--hm2VpmK.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CRdZvy0U.js → sequenceDiagram-3UESZ5HK-R5MUQaIt.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-DaYIkCCn.js → stateDiagram-AJRCARHV-VsX032xQ.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-uPWLcSfy.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-oBUKv6iH.js → timeline-definition-PNZ67QCA-BqjVRXzg.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-CGW9Sdmb.js → vennDiagram-CIIHVFJN-i2tkvlkg.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-CvwKJOCm.js → wardley-L42UT6IY-Ch8G49EM.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Ipc260sN.js → wardleyDiagram-YWT4CUSO-bYpWeQNy.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-D6-CM7pK.js → xychartDiagram-2RQKCTM6-C9NhuBqB.js} +1 -1
- package/web-shell/index.html +17 -13
- package/chunks/MaxSizedBox-B5YGZSYE.js +0 -72
- package/chunks/agent-H4JIDL7S.js +0 -67
- package/chunks/agent-headless-TTBEREQV.js +0 -61
- package/chunks/bridge-VL7ITBU5.js +0 -75
- package/chunks/chunk-542SK7KV.js +0 -8293
- package/chunks/chunk-CPCVCKKF.js +0 -358
- package/chunks/chunk-SEKHYHMS.js +0 -45
- package/chunks/chunk-W7FJ3N32.js +0 -49
- package/chunks/chunk-ZFKNWQGQ.js +0 -74639
- package/chunks/contextCommand-L2COEUHS.js +0 -66
- package/chunks/daemon-status-provider-NL4IAG7B.js +0 -74
- package/chunks/earlyInputCapture-L6I2A22T.js +0 -68
- package/chunks/errors-LEOF5QG4.js +0 -74
- package/chunks/handleAutoUpdate-QQVIWXKT.js +0 -67
- package/chunks/i18n-N6OBDORT.js +0 -83
- package/chunks/initializer-6WCFNDLL.js +0 -72
- package/chunks/installationInfo-6J3WPXNS.js +0 -64
- package/chunks/list-HOWQSWP6.js +0 -75
- package/chunks/loadedSettingsAdapter-AO4YBRXZ.js +0 -69
- package/chunks/mcp-QH7QNXOH.js +0 -69
- package/chunks/nonInteractiveCli-TI7EMPXD.js +0 -126
- package/chunks/pidfile-UEHAT6DH.js +0 -72
- package/chunks/read-file-SQJONF6A.js +0 -29
- package/chunks/resumeHistoryUtils-PFQ2A23X.js +0 -78
- package/chunks/ripGrep-QCK22GDU.js +0 -59
- package/chunks/runtime-SNVAP6EH.js +0 -100
- package/chunks/serve-BT7KS6SC.js +0 -75
- package/chunks/shell-BITUVH2R.js +0 -69
- package/chunks/spawnChannel-2BU3AULL.js +0 -68
- package/chunks/standalone-update-YG5JUYCM.js +0 -78
- package/chunks/task-create-HX32YXO7.js +0 -23
- package/chunks/theme-manager-IAETOI25.js +0 -63
- package/chunks/total-session-admission-BJLDHKJN.js +0 -69
- package/chunks/trustedFolders-5XCVNEUU.js +0 -79
- package/chunks/updateCheck-YZZB7YBU.js +0 -70
- package/chunks/useAutoAcceptIndicator-ZSQX4I2H.js +0 -80
- package/chunks/workspace-providers-status-EADV364W.js +0 -72
- package/chunks/workspace-registry-W6VMFYZU.js +0 -73
- package/chunks/workspace-service-F3KIN2UN.js +0 -84
- package/chunks/workspace-skills-status-YVICUR5Y.js +0 -71
- package/chunks/write-file-CVGF2OKV.js +0 -596
- package/web-shell/assets/channel-04R0vLbG.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-Bw9SOwAV.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Bw9SOwAV.js +0 -1
- package/web-shell/assets/index-DgkKrjw3.js +0 -1187
- package/web-shell/assets/index-Rv6mOAN9.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DWBoO4UY.js +0 -1
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
useKeypress
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-RW2NEXYJ.js";
|
|
6
6
|
import {
|
|
7
7
|
require_react
|
|
8
8
|
} from "./chunk-5QWWOFGG.js";
|
|
9
9
|
import {
|
|
10
10
|
t
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ZT4POVWC.js";
|
|
12
12
|
import {
|
|
13
13
|
APPROVAL_MODES
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-XAWJ2526.js";
|
|
15
15
|
import {
|
|
16
16
|
init_esbuild_shims
|
|
17
17
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
import {
|
|
4
4
|
settleChatRecording,
|
|
5
5
|
subscribeToHeadlessChatRecordingFailures
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PDYB7HG2.js";
|
|
7
|
+
import {
|
|
8
|
+
handleAtCommand
|
|
9
|
+
} from "./chunk-F5MBYZSU.js";
|
|
7
10
|
import {
|
|
8
11
|
JsonOutputAdapter
|
|
9
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-CEZB3XFD.js";
|
|
10
13
|
import {
|
|
11
14
|
StreamJsonOutputAdapter
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import {
|
|
14
|
-
handleAtCommand
|
|
15
|
-
} from "./chunk-IVPSS6EL.js";
|
|
15
|
+
} from "./chunk-2G6QIHYL.js";
|
|
16
16
|
import {
|
|
17
17
|
buildInitialSystemReminders,
|
|
18
18
|
buildSystemMessage,
|
|
@@ -24,10 +24,11 @@ import {
|
|
|
24
24
|
insertAfterFunctionResponses,
|
|
25
25
|
isSlashCommand,
|
|
26
26
|
normalizePartList
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-BW5Z5NOG.js";
|
|
28
28
|
import {
|
|
29
|
-
RunBudgetEnforcer
|
|
30
|
-
|
|
29
|
+
RunBudgetEnforcer,
|
|
30
|
+
cleanupReviewWorktreeLeases
|
|
31
|
+
} from "./chunk-JKCALGYN.js";
|
|
31
32
|
import {
|
|
32
33
|
AlreadyReportedError,
|
|
33
34
|
handleBudgetExceededError,
|
|
@@ -35,39 +36,51 @@ import {
|
|
|
35
36
|
handleError,
|
|
36
37
|
handleMaxTurnsExceededError,
|
|
37
38
|
handleToolError
|
|
38
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-JYUSL2V4.js";
|
|
39
40
|
import {
|
|
40
41
|
isInlineModelOverrideAllowed
|
|
41
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-WLEFWSSC.js";
|
|
42
43
|
import {
|
|
44
|
+
PLAN_MODE_ENTRY_SIBLING_SKIP_MESSAGE,
|
|
43
45
|
buildSessionRecoveryPlanFromApiHistory,
|
|
44
46
|
canonicalToolName,
|
|
45
47
|
createDuplicateProviderToolCallResponse,
|
|
46
48
|
detectAutonomousSentinel,
|
|
47
49
|
detectLoopSentinel,
|
|
48
50
|
executeToolCall,
|
|
51
|
+
finalizeToolResponses,
|
|
52
|
+
findPlanModeEntryBatchBoundaryIndex,
|
|
49
53
|
findRepeatedDuplicateProviderToolCall,
|
|
50
|
-
isSystemReminderContent,
|
|
51
54
|
isToolCallConcurrencySafe,
|
|
52
55
|
markDuplicateProviderToolCallResponseSent,
|
|
53
56
|
parseAndFormatApiError,
|
|
54
|
-
parsePositiveIntegerEnv,
|
|
55
57
|
partitionByConcurrencySafety,
|
|
56
58
|
promptIdContext,
|
|
57
59
|
restoreWorktreeContext
|
|
58
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-LI4I37W4.js";
|
|
61
|
+
import {
|
|
62
|
+
parsePositiveIntegerEnv
|
|
63
|
+
} from "./chunk-6PVPNMXU.js";
|
|
64
|
+
import {
|
|
65
|
+
isSystemReminderContent
|
|
66
|
+
} from "./chunk-XAWJ2526.js";
|
|
59
67
|
import {
|
|
60
|
-
isTelemetrySdkInitialized,
|
|
61
|
-
shutdownTelemetry,
|
|
62
68
|
uiTelemetryService
|
|
63
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-IFG6TYJ2.js";
|
|
70
|
+
import {
|
|
71
|
+
isTelemetrySdkInitialized,
|
|
72
|
+
shutdownTelemetry
|
|
73
|
+
} from "./chunk-PKL3HGNZ.js";
|
|
64
74
|
import {
|
|
65
75
|
ToolNames
|
|
66
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-P5RRUHL7.js";
|
|
67
77
|
import {
|
|
68
78
|
FatalInputError,
|
|
69
79
|
createDebugLogger
|
|
70
|
-
} from "./chunk-
|
|
80
|
+
} from "./chunk-OQB4EXO4.js";
|
|
81
|
+
import {
|
|
82
|
+
registerCleanup
|
|
83
|
+
} from "./chunk-EL2IQ2S5.js";
|
|
71
84
|
import {
|
|
72
85
|
init_esbuild_shims
|
|
73
86
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -78,6 +91,7 @@ import {
|
|
|
78
91
|
// packages/cli/src/nonInteractiveCli.ts
|
|
79
92
|
init_esbuild_shims();
|
|
80
93
|
var debugLogger = createDebugLogger("NON_INTERACTIVE_CLI");
|
|
94
|
+
var restoredBackgroundAgentSessions = /* @__PURE__ */ new WeakMap();
|
|
81
95
|
var STRUCTURED_SHUTDOWN_HOLDBACK_MS = 500;
|
|
82
96
|
function isHeadlessLoopSentinel(prompt) {
|
|
83
97
|
return detectLoopSentinel(prompt) !== null || detectAutonomousSentinel(prompt) !== null;
|
|
@@ -201,6 +215,15 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
|
|
|
201
215
|
}, "emitResult");
|
|
202
216
|
const sessionId = config.getSessionId();
|
|
203
217
|
const permissionMode = config.getApprovalMode();
|
|
218
|
+
const cleanupReviewWorktrees = /* @__PURE__ */ __name((gitTimeout) => cleanupReviewWorktreeLeases({
|
|
219
|
+
sessionId,
|
|
220
|
+
promptId: prompt_id,
|
|
221
|
+
repositoryRoot: config.getProjectRoot(),
|
|
222
|
+
gitTimeout
|
|
223
|
+
}), "cleanupReviewWorktrees");
|
|
224
|
+
const unregisterReviewWorktreeCleanup = registerCleanup(
|
|
225
|
+
() => cleanupReviewWorktrees(1e3)
|
|
226
|
+
);
|
|
204
227
|
let turnCount = 0;
|
|
205
228
|
let totalApiDurationMs = 0;
|
|
206
229
|
const startTime = Date.now();
|
|
@@ -226,6 +249,9 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
|
|
|
226
249
|
}, "routeAbort");
|
|
227
250
|
const localQueue = [];
|
|
228
251
|
const sdkOnlyMonitorQueue = [];
|
|
252
|
+
const isCancelledMonitorEvent = /* @__PURE__ */ __name((item) => Boolean(
|
|
253
|
+
item.monitorId && item.sdkNotification?.status === "running" && config.getMonitorRegistry().get(item.monitorId)?.status === "cancelled"
|
|
254
|
+
), "isCancelledMonitorEvent");
|
|
229
255
|
const emitNotificationToSdk = /* @__PURE__ */ __name((item) => {
|
|
230
256
|
if (item.sendMessageType !== "notification" /* Notification */) return;
|
|
231
257
|
adapter.emitUserMessage([{ text: item.displayText }]);
|
|
@@ -235,7 +261,10 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
|
|
|
235
261
|
}, "emitNotificationToSdk");
|
|
236
262
|
const flushQueuedNotificationsToSdk = /* @__PURE__ */ __name((queue) => {
|
|
237
263
|
while (queue.length > 0) {
|
|
238
|
-
|
|
264
|
+
const item = queue.shift();
|
|
265
|
+
if (!isCancelledMonitorEvent(item)) {
|
|
266
|
+
emitNotificationToSdk(item);
|
|
267
|
+
}
|
|
239
268
|
}
|
|
240
269
|
}, "flushQueuedNotificationsToSdk");
|
|
241
270
|
let captureMonitorTurnsInLocalQueue = true;
|
|
@@ -290,7 +319,9 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
|
|
|
290
319
|
} else {
|
|
291
320
|
approvalListener = /* @__PURE__ */ __name((event) => {
|
|
292
321
|
const mode = config.getApprovalMode();
|
|
293
|
-
|
|
322
|
+
const confirmationDetails = event.confirmationDetails;
|
|
323
|
+
const requiresExplicitHostApproval = confirmationDetails?.type !== "plan" && confirmationDetails !== void 0 && "hideAlwaysAllow" in confirmationDetails && confirmationDetails.hideAlwaysAllow === true;
|
|
324
|
+
if (mode === "yolo" /* YOLO */ && !requiresExplicitHostApproval) {
|
|
294
325
|
event.respond("proceed_once" /* ProceedOnce */).catch((err) => {
|
|
295
326
|
debugLogger.warn(
|
|
296
327
|
"Teammate approval ProceedOnce failed:",
|
|
@@ -299,7 +330,7 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
|
|
|
299
330
|
});
|
|
300
331
|
return;
|
|
301
332
|
}
|
|
302
|
-
const reason = `Auto-cancelling tool ${event.toolName} requested by teammate "${event.teammateName}": current approval mode (${mode}) cannot prompt in non-stream-json mode. Use --yolo or stream-json to allow teammate tool calls.`;
|
|
333
|
+
const reason = requiresExplicitHostApproval ? mode === "yolo" /* YOLO */ ? `Auto-cancelling tool ${event.toolName} requested by teammate "${event.teammateName}": this request requires an explicit interactive approval surface and cannot be bypassed by YOLO mode.` : `Auto-cancelling tool ${event.toolName} requested by teammate "${event.teammateName}": this request requires an explicit interactive approval surface, which is unavailable in non-stream-json mode with the current approval mode (${mode}). Use --input-format stream-json --output-format stream-json to review it.` : `Auto-cancelling tool ${event.toolName} requested by teammate "${event.teammateName}": current approval mode (${mode}) cannot prompt in non-stream-json mode. Use --yolo or stream-json to allow teammate tool calls.`;
|
|
303
334
|
process.stderr.write(`[team] ${reason}
|
|
304
335
|
`);
|
|
305
336
|
pendingTeammateMessages.push(
|
|
@@ -331,6 +362,15 @@ ${reason}
|
|
|
331
362
|
permissionMode
|
|
332
363
|
);
|
|
333
364
|
adapter.emitMessage(systemMessage);
|
|
365
|
+
const resumedSessionData = config.getResumedSessionData();
|
|
366
|
+
if (resumedSessionData) {
|
|
367
|
+
const restoredSessions = restoredBackgroundAgentSessions.get(config) ?? /* @__PURE__ */ new Set();
|
|
368
|
+
if (!restoredSessions.has(sessionId)) {
|
|
369
|
+
await config.loadPausedBackgroundAgents(sessionId);
|
|
370
|
+
restoredSessions.add(sessionId);
|
|
371
|
+
restoredBackgroundAgentSessions.set(config, restoredSessions);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
334
374
|
let initialPartList = extractPartsFromUserMessage(
|
|
335
375
|
options.userMessage
|
|
336
376
|
);
|
|
@@ -475,7 +515,7 @@ ${text}
|
|
|
475
515
|
adapter.emitSystemMessage("worktree_started", {
|
|
476
516
|
notice: startupNotice
|
|
477
517
|
});
|
|
478
|
-
} else if (!options.continueInterrupted &&
|
|
518
|
+
} else if (!options.continueInterrupted && resumedSessionData) {
|
|
479
519
|
try {
|
|
480
520
|
const sessionPath = config.getSessionService().getWorktreeSessionPath(sessionId);
|
|
481
521
|
const restored = await restoreWorktreeContext(sessionPath);
|
|
@@ -494,6 +534,10 @@ ${text}
|
|
|
494
534
|
debugLogger.warn(`worktree restore failed (non-fatal):`, error);
|
|
495
535
|
}
|
|
496
536
|
}
|
|
537
|
+
const recoveredAgentsNotice = resumedSessionData && !options.continueInterrupted && !isSlashCommand(input) ? config.consumePendingRecoveredAgentsNotice() : null;
|
|
538
|
+
if (recoveredAgentsNotice) {
|
|
539
|
+
initialPartList = withReminder(initialPartList, recoveredAgentsNotice);
|
|
540
|
+
}
|
|
497
541
|
const initialParts = normalizePartList(initialPartList);
|
|
498
542
|
let currentMessages = [{ role: "user", parts: initialParts }];
|
|
499
543
|
const registry = config.getBackgroundTaskRegistry();
|
|
@@ -534,6 +578,7 @@ ${text}
|
|
|
534
578
|
displayText,
|
|
535
579
|
modelText,
|
|
536
580
|
sendMessageType: "notification" /* Notification */,
|
|
581
|
+
monitorId: meta.monitorId,
|
|
537
582
|
sdkNotification: {
|
|
538
583
|
task_id: meta.monitorId,
|
|
539
584
|
tool_use_id: meta.toolUseId,
|
|
@@ -619,7 +664,8 @@ ${text}
|
|
|
619
664
|
const handledProviderToolCallIds = geminiClient.getHistoryFunctionResponseIds();
|
|
620
665
|
const duplicateProviderToolCallResponseIds = /* @__PURE__ */ new Set();
|
|
621
666
|
const processToolCallBatch = /* @__PURE__ */ __name(async (batchRequests, setModelOverride) => {
|
|
622
|
-
const
|
|
667
|
+
const responseByRequest = /* @__PURE__ */ new Map();
|
|
668
|
+
const statusByResponse = /* @__PURE__ */ new Map();
|
|
623
669
|
const structuredOutputActive = config.getJsonSchema() && batchRequests.some((r) => r.name === ToolNames.STRUCTURED_OUTPUT);
|
|
624
670
|
const getProviderResponseId = /* @__PURE__ */ __name((request) => request.providerCallId ?? (structuredOutputActive ? void 0 : request.callId || void 0), "getProviderResponseId");
|
|
625
671
|
const seenBatchCallIds = /* @__PURE__ */ new Set();
|
|
@@ -658,7 +704,6 @@ ${text}
|
|
|
658
704
|
}
|
|
659
705
|
const respondedRequests = /* @__PURE__ */ new Set();
|
|
660
706
|
const executableBatchRequests = [];
|
|
661
|
-
const duplicatePendingResponses = [];
|
|
662
707
|
for (const requestInfo of uniqueBatchRequests) {
|
|
663
708
|
const providerCallId = getProviderResponseId(requestInfo);
|
|
664
709
|
if (!providerCallId) {
|
|
@@ -680,15 +725,18 @@ ${text}
|
|
|
680
725
|
);
|
|
681
726
|
respondedRequests.add(requestInfo);
|
|
682
727
|
adapter.emitToolResult(requestInfo, toolResponse);
|
|
683
|
-
|
|
728
|
+
responseByRequest.set(requestInfo, toolResponse);
|
|
684
729
|
}
|
|
685
|
-
toolResponseParts.push(...duplicatePendingResponses);
|
|
686
730
|
let requestsToExecute = executableBatchRequests;
|
|
687
731
|
if (structuredOutputActive) {
|
|
688
732
|
requestsToExecute = executableBatchRequests.filter(
|
|
689
733
|
(r) => r.name === ToolNames.STRUCTURED_OUTPUT
|
|
690
734
|
);
|
|
691
735
|
}
|
|
736
|
+
const planModeEntryBoundaryIndex = findPlanModeEntryBatchBoundaryIndex(
|
|
737
|
+
requestsToExecute.map((request) => request.name)
|
|
738
|
+
);
|
|
739
|
+
const planModeEntryBoundary = planModeEntryBoundaryIndex === void 0 ? void 0 : requestsToExecute[planModeEntryBoundaryIndex];
|
|
692
740
|
const executedRequests = new Set(
|
|
693
741
|
respondedRequests
|
|
694
742
|
);
|
|
@@ -714,7 +762,13 @@ ${text}
|
|
|
714
762
|
requestInfo,
|
|
715
763
|
abortController.signal,
|
|
716
764
|
{
|
|
765
|
+
recordToolResult: false,
|
|
717
766
|
outputUpdateHandler,
|
|
767
|
+
onAllToolCallsComplete: /* @__PURE__ */ __name(async (completedCalls) => {
|
|
768
|
+
for (const call of completedCalls) {
|
|
769
|
+
statusByResponse.set(call.response, call.status);
|
|
770
|
+
}
|
|
771
|
+
}, "onAllToolCallsComplete"),
|
|
718
772
|
...toolCallUpdateCallback && {
|
|
719
773
|
onToolCallsUpdate: toolCallUpdateCallback
|
|
720
774
|
}
|
|
@@ -736,13 +790,11 @@ ${text}
|
|
|
736
790
|
);
|
|
737
791
|
}
|
|
738
792
|
adapter.emitToolResult(requestInfo, toolResponse);
|
|
793
|
+
responseByRequest.set(requestInfo, toolResponse);
|
|
739
794
|
config.getGeminiClient().recordCompletedToolCall(
|
|
740
795
|
requestInfo.name,
|
|
741
796
|
requestInfo.args
|
|
742
797
|
);
|
|
743
|
-
if (toolResponse.responseParts) {
|
|
744
|
-
toolResponseParts.push(...toolResponse.responseParts);
|
|
745
|
-
}
|
|
746
798
|
if ("modelOverride" in toolResponse) {
|
|
747
799
|
setModelOverride(toolResponse.modelOverride);
|
|
748
800
|
}
|
|
@@ -752,6 +804,33 @@ ${text}
|
|
|
752
804
|
}
|
|
753
805
|
return false;
|
|
754
806
|
}, "finalizeToolCall");
|
|
807
|
+
const finalizePlanModeEntrySiblingSkip = /* @__PURE__ */ __name((requestInfo) => {
|
|
808
|
+
const error = new Error(PLAN_MODE_ENTRY_SIBLING_SKIP_MESSAGE);
|
|
809
|
+
const responseParts = [
|
|
810
|
+
{
|
|
811
|
+
functionResponse: {
|
|
812
|
+
id: requestInfo.callId,
|
|
813
|
+
name: requestInfo.name,
|
|
814
|
+
response: { error: error.message }
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
];
|
|
818
|
+
adapter.emitToolResult(requestInfo, {
|
|
819
|
+
callId: requestInfo.callId,
|
|
820
|
+
responseParts,
|
|
821
|
+
resultDisplay: error.message,
|
|
822
|
+
error,
|
|
823
|
+
errorType: "execution_denied" /* EXECUTION_DENIED */
|
|
824
|
+
});
|
|
825
|
+
responseByRequest.set(requestInfo, {
|
|
826
|
+
callId: requestInfo.callId,
|
|
827
|
+
responseParts,
|
|
828
|
+
resultDisplay: error.message,
|
|
829
|
+
error,
|
|
830
|
+
errorType: "execution_denied" /* EXECUTION_DENIED */
|
|
831
|
+
});
|
|
832
|
+
executedRequests.add(requestInfo);
|
|
833
|
+
}, "finalizePlanModeEntrySiblingSkip");
|
|
755
834
|
const maxToolConcurrency = parsePositiveIntegerEnv(
|
|
756
835
|
process.env["QWEN_CODE_MAX_TOOL_CONCURRENCY"],
|
|
757
836
|
10
|
|
@@ -763,6 +842,10 @@ ${text}
|
|
|
763
842
|
const launched = [];
|
|
764
843
|
const inFlight = /* @__PURE__ */ new Set();
|
|
765
844
|
for (const requestInfo of batch.calls) {
|
|
845
|
+
if (planModeEntryBoundary && requestInfo !== planModeEntryBoundary) {
|
|
846
|
+
finalizePlanModeEntrySiblingSkip(requestInfo);
|
|
847
|
+
continue;
|
|
848
|
+
}
|
|
766
849
|
if (!isBudgetExempt(requestInfo)) {
|
|
767
850
|
budgetEnforcer.tickToolCall();
|
|
768
851
|
}
|
|
@@ -801,6 +884,10 @@ ${text}
|
|
|
801
884
|
}
|
|
802
885
|
} else {
|
|
803
886
|
for (const requestInfo of batch.calls) {
|
|
887
|
+
if (planModeEntryBoundary && requestInfo !== planModeEntryBoundary) {
|
|
888
|
+
finalizePlanModeEntrySiblingSkip(requestInfo);
|
|
889
|
+
continue;
|
|
890
|
+
}
|
|
804
891
|
if (!isBudgetExempt(requestInfo)) {
|
|
805
892
|
budgetEnforcer.tickToolCall();
|
|
806
893
|
}
|
|
@@ -831,14 +918,15 @@ ${text}
|
|
|
831
918
|
}
|
|
832
919
|
}
|
|
833
920
|
];
|
|
834
|
-
|
|
921
|
+
const toolResponse = {
|
|
835
922
|
callId: call.callId,
|
|
836
923
|
responseParts,
|
|
837
924
|
resultDisplay: skippedOutput,
|
|
838
925
|
error: void 0,
|
|
839
926
|
errorType: void 0
|
|
840
|
-
}
|
|
841
|
-
|
|
927
|
+
};
|
|
928
|
+
adapter.emitToolResult(call, toolResponse);
|
|
929
|
+
responseByRequest.set(call, toolResponse);
|
|
842
930
|
}
|
|
843
931
|
}
|
|
844
932
|
for (const requestInfo of duplicateBatchRequests) {
|
|
@@ -850,7 +938,34 @@ ${text}
|
|
|
850
938
|
);
|
|
851
939
|
const toolResponse = createDuplicateProviderToolCallResponse(requestInfo);
|
|
852
940
|
adapter.emitToolResult(requestInfo, toolResponse);
|
|
853
|
-
|
|
941
|
+
responseByRequest.set(requestInfo, toolResponse);
|
|
942
|
+
}
|
|
943
|
+
const orderedResponses = batchRequests.flatMap((request) => {
|
|
944
|
+
const response = responseByRequest.get(request);
|
|
945
|
+
return response ? [{ request, response }] : [];
|
|
946
|
+
});
|
|
947
|
+
const finalized = await finalizeToolResponses(
|
|
948
|
+
config,
|
|
949
|
+
orderedResponses.map(({ request, response }) => ({
|
|
950
|
+
callId: request.callId,
|
|
951
|
+
toolName: request.name,
|
|
952
|
+
responseParts: response.responseParts,
|
|
953
|
+
persistedOutputFiles: response.persistedOutputFiles
|
|
954
|
+
}))
|
|
955
|
+
);
|
|
956
|
+
const chatRecordingService = config.getChatRecordingService?.();
|
|
957
|
+
const toolResponseParts = [];
|
|
958
|
+
for (let index = 0; index < orderedResponses.length; index++) {
|
|
959
|
+
const { request, response } = orderedResponses[index];
|
|
960
|
+
const finalizedParts = finalized[index].responseParts;
|
|
961
|
+
toolResponseParts.push(...finalizedParts);
|
|
962
|
+
chatRecordingService?.recordToolResult?.(finalizedParts, {
|
|
963
|
+
callId: request.callId,
|
|
964
|
+
status: statusByResponse.get(response) ?? (response.error ? "error" : "success"),
|
|
965
|
+
resultDisplay: response.resultDisplay,
|
|
966
|
+
error: response.error,
|
|
967
|
+
errorType: response.errorType
|
|
968
|
+
});
|
|
854
969
|
}
|
|
855
970
|
return {
|
|
856
971
|
responseParts: toolResponseParts,
|
|
@@ -1015,7 +1130,7 @@ ${text}
|
|
|
1015
1130
|
splitIdx++;
|
|
1016
1131
|
}
|
|
1017
1132
|
}
|
|
1018
|
-
const batch = localQueue.splice(0, splitIdx);
|
|
1133
|
+
const batch = localQueue.splice(0, splitIdx).filter((item2) => !isCancelledMonitorEvent(item2));
|
|
1019
1134
|
if (batch.length === 0) return;
|
|
1020
1135
|
for (const queueItem of batch) {
|
|
1021
1136
|
emitNotificationToSdk(queueItem);
|
|
@@ -1281,6 +1396,8 @@ ${text}
|
|
|
1281
1396
|
}
|
|
1282
1397
|
await handleError(error, config);
|
|
1283
1398
|
} finally {
|
|
1399
|
+
cleanupReviewWorktrees();
|
|
1400
|
+
unregisterReviewWorktreeCleanup();
|
|
1284
1401
|
config.onTeamManagerChange(null, onTeamManagerChangeHandler);
|
|
1285
1402
|
if (boundManager) {
|
|
1286
1403
|
detachFromManager(boundManager);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
MAX_WORKSPACE_PATH_LENGTH,
|
|
5
5
|
canonicalizeWorkspace
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2RFKHEXL.js";
|
|
7
7
|
import {
|
|
8
8
|
MAX_DAEMON_WORKSPACES
|
|
9
9
|
} from "./chunk-5HBA2Z7V.js";
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "./chunk-MR3PXB6E.js";
|
|
16
16
|
import {
|
|
17
17
|
require_proper_lockfile
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-KRXPRVGL.js";
|
|
19
19
|
import {
|
|
20
20
|
init_esbuild_shims
|
|
21
21
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -124,6 +124,7 @@ __name(resolveWorkspaceInputs, "resolveWorkspaceInputs");
|
|
|
124
124
|
var SCHEMA_VERSION = 1;
|
|
125
125
|
var MAX_SECONDARY_WORKSPACES = MAX_REGISTERED_WORKSPACES - 1;
|
|
126
126
|
var MAX_STORE_BYTES = 256 * 1024;
|
|
127
|
+
var MAX_WORKSPACE_DISPLAY_NAME_LENGTH = 256;
|
|
127
128
|
var LOCK_OPTIONS = {
|
|
128
129
|
realpath: false,
|
|
129
130
|
stale: 1e4,
|
|
@@ -136,6 +137,43 @@ var LOCK_OPTIONS = {
|
|
|
136
137
|
randomize: true
|
|
137
138
|
}
|
|
138
139
|
};
|
|
140
|
+
var WorkspaceDisplayNameValidationError = class extends Error {
|
|
141
|
+
static {
|
|
142
|
+
__name(this, "WorkspaceDisplayNameValidationError");
|
|
143
|
+
}
|
|
144
|
+
constructor(message) {
|
|
145
|
+
super(message);
|
|
146
|
+
this.name = "WorkspaceDisplayNameValidationError";
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
function containsDisplayNameControlCharacter(value) {
|
|
150
|
+
for (const character of value) {
|
|
151
|
+
const codePoint = character.codePointAt(0);
|
|
152
|
+
if (codePoint <= 31 || codePoint === 127) return true;
|
|
153
|
+
}
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
__name(containsDisplayNameControlCharacter, "containsDisplayNameControlCharacter");
|
|
157
|
+
function normalizeWorkspaceDisplayName(value) {
|
|
158
|
+
if (typeof value !== "string") {
|
|
159
|
+
throw new WorkspaceDisplayNameValidationError(
|
|
160
|
+
"Workspace display name must be a string"
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
const trimmed = value.trim();
|
|
164
|
+
if (trimmed.length > MAX_WORKSPACE_DISPLAY_NAME_LENGTH) {
|
|
165
|
+
throw new WorkspaceDisplayNameValidationError(
|
|
166
|
+
`Workspace display name exceeds ${MAX_WORKSPACE_DISPLAY_NAME_LENGTH} characters`
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
if (containsDisplayNameControlCharacter(trimmed)) {
|
|
170
|
+
throw new WorkspaceDisplayNameValidationError(
|
|
171
|
+
"Workspace display name contains control characters"
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
return trimmed.length === 0 ? void 0 : trimmed;
|
|
175
|
+
}
|
|
176
|
+
__name(normalizeWorkspaceDisplayName, "normalizeWorkspaceDisplayName");
|
|
139
177
|
var WorkspaceRegistrationStoreError = class extends Error {
|
|
140
178
|
static {
|
|
141
179
|
__name(this, "WorkspaceRegistrationStoreError");
|
|
@@ -196,6 +234,38 @@ function validateWorkspacePath(value, label) {
|
|
|
196
234
|
return value;
|
|
197
235
|
}
|
|
198
236
|
__name(validateWorkspacePath, "validateWorkspacePath");
|
|
237
|
+
function validateStoredDisplayName(value, label) {
|
|
238
|
+
let displayName;
|
|
239
|
+
try {
|
|
240
|
+
displayName = normalizeWorkspaceDisplayName(value);
|
|
241
|
+
} catch (err) {
|
|
242
|
+
throw new WorkspaceRegistrationStoreError(
|
|
243
|
+
`${label} is invalid: ${err instanceof Error ? err.message : String(err)}`
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
if (displayName === void 0) {
|
|
247
|
+
throw new WorkspaceRegistrationStoreError(`${label} must not be empty`);
|
|
248
|
+
}
|
|
249
|
+
return displayName;
|
|
250
|
+
}
|
|
251
|
+
__name(validateStoredDisplayName, "validateStoredDisplayName");
|
|
252
|
+
function setSnapshotDisplayName(snapshot, registrationId, displayName) {
|
|
253
|
+
if (displayName === void 0) {
|
|
254
|
+
if (!snapshot.displayNames || !Object.hasOwn(snapshot.displayNames, registrationId)) {
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
delete snapshot.displayNames[registrationId];
|
|
258
|
+
if (Object.keys(snapshot.displayNames).length === 0) {
|
|
259
|
+
delete snapshot.displayNames;
|
|
260
|
+
}
|
|
261
|
+
return true;
|
|
262
|
+
}
|
|
263
|
+
if (snapshot.displayNames?.[registrationId] === displayName) return false;
|
|
264
|
+
snapshot.displayNames ??= {};
|
|
265
|
+
snapshot.displayNames[registrationId] = displayName;
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
__name(setSnapshotDisplayName, "setSnapshotDisplayName");
|
|
199
269
|
function parseSnapshot(raw, primaryWorkspace) {
|
|
200
270
|
let value;
|
|
201
271
|
try {
|
|
@@ -252,7 +322,34 @@ function parseSnapshot(raw, primaryWorkspace) {
|
|
|
252
322
|
seen.add(normalizedWorkspace);
|
|
253
323
|
return workspace;
|
|
254
324
|
});
|
|
255
|
-
|
|
325
|
+
const rawDisplayNames = record["displayNames"];
|
|
326
|
+
let displayNames;
|
|
327
|
+
if (rawDisplayNames !== void 0) {
|
|
328
|
+
if (typeof rawDisplayNames !== "object" || rawDisplayNames === null || Array.isArray(rawDisplayNames)) {
|
|
329
|
+
throw new WorkspaceRegistrationStoreError(
|
|
330
|
+
"Workspace registration store displayNames must be an object"
|
|
331
|
+
);
|
|
332
|
+
}
|
|
333
|
+
const registrationIds = new Set(workspaces.map(workspaceRegistrationId));
|
|
334
|
+
for (const [registrationId, value2] of Object.entries(rawDisplayNames)) {
|
|
335
|
+
if (!registrationIds.has(registrationId)) {
|
|
336
|
+
throw new WorkspaceRegistrationStoreError(
|
|
337
|
+
`Workspace registration store displayNames contains unknown registration id ${JSON.stringify(registrationId)}`
|
|
338
|
+
);
|
|
339
|
+
}
|
|
340
|
+
displayNames ??= {};
|
|
341
|
+
displayNames[registrationId] = validateStoredDisplayName(
|
|
342
|
+
value2,
|
|
343
|
+
`displayNames[${JSON.stringify(registrationId)}]`
|
|
344
|
+
);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return {
|
|
348
|
+
schemaVersion: SCHEMA_VERSION,
|
|
349
|
+
primaryWorkspace,
|
|
350
|
+
workspaces,
|
|
351
|
+
...displayNames ? { displayNames } : {}
|
|
352
|
+
};
|
|
256
353
|
}
|
|
257
354
|
__name(parseSnapshot, "parseSnapshot");
|
|
258
355
|
var updateChains = /* @__PURE__ */ new Map();
|
|
@@ -391,8 +488,9 @@ var WorkspaceRegistrationStore = class {
|
|
|
391
488
|
await file.close();
|
|
392
489
|
}
|
|
393
490
|
}
|
|
394
|
-
async add(workspace) {
|
|
491
|
+
async add(workspace, displayName) {
|
|
395
492
|
validateWorkspacePath(workspace, "workspace");
|
|
493
|
+
const normalizedDisplayName = displayName === void 0 ? void 0 : normalizeWorkspaceDisplayName(displayName);
|
|
396
494
|
if (normalizedScopePath(workspace) === normalizedScopePath(this.primaryWorkspace)) {
|
|
397
495
|
throw new WorkspaceRegistrationStoreError(
|
|
398
496
|
"Primary workspace cannot be stored as a secondary registration"
|
|
@@ -411,30 +509,61 @@ var WorkspaceRegistrationStore = class {
|
|
|
411
509
|
);
|
|
412
510
|
}
|
|
413
511
|
snapshot.workspaces.push(workspace);
|
|
512
|
+
if (normalizedDisplayName !== void 0) {
|
|
513
|
+
snapshot.displayNames ??= {};
|
|
514
|
+
snapshot.displayNames[workspaceRegistrationId(workspace)] = normalizedDisplayName;
|
|
515
|
+
}
|
|
414
516
|
return true;
|
|
415
517
|
});
|
|
416
518
|
}
|
|
417
519
|
async removeById(id) {
|
|
418
520
|
return await this.removeByIds([id]) > 0;
|
|
419
521
|
}
|
|
522
|
+
async setDisplayNameByIds(ids, displayName) {
|
|
523
|
+
const normalizedDisplayName = displayName === void 0 ? void 0 : normalizeWorkspaceDisplayName(displayName);
|
|
524
|
+
const requested = new Set(ids);
|
|
525
|
+
if (requested.size === 0) return 0;
|
|
526
|
+
let matched = 0;
|
|
527
|
+
await this.update((snapshot) => {
|
|
528
|
+
let changed = false;
|
|
529
|
+
for (const workspace of snapshot.workspaces) {
|
|
530
|
+
const registrationId = workspaceRegistrationId(workspace);
|
|
531
|
+
if (!requested.has(registrationId)) continue;
|
|
532
|
+
matched++;
|
|
533
|
+
changed = setSnapshotDisplayName(
|
|
534
|
+
snapshot,
|
|
535
|
+
registrationId,
|
|
536
|
+
normalizedDisplayName
|
|
537
|
+
) || changed;
|
|
538
|
+
}
|
|
539
|
+
return changed;
|
|
540
|
+
});
|
|
541
|
+
return matched;
|
|
542
|
+
}
|
|
420
543
|
async removeByIds(ids) {
|
|
421
544
|
const requested = new Set(ids);
|
|
422
545
|
if (requested.size === 0) return 0;
|
|
423
546
|
let removed = 0;
|
|
424
547
|
await this.update((snapshot) => {
|
|
548
|
+
const removedIds = /* @__PURE__ */ new Set();
|
|
425
549
|
const retained = snapshot.workspaces.filter((workspace) => {
|
|
426
|
-
|
|
550
|
+
const registrationId = workspaceRegistrationId(workspace);
|
|
551
|
+
if (!requested.has(registrationId)) return true;
|
|
427
552
|
removed++;
|
|
553
|
+
removedIds.add(registrationId);
|
|
428
554
|
return false;
|
|
429
555
|
});
|
|
430
556
|
if (removed === 0) return false;
|
|
431
557
|
snapshot.workspaces.splice(0, snapshot.workspaces.length, ...retained);
|
|
558
|
+
for (const registrationId of removedIds) {
|
|
559
|
+
setSnapshotDisplayName(snapshot, registrationId, void 0);
|
|
560
|
+
}
|
|
432
561
|
return true;
|
|
433
562
|
});
|
|
434
563
|
return removed;
|
|
435
564
|
}
|
|
436
565
|
async update(mutate) {
|
|
437
|
-
const { atomicWriteFile } = await import("./src-
|
|
566
|
+
const { atomicWriteFile } = await import("./src-LKKTJ4NG.js");
|
|
438
567
|
return withInProcessLock(this.filePath, async () => {
|
|
439
568
|
const lock = await acquireFileLock(this.filePath);
|
|
440
569
|
let committed = false;
|
|
@@ -478,6 +607,9 @@ var WorkspaceRegistrationStore = class {
|
|
|
478
607
|
export {
|
|
479
608
|
MAX_REGISTERED_WORKSPACES,
|
|
480
609
|
resolveWorkspaceInputs,
|
|
610
|
+
MAX_WORKSPACE_DISPLAY_NAME_LENGTH,
|
|
611
|
+
WorkspaceDisplayNameValidationError,
|
|
612
|
+
normalizeWorkspaceDisplayName,
|
|
481
613
|
WorkspaceRegistrationStoreError,
|
|
482
614
|
WorkspaceRegistrationStoreLimitError,
|
|
483
615
|
WorkspaceRegistrationStoreCommittedError,
|