@qwen-code/qwen-code 0.21.0 → 0.21.1-nightly.20260731.702932cc7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/model-providers.md +2 -0
- package/bundled/qc-helper/docs/configuration/settings.md +39 -28
- package/bundled/qc-helper/docs/features/channels/_meta.ts +2 -0
- package/bundled/qc-helper/docs/features/channels/github.md +139 -0
- package/bundled/qc-helper/docs/features/channels/gitlab.md +171 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +61 -6
- package/bundled/qc-helper/docs/features/code-review.md +21 -1
- package/bundled/qc-helper/docs/features/hooks.md +72 -15
- package/bundled/qc-helper/docs/features/mcp.md +9 -1
- package/bundled/qc-helper/docs/features/scheduled-tasks.md +3 -1
- package/bundled/qc-helper/docs/features/sub-agents.md +42 -8
- package/bundled/qc-helper/docs/qwen-serve.md +11 -7
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +2 -2
- package/bundled/qc-helper/docs/support/troubleshooting.md +2 -1
- package/bundled/review/DESIGN.md +19 -0
- package/bundled/review/SKILL.md +120 -61
- package/chunks/MaxSizedBox-LAFHK4VO.js +88 -0
- package/chunks/{StandaloneSessionPicker-BIRMPLRD.js → StandaloneSessionPicker-EMNOBN3S.js} +71 -68
- package/chunks/{acp-startup-profiler-RV3IV562.js → acp-startup-profiler-2C4A5ZTJ.js} +2 -2
- package/chunks/{acpAgent-6J2U72PQ.js → acpAgent-ERFA6HWV.js} +1674 -591
- package/chunks/agent-PLKF6JK4.js +84 -0
- package/chunks/agent-headless-JAORDQ63.js +78 -0
- package/chunks/{anthropicContentGenerator-75BKLTSP.js → anthropicContentGenerator-OFHSZJBF.js} +79 -27
- package/chunks/{artifact-tool-Y5T7GG7F.js → artifact-tool-RDN2W7ND.js} +4 -4
- package/chunks/{askUserQuestion-2H6747FR.js → askUserQuestion-OZERWH5R.js} +4 -4
- package/chunks/bridge-NYOBVRIT.js +94 -0
- package/chunks/{build-RV63TIRH.js → build-GDBLPA24.js} +1 -1
- package/chunks/{ca-25EDXPFZ.js → ca-6W3SK7OQ.js} +6 -1
- package/chunks/channel-management-service-5S7YCWX5.js +418 -0
- package/chunks/channel-settings-store-NLOKYO23.js +91 -0
- package/chunks/{channel-worker-group-2ZD7TVAT.js → channel-worker-group-OVWGYMZS.js} +11 -6
- package/chunks/{channel-worker-manager-4OA4BCGB.js → channel-worker-manager-H55GKOQA.js} +11 -6
- package/chunks/{channel-worker-supervisor-V7KCFJTS.js → channel-worker-supervisor-CABBXYHK.js} +7 -5
- package/chunks/{chunk-RIBKPMRP.js → chunk-23F4XGWO.js} +19 -6
- package/chunks/{chunk-ACY3A37B.js → chunk-25VHI5T7.js} +23 -18
- package/chunks/{chunk-MZAXJAUM.js → chunk-26JK4RPD.js} +1 -1
- package/chunks/{chunk-6GMVPFB2.js → chunk-2IIJTXYF.js} +45 -16
- package/chunks/{chunk-BPJSQIJX.js → chunk-2J3OJGTL.js} +0 -2
- package/chunks/{chunk-2X55UKQE.js → chunk-2JZR3B4A.js} +3 -3
- package/chunks/{chunk-7JURR4JT.js → chunk-2OQUICDM.js} +167 -81
- package/chunks/{chunk-ZJHVAS7M.js → chunk-2YCYFWYZ.js} +4 -5
- package/chunks/{chunk-3QMGYBFN.js → chunk-3APUUXRF.js} +1 -80
- package/chunks/{chunk-MUP3T3AD.js → chunk-3I6DUGQD.js} +1 -35
- package/chunks/{chunk-JVPM2ULZ.js → chunk-3XZ5SSNR.js} +6 -6
- package/chunks/chunk-42VPM33K.js +319 -0
- package/chunks/{chunk-VAK25FTU.js → chunk-45IOTAUS.js} +1 -1
- package/chunks/chunk-45UYUCJ6.js +363 -0
- package/chunks/{chunk-JZA3JUDJ.js → chunk-4KP2F2TE.js} +1 -1
- package/chunks/{chunk-IO3IX5Q4.js → chunk-4YJQD2IO.js} +1 -1
- package/chunks/{chunk-JXJFVC6E.js → chunk-5G6XUGXO.js} +61 -14
- package/chunks/{chunk-ZOIFNCKL.js → chunk-5NNHICSA.js} +3 -23
- package/chunks/{chunk-A4UCTEB5.js → chunk-5WV5S2GT.js} +0 -1
- package/chunks/{chunk-RHLZR4E5.js → chunk-675H6PLP.js} +1 -1
- package/chunks/chunk-6FMJLI5M.js +1591 -0
- package/chunks/chunk-6MPDY6ZG.js +76 -0
- package/chunks/{chunk-PSOO6YXD.js → chunk-6NUWQ3R7.js} +9 -7
- package/chunks/{chunk-7MVVZO4N.js → chunk-6ZRWX46I.js} +4 -4
- package/chunks/{chunk-TPRQ7RZH.js → chunk-76E5Y3UZ.js} +3117 -993
- package/chunks/{chunk-UUUTRMI2.js → chunk-7ULQIS27.js} +1 -1
- package/chunks/{chunk-BKHWX6I2.js → chunk-A5BZ722X.js} +11 -3
- package/chunks/{chunk-TEHGS6UP.js → chunk-A5T5W7PR.js} +154 -16
- package/chunks/{chunk-VIA5XA4U.js → chunk-A5UODYG3.js} +4 -1
- package/chunks/{chunk-JLU636DO.js → chunk-ALMR3E6Q.js} +1 -0
- package/chunks/{chunk-EBJQ6AXW.js → chunk-ANDVK2JN.js} +358 -14
- package/chunks/{chunk-TOFQCPDC.js → chunk-AOHY3QJ3.js} +14 -8
- package/chunks/chunk-AQ37AY7B.js +93 -0
- package/chunks/{chunk-PJIZUQVC.js → chunk-AZQ3DT76.js} +2 -2
- package/chunks/{chunk-LKEJ26GS.js → chunk-B3TA3IF5.js} +16 -11
- package/chunks/{chunk-Q4M4MDQ4.js → chunk-B43QHWY6.js} +1 -1
- package/chunks/{chunk-UH3WSE5L.js → chunk-B4AJNNOL.js} +1 -6
- package/chunks/{chunk-K36B6G2O.js → chunk-B6FOGNGH.js} +5 -5
- package/chunks/{chunk-PWVFN2LF.js → chunk-BP2H5K25.js} +1 -1
- package/chunks/{chunk-LB6DUZ26.js → chunk-BTWSGZCT.js} +264 -185
- package/chunks/{chunk-ZNAUOR2I.js → chunk-BZBPT52P.js} +2 -2
- package/chunks/{chunk-L26JL52R.js → chunk-CBBP4BMC.js} +64 -67
- package/chunks/{chunk-ZD6UTE4A.js → chunk-CNTR4GR6.js} +1 -1
- package/chunks/{chunk-3SJ43L4W.js → chunk-CPZAH673.js} +6 -0
- package/chunks/{chunk-EPDRMGT4.js → chunk-D4HTUMGX.js} +4 -28
- package/chunks/{chunk-QAF7NMK7.js → chunk-D7CQTWRS.js} +1 -1
- package/chunks/{chunk-XVNQMZ2I.js → chunk-DGEIYUC3.js} +0 -1
- package/chunks/{chunk-BPZALHVR.js → chunk-DI35ZN7T.js} +1 -1
- package/chunks/{chunk-IKCX4CCL.js → chunk-DKPJUF5F.js} +118 -95
- package/chunks/{chunk-DLWL3Z7A.js → chunk-DSFHVTWD.js} +3 -3
- package/chunks/{chunk-FSITMZJH.js → chunk-DYRYLJ3O.js} +18 -9
- package/chunks/{chunk-NL7LTRLR.js → chunk-E2BHWIDT.js} +48 -72
- package/chunks/{chunk-UDX5OBWR.js → chunk-E2FN6SM7.js} +94 -4
- package/chunks/{chunk-USTWD7QV.js → chunk-E6CJ2SMM.js} +26 -16
- package/chunks/{chunk-KMQ33DO4.js → chunk-EDB7A72S.js} +4 -4
- package/chunks/{chunk-7ZCNENPP.js → chunk-FANRZEAJ.js} +1 -1
- package/chunks/{chunk-WBL3FJEU.js → chunk-FC4KQFCS.js} +1 -1
- package/chunks/{chunk-5NBDS5S6.js → chunk-FCYYAB4S.js} +162 -7
- package/chunks/{chunk-OKY7HXPG.js → chunk-FJ5WUMUQ.js} +2 -2
- package/chunks/{chunk-PHOF65IG.js → chunk-FRXG4ARO.js} +36273 -44436
- package/chunks/{chunk-FQK6JAFG.js → chunk-FS674JW4.js} +4 -4
- package/chunks/chunk-FYJ7W2PI.js +194 -0
- package/chunks/{chunk-BULDBTYC.js → chunk-G7XXKQYS.js} +3 -28
- package/chunks/{chunk-LS77BEZP.js → chunk-GLCZKT5V.js} +1 -5
- package/chunks/{chunk-VRYUBFMC.js → chunk-GRUAVQQR.js} +1 -1
- package/chunks/{chunk-MVSUYZDT.js → chunk-GWV7DI3S.js} +4 -4
- package/chunks/{chunk-A5L3JMUA.js → chunk-HC45LTEN.js} +18 -4
- package/chunks/{chunk-PC6JANNU.js → chunk-HKRVXYDN.js} +4 -4
- package/chunks/{chunk-GZXCZHCT.js → chunk-I3G5JWBV.js} +1 -1
- package/chunks/{chunk-4WIZGAH3.js → chunk-I5BT7ADR.js} +6 -58
- package/chunks/{chunk-GSN55ZRI.js → chunk-ID3O7PRB.js} +19 -7
- package/chunks/{chunk-L5UHQJTJ.js → chunk-IGTHU3T4.js} +1 -1
- package/chunks/{chunk-BIQWWWJN.js → chunk-IIUGIWWY.js} +1 -1
- package/chunks/{chunk-RWTEFFPU.js → chunk-JCJ7LKNA.js} +6140 -5616
- package/chunks/{chunk-S3TWXGKA.js → chunk-JE7KQ2UP.js} +4 -2
- package/chunks/{chunk-PWTZEM3C.js → chunk-JXVC2PL3.js} +3 -37
- package/chunks/chunk-JYBU6YUE.js +378 -0
- package/chunks/{chunk-RF3EXIHJ.js → chunk-K3PFMM5U.js} +49 -26
- package/chunks/{chunk-JCW2R7WC.js → chunk-K623ENWT.js} +3 -79
- package/chunks/{chunk-T2NCM2ET.js → chunk-K6KS3LTN.js} +2 -749
- package/chunks/chunk-KWHKHSIS.js +81 -0
- package/chunks/{chunk-DHHOYAPR.js → chunk-L2E5GFAG.js} +7 -7
- package/chunks/{chunk-2W3OOD4W.js → chunk-L55JWS76.js} +6 -3
- package/chunks/{chunk-E5TUC6CA.js → chunk-LHKCY7DY.js} +3 -3
- package/chunks/{chunk-NH6KE4JX.js → chunk-LOY7RWQG.js} +3 -3
- package/chunks/{chunk-U7M2DMGW.js → chunk-M4MSAE7U.js} +130 -5
- package/chunks/{chunk-IJTOWOD7.js → chunk-MB32MS4U.js} +92 -9
- package/chunks/{chunk-PR75REBZ.js → chunk-MM7TH7ZM.js} +12 -82
- package/chunks/{chunk-FODK6UMO.js → chunk-MPHPFVKK.js} +0 -2
- package/chunks/{chunk-M5JM7OSF.js → chunk-N4ACHWNH.js} +2 -3
- package/chunks/{chunk-JESCGQM3.js → chunk-NAVJD2PQ.js} +8 -7
- package/chunks/{chunk-J56UI34H.js → chunk-NBD76HUW.js} +4 -2
- package/chunks/{chunk-2SCDWPXI.js → chunk-NC4U4I3Y.js} +5 -5
- package/chunks/{chunk-H4SBPHSA.js → chunk-NNL7WPPK.js} +3 -3
- package/chunks/{chunk-YBL3QUDD.js → chunk-NQCXWP5D.js} +1 -1
- package/chunks/{chunk-CIKQ7KKO.js → chunk-NVFSGPIF.js} +954 -444
- package/chunks/{chunk-6OUGMXDC.js → chunk-NWNEANAT.js} +7 -7
- package/chunks/chunk-O6GEWCJA.js +21 -0
- package/chunks/chunk-OCPBI7J5.js +18 -0
- package/chunks/{chunk-KIM5GUMA.js → chunk-OE6F6ZWQ.js} +589 -220
- package/chunks/{chunk-SQCQ4KO2.js → chunk-P5DEY3NF.js} +380 -317
- package/chunks/{chunk-2JZBVYTU.js → chunk-Q3T5KA2V.js} +1 -8
- package/chunks/{chunk-MB4MZHMJ.js → chunk-QARJNL2V.js} +211 -522
- package/chunks/{chunk-YH6G52F2.js → chunk-QCXGC7QB.js} +4 -4
- package/chunks/chunk-QDK4F2N5.js +1252 -0
- package/chunks/{chunk-VDDGDZMA.js → chunk-QHWCP53L.js} +14 -7
- package/chunks/{chunk-VULLI6WQ.js → chunk-QIERF2GQ.js} +6 -6
- package/chunks/{chunk-TGILQ3YH.js → chunk-QQTJK5GB.js} +200 -77
- package/chunks/{chunk-H5FFA6TH.js → chunk-QTHQ6Z5X.js} +16 -3
- package/chunks/{chunk-5I2IWRSH.js → chunk-R2XWGR75.js} +2 -2
- package/chunks/{chunk-YPE6A4GC.js → chunk-RT7FNC2O.js} +2 -2
- package/chunks/{chunk-OFDOK3VM.js → chunk-RX7NJOPE.js} +8 -13
- package/chunks/{chunk-6AM5D4ME.js → chunk-S6LOFUVP.js} +0 -12
- package/chunks/{chunk-K4XWPEWB.js → chunk-SHN4KHDK.js} +4 -33
- package/chunks/{chunk-VYPFXUCB.js → chunk-SZ3KHTDR.js} +1 -1
- package/chunks/chunk-T26EAKDL.js +13 -0
- package/chunks/chunk-T3CHYWJZ.js +758 -0
- package/chunks/{chunk-FNQ6T3CV.js → chunk-TEGJSJDF.js} +10 -7
- package/chunks/{chunk-RZIX2G32.js → chunk-THPORXSI.js} +1 -1
- package/chunks/{chunk-OHNBB4XR.js → chunk-THVU3RNH.js} +1 -1
- package/chunks/{record-artifact-RQKFYO5B.js → chunk-TIRRPCFS.js} +22 -7
- package/chunks/{chunk-ETSW4KLJ.js → chunk-TUCOXPHJ.js} +2 -2
- package/chunks/{chunk-63P4EL5V.js → chunk-TZTAV5RH.js} +1 -1
- package/chunks/{chunk-LK7CHLVP.js → chunk-U4VTUMMK.js} +0 -60
- package/chunks/{chunk-3RN6GBKS.js → chunk-U5CODIJW.js} +1 -1
- package/chunks/chunk-UU2B5YG6.js +2196 -0
- package/chunks/{chunk-R5AFZNQW.js → chunk-VAVHTGU4.js} +15 -8
- package/chunks/{chunk-2NH6DYI4.js → chunk-VHPFWR2O.js} +12 -12
- package/chunks/{chunk-IKYJHJNF.js → chunk-VOMQ2P6B.js} +3 -3
- package/chunks/{chunk-ZFDTEDCF.js → chunk-VX22DUW2.js} +6 -6
- package/chunks/{chunk-HTR4WV6U.js → chunk-W4RQUHY3.js} +31 -1
- package/chunks/{chunk-M4FMGVY4.js → chunk-WQP7BKWA.js} +3 -3
- package/chunks/{chunk-LH2BYDQ5.js → chunk-X2E5TFJ5.js} +18 -12
- package/chunks/{chunk-COH43MRJ.js → chunk-XCGIMOLN.js} +27 -1
- package/chunks/{chunk-YX324OPW.js → chunk-XDS22O52.js} +1 -1
- package/chunks/chunk-XP4L6KS3.js +463 -0
- package/chunks/{chunk-6FGBXPWM.js → chunk-XQK4XXTN.js} +38 -44
- package/chunks/{chunk-55DJUCI2.js → chunk-XWYPFDB5.js} +53 -43
- package/chunks/{chunk-Y34KJKDC.js → chunk-Y7BVNVVW.js} +1 -1
- package/chunks/{chunk-IPUUTYMV.js → chunk-YDLJGZHL.js} +1 -1
- package/chunks/{chunk-HIJQF5B5.js → chunk-YGE3IXJP.js} +1 -1
- package/chunks/{chunk-LQIW3YFY.js → chunk-YJFPRUWX.js} +9 -7
- package/chunks/{chunk-J24WCGIN.js → chunk-YQIIG4NA.js} +4 -4
- package/chunks/{chunk-BJX6ZSUK.js → chunk-YUFIEIWC.js} +2 -2
- package/chunks/{chunk-NIBLUX3Y.js → chunk-Z3S5EMOW.js} +148 -21
- package/chunks/{chunk-WCXCRJYB.js → chunk-Z3YLHKB7.js} +1 -1
- package/chunks/chunk-Z4X5MTRT.js +133 -0
- package/chunks/{chunk-UW5EOVUN.js → chunk-ZBVS26BY.js} +4 -4
- package/chunks/{chunk-HTO4JFDZ.js → chunk-ZPJWUGCS.js} +0 -1
- package/chunks/{chunk-X5XDDSSH.js → chunk-ZPZ7ZJEE.js} +28 -5
- package/chunks/{computer-use-SOQ4E3VX.js → computer-use-GOM42LNK.js} +53 -50
- package/chunks/{config-utils-7V7GGIW6.js → config-utils-WADIDWGG.js} +4 -3
- package/chunks/contextCommand-6LVPTIWD.js +83 -0
- package/chunks/core-runtime-253XV2DB.js +137 -0
- package/chunks/{create-sub-session-QRJLW5BV.js → create-sub-session-45POYEVP.js} +50 -47
- package/chunks/{create-sub-session-IWW2IZ2T.js → create-sub-session-62YZWVAY.js} +3 -3
- package/chunks/{cron-create-YIID5XAW.js → cron-create-6E7GIQTG.js} +6 -6
- package/chunks/{cron-delete-ZVHYCEP2.js → cron-delete-JD26XY3W.js} +5 -5
- package/chunks/{cron-list-XEGS463Q.js → cron-list-CUWFB44G.js} +6 -6
- package/chunks/{daemon-YO6433NF.js → daemon-PCNCI5YU.js} +428 -18
- package/chunks/daemon-status-provider-AKALDYJJ.js +93 -0
- package/chunks/daemon-trust-policy-XB7ZSQFQ.js +88 -0
- package/chunks/daemon-trust-policy-monitor-FUTKP42Q.js +175 -0
- package/chunks/{de-HGRCYDEJ.js → de-SY6O76BF.js} +6 -1
- package/chunks/deferred-core-runtime-RKLCO7V5.js +92 -0
- package/chunks/dist-26BIMQT6.js +4487 -0
- package/chunks/{dist-F6IBUDR4.js → dist-2PERFI23.js} +12 -9
- package/chunks/{dist-46NQKLTW.js → dist-OAOC5OV4.js} +2 -2
- package/chunks/{dist-YFNEUWSE.js → dist-PVEAFLHY.js} +5 -4
- package/chunks/{dist-AIKFMUKK.js → dist-SL2LUMML.js} +1449 -14
- package/chunks/dist-ULIG4M5H.js +13415 -0
- package/chunks/{dist-WEAHOXDM.js → dist-WGMNT3JQ.js} +2 -1
- package/chunks/{dist-BBLXMS3N.js → dist-ZHXOBXDN.js} +3 -3
- package/chunks/earlyInputCapture-FCWU47OB.js +85 -0
- package/chunks/{edit-OBDSQURM.js → edit-TTACM3LN.js} +51 -48
- package/chunks/{en-MTWBNGDO.js → en-NBK3JKCE.js} +9 -1
- package/chunks/{enter-worktree-U6MRPQ2P.js → enter-worktree-R34GFDX6.js} +51 -48
- package/chunks/{enterPlanMode-BC5QUZZ2.js → enterPlanMode-KJPBB6G5.js} +51 -48
- package/chunks/environment-IJG3N2PR.js +105 -0
- package/chunks/errors-MRON5OJD.js +91 -0
- package/chunks/esm-K5FARBNI.js +5548 -0
- package/chunks/{exit-worktree-DGNYMECB.js → exit-worktree-UBA66Y4I.js} +51 -48
- package/chunks/exitPlanMode-SMSPGNSK.js +76 -0
- package/chunks/{fast-path-JJZFJANL.js → fast-path-ZBAMZDCP.js} +16 -6
- package/chunks/{fr-45RLL55O.js → fr-4KG5V7UT.js} +6 -1
- package/chunks/{gemini-QS36EBZV.js → gemini-XFT7HRNL.js} +106 -99
- package/chunks/{geminiContentGenerator-AG4KB6CV.js → geminiContentGenerator-XD3MLYQX.js} +40 -11
- package/chunks/{getMachineId-bsd-V7W3GODC.js → getMachineId-bsd-FG7IUY6U.js} +1 -1
- package/chunks/{getMachineId-darwin-TDO75DQP.js → getMachineId-darwin-GLCJI2RA.js} +1 -1
- package/chunks/{getMachineId-linux-TF43WQT2.js → getMachineId-linux-O6OPPAKO.js} +1 -1
- package/chunks/{getMachineId-unsupported-ZGUO3TXT.js → getMachineId-unsupported-S6CKYVGC.js} +1 -1
- package/chunks/{getMachineId-win-ECFYZZFQ.js → getMachineId-win-X5SRNEH7.js} +1 -1
- package/chunks/{glob-V7R3PSK3.js → glob-HFKY7HXZ.js} +51 -48
- package/chunks/goal-tools-HGO6VXPB.js +335 -0
- package/chunks/{grep-QYPSK7OP.js → grep-EO5Z3PFV.js} +53 -49
- package/chunks/handleAutoUpdate-WRENFE6C.js +84 -0
- package/chunks/i18n-ZG5OTVSV.js +100 -0
- package/chunks/{image-gen-Z3VPGKRC.js → image-gen-CKWZ4MJI.js} +12 -12
- package/chunks/initializer-FYPLLRC7.js +89 -0
- package/chunks/installationInfo-5RV4HRMC.js +83 -0
- package/chunks/{ja-B7DF7DFG.js → ja-F3GSQXMF.js} +6 -1
- package/chunks/{keychain-token-storage-MDTG3WRM.js → keychain-token-storage-IKO4G53C.js} +3 -3
- package/chunks/lib-RUF3WZA6.js +9 -0
- package/chunks/list-ZNWVL3AT.js +92 -0
- package/chunks/{list-agents-5KJJHR6I.js → list-agents-PXJ7ZUFB.js} +3 -3
- package/chunks/loadedSettingsAdapter-GQGNHP5I.js +86 -0
- package/chunks/{loggingContentGenerator-HS3S5H3Q.js → loggingContentGenerator-MS5DFAWH.js} +78 -113
- package/chunks/{loop-wakeup-FXKNNYSY.js → loop-wakeup-Y26NQZ5I.js} +15 -8
- package/chunks/{ls-NTK6VOQJ.js → ls-ONQTTMQR.js} +5 -5
- package/chunks/{lsp-2JI24STP.js → lsp-YGHHRGMD.js} +3 -3
- package/chunks/{managed-npm-update-JYEMMXA3.js → managed-npm-update-67AK4GTL.js} +51 -48
- package/chunks/mcp-FVQ4VTLM.js +86 -0
- package/chunks/{monitor-R3ODH5U6.js → monitor-BXB33EOZ.js} +51 -48
- package/chunks/nonInteractiveCli-CN2GYSN3.js +148 -0
- package/chunks/{notebook-edit-BNOK452R.js → notebook-edit-FKYRBV4L.js} +51 -48
- package/chunks/{openaiContentGenerator-WMCU3O2H.js → openaiContentGenerator-UUXV5DGU.js} +26 -27
- package/chunks/pidfile-MV347TTZ.js +89 -0
- package/chunks/process-registry-2CHQBXH5.js +157 -0
- package/chunks/{processUtils-RT7UNCC2.js → processUtils-LKFG52RV.js} +2 -2
- package/chunks/{pt-22Q3FP73.js → pt-EQ33KWEN.js} +6 -1
- package/chunks/{qwenContentGenerator-HHCRK4SX.js → qwenContentGenerator-3WYI2HRW.js} +56 -53
- package/chunks/{qwenOAuth2-OWLB5AKH.js → qwenOAuth2-B46MW45O.js} +10 -10
- package/chunks/read-file-ACSHVWP3.js +29 -0
- package/chunks/{read-mcp-resource-4DKQWGHD.js → read-mcp-resource-U2IJN5HM.js} +4 -4
- package/chunks/record-artifact-MGPJ7EG4.js +21 -0
- package/chunks/resumeHistoryUtils-AMS4767B.js +94 -0
- package/chunks/ripGrep-BAPM2UKC.js +76 -0
- package/chunks/{ru-FZCNZHDC.js → ru-7OZAUKGG.js} +6 -1
- package/chunks/{run-qwen-serve-FU6HEM4J.js → run-qwen-serve-JEN6FO2A.js} +1018 -263
- package/chunks/runtime-WVP22ISH.js +122 -0
- package/chunks/{scheduler-G2ZS2Z7E.js → scheduler-HTX5ACVR.js} +50 -47
- package/chunks/{sdk-exporters-grpc-AK3LGHNO.js → sdk-exporters-grpc-54L4LS5L.js} +4 -4
- package/chunks/{sdk-exporters-http-FYBSUCPD.js → sdk-exporters-http-4BQANSJ6.js} +7 -7
- package/chunks/{sdk-impl-GMVPB7NB.js → sdk-impl-Z4VXWVFX.js} +14 -14
- package/chunks/{send-message-Q6OOR6BR.js → send-message-PMP4ATVM.js} +8 -13
- package/chunks/serve-ELQIVNWN.js +92 -0
- package/chunks/{server-4UMH7OIZ.js → server-JNW2NOSQ.js} +5288 -1364
- package/chunks/{session-K3O3Q2SV.js → session-NC356XNS.js} +102 -95
- package/chunks/{settings-CR2EWTBA.js → settings-73RMIOJ6.js} +54 -51
- package/chunks/shell-NMHF5TFG.js +86 -0
- package/chunks/{skill-I3SDA4MB.js → skill-XPGXHEKO.js} +22 -22
- package/chunks/skill-settings-5IGIJDGA.js +94 -0
- package/chunks/spawnChannel-T5THBHFN.js +85 -0
- package/chunks/standalone-update-ODXEPDLP.js +95 -0
- package/chunks/{startInteractiveUI-SLZGHRPH.js → startInteractiveUI-S27DXVAE.js} +1241 -905
- package/chunks/{syntheticOutput-I3757IWH.js → syntheticOutput-D7E6ZFKR.js} +4 -4
- package/chunks/task-create-NFCYD43L.js +26 -0
- package/chunks/{task-list-FOPULZEP.js → task-list-TAVMGEVD.js} +7 -7
- package/chunks/{task-stop-H6RHXFVQ.js → task-stop-ZDF2UJRM.js} +3 -3
- package/chunks/{task-update-M57TFZJT.js → task-update-6L7LHGEX.js} +12 -11
- package/chunks/{team-create-YJALH5D2.js → team-create-CTLQWTJ2.js} +53 -50
- package/chunks/{team-delete-QE2UXJL7.js → team-delete-DPGGRQBU.js} +7 -7
- package/chunks/{team-plan-approval-34QFYKGN.js → team-plan-approval-WKRUAPJ4.js} +51 -48
- package/chunks/theme-manager-XQHXQQX6.js +80 -0
- package/chunks/{todoWrite-VQ7FKOHL.js → todoWrite-2UO5G6G6.js} +34 -6
- package/chunks/{tool-search-NF7GB6LE.js → tool-search-45YINAJA.js} +21 -22
- package/chunks/total-session-admission-QPUKGHKO.js +88 -0
- package/chunks/trustedFolders-YMUTRHEQ.js +98 -0
- package/chunks/{update-relaunch-WBUZJC5O.js → update-relaunch-PZUXTVHC.js} +5 -5
- package/chunks/updateCheck-IZAN4XTB.js +95 -0
- package/chunks/useAutoAcceptIndicator-CGL2MAYE.js +96 -0
- package/chunks/{validateNonInterActiveAuth-3R223G3R.js → validateNonInterActiveAuth-GBGNJ65K.js} +97 -90
- package/chunks/{version-HS7YSFHV.js → version-Z7EX24NZ.js} +1 -1
- package/chunks/{web-fetch-NKCSG7ZE.js → web-fetch-ETTT2H3V.js} +19 -21
- package/chunks/{web-search-S62WAP4S.js → web-search-Y3ZSVRJ6.js} +13 -13
- package/chunks/{workflow-QAGU5RU4.js → workflow-ATRJSAO7.js} +52 -49
- package/chunks/workspace-providers-status-YM3WLW3N.js +89 -0
- package/chunks/{workspace-registration-store-24JMHDGF.js → workspace-registration-store-4EGNCIPG.js} +1 -1
- package/chunks/workspace-registry-NGZOZKQP.js +96 -0
- package/chunks/workspace-service-SVWOXX2B.js +103 -0
- package/chunks/workspace-skills-status-YZHZ3PT5.js +89 -0
- package/chunks/workspace-trust-reconciler-GGBQV2U5.js +349 -0
- package/chunks/write-file-HLGCEB72.js +78 -0
- package/chunks/xterm-headless-NTYVIBT3.js +3475 -0
- package/chunks/{zh-LUIGBD55.js → zh-H3YDK5QW.js} +9 -1
- package/chunks/{zh-TW-F5KG2IYD.js → zh-TW-JYCP7XUA.js} +9 -1
- package/chunks/zoom-image-LDECT475.js +224 -0
- package/cli.js +50 -16
- package/locales/ca.js +7 -2
- package/locales/de.js +7 -2
- package/locales/en.js +10 -2
- package/locales/fr.js +7 -2
- package/locales/ja.js +7 -2
- package/locales/pt.js +7 -2
- package/locales/ru.js +7 -2
- package/locales/zh-TW.js +10 -2
- package/locales/zh.js +10 -2
- package/package.json +5 -4
- package/web-shell/assets/{arc-DcbWnB9T.js → arc-Dpy_U6Bb.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-kMMF5sud.js → architectureDiagram-3BPJPVTR-DgDOg-c5.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-Htl9vTJS.js → blockDiagram-GPEHLZMM-tADd9Ja3.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-BnZnm0mQ.js → c4Diagram-AAUBKEIU-68wj9MCU.js} +1 -1
- package/web-shell/assets/channel-Do7fFnFl.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DziB7kDG.js → chunk-2J33WTMH-DjJLOeVU.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-CmkD8daw.js → chunk-4BX2VUAB-CMbzGeVC.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-CHAd9A_U.js → chunk-55IACEB6-SlKgejv9.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-Dqaam3fE.js → chunk-727SXJPM-CijXssHZ.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-D_-saBYM.js → chunk-AQP2D5EJ-D8w25nvR.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-B9r_veWD.js → chunk-FMBD7UC4-Bv9dcx_e.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-B3EaCSpL.js → chunk-ND2GUHAM-Bzf6sAOd.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-CYq8x9mn.js → chunk-QZHKN3VN-whNoNeW5.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-By_XOP3X.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-By_XOP3X.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-D0ng4uiB.js → cose-bilkent-S5V4N54A-rpQS44Lz.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-DCZollQv.js → dagre-BM42HDAG-Ck7VE6nT.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-Dfk2pWS0.js → diagram-2AECGRRQ-CgRrsodR.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-kX38ltWR.js → diagram-5GNKFQAL-CsTZtE5A.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CJz2vsXh.js → diagram-KO2AKTUF-D5EAdVq4.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BvMLZm_7.js → diagram-LMA3HP47-DNrjHC7Z.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-l7kfStkO.js → diagram-OG6HWLK6-ClJSJGgC.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-BSVa8GGT.js → erDiagram-TEJ5UH35-DuVnos_y.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-CoawKIXH.js → flowDiagram-I6XJVG4X-DEpIVl1s.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-DFUDH0zF.js → ganttDiagram-6RSMTGT7-COnQM2-C.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Y2pvpT4e.js → gitGraphDiagram-PVQCEYII-C-lX5H3_.js} +1 -1
- package/web-shell/assets/index-C2GE3DAF.js +74 -0
- package/web-shell/assets/{index-D0GX0zZf.js → index-DfcyS2E7.js} +1 -1
- package/web-shell/assets/index-Qxt6kN7i.js +1700 -0
- package/web-shell/assets/index-bo0Z8hfu.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CU8_zLiX.js → infoDiagram-5YYISTIA-D0WP-wmU.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-AVQiV0DU.js → ishikawaDiagram-YF4QCWOH-DgsI3Clu.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-DQ0VSKa3.js → journeyDiagram-JHISSGLW-4yCoMZO6.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-BqnWqsE_.js → kanban-definition-UN3LZRKU-D_05au1N.js} +1 -1
- package/web-shell/assets/{linear-BkoihsaA.js → linear-B38fDz0Q.js} +1 -1
- package/web-shell/assets/{mermaid.core-5RJs-31j.js → mermaid.core-aGNwTaHi.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-D33Bxnpd.js → mindmap-definition-RKZ34NQL-C2yf_5WM.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-BuEAw3BH.js → pieDiagram-4H26LBE5-DiHABBT-.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Kox_usEq.js → quadrantDiagram-W4KKPZXB-W9xkeAGe.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CNjeUif0.js → requirementDiagram-4Y6WPE33-BGmRXl9k.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BCd2OL_U.js → sankeyDiagram-5OEKKPKP-CvOmT43_.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CF2ZTsz0.js → sequenceDiagram-3UESZ5HK-C8pdd0Z-.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-qenSzHtm.js → stateDiagram-AJRCARHV-C-CYdFx2.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BieEHeN9.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-B5DyWdgs.js → timeline-definition-PNZ67QCA-w2KQn1cI.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DqP4I_o_.js → vennDiagram-CIIHVFJN-DuorhRku.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-CJe2e4mg.js → wardley-L42UT6IY-BAXm2cWy.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BMDSw-Rr.js → wardleyDiagram-YWT4CUSO-8PHaOXn5.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-BTVZYkxD.js → xychartDiagram-2RQKCTM6-Do84JFSc.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/MaxSizedBox-5DPPWPGT.js +0 -85
- package/chunks/agent-6ODUANDO.js +0 -81
- package/chunks/agent-headless-7BYQTMHW.js +0 -75
- package/chunks/bridge-ZUB64FAE.js +0 -90
- package/chunks/chunk-LEH5C7FV.js +0 -232
- package/chunks/chunk-SZRN75WQ.js +0 -29
- package/chunks/chunk-UGYMA4EI.js +0 -219
- package/chunks/chunk-Z2BC6UJ5.js +0 -8575
- package/chunks/contextCommand-JLHYA34Z.js +0 -80
- package/chunks/daemon-status-provider-2233Q37D.js +0 -89
- package/chunks/earlyInputCapture-A7NDU3PF.js +0 -82
- package/chunks/environment-W5UFC2CH.js +0 -102
- package/chunks/errors-M7CLORXH.js +0 -88
- package/chunks/exitPlanMode-GXTBWQAR.js +0 -403
- package/chunks/handleAutoUpdate-6DBEZYPV.js +0 -81
- package/chunks/i18n-VUJJZIMU.js +0 -97
- package/chunks/initializer-UWAK5U5O.js +0 -86
- package/chunks/installationInfo-6O2YAA52.js +0 -80
- package/chunks/list-GB4ESM3T.js +0 -89
- package/chunks/loadedSettingsAdapter-OT6JVQ7U.js +0 -83
- package/chunks/mcp-6DBDJPFU.js +0 -83
- package/chunks/nonInteractiveCli-MOYCYBBU.js +0 -141
- package/chunks/pidfile-TFRZZZIO.js +0 -86
- package/chunks/read-file-APMO3PSX.js +0 -31
- package/chunks/resumeHistoryUtils-6KRYEAWZ.js +0 -91
- package/chunks/ripGrep-BEJDEDXW.js +0 -73
- package/chunks/runtime-XXRRTNP6.js +0 -118
- package/chunks/serve-7BSTXJ4T.js +0 -89
- package/chunks/shell-HH3PF3A2.js +0 -83
- package/chunks/spawnChannel-RWNDBXGA.js +0 -82
- package/chunks/src-GE4TTTML.js +0 -3147
- package/chunks/standalone-update-Q6WFRZZQ.js +0 -92
- package/chunks/task-create-N7WQSGYA.js +0 -25
- package/chunks/theme-manager-SWRILQHI.js +0 -77
- package/chunks/total-session-admission-DLHHHLD3.js +0 -84
- package/chunks/trustedFolders-KHXHY6PY.js +0 -93
- package/chunks/updateCheck-RKL6M5XN.js +0 -92
- package/chunks/useAutoAcceptIndicator-CFQ5BUJL.js +0 -93
- package/chunks/workspace-providers-status-QSVZUETE.js +0 -86
- package/chunks/workspace-registry-UT4RBNBM.js +0 -88
- package/chunks/workspace-service-JFWRUS4V.js +0 -98
- package/chunks/workspace-skills-status-ZBBKJOI2.js +0 -85
- package/chunks/write-file-VHIXW5M7.js +0 -73
- package/web-shell/assets/channel-Cq7YKtfC.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CQ9aC1Tg.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ9aC1Tg.js +0 -1
- package/web-shell/assets/index-D9haPt0X.css +0 -5
- package/web-shell/assets/index-ckX9Pq5k.js +0 -1230
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-B7W4zlCr.js +0 -1
- package/chunks/{chunk-TARRHLLG.js → chunk-QUGAUQGJ.js} +25 -25
- package/chunks/{chunk-U7ZFW55U.js → chunk-VOQXFAY5.js} +977 -977
- /package/chunks/{chunk-LXXMOYPL.js → chunk-VXZBKKQR.js} +0 -0
|
@@ -2,20 +2,23 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
mapSkillConfigToStatus
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-L55JWS76.js";
|
|
6
6
|
import {
|
|
7
7
|
STATUS_SCHEMA_VERSION
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-A5UODYG3.js";
|
|
9
|
+
import {
|
|
10
|
+
resolveSkillSettings
|
|
11
|
+
} from "./chunk-Z4X5MTRT.js";
|
|
9
12
|
import {
|
|
10
13
|
loadSettings
|
|
11
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-A5T5W7PR.js";
|
|
12
15
|
import {
|
|
13
16
|
writeStderrLine
|
|
14
17
|
} from "./chunk-OWAK7LMW.js";
|
|
15
18
|
import {
|
|
16
19
|
SkillManager,
|
|
17
20
|
isSafeModeEnv
|
|
18
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-FRXG4ARO.js";
|
|
19
22
|
import {
|
|
20
23
|
init_esbuild_shims
|
|
21
24
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -25,17 +28,18 @@ import {
|
|
|
25
28
|
|
|
26
29
|
// packages/cli/src/serve/workspace-skills-status.ts
|
|
27
30
|
init_esbuild_shims();
|
|
28
|
-
function createWorkspaceSkillsStatusProvider() {
|
|
31
|
+
function createWorkspaceSkillsStatusProvider(options = {}) {
|
|
29
32
|
const managers = /* @__PURE__ */ new Map();
|
|
30
33
|
const provider = /* @__PURE__ */ __name((workspaceCwd) => buildWorkspaceSkillsStatus(
|
|
31
34
|
workspaceCwd,
|
|
32
|
-
managers
|
|
35
|
+
managers,
|
|
36
|
+
options.workspaceTrusted ?? true
|
|
33
37
|
), "provider");
|
|
34
38
|
provider.invalidate = (workspaceCwd) => managers.delete(workspaceCwd);
|
|
35
39
|
return provider;
|
|
36
40
|
}
|
|
37
41
|
__name(createWorkspaceSkillsStatusProvider, "createWorkspaceSkillsStatusProvider");
|
|
38
|
-
async function buildWorkspaceSkillsStatus(workspaceCwd, managers) {
|
|
42
|
+
async function buildWorkspaceSkillsStatus(workspaceCwd, managers, workspaceTrusted) {
|
|
39
43
|
try {
|
|
40
44
|
let skillManager = managers.get(workspaceCwd);
|
|
41
45
|
if (!skillManager) {
|
|
@@ -43,7 +47,7 @@ async function buildWorkspaceSkillsStatus(workspaceCwd, managers) {
|
|
|
43
47
|
// Honor the safe-mode env the same way `Config` does when no explicit
|
|
44
48
|
// flag is passed, so an operator running in safe mode gets the same
|
|
45
49
|
// bundled-only listing the child would produce.
|
|
46
|
-
isSafeMode: /* @__PURE__ */ __name(() => isSafeModeEnv(), "isSafeMode"),
|
|
50
|
+
isSafeMode: /* @__PURE__ */ __name(() => !workspaceTrusted || isSafeModeEnv(), "isSafeMode"),
|
|
47
51
|
// Bare mode is the interactive `--bare` CLI flag; the daemon never runs
|
|
48
52
|
// bare, so it is always off here.
|
|
49
53
|
getBareMode: /* @__PURE__ */ __name(() => false, "getBareMode"),
|
|
@@ -55,13 +59,22 @@ async function buildWorkspaceSkillsStatus(workspaceCwd, managers) {
|
|
|
55
59
|
skillManager = new SkillManager(shim);
|
|
56
60
|
managers.set(workspaceCwd, skillManager);
|
|
57
61
|
}
|
|
58
|
-
const
|
|
62
|
+
const disablements = resolveSkillSettings(
|
|
63
|
+
loadSettings(workspaceCwd, {
|
|
64
|
+
consumeCorruptionEnvVars: false,
|
|
65
|
+
skipLoadEnvironment: !workspaceTrusted,
|
|
66
|
+
skipWorkspaceSettings: !workspaceTrusted,
|
|
67
|
+
workspaceTrusted
|
|
68
|
+
})
|
|
69
|
+
).disablements;
|
|
59
70
|
const skills = await skillManager.listSkills();
|
|
60
71
|
return {
|
|
61
72
|
v: STATUS_SCHEMA_VERSION,
|
|
62
73
|
workspaceCwd,
|
|
63
74
|
initialized: true,
|
|
64
|
-
skills: skills.map(
|
|
75
|
+
skills: skills.map(
|
|
76
|
+
(skill) => mapSkillConfigToStatus(skill, disablements)
|
|
77
|
+
)
|
|
65
78
|
};
|
|
66
79
|
} catch (error) {
|
|
67
80
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -84,14 +97,6 @@ async function buildWorkspaceSkillsStatus(workspaceCwd, managers) {
|
|
|
84
97
|
}
|
|
85
98
|
}
|
|
86
99
|
__name(buildWorkspaceSkillsStatus, "buildWorkspaceSkillsStatus");
|
|
87
|
-
function readDisabledSkillNames(workspaceCwd) {
|
|
88
|
-
const raw = loadSettings(workspaceCwd, false).merged.skills?.disabled;
|
|
89
|
-
if (!Array.isArray(raw)) return /* @__PURE__ */ new Set();
|
|
90
|
-
return new Set(
|
|
91
|
-
raw.filter((name) => typeof name === "string").map((name) => name.trim().toLowerCase()).filter(Boolean)
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
__name(readDisabledSkillNames, "readDisabledSkillNames");
|
|
95
100
|
|
|
96
101
|
export {
|
|
97
102
|
createWorkspaceSkillsStatusProvider
|
|
@@ -14440,6 +14440,20 @@ var cleanupYogaNode = /* @__PURE__ */ __name((node) => {
|
|
|
14440
14440
|
node?.unsetMeasureFunc();
|
|
14441
14441
|
node?.freeRecursive();
|
|
14442
14442
|
}, "cleanupYogaNode");
|
|
14443
|
+
var clearStaticNodeIfContained = /* @__PURE__ */ __name((removeNode) => {
|
|
14444
|
+
const staticNode = currentRootNode?.staticNode;
|
|
14445
|
+
if (!staticNode) {
|
|
14446
|
+
return;
|
|
14447
|
+
}
|
|
14448
|
+
let current = staticNode;
|
|
14449
|
+
while (current) {
|
|
14450
|
+
if (current === removeNode) {
|
|
14451
|
+
currentRootNode.staticNode = void 0;
|
|
14452
|
+
return;
|
|
14453
|
+
}
|
|
14454
|
+
current = current.parentNode;
|
|
14455
|
+
}
|
|
14456
|
+
}, "clearStaticNodeIfContained");
|
|
14443
14457
|
var currentUpdatePriority = import_constants.NoEventPriority;
|
|
14444
14458
|
var currentRootNode;
|
|
14445
14459
|
async function loadPackageJson() {
|
|
@@ -14594,11 +14608,10 @@ var reconciler_default = (0, import_react_reconciler.default)({
|
|
|
14594
14608
|
appendChildToContainer: appendChildNode,
|
|
14595
14609
|
insertInContainerBefore: insertBeforeNode,
|
|
14596
14610
|
removeChildFromContainer(node, removeNode) {
|
|
14611
|
+
clearStaticNodeIfContained(removeNode);
|
|
14597
14612
|
removeChildNode(node, removeNode);
|
|
14598
14613
|
cleanupYogaNode(removeNode.yogaNode);
|
|
14599
|
-
|
|
14600
|
-
currentRootNode.staticNode = void 0;
|
|
14601
|
-
}
|
|
14614
|
+
removeNode.yogaNode = void 0;
|
|
14602
14615
|
},
|
|
14603
14616
|
commitUpdate(node, _type, oldProps, newProps) {
|
|
14604
14617
|
if (currentRootNode && node.internal_static) {
|
|
@@ -14634,11 +14647,10 @@ var reconciler_default = (0, import_react_reconciler.default)({
|
|
|
14634
14647
|
setTextNodeValue(node, newText);
|
|
14635
14648
|
},
|
|
14636
14649
|
removeChild(node, removeNode) {
|
|
14650
|
+
clearStaticNodeIfContained(removeNode);
|
|
14637
14651
|
removeChildNode(node, removeNode);
|
|
14638
14652
|
cleanupYogaNode(removeNode.yogaNode);
|
|
14639
|
-
|
|
14640
|
-
currentRootNode.staticNode = void 0;
|
|
14641
|
-
}
|
|
14653
|
+
removeNode.yogaNode = void 0;
|
|
14642
14654
|
},
|
|
14643
14655
|
setCurrentUpdatePriority(newPriority) {
|
|
14644
14656
|
currentUpdatePriority = newPriority;
|
|
@@ -16452,11 +16464,11 @@ init_esbuild_shims();
|
|
|
16452
16464
|
var showCursorEscape = "\x1B[?25h";
|
|
16453
16465
|
var hideCursorEscape = "\x1B[?25l";
|
|
16454
16466
|
var cursorPositionChanged = /* @__PURE__ */ __name((a, b) => a?.x !== b?.x || a?.y !== b?.y, "cursorPositionChanged");
|
|
16455
|
-
var buildCursorSuffix = /* @__PURE__ */ __name((visibleLineCount2, cursorPosition) => {
|
|
16467
|
+
var buildCursorSuffix = /* @__PURE__ */ __name((visibleLineCount2, cursorPosition, hasTrailingNewline = true) => {
|
|
16456
16468
|
if (!cursorPosition) {
|
|
16457
16469
|
return "";
|
|
16458
16470
|
}
|
|
16459
|
-
const moveUp = visibleLineCount2 - cursorPosition.y;
|
|
16471
|
+
const moveUp = (hasTrailingNewline ? visibleLineCount2 : visibleLineCount2 - 1) - cursorPosition.y;
|
|
16460
16472
|
return (moveUp > 0 ? base_exports.cursorUp(moveUp) : "") + base_exports.cursorTo(cursorPosition.x) + showCursorEscape;
|
|
16461
16473
|
}, "buildCursorSuffix");
|
|
16462
16474
|
var buildReturnToBottom = /* @__PURE__ */ __name((previousLineCount, previousCursorPosition) => {
|
|
@@ -16469,7 +16481,7 @@ var buildReturnToBottom = /* @__PURE__ */ __name((previousLineCount, previousCur
|
|
|
16469
16481
|
var buildCursorOnlySequence = /* @__PURE__ */ __name((input) => {
|
|
16470
16482
|
const hidePrefix = input.cursorWasShown ? hideCursorEscape : "";
|
|
16471
16483
|
const returnToBottom = buildReturnToBottom(input.previousLineCount, input.previousCursorPosition);
|
|
16472
|
-
const cursorSuffix = buildCursorSuffix(input.visibleLineCount, input.cursorPosition);
|
|
16484
|
+
const cursorSuffix = buildCursorSuffix(input.visibleLineCount, input.cursorPosition, input.hasTrailingNewline);
|
|
16473
16485
|
return hidePrefix + returnToBottom + cursorSuffix;
|
|
16474
16486
|
}, "buildCursorOnlySequence");
|
|
16475
16487
|
var buildReturnToBottomPrefix = /* @__PURE__ */ __name((cursorWasShown, previousLineCount, previousCursorPosition) => {
|
|
@@ -16538,6 +16550,7 @@ var createStandard = /* @__PURE__ */ __name((stream, { showCursor = false } = {}
|
|
|
16538
16550
|
let cursorDirty = false;
|
|
16539
16551
|
let previousCursorPosition;
|
|
16540
16552
|
let cursorWasShown = false;
|
|
16553
|
+
let previousHasTrailingNewline = true;
|
|
16541
16554
|
const getActiveCursor = /* @__PURE__ */ __name(() => cursorDirty ? cursorPosition : void 0, "getActiveCursor");
|
|
16542
16555
|
const hasChanges = /* @__PURE__ */ __name((str, activeCursor) => {
|
|
16543
16556
|
const cursorChanged = cursorPositionChanged(activeCursor, previousCursorPosition);
|
|
@@ -16556,20 +16569,23 @@ var createStandard = /* @__PURE__ */ __name((stream, { showCursor = false } = {}
|
|
|
16556
16569
|
}
|
|
16557
16570
|
const lines = str.split("\n");
|
|
16558
16571
|
const visibleCount = visibleLineCount(lines, str);
|
|
16559
|
-
const
|
|
16572
|
+
const hasTrailingNewline = str.endsWith("\n");
|
|
16573
|
+
const cursorSuffix = buildCursorSuffix(visibleCount, activeCursor, hasTrailingNewline);
|
|
16560
16574
|
if (str === previousOutput && cursorChanged) {
|
|
16561
16575
|
stream.write(buildCursorOnlySequence({
|
|
16562
16576
|
cursorWasShown,
|
|
16563
16577
|
previousLineCount,
|
|
16564
16578
|
previousCursorPosition,
|
|
16565
16579
|
visibleLineCount: visibleCount,
|
|
16566
|
-
cursorPosition: activeCursor
|
|
16580
|
+
cursorPosition: activeCursor,
|
|
16581
|
+
hasTrailingNewline: previousHasTrailingNewline
|
|
16567
16582
|
}));
|
|
16568
16583
|
} else {
|
|
16569
16584
|
previousOutput = str;
|
|
16570
16585
|
const returnPrefix = buildReturnToBottomPrefix(cursorWasShown, previousLineCount, previousCursorPosition);
|
|
16571
16586
|
stream.write(returnPrefix + base_exports.eraseLines(previousLineCount) + str + cursorSuffix);
|
|
16572
16587
|
previousLineCount = lines.length;
|
|
16588
|
+
previousHasTrailingNewline = hasTrailingNewline;
|
|
16573
16589
|
}
|
|
16574
16590
|
previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
|
|
16575
16591
|
cursorWasShown = activeCursor !== void 0;
|
|
@@ -16582,12 +16598,14 @@ var createStandard = /* @__PURE__ */ __name((stream, { showCursor = false } = {}
|
|
|
16582
16598
|
previousLineCount = 0;
|
|
16583
16599
|
previousCursorPosition = void 0;
|
|
16584
16600
|
cursorWasShown = false;
|
|
16601
|
+
previousHasTrailingNewline = true;
|
|
16585
16602
|
};
|
|
16586
16603
|
render2.done = () => {
|
|
16587
16604
|
previousOutput = "";
|
|
16588
16605
|
previousLineCount = 0;
|
|
16589
16606
|
previousCursorPosition = void 0;
|
|
16590
16607
|
cursorWasShown = false;
|
|
16608
|
+
previousHasTrailingNewline = true;
|
|
16591
16609
|
if (!showCursor) {
|
|
16592
16610
|
cli_cursor_default.show(stream);
|
|
16593
16611
|
hasHiddenCursor = false;
|
|
@@ -16598,6 +16616,7 @@ var createStandard = /* @__PURE__ */ __name((stream, { showCursor = false } = {}
|
|
|
16598
16616
|
previousLineCount = 0;
|
|
16599
16617
|
previousCursorPosition = void 0;
|
|
16600
16618
|
cursorWasShown = false;
|
|
16619
|
+
previousHasTrailingNewline = true;
|
|
16601
16620
|
};
|
|
16602
16621
|
render2.sync = (str) => {
|
|
16603
16622
|
const activeCursor = cursorDirty ? cursorPosition : void 0;
|
|
@@ -16605,11 +16624,12 @@ var createStandard = /* @__PURE__ */ __name((stream, { showCursor = false } = {}
|
|
|
16605
16624
|
const lines = str.split("\n");
|
|
16606
16625
|
previousOutput = str;
|
|
16607
16626
|
previousLineCount = lines.length;
|
|
16627
|
+
previousHasTrailingNewline = str.endsWith("\n");
|
|
16608
16628
|
if (!activeCursor && cursorWasShown) {
|
|
16609
16629
|
stream.write(hideCursorEscape);
|
|
16610
16630
|
}
|
|
16611
16631
|
if (activeCursor) {
|
|
16612
|
-
stream.write(buildCursorSuffix(visibleLineCount(lines, str), activeCursor));
|
|
16632
|
+
stream.write(buildCursorSuffix(visibleLineCount(lines, str), activeCursor, previousHasTrailingNewline));
|
|
16613
16633
|
}
|
|
16614
16634
|
previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
|
|
16615
16635
|
cursorWasShown = activeCursor !== void 0;
|
|
@@ -16630,6 +16650,7 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
|
|
|
16630
16650
|
let cursorDirty = false;
|
|
16631
16651
|
let previousCursorPosition;
|
|
16632
16652
|
let cursorWasShown = false;
|
|
16653
|
+
let previousHasTrailingNewline = true;
|
|
16633
16654
|
const getActiveCursor = /* @__PURE__ */ __name(() => cursorDirty ? cursorPosition : void 0, "getActiveCursor");
|
|
16634
16655
|
const hasChanges = /* @__PURE__ */ __name((str, activeCursor) => {
|
|
16635
16656
|
const cursorChanged = cursorPositionChanged(activeCursor, previousCursorPosition);
|
|
@@ -16655,7 +16676,8 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
|
|
|
16655
16676
|
previousLineCount: previousLines.length,
|
|
16656
16677
|
previousCursorPosition,
|
|
16657
16678
|
visibleLineCount: visibleCount,
|
|
16658
|
-
cursorPosition: activeCursor
|
|
16679
|
+
cursorPosition: activeCursor,
|
|
16680
|
+
hasTrailingNewline: previousHasTrailingNewline
|
|
16659
16681
|
}));
|
|
16660
16682
|
previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
|
|
16661
16683
|
cursorWasShown = activeCursor !== void 0;
|
|
@@ -16663,12 +16685,13 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
|
|
|
16663
16685
|
}
|
|
16664
16686
|
const returnPrefix = buildReturnToBottomPrefix(cursorWasShown, previousLines.length, previousCursorPosition);
|
|
16665
16687
|
if (str === "\n" || previousOutput.length === 0) {
|
|
16666
|
-
const cursorSuffix2 = buildCursorSuffix(visibleCount, activeCursor);
|
|
16688
|
+
const cursorSuffix2 = buildCursorSuffix(visibleCount, activeCursor, str.endsWith("\n"));
|
|
16667
16689
|
stream.write(returnPrefix + base_exports.eraseLines(previousLines.length) + str + cursorSuffix2);
|
|
16668
16690
|
cursorWasShown = activeCursor !== void 0;
|
|
16669
16691
|
previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
|
|
16670
16692
|
previousOutput = str;
|
|
16671
16693
|
previousLines = nextLines;
|
|
16694
|
+
previousHasTrailingNewline = str.endsWith("\n");
|
|
16672
16695
|
return true;
|
|
16673
16696
|
}
|
|
16674
16697
|
const hasTrailingNewline = str.endsWith("\n");
|
|
@@ -16693,13 +16716,14 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
|
|
|
16693
16716
|
// has no trailing newline (fullscreen mode).
|
|
16694
16717
|
(isLastLine && !hasTrailingNewline ? "" : "\n"));
|
|
16695
16718
|
}
|
|
16696
|
-
const cursorSuffix = buildCursorSuffix(visibleCount, activeCursor);
|
|
16719
|
+
const cursorSuffix = buildCursorSuffix(visibleCount, activeCursor, hasTrailingNewline);
|
|
16697
16720
|
buffer.push(cursorSuffix);
|
|
16698
16721
|
stream.write(buffer.join(""));
|
|
16699
16722
|
cursorWasShown = activeCursor !== void 0;
|
|
16700
16723
|
previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
|
|
16701
16724
|
previousOutput = str;
|
|
16702
16725
|
previousLines = nextLines;
|
|
16726
|
+
previousHasTrailingNewline = hasTrailingNewline;
|
|
16703
16727
|
return true;
|
|
16704
16728
|
}, "render");
|
|
16705
16729
|
render2.clear = () => {
|
|
@@ -16709,12 +16733,14 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
|
|
|
16709
16733
|
previousLines = [];
|
|
16710
16734
|
previousCursorPosition = void 0;
|
|
16711
16735
|
cursorWasShown = false;
|
|
16736
|
+
previousHasTrailingNewline = true;
|
|
16712
16737
|
};
|
|
16713
16738
|
render2.done = () => {
|
|
16714
16739
|
previousOutput = "";
|
|
16715
16740
|
previousLines = [];
|
|
16716
16741
|
previousCursorPosition = void 0;
|
|
16717
16742
|
cursorWasShown = false;
|
|
16743
|
+
previousHasTrailingNewline = true;
|
|
16718
16744
|
if (!showCursor) {
|
|
16719
16745
|
cli_cursor_default.show(stream);
|
|
16720
16746
|
hasHiddenCursor = false;
|
|
@@ -16725,6 +16751,7 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
|
|
|
16725
16751
|
previousLines = [];
|
|
16726
16752
|
previousCursorPosition = void 0;
|
|
16727
16753
|
cursorWasShown = false;
|
|
16754
|
+
previousHasTrailingNewline = true;
|
|
16728
16755
|
};
|
|
16729
16756
|
render2.sync = (str) => {
|
|
16730
16757
|
const activeCursor = cursorDirty ? cursorPosition : void 0;
|
|
@@ -16732,11 +16759,12 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
|
|
|
16732
16759
|
const lines = str.split("\n");
|
|
16733
16760
|
previousOutput = str;
|
|
16734
16761
|
previousLines = lines;
|
|
16762
|
+
previousHasTrailingNewline = str.endsWith("\n");
|
|
16735
16763
|
if (!activeCursor && cursorWasShown) {
|
|
16736
16764
|
stream.write(hideCursorEscape);
|
|
16737
16765
|
}
|
|
16738
16766
|
if (activeCursor) {
|
|
16739
|
-
stream.write(buildCursorSuffix(visibleLineCount(lines, str), activeCursor));
|
|
16767
|
+
stream.write(buildCursorSuffix(visibleLineCount(lines, str), activeCursor, previousHasTrailingNewline));
|
|
16740
16768
|
}
|
|
16741
16769
|
previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
|
|
16742
16770
|
cursorWasShown = activeCursor !== void 0;
|
|
@@ -18485,6 +18513,7 @@ var Ink = class {
|
|
|
18485
18513
|
return this.nextRenderCommit.promise;
|
|
18486
18514
|
}
|
|
18487
18515
|
renderInteractiveFrame(output, outputHeight, staticOutput) {
|
|
18516
|
+
this.log.setCursorPosition(this.cursorPosition);
|
|
18488
18517
|
const hasStaticOutput = staticOutput !== "";
|
|
18489
18518
|
const isTty = this.options.stdout.isTTY;
|
|
18490
18519
|
const viewportRows = isTty ? getWindowSize(this.options.stdout).rows : 24;
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
useKeypress
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-YJFPRUWX.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-B3TA3IF5.js";
|
|
12
12
|
import {
|
|
13
13
|
APPROVAL_MODES
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-CBBP4BMC.js";
|
|
15
15
|
import {
|
|
16
16
|
init_esbuild_shims
|
|
17
17
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
MissingCliEntryError
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-A5UODYG3.js";
|
|
6
6
|
import {
|
|
7
7
|
redactLogCredentials
|
|
8
8
|
} from "./chunk-M5GB774H.js";
|
|
@@ -125,6 +125,144 @@ function callHook(hook, value) {
|
|
|
125
125
|
}
|
|
126
126
|
__name(callHook, "callHook");
|
|
127
127
|
|
|
128
|
+
// packages/acp-bridge/src/process-registry.ts
|
|
129
|
+
init_esbuild_shims();
|
|
130
|
+
var TERM_GRACE_MS = 5e3;
|
|
131
|
+
var EXIT_DEADLINE_MS = 1e4;
|
|
132
|
+
var ProcessRegistry = class {
|
|
133
|
+
static {
|
|
134
|
+
__name(this, "ProcessRegistry");
|
|
135
|
+
}
|
|
136
|
+
reservations = /* @__PURE__ */ new Set();
|
|
137
|
+
children = /* @__PURE__ */ new Set();
|
|
138
|
+
draining = false;
|
|
139
|
+
shutdownPromise;
|
|
140
|
+
reserve() {
|
|
141
|
+
if (this.draining) {
|
|
142
|
+
throw new Error("ACP process registry is draining");
|
|
143
|
+
}
|
|
144
|
+
const token = Symbol("acp-child");
|
|
145
|
+
this.reservations.add(token);
|
|
146
|
+
let settled = false;
|
|
147
|
+
return {
|
|
148
|
+
attach: /* @__PURE__ */ __name((child) => {
|
|
149
|
+
if (settled || !this.reservations.delete(token)) {
|
|
150
|
+
throw new Error("ACP process reservation is no longer active");
|
|
151
|
+
}
|
|
152
|
+
settled = true;
|
|
153
|
+
const tracked = new TrackedChild(child, () => {
|
|
154
|
+
this.children.delete(tracked);
|
|
155
|
+
});
|
|
156
|
+
this.children.add(tracked);
|
|
157
|
+
if (this.draining) void tracked.terminate().catch(() => {
|
|
158
|
+
});
|
|
159
|
+
return tracked;
|
|
160
|
+
}, "attach"),
|
|
161
|
+
cancel: /* @__PURE__ */ __name(() => {
|
|
162
|
+
if (settled) return;
|
|
163
|
+
settled = true;
|
|
164
|
+
this.reservations.delete(token);
|
|
165
|
+
}, "cancel")
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
shutdown() {
|
|
169
|
+
if (this.shutdownPromise) return this.shutdownPromise;
|
|
170
|
+
this.draining = true;
|
|
171
|
+
this.shutdownPromise = Promise.allSettled(
|
|
172
|
+
[...this.children].map((child) => child.terminate())
|
|
173
|
+
).then((results) => {
|
|
174
|
+
const failures = results.flatMap(
|
|
175
|
+
(result) => result.status === "rejected" ? [result.reason] : []
|
|
176
|
+
);
|
|
177
|
+
if (failures.length > 0) {
|
|
178
|
+
throw new AggregateError(failures, "ACP child process shutdown failed");
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
return this.shutdownPromise;
|
|
182
|
+
}
|
|
183
|
+
killAllSync() {
|
|
184
|
+
this.draining = true;
|
|
185
|
+
for (const child of this.children) child.killSync();
|
|
186
|
+
}
|
|
187
|
+
get activeProcessCount() {
|
|
188
|
+
return this.children.size;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
var TrackedChild = class {
|
|
192
|
+
constructor(child, onExit) {
|
|
193
|
+
this.child = child;
|
|
194
|
+
this.onExit = onExit;
|
|
195
|
+
this.exited = new Promise((resolve) => {
|
|
196
|
+
const finish = /* @__PURE__ */ __name((info) => {
|
|
197
|
+
if (this.exitedSettled) return;
|
|
198
|
+
this.exitedSettled = true;
|
|
199
|
+
this.onExit();
|
|
200
|
+
resolve(info);
|
|
201
|
+
}, "finish");
|
|
202
|
+
child.once("exit", (exitCode, signalCode) => {
|
|
203
|
+
finish({ exitCode, signalCode });
|
|
204
|
+
});
|
|
205
|
+
child.once("spawn", () => {
|
|
206
|
+
this.spawnConfirmed = true;
|
|
207
|
+
});
|
|
208
|
+
child.once("error", () => {
|
|
209
|
+
if (!this.spawnConfirmed) finish(void 0);
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
static {
|
|
214
|
+
__name(this, "TrackedChild");
|
|
215
|
+
}
|
|
216
|
+
exited;
|
|
217
|
+
exitedSettled = false;
|
|
218
|
+
spawnConfirmed = false;
|
|
219
|
+
terminatePromise;
|
|
220
|
+
terminate() {
|
|
221
|
+
this.terminatePromise ??= this.terminateOnce();
|
|
222
|
+
return this.terminatePromise;
|
|
223
|
+
}
|
|
224
|
+
killSync() {
|
|
225
|
+
if (this.exitedSettled) return;
|
|
226
|
+
try {
|
|
227
|
+
this.child.kill("SIGKILL");
|
|
228
|
+
} catch {
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
async terminateOnce() {
|
|
232
|
+
if (this.exitedSettled) return;
|
|
233
|
+
try {
|
|
234
|
+
this.child.kill("SIGTERM");
|
|
235
|
+
} catch {
|
|
236
|
+
if (this.exitedSettled) return;
|
|
237
|
+
}
|
|
238
|
+
let hardKillTimer;
|
|
239
|
+
let deadlineTimer;
|
|
240
|
+
const deadline = new Promise((_, reject) => {
|
|
241
|
+
hardKillTimer = setTimeout(() => this.killSync(), TERM_GRACE_MS);
|
|
242
|
+
hardKillTimer.unref();
|
|
243
|
+
deadlineTimer = setTimeout(() => {
|
|
244
|
+
reject(
|
|
245
|
+
new Error(
|
|
246
|
+
`ACP child pid=${this.child.pid ?? "unknown"} did not exit within ${EXIT_DEADLINE_MS}ms`
|
|
247
|
+
)
|
|
248
|
+
);
|
|
249
|
+
}, EXIT_DEADLINE_MS);
|
|
250
|
+
deadlineTimer.unref();
|
|
251
|
+
});
|
|
252
|
+
try {
|
|
253
|
+
const exitInfo = await Promise.race([this.exited, deadline]);
|
|
254
|
+
if (exitInfo && (exitInfo.exitCode !== 0 || exitInfo.signalCode !== null)) {
|
|
255
|
+
throw new Error(
|
|
256
|
+
`ACP child pid=${this.child.pid ?? "unknown"} exited uncleanly during shutdown (code=${exitInfo.exitCode ?? "none"}, signal=${exitInfo.signalCode ?? "none"})`
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
} finally {
|
|
260
|
+
if (hardKillTimer) clearTimeout(hardKillTimer);
|
|
261
|
+
if (deadlineTimer) clearTimeout(deadlineTimer);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
|
|
128
266
|
// packages/acp-bridge/src/spawnChannel.ts
|
|
129
267
|
var cachedMemoryArgs;
|
|
130
268
|
function getAcpMemoryArgs() {
|
|
@@ -178,6 +316,7 @@ function createStderrForwarder(opts) {
|
|
|
178
316
|
}
|
|
179
317
|
__name(createStderrForwarder, "createStderrForwarder");
|
|
180
318
|
function createSpawnChannelFactory(options = {}) {
|
|
319
|
+
const processRegistry = options.processRegistry ?? new ProcessRegistry();
|
|
181
320
|
return async (workspaceCwd, childEnvOverrides) => {
|
|
182
321
|
const sourceEnv = options.sourceEnv ?? process.env;
|
|
183
322
|
const cliEntry = sourceEnv["QWEN_CLI_ENTRY"] || process.argv[1];
|
|
@@ -194,21 +333,29 @@ function createSpawnChannelFactory(options = {}) {
|
|
|
194
333
|
const execArgs = process.execArgv.filter(
|
|
195
334
|
(a) => !/^--inspect(-brk)?($|=)/.test(a)
|
|
196
335
|
);
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
336
|
+
const reservation = processRegistry.reserve();
|
|
337
|
+
let child;
|
|
338
|
+
try {
|
|
339
|
+
child = spawn(
|
|
340
|
+
process.execPath,
|
|
341
|
+
[
|
|
342
|
+
...execArgs,
|
|
343
|
+
...memoryArgs,
|
|
344
|
+
cliEntry,
|
|
345
|
+
"--acp",
|
|
346
|
+
...options.extraArgs ?? []
|
|
347
|
+
],
|
|
348
|
+
{
|
|
349
|
+
cwd: workspaceCwd,
|
|
350
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
351
|
+
env: childEnv
|
|
352
|
+
}
|
|
353
|
+
);
|
|
354
|
+
} catch (error) {
|
|
355
|
+
reservation.cancel();
|
|
356
|
+
throw error;
|
|
357
|
+
}
|
|
358
|
+
const trackedChild = reservation.attach(child);
|
|
212
359
|
if (child.stderr) {
|
|
213
360
|
const prefix = `[serve pid=${child.pid} cwd=${workspaceCwd}] `;
|
|
214
361
|
const forwarder = createStderrForwarder({
|
|
@@ -221,21 +368,8 @@ function createSpawnChannelFactory(options = {}) {
|
|
|
221
368
|
child.stderr.on("error", () => {
|
|
222
369
|
});
|
|
223
370
|
}
|
|
224
|
-
const exited = new Promise((resolve) => {
|
|
225
|
-
let resolved = false;
|
|
226
|
-
const finish = /* @__PURE__ */ __name((info) => {
|
|
227
|
-
if (resolved) return;
|
|
228
|
-
resolved = true;
|
|
229
|
-
resolve(info);
|
|
230
|
-
}, "finish");
|
|
231
|
-
child.once(
|
|
232
|
-
"exit",
|
|
233
|
-
(code, signal) => finish({ exitCode: code, signalCode: signal })
|
|
234
|
-
);
|
|
235
|
-
child.once("error", () => finish(void 0));
|
|
236
|
-
});
|
|
237
371
|
if (!child.stdin || !child.stdout) {
|
|
238
|
-
|
|
372
|
+
trackedChild.killSync();
|
|
239
373
|
throw new Error(
|
|
240
374
|
"Spawned ACP child has no stdin/stdout \u2014 cannot establish NDJSON channel."
|
|
241
375
|
);
|
|
@@ -245,22 +379,14 @@ function createSpawnChannelFactory(options = {}) {
|
|
|
245
379
|
const stream = ndJsonStream(writable, readable, options.pipeHooks);
|
|
246
380
|
return {
|
|
247
381
|
stream,
|
|
248
|
-
kill: /* @__PURE__ */ __name(() =>
|
|
249
|
-
killSync: /* @__PURE__ */ __name(() =>
|
|
250
|
-
|
|
251
|
-
try {
|
|
252
|
-
child.kill("SIGKILL");
|
|
253
|
-
} catch {
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
}, "killSync"),
|
|
257
|
-
exited
|
|
382
|
+
kill: /* @__PURE__ */ __name(() => trackedChild.terminate(), "kill"),
|
|
383
|
+
killSync: /* @__PURE__ */ __name(() => trackedChild.killSync(), "killSync"),
|
|
384
|
+
exited: trackedChild.exited
|
|
258
385
|
};
|
|
259
386
|
};
|
|
260
387
|
}
|
|
261
388
|
__name(createSpawnChannelFactory, "createSpawnChannelFactory");
|
|
262
389
|
var defaultSpawnChannelFactory = createSpawnChannelFactory();
|
|
263
|
-
var KILL_HARD_DEADLINE_MS = 1e4;
|
|
264
390
|
var SCRUBBED_CHILD_ENV_KEYS = /* @__PURE__ */ new Set([
|
|
265
391
|
"QWEN_SERVER_TOKEN",
|
|
266
392
|
"QWEN_CODE_SIMPLE"
|
|
@@ -283,46 +409,6 @@ function scrubChildEnv(source, scrubbed, overrides) {
|
|
|
283
409
|
return childEnv;
|
|
284
410
|
}
|
|
285
411
|
__name(scrubChildEnv, "scrubChildEnv");
|
|
286
|
-
function killChild(child) {
|
|
287
|
-
return new Promise((resolve) => {
|
|
288
|
-
if (child.exitCode !== null || child.signalCode !== null) {
|
|
289
|
-
resolve();
|
|
290
|
-
return;
|
|
291
|
-
}
|
|
292
|
-
let resolved = false;
|
|
293
|
-
const finish = /* @__PURE__ */ __name(() => {
|
|
294
|
-
if (resolved) return;
|
|
295
|
-
resolved = true;
|
|
296
|
-
child.removeListener("exit", finish);
|
|
297
|
-
resolve();
|
|
298
|
-
}, "finish");
|
|
299
|
-
child.once("exit", finish);
|
|
300
|
-
try {
|
|
301
|
-
child.kill("SIGTERM");
|
|
302
|
-
} catch {
|
|
303
|
-
finish();
|
|
304
|
-
return;
|
|
305
|
-
}
|
|
306
|
-
setTimeout(() => {
|
|
307
|
-
if (!resolved && child.exitCode === null && child.signalCode === null) {
|
|
308
|
-
try {
|
|
309
|
-
child.kill("SIGKILL");
|
|
310
|
-
} catch {
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
}, 5e3).unref();
|
|
314
|
-
setTimeout(() => {
|
|
315
|
-
if (!resolved) {
|
|
316
|
-
process.stderr.write(
|
|
317
|
-
`qwen serve: killChild hard deadline (${KILL_HARD_DEADLINE_MS}ms) reached; child pid=${child.pid} still alive (uninterruptible sleep?) \u2014 abandoning. Operator should check for zombie qwen --acp processes holding workspace resources.
|
|
318
|
-
`
|
|
319
|
-
);
|
|
320
|
-
finish();
|
|
321
|
-
}
|
|
322
|
-
}, KILL_HARD_DEADLINE_MS).unref();
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
__name(killChild, "killChild");
|
|
326
412
|
|
|
327
413
|
export {
|
|
328
414
|
ndJsonStream,
|