@qwen-code/qwen-code 0.21.2 → 0.21.3-nightly.20260803.e1e5b42ce
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 +53 -38
- package/bundled/qc-helper/docs/features/channels/github.md +16 -5
- package/bundled/qc-helper/docs/features/channels/gitlab.md +6 -0
- package/bundled/qc-helper/docs/features/code-review.md +92 -24
- package/bundled/qc-helper/docs/features/commands.md +46 -38
- package/bundled/qc-helper/docs/features/hooks.md +115 -18
- package/bundled/qc-helper/docs/features/memory.md +27 -0
- package/bundled/qc-helper/docs/features/skills.md +46 -1
- package/bundled/qc-helper/docs/features/sub-agents.md +42 -9
- package/bundled/qc-helper/docs/features/tool-use-summaries.md +7 -7
- package/bundled/qc-helper/docs/qwen-serve.md +46 -25
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +62 -31
- package/bundled/qc-helper/docs/support/troubleshooting.md +6 -1
- package/bundled/review/DESIGN.md +167 -32
- package/bundled/review/SKILL.md +207 -38
- package/chunks/{MaxSizedBox-TQBQ247P.js → MaxSizedBox-FCEK5P5K.js} +41 -38
- package/chunks/{StandaloneSessionPicker-2HPTKCLX.js → StandaloneSessionPicker-AT77J3PM.js} +63 -59
- package/chunks/{acp-startup-profiler-2C4A5ZTJ.js → acp-startup-profiler-3RICG2YW.js} +2 -2
- package/chunks/{acpAgent-PS6EDGH3.js → acpAgent-PBMKZ5KH.js} +664 -560
- package/chunks/{agent-VDOUB35F.js → agent-55W5BPK3.js} +37 -34
- package/chunks/{agent-headless-EO53EFS2.js → agent-headless-I7VMHI22.js} +37 -34
- package/chunks/{anthropicContentGenerator-OFHSZJBF.js → anthropicContentGenerator-3CAHEZBM.js} +341 -29
- package/chunks/{artifact-tool-RDN2W7ND.js → artifact-tool-TBOYEKTY.js} +2 -2
- package/chunks/{askUserQuestion-OZERWH5R.js → askUserQuestion-23Y5WZFJ.js} +2 -2
- package/chunks/{bridge-W7AZSRZQ.js → bridge-XNAWEDAN.js} +43 -40
- package/chunks/{ca-6W3SK7OQ.js → ca-NYKNH222.js} +50 -5
- package/chunks/{channel-management-service-5S7YCWX5.js → channel-management-service-UHX56NBO.js} +7 -7
- package/chunks/{channel-settings-store-JFVRSNER.js → channel-settings-store-7P6RJSSF.js} +44 -41
- package/chunks/{channel-worker-group-OVWGYMZS.js → channel-worker-group-NDG4WOOZ.js} +8 -8
- package/chunks/{channel-worker-manager-H55GKOQA.js → channel-worker-manager-ZCW6UW34.js} +8 -8
- package/chunks/{channel-worker-supervisor-CABBXYHK.js → channel-worker-supervisor-ATGFTZRN.js} +4 -4
- package/chunks/{chunk-6MPDY6ZG.js → chunk-24ER7UV4.js} +1 -1
- package/chunks/{chunk-QDK4F2N5.js → chunk-2DNKEBXY.js} +1 -1
- package/chunks/{chunk-AUOULH6Q.js → chunk-2GF3IDEK.js} +1610 -2196
- package/chunks/{chunk-JYBU6YUE.js → chunk-2M5N3DHY.js} +1 -1
- package/chunks/{chunk-LHKCY7DY.js → chunk-2UISUFHQ.js} +3 -3
- package/chunks/{chunk-BBIQAX4V.js → chunk-2ZCYE3F2.js} +30 -18
- package/chunks/{chunk-GJ2GBPBD.js → chunk-332FMXSD.js} +5 -5
- package/chunks/{chunk-JXVC2PL3.js → chunk-33FNCQSY.js} +2 -2
- package/chunks/{chunk-P755N4CS.js → chunk-3GALLNII.js} +6 -6
- package/chunks/{chunk-YANIWTRZ.js → chunk-3ICGQSVO.js} +1 -1
- package/chunks/{chunk-NBD76HUW.js → chunk-3LGZEYOF.js} +2 -2
- package/chunks/{chunk-E2BHWIDT.js → chunk-3RXUYQJI.js} +6 -2
- package/chunks/{chunk-E5Z2AVNV.js → chunk-3SH53ANB.js} +0 -11
- package/chunks/{chunk-N4ACHWNH.js → chunk-432XCUHF.js} +1 -1
- package/chunks/{chunk-JLZ3RBQG.js → chunk-44EJDGMS.js} +144 -11
- package/chunks/{chunk-KR32NIAN.js → chunk-4JP34TZ6.js} +10 -10
- package/chunks/{chunk-L2E5GFAG.js → chunk-4LKVQFHM.js} +2 -2
- package/chunks/{chunk-YDLJGZHL.js → chunk-4NFY2S7N.js} +0 -33
- package/chunks/{chunk-NHFEMWAZ.js → chunk-5WY5QEM6.js} +1 -1
- package/chunks/{chunk-56Z7QEAQ.js → chunk-6BUPGI3J.js} +16 -16
- package/chunks/{chunk-H6I4PGRV.js → chunk-6DNHLK7F.js} +4 -4
- package/chunks/{chunk-XQK4XXTN.js → chunk-6O5DVH27.js} +1 -1
- package/chunks/{chunk-2RFKHEXL.js → chunk-6PLDPT2C.js} +1 -1
- package/chunks/{chunk-Q5WZTTWE.js → chunk-7UPJXZLD.js} +6 -8
- package/chunks/{chunk-CBBP4BMC.js → chunk-7UXI6P72.js} +82 -207
- package/chunks/{chunk-6CQWRWUC.js → chunk-7XLPYF6B.js} +3 -3
- package/chunks/{chunk-VEMNQMHA.js → chunk-7ZH55K26.js} +5 -13
- package/chunks/{chunk-JJPKFJBT.js → chunk-A2FOI762.js} +3 -3
- package/chunks/{chunk-LYI2PZDK.js → chunk-A5LNZGJB.js} +2 -2
- package/chunks/{chunk-3APUUXRF.js → chunk-A5YZ3FA2.js} +2 -1
- package/chunks/{chunk-SHN4KHDK.js → chunk-A6SX5TAH.js} +3 -3
- package/chunks/{chunk-QCXGC7QB.js → chunk-A7PONO5G.js} +3 -3
- package/chunks/{chunk-SZ3KHTDR.js → chunk-AKA24BGO.js} +1 -1
- package/chunks/{chunk-RSVPYAGK.js → chunk-B4HXOGF5.js} +5 -5
- package/chunks/{chunk-D6MDRSZ6.js → chunk-BBXSRVSN.js} +22 -11
- package/chunks/{chunk-Q3T5KA2V.js → chunk-BFHXDAR7.js} +1 -1
- package/chunks/{chunk-L55JWS76.js → chunk-BGXZBI5B.js} +1 -1
- package/chunks/{chunk-2KKCCLPT.js → chunk-C4IUDGPI.js} +1 -1
- package/chunks/{chunk-MM7TH7ZM.js → chunk-CFDR3GNL.js} +18 -3
- package/chunks/{chunk-3F2WDAV6.js → chunk-CFVFQWFB.js} +14 -14
- package/chunks/{chunk-E2FN6SM7.js → chunk-CIUUYB23.js} +5 -5
- package/chunks/{chunk-JCJ7LKNA.js → chunk-DIEFUBV6.js} +1644 -1570
- package/chunks/{chunk-KWHKHSIS.js → chunk-DTAPI453.js} +8 -8
- package/chunks/{chunk-WWCMSZII.js → chunk-DV2GAGR7.js} +71 -7
- package/chunks/{chunk-675H6PLP.js → chunk-DYA25Y7U.js} +1 -1
- package/chunks/{chunk-3I6DUGQD.js → chunk-E4WHKETF.js} +32 -4
- package/chunks/{chunk-QTERJVPZ.js → chunk-EKTCKZV5.js} +1 -0
- package/chunks/{chunk-HX6RLYUO.js → chunk-ENOHFX2M.js} +4 -4
- package/chunks/{chunk-VMX5RZQH.js → chunk-EZZJHMFK.js} +18 -9
- package/chunks/{chunk-KXDONCPU.js → chunk-FBDRTW3I.js} +4 -4
- package/chunks/{chunk-FCYYAB4S.js → chunk-FHPKHXHT.js} +3 -3
- package/chunks/{chunk-DQ2O5QOJ.js → chunk-FJZS2MXB.js} +1 -1
- package/chunks/{chunk-EQNUDTL6.js → chunk-FVLPZSKH.js} +3 -3
- package/chunks/{chunk-2LEOZTBT.js → chunk-FYMMZV5F.js} +111 -26
- package/chunks/{chunk-UV6KF7T3.js → chunk-GNZ7MX73.js} +3 -3
- package/chunks/chunk-GOFAQQZA.js +132 -0
- package/chunks/{chunk-YUFIEIWC.js → chunk-GTM6IHBB.js} +2 -2
- package/chunks/{chunk-W3UKBMSI.js → chunk-GU5B6IF3.js} +118 -9
- package/chunks/{chunk-PCK4B6LR.js → chunk-GU5XWZU2.js} +1 -1
- package/chunks/{chunk-DEEABGH2.js → chunk-H2EDCJIM.js} +5954 -1766
- package/chunks/{chunk-FJ5WUMUQ.js → chunk-H36SETQS.js} +1 -1
- package/chunks/{chunk-6FMJLI5M.js → chunk-HFVW54NL.js} +41 -6
- package/chunks/chunk-HGCQ5SE7.js +136 -0
- package/chunks/{chunk-OFZKFPYG.js → chunk-HR4CHEQS.js} +3 -3
- package/chunks/{chunk-CO2U743O.js → chunk-I3GX6LGS.js} +4 -4
- package/chunks/{chunk-5NNHICSA.js → chunk-I7JDGNG6.js} +3 -3
- package/chunks/{chunk-RDJOB6S3.js → chunk-IEBT6DXF.js} +1 -1
- package/chunks/{chunk-EU5TBFJI.js → chunk-IV7QPMC2.js} +2 -2
- package/chunks/{chunk-B4AJNNOL.js → chunk-J26HHFI5.js} +1 -1
- package/chunks/{chunk-CNTR4GR6.js → chunk-JELIWHXD.js} +1 -1
- package/chunks/{chunk-FNDXMN7I.js → chunk-JQFMW7BD.js} +936 -223
- package/chunks/{chunk-IGTHU3T4.js → chunk-KKN2IE7Q.js} +1 -1
- package/chunks/{chunk-TZTAV5RH.js → chunk-KVUBYJDM.js} +2 -2
- package/chunks/{chunk-DUNI4EBW.js → chunk-KZXSAQYV.js} +86 -52
- package/chunks/chunk-LBOVL47Y.js +29 -0
- package/chunks/{chunk-FS674JW4.js → chunk-LBWNSLJK.js} +3 -3
- package/chunks/{chunk-I5BT7ADR.js → chunk-LEZFUYPM.js} +4 -4
- package/chunks/chunk-LLMGP5IC.js +222 -0
- package/chunks/{chunk-44F4LBWZ.js → chunk-LVW7BHTW.js} +56 -18
- package/chunks/{chunk-YGE3IXJP.js → chunk-M744OFVE.js} +1 -1
- package/chunks/chunk-MISUEWB4.js +8749 -0
- package/chunks/{chunk-7SJN2IWT.js → chunk-MJ2SKNTY.js} +5 -5
- package/chunks/{chunk-JE2CEOBO.js → chunk-MNTXIO6T.js} +4 -4
- package/chunks/{chunk-TEGJSJDF.js → chunk-MOHAWIAW.js} +2 -2
- package/chunks/{chunk-54YCNSK5.js → chunk-MVMBE5EH.js} +4521 -10220
- package/chunks/{chunk-PZEXDV3H.js → chunk-NCY2CDDX.js} +71 -43
- package/chunks/{chunk-TTJZAIFP.js → chunk-NJELCSFL.js} +3 -3
- package/chunks/{chunk-A7Y5H4TX.js → chunk-NXDJEZCI.js} +7 -7
- package/chunks/{chunk-PQNHRFJC.js → chunk-NYX53SV4.js} +0 -2
- package/chunks/{chunk-QARJNL2V.js → chunk-O2ZYHG33.js} +5 -4
- package/chunks/{chunk-6PQPKTXP.js → chunk-OPMLL3B3.js} +1 -1
- package/chunks/{chunk-PVNQRENX.js → chunk-OUQGNGIU.js} +1 -1
- package/chunks/{chunk-V7RNNPGC.js → chunk-P5Y23G2L.js} +18 -1
- package/chunks/{chunk-GURGAJTX.js → chunk-PDDYAXL2.js} +4 -1
- package/chunks/chunk-PWCQRLM5.js +1170 -0
- package/chunks/{chunk-GL4JOZXU.js → chunk-Q43MIWDH.js} +4 -4
- package/chunks/{chunk-V4XNUDPE.js → chunk-QFIYH5KR.js} +28 -7
- package/chunks/chunk-QL4TN4HS.js +59 -0
- package/chunks/{chunk-E6CJ2SMM.js → chunk-QMBEW7EW.js} +2 -2
- package/chunks/{chunk-U4VTUMMK.js → chunk-QONSRAEV.js} +1 -1
- package/chunks/{chunk-LOY7RWQG.js → chunk-QYPT3QUD.js} +3 -3
- package/chunks/{chunk-RG64CDT2.js → chunk-RJAVNGJJ.js} +131 -48
- package/chunks/{chunk-Z3S5EMOW.js → chunk-RPYYTL7E.js} +60 -12
- package/chunks/{chunk-V25K5ID7.js → chunk-SWCEYR6T.js} +1 -1
- package/chunks/{chunk-77V3VIKL.js → chunk-SXGNNAMC.js} +9 -9
- package/chunks/{chunk-7KAXXBER.js → chunk-TNQ5BEEB.js} +3 -3
- package/chunks/{chunk-R2XWGR75.js → chunk-TYERNYH4.js} +2 -2
- package/chunks/{chunk-45IOTAUS.js → chunk-U25CMJYY.js} +1 -1
- package/chunks/{chunk-7ULQIS27.js → chunk-UEJESCS7.js} +1 -1
- package/chunks/{chunk-HC45LTEN.js → chunk-UH7Z7Y45.js} +1 -1
- package/chunks/{chunk-P5VC5USY.js → chunk-UIKCPMID.js} +1 -1
- package/chunks/{chunk-CPZAH673.js → chunk-UKZEXS6K.js} +2 -0
- package/chunks/{chunk-HIVKI6O6.js → chunk-UO7AWUZJ.js} +9 -7
- package/chunks/{chunk-XP4L6KS3.js → chunk-URN76TKR.js} +2 -2
- package/chunks/{chunk-XUGZYLDH.js → chunk-UWSXFI6E.js} +1 -1
- package/chunks/{chunk-AOHY3QJ3.js → chunk-VA5NLVPT.js} +3 -3
- package/chunks/{chunk-FANRZEAJ.js → chunk-VWOVHOTT.js} +1 -1
- package/chunks/{chunk-NTDH4IML.js → chunk-W2K4OEW4.js} +7 -7
- package/chunks/{chunk-L32VV3ZJ.js → chunk-WH7W24EN.js} +12 -12
- package/chunks/{chunk-QTHQ6Z5X.js → chunk-WK4TJUEA.js} +1 -1
- package/chunks/{chunk-ZPZ7ZJEE.js → chunk-WUC6ZFXO.js} +1 -1
- package/chunks/{chunk-TIRRPCFS.js → chunk-X6QNZOTC.js} +1 -1
- package/chunks/{chunk-IIUGIWWY.js → chunk-XC2VAFVZ.js} +1 -1
- package/chunks/{chunk-D4HTUMGX.js → chunk-XC656O42.js} +3 -3
- package/chunks/{chunk-ZMOJ7ISP.js → chunk-XXOVLDZQ.js} +1 -1
- package/chunks/{chunk-THVU3RNH.js → chunk-YAVY33G4.js} +1 -1
- package/chunks/{chunk-PJOHNFIY.js → chunk-YIAC2OXH.js} +5 -5
- package/chunks/{chunk-CU47KXB5.js → chunk-YTSN63PD.js} +6 -6
- package/chunks/{chunk-DSFHVTWD.js → chunk-YXEVDA66.js} +2 -2
- package/chunks/{chunk-MB32MS4U.js → chunk-ZLJQIGCH.js} +260 -175
- package/chunks/{chunk-6TAASXWL.js → chunk-ZX6RZZFB.js} +3 -3
- package/chunks/{computer-use-5QWCFNKD.js → computer-use-BG2EHNJE.js} +37 -34
- package/chunks/{config-utils-WADIDWGG.js → config-utils-E3ZQTHGM.js} +4 -4
- package/chunks/{contextCommand-4Z7T7TUM.js → contextCommand-JAPYNKFC.js} +41 -38
- package/chunks/{core-runtime-6N4EFC2Q.js → core-runtime-2VCZN5QF.js} +37 -34
- package/chunks/{create-sub-session-AEREHZBQ.js → create-sub-session-52OUA2VU.js} +52 -43
- package/chunks/{create-sub-session-62YZWVAY.js → create-sub-session-J32WC64U.js} +2 -2
- package/chunks/{cron-create-6E7GIQTG.js → cron-create-HMFSHIAR.js} +4 -4
- package/chunks/{cron-delete-JD26XY3W.js → cron-delete-ZJFHOX57.js} +4 -4
- package/chunks/{cron-list-CUWFB44G.js → cron-list-ZEX2NBMN.js} +4 -4
- package/chunks/{daemon-PCNCI5YU.js → daemon-CCIX4BMG.js} +47 -6
- package/chunks/{daemon-status-provider-DDF7C5M7.js → daemon-status-provider-F2YGDKHR.js} +48 -45
- package/chunks/{daemon-trust-policy-Q4KSOJTR.js → daemon-trust-policy-XCY7JETR.js} +43 -40
- package/chunks/{daemon-trust-policy-monitor-V6FTE3IY.js → daemon-trust-policy-monitor-FBHB5GMQ.js} +43 -40
- package/chunks/{de-SY6O76BF.js → de-VL76CPLV.js} +50 -5
- package/chunks/{deferred-core-runtime-GHJ5GQHK.js → deferred-core-runtime-BBLJ4JUM.js} +37 -34
- package/chunks/display-image-2WOG27DY.js +184 -0
- package/chunks/{dist-ZHXOBXDN.js → dist-3BMEUGTG.js} +1 -1
- package/chunks/{dist-OAOC5OV4.js → dist-7JGAAQSC.js} +2 -2
- package/chunks/{dist-SL2LUMML.js → dist-A7H2KKUC.js} +1 -1
- package/chunks/{dist-ULIG4M5H.js → dist-C5U4LJKW.js} +162 -15
- package/chunks/{dist-2PERFI23.js → dist-DPPHJAVL.js} +3 -3
- package/chunks/{dist-PVEAFLHY.js → dist-HVBMEYWK.js} +1 -1
- package/chunks/{dist-26BIMQT6.js → dist-IKGVITP3.js} +676 -37
- package/chunks/{dist-WGMNT3JQ.js → dist-SFQ34F4M.js} +24 -6
- package/chunks/{earlyInputCapture-TQXLLISD.js → earlyInputCapture-ALVSMKP7.js} +38 -35
- package/chunks/{edit-FJEUV6KZ.js → edit-POB3CIHQ.js} +37 -34
- package/chunks/{en-NBK3JKCE.js → en-IRJ2WN5T.js} +61 -6
- package/chunks/{enter-worktree-7GE3TZ4P.js → enter-worktree-Q2N7UZWC.js} +37 -34
- package/chunks/{enterPlanMode-KR5TMPCJ.js → enterPlanMode-QGAH2GMP.js} +37 -34
- package/chunks/{environment-SWL3CMB3.js → environment-FE5AX2U5.js} +40 -37
- package/chunks/{errors-XQE7BGZV.js → errors-SLMCFLSC.js} +40 -37
- package/chunks/{exit-worktree-CHKTYNCV.js → exit-worktree-7WO2LPLF.js} +37 -34
- package/chunks/{exitPlanMode-QYAG6LWX.js → exitPlanMode-3PINWUTY.js} +37 -34
- package/chunks/{fast-path-Z2K7W6DC.js → fast-path-SVFFEL6U.js} +17 -4
- package/chunks/{fr-4KG5V7UT.js → fr-GK3HQYVB.js} +50 -5
- package/chunks/{gemini-YU4XKEDG.js → gemini-QECJNKNJ.js} +151 -90
- package/chunks/{geminiContentGenerator-ZZX6NBO4.js → geminiContentGenerator-ZFAZKT6R.js} +6 -6
- package/chunks/{glob-VYF5CXSX.js → glob-GXUNQYNR.js} +37 -34
- package/chunks/{goal-tools-HGO6VXPB.js → goal-tools-SPQ5M6D3.js} +3 -3
- package/chunks/{grep-5DP5ZUTW.js → grep-LVU5KBCV.js} +37 -34
- package/chunks/{handleAutoUpdate-UVBJ56DL.js → handleAutoUpdate-MPDHQY72.js} +43 -40
- package/chunks/{i18n-UQNYHEUD.js → i18n-LEYRN6RV.js} +39 -36
- package/chunks/{image-gen-WHPIZNWF.js → image-gen-4T2D4PTP.js} +9 -9
- package/chunks/{initializer-GMIICF4W.js → initializer-PQV2THBS.js} +44 -41
- package/chunks/{installationInfo-4MGG4WVI.js → installationInfo-XC3HXLTX.js} +38 -35
- package/chunks/{ja-F3GSQXMF.js → ja-3FA46IKD.js} +50 -5
- package/chunks/{keychain-token-storage-IKO4G53C.js → keychain-token-storage-7BT4TQ2A.js} +2 -2
- package/chunks/{kittyProtocolDetector-MBRTDRBK.js → kittyProtocolDetector-BFLAKYXH.js} +1 -1
- package/chunks/{list-CPN2W334.js → list-AQBTPZRG.js} +46 -43
- package/chunks/{list-agents-PXJ7ZUFB.js → list-agents-TWEGRJWO.js} +2 -2
- package/chunks/{loadedSettingsAdapter-ZQAV5NDO.js → loadedSettingsAdapter-EZYPDX2J.js} +43 -40
- package/chunks/{loggingContentGenerator-5E7W4IEP.js → loggingContentGenerator-WD6YWU7Q.js} +52 -37
- package/chunks/{loop-wakeup-Y26NQZ5I.js → loop-wakeup-6LLEOQYV.js} +5 -5
- package/chunks/{ls-ONQTTMQR.js → ls-H5WX22VK.js} +4 -4
- package/chunks/{lsp-YGHHRGMD.js → lsp-G6FXYEIS.js} +2 -2
- package/chunks/{managed-npm-update-MKKAXYXA.js → managed-npm-update-BMM57CHD.js} +40 -37
- package/chunks/{mcp-V5NTJF6X.js → mcp-FMI6NCWA.js} +43 -40
- package/chunks/{monitor-CO3ASY6E.js → monitor-PZJOYAA2.js} +37 -34
- package/chunks/nonInteractiveCli-QPX6R4LL.js +152 -0
- package/chunks/{notebook-edit-Z7AEE6FM.js → notebook-edit-GZF2SKTQ.js} +37 -34
- package/chunks/{openaiContentGenerator-CA3MQOP3.js → openaiContentGenerator-ZPLCFAAG.js} +18 -18
- package/chunks/{pidfile-NL7MKDRU.js → pidfile-PCADVJQW.js} +38 -35
- package/chunks/{processUtils-PB5K2DYH.js → processUtils-FKUVQVEU.js} +2 -2
- package/chunks/{pt-EQ33KWEN.js → pt-3AOBKPIJ.js} +50 -5
- package/chunks/{qwenContentGenerator-JYFNDCOS.js → qwenContentGenerator-2Y4R6YLB.js} +42 -40
- package/chunks/{qwenOAuth2-W2ALKQDD.js → qwenOAuth2-UCEHY3I2.js} +8 -8
- package/chunks/{read-file-IEOR5H5W.js → read-file-DYHDFVAS.js} +10 -10
- package/chunks/{read-mcp-resource-U2IJN5HM.js → read-mcp-resource-DRZSI3HE.js} +2 -2
- package/chunks/{record-artifact-MGPJ7EG4.js → record-artifact-IPIRWMFY.js} +3 -3
- package/chunks/{resumeHistoryUtils-BNBTP5AS.js → resumeHistoryUtils-5JS6R3AJ.js} +45 -42
- package/chunks/{ripGrep-UMQODKEB.js → ripGrep-2QOR3ZQT.js} +37 -34
- package/chunks/{ru-7OZAUKGG.js → ru-VJRAMC4W.js} +50 -5
- package/chunks/{run-qwen-serve-RN2R6QQW.js → run-qwen-serve-MTVRAUBR.js} +271 -60
- package/chunks/{runtime-QFJ2MJF5.js → runtime-DQGE2DYR.js} +50 -45
- package/chunks/{scheduler-AMYUFOZI.js → scheduler-BXIZQ4OO.js} +37 -34
- package/chunks/{sdk-exporters-http-4BQANSJ6.js → sdk-exporters-http-IKNWQJNV.js} +2 -2
- package/chunks/{sdk-impl-Z4VXWVFX.js → sdk-impl-7CUUMQDB.js} +2 -2
- package/chunks/{send-message-PMP4ATVM.js → send-message-LHJLVWFD.js} +5 -4
- package/chunks/{serve-EIIYJVX3.js → serve-D4GYHFLL.js} +44 -40
- package/chunks/{server-EP2LLAPD.js → server-S22MLWTJ.js} +618 -387
- package/chunks/{session-GMPZBLOW.js → session-AHNM6YXP.js} +151 -87
- package/chunks/{settings-LN7RNKBS.js → settings-77MDDUSX.js} +42 -39
- package/chunks/{shell-EM2OWU5X.js → shell-DLD2VQTQ.js} +37 -34
- package/chunks/{skill-T5VPSK73.js → skill-3B2PAQE4.js} +27 -14
- package/chunks/{skill-settings-GMR3GMNY.js → skill-settings-STR5NF4B.js} +42 -39
- package/chunks/{spawnChannel-YPCU62DI.js → spawnChannel-TOWYOVDZ.js} +39 -36
- package/chunks/{standalone-update-JAKIM2NF.js → standalone-update-F6ZWABD7.js} +40 -37
- package/chunks/{startInteractiveUI-YETQWGYF.js → startInteractiveUI-QR7MHDX7.js} +1829 -1036
- package/chunks/{syntheticOutput-D7E6ZFKR.js → syntheticOutput-EYL7DWO7.js} +3 -3
- package/chunks/{task-create-NFCYD43L.js → task-create-4ALZMGP5.js} +10 -9
- package/chunks/{task-list-TAVMGEVD.js → task-list-6CVQPORX.js} +6 -6
- package/chunks/{task-stop-ZDF2UJRM.js → task-stop-Y5ZTFVRX.js} +2 -2
- package/chunks/{task-update-6L7LHGEX.js → task-update-IKCEEWJ6.js} +10 -9
- package/chunks/{team-create-LFJ6HGNY.js → team-create-LQVIAVRF.js} +37 -34
- package/chunks/{team-delete-DPGGRQBU.js → team-delete-CE7DC53R.js} +6 -6
- package/chunks/{team-plan-approval-C2KLSDGO.js → team-plan-approval-G5PUNI52.js} +37 -34
- package/chunks/terminal-image-renderer-33GSM55L.js +90 -0
- package/chunks/{theme-manager-JQ3ZGBP5.js → theme-manager-DBFM5QOG.js} +38 -35
- package/chunks/{todoWrite-2UO5G6G6.js → todoWrite-FTZWQRZH.js} +108 -36
- package/chunks/{tool-search-FAZBFRJZ.js → tool-search-RGG7BBC4.js} +13 -12
- package/chunks/{total-session-admission-5CALIVYO.js → total-session-admission-LY3RMXXI.js} +44 -41
- package/chunks/{trustedFolders-KOPSP44S.js → trustedFolders-3M4IQ6K6.js} +39 -36
- package/chunks/{update-relaunch-6QL2TICS.js → update-relaunch-G3CMSX3M.js} +5 -5
- package/chunks/{updateCheck-4Q6RIKFW.js → updateCheck-ZKFGBDTG.js} +42 -39
- package/chunks/{useAutoAcceptIndicator-Q5BMKZV3.js → useAutoAcceptIndicator-7SAFZK5H.js} +47 -44
- package/chunks/{validateNonInterActiveAuth-GKOC5F6Z.js → validateNonInterActiveAuth-F2K6UGE4.js} +88 -84
- package/chunks/{version-VSATY2LD.js → version-KM6MYV2D.js} +1 -1
- package/chunks/{web-fetch-JCLKL6NL.js → web-fetch-SM4LZHRS.js} +13 -13
- package/chunks/{web-search-DSQTFUBX.js → web-search-OGKZNDAC.js} +8 -8
- package/chunks/{workflow-M6QAVKVJ.js → workflow-HU365RFR.js} +419 -304
- package/chunks/{workspace-providers-status-YKLTLMJA.js → workspace-providers-status-QKKXQHL7.js} +46 -43
- package/chunks/{workspace-registration-store-5DMGKU64.js → workspace-registration-store-7J7KOXFD.js} +2 -2
- package/chunks/{workspace-registry-PTYUSYXX.js → workspace-registry-KC66O6DH.js} +44 -41
- package/chunks/{workspace-service-25ML3T47.js → workspace-service-TEV5Q2AA.js} +51 -48
- package/chunks/{workspace-skills-status-YKZWOYRX.js → workspace-skills-status-VRL55OMU.js} +45 -42
- package/chunks/{workspace-trust-reconciler-5FI2S3OS.js → workspace-trust-reconciler-COC5M7CY.js} +50 -47
- package/chunks/{write-file-AY7VLP5X.js → write-file-3SO2BMNO.js} +37 -34
- package/chunks/{zh-H3YDK5QW.js → zh-ARWDLDLR.js} +58 -6
- package/chunks/{zh-TW-JYCP7XUA.js → zh-TW-Y4RGI3P7.js} +58 -6
- package/chunks/{zoom-image-S4LJZMD5.js → zoom-image-O3RWTVKV.js} +10 -10
- package/cli.js +32 -48
- package/locales/ca.js +68 -4
- package/locales/de.js +70 -4
- package/locales/en.js +84 -6
- package/locales/fr.js +72 -4
- package/locales/ja.js +69 -4
- package/locales/pt.js +68 -4
- package/locales/ru.js +71 -4
- package/locales/zh-TW.js +74 -6
- package/locales/zh.js +74 -6
- package/package.json +3 -3
- package/web-shell/assets/{arc-xjArKHU2.js → arc-KuwiZ67W.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BgrQDNYG.js → architectureDiagram-3BPJPVTR-Cppop6HB.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-CXxWC-1_.js → blockDiagram-GPEHLZMM-DQ6HT72s.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-Dx1tLm3v.js → c4Diagram-AAUBKEIU-B8TX_Mh-.js} +1 -1
- package/web-shell/assets/channel-BZd6Ile0.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-CBxjogVR.js → chunk-2J33WTMH-B2WBUTp8.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-izb-rY5W.js → chunk-4BX2VUAB-DXUsWC6O.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-NzLyvSb8.js → chunk-55IACEB6-DtB-6cyk.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DVyKb0dl.js → chunk-727SXJPM-B-PhPyC3.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BtqL7NzB.js → chunk-AQP2D5EJ-DNaTFMSC.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-iNpdKIO0.js → chunk-FMBD7UC4-DZ345tFf.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-DI7cbFmX.js → chunk-ND2GUHAM-BR_EpgzJ.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-3Y_-xFYs.js → chunk-QZHKN3VN-BTU-0gDT.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B7c-TqtK.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B7c-TqtK.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A--raRatZn.js → cose-bilkent-S5V4N54A-BmsKBCNt.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-B8SU70mO.js → dagre-BM42HDAG-Ba8YWdDC.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-ewgoakXo.js → diagram-2AECGRRQ-CCt2SnI6.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-Bm_JLTnS.js → diagram-5GNKFQAL-BVTLXEU7.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-DEIUjUy9.js → diagram-KO2AKTUF-DpDAVCYV.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-C2Wmrpj-.js → diagram-LMA3HP47-8ljXg-TB.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CtYe6bFx.js → diagram-OG6HWLK6-JAXfQSmd.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-DfpHcWLV.js → erDiagram-TEJ5UH35-CUeakG6k.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-CAiUhio5.js → flowDiagram-I6XJVG4X-Cd4Wrdwv.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CYc7ezr4.js → ganttDiagram-6RSMTGT7-C0nMFvH_.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-70lbkcRS.js → gitGraphDiagram-PVQCEYII-uKk88n_L.js} +1 -1
- package/web-shell/assets/index-BXGtjHs5.js +1756 -0
- package/web-shell/assets/{index-Ww86nT9f.js → index-C1UWBJSX.js} +1 -1
- package/web-shell/assets/index-WxSvj2tI.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-C7e8DWPa.js → infoDiagram-5YYISTIA-GfPN17hR.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BYLr2op-.js → ishikawaDiagram-YF4QCWOH-CDbWTcGa.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-hEibAHKX.js → journeyDiagram-JHISSGLW-J8TvvVFz.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-F2rt8Uhp.js → kanban-definition-UN3LZRKU-Ds_ndLrs.js} +1 -1
- package/web-shell/assets/{linear-DPhyNezd.js → linear-DuL9O4i3.js} +1 -1
- package/web-shell/assets/{mermaid.core-ZUtnug0n.js → mermaid.core-DtK4PsQB.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DDWcMoi8.js → mindmap-definition-RKZ34NQL-DD0r7MS3.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-CTRKzw1_.js → pieDiagram-4H26LBE5-CxGPZ8Q-.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CAEwYG_z.js → quadrantDiagram-W4KKPZXB-Ds7Buxed.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CRjnH9D9.js → requirementDiagram-4Y6WPE33-DIx28ph5.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-LPQT_sOd.js → sankeyDiagram-5OEKKPKP-AxdAYcVX.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Ht2Iqvb0.js → sequenceDiagram-3UESZ5HK-CojoXAZ5.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-CIUdqOXu.js → stateDiagram-AJRCARHV-Dy1WN3mi.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BaTNMz02.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-BcilneZF.js → timeline-definition-PNZ67QCA-DeWe_43M.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BljwiiH1.js → vennDiagram-CIIHVFJN-BN8PVlFq.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-DeKjkYjq.js → wardley-L42UT6IY-CbjV_1hf.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-L3U1H7KG.js → wardleyDiagram-YWT4CUSO-D2mw84_p.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-IJnWsgMT.js → xychartDiagram-2RQKCTM6-er9CTQXi.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-4KP2F2TE.js +0 -82
- package/chunks/chunk-HGT6JR3U.js +0 -177
- package/chunks/nonInteractiveCli-ZJYEOO7U.js +0 -148
- package/web-shell/assets/channel-B1cyk94G.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BpBYZoRE.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BpBYZoRE.js +0 -1
- package/web-shell/assets/index-C1k3PDuU.css +0 -5
- package/web-shell/assets/index-DZLIXILO.js +0 -1750
- package/web-shell/assets/insert-DmRbh9Rv.svg +0 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BmqqQZ6w.js +0 -1
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
formatWorkspaceMemoryDreamSummary,
|
|
9
9
|
formatWorkspaceMemoryForgetSummary,
|
|
10
10
|
isValidServerName,
|
|
11
|
+
loadSettingsCached,
|
|
11
12
|
normalizeChannelDelivery,
|
|
12
13
|
parseChannelDelivery,
|
|
13
14
|
redactMcpServersSetting,
|
|
@@ -16,12 +17,12 @@ import {
|
|
|
16
17
|
shouldSuppressRememberErrorDetails,
|
|
17
18
|
workspaceMemoryFailureCode,
|
|
18
19
|
workspaceMemoryFailureDiagnostics
|
|
19
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-44EJDGMS.js";
|
|
20
21
|
import {
|
|
21
22
|
openQwenAsrRealtimeStream,
|
|
22
23
|
openVoiceStream,
|
|
23
24
|
openVoiceStreamWithRetry
|
|
24
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-GTM6IHBB.js";
|
|
25
26
|
import {
|
|
26
27
|
SetupGithubError,
|
|
27
28
|
collectSessionData,
|
|
@@ -33,17 +34,20 @@ import {
|
|
|
33
34
|
toJson,
|
|
34
35
|
toJsonl,
|
|
35
36
|
toMarkdown
|
|
36
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-NCY2CDDX.js";
|
|
37
38
|
import {
|
|
38
39
|
OBSERVED_CONTACT_MAX_FRESH_WITHIN_SECONDS,
|
|
39
40
|
ObservedChannelContactStore
|
|
40
|
-
} from "./chunk-
|
|
41
|
-
import "./chunk-
|
|
42
|
-
import "./chunk-
|
|
41
|
+
} from "./chunk-DYA25Y7U.js";
|
|
42
|
+
import "./chunk-4NFY2S7N.js";
|
|
43
|
+
import "./chunk-GU5XWZU2.js";
|
|
43
44
|
import "./chunk-2MIN6GRR.js";
|
|
44
45
|
import "./chunk-QHTIBUWB.js";
|
|
45
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-EKTCKZV5.js";
|
|
46
47
|
import "./chunk-3Z43GZUQ.js";
|
|
48
|
+
import {
|
|
49
|
+
assertValidChannelSecretUpdates
|
|
50
|
+
} from "./chunk-FVLPZSKH.js";
|
|
47
51
|
import {
|
|
48
52
|
CAPABILITIES_SCHEMA_VERSION,
|
|
49
53
|
CLIENT_ID_HEADER,
|
|
@@ -101,18 +105,19 @@ import {
|
|
|
101
105
|
setRateLimiter,
|
|
102
106
|
unsafeRevealSecret,
|
|
103
107
|
validateMcpRuntimeServerName
|
|
104
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-ZLJQIGCH.js";
|
|
105
109
|
import {
|
|
106
110
|
isLoopbackBind
|
|
107
111
|
} from "./chunk-RXFQM6FQ.js";
|
|
112
|
+
import "./chunk-HGCQ5SE7.js";
|
|
108
113
|
import {
|
|
109
114
|
createWorkspaceSkillsStatusProvider
|
|
110
|
-
} from "./chunk-
|
|
111
|
-
import "./chunk-
|
|
115
|
+
} from "./chunk-2ZCYE3F2.js";
|
|
116
|
+
import "./chunk-BGXZBI5B.js";
|
|
112
117
|
import {
|
|
113
118
|
evaluateDaemonWorkspaceTrust,
|
|
114
119
|
readDaemonTrustPolicySnapshot
|
|
115
|
-
} from "./chunk-
|
|
120
|
+
} from "./chunk-NJELCSFL.js";
|
|
116
121
|
import {
|
|
117
122
|
EMPTY_WORKSPACE_VOICE_UPDATE_ERROR,
|
|
118
123
|
MAX_WORKSPACE_SKILL_NAME_LENGTH,
|
|
@@ -126,14 +131,14 @@ import {
|
|
|
126
131
|
validateWorkspaceSkillName,
|
|
127
132
|
validateWorkspaceVoiceState,
|
|
128
133
|
voiceSettingsScopeToWire
|
|
129
|
-
} from "./chunk-
|
|
134
|
+
} from "./chunk-6BUPGI3J.js";
|
|
130
135
|
import {
|
|
131
136
|
PermissionRulesValidationError,
|
|
132
137
|
buildPermissionSettings,
|
|
133
138
|
isPermissionRuleType,
|
|
134
139
|
normalizePermissionRules,
|
|
135
140
|
readPermissionRuleSet
|
|
136
|
-
} from "./chunk-
|
|
141
|
+
} from "./chunk-3ICGQSVO.js";
|
|
137
142
|
import {
|
|
138
143
|
assertVoiceBaseUrlNetworkAllowed,
|
|
139
144
|
isStreamingVoiceModel,
|
|
@@ -141,13 +146,14 @@ import {
|
|
|
141
146
|
resolveVoiceTranscriptionConfig,
|
|
142
147
|
sanitizeVoiceErrorMessage,
|
|
143
148
|
transcribeVoiceAudio
|
|
144
|
-
} from "./chunk-
|
|
149
|
+
} from "./chunk-TNQ5BEEB.js";
|
|
145
150
|
import {
|
|
146
151
|
isVoiceEnabled,
|
|
147
152
|
isVoiceMode,
|
|
148
153
|
readVoiceModel
|
|
149
|
-
} from "./chunk-
|
|
150
|
-
import "./chunk-
|
|
154
|
+
} from "./chunk-UIKCPMID.js";
|
|
155
|
+
import "./chunk-JELIWHXD.js";
|
|
156
|
+
import "./chunk-Z4X5MTRT.js";
|
|
151
157
|
import {
|
|
152
158
|
WorkspacePermissionRulesSessionRequiredError,
|
|
153
159
|
WorkspaceSettingsPartialPersistError,
|
|
@@ -156,28 +162,31 @@ import {
|
|
|
156
162
|
} from "./chunk-OA4JVLSA.js";
|
|
157
163
|
import {
|
|
158
164
|
createTotalSessionAdmissionController
|
|
159
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-AKA24BGO.js";
|
|
160
166
|
import {
|
|
161
167
|
WorkspaceGenerationClosedError,
|
|
162
168
|
createSingleWorkspaceRegistry,
|
|
163
169
|
createWorkspaceSessionOwnerIndex
|
|
164
|
-
} from "./chunk-
|
|
170
|
+
} from "./chunk-2M5N3DHY.js";
|
|
165
171
|
import "./chunk-GRC5HGPI.js";
|
|
166
172
|
import {
|
|
167
|
-
|
|
168
|
-
|
|
173
|
+
daemonObservedContactsPath,
|
|
174
|
+
loadChannelsConfig
|
|
175
|
+
} from "./chunk-BBXSRVSN.js";
|
|
176
|
+
import "./chunk-NXDJEZCI.js";
|
|
177
|
+
import "./chunk-57OAHC2Y.js";
|
|
169
178
|
import {
|
|
170
179
|
createDaemonStatusProvider
|
|
171
|
-
} from "./chunk-
|
|
180
|
+
} from "./chunk-Q43MIWDH.js";
|
|
172
181
|
import "./chunk-VXZBKKQR.js";
|
|
173
|
-
import "./chunk-
|
|
174
|
-
import "./chunk-
|
|
182
|
+
import "./chunk-7UPJXZLD.js";
|
|
183
|
+
import "./chunk-3SH53ANB.js";
|
|
175
184
|
import {
|
|
176
185
|
SessionArtifactAuthorizationError,
|
|
177
186
|
SessionArtifactValidationError,
|
|
178
187
|
createAcpSessionBridge,
|
|
179
188
|
parseSessionSource
|
|
180
|
-
} from "./chunk-
|
|
189
|
+
} from "./chunk-LVW7BHTW.js";
|
|
181
190
|
import {
|
|
182
191
|
EVENT_SCHEMA_VERSION,
|
|
183
192
|
EventBus,
|
|
@@ -185,37 +194,32 @@ import {
|
|
|
185
194
|
} from "./chunk-GLWP3FDB.js";
|
|
186
195
|
import "./chunk-XCGIMOLN.js";
|
|
187
196
|
import "./chunk-OCPBI7J5.js";
|
|
188
|
-
import "./chunk-
|
|
197
|
+
import "./chunk-UWSXFI6E.js";
|
|
189
198
|
import {
|
|
190
199
|
createWorkspaceProvidersStatusProvider
|
|
191
|
-
} from "./chunk-
|
|
200
|
+
} from "./chunk-W2K4OEW4.js";
|
|
192
201
|
import {
|
|
193
202
|
getAuthTypeFromEnv,
|
|
194
203
|
resolveCliGenerationConfig
|
|
195
|
-
} from "./chunk-
|
|
204
|
+
} from "./chunk-ZX6RZZFB.js";
|
|
196
205
|
import {
|
|
197
206
|
snapshotProcessEnv
|
|
198
|
-
} from "./chunk-
|
|
207
|
+
} from "./chunk-7ZH55K26.js";
|
|
199
208
|
import {
|
|
200
209
|
STATUS_SCHEMA_VERSION,
|
|
201
210
|
createIdleWorkspaceMemoryStatus,
|
|
202
211
|
mapDomainErrorToErrorKind
|
|
203
|
-
} from "./chunk-
|
|
204
|
-
import "./chunk-
|
|
212
|
+
} from "./chunk-PDDYAXL2.js";
|
|
213
|
+
import "./chunk-K6KS3LTN.js";
|
|
205
214
|
import "./chunk-FC4KQFCS.js";
|
|
206
|
-
import
|
|
207
|
-
daemonObservedContactsPath,
|
|
208
|
-
loadChannelsConfig
|
|
209
|
-
} from "./chunk-D6MDRSZ6.js";
|
|
210
|
-
import "./chunk-A7Y5H4TX.js";
|
|
211
|
-
import "./chunk-57OAHC2Y.js";
|
|
215
|
+
import "./chunk-T3CHYWJZ.js";
|
|
212
216
|
import {
|
|
213
217
|
parseChannelWebhookConfigLenient
|
|
214
|
-
} from "./chunk-
|
|
215
|
-
import "./chunk-FANRZEAJ.js";
|
|
218
|
+
} from "./chunk-LEZFUYPM.js";
|
|
216
219
|
import {
|
|
217
220
|
supportedChannelCatalog
|
|
218
|
-
} from "./chunk-
|
|
221
|
+
} from "./chunk-DTAPI453.js";
|
|
222
|
+
import "./chunk-VWOVHOTT.js";
|
|
219
223
|
import "./chunk-V6WHFGST.js";
|
|
220
224
|
import {
|
|
221
225
|
MAX_REGISTERED_WORKSPACES,
|
|
@@ -224,8 +228,8 @@ import {
|
|
|
224
228
|
WorkspaceRegistrationStoreLimitError,
|
|
225
229
|
normalizeWorkspaceDisplayName,
|
|
226
230
|
workspaceRegistrationId
|
|
227
|
-
} from "./chunk-
|
|
228
|
-
import "./chunk-
|
|
231
|
+
} from "./chunk-A5LNZGJB.js";
|
|
232
|
+
import "./chunk-UKZEXS6K.js";
|
|
229
233
|
import {
|
|
230
234
|
BranchWhilePromptActiveError,
|
|
231
235
|
CancelSentinelCollisionError,
|
|
@@ -258,13 +262,13 @@ import {
|
|
|
258
262
|
WorkspaceInitRaceError,
|
|
259
263
|
WorkspaceInitSymlinkError,
|
|
260
264
|
WorkspaceMismatchError
|
|
261
|
-
} from "./chunk-
|
|
265
|
+
} from "./chunk-J26HHFI5.js";
|
|
262
266
|
import {
|
|
263
267
|
MAX_WORKSPACE_PATH_LENGTH,
|
|
264
268
|
canonicalizeWorkspace,
|
|
265
269
|
canonicalizeWorkspaces,
|
|
266
270
|
translateAndCheckAbsoluteWorkspacePath
|
|
267
|
-
} from "./chunk-
|
|
271
|
+
} from "./chunk-6PLDPT2C.js";
|
|
268
272
|
import {
|
|
269
273
|
ChannelDeliveryError,
|
|
270
274
|
MAX_CHANNEL_STARTUP_FAILURES,
|
|
@@ -274,10 +278,10 @@ import {
|
|
|
274
278
|
QWEN_SERVER_TOKEN_ENV,
|
|
275
279
|
isChannelDeliveryError,
|
|
276
280
|
isChannelWebhookEnqueueError
|
|
277
|
-
} from "./chunk-
|
|
281
|
+
} from "./chunk-QONSRAEV.js";
|
|
278
282
|
import {
|
|
279
283
|
normalizeWorkerDiagnostic
|
|
280
|
-
} from "./chunk-
|
|
284
|
+
} from "./chunk-24ER7UV4.js";
|
|
281
285
|
import {
|
|
282
286
|
normalizeServeChannelSelection
|
|
283
287
|
} from "./chunk-ALMR3E6Q.js";
|
|
@@ -286,11 +290,9 @@ import {
|
|
|
286
290
|
redactLogCredentials
|
|
287
291
|
} from "./chunk-M5GB774H.js";
|
|
288
292
|
import "./chunk-5HBA2Z7V.js";
|
|
289
|
-
import "./chunk-K6KS3LTN.js";
|
|
290
|
-
import "./chunk-T3CHYWJZ.js";
|
|
291
293
|
import {
|
|
292
294
|
sanitizeLogText
|
|
293
|
-
} from "./chunk-
|
|
295
|
+
} from "./chunk-DIEFUBV6.js";
|
|
294
296
|
import "./chunk-UDXSXLER.js";
|
|
295
297
|
import {
|
|
296
298
|
getDialogSettingKeys,
|
|
@@ -301,7 +303,7 @@ import {
|
|
|
301
303
|
getWritableScopes,
|
|
302
304
|
loadSettings,
|
|
303
305
|
validateSettingValue
|
|
304
|
-
} from "./chunk-
|
|
306
|
+
} from "./chunk-GU5B6IF3.js";
|
|
305
307
|
import "./chunk-RKUWKYED.js";
|
|
306
308
|
import "./chunk-GOXKNSDZ.js";
|
|
307
309
|
import "./chunk-IDS7MSUP.js";
|
|
@@ -310,22 +312,18 @@ import {
|
|
|
310
312
|
detectSystemLanguage,
|
|
311
313
|
resolveLanguageSetting,
|
|
312
314
|
resolveSupportedLanguage
|
|
313
|
-
} from "./chunk-
|
|
314
|
-
import "./chunk-
|
|
315
|
+
} from "./chunk-CFVFQWFB.js";
|
|
316
|
+
import "./chunk-IV7QPMC2.js";
|
|
315
317
|
import "./chunk-6PEXNQTX.js";
|
|
318
|
+
import "./chunk-C4IUDGPI.js";
|
|
319
|
+
import "./chunk-VJNBRRZG.js";
|
|
316
320
|
import {
|
|
317
321
|
getWorkspaceTrustStatus
|
|
318
|
-
} from "./chunk-
|
|
322
|
+
} from "./chunk-3GALLNII.js";
|
|
319
323
|
import "./chunk-ALGGS7UH.js";
|
|
320
324
|
import {
|
|
321
325
|
isWithinRoot as isWithinRoot2
|
|
322
326
|
} from "./chunk-MR3PXB6E.js";
|
|
323
|
-
import "./chunk-2KKCCLPT.js";
|
|
324
|
-
import "./chunk-VJNBRRZG.js";
|
|
325
|
-
import {
|
|
326
|
-
writeStderrLine,
|
|
327
|
-
writeStderrLineSafe
|
|
328
|
-
} from "./chunk-OWAK7LMW.js";
|
|
329
327
|
import {
|
|
330
328
|
ALL_PROVIDERS,
|
|
331
329
|
BTW_MAX_INPUT_LENGTH,
|
|
@@ -399,20 +397,20 @@ import {
|
|
|
399
397
|
writeWorkspaceContextFile,
|
|
400
398
|
writeWorktreeSession,
|
|
401
399
|
writeWorktreeSessionMarker
|
|
402
|
-
} from "./chunk-
|
|
400
|
+
} from "./chunk-MVMBE5EH.js";
|
|
401
|
+
import "./chunk-GOFAQQZA.js";
|
|
403
402
|
import "./chunk-5M6IDOMF.js";
|
|
404
403
|
import "./chunk-TWPJO254.js";
|
|
405
404
|
import "./chunk-H6XPXXMH.js";
|
|
406
405
|
import {
|
|
407
406
|
MAX_JOBS,
|
|
408
407
|
nextDurableFireMs
|
|
409
|
-
} from "./chunk-
|
|
410
|
-
import "./chunk-
|
|
411
|
-
import "./chunk-
|
|
412
|
-
import "./chunk-
|
|
413
|
-
import "./chunk-KRXPRVGL.js";
|
|
408
|
+
} from "./chunk-VA5NLVPT.js";
|
|
409
|
+
import "./chunk-I7JDGNG6.js";
|
|
410
|
+
import "./chunk-A6SX5TAH.js";
|
|
411
|
+
import "./chunk-33FNCQSY.js";
|
|
414
412
|
import "./chunk-6PVPNMXU.js";
|
|
415
|
-
import "./chunk-
|
|
413
|
+
import "./chunk-XXOVLDZQ.js";
|
|
416
414
|
import {
|
|
417
415
|
nextFireTime,
|
|
418
416
|
parseCron
|
|
@@ -425,26 +423,30 @@ import {
|
|
|
425
423
|
readCronTasks,
|
|
426
424
|
taskHasLegacyCondition,
|
|
427
425
|
updateCronTasks
|
|
428
|
-
} from "./chunk-
|
|
429
|
-
import "./chunk-
|
|
426
|
+
} from "./chunk-MOHAWIAW.js";
|
|
427
|
+
import "./chunk-X6QNZOTC.js";
|
|
430
428
|
import "./chunk-O6GEWCJA.js";
|
|
431
429
|
import "./chunk-T26EAKDL.js";
|
|
430
|
+
import "./chunk-ZPJWUGCS.js";
|
|
432
431
|
import "./chunk-CPBF7KYF.js";
|
|
433
|
-
import "./chunk-
|
|
434
|
-
import "./chunk-
|
|
435
|
-
import "./chunk-
|
|
436
|
-
import "./chunk-
|
|
437
|
-
import "./chunk-
|
|
432
|
+
import "./chunk-MISUEWB4.js";
|
|
433
|
+
import "./chunk-KRXPRVGL.js";
|
|
434
|
+
import "./chunk-A5YZ3FA2.js";
|
|
435
|
+
import "./chunk-YAVY33G4.js";
|
|
436
|
+
import "./chunk-2UISUFHQ.js";
|
|
437
|
+
import "./chunk-HFVW54NL.js";
|
|
438
|
+
import {
|
|
439
|
+
APPROVAL_MODES
|
|
440
|
+
} from "./chunk-LLMGP5IC.js";
|
|
441
|
+
import "./chunk-S6LOFUVP.js";
|
|
438
442
|
import {
|
|
439
|
-
APPROVAL_MODES,
|
|
440
443
|
SubagentError,
|
|
441
444
|
SubagentErrorCode
|
|
442
|
-
} from "./chunk-
|
|
443
|
-
import "./chunk-S6LOFUVP.js";
|
|
445
|
+
} from "./chunk-7UXI6P72.js";
|
|
444
446
|
import "./chunk-K623ENWT.js";
|
|
445
447
|
import "./chunk-AQ37AY7B.js";
|
|
446
|
-
import "./chunk-
|
|
447
|
-
import "./chunk-
|
|
448
|
+
import "./chunk-432XCUHF.js";
|
|
449
|
+
import "./chunk-YXEVDA66.js";
|
|
448
450
|
import {
|
|
449
451
|
QwenOAuth2Client,
|
|
450
452
|
QwenOAuthPollError,
|
|
@@ -453,15 +455,15 @@ import {
|
|
|
453
455
|
isDeviceAuthorizationSuccess,
|
|
454
456
|
isDeviceTokenPending,
|
|
455
457
|
isDeviceTokenSuccess
|
|
456
|
-
} from "./chunk-
|
|
458
|
+
} from "./chunk-XC656O42.js";
|
|
457
459
|
import "./chunk-NAVJD2PQ.js";
|
|
458
|
-
import "./chunk-
|
|
459
|
-
import "./chunk-
|
|
460
|
+
import "./chunk-QYPT3QUD.js";
|
|
461
|
+
import "./chunk-QMBEW7EW.js";
|
|
460
462
|
import "./chunk-DGEIYUC3.js";
|
|
461
463
|
import "./chunk-MPHPFVKK.js";
|
|
462
464
|
import "./chunk-GLNBDYUX.js";
|
|
463
465
|
import "./chunk-DJ2GSRLV.js";
|
|
464
|
-
import "./chunk-
|
|
466
|
+
import "./chunk-7XLPYF6B.js";
|
|
465
467
|
import {
|
|
466
468
|
addDaemonRequestAttribute,
|
|
467
469
|
emitDaemonLog,
|
|
@@ -471,12 +473,12 @@ import {
|
|
|
471
473
|
recordDaemonHttpRequest,
|
|
472
474
|
recordDaemonHttpResponse,
|
|
473
475
|
withDaemonRequestSpan
|
|
474
|
-
} from "./chunk-
|
|
476
|
+
} from "./chunk-RPYYTL7E.js";
|
|
475
477
|
import "./chunk-2J3OJGTL.js";
|
|
476
478
|
import "./chunk-P3QQPMQA.js";
|
|
477
|
-
import "./chunk-
|
|
479
|
+
import "./chunk-6O5DVH27.js";
|
|
478
480
|
import "./chunk-GLCZKT5V.js";
|
|
479
|
-
import "./chunk-
|
|
481
|
+
import "./chunk-2DNKEBXY.js";
|
|
480
482
|
import "./chunk-CR3C7WXL.js";
|
|
481
483
|
import "./chunk-XWRJCPHC.js";
|
|
482
484
|
import {
|
|
@@ -489,18 +491,18 @@ import {
|
|
|
489
491
|
isWithinRoot,
|
|
490
492
|
parseLineTolerant,
|
|
491
493
|
read
|
|
492
|
-
} from "./chunk-
|
|
494
|
+
} from "./chunk-KZXSAQYV.js";
|
|
493
495
|
import "./chunk-VGC4I5JJ.js";
|
|
494
|
-
import "./chunk-
|
|
495
|
-
import "./chunk-
|
|
496
|
-
import "./chunk-
|
|
497
|
-
import "./chunk-
|
|
496
|
+
import "./chunk-E4WHKETF.js";
|
|
497
|
+
import "./chunk-UEJESCS7.js";
|
|
498
|
+
import "./chunk-CFDR3GNL.js";
|
|
499
|
+
import "./chunk-UO7AWUZJ.js";
|
|
498
500
|
import "./chunk-46UV252V.js";
|
|
499
501
|
import "./chunk-ZBVS26BY.js";
|
|
500
|
-
import "./chunk-
|
|
501
|
-
import "./chunk-
|
|
502
|
-
import "./chunk-
|
|
503
|
-
import "./chunk-
|
|
502
|
+
import "./chunk-BFHXDAR7.js";
|
|
503
|
+
import "./chunk-TYERNYH4.js";
|
|
504
|
+
import "./chunk-UH7Z7Y45.js";
|
|
505
|
+
import "./chunk-O2ZYHG33.js";
|
|
504
506
|
import "./chunk-W4RQUHY3.js";
|
|
505
507
|
import "./chunk-G7XXKQYS.js";
|
|
506
508
|
import {
|
|
@@ -508,8 +510,12 @@ import {
|
|
|
508
510
|
Storage,
|
|
509
511
|
createDebugLogger,
|
|
510
512
|
runWithoutDebugLogSession
|
|
511
|
-
} from "./chunk-
|
|
513
|
+
} from "./chunk-3RXUYQJI.js";
|
|
512
514
|
import "./chunk-VOQXFAY5.js";
|
|
515
|
+
import {
|
|
516
|
+
writeStderrLine,
|
|
517
|
+
writeStderrLineSafe
|
|
518
|
+
} from "./chunk-OWAK7LMW.js";
|
|
513
519
|
import "./chunk-75DOP5OR.js";
|
|
514
520
|
import "./chunk-DMTGGOSA.js";
|
|
515
521
|
import "./chunk-YQ3U5MUC.js";
|
|
@@ -4854,11 +4860,16 @@ async function validateManagedMemoryAvailable(deps, res, kind, assertGenerationO
|
|
|
4854
4860
|
}
|
|
4855
4861
|
}
|
|
4856
4862
|
__name(validateManagedMemoryAvailable, "validateManagedMemoryAvailable");
|
|
4857
|
-
function
|
|
4863
|
+
function mountWorkspaceMemoryRememberRoutesAt(app, basePath, mutate, resolveRouteDeps) {
|
|
4858
4864
|
app.post(
|
|
4859
|
-
|
|
4860
|
-
|
|
4865
|
+
`${basePath}/remember`,
|
|
4866
|
+
mutate({ strict: true }),
|
|
4861
4867
|
async (req, res) => {
|
|
4868
|
+
const deps = resolveRouteDeps(req, res, {
|
|
4869
|
+
creating: true,
|
|
4870
|
+
kind: "remember"
|
|
4871
|
+
});
|
|
4872
|
+
if (!deps) return;
|
|
4862
4873
|
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
4863
4874
|
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
4864
4875
|
if (!requireTrustedWorkspace(deps, res)) return;
|
|
@@ -4922,9 +4933,14 @@ function mountWorkspaceMemoryRememberRoutes(app, deps) {
|
|
|
4922
4933
|
}
|
|
4923
4934
|
);
|
|
4924
4935
|
app.get(
|
|
4925
|
-
|
|
4926
|
-
|
|
4936
|
+
`${basePath}/remember/:taskId`,
|
|
4937
|
+
mutate({ strict: true }),
|
|
4927
4938
|
(req, res) => {
|
|
4939
|
+
const deps = resolveRouteDeps(req, res, {
|
|
4940
|
+
creating: false,
|
|
4941
|
+
kind: "remember"
|
|
4942
|
+
});
|
|
4943
|
+
if (!deps) return;
|
|
4928
4944
|
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
4929
4945
|
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
4930
4946
|
if (!requireTrustedWorkspace(deps, res)) return;
|
|
@@ -4945,64 +4961,70 @@ function mountWorkspaceMemoryRememberRoutes(app, deps) {
|
|
|
4945
4961
|
res.status(200).json(task);
|
|
4946
4962
|
}
|
|
4947
4963
|
);
|
|
4948
|
-
app.post(
|
|
4949
|
-
|
|
4950
|
-
|
|
4951
|
-
|
|
4952
|
-
|
|
4953
|
-
|
|
4954
|
-
|
|
4955
|
-
|
|
4956
|
-
|
|
4957
|
-
|
|
4958
|
-
|
|
4959
|
-
|
|
4960
|
-
|
|
4961
|
-
|
|
4962
|
-
|
|
4963
|
-
|
|
4964
|
-
}
|
|
4965
|
-
|
|
4966
|
-
res.status(400).json({
|
|
4967
|
-
error: `\`query\` exceeds the ${MAX_REMEMBER_CONTENT_BYTES}-byte limit`,
|
|
4968
|
-
code: "invalid_query"
|
|
4969
|
-
});
|
|
4970
|
-
return;
|
|
4971
|
-
}
|
|
4972
|
-
const originatorClientId = validateOriginatorClientId(deps, req, res);
|
|
4973
|
-
if (originatorClientId === null) return;
|
|
4974
|
-
if (!await validateManagedMemoryAvailable(
|
|
4975
|
-
deps,
|
|
4976
|
-
res,
|
|
4977
|
-
"forget",
|
|
4978
|
-
assertGenerationOpen
|
|
4979
|
-
))
|
|
4980
|
-
return;
|
|
4981
|
-
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
4982
|
-
try {
|
|
4983
|
-
const task = deps.lane.enqueueForget({
|
|
4984
|
-
query: trimmedQuery,
|
|
4985
|
-
...originatorClientId ? { originatorClientId } : {},
|
|
4986
|
-
...assertGenerationOpen ? { assertGenerationOpen } : {}
|
|
4987
|
-
});
|
|
4988
|
-
res.status(202).json(task);
|
|
4989
|
-
} catch (err) {
|
|
4990
|
-
const code = workspaceMemoryFailureCode(
|
|
4991
|
-
err,
|
|
4992
|
-
"forget_failed",
|
|
4993
|
-
logWorkspaceMemoryExtractionError
|
|
4994
|
-
);
|
|
4995
|
-
res.status(publicErrorStatus(code)).json({
|
|
4996
|
-
error: publicErrorMessage(code, "forget"),
|
|
4997
|
-
code
|
|
4998
|
-
});
|
|
4999
|
-
}
|
|
4964
|
+
app.post(`${basePath}/forget`, mutate({ strict: true }), async (req, res) => {
|
|
4965
|
+
const deps = resolveRouteDeps(req, res, {
|
|
4966
|
+
creating: true,
|
|
4967
|
+
kind: "forget"
|
|
4968
|
+
});
|
|
4969
|
+
if (!deps) return;
|
|
4970
|
+
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
4971
|
+
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
4972
|
+
if (!requireTrustedWorkspace(deps, res)) return;
|
|
4973
|
+
const body = deps.safeBody(req);
|
|
4974
|
+
const query = body["query"];
|
|
4975
|
+
const trimmedQuery = typeof query === "string" ? query.trim() : "";
|
|
4976
|
+
if (!trimmedQuery) {
|
|
4977
|
+
res.status(400).json({
|
|
4978
|
+
error: "`query` must be a non-empty string",
|
|
4979
|
+
code: "invalid_query"
|
|
4980
|
+
});
|
|
4981
|
+
return;
|
|
5000
4982
|
}
|
|
5001
|
-
|
|
4983
|
+
if (Buffer.byteLength(trimmedQuery, "utf8") > MAX_REMEMBER_CONTENT_BYTES) {
|
|
4984
|
+
res.status(400).json({
|
|
4985
|
+
error: `\`query\` exceeds the ${MAX_REMEMBER_CONTENT_BYTES}-byte limit`,
|
|
4986
|
+
code: "invalid_query"
|
|
4987
|
+
});
|
|
4988
|
+
return;
|
|
4989
|
+
}
|
|
4990
|
+
const originatorClientId = validateOriginatorClientId(deps, req, res);
|
|
4991
|
+
if (originatorClientId === null) return;
|
|
4992
|
+
if (!await validateManagedMemoryAvailable(
|
|
4993
|
+
deps,
|
|
4994
|
+
res,
|
|
4995
|
+
"forget",
|
|
4996
|
+
assertGenerationOpen
|
|
4997
|
+
))
|
|
4998
|
+
return;
|
|
4999
|
+
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
5000
|
+
try {
|
|
5001
|
+
const task = deps.lane.enqueueForget({
|
|
5002
|
+
query: trimmedQuery,
|
|
5003
|
+
...originatorClientId ? { originatorClientId } : {},
|
|
5004
|
+
...assertGenerationOpen ? { assertGenerationOpen } : {}
|
|
5005
|
+
});
|
|
5006
|
+
res.status(202).json(task);
|
|
5007
|
+
} catch (err) {
|
|
5008
|
+
const code = workspaceMemoryFailureCode(
|
|
5009
|
+
err,
|
|
5010
|
+
"forget_failed",
|
|
5011
|
+
logWorkspaceMemoryExtractionError
|
|
5012
|
+
);
|
|
5013
|
+
res.status(publicErrorStatus(code)).json({
|
|
5014
|
+
error: publicErrorMessage(code, "forget"),
|
|
5015
|
+
code
|
|
5016
|
+
});
|
|
5017
|
+
}
|
|
5018
|
+
});
|
|
5002
5019
|
app.get(
|
|
5003
|
-
|
|
5004
|
-
|
|
5020
|
+
`${basePath}/forget/:taskId`,
|
|
5021
|
+
mutate({ strict: true }),
|
|
5005
5022
|
(req, res) => {
|
|
5023
|
+
const deps = resolveRouteDeps(req, res, {
|
|
5024
|
+
creating: false,
|
|
5025
|
+
kind: "forget"
|
|
5026
|
+
});
|
|
5027
|
+
if (!deps) return;
|
|
5006
5028
|
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
5007
5029
|
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
5008
5030
|
if (!requireTrustedWorkspace(deps, res)) return;
|
|
@@ -5023,68 +5045,88 @@ function mountWorkspaceMemoryRememberRoutes(app, deps) {
|
|
|
5023
5045
|
res.status(200).json(task);
|
|
5024
5046
|
}
|
|
5025
5047
|
);
|
|
5026
|
-
app.post(
|
|
5027
|
-
|
|
5028
|
-
|
|
5029
|
-
|
|
5030
|
-
|
|
5031
|
-
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
}
|
|
5048
|
-
|
|
5049
|
-
}
|
|
5050
|
-
|
|
5051
|
-
|
|
5052
|
-
|
|
5053
|
-
|
|
5054
|
-
|
|
5055
|
-
|
|
5056
|
-
error: publicErrorMessage(code, "dream"),
|
|
5057
|
-
code
|
|
5058
|
-
});
|
|
5059
|
-
}
|
|
5060
|
-
}
|
|
5061
|
-
);
|
|
5062
|
-
app.get(
|
|
5063
|
-
"/workspace/memory/dream/:taskId",
|
|
5064
|
-
deps.mutate({ strict: true }),
|
|
5065
|
-
(req, res) => {
|
|
5066
|
-
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
5067
|
-
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
5068
|
-
if (!requireTrustedWorkspace(deps, res)) return;
|
|
5069
|
-
const requesterClientId = validateOriginatorClientId(deps, req, res);
|
|
5070
|
-
if (requesterClientId === null) return;
|
|
5071
|
-
const task = deps.lane.get(
|
|
5072
|
-
req.params["taskId"],
|
|
5073
|
-
requesterClientId,
|
|
5074
|
-
"dream"
|
|
5048
|
+
app.post(`${basePath}/dream`, mutate({ strict: true }), async (req, res) => {
|
|
5049
|
+
const deps = resolveRouteDeps(req, res, {
|
|
5050
|
+
creating: true,
|
|
5051
|
+
kind: "dream"
|
|
5052
|
+
});
|
|
5053
|
+
if (!deps) return;
|
|
5054
|
+
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
5055
|
+
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
5056
|
+
if (!requireTrustedWorkspace(deps, res)) return;
|
|
5057
|
+
const originatorClientId = validateOriginatorClientId(deps, req, res);
|
|
5058
|
+
if (originatorClientId === null) return;
|
|
5059
|
+
if (!await validateManagedMemoryAvailable(
|
|
5060
|
+
deps,
|
|
5061
|
+
res,
|
|
5062
|
+
"dream",
|
|
5063
|
+
assertGenerationOpen
|
|
5064
|
+
))
|
|
5065
|
+
return;
|
|
5066
|
+
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
5067
|
+
try {
|
|
5068
|
+
const task = deps.lane.enqueueDream({
|
|
5069
|
+
...originatorClientId ? { originatorClientId } : {},
|
|
5070
|
+
...assertGenerationOpen ? { assertGenerationOpen } : {}
|
|
5071
|
+
});
|
|
5072
|
+
res.status(202).json(task);
|
|
5073
|
+
} catch (err) {
|
|
5074
|
+
const code = workspaceMemoryFailureCode(
|
|
5075
|
+
err,
|
|
5076
|
+
"dream_failed",
|
|
5077
|
+
logWorkspaceMemoryExtractionError
|
|
5075
5078
|
);
|
|
5076
|
-
|
|
5077
|
-
|
|
5078
|
-
|
|
5079
|
-
|
|
5080
|
-
});
|
|
5081
|
-
return;
|
|
5082
|
-
}
|
|
5083
|
-
res.status(200).json(task);
|
|
5079
|
+
res.status(publicErrorStatus(code)).json({
|
|
5080
|
+
error: publicErrorMessage(code, "dream"),
|
|
5081
|
+
code
|
|
5082
|
+
});
|
|
5084
5083
|
}
|
|
5084
|
+
});
|
|
5085
|
+
app.get(`${basePath}/dream/:taskId`, mutate({ strict: true }), (req, res) => {
|
|
5086
|
+
const deps = resolveRouteDeps(req, res, {
|
|
5087
|
+
creating: false,
|
|
5088
|
+
kind: "dream"
|
|
5089
|
+
});
|
|
5090
|
+
if (!deps) return;
|
|
5091
|
+
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
5092
|
+
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
5093
|
+
if (!requireTrustedWorkspace(deps, res)) return;
|
|
5094
|
+
const requesterClientId = validateOriginatorClientId(deps, req, res);
|
|
5095
|
+
if (requesterClientId === null) return;
|
|
5096
|
+
const task = deps.lane.get(
|
|
5097
|
+
req.params["taskId"],
|
|
5098
|
+
requesterClientId,
|
|
5099
|
+
"dream"
|
|
5100
|
+
);
|
|
5101
|
+
if (!task) {
|
|
5102
|
+
res.status(404).json({
|
|
5103
|
+
error: "Workspace memory dream task not found",
|
|
5104
|
+
code: "dream_task_not_found"
|
|
5105
|
+
});
|
|
5106
|
+
return;
|
|
5107
|
+
}
|
|
5108
|
+
res.status(200).json(task);
|
|
5109
|
+
});
|
|
5110
|
+
}
|
|
5111
|
+
__name(mountWorkspaceMemoryRememberRoutesAt, "mountWorkspaceMemoryRememberRoutesAt");
|
|
5112
|
+
function mountWorkspaceMemoryRememberRoutes(app, deps) {
|
|
5113
|
+
mountWorkspaceMemoryRememberRoutesAt(
|
|
5114
|
+
app,
|
|
5115
|
+
"/workspace/memory",
|
|
5116
|
+
deps.mutate,
|
|
5117
|
+
() => deps
|
|
5085
5118
|
);
|
|
5086
5119
|
}
|
|
5087
5120
|
__name(mountWorkspaceMemoryRememberRoutes, "mountWorkspaceMemoryRememberRoutes");
|
|
5121
|
+
function mountWorkspaceQualifiedMemoryRememberRoutes(app, deps) {
|
|
5122
|
+
mountWorkspaceMemoryRememberRoutesAt(
|
|
5123
|
+
app,
|
|
5124
|
+
"/workspaces/:workspace/memory",
|
|
5125
|
+
deps.mutate,
|
|
5126
|
+
deps.resolveRouteDeps
|
|
5127
|
+
);
|
|
5128
|
+
}
|
|
5129
|
+
__name(mountWorkspaceQualifiedMemoryRememberRoutes, "mountWorkspaceQualifiedMemoryRememberRoutes");
|
|
5088
5130
|
|
|
5089
5131
|
// packages/cli/src/serve/workspace-memory.ts
|
|
5090
5132
|
init_esbuild_shims();
|
|
@@ -14850,6 +14892,16 @@ function mountAcpHttp(app, bridge, opts) {
|
|
|
14850
14892
|
memoryTasks: mount?.workspaceRememberLane.pendingCount() ?? 0
|
|
14851
14893
|
};
|
|
14852
14894
|
}, "getWorkspaceActivity"),
|
|
14895
|
+
ensureWorkspaceRememberLane: /* @__PURE__ */ __name((workspaceId) => {
|
|
14896
|
+
if (disposed) return void 0;
|
|
14897
|
+
const existing = mountForWorkspace(workspaceId);
|
|
14898
|
+
if (existing) return existing.workspaceRememberLane;
|
|
14899
|
+
const rt = opts.workspaceRegistry?.getByWorkspaceId(workspaceId);
|
|
14900
|
+
if (!rt) return void 0;
|
|
14901
|
+
const mount = getOrCreateSecondaryMount(rt);
|
|
14902
|
+
return mount?.workspaceRememberLane;
|
|
14903
|
+
}, "ensureWorkspaceRememberLane"),
|
|
14904
|
+
getWorkspaceRememberLane: /* @__PURE__ */ __name((workspaceId) => mountForWorkspace(workspaceId)?.workspaceRememberLane, "getWorkspaceRememberLane"),
|
|
14853
14905
|
commitWorkspaceRemoval: /* @__PURE__ */ __name((workspaceId) => {
|
|
14854
14906
|
const mount = secondaryMounts.get(workspaceId);
|
|
14855
14907
|
mount?.workspaceRememberLane.dispose();
|
|
@@ -20035,6 +20087,12 @@ var legacySessionTelemetryRoutes = [
|
|
|
20035
20087
|
attribution: "handler_resolved",
|
|
20036
20088
|
route: "POST /session/:id/mid-turn-message"
|
|
20037
20089
|
},
|
|
20090
|
+
{
|
|
20091
|
+
method: "DELETE",
|
|
20092
|
+
path: "/session/:id/mid-turn-messages/:messageId",
|
|
20093
|
+
attribution: "handler_resolved",
|
|
20094
|
+
route: "DELETE /session/:id/mid-turn-messages/:messageId"
|
|
20095
|
+
},
|
|
20038
20096
|
{
|
|
20039
20097
|
method: "GET",
|
|
20040
20098
|
path: "/session/:id/pending-prompts",
|
|
@@ -22013,6 +22071,7 @@ __name(createWorkspaceRuntimeSessionService, "createWorkspaceRuntimeSessionServi
|
|
|
22013
22071
|
var GIT_RESERVED_BRANCH = "HEAD";
|
|
22014
22072
|
var MAX_BRANCH_NAME_BYTES = 1e3;
|
|
22015
22073
|
var MAX_BRANCH_COMPONENT_BYTES = 200;
|
|
22074
|
+
var HTTP_SESSION_ID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
22016
22075
|
var WORKSPACE_TRANSCRIPT_RESPONSE_MAX_BYTES = 32 * 1024 * 1024;
|
|
22017
22076
|
var WORKSPACE_TRANSCRIPT_CURSOR_MAX_BYTES = 64 * 1024;
|
|
22018
22077
|
var TRANSCRIPT_CURSOR_TOO_LARGE_REPLAY_ERROR = "Transcript pagination state exceeds the safe limit";
|
|
@@ -22172,6 +22231,15 @@ function shouldPreserveTranscriptResolutionError(err) {
|
|
|
22172
22231
|
return err instanceof SessionArchivedError || err instanceof SessionConflictError || err instanceof SessionNotFoundError;
|
|
22173
22232
|
}
|
|
22174
22233
|
__name(shouldPreserveTranscriptResolutionError, "shouldPreserveTranscriptResolutionError");
|
|
22234
|
+
function isSessionLive(bridge, sessionId) {
|
|
22235
|
+
try {
|
|
22236
|
+
bridge.getSessionSummary(sessionId);
|
|
22237
|
+
return true;
|
|
22238
|
+
} catch (err) {
|
|
22239
|
+
return !(err instanceof SessionNotFoundError);
|
|
22240
|
+
}
|
|
22241
|
+
}
|
|
22242
|
+
__name(isSessionLive, "isSessionLive");
|
|
22175
22243
|
function parseOptionalApprovalMode(body, res) {
|
|
22176
22244
|
const rawApprovalMode = body["approvalMode"];
|
|
22177
22245
|
if (rawApprovalMode === void 0) {
|
|
@@ -22206,6 +22274,7 @@ function registerSessionRoutes(app, deps) {
|
|
|
22206
22274
|
const transcriptCursorCodecs = /* @__PURE__ */ new Map();
|
|
22207
22275
|
const activeBranchSessions = /* @__PURE__ */ new Map();
|
|
22208
22276
|
const inFlightBranchWorkspaces = /* @__PURE__ */ new Set();
|
|
22277
|
+
const inFlightSessionIds = /* @__PURE__ */ new Set();
|
|
22209
22278
|
const clearBranchSessionEntry = /* @__PURE__ */ __name((sessionId) => {
|
|
22210
22279
|
for (const [cwd, sid] of activeBranchSessions) {
|
|
22211
22280
|
if (sid === sessionId) {
|
|
@@ -22833,201 +22902,246 @@ function registerSessionRoutes(app, deps) {
|
|
|
22833
22902
|
}
|
|
22834
22903
|
const clientId = parseClientIdHeader(req, res);
|
|
22835
22904
|
if (clientId === null) return;
|
|
22836
|
-
|
|
22837
|
-
let
|
|
22838
|
-
|
|
22839
|
-
|
|
22840
|
-
if (body["worktree"] !== void 0 && body["worktree"] !== null) {
|
|
22905
|
+
const rawSessionId = body["sessionId"];
|
|
22906
|
+
let requestedSessionId;
|
|
22907
|
+
if (rawSessionId !== void 0 && rawSessionId !== null) {
|
|
22908
|
+
if (typeof rawSessionId !== "string" || !HTTP_SESSION_ID_REGEX.test(rawSessionId)) {
|
|
22841
22909
|
res.status(400).json({
|
|
22842
|
-
error:
|
|
22843
|
-
code: "
|
|
22910
|
+
error: '`sessionId` must be a UUID (e.g. "550e8400-e29b-41d4-a716-446655440000")',
|
|
22911
|
+
code: "invalid_session_id"
|
|
22844
22912
|
});
|
|
22845
22913
|
return;
|
|
22846
22914
|
}
|
|
22847
|
-
|
|
22848
|
-
|
|
22849
|
-
|
|
22850
|
-
|
|
22915
|
+
requestedSessionId = rawSessionId.toLowerCase();
|
|
22916
|
+
const sessionIdToCheck = requestedSessionId;
|
|
22917
|
+
if (isSessionLive(runtime.bridge, sessionIdToCheck)) {
|
|
22918
|
+
res.status(409).json({
|
|
22919
|
+
error: `Session "${requestedSessionId}" already exists`,
|
|
22920
|
+
code: "session_id_conflict"
|
|
22851
22921
|
});
|
|
22852
22922
|
return;
|
|
22853
22923
|
}
|
|
22854
|
-
const
|
|
22855
|
-
|
|
22856
|
-
|
|
22857
|
-
|
|
22858
|
-
|
|
22859
|
-
|
|
22924
|
+
const runtimeOutputDir = loadSettingsCached(workspaceCwd).merged.advanced?.runtimeOutputDir;
|
|
22925
|
+
if (await Storage.runWithRuntimeBaseDir(
|
|
22926
|
+
runtimeOutputDir,
|
|
22927
|
+
workspaceCwd,
|
|
22928
|
+
() => new SessionService(workspaceCwd).sessionExistsInAnyState(
|
|
22929
|
+
sessionIdToCheck
|
|
22930
|
+
)
|
|
22931
|
+
)) {
|
|
22932
|
+
res.status(409).json({
|
|
22933
|
+
error: `Session "${requestedSessionId}" already exists`,
|
|
22934
|
+
code: "session_id_conflict"
|
|
22860
22935
|
});
|
|
22861
22936
|
return;
|
|
22862
22937
|
}
|
|
22863
|
-
if (
|
|
22864
|
-
(
|
|
22865
|
-
|
|
22866
|
-
|
|
22867
|
-
error: `Invalid branch name: ${branchName}`,
|
|
22868
|
-
code: "branch_invalid_name"
|
|
22938
|
+
if (inFlightSessionIds.has(requestedSessionId)) {
|
|
22939
|
+
res.status(409).json({
|
|
22940
|
+
error: `Session "${requestedSessionId}" creation already in progress`,
|
|
22941
|
+
code: "session_id_conflict"
|
|
22869
22942
|
});
|
|
22870
22943
|
return;
|
|
22871
22944
|
}
|
|
22872
|
-
|
|
22873
|
-
|
|
22874
|
-
|
|
22875
|
-
|
|
22945
|
+
inFlightSessionIds.add(requestedSessionId);
|
|
22946
|
+
}
|
|
22947
|
+
let branchMeta;
|
|
22948
|
+
let branchBaseCommit;
|
|
22949
|
+
let worktreeMeta;
|
|
22950
|
+
try {
|
|
22951
|
+
const rawBranch = body["branch"];
|
|
22952
|
+
if (rawBranch !== void 0 && rawBranch !== null) {
|
|
22953
|
+
if (body["worktree"] !== void 0 && body["worktree"] !== null) {
|
|
22954
|
+
res.status(400).json({
|
|
22955
|
+
error: "`branch` and `worktree` are mutually exclusive",
|
|
22956
|
+
code: "branch_and_worktree_conflict"
|
|
22957
|
+
});
|
|
22958
|
+
return;
|
|
22959
|
+
}
|
|
22960
|
+
if (typeof rawBranch !== "object" || Array.isArray(rawBranch)) {
|
|
22961
|
+
res.status(400).json({
|
|
22962
|
+
error: '`branch` must be an object (e.g. `{"name":"feat/my-feature"}`)',
|
|
22963
|
+
code: "invalid_branch"
|
|
22964
|
+
});
|
|
22965
|
+
return;
|
|
22966
|
+
}
|
|
22967
|
+
const branchReq = rawBranch;
|
|
22968
|
+
const branchName = branchReq["name"];
|
|
22969
|
+
if (typeof branchName !== "string" || branchName.length === 0) {
|
|
22970
|
+
res.status(400).json({
|
|
22971
|
+
error: "`branch.name` must be a non-empty string",
|
|
22972
|
+
code: "branch_invalid_name"
|
|
22973
|
+
});
|
|
22974
|
+
return;
|
|
22975
|
+
}
|
|
22976
|
+
if (/[^\p{L}\p{N}._/-]/u.test(branchName) || branchName.includes("..") || branchName.includes("//") || branchName.startsWith(".") || branchName.startsWith("-") || branchName.startsWith("/") || branchName.endsWith("/") || branchName.endsWith(".") || branchName.endsWith(".git") || branchName.includes("@{") || branchName.split("/").some((c) => c.startsWith(".") || c.endsWith(".lock")) || branchName.toUpperCase() === GIT_RESERVED_BRANCH || Buffer.byteLength(branchName, "utf8") > MAX_BRANCH_NAME_BYTES || branchName.split("/").some(
|
|
22977
|
+
(c) => Buffer.byteLength(c, "utf8") > MAX_BRANCH_COMPONENT_BYTES
|
|
22978
|
+
)) {
|
|
22979
|
+
res.status(400).json({
|
|
22980
|
+
error: `Invalid branch name: ${branchName}`,
|
|
22981
|
+
code: "branch_invalid_name"
|
|
22982
|
+
});
|
|
22983
|
+
return;
|
|
22984
|
+
}
|
|
22985
|
+
const existingBranchSession = activeBranchSessions.get(workspaceCwd);
|
|
22986
|
+
if (existingBranchSession) {
|
|
22987
|
+
try {
|
|
22988
|
+
runtime.bridge.getSessionSummary(existingBranchSession);
|
|
22989
|
+
res.status(409).json({
|
|
22990
|
+
error: "A branch session is already active for this workspace",
|
|
22991
|
+
code: "branch_session_conflict",
|
|
22992
|
+
existingSessionId: existingBranchSession
|
|
22993
|
+
});
|
|
22994
|
+
return;
|
|
22995
|
+
} catch {
|
|
22996
|
+
activeBranchSessions.delete(workspaceCwd);
|
|
22997
|
+
}
|
|
22998
|
+
}
|
|
22999
|
+
const sharedCheckoutSession = runtime.bridge.listWorkspaceSessions(workspaceCwd).find((session2) => !session2.worktree && session2.clientCount > 0);
|
|
23000
|
+
if (sharedCheckoutSession) {
|
|
22876
23001
|
res.status(409).json({
|
|
22877
|
-
error: "
|
|
23002
|
+
error: "Another session is already active in this workspace; creating a branch would move its shared checkout",
|
|
22878
23003
|
code: "branch_session_conflict",
|
|
22879
|
-
existingSessionId:
|
|
23004
|
+
existingSessionId: sharedCheckoutSession.sessionId
|
|
22880
23005
|
});
|
|
22881
23006
|
return;
|
|
23007
|
+
}
|
|
23008
|
+
let wtService;
|
|
23009
|
+
try {
|
|
23010
|
+
wtService = new GitWorktreeService(workspaceCwd);
|
|
22882
23011
|
} catch {
|
|
22883
|
-
|
|
23012
|
+
res.status(500).json({
|
|
23013
|
+
error: "Failed to initialize git service",
|
|
23014
|
+
code: "branch_init_failed"
|
|
23015
|
+
});
|
|
23016
|
+
return;
|
|
22884
23017
|
}
|
|
23018
|
+
if (!await wtService.isGitRepository()) {
|
|
23019
|
+
res.status(400).json({
|
|
23020
|
+
error: "Branch creation requires a git repository",
|
|
23021
|
+
code: "branch_not_git_repo"
|
|
23022
|
+
});
|
|
23023
|
+
return;
|
|
23024
|
+
}
|
|
23025
|
+
if (await branchExists(workspaceCwd, branchName)) {
|
|
23026
|
+
res.status(409).json({
|
|
23027
|
+
error: `Branch "${branchName}" already exists`,
|
|
23028
|
+
code: "branch_already_exists"
|
|
23029
|
+
});
|
|
23030
|
+
return;
|
|
23031
|
+
}
|
|
23032
|
+
let dirty;
|
|
23033
|
+
try {
|
|
23034
|
+
dirty = await isDirtyTree(workspaceCwd);
|
|
23035
|
+
} catch {
|
|
23036
|
+
res.status(500).json({
|
|
23037
|
+
error: "Failed to check working tree status",
|
|
23038
|
+
code: "branch_status_failed"
|
|
23039
|
+
});
|
|
23040
|
+
return;
|
|
23041
|
+
}
|
|
23042
|
+
if (dirty) {
|
|
23043
|
+
res.status(409).json({
|
|
23044
|
+
error: "Uncommitted changes detected. Commit or stash first.",
|
|
23045
|
+
code: "branch_dirty_tree"
|
|
23046
|
+
});
|
|
23047
|
+
return;
|
|
23048
|
+
}
|
|
23049
|
+
const baseCommit = await getHeadCommit(workspaceCwd);
|
|
23050
|
+
const baseBranch = await wtService.getCurrentBranch().catch(() => "HEAD");
|
|
23051
|
+
if (inFlightBranchWorkspaces.has(workspaceCwd) || activeBranchSessions.has(workspaceCwd)) {
|
|
23052
|
+
res.status(409).json({
|
|
23053
|
+
error: "A branch session is already being created for this workspace",
|
|
23054
|
+
code: "branch_session_conflict"
|
|
23055
|
+
});
|
|
23056
|
+
return;
|
|
23057
|
+
}
|
|
23058
|
+
inFlightBranchWorkspaces.add(workspaceCwd);
|
|
23059
|
+
try {
|
|
23060
|
+
await createBranch(workspaceCwd, branchName);
|
|
23061
|
+
} catch (checkoutErr) {
|
|
23062
|
+
daemonLog?.warn("branch checkout failed", {
|
|
23063
|
+
error: checkoutErr instanceof Error ? checkoutErr.message : String(checkoutErr)
|
|
23064
|
+
});
|
|
23065
|
+
await rollbackBranchCreation(
|
|
23066
|
+
workspaceCwd,
|
|
23067
|
+
{ name: branchName, baseBranch },
|
|
23068
|
+
baseCommit,
|
|
23069
|
+
daemonLog
|
|
23070
|
+
);
|
|
23071
|
+
res.status(500).json({
|
|
23072
|
+
error: "Failed to create branch",
|
|
23073
|
+
code: "branch_checkout_failed"
|
|
23074
|
+
});
|
|
23075
|
+
return;
|
|
23076
|
+
}
|
|
23077
|
+
branchMeta = { name: branchName, baseBranch };
|
|
23078
|
+
branchBaseCommit = baseCommit;
|
|
23079
|
+
sessionScope = "thread";
|
|
22885
23080
|
}
|
|
22886
|
-
const
|
|
22887
|
-
if (
|
|
22888
|
-
|
|
22889
|
-
|
|
22890
|
-
|
|
22891
|
-
|
|
22892
|
-
|
|
22893
|
-
|
|
22894
|
-
|
|
22895
|
-
|
|
22896
|
-
|
|
22897
|
-
|
|
22898
|
-
|
|
22899
|
-
|
|
22900
|
-
|
|
22901
|
-
|
|
22902
|
-
|
|
22903
|
-
|
|
22904
|
-
|
|
22905
|
-
|
|
22906
|
-
|
|
22907
|
-
|
|
22908
|
-
|
|
22909
|
-
|
|
22910
|
-
|
|
22911
|
-
|
|
22912
|
-
|
|
22913
|
-
|
|
22914
|
-
|
|
22915
|
-
|
|
22916
|
-
|
|
22917
|
-
|
|
22918
|
-
|
|
22919
|
-
|
|
22920
|
-
|
|
22921
|
-
|
|
22922
|
-
|
|
22923
|
-
|
|
22924
|
-
|
|
22925
|
-
|
|
22926
|
-
|
|
22927
|
-
|
|
22928
|
-
|
|
22929
|
-
|
|
22930
|
-
|
|
22931
|
-
|
|
22932
|
-
|
|
22933
|
-
|
|
22934
|
-
|
|
22935
|
-
|
|
22936
|
-
|
|
22937
|
-
|
|
22938
|
-
|
|
22939
|
-
|
|
22940
|
-
|
|
22941
|
-
|
|
22942
|
-
|
|
22943
|
-
|
|
22944
|
-
|
|
22945
|
-
|
|
22946
|
-
try {
|
|
22947
|
-
await createBranch(workspaceCwd, branchName);
|
|
22948
|
-
} catch (checkoutErr) {
|
|
22949
|
-
daemonLog?.warn("branch checkout failed", {
|
|
22950
|
-
error: checkoutErr instanceof Error ? checkoutErr.message : String(checkoutErr)
|
|
22951
|
-
});
|
|
22952
|
-
await rollbackBranchCreation(
|
|
22953
|
-
workspaceCwd,
|
|
22954
|
-
{ name: branchName, baseBranch },
|
|
22955
|
-
baseCommit,
|
|
22956
|
-
daemonLog
|
|
22957
|
-
);
|
|
22958
|
-
res.status(500).json({
|
|
22959
|
-
error: "Failed to create branch",
|
|
22960
|
-
code: "branch_checkout_failed"
|
|
22961
|
-
});
|
|
22962
|
-
return;
|
|
22963
|
-
}
|
|
22964
|
-
branchMeta = { name: branchName, baseBranch };
|
|
22965
|
-
branchBaseCommit = baseCommit;
|
|
22966
|
-
sessionScope = "thread";
|
|
22967
|
-
}
|
|
22968
|
-
let worktreeMeta;
|
|
22969
|
-
const rawWorktree = body["worktree"];
|
|
22970
|
-
if (rawWorktree !== void 0 && rawWorktree !== null) {
|
|
22971
|
-
if (typeof rawWorktree !== "object" || Array.isArray(rawWorktree)) {
|
|
22972
|
-
res.status(400).json({
|
|
22973
|
-
error: '`worktree` must be an object (e.g. `{}` or `{"slug":"my-task"}`)',
|
|
22974
|
-
code: "invalid_worktree"
|
|
22975
|
-
});
|
|
22976
|
-
return;
|
|
22977
|
-
}
|
|
22978
|
-
const wtReq = rawWorktree;
|
|
22979
|
-
let wtService;
|
|
22980
|
-
try {
|
|
22981
|
-
wtService = new GitWorktreeService(workspaceCwd);
|
|
22982
|
-
} catch {
|
|
22983
|
-
res.status(500).json({
|
|
22984
|
-
error: "Failed to initialize worktree service",
|
|
22985
|
-
code: "worktree_init_failed"
|
|
22986
|
-
});
|
|
22987
|
-
return;
|
|
22988
|
-
}
|
|
22989
|
-
if (!await wtService.isGitRepository()) {
|
|
22990
|
-
res.status(400).json({
|
|
22991
|
-
error: "Worktree isolation requires a git repository",
|
|
22992
|
-
code: "worktree_not_git_repo"
|
|
22993
|
-
});
|
|
22994
|
-
return;
|
|
22995
|
-
}
|
|
22996
|
-
const rawSlug = wtReq["slug"];
|
|
22997
|
-
let slug;
|
|
22998
|
-
if (rawSlug === void 0 || rawSlug === null) {
|
|
22999
|
-
slug = GitWorktreeService.generateAutoSlug();
|
|
23000
|
-
} else if (typeof rawSlug !== "string" || rawSlug.length === 0) {
|
|
23001
|
-
res.status(400).json({
|
|
23002
|
-
error: "`worktree.slug` must be a non-empty string when provided",
|
|
23003
|
-
code: "worktree_invalid_slug"
|
|
23004
|
-
});
|
|
23005
|
-
return;
|
|
23006
|
-
} else {
|
|
23007
|
-
slug = rawSlug;
|
|
23008
|
-
}
|
|
23009
|
-
const slugError = GitWorktreeService.validateUserWorktreeSlug(slug);
|
|
23010
|
-
if (slugError) {
|
|
23011
|
-
res.status(400).json({ error: slugError, code: "worktree_invalid_slug" });
|
|
23012
|
-
return;
|
|
23081
|
+
const rawWorktree = body["worktree"];
|
|
23082
|
+
if (rawWorktree !== void 0 && rawWorktree !== null) {
|
|
23083
|
+
if (typeof rawWorktree !== "object" || Array.isArray(rawWorktree)) {
|
|
23084
|
+
res.status(400).json({
|
|
23085
|
+
error: '`worktree` must be an object (e.g. `{}` or `{"slug":"my-task"}`)',
|
|
23086
|
+
code: "invalid_worktree"
|
|
23087
|
+
});
|
|
23088
|
+
return;
|
|
23089
|
+
}
|
|
23090
|
+
const wtReq = rawWorktree;
|
|
23091
|
+
let wtService;
|
|
23092
|
+
try {
|
|
23093
|
+
wtService = new GitWorktreeService(workspaceCwd);
|
|
23094
|
+
} catch {
|
|
23095
|
+
res.status(500).json({
|
|
23096
|
+
error: "Failed to initialize worktree service",
|
|
23097
|
+
code: "worktree_init_failed"
|
|
23098
|
+
});
|
|
23099
|
+
return;
|
|
23100
|
+
}
|
|
23101
|
+
if (!await wtService.isGitRepository()) {
|
|
23102
|
+
res.status(400).json({
|
|
23103
|
+
error: "Worktree isolation requires a git repository",
|
|
23104
|
+
code: "worktree_not_git_repo"
|
|
23105
|
+
});
|
|
23106
|
+
return;
|
|
23107
|
+
}
|
|
23108
|
+
const rawSlug = wtReq["slug"];
|
|
23109
|
+
let slug;
|
|
23110
|
+
if (rawSlug === void 0 || rawSlug === null) {
|
|
23111
|
+
slug = GitWorktreeService.generateAutoSlug();
|
|
23112
|
+
} else if (typeof rawSlug !== "string" || rawSlug.length === 0) {
|
|
23113
|
+
res.status(400).json({
|
|
23114
|
+
error: "`worktree.slug` must be a non-empty string when provided",
|
|
23115
|
+
code: "worktree_invalid_slug"
|
|
23116
|
+
});
|
|
23117
|
+
return;
|
|
23118
|
+
} else {
|
|
23119
|
+
slug = rawSlug;
|
|
23120
|
+
}
|
|
23121
|
+
const slugError = GitWorktreeService.validateUserWorktreeSlug(slug);
|
|
23122
|
+
if (slugError) {
|
|
23123
|
+
res.status(400).json({ error: slugError, code: "worktree_invalid_slug" });
|
|
23124
|
+
return;
|
|
23125
|
+
}
|
|
23126
|
+
const baseBranch = await wtService.getCurrentBranch().catch(() => void 0);
|
|
23127
|
+
const wtResult = await wtService.createUserWorktree(slug, baseBranch);
|
|
23128
|
+
if (!wtResult.success || !wtResult.worktree) {
|
|
23129
|
+
res.status(500).json({
|
|
23130
|
+
error: wtResult.error ?? "Failed to create worktree",
|
|
23131
|
+
code: "worktree_create_failed"
|
|
23132
|
+
});
|
|
23133
|
+
return;
|
|
23134
|
+
}
|
|
23135
|
+
worktreeMeta = {
|
|
23136
|
+
slug,
|
|
23137
|
+
path: wtResult.worktree.path,
|
|
23138
|
+
branch: wtResult.worktree.branch
|
|
23139
|
+
};
|
|
23140
|
+
sessionScope = "thread";
|
|
23013
23141
|
}
|
|
23014
|
-
|
|
23015
|
-
|
|
23016
|
-
if (!wtResult.success || !wtResult.worktree) {
|
|
23017
|
-
res.status(500).json({
|
|
23018
|
-
error: wtResult.error ?? "Failed to create worktree",
|
|
23019
|
-
code: "worktree_create_failed"
|
|
23020
|
-
});
|
|
23021
|
-
return;
|
|
23142
|
+
if (requestedSessionId !== void 0) {
|
|
23143
|
+
sessionScope = "thread";
|
|
23022
23144
|
}
|
|
23023
|
-
worktreeMeta = {
|
|
23024
|
-
slug,
|
|
23025
|
-
path: wtResult.worktree.path,
|
|
23026
|
-
branch: wtResult.worktree.branch
|
|
23027
|
-
};
|
|
23028
|
-
sessionScope = "thread";
|
|
23029
|
-
}
|
|
23030
|
-
try {
|
|
23031
23145
|
const session = await runtime.bridge.spawnOrAttach({
|
|
23032
23146
|
workspaceCwd,
|
|
23033
23147
|
modelServiceId,
|
|
@@ -23037,8 +23151,45 @@ function registerSessionRoutes(app, deps) {
|
|
|
23037
23151
|
...source.sourceType !== void 0 ? { sourceType: source.sourceType } : {},
|
|
23038
23152
|
...source.sourceId !== void 0 ? { sourceId: source.sourceId } : {},
|
|
23039
23153
|
...worktreeMeta ? { worktree: worktreeMeta } : {},
|
|
23040
|
-
...branchMeta ? { branch: branchMeta } : {}
|
|
23154
|
+
...branchMeta ? { branch: branchMeta } : {},
|
|
23155
|
+
...requestedSessionId !== void 0 ? { sessionId: requestedSessionId } : {}
|
|
23041
23156
|
});
|
|
23157
|
+
if (requestedSessionId !== void 0 && session.sessionId !== requestedSessionId) {
|
|
23158
|
+
if (daemonLog) {
|
|
23159
|
+
daemonLog.warn("session id not honored by agent", {
|
|
23160
|
+
requested: requestedSessionId,
|
|
23161
|
+
actual: session.sessionId
|
|
23162
|
+
});
|
|
23163
|
+
}
|
|
23164
|
+
if (!session.attached) {
|
|
23165
|
+
await runWithWorkspaceRuntimeStorage(
|
|
23166
|
+
runtime,
|
|
23167
|
+
() => deleteDaemonSessionIfOrphan({
|
|
23168
|
+
sessionId: session.sessionId,
|
|
23169
|
+
service: createWorkspaceRuntimeSessionService(runtime),
|
|
23170
|
+
bridge: runtime.bridge,
|
|
23171
|
+
coordinator: archiveCoordinator
|
|
23172
|
+
})
|
|
23173
|
+
).catch(() => false);
|
|
23174
|
+
}
|
|
23175
|
+
if (worktreeMeta) {
|
|
23176
|
+
await new GitWorktreeService(workspaceCwd).removeUserWorktree(worktreeMeta.slug, { deleteBranch: true }).catch(() => {
|
|
23177
|
+
});
|
|
23178
|
+
}
|
|
23179
|
+
if (branchMeta) {
|
|
23180
|
+
await rollbackBranchCreation(
|
|
23181
|
+
workspaceCwd,
|
|
23182
|
+
branchMeta,
|
|
23183
|
+
branchBaseCommit,
|
|
23184
|
+
daemonLog
|
|
23185
|
+
);
|
|
23186
|
+
}
|
|
23187
|
+
res.status(500).json({
|
|
23188
|
+
error: "Agent did not honor the requested session id",
|
|
23189
|
+
code: "session_id_not_honored"
|
|
23190
|
+
});
|
|
23191
|
+
return;
|
|
23192
|
+
}
|
|
23042
23193
|
try {
|
|
23043
23194
|
runtime.generationGuard?.assertOpen();
|
|
23044
23195
|
} catch (error2) {
|
|
@@ -23210,6 +23361,10 @@ function registerSessionRoutes(app, deps) {
|
|
|
23210
23361
|
);
|
|
23211
23362
|
}
|
|
23212
23363
|
sendBridgeError2(res, err, { route: "POST /session" });
|
|
23364
|
+
} finally {
|
|
23365
|
+
if (requestedSessionId !== void 0) {
|
|
23366
|
+
inFlightSessionIds.delete(requestedSessionId);
|
|
23367
|
+
}
|
|
23213
23368
|
}
|
|
23214
23369
|
});
|
|
23215
23370
|
const restoreSessionHandler = /* @__PURE__ */ __name((action) => async (req, res) => {
|
|
@@ -25346,6 +25501,28 @@ function registerSessionRoutes(app, deps) {
|
|
|
25346
25501
|
}
|
|
25347
25502
|
)
|
|
25348
25503
|
);
|
|
25504
|
+
app.delete(
|
|
25505
|
+
"/session/:id/mid-turn-messages/:messageId",
|
|
25506
|
+
mutate(),
|
|
25507
|
+
withOwnerMutableSession(
|
|
25508
|
+
"DELETE /session/:id/mid-turn-messages/:messageId",
|
|
25509
|
+
(req, res, sessionId, runtime) => {
|
|
25510
|
+
const clientId = parseClientIdHeader(req, res);
|
|
25511
|
+
if (clientId === null) return;
|
|
25512
|
+
const messageId = req.params["messageId"];
|
|
25513
|
+
if (!messageId) {
|
|
25514
|
+
res.status(400).json({ error: "`messageId` route parameter is required" });
|
|
25515
|
+
return;
|
|
25516
|
+
}
|
|
25517
|
+
const result = runtime.bridge.removeMidTurnMessage(
|
|
25518
|
+
sessionId,
|
|
25519
|
+
messageId,
|
|
25520
|
+
clientId !== void 0 ? { clientId } : void 0
|
|
25521
|
+
);
|
|
25522
|
+
res.status(200).json(result);
|
|
25523
|
+
}
|
|
25524
|
+
)
|
|
25525
|
+
);
|
|
25349
25526
|
app.get("/session/:id/pending-prompts", (req, res) => {
|
|
25350
25527
|
const sessionId = requireSessionId(req, res);
|
|
25351
25528
|
if (sessionId === null) return;
|
|
@@ -27423,7 +27600,7 @@ init_esbuild_shims();
|
|
|
27423
27600
|
|
|
27424
27601
|
// packages/cli/src/serve/server/serve-features.ts
|
|
27425
27602
|
init_esbuild_shims();
|
|
27426
|
-
var DEFAULT_MAX_SESSIONS =
|
|
27603
|
+
var DEFAULT_MAX_SESSIONS = 32;
|
|
27427
27604
|
var DEFAULT_MAX_PENDING_PROMPTS_PER_SESSION = 5;
|
|
27428
27605
|
var SERVE_LANGUAGE_CODES = [
|
|
27429
27606
|
...SUPPORTED_LANGUAGES.map((language) => language.code),
|
|
@@ -27843,6 +28020,8 @@ var TUI_ONLY_SETTINGS = /* @__PURE__ */ new Set([
|
|
|
27843
28020
|
"ui.showLineNumbers",
|
|
27844
28021
|
"ui.renderMode",
|
|
27845
28022
|
"ui.useTerminalBuffer",
|
|
28023
|
+
"ui.mouseTracking",
|
|
28024
|
+
"ui.showScrollbar",
|
|
27846
28025
|
"ui.hideBanner",
|
|
27847
28026
|
"ui.accessibility.enableLoadingPhrases",
|
|
27848
28027
|
"ui.enableWelcomeBack"
|
|
@@ -30596,9 +30775,18 @@ function registerWorkspaceManagementRoutes(app, deps) {
|
|
|
30596
30775
|
}
|
|
30597
30776
|
}
|
|
30598
30777
|
);
|
|
30778
|
+
const protectExistingWorkspaceRegistration = mutate({ strict: true });
|
|
30599
30779
|
app.post(
|
|
30600
30780
|
"/workspaces",
|
|
30601
|
-
mutate(
|
|
30781
|
+
mutate(),
|
|
30782
|
+
(req, res, next) => {
|
|
30783
|
+
const body = safeBody2(req);
|
|
30784
|
+
if (body["kind"] === "scratch") {
|
|
30785
|
+
next();
|
|
30786
|
+
return;
|
|
30787
|
+
}
|
|
30788
|
+
protectExistingWorkspaceRegistration(req, res, next);
|
|
30789
|
+
},
|
|
30602
30790
|
async (req, res) => {
|
|
30603
30791
|
const body = safeBody2(req);
|
|
30604
30792
|
if ("kind" in body) {
|
|
@@ -35387,6 +35575,49 @@ function createServeApp(opts, getPort = () => opts.port, deps = {}) {
|
|
|
35387
35575
|
isWorkspaceTrusted: isPrimaryWorkspaceTrusted,
|
|
35388
35576
|
captureGenerationAssertion: capturePrimaryGenerationAssertion
|
|
35389
35577
|
});
|
|
35578
|
+
mountWorkspaceQualifiedMemoryRememberRoutes(app, {
|
|
35579
|
+
mutate,
|
|
35580
|
+
resolveRouteDeps: /* @__PURE__ */ __name((req, res, { creating, kind }) => {
|
|
35581
|
+
const runtime = resolveWorkspaceRuntimeFromParam(
|
|
35582
|
+
workspaceRegistry,
|
|
35583
|
+
req,
|
|
35584
|
+
res
|
|
35585
|
+
);
|
|
35586
|
+
if (!runtime || !requireTrustedWorkspaceRuntime(runtime, res))
|
|
35587
|
+
return null;
|
|
35588
|
+
const handle = acpHandleRef.current;
|
|
35589
|
+
const lane = runtime.primary ? workspaceRememberLane : creating ? handle?.ensureWorkspaceRememberLane(runtime.workspaceId) : handle?.getWorkspaceRememberLane(runtime.workspaceId);
|
|
35590
|
+
if (!lane) {
|
|
35591
|
+
if (!handle) {
|
|
35592
|
+
res.status(501).json({
|
|
35593
|
+
error: "Workspace-qualified memory is not enabled on this daemon.",
|
|
35594
|
+
code: "workspace_memory_unavailable",
|
|
35595
|
+
workspaceCwd: runtime.workspaceCwd,
|
|
35596
|
+
workspaceId: runtime.workspaceId
|
|
35597
|
+
});
|
|
35598
|
+
} else if (!creating) {
|
|
35599
|
+
res.status(404).json({
|
|
35600
|
+
error: `Workspace memory ${kind} task not found`,
|
|
35601
|
+
code: `${kind}_task_not_found`
|
|
35602
|
+
});
|
|
35603
|
+
} else {
|
|
35604
|
+
sendWorkspaceRuntimeUnavailable(res, runtime);
|
|
35605
|
+
}
|
|
35606
|
+
return null;
|
|
35607
|
+
}
|
|
35608
|
+
return {
|
|
35609
|
+
bridge: runtime.bridge,
|
|
35610
|
+
lane,
|
|
35611
|
+
parseClientId: parseClientIdHeader,
|
|
35612
|
+
safeBody,
|
|
35613
|
+
isWorkspaceTrusted: /* @__PURE__ */ __name(() => runtime.trusted, "isWorkspaceTrusted"),
|
|
35614
|
+
captureGenerationAssertion: /* @__PURE__ */ __name(() => {
|
|
35615
|
+
const guard = runtime.generationGuard;
|
|
35616
|
+
return guard ? () => guard.assertOpen() : void 0;
|
|
35617
|
+
}, "captureGenerationAssertion")
|
|
35618
|
+
};
|
|
35619
|
+
}, "resolveRouteDeps")
|
|
35620
|
+
});
|
|
35390
35621
|
mountWorkspaceAgentsRoutes(app, {
|
|
35391
35622
|
bridge: primaryBridge,
|
|
35392
35623
|
boundWorkspace: primaryBoundWorkspace,
|