@qwen-code/qwen-code 0.21.2 → 0.21.3
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 +41 -38
- package/bundled/qc-helper/docs/features/channels/github.md +7 -0
- package/bundled/qc-helper/docs/features/channels/gitlab.md +6 -0
- package/bundled/qc-helper/docs/features/code-review.md +78 -23
- package/bundled/qc-helper/docs/features/commands.md +2 -0
- 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 +21 -1
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +13 -13
- package/bundled/qc-helper/docs/support/troubleshooting.md +6 -1
- package/bundled/review/DESIGN.md +167 -32
- package/bundled/review/SKILL.md +156 -32
- package/chunks/{MaxSizedBox-TQBQ247P.js → MaxSizedBox-OJR636GP.js} +40 -38
- package/chunks/{StandaloneSessionPicker-2HPTKCLX.js → StandaloneSessionPicker-AMMBF5UY.js} +62 -59
- package/chunks/{acp-startup-profiler-2C4A5ZTJ.js → acp-startup-profiler-3RICG2YW.js} +2 -2
- package/chunks/{acpAgent-PS6EDGH3.js → acpAgent-M57LVIQA.js} +662 -560
- package/chunks/{agent-VDOUB35F.js → agent-PE37ARLM.js} +36 -34
- package/chunks/{agent-headless-EO53EFS2.js → agent-headless-45ASME4R.js} +36 -34
- package/chunks/{anthropicContentGenerator-OFHSZJBF.js → anthropicContentGenerator-WCBYB6JG.js} +337 -27
- 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-K3ZRPO4D.js} +42 -40
- package/chunks/{ca-6W3SK7OQ.js → ca-4OJN75WT.js} +46 -5
- package/chunks/{channel-management-service-5S7YCWX5.js → channel-management-service-IXJ2MZTS.js} +7 -7
- package/chunks/{channel-settings-store-JFVRSNER.js → channel-settings-store-PEAR3IME.js} +43 -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-W3UKBMSI.js → chunk-22YFMJBW.js} +84 -8
- package/chunks/{chunk-6MPDY6ZG.js → chunk-24ER7UV4.js} +1 -1
- package/chunks/{chunk-QDK4F2N5.js → chunk-2DNKEBXY.js} +1 -1
- package/chunks/{chunk-D6MDRSZ6.js → chunk-2LZCLQIS.js} +22 -11
- package/chunks/{chunk-JYBU6YUE.js → chunk-2M5N3DHY.js} +1 -1
- package/chunks/{chunk-KR32NIAN.js → chunk-2MI7ZTRT.js} +10 -10
- package/chunks/{chunk-LHKCY7DY.js → chunk-2UISUFHQ.js} +3 -3
- package/chunks/{chunk-JXVC2PL3.js → chunk-33FNCQSY.js} +2 -2
- package/chunks/{chunk-NBD76HUW.js → chunk-3LGZEYOF.js} +2 -2
- package/chunks/{chunk-CO2U743O.js → chunk-3MWNROHB.js} +4 -4
- package/chunks/{chunk-E2BHWIDT.js → chunk-3RXUYQJI.js} +6 -2
- package/chunks/{chunk-E5Z2AVNV.js → chunk-3SH53ANB.js} +0 -11
- package/chunks/{chunk-LYI2PZDK.js → chunk-3XF4WT3B.js} +2 -2
- package/chunks/{chunk-N4ACHWNH.js → chunk-432XCUHF.js} +1 -1
- package/chunks/{chunk-FNDXMN7I.js → chunk-4AGGSHCH.js} +774 -205
- package/chunks/{chunk-DUNI4EBW.js → chunk-4K3RV3OA.js} +80 -50
- package/chunks/{chunk-L2E5GFAG.js → chunk-4LKVQFHM.js} +2 -2
- package/chunks/{chunk-YDLJGZHL.js → chunk-4NFY2S7N.js} +0 -33
- package/chunks/{chunk-JLZ3RBQG.js → chunk-5JPVOYWA.js} +144 -11
- package/chunks/{chunk-6TAASXWL.js → chunk-5VYFXHY2.js} +3 -3
- package/chunks/{chunk-EU5TBFJI.js → chunk-6NE5NTHJ.js} +2 -2
- package/chunks/{chunk-XQK4XXTN.js → chunk-6O5DVH27.js} +1 -1
- package/chunks/{chunk-2RFKHEXL.js → chunk-6PLDPT2C.js} +1 -1
- package/chunks/{chunk-3APUUXRF.js → chunk-A5YZ3FA2.js} +2 -1
- package/chunks/{chunk-SHN4KHDK.js → chunk-A6SX5TAH.js} +3 -3
- package/chunks/{chunk-SZ3KHTDR.js → chunk-AKA24BGO.js} +1 -1
- package/chunks/{chunk-Q3T5KA2V.js → chunk-BFHXDAR7.js} +1 -1
- package/chunks/{chunk-L55JWS76.js → chunk-BGXZBI5B.js} +1 -1
- package/chunks/{chunk-P5VC5USY.js → chunk-BKGA75MU.js} +1 -1
- package/chunks/{chunk-2KKCCLPT.js → chunk-BKXTHMOZ.js} +1 -1
- package/chunks/{chunk-V4XNUDPE.js → chunk-BSKUTHLO.js} +15 -7
- package/chunks/{chunk-MM7TH7ZM.js → chunk-CFDR3GNL.js} +18 -3
- package/chunks/{chunk-E2FN6SM7.js → chunk-CIUUYB23.js} +5 -5
- package/chunks/{chunk-A7Y5H4TX.js → chunk-D2GPKXCQ.js} +7 -7
- package/chunks/{chunk-JCJ7LKNA.js → chunk-DIEFUBV6.js} +1644 -1570
- package/chunks/{chunk-GL4JOZXU.js → chunk-DSGJLHM3.js} +4 -4
- package/chunks/{chunk-675H6PLP.js → chunk-DYA25Y7U.js} +1 -1
- package/chunks/{chunk-3I6DUGQD.js → chunk-E4WHKETF.js} +32 -4
- package/chunks/{chunk-CU47KXB5.js → chunk-EGYJRIDF.js} +6 -6
- package/chunks/{chunk-6CQWRWUC.js → chunk-EIMKVOSF.js} +3 -3
- package/chunks/{chunk-QTERJVPZ.js → chunk-EKTCKZV5.js} +1 -0
- package/chunks/{chunk-NHFEMWAZ.js → chunk-FF75UUB2.js} +1 -1
- package/chunks/{chunk-L32VV3ZJ.js → chunk-FG63DZQA.js} +12 -12
- package/chunks/{chunk-FCYYAB4S.js → chunk-FHPKHXHT.js} +3 -3
- package/chunks/{chunk-GJ2GBPBD.js → chunk-FXVHVCNA.js} +5 -5
- package/chunks/{chunk-56Z7QEAQ.js → chunk-GMSBXEH4.js} +16 -16
- package/chunks/chunk-GOFAQQZA.js +132 -0
- package/chunks/{chunk-YUFIEIWC.js → chunk-GTM6IHBB.js} +2 -2
- package/chunks/{chunk-HIVKI6O6.js → chunk-H35Q5CEG.js} +9 -7
- package/chunks/{chunk-FJ5WUMUQ.js → chunk-H36SETQS.js} +1 -1
- package/chunks/{chunk-AUOULH6Q.js → chunk-H6FIBBXK.js} +1610 -2196
- package/chunks/{chunk-VEMNQMHA.js → chunk-H6ZYP74A.js} +5 -13
- package/chunks/{chunk-TTJZAIFP.js → chunk-HEBW74ZW.js} +3 -3
- package/chunks/{chunk-6FMJLI5M.js → chunk-HFVW54NL.js} +41 -6
- package/chunks/{chunk-44F4LBWZ.js → chunk-HIXVWF7I.js} +56 -18
- package/chunks/{chunk-EQNUDTL6.js → chunk-HUIQ4FYC.js} +2 -2
- package/chunks/{chunk-5NNHICSA.js → chunk-I7JDGNG6.js} +3 -3
- package/chunks/{chunk-PVNQRENX.js → chunk-IF6K42YJ.js} +1 -1
- package/chunks/{chunk-PJOHNFIY.js → chunk-IWGTGH4G.js} +5 -5
- package/chunks/{chunk-B4AJNNOL.js → chunk-J26HHFI5.js} +1 -1
- package/chunks/{chunk-CNTR4GR6.js → chunk-JELIWHXD.js} +1 -1
- package/chunks/{chunk-V25K5ID7.js → chunk-K2J5JZ6B.js} +1 -1
- package/chunks/{chunk-IGTHU3T4.js → chunk-KKN2IE7Q.js} +1 -1
- package/chunks/{chunk-TZTAV5RH.js → chunk-KVUBYJDM.js} +2 -2
- package/chunks/{chunk-3F2WDAV6.js → chunk-KXWERR6P.js} +14 -14
- package/chunks/{chunk-JJPKFJBT.js → chunk-L7FTDKCD.js} +3 -3
- package/chunks/chunk-LBOVL47Y.js +29 -0
- package/chunks/{chunk-FS674JW4.js → chunk-LBWNSLJK.js} +3 -3
- package/chunks/{chunk-I5BT7ADR.js → chunk-LGT3YMLN.js} +4 -4
- package/chunks/{chunk-UV6KF7T3.js → chunk-LZV2BZPL.js} +3 -3
- package/chunks/{chunk-P755N4CS.js → chunk-M5LIY7Y6.js} +6 -6
- package/chunks/{chunk-YGE3IXJP.js → chunk-M744OFVE.js} +1 -1
- package/chunks/{chunk-NTDH4IML.js → chunk-MCXMWLFT.js} +7 -7
- package/chunks/chunk-MISUEWB4.js +8749 -0
- package/chunks/{chunk-TEGJSJDF.js → chunk-MOHAWIAW.js} +2 -2
- package/chunks/{chunk-KXDONCPU.js → chunk-MTR4JWQJ.js} +4 -4
- package/chunks/{chunk-RSVPYAGK.js → chunk-MUEJ4R3E.js} +5 -5
- package/chunks/{chunk-PCK4B6LR.js → chunk-N42C2FU3.js} +1 -1
- package/chunks/{chunk-WWCMSZII.js → chunk-NW57GHNL.js} +71 -7
- package/chunks/{chunk-PQNHRFJC.js → chunk-NYX53SV4.js} +0 -2
- package/chunks/{chunk-QARJNL2V.js → chunk-O2ZYHG33.js} +5 -4
- 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-VMX5RZQH.js → chunk-Q3G5L5KF.js} +18 -9
- package/chunks/{chunk-DQ2O5QOJ.js → chunk-QDWLUXKP.js} +1 -1
- 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-DEEABGH2.js → chunk-QPSYIV2O.js} +3320 -536
- package/chunks/{chunk-Q5WZTTWE.js → chunk-QWDVZH24.js} +6 -8
- package/chunks/{chunk-2LEOZTBT.js → chunk-QWW6I2UO.js} +111 -26
- package/chunks/{chunk-LOY7RWQG.js → chunk-QYPT3QUD.js} +3 -3
- package/chunks/{chunk-6PQPKTXP.js → chunk-R7XNRHYD.js} +1 -1
- package/chunks/{chunk-7SJN2IWT.js → chunk-RCXCGZG6.js} +5 -5
- package/chunks/{chunk-HX6RLYUO.js → chunk-RL6J3BPE.js} +4 -4
- package/chunks/{chunk-Z3S5EMOW.js → chunk-RPYYTL7E.js} +60 -12
- package/chunks/{chunk-MB32MS4U.js → chunk-RR224BUP.js} +215 -174
- package/chunks/{chunk-H6I4PGRV.js → chunk-SKSF3LGQ.js} +4 -4
- package/chunks/{chunk-77V3VIKL.js → chunk-SQ3YD5MI.js} +9 -9
- package/chunks/{chunk-CBBP4BMC.js → chunk-SRY26X4H.js} +72 -206
- package/chunks/{chunk-RDJOB6S3.js → chunk-TXABHVZD.js} +1 -1
- package/chunks/{chunk-R2XWGR75.js → chunk-TYERNYH4.js} +2 -2
- package/chunks/chunk-TZTBZ25J.js +222 -0
- 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-CPZAH673.js → chunk-UKZEXS6K.js} +2 -0
- package/chunks/{chunk-54YCNSK5.js → chunk-UQDFEU47.js} +4113 -10152
- 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-PZEXDV3H.js → chunk-VUNRNRN6.js} +71 -43
- package/chunks/{chunk-FANRZEAJ.js → chunk-VWOVHOTT.js} +1 -1
- package/chunks/{chunk-QTHQ6Z5X.js → chunk-WK4TJUEA.js} +1 -1
- package/chunks/{chunk-ZPZ7ZJEE.js → chunk-WUC6ZFXO.js} +1 -1
- package/chunks/{chunk-7KAXXBER.js → chunk-WY2ENRDN.js} +3 -3
- package/chunks/{chunk-TIRRPCFS.js → chunk-X6QNZOTC.js} +1 -1
- package/chunks/{chunk-KWHKHSIS.js → chunk-X6WUYMOV.js} +8 -8
- package/chunks/{chunk-IIUGIWWY.js → chunk-XC2VAFVZ.js} +1 -1
- package/chunks/{chunk-D4HTUMGX.js → chunk-XC656O42.js} +3 -3
- package/chunks/{chunk-RG64CDT2.js → chunk-XMJO6C44.js} +131 -48
- package/chunks/{chunk-ZMOJ7ISP.js → chunk-XUMAD5IT.js} +1 -1
- package/chunks/{chunk-THVU3RNH.js → chunk-YAVY33G4.js} +1 -1
- package/chunks/{chunk-YANIWTRZ.js → chunk-YPUHMQXV.js} +1 -1
- package/chunks/{chunk-QCXGC7QB.js → chunk-YU6TBRTA.js} +3 -3
- package/chunks/{chunk-OFZKFPYG.js → chunk-YWMDTMAU.js} +3 -3
- package/chunks/{chunk-DSFHVTWD.js → chunk-YXEVDA66.js} +2 -2
- package/chunks/{chunk-JE2CEOBO.js → chunk-ZGSUFIL5.js} +4 -4
- package/chunks/{chunk-BBIQAX4V.js → chunk-ZJES4C3I.js} +30 -18
- package/chunks/{computer-use-5QWCFNKD.js → computer-use-UJMK6JQU.js} +36 -34
- package/chunks/{config-utils-WADIDWGG.js → config-utils-7COTJMWK.js} +4 -4
- package/chunks/{contextCommand-4Z7T7TUM.js → contextCommand-4YABGF4S.js} +40 -38
- package/chunks/{core-runtime-6N4EFC2Q.js → core-runtime-7M4VM3DA.js} +36 -34
- package/chunks/{create-sub-session-AEREHZBQ.js → create-sub-session-HOFDW4N7.js} +39 -37
- 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-W2U5Q3J5.js} +47 -45
- package/chunks/{daemon-trust-policy-Q4KSOJTR.js → daemon-trust-policy-IFICWPXP.js} +42 -40
- package/chunks/{daemon-trust-policy-monitor-V6FTE3IY.js → daemon-trust-policy-monitor-GX7EO6FW.js} +42 -40
- package/chunks/{de-SY6O76BF.js → de-A6TI4LBB.js} +46 -5
- package/chunks/{deferred-core-runtime-GHJ5GQHK.js → deferred-core-runtime-U36OOOKE.js} +36 -34
- package/chunks/display-image-VS3TXYQH.js +184 -0
- package/chunks/{dist-ZHXOBXDN.js → dist-3BMEUGTG.js} +1 -1
- package/chunks/{dist-26BIMQT6.js → dist-4KAX7CCL.js} +289 -27
- package/chunks/{dist-OAOC5OV4.js → dist-7JGAAQSC.js} +2 -2
- package/chunks/{dist-SL2LUMML.js → dist-A7H2KKUC.js} +1 -1
- package/chunks/{dist-2PERFI23.js → dist-DPPHJAVL.js} +3 -3
- package/chunks/{dist-PVEAFLHY.js → dist-HVBMEYWK.js} +1 -1
- package/chunks/{dist-ULIG4M5H.js → dist-NEBRI7WO.js} +67 -15
- package/chunks/{dist-WGMNT3JQ.js → dist-SFQ34F4M.js} +24 -6
- package/chunks/{earlyInputCapture-TQXLLISD.js → earlyInputCapture-5ZWDH3SB.js} +37 -35
- package/chunks/{edit-FJEUV6KZ.js → edit-J7SW6UP6.js} +36 -34
- package/chunks/{en-NBK3JKCE.js → en-L4UQDLWW.js} +57 -6
- package/chunks/{enter-worktree-7GE3TZ4P.js → enter-worktree-NRLOHRB6.js} +36 -34
- package/chunks/{enterPlanMode-KR5TMPCJ.js → enterPlanMode-GDSTEFSM.js} +36 -34
- package/chunks/{environment-SWL3CMB3.js → environment-KHYEKG5W.js} +39 -37
- package/chunks/{errors-XQE7BGZV.js → errors-VNLAJV3O.js} +39 -37
- package/chunks/{exit-worktree-CHKTYNCV.js → exit-worktree-ARVID7DF.js} +36 -34
- package/chunks/{exitPlanMode-QYAG6LWX.js → exitPlanMode-4ZFY7KUH.js} +36 -34
- package/chunks/{fast-path-Z2K7W6DC.js → fast-path-KA65VREJ.js} +9 -5
- package/chunks/{fr-4KG5V7UT.js → fr-QF7RI5ZE.js} +46 -5
- package/chunks/{gemini-YU4XKEDG.js → gemini-5PMCNPF7.js} +149 -90
- package/chunks/{geminiContentGenerator-ZZX6NBO4.js → geminiContentGenerator-NFSYJ4HA.js} +6 -6
- package/chunks/{glob-VYF5CXSX.js → glob-F3EAUDAX.js} +36 -34
- package/chunks/{goal-tools-HGO6VXPB.js → goal-tools-SPQ5M6D3.js} +3 -3
- package/chunks/{grep-5DP5ZUTW.js → grep-UJMPVZER.js} +36 -34
- package/chunks/{handleAutoUpdate-UVBJ56DL.js → handleAutoUpdate-MG4FRZPN.js} +42 -40
- package/chunks/{i18n-UQNYHEUD.js → i18n-EVHV4ZF3.js} +38 -36
- package/chunks/{image-gen-WHPIZNWF.js → image-gen-UC7XVHI7.js} +9 -9
- package/chunks/{initializer-GMIICF4W.js → initializer-O5B6HUBI.js} +43 -41
- package/chunks/{installationInfo-4MGG4WVI.js → installationInfo-2LIKCNVX.js} +37 -35
- package/chunks/{ja-F3GSQXMF.js → ja-URQESVGW.js} +46 -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-BPKIE3Z4.js} +45 -43
- package/chunks/{list-agents-PXJ7ZUFB.js → list-agents-TWEGRJWO.js} +2 -2
- package/chunks/{loadedSettingsAdapter-ZQAV5NDO.js → loadedSettingsAdapter-NGLFF4V4.js} +42 -40
- package/chunks/{loggingContentGenerator-5E7W4IEP.js → loggingContentGenerator-7TFESRG5.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-CLZGGV7F.js} +39 -37
- package/chunks/{mcp-V5NTJF6X.js → mcp-X5OZOOXX.js} +42 -40
- package/chunks/{monitor-CO3ASY6E.js → monitor-TGSVSAZZ.js} +36 -34
- package/chunks/nonInteractiveCli-GUMJ5JLG.js +150 -0
- package/chunks/{notebook-edit-Z7AEE6FM.js → notebook-edit-EZISE7IC.js} +36 -34
- package/chunks/{openaiContentGenerator-CA3MQOP3.js → openaiContentGenerator-ZAKS5A6P.js} +18 -18
- package/chunks/{pidfile-NL7MKDRU.js → pidfile-PCMBX4LR.js} +37 -35
- package/chunks/{processUtils-PB5K2DYH.js → processUtils-2CSVE5BW.js} +2 -2
- package/chunks/{pt-EQ33KWEN.js → pt-EEEQXRUI.js} +46 -5
- package/chunks/{qwenContentGenerator-JYFNDCOS.js → qwenContentGenerator-S3H6PIC4.js} +42 -40
- package/chunks/{qwenOAuth2-W2ALKQDD.js → qwenOAuth2-MNU425VE.js} +8 -8
- package/chunks/{read-file-IEOR5H5W.js → read-file-HXJXHBI6.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-4QAMC2S6.js} +44 -42
- package/chunks/{ripGrep-UMQODKEB.js → ripGrep-MCETPF2E.js} +36 -34
- package/chunks/{ru-7OZAUKGG.js → ru-WGZDYQAB.js} +46 -5
- package/chunks/{run-qwen-serve-RN2R6QQW.js → run-qwen-serve-3NMODTXV.js} +219 -55
- package/chunks/{runtime-QFJ2MJF5.js → runtime-AQOV7DVP.js} +49 -45
- package/chunks/{scheduler-AMYUFOZI.js → scheduler-DN7SZ6ZE.js} +36 -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-HGCVVDTZ.js} +5 -4
- package/chunks/{serve-EIIYJVX3.js → serve-WZB45HVT.js} +42 -40
- package/chunks/{server-EP2LLAPD.js → server-GOTZFEEZ.js} +616 -387
- package/chunks/{session-GMPZBLOW.js → session-23LOFLWN.js} +149 -87
- package/chunks/{settings-LN7RNKBS.js → settings-LI2ORVXC.js} +41 -39
- package/chunks/{shell-EM2OWU5X.js → shell-GLC6OP3C.js} +36 -34
- package/chunks/{skill-T5VPSK73.js → skill-C7W6M4GO.js} +27 -14
- package/chunks/{skill-settings-GMR3GMNY.js → skill-settings-W25NCK5I.js} +41 -39
- package/chunks/{spawnChannel-YPCU62DI.js → spawnChannel-OHJLEBLD.js} +38 -36
- package/chunks/{standalone-update-JAKIM2NF.js → standalone-update-E4V5V7WT.js} +39 -37
- package/chunks/{startInteractiveUI-YETQWGYF.js → startInteractiveUI-FKILLW7Q.js} +1815 -1034
- package/chunks/{syntheticOutput-D7E6ZFKR.js → syntheticOutput-EYL7DWO7.js} +3 -3
- package/chunks/{task-create-NFCYD43L.js → task-create-CSCEG4SM.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-C52LNFU5.js} +10 -9
- package/chunks/{team-create-LFJ6HGNY.js → team-create-HBIJ7NHT.js} +36 -34
- package/chunks/{team-delete-DPGGRQBU.js → team-delete-CE7DC53R.js} +6 -6
- package/chunks/{team-plan-approval-C2KLSDGO.js → team-plan-approval-IBJOKS4J.js} +36 -34
- package/chunks/terminal-image-renderer-BOQJPVLB.js +89 -0
- package/chunks/{theme-manager-JQ3ZGBP5.js → theme-manager-NSS7VLUD.js} +37 -35
- package/chunks/{todoWrite-2UO5G6G6.js → todoWrite-YKAA57W2.js} +107 -36
- package/chunks/{tool-search-FAZBFRJZ.js → tool-search-DEAS54VG.js} +13 -12
- package/chunks/{total-session-admission-5CALIVYO.js → total-session-admission-4LWTX3WD.js} +43 -41
- package/chunks/{trustedFolders-KOPSP44S.js → trustedFolders-NF3J2TA7.js} +38 -36
- package/chunks/{update-relaunch-6QL2TICS.js → update-relaunch-WUHRH5V3.js} +5 -5
- package/chunks/{updateCheck-4Q6RIKFW.js → updateCheck-7EG4BLBH.js} +41 -39
- package/chunks/{useAutoAcceptIndicator-Q5BMKZV3.js → useAutoAcceptIndicator-ZRV56GVP.js} +46 -44
- package/chunks/{validateNonInterActiveAuth-GKOC5F6Z.js → validateNonInterActiveAuth-WC2FPE3I.js} +86 -84
- package/chunks/{version-VSATY2LD.js → version-6SS7KCUP.js} +1 -1
- package/chunks/{web-fetch-JCLKL6NL.js → web-fetch-Y5QQMPKA.js} +13 -13
- package/chunks/{web-search-DSQTFUBX.js → web-search-QKKEU723.js} +8 -8
- package/chunks/{workflow-M6QAVKVJ.js → workflow-PWIU6Q2M.js} +418 -304
- package/chunks/{workspace-providers-status-YKLTLMJA.js → workspace-providers-status-B2DM6FNK.js} +45 -43
- package/chunks/{workspace-registration-store-5DMGKU64.js → workspace-registration-store-7Y33TTHJ.js} +2 -2
- package/chunks/{workspace-registry-PTYUSYXX.js → workspace-registry-TSNJKLPC.js} +43 -41
- package/chunks/{workspace-service-25ML3T47.js → workspace-service-4I2QHDX4.js} +50 -48
- package/chunks/{workspace-skills-status-YKZWOYRX.js → workspace-skills-status-HVXNWVGR.js} +44 -42
- package/chunks/{workspace-trust-reconciler-5FI2S3OS.js → workspace-trust-reconciler-RDBBGMWP.js} +49 -47
- package/chunks/{write-file-AY7VLP5X.js → write-file-RQ4DG5RY.js} +36 -34
- package/chunks/{zh-H3YDK5QW.js → zh-72XPUG5P.js} +54 -6
- package/chunks/{zh-TW-JYCP7XUA.js → zh-TW-LTB4SRH3.js} +54 -6
- package/chunks/{zoom-image-S4LJZMD5.js → zoom-image-O5YCB7WN.js} +10 -10
- package/cli.js +32 -48
- package/locales/ca.js +60 -4
- package/locales/de.js +62 -4
- package/locales/en.js +76 -6
- package/locales/fr.js +64 -4
- package/locales/ja.js +61 -4
- package/locales/pt.js +60 -4
- package/locales/ru.js +63 -4
- package/locales/zh-TW.js +67 -6
- package/locales/zh.js +67 -6
- package/package.json +3 -3
- package/web-shell/assets/{arc-xjArKHU2.js → arc-Bd7d781i.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BgrQDNYG.js → architectureDiagram-3BPJPVTR-CpnOJqNE.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-CXxWC-1_.js → blockDiagram-GPEHLZMM-NxVTiWnk.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-Dx1tLm3v.js → c4Diagram-AAUBKEIU-BWT75l82.js} +1 -1
- package/web-shell/assets/channel-A434sWK5.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-CBxjogVR.js → chunk-2J33WTMH-Dzz03hk6.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-izb-rY5W.js → chunk-4BX2VUAB-DRF-egfm.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-NzLyvSb8.js → chunk-55IACEB6-Co15vq5x.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DVyKb0dl.js → chunk-727SXJPM-DHSUk1J7.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BtqL7NzB.js → chunk-AQP2D5EJ-Br8u_E2R.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-iNpdKIO0.js → chunk-FMBD7UC4-DXbPTnqF.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-DI7cbFmX.js → chunk-ND2GUHAM-BleQdi4d.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-3Y_-xFYs.js → chunk-QZHKN3VN-CqgBf-95.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CwPuhldB.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwPuhldB.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A--raRatZn.js → cose-bilkent-S5V4N54A-WS7b13Yg.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-B8SU70mO.js → dagre-BM42HDAG-v_55ki8o.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-ewgoakXo.js → diagram-2AECGRRQ-DaYAjbdK.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-Bm_JLTnS.js → diagram-5GNKFQAL-D_Hy-L64.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-DEIUjUy9.js → diagram-KO2AKTUF-dB06cZyD.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-C2Wmrpj-.js → diagram-LMA3HP47-DzSluD4F.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CtYe6bFx.js → diagram-OG6HWLK6-Cvb6CeXQ.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-DfpHcWLV.js → erDiagram-TEJ5UH35-7eB2Hmov.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-CAiUhio5.js → flowDiagram-I6XJVG4X-B08iGCw_.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CYc7ezr4.js → ganttDiagram-6RSMTGT7-BgsrCHq-.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-70lbkcRS.js → gitGraphDiagram-PVQCEYII-DQLurQ2i.js} +1 -1
- package/web-shell/assets/{index-Ww86nT9f.js → index-B_1Z0Mgr.js} +1 -1
- package/web-shell/assets/index-Bi1dP2mU.css +5 -0
- package/web-shell/assets/index-DJ-z1Oba.js +1756 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-C7e8DWPa.js → infoDiagram-5YYISTIA-DXZGO8qB.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BYLr2op-.js → ishikawaDiagram-YF4QCWOH-g7gbuH2w.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-hEibAHKX.js → journeyDiagram-JHISSGLW-euefICGn.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-F2rt8Uhp.js → kanban-definition-UN3LZRKU-Dws8-mjG.js} +1 -1
- package/web-shell/assets/{linear-DPhyNezd.js → linear-C63F0tyh.js} +1 -1
- package/web-shell/assets/{mermaid.core-ZUtnug0n.js → mermaid.core-fLrhp_4-.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DDWcMoi8.js → mindmap-definition-RKZ34NQL-qRkydfT-.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-CTRKzw1_.js → pieDiagram-4H26LBE5-BZ0wQaKN.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CAEwYG_z.js → quadrantDiagram-W4KKPZXB-Fjq6GbSZ.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CRjnH9D9.js → requirementDiagram-4Y6WPE33-CqWvjLHU.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-LPQT_sOd.js → sankeyDiagram-5OEKKPKP-VcXX6PVZ.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Ht2Iqvb0.js → sequenceDiagram-3UESZ5HK-BJSRtxFr.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-CIUdqOXu.js → stateDiagram-AJRCARHV-Dt9zUwmZ.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CCxQt56w.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-BcilneZF.js → timeline-definition-PNZ67QCA-DQwlNRws.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BljwiiH1.js → vennDiagram-CIIHVFJN-DwxjUEtQ.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-DeKjkYjq.js → wardley-L42UT6IY-D3QdMSpJ.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-L3U1H7KG.js → wardleyDiagram-YWT4CUSO-BddN8oK8.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-IJnWsgMT.js → xychartDiagram-2RQKCTM6-BUNuBrRJ.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-5JPVOYWA.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-VUNRNRN6.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-N42C2FU3.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-HUIQ4FYC.js";
|
|
47
51
|
import {
|
|
48
52
|
CAPABILITIES_SCHEMA_VERSION,
|
|
49
53
|
CLIENT_ID_HEADER,
|
|
@@ -101,18 +105,18 @@ import {
|
|
|
101
105
|
setRateLimiter,
|
|
102
106
|
unsafeRevealSecret,
|
|
103
107
|
validateMcpRuntimeServerName
|
|
104
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-RR224BUP.js";
|
|
105
109
|
import {
|
|
106
110
|
isLoopbackBind
|
|
107
111
|
} from "./chunk-RXFQM6FQ.js";
|
|
108
112
|
import {
|
|
109
113
|
createWorkspaceSkillsStatusProvider
|
|
110
|
-
} from "./chunk-
|
|
111
|
-
import "./chunk-
|
|
114
|
+
} from "./chunk-ZJES4C3I.js";
|
|
115
|
+
import "./chunk-BGXZBI5B.js";
|
|
112
116
|
import {
|
|
113
117
|
evaluateDaemonWorkspaceTrust,
|
|
114
118
|
readDaemonTrustPolicySnapshot
|
|
115
|
-
} from "./chunk-
|
|
119
|
+
} from "./chunk-HEBW74ZW.js";
|
|
116
120
|
import {
|
|
117
121
|
EMPTY_WORKSPACE_VOICE_UPDATE_ERROR,
|
|
118
122
|
MAX_WORKSPACE_SKILL_NAME_LENGTH,
|
|
@@ -126,14 +130,14 @@ import {
|
|
|
126
130
|
validateWorkspaceSkillName,
|
|
127
131
|
validateWorkspaceVoiceState,
|
|
128
132
|
voiceSettingsScopeToWire
|
|
129
|
-
} from "./chunk-
|
|
133
|
+
} from "./chunk-GMSBXEH4.js";
|
|
130
134
|
import {
|
|
131
135
|
PermissionRulesValidationError,
|
|
132
136
|
buildPermissionSettings,
|
|
133
137
|
isPermissionRuleType,
|
|
134
138
|
normalizePermissionRules,
|
|
135
139
|
readPermissionRuleSet
|
|
136
|
-
} from "./chunk-
|
|
140
|
+
} from "./chunk-YPUHMQXV.js";
|
|
137
141
|
import {
|
|
138
142
|
assertVoiceBaseUrlNetworkAllowed,
|
|
139
143
|
isStreamingVoiceModel,
|
|
@@ -141,13 +145,14 @@ import {
|
|
|
141
145
|
resolveVoiceTranscriptionConfig,
|
|
142
146
|
sanitizeVoiceErrorMessage,
|
|
143
147
|
transcribeVoiceAudio
|
|
144
|
-
} from "./chunk-
|
|
148
|
+
} from "./chunk-WY2ENRDN.js";
|
|
145
149
|
import {
|
|
146
150
|
isVoiceEnabled,
|
|
147
151
|
isVoiceMode,
|
|
148
152
|
readVoiceModel
|
|
149
|
-
} from "./chunk-
|
|
150
|
-
import "./chunk-
|
|
153
|
+
} from "./chunk-BKGA75MU.js";
|
|
154
|
+
import "./chunk-JELIWHXD.js";
|
|
155
|
+
import "./chunk-Z4X5MTRT.js";
|
|
151
156
|
import {
|
|
152
157
|
WorkspacePermissionRulesSessionRequiredError,
|
|
153
158
|
WorkspaceSettingsPartialPersistError,
|
|
@@ -156,28 +161,31 @@ import {
|
|
|
156
161
|
} from "./chunk-OA4JVLSA.js";
|
|
157
162
|
import {
|
|
158
163
|
createTotalSessionAdmissionController
|
|
159
|
-
} from "./chunk-
|
|
164
|
+
} from "./chunk-AKA24BGO.js";
|
|
160
165
|
import {
|
|
161
166
|
WorkspaceGenerationClosedError,
|
|
162
167
|
createSingleWorkspaceRegistry,
|
|
163
168
|
createWorkspaceSessionOwnerIndex
|
|
164
|
-
} from "./chunk-
|
|
169
|
+
} from "./chunk-2M5N3DHY.js";
|
|
165
170
|
import "./chunk-GRC5HGPI.js";
|
|
166
171
|
import {
|
|
167
|
-
|
|
168
|
-
|
|
172
|
+
daemonObservedContactsPath,
|
|
173
|
+
loadChannelsConfig
|
|
174
|
+
} from "./chunk-2LZCLQIS.js";
|
|
175
|
+
import "./chunk-D2GPKXCQ.js";
|
|
176
|
+
import "./chunk-57OAHC2Y.js";
|
|
169
177
|
import {
|
|
170
178
|
createDaemonStatusProvider
|
|
171
|
-
} from "./chunk-
|
|
179
|
+
} from "./chunk-DSGJLHM3.js";
|
|
172
180
|
import "./chunk-VXZBKKQR.js";
|
|
173
|
-
import "./chunk-
|
|
174
|
-
import "./chunk-
|
|
181
|
+
import "./chunk-QWDVZH24.js";
|
|
182
|
+
import "./chunk-3SH53ANB.js";
|
|
175
183
|
import {
|
|
176
184
|
SessionArtifactAuthorizationError,
|
|
177
185
|
SessionArtifactValidationError,
|
|
178
186
|
createAcpSessionBridge,
|
|
179
187
|
parseSessionSource
|
|
180
|
-
} from "./chunk-
|
|
188
|
+
} from "./chunk-HIXVWF7I.js";
|
|
181
189
|
import {
|
|
182
190
|
EVENT_SCHEMA_VERSION,
|
|
183
191
|
EventBus,
|
|
@@ -185,37 +193,32 @@ import {
|
|
|
185
193
|
} from "./chunk-GLWP3FDB.js";
|
|
186
194
|
import "./chunk-XCGIMOLN.js";
|
|
187
195
|
import "./chunk-OCPBI7J5.js";
|
|
188
|
-
import "./chunk-
|
|
196
|
+
import "./chunk-UWSXFI6E.js";
|
|
189
197
|
import {
|
|
190
198
|
createWorkspaceProvidersStatusProvider
|
|
191
|
-
} from "./chunk-
|
|
199
|
+
} from "./chunk-MCXMWLFT.js";
|
|
192
200
|
import {
|
|
193
201
|
getAuthTypeFromEnv,
|
|
194
202
|
resolveCliGenerationConfig
|
|
195
|
-
} from "./chunk-
|
|
203
|
+
} from "./chunk-5VYFXHY2.js";
|
|
196
204
|
import {
|
|
197
205
|
snapshotProcessEnv
|
|
198
|
-
} from "./chunk-
|
|
206
|
+
} from "./chunk-H6ZYP74A.js";
|
|
199
207
|
import {
|
|
200
208
|
STATUS_SCHEMA_VERSION,
|
|
201
209
|
createIdleWorkspaceMemoryStatus,
|
|
202
210
|
mapDomainErrorToErrorKind
|
|
203
|
-
} from "./chunk-
|
|
204
|
-
import "./chunk-
|
|
211
|
+
} from "./chunk-PDDYAXL2.js";
|
|
212
|
+
import "./chunk-K6KS3LTN.js";
|
|
205
213
|
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";
|
|
214
|
+
import "./chunk-T3CHYWJZ.js";
|
|
212
215
|
import {
|
|
213
216
|
parseChannelWebhookConfigLenient
|
|
214
|
-
} from "./chunk-
|
|
215
|
-
import "./chunk-FANRZEAJ.js";
|
|
217
|
+
} from "./chunk-LGT3YMLN.js";
|
|
216
218
|
import {
|
|
217
219
|
supportedChannelCatalog
|
|
218
|
-
} from "./chunk-
|
|
220
|
+
} from "./chunk-X6WUYMOV.js";
|
|
221
|
+
import "./chunk-VWOVHOTT.js";
|
|
219
222
|
import "./chunk-V6WHFGST.js";
|
|
220
223
|
import {
|
|
221
224
|
MAX_REGISTERED_WORKSPACES,
|
|
@@ -224,8 +227,8 @@ import {
|
|
|
224
227
|
WorkspaceRegistrationStoreLimitError,
|
|
225
228
|
normalizeWorkspaceDisplayName,
|
|
226
229
|
workspaceRegistrationId
|
|
227
|
-
} from "./chunk-
|
|
228
|
-
import "./chunk-
|
|
230
|
+
} from "./chunk-3XF4WT3B.js";
|
|
231
|
+
import "./chunk-UKZEXS6K.js";
|
|
229
232
|
import {
|
|
230
233
|
BranchWhilePromptActiveError,
|
|
231
234
|
CancelSentinelCollisionError,
|
|
@@ -258,13 +261,13 @@ import {
|
|
|
258
261
|
WorkspaceInitRaceError,
|
|
259
262
|
WorkspaceInitSymlinkError,
|
|
260
263
|
WorkspaceMismatchError
|
|
261
|
-
} from "./chunk-
|
|
264
|
+
} from "./chunk-J26HHFI5.js";
|
|
262
265
|
import {
|
|
263
266
|
MAX_WORKSPACE_PATH_LENGTH,
|
|
264
267
|
canonicalizeWorkspace,
|
|
265
268
|
canonicalizeWorkspaces,
|
|
266
269
|
translateAndCheckAbsoluteWorkspacePath
|
|
267
|
-
} from "./chunk-
|
|
270
|
+
} from "./chunk-6PLDPT2C.js";
|
|
268
271
|
import {
|
|
269
272
|
ChannelDeliveryError,
|
|
270
273
|
MAX_CHANNEL_STARTUP_FAILURES,
|
|
@@ -274,10 +277,10 @@ import {
|
|
|
274
277
|
QWEN_SERVER_TOKEN_ENV,
|
|
275
278
|
isChannelDeliveryError,
|
|
276
279
|
isChannelWebhookEnqueueError
|
|
277
|
-
} from "./chunk-
|
|
280
|
+
} from "./chunk-QONSRAEV.js";
|
|
278
281
|
import {
|
|
279
282
|
normalizeWorkerDiagnostic
|
|
280
|
-
} from "./chunk-
|
|
283
|
+
} from "./chunk-24ER7UV4.js";
|
|
281
284
|
import {
|
|
282
285
|
normalizeServeChannelSelection
|
|
283
286
|
} from "./chunk-ALMR3E6Q.js";
|
|
@@ -286,11 +289,9 @@ import {
|
|
|
286
289
|
redactLogCredentials
|
|
287
290
|
} from "./chunk-M5GB774H.js";
|
|
288
291
|
import "./chunk-5HBA2Z7V.js";
|
|
289
|
-
import "./chunk-K6KS3LTN.js";
|
|
290
|
-
import "./chunk-T3CHYWJZ.js";
|
|
291
292
|
import {
|
|
292
293
|
sanitizeLogText
|
|
293
|
-
} from "./chunk-
|
|
294
|
+
} from "./chunk-DIEFUBV6.js";
|
|
294
295
|
import "./chunk-UDXSXLER.js";
|
|
295
296
|
import {
|
|
296
297
|
getDialogSettingKeys,
|
|
@@ -301,7 +302,7 @@ import {
|
|
|
301
302
|
getWritableScopes,
|
|
302
303
|
loadSettings,
|
|
303
304
|
validateSettingValue
|
|
304
|
-
} from "./chunk-
|
|
305
|
+
} from "./chunk-22YFMJBW.js";
|
|
305
306
|
import "./chunk-RKUWKYED.js";
|
|
306
307
|
import "./chunk-GOXKNSDZ.js";
|
|
307
308
|
import "./chunk-IDS7MSUP.js";
|
|
@@ -310,22 +311,18 @@ import {
|
|
|
310
311
|
detectSystemLanguage,
|
|
311
312
|
resolveLanguageSetting,
|
|
312
313
|
resolveSupportedLanguage
|
|
313
|
-
} from "./chunk-
|
|
314
|
-
import "./chunk-
|
|
314
|
+
} from "./chunk-KXWERR6P.js";
|
|
315
|
+
import "./chunk-6NE5NTHJ.js";
|
|
315
316
|
import "./chunk-6PEXNQTX.js";
|
|
317
|
+
import "./chunk-BKXTHMOZ.js";
|
|
318
|
+
import "./chunk-VJNBRRZG.js";
|
|
316
319
|
import {
|
|
317
320
|
getWorkspaceTrustStatus
|
|
318
|
-
} from "./chunk-
|
|
321
|
+
} from "./chunk-M5LIY7Y6.js";
|
|
319
322
|
import "./chunk-ALGGS7UH.js";
|
|
320
323
|
import {
|
|
321
324
|
isWithinRoot as isWithinRoot2
|
|
322
325
|
} 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
326
|
import {
|
|
330
327
|
ALL_PROVIDERS,
|
|
331
328
|
BTW_MAX_INPUT_LENGTH,
|
|
@@ -399,20 +396,20 @@ import {
|
|
|
399
396
|
writeWorkspaceContextFile,
|
|
400
397
|
writeWorktreeSession,
|
|
401
398
|
writeWorktreeSessionMarker
|
|
402
|
-
} from "./chunk-
|
|
399
|
+
} from "./chunk-UQDFEU47.js";
|
|
400
|
+
import "./chunk-GOFAQQZA.js";
|
|
403
401
|
import "./chunk-5M6IDOMF.js";
|
|
404
402
|
import "./chunk-TWPJO254.js";
|
|
405
403
|
import "./chunk-H6XPXXMH.js";
|
|
406
404
|
import {
|
|
407
405
|
MAX_JOBS,
|
|
408
406
|
nextDurableFireMs
|
|
409
|
-
} from "./chunk-
|
|
410
|
-
import "./chunk-
|
|
411
|
-
import "./chunk-
|
|
412
|
-
import "./chunk-
|
|
413
|
-
import "./chunk-KRXPRVGL.js";
|
|
407
|
+
} from "./chunk-VA5NLVPT.js";
|
|
408
|
+
import "./chunk-I7JDGNG6.js";
|
|
409
|
+
import "./chunk-A6SX5TAH.js";
|
|
410
|
+
import "./chunk-33FNCQSY.js";
|
|
414
411
|
import "./chunk-6PVPNMXU.js";
|
|
415
|
-
import "./chunk-
|
|
412
|
+
import "./chunk-XUMAD5IT.js";
|
|
416
413
|
import {
|
|
417
414
|
nextFireTime,
|
|
418
415
|
parseCron
|
|
@@ -425,26 +422,29 @@ import {
|
|
|
425
422
|
readCronTasks,
|
|
426
423
|
taskHasLegacyCondition,
|
|
427
424
|
updateCronTasks
|
|
428
|
-
} from "./chunk-
|
|
429
|
-
import "./chunk-
|
|
425
|
+
} from "./chunk-MOHAWIAW.js";
|
|
426
|
+
import "./chunk-X6QNZOTC.js";
|
|
430
427
|
import "./chunk-O6GEWCJA.js";
|
|
431
428
|
import "./chunk-T26EAKDL.js";
|
|
429
|
+
import "./chunk-ZPJWUGCS.js";
|
|
432
430
|
import "./chunk-CPBF7KYF.js";
|
|
433
|
-
import "./chunk-
|
|
434
|
-
import "./chunk-
|
|
435
|
-
import "./chunk-
|
|
436
|
-
import "./chunk-
|
|
437
|
-
import "./chunk-
|
|
431
|
+
import "./chunk-MISUEWB4.js";
|
|
432
|
+
import "./chunk-KRXPRVGL.js";
|
|
433
|
+
import "./chunk-A5YZ3FA2.js";
|
|
434
|
+
import "./chunk-YAVY33G4.js";
|
|
435
|
+
import "./chunk-2UISUFHQ.js";
|
|
436
|
+
import "./chunk-HFVW54NL.js";
|
|
437
|
+
import {
|
|
438
|
+
APPROVAL_MODES
|
|
439
|
+
} from "./chunk-TZTBZ25J.js";
|
|
440
|
+
import "./chunk-S6LOFUVP.js";
|
|
438
441
|
import {
|
|
439
|
-
APPROVAL_MODES,
|
|
440
442
|
SubagentError,
|
|
441
443
|
SubagentErrorCode
|
|
442
|
-
} from "./chunk-
|
|
443
|
-
import "./chunk-S6LOFUVP.js";
|
|
444
|
+
} from "./chunk-SRY26X4H.js";
|
|
444
445
|
import "./chunk-K623ENWT.js";
|
|
445
446
|
import "./chunk-AQ37AY7B.js";
|
|
446
|
-
import "./chunk-
|
|
447
|
-
import "./chunk-ZPJWUGCS.js";
|
|
447
|
+
import "./chunk-432XCUHF.js";
|
|
448
448
|
import {
|
|
449
449
|
QwenOAuth2Client,
|
|
450
450
|
QwenOAuthPollError,
|
|
@@ -453,15 +453,15 @@ import {
|
|
|
453
453
|
isDeviceAuthorizationSuccess,
|
|
454
454
|
isDeviceTokenPending,
|
|
455
455
|
isDeviceTokenSuccess
|
|
456
|
-
} from "./chunk-
|
|
456
|
+
} from "./chunk-XC656O42.js";
|
|
457
457
|
import "./chunk-NAVJD2PQ.js";
|
|
458
|
-
import "./chunk-
|
|
459
|
-
import "./chunk-
|
|
458
|
+
import "./chunk-QYPT3QUD.js";
|
|
459
|
+
import "./chunk-QMBEW7EW.js";
|
|
460
460
|
import "./chunk-DGEIYUC3.js";
|
|
461
461
|
import "./chunk-MPHPFVKK.js";
|
|
462
462
|
import "./chunk-GLNBDYUX.js";
|
|
463
463
|
import "./chunk-DJ2GSRLV.js";
|
|
464
|
-
import "./chunk-
|
|
464
|
+
import "./chunk-EIMKVOSF.js";
|
|
465
465
|
import {
|
|
466
466
|
addDaemonRequestAttribute,
|
|
467
467
|
emitDaemonLog,
|
|
@@ -471,12 +471,12 @@ import {
|
|
|
471
471
|
recordDaemonHttpRequest,
|
|
472
472
|
recordDaemonHttpResponse,
|
|
473
473
|
withDaemonRequestSpan
|
|
474
|
-
} from "./chunk-
|
|
474
|
+
} from "./chunk-RPYYTL7E.js";
|
|
475
475
|
import "./chunk-2J3OJGTL.js";
|
|
476
476
|
import "./chunk-P3QQPMQA.js";
|
|
477
|
-
import "./chunk-
|
|
477
|
+
import "./chunk-6O5DVH27.js";
|
|
478
478
|
import "./chunk-GLCZKT5V.js";
|
|
479
|
-
import "./chunk-
|
|
479
|
+
import "./chunk-2DNKEBXY.js";
|
|
480
480
|
import "./chunk-CR3C7WXL.js";
|
|
481
481
|
import "./chunk-XWRJCPHC.js";
|
|
482
482
|
import {
|
|
@@ -489,18 +489,18 @@ import {
|
|
|
489
489
|
isWithinRoot,
|
|
490
490
|
parseLineTolerant,
|
|
491
491
|
read
|
|
492
|
-
} from "./chunk-
|
|
492
|
+
} from "./chunk-4K3RV3OA.js";
|
|
493
493
|
import "./chunk-VGC4I5JJ.js";
|
|
494
|
-
import "./chunk-
|
|
495
|
-
import "./chunk-
|
|
496
|
-
import "./chunk-
|
|
497
|
-
import "./chunk-
|
|
494
|
+
import "./chunk-E4WHKETF.js";
|
|
495
|
+
import "./chunk-UEJESCS7.js";
|
|
496
|
+
import "./chunk-CFDR3GNL.js";
|
|
497
|
+
import "./chunk-H35Q5CEG.js";
|
|
498
498
|
import "./chunk-46UV252V.js";
|
|
499
499
|
import "./chunk-ZBVS26BY.js";
|
|
500
|
-
import "./chunk-
|
|
501
|
-
import "./chunk-
|
|
502
|
-
import "./chunk-
|
|
503
|
-
import "./chunk-
|
|
500
|
+
import "./chunk-BFHXDAR7.js";
|
|
501
|
+
import "./chunk-TYERNYH4.js";
|
|
502
|
+
import "./chunk-UH7Z7Y45.js";
|
|
503
|
+
import "./chunk-O2ZYHG33.js";
|
|
504
504
|
import "./chunk-W4RQUHY3.js";
|
|
505
505
|
import "./chunk-G7XXKQYS.js";
|
|
506
506
|
import {
|
|
@@ -508,8 +508,12 @@ import {
|
|
|
508
508
|
Storage,
|
|
509
509
|
createDebugLogger,
|
|
510
510
|
runWithoutDebugLogSession
|
|
511
|
-
} from "./chunk-
|
|
511
|
+
} from "./chunk-3RXUYQJI.js";
|
|
512
512
|
import "./chunk-VOQXFAY5.js";
|
|
513
|
+
import {
|
|
514
|
+
writeStderrLine,
|
|
515
|
+
writeStderrLineSafe
|
|
516
|
+
} from "./chunk-OWAK7LMW.js";
|
|
513
517
|
import "./chunk-75DOP5OR.js";
|
|
514
518
|
import "./chunk-DMTGGOSA.js";
|
|
515
519
|
import "./chunk-YQ3U5MUC.js";
|
|
@@ -4854,11 +4858,16 @@ async function validateManagedMemoryAvailable(deps, res, kind, assertGenerationO
|
|
|
4854
4858
|
}
|
|
4855
4859
|
}
|
|
4856
4860
|
__name(validateManagedMemoryAvailable, "validateManagedMemoryAvailable");
|
|
4857
|
-
function
|
|
4861
|
+
function mountWorkspaceMemoryRememberRoutesAt(app, basePath, mutate, resolveRouteDeps) {
|
|
4858
4862
|
app.post(
|
|
4859
|
-
|
|
4860
|
-
|
|
4863
|
+
`${basePath}/remember`,
|
|
4864
|
+
mutate({ strict: true }),
|
|
4861
4865
|
async (req, res) => {
|
|
4866
|
+
const deps = resolveRouteDeps(req, res, {
|
|
4867
|
+
creating: true,
|
|
4868
|
+
kind: "remember"
|
|
4869
|
+
});
|
|
4870
|
+
if (!deps) return;
|
|
4862
4871
|
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
4863
4872
|
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
4864
4873
|
if (!requireTrustedWorkspace(deps, res)) return;
|
|
@@ -4922,9 +4931,14 @@ function mountWorkspaceMemoryRememberRoutes(app, deps) {
|
|
|
4922
4931
|
}
|
|
4923
4932
|
);
|
|
4924
4933
|
app.get(
|
|
4925
|
-
|
|
4926
|
-
|
|
4934
|
+
`${basePath}/remember/:taskId`,
|
|
4935
|
+
mutate({ strict: true }),
|
|
4927
4936
|
(req, res) => {
|
|
4937
|
+
const deps = resolveRouteDeps(req, res, {
|
|
4938
|
+
creating: false,
|
|
4939
|
+
kind: "remember"
|
|
4940
|
+
});
|
|
4941
|
+
if (!deps) return;
|
|
4928
4942
|
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
4929
4943
|
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
4930
4944
|
if (!requireTrustedWorkspace(deps, res)) return;
|
|
@@ -4945,64 +4959,70 @@ function mountWorkspaceMemoryRememberRoutes(app, deps) {
|
|
|
4945
4959
|
res.status(200).json(task);
|
|
4946
4960
|
}
|
|
4947
4961
|
);
|
|
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
|
-
}
|
|
4962
|
+
app.post(`${basePath}/forget`, mutate({ strict: true }), async (req, res) => {
|
|
4963
|
+
const deps = resolveRouteDeps(req, res, {
|
|
4964
|
+
creating: true,
|
|
4965
|
+
kind: "forget"
|
|
4966
|
+
});
|
|
4967
|
+
if (!deps) return;
|
|
4968
|
+
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
4969
|
+
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
4970
|
+
if (!requireTrustedWorkspace(deps, res)) return;
|
|
4971
|
+
const body = deps.safeBody(req);
|
|
4972
|
+
const query = body["query"];
|
|
4973
|
+
const trimmedQuery = typeof query === "string" ? query.trim() : "";
|
|
4974
|
+
if (!trimmedQuery) {
|
|
4975
|
+
res.status(400).json({
|
|
4976
|
+
error: "`query` must be a non-empty string",
|
|
4977
|
+
code: "invalid_query"
|
|
4978
|
+
});
|
|
4979
|
+
return;
|
|
5000
4980
|
}
|
|
5001
|
-
|
|
4981
|
+
if (Buffer.byteLength(trimmedQuery, "utf8") > MAX_REMEMBER_CONTENT_BYTES) {
|
|
4982
|
+
res.status(400).json({
|
|
4983
|
+
error: `\`query\` exceeds the ${MAX_REMEMBER_CONTENT_BYTES}-byte limit`,
|
|
4984
|
+
code: "invalid_query"
|
|
4985
|
+
});
|
|
4986
|
+
return;
|
|
4987
|
+
}
|
|
4988
|
+
const originatorClientId = validateOriginatorClientId(deps, req, res);
|
|
4989
|
+
if (originatorClientId === null) return;
|
|
4990
|
+
if (!await validateManagedMemoryAvailable(
|
|
4991
|
+
deps,
|
|
4992
|
+
res,
|
|
4993
|
+
"forget",
|
|
4994
|
+
assertGenerationOpen
|
|
4995
|
+
))
|
|
4996
|
+
return;
|
|
4997
|
+
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
4998
|
+
try {
|
|
4999
|
+
const task = deps.lane.enqueueForget({
|
|
5000
|
+
query: trimmedQuery,
|
|
5001
|
+
...originatorClientId ? { originatorClientId } : {},
|
|
5002
|
+
...assertGenerationOpen ? { assertGenerationOpen } : {}
|
|
5003
|
+
});
|
|
5004
|
+
res.status(202).json(task);
|
|
5005
|
+
} catch (err) {
|
|
5006
|
+
const code = workspaceMemoryFailureCode(
|
|
5007
|
+
err,
|
|
5008
|
+
"forget_failed",
|
|
5009
|
+
logWorkspaceMemoryExtractionError
|
|
5010
|
+
);
|
|
5011
|
+
res.status(publicErrorStatus(code)).json({
|
|
5012
|
+
error: publicErrorMessage(code, "forget"),
|
|
5013
|
+
code
|
|
5014
|
+
});
|
|
5015
|
+
}
|
|
5016
|
+
});
|
|
5002
5017
|
app.get(
|
|
5003
|
-
|
|
5004
|
-
|
|
5018
|
+
`${basePath}/forget/:taskId`,
|
|
5019
|
+
mutate({ strict: true }),
|
|
5005
5020
|
(req, res) => {
|
|
5021
|
+
const deps = resolveRouteDeps(req, res, {
|
|
5022
|
+
creating: false,
|
|
5023
|
+
kind: "forget"
|
|
5024
|
+
});
|
|
5025
|
+
if (!deps) return;
|
|
5006
5026
|
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
5007
5027
|
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
5008
5028
|
if (!requireTrustedWorkspace(deps, res)) return;
|
|
@@ -5023,68 +5043,88 @@ function mountWorkspaceMemoryRememberRoutes(app, deps) {
|
|
|
5023
5043
|
res.status(200).json(task);
|
|
5024
5044
|
}
|
|
5025
5045
|
);
|
|
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"
|
|
5046
|
+
app.post(`${basePath}/dream`, mutate({ strict: true }), async (req, res) => {
|
|
5047
|
+
const deps = resolveRouteDeps(req, res, {
|
|
5048
|
+
creating: true,
|
|
5049
|
+
kind: "dream"
|
|
5050
|
+
});
|
|
5051
|
+
if (!deps) return;
|
|
5052
|
+
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
5053
|
+
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
5054
|
+
if (!requireTrustedWorkspace(deps, res)) return;
|
|
5055
|
+
const originatorClientId = validateOriginatorClientId(deps, req, res);
|
|
5056
|
+
if (originatorClientId === null) return;
|
|
5057
|
+
if (!await validateManagedMemoryAvailable(
|
|
5058
|
+
deps,
|
|
5059
|
+
res,
|
|
5060
|
+
"dream",
|
|
5061
|
+
assertGenerationOpen
|
|
5062
|
+
))
|
|
5063
|
+
return;
|
|
5064
|
+
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
5065
|
+
try {
|
|
5066
|
+
const task = deps.lane.enqueueDream({
|
|
5067
|
+
...originatorClientId ? { originatorClientId } : {},
|
|
5068
|
+
...assertGenerationOpen ? { assertGenerationOpen } : {}
|
|
5069
|
+
});
|
|
5070
|
+
res.status(202).json(task);
|
|
5071
|
+
} catch (err) {
|
|
5072
|
+
const code = workspaceMemoryFailureCode(
|
|
5073
|
+
err,
|
|
5074
|
+
"dream_failed",
|
|
5075
|
+
logWorkspaceMemoryExtractionError
|
|
5075
5076
|
);
|
|
5076
|
-
|
|
5077
|
-
|
|
5078
|
-
|
|
5079
|
-
|
|
5080
|
-
});
|
|
5081
|
-
return;
|
|
5082
|
-
}
|
|
5083
|
-
res.status(200).json(task);
|
|
5077
|
+
res.status(publicErrorStatus(code)).json({
|
|
5078
|
+
error: publicErrorMessage(code, "dream"),
|
|
5079
|
+
code
|
|
5080
|
+
});
|
|
5084
5081
|
}
|
|
5082
|
+
});
|
|
5083
|
+
app.get(`${basePath}/dream/:taskId`, mutate({ strict: true }), (req, res) => {
|
|
5084
|
+
const deps = resolveRouteDeps(req, res, {
|
|
5085
|
+
creating: false,
|
|
5086
|
+
kind: "dream"
|
|
5087
|
+
});
|
|
5088
|
+
if (!deps) return;
|
|
5089
|
+
const assertGenerationOpen = deps.captureGenerationAssertion?.();
|
|
5090
|
+
if (!requireOpenGeneration(assertGenerationOpen, res)) return;
|
|
5091
|
+
if (!requireTrustedWorkspace(deps, res)) return;
|
|
5092
|
+
const requesterClientId = validateOriginatorClientId(deps, req, res);
|
|
5093
|
+
if (requesterClientId === null) return;
|
|
5094
|
+
const task = deps.lane.get(
|
|
5095
|
+
req.params["taskId"],
|
|
5096
|
+
requesterClientId,
|
|
5097
|
+
"dream"
|
|
5098
|
+
);
|
|
5099
|
+
if (!task) {
|
|
5100
|
+
res.status(404).json({
|
|
5101
|
+
error: "Workspace memory dream task not found",
|
|
5102
|
+
code: "dream_task_not_found"
|
|
5103
|
+
});
|
|
5104
|
+
return;
|
|
5105
|
+
}
|
|
5106
|
+
res.status(200).json(task);
|
|
5107
|
+
});
|
|
5108
|
+
}
|
|
5109
|
+
__name(mountWorkspaceMemoryRememberRoutesAt, "mountWorkspaceMemoryRememberRoutesAt");
|
|
5110
|
+
function mountWorkspaceMemoryRememberRoutes(app, deps) {
|
|
5111
|
+
mountWorkspaceMemoryRememberRoutesAt(
|
|
5112
|
+
app,
|
|
5113
|
+
"/workspace/memory",
|
|
5114
|
+
deps.mutate,
|
|
5115
|
+
() => deps
|
|
5085
5116
|
);
|
|
5086
5117
|
}
|
|
5087
5118
|
__name(mountWorkspaceMemoryRememberRoutes, "mountWorkspaceMemoryRememberRoutes");
|
|
5119
|
+
function mountWorkspaceQualifiedMemoryRememberRoutes(app, deps) {
|
|
5120
|
+
mountWorkspaceMemoryRememberRoutesAt(
|
|
5121
|
+
app,
|
|
5122
|
+
"/workspaces/:workspace/memory",
|
|
5123
|
+
deps.mutate,
|
|
5124
|
+
deps.resolveRouteDeps
|
|
5125
|
+
);
|
|
5126
|
+
}
|
|
5127
|
+
__name(mountWorkspaceQualifiedMemoryRememberRoutes, "mountWorkspaceQualifiedMemoryRememberRoutes");
|
|
5088
5128
|
|
|
5089
5129
|
// packages/cli/src/serve/workspace-memory.ts
|
|
5090
5130
|
init_esbuild_shims();
|
|
@@ -14850,6 +14890,16 @@ function mountAcpHttp(app, bridge, opts) {
|
|
|
14850
14890
|
memoryTasks: mount?.workspaceRememberLane.pendingCount() ?? 0
|
|
14851
14891
|
};
|
|
14852
14892
|
}, "getWorkspaceActivity"),
|
|
14893
|
+
ensureWorkspaceRememberLane: /* @__PURE__ */ __name((workspaceId) => {
|
|
14894
|
+
if (disposed) return void 0;
|
|
14895
|
+
const existing = mountForWorkspace(workspaceId);
|
|
14896
|
+
if (existing) return existing.workspaceRememberLane;
|
|
14897
|
+
const rt = opts.workspaceRegistry?.getByWorkspaceId(workspaceId);
|
|
14898
|
+
if (!rt) return void 0;
|
|
14899
|
+
const mount = getOrCreateSecondaryMount(rt);
|
|
14900
|
+
return mount?.workspaceRememberLane;
|
|
14901
|
+
}, "ensureWorkspaceRememberLane"),
|
|
14902
|
+
getWorkspaceRememberLane: /* @__PURE__ */ __name((workspaceId) => mountForWorkspace(workspaceId)?.workspaceRememberLane, "getWorkspaceRememberLane"),
|
|
14853
14903
|
commitWorkspaceRemoval: /* @__PURE__ */ __name((workspaceId) => {
|
|
14854
14904
|
const mount = secondaryMounts.get(workspaceId);
|
|
14855
14905
|
mount?.workspaceRememberLane.dispose();
|
|
@@ -20035,6 +20085,12 @@ var legacySessionTelemetryRoutes = [
|
|
|
20035
20085
|
attribution: "handler_resolved",
|
|
20036
20086
|
route: "POST /session/:id/mid-turn-message"
|
|
20037
20087
|
},
|
|
20088
|
+
{
|
|
20089
|
+
method: "DELETE",
|
|
20090
|
+
path: "/session/:id/mid-turn-messages/:messageId",
|
|
20091
|
+
attribution: "handler_resolved",
|
|
20092
|
+
route: "DELETE /session/:id/mid-turn-messages/:messageId"
|
|
20093
|
+
},
|
|
20038
20094
|
{
|
|
20039
20095
|
method: "GET",
|
|
20040
20096
|
path: "/session/:id/pending-prompts",
|
|
@@ -22013,6 +22069,7 @@ __name(createWorkspaceRuntimeSessionService, "createWorkspaceRuntimeSessionServi
|
|
|
22013
22069
|
var GIT_RESERVED_BRANCH = "HEAD";
|
|
22014
22070
|
var MAX_BRANCH_NAME_BYTES = 1e3;
|
|
22015
22071
|
var MAX_BRANCH_COMPONENT_BYTES = 200;
|
|
22072
|
+
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
22073
|
var WORKSPACE_TRANSCRIPT_RESPONSE_MAX_BYTES = 32 * 1024 * 1024;
|
|
22017
22074
|
var WORKSPACE_TRANSCRIPT_CURSOR_MAX_BYTES = 64 * 1024;
|
|
22018
22075
|
var TRANSCRIPT_CURSOR_TOO_LARGE_REPLAY_ERROR = "Transcript pagination state exceeds the safe limit";
|
|
@@ -22172,6 +22229,15 @@ function shouldPreserveTranscriptResolutionError(err) {
|
|
|
22172
22229
|
return err instanceof SessionArchivedError || err instanceof SessionConflictError || err instanceof SessionNotFoundError;
|
|
22173
22230
|
}
|
|
22174
22231
|
__name(shouldPreserveTranscriptResolutionError, "shouldPreserveTranscriptResolutionError");
|
|
22232
|
+
function isSessionLive(bridge, sessionId) {
|
|
22233
|
+
try {
|
|
22234
|
+
bridge.getSessionSummary(sessionId);
|
|
22235
|
+
return true;
|
|
22236
|
+
} catch (err) {
|
|
22237
|
+
return !(err instanceof SessionNotFoundError);
|
|
22238
|
+
}
|
|
22239
|
+
}
|
|
22240
|
+
__name(isSessionLive, "isSessionLive");
|
|
22175
22241
|
function parseOptionalApprovalMode(body, res) {
|
|
22176
22242
|
const rawApprovalMode = body["approvalMode"];
|
|
22177
22243
|
if (rawApprovalMode === void 0) {
|
|
@@ -22206,6 +22272,7 @@ function registerSessionRoutes(app, deps) {
|
|
|
22206
22272
|
const transcriptCursorCodecs = /* @__PURE__ */ new Map();
|
|
22207
22273
|
const activeBranchSessions = /* @__PURE__ */ new Map();
|
|
22208
22274
|
const inFlightBranchWorkspaces = /* @__PURE__ */ new Set();
|
|
22275
|
+
const inFlightSessionIds = /* @__PURE__ */ new Set();
|
|
22209
22276
|
const clearBranchSessionEntry = /* @__PURE__ */ __name((sessionId) => {
|
|
22210
22277
|
for (const [cwd, sid] of activeBranchSessions) {
|
|
22211
22278
|
if (sid === sessionId) {
|
|
@@ -22833,201 +22900,246 @@ function registerSessionRoutes(app, deps) {
|
|
|
22833
22900
|
}
|
|
22834
22901
|
const clientId = parseClientIdHeader(req, res);
|
|
22835
22902
|
if (clientId === null) return;
|
|
22836
|
-
|
|
22837
|
-
let
|
|
22838
|
-
|
|
22839
|
-
|
|
22840
|
-
if (body["worktree"] !== void 0 && body["worktree"] !== null) {
|
|
22903
|
+
const rawSessionId = body["sessionId"];
|
|
22904
|
+
let requestedSessionId;
|
|
22905
|
+
if (rawSessionId !== void 0 && rawSessionId !== null) {
|
|
22906
|
+
if (typeof rawSessionId !== "string" || !HTTP_SESSION_ID_REGEX.test(rawSessionId)) {
|
|
22841
22907
|
res.status(400).json({
|
|
22842
|
-
error:
|
|
22843
|
-
code: "
|
|
22908
|
+
error: '`sessionId` must be a UUID (e.g. "550e8400-e29b-41d4-a716-446655440000")',
|
|
22909
|
+
code: "invalid_session_id"
|
|
22844
22910
|
});
|
|
22845
22911
|
return;
|
|
22846
22912
|
}
|
|
22847
|
-
|
|
22848
|
-
|
|
22849
|
-
|
|
22850
|
-
|
|
22913
|
+
requestedSessionId = rawSessionId.toLowerCase();
|
|
22914
|
+
const sessionIdToCheck = requestedSessionId;
|
|
22915
|
+
if (isSessionLive(runtime.bridge, sessionIdToCheck)) {
|
|
22916
|
+
res.status(409).json({
|
|
22917
|
+
error: `Session "${requestedSessionId}" already exists`,
|
|
22918
|
+
code: "session_id_conflict"
|
|
22851
22919
|
});
|
|
22852
22920
|
return;
|
|
22853
22921
|
}
|
|
22854
|
-
const
|
|
22855
|
-
|
|
22856
|
-
|
|
22857
|
-
|
|
22858
|
-
|
|
22859
|
-
|
|
22922
|
+
const runtimeOutputDir = loadSettingsCached(workspaceCwd).merged.advanced?.runtimeOutputDir;
|
|
22923
|
+
if (await Storage.runWithRuntimeBaseDir(
|
|
22924
|
+
runtimeOutputDir,
|
|
22925
|
+
workspaceCwd,
|
|
22926
|
+
() => new SessionService(workspaceCwd).sessionExistsInAnyState(
|
|
22927
|
+
sessionIdToCheck
|
|
22928
|
+
)
|
|
22929
|
+
)) {
|
|
22930
|
+
res.status(409).json({
|
|
22931
|
+
error: `Session "${requestedSessionId}" already exists`,
|
|
22932
|
+
code: "session_id_conflict"
|
|
22860
22933
|
});
|
|
22861
22934
|
return;
|
|
22862
22935
|
}
|
|
22863
|
-
if (
|
|
22864
|
-
(
|
|
22865
|
-
|
|
22866
|
-
|
|
22867
|
-
error: `Invalid branch name: ${branchName}`,
|
|
22868
|
-
code: "branch_invalid_name"
|
|
22936
|
+
if (inFlightSessionIds.has(requestedSessionId)) {
|
|
22937
|
+
res.status(409).json({
|
|
22938
|
+
error: `Session "${requestedSessionId}" creation already in progress`,
|
|
22939
|
+
code: "session_id_conflict"
|
|
22869
22940
|
});
|
|
22870
22941
|
return;
|
|
22871
22942
|
}
|
|
22872
|
-
|
|
22873
|
-
|
|
22874
|
-
|
|
22875
|
-
|
|
22943
|
+
inFlightSessionIds.add(requestedSessionId);
|
|
22944
|
+
}
|
|
22945
|
+
let branchMeta;
|
|
22946
|
+
let branchBaseCommit;
|
|
22947
|
+
let worktreeMeta;
|
|
22948
|
+
try {
|
|
22949
|
+
const rawBranch = body["branch"];
|
|
22950
|
+
if (rawBranch !== void 0 && rawBranch !== null) {
|
|
22951
|
+
if (body["worktree"] !== void 0 && body["worktree"] !== null) {
|
|
22952
|
+
res.status(400).json({
|
|
22953
|
+
error: "`branch` and `worktree` are mutually exclusive",
|
|
22954
|
+
code: "branch_and_worktree_conflict"
|
|
22955
|
+
});
|
|
22956
|
+
return;
|
|
22957
|
+
}
|
|
22958
|
+
if (typeof rawBranch !== "object" || Array.isArray(rawBranch)) {
|
|
22959
|
+
res.status(400).json({
|
|
22960
|
+
error: '`branch` must be an object (e.g. `{"name":"feat/my-feature"}`)',
|
|
22961
|
+
code: "invalid_branch"
|
|
22962
|
+
});
|
|
22963
|
+
return;
|
|
22964
|
+
}
|
|
22965
|
+
const branchReq = rawBranch;
|
|
22966
|
+
const branchName = branchReq["name"];
|
|
22967
|
+
if (typeof branchName !== "string" || branchName.length === 0) {
|
|
22968
|
+
res.status(400).json({
|
|
22969
|
+
error: "`branch.name` must be a non-empty string",
|
|
22970
|
+
code: "branch_invalid_name"
|
|
22971
|
+
});
|
|
22972
|
+
return;
|
|
22973
|
+
}
|
|
22974
|
+
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(
|
|
22975
|
+
(c) => Buffer.byteLength(c, "utf8") > MAX_BRANCH_COMPONENT_BYTES
|
|
22976
|
+
)) {
|
|
22977
|
+
res.status(400).json({
|
|
22978
|
+
error: `Invalid branch name: ${branchName}`,
|
|
22979
|
+
code: "branch_invalid_name"
|
|
22980
|
+
});
|
|
22981
|
+
return;
|
|
22982
|
+
}
|
|
22983
|
+
const existingBranchSession = activeBranchSessions.get(workspaceCwd);
|
|
22984
|
+
if (existingBranchSession) {
|
|
22985
|
+
try {
|
|
22986
|
+
runtime.bridge.getSessionSummary(existingBranchSession);
|
|
22987
|
+
res.status(409).json({
|
|
22988
|
+
error: "A branch session is already active for this workspace",
|
|
22989
|
+
code: "branch_session_conflict",
|
|
22990
|
+
existingSessionId: existingBranchSession
|
|
22991
|
+
});
|
|
22992
|
+
return;
|
|
22993
|
+
} catch {
|
|
22994
|
+
activeBranchSessions.delete(workspaceCwd);
|
|
22995
|
+
}
|
|
22996
|
+
}
|
|
22997
|
+
const sharedCheckoutSession = runtime.bridge.listWorkspaceSessions(workspaceCwd).find((session2) => !session2.worktree && session2.clientCount > 0);
|
|
22998
|
+
if (sharedCheckoutSession) {
|
|
22876
22999
|
res.status(409).json({
|
|
22877
|
-
error: "
|
|
23000
|
+
error: "Another session is already active in this workspace; creating a branch would move its shared checkout",
|
|
22878
23001
|
code: "branch_session_conflict",
|
|
22879
|
-
existingSessionId:
|
|
23002
|
+
existingSessionId: sharedCheckoutSession.sessionId
|
|
22880
23003
|
});
|
|
22881
23004
|
return;
|
|
23005
|
+
}
|
|
23006
|
+
let wtService;
|
|
23007
|
+
try {
|
|
23008
|
+
wtService = new GitWorktreeService(workspaceCwd);
|
|
22882
23009
|
} catch {
|
|
22883
|
-
|
|
23010
|
+
res.status(500).json({
|
|
23011
|
+
error: "Failed to initialize git service",
|
|
23012
|
+
code: "branch_init_failed"
|
|
23013
|
+
});
|
|
23014
|
+
return;
|
|
22884
23015
|
}
|
|
23016
|
+
if (!await wtService.isGitRepository()) {
|
|
23017
|
+
res.status(400).json({
|
|
23018
|
+
error: "Branch creation requires a git repository",
|
|
23019
|
+
code: "branch_not_git_repo"
|
|
23020
|
+
});
|
|
23021
|
+
return;
|
|
23022
|
+
}
|
|
23023
|
+
if (await branchExists(workspaceCwd, branchName)) {
|
|
23024
|
+
res.status(409).json({
|
|
23025
|
+
error: `Branch "${branchName}" already exists`,
|
|
23026
|
+
code: "branch_already_exists"
|
|
23027
|
+
});
|
|
23028
|
+
return;
|
|
23029
|
+
}
|
|
23030
|
+
let dirty;
|
|
23031
|
+
try {
|
|
23032
|
+
dirty = await isDirtyTree(workspaceCwd);
|
|
23033
|
+
} catch {
|
|
23034
|
+
res.status(500).json({
|
|
23035
|
+
error: "Failed to check working tree status",
|
|
23036
|
+
code: "branch_status_failed"
|
|
23037
|
+
});
|
|
23038
|
+
return;
|
|
23039
|
+
}
|
|
23040
|
+
if (dirty) {
|
|
23041
|
+
res.status(409).json({
|
|
23042
|
+
error: "Uncommitted changes detected. Commit or stash first.",
|
|
23043
|
+
code: "branch_dirty_tree"
|
|
23044
|
+
});
|
|
23045
|
+
return;
|
|
23046
|
+
}
|
|
23047
|
+
const baseCommit = await getHeadCommit(workspaceCwd);
|
|
23048
|
+
const baseBranch = await wtService.getCurrentBranch().catch(() => "HEAD");
|
|
23049
|
+
if (inFlightBranchWorkspaces.has(workspaceCwd) || activeBranchSessions.has(workspaceCwd)) {
|
|
23050
|
+
res.status(409).json({
|
|
23051
|
+
error: "A branch session is already being created for this workspace",
|
|
23052
|
+
code: "branch_session_conflict"
|
|
23053
|
+
});
|
|
23054
|
+
return;
|
|
23055
|
+
}
|
|
23056
|
+
inFlightBranchWorkspaces.add(workspaceCwd);
|
|
23057
|
+
try {
|
|
23058
|
+
await createBranch(workspaceCwd, branchName);
|
|
23059
|
+
} catch (checkoutErr) {
|
|
23060
|
+
daemonLog?.warn("branch checkout failed", {
|
|
23061
|
+
error: checkoutErr instanceof Error ? checkoutErr.message : String(checkoutErr)
|
|
23062
|
+
});
|
|
23063
|
+
await rollbackBranchCreation(
|
|
23064
|
+
workspaceCwd,
|
|
23065
|
+
{ name: branchName, baseBranch },
|
|
23066
|
+
baseCommit,
|
|
23067
|
+
daemonLog
|
|
23068
|
+
);
|
|
23069
|
+
res.status(500).json({
|
|
23070
|
+
error: "Failed to create branch",
|
|
23071
|
+
code: "branch_checkout_failed"
|
|
23072
|
+
});
|
|
23073
|
+
return;
|
|
23074
|
+
}
|
|
23075
|
+
branchMeta = { name: branchName, baseBranch };
|
|
23076
|
+
branchBaseCommit = baseCommit;
|
|
23077
|
+
sessionScope = "thread";
|
|
22885
23078
|
}
|
|
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;
|
|
23079
|
+
const rawWorktree = body["worktree"];
|
|
23080
|
+
if (rawWorktree !== void 0 && rawWorktree !== null) {
|
|
23081
|
+
if (typeof rawWorktree !== "object" || Array.isArray(rawWorktree)) {
|
|
23082
|
+
res.status(400).json({
|
|
23083
|
+
error: '`worktree` must be an object (e.g. `{}` or `{"slug":"my-task"}`)',
|
|
23084
|
+
code: "invalid_worktree"
|
|
23085
|
+
});
|
|
23086
|
+
return;
|
|
23087
|
+
}
|
|
23088
|
+
const wtReq = rawWorktree;
|
|
23089
|
+
let wtService;
|
|
23090
|
+
try {
|
|
23091
|
+
wtService = new GitWorktreeService(workspaceCwd);
|
|
23092
|
+
} catch {
|
|
23093
|
+
res.status(500).json({
|
|
23094
|
+
error: "Failed to initialize worktree service",
|
|
23095
|
+
code: "worktree_init_failed"
|
|
23096
|
+
});
|
|
23097
|
+
return;
|
|
23098
|
+
}
|
|
23099
|
+
if (!await wtService.isGitRepository()) {
|
|
23100
|
+
res.status(400).json({
|
|
23101
|
+
error: "Worktree isolation requires a git repository",
|
|
23102
|
+
code: "worktree_not_git_repo"
|
|
23103
|
+
});
|
|
23104
|
+
return;
|
|
23105
|
+
}
|
|
23106
|
+
const rawSlug = wtReq["slug"];
|
|
23107
|
+
let slug;
|
|
23108
|
+
if (rawSlug === void 0 || rawSlug === null) {
|
|
23109
|
+
slug = GitWorktreeService.generateAutoSlug();
|
|
23110
|
+
} else if (typeof rawSlug !== "string" || rawSlug.length === 0) {
|
|
23111
|
+
res.status(400).json({
|
|
23112
|
+
error: "`worktree.slug` must be a non-empty string when provided",
|
|
23113
|
+
code: "worktree_invalid_slug"
|
|
23114
|
+
});
|
|
23115
|
+
return;
|
|
23116
|
+
} else {
|
|
23117
|
+
slug = rawSlug;
|
|
23118
|
+
}
|
|
23119
|
+
const slugError = GitWorktreeService.validateUserWorktreeSlug(slug);
|
|
23120
|
+
if (slugError) {
|
|
23121
|
+
res.status(400).json({ error: slugError, code: "worktree_invalid_slug" });
|
|
23122
|
+
return;
|
|
23123
|
+
}
|
|
23124
|
+
const baseBranch = await wtService.getCurrentBranch().catch(() => void 0);
|
|
23125
|
+
const wtResult = await wtService.createUserWorktree(slug, baseBranch);
|
|
23126
|
+
if (!wtResult.success || !wtResult.worktree) {
|
|
23127
|
+
res.status(500).json({
|
|
23128
|
+
error: wtResult.error ?? "Failed to create worktree",
|
|
23129
|
+
code: "worktree_create_failed"
|
|
23130
|
+
});
|
|
23131
|
+
return;
|
|
23132
|
+
}
|
|
23133
|
+
worktreeMeta = {
|
|
23134
|
+
slug,
|
|
23135
|
+
path: wtResult.worktree.path,
|
|
23136
|
+
branch: wtResult.worktree.branch
|
|
23137
|
+
};
|
|
23138
|
+
sessionScope = "thread";
|
|
23013
23139
|
}
|
|
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;
|
|
23140
|
+
if (requestedSessionId !== void 0) {
|
|
23141
|
+
sessionScope = "thread";
|
|
23022
23142
|
}
|
|
23023
|
-
worktreeMeta = {
|
|
23024
|
-
slug,
|
|
23025
|
-
path: wtResult.worktree.path,
|
|
23026
|
-
branch: wtResult.worktree.branch
|
|
23027
|
-
};
|
|
23028
|
-
sessionScope = "thread";
|
|
23029
|
-
}
|
|
23030
|
-
try {
|
|
23031
23143
|
const session = await runtime.bridge.spawnOrAttach({
|
|
23032
23144
|
workspaceCwd,
|
|
23033
23145
|
modelServiceId,
|
|
@@ -23037,8 +23149,45 @@ function registerSessionRoutes(app, deps) {
|
|
|
23037
23149
|
...source.sourceType !== void 0 ? { sourceType: source.sourceType } : {},
|
|
23038
23150
|
...source.sourceId !== void 0 ? { sourceId: source.sourceId } : {},
|
|
23039
23151
|
...worktreeMeta ? { worktree: worktreeMeta } : {},
|
|
23040
|
-
...branchMeta ? { branch: branchMeta } : {}
|
|
23152
|
+
...branchMeta ? { branch: branchMeta } : {},
|
|
23153
|
+
...requestedSessionId !== void 0 ? { sessionId: requestedSessionId } : {}
|
|
23041
23154
|
});
|
|
23155
|
+
if (requestedSessionId !== void 0 && session.sessionId !== requestedSessionId) {
|
|
23156
|
+
if (daemonLog) {
|
|
23157
|
+
daemonLog.warn("session id not honored by agent", {
|
|
23158
|
+
requested: requestedSessionId,
|
|
23159
|
+
actual: session.sessionId
|
|
23160
|
+
});
|
|
23161
|
+
}
|
|
23162
|
+
if (!session.attached) {
|
|
23163
|
+
await runWithWorkspaceRuntimeStorage(
|
|
23164
|
+
runtime,
|
|
23165
|
+
() => deleteDaemonSessionIfOrphan({
|
|
23166
|
+
sessionId: session.sessionId,
|
|
23167
|
+
service: createWorkspaceRuntimeSessionService(runtime),
|
|
23168
|
+
bridge: runtime.bridge,
|
|
23169
|
+
coordinator: archiveCoordinator
|
|
23170
|
+
})
|
|
23171
|
+
).catch(() => false);
|
|
23172
|
+
}
|
|
23173
|
+
if (worktreeMeta) {
|
|
23174
|
+
await new GitWorktreeService(workspaceCwd).removeUserWorktree(worktreeMeta.slug, { deleteBranch: true }).catch(() => {
|
|
23175
|
+
});
|
|
23176
|
+
}
|
|
23177
|
+
if (branchMeta) {
|
|
23178
|
+
await rollbackBranchCreation(
|
|
23179
|
+
workspaceCwd,
|
|
23180
|
+
branchMeta,
|
|
23181
|
+
branchBaseCommit,
|
|
23182
|
+
daemonLog
|
|
23183
|
+
);
|
|
23184
|
+
}
|
|
23185
|
+
res.status(500).json({
|
|
23186
|
+
error: "Agent did not honor the requested session id",
|
|
23187
|
+
code: "session_id_not_honored"
|
|
23188
|
+
});
|
|
23189
|
+
return;
|
|
23190
|
+
}
|
|
23042
23191
|
try {
|
|
23043
23192
|
runtime.generationGuard?.assertOpen();
|
|
23044
23193
|
} catch (error2) {
|
|
@@ -23210,6 +23359,10 @@ function registerSessionRoutes(app, deps) {
|
|
|
23210
23359
|
);
|
|
23211
23360
|
}
|
|
23212
23361
|
sendBridgeError2(res, err, { route: "POST /session" });
|
|
23362
|
+
} finally {
|
|
23363
|
+
if (requestedSessionId !== void 0) {
|
|
23364
|
+
inFlightSessionIds.delete(requestedSessionId);
|
|
23365
|
+
}
|
|
23213
23366
|
}
|
|
23214
23367
|
});
|
|
23215
23368
|
const restoreSessionHandler = /* @__PURE__ */ __name((action) => async (req, res) => {
|
|
@@ -25346,6 +25499,28 @@ function registerSessionRoutes(app, deps) {
|
|
|
25346
25499
|
}
|
|
25347
25500
|
)
|
|
25348
25501
|
);
|
|
25502
|
+
app.delete(
|
|
25503
|
+
"/session/:id/mid-turn-messages/:messageId",
|
|
25504
|
+
mutate(),
|
|
25505
|
+
withOwnerMutableSession(
|
|
25506
|
+
"DELETE /session/:id/mid-turn-messages/:messageId",
|
|
25507
|
+
(req, res, sessionId, runtime) => {
|
|
25508
|
+
const clientId = parseClientIdHeader(req, res);
|
|
25509
|
+
if (clientId === null) return;
|
|
25510
|
+
const messageId = req.params["messageId"];
|
|
25511
|
+
if (!messageId) {
|
|
25512
|
+
res.status(400).json({ error: "`messageId` route parameter is required" });
|
|
25513
|
+
return;
|
|
25514
|
+
}
|
|
25515
|
+
const result = runtime.bridge.removeMidTurnMessage(
|
|
25516
|
+
sessionId,
|
|
25517
|
+
messageId,
|
|
25518
|
+
clientId !== void 0 ? { clientId } : void 0
|
|
25519
|
+
);
|
|
25520
|
+
res.status(200).json(result);
|
|
25521
|
+
}
|
|
25522
|
+
)
|
|
25523
|
+
);
|
|
25349
25524
|
app.get("/session/:id/pending-prompts", (req, res) => {
|
|
25350
25525
|
const sessionId = requireSessionId(req, res);
|
|
25351
25526
|
if (sessionId === null) return;
|
|
@@ -27423,7 +27598,7 @@ init_esbuild_shims();
|
|
|
27423
27598
|
|
|
27424
27599
|
// packages/cli/src/serve/server/serve-features.ts
|
|
27425
27600
|
init_esbuild_shims();
|
|
27426
|
-
var DEFAULT_MAX_SESSIONS =
|
|
27601
|
+
var DEFAULT_MAX_SESSIONS = 32;
|
|
27427
27602
|
var DEFAULT_MAX_PENDING_PROMPTS_PER_SESSION = 5;
|
|
27428
27603
|
var SERVE_LANGUAGE_CODES = [
|
|
27429
27604
|
...SUPPORTED_LANGUAGES.map((language) => language.code),
|
|
@@ -27843,6 +28018,8 @@ var TUI_ONLY_SETTINGS = /* @__PURE__ */ new Set([
|
|
|
27843
28018
|
"ui.showLineNumbers",
|
|
27844
28019
|
"ui.renderMode",
|
|
27845
28020
|
"ui.useTerminalBuffer",
|
|
28021
|
+
"ui.mouseTracking",
|
|
28022
|
+
"ui.showScrollbar",
|
|
27846
28023
|
"ui.hideBanner",
|
|
27847
28024
|
"ui.accessibility.enableLoadingPhrases",
|
|
27848
28025
|
"ui.enableWelcomeBack"
|
|
@@ -30596,9 +30773,18 @@ function registerWorkspaceManagementRoutes(app, deps) {
|
|
|
30596
30773
|
}
|
|
30597
30774
|
}
|
|
30598
30775
|
);
|
|
30776
|
+
const protectExistingWorkspaceRegistration = mutate({ strict: true });
|
|
30599
30777
|
app.post(
|
|
30600
30778
|
"/workspaces",
|
|
30601
|
-
mutate(
|
|
30779
|
+
mutate(),
|
|
30780
|
+
(req, res, next) => {
|
|
30781
|
+
const body = safeBody2(req);
|
|
30782
|
+
if (body["kind"] === "scratch") {
|
|
30783
|
+
next();
|
|
30784
|
+
return;
|
|
30785
|
+
}
|
|
30786
|
+
protectExistingWorkspaceRegistration(req, res, next);
|
|
30787
|
+
},
|
|
30602
30788
|
async (req, res) => {
|
|
30603
30789
|
const body = safeBody2(req);
|
|
30604
30790
|
if ("kind" in body) {
|
|
@@ -35387,6 +35573,49 @@ function createServeApp(opts, getPort = () => opts.port, deps = {}) {
|
|
|
35387
35573
|
isWorkspaceTrusted: isPrimaryWorkspaceTrusted,
|
|
35388
35574
|
captureGenerationAssertion: capturePrimaryGenerationAssertion
|
|
35389
35575
|
});
|
|
35576
|
+
mountWorkspaceQualifiedMemoryRememberRoutes(app, {
|
|
35577
|
+
mutate,
|
|
35578
|
+
resolveRouteDeps: /* @__PURE__ */ __name((req, res, { creating, kind }) => {
|
|
35579
|
+
const runtime = resolveWorkspaceRuntimeFromParam(
|
|
35580
|
+
workspaceRegistry,
|
|
35581
|
+
req,
|
|
35582
|
+
res
|
|
35583
|
+
);
|
|
35584
|
+
if (!runtime || !requireTrustedWorkspaceRuntime(runtime, res))
|
|
35585
|
+
return null;
|
|
35586
|
+
const handle = acpHandleRef.current;
|
|
35587
|
+
const lane = runtime.primary ? workspaceRememberLane : creating ? handle?.ensureWorkspaceRememberLane(runtime.workspaceId) : handle?.getWorkspaceRememberLane(runtime.workspaceId);
|
|
35588
|
+
if (!lane) {
|
|
35589
|
+
if (!handle) {
|
|
35590
|
+
res.status(501).json({
|
|
35591
|
+
error: "Workspace-qualified memory is not enabled on this daemon.",
|
|
35592
|
+
code: "workspace_memory_unavailable",
|
|
35593
|
+
workspaceCwd: runtime.workspaceCwd,
|
|
35594
|
+
workspaceId: runtime.workspaceId
|
|
35595
|
+
});
|
|
35596
|
+
} else if (!creating) {
|
|
35597
|
+
res.status(404).json({
|
|
35598
|
+
error: `Workspace memory ${kind} task not found`,
|
|
35599
|
+
code: `${kind}_task_not_found`
|
|
35600
|
+
});
|
|
35601
|
+
} else {
|
|
35602
|
+
sendWorkspaceRuntimeUnavailable(res, runtime);
|
|
35603
|
+
}
|
|
35604
|
+
return null;
|
|
35605
|
+
}
|
|
35606
|
+
return {
|
|
35607
|
+
bridge: runtime.bridge,
|
|
35608
|
+
lane,
|
|
35609
|
+
parseClientId: parseClientIdHeader,
|
|
35610
|
+
safeBody,
|
|
35611
|
+
isWorkspaceTrusted: /* @__PURE__ */ __name(() => runtime.trusted, "isWorkspaceTrusted"),
|
|
35612
|
+
captureGenerationAssertion: /* @__PURE__ */ __name(() => {
|
|
35613
|
+
const guard = runtime.generationGuard;
|
|
35614
|
+
return guard ? () => guard.assertOpen() : void 0;
|
|
35615
|
+
}, "captureGenerationAssertion")
|
|
35616
|
+
};
|
|
35617
|
+
}, "resolveRouteDeps")
|
|
35618
|
+
});
|
|
35390
35619
|
mountWorkspaceAgentsRoutes(app, {
|
|
35391
35620
|
bridge: primaryBridge,
|
|
35392
35621
|
boundWorkspace: primaryBoundWorkspace,
|