@qwen-code/qwen-code 0.21.0-nightly.20260727.c003e1718 → 0.21.0-preview.0
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 +4 -0
- package/bundled/qc-helper/docs/features/channels/github.md +14 -14
- package/bundled/qc-helper/docs/features/hooks.md +50 -13
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +2 -2
- package/bundled/qc-helper/docs/support/troubleshooting.md +2 -1
- package/bundled/review/SKILL.md +15 -0
- package/chunks/{MaxSizedBox-2N5IOLMA.js → MaxSizedBox-UQGQ6O3I.js} +36 -36
- package/chunks/{StandaloneSessionPicker-6SNFY63D.js → StandaloneSessionPicker-QLO5COVM.js} +51 -51
- package/chunks/{acp-startup-profiler-RV3IV562.js → acp-startup-profiler-DFVPFQ6C.js} +2 -2
- package/chunks/{acpAgent-6BDY452E.js → acpAgent-ECMKCJPZ.js} +1265 -505
- package/chunks/{agent-WPMRCC7E.js → agent-NJ4VPY5B.js} +31 -31
- package/chunks/{agent-headless-OSOKZOZK.js → agent-headless-JB6RF5HT.js} +31 -31
- package/chunks/{anthropicContentGenerator-EJEHPX2W.js → anthropicContentGenerator-V2QOGVYD.js} +54 -13
- package/chunks/{artifact-tool-FQYTXKFY.js → artifact-tool-6K6U7XYJ.js} +2 -2
- package/chunks/{askUserQuestion-DJQIJ5T4.js → askUserQuestion-GD2IJJ7I.js} +2 -2
- package/chunks/{bridge-VR3WL36L.js → bridge-EXKCQ7MD.js} +38 -37
- package/chunks/{build-47LY6L7H.js → build-S6DO7LMM.js} +1 -1
- package/chunks/{ca-UBSN3YSM.js → ca-6W3SK7OQ.js} +1 -1
- package/chunks/{channel-management-service-2WRAWZQU.js → channel-management-service-XR7GZSWF.js} +7 -7
- package/chunks/{channel-settings-store-3FOVM5TF.js → channel-settings-store-VA4J7HPF.js} +38 -38
- package/chunks/{channel-worker-group-VMGKUBUY.js → channel-worker-group-XDPTDWTX.js} +9 -5
- package/chunks/{channel-worker-manager-2SCF42S2.js → channel-worker-manager-YYEHVRRE.js} +9 -5
- package/chunks/{channel-worker-supervisor-F3HADSDC.js → channel-worker-supervisor-74HTWA2G.js} +5 -4
- package/chunks/{chunk-2PHWA4IO.js → chunk-2DN4J57Y.js} +2 -2
- package/chunks/{chunk-HHYPUCUF.js → chunk-2LKVPASC.js} +3 -3
- package/chunks/{chunk-ECBKZ7SV.js → chunk-2LQTH543.js} +2 -2
- package/chunks/{chunk-EDEO3ZXU.js → chunk-2XSLTRFZ.js} +2 -2
- package/chunks/{chunk-HIJQF5B5.js → chunk-3L2SPEBH.js} +1 -1
- package/chunks/{chunk-2KHUM3TN.js → chunk-3MGBLIXX.js} +167 -81
- package/chunks/{chunk-CWFC2GZB.js → chunk-3Q4TGVUX.js} +1385 -785
- package/chunks/{chunk-KR2UZ6QL.js → chunk-4G2BISNC.js} +1 -1
- package/chunks/{chunk-IUYFCE34.js → chunk-4WSL256B.js} +3 -3
- package/chunks/{chunk-LI4HGDLZ.js → chunk-5FNROPXI.js} +4 -4
- package/chunks/{chunk-ECEJ6T4L.js → chunk-5TBMQLGG.js} +2 -2
- package/chunks/{chunk-KW3H2FM4.js → chunk-5YKDXHUY.js} +2 -2
- package/chunks/{chunk-PIVH7FAY.js → chunk-5YVWMI26.js} +5 -5
- package/chunks/{chunk-IUNB6SUW.js → chunk-64LQLPL7.js} +3 -3
- package/chunks/{chunk-7R4YENCL.js → chunk-6QIGFD5W.js} +1 -1
- package/chunks/{chunk-SHJ4R6JF.js → chunk-727I7LJ2.js} +5 -5
- package/chunks/{chunk-BRKWIX5C.js → chunk-74YNMTJP.js} +30 -19
- package/chunks/{chunk-IM6PC55H.js → chunk-75GFAX4R.js} +1 -1
- package/chunks/{chunk-IXNNGTUI.js → chunk-75MIQ3LV.js} +18 -3
- package/chunks/{chunk-VCBKBEU7.js → chunk-7A4ZDITM.js} +27 -14
- package/chunks/{chunk-FZZTCEXC.js → chunk-7HRXAFCW.js} +10 -10
- package/chunks/{chunk-BJHP755Z.js → chunk-7I5GTCT4.js} +271 -164
- package/chunks/{chunk-BOWYL27T.js → chunk-7XATOOE7.js} +1 -1
- package/chunks/{chunk-HAZMIZP7.js → chunk-A2APC6HM.js} +2 -2
- package/chunks/{chunk-ZYD3KZPB.js → chunk-A3NDJ5SB.js} +2 -2
- package/chunks/{chunk-IIJCNWAY.js → chunk-AL62VKMS.js} +4 -4
- package/chunks/{chunk-NZYXKNSZ.js → chunk-AOAYOH3R.js} +1 -1
- package/chunks/{chunk-C6U6ZR65.js → chunk-ATZOB5Y2.js} +11 -11
- package/chunks/{chunk-UH3WSE5L.js → chunk-B4AJNNOL.js} +1 -6
- package/chunks/{chunk-JJY7H2ZU.js → chunk-BCZFQXWK.js} +2 -2
- package/chunks/{chunk-FUFNINKB.js → chunk-BGTQCTQW.js} +42 -3
- package/chunks/{chunk-6PQHZ4YW.js → chunk-BWKCTLEJ.js} +193 -149
- package/chunks/{chunk-3FNJBOF7.js → chunk-CVHIL5IG.js} +3 -3
- package/chunks/{chunk-55PWRVIR.js → chunk-DABQX74H.js} +8 -8
- package/chunks/{chunk-N7U3LRNS.js → chunk-DDKAZLZ7.js} +17 -6
- package/chunks/{chunk-CPF4NIKT.js → chunk-DIQGH5CN.js} +1 -1
- package/chunks/{chunk-3YAW4B2W.js → chunk-DJGYJDYR.js} +1 -1
- package/chunks/{chunk-4IQSPE3A.js → chunk-DNDETPES.js} +3 -3
- package/chunks/{chunk-4CCAX23S.js → chunk-DZLYR4U3.js} +1 -1
- package/chunks/{chunk-7XSFZ3FM.js → chunk-EABYVKAK.js} +2 -2
- package/chunks/{chunk-SJXVC6ZO.js → chunk-F3EYHTOC.js} +4 -4
- package/chunks/{chunk-RKMMVQDZ.js → chunk-FNMZK765.js} +1 -1
- package/chunks/{chunk-2KLJYA37.js → chunk-FW4M4GA7.js} +1 -1
- package/chunks/chunk-FYJ7W2PI.js +194 -0
- package/chunks/{chunk-7GC5YKSS.js → chunk-GATT5TKW.js} +1 -1
- package/chunks/{chunk-4CSVLZXK.js → chunk-GBAZKAZW.js} +3 -3
- package/chunks/{chunk-5ADNRHTY.js → chunk-GEBV2JGB.js} +28 -5
- package/chunks/{chunk-VV6QF662.js → chunk-GKX7E4CO.js} +1 -1
- package/chunks/{chunk-ELHHYF7E.js → chunk-GNR2RNMP.js} +157 -4
- package/chunks/{chunk-PLMOXLFY.js → chunk-GW3XHA6P.js} +2 -2
- package/chunks/{chunk-SAXBG6AR.js → chunk-GXIJHV66.js} +3 -3
- package/chunks/{chunk-4AVIERNE.js → chunk-GZ3RCT54.js} +1 -1
- package/chunks/{chunk-6K2CPEAB.js → chunk-HKFEPLKW.js} +1 -1
- package/chunks/{chunk-QVKDVURA.js → chunk-HRD7NI6D.js} +11 -3
- package/chunks/{chunk-G3RJEBAA.js → chunk-HUK2P4RS.js} +2510 -1273
- package/chunks/{chunk-RRNQGWR4.js → chunk-HWNLU2HC.js} +7 -7
- package/chunks/{chunk-TH6TQR5Y.js → chunk-IZO36O6O.js} +252 -15
- package/chunks/{chunk-67IE7N5D.js → chunk-JMONIXMJ.js} +1 -1
- package/chunks/{chunk-DMEKUQ5Z.js → chunk-JSD33JG6.js} +3 -3
- package/chunks/{chunk-CX2KLDRX.js → chunk-JYBU6YUE.js} +1 -1
- package/chunks/{chunk-SJOQ5GW7.js → chunk-KADQPLPX.js} +1 -1
- package/chunks/{chunk-PAJNXBXO.js → chunk-KBNDRM4U.js} +3 -3
- package/chunks/{chunk-TD665TIY.js → chunk-KFPFJAR3.js} +24 -22
- package/chunks/{chunk-ZGVQLKMP.js → chunk-KY3NRFJ5.js} +9 -6
- package/chunks/{chunk-DEKCAHRS.js → chunk-LGAOC3ZS.js} +1 -1
- package/chunks/{chunk-GVHHFBJ2.js → chunk-LHZRAR2Q.js} +37 -40
- package/chunks/{chunk-2WUAKFCQ.js → chunk-LNHZ3A4I.js} +44 -11
- package/chunks/{chunk-2LFSPVBC.js → chunk-LW3RFMG7.js} +3 -3
- package/chunks/{chunk-SEWRIH7H.js → chunk-M7OONWYU.js} +2 -2
- package/chunks/{chunk-CO3BKKFP.js → chunk-ML5M5XOY.js} +269 -248
- package/chunks/{chunk-YF6D7CRB.js → chunk-NG3V2LPY.js} +8 -13
- package/chunks/{chunk-ZAJIOSFI.js → chunk-NNERMV7T.js} +2 -2
- package/chunks/{chunk-N5JEINK3.js → chunk-NOKIVHOL.js} +15 -2
- package/chunks/chunk-OCPBI7J5.js +18 -0
- package/chunks/{chunk-YF7TVSQK.js → chunk-OKF7JF3R.js} +3 -3
- package/chunks/{chunk-5FQ3CINJ.js → chunk-OXWFQXKX.js} +6 -6
- package/chunks/{chunk-EWYICJNY.js → chunk-P2YNZWXZ.js} +3 -3
- package/chunks/{chunk-6LOSXNKO.js → chunk-PONHVBRT.js} +2 -2
- package/chunks/{chunk-FZP2GLM4.js → chunk-QQLCYEN2.js} +1 -1
- package/chunks/{chunk-HEVX5YOM.js → chunk-R3NOCPFB.js} +4 -4
- package/chunks/{chunk-WZOPR2ZP.js → chunk-R7ZITH3J.js} +3 -1
- package/chunks/{chunk-ACPMPDKQ.js → chunk-RPLGZJV2.js} +38 -1
- package/chunks/{chunk-MFBM3CQZ.js → chunk-SGFT55XI.js} +1 -1
- package/chunks/{chunk-QSDUHJAR.js → chunk-SGM6M3XG.js} +1 -1
- package/chunks/{chunk-II55VZQA.js → chunk-SUWVXF2E.js} +3 -3
- package/chunks/{chunk-VYPFXUCB.js → chunk-SZ3KHTDR.js} +1 -1
- package/chunks/{chunk-UWSREISS.js → chunk-T2QMKU3R.js} +79 -1
- package/chunks/{chunk-7VOUXBKJ.js → chunk-TFRMVU6R.js} +1 -1
- package/chunks/{chunk-RGZ34F4F.js → chunk-TUQ36KWK.js} +10 -5
- package/chunks/{chunk-R2F2DRBY.js → chunk-U3E3UQAA.js} +4 -4
- package/chunks/{chunk-2XORP6RV.js → chunk-UEDIRTKG.js} +1 -1
- package/chunks/{chunk-VOTXHGKJ.js → chunk-UFI5GRDS.js} +3 -3
- package/chunks/{chunk-ATIV6G7N.js → chunk-UHUSJ6X7.js} +1 -1
- package/chunks/{chunk-2WVVMSPB.js → chunk-UPUG4GXM.js} +3 -3
- package/chunks/{chunk-TXI4LPWT.js → chunk-UWMLWVCA.js} +18 -6
- package/chunks/{chunk-G2W6OP2O.js → chunk-V5AWXXVA.js} +3 -3
- package/chunks/{chunk-5CGAUBFZ.js → chunk-VYO6YPYG.js} +3 -3
- package/chunks/{chunk-67ZRSECV.js → chunk-W4MIWP6M.js} +26 -15
- package/chunks/{chunk-OJJVALKY.js → chunk-WBSMNTSV.js} +3 -3
- package/chunks/{chunk-BZU6TRNQ.js → chunk-WUKGHS32.js} +5 -5
- package/chunks/{chunk-WTCKVXNT.js → chunk-WUNZAP5I.js} +4 -4
- package/chunks/{chunk-XM5V2A2E.js → chunk-WZRWHXFE.js} +1 -1
- package/chunks/{chunk-K2P7QBXF.js → chunk-X6XZITHR.js} +3 -3
- package/chunks/{chunk-ZEVUICUF.js → chunk-XBYYDKAZ.js} +7 -7
- package/chunks/{chunk-XL7TLW5I.js → chunk-XBZQT63P.js} +1 -1
- package/chunks/{chunk-DC2Y3JSV.js → chunk-XH7E5IGP.js} +1 -1
- package/chunks/{chunk-B5DJFAHN.js → chunk-XR2NFLNQ.js} +4 -4
- package/chunks/{chunk-FOT6JBY5.js → chunk-XRYM3MCI.js} +348 -126
- package/chunks/{chunk-IJDXG4RL.js → chunk-XWWKIXVD.js} +1 -1
- package/chunks/{chunk-3SJ43L4W.js → chunk-XZC5VLBZ.js} +2 -0
- package/chunks/{chunk-ZWL7SSVL.js → chunk-Y4IHBGBP.js} +1 -1
- package/chunks/{chunk-MB3M2BFP.js → chunk-Y6AXW2OG.js} +9 -3
- package/chunks/{chunk-6ENJ2DGB.js → chunk-Y6RATHM5.js} +2 -2
- package/chunks/{chunk-D33ZN3GK.js → chunk-YAKKV4WO.js} +12 -12
- package/chunks/{chunk-IPUUTYMV.js → chunk-YDLJGZHL.js} +1 -1
- package/chunks/{chunk-H6YTFKW7.js → chunk-YGF33UXG.js} +60 -7
- package/chunks/{chunk-BV6LBI45.js → chunk-YPCRRO7K.js} +3 -3
- package/chunks/{chunk-WDMODYUC.js → chunk-ZBVS26BY.js} +4 -0
- package/chunks/{chunk-GBJUC5ZL.js → chunk-ZHBO7WVX.js} +1 -1
- package/chunks/{chunk-4CKLWQQR.js → chunk-ZSQ5LDBH.js} +1 -1
- package/chunks/{computer-use-42W2GDED.js → computer-use-TGJRGZWO.js} +31 -31
- package/chunks/{config-utils-OTUC46XY.js → config-utils-NYSXDMEQ.js} +4 -4
- package/chunks/{contextCommand-2WIK6DG3.js → contextCommand-HGWDMG36.js} +33 -33
- package/chunks/{core-runtime-YFT4JKHA.js → core-runtime-WHE3LSHF.js} +31 -31
- package/chunks/{create-sub-session-HQMFFLL5.js → create-sub-session-OWI4RC7D.js} +31 -31
- package/chunks/{create-sub-session-Q4BUPKIO.js → create-sub-session-SBYUMSSS.js} +2 -2
- package/chunks/{cron-create-NI2G2ACR.js → cron-create-2QK6TCEC.js} +4 -4
- package/chunks/{cron-delete-KHD2WOMV.js → cron-delete-FDCDFYMG.js} +4 -4
- package/chunks/{cron-list-LZMV5V7N.js → cron-list-XN3WVBTP.js} +4 -4
- package/chunks/{daemon-KN3FWTYU.js → daemon-Q2AB5Z23.js} +139 -2
- package/chunks/{daemon-status-provider-DYVQTAZX.js → daemon-status-provider-KY35PVUR.js} +43 -42
- package/chunks/{daemon-trust-policy-QUHMUDOQ.js → daemon-trust-policy-QSQRPXHD.js} +37 -37
- package/chunks/{daemon-trust-policy-monitor-AHIPWCQD.js → daemon-trust-policy-monitor-VJQ54EM3.js} +37 -37
- package/chunks/{de-LVJPZWUT.js → de-SY6O76BF.js} +1 -1
- package/chunks/{deferred-core-runtime-VWKP5HVD.js → deferred-core-runtime-U3DDMMV2.js} +31 -31
- package/chunks/{dist-CWCPAMA2.js → dist-BSTVRPMT.js} +234 -78
- package/chunks/{dist-GWORRKWL.js → dist-DOLYHMXE.js} +2 -2
- package/chunks/{dist-CRNO2KXU.js → dist-HVRQ2CFL.js} +271 -11
- package/chunks/{dist-TPJRJ237.js → dist-IXQEQWRG.js} +1 -1
- package/chunks/{dist-ONF2ZUUX.js → dist-SSU66DM4.js} +1 -1
- package/chunks/{dist-BRVIXBFA.js → dist-SV7Q3AWJ.js} +1 -1
- package/chunks/{dist-2HFXMUT6.js → dist-YGBBMK3Z.js} +1 -1
- package/chunks/{earlyInputCapture-AZAUUSDE.js → earlyInputCapture-H4YOY6R7.js} +32 -32
- package/chunks/{edit-2GM73YUN.js → edit-NZWMOOX6.js} +31 -31
- package/chunks/{en-7JEDYSBE.js → en-NBK3JKCE.js} +4 -1
- package/chunks/{enter-worktree-O6MC2FZM.js → enter-worktree-6FMYNZ4S.js} +31 -31
- package/chunks/{enterPlanMode-NJNHHLAJ.js → enterPlanMode-RYK5P7WC.js} +31 -31
- package/chunks/{environment-L5QWIYKQ.js → environment-RBLY3QVX.js} +33 -33
- package/chunks/{errors-GO7MH572.js → errors-WVUI42QV.js} +33 -33
- package/chunks/{exit-worktree-FR7KKQSW.js → exit-worktree-FRFYEX6R.js} +31 -31
- package/chunks/{exitPlanMode-QKNK5MBZ.js → exitPlanMode-STTGKHP2.js} +31 -31
- package/chunks/{fast-path-7SP4KXIF.js → fast-path-OZD2JFDY.js} +3 -3
- package/chunks/{fast-path-settings-GTWXZLJZ.js → fast-path-settings-WQJU2LAT.js} +2 -2
- package/chunks/{fr-JXF5ONTD.js → fr-4KG5V7UT.js} +1 -1
- package/chunks/{gemini-J5WX6DS3.js → gemini-PUKYW6OF.js} +83 -82
- package/chunks/{geminiContentGenerator-X4FCO2IH.js → geminiContentGenerator-HYMWIERE.js} +6 -6
- package/chunks/{glob-UYGYQ73X.js → glob-IZATNUPS.js} +31 -31
- package/chunks/{grep-HWLK333D.js → grep-DWHBLRXJ.js} +33 -32
- package/chunks/{handleAutoUpdate-H55RTXMU.js → handleAutoUpdate-3VHGEOAV.js} +35 -35
- package/chunks/{i18n-6YL3VGHQ.js → i18n-A56PNKBP.js} +32 -32
- package/chunks/{image-gen-ZN43Y352.js → image-gen-RBLQKXQJ.js} +9 -9
- package/chunks/{initializer-ATU3WGM5.js → initializer-TCD6H7VY.js} +38 -38
- package/chunks/{installationInfo-3D4M363G.js → installationInfo-276EXQW2.js} +32 -32
- package/chunks/{ja-72VBFAM5.js → ja-F3GSQXMF.js} +1 -1
- package/chunks/{keychain-token-storage-U6BBK3IE.js → keychain-token-storage-72IYCAZV.js} +2 -2
- package/chunks/{list-K7TOZQ5T.js → list-NWDHWJ4D.js} +40 -40
- package/chunks/{list-agents-FHIQAX2Y.js → list-agents-R6KDXQR3.js} +2 -2
- package/chunks/{loadedSettingsAdapter-IDASCO2P.js → loadedSettingsAdapter-YXJKWUYF.js} +37 -37
- package/chunks/{loggingContentGenerator-C7ECOBP5.js → loggingContentGenerator-LU6TII3U.js} +18 -18
- package/chunks/{loop-wakeup-PSF72P7O.js → loop-wakeup-3IQKCYAH.js} +5 -5
- package/chunks/{ls-RVQ2JC4C.js → ls-DKZ37A7N.js} +4 -4
- package/chunks/{lsp-UFP2H2RG.js → lsp-QNWN7KN3.js} +2 -2
- package/chunks/{managed-npm-update-MWQIFEJC.js → managed-npm-update-AO3CL6VU.js} +32 -32
- package/chunks/{mcp-YJ4SZXFF.js → mcp-5PMHEFAR.js} +37 -37
- package/chunks/{monitor-MWKW6W4Q.js → monitor-2YELRQ6S.js} +31 -31
- package/chunks/nonInteractiveCli-74R5S76M.js +144 -0
- package/chunks/{notebook-edit-ALAKK5DZ.js → notebook-edit-SV6GDWUG.js} +31 -31
- package/chunks/{openaiContentGenerator-V5GYCLVN.js → openaiContentGenerator-FMBXX26Z.js} +19 -19
- package/chunks/{pidfile-I7IOGSVT.js → pidfile-HZA26WFC.js} +32 -32
- package/chunks/process-registry-2CHQBXH5.js +157 -0
- package/chunks/{processUtils-SRGJPX5P.js → processUtils-4F7EMUKQ.js} +2 -2
- package/chunks/{pt-E4AMXNUG.js → pt-EQ33KWEN.js} +1 -1
- package/chunks/{qwenContentGenerator-INCMQJG3.js → qwenContentGenerator-CXAD5IOE.js} +37 -37
- package/chunks/{qwenOAuth2-MIL7MEKO.js → qwenOAuth2-7V2RGLUU.js} +8 -8
- package/chunks/{read-file-BBQ6BN7G.js → read-file-AQKNOXOV.js} +11 -11
- package/chunks/{read-mcp-resource-M4IJUOXP.js → read-mcp-resource-GFTWYXMK.js} +2 -2
- package/chunks/{record-artifact-4NWBVHNM.js → record-artifact-XAMSFSW4.js} +2 -2
- package/chunks/{resumeHistoryUtils-X74IGERO.js → resumeHistoryUtils-NSHGEJZY.js} +37 -37
- package/chunks/{ripGrep-GCSZGI22.js → ripGrep-KVWIREMR.js} +31 -31
- package/chunks/{ru-OJOR34RM.js → ru-7OZAUKGG.js} +1 -1
- package/chunks/{run-qwen-serve-RAPQ4UBN.js → run-qwen-serve-LBBMQRWJ.js} +94 -58
- package/chunks/{runtime-F4YK7A5M.js → runtime-XR3VFARS.js} +42 -42
- package/chunks/{scheduler-JFOAST7W.js → scheduler-OLI5YERT.js} +31 -31
- package/chunks/{sdk-exporters-http-H6MWAYGV.js → sdk-exporters-http-WO556XNU.js} +2 -2
- package/chunks/{sdk-impl-U4BU6LE5.js → sdk-impl-LPAVACSF.js} +2 -2
- package/chunks/{send-message-GAB3K4KN.js → send-message-SAWK4DZX.js} +4 -4
- package/chunks/{serve-WAK4FQIT.js → serve-2WM3HPSN.js} +37 -37
- package/chunks/{server-GJFU7OZ6.js → server-T4C6UGPM.js} +895 -127
- package/chunks/{session-WFWS7D6U.js → session-IAPGXMG3.js} +78 -77
- package/chunks/{settings-NI7K6BOS.js → settings-LIYC7NVY.js} +39 -39
- package/chunks/{shell-PI52ZRBM.js → shell-M455ZXG6.js} +31 -31
- package/chunks/{skill-EGJY4VDT.js → skill-ZHDF6IVV.js} +15 -15
- package/chunks/{skill-settings-27BQIOWC.js → skill-settings-MEFO33AC.js} +36 -36
- package/chunks/{spawnChannel-LU6YO2IZ.js → spawnChannel-NAISQSBK.js} +33 -33
- package/chunks/{standalone-update-TG2BLT73.js → standalone-update-K4RNR537.js} +33 -33
- package/chunks/{startInteractiveUI-4NTL2RZ6.js → startInteractiveUI-HJUQMCBD.js} +426 -216
- package/chunks/{syntheticOutput-YCOHYBPM.js → syntheticOutput-355CB6CJ.js} +3 -3
- package/chunks/{task-create-YRN3PDAT.js → task-create-INGWNUG4.js} +8 -8
- package/chunks/{task-list-FYGHXFOT.js → task-list-5XNNGTF4.js} +5 -5
- package/chunks/{task-stop-I7CNWL7J.js → task-stop-4ROAOBXH.js} +2 -2
- package/chunks/{task-update-5QOY2AIK.js → task-update-CRK5VWWZ.js} +8 -8
- package/chunks/{team-create-5H4T3ENJ.js → team-create-YWCUC55A.js} +31 -31
- package/chunks/{team-delete-OAA4YOAC.js → team-delete-S2RCXA4P.js} +5 -5
- package/chunks/{team-plan-approval-44SCBFBB.js → team-plan-approval-ZJGZRKV5.js} +31 -31
- package/chunks/{theme-manager-HYFW3GL7.js → theme-manager-5LUFI5NY.js} +32 -32
- package/chunks/{todoWrite-YFIBFZO3.js → todoWrite-7WM3VDMY.js} +4 -4
- package/chunks/{tool-search-YAIIWTSJ.js → tool-search-LZMDLBAK.js} +13 -13
- package/chunks/{total-session-admission-FPF66OF6.js → total-session-admission-MDA3ANYQ.js} +39 -38
- package/chunks/{trustedFolders-4RSRSIO3.js → trustedFolders-NZEZRJPU.js} +32 -32
- package/chunks/{update-relaunch-4NKVI2H5.js → update-relaunch-D7EKBO4E.js} +5 -5
- package/chunks/{updateCheck-E2336RGI.js → updateCheck-AKFMZZCG.js} +34 -34
- package/chunks/{useAutoAcceptIndicator-YXC4OJ2B.js → useAutoAcceptIndicator-55OEL7UZ.js} +40 -40
- package/chunks/{validateNonInterActiveAuth-G5PREALO.js → validateNonInterActiveAuth-K5WQOFUQ.js} +72 -71
- package/chunks/{version-IBROP4MJ.js → version-ANSPR52A.js} +1 -1
- package/chunks/{web-fetch-G2GFNE3L.js → web-fetch-WFKX5SJM.js} +14 -14
- package/chunks/{web-search-4ISTNKIX.js → web-search-XDPHXEUC.js} +9 -9
- package/chunks/{workflow-OQY4Y74P.js → workflow-6YYVMHCS.js} +32 -32
- package/chunks/{workspace-providers-status-SRB65GMC.js → workspace-providers-status-5L4FEPYR.js} +40 -40
- package/chunks/{workspace-registration-store-XOUNCX5G.js → workspace-registration-store-C2HIDNXV.js} +1 -1
- package/chunks/{workspace-registry-XMDDRCP3.js → workspace-registry-7B7T5SC3.js} +39 -38
- package/chunks/{workspace-service-XUAHBWUX.js → workspace-service-VGGIWADS.js} +46 -45
- package/chunks/{workspace-skills-status-GGH6TYSU.js → workspace-skills-status-MZZLEGL5.js} +38 -38
- package/chunks/{workspace-trust-reconciler-AKKLKLJQ.js → workspace-trust-reconciler-3PA5PLHX.js} +45 -44
- package/chunks/{write-file-7MSTD3VC.js → write-file-5GNKRL2B.js} +31 -31
- package/chunks/{zh-2MA5UKNJ.js → zh-H3YDK5QW.js} +4 -1
- package/chunks/{zh-TW-JO4Z7CVC.js → zh-TW-JYCP7XUA.js} +4 -1
- package/chunks/zoom-image-JIRPKLNA.js +351 -0
- package/cli.js +13 -13
- package/locales/ca.js +2 -2
- package/locales/de.js +2 -2
- package/locales/en.js +5 -2
- package/locales/fr.js +2 -2
- package/locales/ja.js +2 -2
- package/locales/pt.js +2 -2
- package/locales/ru.js +2 -2
- package/locales/zh-TW.js +5 -2
- package/locales/zh.js +5 -2
- package/package.json +5 -4
- package/web-shell/assets/{arc-DYNfZ967.js → arc-75-Wdeo3.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-CkKsIF39.js → architectureDiagram-3BPJPVTR-FKeXQbyP.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-FfDv_qOy.js → blockDiagram-GPEHLZMM-CY0vc-A3.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-pA5r7guO.js → c4Diagram-AAUBKEIU-CNP-A-8u.js} +1 -1
- package/web-shell/assets/channel-DPYMT76A.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-Bfnf2k-q.js → chunk-2J33WTMH-GybS4Gii.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BCpgiyb4.js → chunk-4BX2VUAB-02H91V8v.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-BrwrazA2.js → chunk-55IACEB6-D3M-2VT6.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DDCxd_BK.js → chunk-727SXJPM-CCu29u4H.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-Ce-B1Qi5.js → chunk-AQP2D5EJ-CaFKWgrn.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-Dl2u6_p7.js → chunk-FMBD7UC4-ZZpPqIwQ.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-32W_JFKh.js → chunk-ND2GUHAM-D22DqGs8.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BmtCt0RT.js → chunk-QZHKN3VN-Bu85S0fw.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK--JstsIgL.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2--JstsIgL.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-D_DXerbn.js → cose-bilkent-S5V4N54A-f1CK1Gwe.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-C3fMtjq2.js → dagre-BM42HDAG-D0Ow8F_n.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CBiuEoIi.js → diagram-2AECGRRQ-BPrmTWp8.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-J8DRS3up.js → diagram-5GNKFQAL-HccuFAzy.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-DEVjvvjZ.js → diagram-KO2AKTUF-BrS76mbA.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-Bh9hEXeR.js → diagram-LMA3HP47-V7T9lU-5.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CgV4R96R.js → diagram-OG6HWLK6-DKidyJMR.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-BGCFyfGU.js → erDiagram-TEJ5UH35-DBadZIkp.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BCaQuiMb.js → flowDiagram-I6XJVG4X-BymfqdNJ.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-B9J27vXf.js → ganttDiagram-6RSMTGT7-DOw340jf.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-C2u3FvFn.js → gitGraphDiagram-PVQCEYII-_8EiD8sl.js} +1 -1
- package/web-shell/assets/{index-BF2Ug_o6.js → index-CKIadvET.js} +1 -1
- package/web-shell/assets/index-D1eXNRHe.js +1389 -0
- package/web-shell/assets/index-DVLD4CQq.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-VGjh3Icm.js → infoDiagram-5YYISTIA-D61KYQBu.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-8AZWigme.js → ishikawaDiagram-YF4QCWOH-CsiXSpNx.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CnAVNJU5.js → journeyDiagram-JHISSGLW-Sdfionyh.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DAh7CFUA.js → kanban-definition-UN3LZRKU-C3WI3Cnl.js} +1 -1
- package/web-shell/assets/{linear-BMHEIvy4.js → linear-Dpigcc62.js} +1 -1
- package/web-shell/assets/{mermaid.core-CpHDMzGU.js → mermaid.core-Ct97pqgW.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-Cf3CMPHf.js → mindmap-definition-RKZ34NQL-BzeaN0rB.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-BpRfWcVA.js → pieDiagram-4H26LBE5-CvjgcbVD.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-kqzUnUwh.js → quadrantDiagram-W4KKPZXB-BUzgTNdH.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-D2FenOqg.js → requirementDiagram-4Y6WPE33-B7zKlgUQ.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-dWDMUdUe.js → sankeyDiagram-5OEKKPKP-Bb9CQgrT.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CYcL0MEP.js → sequenceDiagram-3UESZ5HK-DJ6V7itG.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-DkpIKZM6.js → stateDiagram-AJRCARHV-IImflERY.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CYI_YoNR.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-B50fgyFY.js → timeline-definition-PNZ67QCA-6Q_uWHKh.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DMlYXh0E.js → vennDiagram-CIIHVFJN-TmyKyjwv.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-B2iJy8jY.js → wardley-L42UT6IY-CRh9uiPv.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-B-PG81LW.js → wardleyDiagram-YWT4CUSO-59TKAW8w.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-D1N8kSF9.js → xychartDiagram-2RQKCTM6-GCSUIK2L.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/nonInteractiveCli-74XMYNLX.js +0 -143
- package/web-shell/assets/channel-C-gQ4Nim.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-DKEurkx0.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DKEurkx0.js +0 -1
- package/web-shell/assets/index-Du08qEb3.js +0 -1249
- package/web-shell/assets/index-tq1xUECo.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-QSG1JRm2.js +0 -1
- package/chunks/{chunk-IAU6HCJZ.js → chunk-D3UEZIQH.js} +6 -6
- /package/chunks/{chunk-LXXMOYPL.js → chunk-VXZBKKQR.js} +0 -0
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
openQwenAsrRealtimeStream,
|
|
5
|
+
openVoiceStream,
|
|
6
|
+
openVoiceStreamWithRetry
|
|
7
|
+
} from "./chunk-BCZFQXWK.js";
|
|
3
8
|
import {
|
|
4
9
|
GENERATION_MAX_PROMPT_BYTES,
|
|
5
10
|
MAX_REMEMBER_CONTENT_BYTES,
|
|
@@ -16,12 +21,7 @@ import {
|
|
|
16
21
|
shouldSuppressRememberErrorDetails,
|
|
17
22
|
workspaceMemoryFailureCode,
|
|
18
23
|
workspaceMemoryFailureDiagnostics
|
|
19
|
-
} from "./chunk-
|
|
20
|
-
import {
|
|
21
|
-
openQwenAsrRealtimeStream,
|
|
22
|
-
openVoiceStream,
|
|
23
|
-
openVoiceStreamWithRetry
|
|
24
|
-
} from "./chunk-JJY7H2ZU.js";
|
|
24
|
+
} from "./chunk-DDKAZLZ7.js";
|
|
25
25
|
import {
|
|
26
26
|
SetupGithubError,
|
|
27
27
|
collectSessionData,
|
|
@@ -33,13 +33,13 @@ import {
|
|
|
33
33
|
toJson,
|
|
34
34
|
toJsonl,
|
|
35
35
|
toMarkdown
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-IZO36O6O.js";
|
|
37
37
|
import {
|
|
38
38
|
OBSERVED_CONTACT_MAX_FRESH_WITHIN_SECONDS,
|
|
39
39
|
ObservedChannelContactStore
|
|
40
|
-
} from "./chunk-
|
|
41
|
-
import "./chunk-
|
|
42
|
-
import "./chunk-
|
|
40
|
+
} from "./chunk-LGAOC3ZS.js";
|
|
41
|
+
import "./chunk-HKFEPLKW.js";
|
|
42
|
+
import "./chunk-YDLJGZHL.js";
|
|
43
43
|
import "./chunk-2MIN6GRR.js";
|
|
44
44
|
import "./chunk-QHTIBUWB.js";
|
|
45
45
|
import "./chunk-QTERJVPZ.js";
|
|
@@ -101,14 +101,14 @@ import {
|
|
|
101
101
|
setRateLimiter,
|
|
102
102
|
unsafeRevealSecret,
|
|
103
103
|
validateMcpRuntimeServerName
|
|
104
|
-
} from "./chunk-
|
|
104
|
+
} from "./chunk-YGF33UXG.js";
|
|
105
105
|
import {
|
|
106
106
|
isLoopbackBind
|
|
107
107
|
} from "./chunk-RXFQM6FQ.js";
|
|
108
108
|
import {
|
|
109
109
|
evaluateDaemonWorkspaceTrust,
|
|
110
110
|
readDaemonTrustPolicySnapshot
|
|
111
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-DNDETPES.js";
|
|
112
112
|
import {
|
|
113
113
|
EMPTY_WORKSPACE_VOICE_UPDATE_ERROR,
|
|
114
114
|
MAX_WORKSPACE_SKILL_NAME_LENGTH,
|
|
@@ -122,14 +122,14 @@ import {
|
|
|
122
122
|
validateWorkspaceSkillName,
|
|
123
123
|
validateWorkspaceVoiceState,
|
|
124
124
|
voiceSettingsScopeToWire
|
|
125
|
-
} from "./chunk-
|
|
125
|
+
} from "./chunk-KFPFJAR3.js";
|
|
126
126
|
import {
|
|
127
127
|
PermissionRulesValidationError,
|
|
128
128
|
buildPermissionSettings,
|
|
129
129
|
isPermissionRuleType,
|
|
130
130
|
normalizePermissionRules,
|
|
131
131
|
readPermissionRuleSet
|
|
132
|
-
} from "./chunk-
|
|
132
|
+
} from "./chunk-UEDIRTKG.js";
|
|
133
133
|
import {
|
|
134
134
|
assertVoiceBaseUrlNetworkAllowed,
|
|
135
135
|
isStreamingVoiceModel,
|
|
@@ -137,44 +137,95 @@ import {
|
|
|
137
137
|
resolveVoiceTranscriptionConfig,
|
|
138
138
|
sanitizeVoiceErrorMessage,
|
|
139
139
|
transcribeVoiceAudio
|
|
140
|
-
} from "./chunk-
|
|
140
|
+
} from "./chunk-V5AWXXVA.js";
|
|
141
141
|
import {
|
|
142
142
|
isVoiceEnabled,
|
|
143
143
|
isVoiceMode,
|
|
144
144
|
readVoiceModel
|
|
145
|
-
} from "./chunk-
|
|
146
|
-
import "./chunk-
|
|
145
|
+
} from "./chunk-QQLCYEN2.js";
|
|
146
|
+
import "./chunk-ZHBO7WVX.js";
|
|
147
|
+
import {
|
|
148
|
+
WorkspacePermissionRulesSessionRequiredError,
|
|
149
|
+
WorkspaceSettingsPartialPersistError,
|
|
150
|
+
WorkspaceSkillNotFoundError,
|
|
151
|
+
WorkspaceSkillNotToggleableError
|
|
152
|
+
} from "./chunk-OA4JVLSA.js";
|
|
147
153
|
import {
|
|
148
154
|
createTotalSessionAdmissionController
|
|
149
|
-
} from "./chunk-
|
|
155
|
+
} from "./chunk-SZ3KHTDR.js";
|
|
150
156
|
import {
|
|
151
157
|
WorkspaceGenerationClosedError,
|
|
152
158
|
createSingleWorkspaceRegistry,
|
|
153
159
|
createWorkspaceSessionOwnerIndex
|
|
154
|
-
} from "./chunk-
|
|
160
|
+
} from "./chunk-JYBU6YUE.js";
|
|
155
161
|
import "./chunk-GRC5HGPI.js";
|
|
156
162
|
import {
|
|
157
163
|
assertValidChannelSecretUpdates
|
|
158
|
-
} from "./chunk-
|
|
164
|
+
} from "./chunk-Y6RATHM5.js";
|
|
159
165
|
import {
|
|
160
166
|
createDaemonStatusProvider
|
|
161
|
-
} from "./chunk-
|
|
162
|
-
import "./chunk-
|
|
163
|
-
import "./chunk-
|
|
167
|
+
} from "./chunk-5FNROPXI.js";
|
|
168
|
+
import "./chunk-VXZBKKQR.js";
|
|
169
|
+
import "./chunk-WUNZAP5I.js";
|
|
164
170
|
import "./chunk-E5Z2AVNV.js";
|
|
165
171
|
import {
|
|
166
172
|
SessionArtifactAuthorizationError,
|
|
167
173
|
SessionArtifactValidationError,
|
|
168
174
|
createAcpSessionBridge,
|
|
169
175
|
parseSessionSource
|
|
170
|
-
} from "./chunk-
|
|
176
|
+
} from "./chunk-XRYM3MCI.js";
|
|
171
177
|
import {
|
|
172
178
|
EVENT_SCHEMA_VERSION,
|
|
173
179
|
EventBus,
|
|
174
180
|
SubscriberLimitExceededError
|
|
175
181
|
} from "./chunk-GLWP3FDB.js";
|
|
176
182
|
import "./chunk-XCGIMOLN.js";
|
|
177
|
-
import "./chunk-
|
|
183
|
+
import "./chunk-OCPBI7J5.js";
|
|
184
|
+
import "./chunk-3MGBLIXX.js";
|
|
185
|
+
import {
|
|
186
|
+
createWorkspaceProvidersStatusProvider
|
|
187
|
+
} from "./chunk-DABQX74H.js";
|
|
188
|
+
import {
|
|
189
|
+
getAuthTypeFromEnv,
|
|
190
|
+
resolveCliGenerationConfig
|
|
191
|
+
} from "./chunk-KBNDRM4U.js";
|
|
192
|
+
import {
|
|
193
|
+
snapshotProcessEnv
|
|
194
|
+
} from "./chunk-A2APC6HM.js";
|
|
195
|
+
import {
|
|
196
|
+
createWorkspaceSkillsStatusProvider
|
|
197
|
+
} from "./chunk-UFI5GRDS.js";
|
|
198
|
+
import "./chunk-L55JWS76.js";
|
|
199
|
+
import {
|
|
200
|
+
STATUS_SCHEMA_VERSION,
|
|
201
|
+
createIdleWorkspaceMemoryStatus,
|
|
202
|
+
mapDomainErrorToErrorKind
|
|
203
|
+
} from "./chunk-R7ZITH3J.js";
|
|
204
|
+
import "./chunk-Z4X5MTRT.js";
|
|
205
|
+
import "./chunk-WBL3FJEU.js";
|
|
206
|
+
import {
|
|
207
|
+
daemonObservedContactsPath,
|
|
208
|
+
loadChannelsConfig
|
|
209
|
+
} from "./chunk-HWNLU2HC.js";
|
|
210
|
+
import "./chunk-XR2NFLNQ.js";
|
|
211
|
+
import "./chunk-57OAHC2Y.js";
|
|
212
|
+
import {
|
|
213
|
+
parseChannelWebhookConfigLenient
|
|
214
|
+
} from "./chunk-2XSLTRFZ.js";
|
|
215
|
+
import "./chunk-TFRMVU6R.js";
|
|
216
|
+
import {
|
|
217
|
+
supportedChannelCatalog
|
|
218
|
+
} from "./chunk-XBYYDKAZ.js";
|
|
219
|
+
import "./chunk-V6WHFGST.js";
|
|
220
|
+
import {
|
|
221
|
+
MAX_REGISTERED_WORKSPACES,
|
|
222
|
+
WorkspaceDisplayNameValidationError,
|
|
223
|
+
WorkspaceRegistrationStoreCommittedError,
|
|
224
|
+
WorkspaceRegistrationStoreLimitError,
|
|
225
|
+
normalizeWorkspaceDisplayName,
|
|
226
|
+
workspaceRegistrationId
|
|
227
|
+
} from "./chunk-XH7E5IGP.js";
|
|
228
|
+
import "./chunk-XZC5VLBZ.js";
|
|
178
229
|
import {
|
|
179
230
|
BranchWhilePromptActiveError,
|
|
180
231
|
CancelSentinelCollisionError,
|
|
@@ -207,48 +258,13 @@ import {
|
|
|
207
258
|
WorkspaceInitRaceError,
|
|
208
259
|
WorkspaceInitSymlinkError,
|
|
209
260
|
WorkspaceMismatchError
|
|
210
|
-
} from "./chunk-
|
|
211
|
-
import "./chunk-2KHUM3TN.js";
|
|
212
|
-
import {
|
|
213
|
-
createWorkspaceProvidersStatusProvider
|
|
214
|
-
} from "./chunk-55PWRVIR.js";
|
|
215
|
-
import {
|
|
216
|
-
getAuthTypeFromEnv,
|
|
217
|
-
resolveCliGenerationConfig
|
|
218
|
-
} from "./chunk-PAJNXBXO.js";
|
|
219
|
-
import {
|
|
220
|
-
snapshotProcessEnv
|
|
221
|
-
} from "./chunk-HAZMIZP7.js";
|
|
222
|
-
import {
|
|
223
|
-
createWorkspaceSkillsStatusProvider
|
|
224
|
-
} from "./chunk-VOTXHGKJ.js";
|
|
225
|
-
import "./chunk-L55JWS76.js";
|
|
226
|
-
import {
|
|
227
|
-
STATUS_SCHEMA_VERSION,
|
|
228
|
-
createIdleWorkspaceMemoryStatus,
|
|
229
|
-
mapDomainErrorToErrorKind
|
|
230
|
-
} from "./chunk-WZOPR2ZP.js";
|
|
231
|
-
import "./chunk-Z4X5MTRT.js";
|
|
232
|
-
import {
|
|
233
|
-
WorkspacePermissionRulesSessionRequiredError,
|
|
234
|
-
WorkspaceSettingsPartialPersistError,
|
|
235
|
-
WorkspaceSkillNotFoundError,
|
|
236
|
-
WorkspaceSkillNotToggleableError
|
|
237
|
-
} from "./chunk-OA4JVLSA.js";
|
|
261
|
+
} from "./chunk-B4AJNNOL.js";
|
|
238
262
|
import {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
import {
|
|
245
|
-
parseChannelWebhookConfigLenient
|
|
246
|
-
} from "./chunk-EDEO3ZXU.js";
|
|
247
|
-
import "./chunk-7VOUXBKJ.js";
|
|
248
|
-
import {
|
|
249
|
-
supportedChannelCatalog
|
|
250
|
-
} from "./chunk-ZEVUICUF.js";
|
|
251
|
-
import "./chunk-V6WHFGST.js";
|
|
263
|
+
MAX_WORKSPACE_PATH_LENGTH,
|
|
264
|
+
canonicalizeWorkspace,
|
|
265
|
+
canonicalizeWorkspaces,
|
|
266
|
+
translateAndCheckAbsoluteWorkspacePath
|
|
267
|
+
} from "./chunk-2RFKHEXL.js";
|
|
252
268
|
import {
|
|
253
269
|
ChannelDeliveryError,
|
|
254
270
|
MAX_CHANNEL_STARTUP_FAILURES,
|
|
@@ -261,7 +277,7 @@ import {
|
|
|
261
277
|
} from "./chunk-U4VTUMMK.js";
|
|
262
278
|
import {
|
|
263
279
|
normalizeWorkerDiagnostic
|
|
264
|
-
} from "./chunk-
|
|
280
|
+
} from "./chunk-GZ3RCT54.js";
|
|
265
281
|
import {
|
|
266
282
|
normalizeServeChannelSelection
|
|
267
283
|
} from "./chunk-ALMR3E6Q.js";
|
|
@@ -269,11 +285,11 @@ import "./chunk-BK2UNYWD.js";
|
|
|
269
285
|
import {
|
|
270
286
|
redactLogCredentials
|
|
271
287
|
} from "./chunk-M5GB774H.js";
|
|
272
|
-
import "./chunk-
|
|
288
|
+
import "./chunk-5HBA2Z7V.js";
|
|
273
289
|
import "./chunk-T2NCM2ET.js";
|
|
274
290
|
import {
|
|
275
291
|
sanitizeLogText
|
|
276
|
-
} from "./chunk-
|
|
292
|
+
} from "./chunk-7I5GTCT4.js";
|
|
277
293
|
import "./chunk-UDXSXLER.js";
|
|
278
294
|
import {
|
|
279
295
|
getDialogSettingKeys,
|
|
@@ -284,38 +300,23 @@ import {
|
|
|
284
300
|
getWritableScopes,
|
|
285
301
|
loadSettings,
|
|
286
302
|
validateSettingValue
|
|
287
|
-
} from "./chunk-
|
|
303
|
+
} from "./chunk-7A4ZDITM.js";
|
|
288
304
|
import "./chunk-RKUWKYED.js";
|
|
289
305
|
import {
|
|
290
306
|
SUPPORTED_LANGUAGES,
|
|
291
307
|
detectSystemLanguage,
|
|
292
308
|
resolveLanguageSetting,
|
|
293
309
|
resolveSupportedLanguage
|
|
294
|
-
} from "./chunk-
|
|
295
|
-
import "./chunk-
|
|
310
|
+
} from "./chunk-ATZOB5Y2.js";
|
|
311
|
+
import "./chunk-NNERMV7T.js";
|
|
296
312
|
import "./chunk-GOXKNSDZ.js";
|
|
297
|
-
import "./chunk-6PEXNQTX.js";
|
|
298
|
-
import {
|
|
299
|
-
MAX_REGISTERED_WORKSPACES,
|
|
300
|
-
WorkspaceDisplayNameValidationError,
|
|
301
|
-
WorkspaceRegistrationStoreCommittedError,
|
|
302
|
-
WorkspaceRegistrationStoreLimitError,
|
|
303
|
-
normalizeWorkspaceDisplayName,
|
|
304
|
-
workspaceRegistrationId
|
|
305
|
-
} from "./chunk-DC2Y3JSV.js";
|
|
306
|
-
import {
|
|
307
|
-
MAX_WORKSPACE_PATH_LENGTH,
|
|
308
|
-
canonicalizeWorkspace,
|
|
309
|
-
canonicalizeWorkspaces,
|
|
310
|
-
translateAndCheckAbsoluteWorkspacePath
|
|
311
|
-
} from "./chunk-2RFKHEXL.js";
|
|
312
|
-
import "./chunk-5HBA2Z7V.js";
|
|
313
313
|
import "./chunk-IDS7MSUP.js";
|
|
314
|
-
import "./chunk-
|
|
314
|
+
import "./chunk-6PEXNQTX.js";
|
|
315
|
+
import "./chunk-AOAYOH3R.js";
|
|
315
316
|
import "./chunk-VJNBRRZG.js";
|
|
316
317
|
import {
|
|
317
318
|
getWorkspaceTrustStatus
|
|
318
|
-
} from "./chunk-
|
|
319
|
+
} from "./chunk-4WSL256B.js";
|
|
319
320
|
import "./chunk-ALGGS7UH.js";
|
|
320
321
|
import {
|
|
321
322
|
isWithinRoot as isWithinRoot2
|
|
@@ -361,16 +362,27 @@ import {
|
|
|
361
362
|
WorkspaceMemoryFileTooLargeError,
|
|
362
363
|
WorkspaceMemoryWriteTimeoutError,
|
|
363
364
|
buildUsageDashboard,
|
|
365
|
+
createGitHubPullRequest,
|
|
364
366
|
detectLineEnding,
|
|
365
367
|
encodeTextFileContentAsync,
|
|
368
|
+
fetchGitBranches,
|
|
366
369
|
fetchGitCommitDetail,
|
|
367
370
|
fetchGitDiff,
|
|
368
371
|
fetchGitDiffHunksForFile,
|
|
369
372
|
fetchGitHubPullRequests,
|
|
370
373
|
fetchGitLog,
|
|
374
|
+
findGitRoot,
|
|
375
|
+
getDefaultBranch,
|
|
371
376
|
getGitWorkingTreeStatus,
|
|
372
377
|
getSubagentSessionDir,
|
|
378
|
+
gitCheckout,
|
|
379
|
+
gitCommit,
|
|
380
|
+
gitCreateBranch,
|
|
381
|
+
gitPull,
|
|
382
|
+
gitPush,
|
|
373
383
|
glob,
|
|
384
|
+
isValidCheckoutRef,
|
|
385
|
+
isValidRefName,
|
|
374
386
|
loadIgnoreRules,
|
|
375
387
|
loadUsageHistoryWithLive,
|
|
376
388
|
parseInstallSource,
|
|
@@ -386,18 +398,19 @@ import {
|
|
|
386
398
|
writeWorkspaceContextFile,
|
|
387
399
|
writeWorktreeSession,
|
|
388
400
|
writeWorktreeSessionMarker
|
|
389
|
-
} from "./chunk-
|
|
401
|
+
} from "./chunk-HUK2P4RS.js";
|
|
390
402
|
import "./chunk-TWPJO254.js";
|
|
391
403
|
import "./chunk-H6XPXXMH.js";
|
|
392
404
|
import "./chunk-5M6IDOMF.js";
|
|
393
|
-
import "./chunk-
|
|
394
|
-
import "./chunk-
|
|
395
|
-
import "./chunk-
|
|
405
|
+
import "./chunk-UPUG4GXM.js";
|
|
406
|
+
import "./chunk-64LQLPL7.js";
|
|
407
|
+
import "./chunk-2LQTH543.js";
|
|
396
408
|
import "./chunk-KRXPRVGL.js";
|
|
409
|
+
import "./chunk-DJGYJDYR.js";
|
|
397
410
|
import {
|
|
398
411
|
MAX_JOBS,
|
|
399
412
|
nextDurableFireMs
|
|
400
|
-
} from "./chunk-
|
|
413
|
+
} from "./chunk-CVHIL5IG.js";
|
|
401
414
|
import {
|
|
402
415
|
nextFireTime,
|
|
403
416
|
parseCron
|
|
@@ -410,23 +423,22 @@ import {
|
|
|
410
423
|
readCronTasks,
|
|
411
424
|
taskHasLegacyCondition,
|
|
412
425
|
updateCronTasks
|
|
413
|
-
} from "./chunk-
|
|
426
|
+
} from "./chunk-PONHVBRT.js";
|
|
414
427
|
import "./chunk-T26EAKDL.js";
|
|
415
428
|
import "./chunk-6PVPNMXU.js";
|
|
416
|
-
import "./chunk-3YAW4B2W.js";
|
|
417
429
|
import "./chunk-CPBF7KYF.js";
|
|
418
|
-
import "./chunk-
|
|
419
|
-
import "./chunk-
|
|
420
|
-
import "./chunk-
|
|
421
|
-
import "./chunk-
|
|
430
|
+
import "./chunk-6QIGFD5W.js";
|
|
431
|
+
import "./chunk-XWWKIXVD.js";
|
|
432
|
+
import "./chunk-75GFAX4R.js";
|
|
433
|
+
import "./chunk-OKF7JF3R.js";
|
|
422
434
|
import {
|
|
423
435
|
APPROVAL_MODES,
|
|
424
436
|
SubagentError,
|
|
425
437
|
SubagentErrorCode
|
|
426
|
-
} from "./chunk-
|
|
438
|
+
} from "./chunk-JSD33JG6.js";
|
|
427
439
|
import "./chunk-S6LOFUVP.js";
|
|
428
440
|
import "./chunk-JCW2R7WC.js";
|
|
429
|
-
import "./chunk-
|
|
441
|
+
import "./chunk-2DN4J57Y.js";
|
|
430
442
|
import "./chunk-ZPJWUGCS.js";
|
|
431
443
|
import {
|
|
432
444
|
QwenOAuth2Client,
|
|
@@ -436,15 +448,15 @@ import {
|
|
|
436
448
|
isDeviceAuthorizationSuccess,
|
|
437
449
|
isDeviceTokenPending,
|
|
438
450
|
isDeviceTokenSuccess
|
|
439
|
-
} from "./chunk-
|
|
451
|
+
} from "./chunk-2LKVPASC.js";
|
|
440
452
|
import "./chunk-NAVJD2PQ.js";
|
|
441
|
-
import "./chunk-
|
|
442
|
-
import "./chunk-
|
|
453
|
+
import "./chunk-LW3RFMG7.js";
|
|
454
|
+
import "./chunk-W4MIWP6M.js";
|
|
443
455
|
import "./chunk-DGEIYUC3.js";
|
|
444
456
|
import "./chunk-MPHPFVKK.js";
|
|
445
457
|
import "./chunk-GLNBDYUX.js";
|
|
446
458
|
import "./chunk-DJ2GSRLV.js";
|
|
447
|
-
import "./chunk-
|
|
459
|
+
import "./chunk-P2YNZWXZ.js";
|
|
448
460
|
import {
|
|
449
461
|
addDaemonRequestAttribute,
|
|
450
462
|
emitDaemonLog,
|
|
@@ -454,12 +466,12 @@ import {
|
|
|
454
466
|
recordDaemonHttpRequest,
|
|
455
467
|
recordDaemonHttpResponse,
|
|
456
468
|
withDaemonRequestSpan
|
|
457
|
-
} from "./chunk-
|
|
469
|
+
} from "./chunk-75MIQ3LV.js";
|
|
458
470
|
import "./chunk-2J3OJGTL.js";
|
|
459
471
|
import "./chunk-P3QQPMQA.js";
|
|
460
|
-
import "./chunk-
|
|
472
|
+
import "./chunk-RPLGZJV2.js";
|
|
461
473
|
import "./chunk-GLCZKT5V.js";
|
|
462
|
-
import "./chunk-
|
|
474
|
+
import "./chunk-DZLYR4U3.js";
|
|
463
475
|
import "./chunk-CR3C7WXL.js";
|
|
464
476
|
import "./chunk-XWRJCPHC.js";
|
|
465
477
|
import {
|
|
@@ -468,18 +480,18 @@ import {
|
|
|
468
480
|
isWithinRoot,
|
|
469
481
|
parseLineTolerant,
|
|
470
482
|
read
|
|
471
|
-
} from "./chunk-
|
|
483
|
+
} from "./chunk-BWKCTLEJ.js";
|
|
472
484
|
import "./chunk-VGC4I5JJ.js";
|
|
473
|
-
import "./chunk-
|
|
474
|
-
import "./chunk-
|
|
475
|
-
import "./chunk-
|
|
476
|
-
import "./chunk-
|
|
485
|
+
import "./chunk-SGFT55XI.js";
|
|
486
|
+
import "./chunk-Y4IHBGBP.js";
|
|
487
|
+
import "./chunk-Y6AXW2OG.js";
|
|
488
|
+
import "./chunk-LNHZ3A4I.js";
|
|
477
489
|
import "./chunk-46UV252V.js";
|
|
478
|
-
import "./chunk-
|
|
479
|
-
import "./chunk-
|
|
480
|
-
import "./chunk-
|
|
481
|
-
import "./chunk-
|
|
482
|
-
import "./chunk-
|
|
490
|
+
import "./chunk-ZBVS26BY.js";
|
|
491
|
+
import "./chunk-WZRWHXFE.js";
|
|
492
|
+
import "./chunk-A3NDJ5SB.js";
|
|
493
|
+
import "./chunk-7XATOOE7.js";
|
|
494
|
+
import "./chunk-BGTQCTQW.js";
|
|
483
495
|
import "./chunk-W4RQUHY3.js";
|
|
484
496
|
import "./chunk-S7W2GKIO.js";
|
|
485
497
|
import {
|
|
@@ -487,7 +499,7 @@ import {
|
|
|
487
499
|
Storage,
|
|
488
500
|
createDebugLogger,
|
|
489
501
|
runWithoutDebugLogSession
|
|
490
|
-
} from "./chunk-
|
|
502
|
+
} from "./chunk-UHUSJ6X7.js";
|
|
491
503
|
import "./chunk-VOQXFAY5.js";
|
|
492
504
|
import "./chunk-75DOP5OR.js";
|
|
493
505
|
import "./chunk-DMTGGOSA.js";
|
|
@@ -2625,6 +2637,26 @@ function resolveContainedCwd(req, workspaceCwd) {
|
|
|
2625
2637
|
return workspaceCwd;
|
|
2626
2638
|
}
|
|
2627
2639
|
__name(resolveContainedCwd, "resolveContainedCwd");
|
|
2640
|
+
function resolveContainedCwdOrFail(req, workspaceCwd) {
|
|
2641
|
+
const rawCwd = req.query["cwd"];
|
|
2642
|
+
if (rawCwd === void 0) {
|
|
2643
|
+
return workspaceCwd;
|
|
2644
|
+
}
|
|
2645
|
+
if (typeof rawCwd !== "string" || rawCwd.length === 0) {
|
|
2646
|
+
return null;
|
|
2647
|
+
}
|
|
2648
|
+
try {
|
|
2649
|
+
const resolved = fs.realpathSync(path5.resolve(rawCwd));
|
|
2650
|
+
const root = fs.realpathSync(workspaceCwd);
|
|
2651
|
+
const rel = path5.relative(root, resolved);
|
|
2652
|
+
if (!rel.startsWith("..") && !path5.isAbsolute(rel)) {
|
|
2653
|
+
return resolved;
|
|
2654
|
+
}
|
|
2655
|
+
} catch {
|
|
2656
|
+
}
|
|
2657
|
+
return null;
|
|
2658
|
+
}
|
|
2659
|
+
__name(resolveContainedCwdOrFail, "resolveContainedCwdOrFail");
|
|
2628
2660
|
|
|
2629
2661
|
// packages/cli/src/serve/routes/workspace-file-read.ts
|
|
2630
2662
|
var MAX_LIST_ENTRIES = 2e3;
|
|
@@ -29206,6 +29238,84 @@ init_esbuild_shims();
|
|
|
29206
29238
|
import { readdir as readdir2, stat as stat2 } from "node:fs/promises";
|
|
29207
29239
|
import { realpathSync as realpathSync3 } from "node:fs";
|
|
29208
29240
|
import { basename as basename4, dirname as dirname4, isAbsolute as isAbsolute7, join as join8, resolve as resolve4, sep as sep3 } from "node:path";
|
|
29241
|
+
|
|
29242
|
+
// packages/cli/src/serve/native-directory-picker.ts
|
|
29243
|
+
init_esbuild_shims();
|
|
29244
|
+
import { execFile as execFile2 } from "node:child_process";
|
|
29245
|
+
import { promisify as promisify2 } from "node:util";
|
|
29246
|
+
var execFileAsync2 = promisify2(execFile2);
|
|
29247
|
+
var PICKER_TIMEOUT_MS = 3e5;
|
|
29248
|
+
var NativeDirectoryPickerUnavailableError = class extends Error {
|
|
29249
|
+
static {
|
|
29250
|
+
__name(this, "NativeDirectoryPickerUnavailableError");
|
|
29251
|
+
}
|
|
29252
|
+
};
|
|
29253
|
+
async function pickNativeDirectory(signal) {
|
|
29254
|
+
try {
|
|
29255
|
+
if (process.platform === "darwin") {
|
|
29256
|
+
const script = [
|
|
29257
|
+
"const app = Application.currentApplication();",
|
|
29258
|
+
"app.includeStandardAdditions = true;",
|
|
29259
|
+
"app.chooseFolder({",
|
|
29260
|
+
'withPrompt: "Select a workspace folder",',
|
|
29261
|
+
"}).toString();"
|
|
29262
|
+
].join(" ");
|
|
29263
|
+
const { stdout } = await execFileAsync2(
|
|
29264
|
+
"osascript",
|
|
29265
|
+
["-l", "JavaScript", "-e", script],
|
|
29266
|
+
{ timeout: PICKER_TIMEOUT_MS, signal }
|
|
29267
|
+
);
|
|
29268
|
+
return stdout.trim() || void 0;
|
|
29269
|
+
}
|
|
29270
|
+
if (process.platform === "win32") {
|
|
29271
|
+
const script = [
|
|
29272
|
+
"[Console]::OutputEncoding = [System.Text.Encoding]::UTF8;",
|
|
29273
|
+
"Add-Type -AssemblyName System.Windows.Forms;",
|
|
29274
|
+
"$dialog = New-Object System.Windows.Forms.FolderBrowserDialog;",
|
|
29275
|
+
"if ($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {",
|
|
29276
|
+
"[Console]::Out.Write($dialog.SelectedPath)",
|
|
29277
|
+
"}"
|
|
29278
|
+
].join(" ");
|
|
29279
|
+
const { stdout } = await execFileAsync2(
|
|
29280
|
+
"powershell.exe",
|
|
29281
|
+
["-NoProfile", "-STA", "-Command", script],
|
|
29282
|
+
{ timeout: PICKER_TIMEOUT_MS, signal }
|
|
29283
|
+
);
|
|
29284
|
+
return stdout.trim() || void 0;
|
|
29285
|
+
}
|
|
29286
|
+
if (process.platform === "linux") {
|
|
29287
|
+
const { stdout } = await execFileAsync2(
|
|
29288
|
+
"zenity",
|
|
29289
|
+
[
|
|
29290
|
+
"--file-selection",
|
|
29291
|
+
"--directory",
|
|
29292
|
+
"--title=Select a workspace folder"
|
|
29293
|
+
],
|
|
29294
|
+
{ timeout: PICKER_TIMEOUT_MS, signal }
|
|
29295
|
+
);
|
|
29296
|
+
return stdout.trim() || void 0;
|
|
29297
|
+
}
|
|
29298
|
+
} catch (error2) {
|
|
29299
|
+
const result = error2;
|
|
29300
|
+
if (result.killed) {
|
|
29301
|
+
return void 0;
|
|
29302
|
+
}
|
|
29303
|
+
if (process.platform === "darwin" && (result.stderr?.includes("(-128)") || result.stderr?.includes("User canceled")) || // Zenity exits 1 both for a deliberate cancel and for "cannot open
|
|
29304
|
+
// display" on headless Linux; only the former is a silent cancel.
|
|
29305
|
+
process.platform === "linux" && result.code === 1 && !result.stderr?.includes("cannot open display")) {
|
|
29306
|
+
return void 0;
|
|
29307
|
+
}
|
|
29308
|
+
throw new NativeDirectoryPickerUnavailableError(
|
|
29309
|
+
error2 instanceof Error ? error2.message : String(error2)
|
|
29310
|
+
);
|
|
29311
|
+
}
|
|
29312
|
+
throw new NativeDirectoryPickerUnavailableError(
|
|
29313
|
+
`Native directory picker is not supported on ${process.platform}`
|
|
29314
|
+
);
|
|
29315
|
+
}
|
|
29316
|
+
__name(pickNativeDirectory, "pickNativeDirectory");
|
|
29317
|
+
|
|
29318
|
+
// packages/cli/src/serve/routes/workspace-management.ts
|
|
29209
29319
|
var MAX_PATH_SUGGESTIONS = 50;
|
|
29210
29320
|
function registerWorkspaceManagementRoutes(app, deps) {
|
|
29211
29321
|
const {
|
|
@@ -29218,8 +29328,10 @@ function registerWorkspaceManagementRoutes(app, deps) {
|
|
|
29218
29328
|
runWorkspaceTrustOperation,
|
|
29219
29329
|
workspaceRegistrationStore,
|
|
29220
29330
|
getAcpHandle,
|
|
29221
|
-
runtimeRemoval
|
|
29331
|
+
runtimeRemoval,
|
|
29332
|
+
pickWorkspaceDirectory: pickWorkspaceDirectoryOverride
|
|
29222
29333
|
} = deps;
|
|
29334
|
+
const pickWorkspaceDirectory = pickWorkspaceDirectoryOverride ?? pickNativeDirectory;
|
|
29223
29335
|
const inFlight = /* @__PURE__ */ new Map();
|
|
29224
29336
|
let sealed = false;
|
|
29225
29337
|
let activeOperations = 0;
|
|
@@ -29460,6 +29572,41 @@ function registerWorkspaceManagementRoutes(app, deps) {
|
|
|
29460
29572
|
});
|
|
29461
29573
|
}
|
|
29462
29574
|
);
|
|
29575
|
+
app.post(
|
|
29576
|
+
"/workspace-directory-picker",
|
|
29577
|
+
mutate(),
|
|
29578
|
+
async (req, res) => {
|
|
29579
|
+
const controller = new AbortController();
|
|
29580
|
+
res.on("close", () => controller.abort());
|
|
29581
|
+
try {
|
|
29582
|
+
const path14 = await pickWorkspaceDirectory(controller.signal);
|
|
29583
|
+
res.status(200).json({
|
|
29584
|
+
kind: "workspace-directory-picker",
|
|
29585
|
+
selected: path14 !== void 0,
|
|
29586
|
+
...path14 === void 0 ? {} : { path: path14 }
|
|
29587
|
+
});
|
|
29588
|
+
} catch (error2) {
|
|
29589
|
+
const detail = error2 instanceof Error ? error2.message : String(error2);
|
|
29590
|
+
if (error2 instanceof NativeDirectoryPickerUnavailableError) {
|
|
29591
|
+
writeStderrLine(
|
|
29592
|
+
`qwen serve: native directory picker unavailable: ${detail}`
|
|
29593
|
+
);
|
|
29594
|
+
res.status(501).json({
|
|
29595
|
+
error: "Native directory picker is unavailable",
|
|
29596
|
+
code: "directory_picker_unavailable"
|
|
29597
|
+
});
|
|
29598
|
+
return;
|
|
29599
|
+
}
|
|
29600
|
+
writeStderrLine(
|
|
29601
|
+
`qwen serve: native directory picker failed: ${detail}`
|
|
29602
|
+
);
|
|
29603
|
+
res.status(500).json({
|
|
29604
|
+
error: "Failed to open native directory picker",
|
|
29605
|
+
code: "directory_picker_failed"
|
|
29606
|
+
});
|
|
29607
|
+
}
|
|
29608
|
+
}
|
|
29609
|
+
);
|
|
29463
29610
|
app.post(
|
|
29464
29611
|
"/workspaces",
|
|
29465
29612
|
mutate({ strict: true }),
|
|
@@ -30717,7 +30864,9 @@ async function handleLogList(req, res, workspaceCwd, sendBridgeError2, route) {
|
|
|
30717
30864
|
try {
|
|
30718
30865
|
applyReadHeaders(res);
|
|
30719
30866
|
const { limit, skip } = parsePagination(req);
|
|
30720
|
-
const
|
|
30867
|
+
const rawRange = req.query["range"];
|
|
30868
|
+
const range = typeof rawRange === "string" && rawRange.trim() ? rawRange.trim() : void 0;
|
|
30869
|
+
const result = await fetchGitLog(workspaceCwd, { limit, skip, range });
|
|
30721
30870
|
res.status(200).json(buildLogList(workspaceCwd, result));
|
|
30722
30871
|
} catch (err) {
|
|
30723
30872
|
sendBridgeError2(res, err, { route });
|
|
@@ -30797,6 +30946,502 @@ function registerWorkspaceQualifiedGitLogRoutes(app, deps) {
|
|
|
30797
30946
|
}
|
|
30798
30947
|
__name(registerWorkspaceQualifiedGitLogRoutes, "registerWorkspaceQualifiedGitLogRoutes");
|
|
30799
30948
|
|
|
30949
|
+
// packages/cli/src/serve/routes/workspace-git-branches.ts
|
|
30950
|
+
init_esbuild_shims();
|
|
30951
|
+
var GIT_ERROR_MESSAGE_MAX = 512;
|
|
30952
|
+
function resolveTrustedRuntime5(registry, req, res) {
|
|
30953
|
+
const runtime = resolveWorkspaceRuntimeFromParam(registry, req, res);
|
|
30954
|
+
if (!runtime) return null;
|
|
30955
|
+
return requireTrustedWorkspaceRuntime(runtime, res) ? runtime : null;
|
|
30956
|
+
}
|
|
30957
|
+
__name(resolveTrustedRuntime5, "resolveTrustedRuntime");
|
|
30958
|
+
function sendGitError(res, err, route, sendBridgeError2, cwd) {
|
|
30959
|
+
let detail;
|
|
30960
|
+
if (err && typeof err === "object" && ("stdout" in err || "stderr" in err)) {
|
|
30961
|
+
const e = err;
|
|
30962
|
+
detail = `${e.stdout ?? ""}
|
|
30963
|
+
${e.stderr ?? ""}`;
|
|
30964
|
+
} else {
|
|
30965
|
+
detail = err instanceof Error ? err.message : String(err);
|
|
30966
|
+
}
|
|
30967
|
+
const gitRoot = findGitRoot(cwd);
|
|
30968
|
+
let message = detail.split(cwd).join("<workspace>");
|
|
30969
|
+
if (gitRoot && gitRoot !== cwd) {
|
|
30970
|
+
message = message.split(gitRoot).join("<workspace>");
|
|
30971
|
+
}
|
|
30972
|
+
message = message.slice(0, GIT_ERROR_MESSAGE_MAX);
|
|
30973
|
+
if (/not a git repository/i.test(message) || /invalid reference/i.test(message)) {
|
|
30974
|
+
res.status(404).json({ error: "not_a_git_repository", message });
|
|
30975
|
+
return;
|
|
30976
|
+
}
|
|
30977
|
+
if (/dirty|uncommitted|would be overwritten/i.test(message)) {
|
|
30978
|
+
res.status(409).json({ error: "dirty_working_tree", message });
|
|
30979
|
+
return;
|
|
30980
|
+
}
|
|
30981
|
+
if (/already exists/i.test(message)) {
|
|
30982
|
+
res.status(409).json({ error: "branch_already_exists", message });
|
|
30983
|
+
return;
|
|
30984
|
+
}
|
|
30985
|
+
if (/nothing to commit/i.test(message)) {
|
|
30986
|
+
res.status(400).json({ error: "nothing_to_commit", message });
|
|
30987
|
+
return;
|
|
30988
|
+
}
|
|
30989
|
+
if (/detached HEAD/i.test(message)) {
|
|
30990
|
+
res.status(409).json({ error: "detached_head", message });
|
|
30991
|
+
return;
|
|
30992
|
+
}
|
|
30993
|
+
if (/no upstream|no tracking information/i.test(message)) {
|
|
30994
|
+
res.status(400).json({ error: "no_upstream", message });
|
|
30995
|
+
return;
|
|
30996
|
+
}
|
|
30997
|
+
sendBridgeError2(res, new Error(message), { route });
|
|
30998
|
+
}
|
|
30999
|
+
__name(sendGitError, "sendGitError");
|
|
31000
|
+
async function handleBranches(res, cwd, sendBridgeError2, route, assertGenerationOpen, env) {
|
|
31001
|
+
try {
|
|
31002
|
+
assertGenerationOpen?.();
|
|
31003
|
+
const result = await fetchGitBranches(cwd, env);
|
|
31004
|
+
assertGenerationOpen?.();
|
|
31005
|
+
res.status(200).json({
|
|
31006
|
+
v: 1,
|
|
31007
|
+
workspaceCwd: cwd,
|
|
31008
|
+
available: true,
|
|
31009
|
+
local: result.local,
|
|
31010
|
+
remote: result.remote,
|
|
31011
|
+
tags: result.tags,
|
|
31012
|
+
recent: result.recent,
|
|
31013
|
+
head: result.head,
|
|
31014
|
+
detached: result.detached
|
|
31015
|
+
});
|
|
31016
|
+
} catch (err) {
|
|
31017
|
+
if (sendGenerationClosedError(res, err)) return;
|
|
31018
|
+
sendGitError(res, err, route, sendBridgeError2, cwd);
|
|
31019
|
+
}
|
|
31020
|
+
}
|
|
31021
|
+
__name(handleBranches, "handleBranches");
|
|
31022
|
+
async function handleCheckout(req, res, cwd, sendBridgeError2, route, env) {
|
|
31023
|
+
const body = safeBody(req);
|
|
31024
|
+
const ref = body["ref"];
|
|
31025
|
+
if (typeof ref !== "string" || !ref.trim()) {
|
|
31026
|
+
res.status(400).json({ error: "missing_ref", message: "ref is required" });
|
|
31027
|
+
return;
|
|
31028
|
+
}
|
|
31029
|
+
if (!isValidCheckoutRef(ref)) {
|
|
31030
|
+
res.status(400).json({ error: "invalid_ref", message: "Invalid checkout ref" });
|
|
31031
|
+
return;
|
|
31032
|
+
}
|
|
31033
|
+
try {
|
|
31034
|
+
const result = await gitCheckout(cwd, ref.trim(), env);
|
|
31035
|
+
res.status(200).json(result);
|
|
31036
|
+
} catch (err) {
|
|
31037
|
+
sendGitError(res, err, route, sendBridgeError2, cwd);
|
|
31038
|
+
}
|
|
31039
|
+
}
|
|
31040
|
+
__name(handleCheckout, "handleCheckout");
|
|
31041
|
+
async function handleCreateBranch(req, res, cwd, sendBridgeError2, route, env) {
|
|
31042
|
+
const body = safeBody(req);
|
|
31043
|
+
const name = body["name"];
|
|
31044
|
+
if (typeof name !== "string" || !isValidRefName(name) || name.startsWith("-")) {
|
|
31045
|
+
res.status(400).json({ error: "invalid_branch_name", message: "Invalid branch name" });
|
|
31046
|
+
return;
|
|
31047
|
+
}
|
|
31048
|
+
const rawStartPoint = body["startPoint"];
|
|
31049
|
+
if (rawStartPoint !== void 0 && typeof rawStartPoint !== "string") {
|
|
31050
|
+
res.status(400).json({
|
|
31051
|
+
error: "invalid_start_point",
|
|
31052
|
+
message: "startPoint must be a string"
|
|
31053
|
+
});
|
|
31054
|
+
return;
|
|
31055
|
+
}
|
|
31056
|
+
const startPoint = typeof rawStartPoint === "string" ? rawStartPoint.trim() || void 0 : void 0;
|
|
31057
|
+
if (startPoint !== void 0 && !isValidCheckoutRef(startPoint)) {
|
|
31058
|
+
res.status(400).json({ error: "invalid_start_point", message: "Invalid start point" });
|
|
31059
|
+
return;
|
|
31060
|
+
}
|
|
31061
|
+
try {
|
|
31062
|
+
const result = await gitCreateBranch(cwd, name, startPoint, env);
|
|
31063
|
+
res.status(200).json(result);
|
|
31064
|
+
} catch (err) {
|
|
31065
|
+
sendGitError(res, err, route, sendBridgeError2, cwd);
|
|
31066
|
+
}
|
|
31067
|
+
}
|
|
31068
|
+
__name(handleCreateBranch, "handleCreateBranch");
|
|
31069
|
+
async function handlePush(req, res, cwd, sendBridgeError2, route, env) {
|
|
31070
|
+
const body = safeBody(req);
|
|
31071
|
+
if (body["setUpstream"] !== void 0 && typeof body["setUpstream"] !== "boolean") {
|
|
31072
|
+
res.status(400).json({
|
|
31073
|
+
error: "invalid_set_upstream",
|
|
31074
|
+
message: "setUpstream must be a boolean"
|
|
31075
|
+
});
|
|
31076
|
+
return;
|
|
31077
|
+
}
|
|
31078
|
+
if (body["force"] !== void 0 && typeof body["force"] !== "boolean") {
|
|
31079
|
+
res.status(400).json({ error: "invalid_force", message: "force must be a boolean" });
|
|
31080
|
+
return;
|
|
31081
|
+
}
|
|
31082
|
+
const setUpstream = body["setUpstream"] === true;
|
|
31083
|
+
const force = body["force"] === true;
|
|
31084
|
+
try {
|
|
31085
|
+
const result = await gitPush(cwd, { setUpstream, force }, env);
|
|
31086
|
+
res.status(200).json(result);
|
|
31087
|
+
} catch (err) {
|
|
31088
|
+
sendGitError(res, err, route, sendBridgeError2, cwd);
|
|
31089
|
+
}
|
|
31090
|
+
}
|
|
31091
|
+
__name(handlePush, "handlePush");
|
|
31092
|
+
async function handlePull(req, res, cwd, sendBridgeError2, route, env) {
|
|
31093
|
+
const body = safeBody(req);
|
|
31094
|
+
if (body["rebase"] !== void 0 && typeof body["rebase"] !== "boolean") {
|
|
31095
|
+
res.status(400).json({ error: "invalid_rebase", message: "rebase must be a boolean" });
|
|
31096
|
+
return;
|
|
31097
|
+
}
|
|
31098
|
+
if (body["fetchOnly"] !== void 0 && typeof body["fetchOnly"] !== "boolean") {
|
|
31099
|
+
res.status(400).json({
|
|
31100
|
+
error: "invalid_fetch_only",
|
|
31101
|
+
message: "fetchOnly must be a boolean"
|
|
31102
|
+
});
|
|
31103
|
+
return;
|
|
31104
|
+
}
|
|
31105
|
+
const rebase = body["rebase"] === true;
|
|
31106
|
+
const fetchOnly = body["fetchOnly"] === true;
|
|
31107
|
+
try {
|
|
31108
|
+
const result = await gitPull(cwd, { rebase, fetchOnly }, env);
|
|
31109
|
+
res.status(200).json(result);
|
|
31110
|
+
} catch (err) {
|
|
31111
|
+
sendGitError(res, err, route, sendBridgeError2, cwd);
|
|
31112
|
+
}
|
|
31113
|
+
}
|
|
31114
|
+
__name(handlePull, "handlePull");
|
|
31115
|
+
async function handleCommit(req, res, cwd, sendBridgeError2, route, env) {
|
|
31116
|
+
const body = safeBody(req);
|
|
31117
|
+
const message = body["message"];
|
|
31118
|
+
if (typeof message !== "string" || !message.trim()) {
|
|
31119
|
+
res.status(400).json({ error: "missing_message", message: "message is required" });
|
|
31120
|
+
return;
|
|
31121
|
+
}
|
|
31122
|
+
if (body["all"] !== void 0 && typeof body["all"] !== "boolean") {
|
|
31123
|
+
res.status(400).json({ error: "invalid_all", message: "all must be a boolean" });
|
|
31124
|
+
return;
|
|
31125
|
+
}
|
|
31126
|
+
const all = body["all"] === true;
|
|
31127
|
+
try {
|
|
31128
|
+
const result = await gitCommit(cwd, message.trim(), { all }, env);
|
|
31129
|
+
res.status(200).json(result);
|
|
31130
|
+
} catch (err) {
|
|
31131
|
+
sendGitError(res, err, route, sendBridgeError2, cwd);
|
|
31132
|
+
}
|
|
31133
|
+
}
|
|
31134
|
+
__name(handleCommit, "handleCommit");
|
|
31135
|
+
function registerWorkspaceGitBranchRoutes(app, deps) {
|
|
31136
|
+
app.get("/workspace/git/branches", (_req, res) => {
|
|
31137
|
+
if (deps.isWorkspaceTrusted?.() === false) {
|
|
31138
|
+
sendUntrustedWorkspaceResponse(res);
|
|
31139
|
+
return;
|
|
31140
|
+
}
|
|
31141
|
+
void handleBranches(
|
|
31142
|
+
res,
|
|
31143
|
+
deps.boundWorkspace,
|
|
31144
|
+
deps.sendBridgeError,
|
|
31145
|
+
"GET /workspace/git/branches",
|
|
31146
|
+
deps.captureGenerationAssertion?.()
|
|
31147
|
+
);
|
|
31148
|
+
});
|
|
31149
|
+
app.post(
|
|
31150
|
+
"/workspace/git/checkout",
|
|
31151
|
+
deps.mutate({ strict: true }),
|
|
31152
|
+
(req, res) => {
|
|
31153
|
+
if (deps.isWorkspaceTrusted?.() === false) {
|
|
31154
|
+
sendUntrustedWorkspaceResponse(res);
|
|
31155
|
+
return;
|
|
31156
|
+
}
|
|
31157
|
+
try {
|
|
31158
|
+
deps.captureGenerationAssertion?.()?.();
|
|
31159
|
+
} catch (err) {
|
|
31160
|
+
deps.sendBridgeError(res, err, {
|
|
31161
|
+
route: "POST /workspace/git/checkout"
|
|
31162
|
+
});
|
|
31163
|
+
return;
|
|
31164
|
+
}
|
|
31165
|
+
void handleCheckout(
|
|
31166
|
+
req,
|
|
31167
|
+
res,
|
|
31168
|
+
deps.boundWorkspace,
|
|
31169
|
+
deps.sendBridgeError,
|
|
31170
|
+
"POST /workspace/git/checkout"
|
|
31171
|
+
);
|
|
31172
|
+
}
|
|
31173
|
+
);
|
|
31174
|
+
app.post(
|
|
31175
|
+
"/workspace/git/branch",
|
|
31176
|
+
deps.mutate({ strict: true }),
|
|
31177
|
+
(req, res) => {
|
|
31178
|
+
if (deps.isWorkspaceTrusted?.() === false) {
|
|
31179
|
+
sendUntrustedWorkspaceResponse(res);
|
|
31180
|
+
return;
|
|
31181
|
+
}
|
|
31182
|
+
try {
|
|
31183
|
+
deps.captureGenerationAssertion?.()?.();
|
|
31184
|
+
} catch (err) {
|
|
31185
|
+
deps.sendBridgeError(res, err, {
|
|
31186
|
+
route: "POST /workspace/git/branch"
|
|
31187
|
+
});
|
|
31188
|
+
return;
|
|
31189
|
+
}
|
|
31190
|
+
void handleCreateBranch(
|
|
31191
|
+
req,
|
|
31192
|
+
res,
|
|
31193
|
+
deps.boundWorkspace,
|
|
31194
|
+
deps.sendBridgeError,
|
|
31195
|
+
"POST /workspace/git/branch"
|
|
31196
|
+
);
|
|
31197
|
+
}
|
|
31198
|
+
);
|
|
31199
|
+
app.post("/workspace/git/push", deps.mutate({ strict: true }), (req, res) => {
|
|
31200
|
+
if (deps.isWorkspaceTrusted?.() === false) {
|
|
31201
|
+
sendUntrustedWorkspaceResponse(res);
|
|
31202
|
+
return;
|
|
31203
|
+
}
|
|
31204
|
+
try {
|
|
31205
|
+
deps.captureGenerationAssertion?.()?.();
|
|
31206
|
+
} catch (err) {
|
|
31207
|
+
deps.sendBridgeError(res, err, { route: "POST /workspace/git/push" });
|
|
31208
|
+
return;
|
|
31209
|
+
}
|
|
31210
|
+
void handlePush(
|
|
31211
|
+
req,
|
|
31212
|
+
res,
|
|
31213
|
+
deps.boundWorkspace,
|
|
31214
|
+
deps.sendBridgeError,
|
|
31215
|
+
"POST /workspace/git/push"
|
|
31216
|
+
);
|
|
31217
|
+
});
|
|
31218
|
+
app.post("/workspace/git/pull", deps.mutate({ strict: true }), (req, res) => {
|
|
31219
|
+
if (deps.isWorkspaceTrusted?.() === false) {
|
|
31220
|
+
sendUntrustedWorkspaceResponse(res);
|
|
31221
|
+
return;
|
|
31222
|
+
}
|
|
31223
|
+
try {
|
|
31224
|
+
deps.captureGenerationAssertion?.()?.();
|
|
31225
|
+
} catch (err) {
|
|
31226
|
+
deps.sendBridgeError(res, err, { route: "POST /workspace/git/pull" });
|
|
31227
|
+
return;
|
|
31228
|
+
}
|
|
31229
|
+
void handlePull(
|
|
31230
|
+
req,
|
|
31231
|
+
res,
|
|
31232
|
+
deps.boundWorkspace,
|
|
31233
|
+
deps.sendBridgeError,
|
|
31234
|
+
"POST /workspace/git/pull"
|
|
31235
|
+
);
|
|
31236
|
+
});
|
|
31237
|
+
app.post(
|
|
31238
|
+
"/workspace/git/commit",
|
|
31239
|
+
deps.mutate({ strict: true }),
|
|
31240
|
+
(req, res) => {
|
|
31241
|
+
if (deps.isWorkspaceTrusted?.() === false) {
|
|
31242
|
+
sendUntrustedWorkspaceResponse(res);
|
|
31243
|
+
return;
|
|
31244
|
+
}
|
|
31245
|
+
try {
|
|
31246
|
+
deps.captureGenerationAssertion?.()?.();
|
|
31247
|
+
} catch (err) {
|
|
31248
|
+
deps.sendBridgeError(res, err, {
|
|
31249
|
+
route: "POST /workspace/git/commit"
|
|
31250
|
+
});
|
|
31251
|
+
return;
|
|
31252
|
+
}
|
|
31253
|
+
void handleCommit(
|
|
31254
|
+
req,
|
|
31255
|
+
res,
|
|
31256
|
+
deps.boundWorkspace,
|
|
31257
|
+
deps.sendBridgeError,
|
|
31258
|
+
"POST /workspace/git/commit"
|
|
31259
|
+
);
|
|
31260
|
+
}
|
|
31261
|
+
);
|
|
31262
|
+
}
|
|
31263
|
+
__name(registerWorkspaceGitBranchRoutes, "registerWorkspaceGitBranchRoutes");
|
|
31264
|
+
function registerWorkspaceQualifiedGitBranchRoutes(app, deps) {
|
|
31265
|
+
app.get("/workspaces/:workspace/git/branches", (req, res) => {
|
|
31266
|
+
const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
|
|
31267
|
+
if (!runtime) return;
|
|
31268
|
+
void handleBranches(
|
|
31269
|
+
res,
|
|
31270
|
+
resolveContainedCwd(req, runtime.workspaceCwd),
|
|
31271
|
+
deps.sendBridgeError,
|
|
31272
|
+
"GET /workspaces/:workspace/git/branches",
|
|
31273
|
+
() => runtime.generationGuard?.assertOpen(),
|
|
31274
|
+
runtime.env.effectiveEnv
|
|
31275
|
+
);
|
|
31276
|
+
});
|
|
31277
|
+
app.post(
|
|
31278
|
+
"/workspaces/:workspace/git/checkout",
|
|
31279
|
+
deps.mutate({ strict: true }),
|
|
31280
|
+
(req, res) => {
|
|
31281
|
+
const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
|
|
31282
|
+
if (!runtime) return;
|
|
31283
|
+
try {
|
|
31284
|
+
runtime.generationGuard?.assertOpen();
|
|
31285
|
+
} catch (err) {
|
|
31286
|
+
if (sendGenerationClosedError(res, err)) return;
|
|
31287
|
+
deps.sendBridgeError(res, err, {
|
|
31288
|
+
route: "POST /workspaces/:workspace/git/checkout"
|
|
31289
|
+
});
|
|
31290
|
+
return;
|
|
31291
|
+
}
|
|
31292
|
+
const cwd = resolveContainedCwdOrFail(req, runtime.workspaceCwd);
|
|
31293
|
+
if (cwd === null) {
|
|
31294
|
+
res.status(400).json({
|
|
31295
|
+
error: "invalid_cwd",
|
|
31296
|
+
message: "The supplied cwd is invalid or outside the workspace"
|
|
31297
|
+
});
|
|
31298
|
+
return;
|
|
31299
|
+
}
|
|
31300
|
+
void handleCheckout(
|
|
31301
|
+
req,
|
|
31302
|
+
res,
|
|
31303
|
+
cwd,
|
|
31304
|
+
deps.sendBridgeError,
|
|
31305
|
+
"POST /workspaces/:workspace/git/checkout",
|
|
31306
|
+
runtime.env.effectiveEnv
|
|
31307
|
+
);
|
|
31308
|
+
}
|
|
31309
|
+
);
|
|
31310
|
+
app.post(
|
|
31311
|
+
"/workspaces/:workspace/git/branch",
|
|
31312
|
+
deps.mutate({ strict: true }),
|
|
31313
|
+
(req, res) => {
|
|
31314
|
+
const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
|
|
31315
|
+
if (!runtime) return;
|
|
31316
|
+
try {
|
|
31317
|
+
runtime.generationGuard?.assertOpen();
|
|
31318
|
+
} catch (err) {
|
|
31319
|
+
if (sendGenerationClosedError(res, err)) return;
|
|
31320
|
+
deps.sendBridgeError(res, err, {
|
|
31321
|
+
route: "POST /workspaces/:workspace/git/branch"
|
|
31322
|
+
});
|
|
31323
|
+
return;
|
|
31324
|
+
}
|
|
31325
|
+
const cwd = resolveContainedCwdOrFail(req, runtime.workspaceCwd);
|
|
31326
|
+
if (cwd === null) {
|
|
31327
|
+
res.status(400).json({
|
|
31328
|
+
error: "invalid_cwd",
|
|
31329
|
+
message: "The supplied cwd is invalid or outside the workspace"
|
|
31330
|
+
});
|
|
31331
|
+
return;
|
|
31332
|
+
}
|
|
31333
|
+
void handleCreateBranch(
|
|
31334
|
+
req,
|
|
31335
|
+
res,
|
|
31336
|
+
cwd,
|
|
31337
|
+
deps.sendBridgeError,
|
|
31338
|
+
"POST /workspaces/:workspace/git/branch",
|
|
31339
|
+
runtime.env.effectiveEnv
|
|
31340
|
+
);
|
|
31341
|
+
}
|
|
31342
|
+
);
|
|
31343
|
+
app.post(
|
|
31344
|
+
"/workspaces/:workspace/git/push",
|
|
31345
|
+
deps.mutate({ strict: true }),
|
|
31346
|
+
(req, res) => {
|
|
31347
|
+
const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
|
|
31348
|
+
if (!runtime) return;
|
|
31349
|
+
try {
|
|
31350
|
+
runtime.generationGuard?.assertOpen();
|
|
31351
|
+
} catch (err) {
|
|
31352
|
+
if (sendGenerationClosedError(res, err)) return;
|
|
31353
|
+
deps.sendBridgeError(res, err, {
|
|
31354
|
+
route: "POST /workspaces/:workspace/git/push"
|
|
31355
|
+
});
|
|
31356
|
+
return;
|
|
31357
|
+
}
|
|
31358
|
+
const cwd = resolveContainedCwdOrFail(req, runtime.workspaceCwd);
|
|
31359
|
+
if (cwd === null) {
|
|
31360
|
+
res.status(400).json({
|
|
31361
|
+
error: "invalid_cwd",
|
|
31362
|
+
message: "The supplied cwd is invalid or outside the workspace"
|
|
31363
|
+
});
|
|
31364
|
+
return;
|
|
31365
|
+
}
|
|
31366
|
+
void handlePush(
|
|
31367
|
+
req,
|
|
31368
|
+
res,
|
|
31369
|
+
cwd,
|
|
31370
|
+
deps.sendBridgeError,
|
|
31371
|
+
"POST /workspaces/:workspace/git/push",
|
|
31372
|
+
runtime.env.effectiveEnv
|
|
31373
|
+
);
|
|
31374
|
+
}
|
|
31375
|
+
);
|
|
31376
|
+
app.post(
|
|
31377
|
+
"/workspaces/:workspace/git/pull",
|
|
31378
|
+
deps.mutate({ strict: true }),
|
|
31379
|
+
(req, res) => {
|
|
31380
|
+
const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
|
|
31381
|
+
if (!runtime) return;
|
|
31382
|
+
try {
|
|
31383
|
+
runtime.generationGuard?.assertOpen();
|
|
31384
|
+
} catch (err) {
|
|
31385
|
+
if (sendGenerationClosedError(res, err)) return;
|
|
31386
|
+
deps.sendBridgeError(res, err, {
|
|
31387
|
+
route: "POST /workspaces/:workspace/git/pull"
|
|
31388
|
+
});
|
|
31389
|
+
return;
|
|
31390
|
+
}
|
|
31391
|
+
const cwd = resolveContainedCwdOrFail(req, runtime.workspaceCwd);
|
|
31392
|
+
if (cwd === null) {
|
|
31393
|
+
res.status(400).json({
|
|
31394
|
+
error: "invalid_cwd",
|
|
31395
|
+
message: "The supplied cwd is invalid or outside the workspace"
|
|
31396
|
+
});
|
|
31397
|
+
return;
|
|
31398
|
+
}
|
|
31399
|
+
void handlePull(
|
|
31400
|
+
req,
|
|
31401
|
+
res,
|
|
31402
|
+
cwd,
|
|
31403
|
+
deps.sendBridgeError,
|
|
31404
|
+
"POST /workspaces/:workspace/git/pull",
|
|
31405
|
+
runtime.env.effectiveEnv
|
|
31406
|
+
);
|
|
31407
|
+
}
|
|
31408
|
+
);
|
|
31409
|
+
app.post(
|
|
31410
|
+
"/workspaces/:workspace/git/commit",
|
|
31411
|
+
deps.mutate({ strict: true }),
|
|
31412
|
+
(req, res) => {
|
|
31413
|
+
const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
|
|
31414
|
+
if (!runtime) return;
|
|
31415
|
+
try {
|
|
31416
|
+
runtime.generationGuard?.assertOpen();
|
|
31417
|
+
} catch (err) {
|
|
31418
|
+
if (sendGenerationClosedError(res, err)) return;
|
|
31419
|
+
deps.sendBridgeError(res, err, {
|
|
31420
|
+
route: "POST /workspaces/:workspace/git/commit"
|
|
31421
|
+
});
|
|
31422
|
+
return;
|
|
31423
|
+
}
|
|
31424
|
+
const cwd = resolveContainedCwdOrFail(req, runtime.workspaceCwd);
|
|
31425
|
+
if (cwd === null) {
|
|
31426
|
+
res.status(400).json({
|
|
31427
|
+
error: "invalid_cwd",
|
|
31428
|
+
message: "The supplied cwd is invalid or outside the workspace"
|
|
31429
|
+
});
|
|
31430
|
+
return;
|
|
31431
|
+
}
|
|
31432
|
+
void handleCommit(
|
|
31433
|
+
req,
|
|
31434
|
+
res,
|
|
31435
|
+
cwd,
|
|
31436
|
+
deps.sendBridgeError,
|
|
31437
|
+
"POST /workspaces/:workspace/git/commit",
|
|
31438
|
+
runtime.env.effectiveEnv
|
|
31439
|
+
);
|
|
31440
|
+
}
|
|
31441
|
+
);
|
|
31442
|
+
}
|
|
31443
|
+
__name(registerWorkspaceQualifiedGitBranchRoutes, "registerWorkspaceQualifiedGitBranchRoutes");
|
|
31444
|
+
|
|
30800
31445
|
// packages/cli/src/serve/routes/workspace-github-prs.ts
|
|
30801
31446
|
init_esbuild_shims();
|
|
30802
31447
|
var DEFAULT_CACHE_TTL_MS2 = 6e4;
|
|
@@ -30807,13 +31452,13 @@ __name(sanitizeMessage, "sanitizeMessage");
|
|
|
30807
31452
|
function registerWorkspaceQualifiedGitHubPrsRoutes(app, deps) {
|
|
30808
31453
|
const ttlMs = deps.cacheTtlMs ?? DEFAULT_CACHE_TTL_MS2;
|
|
30809
31454
|
const cache = /* @__PURE__ */ new Map();
|
|
30810
|
-
const getPullRequests = /* @__PURE__ */ __name((workspaceCwd) => {
|
|
31455
|
+
const getPullRequests = /* @__PURE__ */ __name((workspaceCwd, env) => {
|
|
30811
31456
|
const now = Date.now();
|
|
30812
31457
|
const existing = cache.get(workspaceCwd);
|
|
30813
31458
|
const fresh = existing !== void 0 && (existing.settledAt === null || now - existing.settledAt < ttlMs);
|
|
30814
31459
|
if (!fresh) {
|
|
30815
31460
|
const entry = {
|
|
30816
|
-
promise: fetchGitHubPullRequests(workspaceCwd),
|
|
31461
|
+
promise: fetchGitHubPullRequests(workspaceCwd, env),
|
|
30817
31462
|
settledAt: null
|
|
30818
31463
|
};
|
|
30819
31464
|
cache.set(workspaceCwd, entry);
|
|
@@ -30841,7 +31486,10 @@ function registerWorkspaceQualifiedGitHubPrsRoutes(app, deps) {
|
|
|
30841
31486
|
if (!requireTrustedWorkspaceRuntime(runtime, res)) return;
|
|
30842
31487
|
applyReadHeaders(res);
|
|
30843
31488
|
try {
|
|
30844
|
-
const result = await getPullRequests(
|
|
31489
|
+
const result = await getPullRequests(
|
|
31490
|
+
runtime.workspaceCwd,
|
|
31491
|
+
runtime.env.effectiveEnv
|
|
31492
|
+
);
|
|
30845
31493
|
switch (result.kind) {
|
|
30846
31494
|
case "ok":
|
|
30847
31495
|
res.status(200).json({
|
|
@@ -30887,6 +31535,113 @@ function registerWorkspaceQualifiedGitHubPrsRoutes(app, deps) {
|
|
|
30887
31535
|
deps.sendBridgeError(res, err, { route });
|
|
30888
31536
|
}
|
|
30889
31537
|
});
|
|
31538
|
+
app.post(
|
|
31539
|
+
"/workspaces/:workspace/github/prs/create",
|
|
31540
|
+
deps.mutate({ strict: true }),
|
|
31541
|
+
async (req, res) => {
|
|
31542
|
+
const route = "POST /workspaces/:workspace/github/prs/create";
|
|
31543
|
+
const runtime = resolveWorkspaceRuntimeFromParam(
|
|
31544
|
+
deps.workspaceRegistry,
|
|
31545
|
+
req,
|
|
31546
|
+
res
|
|
31547
|
+
);
|
|
31548
|
+
if (!runtime) return;
|
|
31549
|
+
if (!requireTrustedWorkspaceRuntime(runtime, res)) return;
|
|
31550
|
+
try {
|
|
31551
|
+
runtime.generationGuard?.assertOpen();
|
|
31552
|
+
} catch (err) {
|
|
31553
|
+
if (sendGenerationClosedError(res, err)) return;
|
|
31554
|
+
deps.sendBridgeError(res, err, { route });
|
|
31555
|
+
return;
|
|
31556
|
+
}
|
|
31557
|
+
const body = safeBody(req);
|
|
31558
|
+
const title = body["title"];
|
|
31559
|
+
if (typeof title !== "string" || !title.trim()) {
|
|
31560
|
+
res.status(400).json({ error: "title is required" });
|
|
31561
|
+
return;
|
|
31562
|
+
}
|
|
31563
|
+
for (const field of ["body", "base", "head"]) {
|
|
31564
|
+
if (body[field] !== void 0 && typeof body[field] !== "string") {
|
|
31565
|
+
res.status(400).json({ error: `${field} must be a string` });
|
|
31566
|
+
return;
|
|
31567
|
+
}
|
|
31568
|
+
}
|
|
31569
|
+
const prBody = typeof body["body"] === "string" ? body["body"] : void 0;
|
|
31570
|
+
const base = typeof body["base"] === "string" ? body["base"] : void 0;
|
|
31571
|
+
const head = typeof body["head"] === "string" ? body["head"] : void 0;
|
|
31572
|
+
const cwd = resolveContainedCwdOrFail(req, runtime.workspaceCwd);
|
|
31573
|
+
if (cwd === null) {
|
|
31574
|
+
res.status(400).json({
|
|
31575
|
+
error: "invalid_cwd",
|
|
31576
|
+
message: "The supplied cwd is invalid or outside the workspace"
|
|
31577
|
+
});
|
|
31578
|
+
return;
|
|
31579
|
+
}
|
|
31580
|
+
try {
|
|
31581
|
+
const result = await createGitHubPullRequest(
|
|
31582
|
+
cwd,
|
|
31583
|
+
{
|
|
31584
|
+
title: title.trim(),
|
|
31585
|
+
body: prBody,
|
|
31586
|
+
base,
|
|
31587
|
+
head
|
|
31588
|
+
},
|
|
31589
|
+
runtime.env.effectiveEnv
|
|
31590
|
+
);
|
|
31591
|
+
switch (result.kind) {
|
|
31592
|
+
case "ok":
|
|
31593
|
+
res.status(201).json({ url: result.url, number: result.number });
|
|
31594
|
+
return;
|
|
31595
|
+
case "not_a_repo":
|
|
31596
|
+
res.status(404).json({ error: "not_a_git_repository" });
|
|
31597
|
+
return;
|
|
31598
|
+
case "cli_unavailable":
|
|
31599
|
+
res.status(502).json({
|
|
31600
|
+
error: "gh CLI not available",
|
|
31601
|
+
code: "github_cli_unavailable"
|
|
31602
|
+
});
|
|
31603
|
+
return;
|
|
31604
|
+
case "failed":
|
|
31605
|
+
res.status(502).json({
|
|
31606
|
+
error: sanitizeMessage(
|
|
31607
|
+
sanitizeMessage(result.message, runtime.workspaceCwd),
|
|
31608
|
+
result.gitRoot
|
|
31609
|
+
).slice(0, GITHUB_PR_ERROR_MESSAGE_MAX),
|
|
31610
|
+
code: "github_pr_create_failed"
|
|
31611
|
+
});
|
|
31612
|
+
return;
|
|
31613
|
+
default:
|
|
31614
|
+
res.status(500).json({ error: "unexpected result" });
|
|
31615
|
+
return;
|
|
31616
|
+
}
|
|
31617
|
+
} catch (err) {
|
|
31618
|
+
deps.sendBridgeError(res, err, { route });
|
|
31619
|
+
}
|
|
31620
|
+
}
|
|
31621
|
+
);
|
|
31622
|
+
app.get("/workspaces/:workspace/github/default-branch", async (req, res) => {
|
|
31623
|
+
const route = "GET /workspaces/:workspace/github/default-branch";
|
|
31624
|
+
const runtime = resolveWorkspaceRuntimeFromParam(
|
|
31625
|
+
deps.workspaceRegistry,
|
|
31626
|
+
req,
|
|
31627
|
+
res
|
|
31628
|
+
);
|
|
31629
|
+
if (!runtime) return;
|
|
31630
|
+
if (!requireTrustedWorkspaceRuntime(runtime, res)) return;
|
|
31631
|
+
applyReadHeaders(res);
|
|
31632
|
+
try {
|
|
31633
|
+
runtime.generationGuard?.assertOpen();
|
|
31634
|
+
const branch = await getDefaultBranch(
|
|
31635
|
+
runtime.workspaceCwd,
|
|
31636
|
+
runtime.env.effectiveEnv
|
|
31637
|
+
);
|
|
31638
|
+
runtime.generationGuard?.assertOpen();
|
|
31639
|
+
res.status(200).json({ branch: branch ?? "origin/main" });
|
|
31640
|
+
} catch (err) {
|
|
31641
|
+
if (sendGenerationClosedError(res, err)) return;
|
|
31642
|
+
deps.sendBridgeError(res, err, { route });
|
|
31643
|
+
}
|
|
31644
|
+
});
|
|
30890
31645
|
}
|
|
30891
31646
|
__name(registerWorkspaceQualifiedGitHubPrsRoutes, "registerWorkspaceQualifiedGitHubPrsRoutes");
|
|
30892
31647
|
|
|
@@ -33542,9 +34297,22 @@ function createServeApp(opts, getPort = () => opts.port, deps = {}) {
|
|
|
33542
34297
|
workspaceRegistry,
|
|
33543
34298
|
sendBridgeError: sendBridgeError2
|
|
33544
34299
|
});
|
|
34300
|
+
registerWorkspaceGitBranchRoutes(app, {
|
|
34301
|
+
boundWorkspace: primaryBoundWorkspace,
|
|
34302
|
+
sendBridgeError: sendBridgeError2,
|
|
34303
|
+
isWorkspaceTrusted: isPrimaryWorkspaceTrusted,
|
|
34304
|
+
captureGenerationAssertion: capturePrimaryGenerationAssertion,
|
|
34305
|
+
mutate
|
|
34306
|
+
});
|
|
34307
|
+
registerWorkspaceQualifiedGitBranchRoutes(app, {
|
|
34308
|
+
workspaceRegistry,
|
|
34309
|
+
sendBridgeError: sendBridgeError2,
|
|
34310
|
+
mutate
|
|
34311
|
+
});
|
|
33545
34312
|
registerWorkspaceQualifiedGitHubPrsRoutes(app, {
|
|
33546
34313
|
workspaceRegistry,
|
|
33547
|
-
sendBridgeError: sendBridgeError2
|
|
34314
|
+
sendBridgeError: sendBridgeError2,
|
|
34315
|
+
mutate
|
|
33548
34316
|
});
|
|
33549
34317
|
mountWorkspaceMemoryRoutes(app, {
|
|
33550
34318
|
bridge: primaryBridge,
|