@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.
Files changed (352) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +53 -38
  2. package/bundled/qc-helper/docs/features/channels/github.md +16 -5
  3. package/bundled/qc-helper/docs/features/channels/gitlab.md +6 -0
  4. package/bundled/qc-helper/docs/features/code-review.md +92 -24
  5. package/bundled/qc-helper/docs/features/commands.md +46 -38
  6. package/bundled/qc-helper/docs/features/hooks.md +115 -18
  7. package/bundled/qc-helper/docs/features/memory.md +27 -0
  8. package/bundled/qc-helper/docs/features/skills.md +46 -1
  9. package/bundled/qc-helper/docs/features/sub-agents.md +42 -9
  10. package/bundled/qc-helper/docs/features/tool-use-summaries.md +7 -7
  11. package/bundled/qc-helper/docs/qwen-serve.md +46 -25
  12. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +62 -31
  13. package/bundled/qc-helper/docs/support/troubleshooting.md +6 -1
  14. package/bundled/review/DESIGN.md +167 -32
  15. package/bundled/review/SKILL.md +207 -38
  16. package/chunks/{MaxSizedBox-TQBQ247P.js → MaxSizedBox-FCEK5P5K.js} +41 -38
  17. package/chunks/{StandaloneSessionPicker-2HPTKCLX.js → StandaloneSessionPicker-AT77J3PM.js} +63 -59
  18. package/chunks/{acp-startup-profiler-2C4A5ZTJ.js → acp-startup-profiler-3RICG2YW.js} +2 -2
  19. package/chunks/{acpAgent-PS6EDGH3.js → acpAgent-PBMKZ5KH.js} +664 -560
  20. package/chunks/{agent-VDOUB35F.js → agent-55W5BPK3.js} +37 -34
  21. package/chunks/{agent-headless-EO53EFS2.js → agent-headless-I7VMHI22.js} +37 -34
  22. package/chunks/{anthropicContentGenerator-OFHSZJBF.js → anthropicContentGenerator-3CAHEZBM.js} +341 -29
  23. package/chunks/{artifact-tool-RDN2W7ND.js → artifact-tool-TBOYEKTY.js} +2 -2
  24. package/chunks/{askUserQuestion-OZERWH5R.js → askUserQuestion-23Y5WZFJ.js} +2 -2
  25. package/chunks/{bridge-W7AZSRZQ.js → bridge-XNAWEDAN.js} +43 -40
  26. package/chunks/{ca-6W3SK7OQ.js → ca-NYKNH222.js} +50 -5
  27. package/chunks/{channel-management-service-5S7YCWX5.js → channel-management-service-UHX56NBO.js} +7 -7
  28. package/chunks/{channel-settings-store-JFVRSNER.js → channel-settings-store-7P6RJSSF.js} +44 -41
  29. package/chunks/{channel-worker-group-OVWGYMZS.js → channel-worker-group-NDG4WOOZ.js} +8 -8
  30. package/chunks/{channel-worker-manager-H55GKOQA.js → channel-worker-manager-ZCW6UW34.js} +8 -8
  31. package/chunks/{channel-worker-supervisor-CABBXYHK.js → channel-worker-supervisor-ATGFTZRN.js} +4 -4
  32. package/chunks/{chunk-6MPDY6ZG.js → chunk-24ER7UV4.js} +1 -1
  33. package/chunks/{chunk-QDK4F2N5.js → chunk-2DNKEBXY.js} +1 -1
  34. package/chunks/{chunk-AUOULH6Q.js → chunk-2GF3IDEK.js} +1610 -2196
  35. package/chunks/{chunk-JYBU6YUE.js → chunk-2M5N3DHY.js} +1 -1
  36. package/chunks/{chunk-LHKCY7DY.js → chunk-2UISUFHQ.js} +3 -3
  37. package/chunks/{chunk-BBIQAX4V.js → chunk-2ZCYE3F2.js} +30 -18
  38. package/chunks/{chunk-GJ2GBPBD.js → chunk-332FMXSD.js} +5 -5
  39. package/chunks/{chunk-JXVC2PL3.js → chunk-33FNCQSY.js} +2 -2
  40. package/chunks/{chunk-P755N4CS.js → chunk-3GALLNII.js} +6 -6
  41. package/chunks/{chunk-YANIWTRZ.js → chunk-3ICGQSVO.js} +1 -1
  42. package/chunks/{chunk-NBD76HUW.js → chunk-3LGZEYOF.js} +2 -2
  43. package/chunks/{chunk-E2BHWIDT.js → chunk-3RXUYQJI.js} +6 -2
  44. package/chunks/{chunk-E5Z2AVNV.js → chunk-3SH53ANB.js} +0 -11
  45. package/chunks/{chunk-N4ACHWNH.js → chunk-432XCUHF.js} +1 -1
  46. package/chunks/{chunk-JLZ3RBQG.js → chunk-44EJDGMS.js} +144 -11
  47. package/chunks/{chunk-KR32NIAN.js → chunk-4JP34TZ6.js} +10 -10
  48. package/chunks/{chunk-L2E5GFAG.js → chunk-4LKVQFHM.js} +2 -2
  49. package/chunks/{chunk-YDLJGZHL.js → chunk-4NFY2S7N.js} +0 -33
  50. package/chunks/{chunk-NHFEMWAZ.js → chunk-5WY5QEM6.js} +1 -1
  51. package/chunks/{chunk-56Z7QEAQ.js → chunk-6BUPGI3J.js} +16 -16
  52. package/chunks/{chunk-H6I4PGRV.js → chunk-6DNHLK7F.js} +4 -4
  53. package/chunks/{chunk-XQK4XXTN.js → chunk-6O5DVH27.js} +1 -1
  54. package/chunks/{chunk-2RFKHEXL.js → chunk-6PLDPT2C.js} +1 -1
  55. package/chunks/{chunk-Q5WZTTWE.js → chunk-7UPJXZLD.js} +6 -8
  56. package/chunks/{chunk-CBBP4BMC.js → chunk-7UXI6P72.js} +82 -207
  57. package/chunks/{chunk-6CQWRWUC.js → chunk-7XLPYF6B.js} +3 -3
  58. package/chunks/{chunk-VEMNQMHA.js → chunk-7ZH55K26.js} +5 -13
  59. package/chunks/{chunk-JJPKFJBT.js → chunk-A2FOI762.js} +3 -3
  60. package/chunks/{chunk-LYI2PZDK.js → chunk-A5LNZGJB.js} +2 -2
  61. package/chunks/{chunk-3APUUXRF.js → chunk-A5YZ3FA2.js} +2 -1
  62. package/chunks/{chunk-SHN4KHDK.js → chunk-A6SX5TAH.js} +3 -3
  63. package/chunks/{chunk-QCXGC7QB.js → chunk-A7PONO5G.js} +3 -3
  64. package/chunks/{chunk-SZ3KHTDR.js → chunk-AKA24BGO.js} +1 -1
  65. package/chunks/{chunk-RSVPYAGK.js → chunk-B4HXOGF5.js} +5 -5
  66. package/chunks/{chunk-D6MDRSZ6.js → chunk-BBXSRVSN.js} +22 -11
  67. package/chunks/{chunk-Q3T5KA2V.js → chunk-BFHXDAR7.js} +1 -1
  68. package/chunks/{chunk-L55JWS76.js → chunk-BGXZBI5B.js} +1 -1
  69. package/chunks/{chunk-2KKCCLPT.js → chunk-C4IUDGPI.js} +1 -1
  70. package/chunks/{chunk-MM7TH7ZM.js → chunk-CFDR3GNL.js} +18 -3
  71. package/chunks/{chunk-3F2WDAV6.js → chunk-CFVFQWFB.js} +14 -14
  72. package/chunks/{chunk-E2FN6SM7.js → chunk-CIUUYB23.js} +5 -5
  73. package/chunks/{chunk-JCJ7LKNA.js → chunk-DIEFUBV6.js} +1644 -1570
  74. package/chunks/{chunk-KWHKHSIS.js → chunk-DTAPI453.js} +8 -8
  75. package/chunks/{chunk-WWCMSZII.js → chunk-DV2GAGR7.js} +71 -7
  76. package/chunks/{chunk-675H6PLP.js → chunk-DYA25Y7U.js} +1 -1
  77. package/chunks/{chunk-3I6DUGQD.js → chunk-E4WHKETF.js} +32 -4
  78. package/chunks/{chunk-QTERJVPZ.js → chunk-EKTCKZV5.js} +1 -0
  79. package/chunks/{chunk-HX6RLYUO.js → chunk-ENOHFX2M.js} +4 -4
  80. package/chunks/{chunk-VMX5RZQH.js → chunk-EZZJHMFK.js} +18 -9
  81. package/chunks/{chunk-KXDONCPU.js → chunk-FBDRTW3I.js} +4 -4
  82. package/chunks/{chunk-FCYYAB4S.js → chunk-FHPKHXHT.js} +3 -3
  83. package/chunks/{chunk-DQ2O5QOJ.js → chunk-FJZS2MXB.js} +1 -1
  84. package/chunks/{chunk-EQNUDTL6.js → chunk-FVLPZSKH.js} +3 -3
  85. package/chunks/{chunk-2LEOZTBT.js → chunk-FYMMZV5F.js} +111 -26
  86. package/chunks/{chunk-UV6KF7T3.js → chunk-GNZ7MX73.js} +3 -3
  87. package/chunks/chunk-GOFAQQZA.js +132 -0
  88. package/chunks/{chunk-YUFIEIWC.js → chunk-GTM6IHBB.js} +2 -2
  89. package/chunks/{chunk-W3UKBMSI.js → chunk-GU5B6IF3.js} +118 -9
  90. package/chunks/{chunk-PCK4B6LR.js → chunk-GU5XWZU2.js} +1 -1
  91. package/chunks/{chunk-DEEABGH2.js → chunk-H2EDCJIM.js} +5954 -1766
  92. package/chunks/{chunk-FJ5WUMUQ.js → chunk-H36SETQS.js} +1 -1
  93. package/chunks/{chunk-6FMJLI5M.js → chunk-HFVW54NL.js} +41 -6
  94. package/chunks/chunk-HGCQ5SE7.js +136 -0
  95. package/chunks/{chunk-OFZKFPYG.js → chunk-HR4CHEQS.js} +3 -3
  96. package/chunks/{chunk-CO2U743O.js → chunk-I3GX6LGS.js} +4 -4
  97. package/chunks/{chunk-5NNHICSA.js → chunk-I7JDGNG6.js} +3 -3
  98. package/chunks/{chunk-RDJOB6S3.js → chunk-IEBT6DXF.js} +1 -1
  99. package/chunks/{chunk-EU5TBFJI.js → chunk-IV7QPMC2.js} +2 -2
  100. package/chunks/{chunk-B4AJNNOL.js → chunk-J26HHFI5.js} +1 -1
  101. package/chunks/{chunk-CNTR4GR6.js → chunk-JELIWHXD.js} +1 -1
  102. package/chunks/{chunk-FNDXMN7I.js → chunk-JQFMW7BD.js} +936 -223
  103. package/chunks/{chunk-IGTHU3T4.js → chunk-KKN2IE7Q.js} +1 -1
  104. package/chunks/{chunk-TZTAV5RH.js → chunk-KVUBYJDM.js} +2 -2
  105. package/chunks/{chunk-DUNI4EBW.js → chunk-KZXSAQYV.js} +86 -52
  106. package/chunks/chunk-LBOVL47Y.js +29 -0
  107. package/chunks/{chunk-FS674JW4.js → chunk-LBWNSLJK.js} +3 -3
  108. package/chunks/{chunk-I5BT7ADR.js → chunk-LEZFUYPM.js} +4 -4
  109. package/chunks/chunk-LLMGP5IC.js +222 -0
  110. package/chunks/{chunk-44F4LBWZ.js → chunk-LVW7BHTW.js} +56 -18
  111. package/chunks/{chunk-YGE3IXJP.js → chunk-M744OFVE.js} +1 -1
  112. package/chunks/chunk-MISUEWB4.js +8749 -0
  113. package/chunks/{chunk-7SJN2IWT.js → chunk-MJ2SKNTY.js} +5 -5
  114. package/chunks/{chunk-JE2CEOBO.js → chunk-MNTXIO6T.js} +4 -4
  115. package/chunks/{chunk-TEGJSJDF.js → chunk-MOHAWIAW.js} +2 -2
  116. package/chunks/{chunk-54YCNSK5.js → chunk-MVMBE5EH.js} +4521 -10220
  117. package/chunks/{chunk-PZEXDV3H.js → chunk-NCY2CDDX.js} +71 -43
  118. package/chunks/{chunk-TTJZAIFP.js → chunk-NJELCSFL.js} +3 -3
  119. package/chunks/{chunk-A7Y5H4TX.js → chunk-NXDJEZCI.js} +7 -7
  120. package/chunks/{chunk-PQNHRFJC.js → chunk-NYX53SV4.js} +0 -2
  121. package/chunks/{chunk-QARJNL2V.js → chunk-O2ZYHG33.js} +5 -4
  122. package/chunks/{chunk-6PQPKTXP.js → chunk-OPMLL3B3.js} +1 -1
  123. package/chunks/{chunk-PVNQRENX.js → chunk-OUQGNGIU.js} +1 -1
  124. package/chunks/{chunk-V7RNNPGC.js → chunk-P5Y23G2L.js} +18 -1
  125. package/chunks/{chunk-GURGAJTX.js → chunk-PDDYAXL2.js} +4 -1
  126. package/chunks/chunk-PWCQRLM5.js +1170 -0
  127. package/chunks/{chunk-GL4JOZXU.js → chunk-Q43MIWDH.js} +4 -4
  128. package/chunks/{chunk-V4XNUDPE.js → chunk-QFIYH5KR.js} +28 -7
  129. package/chunks/chunk-QL4TN4HS.js +59 -0
  130. package/chunks/{chunk-E6CJ2SMM.js → chunk-QMBEW7EW.js} +2 -2
  131. package/chunks/{chunk-U4VTUMMK.js → chunk-QONSRAEV.js} +1 -1
  132. package/chunks/{chunk-LOY7RWQG.js → chunk-QYPT3QUD.js} +3 -3
  133. package/chunks/{chunk-RG64CDT2.js → chunk-RJAVNGJJ.js} +131 -48
  134. package/chunks/{chunk-Z3S5EMOW.js → chunk-RPYYTL7E.js} +60 -12
  135. package/chunks/{chunk-V25K5ID7.js → chunk-SWCEYR6T.js} +1 -1
  136. package/chunks/{chunk-77V3VIKL.js → chunk-SXGNNAMC.js} +9 -9
  137. package/chunks/{chunk-7KAXXBER.js → chunk-TNQ5BEEB.js} +3 -3
  138. package/chunks/{chunk-R2XWGR75.js → chunk-TYERNYH4.js} +2 -2
  139. package/chunks/{chunk-45IOTAUS.js → chunk-U25CMJYY.js} +1 -1
  140. package/chunks/{chunk-7ULQIS27.js → chunk-UEJESCS7.js} +1 -1
  141. package/chunks/{chunk-HC45LTEN.js → chunk-UH7Z7Y45.js} +1 -1
  142. package/chunks/{chunk-P5VC5USY.js → chunk-UIKCPMID.js} +1 -1
  143. package/chunks/{chunk-CPZAH673.js → chunk-UKZEXS6K.js} +2 -0
  144. package/chunks/{chunk-HIVKI6O6.js → chunk-UO7AWUZJ.js} +9 -7
  145. package/chunks/{chunk-XP4L6KS3.js → chunk-URN76TKR.js} +2 -2
  146. package/chunks/{chunk-XUGZYLDH.js → chunk-UWSXFI6E.js} +1 -1
  147. package/chunks/{chunk-AOHY3QJ3.js → chunk-VA5NLVPT.js} +3 -3
  148. package/chunks/{chunk-FANRZEAJ.js → chunk-VWOVHOTT.js} +1 -1
  149. package/chunks/{chunk-NTDH4IML.js → chunk-W2K4OEW4.js} +7 -7
  150. package/chunks/{chunk-L32VV3ZJ.js → chunk-WH7W24EN.js} +12 -12
  151. package/chunks/{chunk-QTHQ6Z5X.js → chunk-WK4TJUEA.js} +1 -1
  152. package/chunks/{chunk-ZPZ7ZJEE.js → chunk-WUC6ZFXO.js} +1 -1
  153. package/chunks/{chunk-TIRRPCFS.js → chunk-X6QNZOTC.js} +1 -1
  154. package/chunks/{chunk-IIUGIWWY.js → chunk-XC2VAFVZ.js} +1 -1
  155. package/chunks/{chunk-D4HTUMGX.js → chunk-XC656O42.js} +3 -3
  156. package/chunks/{chunk-ZMOJ7ISP.js → chunk-XXOVLDZQ.js} +1 -1
  157. package/chunks/{chunk-THVU3RNH.js → chunk-YAVY33G4.js} +1 -1
  158. package/chunks/{chunk-PJOHNFIY.js → chunk-YIAC2OXH.js} +5 -5
  159. package/chunks/{chunk-CU47KXB5.js → chunk-YTSN63PD.js} +6 -6
  160. package/chunks/{chunk-DSFHVTWD.js → chunk-YXEVDA66.js} +2 -2
  161. package/chunks/{chunk-MB32MS4U.js → chunk-ZLJQIGCH.js} +260 -175
  162. package/chunks/{chunk-6TAASXWL.js → chunk-ZX6RZZFB.js} +3 -3
  163. package/chunks/{computer-use-5QWCFNKD.js → computer-use-BG2EHNJE.js} +37 -34
  164. package/chunks/{config-utils-WADIDWGG.js → config-utils-E3ZQTHGM.js} +4 -4
  165. package/chunks/{contextCommand-4Z7T7TUM.js → contextCommand-JAPYNKFC.js} +41 -38
  166. package/chunks/{core-runtime-6N4EFC2Q.js → core-runtime-2VCZN5QF.js} +37 -34
  167. package/chunks/{create-sub-session-AEREHZBQ.js → create-sub-session-52OUA2VU.js} +52 -43
  168. package/chunks/{create-sub-session-62YZWVAY.js → create-sub-session-J32WC64U.js} +2 -2
  169. package/chunks/{cron-create-6E7GIQTG.js → cron-create-HMFSHIAR.js} +4 -4
  170. package/chunks/{cron-delete-JD26XY3W.js → cron-delete-ZJFHOX57.js} +4 -4
  171. package/chunks/{cron-list-CUWFB44G.js → cron-list-ZEX2NBMN.js} +4 -4
  172. package/chunks/{daemon-PCNCI5YU.js → daemon-CCIX4BMG.js} +47 -6
  173. package/chunks/{daemon-status-provider-DDF7C5M7.js → daemon-status-provider-F2YGDKHR.js} +48 -45
  174. package/chunks/{daemon-trust-policy-Q4KSOJTR.js → daemon-trust-policy-XCY7JETR.js} +43 -40
  175. package/chunks/{daemon-trust-policy-monitor-V6FTE3IY.js → daemon-trust-policy-monitor-FBHB5GMQ.js} +43 -40
  176. package/chunks/{de-SY6O76BF.js → de-VL76CPLV.js} +50 -5
  177. package/chunks/{deferred-core-runtime-GHJ5GQHK.js → deferred-core-runtime-BBLJ4JUM.js} +37 -34
  178. package/chunks/display-image-2WOG27DY.js +184 -0
  179. package/chunks/{dist-ZHXOBXDN.js → dist-3BMEUGTG.js} +1 -1
  180. package/chunks/{dist-OAOC5OV4.js → dist-7JGAAQSC.js} +2 -2
  181. package/chunks/{dist-SL2LUMML.js → dist-A7H2KKUC.js} +1 -1
  182. package/chunks/{dist-ULIG4M5H.js → dist-C5U4LJKW.js} +162 -15
  183. package/chunks/{dist-2PERFI23.js → dist-DPPHJAVL.js} +3 -3
  184. package/chunks/{dist-PVEAFLHY.js → dist-HVBMEYWK.js} +1 -1
  185. package/chunks/{dist-26BIMQT6.js → dist-IKGVITP3.js} +676 -37
  186. package/chunks/{dist-WGMNT3JQ.js → dist-SFQ34F4M.js} +24 -6
  187. package/chunks/{earlyInputCapture-TQXLLISD.js → earlyInputCapture-ALVSMKP7.js} +38 -35
  188. package/chunks/{edit-FJEUV6KZ.js → edit-POB3CIHQ.js} +37 -34
  189. package/chunks/{en-NBK3JKCE.js → en-IRJ2WN5T.js} +61 -6
  190. package/chunks/{enter-worktree-7GE3TZ4P.js → enter-worktree-Q2N7UZWC.js} +37 -34
  191. package/chunks/{enterPlanMode-KR5TMPCJ.js → enterPlanMode-QGAH2GMP.js} +37 -34
  192. package/chunks/{environment-SWL3CMB3.js → environment-FE5AX2U5.js} +40 -37
  193. package/chunks/{errors-XQE7BGZV.js → errors-SLMCFLSC.js} +40 -37
  194. package/chunks/{exit-worktree-CHKTYNCV.js → exit-worktree-7WO2LPLF.js} +37 -34
  195. package/chunks/{exitPlanMode-QYAG6LWX.js → exitPlanMode-3PINWUTY.js} +37 -34
  196. package/chunks/{fast-path-Z2K7W6DC.js → fast-path-SVFFEL6U.js} +17 -4
  197. package/chunks/{fr-4KG5V7UT.js → fr-GK3HQYVB.js} +50 -5
  198. package/chunks/{gemini-YU4XKEDG.js → gemini-QECJNKNJ.js} +151 -90
  199. package/chunks/{geminiContentGenerator-ZZX6NBO4.js → geminiContentGenerator-ZFAZKT6R.js} +6 -6
  200. package/chunks/{glob-VYF5CXSX.js → glob-GXUNQYNR.js} +37 -34
  201. package/chunks/{goal-tools-HGO6VXPB.js → goal-tools-SPQ5M6D3.js} +3 -3
  202. package/chunks/{grep-5DP5ZUTW.js → grep-LVU5KBCV.js} +37 -34
  203. package/chunks/{handleAutoUpdate-UVBJ56DL.js → handleAutoUpdate-MPDHQY72.js} +43 -40
  204. package/chunks/{i18n-UQNYHEUD.js → i18n-LEYRN6RV.js} +39 -36
  205. package/chunks/{image-gen-WHPIZNWF.js → image-gen-4T2D4PTP.js} +9 -9
  206. package/chunks/{initializer-GMIICF4W.js → initializer-PQV2THBS.js} +44 -41
  207. package/chunks/{installationInfo-4MGG4WVI.js → installationInfo-XC3HXLTX.js} +38 -35
  208. package/chunks/{ja-F3GSQXMF.js → ja-3FA46IKD.js} +50 -5
  209. package/chunks/{keychain-token-storage-IKO4G53C.js → keychain-token-storage-7BT4TQ2A.js} +2 -2
  210. package/chunks/{kittyProtocolDetector-MBRTDRBK.js → kittyProtocolDetector-BFLAKYXH.js} +1 -1
  211. package/chunks/{list-CPN2W334.js → list-AQBTPZRG.js} +46 -43
  212. package/chunks/{list-agents-PXJ7ZUFB.js → list-agents-TWEGRJWO.js} +2 -2
  213. package/chunks/{loadedSettingsAdapter-ZQAV5NDO.js → loadedSettingsAdapter-EZYPDX2J.js} +43 -40
  214. package/chunks/{loggingContentGenerator-5E7W4IEP.js → loggingContentGenerator-WD6YWU7Q.js} +52 -37
  215. package/chunks/{loop-wakeup-Y26NQZ5I.js → loop-wakeup-6LLEOQYV.js} +5 -5
  216. package/chunks/{ls-ONQTTMQR.js → ls-H5WX22VK.js} +4 -4
  217. package/chunks/{lsp-YGHHRGMD.js → lsp-G6FXYEIS.js} +2 -2
  218. package/chunks/{managed-npm-update-MKKAXYXA.js → managed-npm-update-BMM57CHD.js} +40 -37
  219. package/chunks/{mcp-V5NTJF6X.js → mcp-FMI6NCWA.js} +43 -40
  220. package/chunks/{monitor-CO3ASY6E.js → monitor-PZJOYAA2.js} +37 -34
  221. package/chunks/nonInteractiveCli-QPX6R4LL.js +152 -0
  222. package/chunks/{notebook-edit-Z7AEE6FM.js → notebook-edit-GZF2SKTQ.js} +37 -34
  223. package/chunks/{openaiContentGenerator-CA3MQOP3.js → openaiContentGenerator-ZPLCFAAG.js} +18 -18
  224. package/chunks/{pidfile-NL7MKDRU.js → pidfile-PCADVJQW.js} +38 -35
  225. package/chunks/{processUtils-PB5K2DYH.js → processUtils-FKUVQVEU.js} +2 -2
  226. package/chunks/{pt-EQ33KWEN.js → pt-3AOBKPIJ.js} +50 -5
  227. package/chunks/{qwenContentGenerator-JYFNDCOS.js → qwenContentGenerator-2Y4R6YLB.js} +42 -40
  228. package/chunks/{qwenOAuth2-W2ALKQDD.js → qwenOAuth2-UCEHY3I2.js} +8 -8
  229. package/chunks/{read-file-IEOR5H5W.js → read-file-DYHDFVAS.js} +10 -10
  230. package/chunks/{read-mcp-resource-U2IJN5HM.js → read-mcp-resource-DRZSI3HE.js} +2 -2
  231. package/chunks/{record-artifact-MGPJ7EG4.js → record-artifact-IPIRWMFY.js} +3 -3
  232. package/chunks/{resumeHistoryUtils-BNBTP5AS.js → resumeHistoryUtils-5JS6R3AJ.js} +45 -42
  233. package/chunks/{ripGrep-UMQODKEB.js → ripGrep-2QOR3ZQT.js} +37 -34
  234. package/chunks/{ru-7OZAUKGG.js → ru-VJRAMC4W.js} +50 -5
  235. package/chunks/{run-qwen-serve-RN2R6QQW.js → run-qwen-serve-MTVRAUBR.js} +271 -60
  236. package/chunks/{runtime-QFJ2MJF5.js → runtime-DQGE2DYR.js} +50 -45
  237. package/chunks/{scheduler-AMYUFOZI.js → scheduler-BXIZQ4OO.js} +37 -34
  238. package/chunks/{sdk-exporters-http-4BQANSJ6.js → sdk-exporters-http-IKNWQJNV.js} +2 -2
  239. package/chunks/{sdk-impl-Z4VXWVFX.js → sdk-impl-7CUUMQDB.js} +2 -2
  240. package/chunks/{send-message-PMP4ATVM.js → send-message-LHJLVWFD.js} +5 -4
  241. package/chunks/{serve-EIIYJVX3.js → serve-D4GYHFLL.js} +44 -40
  242. package/chunks/{server-EP2LLAPD.js → server-S22MLWTJ.js} +618 -387
  243. package/chunks/{session-GMPZBLOW.js → session-AHNM6YXP.js} +151 -87
  244. package/chunks/{settings-LN7RNKBS.js → settings-77MDDUSX.js} +42 -39
  245. package/chunks/{shell-EM2OWU5X.js → shell-DLD2VQTQ.js} +37 -34
  246. package/chunks/{skill-T5VPSK73.js → skill-3B2PAQE4.js} +27 -14
  247. package/chunks/{skill-settings-GMR3GMNY.js → skill-settings-STR5NF4B.js} +42 -39
  248. package/chunks/{spawnChannel-YPCU62DI.js → spawnChannel-TOWYOVDZ.js} +39 -36
  249. package/chunks/{standalone-update-JAKIM2NF.js → standalone-update-F6ZWABD7.js} +40 -37
  250. package/chunks/{startInteractiveUI-YETQWGYF.js → startInteractiveUI-QR7MHDX7.js} +1829 -1036
  251. package/chunks/{syntheticOutput-D7E6ZFKR.js → syntheticOutput-EYL7DWO7.js} +3 -3
  252. package/chunks/{task-create-NFCYD43L.js → task-create-4ALZMGP5.js} +10 -9
  253. package/chunks/{task-list-TAVMGEVD.js → task-list-6CVQPORX.js} +6 -6
  254. package/chunks/{task-stop-ZDF2UJRM.js → task-stop-Y5ZTFVRX.js} +2 -2
  255. package/chunks/{task-update-6L7LHGEX.js → task-update-IKCEEWJ6.js} +10 -9
  256. package/chunks/{team-create-LFJ6HGNY.js → team-create-LQVIAVRF.js} +37 -34
  257. package/chunks/{team-delete-DPGGRQBU.js → team-delete-CE7DC53R.js} +6 -6
  258. package/chunks/{team-plan-approval-C2KLSDGO.js → team-plan-approval-G5PUNI52.js} +37 -34
  259. package/chunks/terminal-image-renderer-33GSM55L.js +90 -0
  260. package/chunks/{theme-manager-JQ3ZGBP5.js → theme-manager-DBFM5QOG.js} +38 -35
  261. package/chunks/{todoWrite-2UO5G6G6.js → todoWrite-FTZWQRZH.js} +108 -36
  262. package/chunks/{tool-search-FAZBFRJZ.js → tool-search-RGG7BBC4.js} +13 -12
  263. package/chunks/{total-session-admission-5CALIVYO.js → total-session-admission-LY3RMXXI.js} +44 -41
  264. package/chunks/{trustedFolders-KOPSP44S.js → trustedFolders-3M4IQ6K6.js} +39 -36
  265. package/chunks/{update-relaunch-6QL2TICS.js → update-relaunch-G3CMSX3M.js} +5 -5
  266. package/chunks/{updateCheck-4Q6RIKFW.js → updateCheck-ZKFGBDTG.js} +42 -39
  267. package/chunks/{useAutoAcceptIndicator-Q5BMKZV3.js → useAutoAcceptIndicator-7SAFZK5H.js} +47 -44
  268. package/chunks/{validateNonInterActiveAuth-GKOC5F6Z.js → validateNonInterActiveAuth-F2K6UGE4.js} +88 -84
  269. package/chunks/{version-VSATY2LD.js → version-KM6MYV2D.js} +1 -1
  270. package/chunks/{web-fetch-JCLKL6NL.js → web-fetch-SM4LZHRS.js} +13 -13
  271. package/chunks/{web-search-DSQTFUBX.js → web-search-OGKZNDAC.js} +8 -8
  272. package/chunks/{workflow-M6QAVKVJ.js → workflow-HU365RFR.js} +419 -304
  273. package/chunks/{workspace-providers-status-YKLTLMJA.js → workspace-providers-status-QKKXQHL7.js} +46 -43
  274. package/chunks/{workspace-registration-store-5DMGKU64.js → workspace-registration-store-7J7KOXFD.js} +2 -2
  275. package/chunks/{workspace-registry-PTYUSYXX.js → workspace-registry-KC66O6DH.js} +44 -41
  276. package/chunks/{workspace-service-25ML3T47.js → workspace-service-TEV5Q2AA.js} +51 -48
  277. package/chunks/{workspace-skills-status-YKZWOYRX.js → workspace-skills-status-VRL55OMU.js} +45 -42
  278. package/chunks/{workspace-trust-reconciler-5FI2S3OS.js → workspace-trust-reconciler-COC5M7CY.js} +50 -47
  279. package/chunks/{write-file-AY7VLP5X.js → write-file-3SO2BMNO.js} +37 -34
  280. package/chunks/{zh-H3YDK5QW.js → zh-ARWDLDLR.js} +58 -6
  281. package/chunks/{zh-TW-JYCP7XUA.js → zh-TW-Y4RGI3P7.js} +58 -6
  282. package/chunks/{zoom-image-S4LJZMD5.js → zoom-image-O3RWTVKV.js} +10 -10
  283. package/cli.js +32 -48
  284. package/locales/ca.js +68 -4
  285. package/locales/de.js +70 -4
  286. package/locales/en.js +84 -6
  287. package/locales/fr.js +72 -4
  288. package/locales/ja.js +69 -4
  289. package/locales/pt.js +68 -4
  290. package/locales/ru.js +71 -4
  291. package/locales/zh-TW.js +74 -6
  292. package/locales/zh.js +74 -6
  293. package/package.json +3 -3
  294. package/web-shell/assets/{arc-xjArKHU2.js → arc-KuwiZ67W.js} +1 -1
  295. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BgrQDNYG.js → architectureDiagram-3BPJPVTR-Cppop6HB.js} +1 -1
  296. package/web-shell/assets/{blockDiagram-GPEHLZMM-CXxWC-1_.js → blockDiagram-GPEHLZMM-DQ6HT72s.js} +1 -1
  297. package/web-shell/assets/{c4Diagram-AAUBKEIU-Dx1tLm3v.js → c4Diagram-AAUBKEIU-B8TX_Mh-.js} +1 -1
  298. package/web-shell/assets/channel-BZd6Ile0.js +1 -0
  299. package/web-shell/assets/{chunk-2J33WTMH-CBxjogVR.js → chunk-2J33WTMH-B2WBUTp8.js} +1 -1
  300. package/web-shell/assets/{chunk-4BX2VUAB-izb-rY5W.js → chunk-4BX2VUAB-DXUsWC6O.js} +1 -1
  301. package/web-shell/assets/{chunk-55IACEB6-NzLyvSb8.js → chunk-55IACEB6-DtB-6cyk.js} +1 -1
  302. package/web-shell/assets/{chunk-727SXJPM-DVyKb0dl.js → chunk-727SXJPM-B-PhPyC3.js} +1 -1
  303. package/web-shell/assets/{chunk-AQP2D5EJ-BtqL7NzB.js → chunk-AQP2D5EJ-DNaTFMSC.js} +1 -1
  304. package/web-shell/assets/{chunk-FMBD7UC4-iNpdKIO0.js → chunk-FMBD7UC4-DZ345tFf.js} +1 -1
  305. package/web-shell/assets/{chunk-ND2GUHAM-DI7cbFmX.js → chunk-ND2GUHAM-BR_EpgzJ.js} +1 -1
  306. package/web-shell/assets/{chunk-QZHKN3VN-3Y_-xFYs.js → chunk-QZHKN3VN-BTU-0gDT.js} +1 -1
  307. package/web-shell/assets/classDiagram-4FO5ZUOK-B7c-TqtK.js +1 -0
  308. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B7c-TqtK.js +1 -0
  309. package/web-shell/assets/{cose-bilkent-S5V4N54A--raRatZn.js → cose-bilkent-S5V4N54A-BmsKBCNt.js} +1 -1
  310. package/web-shell/assets/{dagre-BM42HDAG-B8SU70mO.js → dagre-BM42HDAG-Ba8YWdDC.js} +1 -1
  311. package/web-shell/assets/{diagram-2AECGRRQ-ewgoakXo.js → diagram-2AECGRRQ-CCt2SnI6.js} +1 -1
  312. package/web-shell/assets/{diagram-5GNKFQAL-Bm_JLTnS.js → diagram-5GNKFQAL-BVTLXEU7.js} +1 -1
  313. package/web-shell/assets/{diagram-KO2AKTUF-DEIUjUy9.js → diagram-KO2AKTUF-DpDAVCYV.js} +1 -1
  314. package/web-shell/assets/{diagram-LMA3HP47-C2Wmrpj-.js → diagram-LMA3HP47-8ljXg-TB.js} +1 -1
  315. package/web-shell/assets/{diagram-OG6HWLK6-CtYe6bFx.js → diagram-OG6HWLK6-JAXfQSmd.js} +1 -1
  316. package/web-shell/assets/{erDiagram-TEJ5UH35-DfpHcWLV.js → erDiagram-TEJ5UH35-CUeakG6k.js} +1 -1
  317. package/web-shell/assets/{flowDiagram-I6XJVG4X-CAiUhio5.js → flowDiagram-I6XJVG4X-Cd4Wrdwv.js} +1 -1
  318. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CYc7ezr4.js → ganttDiagram-6RSMTGT7-C0nMFvH_.js} +1 -1
  319. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-70lbkcRS.js → gitGraphDiagram-PVQCEYII-uKk88n_L.js} +1 -1
  320. package/web-shell/assets/index-BXGtjHs5.js +1756 -0
  321. package/web-shell/assets/{index-Ww86nT9f.js → index-C1UWBJSX.js} +1 -1
  322. package/web-shell/assets/index-WxSvj2tI.css +5 -0
  323. package/web-shell/assets/{infoDiagram-5YYISTIA-C7e8DWPa.js → infoDiagram-5YYISTIA-GfPN17hR.js} +1 -1
  324. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BYLr2op-.js → ishikawaDiagram-YF4QCWOH-CDbWTcGa.js} +1 -1
  325. package/web-shell/assets/{journeyDiagram-JHISSGLW-hEibAHKX.js → journeyDiagram-JHISSGLW-J8TvvVFz.js} +1 -1
  326. package/web-shell/assets/{kanban-definition-UN3LZRKU-F2rt8Uhp.js → kanban-definition-UN3LZRKU-Ds_ndLrs.js} +1 -1
  327. package/web-shell/assets/{linear-DPhyNezd.js → linear-DuL9O4i3.js} +1 -1
  328. package/web-shell/assets/{mermaid.core-ZUtnug0n.js → mermaid.core-DtK4PsQB.js} +5 -5
  329. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DDWcMoi8.js → mindmap-definition-RKZ34NQL-DD0r7MS3.js} +1 -1
  330. package/web-shell/assets/{pieDiagram-4H26LBE5-CTRKzw1_.js → pieDiagram-4H26LBE5-CxGPZ8Q-.js} +1 -1
  331. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CAEwYG_z.js → quadrantDiagram-W4KKPZXB-Ds7Buxed.js} +1 -1
  332. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CRjnH9D9.js → requirementDiagram-4Y6WPE33-DIx28ph5.js} +1 -1
  333. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-LPQT_sOd.js → sankeyDiagram-5OEKKPKP-AxdAYcVX.js} +1 -1
  334. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Ht2Iqvb0.js → sequenceDiagram-3UESZ5HK-CojoXAZ5.js} +1 -1
  335. package/web-shell/assets/{stateDiagram-AJRCARHV-CIUdqOXu.js → stateDiagram-AJRCARHV-Dy1WN3mi.js} +1 -1
  336. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BaTNMz02.js +1 -0
  337. package/web-shell/assets/{timeline-definition-PNZ67QCA-BcilneZF.js → timeline-definition-PNZ67QCA-DeWe_43M.js} +1 -1
  338. package/web-shell/assets/{vennDiagram-CIIHVFJN-BljwiiH1.js → vennDiagram-CIIHVFJN-BN8PVlFq.js} +1 -1
  339. package/web-shell/assets/{wardley-L42UT6IY-DeKjkYjq.js → wardley-L42UT6IY-CbjV_1hf.js} +1 -1
  340. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-L3U1H7KG.js → wardleyDiagram-YWT4CUSO-D2mw84_p.js} +1 -1
  341. package/web-shell/assets/{xychartDiagram-2RQKCTM6-IJnWsgMT.js → xychartDiagram-2RQKCTM6-er9CTQXi.js} +1 -1
  342. package/web-shell/index.html +2 -2
  343. package/chunks/chunk-4KP2F2TE.js +0 -82
  344. package/chunks/chunk-HGT6JR3U.js +0 -177
  345. package/chunks/nonInteractiveCli-ZJYEOO7U.js +0 -148
  346. package/web-shell/assets/channel-B1cyk94G.js +0 -1
  347. package/web-shell/assets/classDiagram-4FO5ZUOK-BpBYZoRE.js +0 -1
  348. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BpBYZoRE.js +0 -1
  349. package/web-shell/assets/index-C1k3PDuU.css +0 -5
  350. package/web-shell/assets/index-DZLIXILO.js +0 -1750
  351. package/web-shell/assets/insert-DmRbh9Rv.svg +0 -1
  352. 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-JLZ3RBQG.js";
20
+ } from "./chunk-44EJDGMS.js";
20
21
  import {
21
22
  openQwenAsrRealtimeStream,
22
23
  openVoiceStream,
23
24
  openVoiceStreamWithRetry
24
- } from "./chunk-YUFIEIWC.js";
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-PZEXDV3H.js";
37
+ } from "./chunk-NCY2CDDX.js";
37
38
  import {
38
39
  OBSERVED_CONTACT_MAX_FRESH_WITHIN_SECONDS,
39
40
  ObservedChannelContactStore
40
- } from "./chunk-675H6PLP.js";
41
- import "./chunk-YDLJGZHL.js";
42
- import "./chunk-PCK4B6LR.js";
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-QTERJVPZ.js";
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-MB32MS4U.js";
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-BBIQAX4V.js";
111
- import "./chunk-L55JWS76.js";
115
+ } from "./chunk-2ZCYE3F2.js";
116
+ import "./chunk-BGXZBI5B.js";
112
117
  import {
113
118
  evaluateDaemonWorkspaceTrust,
114
119
  readDaemonTrustPolicySnapshot
115
- } from "./chunk-TTJZAIFP.js";
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-56Z7QEAQ.js";
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-YANIWTRZ.js";
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-7KAXXBER.js";
149
+ } from "./chunk-TNQ5BEEB.js";
145
150
  import {
146
151
  isVoiceEnabled,
147
152
  isVoiceMode,
148
153
  readVoiceModel
149
- } from "./chunk-P5VC5USY.js";
150
- import "./chunk-CNTR4GR6.js";
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-SZ3KHTDR.js";
165
+ } from "./chunk-AKA24BGO.js";
160
166
  import {
161
167
  WorkspaceGenerationClosedError,
162
168
  createSingleWorkspaceRegistry,
163
169
  createWorkspaceSessionOwnerIndex
164
- } from "./chunk-JYBU6YUE.js";
170
+ } from "./chunk-2M5N3DHY.js";
165
171
  import "./chunk-GRC5HGPI.js";
166
172
  import {
167
- assertValidChannelSecretUpdates
168
- } from "./chunk-EQNUDTL6.js";
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-GL4JOZXU.js";
180
+ } from "./chunk-Q43MIWDH.js";
172
181
  import "./chunk-VXZBKKQR.js";
173
- import "./chunk-Q5WZTTWE.js";
174
- import "./chunk-E5Z2AVNV.js";
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-44F4LBWZ.js";
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-XUGZYLDH.js";
197
+ import "./chunk-UWSXFI6E.js";
189
198
  import {
190
199
  createWorkspaceProvidersStatusProvider
191
- } from "./chunk-NTDH4IML.js";
200
+ } from "./chunk-W2K4OEW4.js";
192
201
  import {
193
202
  getAuthTypeFromEnv,
194
203
  resolveCliGenerationConfig
195
- } from "./chunk-6TAASXWL.js";
204
+ } from "./chunk-ZX6RZZFB.js";
196
205
  import {
197
206
  snapshotProcessEnv
198
- } from "./chunk-VEMNQMHA.js";
207
+ } from "./chunk-7ZH55K26.js";
199
208
  import {
200
209
  STATUS_SCHEMA_VERSION,
201
210
  createIdleWorkspaceMemoryStatus,
202
211
  mapDomainErrorToErrorKind
203
- } from "./chunk-GURGAJTX.js";
204
- import "./chunk-Z4X5MTRT.js";
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-I5BT7ADR.js";
215
- import "./chunk-FANRZEAJ.js";
218
+ } from "./chunk-LEZFUYPM.js";
216
219
  import {
217
220
  supportedChannelCatalog
218
- } from "./chunk-KWHKHSIS.js";
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-LYI2PZDK.js";
228
- import "./chunk-CPZAH673.js";
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-B4AJNNOL.js";
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-2RFKHEXL.js";
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-U4VTUMMK.js";
281
+ } from "./chunk-QONSRAEV.js";
278
282
  import {
279
283
  normalizeWorkerDiagnostic
280
- } from "./chunk-6MPDY6ZG.js";
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-JCJ7LKNA.js";
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-W3UKBMSI.js";
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-3F2WDAV6.js";
314
- import "./chunk-EU5TBFJI.js";
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-P755N4CS.js";
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-54YCNSK5.js";
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-AOHY3QJ3.js";
410
- import "./chunk-5NNHICSA.js";
411
- import "./chunk-SHN4KHDK.js";
412
- import "./chunk-JXVC2PL3.js";
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-ZMOJ7ISP.js";
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-TEGJSJDF.js";
429
- import "./chunk-TIRRPCFS.js";
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-4KP2F2TE.js";
434
- import "./chunk-3APUUXRF.js";
435
- import "./chunk-THVU3RNH.js";
436
- import "./chunk-LHKCY7DY.js";
437
- import "./chunk-6FMJLI5M.js";
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-CBBP4BMC.js";
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-N4ACHWNH.js";
447
- import "./chunk-ZPJWUGCS.js";
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-D4HTUMGX.js";
458
+ } from "./chunk-XC656O42.js";
457
459
  import "./chunk-NAVJD2PQ.js";
458
- import "./chunk-LOY7RWQG.js";
459
- import "./chunk-E6CJ2SMM.js";
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-6CQWRWUC.js";
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-Z3S5EMOW.js";
476
+ } from "./chunk-RPYYTL7E.js";
475
477
  import "./chunk-2J3OJGTL.js";
476
478
  import "./chunk-P3QQPMQA.js";
477
- import "./chunk-XQK4XXTN.js";
479
+ import "./chunk-6O5DVH27.js";
478
480
  import "./chunk-GLCZKT5V.js";
479
- import "./chunk-QDK4F2N5.js";
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-DUNI4EBW.js";
494
+ } from "./chunk-KZXSAQYV.js";
493
495
  import "./chunk-VGC4I5JJ.js";
494
- import "./chunk-3I6DUGQD.js";
495
- import "./chunk-7ULQIS27.js";
496
- import "./chunk-MM7TH7ZM.js";
497
- import "./chunk-HIVKI6O6.js";
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-Q3T5KA2V.js";
501
- import "./chunk-R2XWGR75.js";
502
- import "./chunk-HC45LTEN.js";
503
- import "./chunk-QARJNL2V.js";
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-E2BHWIDT.js";
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 mountWorkspaceMemoryRememberRoutes(app, deps) {
4863
+ function mountWorkspaceMemoryRememberRoutesAt(app, basePath, mutate, resolveRouteDeps) {
4858
4864
  app.post(
4859
- "/workspace/memory/remember",
4860
- deps.mutate({ strict: true }),
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
- "/workspace/memory/remember/:taskId",
4926
- deps.mutate({ strict: true }),
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
- "/workspace/memory/forget",
4950
- deps.mutate({ strict: true }),
4951
- async (req, res) => {
4952
- const assertGenerationOpen = deps.captureGenerationAssertion?.();
4953
- if (!requireOpenGeneration(assertGenerationOpen, res)) return;
4954
- if (!requireTrustedWorkspace(deps, res)) return;
4955
- const body = deps.safeBody(req);
4956
- const query = body["query"];
4957
- const trimmedQuery = typeof query === "string" ? query.trim() : "";
4958
- if (!trimmedQuery) {
4959
- res.status(400).json({
4960
- error: "`query` must be a non-empty string",
4961
- code: "invalid_query"
4962
- });
4963
- return;
4964
- }
4965
- if (Buffer.byteLength(trimmedQuery, "utf8") > MAX_REMEMBER_CONTENT_BYTES) {
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
- "/workspace/memory/forget/:taskId",
5004
- deps.mutate({ strict: true }),
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
- "/workspace/memory/dream",
5028
- deps.mutate({ strict: true }),
5029
- async (req, res) => {
5030
- const assertGenerationOpen = deps.captureGenerationAssertion?.();
5031
- if (!requireOpenGeneration(assertGenerationOpen, res)) return;
5032
- if (!requireTrustedWorkspace(deps, res)) return;
5033
- const originatorClientId = validateOriginatorClientId(deps, req, res);
5034
- if (originatorClientId === null) return;
5035
- if (!await validateManagedMemoryAvailable(
5036
- deps,
5037
- res,
5038
- "dream",
5039
- assertGenerationOpen
5040
- ))
5041
- return;
5042
- if (!requireOpenGeneration(assertGenerationOpen, res)) return;
5043
- try {
5044
- const task = deps.lane.enqueueDream({
5045
- ...originatorClientId ? { originatorClientId } : {},
5046
- ...assertGenerationOpen ? { assertGenerationOpen } : {}
5047
- });
5048
- res.status(202).json(task);
5049
- } catch (err) {
5050
- const code = workspaceMemoryFailureCode(
5051
- err,
5052
- "dream_failed",
5053
- logWorkspaceMemoryExtractionError
5054
- );
5055
- res.status(publicErrorStatus(code)).json({
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
- if (!task) {
5077
- res.status(404).json({
5078
- error: "Workspace memory dream task not found",
5079
- code: "dream_task_not_found"
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
- let branchMeta;
22837
- let branchBaseCommit;
22838
- const rawBranch = body["branch"];
22839
- if (rawBranch !== void 0 && rawBranch !== null) {
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: "`branch` and `worktree` are mutually exclusive",
22843
- code: "branch_and_worktree_conflict"
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
- if (typeof rawBranch !== "object" || Array.isArray(rawBranch)) {
22848
- res.status(400).json({
22849
- error: '`branch` must be an object (e.g. `{"name":"feat/my-feature"}`)',
22850
- code: "invalid_branch"
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 branchReq = rawBranch;
22855
- const branchName = branchReq["name"];
22856
- if (typeof branchName !== "string" || branchName.length === 0) {
22857
- res.status(400).json({
22858
- error: "`branch.name` must be a non-empty string",
22859
- code: "branch_invalid_name"
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 (/[^\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(
22864
- (c) => Buffer.byteLength(c, "utf8") > MAX_BRANCH_COMPONENT_BYTES
22865
- )) {
22866
- res.status(400).json({
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
- const existingBranchSession = activeBranchSessions.get(workspaceCwd);
22873
- if (existingBranchSession) {
22874
- try {
22875
- runtime.bridge.getSessionSummary(existingBranchSession);
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: "A branch session is already active for this workspace",
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: existingBranchSession
23004
+ existingSessionId: sharedCheckoutSession.sessionId
22880
23005
  });
22881
23006
  return;
23007
+ }
23008
+ let wtService;
23009
+ try {
23010
+ wtService = new GitWorktreeService(workspaceCwd);
22882
23011
  } catch {
22883
- activeBranchSessions.delete(workspaceCwd);
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 sharedCheckoutSession = runtime.bridge.listWorkspaceSessions(workspaceCwd).find((session) => !session.worktree && session.clientCount > 0);
22887
- if (sharedCheckoutSession) {
22888
- res.status(409).json({
22889
- error: "Another session is already active in this workspace; creating a branch would move its shared checkout",
22890
- code: "branch_session_conflict",
22891
- existingSessionId: sharedCheckoutSession.sessionId
22892
- });
22893
- return;
22894
- }
22895
- let wtService;
22896
- try {
22897
- wtService = new GitWorktreeService(workspaceCwd);
22898
- } catch {
22899
- res.status(500).json({
22900
- error: "Failed to initialize git service",
22901
- code: "branch_init_failed"
22902
- });
22903
- return;
22904
- }
22905
- if (!await wtService.isGitRepository()) {
22906
- res.status(400).json({
22907
- error: "Branch creation requires a git repository",
22908
- code: "branch_not_git_repo"
22909
- });
22910
- return;
22911
- }
22912
- if (await branchExists(workspaceCwd, branchName)) {
22913
- res.status(409).json({
22914
- error: `Branch "${branchName}" already exists`,
22915
- code: "branch_already_exists"
22916
- });
22917
- return;
22918
- }
22919
- let dirty;
22920
- try {
22921
- dirty = await isDirtyTree(workspaceCwd);
22922
- } catch {
22923
- res.status(500).json({
22924
- error: "Failed to check working tree status",
22925
- code: "branch_status_failed"
22926
- });
22927
- return;
22928
- }
22929
- if (dirty) {
22930
- res.status(409).json({
22931
- error: "Uncommitted changes detected. Commit or stash first.",
22932
- code: "branch_dirty_tree"
22933
- });
22934
- return;
22935
- }
22936
- const baseCommit = await getHeadCommit(workspaceCwd);
22937
- const baseBranch = await wtService.getCurrentBranch().catch(() => "HEAD");
22938
- if (inFlightBranchWorkspaces.has(workspaceCwd) || activeBranchSessions.has(workspaceCwd)) {
22939
- res.status(409).json({
22940
- error: "A branch session is already being created for this workspace",
22941
- code: "branch_session_conflict"
22942
- });
22943
- return;
22944
- }
22945
- inFlightBranchWorkspaces.add(workspaceCwd);
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
- const baseBranch = await wtService.getCurrentBranch().catch(() => void 0);
23015
- const wtResult = await wtService.createUserWorktree(slug, baseBranch);
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 = 20;
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({ strict: true }),
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,