@organizaone/o1-code 0.19.4 → 0.20.1

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 (364) hide show
  1. package/bundled/qc-helper/docs/features/sub-agents.md +29 -0
  2. package/chunks/{MaxSizedBox-IEWPEYLM.js → MaxSizedBox-K453N7OJ.js} +67 -67
  3. package/chunks/{StandaloneSessionPicker-O5XGGHSV.js → StandaloneSessionPicker-7LEKR6B6.js} +91 -90
  4. package/chunks/{acp-subagent-executor-SARFPLBX.js → acp-subagent-executor-KOZFCXR6.js} +70 -70
  5. package/chunks/{acpAgent-WI2WIHJ2.js → acpAgent-TXF2EESQ.js} +152 -151
  6. package/chunks/{agent-TRD3DVKW.js → agent-NTOX6TWC.js} +46 -46
  7. package/chunks/{agent-headless-L3ODBSIA.js → agent-headless-32TGYQU2.js} +46 -46
  8. package/chunks/{all-providers-Q4UTI7X7.js → all-providers-Q3J2KNYY.js} +2 -2
  9. package/chunks/{anthropicContentGenerator-R5EZMIUD.js → anthropicContentGenerator-C4H5D7AR.js} +10 -10
  10. package/chunks/{artifact-tool-YPTGDOWY.js → artifact-tool-VKDCERQZ.js} +1 -1
  11. package/chunks/{askUserQuestion-SVDY6XLX.js → askUserQuestion-NWK5LQIZ.js} +2 -2
  12. package/chunks/{bridge-CWUXZNK2.js → bridge-MA3C46FT.js} +71 -71
  13. package/chunks/{bwrap-execution-PXKLC4L6.js → bwrap-execution-A5QZJK2I.js} +7 -7
  14. package/chunks/{caption-audio-EK6K45W3.js → caption-audio-OLLSPHW7.js} +3 -3
  15. package/chunks/{caption-image-WDXLQK6T.js → caption-image-ARAQIU6W.js} +3 -3
  16. package/chunks/{chunk-U3KIMPCC.js → chunk-2F3GZ6WG.js} +1 -1
  17. package/chunks/{chunk-IZSIFV6S.js → chunk-2I2NK33A.js} +1 -1
  18. package/chunks/{chunk-YCTMVTDP.js → chunk-2SMHE6PC.js} +1 -1
  19. package/chunks/{chunk-OBKNDDZW.js → chunk-2UDEKBYA.js} +54 -54
  20. package/chunks/{chunk-WK44MSGW.js → chunk-32722SNN.js} +1 -1
  21. package/chunks/{chunk-CFFFKDAX.js → chunk-3I7PGVYC.js} +1 -1
  22. package/chunks/{chunk-XC6BAHJR.js → chunk-3K7BQWZY.js} +1 -1
  23. package/chunks/{chunk-E554MWZ4.js → chunk-3SCPHVRF.js} +2 -2
  24. package/chunks/chunk-3UJ6A45H.js +259 -0
  25. package/chunks/{chunk-FRDIFAE7.js → chunk-3YBMUB43.js} +1 -1
  26. package/chunks/{chunk-VUJ4WYBZ.js → chunk-4P64F4DP.js} +1 -1
  27. package/chunks/{chunk-PCN4NLQX.js → chunk-5MP3GGWM.js} +2 -2
  28. package/chunks/{chunk-6XUAD5G6.js → chunk-62UWQRWK.js} +3 -3
  29. package/chunks/{chunk-OSMXNPJP.js → chunk-6CW53FOJ.js} +2 -2
  30. package/chunks/{chunk-7ONVZOIL.js → chunk-6UDLEDID.js} +1 -1
  31. package/chunks/{chunk-53B5T577.js → chunk-7ADYEHKM.js} +1 -1
  32. package/chunks/{chunk-GJFAQ4TA.js → chunk-7CDZR7TE.js} +5 -5
  33. package/chunks/{chunk-S3ERVFHU.js → chunk-7HCWHQSP.js} +9 -9
  34. package/chunks/{chunk-D5LBASZ7.js → chunk-7QFTUN62.js} +1 -1
  35. package/chunks/{chunk-Z3JO7QH2.js → chunk-A55LB5TM.js} +1 -1
  36. package/chunks/{chunk-XOVXSDNN.js → chunk-AGTM6524.js} +2 -2
  37. package/chunks/{chunk-LZPTOCB6.js → chunk-AIU3JWUX.js} +9 -9
  38. package/chunks/{chunk-RGEOMZSI.js → chunk-ASP55J6A.js} +14 -14
  39. package/chunks/{chunk-WN23CFGN.js → chunk-ASQLIG2L.js} +19 -19
  40. package/chunks/{chunk-FIXBGZLC.js → chunk-ASWPB74Q.js} +3 -3
  41. package/chunks/{chunk-KNSZB75B.js → chunk-BEZWXDOT.js} +10 -10
  42. package/chunks/{chunk-Q4SBLB6E.js → chunk-BLABAT4U.js} +2 -2
  43. package/chunks/{chunk-YO3SEHXM.js → chunk-BNJ3IJB7.js} +1 -1
  44. package/chunks/{chunk-74XOBBIF.js → chunk-BP4CPYAM.js} +1 -1
  45. package/chunks/{chunk-73IWVPN4.js → chunk-BRW37PKP.js} +69 -69
  46. package/chunks/{chunk-UOO4TFQV.js → chunk-BZRPH7VF.js} +16 -16
  47. package/chunks/{chunk-TD372APW.js → chunk-CCW6IQGJ.js} +5 -5
  48. package/chunks/{chunk-OMOKTMD5.js → chunk-CDXXQLVZ.js} +5 -5
  49. package/chunks/{chunk-2Z5S36GZ.js → chunk-CMS6LBMK.js} +2 -2
  50. package/chunks/{chunk-XOP6HC4S.js → chunk-D5Y6P57R.js} +3 -3
  51. package/chunks/{chunk-2XBK3KBR.js → chunk-D7DZAA5W.js} +3 -3
  52. package/chunks/{chunk-JOBNLOEW.js → chunk-DNFPKNWM.js} +2 -2
  53. package/chunks/{chunk-ZQBNP2ZQ.js → chunk-DNMM4RF7.js} +3 -3
  54. package/chunks/{chunk-ZHDGCGW7.js → chunk-DRONBPX2.js} +2 -2
  55. package/chunks/{chunk-HYGNYNEB.js → chunk-DV7OATUZ.js} +1 -1
  56. package/chunks/{chunk-QYUMJTBP.js → chunk-DVR4QCFA.js} +2 -2
  57. package/chunks/{chunk-5HVWJGQN.js → chunk-EFTQJBOI.js} +1 -1
  58. package/chunks/{chunk-7OBN7TW6.js → chunk-EOQIIUFY.js} +3 -3
  59. package/chunks/{chunk-3NT6BHLE.js → chunk-G2OKMHVX.js} +5 -5
  60. package/chunks/{chunk-LKU26DC5.js → chunk-G7HV5FVG.js} +2 -2
  61. package/chunks/{chunk-FAOCU5VJ.js → chunk-G7JBBQVU.js} +1 -1
  62. package/chunks/{chunk-NEHYQ3LT.js → chunk-GIB2TRUW.js} +15 -15
  63. package/chunks/{chunk-U6NS36IA.js → chunk-GT2ATHFG.js} +4 -4
  64. package/chunks/{chunk-75UFQ4VY.js → chunk-H2GNNVMW.js} +4 -4
  65. package/chunks/{chunk-FFUKRRCR.js → chunk-HAZNBQPI.js} +1 -1
  66. package/chunks/{chunk-PZPDQGRC.js → chunk-HCD2C6MU.js} +8 -8
  67. package/chunks/{chunk-ID6BF7FM.js → chunk-HO45CNDB.js} +1 -1
  68. package/chunks/{chunk-H5AU3734.js → chunk-HVQQIKDI.js} +1 -1
  69. package/chunks/{chunk-2MXORWOC.js → chunk-IMLPJ76O.js} +1 -1
  70. package/chunks/{chunk-DUHNRPAF.js → chunk-INGWSCK5.js} +1 -1
  71. package/chunks/{chunk-VBDGXRYM.js → chunk-IV56M43Z.js} +6 -6
  72. package/chunks/{chunk-H4GDMMIG.js → chunk-IVVMETSX.js} +1 -1
  73. package/chunks/{chunk-7LFCBMVX.js → chunk-JEUH2DSW.js} +2 -2
  74. package/chunks/{chunk-LJLEOFW5.js → chunk-JF3N4RE2.js} +1 -1
  75. package/chunks/{chunk-TC6APBKO.js → chunk-JIECZNY6.js} +1 -1
  76. package/chunks/{chunk-NIPNNHXO.js → chunk-JSRLBGQW.js} +9 -9
  77. package/chunks/{chunk-H4OG24QJ.js → chunk-JXHE3Q7W.js} +10 -10
  78. package/chunks/{chunk-GNF3RKRI.js → chunk-K3XD5ECD.js} +1 -1
  79. package/chunks/{chunk-NLDWAN5E.js → chunk-KPX5HEZT.js} +1 -1
  80. package/chunks/{chunk-QYVHXOTK.js → chunk-KT4SJM3N.js} +4 -4
  81. package/chunks/{chunk-7R7LA5F5.js → chunk-KUPFPBJP.js} +18 -18
  82. package/chunks/{chunk-HHG3UCD5.js → chunk-LO6VR36F.js} +25 -4
  83. package/chunks/{chunk-TZKJ3CYY.js → chunk-LOB3R2LB.js} +1 -1
  84. package/chunks/{chunk-7S2AYA27.js → chunk-M7ZHP7VU.js} +1 -1
  85. package/chunks/{chunk-O7ZK6JUE.js → chunk-N7CYQT7L.js} +26 -26
  86. package/chunks/{chunk-HFQJYTZB.js → chunk-NGEWU2DI.js} +3 -3
  87. package/chunks/{chunk-EAULWM27.js → chunk-NJYNBWEO.js} +2 -2
  88. package/chunks/{chunk-CJG6P7UJ.js → chunk-NZWZTJMM.js} +7 -7
  89. package/chunks/{chunk-2I7F4TTF.js → chunk-O3FUFDAZ.js} +1 -1
  90. package/chunks/{chunk-G5QZC3KV.js → chunk-OJAGNSHH.js} +3 -3
  91. package/chunks/{chunk-CQURIVUY.js → chunk-OMMOMHTD.js} +6 -6
  92. package/chunks/{chunk-ZPCVRY42.js → chunk-P2JIFC4O.js} +1 -1
  93. package/chunks/{chunk-R54WGB5K.js → chunk-P5SAF7QU.js} +7 -7
  94. package/chunks/{chunk-5MGXHMC4.js → chunk-P6KD4P3E.js} +1 -1
  95. package/chunks/{chunk-XVSSUT2K.js → chunk-PHCY2DQ2.js} +4 -4
  96. package/chunks/{chunk-OPYQYNSR.js → chunk-PJZS6TLH.js} +11 -11
  97. package/chunks/{chunk-B3E57DII.js → chunk-PUBQDZLP.js} +1 -1
  98. package/chunks/{chunk-NUADBQGA.js → chunk-PW5PDEJH.js} +11 -11
  99. package/chunks/{chunk-HKBLZQYR.js → chunk-Q6IDKPJW.js} +1 -1
  100. package/chunks/{chunk-V75J4GJ2.js → chunk-QCE3SPTV.js} +1 -1
  101. package/chunks/{chunk-ADHXMZ3K.js → chunk-QECJHTGC.js} +1 -1
  102. package/chunks/{chunk-ZJLBESKM.js → chunk-QFGPKAOX.js} +2 -2
  103. package/chunks/{chunk-63PQ6B3U.js → chunk-QHTEPXED.js} +1 -1
  104. package/chunks/{chunk-4LITKLIX.js → chunk-QIRJOOS6.js} +71 -71
  105. package/chunks/{chunk-WA5T74EJ.js → chunk-QMTHJGAM.js} +5 -5
  106. package/chunks/{chunk-RJBN74YD.js → chunk-QSFWRJQF.js} +2 -2
  107. package/chunks/{chunk-GQCAN53O.js → chunk-RV2TL4NM.js} +2 -2
  108. package/chunks/{chunk-HU66EQY6.js → chunk-RVRJZT5M.js} +1 -1
  109. package/chunks/{chunk-X4OQN3ZO.js → chunk-SDKL3D4L.js} +2 -2
  110. package/chunks/{chunk-VT3TJFQR.js → chunk-SHADJNT6.js} +2 -2
  111. package/chunks/{chunk-JX3AAXJY.js → chunk-SKPIIDV3.js} +1 -1
  112. package/chunks/{chunk-KC5PN54N.js → chunk-SSIOTLWY.js} +3 -3
  113. package/chunks/{chunk-RNEMD6QU.js → chunk-SU6K5JRJ.js} +1 -1
  114. package/chunks/{chunk-IWYGXAQU.js → chunk-SYMYKLO4.js} +2 -0
  115. package/chunks/{chunk-VEJCE7UR.js → chunk-SZ26YNBZ.js} +1 -1
  116. package/chunks/{chunk-FH534GWJ.js → chunk-T4WPMWU4.js} +1256 -1107
  117. package/chunks/{chunk-LH3T52KS.js → chunk-T5Z45XLU.js} +1 -1
  118. package/chunks/{chunk-2LB3FV6Y.js → chunk-TB7SJODY.js} +5 -5
  119. package/chunks/{chunk-MZI6FDZT.js → chunk-THO5UG52.js} +1 -1
  120. package/chunks/{chunk-7ZXK4ANS.js → chunk-TIWB6RLI.js} +29 -29
  121. package/chunks/{chunk-JFO6OCHQ.js → chunk-TYYTQIEZ.js} +1 -1
  122. package/chunks/{chunk-JKOS3HZY.js → chunk-UBBREU4U.js} +3 -3
  123. package/chunks/{chunk-QTI36T2P.js → chunk-ULFANPGF.js} +5 -5
  124. package/chunks/{chunk-OW44PTOE.js → chunk-UUZBSXW2.js} +8 -8
  125. package/chunks/{chunk-DQZYZDIL.js → chunk-UW4Q5E5P.js} +1 -1
  126. package/chunks/{chunk-OT7EXUL3.js → chunk-VCYXTJKE.js} +3 -3
  127. package/chunks/{chunk-GVWQRVLV.js → chunk-VEGSKFFR.js} +1 -1
  128. package/chunks/{chunk-QGBGLKMW.js → chunk-VHFC6CDB.js} +27 -27
  129. package/chunks/{chunk-SGO7T2LC.js → chunk-VRHNWL5X.js} +2 -2
  130. package/chunks/{chunk-YBZG6WG2.js → chunk-VYUHXV5Q.js} +2 -2
  131. package/chunks/{chunk-HDCVSMR4.js → chunk-WEPGJI5V.js} +67 -24
  132. package/chunks/{chunk-PPHCWNOW.js → chunk-WFLDNTCT.js} +4 -4
  133. package/chunks/{chunk-6GEEXVXS.js → chunk-WRHVLLKJ.js} +5 -5
  134. package/chunks/{chunk-OJSW65PQ.js → chunk-WXMXXBCC.js} +5 -2
  135. package/chunks/{chunk-FNALBCC7.js → chunk-WXTAP6NR.js} +1 -1
  136. package/chunks/{chunk-I5INQP6E.js → chunk-XA3N5TO5.js} +1 -1
  137. package/chunks/{chunk-FJHDFJVI.js → chunk-XI7IX5QR.js} +1 -1
  138. package/chunks/{chunk-Y5KGWAF5.js → chunk-Y5P7ZZEN.js} +3 -3
  139. package/chunks/{chunk-QG4PTE3V.js → chunk-Y7AZBD2R.js} +3 -3
  140. package/chunks/{chunk-4QVZPLPW.js → chunk-YMZWUG55.js} +4 -4
  141. package/chunks/{chunk-KHSEVS3O.js → chunk-YU6Z65RE.js} +2 -2
  142. package/chunks/{chunk-O7RFFTTE.js → chunk-YWMF5ROG.js} +4 -4
  143. package/chunks/{chunk-R4ECPR25.js → chunk-YXYCU2GM.js} +3 -3
  144. package/chunks/{chunk-6NPHWGZJ.js → chunk-ZHF2UQ6M.js} +1 -1
  145. package/chunks/{clip-audio-BJ42NS5B.js → clip-audio-5ZTGLERU.js} +1 -1
  146. package/chunks/{clip-image-FDBAIKGB.js → clip-image-HLDAHQPL.js} +1 -1
  147. package/chunks/{clip-video-6KVC2IFL.js → clip-video-NXRDICLV.js} +1 -1
  148. package/chunks/{codex-subagent-executor-Z7IEFWUH.js → codex-subagent-executor-XDCQSK23.js} +70 -70
  149. package/chunks/{config-AC45I6CL.js → config-72LNOXYX.js} +2 -2
  150. package/chunks/{container-execution-environment-O2I5SDUH.js → container-execution-environment-RKRAWXR3.js} +2 -2
  151. package/chunks/{contextCommand-ZTVVWBIV.js → contextCommand-6HRAN3Q2.js} +68 -68
  152. package/chunks/{convert-image-AYXBZ3TH.js → convert-image-4MPD5TZ5.js} +1 -1
  153. package/chunks/{core-runtime-UERTINTN.js → core-runtime-MFAU5CF4.js} +66 -66
  154. package/chunks/{create-sub-session-BJIHWC5U.js → create-sub-session-EUZQNTYQ.js} +67 -67
  155. package/chunks/{create-sub-session-O237VOIB.js → create-sub-session-UEQ23VBD.js} +2 -2
  156. package/chunks/{cron-create-FFFFZH7M.js → cron-create-WPK3NNT4.js} +1 -1
  157. package/chunks/{cron-delete-XXYQNHGZ.js → cron-delete-6V6MDQ6Z.js} +1 -1
  158. package/chunks/{cron-list-GBJYKY27.js → cron-list-TPJEL73F.js} +1 -1
  159. package/chunks/{daemon-git-worktree-guard-5KO4CWOV.js → daemon-git-worktree-guard-JHY5W4ZW.js} +67 -67
  160. package/chunks/{daemon-status-provider-77MFFWPG.js → daemon-status-provider-IV2EYOEH.js} +76 -76
  161. package/chunks/{daemon-trust-policy-QS7LZ4DW.js → daemon-trust-policy-ENUUMAXH.js} +72 -72
  162. package/chunks/{daemon-trust-policy-monitor-AY7BR4O7.js → daemon-trust-policy-monitor-FMG7RJKV.js} +72 -72
  163. package/chunks/{deferred-core-runtime-OCMBUSB5.js → deferred-core-runtime-CJQCZJPG.js} +69 -69
  164. package/chunks/{display-image-U6HZKF3G.js → display-image-T6P5QTKW.js} +3 -3
  165. package/chunks/{downsample-audio-HSPMS25U.js → downsample-audio-IGOEKKHD.js} +1 -1
  166. package/chunks/{downsample-image-BFBX343I.js → downsample-image-HDL6LZNC.js} +4 -4
  167. package/chunks/{downscale-video-GQ5ZMJRX.js → downscale-video-XZNDYVK4.js} +1 -1
  168. package/chunks/{edit-TLQKC3LG.js → edit-XGLKDGPA.js} +48 -48
  169. package/chunks/{en-YJDPOSAW.js → en-LFESTYTB.js} +42 -0
  170. package/chunks/{enter-worktree-MF4APJEN.js → enter-worktree-FY6Y6APX.js} +5 -5
  171. package/chunks/{enterPlanMode-76BPF6LH.js → enterPlanMode-7S4DMCPX.js} +48 -48
  172. package/chunks/{environment-AMUW2KX3.js → environment-2JAP76AW.js} +68 -68
  173. package/chunks/{errors-KNTKHM6L.js → errors-YOLWCYL7.js} +68 -68
  174. package/chunks/{exec-J7LCEEPS.js → exec-36YD62RP.js} +1 -1
  175. package/chunks/{execution-sandbox-config-VE7OGRXY.js → execution-sandbox-config-2RI6A7VE.js} +8 -8
  176. package/chunks/{execution-tool-263V5JEK.js → execution-tool-4HC3L4TQ.js} +49 -49
  177. package/chunks/{execution-worker-JHOCJBIN.js → execution-worker-5RRYF3B6.js} +57 -57
  178. package/chunks/{exit-worktree-DXSLV6EM.js → exit-worktree-Q3ZHCBYN.js} +5 -5
  179. package/chunks/{exitPlanMode-K6B2JODR.js → exitPlanMode-NZHLFZLJ.js} +46 -46
  180. package/chunks/{extract-audio-3LB2Q736.js → extract-audio-AYEXZ2KS.js} +1 -1
  181. package/chunks/{extract-keyframes-6ZP65BJF.js → extract-keyframes-UQVW7UH6.js} +1 -1
  182. package/chunks/{fast-path-FHLBTDKD.js → fast-path-NIGD342A.js} +5 -5
  183. package/chunks/{glob-EBASENJF.js → glob-ELCVZAJ4.js} +47 -47
  184. package/chunks/{goal-tools-QZECYB4S.js → goal-tools-7BG6WES7.js} +46 -46
  185. package/chunks/{grep-NAW5AFAD.js → grep-JBR55JCA.js} +3 -3
  186. package/chunks/{handleAutoUpdate-XBTIE4FC.js → handleAutoUpdate-5GKL7VQ6.js} +69 -69
  187. package/chunks/{i18n-J7ANXY2X.js → i18n-OMIA7E4U.js} +67 -67
  188. package/chunks/{image-gen-Q4E7L7EV.js → image-gen-27Q5XGGZ.js} +1 -1
  189. package/chunks/{initializer-6INBSHTX.js → initializer-NG5E4POR.js} +72 -72
  190. package/chunks/{installationInfo-VK32EWFR.js → installationInfo-7VHALE7P.js} +66 -66
  191. package/chunks/{list-KEQUWD6M.js → list-MWDQAIAZ.js} +74 -74
  192. package/chunks/{list-agents-A7UJ6VXZ.js → list-agents-T2EHYFCL.js} +1 -1
  193. package/chunks/{llm-CR5OP72L.js → llm-3ZAGCSJL.js} +125 -120
  194. package/chunks/{llm-content-generator-K2DRDNXN.js → llm-content-generator-SFPAYYOJ.js} +7 -7
  195. package/chunks/{loadedSettingsAdapter-PJPH4OCO.js → loadedSettingsAdapter-RBAYH3F2.js} +72 -72
  196. package/chunks/{local-execution-environment-QC5UHGMN.js → local-execution-environment-AJF47BTW.js} +57 -57
  197. package/chunks/{loggingContentGenerator-DJEMIYHV.js → loggingContentGenerator-5MDGVYRW.js} +58 -58
  198. package/chunks/{loop-wakeup-BKO62IMW.js → loop-wakeup-RC454BL4.js} +2 -2
  199. package/chunks/{ls-KIV7RGKE.js → ls-RZYAZPVC.js} +2 -2
  200. package/chunks/{lsp-TYQ3HXES.js → lsp-ZHD2YAJ5.js} +1 -1
  201. package/chunks/{managed-npm-update-3SDAWD4R.js → managed-npm-update-N2WHAQ6J.js} +66 -66
  202. package/chunks/{mcp-TYYYLGMV.js → mcp-YKMSQCHU.js} +72 -72
  203. package/chunks/{memory-side-query-BSVTSKCB.js → memory-side-query-DNXJZB7B.js} +2 -2
  204. package/chunks/{model-call-collection-FFR7ZNWD.js → model-call-collection-BE2H44PN.js} +3 -3
  205. package/chunks/{model-configuration-GUZIIGAH.js → model-configuration-4U5BOYQX.js} +73 -73
  206. package/chunks/{modelConfigUtils-PKQ46KSJ.js → modelConfigUtils-OJZUSINX.js} +68 -68
  207. package/chunks/{monitor-FNMBX5BB.js → monitor-3WKOMMC6.js} +47 -47
  208. package/chunks/{nonInteractiveCli-LATJ4A34.js → nonInteractiveCli-MGX6RBDW.js} +106 -105
  209. package/chunks/{nonInteractiveToolExecutor-YQOVVH6B.js → nonInteractiveToolExecutor-XVGERMMR.js} +47 -47
  210. package/chunks/{notebook-edit-BW4DJWZU.js → notebook-edit-WPIXQ25B.js} +47 -47
  211. package/chunks/{ocr-image-O6ECQNUE.js → ocr-image-UTGQDI5V.js} +3 -3
  212. package/chunks/{omni-YYVIGRGX.js → omni-34TDK3DM.js} +16 -16
  213. package/chunks/{openaiContentGenerator-FG3UZCTL.js → openaiContentGenerator-XNEEZYGM.js} +51 -51
  214. package/chunks/{openaiResponsesContentGenerator-XOT5DTAC.js → openaiResponsesContentGenerator-PAWM7H5R.js} +12 -12
  215. package/chunks/{processUtils-QBMARONE.js → processUtils-GJWNO6CX.js} +2 -2
  216. package/chunks/{prompt-terminal-ledger-VUCLICZG.js → prompt-terminal-ledger-LN6JQ2G2.js} +67 -67
  217. package/chunks/{pt-TSNNSVF3.js → pt-EY6TJFGW.js} +42 -0
  218. package/chunks/{reactive-degrade-VPQZF55X.js → reactive-degrade-7C3JTVTP.js} +12 -12
  219. package/chunks/{read-file-2O33TKD7.js → read-file-XZXFDCA6.js} +13 -13
  220. package/chunks/{read-mcp-resource-TYAD3TBP.js → read-mcp-resource-4NSQ2WFB.js} +1 -1
  221. package/chunks/{recall-media-memory-tool-WIFEB2OG.js → recall-media-memory-tool-7NAM2ZGH.js} +2 -2
  222. package/chunks/{record-artifact-IVE6QT4D.js → record-artifact-LAQGMYDN.js} +2 -2
  223. package/chunks/{record-source-ANENC5K7.js → record-source-NRW6TYWW.js} +6 -6
  224. package/chunks/{report-findings-W75NCFXY.js → report-findings-OVUUKGUX.js} +3 -3
  225. package/chunks/{request-shutdown-LRWCJOEG.js → request-shutdown-MXKAXR2D.js} +5 -5
  226. package/chunks/{resumeHistoryUtils-PLGVAEHT.js → resumeHistoryUtils-BLD2JYBR.js} +72 -72
  227. package/chunks/{ripGrep-U4HZCL4K.js → ripGrep-V2UHA5BK.js} +17 -17
  228. package/chunks/{run-o1-code-serve-B5XNSRQI.js → run-o1-code-serve-X6RDPQQN.js} +35 -35
  229. package/chunks/{runtime-shell-policy-R4LXGDDO.js → runtime-shell-policy-ENSGJINV.js} +1 -1
  230. package/chunks/{sandboxConfig-6LJHLGOT.js → sandboxConfig-BYPE3SB6.js} +66 -66
  231. package/chunks/{scheduled-tasks-DBHHUK3R.js → scheduled-tasks-YXWYCZIW.js} +74 -74
  232. package/chunks/{scheduler-XHIPT4EI.js → scheduler-XCPGPBZJ.js} +68 -68
  233. package/chunks/{sdk-exporters-grpc-7ZF7NWTA.js → sdk-exporters-grpc-U5H74BEL.js} +2 -2
  234. package/chunks/{sdk-exporters-http-73LTU25J.js → sdk-exporters-http-34H6REMF.js} +3 -3
  235. package/chunks/{sdk-impl-IAUUHG7Z.js → sdk-impl-5OTPCVXV.js} +5 -5
  236. package/chunks/{send-message-XY7EC52V.js → send-message-KFUNQQFA.js} +5 -5
  237. package/chunks/{serve-6MCT2M2A.js → serve-FBHWAMZQ.js} +72 -72
  238. package/chunks/{server-B3KEPLVK.js → server-UQLKGTWU.js} +131 -131
  239. package/chunks/{session-XDZM36XY.js → session-OGWTPHTK.js} +107 -106
  240. package/chunks/{session-DTLH45KY.js → session-VPWL2DX2.js} +1 -1
  241. package/chunks/{session-attachments-root-DUCWV5SV.js → session-attachments-root-M26TQWO6.js} +66 -66
  242. package/chunks/{session-pr-refresh-6XZHJOHJ.js → session-pr-refresh-XURIUCED.js} +73 -73
  243. package/chunks/{settings-EIBLUO2U.js → settings-6MJCNEY5.js} +71 -71
  244. package/chunks/{shell-7U5KEVDP.js → shell-RIIDO6RZ.js} +46 -46
  245. package/chunks/{skill-RQNSH7FP.js → skill-W5GW56BH.js} +17 -17
  246. package/chunks/{skill-settings-RLPBS65V.js → skill-settings-DMGR5FHY.js} +72 -72
  247. package/chunks/{spawnChannel-ORMDVKIV.js → spawnChannel-RWGGO6X2.js} +69 -69
  248. package/chunks/{standalone-update-EFWC3EXO.js → standalone-update-XVR7WYWV.js} +68 -68
  249. package/chunks/{startInteractiveUI-XPJQ6N4R.js → startInteractiveUI-QE25VGX2.js} +1632 -867
  250. package/chunks/{syntheticOutput-6NR7LSGN.js → syntheticOutput-KZMNOKOG.js} +2 -2
  251. package/chunks/{task-create-2BHPJUF3.js → task-create-EHGTZMSD.js} +6 -6
  252. package/chunks/{task-list-6LPOL5UB.js → task-list-ABYOHJDS.js} +1 -1
  253. package/chunks/{task-stop-VGLKJLBG.js → task-stop-6L7G4RYB.js} +2 -2
  254. package/chunks/{task-update-NGKKBFU5.js → task-update-LBXI5OVE.js} +6 -6
  255. package/chunks/{team-create-NQUT63NA.js → team-create-V5DQGWMS.js} +46 -46
  256. package/chunks/{team-delete-WBSKRFVF.js → team-delete-RL37ORM3.js} +1 -1
  257. package/chunks/{team-plan-approval-ZICR7PLR.js → team-plan-approval-2NIL3Q77.js} +46 -46
  258. package/chunks/{terminal-image-renderer-KNBEKIBU.js → terminal-image-renderer-CRCFT57H.js} +66 -66
  259. package/chunks/{theme-manager-ELLW2WSH.js → theme-manager-TCTYBF5V.js} +66 -66
  260. package/chunks/{todoWrite-AX43SXLU.js → todoWrite-ARTSGNNA.js} +1 -1
  261. package/chunks/{tool-call-GVZHLCX6.js → tool-call-V225426S.js} +6 -6
  262. package/chunks/{tool-result-media-GVAXAMIM.js → tool-result-media-IISRSEFL.js} +16 -16
  263. package/chunks/{tool-search-5YDYOBEY.js → tool-search-EMMXLL3Z.js} +17 -17
  264. package/chunks/{total-session-admission-5J6FUOHB.js → total-session-admission-I6256XRH.js} +71 -71
  265. package/chunks/{transcribe-audio-R6YC24KU.js → transcribe-audio-WOITX4I2.js} +2 -2
  266. package/chunks/{trustedFolders-L4OBHBMG.js → trustedFolders-VYKGMRLU.js} +67 -67
  267. package/chunks/{understand-video-segments-2WK4T6PO.js → understand-video-segments-YFCIFF7P.js} +3 -3
  268. package/chunks/{update-relaunch-OLWQOXJD.js → update-relaunch-N6Q6SXQR.js} +5 -5
  269. package/chunks/{updateCheck-P4256JN4.js → updateCheck-MHHINLNL.js} +68 -68
  270. package/chunks/{upload-config-W6QM7O7M.js → upload-config-4NBDT35S.js} +7 -7
  271. package/chunks/{useAutoAcceptIndicator-GAV5FOVS.js → useAutoAcceptIndicator-PSLAXXIF.js} +76 -75
  272. package/chunks/{validateNonInterActiveAuth-JSAM5DKT.js → validateNonInterActiveAuth-7Q7WV7ZN.js} +103 -102
  273. package/chunks/{version-J4K7YJEP.js → version-AJLUIHWI.js} +1 -1
  274. package/chunks/{web-fetch-KU4CTSQA.js → web-fetch-4HI4SH5S.js} +13 -13
  275. package/chunks/{web-search-6EC47GMF.js → web-search-432FZTQD.js} +9 -9
  276. package/chunks/{workflow-4LNE5CRK.js → workflow-KVNXIEIQ.js} +49 -49
  277. package/chunks/{workspace-providers-status-5X5EEQU4.js → workspace-providers-status-7UBH5FZO.js} +78 -78
  278. package/chunks/{workspace-registration-store-B7RGZ7XC.js → workspace-registration-store-NWN4IAHF.js} +1 -1
  279. package/chunks/{workspace-registry-DGFL345F.js → workspace-registry-X2NLZYDK.js} +71 -71
  280. package/chunks/{workspace-runtime-coordinator-JOUD45MU.js → workspace-runtime-coordinator-SGKJJPRO.js} +72 -72
  281. package/chunks/{workspace-service-MVNGRTAX.js → workspace-service-RABSJN2O.js} +77 -77
  282. package/chunks/{workspace-skills-status-54YB4YNO.js → workspace-skills-status-NWLUCLXW.js} +75 -75
  283. package/chunks/{workspace-trust-reconciler-XWTFKN7T.js → workspace-trust-reconciler-6L5CEM6N.js} +77 -77
  284. package/chunks/{write-file-PAA35JB5.js → write-file-C3GFBE6P.js} +49 -49
  285. package/chunks/{zoom-image-7UF6I5FM.js → zoom-image-DVMN6NQZ.js} +13 -13
  286. package/cli.js +14 -14
  287. package/execution-worker.js +1 -1
  288. package/export-transcript-document.js +3 -3
  289. package/locales/en.js +50 -0
  290. package/locales/pt.js +50 -0
  291. package/package.json +3 -2
  292. package/release-notes.json +13 -0
  293. package/vendor/ripgrep/COPYING +11 -0
  294. package/vendor/ripgrep/LICENSE-MIT +21 -0
  295. package/vendor/ripgrep/UNLICENSE +24 -0
  296. package/vendor/ripgrep/arm64-win32/rg.exe +0 -0
  297. package/web-shell/assets/{abnfDiagram-VCTEODGH-DaskAjYa.js → abnfDiagram-VCTEODGH-4tyJ-IOM.js} +1 -1
  298. package/web-shell/assets/{arc-CeF5eQNa.js → arc-D5XHMvp_.js} +1 -1
  299. package/web-shell/assets/{architectureDiagram-5GKGNRK7-0cJpQiMQ.js → architectureDiagram-5GKGNRK7-DTJyMJ4K.js} +1 -1
  300. package/web-shell/assets/{blockDiagram-NRAW4CY4-ZRZ9t0GN.js → blockDiagram-NRAW4CY4-llcJtAbu.js} +1 -1
  301. package/web-shell/assets/{c4Diagram-UCG6FXSJ-wIoBOLjK.js → c4Diagram-UCG6FXSJ-CVRnieKp.js} +1 -1
  302. package/web-shell/assets/channel-DrXxrVwN.js +1 -0
  303. package/web-shell/assets/{chunk-2Q5K7J3B-CRe2K3To.js → chunk-2Q5K7J3B-BBQuSBIP.js} +1 -1
  304. package/web-shell/assets/{chunk-5VM5RSS4-BG67yUA9.js → chunk-5VM5RSS4-KWslePRD.js} +1 -1
  305. package/web-shell/assets/{chunk-F27PBJKO-B1d6n5eI.js → chunk-F27PBJKO-Crl6QExg.js} +1 -1
  306. package/web-shell/assets/{chunk-G27WJ6UU-CIVn7PDx.js → chunk-G27WJ6UU-C-W9cosE.js} +1 -1
  307. package/web-shell/assets/{chunk-JWPE2WC7-BUCoEgYK.js → chunk-JWPE2WC7-B19IzqnN.js} +1 -1
  308. package/web-shell/assets/{chunk-LCL6LL3I-BEcferer.js → chunk-LCL6LL3I-BJqzCD90.js} +1 -1
  309. package/web-shell/assets/{chunk-POPQ4Y6H-CpdZE7zI.js → chunk-POPQ4Y6H-DYkXv4Bl.js} +1 -1
  310. package/web-shell/assets/{chunk-SVP7TREG-B9JFFHOW.js → chunk-SVP7TREG-DZaAk_mv.js} +1 -1
  311. package/web-shell/assets/{chunk-XXDRQBXY-D7hHjiYq.js → chunk-XXDRQBXY-DgbKuHRM.js} +1 -1
  312. package/web-shell/assets/classDiagram-DTDB5LWJ-BoFTh2ij.js +1 -0
  313. package/web-shell/assets/classDiagram-v2-JRS7N3AN-BoFTh2ij.js +1 -0
  314. package/web-shell/assets/{cose-bilkent-JH36ORCC-B3CuOihi.js → cose-bilkent-JH36ORCC-CrWjEQBv.js} +1 -1
  315. package/web-shell/assets/{cynefin-OW5HDTMX-BL-7Y9zJ.js → cynefin-OW5HDTMX-DbUKAEfO.js} +1 -1
  316. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-B4B-aYh1.js → cynefinDiagram-5FMLGOSQ-Ct60E7KW.js} +1 -1
  317. package/web-shell/assets/{dagre-3AP2YEHR-DeLGsLtP.js → dagre-3AP2YEHR-DqpsNq-m.js} +1 -1
  318. package/web-shell/assets/{diagram-S7CK7UJ4-CD1ow9s5.js → diagram-S7CK7UJ4-gK_a8S13.js} +1 -1
  319. package/web-shell/assets/{diagram-UQ7AKVKN-BLXrwSIS.js → diagram-UQ7AKVKN-IYxdlPdp.js} +1 -1
  320. package/web-shell/assets/{diagram-VSXAHHWV-C_4s_9Gq.js → diagram-VSXAHHWV-C7_1o5YQ.js} +1 -1
  321. package/web-shell/assets/{diagram-VX7I27RA-CDfysUiq.js → diagram-VX7I27RA-DsGivJVm.js} +1 -1
  322. package/web-shell/assets/{diagram-Z3DM3KII-B_nOMJNo.js → diagram-Z3DM3KII-3Iw2ASQH.js} +1 -1
  323. package/web-shell/assets/{ebnfDiagram-PWID7BFC-Bq9OS-2B.js → ebnfDiagram-PWID7BFC-HUst2lkU.js} +1 -1
  324. package/web-shell/assets/{erDiagram-SSCWMZ5O-DdYlHfr0.js → erDiagram-SSCWMZ5O-BFJOXs7K.js} +1 -1
  325. package/web-shell/assets/{flowDiagram-A5DVABFB-BEMFnzjR.js → flowDiagram-A5DVABFB-lZYOtflc.js} +1 -1
  326. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-CUnEB8YA.js → ganttDiagram-EL5Y4UJY-B2Q9UVpC.js} +1 -1
  327. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-BZ3xFWS5.js → gitGraphDiagram-WWUBYQGX-BIFm5rz-.js} +1 -1
  328. package/web-shell/assets/{index-X14MyJWi.js → index-C-r7y6m-.js} +5 -5
  329. package/web-shell/assets/{index-CQ5O0GyT.js → index-DLqoza9Y.js} +1 -1
  330. package/web-shell/assets/{infoDiagram-RXCK75RN-DdBkiCU5.js → infoDiagram-RXCK75RN-DV3V_JPX.js} +1 -1
  331. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-CQwdIl4G.js → ishikawaDiagram-5VMMS53U-BsdDREEa.js} +1 -1
  332. package/web-shell/assets/{journeyDiagram-EYS64GPL-CHthIOzQ.js → journeyDiagram-EYS64GPL-0XvVKCig.js} +1 -1
  333. package/web-shell/assets/{kanban-definition-3QL26DDD-wsQvYKZn.js → kanban-definition-3QL26DDD-CiYa40sA.js} +1 -1
  334. package/web-shell/assets/{layout-BizdV6jP.js → layout-BSOIn-1S.js} +1 -1
  335. package/web-shell/assets/{linear-BjxyKDV-.js → linear-CkiKAyO2.js} +1 -1
  336. package/web-shell/assets/{mermaid.core-C5zbhLSB.js → mermaid.core-Q4YMjYlN.js} +6 -6
  337. package/web-shell/assets/{mindmap-definition-FBJOCRG2-B1fXC6cz.js → mindmap-definition-FBJOCRG2-DFR6o-MY.js} +1 -1
  338. package/web-shell/assets/{pegDiagram-XKGWAZYB-BWkVT1h_.js → pegDiagram-XKGWAZYB-BJHry1Zc.js} +1 -1
  339. package/web-shell/assets/{pieDiagram-E7YTZNPT-mXFpa0SY.js → pieDiagram-E7YTZNPT-UZQLuq5B.js} +1 -1
  340. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-CgURyFxf.js → quadrantDiagram-AXDQQJYC-BjwMxG-u.js} +1 -1
  341. package/web-shell/assets/{railroadDiagram-O6MQD6OU-BKWdEmSU.js → railroadDiagram-O6MQD6OU-_YgpF2tc.js} +1 -1
  342. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-DQfXvBnO.js → requirementDiagram-EFPCY7ZU-B_ZzJOTx.js} +1 -1
  343. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C2NHJ-vh.js → sankeyDiagram-P5KCCOFB-B_OwV9en.js} +1 -1
  344. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BMY1NnO-.js → sequenceDiagram-WJ2MYXX4-CA2Vree8.js} +1 -1
  345. package/web-shell/assets/{sizeCapture-X5ZJPWSS-H_G6QbIF.js → sizeCapture-X5ZJPWSS-BUic5VOB.js} +1 -1
  346. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BpXGLI-f.js → stateDiagram-HBIQ2CUA-CjzVK9sL.js} +1 -1
  347. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-BfStDX1l.js +1 -0
  348. package/web-shell/assets/{swimlanes-XN3QIQJK-CK7vT1lz.js → swimlanes-XN3QIQJK-BJKsEct6.js} +1 -1
  349. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DAK1VhpN.js +8 -0
  350. package/web-shell/assets/{timeline-definition-24CTP7MA-hlwSiLfp.js → timeline-definition-24CTP7MA-1PAhR9eu.js} +1 -1
  351. package/web-shell/assets/{vennDiagram-4TSXK5OY-D6np4JGg.js → vennDiagram-4TSXK5OY-BCLxmcKg.js} +1 -1
  352. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CciJIRt_.js → wardleyDiagram-VM6X3IG4-ChpSHWtA.js} +1 -1
  353. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-KPEsUSHH.js → xychartDiagram-S5SC5T6Z-DNG5XUCm.js} +1 -1
  354. package/web-shell/index.html +1 -1
  355. package/web-shell/sw.js +1 -1
  356. package/windows-clipboard-worker.js +16 -0
  357. package/web-shell/assets/channel-Ys6W9vX4.js +0 -1
  358. package/web-shell/assets/classDiagram-DTDB5LWJ-BlO3Djxk.js +0 -1
  359. package/web-shell/assets/classDiagram-v2-JRS7N3AN-BlO3Djxk.js +0 -1
  360. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D_O73PF_.js +0 -1
  361. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-D6yu1hgd.js +0 -8
  362. package/chunks/{chunk-Z3TVPPGU.js → chunk-IE4RH3YW.js} +3 -3
  363. package/chunks/{chunk-2JPUVHYB.js → chunk-JHRVJBV5.js} +3 -3
  364. /package/chunks/{chunk-YZBNAMA2.js → chunk-M6C3BI2P.js} +0 -0
@@ -109,7 +109,7 @@ ${n}`:n}function xQ(e){const t=e.data.indexOf(","),n=e.data.startsWith("data:")&
109
109
  * @license
110
110
  * Copyright 2025 Qwen Team
111
111
  * SPDX-License-Identifier: Apache-2.0
112
- */function ENe(e,t,n,s){if(s)return;const r=t.find(jNe);if(!r)return;const o=Uz(r.promptId)??NNe(t);if(!o)return;const i=ti(r.data)?r.data.truncatedEvents:void 0;return{marker:r,promptId:o,signature:[e,o,n??"unknown",typeof i=="number"?i:"unknown"].join(":")}}function ANe(e,t){const n=e.findIndex(r=>q1(r)===t&&MNe(r));if(n<0)return;const s=e.find((r,o)=>o>=n&&q1(r)===t&&(r.type==="turn_complete"||r.type==="turn_error"));if(s)return{events:e.slice(n),terminal:s}}function q1(e){const t=Uz(e.promptId);return t||(ti(e.data)?Uz(e.data.promptId):void 0)}function cfe(e){return e.type==="history_truncated"&&ti(e.data)&&e.data.scope==="live_journal"}function jNe(e){return OAe(e)?.type==="history_truncated"&&cfe(e)&&ti(e.data)&&e.data.fullTranscriptAvailable===!0}function NNe(e){const t=new Set;for(const n of e){if(cfe(n))continue;const s=q1(n);if(s&&t.add(s),t.size>1)return}return t.size===1?[...t][0]:void 0}function MNe(e){if(e.type!=="session_update"||!ti(e.data))return!1;const t=e.data.update;return ti(t)&&t.sessionUpdate==="user_message_chunk"}function Uz(e){return typeof e=="string"&&e.length>0?e:void 0}const PNe=["en","zh-CN"];function i_(e,t){const n=typeof e=="number"?e:Number(e??0),s=Number.isFinite(n)?n:0;return`${s} ${t}${s===1?"":"s"}`}const $V={"capacityChoice.persistenceUnconfirmed":"Saving the last interrupted turn could not be confirmed.","capacityChoice.title":"Choose a workspace to stop","capacityChoice.description":"No ACP capacity is available. Choose a workspace whose sessions you want to stop, or cancel and keep working.","capacityChoice.warning":"Stopping interrupts all listed sessions and their tools. Files, workspace registration and saved history remain. Unsaved work may be lost. Closing this dialog after confirmation does not undo the stop.","capacityChoice.outdated":"The draft, session or daemon has changed. Cancel and try the original operation again.","capacityChoice.inProgress":"The selected stop is still being resolved. Refresh its status before continuing.","capacityChoice.failedUnreleased":"The stop failed. This workspace remains unavailable until its old processes are confirmed stopped. Capacity is still reserved. Refresh to check cleanup.","capacityChoice.failedUnknownCleanup":"The stop failed. Cleanup could not be confirmed. Refresh its status before continuing.","capacityChoice.workspaces":"Workspace to stop","capacityChoice.requester":"This workspace owns the operation you are trying to continue.","capacityChoice.running":"Running","capacityChoice.waiting":"Waiting for your response","capacityChoice.background":"Background work running","capacityChoice.backgroundUnknown":"Background work status unknown","capacityChoice.none":"No workspace can currently be stopped here. Review the reasons above, stop the independent work, or cancel.","capacityChoice.refresh":"Refresh status","capacityChoice.continue":"Continue original operation","capacityChoice.confirm":"Stop these sessions and continue","capacityChoice.stopped":"This workspace was stopped to free ACP capacity. Resume this conversation when needed.","capacityChoice.resume":"Resume conversation","capacityChoice.blocked.stopping":"Stopping","capacityChoice.blocked.not_live":"No live ACP","capacityChoice.blocked.release_unavailable":"Owned process release cannot be observed","capacityChoice.blocked.session_start_pending":"Session startup or restore in progress","capacityChoice.blocked.workspace_control_pending":"Workspace management or MCP work in progress","capacityChoice.blocked.session_closing":"Session close or reset in progress","capacityChoice.blocked.runtime_unavailable":"Workspace unavailable or untrusted","capacityChoice.blocked.special_runtime":"Special-purpose workspace","capacityChoice.blocked.unsupported":"Runtime stop is not supported","capacityChoice.blocked.activity_unknown":"Activity could not be observed","capacityChoice.blocked.pendingSessionStarts":"Session startup pending","capacityChoice.blocked.acpConnections":"An ACP client is connected","capacityChoice.blocked.memoryTasks":"Memory task running","capacityChoice.blocked.voiceSessions":"Voice session active","capacityChoice.blocked.management_pending":"Workspace management pending","capacityChoice.blocked.scheduler_pending":"Scheduled session restore in progress","capacityChoice.blocked.enabled_scheduled_tasks":"Disable enabled scheduled tasks first","capacityChoice.blocked.scheduled_tasks_unknown":"Scheduled tasks could not be read","capacityChoice.capacity":e=>`ACP capacity: ${e?.used} / ${e?.limit}`,"capacityChoice.sessions":e=>`${e?.count} loaded session(s)`,"capacityChoice.queued":e=>`${e?.count} queued`,"capacityChoice.outcome":e=>`${e?.closed} session(s) closed; ${e?.remaining} remaining.`,"footnotes.note":e=>`Footnote ${e?.number??""}`,"footnotes.references":e=>`View ${e?.count??""} references`,"footnotes.preview":"Reference preview","footnotes.previous":"Previous reference","footnotes.next":"Next reference","footnotes.citations":e=>`${e?.count??0} ${e?.count===1?"citation":"citations"}`,"daemon.capacity.exhausted":"The service has reached its concurrent capacity limit and cannot start this session. Try again later or cancel this operation.","git.currentBranch":e=>`Current Git branch: ${e?.branch??""}`,"git.detached":"Detached HEAD","git.clean":"Working tree clean","git.operation.merge":"Merging","git.operation.rebase":"Rebasing","git.operation.cherry-pick":"Cherry-picking","git.operation.revert":"Reverting","git.operation.bisect":"Bisecting","git.conflicted":e=>`${e?.count??0} conflicted`,"git.staged":e=>`${e?.count??0} staged`,"git.unstaged":e=>`${e?.count??0} modified`,"git.untracked":e=>`${e?.count??0} untracked`,"git.ahead":e=>`${e?.count??0} ahead`,"git.behind":e=>`${e?.count??0} behind`,"git.stash":e=>`${e?.count??0} stashed`,"branchPicker.label":"Git","branchPicker.search":"Search for branches and actions","branchPicker.loading":"Loading branches…","branchPicker.noBranches":"No branches","branchPicker.noTags":"No tags","branchPicker.action.pull":"Update Project","branchPicker.action.push":"Push","branchPicker.action.commit":"Commit","branchPicker.action.newBranch":"New Branch…","branchPicker.action.checkoutRef":"Checkout Tag or Revision…","branchPicker.action.viewChanges":"View Changes","branchPicker.action.history":"History","branchPicker.newBranchPlaceholder":"Branch name","branchPicker.invalidBranchName":"Invalid branch name — avoid spaces, ~, ^, :, ? * and leading -","branchPicker.checkoutRefPlaceholder":"Tag name or commit SHA","branchPicker.section.recent":"Recent","branchPicker.section.local":"Local","branchPicker.section.remote":"Remote","branchPicker.section.tags":"Tags","branchPicker.checkedOut":e=>`Checked out ${e?.branch??""}`,"branchPicker.createdBranch":e=>`Created branch ${e?.branch??""}`,"branchPicker.pushSuccess":"Pushed successfully","branchPicker.pullSuccess":"Updated successfully","branchPicker.pullBlocked":"Update blocked by uncommitted changes","branchPicker.pullStash":"Stash Changes and Update","branchPicker.pullDiscard":"Discard Changes and Update…","branchPicker.pullDiscardConfirm":"Discard ALL uncommitted changes (including untracked files)? This cannot be undone.","branchPicker.pullDiscardGo":"Discard and Update","branchPicker.pullStashConflict":e=>`Updated, but restoring your stashed changes failed. They are kept in stash entry ${String(e?.sha??"").slice(0,12)||"(see git stash list)"} — resolve any conflict markers, then restore it manually.`,"branchPicker.cancel":"Cancel","branchPicker.hint.upToDate":"Up to date","branchPicker.hint.noUpstream":"No upstream","branchPicker.hint.upstreamGone":"Upstream gone","branchPicker.hint.behindDirty":e=>`↓${e?.count??0} · uncommitted changes`,"branchPicker.hint.setsUpstream":"Sets upstream on push","branchPicker.hint.createsPushBranch":e=>`Creates ${e?.target??""}`,"branchPicker.hint.aheadBehind":e=>`↑${e?.ahead??0} ↓${e?.behind??0} · diverged`,"branchPicker.hint.nothingToPush":"Nothing to push","branchPicker.hint.noChanges":"No changes","branchPicker.hint.changes":e=>`${e?.count??0} ${e?.count===1?"change":"changes"}`,"branchPicker.hint.changesUntracked":e=>`${e?.count??0} ${e?.count===1?"change":"changes"} (${e?.untracked??0} untracked)`,"branchPicker.action.manageRemotes":"Manage Remotes…","branchPicker.remotes.title":"Remotes","branchPicker.remotes.back":"Back to branches","branchPicker.remotes.loading":"Loading remotes…","branchPicker.remotes.empty":"No remotes configured","branchPicker.remotes.noMatches":"No remotes match the search","branchPicker.remotes.namePlaceholder":"Remote name","branchPicker.remotes.urlPlaceholder":"Remote URL","branchPicker.remotes.add":"Add","branchPicker.remotes.remove":e=>`Remove ${e?.name??""}`,"branchPicker.remotes.removeConfirm":"Confirm","branchPicker.remotes.removeConfirmFor":e=>`Confirm removing ${e?.name??""}${e?.extras?` (${e.extras})`:""}`,"branchPicker.remotes.invisibleName":"(invisible name)","branchPicker.remotes.hiddenChars":"(hidden characters)","branchPicker.remotes.lookalikeName":"(lookalike name)","branchPicker.remotes.searchPlaceholder":"Search remotes","branchPicker.remotes.urlTooltipFetch":e=>`fetch: ${e?.url??""}`,"branchPicker.remotes.urlTooltipPush":e=>`push: ${e?.url??""}`,"branchPicker.remotes.promisor":"partial clone","branchPicker.remotes.partialClone":e=>`partial clone (${e?.filter})`,"branchPicker.remotes.customRefspec":"custom refspec","branchPicker.remotes.extraUrls":e=>`+${e?.count??0} ${e?.count===1?"URL":"URLs"}`,"branchPicker.remotes.otherSettings":e=>`${e?.count??0} ${e?.count===1?"other setting":"other settings"}`,"branchPicker.remotes.added":e=>`Added remote ${e?.name??""}`,"branchPicker.remotes.removed":e=>`Removed remote ${e?.name??""}`,"branchPicker.remotes.invalidInput":"Enter a remote name and URL (no leading -)","gitCommit.title":"Commit","gitCommit.messagePlaceholder":"Commit message (⌘/Ctrl+Enter to commit)","gitCommit.generating":"Generating commit message…","gitCommit.genFailed":"Auto-generation failed — write your message","gitCommit.prLogUnavailable":"Could not load commits for the selected base branch.","gitCommit.prPushFirst":"Push your branch to a remote before creating a pull request.","gitCommit.commit":"Commit","gitCommit.commitAndPush":"Commit and Push","gitCommit.createPr":"Create Pull Request","gitCommit.prTitlePlaceholder":"Pull request title","gitCommit.prBodyPlaceholder":"Description (optional)","gitCommit.prEdit":"Edit","gitCommit.prPreview":"Preview","gitCommit.prSubmit":"Create","gitCommit.prCreated":e=>`Pull Request #${e?.number??""} created`,"gitCommit.commitSuccess":e=>`Committed ${e?.sha??""}`,"gitCommit.commitPushSuccess":e=>`Committed & pushed ${e?.sha??""}`,"gitCommit.commitSuccessPushFailed":e=>`Committed ${e?.sha??""} — push failed: ${e?.error??"unknown"}`,"branchSelect.baseBranch":"Base branch","branchSelect.search":"Search branches…","branchSelect.loading":"Loading…","branchSelect.noMatches":"No matches","branchSelect.error":"Failed to load branches","branchSelect.retry":"Retry","branchSelect.local":"local","gitDiff.title":"Changes","gitDiff.summary":e=>`${e?.count??0} files · +${e?.added??0} −${e?.removed??0}`,"gitDiff.loading":"Loading changes…","gitDiff.empty":"No changes in the working tree","gitDiff.unavailable":"Git is not available for this workspace","gitDiff.error":"Failed to load changes","gitDiff.binary":"Binary","gitDiff.untracked":"Untracked","gitDiff.deleted":"Deleted","gitDiff.noDiff":"No changes to display","gitDiff.fileError":"Failed to load this diff","gitDiff.truncated":"Diff truncated — the file is too large to show in full","gitDiff.hidden":e=>`${e?.count??0} more file(s) not shown`,"gitDiff.expand":e=>`Show changes for ${e?.path??"file"}`,"gitDiff.collapse":e=>`Hide changes for ${e?.path??"file"}`,"gitMode.title":"Git mode","gitMode.current":"Current branch","gitMode.currentDesc":e=>`Develop directly on ${e?.branch??"main"}`,"gitMode.branch":"New branch","gitMode.branchDesc":e=>`Create a new branch from ${e?.branch??"main"}`,"gitMode.branchPlaceholder":"feat/my-feature","gitMode.branchLabel":"Branch name","gitMode.branchConflictWarning":"Only one branch session per workspace at a time","gitMode.branchHint":"Switches the working directory to a new branch","gitMode.branchInvalidName":"Invalid branch name","gitMode.worktree":"Worktree","gitMode.worktreeDesc":"Isolated copy · can run in parallel","gitMode.confirmBranch":"Create branch","gitMode.confirmWorktree":"Create worktree","gitMode.resetToCurrent":"Reset to current branch","gitLog.title":"History","gitLog.subtitle":e=>`${e?.count??0} commits`,"gitLog.loading":"Loading history…","gitLog.empty":"No commits yet","gitLog.unavailable":"Git is not available for this workspace","gitLog.error":"Failed to load history","gitLog.loadMore":"Load more","gitLog.loadingMore":"Loading…","gitLog.files":e=>`${e?.count??0} files · +${e?.added??0} −${e?.removed??0}`,"gitLog.detailError":"Failed to load commit details","gitLog.hidden":e=>`${e?.count??0} more file(s) not shown`,"gitLog.copySha":e=>`Copy commit ${e?.sha??""}`,"gitLog.allBranches":"All branches","gitLog.search":"Search message, author, or hash","gitLog.noMatches":"No commits match","githubPrs.title":"Pull requests","githubPrs.subtitle":e=>`${e?.count??0} open`,"githubPrs.loading":"Loading pull requests…","githubPrs.empty":"No open pull requests","githubPrs.unavailable":"This workspace is not a git repository","githubPrs.error":"Failed to load pull requests","githubPrs.cliUnavailable":"The GitHub CLI (gh) is not installed on the daemon host.\nInstall it and run `gh auth login`, then try again.","githubPrs.reviewApproved":"Approved","githubPrs.reviewChanges":"Changes requested","githubPrs.reviewRequired":"Review required","githubPrs.checksPassing":"Checks passing","githubPrs.checksFailing":"Checks failing","githubPrs.checksPending":"Checks pending","githubPrs.open":e=>`Open pull request #${e?.number??""} on GitHub`,"workspace.paneLabel":e=>`Workspace: ${e?.name??""}`,"about.auth":"Auth","about.baseUrl":"Base URL","about.fastModel":"Fast Model","about.memoryUsage":"Memory Usage","about.model":"Model","about.noProxy":"no proxy","about.noSandbox":"no sandbox","about.platform":"OS","about.proxy":"Proxy","about.runtime":"Runtime","about.sandbox":"Sandbox","about.sessionId":"Session ID","about.title":"Status","agent.back":"Back","agent.builtInBadge":"(built-in)","agent.action.delete":"Delete Agent","agent.action.edit":"Edit Agent","agent.action.view":"View Agent","agent.chooseAction":e=>`Choose action for ${e?.name??""}`,"agent.chooseActionTitle":"Choose Action","agent.colorLabel":"Color: ","agent.colorUpdated":e=>`Updated color for ${e?.name??""}`,"agent.create":"Create a new subagent","agent.create.button":"Create","agent.create.confirm":"Confirm and Save","agent.create.desc":"Create a new subagent","agent.create.descPlaceholder":"What does this agent do?","agent.create.describeAgent":"Describe requirements","agent.create.description":"Description","agent.create.editAgain":"Edit","agent.create.enterDescription":"Enter Description","agent.create.enterName":"Enter Subagent Name","agent.create.enterPrompt":"Enter System Prompt","agent.create.generateFailed":e=>`Failed to generate subagent: ${e?.error??"Unknown error"}`,"agent.create.generate":"Generate","agent.create.generatedDescription":"Description","agent.create.generatedSystemPrompt":"System prompt","agent.create.generatingConfig":"Generating subagent configuration...","agent.create.generatingPrompt":"Generating...","agent.create.loading":"Creating...","agent.create.location":"Choose Location","agent.create.method":"Choose Generation Method","agent.create.method.manual":"Manual Creation","agent.create.method.o1code":"Generate with O1-Code","agent.create.method.o1code.recommended":"Generate with O1-Code (Recommended)","agent.create.method.o1code.desc":"LLM generates the description and system prompt","agent.create.name":"Name","agent.create.namePlaceholder":"my-agent","agent.create.nameHelp":"Enter a clear, unique name for this subagent.","agent.create.project":"Project","agent.create.project.cli":"Workspace","agent.create.project.desc":"Create a project-level subagent","agent.create.prompt":"System prompt","agent.create.promptPlaceholder":"You are a specialized agent that...","agent.create.promptPlaceholder.cli":"e.g., You are an expert code reviewer...","agent.create.promptHelp":"Write the system prompt that defines this subagent's behavior. Be comprehensive for best results.","agent.create.preview":"Preview","agent.create.o1codeHint":"Explain the responsibilities, usage scenarios, and important constraints, then generate each field separately.","agent.create.o1codePlaceholder":"> e.g., Expert code reviewer that reviews code based on best practices...","agent.create.regenerate":"Regenerate draft","agent.create.required":"Name, description, and system prompt are required.","agent.create.tools":"Allowed tools","agent.create.toolsHelp":"Enter canonical tool names separated by commas or lines. MCP tools use mcp__server__tool; leave blank to inherit all tools.","agent.create.disallowedTools":"Disallowed tools","agent.create.model":"Model","agent.create.approvalMode":"Approval mode","agent.create.maxTurns":"Maximum execution turns","agent.create.maxTurnsHelp":"Limits the model reasoning rounds for a single task. Execution stops at the limit; leave blank for no agent-specific limit.","agent.create.maxTurnsInvalid":"Maximum execution turns must be a positive integer.","agent.create.mcpServers":"MCP servers","agent.create.mcpServers.empty":"No MCP servers are available.","agent.create.mcpServers.select":"Select an MCP Server","agent.create.mcpServers.noneSelected":"No MCP Servers selected.","agent.create.modelGenerate":"Generate with model","agent.create.modelGenerate.description":"Describe what you need, then generate and review the description and system prompt separately.","agent.create.color":"Color","agent.create.jsonObjectHelp":"Enter a JSON object, or leave blank.","agent.create.save":"Save Agent","agent.create.scope":"Category","agent.create.manualDescHelp":"Describe when and how this subagent should be used.","agent.create.manualDescPlaceholder":"e.g., Reviews code for best practices and potential bugs.","agent.create.tools.builtin":"Built-in tools","agent.create.tools.empty":"No tools are available.","agent.create.tools.mcp":"MCP tools","agent.create.tools.type":"Tool type","agent.create.tools.selectServer":"Select an MCP Server","agent.create.tools.selectTool":"Select a tool","agent.create.tools.noneSelected":"No tools selected.","agent.create.tools.initializing":"Initializing tool catalogs...","agent.create.tools.preheatFailed":"ACP preheating did not complete.","agent.create.tools.loadFailed":"Failed to load built-in tools.","agent.create.removeSelection":e=>`Remove ${e?.name??""}`,"agent.create.toolsSelectHelp":"Select the tools this subagent may use. Leave all unchecked to inherit all tools.","agent.create.toolsSelection":"Select Tools","agent.create.tools.all":"All Tools","agent.create.tools.allDefault":"All Tools (Default)","agent.create.tools.allInfo":"All tools selected, including MCP tools","agent.create.tools.allInfoFallback":"All tools selected, including MCP tools","agent.create.tools.editLabel":"• Edit tools:","agent.create.tools.executionLabel":"• Execution tools:","agent.create.tools.none":"(none)","agent.create.tools.readEdit":"Read & Edit Tools","agent.create.tools.readEditExecute":"Read & Edit & Execution Tools","agent.create.tools.readOnlyLabel":"• Read-only tools:","agent.create.tools.readOnly":"Read-only Tools","agent.create.tools.selected":"Selected tools:","agent.create.user":"User","agent.create.user.cli":"Global","agent.create.user.desc":"Create a user-level subagent","agent.create.useGenerated":"Use this draft","agent.approval.inherit":"Default","agent.approval.default":"Default approval","agent.approval.plan":"Plan only","agent.approval.auto-edit":"Automatically approve edits","agent.approval.yolo":"Automatically approve all actions","agent.approval.bubble":"Bubble approval","agent.approval.desc.inherit":"Use the subagent's default approval rules.","agent.approval.desc.bubble":"Forward tool approval requests to the parent session.","agent.createFirstHint":"Use '/agents create' to create your first subagent.","agent.created":e=>`Created ${e?.name??""}`,"agent.edit.save":"Save changes","agent.updated":e=>`Updated ${e?.name??""}`,"agent.turnsBadge":e=>`${e?.count??0} turns`,"agent.delete":"Delete","agent.delete.confirm":e=>`Are you sure you want to delete "${e?.name??""}"?`,"agent.delete.loading":"Deleting...","agent.delete.no":"No","agent.delete.title":e=>`Delete ${e?.name??""}`,"agent.delete.yes":"Yes, delete","agent.deleted":e=>`Deleted ${e?.name??""}`,"agent.edit":"Edit","agent.edit.color":"Edit Color","agent.edit.tools":"Edit Tools","agent.editColorTitle":e=>`Edit Color: ${e?.name??""}`,"agent.editTitle":e=>`Edit ${e?.name??""}`,"agent.empty":"No subagents found.","agent.noMatches":"No matching subagents found.","agent.footer.back":"Esc to go back","agent.footer.cliBack":"Enter to select, ↑↓ to navigate, Esc to go back","agent.footer.cliSelect":"Enter to select, ↑↓ to navigate, Esc to close","agent.footer.close":"Esc to close","agent.footer.deleteConfirm":"Enter to confirm, Esc to cancel","agent.footer.enterNext":"Press Enter to continue, Esc to go back","agent.footer.generating":"Esc to cancel","agent.footer.createLocation":"Press Enter to continue, ↑↓ to navigate, Esc to cancel","agent.footer.createContinue":"Press Enter to continue, ↑↓ to navigate, Esc to go back","agent.footer.final":"Press Enter to save, e to save and edit, Esc to go back","agent.footer.nav":"↑↓ navigate · Enter select · Esc back","agent.footer.navBack":"↑↓ navigate · Enter select · Esc back","agent.footer.navSelect":"↑↓ navigate · Enter select · Esc close","agent.footer.viewerBack":"Esc to go back","agent.filePathLabel":"File Path: ","agent.label":"Agent","agent.location":"Location","agent.level.builtin":"Built-in","agent.level.extension":"Extension","agent.level.project":"Project","agent.level.user":"User","agent.level.filter":"Filter by agent level","agent.manage":"Manage","agent.manage.desc":"Manage existing subagents","agent.modelLabel":"Model: ","agent.overriddenBadge":"(overridden by project level agent)","agent.readonly":"This agent is read-only.","agent.select":"Select an agent.","agent.selectAction":"Select an action","agent.descriptionLabel":"Description:","agent.systemPromptLabel":"System Prompt:","agent.level.label":"Level","agent.step":e=>`Step ${e?.n??""}`,"agent.tools":"Tools","agent.toolsLabel":"Tools: ","agent.detail.overview":"Basic Information","agent.detail.tools":"Tools","agent.detail.mcp":"MCP","agent.detail.hooks":"Hooks","agent.detail.systemPrompt":"System Prompt","agent.toolsUpdated":e=>`Updated tools for ${e?.name??""}`,"agent.usingCount":e=>`Using: ${e?.count??0} agents`,"agent.view":"View","agents.closed":"Agents panel closed.","agents.title":"Agents","subagent.result":"Result","subagent.tools":e=>`Tools (${e?.count??0})`,"subagent.toolsCount":e=>`${e?.count??0} tools`,"subagent.toggleStream":"Toggle agent stream details","subagent.creating":"Creating…","subagent.pending":"pending","subagent.running":"running","subagent.background":"background task","subagent.completed":"completed","subagent.failed":"failed","subagent.cancelled":"cancelled","subagent.paused":"paused","subagent.detailsLoading":"Loading agent details…","subagent.detailsLoadFailed":"Failed to load agent details.","agentType.general-purpose":"General-purpose","agentType.explore":"Explore","agentType.statusline-setup":"Status Line Setup","agentType.review-agent":"Review Agent","agentType.test-engineer":"Test Engineer","agentType.fork":"Fork","timeline.parallelAgents":"Parallel agents","timeline.thinking":"Thinking","timeline.assistantUpdate":"Assistant update","timeline.toolCalls":e=>`${e?.count??0} tool call${e?.count===1?"":"s"}`,"timeline.planUpdate":"Plan update","timeline.statusUpdate":"Status update","timeline.userTurn":"User turn","timeline.planDetail":"plan update","timeline.parallelAgentsDetail":e=>`${e?.count??0} parallel agent${e?.count===1?"":"s"}`,"timeline.noActivity":"No activity","timeline.sessionTimeline":"Session timeline","timeline.turnPrefix":e=>`Turn ${e?.index??0}`,"timeline.currentTurn":"Current turn","timeline.kind.thought":"thinking","timeline.kind.commentary":"assistant update","timeline.kind.tool":"tool calls","timeline.kind.agents":"parallel agents","timeline.kind.plan":"plan update","timeline.kind.status":"status update","timeline.kind.none":"turn","common.copy":"Copy","common.download":"Download","common.downloading":"Downloading…","common.downloadFailed":e=>`Download failed: ${e?.message??""}`,"common.open":"Open","common.openFailed":e=>`Could not open link: ${e?.message??""}`,"artifact.openLink":"Open link","artifact.longDocument":"File is large. Source is shown by default.","artifact.renderFullPreview":"Render full preview","artifact.registrationFailed":e=>`Could not add exported artifact: ${e?.message??""}`,"artifact.previewFailed":e=>`Could not load preview: ${e?.message??""}`,"artifact.showSource":"Show source","common.na":"N/A","common.server":"Server","common.agent":"Agent","common.auto":"auto","common.runtime":"Runtime","common.failedToLoad":"Failed to load","auth.notSet":"(not set)","auth.apiKeyPlaceholder":"sk-...","auth.modelsPlaceholder":"model-id-1, model-id-2","model.usingModel":e=>`Using ${e?.isRuntime?"runtime ":""}model: ${e?.modelId??""}`,"mermaid.label":"mermaid","mermaid.errorLabel":"mermaid (error)","user.uploadedImage":e=>`User uploaded image ${e?.index??1}`,"voice.noSpeech":"No speech detected.","voice.stopDictation":"Stop dictation","voice.transcribing":"Transcribing…","voice.starting":"Starting…","voice.errorRetry":e=>`Voice error — click to retry${e?.message?`: ${e.message}`:""}`,"voice.noSpeechRetry":"No speech detected — click to retry","voice.startDictation":"Start voice dictation","voice.error":"Voice error","resume.failedToLoad":"Failed to load sessions","toast.dismiss":"Dismiss notification","toast.dismissShort":"Dismiss","insight.ready":"Insight report generated successfully!","request.cancelled":"Request cancelled.","visionBridge.model":"vision model","visionBridge.skipped":e=>`Vision bridge cancelled.${e?.egressOccurred===1?` Your image and prompt/context were sent to ${e?.target??""}.`:""}`,"visionBridge.failed":e=>e?.egressOccurred===1?`Vision bridge (${e?.modelName??""}) failed: the vision model request failed. Your image and prompt/context were sent to ${e?.target??""}. The image was not interpreted.`:`Vision bridge (${e?.target??""}) failed: the vision bridge could not run. The image was not interpreted.`,"visionBridge.ok":e=>`Converted ${e?.convertedCount??0} image(s)${Number(e?.omittedCount??0)>0?` (${e?.omittedCount??0} image(s) omitted)`:""} to text via ${e?.target??""}.${e?.egressOccurred===1?" Your image and prompt/context were sent to that model.":""}`,"approval.goal.title":"Confirm session goal","approval.goal.overview":"Goal overview","approval.goal.full":"Full content","approval.goal.outcome":"Outcome","approval.goal.doneWhen":"Completion criteria","approval.goal.mustNot":"Constraints","approval.goal.budget":"Budget","approval.goal.onBlock":"When blocked","approval.goal.context":"Context","approval.goal.confirm":"Set goal and continue","approval.goal.reject":"Not now","approval.goal.hint":"Setting this goal continues execution and checks progress after each turn. Blockers will be reported.","approval.goal.pending":"Submitting…","approval.goal.failed":"Could not submit your choice. Please try again.","approval.execQuestion":e=>`Allow execution of: '${e?.tool??""}'?`,"approval.changeQuestion":"Apply this change?","approval.launchAgentQuestion":"Launch this agent?","approval.explain":"Explain","approval.explanation":"Command explanation","approval.explaining":"Explaining…","approval.explanationThinking":"Thinking…","approval.explanationFailed":"Explanation failed","approval.reExplain":"Explain again","approval.option.allowOnce":"Yes, allow once","approval.option.allowOnceAndSwitchToDefault":"Allow once and switch to Default mode","approval.option.restorePrevious":"Yes, restore previous mode","approval.option.rejectOnce":"Reject","approval.option.allowAllEdits":"Allow All Edits","approval.option.allowAlwaysProject":"Always allow in this project","approval.option.allowAlwaysUser":"Always allow for this user","approval.option.allowAlwaysServer":"Always allow for this server","approval.option.allowAlwaysTool":"Always allow for this tool","assistant.branch":"Branch","assistant.copy":"Copy","assistant.dissatisfied":"Not satisfied","assistant.satisfied":"Satisfied","at.category.extensions":"Extensions","at.category.extensions.description":"Reference active extensions","at.category.files":"Files","at.category.files.description":"Reference workspace files","at.files.upload":"Upload file","at.files.upload.description":"Upload a file into this folder","composer.upload.pending":"Waiting","composer.upload.uploading":"Uploading","composer.upload.done":"Uploaded","composer.upload.error":"Failed","composer.upload.error.noDaemon":"No daemon connection","composer.upload.error.tooLarge":e=>`File exceeds the ${e?.limit??""} upload limit`,"composer.upload.error.tooManyFiles":e=>`${e?.count??0} more files were not added (limit per batch)`,"composer.upload.cancel":"Cancel upload","composer.upload.dismiss":"Dismiss","composer.upload.renamed":"Saved as","composer.upload.drop":"Drop files","composer.dropChoice.title":e=>Number(e?.count)===1?"Add dropped file":`Add ${e?.count??0} dropped files`,"composer.dropChoice.description":"Attach the files to this message for the agent to read, or upload them to the workspace and insert @ references.","composer.dropChoice.cancel":"Cancel","composer.dropChoice.upload":"Upload to workspace","composer.dropChoice.reference":"Attach to message","composer.dropChoice.moreFiles":e=>`and ${e?.count??0} more files`,"composerAdd.trigger":"Add to message","composerMobile.expand":"Expand editor","composerMobile.hideKeyboard":"Hide keyboard","composerMobile.done":"Done","composerMobile.photos":"Photos","composerMobile.camera":"Take photo","composerMobile.files":"Attach files","composerMobile.commands":"All commands","composerMobile.searchCommands":"Search commands","composerMobile.history":"Input history","composerMobile.previousInput":"Previous input","composerMobile.nextInput":"Next input","composerMobile.stop":"Stop","composerMobile.attachments":e=>`Attached files/images: ${e?.count??0}`,"composerAdd.emptyState":"No add actions are available here","composerAdd.noResults":"No results","composerAdd.loadError":"Failed to load results","composerAdd.unavailable":"Unavailable","composerAdd.file.label":"Add file","composerAdd.file.attachDisabled":"Message attachments are unavailable","composerAdd.file.uploadDisabled":"Workspace upload is unavailable","composerAdd.referenceFile.label":"Reference file","composerAdd.referenceFile.searchPlaceholder":"Search workspace files","composerAdd.extensions.label":"Extensions","composerAdd.extensions.empty":"No extensions are enabled","composerAdd.mcp.label":"MCP","composerAdd.mcp.empty":"No MCP servers are available","composerAdd.skills.label":"Skills","composerAdd.plan.label":"Plan mode","composerAdd.plan.description":"Plan first, run after you approve","composerAdd.plan.busy":"Switching mode","at.category.mcpResources":"MCP resources","at.category.mcpResources.description":"Reference MCP server resources","at.menu":"Reference menu","common.back":"back","common.all":"All","common.add":"add","common.cancel":"cancel","common.close":"close","common.fullscreen":"Fullscreen","common.exitFullscreen":"Exit fullscreen","common.continue":"continue","common.current":"current","common.disabled":"disabled","common.enabled":"enabled","common.enterSelect":"Enter to select","common.invalid":"invalid","common.loading":"Loading...","common.retry":"Try again","session.recovery.interrupted_prompt":"The previous request was interrupted before the response completed.","session.recovery.interrupted_turn":"The previous task was interrupted. Some tool results were not saved.","session.recovery.degraded_history":"Conversation history is incomplete. The interrupted task cannot be continued.","session.recovery.continue":"Continue execution","session.recovery.continuing":"Continuing…","session.recovery.failed":"Could not continue the conversation.","session.archived":"This conversation is archived","session.archivedDescription":"Unarchive it before opening the conversation.","session.capabilitiesFailed":"The daemon capabilities could not be loaded. Try again before opening this conversation.","session.contextConflict":"A standalone or Live conversation link cannot include a workspace target.","session.loadFailed":"Failed to load conversation","session.notFound":"Conversation not found","session.notFoundDescription":"This standalone conversation no longer exists.","session.resolving":"Opening conversation...","session.standaloneUnavailable":"Standalone conversations are unavailable","session.standaloneUpgradeRequired":"Upgrade the daemon to open standalone conversations.","session.stillCreating":"The conversation is still being created. Try checking again.","session.recoveryPending":"Creation may have succeeded, but the result could not be confirmed. Sending is paused to avoid creating a duplicate conversation.","session.recoveryChecking":"Checking the reserved conversation ID...","session.recoveryStillCreating":"The conversation is still being created. Check again in a moment.","session.recoveryAbsent":"No conversation exists for the reserved ID. You can explicitly start a fresh conversation.","session.recoveryUnknown":"The creation result is still unknown. Check again before starting another conversation.","session.recoveryArchived":"The recovered conversation is archived. Unarchive it before opening.","session.recoveryCheckFailed":"Failed to check conversation creation","session.recoveryBlocksAction":"Resolve the pending standalone conversation state before continuing.","session.checkStatus":"Check status","session.retryCreation":"Start a fresh conversation","session.writerBlocked":"Another O1-Code process or an unresolved writer lock may be blocking this conversation. Close it in other processes and try again. If it still fails, check local daemon diagnostics before recovery.","session.directoryRecreated":"The transcript was recovered, but files from the previous private directory were not available.","session.directoryMissing":"This conversation's private working directory is missing. Repair it before sending another prompt.","session.directoryCompromised":"This private working directory is unsafe and cannot be repaired automatically. Export the transcript, then delete the conversation.","session.repair":"Repair directory","session.repairing":"Repairing...","session.repairFailed":"Failed to repair the private working directory","session.repairSucceeded":"The private working directory was repaired.","session.unarchive":"Unarchive","session.unarchiveFailed":"Failed to unarchive this conversation.","session.workspaceActionUnavailable":"This action is available only in project conversations.","common.save":"save","common.navigate":"↑↓ to navigate","common.next":"next","common.noResults":"No results","common.previous":"previous","common.expand":"Expand","common.collapse":"Collapse","common.refresh":"Refresh","common.search":"Search","common.valid":"valid","common.clients":e=>`${e?.count??0} clients`,"agent.count":e=>`${e?.count??0} agents`,"askUser.submit":"Submit","askUser.submitting":"Submitting...","askUser.submitFailed":"Failed to submit answer","askUser.submitOptionUnavailable":"Submit option is unavailable","askUser.ignore":"Ignore","askUser.multiHint":"multiple choice","askUser.progress":e=>`${e?.current??0}/${e?.total??0} questions`,"askUser.selectAnswer":"Select an answer","askUser.typePlaceholder":"Type something...","askUser.shortcuts.previous":"← previous","askUser.shortcuts.optionsSingle":"↑↓ select · Enter submit","askUser.shortcuts.optionsNext":"↑↓ select · Enter next","askUser.shortcuts.optionsFinal":"↑↓ select · Enter submit","askUser.shortcuts.multiSingle":"↑↓ move · Space select/deselect · Enter select & submit","askUser.shortcuts.multiNext":"↑↓ move · Space select/deselect · Enter select & next","askUser.shortcuts.multiFinal":"↑↓ move · Space select/deselect · Enter select & submit","askUser.shortcuts.customTrigger":"↑↓ select · Enter edit","askUser.shortcuts.customTriggerMulti":"↑↓ move · Enter edit","askUser.shortcuts.inputEmpty":"Type an answer · Esc stop editing","askUser.shortcuts.inputSingle":"Enter submit · Esc stop editing","askUser.shortcuts.inputNext":"Enter next · Esc stop editing","askUser.shortcuts.inputFinal":"Enter submit · Esc stop editing","copy.failedFallback":"Failed to copy to the clipboard","copy.inlineLatexMissing":"No matching inline LaTeX expression found in the last AI output.","copy.latexMissing":"No matching LaTeX block found in the last AI output.","copy.noOutput":"No output in history","copy.noText":"Last AI output contains no text to copy.","copy.codeMissing":"No matching code block found in the last AI output.","copy.outputCopied":"Last output copied to the clipboard","copy.toClipboard":e=>`${e?.label??"Selection"} copied to the clipboard`,"code.copy":"Copy","code.copied":"Copied!","echartsChart.noData":"No data","echartsChart.tableNotice":e=>{const t=Number(e?.omittedRows??0),n=Number(e?.omittedColumns??0);return t>0&&n>0?`Showing ${e?.visibleRows??0} of ${e?.totalRows??0} rows and ${e?.visibleColumns??0} of ${e?.totalColumns??0} columns`:n>0?`Showing ${e?.visibleColumns??0} of ${e?.totalColumns??0} columns`:`Showing ${e?.visibleRows??0} of ${e?.totalRows??0} rows`},"echartsChart.rendering":"Rendering chart","echartsChart.renderFailed":"Chart render failed.","echartsChart.viewMode":"View mode","echartsChart.showChart":"Show chart","echartsChart.showData":"Show data","echartsChart.chart":"Chart","echartsChart.data":"Data","markdownTable.blank":"(blank)","markdownTable.column":e=>`Column ${e?.index??""}`,"markdownTable.rows":e=>{const t=Number(e?.count??0);return`${t} row${t===1?"":"s"}`},"markdownTable.rowsFiltered":e=>`${e?.visible??0}/${e?.total??0} rows`,"markdownTable.hint":"Click headers to sort, open filters from ▾.","markdownTable.filtersActive":e=>{const t=Number(e?.count??0);return`${t} filter${t===1?"":"s"}`},"markdownTable.selection.selected":"Selected","markdownTable.selection.nonEmpty":"Non-empty","markdownTable.selection.numeric":"Numeric","markdownTable.selection.sum":"Sum","markdownTable.selection.average":"Average","markdownTable.selection.min":"Min","markdownTable.selection.max":"Max","markdownTable.copyTsv":"Copy TSV","markdownTable.copyTsvHint":"Copy as TSV for pasting into spreadsheet apps","markdownTable.copyVisible":"Copy table","markdownTable.customColumns":"Custom columns","markdownTable.customColumns.tableSection":"Columns shown in the table","markdownTable.customColumns.detailSection":"Fields shown in expanded rows","markdownTable.customColumns.toggleAllTable":"Toggle all table columns","markdownTable.customColumns.toggleAllDetails":"Toggle all expanded-row fields","markdownTable.customColumns.reset":"Reset","markdownTable.customColumns.noDetails":"No expanded-row fields selected.","markdownTable.freezeFirstColumn":"Freeze first column","markdownTable.unfreezeFirstColumn":"Unfreeze first column","markdownTable.densityLabel":"Table density","markdownTable.densityCurrent":e=>`${e?.density??""} density`.trim(),"markdownTable.density":e=>`Density: ${e?.density??""}`,"markdownTable.density.standard":"Standard","markdownTable.density.compact":"Compact","markdownTable.density.comfortable":"Comfortable","markdownTable.expandLongText":"Expand text","markdownTable.collapseLongText":"Collapse text","markdownTable.emptyValue":"(blank)","markdownTable.hideColumn":"Hide column","markdownTable.showHiddenColumns":e=>{const t=Number(e?.count??0);return`Show ${t} hidden column${t===1?"":"s"}`},"markdownTable.moveColumn":e=>`Move ${e?.column??""}`,"markdownTable.resizeColumn":e=>`Resize ${e?.column??""}`,"markdownTable.rowDetails":"Details","markdownTable.rowDetailsAria":e=>`View details for row ${e?.index??""}`,"markdownTable.closeRowDetailsAria":e=>`Hide details for row ${e?.index??""}`,"markdownTable.detailsHeader":"Row details","markdownTable.cellDialogTitle":"Current field value","markdownTable.copyCell":"Copy","markdownTable.close":"Close","markdownTable.actions":"Actions","markdownTable.sortByColumn":e=>`Sort by ${e?.column??""}`,"markdownTable.sortByColumnAsc":e=>`Sort by ${e?.column??""}, ascending`,"markdownTable.sortByColumnDesc":e=>`Sort by ${e?.column??""}, descending`,"markdownTable.filterColumn":e=>`Filter ${e?.column??""}`,"markdownTable.empty":"This table has no data.","markdownTable.emptyFiltered":"No rows match the filters.","markdownTable.sort.asc":"Sort ascending","markdownTable.sort.desc":"Sort descending","markdownTable.sort.clear":"Clear sort","markdownTable.filter.searchPlaceholder":"Search filter values","markdownTable.filter.searchAria":e=>`Search ${e?.column??""}`,"markdownTable.filter.selectVisible":"Select current results","markdownTable.filter.optionLimit":e=>`Showing first ${e?.count??0} items. Search to narrow results.`,"markdownTable.filter.noOptions":"No matches","markdownTable.filter.custom":"Custom filter","markdownTable.filter.numberAria":e=>`Number filter for ${e?.column??""}`,"markdownTable.filter.textAria":e=>`Text filter for ${e?.column??""}`,"markdownTable.filter.numberPlaceholder":"Value","markdownTable.filter.toPlaceholder":"To","markdownTable.filter.textPlaceholder":"Enter filter condition","markdownTable.filter.reset":"Reset","markdownTable.filter.cancel":"Cancel","markdownTable.filter.confirm":"Confirm","markdownTable.filter.text.contains":"Contains","markdownTable.filter.text.equals":"Equals","markdownTable.filter.text.notEquals":"Does not equal","markdownTable.filter.text.startsWith":"Starts with","markdownTable.filter.text.endsWith":"Ends with","markdownTable.filter.number.gt":"Greater than","markdownTable.filter.number.gte":"Greater than or equal to","markdownTable.filter.number.lt":"Less than","markdownTable.filter.number.lte":"Less than or equal to","markdownTable.filter.number.between":"Between","mermaid.rendering":"Rendering diagram...","mermaid.viewCode":"</>","mermaid.viewDiagram":"⊞","mermaid.zoomIn":"+","mermaid.zoomOut":"−","mermaid.zoomReset":"↺","contextUsage.active":"active","contextUsage.autocompactBuffer":"Autocompact buffer","contextUsage.bodyLoaded":"body loaded","contextUsage.builtinTools":"Built-in tools","contextUsage.contextWindow":"Context window","contextUsage.detailHint":"Run /context detail for per-item breakdown.","contextUsage.estimatedOverhead":"Estimated base overhead","contextUsage.estimatedUntilProviderUsage":"Token usage is estimated until provider usage is received.","contextUsage.free":"Free","contextUsage.memoryFiles":"Memory files","contextUsage.messages":"Messages","contextUsage.startupContext":"Startup context","contextUsage.unattributed":"Unattributed","contextUsage.cachedPrefix":"Cached prefix","contextUsage.mcpTools":"MCP tools","contextUsage.model":"Model","contextUsage.noSession":"No active session yet. Send your first message before viewing context usage.","contextUsage.usageUnavailable":"Current context usage is unavailable. The estimates below cover base overhead only, excluding conversation messages.","contextUsage.overLimit":"Context exceeds limit! Use /compress or /clear to reduce.","contextUsage.skills":"Skills","contextUsage.systemPrompt":"System prompt","contextUsage.title":"Context Usage","contextUsage.tokens":"tokens","contextUsage.used":"Used","contextUsage.accessibleUsage":e=>`${e?.used} of ${e?.total} tokens used`,"contextUsage.viewDetails":"View details","contextUsage.viewInConversation":"Click to view the breakdown in the conversation.","daemon.title":"Daemon Status","daemon.connection.title":"Connections","daemon.connection.target":"Current target","daemon.connection.state":"Connection state","daemon.connection.address":"Daemon address","daemon.connection.token":"Bearer token (optional)","daemon.connection.connect":"Connect","daemon.connection.add":"Add connection","daemon.connection.saved":"Connected computers","daemon.connection.forget":e=>`Forget ${e?.address}`,"daemon.connection.invalid":"Enter a valid HTTP or HTTPS origin.","daemon.connection.notReady":"The daemon did not accept the connection; the stored credential was left unchanged.","daemon.connection.authFailed":"The daemon rejected that token; the stored credential was left unchanged.","daemon.connection.reloadUnavailable":"Browser storage is unavailable, so the new token could not be applied to this connection.","daemon.connection.switchUnavailable":"Browser storage is unavailable, so the token could not be carried to that daemon.","daemon.connection.status.idle":"Idle","daemon.connection.status.connecting":"Connecting","daemon.connection.status.adding":"Adding","daemon.connection.status.connected":"Connected","daemon.connection.status.error":"Error","daemon.details.loading":"Loading diagnostics...","daemon.details.failed":"Failed to load diagnostics.","daemon.refresh":"Refresh","daemon.loading":"Loading daemon status...","daemon.loadFailed":"Failed to load daemon status","daemon.updatedAt":e=>`Updated ${e?.time??""}`,"daemon.none":"none","daemon.level.ok":"OK","daemon.level.warning":"Warning","daemon.level.error":"Error","daemon.level.unavailable":"Unavailable","daemon.issues.title":"Issues","daemon.overview.title":"Daemon","daemon.overview.version":"Version","daemon.overview.pid":"PID","daemon.overview.mode":"Mode","daemon.overview.uptime":"Uptime","daemon.overview.workspace":"Workspace","daemon.runtime.title":"Runtime","daemon.runtime.activeSessions":"Active sessions","daemon.runtime.activePrompts":"Active prompts","daemon.runtime.idle":"Idle for","daemon.runtime.noActivity":"no activity yet","daemon.runtime.pendingPermissions":"Pending permissions","daemon.runtime.permissionPolicy":"Permission policy","daemon.runtime.channel":"ACP channel","daemon.runtime.channelLive":"live","daemon.runtime.channelDown":"down","daemon.runtime.startingUp":"Runtime is starting...","daemon.runtime.startFailed":"Runtime failed to start","daemon.runtime.memory":"Memory (RSS / heap)","daemon.transport.title":"Transport","daemon.transport.restSse":"REST SSE streams","daemon.transport.acpDisabled":"ACP transport disabled","daemon.transport.acpConnections":"ACP connections","daemon.transport.acpStreams":"ACP streams (session/SSE/WS)","daemon.transport.pendingRequests":"Pending client requests","daemon.transport.rateLimitRejected":"Rate-limit rejects","daemon.security.title":"Security","daemon.security.token":"Bearer token","daemon.security.requireAuth":"Require auth","daemon.security.loopback":"Loopback bind","daemon.security.allowOrigin":"Allowed origins","daemon.security.shell":"Session shell commands","daemon.security.configured":"configured","daemon.security.notConfigured":"not configured","daemon.limits.title":"Limits","daemon.limits.unlimited":"unlimited","daemon.limits.maxSessions":"Max sessions","daemon.limits.maxPendingPrompts":"Max pending prompts / session","daemon.limits.maxConnections":"Max listener connections","daemon.limits.eventRing":"Event ring size","daemon.limits.promptDeadline":"Prompt deadline","daemon.limits.sessionIdle":"Session idle timeout","daemon.capabilities.title":"Capabilities","daemon.capabilities.titleCount":e=>`Capabilities (${e?.count??0})`,"daemon.full.sessions.title":"Sessions","daemon.full.sessions.empty":"No active sessions","daemon.full.session.pendingPrompts":e=>`${e?.count??0} pending prompts`,"daemon.full.session.pendingPermissions":e=>`${e?.count??0} pending permissions`,"daemon.full.session.prompting":"prompting","daemon.full.workspace.title":"Workspace Diagnostics","daemon.full.workspace.empty":"No workspace diagnostics reported","daemon.full.acp.title":"ACP connections","daemon.tab.overview":"Overview","daemon.tab.usage":"Usage","daemon.tab.metrics":"Metrics","daemon.tab.diagnostics":"Diagnostics","daemon.charts.title":"Metrics","daemon.charts.empty":"Collecting metrics… charts appear after the first sample.","daemon.charts.concurrency":"Concurrency","daemon.charts.activePrompts":"Active tasks","daemon.charts.activeSessions":"Sessions","daemon.charts.requests":"Requests","daemon.charts.reqTotal":"Total","daemon.charts.reqErrors":"Errors","daemon.charts.apiLatency":"API latency","daemon.charts.promptLatency":"Prompt latency","daemon.charts.queueWait":"Queue wait","daemon.charts.promptDuration":"Duration","daemon.charts.eventLoop":"Event-loop lag","daemon.charts.eventLoopLag":"Lag p99","daemon.charts.queuedPrompts":"Queued","daemon.charts.reqRejected":"Rejected","daemon.charts.llmLatency":"LLM API latency","daemon.charts.apiHealth":"Model API health","daemon.charts.apiErrors":"API errors","daemon.charts.apiRetries":"Retries","daemon.charts.cpu":"CPU","daemon.charts.pipe":"IPC pipe","daemon.charts.pipeIn":"In","daemon.charts.pipeOut":"Out","daemon.charts.connections":"Connections","daemon.charts.cpuDaemon":"Daemon","daemon.charts.cpuChild":"Child","daemon.charts.rssDaemon":"Daemon RSS","daemon.charts.rssChild":"Child RSS","daemon.charts.memory":"Memory","daemon.charts.heap":"Heap","daemon.charts.tokens":"Token burn","daemon.charts.tokensIn":"Input","daemon.charts.tokensOut":"Output","daemon.charts.peak":"peak","daemon.charts.concurrency.help":"Live load at each sample: prompts running now, prompts queued (accepted but not yet dispatched), and active sessions. Queued rising above active is backpressure.","daemon.charts.requests.help":"Client↔daemon HTTP traffic per window — NOT model calls. Total requests, those returning 4xx/5xx, and those the rate limiter rejected.","daemon.charts.apiLatency.help":"Client↔daemon HTTP request duration (p50/p95) — how fast the daemon answers, not the model. Compare with LLM API latency to separate 'we are slow' from 'the model is slow'.","daemon.charts.llmLatency.help":"Per-round model API round-trip (daemon→model→daemon), p50/p95. Model-side latency, distinct from the HTTP API latency above.","daemon.charts.apiHealth.help":"Provider-side LLM failures. Each failed attempt = 1 error; each automatic backoff = 1 retry. Transient 429/5xx are usually absorbed by retries (errors ≈ retries); errors climbing above retries means calls are failing outright.","daemon.charts.promptLatency.help":"Per prompt (task): p95 time waiting in the per-session queue before dispatch, and p95 end-to-end run time. Rising queue wait signals backpressure.","daemon.charts.eventLoop.help":"Daemon event-loop lag p99 per window — the CPU-saturation / blocking signal. High lag means the daemon is starved and everything slows.","daemon.charts.cpu.help":"CPU utilization (% of all cores) at each sample: the daemon and the ACP child (where LLM/tool work runs). Child at 0% means no child is running.","daemon.charts.memory.help":"Resident memory at each sample: daemon RSS, daemon V8 heap, and ACP child RSS. Steady growth over time hints at a leak.","daemon.charts.pipe.help":"Bytes over the stdio pipe to/from the ACP child per window. Sustained high volume points to chatty framing between daemon and child.","daemon.charts.connections.help":"Live client transport connections at each sample: REST/SSE streams, ACP WebSocket streams, and ACP connections.","daemon.charts.tokens.help":"Input (prompt) and output (completion) tokens attributed to model turns per window — model spend over time.","daemon.usage.today":"Today","daemon.usage.period7d":"7D","daemon.usage.period30d":"30D","daemon.usage.rangeWeek":"Last 7 days","daemon.usage.rangeMonth":"Last 30 days","daemon.usage.rangeGroup":"Summary period","daemon.usage.tokensConsumed":"tokens consumed","daemon.usage.sessions":"Sessions","daemon.usage.requests":"Requests","daemon.usage.tools":"Tools","daemon.usage.changes":"Changes","daemon.usage.breakdownTitle":"Token Breakdown","daemon.usage.inputTokens":"Input tokens","daemon.usage.inputHint":"request + cache read","daemon.usage.outputTokens":"Output tokens","daemon.usage.outputHint":"response + reasoning","daemon.usage.cacheRead":"Cache read","daemon.usage.cacheHint":"cache read share","daemon.usage.heatmapTitle":"Token Heatmap","daemon.usage.heatmapSub":e=>`recent ${e?.months??12} months · daily aggregated tokens`,"daemon.usage.low":"Low","daemon.usage.high":"High","daemon.usage.dowMon":"Mon","daemon.usage.dowWed":"Wed","daemon.usage.dowFri":"Fri","daemon.usage.empty":"No token usage recorded yet.","daemon.usage.loading":"Loading usage…","daemon.usage.failed":"Failed to load usage","daemon.usage.cellTokens":e=>`${e?.date??""} · Tokens: ${e?.tokens??"0"} · Cache: ${e?.cache??0}%`,"daemon.usage.rangeWordToday":"Today","daemon.usage.rangeWordWeek":"7 days","daemon.usage.rangeWordMonth":"30 days","daemon.usage.modelShareTitle":"model share","daemon.usage.modelShareSub":"token share · light green shows cache read","daemon.usage.modelMeta":e=>`${e?.tokens??"0"} tokens · cache ${e?.cache??0}%`,"daemon.usage.skillTitle":"skill calls","daemon.usage.skillSub":"skill name / count","daemon.usage.skillName":"Skill name","daemon.usage.skillCount":"Count","daemon.usage.dailyTokensTitle":"tokens","daemon.usage.dailyTokensSub":"daily token totals","daemon.usage.dailySessionsTitle":"sessions","daemon.usage.dailySessionsSub":"active session counts per day","delete.cannotCurrent":"Cannot delete the current active session.","delete.action":"Delete","delete.deleted":"Session deleted.","delete.deletedCount":e=>`${e?.count??0} session(s) deleted.`,"delete.deleting":"Deleting...","delete.failed":e=>`Failed to delete session.${e?.reason?` ${e.reason}`:""}`,"delete.footer":"↑↓ navigate · Space select · Enter delete · Esc cancel","delete.noMatch":e=>`No session matching "${e?.query??""}"`,"delete.none":"No sessions to delete","delete.allFailed":e=>`Failed to delete ${e?.count??0} session(s): ${e?.reason??"unknown error"}`,"delete.nonRemoved":"No sessions were deleted.","delete.notFound":"Session not found — it may have been deleted already.","delete.partialFail":e=>`${e?.removed??0} deleted, ${e?.failed??0} failed: ${e?.detail??"unknown error"}`,"delete.matches":e=>`${e?.count??0} matches`,"delete.pressSearch":"Press / to search; Space to select; Enter to delete","delete.selected":e=>`${e?.count??0} selected`,"delete.title":"Delete Session","time.justNow":"just now","time.minutesAgo":e=>`${e?.count??0} min ago`,"time.hoursAgo":e=>`${e?.count??0}h ago`,"time.daysAgo":e=>`${e?.count??0}d ago`,"dialog.footer.close":"Esc to close","dialog.footer.confirmCancel":"Enter to confirm · Esc to cancel","release.cannotCurrent":"Cannot release the current active session.","release.action":"Release","release.released":"Session released successfully.","release.failed":e=>`Failed to release session.${e?.reason?` ${e.reason}`:""}`,"release.footer":"↑↓ to navigate · Enter to release · Esc to cancel","release.inactive":"Only active live sessions can be released.","release.inactiveBadge":"inactive","release.noMatch":e=>`No session matching "${e?.query??""}"`,"release.matches":e=>`${e?.count??0} matches`,"release.none":"No live sessions to release","release.pressSearch":"Press / to search; Enter releases the selected live session","release.releasing":"Releasing...","release.title":"Release Session","dialog.footer.menu":"Esc to menu","dialog.footer.mcpServers":"↑↓ to navigate · Enter details · r refresh · Esc close","dialog.footer.mcpSelect":"↑↓ to navigate · Enter select · Esc back","dialog.footer.modelFast":"↑↓ to navigate · / to search · c for custom · Enter to set fast model · Esc to cancel","dialog.footer.navSelectCancel":"↑↓ to navigate · Enter to select · Esc to cancel","dialog.footer.navSelectClose":"↑↓ to navigate · Enter to select · Esc to close","dialog.footer.navSelectMenu":"↑↓ to navigate · Enter to select · Esc to menu","dialog.footer.navOpenClose":"↑↓ to navigate · Enter to open · Esc to close","dialog.footer.navOpenMenu":"↑↓ to navigate · Enter to open · Esc to menu","dialog.footer.back":"Esc to go back","dialog.footer.backClose":"Esc to close","dialog.footer.saveClose":"↑↓ switch fields · ⌘/Ctrl+Enter to save · Esc to close","dialog.footer.saveMenu":"↑↓ switch fields · ⌘/Ctrl+Enter to save · Esc to menu","dialog.footer.search":"Type to search · Enter to commit · Esc to clear","dialog.footer.select":"Enter to select","editor.escClearHint":"Press Esc again to clear","editor.hintCommands":"commands","editor.hintFiles":"Files","editor.hintNext":"next","editor.hintPrev":"previous","editor.hintSearch":"search","editor.noHistory":"No matching history","editor.placeholder":"Type a message or @ file path","history.loadingEarlier":"Loading earlier messages…","history.openEarlier":"Open earlier history","history.loadEarlier":"Load earlier","history.loadNewer":"Load newer","history.returnLatest":"Return to latest","history.viewUnavailable":"History is temporarily unavailable while the session reconnects or repairs its transcript.","history.snapshotView":"Historical snapshot · read-only","history.viewError":"This section could not be loaded. Move the reading position and retry, or return to latest.","history.capacityReached":"History display limit reached. Earlier messages remain saved.","history.paginationError":"Earlier history could not be loaded.","history.retry":"Retry","editor.shellPlaceholder":"Enter terminal command","editor.send":"Send message","editor.imagesSkipped":e=>`${e?.count??0} file(s) were unavailable and skipped.`,"editor.imagesReadFailed":e=>`${e?.count??0} file(s) could not be read.`,"editor.imagesTooLarge":e=>`${e?.count??0} file(s) exceeded the attachment size limit.`,"editor.pastedTextShowInEditor":"Show inline","editor.connectionDisconnected":"Connection interrupted. Please try again after it reconnects.","editor.sessionLoading":"Session is still loading. Try again in a moment.","editor.processing":"Processing. New messages will be queued.","editor.searchHint":"ctrl+r next · tab accept · enter send · esc cancel","editor.searchLabel":"reverse-i-search:","editor.searchPlaceholder":"type to search...","editor.newSessionSuggestionTitle":"This looks like a new topic","editor.newSessionSuggestionStart":"Send in new session","editor.btwSuggestionTitle":"This looks like a side question","editor.btwSuggestionSend":"Ask with BTW","quickActions.extensions":"Extensions","quickActions.help":"Help","quickActions.auth":"Auth","quickActions.settings":"Settings","quickActions.copy":"Copy output","quickActions.shellMode":"Shell mode","quickActions.exitShellMode":"Exit Shell","session.missing":"Current session does not exist","session.new":"New session","workspace.loadFailed":"Failed to load workspace","workspace.notFound":"Workspace not found","workspace.notFoundDescription":"This workspace may have been removed or the link is no longer valid.","workspace.loadFailedDescription":"The workspace service could not be reached. Check the daemon and try again.","scheduledTasks.title":"Scheduled Tasks","scheduledTasks.subtitle":"Run tasks automatically on a schedule, or trigger them manually anytime.","scheduledTasks.loading":"Loading…","scheduledTasks.count":e=>`${e?.count??0} task${Number(e?.count??0)===1?"":"s"}`,"scheduledTasks.refresh":"Refresh","scheduledTasks.new":"New scheduled task","scheduledTasks.createViaChat":"Create via chat","scheduledTasks.chatStarter":"Help me set up a recurring scheduled task (keep it long-term). What I want: ","scheduledTasks.name":"Name","scheduledTasks.workspace":"Workspace","scheduledTasks.session.label":"Conversation","scheduledTasks.session.dedicated":"Dedicated task conversation","scheduledTasks.session.current":"Current conversation","scheduledTasks.session.dedicatedHint":"Runs are kept in a separate conversation created for this task.","scheduledTasks.session.currentHint":"Future runs continue in the conversation that is open now.","scheduledTasks.session.currentUnsupported":"Current-conversation scheduling is unavailable on this daemon.","scheduledTasks.session.currentUnavailable":"Open an existing conversation before selecting the current conversation.","scheduledTasks.session.currentBusy":"Wait for the current turn or pending interaction to finish.","scheduledTasks.session.currentIneligible":"This conversation type cannot own a scheduled task.","scheduledTasks.session.currentWorkspaceMismatch":"The current conversation belongs to a different workspace.","scheduledTasks.session.currentAlreadyBound":"The current conversation is already bound to a scheduled task.","scheduledTasks.taskId":"Task ID","scheduledTasks.schedule":"Schedule","scheduledTasks.type":"Type","scheduledTasks.status":"Status","scheduledTasks.namePlaceholder":"Optional — defaults to the prompt","scheduledTasks.prompt":"Prompt","scheduledTasks.promptPlaceholder":"What should this task do?","workflowRuns.title":"Workflows","workflowRuns.saved":"Saved","workflowRuns.active":"Running","workflowRuns.history":"History","workflowRuns.create":"New","workflowRuns.refresh":"Refresh","workflowRuns.loading":"Loading workflow runs…","workflowRuns.loadFailed":"Failed to load workflow runs.","workflowRuns.noSession":"Open a session in this project to view its workflow runs.","workflowRuns.emptyActive":"No workflows are currently running.","workflowRuns.emptyHistory":"No saved workflow runs yet.","workflowRuns.emptySaved":"No reusable workflows saved yet.","workflowRuns.emptySavedHint":"Select New to create one with O1-Code, save a completed run from the terminal, or add a .js file under .o1-code/workflows.","workflowRuns.project":"Project","workflowRuns.user":"User","workflowRuns.projectDescription":"Available in this project","workflowRuns.userDescription":"Available across projects","workflowRuns.extension":"Extension","workflowRuns.extensionDescription":"Provided by an installed extension","workflowRuns.detail.toggle":e=>`Show details for ${e?.name??""}`,"workflowRuns.detail.loading":"Loading workflow definition…","workflowRuns.detail.unavailable":"This workflow definition is no longer available.","workflowRuns.detail.loadFailed":"Could not read the workflow definition.","workflowRuns.detail.retry":"Retry","workflowRuns.detail.noDescription":"This workflow declares no description.","workflowRuns.detail.whenToUse":"When to use","workflowRuns.detail.metaError":e=>`The meta block could not be parsed: ${e?.error??""}`,"workflowRuns.detail.phases":e=>`Phases (${e?.count??0})`,"workflowRuns.detail.recentRuns":"Recent runs","workflowRuns.detail.noRuns":"No runs in this session yet.","workflowRuns.detail.viewRuns":e=>`View ${e?.count??0} ${e?.count===1?"run":"runs"} in History`,"workflowRuns.detail.showSource":"Show source","workflowRuns.detail.hideSource":"Hide source","workflowRuns.run":"Run","workflowRuns.starting":"Starting…","workflowRuns.runNamed":e=>`Run ${e?.name??""}`,"workflowRuns.startFailed":"The saved workflow could not be started. Refresh and try again.","scheduledTasks.reference.extension":"Extensions","scheduledTasks.reference.skill":"Skills","scheduledTasks.reference.mcp":"MCP","scheduledTasks.referencePicker":"Reference picker","scheduledTasks.reference.remove":"Remove","scheduledTasks.reference.loading":"Loading…","scheduledTasks.reference.empty":"No available items.","scheduledTasks.frequency":"Frequency","scheduledTasks.freq.daily":"Daily","scheduledTasks.freq.weekdays":"Weekdays","scheduledTasks.freq.weekly":"Weekly","scheduledTasks.freq.hourly":"Hourly","scheduledTasks.freq.minutes":"Every N minutes","scheduledTasks.freq.custom":"Custom (cron)","scheduledTasks.time":"Time","scheduledTasks.weekday":"Weekday","scheduledTasks.interval":"Minutes","scheduledTasks.cron":"Cron expression","scheduledTasks.weekdayNames":"Sun,Mon,Tue,Wed,Thu,Fri,Sat","scheduledTasks.human.daily":e=>`Daily at ${e?.time??""}`,"scheduledTasks.human.weekdays":e=>`Weekdays at ${e?.time??""}`,"scheduledTasks.human.weekly":e=>`Every ${e?.day??""} at ${e?.time??""}`,"scheduledTasks.human.hourly":e=>`Hourly at :${e?.min??"00"}`,"scheduledTasks.human.everyMinutes":e=>`Every ${e?.n??""} minutes`,"scheduledTasks.never":"Never run","scheduledTasks.repeats":"Repeats","scheduledTasks.runsOnce":"Runs once","scheduledTasks.lastFired":e=>`Last run: ${e?.when??""}`,"scheduledTasks.runNow":"Run now","scheduledTasks.enable":"Enable","scheduledTasks.disable":"Disable","scheduledTasks.delete":"Delete","scheduledTasks.deleteConfirmTitle":"Delete scheduled task","scheduledTasks.deleteConfirm":e=>`Delete scheduled task "${e?.name??""}"?`,"scheduledTasks.deletedSnapshot":"This scheduled task has been deleted. Showing the snapshot from when it was created.","scheduledTasks.sessionScopedSnapshot":"This is a session-scoped scheduled task. Showing the snapshot from when it was created.","scheduledTasks.empty":"No scheduled tasks yet. Create one to get started.","scheduledTasks.create":"Create","scheduledTasks.creating":"Creating…","scheduledTasks.cancel":"Cancel","scheduledTasks.error.invalidSchedule":"Invalid schedule","scheduledTasks.error.workspaceUnavailable":"The selected workspace is unavailable or untrusted","scheduledTasks.error.emptyPrompt":"Prompt is required","scheduledTasks.error.promptTooLong":e=>`Prompt exceeds ${e?.max??1e5}-character limit`,"scheduledTasks.error.goalActive":"Cannot start a scheduled task while a Goal is active.","scheduledTasks.error.toggleFailed":"Failed to update task","scheduledTasks.error.deleteFailed":"Failed to delete task","scheduledTasks.edit":"Edit","scheduledTasks.editTitle":"Edit scheduled task","scheduledTasks.save":"Save","scheduledTasks.saving":"Saving…","scheduledTasks.runHistory":e=>`Run history (${e?.count??0})`,"scheduledTasks.viewHistory":e=>`View conversation (${e?.count??0})`,"scheduledTasks.viewHistoryEmpty":"View conversation","scheduledTasks.viewHistoryHint":"Open the task's session to see its runs","scheduledTasks.runKind.catchUp":"late","scheduledTasks.runKind.manual":"manual","scheduledTasks.runKind.withheld":"skipped","scheduledTasks.runKind.sessionDispatchFailed":"new session failed, nothing ran","scheduledTasks.runKind.sessionDispatchFallback":"new session failed, ran in the task session","scheduledTasks.openRunSession":"Open this run session","scheduledTasks.runContext.title":"Scheduled task run","scheduledTasks.runContext.taskId":"Task ID","scheduledTasks.runContext.schedule":"Schedule","scheduledTasks.runContext.triggeredAt":"Triggered","scheduledTasks.runContext.trigger.scheduled":"Scheduled","scheduledTasks.runContext.trigger.manual":"Run manually","scheduledTasks.error.runFailed":"Failed to record the run","scheduledTasks.error.oneShotConsumedButFailed":"The task was deleted but the prompt could not be delivered — it never ran. Recreate it to try again.","scheduledTasks.dueNow":"Due now","scheduledTasks.nextRunTooltip":e=>`Next run: ${e?.when??""}`,"scheduledTasks.dur.d":"d","scheduledTasks.dur.h":"h","scheduledTasks.dur.m":"m","scheduledTasks.dur.s":"s","scheduledTasks.runIn":"Run in","scheduledTasks.sessionMode.perRun":"A new session every run","scheduledTasks.sessionMode.persistent":"Persistent task session","scheduledTasks.sessionMode.perRun.hint":"Each run gets a clean context and its own conversation.","scheduledTasks.sessionMode.persistent.hint":"All runs continue in the same task conversation.","scheduledTasks.model":"Model","scheduledTasks.model.workspaceDefault":"Workspace default","scheduledTasks.model.hint":"The selected model is applied when each new run session is created.","scheduledTasks.group":"Session group","scheduledTasks.group.none":"No group","scheduledTasks.group.create":"Create a new group…","scheduledTasks.group.name":"New group name","scheduledTasks.group.color":"Group color","scheduledTasks.group.hint":"Each run conversation is placed in this group.","scheduledTasks.group.nameRequired":"Enter a name for the new group.","scheduledTasks.routing.loading":"Loading models and groups…","scheduledTasks.condition":"Precondition (optional)","scheduledTasks.conditionPlaceholder":"e.g. Check whether anything landed on main since yesterday. If nothing did, the task should not run.","scheduledTasks.condition.hint":"Checked in this task's own session before each run. The prompt only runs in a fresh session when the check says yes — otherwise the run is skipped.","scheduledTasks.condition.cardPrefix":"If:","turnOutputs.filesEdited":e=>`Edited ${e?.count??0} files`,"turnOutputs.imagePreview":"Image Preview","turnOutputs.viewChanges":"View changes","turnOutputs.review":"Changes","turnOutputs.reviewLatest":"View recent file changes","codeReview.authoritativeVerdict":"Authoritative verdict","codeReview.targetEffort":e=>`Target: ${e?.target??""} · Effort: ${e?.effort??""}`,"codeReview.openReport":"Open Markdown report","codeReview.loadingReport":"Loading Markdown report...","codeReview.back":"Back to review","codeReview.reviewCounts":"Review counts","codeReview.total":"Total","codeReview.confidence":e=>`${e?.value??""} confidence`,"codeReview.held":"Held","codeReview.heldByMeasurement":"Held back from Critical by measurement","codeReview.caps":"Caps","codeReview.none":"None","codeReview.severity":"Severity","codeReview.confidenceLabel":"Confidence","codeReview.all":"All","codeReview.noMatches":"No findings match these filters.","codeReview.source":e=>`Source: ${e?.value??""}`,"codeReview.failureScenario":"Failure scenario","codeReview.witness":"Witness","codeReview.suggestedFix":"Suggested fix","codeReview.outcome":"Outcome","codeReview.locations":"Locations","codeReview.evidence":"Evidence","codeReview.notLinked":"not linked","codeReview.loadErrorTitle":"Unable to display code review","codeReview.loading":"Loading code review...","codeReview.artifactTruncated":"Code review artifact is truncated and cannot be validated.","codeReview.reportTruncated":"Markdown report is truncated.","codeReview.unavailable":e=>`This code review is no longer authoritative because its artifact status is ${e?.status??"unknown"}. Regenerate the review to view it.`,"codeReview.workspaceRequired":"Code review artifacts must be readable workspace files.","sideTask.title":"Side task","sideTask.description":"View or create side tasks","sideTask.new":"New","sideTask.create":"New side task","webPreview.title":"Web preview","webPreview.openHint":"Preview a running web app","webPreview.address":"Development URL","webPreview.open":"Open","webPreview.refresh":"Refresh preview","webPreview.desktop":"Desktop width","webPreview.mobile":"Mobile width (390 px)","webPreview.external":"Open externally","webPreview.frame":"Web preview frame","webPreview.saved":"Saved version","webPreview.savedFrame":"Saved webpage version","webPreview.savedUnavailable":"This saved version is missing or has changed. It cannot be opened.","webPreview.savedLoadFailed":"Could not load this saved version. Try again.","webPreview.page":"Application preview","webPreview.empty":"Start your development server, then enter its URL above.","webPreview.reachable":"Use an address this browser can reach. For a remote server, use its accessible URL or an existing port forward.","webPreview.fallback":"Blank page? Check the server or open externally. The address and refresh use the entry URL.","webPreview.live":"Live page. Opening a link from an earlier message shows its current content, not a saved version.","webPreview.invalidUrl":"Use a separate HTTP/HTTPS development address with a hostname or IPv4 address, without login credentials. Web Shell and daemon addresses cannot be previewed.","terminal.title":"Terminal","terminal.open":"Open a terminal","terminal.notice.exited":e=>`Process exited with code ${e?.exitCode??"?"}`,"terminal.notice.error":e=>`Error: ${e?.message??""}`,"terminal.notice.unknownError":"Unknown error","terminal.notice.reconnecting":"Connection lost — reconnecting…","terminal.notice.protocolMismatch":"Terminal protocol changed; restart the daemon and reload this page.","localFiles.title":"Local files","localFiles.trigger":"Local files","localFiles.hint":"Lets this session read and write one directory on your own machine. Files stay on your computer; only what the agent asks for is sent to it.","localFiles.connect":"Connect a directory…","localFiles.reconnect":"Reconnect","localFiles.disconnect":"Disconnect","localFiles.openInNewTab":"Open in a new tab","localFiles.directory":"Directory","localFiles.tools":e=>`${e?.count??0} tools`,"localFiles.status.idle":"Not connected","localFiles.status.connecting":"Connecting…","localFiles.status.registering":"Registering…","localFiles.status.connected":"Connected","localFiles.status.reconnecting":"Reconnecting…","localFiles.status.heldElsewhere":"Connected in another tab","localFiles.status.needsSession":"Waiting for a session","localFiles.status.needsGesture":"Reconnect to continue","localFiles.status.failed":"Failed","localFiles.status.unavailable":"Unavailable here","localFiles.status.resolving":"Resolving…","localFiles.needsSessionHint":"Start a session first. The bridge binds to exactly one session, so no other session can reach your files.","localFiles.blocker.insecureContext":"This page is not a secure context, so the browser will not grant local file access. Serve the Web Shell over https, or forward the daemon port with SSH and open http://localhost:<port>.","localFiles.blocker.crossOriginFrame":"Local file access is blocked inside a cross-origin frame. Open the Web Shell in its own browser tab to connect a directory.","localFiles.blocker.unsupportedBrowser":"This browser has no File System Access API. Use Chrome or Edge to connect a local directory.","localFiles.blocker.workspaceIneligible":"This conversation's workspace cannot host a local directory (untrusted or live workspace).","localFiles.blocker.workspaceResolving":"Which workspace this conversation belongs to is not known yet.","localFiles.blocker.unsupportedDaemon":"This daemon does not advertise the client filesystem bridge (client_mcp_over_ws). Start the daemon with O1CODE_SERVE_CLIENT_MCP_OVER_WS=1 to enable local files.","rightPanel.add":"Add panel","attachment.showPreview":"Preview","attachment.showSource":"Source","attachment.previewUnsupported":"Preview is not available for this file type.","attachment.readFailed":"Failed to read attachment.","attachment.loadingFile":"Loading file...","attachment.loadingPreview":"Loading preview...","sideTask.creating":"Creating side task…","sideTask.createFailed":"Failed to create side task","sideTask.promptFailed":"Failed to send the side-task question","sideTask.renameFailed":"Failed to name side task","turnOutputs.preview":"Preview","turnOutputs.collapseFiles":"Collapse files","turnOutputs.showMoreFiles":e=>`Show ${e?.count??0} more files`,"turnOutputs.collapseArtifacts":"Collapse artifacts","turnOutputs.showMoreArtifacts":e=>`Show ${e?.count??0} more artifacts`,"turnOutputs.previousTurn":"Previous turn","turnOutputs.fileCount":e=>`${e?.count??0} files`,"turnOutputs.openFileTree":"Open file tree","turnOutputs.closeFileTree":"Close file tree","turnOutputs.artifactMissing":"File not found in the workspace","turnOutputs.artifactUnavailable":e=>e?.path?`File not found in the workspace · ${e.path}`:"File not found in the workspace","sidebar.label":"Workspace sidebar","sidebar.toggleMenu":"Toggle menu","sidebar.newChat":"New chat","sidebar.newTask":"New task","sidebar.newWorktreeTask":"New worktree task","sidebar.plugins":"Plugins","sidebar.live":"Live","sidebar.project":"Project","sidebar.pinnedSessions":"Pinned","sidebar.workspaceSelectLabel":"Workspace","sidebar.noWorkspace":"No workspace","sidebar.noWorkspaceSessions":"No-workspace sessions","sidebar.copySessionId":"Copy session ID","sidebar.copySessionIdFailed":"Failed to copy session ID","sidebar.sessionIdCopied":"Session ID copied","sidebar.workspaceUntrusted":"untrusted","sidebar.manageWorkspaces":"Manage workspaces…","sidebar.workspaceReadOnly":"read-only","sidebar.workspaceTrustToOpen":"Trust this workspace to open the session.","sidebar.addWorkspace":"Add workspace","sidebar.newWorkspace":"New workspace","sidebar.startFromScratch":"Start from scratch","sidebar.useExistingFolder":"Use an existing folder…","sidebar.scratchOutcomeUnknownTitle":"Check workspace creation","sidebar.scratchOutcomeUnknown":"The daemon response was interrupted. Check the refreshed workspace list before creating another workspace.","sidebar.scratchOutcomeRefresh":"Refresh workspace list","sidebar.scratchOutcomeAcknowledge":"I checked the workspace list","sidebar.addWorkspaceTitle":"Add Workspace","sidebar.addWorkspacePath":"Directory path","sidebar.addWorkspaceBrowse":"Browse…","sidebar.addWorkspaceBrowseError":"Unable to open the system folder picker. Enter an absolute path instead.","sidebar.addWorkspaceDisplayName":"Display name (optional)","sidebar.addWorkspaceDisplayNameHint":"Shown in Web Shell; the directory path remains the workspace identity.","sidebar.addWorkspaceRegister":"Register","sidebar.addWorkspaceCancel":"Cancel","sidebar.addWorkspaceError":"Failed to add workspace","sidebar.addWorkspaceBusyError":"Another workspace operation is in progress","sidebar.addWorkspacePersistenceError":"The daemon did not confirm persistent workspace registration","sidebar.addWorkspaceRefreshError":"Workspace added, but the workspace list could not be refreshed","sidebar.addWorkspaceAbsError":"Enter an absolute path or an SSH workspace URL.","sidebar.addWorkspaceHint":"Enter a local absolute path or ssh://user@host/absolute/project. SSH requires key authentication, a trusted host key and Python 3 on the remote computer. Shell commands also require Bash; O1-Code is not required there.","sidebar.addWorkspaceSuggestions":"Directory suggestions","sidebar.addWorkspacePersist":"Keep after daemon restart","sidebar.addWorkspacePersistHint":"Persist this workspace registration in the daemon configuration.","sidebar.addWorkspaceAdding":"Adding…","workspaceHost.source":"Folder source","workspaceHost.thisComputer":"This computer","workspaceHost.folderOn":e=>`Folder on ${e?.address}`,"workspaceHost.folderOnThisComputer":"Folder on this computer","workspaceHost.browseHint":"Choose a folder below, or type an absolute path.","workspaceHost.parent":"Parent folder","workspaceHost.addFolder":"Add this folder","workspaceHost.noFolders":"No subfolders in this directory.","workspaceHost.folderListError":"Could not read folders from this computer. Check the path or connection.","workspaceHost.navigationUnavailable":"Browser storage is unavailable, so the remote folder flow cannot continue safely.","workspaceHost.unsupported":"This computer does not support adding workspaces.","workspaceHost.loadingFolders":"Loading folders from this computer…","workspaceHost.connectionError":"Could not load workspace capabilities from this computer.","sidebar.removeWorkspace":"Remove workspace","sidebar.workspaceActions":"Workspace actions","sidebar.renameWorkspace":"Rename…","sidebar.renameWorkspaceTitle":"Rename Workspace","sidebar.workspaceNamePrompt":"Display name","sidebar.workspaceNameHint":"Leave empty to show the folder name.","sidebar.workspaceNameInvalid":"Names cannot contain control characters.","sidebar.renameWorkspaceFailed":"Failed to rename workspace","sidebar.copyWorkspacePath":"Copy path","sidebar.copyWorkspacePathFailed":"Failed to copy workspace path","sidebar.openWorkspaceFolder":"Open folder","sidebar.openWorkspaceFolderFailed":"Failed to open the workspace folder","sidebar.openWorkspaceFolderOpened":"Opened the workspace folder","sidebar.openWorkspaceTerminal":"Open terminal","sidebar.openWorkspaceTerminalFailed":"Failed to open a terminal","sidebar.openWorkspaceTerminalOpened":"Opened a terminal at the workspace","sidebar.manageWorkspace":"Manage","sidebar.reloadWorkspace":"Reload runtime","sidebar.reloadWorkspaceFailed":"Failed to reload workspace runtime","sidebar.workspaceCount":e=>`${e?.count??0} workspaces`,"sidebar.sessionsRunning":e=>`${e?.count??0} running session${e?.count===1?"":"s"}`,"sidebar.sessionsAttention":e=>`${e?.count??0} session${e?.count===1?"":"s"} waiting for you`,"sidebar.sessionsTotal":e=>`${e?.count??0}${e?.truncated?"+":""} session${e?.count===1&&!e?.truncated?"":"s"}`,"sidebar.overview.sessions":"Sessions","sidebar.overview.mcp":"MCP","sidebar.overview.skills":"Skills","sidebar.overview.extensions":"Extensions","sidebar.overview.context":"Context","sidebar.overview.hooks":"Hooks","sidebar.overview.settings":"Settings","sidebar.overview.mcpDetail":e=>`${e?.connected??0} of ${e?.configured??0} connected`+(Number(e?.failed)>0?`, ${e?.failed} failed`:"")+(Number(e?.disabled)>0?`, ${e?.disabled} disabled`:""),"sidebar.overview.skillsDetail":e=>`${e?.enabled??0} of ${e?.total??0} enabled`,"sidebar.overview.extensionsDetail":e=>`${e?.active??0} of ${e?.total??0} active`,"sidebar.overview.contextDetail":e=>`${e?.files??0} context file${e?.files===1?"":"s"}, ${e?.rules??0} rule${e?.rules===1?"":"s"}`,"sidebar.overview.hooksDetail":e=>`${e?.count??0} hook${e?.count===1?"":"s"}`,"sidebar.overview.hooksDisabled":e=>`${e?.count??0} hook${e?.count===1?"":"s"} (disabled)`,"sidebar.forceRemoveWorkspace":"Force remove","sidebar.removeWorkspaceTitle":"Remove Workspace","sidebar.removeWorkspaceConfirm":e=>`Remove the runtime and persistent registration for “${e?.name??""}”? Files, settings, and session history will not be deleted.`,"sidebar.removeWorkspaceBusy":e=>`“${e?.name??""}” still has active runtime resources. Force removal will terminate them.`,"sidebar.removeWorkspaceCurrentSession":"Switch to another workspace or close the current session before forcing removal.","sidebar.removeWorkspaceInProgress":"Another client is already removing this workspace. Refresh after that operation finishes.","sidebar.removeWorkspaceError":"Failed to remove workspace","sidebar.removeWorkspaceSessions":e=>`Sessions: ${e?.count??0}`,"sidebar.removeWorkspacePrompts":e=>`Active prompts: ${e?.count??0}`,"sidebar.removeWorkspaceStarts":e=>`Pending session starts: ${e?.count??0}`,"sidebar.removeWorkspaceConnections":e=>`ACP connections: ${e?.count??0}`,"sidebar.removeWorkspaceMemoryTasks":e=>`Memory tasks: ${e?.count??0}`,"sidebar.removeWorkspaceVoiceSessions":e=>`Voice sessions: ${e?.count??0}`,"sidebar.noSessions":"No sessions.","sidebar.projectFallback":"Project","sidebar.sessionsOverview":"Session Overview","sidebar.splitView":"Split View","sidebar.settings":"Settings","sidebar.daemonStatus":"Daemon Status","sidebar.scheduledTasks":"Scheduled Tasks","sidebar.workflows":"Workflows","sidebar.goals":"Goals","sidebar.themeLight":"Switch to light theme","sidebar.themeDark":"Switch to dark theme","sidebar.collapse":"Collapse","sidebar.expand":"Expand","sidebar.showAllSessions":"Show all","sidebar.collapseProject":"Collapse project","sidebar.expandProject":"Expand project","sidebar.search":"Search sessions","sidebar.searchPlaceholder":"Search sessions","sidebar.rename":"Rename","sidebar.export":"Export conversation record","sidebar.exportFailed":"Failed to export session","sidebar.delete":"Delete","sidebar.archive":"Archive","sidebar.unarchive":"Restore","sidebar.moreActions":"More actions","sidebar.archiveCurrentDisabled":"The current session cannot be archived","sidebar.archiveRunningDisabled":"A running session cannot be archived; archiving would stop its work","sidebar.archivedTitle":"Archived","sidebar.standaloneLoadFailed":"Failed to load recent conversations","sidebar.standaloneActionFailed":"Conversation action failed","sidebar.standaloneDeleteConfirm":"Delete this conversation and its private files?","sidebar.standaloneCleanupPending":"The conversation was deleted. Private file cleanup will finish automatically.","sidebar.archivedEmpty":"No archived sessions.","sidebar.archiveFailed":"Failed to archive session","sidebar.unarchiveFailed":"Failed to restore session","sidebar.loadFailed":"Failed to load sessions. Click to retry.","sidebar.renameFailed":"Failed to rename session","sidebar.deleteFailed":"Failed to delete session","sidebar.newSessionFailed":"Failed to create a new chat","sidebar.switchFailed":"Failed to switch session","sidebar.currentDeleteDisabled":"Current session cannot be deleted","sidebar.deleteConfirmDescription":e=>`Delete "${e?.name??""}"? This cannot be undone.`,"sidebar.clients":e=>`${e?.count??0} client(s)`,"sidebar.running":"Running","sidebar.activeWork":"Active work","sidebar.activityUnknown":"Background activity unknown","sidebar.waitingForApproval":"Waiting for approval","sidebar.waitingForApprovalShort":"Approval","sidebar.sessionPr":e=>`Pull Request #${e?.number??""}`,"sidebar.sessionPrMultiple":e=>`Pull Request #${e?.number??""} (${e?.count??0} total)`,"sidebar.sessionPrStateMerged":"Merged","sidebar.sessionPrStateClosed":"Closed","sidebar.sessionIssue":e=>`Issue #${e?.number??""}`,"sidebar.sessionIssueStateCompleted":"Completed","sidebar.sessionIssueStateNotPlanned":"Not planned","sidebar.userInputNeeded":"User input needed","sidebar.userInputNeededShort":"Input","sidebar.completedUnread":"Finished","sidebar.pin":"Pin","sidebar.unpin":"Unpin","sidebar.sessionGroup":"Group","sidebar.groupFilter":"Session group","sidebar.groupAll":"All","sidebar.groupPinned":"Pinned","sidebar.groupUngrouped":"Ungrouped","sidebar.groupRecent":"Recent","sidebar.groupCreate":"Create group","sidebar.groupRename":"Rename group","sidebar.groupDelete":"Delete group","sidebar.groupColor":"Group color","sidebar.groupNamePrompt":"Group name","sidebar.groupDeleteConfirm":e=>`Delete group "${e?.name??""}"?`,"sidebar.groupsLoadFailed":"Failed to load session groups","sidebar.groupCreateFailed":"Failed to create group","sidebar.groupAssignFailedAfterCreate":"Group created, but failed to move session into it","sidebar.groupUpdateFailed":"Failed to update group","sidebar.groupDeleteFailed":"Failed to delete group","sidebar.organizationFailed":"Failed to update session organization","sidebar.groupColor.red":"Red","sidebar.groupColor.orange":"Orange","sidebar.groupColor.yellow":"Yellow","sidebar.groupColor.green":"Green","sidebar.groupColor.blue":"Blue","sidebar.groupColor.purple":"Purple","sidebar.groupColor.custom":"Custom…","sidebar.groupColor.picker":"Choose custom group color","sidebar.groupColor.hex":"Hex color","sidebar.groupColor.invalid":"Enter a six-digit Hex color such as #416ef5.","quickKeys.retry":"Retry failed","error.unsupportedTheme":"Unsupported theme. Use /theme light or /theme dark.","queue.delete":"Delete","queue.edit":"Edit","queue.insert":"Insert","queue.cleared":"Queue cleared.","queue.deleteTip":"Remove from queue","queue.editTip":"Remove from queue and edit again","queue.submitting":"Submitting...","queue.midTurnQueued":"Queued...","queue.serverQueued":"Queued on server...","queue.editing":"Editing...","queue.inserting":"Inserting...","queue.removing":"Updating...","queue.submittingDisabled":"Submitting queued message...","queue.summaryEditDisabled":"This restored queue summary cannot recover its original attachments.","queue.admissionUnknown":"Delivery is uncertain. Check the session before trying again.","queue.restoreUnknown":"Restore local copy","queue.discardUnknown":"Discard local copy","queue.continueEditing":"Continue editing","queue.continueEditingConfirm":"The prompt may already be running. Continue editing only if you accept the risk of sending it twice.","queue.commandBlocked":"Slash commands can't be queued while a turn is running.","queue.commandGoalBlocked":"Slash commands are unavailable while a Goal owns the session or its state is loading.","queue.shellQueued":"Shell command queued — it will run after the current turn finishes.","queue.shellDropped":e=>{const t=e?.count??0;return t===1?"1 queued shell command will not run.":`${t} queued shell commands will not run.`},"queue.queueFailed":"Failed to queue message","queue.deleteFailed":"Failed to move message out of queue","queue.editFailed":"Failed to edit queued message","queue.insertFailed":"Failed to insert queued message","queue.insertTip":"Insert into the current turn","queue.insertCommandDisabled":"Commands cannot be inserted mid-turn","queue.footer":"Press ↑ to edit the latest queued message · Esc to clear queue","queue.imageCount":e=>`(+${e?.count??0} images)`,"queue.fileCount":e=>`(+${e?.count??0} files)`,"queue.more":e=>`... (+${e?.count??0} more)`,"help.builtIn":"Built-in commands","help.commandCount":e=>`${e?.count??0} commands`,"help.commandMeta.builtIn":"built-in","help.commandMeta.custom":"custom","help.commandMeta.subcommands":e=>`${e?.count??0} subcommands`,"help.commandsIntro":"Browse built-in commands:","help.customGroup":"Custom, skills, plugins, MCP","help.customIntro":"Browse custom, skill, plugin, and MCP commands:","help.empty":"No commands are currently available.","help.emptyCustom":"No custom commands are currently available.","help.footer":"Tab/Shift+Tab to switch tabs · ↑/↓ or PgUp/PgDn to scroll · Esc to close","help.intro":"O1-Code understands your codebase, makes edits with your permission, and executes commands right from your terminal.","help.section.shortcuts":"Shortcuts","help.search":"Search commands","help.shortcut.addContext":"Add files or folders as context","help.shortcut.altWords":"Jump through words","help.shortcut.clear":"Clear the screen","help.shortcut.commandMenu":"Open command menu","help.shortcut.completion":"Accept completion or switch help tabs","help.shortcut.history":"Cycle prompt history or scroll lists","help.shortcut.searchHistory":"Search prompt history","help.shortcut.newline":"Insert a newline","help.shortcut.pasteImages":"Paste images","help.shortcut.shell":"Run shell commands","help.shortcut.togglePanel":"Toggle this panel","help.shortcut.retry":"Retry last request","retry.hint":"Press Ctrl+Y to retry or click to retry","retry.none":"No failed request to retry.","system.taskNotification":"Task notification","background.result":"Background result","background.agent":"Background agent","background.running":"Background tasks running","background.task":"Background task","background.peer":"Cross-session message","background.details":"View details","background.processing":e=>`Processing ${e?.label??""} results`,"background.source":"Source","background.pending":"Awaiting processing","system.taskCompleted":"Background task completed","system.taskFailed":"Background task failed","system.taskCancelled":"Background task cancelled","notification.shell.completed":e=>`Background shell "${e?.command??""}" completed.`,"notification.shell.failed":e=>`Background shell "${e?.command??""}" failed.`,"notification.shell.cancelled":e=>`Background shell "${e?.command??""}" was cancelled.`,"notification.monitor.completed":e=>`Monitor "${e?.description??""}" completed. (${e?.events??0} events${e?.droppedLines?`, ${e.droppedLines} lines dropped due to throttling`:""})`,"notification.monitor.failed":e=>`Monitor "${e?.description??""}" failed. (${e?.events??0} events${e?.droppedLines?`, ${e.droppedLines} lines dropped due to throttling`:""})`,"notification.monitor.cancelled":e=>`Monitor "${e?.description??""}" was cancelled. (${e?.events??0} events${e?.droppedLines?`, ${e.droppedLines} lines dropped due to throttling`:""})`,"notification.agent.completed":e=>`Background agent "${e?.description??""}" completed.`,"notification.agent.failed":e=>`Background agent "${e?.description??""}" failed.`,"notification.agent.cancelled":e=>`Background agent "${e?.description??""}" was cancelled.`,"branch.failed":"Failed to branch session.","branch.stale":"This response is no longer on the active history path. The transcript has been refreshed.","branch.staleRefreshFailed":"This response is no longer on the active history path, and the transcript could not be refreshed. Please retry.","branch.staleUnsupported":"This response is no longer on the active history path. Branching from this point is not supported by the current session.","branch.success":e=>`Copied session. New session name: "${e?.name??""}". Switched to the new session.`,"fork.empty":"Please provide a directive. Usage: /fork <directive>","fork.failed":e=>`Failed to launch fork: ${e?.reason??""}`,"fork.notStarted":"Background agent was not launched.","fork.started":e=>`Started background agent: "${e?.name??""}". Track it in background tasks.`,"command.hidden":"This command is not available.","help.shortcut.approvals":"Cycle approval modes","help.shortcut.cancel":"Close dialogs or cancel operation","bug.failed":"Failed to load system info for bug report.","bug.popupBlocked":"Popup blocked — please allow popups and try again.","bug.submitted":"Bug report opened in a new tab.","clear.blocked":"Cannot clear while streaming — cancel first (Esc).","error.unknown":"Unknown error","error.modelStreamInterrupted":"Model response stream was interrupted. Please retry.","error.loopDetected":"The model got stuck while using tools or reached a safety limit, so this turn was stopped. Your session is still open—try a more specific instruction to continue.","shell.command":"Shell Command","shell.result.timedOut":"Timed out","shell.result.notices":"Notices","shell.result.truncated":"Output preview truncated","shell.result.outputFiles":"Output files","shell.result.output":"Output","shell.result.command":"Command","shell.result.copy":"Copy command","shell.result.details":"Execution details","shell.result.directory":"Directory","shell.result.timeout":"Timeout","shell.result.timeoutMs":e=>`${e?.milliseconds} ms`,"shell.result.defaultTimeout":"Use default","shell.result.exitCode":"Exit code","shell.result.signal":"Signal","shell.result.pending":"Pending","shell.result.elapsed":"Elapsed","shell.result.lines":"Output lines","shell.result.bytes":"Output bytes","shell.result.running":"Running","shell.result.completed":"Completed","shell.result.success":"Succeeded","shell.result.cancelled":"Cancelled","shell.result.waiting":"Waiting for output…","shell.result.empty":"No output","shell.result.exited":e=>`Exited with code ${e?.code}`,"help.subcommands":"subcommands","help.tab.commands":"Built-in commands","help.tab.custom":"custom-commands","help.tab.general":"shortcuts","help.title":"Help","slash.category.custom":"Custom commands","slash.category.skill":"Skill commands","slash.category.system":"System commands","language.changed":e=>`UI language changed to ${e?.language??""}`,"language.current":e=>`Current UI language: ${e?.language??""}`,"language.invalid":"Invalid language. Available: en, zh-CN","language.options":"Available options:","language.set":"Set UI language","language.usage":"Usage: /language ui [en|zh-CN]","localCommand.noSession":"No active session yet. Send your first message before using this command.","localCommand.diffNoWorkspace":"No workspace is available yet to show changes for.","localCommand.logNoWorkspace":"No workspace is available yet to show history for.","localCommand.prsNoWorkspace":"No workspace is available yet to show pull requests for.","localCommand.prsUnsupported":"This daemon does not support listing pull requests.","local.agents":"Manage subagents","local.bug":"Submit a bug report","local.compress":"Compress the context into a summary","local.compressFast":"Fast context compression without AI","local.config":"Get or set any setting by dot-path key","local.diff":"Show working-tree change stats versus HEAD","local.log":"Show commit history for the workspace","local.prs":"Show open GitHub pull requests for the workspace","local.directory":"Manage workspace directories","local.docs":"Open the full O1-Code documentation","local.doctor":"Run installation and environment diagnostics","local.dream":"Consolidate managed auto-memory topic files","local.effort":"Set reasoning effort for capable models","local.export":"Export the current session history to a file","local.forget":"Remove matching entries from managed auto-memory","local.hooks":"Manage O1-Code hooks","local.importConfig":"Import MCP servers from Claude configs","local.init":"Analyze the project and create an AGENTS.md file","local.insight":"Generate programming insights from chat history","local.lsp":"Show LSP server status","local.remember":"Save a durable memory to the memory system","local.summary":"Generate a project summary file","local.workflows":"List workflow runs or cooperatively pause/resume a live run","skilldesc.batch":"Run batch operations across many files in parallel","skilldesc.dataviz":"Design guidance for charts and data visualizations","skilldesc.extensionCreator":"Create, test, and customize O1-Code extensions","skilldesc.goalDraft":"Turn a fuzzy intention into a verifiable /goal objective","skilldesc.loop":"Run a prompt on a schedule or self-paced wakeups","skilldesc.newApp":"Workflow for building a new app from scratch","skilldesc.qcHelper":"Answer questions about using O1-Code","skilldesc.review":"Review changed code for bugs, security, and quality","skilldesc.simplify":"Clean up recent changes for reuse and simplicity","skilldesc.stuck":"Diagnose frozen or slow O1-Code sessions","skilldesc.agentReproduceAlign":"Align a ported Codex/Claude Code feature with the original","skilldesc.agentReproduceFeature":"Reproduce an existing Codex/Claude Code feature","skilldesc.autofix":"Review and fix local changes or run repository Autofix workflows","skilldesc.bugfix":"Fix a bug from a GitHub issue, reproduce-first","skilldesc.codegraph":"Analyze the codebase via graph and vector index","skilldesc.createIssue":"Draft and submit a GitHub issue from an idea","skilldesc.docsAuditAndRefresh":"Audit and refresh docs/ against the codebase","skilldesc.docsUpdateFromDiff":"Update official docs from local git diff","skilldesc.e2eTesting":"Run end-to-end tests of the O1-Code CLI","skilldesc.featDev":"End-to-end workflow for a non-trivial feature","skilldesc.memoryLeakDebug":"Diagnose CLI memory leaks via heap snapshots","skilldesc.preparePr":"Prepare a GitHub PR title and body from the branch","skilldesc.o1codeClaw":"Use O1-Code as a code-understanding agent","skilldesc.structuredDebugging":"Hypothesis-driven methodology for hard bugs","skilldesc.terminalCapture":"Automate terminal UI screenshot testing","skilldesc.tmuxRealUserTesting":"Real-user testing with tmux, saving logs","skilldesc.triage":"Triage and review O1-Code issues and PRs","local.approvalMode":"Change approval mode","local.auth":"Connect an LLM provider","auth.title":"Connect a Provider","auth.step.group":"Type","auth.step.provider":"Provider","auth.step.protocol":"Protocol","auth.step.api":"API","auth.step.baseUrl":"Base URL","auth.step.apiKey":"API Key","auth.step.models":"Model IDs","auth.step.advanced":"Advanced Config","auth.protocol.openai":"OpenAI-compatible","auth.protocol.openaiDesc":"Standard OpenAI API format (most common)","auth.protocol.anthropic":"Anthropic-compatible","auth.protocol.anthropicDesc":"Anthropic Messages API format","auth.protocol.gemini":"Gemini-compatible","auth.protocol.geminiDesc":"Google Gemini API format","auth.api.chatCompletions":"Chat Completions","auth.api.responses":"Responses","auth.apiKeyRequired":"API key cannot be empty.","auth.baseUrlInvalid":"Base URL must start with http:// or https://.","auth.baseUrlPrompt":"Enter the API endpoint for this protocol.","auth.baseUrlRequired":"Base URL cannot be empty.","auth.documentation":"Documentation","auth.modelsRequired":"Model IDs cannot be empty.","auth.review":"Review","auth.reviewText":"Review the connection and model settings before saving.","auth.save":"Save","auth.saving":"Saving...","auth.termsTitle":"Terms of Services and Privacy Notice","auth.continue":"Continue","auth.modelsPrompt":e=>`Enter model IDs separated by commas. Examples: ${e?.modelIds??""}`,"auth.advanced.prompt":"Optional: configure advanced generation settings.","auth.advanced.thinking":"Enable thinking","auth.advanced.thinkingDesc":"Enable extended reasoning. Leave off to use the model default.","auth.advanced.modality":"Enable modality","auth.advanced.modalityDesc":"Enables multimodal input capabilities (image, video, etc.).","auth.advanced.modalityImage":"Image","auth.advanced.modalityVideo":"Video","auth.advanced.modalityAudio":"Audio","auth.advanced.modalityPdf":"PDF","auth.advanced.contextWindow":"Context window","auth.advanced.contextDesc":"Context window capacity in tokens. Leave empty to infer the limit from the model ID.","auth.advanced.contextPlaceholder":"Context window (optional)","auth.advanced.maxTokens":"Maximum output tokens","auth.advanced.maxTokensDesc":"Maximum tokens per response. Leave empty to infer the limit from the model ID.","auth.advanced.tokenLimitInvalid":e=>`${e?.field??"Token limit"} must be a whole number between 1 and 10,000,000.`,"auth.advanced.modalitiesRequired":"Select at least one input type or turn off modality.","auth.advanced.defaults":"Use model defaults","auth.apiKeySet":"Set (hidden)","auth.apiKeyHint":"the key is saved in ~/.o1-code/credentials/, for your user only","auth.group.organizaone":"OrganizaOne","auth.group.organizaoneDesc":"Connect to OrganizaOne with your key","auth.group.apiKey":"API key","auth.group.apiKeyDesc":"Anthropic, OpenAI, Google Gemini, xAI and others","auth.group.local":"Local","auth.group.localDesc":"Models running on this machine","auth.group.custom":"Custom","auth.group.customDesc":"Any URL, OpenAI-compatible or Anthropic","auth.step.port":"Port","auth.comingSoon":"coming soon","auth.organizaone.apiKey":"API key","auth.organizaone.apiKeyDesc":"Paste your key; the models come from OrganizaOne","auth.local.looking":"… looking","auth.local.detected":e=>`detected · ${e?.count??0} models`,"auth.local.notRunning":"not running","auth.local.lookAgain":"Look again","auth.local.portPrompt":"Port of the server on the daemon host, or its full URL.","local.btw":"Ask a quick side question without affecting the main conversation. Usage: /btw <your question>","btw.empty":"Please provide a question. Usage: /btw <your question>","btw.side.empty":"Please provide a question. Usage: /btw side <your question>","btw.emptyAnswer":"No response received.","btw.failed":"Failed to answer btw question","btw.answering":"+ Answering...","btw.shortcuts.pending":"Press Escape, Ctrl+C, or Ctrl+D to cancel","btw.shortcuts.done":"Press Space, Enter, or Escape to dismiss","local.clear":"Start a new session with empty context; previous session stays on disk (resumable with /resume)","local.context":'Show context window usage breakdown. Use "/context detail" for per-item breakdown.',"local.copy":"Copy last output or snippet","local.delete":"Delete a session permanently","local.release":"Release a live session","local.rewind":"Rewind the current conversation","local.branch":"Fork the current conversation into a new session","local.fork":"Start a background agent from this conversation","local.help":"Show help and commands","local.language":"Change UI language","local.mcp":"Manage MCP servers","local.memory":"Manage memory","local.model":"Switch model or set fast model","local.new":"Start a new conversation","local.plan":"Enter Plan mode","local.goal":"Set a goal and keep working until it is met","local.recap":"Generate a session recap","recap.label":"Recap","recap.loading":"Generating recap...","recap.empty":"Not enough conversation context for a recap yet.","recap.failed":"Failed to generate recap","rewind.action":"Rewind","rewind.confirm":"Confirm rewind","rewind.empty":"No rewind snapshots are available for this session.","rewind.failed":e=>`Failed to rewind session: ${e?.reason??""}`,"rewind.loading":"Loading rewind snapshots...","rewind.promptFallback":e=>`Prompt ${e?.id??""}`,"rewind.rewinding":"Rewinding...","rewind.subtitle":"Only the conversation is rewound. Files are not changed.","rewind.title":"Rewind Conversation","rewind.turn":e=>`Prompt ${e?.turn??0}`,"local.rename":"Rename current session","rename.empty":"Please enter a session name, for example /rename project debugging, or use /rename --auto.","rename.success":e=>`Session renamed to ${e?.name??""}`,"local.reset":"Reset current conversation","local.resume":"Resume a previous session","local.skills":"View available skills","local.stats":"Show session statistics","local.tasks":"View background tasks","local.status":"Show version info","local.theme":"Change theme","local.settings":"View and edit settings","local.schedule":"Manage scheduled tasks","local.extensions":"Manage extensions. Usage: /extensions manage|install <source>","extensions.label":"extension","extensions.action.failed":e=>`Extension action failed${e?.name?` for "${e.name}"`:e?.source?` from "${e.source}"`:""}: ${e?.error??"Unknown error"}`,"extensions.commands.refreshFailed":"Failed to refresh extension commands.","extensions.install.failed":e=>`Failed to install extension${e?.source?` from "${e.source}"`:""}: ${e?.error??"Unknown error"}`,"extensions.manage.agents":"Agents:","extensions.manage.actions":"Extension actions","extensions.manage.add":"Add","extensions.manage.checkingUpdates":"Checking for updates...","extensions.manage.checkUpdates":"Check for updates","extensions.manage.commands":"Commands:","extensions.manage.contextFiles":"Context files:","extensions.manage.count":e=>`${e?.count??0} extensions installed`,"extensions.manage.setting.disabled":"Disabled","extensions.manage.setting.default":"Default","extensions.manage.setting.enabled":"Enabled","extensions.manage.setting.unknown":"Unavailable","extensions.manage.setting.unavailableDescription":"The service did not return scoped extension settings. Restart o1-code serve and try again.","extensions.manage.userSetting":"Global setting","extensions.manage.userSettingDescription":"Applies to your workspaces unless a workspace setting overrides it.","extensions.manage.workspaceSetting":"Workspace setting","extensions.manage.workspaceSettingDescription":"Applies only to the current workspace.","extensions.manage.disable":"Disable Extension","extensions.manage.disabled":e=>`Extension "${e?.name??"extension"}" disabled.`,"extensions.manage.disabling":e=>`Disabling extension "${e?.name??"extension"}"…`,"extensions.manage.inherited":e=>`Extension "${e?.name??"extension"}" now uses the global setting.`,"extensions.manage.inheriting":e=>`Resetting extension "${e?.name??"extension"}" to the global setting…`,"extensions.manage.empty":"No extensions installed.","extensions.manage.emptyAgents":"This extension has no agents.","extensions.manage.emptyCommands":"This extension has no commands.","extensions.manage.emptyContextFiles":"This extension has no context files.","extensions.manage.emptyDescription":"Install an extension to add commands, skills, agents, or MCP servers.","extensions.manage.emptyMcpServers":"This extension has no MCP servers.","extensions.manage.emptySkills":"This extension has no skills.","extensions.manage.enable":"Enable Extension","extensions.manage.enabled":e=>`Extension "${e?.name??"extension"}" enabled.`,"extensions.manage.enabling":e=>`Enabling extension "${e?.name??"extension"}"…`,"extensions.manage.install":"Install","extensions.manage.installDescription":"Enter a GitHub, Git, or npm source, or upload an Extension archive.","extensions.manage.sourceTab":"Source","extensions.manage.archiveTab":"Archive","extensions.manage.archiveSelect":"Select a .zip or .tar.gz archive.","extensions.manage.archiveSelected":e=>`Selected archive: ${e?.name??"extension archive"}`,"extensions.manage.archiveTooLarge":"Extension archives must be 10 MB or smaller.","extensions.manage.archiveEmpty":"The selected Extension archive is empty.","extensions.manage.archiveInvalid":"Select a .zip or .tar.gz Extension archive with a valid filename up to 255 bytes.","extensions.manage.installSelectPluginDescription":e=>`Choose a plugin from "${e?.marketplace??"this marketplace"}".`,"extensions.manage.installTitle":"Add Extension","extensions.manage.installType":"Install type:","extensions.manage.mcpServers":"MCP servers:","extensions.manage.marketplaceRoot":"Marketplace root","extensions.manage.name":"Name:","extensions.manage.notUpdatable":"not updatable","extensions.manage.operationFailed":"Extension operation failed.","extensions.manage.noDescription":"No description","extensions.manage.noMatches":"No matching extensions.","extensions.manage.origin":"Origin:","extensions.manage.overview":"Overview","extensions.manage.path":"Path:","extensions.manage.queued":e=>`Extension action queued for "${e?.name??"extension"}".`,"extensions.manage.refreshFailed":e=>`Extension action succeeded, but session refresh failed${e?.error?`: ${e.error}`:"."}`,"extensions.manage.restartRequired":"updated; restart required","extensions.manage.search":"Search extensions…","extensions.manage.selectExtension":"Choose an extension","extensions.manage.settings":"Settings:","extensions.manage.skills":"Skills:","extensions.manage.source":"Source:","extensions.manage.sourcePlaceholder":"https://github.com/owner/repository","extensions.manage.status":"Status:","extensions.manage.status.disabled":"disabled","extensions.manage.status.enabled":"enabled","extensions.manage.title":"Manage Extensions","extensions.manage.unknownUpdate":"unknown","extensions.manage.uninstalled":e=>`Extension "${e?.name??"extension"}" uninstalled.`,"extensions.manage.uninstalling":e=>`Uninstalling extension "${e?.name??"extension"}"…`,"extensions.manage.uninstallAction":"Uninstall Extension","extensions.manage.uninstallConfirm":e=>`Uninstall extension "${e?.name??"extension"}"?`,"extensions.manage.upToDate":"up to date","extensions.manage.update":"Update Extension","extensions.manage.updateAvailable":"update available","extensions.manage.updateError":"update check failed","extensions.manage.updateComplete":"updated","extensions.manage.updatedWithWarnings":"updated with warnings","extensions.manage.updateStatus":"Update status:","extensions.manage.updating":"updating…","extensions.manage.updatingExtension":e=>`Updating extension "${e?.name??"extension"}"…`,"extensions.manage.updated":e=>`Extension "${e?.name??"extension"}" updated.`,"extensions.manage.updatedWithVersion":e=>`Extension "${e?.name??"extension"}" updated to v${e?.version??""}.`,"extensions.manage.version":"Version:","extensions.manage.viewDetails":"View Details","extensions.install.installed":e=>`Extension "${e?.name??"extension"}" installed.`,"extensions.install.installedWithVersion":e=>`Extension "${e?.name??"extension"}" v${e?.version??""} installed.`,"extensions.install.missingOptionValue":e=>`Missing value for ${e?.option??"option"}`,"extensions.install.requestFailed":"Failed to install extension","extensions.install.started":e=>`Installing extension from "${e?.source??""}"...`,"extensions.install.unknownOption":e=>`Unknown option ${e?.option??""}`,"extensions.install.usage":"Usage: /extensions manage|install <source>","extensions.install.waitForSession":"Wait for the session to connect before installing an extension.","local.tools":"List available tools. Usage: /tools [desc]","loadWarning.commands":"Failed to load command list; slash commands may be incomplete.","loadWarning.context":"Failed to load session context; current mode may be inaccurate.","loadWarning.models":"Failed to load model list; some model details may be unavailable.","mcp.action.auth":"Authenticate","mcp.action.authHint":"Not exposed by daemon yet","mcp.action.authMessage":"Daemon serve does not expose MCP authentication yet.","mcp.action.clearAuth":"Clear Authentication","mcp.action.disable":"Disable","mcp.action.done":e=>`${e?.action??"Action"} complete.`,"mcp.action.enable":"Enable","mcp.action.enableMessage":"Daemon serve does not expose MCP enable/disable yet.","mcp.action.failed":e=>`Failed: ${e?.error??""}`,"mcp.action.running":e=>`${e?.action??"Action"}...`,"mcp.action.reauth":"Re-authenticate","mcp.action.approve":"Approve","mcp.actions":"Server actions","mcp.annotation.destructive":"destructive","mcp.annotation.idempotent":"idempotent","mcp.annotation.openWorld":"open-world","mcp.annotation.readOnly":"read-only","mcp.annotations":"Annotations","mcp.oauth.server":"Server","mcp.oauth.starting":e=>`Starting OAuth authentication for MCP server '${e?.name??""}'...`,"mcp.oauth.title":"OAuth Authentication","mcp.oauth.timeout":"Authentication timed out. Refresh to check the status.","mcp.oauth.authenticationFailed":"Authentication failed.","mcp.oauth.statusFailed":"Failed to check the authentication status.","mcp.oauth.serverRemoved":"The MCP server was removed during authentication.","mcp.clientBudget":e=>`${e?.count??0}/${e?.budget??0} clients · ${e?.mode??"off"}`,"mcp.command":"Command","mcp.description":"Description:","mcp.descriptionTitle":"Description","mcp.basicInfo":"Basic Information","mcp.action.reconnect":"Reconnect","mcp.action.edit":"Edit","mcp.reconnect.skipped":e=>`Reconnect was not completed: ${e?.reason??"unknown reason"}.`,"mcp.reconnect.authenticationRequired":"Authentication is required before reconnecting.","mcp.action.restart":"Restart","mcp.action.tools":"View tools","mcp.action.toolsHint":"Enter to inspect","mcp.empty":"No MCP servers configured.","mcp.emptyDescription":"Add an MCP server to manage it here.","mcp.emptyTools":"No tools discovered.","mcp.expand":"Expand MCP server","mcp.collapse":"Collapse MCP server","mcp.inputSchema":"Input schema","mcp.loadingStatus":"Loading MCP status...","mcp.loadingTools":"Loading tools...","mcp.name":"Name","mcp.noDescription":"No description","mcp.noMatches":"No matching MCP servers.","mcp.add.button":"Add","mcp.add.adding":"Adding MCP Server…","mcp.add.title":"Add MCP Server","mcp.add.description":"Save an MCP server to this workspace with a name and configuration.","mcp.add.name":"Name","mcp.add.serverDescription":"Description","mcp.add.serverDescriptionPlaceholder":"Describe this MCP server","mcp.add.scope":"Location","mcp.add.scope.global":"Global","mcp.add.nameRequired":"Enter an MCP server name.","mcp.add.config":"Configuration (JSON)","mcp.add.configInvalid":"Configuration must be a JSON object.","mcp.add.done":e=>`Added ${e?.name??"MCP server"}.`,"mcp.edit.title":"Edit MCP Server","mcp.edit.description":"Update the description or configuration. Name and location cannot be changed.","mcp.edit.save":"Save Changes","mcp.edit.saving":"Saving Changes…","mcp.edit.done":e=>`Updated ${e?.name??"MCP server"}.`,"mcp.edit.notFound":"The MCP server is no longer present in settings.","mcp.runtime.notUpdated":"Configuration was saved, but the current session was not updated.","mcp.runtime.removeNotUpdated":"Configuration was deleted, but the current session was not updated.","mcp.discovery.empty":"No MCP servers are configured.","mcp.discovery.timeout":"MCP discovery is taking longer than expected. Refresh to check again.","mcp.add.settingsUnavailable":"Workspace settings are unavailable.","mcp.action.remove":"Delete","mcp.remove.title":"Delete MCP Server","mcp.remove.description":e=>`Remove MCP server “${e?.name??""}” from this workspace?`,"mcp.remove.description.global":e=>`Remove MCP server “${e?.name??""}” from global settings?`,"mcp.remove.done":e=>`Deleted ${e?.name??"MCP server"}.`,"mcp.remove.notWorkspace":"This MCP server is not defined in workspace settings.","mcp.source.all":"All","mcp.noSchema":"No input schema.","mcp.oauth.open":"Open authentication page","mcp.serverTool":"Server tool","mcp.servers":e=>`${e?.count??0} servers`,"mcp.configuredServers":"Configured MCP servers:","mcp.fromExtension":e=>`(from ${e?.name??""})`,"mcp.extensionMcp":"Extension MCP","mcp.invalidReason":e=>`invalid: ${e?.reason??""}`,"mcp.invalidReasonLabel":"Reason:","mcp.invalidToolHelp":"Tools must have both name and description to be used by the LLM.","mcp.invalidToolWarning":"Warning: This tool cannot be called by the LLM","mcp.manageServers":"Manage MCP servers","mcp.viewDetails":"View details","mcp.parameters":"Parameters:","mcp.required":" required","mcp.resources":"Resources","mcp.resourcesUnavailable":"Resource details unavailable.","mcp.noResources":"No resources.","mcp.resourceCount":e=>`${e?.count??0} ${e?.count===1?"resource":"resources"}`,"mcp.promptCount":e=>`${e?.count??0} ${e?.count===1?"prompt":"prompts"}`,"mcp.resource.uriLabel":"URI:","mcp.resource.nameLabel":"Name:","mcp.resource.mimeTypeLabel":"MIME Type:","mcp.resource.sizeLabel":"Size:","mcp.resource.bytes":e=>`${e?.count??0} ${e?.count===1?"byte":"bytes"}`,"mcp.scrollPosition":e=>`${e?.current??0}/${e?.total??0}`,"mcp.shortcut.back":"Esc to back","mcp.shortcut.close":"Esc to close","mcp.shortcut.selectBack":"↑↓ to navigate · Enter to select · Esc to back","mcp.shortcut.selectClose":"↑↓ to navigate · Enter to select · Esc to close","mcp.settings":"Settings","mcp.extension":e=>`Extension: ${e?.name??""}`,"mcp.starting":e=>`⏳ MCP servers are starting up (${e?.count??0} initializing)...`,"mcp.startingNote":"Note: First startup may take longer. Tool availability will update automatically.","mcp.restartSkipped":e=>`Skipped ${e?.name??""}: ${e?.reason??""}`,"mcp.restarted":e=>`Restarted ${e?.name??""} in ${e?.duration??0}ms`,"mcp.restartEntries":e=>`Restarted ${e?.restarted??0}/${e?.total??0} ${e?.name??""} entries${e?.failedReasons?` (failed: ${e.failedReasons})`:""}`,"mcp.source":"Source","mcp.source.extension":"Extension","mcp.source.project":"Project MCP (.mcp.json)","mcp.source.workspace":"Workspace Settings","mcp.source.user":"Global Settings","mcp.status":"Status","mcp.status.blocked":"Blocked","mcp.status.authenticating":"Authenticating","mcp.status.authenticationFailed":"Authentication failed","mcp.status.needsAuthentication":"Needs authentication","mcp.status.needsApproval":"Needs approval","mcp.status.rejected":"Rejected","mcp.status.connected":"connected","mcp.status.connecting":"connecting","mcp.status.disconnected":"disconnected","mcp.status.disconnectedTitle":"Disconnected","mcp.status.disabled":"disabled","mcp.status.ready":"Ready","mcp.status.starting":"Starting... (first startup may take longer)","mcp.status.unknown":"unknown","mcp.tipDesc":"to show server and tool descriptions","mcp.tipNodesc":"to hide descriptions","mcp.tipSchema":"to show tool parameter schemas","mcp.tips":"💡 Tips:","mcp.toolCount":e=>`${e?.count??0} tool`,"mcp.toolsCount":e=>`${e?.count??0} tools`,"mcp.toolsLabel":"Tools:","mcp.title":"MCP Servers","mcp.toolDetail":"Tool Detail","mcp.tools":"Tools","mcp.toolsForServer":e=>`Tools for ${e?.name??"Server"}`,"mcp.transport":"Transport Protocol","mcp.use":"Use","mcp.userMcp":"Global MCP","mcp.workingDirectory":"Working Directory","goal.aborted":"Goal aborted","goal.blocked":"Goal blocked","goal.usageLimited":"Goal usage limited","goal.paused":"Goal paused","goal.achieved":"Goal achieved","goal.check":"Goal check","goal.cleared":"Goal cleared","goal.failed":"Goal could not be achieved","goal.judge":"Judge","goal.label":"Goal","goal.lastCheck":"Last check","goal.notYetMet":"not yet met","goal.set":"Goal set","goal.statusActive":"/goal active","goal.status.active":"In progress","goal.status.paused":"Paused","goal.status.blocked":"Blocked","goal.status.usage_limited":"Usage limited","goal.status.complete":"Complete","goal.activity.idle":"Waiting","goal.activity.running":"Working","goal.activity.verifying":"Verifying","goal.edit":"Edit goal","goal.pause":"Pause goal","goal.resume":"Resume goal","goal.turn":e=>`${e?.count??0} turn`,"goal.turnLabel":e=>`turn ${e?.count??0}`,"goal.turns":e=>`${e?.count??0} turns`,"goal.turnsOfBudget":e=>`${e?.count??0} / ${e?.budget??0} ${e?.budget===1?"turn":"turns"}`,"goal.activeOfBudget":e=>`${e?.used??""} / ${e?.budget??""}`,"goal.tokens":e=>`${e?.used??0} tokens`,"goal.tokensOfBudget":e=>`${e?.used??0} / ${e?.budget??0} tokens`,"goals.title":"Goals","goals.subtitle":"A goal keeps its session working until the condition is met. Only sessions that are currently loaded appear here — a goal advances only while its session is running.","goals.loading":"Loading goals…","goals.count":e=>`${e?.count??0} active ${Number(e?.count)===1?"goal":"goals"}`,"goals.empty":"No active goals. Set one with /goal <condition>.","goals.refresh":"Refresh","goals.new":"New goal","goals.newHint":"The goal starts in a new session and runs until its condition holds. For an enforced turn or time ceiling, run /config model.goalMaxTurns=20 or /config model.goalMaxActiveMinutes=30 in the chat; it applies after the daemon restarts, to Goals created afterwards.","goals.condition":"Condition","goals.conditionPlaceholder":"e.g. `npm test` exits 0 and `npm run lint` reports no warnings (paste the output); do not modify test files; as model guidance, stop as blocked after 20 turns","goals.cancel":"Cancel","goals.create":"Set goal","goals.creating":"Starting…","goals.saving":"Saving…","goals.save":"Save","goals.edit":"Edit goal","goals.objective":"Objective","goals.clear":"Clear goal","goals.clearConfirm":e=>`Clear the goal "${e?.condition??""}"?`,"goals.running":"Working","goals.idle":"Waiting","goals.dropped":e=>`${e?.count??0} session${Number(e?.count)===1?"":"s"} could not be reached — any goals they are running are missing from this list.`,"goals.notYetEvaluated":"not yet evaluated","goals.openSessionHint":"Open this goal's session","goals.error.emptyCondition":"Enter a condition for the goal.","goals.error.clearKeyword":e=>`"${e?.word??""}" clears a goal rather than setting one. Describe the condition to work toward.`,"goals.error.createFailed":"Failed to start the goal","goals.error.saveFailed":"Failed to save the goal","goals.error.goalUnavailable":"The goal is no longer available.","goals.error.requiresObjective":e=>`/goal ${e?.keyword??"set"} requires an objective.`,"goals.error.invalidCommand":"Invalid /goal command","goals.error.goalsUnavailable":"The goals view is not available on this surface.","goals.error.attachmentsUnsupported":"Remove attachments before using /goal.","goals.error.editFailed":"Failed to edit the goal","goals.error.pauseFailed":"Failed to pause the goal","goals.error.resumeFailed":"Failed to resume the goal","goals.error.clearFailed":"Failed to clear the goal","goals.error.controlBusy":"Another goal control is still running. Try again once it finishes.","memory.add":"Add","memory.add.desc":"Write a durable memory","memory.autoDream":e=>`Auto-dream: ${e?.status??"unknown"} · ${e?.lastDream??"never"} · /dream to run`,"memory.autoDreamUnsupported":"Auto-dream settings are not available from web-shell yet.","memory.autoFolder":"Open auto-memory folder","memory.autoMemory":e=>`Auto-memory: ${e?.status??"unknown"}`,"memory.autoMemoryUnsupported":"Auto-memory settings are not available from web-shell yet.","memory.autoSkill":e=>`Auto-skill: ${e?.status??"unknown"}`,"memory.autoSkillUnsupported":"Auto-skill settings are not available from web-shell yet.","memory.chooseScope":"Choose where to save the memory","memory.closed":"Memory panel closed.","memory.contentEmpty":"Memory content is empty.","memory.file":"Memory file","memory.fileOpen":"Memory file opened.","memory.fileTruncated":"Memory file opened. Content is truncated.","memory.files":"Memory Files","memory.footer":"Enter to confirm · Esc to cancel","memory.footer.back":"Esc to go back","memory.global":"User","memory.global.desc":"Saved to the global user memory file","memory.globalReadUnsupported":"Global memory is outside the bound workspace, so the current daemon file-read API cannot open its content.","memory.loading":"Loading memory...","memory.loadingFile":"Loading memory file...","memory.lastDream":"5 hours ago","memory.menu":"Memory","memory.never":"never","memory.noFiles":"No memory files found.","memory.on":"on","memory.openFolderUnsupported":"Opening the auto-memory folder is not available from web-shell yet.","memory.placeholder":e=>`Write ${e?.scope??"memory"} content...`,"memory.project":"Project","memory.project.desc":"Saved to this workspace memory file","memory.refresh":"Refresh","memory.refresh.desc":"Reload memory file information","memory.refreshed":"Memory refreshed.","memory.save":"Save Memory","memory.savedIn":e=>`Saved in ${e?.path??""}`,"memory.saved":e=>`${e?.scope??"Memory"} saved: ${e?.bytes??0} bytes -> ${e?.path??""}`,"memory.saving":"Saving...","memory.show":"Show","memory.show.desc":"Show configured memory files","memory.status":"Workspace and user memory files","memory.unknown":"unknown","memory.write":"Write memory content","mode.auto":"Classifier Approval","mode.auto.desc":"Uses a classifier to approve safe tool calls and block or ask for risky ones","mode.auto.notice":"Auto mode enabled. An LLM classifier evaluates each tool call and auto-approves safe actions, blocks risky ones. To exit: Shift+Tab or /approval-mode default.","mode.footer":"(Use Enter to select, Esc to cancel)","mode.name.plan":"plan","mode.name.default":"default","mode.name.auto-edit":"auto-edit","mode.name.auto":"auto","mode.name.yolo":"yolo","plan.toggle.on":"Plan before executing","plan.toggle.off":e=>`Planning; execute with ${e?.mode} after approval. Click to exit planning.`,"approval.option.executePlan":e=>`Approve and execute · ${e?.mode}`,"mode.label.plan":"Plan","mode.label.default":"Ask Approval","mode.label.auto-edit":"Auto Edit","mode.label.auto":"Classifier Approval","mode.label.yolo":"Full Access","mode.listLabel.plan":"Plan (plan)","mode.listLabel.default":"Ask Approval (default)","mode.listLabel.auto-edit":"Auto Edit (auto-edit)","mode.listLabel.auto":"Classifier Approval (auto)","mode.listLabel.yolo":"Full Access (yolo)","mode.desc.plan":"Analyze only, do not modify files or execute commands","mode.desc.default":"Ask before running commands, editing files, or accessing external resources","mode.desc.auto-edit":"Automatically approve file edits and ask before command execution or other sensitive actions","mode.desc.auto":"Evaluate tool risk automatically, run safe actions, and confirm risky ones","mode.desc.yolo":"Automatically approve all tool calls in trusted contexts","mode.select":"Approval Mode","mode.changePending":"A mode change or plan confirmation is pending. Try again when it finishes.","mode.autoApproved":(e=>e?.tool?`Auto-approved: ${e.tool}`:"Pending tool call auto-approved by mode switch."),"mode.auto-edit":"Auto-accept edits","mode.auto-edit.desc":"Automatically approve file read/write operations","mode.default":"Default mode","mode.default.desc":"Ask before each tool call","mode.plan":"Plan mode","mode.plan.desc":"Analyze and plan without running tools","mode.unknown":"unknown mode","mode.yolo":"YOLO mode","mode.yolo.desc":"Automatically approve all operations","plan.title":"Plan","model.contextWindow":"Context Window","model.contextWindow.unknown":"(unknown)","model.current":e=>`current: ${e?.model??"unknown"}`,"model.modality":"Modality","model.modality.text":"text","model.modality.textOnly":"text-only","model.modality.image":"image","model.modality.pdf":"pdf","model.modality.audio":"audio","model.modality.video":"video","model.baseUrl":"Base URL","model.apiKey":"API Key","model.default":"(default)","model.notSet":"(not set)","model.footer":"Enter select, ↑↓ navigate, Esc close","model.searchHint":"Press / to search","model.fastHint":"for suggestions and side tasks","model.noMatch":e=>`No model matching "${e?.query??""}"`,"model.unavailable":"Models are unavailable; the daemon default will be used.","model.none":"No models available","model.select":"Select Model","model.section":"Model","reasoning.options":"Options","reasoning.thinking":"Thinking","reasoning.thinkingOff":"Thinking Off","reasoning.effort":"Effort","reasoning.effort.low":"Low","reasoning.effort.medium":"Medium","reasoning.effort.high":"High","reasoning.effort.xhigh":"Extra High","reasoning.effort.max":"Max","reasoning.updateFailed":"Failed to update reasoning options","model.setFast":"Set Fast Model","model.setVoice":"Set Voice Model","auth.purpose.label":"Model purpose","auth.purpose.chat":"Conversation","auth.purpose.chatHint":"Use this provider for conversation. The current model is retained when it is included in the configuration.","auth.purpose.image":"Image generation","auth.purpose.voice":"Voice transcription","auth.purpose.realtime":"Live Voice","auth.purpose.imageHint":"Use a DashScope- or MiniMax-compatible HTTPS image-generation endpoint without query or fragment. Adding this model keeps your conversation model.","auth.purpose.voiceHint":"Use OpenAI Chat Completions with qwen3-asr-flash, qwen3-asr-flash-realtime, fun-asr-realtime, or paraformer-realtime. Adding this model keeps your conversation model.","settings.models.editWindow":"Edit context window","settings.models.windowHint":"Leave empty to infer the limit from the model ID. Existing sessions need a restart to use the new limit.","settings.models.windowSaved":"Saved. Restart existing sessions to apply.","settings.models.saved":"Saved","model.setAdvisor":"Set Advisor Model","settings.label.advisorModel":"Advisor Model","settings.label.imageModel":"Image Model","settings.label.voiceModel":"Voice Model","settings.description.advisorModel":"Model used to review recent conversation progress. Leave empty to use the main model.","settings.description.imageModel":"Model used for image generation. Add a custom model with Image generation purpose, then select it here.","settings.description.voiceModel":"Model used for voice transcription. Add a custom model with Voice transcription purpose, then select it here.","model.setImage":"Set Image Model","model.useMain":"Use main model","model.disabled":"Disabled","model.setVision":"Set Vision Model","model.switch":"Switch Model","model.unknown":"unknown","resume.current":"current","resume.activePrompt":"active prompt","resume.filter":"Filter","resume.noMatch":e=>`No session matching "${e?.query??""}"`,"resume.none":"No sessions to resume","resume.pressSearch":"Press / to search","resume.search":"Search","resume.title":"Resume Session","parallelAgents.title":"Parallel agents","parallelAgents.done":e=>`${e?.done??0}/${e?.total??0} done`,"parallelAgents.failed":e=>`${e?.count??0} failed`,"skills.actions":"Skill actions","skills.disable":"Disable","skills.disabled":"Skill disabled.","skills.enable":"Enable","skills.enabled":"Skill enabled.","skills.install.action":"Upload","skills.install.description":"Install a skill from GitHub, a local folder, or a ZIP archive.","skills.install.error.authentication":"Authentication is required to upload skills.","skills.install.error.folderRequired":"Enter a folder path.","skills.install.error.githubRequired":"Enter a GitHub SKILL.md URL.","skills.install.error.invalidName":"The skill name is missing or contains unsupported characters.","skills.install.error.manifestMissing":"The package must contain a SKILL.md file at its root.","skills.install.error.invalidPackage":"The skill package is invalid. Check its structure and SKILL.md content.","skills.install.error.zipTooLarge":"The ZIP file must not exceed 6 MB.","skills.install.error.invalidFolder":"Enter a valid local skill folder.","skills.install.error.githubFailed":"Could not download the skill from GitHub. Check the URL or authentication and try again.","skills.install.error.invalidScope":"Choose either the workspace or global install location.","skills.install.error.invalidSource":"The daemon does not recognize this upload source. Restart the updated daemon and try again.","skills.install.error.notFound":"The requested skill was not found.","skills.install.error.nameRequired":"Enter the skill name.","skills.install.error.untrusted":"Trust this workspace before uploading skills.","skills.install.failed":"Failed to upload skill.","skills.install.folder":"Local folder","skills.install.folderPath":"Folder path","skills.install.githubUrl":"SKILL.md URL","skills.install.name":"Skill name","skills.install.scope":"Install to","skills.install.scope.global":"Global","skills.install.scope.workspace":"Workspace","skills.install.selectZip":"Select a ZIP archive.","skills.install.title":"Upload skill","skills.install.succeeded":e=>`Skill “${e?.name??""}” uploaded successfully.`,"skills.install.zipSelected":e=>`Selected: ${e?.name??""}`,"skills.delete.action":"Delete skill","skills.delete.description":e=>`Delete “${e?.name??""}” from disk? This cannot be undone.`,"skills.delete.failed":"Failed to delete skill.","skills.delete.succeeded":e=>`Skill “${e?.name??""}” deleted successfully.`,"skills.delete.title":"Delete skill?","skills.empty":"No skills available.","skills.count":e=>[`${e?.count??0} skills`,...e?.enabled?[`${e.enabled} enabled`]:[],...e?.disabled?[`${e.disabled} disabled`]:[]].join(", "),"skills.details":"Skill details","skills.extension":"Extension","skills.filter.all":"All","skills.filter.bundled":"Built-in","skills.filter.extension":"Extensions","skills.filter.label":"Filter skills by source","skills.filter.project":"Workspace settings","skills.filter.status.all":"All","skills.filter.status.disabled":"Disabled","skills.filter.status.enabled":"Enabled","skills.filter.status.label":"Filter skills by status","skills.filter.user":"Global settings","skills.hint":"Hint","skills.invocation":"Invocation","skills.level":"Scope","skills.level.bundled":"Bundled","skills.level.extension":"Extension","skills.level.project":"Project","skills.level.user":"Global","skills.loading":"Loading skills...","skills.manualReference":"Manual reference","skills.manualReferenceHint":"The model cannot discover this skill automatically. Reference it manually.","skills.model":"Model","skills.modelAccess":"Model access","skills.modelAccess.disabled":"Not model-invocable","skills.modelAccess.enabled":"Model-invocable","skills.modelInvocable":"Model","skills.noDescription":"No description","skills.noMatches":"No matching skills.","skills.notToggleable":"This skill cannot be enabled or disabled.","skills.run":"Reference skill","skills.search":"Search skills…","skills.settingUpdated":"Workspace setting updated.","skills.settingUpdatedAvailabilityUnchanged":"Workspace setting updated. Effective Skill availability did not change.","skills.settingUnchanged":"Skill already has the requested workspace setting; no setting was changed.","skills.status":"Status","skills.status.disabled":"disabled","skills.status.enabled":"enabled","skills.toggleFailed":"Failed to update skill.","skills.error.inactiveExtension":"This skill belongs to an inactive extension. Enable the extension first.","skills.toggleUnsupported":"The connected daemon does not support skill enable or disable actions.","skills.title":"Skills","plugins.extensions":"Extensions","plugins.agents":"Agents","plugins.mcp":"MCP","plugins.sections":"Plugin sections","plugins.skills":"Skills","plugins.title":"Plugins","plugins.tools":"Tools","stats.accepted":"Accepted:","stats.agreementRate":"Overall Agreement Rate:","stats.api":"API","stats.apiTime":"API Time","stats.avgDuration":"Avg Duration","stats.avgLatency":"Avg Latency","stats.cached":"Cached","stats.cacheDesc":"of input tokens were served from the cache, reducing costs.","stats.calls":"Calls","stats.codeChanges":"Code Changes","stats.decisionSummary":"User Decision Summary","stats.duration":"Duration","stats.errors":"Errors","stats.inputTokens":"Input Tokens","stats.metric":"Metric","stats.modelStats":"Model Stats","stats.modelTip":"Tip: For a full token breakdown, run /stats model.","stats.modelUsage":"Model Usage","stats.modified":"Modified:","stats.noApiCalls":"No API calls have been made in this session.","stats.noToolCalls":"No tool calls have been made in this session.","stats.outputTokens":"Output Tokens","stats.overview":"Session Overview","stats.performance":"Performance","stats.prompts":"Prompts","stats.rejected":"Rejected:","stats.reqs":"Reqs","stats.requests":"Requests","stats.savingsHighlight":"Savings Highlight:","stats.successRate":"Success Rate","stats.thoughts":"Thoughts","stats.title":"Session Stats","stats.tokens":"Tokens","stats.toolCalls":"Tool Calls","stats.toolName":"Tool Name","stats.toolStats":"Tool Stats","stats.toolTime":"Tool Time","stats.total":"Total","stats.totalReviewed":"Total Reviewed Suggestions:","contextUsage.refresh":"Refresh","contextUsage.remaining":"Remaining","contextUsage.advanced":"Advanced · usage by category","contextUsage.snapshot":"Snapshot","contextUsage.viewCurrent":"View current context","contextUsage.compress":"Compress context","contextUsage.compressing":"Compressing…","contextUsage.compressed":"Compression completed. Context usage refreshed.","contextUsage.compressCancelled":"Cancellation requested. Refresh to check current usage.","contextUsage.compressInterrupted":"Connection changed during compression. Refresh to check current usage.","contextUsage.compressFailed":"Compression failed. You can try again.","contextUsage.compressRefreshFailed":"Compression completed, but usage could not be refreshed. Use Refresh to retry.","contextUsage.compressUnavailable":"Requires an idle, connected, writable session with the built-in compression command and no active goal.","contextCompression.result":e=>`Context compressed ${e?.from??""} → ${e?.to??""}`,"contextCompression.instructionsTruncated":e=>`Compression instructions were truncated to ${e?.max??""} characters.`,"contextCompression.noop":"No compression needed.","contextUsage.retry":"Retry","contextUsage.loadError":"Failed to load context usage.","contextUsage.previousReading":"Could not refresh. Showing a previous reading.","contextUsage.unavailable":"Context usage is unavailable for this session.","tokenUsage.avgLatency":"Avg latency","tokenUsage.cached":"Cached input","tokenUsage.input":"Input","tokenUsage.loadError":"Failed to load token usage.","tokenUsage.models":"By model","tokenUsage.noData":"No API calls in this session yet.","tokenUsage.noSubagents":"No subagent calls in this session yet.","tokenUsage.noTools":"No tool calls in this session yet.","tokenUsage.open":"Session token usage","tokenUsage.output":"Total output","tokenUsage.refresh":"Refresh","tokenUsage.requests":"Requests","tokenUsage.retry":"Retry","tokenUsage.subagents":"Subagents","tokenUsage.thoughts":"Reasoning (included in total output)","tokenUsage.title":"Token Usage","tokenUsage.toolRow":e=>`${e?.count??0} calls · ${e?.rate??0}% ok · ${e?.duration??""}`,"tokenUsage.tools":"Tools","tokenUsage.updatedAt":e=>`Updated ${e?.time??""}`,"tokenUsage.unavailable":"Token usage is unavailable for this session.","trajectory.title":"Trajectory","trajectory.description":"See where a run spent its time and tokens","trajectory.empty":"No records in this session yet.","trajectory.noTiming":"No request or tool durations are recorded for these records.","trajectory.truncated":"Showing the most recent records of this session.","trajectory.loadFailed":e=>`Could not read the transcript: ${e?.message??""}`,"trajectory.partial":"Part of this transcript could not be read, so some records are missing.","trajectory.totals":e=>`${i_(e?.turns,"turn")} · ${i_(e?.requests,"request")} · ${i_(e?.tools,"tool")} · ${e?.duration??""}`,"trajectory.turn":e=>`Turn ${e?.index??0}`,"trajectory.turnPartial":e=>`Turn ${e?.index??0} (continued)`,"trajectory.turnSummary":e=>`${i_(e?.requests,"request")} · ${i_(e?.tools,"tool")} · ${e?.duration??""}`,"trajectory.request":"Model request","trajectory.requestFailed":"Request failed","trajectory.ttft":e=>`TTFT ${e?.duration??""}`,"trajectory.subagentRollup":e=>`subagent ${i_(e?.requests,"request")} · ${i_(e?.tools,"tool")} · ${e?.duration??""}`,"trajectory.badge.user":"you","trajectory.badge.message":"say","trajectory.badge.thought":"think","trajectory.badge.tool":"tool","trajectory.badge.subagent":"sub","trajectory.badge.shell":"shell","trajectory.badge.permission":"ask","trajectory.badge.status":"note","trajectory.badge.cancelled":"stop","trajectory.badge.other":"other","trajectory.cancelled":"Turn cancelled","status.contextUsed":e=>`${e?.pct??"0.0"}% context used`,"status.disconnected":"Disconnected","status.modeHint":"(shift + tab or click to switch)","status.shortcuts":"? for shortcuts","stream.cancel":"esc to cancel","stream.cancelArmed":"Press Esc again to stop","stream.tokens":e=>`${e?.count??0} tokens`,"theme.current":e=>`current: ${e?.theme??""}`,"theme.auto":"Auto","theme.dark":"Dark","theme.dark.desc":"Terminal-style dark skin.","theme.light":"Light","theme.light.desc":"Terminal-style light skin.","theme.title":"Theme","todo.allDone":"All tasks completed","todo.collapse":"Collapse task list","todo.completedAbove":e=>`✓ ${e?.count??0} completed`,"todo.detail.api":"API","todo.detail.cached":"Cached","todo.detail.end":"End","todo.detail.hide":"Hide task detail","todo.detail.input":"Input","todo.detail.noResources":"Token & time usage wasn't captured for this task.","todo.detail.output":"Output","todo.detail.sectionSpent":"Time spent","todo.detail.sectionTime":"Time","todo.detail.sectionTokens":"Tokens","todo.detail.show":"Show task detail","todo.detail.start":"Start","todo.detail.tool":"Tool","todo.expand":"Expand task list","todo.more":e=>`... ${e?.count??0} more`,"todo.moreAbove":e=>`... ${e?.count??0} earlier`,"todo.showLess":"Show less","todo.stepProgress":e=>`Step ${e?.current??0} / ${e?.total??0}`,"todo.stepFraction":e=>`${e?.current??0} / ${e?.total??0}`,"todo.title":"Current tasks","planExecution.dialogTitle":"Plan & tasks","planExecution.title":"Plan execution","planExecution.overview":"Workflow overview","planExecution.overallProgress":"Overall progress","planExecution.stepsCompleted":"Steps completed","planExecution.activeAgents":"Active agents","planExecution.needsAttention":"Needs attention","planExecution.stepDetails":"Step details","planExecution.subagents":"Subagents","planExecution.noSubagents":"No agent has been linked to this step yet.","planExecution.openDetails":"Open subagent details","planExecution.currentActivity":"Current activity:","planExecution.toolCalls":e=>`${e?.count??0} tool calls`,"planExecution.tokens":e=>`${e?.count??0} tokens`,"planExecution.view":"View plan execution","planExecution.dependsOn":"Depends on:","planExecution.unblocks":"Unblocks:","planExecution.unassigned":"Unassigned executions","planExecution.attention":"Needs attention","planExecution.agentCount":e=>`${e?.count??0} ${Number(e?.count??0)===1?"agent":"agents"}`,"planExecution.status.running":"Running","planExecution.status.paused":"Paused","planExecution.status.completed":"Completed","planExecution.status.blocked":"Blocked","planExecution.status.in_progress":"In progress","planExecution.status.ready":"Ready","planExecution.edgesHidden":e=>`Too many dependencies to draw (${e?.count??0}). Each step lists what it depends on instead.`,"workflow.chatTitle":"Chat","workflow.title":"Workflow","workflow.inspector.summary":"Workflow progress","workflow.inspector.selectedStep":"Selected step","workflow.inspector.allSteps":"Steps","workflow.inspector.recentActivity":"Recent Agent activity","workflow.inspector.expandGraph":"Expand dependency graph","workflow.inspector.graphCanvas":"Dependency graph","workflow.inspector.canvasHint":"Select a graph node to inspect its dependencies and Agent runs here.","workflow.inspector.activeAgents":e=>`${e?.count??0} active Agent${e?.count===1?"":"s"}`,"workflow.inspector.attentionCount":e=>`${e?.count??0} need attention`,"workflow.planReview.title":"Plan & Review","workflow.planReview.question":"Confirm the plan and start collaboration?","workflow.planReview.confirm":"Confirm and start","workflow.planReview.continuePlanning":"Continue planning","workflow.empty.title":"This session has no structured workflow yet","workflow.empty.copy":"Return to Chat, enter Plan & Review, and ask for Todos with stable IDs and dependencies.","workflow.empty.action":"Return to Chat and create a plan","workflow.tabs.attention":"Needs attention","workflow.connection.connected":"Daemon connected","workflow.connection.reconnecting":"Daemon reconnecting","workflow.session.defaultTitle":"Current Session Workflow","workflow.session.workspace":"workspace","workflow.dependencies.upstream":"Depends on","workflow.dependencies.none":"None","workflow.dependencies.unblocks":"Unblocks","workflow.dependencies.noDownstream":"No downstream steps","workflow.activity.empty":"No Agent runs are linked to a Todo yet.","workflow.activity.showAll":e=>`Show all ${e?.count??0} runs`,"workflow.deliverables.title":"Session deliverables","workflow.deliverables.none":"No artifacts have been published yet","workflow.status.running":"Running","workflow.status.paused":"Paused","workflow.status.completed":"Completed","workflow.status.failed":"Failed","workflow.status.cancelled":"Cancelled","workflow.task.completed":"Completed","workflow.task.attention":"Needs attention","workflow.task.running":"Collaboration running","workflow.task.waitingExecution":"Waiting to execute","planExecution.locateCurrent":"Locate current step","status.mode":"Approval mode","chat.scrollToBottom":"Scroll to bottom","chatHeader.toggleEnvironment":"Toggle environment information","chatHeader.toggleRightPanel":"Toggle right panel","environment.title":"Environment","environment.changes":"Changes","environment.changeCount":e=>`${e?.count??0} changed`,"environment.clean":"Clean","environment.workspace":"Workspace","environment.branch":"Branch","environment.history":"Commit history","environment.agents":"Subagents","environment.unnamedAgent":e=>`Agent (${e?.index??0})`,"workflow.open":"Open agent workflow","workflow.mainAgent":"Main agent","workflow.empty":"No subagents in this workflow","workflow.loadFailed":"Failed to load agent workflow","environment.unavailable":"Unavailable","sources.title":"Sources","sources.count":e=>`${e?.count??0} ${(e?.count??0)===1?"source":"sources"}`,"sources.currentTurn":"Sources for this turn","sources.add":"Add source","sources.empty":"Add files or links for reference.","sources.explanation":"Adding a reference does not send its contents to the assistant.","sources.remove":"Remove source","sources.open":"Open source","sources.viewAll":"View all","sources.type":"Reference type","sources.workspaceFile":"Workspace file","sources.link":"Link","sources.location":"Path or link","sources.name":"Title (optional)","sources.description":"Description (optional)","sources.registrationFailed":"Message sent; some source details could not be saved","sources.attachmentsLoadFailed":e=>`Failed to load uploaded files: ${e?.error??"Unknown error"}`,"sources.openOriginal":"Open original","sources.unavailable":"This reference is no longer available in this workspace.","environment.attachments":"Attachments","environment.artifacts":"Artifacts","environment.artifactsEmpty":"Artifacts generated in this session will appear here.","rightPanel.attachmentLoadFailed":e=>`Failed to load attachment: ${e?.error??"Unknown error"}`,"rightPanel.savedContentUnavailable":"Saved panel content is unavailable","rightPanel.restoreFailed":e=>`Failed to restore panel: ${e?.error??"Unknown error"}`,"userMessage.showMore":"Show more","userMessage.showLess":"Collapse","userMessage.sendFailed":"Failed to send","userMessage.retrySend":"Retry sending message","userMessage.edit":"Edit message","userMessage.editSubmit":"Send","userMessage.editSending":"Sending…","userMessage.editBusy":"Wait for the current turn to finish before editing.","userMessage.editStale":"The message changed. Reopen the editor and try again.","userMessage.editAttachmentUnavailable":"An attachment is unavailable. The message was not rewound.","userMessage.editSyncFailed":"Could not confirm the rewind. Your edit is retained while waiting for synchronization.","userMessage.editFailed":e=>`Could not resend the edited message: ${e?.reason??""}`,"turn.processed":"Processed","turn.processing":"Processing","turn.collapse":"Collapse steps","turn.expand":"Expand steps","turn.cached":"cached","turn.executionSteps":e=>{const t=e?.count??0;return`${t} step${t===1?"":"s"}`},"turn.toolCalls":e=>{const t=e?.count??0;return`${t} tool call${t===1?"":"s"}`},"turn.thinkingCount":e=>{const t=e?.count??0;return`${t} thought${t===1?"":"s"}`},"turn.stopped":"You cancelled this request","turn.stoppedAfter":e=>{const t=e?.seconds??0;return`You cancelled this request after ${t} second${t===1?"":"s"}`},"message.renderError":"This message could not be displayed.","tasks.title":"Background tasks","tasks.empty":"No tasks currently running","tasks.refreshStale":"Task status may be stale; reconnecting...","tasks.cancelFailed":"Failed to cancel task","tasks.alreadyStopped":"Task already stopped","tasks.moreAbove":e=>`^ ${e?.count??0} more above`,"tasks.moreBelow":e=>`v ${e?.count??0} more below`,"tasks.running":"Running","tasks.pausing":"Pausing","tasks.completed":"Completed","tasks.failed":"Failed","tasks.cancelled":"Stopped","tasks.paused":"Paused","tasks.kind.shell":"Shell","tasks.kind.monitor":"Monitor","tasks.kind.workflow":"Workflow","workflow.graph.waiting":"Waiting for the first agent dispatch…","workflow.graph.notRecorded":"No execution graph was saved for this run.","workflow.inline.loading":"Loading live workflow execution…","workflow.inline.unavailable":"This workflow run is no longer available in the current session.","workflow.graph.omitted":e=>`Graph limited for performance: ${e?.lanes??0} phases, ${e?.nodes??0} agents, and ${e?.edges??0} connections omitted.`,"workflow.noPhase":"No phase","workflow.dispatchCount":e=>`${e?.count??0} dispatch${e?.count===1?"":"es"}`,"workflow.selectedDispatch":"Selected dispatch","workflow.dependencies":"Depends on","workflow.action.pause":"Pause","workflow.action.resume":"Resume","workflow.action.retry":"Retry failed path","workflow.action.rerun":"Rerun all","workflow.action.unavailable":"Workflow state changed before the action.","workflow.action.argsUnavailable":"No restart: its history does not have the args it was launched with.","workflow.action.failed":"Could not update the workflow.","workflow.history.retry":e=>`Retried from ${e?.runId??""}`,"workflow.history.rerun":e=>`Rerun from ${e?.runId??""}`,"workflow.history.cached":e=>`${e?.count??0} cached`,"workflow.history.saved":e=>`${e?.count??0} saved runs`,"workflow.history.restored":"Saved run","workflow.history.showRuns":e=>`Run history (${e?.count??0})`,"workflow.history.hideRuns":"Hide history","workflow.history.filter":"Filter runs","workflow.history.filterAll":"All statuses","workflow.history.visibleCount":e=>`${e?.count??0} of ${e?.total??0}`,"workflow.history.filterEmpty":"No saved runs match this filter.","workflow.history.exportVisible":"Export visible","workflow.history.delete":"Delete","workflow.history.deleteSaved":"Delete saved run","workflow.history.confirmDelete":"Confirm delete","workflow.history.deleteUnavailable":"The saved run is no longer available.","workflow.history.deleteFailed":"Could not delete the saved run.","workflow.history.compareRun":e=>`Compare run ${e?.runId??""}`,"workflow.history.compare":"Compare runs","workflow.history.hideComparison":"Hide comparison","workflow.history.source":"Source run","workflow.history.compared":"Compared run","workflow.history.current":"Current run","workflow.history.status":"Status","workflow.history.agents":"Agents","workflow.approvalNeeded":"Approval needed","workflow.respondInChat":"Respond in chat","workflow.metric.agents":"agents","workflow.metric.running":"running","workflow.metric.queued":"queued","workflow.metric.tokens":"tokens","workflow.dispatch.queued":"Queued","workflow.dispatch.running":"Running","workflow.dispatch.completed":"Completed","workflow.dispatch.failed":"Failed","workflow.dispatch.cancelled":"Cancelled","workflow.dispatch.cached":"Cached","tasks.action.stop":"Stop","tasks.action.abandon":"Abandon","tasks.action.confirmStop":"Confirm stop","tasks.action.confirmAbandon":"Confirm abandon","tasks.action.confirmHint":"This will end the blocking turn.","tasks.pill.agent":e=>`${e?.count??0} local agent`,"tasks.pill.agents":e=>`${e?.count??0} local agents`,"tasks.pill.agentPaused":e=>`${e?.count??0} local agent paused`,"tasks.pill.agentsPaused":e=>`${e?.count??0} local agents paused`,"tasks.pill.done":e=>`${e?.count??0} task done`,"tasks.pill.doneMany":e=>`${e?.count??0} tasks done`,"tasks.pill.monitor":e=>`${e?.count??0} monitor`,"tasks.pill.monitors":e=>`${e?.count??0} monitors`,"tasks.pill.shell":e=>`${e?.count??0} shell`,"tasks.pill.shells":e=>`${e?.count??0} shells`,"tasks.pill.workflow":e=>`${e?.count??0} workflow`,"tasks.pill.workflows":e=>`${e?.count??0} workflows`,"tasks.confirmStop":"x again to confirm stop · ends the blocking turn","tasks.shortcut.select":"↑/↓ select","tasks.shortcut.view":"Enter view","tasks.shortcut.stop":"x stop","tasks.shortcut.abandon":"x abandon","tasks.shortcut.listClose":"←/Esc close","tasks.shortcut.detailBack":"← go back","tasks.shortcut.detailClose":"Esc/Enter/Space close","tasks.shortcut.close":"Esc close","tasks.shortcut.cancelConfirm":"Esc cancel","tasks.detail.workingDir":"Working dir","tasks.detail.outputFile":"Output file","tasks.detail.command":"Command","tasks.detail.events":e=>`${e?.count??0} events`,"tasks.detail.exit":e=>`exit ${e?.exitCode??""}`,"tasks.detail.dropped":e=>`${e?.count??0} dropped`,"tasks.detail.error":"Error","tasks.detail.stoppedBecause":"Stopped because","tasks.detail.resumeBlocked":"Resume blocked","tasks.detail.progress":"Progress","tasks.detail.prompt":"Prompt","tasks.detail.type":"Type","tasks.detail.runtime":"Time","tasks.detail.eventCount":"Events","tasks.detail.pid":"PID","tasks.detail.lastEvent":"Last event","tasks.detail.droppedCount":"Dropped","tasks.detail.exitCode":"Exit code","tasks.detail.tokenCount":"Tokens","tasks.detail.toolCallCount":"Tool calls","tasks.detail.tokens":e=>`${e?.count??0} tokens`,"tasks.detail.toolCalls":e=>`${e?.count??0} tool calls`,"tasks.detail.nesting":"Nesting","tasks.detail.nestingValue":e=>`Level ${e?.level??"?"} · from ${e?.parent??"?"}`,"tasks.detail.nestingLevel":e=>`Level ${e?.level??"?"}`,"tasks.row.from":e=>`from ${e?.parent??"?"}`,"tasks.row.nested":"nested","tips.items":"Type / to see all available commands.|Use @ to reference file paths.|Press Esc to cancel an in-flight request.|Use Shift+Enter for a newline.|Press ↑↓ to browse message history.","tools.available":"Available tools:","tools.none":"No tools available.","tools.empty":"No built-in tools available. Open a session first.","tools.footer":e=>e?.name?`${e?.details?"Enter/Space for details · ":""}t to toggle ${e.name} · r to refresh · Esc to close`:"r to refresh · Esc to close","tools.details.hide":"Hide details","tools.details.show":"Show details","tools.description":"Description","tools.details":"Tool details","tools.loading":"Loading tools...","tools.name":"Tool name","tools.noDescription":"No description","tools.noMatches":"No matching tools.","tools.search":"Search tools…","tools.status":"Status","tools.status.disabled":"disabled","tools.status.enabled":"enabled","tools.summary":e=>`${e?.enabled??0}/${e?.total??0} enabled`,"tools.title":"Tools","tools.update.disable":"Disable","tools.update.enable":"Enable","tools.updating":"Updating...","tool.collapse":"▲ Collapse","tool.expand":"Expand","tool.viewFile":"View file","tool.viewImage":"View image","tool.viewCurrentFile":"View the current file","tool.collapseHint":"Collapse","tool.status.failed":"Failed","toolGroup.moreKinds":e=>` +${e?.count??0}`,"toolGroup.summary":e=>`Ran ${e?.count??0} tool${e?.count===1?"":"s"}`,"toolGroup.summary.ranAgents":e=>`Ran ${e?.count??0} agent${e?.count===1?"":"s"}`,"toolGroup.summary.editedFiles":e=>`Edited files ${e?.count??0} time${e?.count===1?"":"s"}`,"toolGroup.summary.ranCommands":e=>`Ran ${e?.count??0} command${e?.count===1?"":"s"}`,"toolGroup.summary.readFiles":e=>`Read files ${e?.count??0} time${e?.count===1?"":"s"}`,"toolGroup.summary.searched":e=>`Searched ${e?.count??0} time${e?.count===1?"":"s"}`,"toolGroup.summary.updatedTodos":e=>`Updated task list${e?.count===1?"":` ${e?.count??0} times`}`,"toolGroup.summary.provideInformation":"Provide information","toolGroup.summary.askedQuestions":e=>`Asked ${e?.count??0} question${e?.count===1?"":"s"}`,"toolGroup.summary.otherTools":e=>`Called ${e?.count??0} other tool${e?.count===1?"":"s"}`,"toolGroup.running":e=>Number(e?.count??0)>1?`Running ${e?.count??0} tools: ${e?.name??"tool"}`:`Running ${e?.name??"tool"}`,"toolGroup.runningPrefix":"Running","thinking.expand":"Expand thinking","thinking.collapse":"Collapse thinking","thinking.running":e=>`Thinking${e?.duration?` ${e.duration}`:""}`,"thinking.doneBriefly":"Thought briefly","thinking.done":e=>e?.duration?`Thought for ${e.duration}`:"Done thinking","thinking.translate":"Translate","thinking.translation":"Translated thinking","thinking.translating":"Translating...","thinking.translationThinking":"Thinking...","thinking.translationFailed":"Translation failed","thinking.retranslate":"Translate again","thinking.cancelTranslation":"Cancel","thinking.closeTranslation":"Close","thinking.inputTokens":e=>`Input tokens: ${e?.count??"--"}`,"thinking.outputTokens":e=>`Output tokens: ${e?.count??"--"}`,"sessionsOverview.current":"Current","sessionsOverview.empty":"No sessions yet","sessionsOverview.loadFailed":"Failed to load sessions","sessionsOverview.loading":"Loading sessions…","sessionsOverview.noData":"No data","sessionsOverview.openInSplit":"Open in split","sessionsOverview.openInSplitHint":"Show the selected sessions side by side in this window","sessionsOverview.splitLimit":e=>`Select at most ${e?.max??6} sessions to open them together`,"sessionsOverview.openInTab":"Open in new tab","sessionsOverview.openInTabHint":"Open the selected sessions as a split view in a new browser tab","sessionsOverview.popupBlocked":"Pop-up blocked. Allow pop-ups for this site to open sessions in new tabs.","sessionsOverview.refresh":"Refresh","sessionsOverview.selectAll":"Select all","sessionsOverview.titleColumn":"Title","sessionsOverview.actions":"Actions","sessionsOverview.time":"Time","sessionsOverview.selectedRows":e=>`${e?.count??0} of ${e?.total??0} row(s) selected.`,"sessionsOverview.previousPage":"Previous","sessionsOverview.nextPage":"Next","sessionsOverview.pageInfo":e=>`Page ${e?.page??0} of ${e?.total??0}`,"sessionsOverview.rowsPerPage":"Rows per page","sessionsOverview.workspaceFilter":"Filter by workspace","sessionsOverview.allWorkspaces":"All","sessionsOverview.searchPlaceholder":"Search title, branch, PR or ID…","sessionsOverview.workspaceAll":"All workspaces","sessionsOverview.workspacesSelected":e=>`${e?.count??0}/${e?.total??0} workspaces`,"sessionsOverview.statusColumn":"Status","sessionsOverview.statusFilter":"Filter by session status","sessionsOverview.filter.all":"All","sessionsOverview.filter.attention":"Needs attention","sessionsOverview.filter.running":"Running","sessionsOverview.filter.idle":"Idle","sessionsOverview.status.idle":"Idle","sessionsOverview.details":e=>`Details for ${e?.name??""}`,"sessionsOverview.sessionCount":e=>`${e?.total??0} session(s)`,"sessionsOverview.confirmArchiveTitle":"Archive session?","sessionsOverview.confirmArchive":e=>`"${e?.name??""}" will be moved to archived sessions.`,"sessionsOverview.confirmArchiveBulkTitle":e=>`Archive ${e?.count??0} sessions?`,"sessionsOverview.confirmArchiveBulk":e=>`${e?.count??0} selected sessions will be moved to archived sessions.`,"sessionsOverview.confirmDeleteTitle":"Delete session?","sessionsOverview.confirmDelete":e=>`"${e?.name??""}" and its conversation history will be permanently deleted. This cannot be undone.`,"sessionsOverview.deleteFailed":"Failed to delete session","sessionsOverview.archiveFailed":"Failed to archive session","sessionsOverview.actionUnavailable":"This action is unavailable for the selected session or workspace","sessionsOverview.bulkArchive":"Archive","sessionsOverview.bulkArchiveHint":e=>`Archive ${e?.count??0} selected sessions`,"sessionsOverview.bulkDelete":"Delete","sessionsOverview.bulkDeleteHint":e=>`Delete ${e?.count??0} selected sessions`,"sessionsOverview.confirmDeleteBulkTitle":e=>`Delete ${e?.count??0} sessions?`,"sessionsOverview.confirmDeleteBulk":e=>`${e?.count??0} selected sessions and their conversation history will be permanently deleted. This cannot be undone.`,"sessionsOverview.selectSession":e=>`Select ${e?.name??""}`,"sessionsOverview.status.askUserQuestion":"User input needed","sessionsOverview.status.needsApproval":"Needs approval","sessionsOverview.status.running":"Running","sessionsOverview.title":"Session Overview","workspacesOverview.title":"Workspaces","workspacesOverview.count":e=>`${e?.count??0} workspaces`,"workspacesOverview.column.name":"Name","workspacesOverview.column.path":"Path","workspacesOverview.column.sessions":"Sessions","workspacesOverview.column.mcp":"MCP","workspacesOverview.column.git":"Branch","workspacesOverview.column.lastActivity":"Last activity","workspacesOverview.column.actions":"Actions","workspacesOverview.primaryBadge":"primary","workspacesOverview.running":e=>`${e?.count??0} running`,"workspacesOverview.attention":e=>`${e?.count??0} need attention`,"workspacesOverview.truncated":"More sessions than one page; counts are a lower bound.","workspacesOverview.dirty":e=>`${e?.count??0} changed`,"workspacesOverview.mcpFailed":e=>`${e?.count??0} failed`,"workspacesOverview.newTask":"New task","workspacesOverview.remove":"Remove workspace","workspacesOverview.back":"Back","splitView.title":"Split View","splitView.count":e=>`${e?.count??0} panes`,"splitView.addPane":"Add session","splitView.closePane":"Close pane","splitView.maximizePane":"Maximize pane","splitView.restorePane":"Restore pane","splitView.morePaneActions":"More pane actions","splitView.defaultActionLabel":"Action","splitView.paneError":"This session pane hit an error","splitView.paneConnectionError":"Connection lost","splitView.outerApprovalPending":"Your main session is waiting for approval.","splitView.goToApproval":"Go to it","splitView.pendingCount":e=>`${e?.count??0} awaiting input`,"splitView.nextPending":"Go to the next session awaiting input","splitView.empty":"No sessions in the split. Add one to get started.","splitView.composerPlaceholder":"Message this session…","settings.title":"Settings","capacityChoice.primary":"Primary","settings.loading":"Loading settings...","settings.empty":"No settings available.","settings.footer":"↑↓ Navigate Enter Toggle Tab Scope r Reload ESC Close","settings.footer.edit":"Enter Save ESC Cancel","settings.footer.theme":"↑↓ Navigate Enter Select ESC Back","settings.scope.user":"User","settings.scope.workspace":"Workspace","settings.value.on":"ON","settings.value.off":"OFF","settings.action.edit":"Edit","settings.action.select":"Select","settings.action.save":"Save","settings.modifiedIn":e=>`(Modified in ${e?.scope??""})`,"settings.alsoModifiedIn":e=>`(Also modified in ${e?.scope??""})`,"settings.invalidNumber":"Invalid number","settings.requiresRestart":"This change requires a restart to take effect.","settings.localControl.title":"Local Control","settings.localControl.description":"Continue this O1-Code session from a phone on the same trusted network.","settings.localControl.on":"On","settings.localControl.off":"Off","settings.localControl.network":"Local network","settings.localControl.selectNetwork":"Choose a network","settings.localControl.qr":"Local Control QR code","settings.localControl.enable":"Turn on Local Control","settings.localControl.disable":"Disconnect phone access","settings.localControl.encrypted":"Encrypted","settings.localControl.unencrypted":"Unencrypted — trusted networks only; re-enable after network changes","settings.localControl.awake":"This Mac will stay awake","settings.localControl.maySleep":"This Mac may sleep","settings.localControl.urlRedacted":"The pairing URL is not shown here because this daemon has no bearer token. It was printed to the terminal where the daemon is running — pair from there.","localControl.open":"Mobile access","localControl.expires":e=>`One-time QR · Expires in ${e?.seconds??""}s · Refreshes automatically`,"localControl.expired":"QR code expired. Getting a fresh code…","localControl.retry":"Retry","localControl.noNetwork":"No local network address is available. Open the Web Shell through an address your phone can reach.","localControl.securePairing":"Scan to grant access until this daemon restarts.","localControl.insecurePairing":"Scan to grant access until this daemon restarts. Traffic is unencrypted; use a trusted network.","localControl.securePairingDynamic":"Scan to grant access to this daemon. The device that scans stays signed in until the daemon restarts or that device's tab is closed.","localControl.insecurePairingDynamic":"Scan to grant access to this daemon. The device that scans stays signed in until the daemon restarts or that device's tab is closed. Traffic is unencrypted; use a trusted network.","localControl.disabledHint":"Local Control is off. Turn it on in Settings to pair a phone on the same network.","localControl.openSettings":"Open Settings","settings.models.title":"Models","settings.models.context":e=>`Context: ${e?.tokens??""} tokens`,"settings.models.credentialEnv":"Key environment variable","settings.models.add":"+ Add Model","settings.models.setCurrent":"Set current","settings.models.current":"Current","settings.models.runtime":"Runtime","settings.models.savedConfiguration":"Saved configuration","settings.models.ambiguousWindow":"Multiple configurations share this route. Its context window cannot be edited here.","settings.models.delete":"Delete","settings.models.confirmDelete":"Confirm","settings.models.cancel":"Cancel","settings.models.empty":"No configured models yet.","settings.models.loading":"Loading models…","settings.models.deleteFailed":"Failed to delete model","settings.models.runtimeSyncFailed":"The change was saved, but running sessions could not be refreshed. Restart o1-code serve before using the updated model list.","settings.models.fallbacks.title":"Model Fallbacks","settings.models.fallbacks.hint":e=>`Select up to ${e?.max??3}; tried in order when the main model is at capacity.`,"settings.models.fallbacks.confirm":"Confirm","settings.models.fallbacks.empty":"No selectable models.","settings.models.fallbacks.saveFailed":"Failed to save fallback models","settings.models.fallbacks.limitReached":e=>`Maximum of ${e?.max??3} fallback models selected; deselect one to choose another.`,"settings.corrupted":e=>`Settings file was corrupted${e?.recovered==="true"?" (recovered from backup)":""}`,"browserNotifications.label":"Browser task notifications","browserNotifications.description":"Notify when the current chat or a split-view chat finishes or fails while this page is in the background or unfocused. Shows the session title, prompt and reply excerpts. Saved for this browser site only; the page must remain open.","browserNotifications.prompt":e=>`Prompt: ${e?.text??""}`,"browserNotifications.reply":e=>`Reply: ${e?.text??""}`,"browserNotifications.completed":"This turn has completed.","browserNotifications.failed":"This turn failed. Return to view the details.","browserNotifications.ended":"This turn has ended. Return to check the result.","browserNotifications.allow":"Allow notifications","browserNotifications.enabled":"Enabled.","browserNotifications.disabled":"Disabled.","browserNotifications.waiting":"Waiting for browser permission.","browserNotifications.denied":"Notifications are blocked. Allow them in your browser site settings.","browserNotifications.unavailable":"Notifications are unavailable in this browser or page context.","browserNotifications.requesting":"Waiting for your permission…","browserNotifications.error":"Unable to enable or show notifications. Check your browser and system settings.","browserNotifications.temporary":"This setting is saved for the current page only.","settings.label.ui.chatWidth":"Chat width","settings.description.ui.chatWidth":"Frontend-only chat content width. Stored in this browser.","settings.label.ui.enableFollowupSuggestions":"Enable Follow-up Suggestions","settings.description.ui.enableFollowupSuggestions":"Show context-aware follow-up suggestions after a task completes. Press Tab or Right Arrow to insert, Enter to accept and submit.","settings.option.ui.chatWidth.1000":"Regular","settings.option.ui.chatWidth.wide":"Ultra wide","settings.label.visionModel":"Vision Model","settings.description.visionModel":"Image-capable model used as the vision bridge. Leave empty to auto-select.","welcome.changeModel":"(/model to change)","welcome.defaultModel":"unknown model","welcome.modeHint":"Shift+Tab or /approval-mode","welcome.prompt":"What would you like to do?","welcome.titlePrefix":"Welcome to","welcome.tipLabel":"Tips:"},LNe={...$V,"capacityChoice.persistenceUnconfirmed":"无法确认最后一轮被中断内容是否已保存。","capacityChoice.title":"选择要停止的工作区","capacityChoice.description":"当前没有可用的 ACP 容量。选择一个工作区停止其会话,或取消并继续现有工作。","capacityChoice.warning":"停止将中断列出的所有会话及其工具。文件、工作区注册和已保存历史会保留,未保存工作可能丢失。确认后关闭此弹窗不会撤销停止。","capacityChoice.outdated":"草稿、会话或 daemon 已变化,请取消后重新执行原操作。","capacityChoice.inProgress":"所选停止仍在处理,请刷新状态后再继续。","capacityChoice.failedUnreleased":"停止失败。确认旧进程全部退出前,此工作区暂不可用,容量仍被占用。可刷新查看清理结果。","capacityChoice.failedUnknownCleanup":"停止失败,清理结果尚未确认。请刷新状态后再继续。","capacityChoice.workspaces":"要停止的工作区","capacityChoice.requester":"此工作区属于正在尝试继续的原操作。","capacityChoice.running":"运行中","capacityChoice.waiting":"等待你的回复","capacityChoice.background":"后台工作运行中","capacityChoice.backgroundUnknown":"后台工作状态未知","capacityChoice.none":"当前没有可在此停止的工作区。请查看上述原因,先结束独立工作,或取消。","capacityChoice.refresh":"刷新状态","capacityChoice.continue":"继续原操作","capacityChoice.confirm":"停止这些会话并继续","capacityChoice.stopped":"此工作区已停止,以释放 ACP 容量。需要时可主动恢复此会话。","capacityChoice.resume":"恢复会话","capacityChoice.blocked.stopping":"正在停止","capacityChoice.blocked.not_live":"没有运行中的 ACP","capacityChoice.blocked.release_unavailable":"无法确认自有进程释放","capacityChoice.blocked.session_start_pending":"正在启动或恢复会话","capacityChoice.blocked.workspace_control_pending":"工作区管理或 MCP 操作进行中","capacityChoice.blocked.session_closing":"会话正在关闭或重置","capacityChoice.blocked.runtime_unavailable":"工作区不可用或不可信","capacityChoice.blocked.special_runtime":"特殊用途工作区","capacityChoice.blocked.unsupported":"不支持停止此运行时","capacityChoice.blocked.activity_unknown":"无法确认活动状态","capacityChoice.blocked.pendingSessionStarts":"等待会话启动","capacityChoice.blocked.acpConnections":"有 ACP 客户端连接","capacityChoice.blocked.memoryTasks":"记忆任务运行中","capacityChoice.blocked.voiceSessions":"语音会话活跃","capacityChoice.blocked.management_pending":"工作区管理操作待完成","capacityChoice.blocked.scheduler_pending":"正在恢复定时任务会话","capacityChoice.blocked.enabled_scheduled_tasks":"请先禁用已启用的定时任务","capacityChoice.blocked.scheduled_tasks_unknown":"无法读取定时任务","capacityChoice.capacity":e=>`ACP 容量:${e?.used} / ${e?.limit}`,"capacityChoice.sessions":e=>`${e?.count} 个已加载会话`,"capacityChoice.queued":e=>`${e?.count} 个排队请求`,"capacityChoice.outcome":e=>`已关闭 ${e?.closed} 个会话,剩余 ${e?.remaining} 个。`,"footnotes.note":e=>`脚注 ${e?.number??""}`,"footnotes.references":e=>`查看 ${e?.count??""} 条引用`,"footnotes.preview":"引用预览","footnotes.previous":"上一条引用","footnotes.next":"下一条引用","footnotes.citations":e=>`${e?.count??0} 个引用`,"daemon.capacity.exhausted":"已达到当前服务的并发容量上限,暂时无法启动此会话。请稍后重试,或取消本次操作。","git.currentBranch":e=>`当前 Git 分支:${e?.branch??""}`,"git.detached":"游离 HEAD","git.clean":"工作区干净","git.operation.merge":"合并中","git.operation.rebase":"变基中","git.operation.cherry-pick":"拣选中","git.operation.revert":"回退中","git.operation.bisect":"二分中","git.conflicted":e=>`${e?.count??0} 个冲突`,"git.staged":e=>`${e?.count??0} 已暂存`,"git.unstaged":e=>`${e?.count??0} 已修改`,"git.untracked":e=>`${e?.count??0} 未跟踪`,"git.ahead":e=>`领先 ${e?.count??0}`,"git.behind":e=>`落后 ${e?.count??0}`,"git.stash":e=>`${e?.count??0} 个 stash`,"branchPicker.label":"Git","branchPicker.search":"搜索分支和操作","branchPicker.loading":"加载分支中…","branchPicker.noBranches":"无分支","branchPicker.noTags":"无标签","branchPicker.action.pull":"更新项目","branchPicker.action.push":"推送","branchPicker.action.commit":"提交","branchPicker.action.newBranch":"新建分支…","branchPicker.action.checkoutRef":"检出标签或修订…","branchPicker.action.viewChanges":"查看变更","branchPicker.action.history":"提交历史","branchPicker.newBranchPlaceholder":"分支名称","branchPicker.invalidBranchName":"无效的分支名称 — 避免空格、~、^、:、? * 以及以 - 开头","branchPicker.checkoutRefPlaceholder":"标签名或提交 SHA","branchPicker.section.recent":"最近","branchPicker.section.local":"本地","branchPicker.section.remote":"远程","branchPicker.section.tags":"标签","branchPicker.checkedOut":e=>`已检出 ${e?.branch??""}`,"branchPicker.createdBranch":e=>`已创建分支 ${e?.branch??""}`,"branchPicker.pushSuccess":"推送成功","branchPicker.pullSuccess":"更新成功","branchPicker.pullBlocked":"存在未提交的修改,无法更新","branchPicker.pullStash":"Stash 修改并更新","branchPicker.pullDiscard":"放弃修改并更新…","branchPicker.pullDiscardConfirm":"将放弃所有未提交的修改(包括未跟踪文件),此操作无法撤销。","branchPicker.pullDiscardGo":"放弃并更新","branchPicker.pullStashConflict":e=>`更新成功,但恢复 Stash 中的修改失败。修改仍保留在 Stash 条目 ${String(e?.sha??"").slice(0,12)||"(见 git stash list)"} 中 —— 请先解决冲突标记,再手动恢复。`,"branchPicker.cancel":"取消","branchPicker.hint.upToDate":"已是最新","branchPicker.hint.noUpstream":"无上游分支","branchPicker.hint.upstreamGone":"上游分支已不存在","branchPicker.hint.behindDirty":e=>`↓${e?.count??0} · 有未提交更改`,"branchPicker.hint.setsUpstream":"推送时设置上游","branchPicker.hint.createsPushBranch":e=>`将创建 ${e?.target??""}`,"branchPicker.hint.aheadBehind":e=>`↑${e?.ahead??0} ↓${e?.behind??0} · 已分叉`,"branchPicker.hint.nothingToPush":"无待推送","branchPicker.hint.noChanges":"无更改","branchPicker.hint.changes":e=>`${e?.count??0} 处更改`,"branchPicker.hint.changesUntracked":e=>`${e?.count??0} 处更改(${e?.untracked??0} 未跟踪)`,"branchPicker.action.manageRemotes":"管理远程仓库…","branchPicker.remotes.title":"远程仓库","branchPicker.remotes.back":"返回分支列表","branchPicker.remotes.loading":"加载远程仓库中…","branchPicker.remotes.empty":"未配置远程仓库","branchPicker.remotes.noMatches":"没有匹配的远程仓库","branchPicker.remotes.namePlaceholder":"名称","branchPicker.remotes.urlPlaceholder":"URL","branchPicker.remotes.add":"添加","branchPicker.remotes.remove":e=>`移除 ${e?.name??""}`,"branchPicker.remotes.removeConfirm":"确认","branchPicker.remotes.removeConfirmFor":e=>`确认移除 ${e?.name??""}${e?.extras?`(${e.extras})`:""}`,"branchPicker.remotes.invisibleName":"(不可见名称)","branchPicker.remotes.hiddenChars":"(隐藏字符)","branchPicker.remotes.lookalikeName":"(易混名称)","branchPicker.remotes.searchPlaceholder":"搜索远程仓库","branchPicker.remotes.urlTooltipFetch":e=>`拉取: ${e?.url??""}`,"branchPicker.remotes.urlTooltipPush":e=>`推送: ${e?.url??""}`,"branchPicker.remotes.promisor":"部分克隆","branchPicker.remotes.partialClone":e=>`部分克隆(${e?.filter})`,"branchPicker.remotes.customRefspec":"自定义 refspec","branchPicker.remotes.extraUrls":e=>`+${e?.count??0} 个 URL`,"branchPicker.remotes.otherSettings":e=>`其他 ${e?.count??0} 项设置`,"branchPicker.remotes.added":e=>`已添加远程仓库 ${e?.name??""}`,"branchPicker.remotes.removed":e=>`已移除远程仓库 ${e?.name??""}`,"branchPicker.remotes.invalidInput":"请输入远程仓库名称和 URL(不能以 - 开头)","gitCommit.title":"提交","gitCommit.messagePlaceholder":"提交信息(⌘/Ctrl+Enter 提交)","gitCommit.generating":"正在生成提交信息…","gitCommit.genFailed":"自动生成失败 — 请手动输入提交信息","gitCommit.prLogUnavailable":"无法加载所选目标分支的提交记录。","gitCommit.prPushFirst":"请先将分支推送到远程仓库,再创建合并请求。","gitCommit.commit":"提交","gitCommit.commitAndPush":"提交并推送","gitCommit.createPr":"创建合并请求","gitCommit.prTitlePlaceholder":"合并请求标题","gitCommit.prBodyPlaceholder":"描述(可选)","gitCommit.prEdit":"编辑","gitCommit.prPreview":"预览","gitCommit.prSubmit":"创建","gitCommit.prCreated":e=>`合并请求 #${e?.number??""} 已创建`,"gitCommit.commitSuccess":e=>`已提交 ${e?.sha??""}`,"gitCommit.commitPushSuccess":e=>`已提交并推送 ${e?.sha??""}`,"gitCommit.commitSuccessPushFailed":e=>`已提交 ${e?.sha??""} — 推送失败:${e?.error??"未知错误"}`,"branchSelect.baseBranch":"目标分支","branchSelect.search":"搜索分支…","branchSelect.loading":"加载中…","branchSelect.noMatches":"无匹配","branchSelect.error":"分支加载失败","branchSelect.retry":"重试","branchSelect.local":"本地","gitDiff.title":"变更","gitDiff.summary":e=>`${e?.count??0} 个文件 · +${e?.added??0} −${e?.removed??0}`,"gitDiff.loading":"加载变更中…","gitDiff.empty":"工作区无变更","gitDiff.unavailable":"此工作区无 Git","gitDiff.error":"加载变更失败","gitDiff.binary":"二进制","gitDiff.untracked":"未跟踪","gitDiff.deleted":"已删除","gitDiff.noDiff":"无差异可显示","gitDiff.fileError":"加载此差异失败","gitDiff.truncated":"差异已截断——文件过大,未完整显示","gitDiff.hidden":e=>`还有 ${e?.count??0} 个文件未显示`,"gitDiff.expand":e=>`显示 ${e?.path??"文件"} 的变更`,"gitDiff.collapse":e=>`隐藏 ${e?.path??"文件"} 的变更`,"gitMode.title":"Git 模式","gitMode.current":"当前分支","gitMode.currentDesc":e=>`直接在 ${e?.branch??"main"} 上开发`,"gitMode.branch":"新建分支","gitMode.branchDesc":e=>`从 ${e?.branch??"main"} 创建新分支`,"gitMode.branchPlaceholder":"feat/my-feature","gitMode.branchLabel":"分支名","gitMode.branchConflictWarning":"同一 workspace 同时只能有一个分支会话","gitMode.branchHint":"在工作目录中切换到新分支","gitMode.branchInvalidName":"分支名不合法","gitMode.worktree":"Worktree 隔离","gitMode.worktreeDesc":"独立副本 · 可并行","gitMode.confirmBranch":"创建分支","gitMode.confirmWorktree":"创建 Worktree","gitMode.resetToCurrent":"恢复当前分支","gitLog.title":"提交历史","gitLog.subtitle":e=>`${e?.count??0} 条提交`,"gitLog.loading":"加载历史中…","gitLog.empty":"暂无提交","gitLog.unavailable":"此工作区不可用 Git","gitLog.error":"加载历史失败","gitLog.loadMore":"加载更多","gitLog.loadingMore":"加载中…","gitLog.files":e=>`${e?.count??0} 个文件 · +${e?.added??0} −${e?.removed??0}`,"gitLog.detailError":"加载提交详情失败","gitLog.hidden":e=>`还有 ${e?.count??0} 个文件未显示`,"gitLog.copySha":e=>`复制提交 ${e?.sha??""}`,"gitLog.allBranches":"全部分支","gitLog.search":"搜索提交信息、作者或哈希","gitLog.noMatches":"没有匹配的提交","githubPrs.title":"拉取请求","githubPrs.subtitle":e=>`${e?.count??0} 个开放`,"githubPrs.loading":"加载拉取请求中…","githubPrs.empty":"没有开放的拉取请求","githubPrs.unavailable":"当前工作区不是 git 仓库","githubPrs.error":"加载拉取请求失败","githubPrs.cliUnavailable":"daemon 所在主机未安装 GitHub CLI(gh)。\n请先安装并运行 `gh auth login`,然后重试。","githubPrs.reviewApproved":"已批准","githubPrs.reviewChanges":"要求修改","githubPrs.reviewRequired":"需要审查","githubPrs.checksPassing":"检查通过","githubPrs.checksFailing":"检查失败","githubPrs.checksPending":"检查进行中","githubPrs.open":e=>`在 GitHub 上打开拉取请求 #${e?.number??""}`,"workspace.paneLabel":e=>`工作区:${e?.name??""}`,"toolName.exec":"执行代码","toolName.edit":"编辑","toolName.write_file":"写入文件","toolName.read_file":"读取文件","toolName.zoom_image":"图片放大","toolName.grep":"搜索内容","toolName.grep_search":"搜索内容","toolName.glob":"查找文件","toolName.run_shell_command":"运行命令","toolName.todo_write":"任务清单","toolName.get_goal":"目标","toolName.update_goal":"更新目标","toolName.propose_goal":"提议目标","toolName.save_memory":"保存记忆","toolName.agent":"智能体","toolName.skill":"查看技能","toolName.enter_plan_mode":"进入计划模式","toolName.exit_plan_mode":"退出计划模式","toolName.web_fetch":"网络搜索","toolName.webfetch":"网络搜索","toolName.fetch":"网络搜索","toolName.web_search":"网络搜索","toolName.list_directory":"列出文件","toolName.lsp":"LSP","toolName.ask_user_question":"询问用户","toolName.cron_create":"创建定时任务","toolName.cron_list":"定时任务列表","toolName.cron_delete":"删除定时任务","toolName.task_create":"创建任务","toolName.task_update":"更新任务","toolName.task_list":"任务列表","toolName.task_stop":"停止任务","toolName.team_create":"创建团队","toolName.team_delete":"删除团队","toolName.send_message":"发送消息","toolName.request_shutdown":"请求下线","toolName.list_agents":"列出 Agent","toolName.structured_output":"结构化输出","toolName.monitor":"监控","toolName.notebook_edit":"编辑 Notebook","toolName.tool_call":"工具调用","toolName.tool_search":"工具搜索","toolName.enter_worktree":"进入 Worktree","toolName.exit_worktree":"退出 Worktree","toolName.workflow":"工作流","toolName.team_plan_approval":"团队计划审批","toolName.loop_wakeup":"循环唤醒","toolName.create_sub_session":"创建子会话","toolName.read_mcp_resource":"读取 MCP 资源","toolName.artifact":"制品","toolName.record_artifact":"记录制品","toolName.record_source":"记录来源","toolName.report_findings":"上报评审发现","toolName.image_gen":"生成图片","toolName.omni_downsample_image":"降采样图像","toolName.omni_downscale_video":"降采样视频","toolName.omni_downsample_audio":"降采样音频","toolName.omni_extract_keyframes":"提取关键帧","toolName.omni_extract_audio":"提取音轨","toolName.omni_clip_video":"剪辑视频","toolName.omni_clip_image":"裁剪图像","toolName.omni_clip_audio":"剪辑音频","toolName.omni_caption_image":"描述图像","toolName.omni_caption_audio":"描述音频","toolName.omni_ocr_image":"识别图像文字","toolName.omni_understand_video_segments":"分段理解视频","toolName.omni_convert_image":"转换图像","toolName.omni_transcribe_audio":"转写音频","toolName.omni_recall_media_memory":"召回媒体记忆","toolName.display_image":"显示图片","toolName.bash":"运行命令","toolName.shell":"Shell 命令","toolName.read":"读取文件","toolName.readfile":"读取文件","toolName.write":"写入文件","toolName.writefile":"写入文件","toolName.search":"搜索内容","toolName.todowrite":"任务清单","toolName.savememory":"保存记忆","toolName.askuserquestion":"询问用户","toolName.toolsearch":"工具搜索","about.auth":"认证","about.baseUrl":"Base URL","about.fastModel":"快速模型","about.memoryUsage":"内存使用","about.model":"模型","about.noProxy":"no proxy","about.noSandbox":"no sandbox","about.platform":"操作系统","about.proxy":"代理","about.runtime":"运行环境","about.sandbox":"沙箱","about.sessionId":"会话 ID","about.title":"状态","agent.back":"返回","agent.builtInBadge":"(内置)","agent.action.delete":"删除智能体","agent.action.edit":"编辑智能体","agent.action.view":"查看智能体","agent.chooseAction":e=>`选择操作:${e?.name??""}`,"agent.chooseActionTitle":"选择操作","agent.colorLabel":"颜色:","agent.colorUpdated":e=>`已更新 ${e?.name??""} 的颜色`,"agent.create":"创建新的智能体","agent.create.button":"创建","agent.create.confirm":"确认并保存","agent.create.desc":"创建新的智能体","agent.create.descPlaceholder":"这个智能体做什么?","agent.create.describeAgent":"描述需求","agent.create.description":"描述","agent.create.editAgain":"编辑","agent.create.enterDescription":"输入描述","agent.create.enterName":"输入子智能体名称","agent.create.enterPrompt":"输入系统提示词","agent.create.generateFailed":e=>`生成子智能体失败:${e?.error??"未知错误"}`,"agent.create.generate":"生成","agent.create.generatedDescription":"描述","agent.create.generatedSystemPrompt":"系统提示词","agent.create.generatingConfig":"正在生成子智能体配置...","agent.create.generatingPrompt":"生成中...","agent.create.loading":"创建中...","agent.create.location":"选择位置","agent.create.method":"选择生成方式","agent.create.method.manual":"手动创建","agent.create.method.o1code":"使用 O1-Code 生成","agent.create.method.o1code.recommended":"使用 O1-Code 生成(推荐)","agent.create.method.o1code.desc":"LLM 生成描述和系统提示词","agent.create.name":"名称","agent.create.namePlaceholder":"my-agent","agent.create.nameHelp":"输入此子智能体清晰且唯一的名称。","agent.create.project":"项目","agent.create.project.cli":"工作区","agent.create.project.desc":"创建项目级智能体","agent.create.prompt":"系统提示词","agent.create.promptPlaceholder":"你是一个专门的智能体...","agent.create.promptPlaceholder.cli":"例如:你是一名专业的代码审查员...","agent.create.promptHelp":"编写定义此子智能体行为的系统提示词。为了获得最佳效果,请全面描述。","agent.create.preview":"预览","agent.create.o1codeHint":"说明职责、使用场景和重要约束,然后分别生成各项内容。","agent.create.o1codePlaceholder":"> 例如:专业的代码审查员,根据最佳实践审查代码...","agent.create.regenerate":"重新生成草稿","agent.create.required":"名称、描述和系统提示词均为必填项。","agent.create.tools":"允许的工具","agent.create.toolsHelp":"使用逗号或换行分隔 canonical 工具名称;MCP 工具使用 mcp__server__tool,留空表示继承全部工具。","agent.create.disallowedTools":"禁用的工具","agent.create.model":"模型","agent.create.approvalMode":"审批模式","agent.create.maxTurns":"最大执行轮次","agent.create.maxTurnsHelp":"限制智能体完成单次任务时的模型调用轮数,达到上限后将停止执行。留空表示不设置智能体层级的限制。","agent.create.maxTurnsInvalid":"最大执行轮次必须是正整数。","agent.create.mcpServers":"MCP Server","agent.create.mcpServers.empty":"暂无可用的 MCP Server。","agent.create.mcpServers.select":"选择 MCP Server","agent.create.mcpServers.noneSelected":"尚未选择 MCP Server。","agent.create.modelGenerate":"模型生成","agent.create.modelGenerate.description":"描述你的需求,然后分别生成并检查描述和系统提示词。","agent.create.color":"颜色","agent.create.jsonObjectHelp":"请输入 JSON 对象,或留空。","agent.create.save":"保存智能体","agent.create.scope":"类别","agent.create.manualDescHelp":"描述此子智能体应该在何时以及如何使用。","agent.create.manualDescPlaceholder":"例如:根据最佳实践和潜在 bug 审查代码。","agent.create.tools.builtin":"内置工具","agent.create.tools.empty":"暂无可用工具。","agent.create.tools.mcp":"MCP 工具","agent.create.tools.type":"工具类型","agent.create.tools.selectServer":"选择 MCP Server","agent.create.tools.selectTool":"选择工具","agent.create.tools.noneSelected":"尚未选择工具。","agent.create.tools.initializing":"正在初始化工具目录...","agent.create.tools.preheatFailed":"ACP 预热未完成。","agent.create.tools.loadFailed":"内置工具加载失败。","agent.create.removeSelection":e=>`移除 ${e?.name??""}`,"agent.create.toolsSelectHelp":"选择此子智能体可以使用的工具;全部不选表示继承所有工具。","agent.create.toolsSelection":"选择工具","agent.create.tools.all":"所有工具","agent.create.tools.allDefault":"所有工具(默认)","agent.create.tools.allInfo":"已选择所有工具,包括 MCP 工具","agent.create.tools.allInfoFallback":"已选择所有工具,包括 MCP 工具","agent.create.tools.editLabel":"• 编辑工具:","agent.create.tools.executionLabel":"• 执行工具:","agent.create.tools.none":"(无)","agent.create.tools.readEdit":"读取和编辑工具","agent.create.tools.readEditExecute":"读取、编辑和执行工具","agent.create.tools.readOnlyLabel":"• 只读工具:","agent.create.tools.readOnly":"只读工具","agent.create.tools.selected":"已选择的工具:","agent.create.user":"用户","agent.create.user.cli":"全局","agent.create.user.desc":"创建用户级智能体","agent.create.useGenerated":"确认使用","agent.approval.inherit":"默认","agent.approval.default":"默认审批","agent.approval.plan":"仅规划","agent.approval.auto-edit":"自动批准编辑","agent.approval.yolo":"自动批准所有操作","agent.approval.bubble":"气泡审批","agent.approval.desc.inherit":"使用智能体默认的审批规则。","agent.approval.desc.bubble":"将工具审批请求转交给父会话处理。","agent.createFirstHint":"使用 '/agents create' 创建第一个智能体。","agent.created":e=>`已创建 ${e?.name??""}`,"agent.edit.save":"保存修改","agent.updated":e=>`已更新 ${e?.name??""}`,"agent.turnsBadge":e=>`${e?.count??0} 轮`,"agent.delete":"删除","agent.delete.confirm":e=>`确定要删除 "${e?.name??""}" 吗?`,"agent.delete.loading":"删除中...","agent.delete.no":"否","agent.delete.title":e=>`删除 ${e?.name??""}`,"agent.delete.yes":"是,删除","agent.deleted":e=>`已删除 ${e?.name??""}`,"agent.edit":"编辑","agent.edit.color":"编辑颜色","agent.edit.tools":"编辑工具","agent.editColorTitle":e=>`编辑颜色:${e?.name??""}`,"agent.editTitle":e=>`编辑 ${e?.name??""}`,"agent.empty":"未找到智能体。","agent.noMatches":"未找到匹配的智能体。","agent.footer.back":"Esc 返回","agent.footer.cliBack":"Enter 选择 · ↑↓ 导航 · Esc 返回","agent.footer.cliSelect":"Enter 选择 · ↑↓ 导航 · Esc 关闭","agent.footer.close":"Esc 关闭","agent.footer.deleteConfirm":"Enter 确认,Esc 取消","agent.footer.enterNext":"按 Enter 继续,Esc 返回","agent.footer.generating":"Esc 取消","agent.footer.createLocation":"按 Enter 继续,↑↓ 导航,Esc 取消","agent.footer.createContinue":"按 Enter 继续,↑↓ 导航,Esc 返回","agent.footer.final":"按 Enter 保存,e 保存并编辑,Esc 返回","agent.footer.nav":"↑↓ 导航 · Enter 选择 · Esc 返回","agent.footer.navBack":"↑↓ 导航 · Enter 选择 · Esc 返回","agent.footer.navSelect":"↑↓ 导航 · Enter 选择 · Esc 关闭","agent.footer.viewerBack":"Esc 返回","agent.filePathLabel":"文件路径:","agent.label":"智能体","agent.location":"位置","agent.level.builtin":"内置","agent.level.extension":"扩展","agent.level.project":"项目","agent.level.user":"用户","agent.level.filter":"按智能体级别筛选","agent.manage":"管理","agent.manage.desc":"管理已有智能体","agent.modelLabel":"模型:","agent.overriddenBadge":"(已被项目级智能体覆盖)","agent.readonly":"该智能体是只读的。","agent.select":"请选择一个智能体。","agent.selectAction":"选择操作","agent.descriptionLabel":"描述:","agent.systemPromptLabel":"系统提示词:","agent.level.label":"级别","agent.step":e=>`步骤 ${e?.n??""}`,"agent.tools":"工具","agent.toolsLabel":"工具:","agent.detail.overview":"基本信息","agent.detail.tools":"工具","agent.detail.mcp":"MCP","agent.detail.hooks":"Hooks","agent.detail.systemPrompt":"系统提示词","agent.toolsUpdated":e=>`已更新 ${e?.name??""} 的工具`,"agent.usingCount":e=>`使用中:${e?.count??0} 个智能体`,"agent.view":"查看","agents.closed":"智能体面板已关闭。","agents.title":"智能体","subagent.result":"结果","subagent.tools":e=>`工具 (${e?.count??0})`,"subagent.toolsCount":e=>`${e?.count??0} 个工具`,"subagent.toggleStream":"展开/收起子智能体详情","subagent.creating":"创建中","subagent.pending":"等待中","subagent.running":"运行中","subagent.background":"后台任务","subagent.completed":"已完成","subagent.failed":"失败","subagent.cancelled":"已取消","subagent.paused":"已暂停","subagent.detailsLoading":"正在加载子智能体详情…","subagent.detailsLoadFailed":"子智能体详情加载失败。","agentType.general-purpose":"通用","agentType.explore":"探索","agentType.statusline-setup":"状态栏设置","agentType.review-agent":"代码评审","agentType.test-engineer":"测试工程师","agentType.fork":"分支","timeline.parallelAgents":"并行智能体","timeline.thinking":"思考","timeline.assistantUpdate":"助手更新","timeline.toolCalls":e=>`${e?.count??0} 个工具调用`,"timeline.planUpdate":"计划更新","timeline.statusUpdate":"状态更新","timeline.userTurn":"用户轮次","timeline.planDetail":"计划更新","timeline.parallelAgentsDetail":e=>`${e?.count??0} 个并行智能体`,"timeline.noActivity":"无活动","timeline.sessionTimeline":"会话时间线","timeline.turnPrefix":e=>`第 ${e?.index??0} 轮`,"timeline.currentTurn":"当前轮次","timeline.kind.thought":"思考","timeline.kind.commentary":"助手更新","timeline.kind.tool":"工具调用","timeline.kind.agents":"并行智能体","timeline.kind.plan":"计划更新","timeline.kind.status":"状态更新","timeline.kind.none":"轮次","common.copy":"复制","common.download":"下载","common.downloading":"正在下载…","common.downloadFailed":e=>`下载失败:${e?.message??""}`,"common.open":"打开","common.openFailed":e=>`无法打开链接:${e?.message??""}`,"artifact.openLink":"打开链接","artifact.longDocument":"文件过大,默认展示源码。","artifact.renderFullPreview":"完整排版预览","artifact.registrationFailed":e=>`无法添加导出文件:${e?.message??""}`,"artifact.previewFailed":e=>`无法加载预览:${e?.message??""}`,"artifact.showSource":"显示源码","common.na":"不适用","common.server":"服务器","common.agent":"智能体","common.auto":"自动","common.runtime":"运行时","common.failedToLoad":"加载失败","auth.notSet":"(未设置)","auth.apiKeyPlaceholder":"sk-...","auth.modelsPlaceholder":"模型ID-1, 模型ID-2","model.usingModel":e=>`正在使用${e?.isRuntime?"运行时":""}模型:${e?.modelId??""}`,"mermaid.label":"mermaid","mermaid.errorLabel":"mermaid(错误)","user.uploadedImage":e=>`用户上传的图片 ${e?.index??1}`,"voice.noSpeech":"未检测到语音。","voice.stopDictation":"停止语音输入","voice.transcribing":"正在转录…","voice.starting":"正在启动…","voice.errorRetry":e=>`语音错误 — 点击重试${e?.message?`:${e.message}`:""}`,"voice.noSpeechRetry":"未检测到语音 — 点击重试","voice.startDictation":"开始语音输入","voice.error":"语音错误","resume.failedToLoad":"加载会话失败","toast.dismiss":"关闭通知","toast.dismissShort":"关闭","insight.ready":"Insight 报告已生成!","request.cancelled":"请求已取消。","visionBridge.model":"视觉模型","visionBridge.skipped":e=>`视觉桥接已取消。${e?.egressOccurred===1?`你的图片及提示词/上下文已发送至 ${e?.target??""}。`:""}`,"visionBridge.failed":e=>e?.egressOccurred===1?`视觉桥接(${e?.modelName??""})失败:视觉模型请求失败。你的图片及提示词/上下文已发送至 ${e?.target??""}。图片未被解析。`:`视觉桥接(${e?.target??""})失败:视觉桥接无法运行。图片未被解析。`,"visionBridge.ok":e=>`已通过 ${e?.target??""} 将 ${e?.convertedCount??0} 张图片转换为文本${Number(e?.omittedCount??0)>0?`(已忽略 ${e?.omittedCount??0} 张图片)`:""}。${e?.egressOccurred===1?"你的图片及提示词/上下文已发送至该模型。":""}`,"approval.goal.title":"确认会话目标","approval.goal.overview":"目标概览","approval.goal.full":"完整内容","approval.goal.outcome":"目标","approval.goal.doneWhen":"完成条件","approval.goal.mustNot":"执行边界","approval.goal.budget":"预算","approval.goal.onBlock":"遇到阻塞时","approval.goal.context":"上下文","approval.goal.confirm":"设置并继续","approval.goal.reject":"暂不设置","approval.goal.hint":"设置后将继续执行,并在每轮结束时检查目标进展;遇到阻塞会说明原因。","approval.goal.pending":"正在提交…","approval.goal.failed":"提交失败,请重试。","approval.execQuestion":e=>`允许执行:'${e?.tool??""}'?`,"approval.changeQuestion":"是否继续?","approval.launchAgentQuestion":"启动这个 agent?","approval.explain":"解释","approval.explanation":"命令解释","approval.explaining":"正在解释…","approval.explanationThinking":"思考中…","approval.explanationFailed":"解释失败","approval.reExplain":"重新解释","approval.option.allowOnce":"是,允许一次","approval.option.allowOnceAndSwitchToDefault":"允许一次并切换到默认模式","approval.option.restorePrevious":"是,恢复之前的模式","approval.option.rejectOnce":"拒绝","approval.option.allowAllEdits":"允许所有编辑","approval.option.allowAlwaysProject":"项目内始终允许","approval.option.allowAlwaysUser":"对此用户始终允许","approval.option.allowAlwaysServer":"对此服务始终允许","approval.option.allowAlwaysTool":"对此工具始终允许","assistant.branch":"分叉","assistant.copy":"复制","assistant.dissatisfied":"不满意","assistant.satisfied":"满意","at.category.extensions":"扩展","at.category.extensions.description":"引用已启用扩展","at.category.files":"文件","at.category.files.description":"引用工作区文件","at.files.upload":"上传文件","at.files.upload.description":"上传文件到此文件夹","composer.upload.pending":"等待中","composer.upload.uploading":"上传中","composer.upload.done":"已上传","composer.upload.error":"失败","composer.upload.error.noDaemon":"未连接 Daemon","composer.upload.error.tooLarge":e=>`文件超过 ${e?.limit??""} 上传上限`,"composer.upload.error.tooManyFiles":e=>`另有 ${e?.count??0} 个文件未添加(单批数量上限)`,"composer.upload.cancel":"取消上传","composer.upload.dismiss":"关闭","composer.upload.renamed":"已保存为","composer.upload.drop":"拖放文件","composer.dropChoice.title":e=>`添加拖入的 ${e?.count??0} 个文件`,"composer.dropChoice.description":"可作为当前消息的附件供 Agent 读取,或上传到工作区并插入 @ 引用。","composer.dropChoice.cancel":"取消","composer.dropChoice.upload":"上传到工作区","composer.dropChoice.reference":"添加为附件","composer.dropChoice.moreFiles":e=>`另有 ${e?.count??0} 个文件`,"composerAdd.trigger":"添加到消息","composerMobile.expand":"展开编辑","composerMobile.hideKeyboard":"收起键盘","composerMobile.done":"完成","composerMobile.photos":"照片","composerMobile.camera":"拍照","composerMobile.files":"添加文件附件","composerMobile.commands":"全部命令","composerMobile.searchCommands":"搜索命令","composerMobile.history":"输入历史","composerMobile.previousInput":"上一条输入","composerMobile.nextInput":"下一条输入","composerMobile.stop":"停止","composerMobile.attachments":e=>`已添加附件/图片:${e?.count??0}`,"composerAdd.emptyState":"此处没有可用的添加操作","composerAdd.noResults":"没有结果","composerAdd.loadError":"加载失败","composerAdd.unavailable":"不可用","composerAdd.file.label":"添加文件","composerAdd.file.attachDisabled":"当前无法添加消息附件","composerAdd.file.uploadDisabled":"当前工作区不可上传","composerAdd.referenceFile.label":"引用文件","composerAdd.referenceFile.searchPlaceholder":"搜索工作区文件","composerAdd.extensions.label":"扩展","composerAdd.extensions.empty":"没有已启用的扩展","composerAdd.mcp.label":"MCP","composerAdd.mcp.empty":"没有可用的 MCP 服务","composerAdd.skills.label":"技能","composerAdd.plan.label":"计划模式","composerAdd.plan.description":"先出计划,批准后再执行","composerAdd.plan.busy":"模式切换中","at.category.mcpResources":"MCP 资源","at.category.mcpResources.description":"引用 MCP server 资源","at.menu":"引用菜单","common.back":"返回","common.all":"全部","common.add":"添加","common.cancel":"取消","common.close":"关闭","common.fullscreen":"全屏","common.exitFullscreen":"退出全屏","common.continue":"继续","common.current":"当前","common.disabled":"已禁用","common.enabled":"已启用","common.enterSelect":"回车选择","common.invalid":"无效","common.loading":"加载中...","common.retry":"重试","session.recovery.interrupted_prompt":"上次请求在回答完成前中断。","session.recovery.interrupted_turn":"上次任务已中断,部分工具结果未保存。","session.recovery.degraded_history":"会话历史不完整,无法继续中断的任务。","session.recovery.continue":"继续执行","session.recovery.continuing":"正在继续…","session.recovery.failed":"无法继续此会话。","session.archived":"该会话已归档","session.archivedDescription":"需要先取消归档,才能打开该会话。","session.capabilitiesFailed":"无法加载 Daemon 能力。请重试后再打开该会话。","session.contextConflict":"Standalone 或 Live 会话链接不能同时指定工作区。","session.loadFailed":"会话加载失败","session.notFound":"会话不存在","session.notFoundDescription":"该 Standalone 会话已不存在。","session.resolving":"正在打开会话...","session.standaloneUnavailable":"Standalone 会话不可用","session.standaloneUpgradeRequired":"请升级 Daemon 后再打开 Standalone 会话。","session.stillCreating":"会话仍在创建中,请稍后重试。","session.recoveryPending":"创建可能已成功,但结果尚未确认。为避免重复创建,当前已暂停发送。","session.recoveryChecking":"正在检查预留的会话 ID...","session.recoveryStillCreating":"会话仍在创建中,请稍后再次检查。","session.recoveryAbsent":"预留 ID 对应的会话不存在,可以显式开始一个新会话。","session.recoveryUnknown":"创建结果仍不确定,请再次检查后再开始其他会话。","session.recoveryArchived":"恢复到的会话已归档,请先取消归档。","session.recoveryCheckFailed":"检查会话创建状态失败","session.recoveryBlocksAction":"请先处理待确认的 Standalone 会话状态,再继续操作。","session.checkStatus":"检查状态","session.retryCreation":"开始新会话","session.writerBlocked":"其他 O1-Code 进程或未解决的写入锁可能阻止该会话访问。请在其他进程中关闭它后重试;若仍失败,请先查看本地 daemon 诊断日志再进行恢复。","session.directoryRecreated":"会话记录已恢复,但之前私有目录中的文件未能恢复。","session.directoryMissing":"该会话的私有工作目录缺失,请修复后再发送消息。","session.directoryCompromised":"该私有工作目录存在安全风险,无法自动修复。请先导出会话记录,再删除该会话。","session.repair":"修复目录","session.repairing":"修复中...","session.repairFailed":"修复私有工作目录失败","session.repairSucceeded":"私有工作目录已修复。","session.unarchive":"取消归档","session.unarchiveFailed":"取消归档失败。","session.workspaceActionUnavailable":"该操作仅适用于项目会话。","common.save":"保存","common.navigate":"↑↓ 导航","common.next":"下一步","common.noResults":"无结果","common.previous":"上一步","common.expand":"展开","common.collapse":"收起","common.refresh":"刷新","common.search":"搜索","common.valid":"有效","common.clients":e=>`${e?.count??0} 个客户端`,"agent.count":e=>`${e?.count??0} 个智能体`,"askUser.submit":"提交","askUser.submitting":"提交中...","askUser.submitFailed":"提交回答失败","askUser.submitOptionUnavailable":"提交选项不可用","askUser.ignore":"忽略","askUser.multiHint":"可多选","askUser.progress":e=>`${e?.current??0}/${e?.total??0} 个问题`,"askUser.selectAnswer":"选择一个答案","askUser.typePlaceholder":"输入内容...","askUser.shortcuts.previous":"← 上一步","askUser.shortcuts.optionsSingle":"↑↓ 选择 · Enter 提交","askUser.shortcuts.optionsNext":"↑↓ 选择 · Enter 下一步","askUser.shortcuts.optionsFinal":"↑↓ 选择 · Enter 提交","askUser.shortcuts.multiSingle":"↑↓ 移动 · Space 选中/取消 · Enter 选中并提交","askUser.shortcuts.multiNext":"↑↓ 移动 · Space 选中/取消 · Enter 选中并下一步","askUser.shortcuts.multiFinal":"↑↓ 移动 · Space 选中/取消 · Enter 选中并提交","askUser.shortcuts.customTrigger":"↑↓ 选择 · Enter 编辑","askUser.shortcuts.customTriggerMulti":"↑↓ 移动 · Enter 编辑","askUser.shortcuts.inputEmpty":"输入答案 · Esc 退出编辑","askUser.shortcuts.inputSingle":"Enter 提交 · Esc 退出编辑","askUser.shortcuts.inputNext":"Enter 下一步 · Esc 退出编辑","askUser.shortcuts.inputFinal":"Enter 提交 · Esc 退出编辑","copy.failedFallback":"复制到剪贴板失败","copy.inlineLatexMissing":"最后一条 AI 输出中没有匹配的行内 LaTeX 表达式。","copy.latexMissing":"最后一条 AI 输出中没有匹配的 LaTeX 块。","copy.noOutput":"历史记录中没有可复制的输出","copy.noText":"最后一条 AI 输出没有可复制的文本。","copy.codeMissing":"最后一条 AI 输出中没有匹配的代码块。","copy.outputCopied":"已复制最后一条输出到剪贴板","copy.toClipboard":e=>`${e?.label??"内容"} 已复制到剪贴板`,"code.copy":"复制","code.copied":"已复制!","echartsChart.noData":"暂无数据","echartsChart.tableNotice":e=>{const t=Number(e?.omittedRows??0),n=Number(e?.omittedColumns??0);return t>0&&n>0?`显示 ${e?.visibleRows??0}/${e?.totalRows??0} 行,${e?.visibleColumns??0}/${e?.totalColumns??0} 列`:n>0?`显示 ${e?.visibleColumns??0}/${e?.totalColumns??0} 列`:`显示 ${e?.visibleRows??0}/${e?.totalRows??0} 行`},"echartsChart.rendering":"正在渲染图表","echartsChart.renderFailed":"图表渲染失败。","echartsChart.viewMode":"视图模式","echartsChart.showChart":"显示图表","echartsChart.showData":"显示数据","echartsChart.chart":"图表","echartsChart.data":"数据","markdownTable.blank":"(空白)","markdownTable.column":e=>`第 ${e?.index??""} 列`,"markdownTable.rows":e=>`共${e?.count??0}行`,"markdownTable.rowsFiltered":e=>`${e?.visible??0}/${e?.total??0} 行`,"markdownTable.hint":"点击表头排序,点击 ▾ 打开筛选。","markdownTable.filtersActive":e=>`${e?.count??0} 个筛选`,"markdownTable.selection.selected":"已选","markdownTable.selection.nonEmpty":"非空","markdownTable.selection.numeric":"数值","markdownTable.selection.sum":"求和","markdownTable.selection.average":"平均","markdownTable.selection.min":"最小","markdownTable.selection.max":"最大","markdownTable.copyTsv":"复制 TSV","markdownTable.copyTsvHint":"复制为 TSV,可粘贴到 Excel 等表格应用","markdownTable.copyVisible":"复制表格","markdownTable.customColumns":"自定义列","markdownTable.customColumns.tableSection":"显示在表格列的信息","markdownTable.customColumns.detailSection":"显示在折叠面板的信息","markdownTable.customColumns.toggleAllTable":"切换全部表格列","markdownTable.customColumns.toggleAllDetails":"切换全部折叠面板字段","markdownTable.customColumns.reset":"重置","markdownTable.customColumns.noDetails":"未选择折叠面板字段","markdownTable.freezeFirstColumn":"冻结首列","markdownTable.unfreezeFirstColumn":"取消冻结首列","markdownTable.densityLabel":"表格密度","markdownTable.densityCurrent":e=>`${e?.density??""}密度`,"markdownTable.density":e=>`密度:${e?.density??""}`,"markdownTable.density.standard":"标准","markdownTable.density.compact":"紧凑","markdownTable.density.comfortable":"舒适","markdownTable.expandLongText":"展开文本","markdownTable.collapseLongText":"收起文本","markdownTable.emptyValue":"(空白)","markdownTable.hideColumn":"隐藏列","markdownTable.showHiddenColumns":e=>`显示 ${e?.count??0} 个隐藏列`,"markdownTable.moveColumn":e=>`移动 ${e?.column??""}`,"markdownTable.resizeColumn":e=>`调整 ${e?.column??""} 列宽`,"markdownTable.rowDetails":"详情","markdownTable.rowDetailsAria":e=>`查看第 ${e?.index??""} 行详情`,"markdownTable.closeRowDetailsAria":e=>`收起第 ${e?.index??""} 行详情`,"markdownTable.detailsHeader":"单行详情","markdownTable.cellDialogTitle":"当前字段值","markdownTable.copyCell":"复制","markdownTable.close":"关闭","markdownTable.actions":"操作","markdownTable.sortByColumn":e=>`按 ${e?.column??""} 排序`,"markdownTable.sortByColumnAsc":e=>`${e?.column??""} 已升序排序`,"markdownTable.sortByColumnDesc":e=>`${e?.column??""} 已降序排序`,"markdownTable.filterColumn":e=>`筛选 ${e?.column??""}`,"markdownTable.empty":"此表格没有数据。","markdownTable.emptyFiltered":"没有符合筛选条件的行。","markdownTable.sort.asc":"升序排序","markdownTable.sort.desc":"降序排序","markdownTable.sort.clear":"清除排序","markdownTable.filter.searchPlaceholder":"搜索筛选值","markdownTable.filter.searchAria":e=>`搜索 ${e?.column??""}`,"markdownTable.filter.selectVisible":"全选当前结果","markdownTable.filter.optionLimit":e=>`已显示前 ${e?.count??0} 项,请搜索缩小范围`,"markdownTable.filter.noOptions":"没有匹配项","markdownTable.filter.custom":"自定义筛选","markdownTable.filter.numberAria":e=>`数字筛选 ${e?.column??""}`,"markdownTable.filter.textAria":e=>`文本筛选 ${e?.column??""}`,"markdownTable.filter.numberPlaceholder":"数值","markdownTable.filter.toPlaceholder":"到","markdownTable.filter.textPlaceholder":"输入筛选条件","markdownTable.filter.reset":"重置","markdownTable.filter.cancel":"取消","markdownTable.filter.confirm":"确认","markdownTable.filter.text.contains":"包含","markdownTable.filter.text.equals":"等于","markdownTable.filter.text.notEquals":"不等于","markdownTable.filter.text.startsWith":"开头是","markdownTable.filter.text.endsWith":"结尾是","markdownTable.filter.number.gt":"大于","markdownTable.filter.number.gte":"大于等于","markdownTable.filter.number.lt":"小于","markdownTable.filter.number.lte":"小于等于","markdownTable.filter.number.between":"区间","mermaid.rendering":"正在渲染图表...","mermaid.viewCode":"</>","mermaid.viewDiagram":"⊞","mermaid.zoomIn":"+","mermaid.zoomOut":"−","mermaid.zoomReset":"↺","contextUsage.active":"已激活","contextUsage.autocompactBuffer":"自动压缩缓冲区","contextUsage.bodyLoaded":"已加载正文","contextUsage.builtinTools":"内置工具","contextUsage.contextWindow":"上下文窗口","contextUsage.detailHint":"运行 /context detail 查看逐项明细。","contextUsage.estimatedOverhead":"基础开销估算","contextUsage.estimatedUntilProviderUsage":"Token 使用量为估算值,直到收到服务商返回的使用量。","contextUsage.free":"空闲","contextUsage.memoryFiles":"Memory 文件","contextUsage.messages":"消息","contextUsage.startupContext":"启动上下文","contextUsage.unattributed":"未归因","contextUsage.cachedPrefix":"缓存前缀","contextUsage.mcpTools":"MCP 工具","contextUsage.model":"模型","contextUsage.noSession":"当前还没有会话。请先发送第一条消息,再查看上下文使用情况。","contextUsage.usageUnavailable":"当前上下文用量暂不可用。下方仅为基础开销估算,不含对话消息。","contextUsage.overLimit":"上下文已超过限制!请使用 /compress 或 /clear 减少占用。","contextUsage.skills":"Skills","contextUsage.systemPrompt":"系统提示词","contextUsage.title":"上下文使用情况","contextUsage.tokens":"tokens","contextUsage.used":"已用","contextUsage.accessibleUsage":e=>`已用 ${e?.used} / ${e?.total} tokens`,"contextUsage.viewDetails":"查看明细","contextUsage.viewInConversation":"点击在对话中查看上下文组成。","daemon.title":"Daemon 状态","daemon.connection.title":"远程连接","daemon.connection.target":"当前目标","daemon.connection.state":"连接状态","daemon.connection.address":"Daemon 地址","daemon.connection.token":"Bearer token(可选)","daemon.connection.connect":"连接","daemon.connection.add":"添加连接","daemon.connection.saved":"已连接的计算机","daemon.connection.forget":e=>`移除 ${e?.address}`,"daemon.connection.invalid":"请输入有效的 HTTP 或 HTTPS origin。","daemon.connection.notReady":"Daemon 未接受该连接,已保存的凭据未被修改。","daemon.connection.authFailed":"Daemon 拒绝了该 token,已保存的凭据未被修改。","daemon.connection.reloadUnavailable":"浏览器存储不可用,因此新 token 无法应用到当前连接。","daemon.connection.switchUnavailable":"浏览器存储不可用,因此无法把 token 带到该 daemon。","daemon.connection.status.idle":"空闲","daemon.connection.status.connecting":"连接中","daemon.connection.status.adding":"添加中","daemon.connection.status.connected":"已连接","daemon.connection.status.error":"错误","daemon.details.loading":"正在加载诊断信息...","daemon.details.failed":"诊断信息加载失败。","daemon.refresh":"刷新","daemon.loading":"正在加载 Daemon 状态...","daemon.loadFailed":"加载 Daemon 状态失败","daemon.updatedAt":e=>`更新于 ${e?.time??""}`,"daemon.none":"无","daemon.level.ok":"正常","daemon.level.warning":"警告","daemon.level.error":"错误","daemon.level.unavailable":"不可用","daemon.issues.title":"问题","daemon.overview.title":"Daemon","daemon.overview.version":"版本","daemon.overview.pid":"PID","daemon.overview.mode":"模式","daemon.overview.uptime":"运行时长","daemon.overview.workspace":"工作区","daemon.runtime.title":"运行时","daemon.runtime.activeSessions":"活跃会话","daemon.runtime.activePrompts":"执行中的 prompt","daemon.runtime.idle":"空闲时长","daemon.runtime.noActivity":"暂无活动","daemon.runtime.pendingPermissions":"待审批权限","daemon.runtime.permissionPolicy":"权限策略","daemon.runtime.channel":"ACP 通道","daemon.runtime.channelLive":"在线","daemon.runtime.channelDown":"离线","daemon.runtime.startingUp":"运行时启动中...","daemon.runtime.startFailed":"运行时启动失败","daemon.runtime.memory":"内存 (RSS / 堆)","daemon.transport.title":"传输","daemon.transport.restSse":"REST SSE 流","daemon.transport.acpDisabled":"ACP 传输未启用","daemon.transport.acpConnections":"ACP 连接","daemon.transport.acpStreams":"ACP 流 (会话/SSE/WS)","daemon.transport.pendingRequests":"待处理客户端请求","daemon.transport.rateLimitRejected":"限流拒绝数","daemon.security.title":"安全","daemon.security.token":"Bearer 令牌","daemon.security.requireAuth":"强制鉴权","daemon.security.loopback":"回环绑定","daemon.security.allowOrigin":"允许来源","daemon.security.shell":"会话 Shell 命令","daemon.security.configured":"已配置","daemon.security.notConfigured":"未配置","daemon.limits.title":"限制","daemon.limits.unlimited":"无限制","daemon.limits.maxSessions":"最大会话数","daemon.limits.maxPendingPrompts":"每会话最大待处理 prompt 数","daemon.limits.maxConnections":"最大监听连接数","daemon.limits.eventRing":"事件环大小","daemon.limits.promptDeadline":"Prompt 截止时间","daemon.limits.sessionIdle":"会话空闲超时","daemon.capabilities.title":"能力","daemon.capabilities.titleCount":e=>`能力 (${e?.count??0})`,"daemon.full.sessions.title":"会话","daemon.full.sessions.empty":"无活跃会话","daemon.full.session.pendingPrompts":e=>`${e?.count??0} 个待处理 prompt`,"daemon.full.session.pendingPermissions":e=>`${e?.count??0} 个待审批权限`,"daemon.full.session.prompting":"执行中","daemon.full.workspace.title":"工作区诊断","daemon.full.workspace.empty":"未上报工作区诊断","daemon.full.acp.title":"ACP 连接","daemon.tab.overview":"概览","daemon.tab.usage":"用量","daemon.tab.metrics":"指标","daemon.tab.diagnostics":"诊断","daemon.charts.title":"指标图表","daemon.charts.empty":"正在采集指标…首次采样后显示图表。","daemon.charts.concurrency":"并发","daemon.charts.activePrompts":"执行中任务","daemon.charts.activeSessions":"会话","daemon.charts.requests":"请求数","daemon.charts.reqTotal":"总数","daemon.charts.reqErrors":"错误","daemon.charts.apiLatency":"API 耗时","daemon.charts.promptLatency":"Prompt 延迟","daemon.charts.queueWait":"排队等待","daemon.charts.promptDuration":"端到端","daemon.charts.eventLoop":"事件循环延迟","daemon.charts.eventLoopLag":"延迟 p99","daemon.charts.queuedPrompts":"排队中","daemon.charts.reqRejected":"限流拒绝","daemon.charts.llmLatency":"LLM 耗时","daemon.charts.apiHealth":"模型 API 健康","daemon.charts.apiErrors":"API 报错","daemon.charts.apiRetries":"重试","daemon.charts.cpu":"CPU","daemon.charts.pipe":"IPC 管道","daemon.charts.pipeIn":"接收","daemon.charts.pipeOut":"发送","daemon.charts.connections":"连接数","daemon.charts.cpuDaemon":"Daemon","daemon.charts.cpuChild":"子进程","daemon.charts.rssDaemon":"Daemon RSS","daemon.charts.rssChild":"子进程 RSS","daemon.charts.memory":"内存","daemon.charts.heap":"堆","daemon.charts.tokens":"Token 消耗","daemon.charts.tokensIn":"输入","daemon.charts.tokensOut":"输出","daemon.charts.peak":"峰值","daemon.charts.concurrency.help":"每次采样的实时负载:正在执行的 prompt、排队中(已接受未派发)、活跃会话数。排队数超过执行数即出现背压。","daemon.charts.requests.help":"每个窗口内客户端↔守护进程的 HTTP 流量,并非模型调用。总请求数、返回 4xx/5xx 的数量、被限流拒绝的数量。","daemon.charts.apiLatency.help":'客户端↔守护进程 HTTP 请求耗时(p50/p95)——反映守护进程本身快慢,而非模型。与「LLM 耗时」对比可区分是"我们慢"还是"模型慢"。',"daemon.charts.llmLatency.help":"每轮模型 API 往返耗时(守护进程→模型→守护进程),p50/p95。属模型侧延迟,区别于上面的 HTTP「API 耗时」。","daemon.charts.apiHealth.help":"服务商侧 LLM 失败。每次失败尝试 = 1 次报错,每次自动退避 = 1 次重试。瞬时 429/5xx 通常被重试吸收(报错 ≈ 重试);报错高于重试说明调用彻底失败。","daemon.charts.promptLatency.help":"每个 prompt(任务):派发前在会话队列中的等待 p95,以及端到端执行 p95。等待升高即背压信号。","daemon.charts.eventLoop.help":"守护进程事件循环延迟 p99——CPU 饱和 / 阻塞信号。延迟高说明守护进程被拖住,一切都会变慢。","daemon.charts.cpu.help":"每次采样的 CPU 占用(占全部核心百分比):守护进程,以及运行实际 LLM/工具的 ACP 子进程。子进程 0% 表示无子进程运行。","daemon.charts.memory.help":"每次采样的常驻内存:守护进程 RSS、守护进程 V8 堆、ACP 子进程 RSS。若持续增长可能是内存泄漏。","daemon.charts.pipe.help":"每个窗口内经 stdio 管道与 ACP 子进程收发的字节数。持续偏大说明守护进程与子进程间帧交互频繁。","daemon.charts.connections.help":"每次采样的客户端传输连接:REST/SSE 流、ACP WebSocket 流、ACP 连接数。","daemon.charts.tokens.help":"每个窗口内计入模型轮次的输入(prompt)与输出(completion)token——随时间的模型消耗。","daemon.usage.today":"今日","daemon.usage.period7d":"7天","daemon.usage.period30d":"30天","daemon.usage.rangeWeek":"近 7 天","daemon.usage.rangeMonth":"近 30 天","daemon.usage.rangeGroup":"统计周期","daemon.usage.tokensConsumed":"tokens 消耗","daemon.usage.sessions":"会话","daemon.usage.requests":"请求","daemon.usage.tools":"工具","daemon.usage.changes":"改动","daemon.usage.breakdownTitle":"Token 拆分","daemon.usage.inputTokens":"输入 tokens","daemon.usage.inputHint":"请求 + 缓存读取","daemon.usage.outputTokens":"输出 tokens","daemon.usage.outputHint":"响应 + 推理","daemon.usage.cacheRead":"缓存读取","daemon.usage.cacheHint":"缓存读取占比","daemon.usage.heatmapTitle":"Token 热力图","daemon.usage.heatmapSub":e=>`最近 ${e?.months??12} 个月 · 每日 token 汇总`,"daemon.usage.low":"少","daemon.usage.high":"多","daemon.usage.dowMon":"一","daemon.usage.dowWed":"三","daemon.usage.dowFri":"五","daemon.usage.empty":"暂无 token 使用记录。","daemon.usage.loading":"加载用量中…","daemon.usage.failed":"加载用量失败","daemon.usage.cellTokens":e=>`${e?.date??""} · Tokens: ${e?.tokens??"0"} · Cache: ${e?.cache??0}%`,"daemon.usage.rangeWordToday":"今日","daemon.usage.rangeWordWeek":"7 天","daemon.usage.rangeWordMonth":"30 天","daemon.usage.modelShareTitle":"模型份额","daemon.usage.modelShareSub":"token 份额 · 浅绿表示缓存读取","daemon.usage.modelMeta":e=>`${e?.tokens??"0"} tokens · 缓存 ${e?.cache??0}%`,"daemon.usage.skillTitle":"技能调用","daemon.usage.skillSub":"技能名 / 次数","daemon.usage.skillName":"技能名","daemon.usage.skillCount":"次数","daemon.usage.dailyTokensTitle":"Tokens","daemon.usage.dailyTokensSub":"每日 token 总量","daemon.usage.dailySessionsTitle":"会话","daemon.usage.dailySessionsSub":"每日活跃会话数","delete.cannotCurrent":"无法删除当前活动会话。","delete.action":"删除","delete.deleted":"会话已删除。","delete.deletedCount":e=>`已删除 ${e?.count??0} 个会话。`,"delete.deleting":"删除中...","delete.failed":e=>`删除会话失败。${e?.reason?` ${e.reason}`:""}`,"delete.footer":"↑↓ 导航 · Space 选择 · Enter 删除 · Esc 取消","delete.noMatch":e=>`没有匹配 "${e?.query??""}" 的会话`,"delete.none":"没有可删除的会话","delete.allFailed":e=>`删除 ${e?.count??0} 个会话失败: ${e?.reason??"未知错误"}`,"delete.nonRemoved":"没有会话被删除。","delete.notFound":"会话未找到,可能已被删除。","delete.partialFail":e=>`已删除 ${e?.removed??0} 个,${e?.failed??0} 个失败: ${e?.detail??"未知错误"}`,"delete.matches":e=>`${e?.count??0} 个匹配`,"delete.pressSearch":"按 / 搜索;Space 选择;Enter 删除","delete.selected":e=>`已选 ${e?.count??0} 个`,"delete.title":"删除会话","time.justNow":"刚刚","time.minutesAgo":e=>`${e?.count??0} 分钟前`,"time.hoursAgo":e=>`${e?.count??0} 小时前`,"time.daysAgo":e=>`${e?.count??0} 天前`,"dialog.footer.close":"Esc 关闭","dialog.footer.confirmCancel":"Enter 确认 · Esc 取消","release.cannotCurrent":"不能释放当前活动会话。","release.action":"释放","release.released":"会话已释放。","release.failed":e=>`释放会话失败。${e?.reason?` ${e.reason}`:""}`,"release.footer":"↑↓ 导航 · Enter 释放 · Esc 取消","release.inactive":"只有活跃的 live session 才能释放。","release.inactiveBadge":"非活跃","release.noMatch":e=>`没有匹配 "${e?.query??""}" 的会话`,"release.matches":e=>`${e?.count??0} 个匹配`,"release.none":"没有可释放的 live session","release.pressSearch":"按 / 搜索;Enter 释放选中的 live session","release.releasing":"释放中...","release.title":"释放会话","dialog.footer.menu":"Esc 返回菜单","dialog.footer.mcpServers":"↑↓ 导航 · Enter 查看详情 · r 刷新 · Esc 关闭","dialog.footer.mcpSelect":"↑↓ 导航 · Enter 选择 · Esc 返回","dialog.footer.modelFast":"↑↓ 导航 · / 搜索 · c 自定义 · Enter 设置 fast model · Esc 取消","dialog.footer.navSelectCancel":"↑↓ 导航 · Enter 选择 · Esc 取消","dialog.footer.navSelectClose":"↑↓ 导航 · Enter 选择 · Esc 关闭","dialog.footer.navSelectMenu":"↑↓ 导航 · Enter 选择 · Esc 返回菜单","dialog.footer.navOpenClose":"↑↓ 导航 · Enter 打开 · Esc 关闭","dialog.footer.navOpenMenu":"↑↓ 导航 · Enter 打开 · Esc 返回菜单","dialog.footer.back":"Esc 返回","dialog.footer.backClose":"Esc 关闭","dialog.footer.saveClose":"↑↓ 切换输入框 · ⌘/Ctrl+Enter 保存 · Esc 关闭","dialog.footer.saveMenu":"↑↓ 切换输入框 · ⌘/Ctrl+Enter 保存 · Esc 返回菜单","dialog.footer.search":"输入搜索 · Enter 确认 · Esc 清空","dialog.footer.select":"Enter 选择","editor.escClearHint":"再按一次 Esc 清空","editor.hintCommands":"命令","editor.hintFiles":"文件","editor.hintNext":"下一条","editor.hintPrev":"上一条","editor.hintSearch":"搜索","editor.noHistory":"没有匹配的历史记录","editor.placeholder":"输入消息或 @ 文件路径","history.loadingEarlier":"正在加载更早消息…","history.openEarlier":"打开更早历史","history.loadEarlier":"加载更早记录","history.loadNewer":"加载较新记录","history.returnLatest":"返回最新","history.viewUnavailable":"会话正在重连或修复记录,历史暂时不可用。","history.snapshotView":"历史快照 · 只读","history.viewError":"暂时无法加载此段记录。请移动阅读位置后重试,或返回最新。","history.capacityReached":"已达到历史显示上限,更早消息仍保存在会话中。","history.paginationError":"无法加载更早的历史记录。","history.retry":"重试","editor.shellPlaceholder":"请输入终端命令","editor.send":"发送消息","editor.imagesSkipped":e=>`已跳过 ${e?.count??0} 个不可读取的文件。`,"editor.imagesReadFailed":e=>`${e?.count??0} 个文件读取失败。`,"editor.imagesTooLarge":e=>`${e?.count??0} 个文件超过附件大小限制。`,"editor.pastedTextShowInEditor":"显示到输入框","editor.connectionDisconnected":"连接已中断,请在恢复后重试。","editor.sessionLoading":"会话正在加载,请稍后再发送。","editor.processing":"处理中。新消息会进入队列。","editor.searchHint":"ctrl+r 下一条 · tab 采纳 · enter 发送 · esc 取消","editor.searchLabel":"历史搜索:","editor.searchPlaceholder":"输入以搜索…","editor.newSessionSuggestionTitle":"这条消息看起来像新话题","editor.newSessionSuggestionStart":"在新会话发送","editor.btwSuggestionTitle":"这条消息看起来像顺带一问","editor.btwSuggestionSend":"用 BTW 提问","quickActions.extensions":"扩展","quickActions.help":"帮助","quickActions.auth":"认证","quickActions.settings":"设置","quickActions.copy":"复制输出","quickActions.shellMode":"Shell模式","quickActions.exitShellMode":"退出Shell","session.missing":"当前会话不存在","session.new":"新建会话","workspace.loadFailed":"工作区加载失败","workspace.notFound":"工作区不存在","workspace.notFoundDescription":"此工作区可能已被移除,或链接已经失效。","workspace.loadFailedDescription":"无法连接工作区服务,请检查守护进程后重试。","scheduledTasks.title":"定时任务","scheduledTasks.subtitle":"按计划自动执行任务,也可随时手动触发。","scheduledTasks.loading":"加载中…","scheduledTasks.count":e=>`${e?.count??0} 个任务`,"scheduledTasks.refresh":"刷新","scheduledTasks.new":"新建定时任务","scheduledTasks.createViaChat":"通过聊天创建","scheduledTasks.chatStarter":"帮我创建一个长期保留的定时任务,我想:","scheduledTasks.name":"名称","scheduledTasks.workspace":"工作区","scheduledTasks.session.label":"会话","scheduledTasks.session.dedicated":"独立任务会话","scheduledTasks.session.current":"当前会话","scheduledTasks.session.dedicatedHint":"任务运行记录保存在单独创建的会话中。","scheduledTasks.session.currentHint":"后续运行继续在当前打开的会话中。","scheduledTasks.session.currentUnsupported":"当前 daemon 不支持绑定当前会话。","scheduledTasks.session.currentUnavailable":"请先打开一个已有会话。","scheduledTasks.session.currentBusy":"请等待当前执行或待处理交互结束。","scheduledTasks.session.currentIneligible":"此类会话不能绑定定时任务。","scheduledTasks.session.currentWorkspaceMismatch":"当前会话属于另一个工作区。","scheduledTasks.session.currentAlreadyBound":"当前会话已绑定其他定时任务。","scheduledTasks.taskId":"任务 ID","scheduledTasks.schedule":"计划","scheduledTasks.type":"类型","scheduledTasks.status":"状态","scheduledTasks.namePlaceholder":"可选 —— 默认取提示词","scheduledTasks.prompt":"提示词","scheduledTasks.promptPlaceholder":"这个任务要做什么?","workflowRuns.title":"工作流","workflowRuns.saved":"已保存","workflowRuns.active":"运行中","workflowRuns.history":"历史","workflowRuns.create":"新建","workflowRuns.refresh":"刷新","workflowRuns.loading":"正在加载工作流…","workflowRuns.loadFailed":"工作流加载失败。","workflowRuns.noSession":"请先打开本项目中的任一会话,再查看工作流记录。","workflowRuns.emptyActive":"当前没有运行中的工作流。","workflowRuns.emptyHistory":"暂时没有已保存的工作流记录。","workflowRuns.emptySaved":"还没有可复用的工作流。","workflowRuns.emptySavedHint":"可以点击“新建”让 O1-Code 创建、在终端中保存一次已完成的运行,或在 .o1-code/workflows 下添加 .js 文件。","workflowRuns.project":"项目","workflowRuns.user":"用户","workflowRuns.projectDescription":"仅在当前项目中可用","workflowRuns.userDescription":"在所有项目中可用","workflowRuns.extension":"扩展","workflowRuns.extensionDescription":"由已安装的扩展提供","workflowRuns.detail.toggle":e=>`查看 ${e?.name??""} 的详情`,"workflowRuns.detail.loading":"正在加载工作流定义…","workflowRuns.detail.unavailable":"这个工作流定义已不可用。","workflowRuns.detail.loadFailed":"无法读取工作流定义。","workflowRuns.detail.retry":"重试","workflowRuns.detail.noDescription":"这个工作流没有声明描述。","workflowRuns.detail.whenToUse":"适用场景","workflowRuns.detail.metaError":e=>`meta 块无法解析:${e?.error??""}`,"workflowRuns.detail.phases":e=>`阶段(${e?.count??0})`,"workflowRuns.detail.recentRuns":"最近运行","workflowRuns.detail.noRuns":"当前会话还没有运行记录。","workflowRuns.detail.viewRuns":e=>`在历史中查看 ${e?.count??0} 次运行`,"workflowRuns.detail.showSource":"查看源码","workflowRuns.detail.hideSource":"收起源码","workflowRuns.run":"运行","workflowRuns.starting":"正在启动…","workflowRuns.runNamed":e=>`运行 ${e?.name??""}`,"workflowRuns.startFailed":"工作流未能启动,请刷新后重试。","scheduledTasks.reference.extension":"扩展","scheduledTasks.reference.skill":"技能","scheduledTasks.reference.mcp":"MCP","scheduledTasks.referencePicker":"引用选择器","scheduledTasks.reference.remove":"删除","scheduledTasks.reference.loading":"加载中…","scheduledTasks.reference.empty":"暂无可选项。","scheduledTasks.frequency":"频率","scheduledTasks.freq.daily":"每天","scheduledTasks.freq.weekdays":"工作日","scheduledTasks.freq.weekly":"每周","scheduledTasks.freq.hourly":"每小时","scheduledTasks.freq.minutes":"每 N 分钟","scheduledTasks.freq.custom":"自定义(cron)","scheduledTasks.time":"时间","scheduledTasks.weekday":"星期","scheduledTasks.interval":"分钟","scheduledTasks.cron":"Cron 表达式","scheduledTasks.weekdayNames":"周日,周一,周二,周三,周四,周五,周六","scheduledTasks.human.daily":e=>`每天 ${e?.time??""}`,"scheduledTasks.human.weekdays":e=>`工作日 ${e?.time??""}`,"scheduledTasks.human.weekly":e=>`每${e?.day??""} ${e?.time??""}`,"scheduledTasks.human.hourly":e=>`每小时 第 ${e?.min??"00"} 分`,"scheduledTasks.human.everyMinutes":e=>`每 ${e?.n??""} 分钟`,"scheduledTasks.never":"尚未运行","scheduledTasks.repeats":"重复","scheduledTasks.runsOnce":"仅一次","scheduledTasks.lastFired":e=>`上次运行:${e?.when??""}`,"scheduledTasks.runNow":"立即运行","scheduledTasks.enable":"启用","scheduledTasks.disable":"停用","scheduledTasks.delete":"删除","scheduledTasks.deleteConfirmTitle":"删除定时任务","scheduledTasks.deleteConfirm":e=>`确定删除定时任务「${e?.name??""}」?`,"scheduledTasks.deletedSnapshot":"这个定时任务已被删除,下面显示的是创建时的快照。","scheduledTasks.sessionScopedSnapshot":"这是一个会话内定时任务,下面显示的是创建时的快照。","scheduledTasks.empty":"还没有定时任务,创建一个开始吧。","scheduledTasks.create":"创建","scheduledTasks.creating":"创建中…","scheduledTasks.cancel":"取消","scheduledTasks.error.invalidSchedule":"计划无效","scheduledTasks.error.workspaceUnavailable":"所选工作区不可用或不受信任","scheduledTasks.error.emptyPrompt":"提示词不能为空","scheduledTasks.error.promptTooLong":e=>`提示词超过 ${e?.max??1e5} 字符限制`,"scheduledTasks.error.goalActive":"目标运行期间无法启动定时任务。","scheduledTasks.error.toggleFailed":"更新任务失败","scheduledTasks.error.deleteFailed":"删除任务失败","scheduledTasks.edit":"编辑","scheduledTasks.editTitle":"编辑定时任务","scheduledTasks.save":"保存","scheduledTasks.saving":"保存中…","scheduledTasks.runHistory":e=>`运行记录(${e?.count??0})`,"scheduledTasks.viewHistory":e=>`查看对话(${e?.count??0})`,"scheduledTasks.viewHistoryEmpty":"查看对话","scheduledTasks.viewHistoryHint":"打开该任务的会话查看运行详情","scheduledTasks.runKind.catchUp":"补跑","scheduledTasks.runKind.manual":"手动","scheduledTasks.runKind.withheld":"已跳过","scheduledTasks.runKind.sessionDispatchFailed":"新建会话失败,未运行","scheduledTasks.runKind.sessionDispatchFallback":"新建会话失败,已在任务会话中运行","scheduledTasks.openRunSession":"打开本次运行会话","scheduledTasks.runContext.title":"定时任务运行","scheduledTasks.runContext.taskId":"任务 ID","scheduledTasks.runContext.schedule":"计划","scheduledTasks.runContext.triggeredAt":"触发于","scheduledTasks.runContext.trigger.scheduled":"定时触发","scheduledTasks.runContext.trigger.manual":"手动运行","scheduledTasks.error.runFailed":"记录运行失败","scheduledTasks.error.oneShotConsumedButFailed":"任务已删除,但提示词未能送达——它没有运行。请重新创建后重试。","scheduledTasks.dueNow":"即将运行","scheduledTasks.nextRunTooltip":e=>`下次运行:${e?.when??""}`,"scheduledTasks.dur.d":"天","scheduledTasks.dur.h":"小时","scheduledTasks.dur.m":"分","scheduledTasks.dur.s":"秒","scheduledTasks.runIn":"运行于","scheduledTasks.sessionMode.perRun":"每次新会话","scheduledTasks.sessionMode.persistent":"固定会话","scheduledTasks.sessionMode.perRun.hint":"每次运行都创建独立会话,使用干净的上下文。","scheduledTasks.sessionMode.persistent.hint":"所有运行都继续使用同一个任务会话。","scheduledTasks.model":"模型","scheduledTasks.model.workspaceDefault":"工作区默认模型","scheduledTasks.model.hint":"创建每次运行的新会话时应用所选模型。","scheduledTasks.group":"会话分组","scheduledTasks.group.none":"不分组","scheduledTasks.group.create":"新建分组…","scheduledTasks.group.name":"新分组名称","scheduledTasks.group.color":"分组颜色","scheduledTasks.group.hint":"每次运行产生的会话都会放入这个分组。","scheduledTasks.group.nameRequired":"请输入新分组名称。","scheduledTasks.routing.loading":"正在加载模型和分组…","scheduledTasks.condition":"前置条件(可选)","scheduledTasks.conditionPlaceholder":"例如:检查昨天以来 main 分支有没有新提交。如果没有,则本次不应执行。","scheduledTasks.condition.hint":'每次触发前,先在本任务自己的会话中检查该条件。只有判定为"是",才会新建会话执行命令;否则跳过本次运行。',"scheduledTasks.condition.cardPrefix":"若:","turnOutputs.filesEdited":e=>`已编辑 ${e?.count??0} 个文件`,"turnOutputs.imagePreview":"图片预览","turnOutputs.viewChanges":"查看更改","turnOutputs.review":"文件更改","turnOutputs.reviewLatest":"查看最近文件修改","codeReview.authoritativeVerdict":"权威裁决","codeReview.targetEffort":e=>`目标:${e?.target??""} · 强度:${e?.effort??""}`,"codeReview.openReport":"打开 Markdown 报告","codeReview.loadingReport":"正在加载 Markdown 报告…","codeReview.back":"返回审查结果","codeReview.reviewCounts":"审查计数","codeReview.total":"总计","codeReview.confidence":e=>`${e?.value??""} 置信度`,"codeReview.held":"暂缓","codeReview.heldByMeasurement":"经基线测量暂缓,未保留 Critical","codeReview.caps":"裁决上限","codeReview.none":"无","codeReview.severity":"严重级别","codeReview.confidenceLabel":"置信度","codeReview.all":"全部","codeReview.noMatches":"没有符合当前筛选条件的发现。","codeReview.source":e=>`来源:${e?.value??""}`,"codeReview.failureScenario":"失败场景","codeReview.witness":"实测证据","codeReview.suggestedFix":"建议修复","codeReview.outcome":"处理结果","codeReview.locations":"位置","codeReview.evidence":"证据","codeReview.notLinked":"未链接","codeReview.loadErrorTitle":"无法显示代码审查结果","codeReview.loading":"正在加载代码审查结果…","codeReview.artifactTruncated":"代码审查制品已截断,无法验证。","codeReview.reportTruncated":"Markdown 报告已截断。","codeReview.unavailable":e=>`此代码审查已不再具备权威性,制品状态为 ${e?.status??"unknown"}。请重新生成审查结果。`,"codeReview.workspaceRequired":"代码审查制品必须是可读取的工作区文件。","sideTask.title":"侧边任务","sideTask.description":"查看或新增侧边任务","sideTask.new":"新增","sideTask.create":"新建侧边任务","webPreview.title":"网页预览","webPreview.openHint":"预览正在运行的网页应用","webPreview.address":"开发地址","webPreview.open":"打开","webPreview.refresh":"刷新预览","webPreview.desktop":"桌面宽度","webPreview.mobile":"手机宽度(390 px)","webPreview.external":"外部打开","webPreview.frame":"网页预览容器","webPreview.saved":"当时保存的版本","webPreview.savedFrame":"历史网页版本","webPreview.savedUnavailable":"这份历史版本已丢失或被修改,无法打开。","webPreview.savedLoadFailed":"暂时无法加载这份历史版本,请重试。","webPreview.page":"应用预览","webPreview.empty":"启动开发服务器,然后在上方输入地址。","webPreview.reachable":"使用当前浏览器可访问的地址。远程服务器请使用可访问的 URL 或已有的端口转发。","webPreview.fallback":"页面空白?请检查服务器或外部打开。地址栏和刷新使用最初打开的地址。","webPreview.live":"实时页面:从历史消息打开链接,也会显示当前内容,不是当时保存的版本。","webPreview.invalidUrl":"请使用独立开发服务器的 HTTP/HTTPS 地址,主机名或 IPv4 均可,且不含登录凭据。不能预览 Web Shell 或 daemon 地址。","terminal.title":"终端","terminal.open":"打开终端","terminal.notice.exited":e=>`进程已退出,退出码 ${e?.exitCode??"?"}`,"terminal.notice.error":e=>`错误:${e?.message??""}`,"terminal.notice.unknownError":"未知错误","terminal.notice.reconnecting":"连接已断开,正在重连…","terminal.notice.protocolMismatch":"终端协议已更新,请重启 daemon 并刷新页面。","localFiles.title":"本地文件","localFiles.trigger":"本地文件","localFiles.hint":"让当前会话读写你本机的一个目录。文件留在你的电脑上,只有 agent 主动索取的内容会发给它。","localFiles.connect":"连接目录…","localFiles.reconnect":"重新连接","localFiles.disconnect":"断开","localFiles.openInNewTab":"在新标签页打开","localFiles.directory":"目录","localFiles.tools":e=>`${e?.count??0} 个工具`,"localFiles.status.idle":"未连接","localFiles.status.connecting":"连接中…","localFiles.status.registering":"注册中…","localFiles.status.connected":"已连接","localFiles.status.reconnecting":"重连中…","localFiles.status.heldElsewhere":"已在其他标签页连接","localFiles.status.needsSession":"等待会话","localFiles.status.needsGesture":"需要重新连接","localFiles.status.failed":"连接失败","localFiles.status.unavailable":"当前环境不可用","localFiles.status.resolving":"解析中…","localFiles.needsSessionHint":"请先创建一个会话。桥只绑定一个会话,因此其他会话无法访问你的文件。","localFiles.blocker.insecureContext":"当前页面不是安全上下文,浏览器不会授予本地文件访问权。请通过 https 访问 Web Shell,或用 SSH 转发 daemon 端口后打开 http://localhost:<port>。","localFiles.blocker.crossOriginFrame":"跨源 iframe 中本地文件访问被禁用。请在独立的浏览器标签页中打开 Web Shell 再连接目录。","localFiles.blocker.unsupportedBrowser":"当前浏览器没有 File System Access API。请使用 Chrome 或 Edge 连接本地目录。","localFiles.blocker.workspaceIneligible":"该会话的工作区不能托管本地目录(不受信任或 live 工作区)。","localFiles.blocker.workspaceResolving":"尚不能确定该会话所属的工作区。","localFiles.blocker.unsupportedDaemon":"该 daemon 未启用客户端文件桥(client_mcp_over_ws)。以 O1CODE_SERVE_CLIENT_MCP_OVER_WS=1 启动 daemon 即可启用本地文件。","rightPanel.add":"添加页签","attachment.showPreview":"预览","attachment.showSource":"源码","attachment.previewUnsupported":"暂不支持预览此文件类型。","attachment.readFailed":"读取附件失败。","attachment.loadingFile":"正在加载文件...","attachment.loadingPreview":"正在加载预览...","sideTask.creating":"正在创建侧边任务…","sideTask.createFailed":"创建侧边任务失败","sideTask.promptFailed":"发送侧边任务问题失败","sideTask.renameFailed":"侧边任务命名失败","turnOutputs.preview":"预览","turnOutputs.collapseFiles":"收起文件","turnOutputs.showMoreFiles":e=>`再展示 ${e?.count??0} 个文件`,"turnOutputs.collapseArtifacts":"收起产物","turnOutputs.showMoreArtifacts":e=>`再展示 ${e?.count??0} 个产物`,"turnOutputs.previousTurn":"上轮对话","turnOutputs.fileCount":e=>`${e?.count??0} 个文件`,"turnOutputs.openFileTree":"打开文件树","turnOutputs.closeFileTree":"关闭文件树","turnOutputs.artifactMissing":"工作区中未找到该文件","turnOutputs.artifactUnavailable":e=>e?.path?`工作区中未找到该文件 · ${e.path}`:"工作区中未找到该文件","sidebar.label":"工作区侧边栏","sidebar.toggleMenu":"切换菜单","sidebar.newChat":"新对话","sidebar.newTask":"新建任务","sidebar.newWorktreeTask":"新建 Worktree 任务","sidebar.plugins":"插件","sidebar.live":"Live","sidebar.project":"项目","sidebar.pinnedSessions":"置顶","sidebar.workspaceSelectLabel":"工作区","sidebar.noWorkspace":"无工作区","sidebar.noWorkspaceSessions":"无工作区会话","sidebar.copySessionId":"复制会话 ID","sidebar.copySessionIdFailed":"复制会话 ID 失败","sidebar.sessionIdCopied":"会话 ID 已复制","sidebar.workspaceUntrusted":"未信任","sidebar.manageWorkspaces":"管理工作区…","sidebar.workspaceReadOnly":"只读","sidebar.workspaceTrustToOpen":"信任此工作区后才能打开会话。","sidebar.addWorkspace":"添加工作区","sidebar.newWorkspace":"新建工作区","sidebar.startFromScratch":"从空目录开始","sidebar.useExistingFolder":"使用已有目录…","sidebar.scratchOutcomeUnknownTitle":"确认工作区创建结果","sidebar.scratchOutcomeUnknown":"守护进程响应已中断。再次创建前,请检查刷新后的工作区列表。","sidebar.scratchOutcomeRefresh":"刷新工作区列表","sidebar.scratchOutcomeAcknowledge":"我已检查工作区列表","sidebar.addWorkspaceTitle":"添加工作区","sidebar.addWorkspacePath":"目录路径","sidebar.addWorkspaceBrowse":"浏览…","sidebar.addWorkspaceBrowseError":"无法打开系统文件夹选择器,请改为输入绝对路径。","sidebar.addWorkspaceDisplayName":"展示名称(可选)","sidebar.addWorkspaceDisplayNameHint":"用于 Web Shell 展示;目录路径仍是工作区身份。","sidebar.addWorkspaceRegister":"注册","sidebar.addWorkspaceCancel":"取消","sidebar.addWorkspaceError":"添加工作区失败","sidebar.addWorkspaceBusyError":"另一个工作区操作正在进行中","sidebar.addWorkspacePersistenceError":"守护进程未确认工作区已持久化注册","sidebar.addWorkspaceRefreshError":"工作区已添加,但无法刷新工作区列表","sidebar.addWorkspaceAbsError":"请输入绝对路径或 SSH 工作区地址。","sidebar.addWorkspaceHint":"请输入本地绝对路径或 ssh://user@host/absolute/project。SSH 需要密钥认证、已确认的主机密钥,以及远端 Python 3。Shell 命令还需要 Bash;远端无需安装 O1-Code。","sidebar.addWorkspaceSuggestions":"目录建议","sidebar.addWorkspacePersist":"服务重启后保留","sidebar.addWorkspacePersistHint":"将此工作区注册持久化到守护进程配置中。","sidebar.addWorkspaceAdding":"添加中…","workspaceHost.source":"目录来源","workspaceHost.thisComputer":"这台计算机","workspaceHost.folderOn":e=>`${e?.address} 上的目录`,"workspaceHost.folderOnThisComputer":"这台计算机上的目录","workspaceHost.browseHint":"请从下方选择目录,或输入绝对路径。","workspaceHost.parent":"上一级","workspaceHost.addFolder":"添加此文件夹","workspaceHost.noFolders":"此目录下没有子目录。","workspaceHost.folderListError":"无法读取该计算机上的目录,请检查路径或连接状态。","workspaceHost.navigationUnavailable":"浏览器存储不可用,无法安全继续添加远程目录。","workspaceHost.unsupported":"这台计算机不支持添加工作区。","workspaceHost.loadingFolders":"正在从这台计算机加载目录…","workspaceHost.connectionError":"无法从这台计算机加载工作区能力。","sidebar.removeWorkspace":"移除工作区","sidebar.workspaceActions":"工作区操作","sidebar.renameWorkspace":"重命名…","sidebar.renameWorkspaceTitle":"重命名工作区","sidebar.workspaceNamePrompt":"显示名称","sidebar.workspaceNameHint":"留空则显示文件夹名。","sidebar.workspaceNameInvalid":"名称不能包含控制字符。","sidebar.renameWorkspaceFailed":"重命名工作区失败","sidebar.copyWorkspacePath":"复制路径","sidebar.copyWorkspacePathFailed":"复制工作区路径失败","sidebar.openWorkspaceFolder":"打开文件夹","sidebar.openWorkspaceFolderFailed":"打开工作区文件夹失败","sidebar.openWorkspaceFolderOpened":"已打开工作区文件夹","sidebar.openWorkspaceTerminal":"打开终端","sidebar.openWorkspaceTerminalFailed":"打开终端失败","sidebar.openWorkspaceTerminalOpened":"已在工作区打开终端","sidebar.manageWorkspace":"管理","sidebar.reloadWorkspace":"重新加载运行时","sidebar.reloadWorkspaceFailed":"重新加载工作区运行时失败","sidebar.workspaceCount":e=>`${e?.count??0} 个工作区`,"sidebar.sessionsRunning":e=>`${e?.count??0} 个会话运行中`,"sidebar.sessionsAttention":e=>`${e?.count??0} 个会话等待处理`,"sidebar.sessionsTotal":e=>`${e?.count??0}${e?.truncated?"+":""} 个会话`,"sidebar.overview.sessions":"会话","sidebar.overview.mcp":"MCP","sidebar.overview.skills":"技能","sidebar.overview.extensions":"扩展","sidebar.overview.context":"上下文","sidebar.overview.hooks":"Hooks","sidebar.overview.settings":"设置","sidebar.overview.mcpDetail":e=>`${e?.configured??0} 个已配置,${e?.connected??0} 个已连接`+(Number(e?.failed)>0?`,${e?.failed} 个失败`:"")+(Number(e?.disabled)>0?`,${e?.disabled} 个已禁用`:""),"sidebar.overview.skillsDetail":e=>`共 ${e?.total??0} 个,${e?.enabled??0} 个已启用`,"sidebar.overview.extensionsDetail":e=>`共 ${e?.total??0} 个,${e?.active??0} 个已启用`,"sidebar.overview.contextDetail":e=>`${e?.files??0} 个上下文文件,${e?.rules??0} 条规则`,"sidebar.overview.hooksDetail":e=>`${e?.count??0} 个 hook`,"sidebar.overview.hooksDisabled":e=>`${e?.count??0} 个 hook(已禁用)`,"sidebar.forceRemoveWorkspace":"强制移除","sidebar.removeWorkspaceTitle":"移除工作区","sidebar.removeWorkspaceConfirm":e=>`确定移除“${e?.name??""}”的运行时和持久化注册吗?文件、设置和会话历史不会被删除。`,"sidebar.removeWorkspaceBusy":e=>`“${e?.name??""}”仍有活动运行时资源。强制移除会终止这些资源。`,"sidebar.removeWorkspaceCurrentSession":"请先切换到其他工作区或关闭当前会话,再执行强制移除。","sidebar.removeWorkspaceInProgress":"另一个客户端正在移除此工作区,请在操作完成后刷新。","sidebar.removeWorkspaceError":"移除工作区失败","sidebar.removeWorkspaceSessions":e=>`会话:${e?.count??0}`,"sidebar.removeWorkspacePrompts":e=>`活动提示:${e?.count??0}`,"sidebar.removeWorkspaceStarts":e=>`待启动会话:${e?.count??0}`,"sidebar.removeWorkspaceConnections":e=>`ACP 连接:${e?.count??0}`,"sidebar.removeWorkspaceMemoryTasks":e=>`Memory 任务:${e?.count??0}`,"sidebar.removeWorkspaceVoiceSessions":e=>`语音会话:${e?.count??0}`,"sidebar.noSessions":"暂无会话","sidebar.projectFallback":"项目","sidebar.sessionsOverview":"会话总览","sidebar.splitView":"分屏","sidebar.settings":"设置","sidebar.daemonStatus":"Daemon 状态","sidebar.scheduledTasks":"定时任务","sidebar.workflows":"工作流","sidebar.goals":"目标","sidebar.themeLight":"切换到浅色主题","sidebar.themeDark":"切换到深色主题","sidebar.collapse":"收起","sidebar.expand":"展开","sidebar.showAllSessions":"展开显示","sidebar.collapseProject":"收起项目","sidebar.expandProject":"展开项目","sidebar.search":"搜索会话","sidebar.searchPlaceholder":"搜索会话","sidebar.rename":"重命名","sidebar.export":"导出对话记录","sidebar.exportFailed":"导出会话失败","sidebar.delete":"删除","sidebar.archive":"归档","sidebar.unarchive":"恢复","sidebar.moreActions":"更多操作","sidebar.archiveCurrentDisabled":"不能归档当前会话","sidebar.archiveRunningDisabled":"不能归档运行中的会话,归档会终止其正在执行的工作","sidebar.archivedTitle":"已归档","sidebar.standaloneLoadFailed":"最近会话加载失败","sidebar.standaloneActionFailed":"会话操作失败","sidebar.standaloneDeleteConfirm":"删除该会话及其私有文件?","sidebar.standaloneCleanupPending":"会话已删除,私有文件清理将在后台自动完成。","sidebar.archivedEmpty":"没有已归档的会话。","sidebar.archiveFailed":"归档会话失败","sidebar.unarchiveFailed":"恢复会话失败","sidebar.loadFailed":"会话加载失败,点击重试。","sidebar.renameFailed":"重命名会话失败","sidebar.deleteFailed":"删除会话失败","sidebar.newSessionFailed":"创建新对话失败","sidebar.switchFailed":"切换会话失败","sidebar.currentDeleteDisabled":"不能删除当前会话","sidebar.deleteConfirmDescription":e=>`确定删除“${e?.name??""}”吗?删除后不可恢复。`,"sidebar.clients":e=>`${e?.count??0} 个客户端`,"sidebar.running":"运行中","sidebar.activeWork":"有活动任务","sidebar.activityUnknown":"后台活动状态未知","sidebar.waitingForApproval":"等待批准","sidebar.waitingForApprovalShort":"待批准","sidebar.sessionPr":e=>`合并请求 #${e?.number??""}`,"sidebar.sessionPrMultiple":e=>`合并请求 #${e?.number??""}(共 ${e?.count??0} 个)`,"sidebar.sessionPrStateMerged":"已合入","sidebar.sessionPrStateClosed":"已关闭","sidebar.sessionIssue":e=>`议题 #${e?.number??""}`,"sidebar.sessionIssueStateCompleted":"已完成","sidebar.sessionIssueStateNotPlanned":"未计划","sidebar.userInputNeeded":"需要用户输入","sidebar.userInputNeededShort":"需输入","sidebar.completedUnread":"刚完成","sidebar.pin":"置顶","sidebar.unpin":"取消置顶","sidebar.sessionGroup":"分组","sidebar.groupFilter":"会话分组","sidebar.groupAll":"全部","sidebar.groupPinned":"已置顶","sidebar.groupUngrouped":"未分组","sidebar.groupRecent":"最近","sidebar.groupCreate":"新建分组","sidebar.groupRename":"重命名分组","sidebar.groupDelete":"删除分组","sidebar.groupColor":"分组颜色","sidebar.groupNamePrompt":"分组名称","sidebar.groupDeleteConfirm":e=>`确定删除分组“${e?.name??""}”吗?`,"sidebar.groupsLoadFailed":"加载会话分组失败","sidebar.groupCreateFailed":"创建分组失败","sidebar.groupAssignFailedAfterCreate":"分组已创建,但移动会话失败","sidebar.groupUpdateFailed":"更新分组失败","sidebar.groupDeleteFailed":"删除分组失败","sidebar.organizationFailed":"更新会话组织失败","sidebar.groupColor.red":"红色","sidebar.groupColor.orange":"橙色","sidebar.groupColor.yellow":"黄色","sidebar.groupColor.green":"绿色","sidebar.groupColor.blue":"蓝色","sidebar.groupColor.purple":"紫色","sidebar.groupColor.custom":"自定义…","sidebar.groupColor.picker":"选择自定义分组颜色","sidebar.groupColor.hex":"Hex 颜色","sidebar.groupColor.invalid":"请输入六位 Hex 颜色,例如 #416ef5。","quickKeys.retry":"重试失败请求","error.unsupportedTheme":"不支持该主题。请使用 /theme light 或 /theme dark。","queue.delete":"删除","queue.edit":"编辑","queue.insert":"插入","queue.cleared":"队列已清空。","queue.deleteTip":"移出队列","queue.editTip":"移出队列并将内容放回输入框","queue.submitting":"提交中...","queue.midTurnQueued":"排队中...","queue.serverQueued":"服务器排队中...","queue.editing":"编辑中...","queue.inserting":"插入中...","queue.removing":"处理中...","queue.submittingDisabled":"排队消息正在提交中...","queue.summaryEditDisabled":"恢复的队列摘要无法还原原始附件。","queue.admissionUnknown":"消息是否送达尚不确定,请先检查会话再重试。","queue.restoreUnknown":"恢复本地副本","queue.discardUnknown":"丢弃本地副本","queue.continueEditing":"继续编辑","queue.continueEditingConfirm":"这条消息可能已经在执行。只有在接受重复发送风险时才继续编辑。","queue.commandBlocked":"当前回合运行时,Slash 命令不能进入排队。","queue.commandGoalBlocked":"Goal 正在占用会话或状态仍在加载,暂时无法执行 Slash 命令。","queue.shellQueued":"Shell 命令已排队,将在当前回合结束后执行。","queue.shellDropped":e=>`${e?.count??0} 条排队的 Shell 命令将不会执行。`,"queue.queueFailed":"排队消息失败","queue.deleteFailed":"移出队列失败","queue.editFailed":"编辑排队消息失败","queue.insertFailed":"插入排队消息失败","queue.insertTip":"插入当前回合","queue.insertCommandDisabled":"命令不能插入当前回合","queue.footer":"按 ↑ 编辑最后一条排队消息 · Esc 清空队列","queue.imageCount":e=>`(+${e?.count??0} 张图片)`,"queue.fileCount":e=>`(+${e?.count??0} 个文件)`,"queue.more":e=>`...(还有 ${e?.count??0} 条)`,"help.builtIn":"内置命令","help.commandCount":e=>`${e?.count??0} 个命令`,"help.commandMeta.builtIn":"内置","help.commandMeta.custom":"自定义","help.commandMeta.subcommands":e=>`${e?.count??0} 个子命令`,"help.commandsIntro":"浏览内置命令:","help.customGroup":"自定义、skills、plugins、MCP","help.customIntro":"浏览自定义、skill、plugin 和 MCP 命令:","help.empty":"当前没有可用命令。","help.emptyCustom":"当前没有可用的自定义命令。","help.footer":"Tab/Shift+Tab 切换标签 · ↑/↓ 或 PgUp/PgDn 滚动 · Esc 关闭","help.intro":"O1-Code 可以理解代码库,在你的许可下修改文件,并直接执行命令。","help.section.shortcuts":"快捷键","help.search":"搜索命令","help.shortcut.addContext":"添加文件或目录作为上下文","help.shortcut.altWords":"按词跳转","help.shortcut.clear":"清屏","help.shortcut.commandMenu":"打开命令菜单","help.shortcut.completion":"接受补全或切换帮助标签","help.shortcut.history":"切换历史 prompt 或滚动列表","help.shortcut.searchHistory":"搜索历史 prompt","help.shortcut.newline":"插入换行","help.shortcut.pasteImages":"粘贴图片","help.shortcut.shell":"运行 shell 命令","help.shortcut.togglePanel":"切换此面板","help.shortcut.retry":"重试上次请求","retry.hint":"按 Ctrl+Y 重试或点击重试","retry.none":"没有可重试的失败请求。","system.taskNotification":"后台任务通知","background.result":"后台结果","background.agent":"后台智能体","background.running":"后台任务执行中","background.task":"后台任务","background.peer":"跨会话消息","background.details":"查看详情","background.processing":e=>`正在处理 ${e?.label??""} 结果`,"background.source":"来源","background.pending":"等待处理","system.taskCompleted":"后台任务执行完成","system.taskFailed":"后台任务执行失败","system.taskCancelled":"后台任务已取消","notification.shell.completed":e=>`后台 Shell 已完成:${e?.command??""}`,"notification.shell.failed":e=>`后台 Shell 执行失败:${e?.command??""}`,"notification.shell.cancelled":e=>`后台 Shell 已取消:${e?.command??""}`,"notification.monitor.completed":e=>`监控器已完成(${e?.events??0} 个事件${e?.droppedLines?`,因限流丢弃 ${e.droppedLines} 行`:""}):${e?.description??""}`,"notification.monitor.failed":e=>`监控器执行失败(${e?.events??0} 个事件${e?.droppedLines?`,因限流丢弃 ${e.droppedLines} 行`:""}):${e?.description??""}`,"notification.monitor.cancelled":e=>`监控器已取消(${e?.events??0} 个事件${e?.droppedLines?`,因限流丢弃 ${e.droppedLines} 行`:""}):${e?.description??""}`,"notification.agent.completed":e=>`后台智能体已完成:${e?.description??""}`,"notification.agent.failed":e=>`后台智能体执行失败:${e?.description??""}`,"notification.agent.cancelled":e=>`后台智能体已取消:${e?.description??""}`,"branch.failed":"分支会话失败。","branch.stale":"这条回复已不在当前活跃历史路径中,会话记录已刷新。","branch.staleRefreshFailed":"这条回复已不在当前活跃历史路径中,且会话记录刷新失败,请重试。","branch.staleUnsupported":"这条回复已不在当前活跃历史路径中,当前会话不支持从此处分支。","branch.success":e=>`已复制会话,新会话名称为: "${e?.name??""}",当前已切换到新的会话。`,"fork.empty":"请提供任务指令。用法:/fork <指令>","fork.failed":e=>`启动后台智能体失败:${e?.reason??""}`,"fork.notStarted":"后台智能体未启动。","fork.started":e=>`已启动后台智能体:"${e?.name??""}",可在后台任务中查看。`,"command.hidden":"该命令不可用。","help.shortcut.approvals":"切换审批模式","help.shortcut.cancel":"关闭弹窗或取消操作","bug.failed":"加载系统信息失败,无法提交 Bug 报告。","bug.popupBlocked":"弹窗被拦截,请允许弹窗后重试。","bug.submitted":"Bug 报告已在新标签页中打开。","clear.blocked":"流式输出中无法清屏 — 先按 Esc 取消。","error.unknown":"未知错误","error.modelStreamInterrupted":"模型响应流已中断,请重试。","error.loopDetected":"模型在调用工具时反复尝试或达到了安全上限,因此系统停止了本轮操作。会话并未结束,你可以换一个更明确的指令继续。","shell.command":"Shell 命令","shell.result.timedOut":"执行超时","shell.result.notices":"提示","shell.result.truncated":"输出预览已截断","shell.result.outputFiles":"输出文件","shell.result.output":"输出","shell.result.command":"命令","shell.result.copy":"复制命令","shell.result.details":"执行详情","shell.result.directory":"目录","shell.result.timeout":"超时设置","shell.result.timeoutMs":e=>`${e?.milliseconds} 毫秒`,"shell.result.defaultTimeout":"使用默认值","shell.result.exitCode":"退出码","shell.result.signal":"信号","shell.result.pending":"等待执行","shell.result.elapsed":"已运行","shell.result.lines":"输出行数","shell.result.bytes":"输出字节数","shell.result.running":"运行中","shell.result.completed":"已完成","shell.result.success":"执行成功","shell.result.cancelled":"已取消","shell.result.waiting":"等待输出…","shell.result.empty":"无输出","shell.result.exited":e=>`退出码 ${e?.code}`,"help.subcommands":"子命令","help.tab.commands":"内置命令","help.tab.custom":"自定义命令","help.tab.general":"快捷键","help.title":"帮助","slash.category.custom":"自定义","slash.category.skill":"Skill","slash.category.system":"系统","language.changed":e=>`UI 语言已切换为 ${e?.language??""}`,"language.current":e=>`当前 UI 语言:${e?.language??""}`,"language.invalid":"语言无效。可用值:en, zh-CN","language.options":"可用选项:","language.set":"设置 UI 语言","language.usage":"用法:/language ui [en|zh-CN]","localCommand.noSession":"当前还没有会话。请先发送第一条消息,再使用这个命令。","localCommand.diffNoWorkspace":"当前还没有可用于查看变更的工作区。","localCommand.logNoWorkspace":"当前还没有可用于查看历史的工作区。","localCommand.prsNoWorkspace":"当前还没有可用于查看拉取请求的工作区。","localCommand.prsUnsupported":"当前 daemon 不支持查看拉取请求。","local.agents":"管理智能体","local.bug":"提交错误报告","local.compress":"将上下文压缩为摘要","local.compressFast":"无需 AI 的快速上下文压缩","local.config":"通过点分路径键获取或设置配置项","local.diff":"显示工作区相对 HEAD 的改动统计","local.log":"显示工作区的提交历史","local.prs":"显示工作区开放的 GitHub 拉取请求","local.directory":"管理工作区目录","local.docs":"打开完整的 O1-Code 文档","local.doctor":"运行安装和环境诊断","local.dream":"整合托管的自动记忆主题文件","local.effort":"设置推理模型的思考强度","local.export":"将当前会话历史导出到文件","local.forget":"从托管的自动记忆中移除匹配的条目","local.hooks":"管理 O1-Code 钩子","local.importConfig":"从 Claude 配置导入 MCP 服务器","local.init":"分析项目并创建 AGENTS.md 文件","local.insight":"根据聊天历史生成编程洞察","local.lsp":"显示 LSP 服务器状态","local.remember":"将持久记忆保存到记忆系统","local.summary":"生成项目摘要文件","local.workflows":"列出工作流运行,或协作式暂停/恢复运行中的任务","skilldesc.batch":"并行批量处理多个文件","skilldesc.dataviz":"图表与数据可视化设计指南","skilldesc.extensionCreator":"创建、测试和定制 O1-Code 扩展","skilldesc.goalDraft":"将模糊意图改写为可验证的 /goal 目标","skilldesc.loop":"按计划或自定节奏循环运行提示词","skilldesc.newApp":"从零构建新应用的工作流","skilldesc.qcHelper":"解答 O1-Code 使用相关问题","skilldesc.review":"审查代码变更的正确性、安全、质量与性能","skilldesc.simplify":"清理近期代码变更(复用与精简)","skilldesc.stuck":"诊断卡死或缓慢的 O1-Code 会话","skilldesc.agentReproduceAlign":"将已移植的 Codex/Claude Code 功能与原版对齐","skilldesc.agentReproduceFeature":"复现 Codex/Claude Code 的现有功能","skilldesc.autofix":"审查并修复本地改动,或运行仓库 Autofix 工作流","skilldesc.bugfix":"按先复现流程修复 GitHub issue 中的 bug","skilldesc.codegraph":"通过图数据库和向量索引分析代码库","skilldesc.createIssue":"根据想法或 bug 描述起草并提交 GitHub issue","skilldesc.docsAuditAndRefresh":"对照代码库审计并刷新 docs/ 文档","skilldesc.docsUpdateFromDiff":"按本地 git diff 更新官方文档","skilldesc.e2eTesting":"运行 O1-Code CLI 的端到端测试","skilldesc.featDev":"实现非平凡功能的端到端工作流","skilldesc.memoryLeakDebug":"用堆快照诊断 CLI 内存泄漏","skilldesc.preparePr":"从当前分支准备 GitHub PR 标题和正文","skilldesc.o1codeClaw":"将 O1-Code 用作代码理解智能体","skilldesc.structuredDebugging":"假设驱动的疑难 bug 调试方法","skilldesc.terminalCapture":"自动化终端 UI 截图测试","skilldesc.tmuxRealUserTesting":"用 tmux 做真实用户测试并保存日志","skilldesc.triage":"把关和审查 O1-Code 的 issue 与 PR","local.approvalMode":"切换审批模式","local.auth":"连接 LLM provider","auth.title":"连接 Provider","auth.step.group":"类型","auth.step.provider":"供应商","auth.step.protocol":"协议","auth.step.api":"API","auth.step.baseUrl":"Base URL","auth.step.apiKey":"API Key","auth.step.models":"模型 ID","auth.step.advanced":"高级配置","auth.protocol.openai":"OpenAI 兼容","auth.protocol.openaiDesc":"标准 OpenAI API 格式(最常用)","auth.protocol.anthropic":"Anthropic 兼容","auth.protocol.anthropicDesc":"Anthropic Messages API 格式","auth.protocol.gemini":"Gemini 兼容","auth.protocol.geminiDesc":"Google Gemini API 格式","auth.api.chatCompletions":"Chat Completions","auth.api.responses":"Responses","auth.apiKeyRequired":"API key 不能为空。","auth.baseUrlInvalid":"Base URL 必须以 http:// 或 https:// 开头。","auth.baseUrlPrompt":"输入此协议的 API endpoint。","auth.baseUrlRequired":"Base URL 不能为空。","auth.documentation":"文档","auth.modelsRequired":"模型 ID 不能为空。","auth.review":"确认","auth.reviewText":"保存前请确认连接信息和模型参数。","auth.save":"保存","auth.saving":"正在保存...","auth.termsTitle":"服务条款和隐私声明","auth.continue":"继续","auth.modelsPrompt":e=>`输入以逗号分隔的模型 ID。例如:${e?.modelIds??""}`,"auth.advanced.prompt":"可选:配置高级生成设置。","auth.advanced.thinking":"启用 thinking","auth.advanced.thinkingDesc":"启用扩展推理;不勾选时保留模型默认行为。","auth.advanced.modality":"启用多模态","auth.advanced.modalityDesc":"启用图片、视频等多模态输入能力。","auth.advanced.modalityImage":"图片","auth.advanced.modalityVideo":"视频","auth.advanced.modalityAudio":"音频","auth.advanced.modalityPdf":"PDF","auth.advanced.contextWindow":"上下文窗口","auth.advanced.contextDesc":"模型的上下文窗口 Token 容量,留空根据模型 ID 自动推断。","auth.advanced.contextPlaceholder":"上下文窗口(可选)","auth.advanced.maxTokens":"最大输出 Token","auth.advanced.maxTokensDesc":"每次回复的最大 Token 数,留空根据模型 ID 自动推断。","auth.advanced.tokenLimitInvalid":e=>`${e?.field??"Token 上限"}必须是 1 到 10,000,000 之间的整数。`,"auth.advanced.modalitiesRequired":"请至少选择一种输入类型,或关闭多模态选项。","auth.advanced.defaults":"使用模型默认值","auth.apiKeySet":"已设置(隐藏)","auth.apiKeyHint":"密钥保存在 ~/.o1-code/credentials/,仅你的用户可读","auth.group.organizaone":"OrganizaOne","auth.group.organizaoneDesc":"使用你的密钥连接 OrganizaOne","auth.group.apiKey":"API Key","auth.group.apiKeyDesc":"Anthropic、OpenAI、Google Gemini、xAI 等","auth.group.local":"本机","auth.group.localDesc":"在本机运行的模型","auth.group.custom":"自定义","auth.group.customDesc":"任意 URL,兼容 OpenAI 或 Anthropic","auth.step.port":"端口","auth.comingSoon":"即将推出","auth.organizaone.apiKey":"API Key","auth.organizaone.apiKeyDesc":"粘贴密钥;模型由 OrganizaOne 提供","auth.local.looking":"… 查找中","auth.local.detected":e=>`已检测 · ${e?.count??0} 个模型`,"auth.local.notRunning":"未运行","auth.local.lookAgain":"重新查找","auth.local.portPrompt":"daemon 所在主机上服务器的端口,或完整 URL。","local.btw":"快速问一个不影响主对话的侧边问题。用法:/btw <your question>","btw.empty":"请提供一个问题。用法:/btw <你的问题>","btw.side.empty":"请提供一个问题。用法:/btw side <你的问题>","btw.emptyAnswer":"未收到回答。","btw.failed":"回答 btw 问题失败","btw.answering":"+ 正在回答...","btw.shortcuts.pending":"按 Escape、Ctrl+C 或 Ctrl+D 取消","btw.shortcuts.done":"按 Space、Enter 或 Escape 关闭","local.clear":"以空上下文开始新会话;之前的会话会保留在磁盘上(可用 /resume 恢复)","local.context":'显示上下文窗口使用情况明细。使用 "/context detail" 查看逐项明细',"local.copy":"复制最后输出或代码片段","local.delete":"永久删除会话","local.release":"释放 live session","local.rewind":"回退当前会话","local.branch":"将当前对话分叉到新会话","local.fork":"基于当前对话启动后台智能体","local.help":"查看帮助和可用命令","local.language":"切换 UI 语言","local.mcp":"管理 MCP servers","local.memory":"管理 memory","local.model":"切换模型或设置 fast model","local.new":"开始新对话","local.plan":"进入 Plan 模式","local.goal":"设置目标并持续工作直到完成","local.recap":"生成会话摘要","recap.label":"回顾","recap.loading":"正在生成摘要...","recap.empty":"对话内容还不够,暂时无法生成摘要。","recap.failed":"生成摘要失败","rewind.action":"回退","rewind.confirm":"确认回退","rewind.empty":"当前会话没有可回退的快照。","rewind.failed":e=>`回退会话失败:${e?.reason??""}`,"rewind.loading":"正在加载可回退的 prompt...","rewind.promptFallback":e=>`Prompt ${e?.id??""}`,"rewind.rewinding":"回退中...","rewind.subtitle":"仅回退会话,不涉及文件。","rewind.title":"回退会话","rewind.turn":e=>`第 ${e?.turn??0} 个 prompt`,"local.rename":"重命名当前会话","rename.empty":"请输入会话名称,例如 /rename 项目调试,或使用 /rename --auto。","rename.success":e=>`会话已重命名为 ${e?.name??""}`,"local.reset":"重置当前对话","local.resume":"恢复历史会话","local.skills":"查看可用 skills","local.stats":"查看会话统计","local.tasks":"查看后台任务","local.status":"查看版本信息","local.theme":"切换主题","local.settings":"查看和编辑设置","local.schedule":"管理定时任务","local.extensions":"管理扩展。用法: /extensions manage|install <source>","extensions.label":"扩展","extensions.action.failed":e=>`扩展操作失败${e?.name?`(${e.name})`:e?.source?`(${e.source})`:""}:${e?.error??"未知错误"}`,"extensions.commands.refreshFailed":"刷新扩展命令失败。","extensions.install.failed":e=>`安装扩展失败${e?.source?`(${e.source})`:""}:${e?.error??"未知错误"}`,"extensions.manage.agents":"智能体:","extensions.manage.actions":"扩展操作","extensions.manage.add":"添加","extensions.manage.checkingUpdates":"正在检查更新...","extensions.manage.checkUpdates":"检查更新","extensions.manage.commands":"命令:","extensions.manage.contextFiles":"上下文文件:","extensions.manage.count":e=>`已安装 ${e?.count??0} 个扩展`,"extensions.manage.setting.disabled":"禁用","extensions.manage.setting.default":"默认","extensions.manage.setting.enabled":"启用","extensions.manage.setting.unknown":"状态不可用","extensions.manage.setting.unavailableDescription":"当前服务未返回扩展的全局和工作区设置,请重启 o1-code serve 后重试。","extensions.manage.userSetting":"全局设置","extensions.manage.userSettingDescription":"适用于用户工作区,工作区设置可单独覆盖。","extensions.manage.workspaceSetting":"工作区设置","extensions.manage.workspaceSettingDescription":"仅适用于当前工作区。","extensions.manage.disable":"禁用扩展","extensions.manage.disabled":e=>`扩展 "${e?.name??"扩展"}" 已禁用。`,"extensions.manage.disabling":e=>`正在禁用扩展 "${e?.name??"扩展"}"…`,"extensions.manage.inherited":e=>`扩展 "${e?.name??"扩展"}" 已恢复为全局设置。`,"extensions.manage.inheriting":e=>`正在将扩展 "${e?.name??"扩展"}" 恢复为全局设置…`,"extensions.manage.empty":"未安装扩展。","extensions.manage.emptyAgents":"此扩展没有智能体。","extensions.manage.emptyCommands":"此扩展没有命令。","extensions.manage.emptyContextFiles":"此扩展没有上下文文件。","extensions.manage.emptyDescription":"安装扩展以添加命令、Skills、智能体或 MCP servers。","extensions.manage.emptyMcpServers":"此扩展没有 MCP servers。","extensions.manage.emptySkills":"此扩展没有 Skills。","extensions.manage.enable":"启用扩展","extensions.manage.enabled":e=>`扩展 "${e?.name??"扩展"}" 已启用。`,"extensions.manage.enabling":e=>`正在启用扩展 "${e?.name??"扩展"}"…`,"extensions.manage.install":"安装","extensions.manage.installDescription":"输入 GitHub、Git 或 npm 扩展来源,或上传 Extension 压缩包。","extensions.manage.sourceTab":"来源","extensions.manage.archiveTab":"压缩包","extensions.manage.archiveSelect":"选择 .zip 或 .tar.gz 压缩包。","extensions.manage.archiveSelected":e=>`已选择压缩包:${e?.name??"Extension 压缩包"}`,"extensions.manage.archiveTooLarge":"Extension 压缩包不能超过 10 MB。","extensions.manage.archiveEmpty":"所选 Extension 压缩包为空。","extensions.manage.archiveInvalid":"请选择文件名有效且不超过 255 字节的 .zip 或 .tar.gz Extension 压缩包。","extensions.manage.installSelectPluginDescription":e=>`从「${e?.marketplace??"此市场"}」中选择插件。`,"extensions.manage.installTitle":"添加扩展","extensions.manage.installType":"安装类型:","extensions.manage.mcpServers":"MCP servers:","extensions.manage.marketplaceRoot":"此市场根目录","extensions.manage.name":"名称:","extensions.manage.notUpdatable":"不可更新","extensions.manage.operationFailed":"扩展操作失败。","extensions.manage.noDescription":"暂无描述","extensions.manage.noMatches":"没有匹配的扩展。","extensions.manage.origin":"来源平台:","extensions.manage.overview":"基本信息","extensions.manage.path":"路径:","extensions.manage.queued":e=>`扩展 "${e?.name??"扩展"}" 的操作已提交。`,"extensions.manage.refreshFailed":e=>`扩展操作已成功,但 session 刷新失败${e?.error?`:${e.error}`:"。"}`,"extensions.manage.restartRequired":"已更新,需要重启","extensions.manage.search":"搜索扩展…","extensions.manage.selectExtension":"请选择扩展","extensions.manage.settings":"设置:","extensions.manage.skills":"Skills:","extensions.manage.source":"来源:","extensions.manage.sourcePlaceholder":"https://github.com/owner/repository","extensions.manage.status":"状态:","extensions.manage.status.disabled":"已禁用","extensions.manage.status.enabled":"已启用","extensions.manage.title":"管理扩展","extensions.manage.unknownUpdate":"未知","extensions.manage.uninstalled":e=>`扩展 "${e?.name??"扩展"}" 已卸载。`,"extensions.manage.uninstalling":e=>`正在卸载扩展 "${e?.name??"扩展"}"…`,"extensions.manage.uninstallAction":"卸载扩展","extensions.manage.uninstallConfirm":e=>`确定卸载扩展 "${e?.name??"扩展"}"?`,"extensions.manage.upToDate":"已是最新","extensions.manage.update":"更新扩展","extensions.manage.updateAvailable":"有可用更新","extensions.manage.updateError":"检查更新失败","extensions.manage.updateComplete":"已更新","extensions.manage.updatedWithWarnings":"已更新,但有警告","extensions.manage.updateStatus":"更新状态:","extensions.manage.updating":"正在更新…","extensions.manage.updatingExtension":e=>`正在更新扩展 "${e?.name??"扩展"}"…`,"extensions.manage.updated":e=>`扩展 "${e?.name??"扩展"}" 已更新。`,"extensions.manage.updatedWithVersion":e=>`扩展 "${e?.name??"扩展"}" 已更新到 v${e?.version??""}。`,"extensions.manage.version":"版本:","extensions.manage.viewDetails":"查看详情","extensions.install.installed":e=>`扩展 "${e?.name??"扩展"}" 已安装。`,"extensions.install.installedWithVersion":e=>`扩展 "${e?.name??"扩展"}" v${e?.version??""} 已安装。`,"extensions.install.missingOptionValue":e=>`${e?.option??"选项"} 缺少值`,"extensions.install.requestFailed":"安装扩展失败","extensions.install.started":e=>`正在从 "${e?.source??""}" 安装扩展...`,"extensions.install.unknownOption":e=>`未知选项 ${e?.option??""}`,"extensions.install.usage":"用法: /extensions manage|install <source>","extensions.install.waitForSession":"等待会话连接后再安装扩展。","local.tools":"列出可用工具。用法: /tools [desc]","loadWarning.commands":"命令列表加载失败,斜杠命令可能不完整。","loadWarning.context":"会话上下文加载失败,当前模式可能不准确。","loadWarning.models":"模型列表加载失败,部分模型详情可能不可用。","mcp.action.auth":"认证","mcp.action.authHint":"daemon 尚未暴露","mcp.action.authMessage":"daemon serve 尚未暴露 MCP 认证能力。","mcp.action.clearAuth":"清空认证","mcp.action.disable":"禁用","mcp.action.done":e=>`${e?.action??"操作"}完成。`,"mcp.action.enable":"启用","mcp.action.enableMessage":"daemon serve 尚未暴露 MCP 启用/禁用能力。","mcp.action.failed":e=>`失败:${e?.error??""}`,"mcp.action.running":e=>`${e?.action??"操作"}中...`,"mcp.action.reauth":"重新认证","mcp.action.approve":"审批","mcp.actions":"服务器操作","mcp.annotation.destructive":"破坏性","mcp.annotation.idempotent":"幂等","mcp.annotation.openWorld":"开放世界","mcp.annotation.readOnly":"只读","mcp.annotations":"注解","mcp.oauth.server":"服务器","mcp.oauth.starting":e=>`正在为 MCP server '${e?.name??""}' 启动 OAuth 认证...`,"mcp.oauth.title":"OAuth 认证","mcp.oauth.timeout":"认证等待超时,请刷新后查看状态。","mcp.oauth.authenticationFailed":"认证失败。","mcp.oauth.statusFailed":"检查认证状态失败。","mcp.oauth.serverRemoved":"MCP 服务器已在认证期间被移除。","mcp.clientBudget":e=>`${e?.count??0}/${e?.budget??0} 个客户端 · ${e?.mode??"off"}`,"mcp.command":"命令","mcp.description":"描述:","mcp.descriptionTitle":"描述","mcp.basicInfo":"基本信息","mcp.action.reconnect":"重新连接","mcp.action.edit":"编辑","mcp.reconnect.skipped":e=>`重新连接未完成:${e?.reason??"未知原因"}。`,"mcp.reconnect.authenticationRequired":"请先完成认证,再重新连接。","mcp.action.restart":"重启","mcp.action.tools":"查看工具","mcp.action.toolsHint":"Enter 查看","mcp.empty":"未配置 MCP 服务器。","mcp.emptyDescription":"添加 MCP 服务器后可在此管理。","mcp.emptyTools":"没有发现工具。","mcp.expand":"展开 MCP server","mcp.collapse":"收起 MCP server","mcp.inputSchema":"输入 schema","mcp.loadingStatus":"正在加载 MCP 状态...","mcp.loadingTools":"正在加载工具...","mcp.name":"名称","mcp.noDescription":"没有描述","mcp.noMatches":"没有匹配的 MCP 服务器。","mcp.add.button":"添加","mcp.add.adding":"正在添加 MCP 服务器…","mcp.add.title":"添加 MCP 服务器","mcp.add.description":"输入服务器名称和配置,并保存到当前工作区。","mcp.add.name":"名称","mcp.add.serverDescription":"描述","mcp.add.serverDescriptionPlaceholder":"描述这个 MCP 服务器","mcp.add.scope":"保存位置","mcp.add.scope.global":"全局","mcp.add.nameRequired":"请输入 MCP 服务器名称。","mcp.add.config":"配置(JSON)","mcp.add.configInvalid":"配置必须是 JSON 对象。","mcp.add.done":e=>`已添加 ${e?.name??"MCP 服务器"}。`,"mcp.edit.title":"编辑 MCP 服务器","mcp.edit.description":"修改描述或配置。名称和保存位置不可修改。","mcp.edit.save":"保存修改","mcp.edit.saving":"正在保存修改…","mcp.edit.done":e=>`已更新 ${e?.name??"MCP 服务器"}。`,"mcp.edit.notFound":"设置中已不存在该 MCP 服务器。","mcp.runtime.notUpdated":"配置已保存,但未同步当前会话。","mcp.runtime.removeNotUpdated":"配置已删除,但未同步当前会话。","mcp.discovery.empty":"尚未配置 MCP 服务器。","mcp.discovery.timeout":"MCP 发现耗时较长,请刷新后查看状态。","mcp.add.settingsUnavailable":"无法读取工作区设置。","mcp.action.remove":"删除","mcp.remove.title":"删除 MCP 服务器","mcp.remove.description":e=>`确定从当前工作区移除 MCP 服务器“${e?.name??""}”吗?`,"mcp.remove.description.global":e=>`确定从全局设置中移除 MCP 服务器“${e?.name??""}”吗?`,"mcp.remove.done":e=>`已删除 ${e?.name??"MCP 服务器"}。`,"mcp.remove.notWorkspace":"此 MCP 服务器不在工作区设置中。","mcp.source.all":"全部","mcp.noSchema":"没有输入 schema。","mcp.oauth.open":"打开认证页面","mcp.serverTool":"服务器工具","mcp.servers":e=>`${e?.count??0} 个服务器`,"mcp.configuredServers":"已配置的 MCP 服务器:","mcp.fromExtension":e=>`(来自 ${e?.name??""})`,"mcp.extensionMcp":"扩展 MCP","mcp.invalidReason":e=>`无效:${e?.reason??""}`,"mcp.invalidReasonLabel":"原因:","mcp.invalidToolHelp":"工具必须同时包含 name 和 description 才能被 LLM 使用。","mcp.invalidToolWarning":"警告:这个工具不能被 LLM 调用","mcp.manageServers":"管理 MCP servers","mcp.viewDetails":"查看详情","mcp.parameters":"参数:","mcp.required":" 必填","mcp.resources":"资源","mcp.resourcesUnavailable":"无法加载资源详情。","mcp.noResources":"没有资源。","mcp.resourceCount":e=>`${e?.count??0} 个资源`,"mcp.promptCount":e=>`${e?.count??0} 个提示词`,"mcp.resource.uriLabel":"URI:","mcp.resource.nameLabel":"名称:","mcp.resource.mimeTypeLabel":"MIME 类型:","mcp.resource.sizeLabel":"大小:","mcp.resource.bytes":e=>`${e?.count??0} 字节`,"mcp.scrollPosition":e=>`${e?.current??0}/${e?.total??0}`,"mcp.shortcut.back":"Esc 返回","mcp.shortcut.close":"Esc 关闭","mcp.shortcut.selectBack":"↑↓ 导航 · Enter 选择 · Esc 返回","mcp.shortcut.selectClose":"↑↓ 导航 · Enter 选择 · Esc 关闭","mcp.settings":"设置","mcp.extension":e=>`扩展:${e?.name??""}`,"mcp.starting":e=>`⏳ MCP 服务器正在启动(${e?.count??0} 个初始化中)...`,"mcp.startingNote":"注意:首次启动可能需要更长时间。工具可用性会自动更新。","mcp.restartSkipped":e=>`已跳过 ${e?.name??""}:${e?.reason??""}`,"mcp.restarted":e=>`已重启 ${e?.name??""},耗时 ${e?.duration??0}ms`,"mcp.restartEntries":e=>`已重启 ${e?.name??""} 的 ${e?.restarted??0}/${e?.total??0} 个条目${e?.failedReasons?`(失败:${e.failedReasons})`:""}`,"mcp.source":"来源","mcp.source.extension":"扩展","mcp.source.project":"项目 MCP(.mcp.json)","mcp.source.workspace":"工作区设置","mcp.source.user":"全局设置","mcp.status":"状态","mcp.status.blocked":"已阻止","mcp.status.authenticating":"认证中","mcp.status.authenticationFailed":"认证失败","mcp.status.needsAuthentication":"待认证","mcp.status.needsApproval":"待审批","mcp.status.rejected":"已拒绝","mcp.status.connected":"已连接","mcp.status.connecting":"连接中","mcp.status.disconnected":"未连接","mcp.status.disconnectedTitle":"已断开","mcp.status.disabled":"已禁用","mcp.status.ready":"就绪","mcp.status.starting":"启动中...(首次启动可能需要更长时间)","mcp.status.unknown":"未知","mcp.tipDesc":"显示 server 和工具描述","mcp.tipNodesc":"隐藏描述","mcp.tipSchema":"显示工具参数 schema","mcp.tips":"💡 提示:","mcp.toolCount":e=>`${e?.count??0} 个工具`,"mcp.toolsCount":e=>`${e?.count??0} 个工具`,"mcp.toolsLabel":"工具:","mcp.title":"MCP 服务器","mcp.toolDetail":"工具详情","mcp.tools":"工具","mcp.toolsForServer":e=>`${e?.name??"Server"} 的工具`,"mcp.transport":"传输协议","mcp.use":"使用","mcp.userMcp":"全局 MCP","mcp.workingDirectory":"工作目录","goal.aborted":"目标已中止","goal.blocked":"目标已阻塞","goal.usageLimited":"目标用量受限","goal.paused":"目标已暂停","goal.achieved":"目标已达成","goal.check":"目标检查","goal.cleared":"目标已清除","goal.failed":"目标未能达成","goal.judge":"判断","goal.label":"目标","goal.lastCheck":"上次检查","goal.notYetMet":"尚未满足","goal.set":"目标已设置","goal.statusActive":"/goal 运行中","goal.status.active":"进行中","goal.status.paused":"已暂停","goal.status.blocked":"已阻塞","goal.status.usage_limited":"用量受限","goal.status.complete":"已完成","goal.activity.idle":"等待中","goal.activity.running":"执行中","goal.activity.verifying":"验证中","goal.edit":"编辑目标","goal.pause":"暂停目标","goal.resume":"继续目标","goal.turn":e=>`${e?.count??0} 轮`,"goal.turnLabel":e=>`第 ${e?.count??0} 轮`,"goal.turns":e=>`${e?.count??0} 轮`,"goal.turnsOfBudget":e=>`${e?.count??0} / ${e?.budget??0} 轮`,"goal.activeOfBudget":e=>`${e?.used??""} / ${e?.budget??""}`,"goal.tokens":e=>`已用 ${e?.used??0} tokens`,"goal.tokensOfBudget":e=>`已用 ${e?.used??0} / ${e?.budget??0} tokens`,"goals.title":"目标","goals.subtitle":"目标会让所在会话持续工作,直到条件满足。这里只列出当前已加载的会话——目标只在会话运行时才会推进。","goals.loading":"正在加载目标…","goals.count":e=>`${e?.count??0} 个进行中的目标`,"goals.empty":"没有进行中的目标。用 /goal <条件> 设置一个。","goals.refresh":"刷新","goals.new":"新建目标","goals.newHint":"目标会在一个新会话中启动,并持续运行直到条件满足。如需强制的轮数或时长上限,请在对话中运行 /config model.goalMaxTurns=20 或 /config model.goalMaxActiveMinutes=30,daemon 重启后生效,且只对之后新建的 Goal 生效。","goals.condition":"条件","goals.conditionPlaceholder":"例如:`npm test` 退出码为 0 且 `npm run lint` 无告警(贴出输出);不得修改测试文件;模型参考 20 轮内未达成则以 blocked 结束","goals.cancel":"取消","goals.create":"设置目标","goals.creating":"正在启动…","goals.saving":"正在保存…","goals.save":"保存","goals.edit":"编辑目标","goals.objective":"目标","goals.clear":"清除目标","goals.clearConfirm":e=>`确定清除目标“${e?.condition??""}”?`,"goals.running":"工作中","goals.idle":"等待中","goals.dropped":e=>`有 ${e?.count??0} 个会话无法访问——它们正在运行的目标未显示在此列表中。`,"goals.notYetEvaluated":"尚未判定","goals.openSessionHint":"打开该目标所在的会话","goals.error.emptyCondition":"请输入目标条件。","goals.error.clearKeyword":e=>`“${e?.word??""}”是清除目标的指令,不是一个条件。请描述要达成的条件。`,"goals.error.createFailed":"启动目标失败","goals.error.saveFailed":"保存目标失败","goals.error.goalUnavailable":"该目标已不可用。","goals.error.requiresObjective":e=>`/goal ${e?.keyword??"set"} 需要提供目标内容。`,"goals.error.invalidCommand":"无效的 /goal 命令","goals.error.goalsUnavailable":"当前界面不支持打开目标视图。","goals.error.attachmentsUnsupported":"使用 /goal 前请先移除附件。","goals.error.editFailed":"编辑目标失败","goals.error.pauseFailed":"暂停目标失败","goals.error.resumeFailed":"继续目标失败","goals.error.clearFailed":"清除目标失败","goals.error.controlBusy":"还有一个目标操作正在进行,请等它完成后再试。","memory.add":"添加","memory.add.desc":"写入一条持久 memory","memory.autoDream":e=>`自动整理:${e?.status??"未知"} · ${e?.lastDream??"从未"} · /dream 立即运行`,"memory.autoDreamUnsupported":"web-shell 暂不支持修改自动整理设置。","memory.autoFolder":"打开自动记忆文件夹","memory.autoMemory":e=>`自动记忆:${e?.status??"未知"}`,"memory.autoMemoryUnsupported":"web-shell 暂不支持修改自动记忆设置。","memory.autoSkill":e=>`自动技能:${e?.status??"未知"}`,"memory.autoSkillUnsupported":"web-shell 暂不支持修改自动技能设置。","memory.chooseScope":"选择 memory 的保存位置","memory.closed":"Memory 面板已关闭。","memory.contentEmpty":"Memory 内容为空。","memory.file":"Memory 文件","memory.fileOpen":"Memory 文件已打开。","memory.fileTruncated":"Memory 文件已打开,内容已截断。","memory.files":"Memory 文件","memory.footer":"Enter 确认 · Esc 取消","memory.footer.back":"Esc 返回","memory.global":"用户级","memory.global.desc":"保存到全局用户 memory 文件","memory.globalReadUnsupported":"全局 memory 位于当前 workspace 之外,当前 daemon 文件读取接口不能打开它的内容。","memory.loading":"正在加载 memory...","memory.loadingFile":"正在加载 memory 文件...","memory.lastDream":"5 hours ago","memory.menu":"Memory","memory.never":"从未","memory.noFiles":"未找到 memory 文件。","memory.on":"开","memory.openFolderUnsupported":"web-shell 暂不支持打开自动记忆文件夹。","memory.placeholder":e=>`写入${e?.scope??"memory"}内容...`,"memory.project":"项目级","memory.project.desc":"保存到当前 workspace memory 文件","memory.refresh":"刷新","memory.refresh.desc":"重新加载 memory 文件信息","memory.refreshed":"Memory 已刷新。","memory.save":"保存 Memory","memory.savedIn":e=>`Saved in ${e?.path??""}`,"memory.saved":e=>`${e?.scope??"Memory"} 已保存:${e?.bytes??0} 字节 -> ${e?.path??""}`,"memory.saving":"保存中...","memory.show":"查看","memory.show.desc":"查看已配置的 memory 文件","memory.status":"Workspace 和用户 memory 文件","memory.unknown":"未知","memory.write":"写入 memory 内容","mode.auto":"智能审批","mode.auto.desc":"使用分类器评估工具调用,安全操作自动批准,风险操作阻止或请求确认","mode.auto.notice":"Auto 模式已启用。LLM 分类器会评估每个工具调用,自动批准安全操作,拦截危险操作。退出方式:Shift+Tab 或 /approval-mode default。","mode.footer":"(Enter 选择,Esc 取消)","mode.name.plan":"plan","mode.name.default":"default","mode.name.auto-edit":"auto-edit","mode.name.auto":"auto","mode.name.yolo":"yolo","plan.toggle.on":"执行前先制定计划","plan.toggle.off":e=>`规划中,批准后按${e?.mode}执行。点击退出规划。`,"approval.option.executePlan":e=>`批准并执行 · ${e?.mode}`,"mode.label.plan":"计划","mode.label.default":"请求批准","mode.label.auto-edit":"自动编辑","mode.label.auto":"智能审批","mode.label.yolo":"完全访问权限","mode.listLabel.plan":"计划(plan)","mode.listLabel.default":"请求批准(default)","mode.listLabel.auto-edit":"自动编辑(auto-edit)","mode.listLabel.auto":"智能审批(auto)","mode.listLabel.yolo":"完全访问权限(yolo)","mode.desc.plan":"仅分析,不修改文件或执行命令","mode.desc.default":"执行命令、编辑文件或访问外部资源前请求确认","mode.desc.auto-edit":"自动批准文件编辑,命令执行等敏感操作仍会询问","mode.desc.auto":"自动评估工具风险,安全操作直接执行,风险操作再确认","mode.desc.yolo":"自动批准所有工具调用,适合可信任务环境","mode.select":"审批模式","mode.changePending":"模式切换或计划确认尚未完成,请稍后重试。","mode.autoApproved":(e=>e?.tool?`已自动批准:${e.tool}`:"切换模式后自动批准了待处理的工具调用。"),"mode.auto-edit":"自动编辑","mode.auto-edit.desc":"自动批准文件读写操作","mode.default":"默认模式","mode.default.desc":"每次工具调用都需要确认","mode.plan":"Plan 模式","mode.plan.desc":"仅分析和规划,不执行工具","mode.unknown":"未知模式","mode.yolo":"YOLO 模式","mode.yolo.desc":"自动批准所有操作","plan.title":"计划","model.contextWindow":"上下文窗口","model.contextWindow.unknown":"(未知)","model.current":e=>`当前:${e?.model??"未知"}`,"model.modality":"模态","model.modality.text":"文本","model.modality.textOnly":"仅文本","model.modality.image":"图片","model.modality.pdf":"PDF","model.modality.audio":"音频","model.modality.video":"视频","model.baseUrl":"Base URL","model.apiKey":"API Key","model.default":"(默认)","model.notSet":"(未设置)","model.footer":"Enter 选择,↑↓ 导航,Esc 关闭","model.searchHint":"按 / 搜索","model.fastHint":"用于建议和旁路任务","model.noMatch":e=>`没有匹配 "${e?.query??""}" 的模型`,"model.unavailable":"模型列表暂不可用,将使用守护进程默认模型。","model.none":"没有可用模型","model.select":"选择模型","model.section":"模型","reasoning.options":"选项","reasoning.thinking":"思考","reasoning.thinkingOff":"思考已关闭","reasoning.effort":"思考强度","reasoning.effort.low":"低","reasoning.effort.medium":"中","reasoning.effort.high":"高","reasoning.effort.xhigh":"极高","reasoning.effort.max":"最高","reasoning.updateFailed":"更新思考选项失败","model.setFast":"设置 Fast Model","model.setVoice":"设置语音模型","auth.purpose.label":"模型用途","auth.purpose.chat":"对话","auth.purpose.chatHint":"将此提供商用于对话。配置包含当前模型时会保留当前选择。","auth.purpose.image":"生图","auth.purpose.voice":"语音转写","auth.purpose.realtime":"实时语音","auth.purpose.imageHint":"支持 DashScope 或 MiniMax 兼容生图接口,请使用不含查询参数或片段的 HTTPS 地址。添加后保留当前对话模型。","auth.purpose.voiceHint":"请选择 OpenAI Chat Completions API,使用 qwen3-asr-flash、qwen3-asr-flash-realtime、fun-asr-realtime 或 paraformer-realtime 等受支持的转写模型。添加后保留当前对话模型。","settings.models.editWindow":"配置窗口大小","settings.models.windowHint":"留空根据模型 ID 自动推断。已有会话需重启后使用新窗口大小。","settings.models.windowSaved":"已保存,重启已有会话后生效。","settings.models.saved":"已保存","model.setAdvisor":"设置顾问模型","settings.label.advisorModel":"顾问模型","settings.label.imageModel":"生图模型","settings.label.voiceModel":"语音转写模型","settings.description.advisorModel":"用于复查近期对话进展,默认使用主模型。","settings.description.imageModel":"用于生成图片。添加自定义模型时选择“生图”用途,再在这里选择。","settings.description.voiceModel":"用于将语音转成文字。添加自定义模型时选择“语音转写”用途,再在这里选择。","model.setImage":"设置生图模型","model.useMain":"使用主模型","model.disabled":"不启用","model.setVision":"设置视觉模型","model.switch":"切换模型","model.unknown":"未知","resume.current":"当前","resume.activePrompt":"正在运行","resume.filter":"筛选","resume.noMatch":e=>`没有匹配 "${e?.query??""}" 的会话`,"resume.none":"没有可恢复的会话","resume.pressSearch":"按 / 搜索","resume.search":"搜索","resume.title":"恢复会话","parallelAgents.title":"并行智能体","parallelAgents.done":e=>`${e?.done??0}/${e?.total??0} 完成`,"parallelAgents.failed":e=>`失败 ${e?.count??0} 个`,"skills.actions":"Skill 操作","skills.disable":"禁用","skills.disabled":"Skill 已禁用。","skills.enable":"启用","skills.enabled":"Skill 已启用。","skills.install.action":"上传","skills.install.description":"从 GitHub、本地文件夹或 ZIP 压缩包安装技能。","skills.install.error.authentication":"上传技能需要身份认证。","skills.install.error.folderRequired":"请输入文件夹路径。","skills.install.error.githubRequired":"请输入 GitHub SKILL.md 地址。","skills.install.error.invalidName":"技能名称缺失或包含不支持的字符。","skills.install.error.manifestMissing":"技能包根目录中必须包含 SKILL.md 文件。","skills.install.error.invalidPackage":"技能包无效,请检查目录结构和 SKILL.md 内容。","skills.install.error.zipTooLarge":"ZIP 文件不能超过 6 MB。","skills.install.error.invalidFolder":"请输入有效的本地技能文件夹路径。","skills.install.error.githubFailed":"无法从 GitHub 下载技能,请检查地址或认证信息后重试。","skills.install.error.invalidScope":"请选择工作区或全局安装位置。","skills.install.error.invalidSource":"当前 daemon 无法识别这种上传来源,请重启已更新的 daemon 后重试。","skills.install.error.notFound":"未找到指定的技能。","skills.install.error.nameRequired":"请输入技能名称。","skills.install.error.untrusted":"请先信任当前工作区,再上传技能。","skills.install.failed":"上传技能失败。","skills.install.folder":"本地文件夹","skills.install.folderPath":"文件夹路径","skills.install.githubUrl":"SKILL.md 地址","skills.install.name":"技能名称","skills.install.scope":"安装位置","skills.install.scope.global":"全局","skills.install.scope.workspace":"工作区","skills.install.selectZip":"请选择 ZIP 压缩包。","skills.install.title":"上传技能","skills.install.succeeded":e=>`技能“${e?.name??""}”上传成功。`,"skills.install.zipSelected":e=>`已选择:${e?.name??""}`,"skills.delete.action":"删除技能","skills.delete.description":e=>`确定从磁盘删除“${e?.name??""}”吗?此操作无法撤销。`,"skills.delete.failed":"删除技能失败。","skills.delete.succeeded":e=>`技能“${e?.name??""}”删除成功。`,"skills.delete.title":"删除技能?","skills.empty":"没有可用 skill。","skills.count":e=>[`${e?.count??0} 个技能`,...e?.enabled?[`已启用 ${e.enabled} 个`]:[],...e?.disabled?[`已禁用 ${e.disabled} 个`]:[]].join(","),"skills.details":"Skill 详情","skills.extension":"所属扩展","skills.filter.all":"全部","skills.filter.bundled":"内置","skills.filter.extension":"扩展","skills.filter.label":"按来源筛选 Skills","skills.filter.project":"工作区设置","skills.filter.status.all":"全部","skills.filter.status.disabled":"已禁用","skills.filter.status.enabled":"已启用","skills.filter.status.label":"按状态筛选技能","skills.filter.user":"全局设置","skills.hint":"提示","skills.invocation":"调用方式","skills.level":"作用域","skills.level.bundled":"内置","skills.level.extension":"扩展","skills.level.project":"项目","skills.level.user":"全局","skills.loading":"正在加载 skills...","skills.manualReference":"手动引用","skills.manualReferenceHint":"模型无法自动识别,需手动引用 skill","skills.model":"模型","skills.modelAccess":"模型调用","skills.modelAccess.disabled":"不可由模型调用","skills.modelAccess.enabled":"可由模型调用","skills.modelInvocable":"模型可用","skills.noDescription":"暂无描述","skills.noMatches":"没有匹配的 Skill。","skills.notToggleable":"此 Skill 不支持启用或禁用。","skills.run":"引用 skill","skills.search":"搜索 Skills…","skills.settingUpdated":"Workspace 设置已更新。","skills.settingUpdatedAvailabilityUnchanged":"Workspace 设置已更新,Skill 的实际可用状态未改变。","skills.settingUnchanged":"Skill 已处于请求的 Workspace 设置,无需更改。","skills.status":"状态","skills.status.disabled":"已禁用","skills.status.enabled":"已启用","skills.toggleFailed":"更新 Skill 失败。","skills.error.inactiveExtension":"该技能所属扩展当前未启用,请先启用对应扩展。","skills.toggleUnsupported":"当前连接的 daemon 不支持启用或禁用 Skill。","skills.title":"Skills","plugins.extensions":"扩展","plugins.agents":"智能体","plugins.mcp":"MCP","plugins.sections":"插件分类","plugins.skills":"技能","plugins.title":"插件","plugins.tools":"工具","stats.accepted":"已接受:","stats.agreementRate":"总体同意率:","stats.api":"API","stats.apiTime":"API 耗时","stats.avgDuration":"平均耗时","stats.avgLatency":"平均延迟","stats.cached":"缓存","stats.cacheDesc":"的输入 Token 来自缓存,降低了成本。","stats.calls":"调用次数","stats.codeChanges":"代码变更","stats.decisionSummary":"用户决策摘要","stats.duration":"时长","stats.errors":"错误数","stats.inputTokens":"输入 Token","stats.metric":"指标","stats.modelStats":"模型统计(技术细节)","stats.modelTip":"提示:运行 /stats model 查看完整 Token 明细。","stats.modelUsage":"模型使用","stats.modified":"已修改:","stats.noApiCalls":"本次会话暂无 API 调用。","stats.noToolCalls":"本次会话暂无工具调用。","stats.outputTokens":"输出 Token","stats.overview":"会话概览","stats.performance":"性能","stats.prompts":"对话轮次","stats.rejected":"已拒绝:","stats.reqs":"请求","stats.requests":"请求数","stats.savingsHighlight":"节省亮点:","stats.successRate":"成功率","stats.thoughts":"思考","stats.title":"会话统计","stats.tokens":"Token","stats.toolCalls":"工具调用","stats.toolName":"工具名称","stats.toolStats":"工具统计(技术细节)","stats.toolTime":"工具耗时","stats.total":"总计","stats.totalReviewed":"已审核建议总数:","contextUsage.refresh":"刷新","contextUsage.remaining":"剩余","contextUsage.advanced":"高级 · 用量分类","contextUsage.snapshot":"历史快照","contextUsage.viewCurrent":"查看当前上下文","contextUsage.compress":"手动压缩","contextUsage.compressing":"正在压缩…","contextUsage.compressed":"压缩完成,已刷新上下文用量。","contextUsage.compressCancelled":"已请求取消压缩,请刷新确认当前用量。","contextUsage.compressInterrupted":"压缩期间连接发生变化,请刷新查看当前使用量。","contextUsage.compressFailed":"压缩失败,可以重试。","contextUsage.compressRefreshFailed":"压缩已完成,但用量刷新失败。请点击刷新重试。","contextUsage.compressUnavailable":"会话连接正常、空闲、可写、没有活动目标且支持内置压缩命令时可用。","contextCompression.result":e=>`上下文已压缩 ${e?.from??""} → ${e?.to??""}`,"contextCompression.instructionsTruncated":e=>`压缩指令已截断为 ${e?.max??""} 个字符。`,"contextCompression.noop":"无需压缩。","contextUsage.retry":"重试","contextUsage.loadError":"上下文使用情况加载失败。","contextUsage.previousReading":"刷新失败,当前显示先前读数。","contextUsage.unavailable":"当前会话无法读取上下文使用情况。","tokenUsage.avgLatency":"平均延迟","tokenUsage.cached":"缓存输入","tokenUsage.input":"输入","tokenUsage.loadError":"Token 消耗加载失败。","tokenUsage.models":"按模型","tokenUsage.noData":"本会话还没有 API 调用。","tokenUsage.noSubagents":"本会话还没有子 agent 调用。","tokenUsage.noTools":"本会话还没有工具调用。","tokenUsage.open":"会话 Token 消耗","tokenUsage.output":"总输出","tokenUsage.refresh":"刷新","tokenUsage.requests":"请求","tokenUsage.retry":"重试","tokenUsage.subagents":"子agent","tokenUsage.thoughts":"思考(包含在总输出中)","tokenUsage.title":"Token 消耗","tokenUsage.toolRow":e=>`${e?.count??0} 次 · 成功率 ${e?.rate??0}% · ${e?.duration??""}`,"tokenUsage.tools":"工具","tokenUsage.updatedAt":e=>`更新于 ${e?.time??""}`,"tokenUsage.unavailable":"当前会话无法读取 Token 消耗。","trajectory.title":"轨迹","trajectory.description":"查看这次运行把时间和 token 花在了哪里","trajectory.empty":"这个会话还没有记录。","trajectory.noTiming":"这些记录没有请求或工具的耗时数据。","trajectory.truncated":"只显示这个会话最近的记录。","trajectory.loadFailed":e=>`读取会话记录失败:${e?.message??""}`,"trajectory.partial":"这份会话记录有一部分读不出来,缺少了一些记录。","trajectory.totals":e=>`${e?.turns??0} 轮 · ${e?.requests??0} 次请求 · ${e?.tools??0} 次工具 · ${e?.duration??""}`,"trajectory.turn":e=>`第 ${e?.index??0} 轮`,"trajectory.turnPartial":e=>`第 ${e?.index??0} 轮(接上文)`,"trajectory.turnSummary":e=>`${e?.requests??0} 次请求 · ${e?.tools??0} 次工具 · ${e?.duration??""}`,"trajectory.request":"模型请求","trajectory.requestFailed":"请求失败","trajectory.ttft":e=>`首字 ${e?.duration??""}`,"trajectory.subagentRollup":e=>`子代理 ${e?.requests??0} 次请求 · ${e?.tools??0} 次工具 · ${e?.duration??""}`,"trajectory.badge.user":"用户","trajectory.badge.message":"回复","trajectory.badge.thought":"思考","trajectory.badge.tool":"工具","trajectory.badge.subagent":"子代理","trajectory.badge.shell":"终端","trajectory.badge.permission":"询问","trajectory.badge.status":"提示","trajectory.badge.cancelled":"中断","trajectory.badge.other":"其他","trajectory.cancelled":"本轮已取消","status.contextUsed":e=>`上下文已用 ${e?.pct??"0.0"}%`,"status.disconnected":"断开连接","status.modeHint":"(shift + tab 或点击切换)","status.shortcuts":"? 查看快捷键","stream.cancel":"esc 取消","stream.cancelArmed":"再按一次 Esc 停止","stream.tokens":e=>`${e?.count??0} tokens`,"theme.current":e=>`当前:${e?.theme??""}`,"theme.auto":"自动","theme.dark":"暗色","theme.dark.desc":"仿终端暗色皮肤。","theme.light":"亮色","theme.light.desc":"仿终端亮色皮肤。","theme.title":"主题","todo.allDone":"任务已全部完成","todo.collapse":"折叠任务列表","todo.completedAbove":e=>`✓ 已完成 ${e?.count??0} 项`,"todo.detail.api":"API","todo.detail.cached":"缓存","todo.detail.end":"结束","todo.detail.hide":"收起任务明细","todo.detail.input":"输入","todo.detail.noResources":"未采集到该任务的 Token 与耗时明细。","todo.detail.output":"输出","todo.detail.sectionSpent":"耗时","todo.detail.sectionTime":"时间","todo.detail.sectionTokens":"Token","todo.detail.show":"查看任务明细","todo.detail.start":"开始","todo.detail.tool":"工具","todo.expand":"展开任务列表","todo.more":e=>`... 还有 ${e?.count??0} 项`,"todo.moreAbove":e=>`... 前面还有 ${e?.count??0} 项`,"todo.showLess":"收起","todo.stepProgress":e=>`第 ${e?.current??0} / ${e?.total??0} 步`,"todo.stepFraction":e=>`${e?.current??0} / ${e?.total??0}`,"todo.title":"当前任务","planExecution.dialogTitle":"计划与任务","planExecution.title":"计划执行","planExecution.overview":"工作流概况","planExecution.overallProgress":"整体进度","planExecution.stepsCompleted":"步骤已完成","planExecution.activeAgents":"Agent 正在工作","planExecution.needsAttention":"需要关注","planExecution.stepDetails":"步骤详情","planExecution.subagents":"子智能体","planExecution.noSubagents":"该步骤暂未关联 Agent。","planExecution.openDetails":"打开子智能体详情","planExecution.currentActivity":"当前动作:","planExecution.toolCalls":e=>`${e?.count??0} 次工具调用`,"planExecution.tokens":e=>`${e?.count??0} tokens`,"planExecution.view":"查看计划执行","planExecution.dependsOn":"依赖:","planExecution.unblocks":"解锁:","planExecution.unassigned":"未关联的执行","planExecution.attention":"需要关注","planExecution.agentCount":e=>`${e?.count??0} 个 Agent`,"planExecution.status.running":"运行中","planExecution.status.paused":"已暂停","planExecution.status.completed":"已完成","planExecution.status.blocked":"被阻塞","planExecution.status.in_progress":"进行中","planExecution.status.ready":"就绪","planExecution.edgesHidden":e=>`依赖过多(${e?.count??0} 条),无法绘制连线,已改为在每个步骤上列出。`,"workflow.chatTitle":"对话","workflow.title":"工作流","workflow.inspector.summary":"工作流进度","workflow.inspector.selectedStep":"当前步骤","workflow.inspector.allSteps":"全部步骤","workflow.inspector.recentActivity":"最近 Agent 活动","workflow.inspector.expandGraph":"展开依赖图","workflow.inspector.graphCanvas":"依赖图画布","workflow.inspector.canvasHint":"在图中选择节点,可在这里查看依赖和 Agent 执行。","workflow.inspector.activeAgents":e=>`${e?.count??0} 个运行中的 Agent`,"workflow.inspector.attentionCount":e=>`${e?.count??0} 个需要关注`,"workflow.planReview.title":"计划并审阅","workflow.planReview.question":"确认计划并开始协作?","workflow.planReview.confirm":"确认并开始","workflow.planReview.continuePlanning":"继续完善计划","workflow.empty.title":"这个会话还没有结构化工作流","workflow.empty.copy":"返回对话,进入计划并审阅,让模型先写入带稳定 ID 和依赖的待办。","workflow.empty.action":"返回对话创建计划","workflow.tabs.attention":"待我处理","workflow.connection.connected":"Daemon 已连接","workflow.connection.reconnecting":"Daemon 正在重连","workflow.session.defaultTitle":"当前会话工作流","workflow.session.workspace":"工作区","workflow.dependencies.upstream":"依赖于","workflow.dependencies.none":"无","workflow.dependencies.unblocks":"解除阻塞","workflow.dependencies.noDownstream":"没有下游步骤","workflow.activity.empty":"还没有关联到待办的 Agent 执行。","workflow.activity.showAll":e=>`查看全部 ${e?.count??0} 条执行`,"workflow.deliverables.title":"会话交付物","workflow.deliverables.none":"尚未发布产物","workflow.status.running":"运行中","workflow.status.paused":"已暂停","workflow.status.completed":"已完成","workflow.status.failed":"失败","workflow.status.cancelled":"已取消","workflow.task.completed":"已完成","workflow.task.attention":"需要关注","workflow.task.running":"协作运行中","workflow.task.waitingExecution":"等待执行","planExecution.locateCurrent":"定位当前步骤","status.mode":"审批模式","chat.scrollToBottom":"回到底部","chatHeader.toggleEnvironment":"切换环境信息","chatHeader.toggleRightPanel":"切换右侧扩展区","environment.title":"环境信息","environment.changes":"变更","environment.changeCount":e=>`${e?.count??0} 项变更`,"environment.clean":"无变更","environment.workspace":"工作区","environment.branch":"分支","environment.history":"提交历史","environment.agents":"子智能体","environment.unnamedAgent":e=>`智能体(${e?.index??0})`,"workflow.open":"打开智能体工作流","workflow.mainAgent":"主智能体","workflow.empty":"此工作流中暂无子智能体","workflow.loadFailed":"工作流加载失败","environment.unavailable":"不可用","sources.title":"来源","sources.count":e=>`${e?.count??0} 个来源`,"sources.currentTurn":"本轮来源","sources.add":"添加来源","sources.empty":"添加文件或链接作为参考。","sources.explanation":"添加引用不会将内容发送给助手。","sources.remove":"移除来源","sources.open":"打开来源","sources.viewAll":"查看全部","sources.type":"引用类型","sources.workspaceFile":"工作区文件","sources.link":"链接","sources.location":"路径或链接","sources.name":"标题(可选)","sources.description":"描述(可选)","sources.registrationFailed":"消息已发送;部分来源信息未能保存","sources.attachmentsLoadFailed":e=>`上传文件加载失败:${e?.error??"未知错误"}`,"sources.openOriginal":"打开原链接","sources.unavailable":"此引用在当前工作区中不可用。","environment.attachments":"附件","environment.artifacts":"产物","environment.artifactsEmpty":"此会话生成的产物会显示在这里。","rightPanel.attachmentLoadFailed":e=>`附件加载失败:${e?.error??"未知错误"}`,"rightPanel.savedContentUnavailable":"保存的面板内容已不可用","rightPanel.restoreFailed":e=>`面板恢复失败:${e?.error??"未知错误"}`,"userMessage.showMore":"显示更多","userMessage.showLess":"收起","userMessage.sendFailed":"发送失败","userMessage.retrySend":"重新发送消息","userMessage.edit":"编辑消息","userMessage.editSubmit":"发送","userMessage.editSending":"发送中…","userMessage.editBusy":"请先等待当前轮次结束再编辑。","userMessage.editStale":"消息已发生变化,请重新打开编辑器后再试。","userMessage.editAttachmentUnavailable":"附件内容不可用,消息尚未回退。","userMessage.editSyncFailed":"无法确认回退已同步。编辑内容已暂存,正在等待同步。","userMessage.editFailed":e=>`无法重发编辑的消息:${e?.reason??""}`,"turn.processed":"已处理","turn.processing":"处理中","turn.collapse":"折叠步骤","turn.expand":"展开步骤","turn.cached":"缓存","turn.executionSteps":e=>`${e?.count??0} 步`,"turn.toolCalls":e=>`工具 ${e?.count??0} 次`,"turn.thinkingCount":e=>`思考 ${e?.count??0} 次`,"turn.stopped":"你已取消请求","turn.stoppedAfter":e=>`你在 ${e?.seconds??0} 秒后取消了请求`,"message.renderError":"此消息无法显示。","tasks.title":"后台任务","tasks.empty":"当前没有运行中的任务","tasks.refreshStale":"任务状态可能已过期,正在重连...","tasks.cancelFailed":"取消任务失败","tasks.alreadyStopped":"任务已停止","tasks.moreAbove":e=>`^ 上方还有 ${e?.count??0} 个`,"tasks.moreBelow":e=>`v 下方还有 ${e?.count??0} 个`,"tasks.running":"运行中","tasks.pausing":"暂停中","tasks.completed":"已完成","tasks.failed":"失败","tasks.cancelled":"已停止","tasks.paused":"已暂停","tasks.kind.shell":"Shell","tasks.kind.monitor":"监控","tasks.kind.workflow":"工作流","workflow.graph.waiting":"等待第一个 Agent 调度…","workflow.graph.notRecorded":"这次运行没有保存执行图。","workflow.inline.loading":"正在加载 Workflow 实时执行状态…","workflow.inline.unavailable":"当前会话中已无法读取这次 Workflow 运行。","workflow.graph.omitted":e=>`为保证性能,执行图已省略 ${e?.lanes??0} 个阶段、${e?.nodes??0} 个 Agent 和 ${e?.edges??0} 条连线。`,"workflow.noPhase":"未分阶段","workflow.dispatchCount":e=>`${e?.count??0} 个调度`,"workflow.selectedDispatch":"已选调度","workflow.dependencies":"依赖","workflow.action.pause":"暂停","workflow.action.resume":"继续","workflow.action.retry":"重试失败路径","workflow.action.rerun":"全部重跑","workflow.action.unavailable":"操作前工作流状态已发生变化。","workflow.action.argsUnavailable":"无法重启:历史里没有它启动时用的参数。","workflow.action.failed":"无法更新工作流状态。","workflow.history.retry":e=>`从 ${e?.runId??""} 续跑`,"workflow.history.rerun":e=>`从 ${e?.runId??""} 全部重跑`,"workflow.history.cached":e=>`${e?.count??0} 个缓存命中`,"workflow.history.saved":e=>`已保存 ${e?.count??0} 次运行`,"workflow.history.restored":"已保存运行","workflow.history.showRuns":e=>`运行历史(${e?.count??0})`,"workflow.history.hideRuns":"收起历史","workflow.history.filter":"筛选运行","workflow.history.filterAll":"全部状态","workflow.history.visibleCount":e=>`${e?.count??0} / ${e?.total??0}`,"workflow.history.filterEmpty":"没有符合当前筛选条件的历史运行。","workflow.history.exportVisible":"导出当前结果","workflow.history.delete":"删除","workflow.history.deleteSaved":"删除已保存运行","workflow.history.confirmDelete":"确认删除","workflow.history.deleteUnavailable":"这次历史运行已不存在。","workflow.history.deleteFailed":"无法删除这次历史运行。","workflow.history.compareRun":e=>`对比运行 ${e?.runId??""}`,"workflow.history.compare":"对比两次运行","workflow.history.hideComparison":"收起对比","workflow.history.source":"来源运行","workflow.history.compared":"对比运行","workflow.history.current":"当前运行","workflow.history.status":"状态","workflow.history.agents":"Agents","workflow.approvalNeeded":"等待审批","workflow.respondInChat":"请在对话中处理","workflow.metric.agents":"Agents","workflow.metric.running":"运行中","workflow.metric.queued":"排队中","workflow.metric.tokens":"Tokens","workflow.dispatch.queued":"排队中","workflow.dispatch.running":"运行中","workflow.dispatch.completed":"已完成","workflow.dispatch.failed":"失败","workflow.dispatch.cancelled":"已取消","workflow.dispatch.cached":"已缓存","tasks.action.stop":"停止","tasks.action.abandon":"放弃","tasks.action.confirmStop":"确认停止","tasks.action.confirmAbandon":"确认放弃","tasks.action.confirmHint":"这会终结当前阻塞轮次。","tasks.pill.agent":e=>`${e?.count??0} 个本地智能体`,"tasks.pill.agents":e=>`${e?.count??0} 个本地智能体`,"tasks.pill.agentPaused":e=>`${e?.count??0} 个本地智能体已暂停`,"tasks.pill.agentsPaused":e=>`${e?.count??0} 个本地智能体已暂停`,"tasks.pill.done":e=>`${e?.count??0} 个任务完成`,"tasks.pill.doneMany":e=>`${e?.count??0} 个任务完成`,"tasks.pill.monitor":e=>`${e?.count??0} 个监控`,"tasks.pill.monitors":e=>`${e?.count??0} 个监控`,"tasks.pill.shell":e=>`${e?.count??0} 个 shell`,"tasks.pill.shells":e=>`${e?.count??0} 个 shell`,"tasks.pill.workflow":e=>`${e?.count??0} 个工作流`,"tasks.pill.workflows":e=>`${e?.count??0} 个工作流`,"tasks.confirmStop":"再按 x 确认停止 · 会终结当前阻塞轮次","tasks.shortcut.select":"↑/↓ 选择","tasks.shortcut.view":"Enter 查看","tasks.shortcut.stop":"x 停止","tasks.shortcut.abandon":"x 放弃","tasks.shortcut.listClose":"←/Esc 关闭","tasks.shortcut.detailBack":"← 返回","tasks.shortcut.detailClose":"Esc/Enter/Space 关闭","tasks.shortcut.close":"Esc 关闭","tasks.shortcut.cancelConfirm":"Esc 取消","tasks.detail.workingDir":"工作目录","tasks.detail.outputFile":"输出文件","tasks.detail.command":"命令","tasks.detail.events":e=>`${e?.count??0} 个事件`,"tasks.detail.exit":e=>`退出码 ${e?.exitCode??""}`,"tasks.detail.dropped":e=>`${e?.count??0} 个已丢弃`,"tasks.detail.error":"错误","tasks.detail.stoppedBecause":"停止原因","tasks.detail.resumeBlocked":"恢复被阻止","tasks.detail.progress":"执行进度","tasks.detail.prompt":"提示词","tasks.detail.type":"类型","tasks.detail.runtime":"时间","tasks.detail.eventCount":"事件数","tasks.detail.pid":"PID","tasks.detail.lastEvent":"最近事件","tasks.detail.droppedCount":"丢弃行数","tasks.detail.exitCode":"退出码","tasks.detail.tokenCount":"Tokens","tasks.detail.toolCallCount":"工具数量","tasks.detail.tokens":e=>`${e?.count??0} tokens`,"tasks.detail.toolCalls":e=>`${e?.count??0} 次工具调用`,"tasks.detail.nesting":"嵌套","tasks.detail.nestingValue":e=>`第 ${e?.level??"?"} 层 · 来自 ${e?.parent??"?"}`,"tasks.detail.nestingLevel":e=>`第 ${e?.level??"?"} 层`,"tasks.row.from":e=>`来自 ${e?.parent??"?"}`,"tasks.row.nested":"嵌套","tips.items":"输入 / 查看所有可用命令。|使用 @ 引用文件路径。|按 Esc 取消正在进行的请求。|使用 Shift+Enter 换行。|按 ↑↓ 浏览历史消息。","tools.available":"可用工具:","tools.none":"没有可用工具。","tools.empty":"没有可用的内置工具。请先打开一个会话。","tools.footer":e=>e?.name?`${e?.details?"Enter/Space 查看详情 · ":""}t 切换 ${e.name} · r 刷新 · Esc 关闭`:"r 刷新 · Esc 关闭","tools.details.hide":"收起详情","tools.details.show":"展开详情","tools.description":"描述","tools.details":"工具详情","tools.loading":"正在加载工具...","tools.name":"工具名称","tools.noDescription":"暂无描述","tools.noMatches":"没有匹配的工具。","tools.search":"搜索工具…","tools.status":"状态","tools.status.disabled":"已禁用","tools.status.enabled":"已启用","tools.summary":e=>`${e?.enabled??0}/${e?.total??0} 已启用`,"tools.title":"工具","tools.update.disable":"禁用","tools.update.enable":"启用","tools.updating":"更新中...","tool.collapse":"▲ 收起","tool.expand":"展开","tool.viewFile":"查看文件","tool.viewImage":"查看图片","tool.viewCurrentFile":"查看当前文件","tool.collapseHint":"收起","tool.status.failed":"执行失败","toolGroup.moreKinds":e=>` +${e?.count??0}`,"toolGroup.summary":e=>`调用了 ${e?.count??0} 个工具`,"toolGroup.summary.ranAgents":e=>`已运行 ${e?.count??0} 个智能体`,"toolGroup.summary.editedFiles":e=>`已编辑文件 ${e?.count??0} 次`,"toolGroup.summary.ranCommands":e=>`已运行 ${e?.count??0} 条命令`,"toolGroup.summary.readFiles":e=>`已读取文件 ${e?.count??0} 次`,"toolGroup.summary.searched":e=>`已搜索 ${e?.count??0} 次`,"toolGroup.summary.updatedTodos":e=>Number(e?.count??0)>1?`已更新任务清单 ${e?.count??0} 次`:"已更新任务清单","toolGroup.summary.provideInformation":"补充信息","toolGroup.summary.askedQuestions":e=>`已询问 ${e?.count??0} 个问题`,"toolGroup.summary.otherTools":e=>`调用了 ${e?.count??0} 个工具`,"toolGroup.running":e=>Number(e?.count??0)>1?`正在执行 ${e?.count??0} 个工具:${e?.name??"工具"}`:`正在执行 ${e?.name??"工具"}`,"toolGroup.runningPrefix":"正在执行","thinking.expand":"展开思考","thinking.collapse":"收起思考","thinking.running":e=>`正在思考${e?.duration?` ${e.duration}`:""}`,"thinking.doneBriefly":"思考片刻","thinking.done":e=>e?.duration?`已思考 ${e.duration}`:"思考完成","thinking.translate":"翻译","thinking.translation":"思考翻译","thinking.translating":"正在翻译…","thinking.translationThinking":"思考中…","thinking.translationFailed":"翻译失败","thinking.retranslate":"重新翻译","thinking.cancelTranslation":"取消","thinking.closeTranslation":"关闭","thinking.inputTokens":e=>`发送 Token:${e?.count??"--"}`,"thinking.outputTokens":e=>`生成 Token:${e?.count??"--"}`,"welcome.changeModel":"(/model 切换)","welcome.defaultModel":"未知模型","sessionsOverview.current":"当前","sessionsOverview.empty":"暂无会话","sessionsOverview.loadFailed":"加载会话失败","sessionsOverview.loading":"正在加载会话…","sessionsOverview.noData":"暂无数据","sessionsOverview.openInSplit":"分屏打开","sessionsOverview.openInSplitHint":"在本窗口内并排显示选中的会话","sessionsOverview.splitLimit":e=>`最多选择 ${e?.max??6} 个会话同时打开`,"sessionsOverview.openInTab":"新标签页打开","sessionsOverview.openInTabHint":"在新标签页中以分屏并排打开选中的会话","sessionsOverview.popupBlocked":"弹出窗口被拦截。请允许本站弹窗,以便在新标签页中打开会话。","sessionsOverview.refresh":"刷新","sessionsOverview.selectAll":"全选","sessionsOverview.titleColumn":"标题","sessionsOverview.actions":"操作","sessionsOverview.time":"时间","sessionsOverview.selectedRows":e=>`${e?.count??0} / ${e?.total??0} 行已选`,"sessionsOverview.previousPage":"上一页","sessionsOverview.nextPage":"下一页","sessionsOverview.pageInfo":e=>`第 ${e?.page??0} / ${e?.total??0} 页`,"sessionsOverview.rowsPerPage":"每页行数","sessionsOverview.workspaceFilter":"按工作区筛选","sessionsOverview.allWorkspaces":"全部","sessionsOverview.searchPlaceholder":"搜索标题、分支、PR 或 ID…","sessionsOverview.workspaceAll":"全部工作区","sessionsOverview.workspacesSelected":e=>`${e?.count??0}/${e?.total??0} 个工作区`,"sessionsOverview.statusColumn":"状态","sessionsOverview.statusFilter":"按会话状态筛选","sessionsOverview.filter.all":"全部","sessionsOverview.filter.attention":"待处理","sessionsOverview.filter.running":"运行中","sessionsOverview.filter.idle":"空闲","sessionsOverview.status.idle":"空闲","sessionsOverview.details":e=>`${e?.name??""}的详情`,"sessionsOverview.sessionCount":e=>`${e?.total??0} 个会话`,"sessionsOverview.confirmArchiveTitle":"归档会话?","sessionsOverview.confirmArchive":e=>`“${e?.name??""}” 将移至已归档会话。`,"sessionsOverview.confirmArchiveBulkTitle":e=>`归档 ${e?.count??0} 个会话?`,"sessionsOverview.confirmArchiveBulk":e=>`选中的 ${e?.count??0} 个会话将移至已归档会话。`,"sessionsOverview.confirmDeleteTitle":"删除会话?","sessionsOverview.confirmDelete":e=>`"${e?.name??""}" 及其对话记录将被永久删除,此操作无法撤销。`,"sessionsOverview.deleteFailed":"删除会话失败","sessionsOverview.archiveFailed":"归档会话失败","sessionsOverview.actionUnavailable":"所选会话或工作区不支持此操作","sessionsOverview.bulkArchive":"归档","sessionsOverview.bulkArchiveHint":e=>`归档选中的 ${e?.count??0} 个会话`,"sessionsOverview.bulkDelete":"删除","sessionsOverview.bulkDeleteHint":e=>`删除选中的 ${e?.count??0} 个会话`,"sessionsOverview.confirmDeleteBulkTitle":e=>`删除 ${e?.count??0} 个会话?`,"sessionsOverview.confirmDeleteBulk":e=>`选中的 ${e?.count??0} 个会话及其对话记录将被永久删除,此操作无法撤销。`,"sessionsOverview.selectSession":e=>`选择 ${e?.name??""}`,"sessionsOverview.status.askUserQuestion":"需要用户输入","sessionsOverview.status.needsApproval":"待审批","sessionsOverview.status.running":"运行中","sessionsOverview.title":"会话总览","workspacesOverview.title":"工作区总览","workspacesOverview.count":e=>`${e?.count??0} 个工作区`,"workspacesOverview.column.name":"名称","workspacesOverview.column.path":"路径","workspacesOverview.column.sessions":"会话","workspacesOverview.column.mcp":"MCP","workspacesOverview.column.git":"分支","workspacesOverview.column.lastActivity":"最近活动","workspacesOverview.column.actions":"操作","workspacesOverview.primaryBadge":"主工作区","workspacesOverview.running":e=>`${e?.count??0} 个运行中`,"workspacesOverview.attention":e=>`${e?.count??0} 个待处理`,"workspacesOverview.truncated":"会话超过一页,计数为下限。","workspacesOverview.dirty":e=>`${e?.count??0} 处改动`,"workspacesOverview.mcpFailed":e=>`${e?.count??0} 个失败`,"workspacesOverview.newTask":"新建任务","workspacesOverview.remove":"移除工作区","workspacesOverview.back":"返回","splitView.title":"分屏","splitView.count":e=>`${e?.count??0} 个窗格`,"splitView.addPane":"添加会话","splitView.closePane":"关闭窗格","splitView.maximizePane":"最大化窗格","splitView.restorePane":"还原窗格","splitView.morePaneActions":"更多窗格操作","splitView.defaultActionLabel":"操作","splitView.paneError":"此会话窗格出错","splitView.paneConnectionError":"连接已断开","splitView.outerApprovalPending":"主会话正在等待审批。","splitView.goToApproval":"前往处理","splitView.pendingCount":e=>`${e?.count??0} 个会话待处理`,"splitView.nextPending":"前往下一个待处理会话","splitView.empty":"分屏中还没有会话,添加一个开始。","splitView.composerPlaceholder":"给这个会话发消息…","settings.title":"设置","capacityChoice.primary":"主工作区","settings.loading":"正在加载设置...","settings.empty":"暂无可用设置。","settings.footer":"↑↓ 导航 Enter 切换 Tab 切换作用域 r 刷新 ESC 关闭","settings.footer.edit":"Enter 保存 ESC 取消","settings.footer.theme":"↑↓ 导航 Enter 选择 ESC 返回","settings.scope.user":"用户","settings.scope.workspace":"工作区","settings.value.on":"开","settings.value.off":"关","settings.action.edit":"编辑","settings.action.select":"选择","settings.action.save":"保存","settings.modifiedIn":e=>`(已在${e?.scope??""}中修改)`,"settings.alsoModifiedIn":e=>`(同时在${e?.scope??""}中修改)`,"settings.invalidNumber":"无效数字","settings.requiresRestart":"此更改需要重启后才能生效。","settings.localControl.title":"本地控制","settings.localControl.description":"通过同一受信任网络中的手机继续当前 O1-Code 会话。","settings.localControl.on":"已开启","settings.localControl.off":"关闭","settings.localControl.network":"本地网络","settings.localControl.selectNetwork":"选择网络","settings.localControl.qr":"本地控制二维码","settings.localControl.enable":"开启本地控制","settings.localControl.disable":"断开手机访问","settings.localControl.encrypted":"已加密","settings.localControl.unencrypted":"未加密,仅限受信任网络;网络变化后请重新启用","settings.localControl.awake":"这台 Mac 将保持唤醒","settings.localControl.maySleep":"这台 Mac 可能进入睡眠","settings.localControl.urlRedacted":"由于该守护进程未配置 bearer token,配对 URL 不在此显示。它已打印到运行守护进程的终端,请到该终端获取配对 URL 完成配对。","localControl.open":"手机访问","localControl.expires":e=>`一次性二维码 · ${e?.seconds??""} 秒后过期 · 自动刷新`,"localControl.expired":"二维码已过期,正在获取新码…","localControl.retry":"重试","localControl.noNetwork":"没有可用的局域网地址。请通过手机可访问的地址打开 Web Shell。","localControl.securePairing":"扫码将授予访问权限,直到 daemon 重启。","localControl.insecurePairing":"扫码将授予访问权限,直到 daemon 重启。流量未加密,请使用受信任网络。","localControl.securePairingDynamic":"扫码将授予此 daemon 的访问权限。扫码的设备保持登录,直到 daemon 重启或该设备上的标签页关闭。","localControl.insecurePairingDynamic":"扫码将授予此 daemon 的访问权限。扫码的设备保持登录,直到 daemon 重启或该设备上的标签页关闭。流量未加密,请使用受信任网络。","localControl.disabledHint":"本地控制未开启。请在设置中开启后,配对同一网络下的手机。","localControl.openSettings":"打开设置","settings.models.title":"模型","settings.models.context":e=>`上下文:${e?.tokens??""} Token`,"settings.models.credentialEnv":"密钥环境变量","settings.models.add":"+ 增加模型","settings.models.setCurrent":"设为当前","settings.models.current":"当前","settings.models.runtime":"运行时","settings.models.savedConfiguration":"已保存配置","settings.models.ambiguousWindow":"多个配置共用此模型端点,无法在此修改窗口大小。","settings.models.delete":"删除","settings.models.confirmDelete":"确认删除","settings.models.cancel":"取消","settings.models.empty":"暂无配置的模型。","settings.models.loading":"正在加载模型…","settings.models.deleteFailed":"删除模型失败","settings.models.runtimeSyncFailed":"更改已保存,但无法刷新正在运行的会话。请重启 o1-code serve 后再使用更新后的模型列表。","settings.models.fallbacks.title":"模型回退","settings.models.fallbacks.hint":e=>`最多选择 ${e?.max??3} 个;主模型容量不足时按顺序回退。`,"settings.models.fallbacks.confirm":"确认","settings.models.fallbacks.empty":"暂无可选模型。","settings.models.fallbacks.saveFailed":"保存回退模型失败","settings.models.fallbacks.limitReached":e=>`最多可选 ${e?.max??3} 个回退模型;请先取消一个再选择其他。`,"settings.corrupted":e=>`设置文件已损坏${e?.recovered==="true"?"(已从备份恢复)":""}`,"browserNotifications.label":"浏览器任务通知","browserNotifications.description":"页面在后台或窗口失焦时,提醒当前聊天和分屏聊天的回合结束或失败。通知包含会话标题、提问和回复摘录。仅保存在此浏览器站点;网页需保持打开。","browserNotifications.prompt":e=>`提问:${e?.text??""}`,"browserNotifications.reply":e=>`回复:${e?.text??""}`,"browserNotifications.completed":"本轮已完成。","browserNotifications.failed":"本轮执行失败,请返回查看。","browserNotifications.ended":"本轮已结束,请返回查看结果。","browserNotifications.allow":"允许通知","browserNotifications.enabled":"已开启。","browserNotifications.disabled":"未开启。","browserNotifications.waiting":"等待浏览器授权。","browserNotifications.denied":"浏览器已阻止通知,请在浏览器站点设置中允许。","browserNotifications.unavailable":"当前浏览器或页面环境无法使用通知。","browserNotifications.requesting":"等待你的授权…","browserNotifications.error":"无法启用或显示通知,请检查浏览器及系统设置。","browserNotifications.temporary":"设置仅在当前页面有效。","settings.label.ui.chatWidth":"屏宽","settings.description.ui.chatWidth":"纯前端的聊天内容宽度设置,保存在当前浏览器中。","settings.option.ui.chatWidth.1000":"常规","settings.option.ui.chatWidth.wide":"超宽","settings.category.General":"通用","settings.category.UI":"界面","settings.category.Privacy":"隐私","settings.category.Model":"模型","settings.category.Context":"上下文","settings.category.Tools":"工具","settings.category.Daemon":"守护进程","settings.category.Connections":"连接","settings.category.Experimental":"实验性","settings.category.Advanced":"高级","settings.label.general.enableAutoUpdate":"启用自动更新","settings.description.general.enableAutoUpdate":"启动时自动检查并安装更新。","settings.label.general.showSessionRecap":"显示会话回顾","settings.description.general.showSessionRecap":"离开终端一段时间后返回时,自动显示一行“上次停在这里”的回顾。默认关闭。也可以随时使用 /recap 手动触发。","settings.label.general.sessionRecapAwayThresholdMinutes":"会话回顾离开阈值(分钟)","settings.description.general.sessionRecapAwayThresholdMinutes":"终端失焦多少分钟后,下一次重新聚焦时触发自动回顾。默认与 Claude Code 一致为 5 分钟;如果只是短暂切换窗口,可以调高。","settings.label.general.cleanupPeriodDays":"清理周期(天)","settings.description.general.cleanupPeriodDays":"~/.o1-code/file-history/ 中用于 /rewind 的会话备份、以及 runtime debug/ 目录下的会话 debug 日志的保留天数。后台清理最多每天运行一次。设为 0 表示最小保留(约 1 小时),仍会保护最近一小时触碰过的会话和当前活动会话。","settings.label.general.gitCoAuthor.commit":"归因:commit","settings.description.general.gitCoAuthor.commit":"通过 O1-Code 创建 commit 时,添加 Co-authored-by trailer,并写入逐文件 AI 归因 git note。关闭后两者都会跳过。","settings.label.general.gitCoAuthor.pr":"归因:PR","settings.description.general.gitCoAuthor.pr":"运行 gh pr create 时,在 PR 描述中追加 O1-Code 归因行。","settings.label.general.language":"语言:界面","settings.description.general.language":"用户界面的语言。使用 auto 可根据系统设置自动检测;也可以在 ~/.o1-code/locales/ 中放置 JS 语言文件来使用自定义语言代码。","settings.label.general.preventSystemSleep":"运行时防止系统睡眠","settings.description.general.preventSystemSleep":"当 O1-Code 正在流式生成模型回复或执行工具时防止系统睡眠。空闲输入状态和权限确认状态不会阻止睡眠。","settings.label.ui.theme":"主题","settings.description.ui.theme":"界面的颜色主题。","settings.label.ui.hideTips":"隐藏提示","settings.description.ui.hideTips":"隐藏界面中的帮助提示。","settings.label.ui.enableWelcomeBack":"显示欢迎回来对话框","settings.description.ui.enableWelcomeBack":"回到有历史会话的项目时显示欢迎回来对话框。选择“开始新的聊天会话”后,在项目摘要变化前不会再次显示。","settings.label.ui.enableUserFeedback":"启用用户反馈","settings.description.ui.enableUserFeedback":"对话结束后显示可选反馈对话框,帮助改进 O1-Code 表现。","settings.label.ui.enableFollowupSuggestions":"启用后续建议","settings.description.ui.enableFollowupSuggestions":"任务完成后显示上下文相关的后续建议。按 Tab 或右方向键插入,按 Enter 接受并提交。","settings.label.ui.shellOutputMaxLines":"Shell 输出最大行数","settings.description.ui.shellOutputMaxLines":"内联显示的 shell 输出最大行数。设为 0 可取消限制并显示完整输出;隐藏行数仍会通过 +N lines 指示器展示。","settings.label.privacy.usageStatisticsEnabled":"启用使用统计","settings.description.privacy.usageStatisticsEnabled":"启用使用统计收集。","settings.label.fastModel":"快速模型","settings.description.fastModel":"用于生成提示建议和推测执行的模型。留空则使用主模型。较小/更快的模型(例如 qwen3-coder-flash)可以降低延迟和成本。","settings.label.visionModel":"视觉模型","settings.description.visionModel":"用于视觉桥接的图像能力模型。留空则自动选择。","settings.label.context.fileFiltering.respectGitIgnore":"遵守 .gitignore","settings.description.context.fileFiltering.respectGitIgnore":"搜索时遵守 .gitignore 文件。","settings.label.context.fileFiltering.respectO1CodeIgnore":"遵守 .o1-codeignore","settings.description.context.fileFiltering.respectO1CodeIgnore":"搜索时遵守 .o1-codeignore 文件。","settings.label.context.fileFiltering.enableFuzzySearch":"启用模糊搜索","settings.description.context.fileFiltering.enableFuzzySearch":"搜索文件时启用模糊搜索。","settings.label.tools.toolSearch.enabled":"启用 ToolSearch","settings.description.tools.toolSearch.enabled":"启用后,deferred 工具会先通过 ToolSearch 检查 schema,再通过 ToolCall 调用。桥接的查看与调用保持工具声明列表稳定——桥接不会把 reveal 的工具重新声明——从而减少提示词大小且不触碰 prompt-cache 前缀。但声明列表并非不可变:会话仍会在以下情况重新声明——恢复会话时;工具集刷新(MCP 发现、会话中首次进入计划模式、子代理定义变更)在实时历史中发现对某个仍隐藏的 deferred 工具的直接调用时;子代理定义变更改写 agent 工具自身描述时;以及 MCP server 在会话中以 alwaysLoadTools: true 注册时。","settings.label.tools.shell.enableInteractiveShell":"交互式 Shell(PTY)","settings.description.tools.shell.enableInteractiveShell":"使用 node-pty 提供交互式 shell 体验。未设置时,明确的单次 prompt 默认使用 child_process;交互式和输入驱动模式默认使用 PTY。","settings.label.policy.permissionStrategy":"权限协调策略","settings.description.policy.permissionStrategy":"多个客户端连接时权限请求的决策方式。first-responder 表示任意客户端先响应者生效;designated 表示仅提示发起方决策;consensus 表示需要 N-of-M 投票同意;local-only 表示只有 loopback 客户端可决策。需要重启 daemon 后生效。","settings.option.policy.permissionStrategy.first-responder":"先响应者","settings.option.policy.permissionStrategy.designated":"指定发起方","settings.option.policy.permissionStrategy.consensus":"共识法定人数","settings.option.policy.permissionStrategy.local-only":"仅本机","settings.label.experimental.enableCronTools":"启用 Cron/Loop 工具","settings.description.experimental.enableCronTools":"启用会话内 cron/loop 工具(实验性)。启用后,模型可以用 cron_create、cron_list 和 cron_delete 创建周期性提示。也可通过 O1CODE_ENABLE_CRON=1 环境变量启用。","settings.label.experimental.sessionWorkflow":"Session Workflow 计划并审阅","settings.description.experimental.sessionWorkflow":"显示 Session Workflow DAG,并将 Plan 模式展示为计划并审阅。","settings.label.experimental.emitToolUseSummaries":"工具使用摘要","settings.description.experimental.emitToolUseSummaries":"每个工具批次完成后生成一个简短的 LLM 标签。已完成工具组的标签会替代通用的 Tool × N 标题;强制展开的工具组下方显示弱化的 ● <label> 行。需要配置快速模型。","settings.label.agents.arena.preserveArtifacts":"保留 Arena 产物","settings.description.agents.arena.preserveArtifacts":"启用后,Arena worktree 和会话状态文件会在会话结束或主智能体退出后保留。","welcome.modeHint":"Shift+Tab 或 /approval-mode","welcome.prompt":"你想构建什么?","welcome.titlePrefix":"欢迎使用","welcome.tipLabel":"提示:"},DNe={en:$V,"zh-CN":LNe},ONe={en:"English [en]","zh-CN":"中文 [zh-CN]"},ufe=d.createContext({language:"en",t:e=>e});function mw(e){const t=e?.trim().toLowerCase();return t&&(t==="zh"||t==="zh-cn"||t==="zh_cn")?"zh-CN":"en"}function BV(e){if(typeof e!="string")return;const t=e.trim().toLowerCase().replace(/_/g,"-");if(t){if(t==="auto")return mw(typeof navigator<"u"?navigator.language:void 0);if(t==="zh"||t==="zh-cn"||t==="chinese"||t==="中文")return"zh-CN";if(t==="en"||t==="en-us"||t==="english")return"en"}}function FV(e){return ONe[e]}function MS(e){const t=DNe[e];return(n,s)=>{const r=t[n]??$V[n]??n;return typeof r=="function"?r(s):r}}function $Ne({language:e,children:t}){const n=d.useMemo(()=>({language:e,t:MS(e)}),[e]);return a.jsx(ufe.Provider,{value:n,children:t})}function Ct(){return d.useContext(ufe)}/**
112
+ */function ENe(e,t,n,s){if(s)return;const r=t.find(jNe);if(!r)return;const o=Uz(r.promptId)??NNe(t);if(!o)return;const i=ti(r.data)?r.data.truncatedEvents:void 0;return{marker:r,promptId:o,signature:[e,o,n??"unknown",typeof i=="number"?i:"unknown"].join(":")}}function ANe(e,t){const n=e.findIndex(r=>q1(r)===t&&MNe(r));if(n<0)return;const s=e.find((r,o)=>o>=n&&q1(r)===t&&(r.type==="turn_complete"||r.type==="turn_error"));if(s)return{events:e.slice(n),terminal:s}}function q1(e){const t=Uz(e.promptId);return t||(ti(e.data)?Uz(e.data.promptId):void 0)}function cfe(e){return e.type==="history_truncated"&&ti(e.data)&&e.data.scope==="live_journal"}function jNe(e){return OAe(e)?.type==="history_truncated"&&cfe(e)&&ti(e.data)&&e.data.fullTranscriptAvailable===!0}function NNe(e){const t=new Set;for(const n of e){if(cfe(n))continue;const s=q1(n);if(s&&t.add(s),t.size>1)return}return t.size===1?[...t][0]:void 0}function MNe(e){if(e.type!=="session_update"||!ti(e.data))return!1;const t=e.data.update;return ti(t)&&t.sessionUpdate==="user_message_chunk"}function Uz(e){return typeof e=="string"&&e.length>0?e:void 0}const PNe=["en","zh-CN"];function i_(e,t){const n=typeof e=="number"?e:Number(e??0),s=Number.isFinite(n)?n:0;return`${s} ${t}${s===1?"":"s"}`}const $V={"capacityChoice.persistenceUnconfirmed":"Saving the last interrupted turn could not be confirmed.","capacityChoice.title":"Choose a workspace to stop","capacityChoice.description":"No ACP capacity is available. Choose a workspace whose sessions you want to stop, or cancel and keep working.","capacityChoice.warning":"Stopping interrupts all listed sessions and their tools. Files, workspace registration and saved history remain. Unsaved work may be lost. Closing this dialog after confirmation does not undo the stop.","capacityChoice.outdated":"The draft, session or daemon has changed. Cancel and try the original operation again.","capacityChoice.inProgress":"The selected stop is still being resolved. Refresh its status before continuing.","capacityChoice.failedUnreleased":"The stop failed. This workspace remains unavailable until its old processes are confirmed stopped. Capacity is still reserved. Refresh to check cleanup.","capacityChoice.failedUnknownCleanup":"The stop failed. Cleanup could not be confirmed. Refresh its status before continuing.","capacityChoice.workspaces":"Workspace to stop","capacityChoice.requester":"This workspace owns the operation you are trying to continue.","capacityChoice.running":"Running","capacityChoice.waiting":"Waiting for your response","capacityChoice.background":"Background work running","capacityChoice.backgroundUnknown":"Background work status unknown","capacityChoice.none":"No workspace can currently be stopped here. Review the reasons above, stop the independent work, or cancel.","capacityChoice.refresh":"Refresh status","capacityChoice.continue":"Continue original operation","capacityChoice.confirm":"Stop these sessions and continue","capacityChoice.stopped":"This workspace was stopped to free ACP capacity. Resume this conversation when needed.","capacityChoice.resume":"Resume conversation","capacityChoice.blocked.stopping":"Stopping","capacityChoice.blocked.not_live":"No live ACP","capacityChoice.blocked.release_unavailable":"Owned process release cannot be observed","capacityChoice.blocked.session_start_pending":"Session startup or restore in progress","capacityChoice.blocked.workspace_control_pending":"Workspace management or MCP work in progress","capacityChoice.blocked.session_closing":"Session close or reset in progress","capacityChoice.blocked.runtime_unavailable":"Workspace unavailable or untrusted","capacityChoice.blocked.special_runtime":"Special-purpose workspace","capacityChoice.blocked.unsupported":"Runtime stop is not supported","capacityChoice.blocked.activity_unknown":"Activity could not be observed","capacityChoice.blocked.pendingSessionStarts":"Session startup pending","capacityChoice.blocked.acpConnections":"An ACP client is connected","capacityChoice.blocked.memoryTasks":"Memory task running","capacityChoice.blocked.voiceSessions":"Voice session active","capacityChoice.blocked.management_pending":"Workspace management pending","capacityChoice.blocked.scheduler_pending":"Scheduled session restore in progress","capacityChoice.blocked.enabled_scheduled_tasks":"Disable enabled scheduled tasks first","capacityChoice.blocked.scheduled_tasks_unknown":"Scheduled tasks could not be read","capacityChoice.capacity":e=>`ACP capacity: ${e?.used} / ${e?.limit}`,"capacityChoice.sessions":e=>`${e?.count} loaded session(s)`,"capacityChoice.queued":e=>`${e?.count} queued`,"capacityChoice.outcome":e=>`${e?.closed} session(s) closed; ${e?.remaining} remaining.`,"footnotes.note":e=>`Footnote ${e?.number??""}`,"footnotes.references":e=>`View ${e?.count??""} references`,"footnotes.preview":"Reference preview","footnotes.previous":"Previous reference","footnotes.next":"Next reference","footnotes.citations":e=>`${e?.count??0} ${e?.count===1?"citation":"citations"}`,"daemon.capacity.exhausted":"The service has reached its concurrent capacity limit and cannot start this session. Try again later or cancel this operation.","git.currentBranch":e=>`Current Git branch: ${e?.branch??""}`,"git.detached":"Detached HEAD","git.clean":"Working tree clean","git.operation.merge":"Merging","git.operation.rebase":"Rebasing","git.operation.cherry-pick":"Cherry-picking","git.operation.revert":"Reverting","git.operation.bisect":"Bisecting","git.conflicted":e=>`${e?.count??0} conflicted`,"git.staged":e=>`${e?.count??0} staged`,"git.unstaged":e=>`${e?.count??0} modified`,"git.untracked":e=>`${e?.count??0} untracked`,"git.ahead":e=>`${e?.count??0} ahead`,"git.behind":e=>`${e?.count??0} behind`,"git.stash":e=>`${e?.count??0} stashed`,"branchPicker.label":"Git","branchPicker.search":"Search for branches and actions","branchPicker.loading":"Loading branches…","branchPicker.noBranches":"No branches","branchPicker.noTags":"No tags","branchPicker.action.pull":"Update Project","branchPicker.action.push":"Push","branchPicker.action.commit":"Commit","branchPicker.action.newBranch":"New Branch…","branchPicker.action.checkoutRef":"Checkout Tag or Revision…","branchPicker.action.viewChanges":"View Changes","branchPicker.action.history":"History","branchPicker.newBranchPlaceholder":"Branch name","branchPicker.invalidBranchName":"Invalid branch name — avoid spaces, ~, ^, :, ? * and leading -","branchPicker.checkoutRefPlaceholder":"Tag name or commit SHA","branchPicker.section.recent":"Recent","branchPicker.section.local":"Local","branchPicker.section.remote":"Remote","branchPicker.section.tags":"Tags","branchPicker.checkedOut":e=>`Checked out ${e?.branch??""}`,"branchPicker.createdBranch":e=>`Created branch ${e?.branch??""}`,"branchPicker.pushSuccess":"Pushed successfully","branchPicker.pullSuccess":"Updated successfully","branchPicker.pullBlocked":"Update blocked by uncommitted changes","branchPicker.pullStash":"Stash Changes and Update","branchPicker.pullDiscard":"Discard Changes and Update…","branchPicker.pullDiscardConfirm":"Discard ALL uncommitted changes (including untracked files)? This cannot be undone.","branchPicker.pullDiscardGo":"Discard and Update","branchPicker.pullStashConflict":e=>`Updated, but restoring your stashed changes failed. They are kept in stash entry ${String(e?.sha??"").slice(0,12)||"(see git stash list)"} — resolve any conflict markers, then restore it manually.`,"branchPicker.cancel":"Cancel","branchPicker.hint.upToDate":"Up to date","branchPicker.hint.noUpstream":"No upstream","branchPicker.hint.upstreamGone":"Upstream gone","branchPicker.hint.behindDirty":e=>`↓${e?.count??0} · uncommitted changes`,"branchPicker.hint.setsUpstream":"Sets upstream on push","branchPicker.hint.createsPushBranch":e=>`Creates ${e?.target??""}`,"branchPicker.hint.aheadBehind":e=>`↑${e?.ahead??0} ↓${e?.behind??0} · diverged`,"branchPicker.hint.nothingToPush":"Nothing to push","branchPicker.hint.noChanges":"No changes","branchPicker.hint.changes":e=>`${e?.count??0} ${e?.count===1?"change":"changes"}`,"branchPicker.hint.changesUntracked":e=>`${e?.count??0} ${e?.count===1?"change":"changes"} (${e?.untracked??0} untracked)`,"branchPicker.action.manageRemotes":"Manage Remotes…","branchPicker.remotes.title":"Remotes","branchPicker.remotes.back":"Back to branches","branchPicker.remotes.loading":"Loading remotes…","branchPicker.remotes.empty":"No remotes configured","branchPicker.remotes.noMatches":"No remotes match the search","branchPicker.remotes.namePlaceholder":"Remote name","branchPicker.remotes.urlPlaceholder":"Remote URL","branchPicker.remotes.add":"Add","branchPicker.remotes.remove":e=>`Remove ${e?.name??""}`,"branchPicker.remotes.removeConfirm":"Confirm","branchPicker.remotes.removeConfirmFor":e=>`Confirm removing ${e?.name??""}${e?.extras?` (${e.extras})`:""}`,"branchPicker.remotes.invisibleName":"(invisible name)","branchPicker.remotes.hiddenChars":"(hidden characters)","branchPicker.remotes.lookalikeName":"(lookalike name)","branchPicker.remotes.searchPlaceholder":"Search remotes","branchPicker.remotes.urlTooltipFetch":e=>`fetch: ${e?.url??""}`,"branchPicker.remotes.urlTooltipPush":e=>`push: ${e?.url??""}`,"branchPicker.remotes.promisor":"partial clone","branchPicker.remotes.partialClone":e=>`partial clone (${e?.filter})`,"branchPicker.remotes.customRefspec":"custom refspec","branchPicker.remotes.extraUrls":e=>`+${e?.count??0} ${e?.count===1?"URL":"URLs"}`,"branchPicker.remotes.otherSettings":e=>`${e?.count??0} ${e?.count===1?"other setting":"other settings"}`,"branchPicker.remotes.added":e=>`Added remote ${e?.name??""}`,"branchPicker.remotes.removed":e=>`Removed remote ${e?.name??""}`,"branchPicker.remotes.invalidInput":"Enter a remote name and URL (no leading -)","gitCommit.title":"Commit","gitCommit.messagePlaceholder":"Commit message (⌘/Ctrl+Enter to commit)","gitCommit.generating":"Generating commit message…","gitCommit.genFailed":"Auto-generation failed — write your message","gitCommit.prLogUnavailable":"Could not load commits for the selected base branch.","gitCommit.prPushFirst":"Push your branch to a remote before creating a pull request.","gitCommit.commit":"Commit","gitCommit.commitAndPush":"Commit and Push","gitCommit.createPr":"Create Pull Request","gitCommit.prTitlePlaceholder":"Pull request title","gitCommit.prBodyPlaceholder":"Description (optional)","gitCommit.prEdit":"Edit","gitCommit.prPreview":"Preview","gitCommit.prSubmit":"Create","gitCommit.prCreated":e=>`Pull Request #${e?.number??""} created`,"gitCommit.commitSuccess":e=>`Committed ${e?.sha??""}`,"gitCommit.commitPushSuccess":e=>`Committed & pushed ${e?.sha??""}`,"gitCommit.commitSuccessPushFailed":e=>`Committed ${e?.sha??""} — push failed: ${e?.error??"unknown"}`,"branchSelect.baseBranch":"Base branch","branchSelect.search":"Search branches…","branchSelect.loading":"Loading…","branchSelect.noMatches":"No matches","branchSelect.error":"Failed to load branches","branchSelect.retry":"Retry","branchSelect.local":"local","gitDiff.title":"Changes","gitDiff.summary":e=>`${e?.count??0} files · +${e?.added??0} −${e?.removed??0}`,"gitDiff.loading":"Loading changes…","gitDiff.empty":"No changes in the working tree","gitDiff.unavailable":"Git is not available for this workspace","gitDiff.error":"Failed to load changes","gitDiff.binary":"Binary","gitDiff.untracked":"Untracked","gitDiff.deleted":"Deleted","gitDiff.noDiff":"No changes to display","gitDiff.fileError":"Failed to load this diff","gitDiff.truncated":"Diff truncated — the file is too large to show in full","gitDiff.hidden":e=>`${e?.count??0} more file(s) not shown`,"gitDiff.expand":e=>`Show changes for ${e?.path??"file"}`,"gitDiff.collapse":e=>`Hide changes for ${e?.path??"file"}`,"gitMode.title":"Git mode","gitMode.current":"Current branch","gitMode.currentDesc":e=>`Develop directly on ${e?.branch??"main"}`,"gitMode.branch":"New branch","gitMode.branchDesc":e=>`Create a new branch from ${e?.branch??"main"}`,"gitMode.branchPlaceholder":"feat/my-feature","gitMode.branchLabel":"Branch name","gitMode.branchConflictWarning":"Only one branch session per workspace at a time","gitMode.branchHint":"Switches the working directory to a new branch","gitMode.branchInvalidName":"Invalid branch name","gitMode.worktree":"Worktree","gitMode.worktreeDesc":"Isolated copy · can run in parallel","gitMode.confirmBranch":"Create branch","gitMode.confirmWorktree":"Create worktree","gitMode.resetToCurrent":"Reset to current branch","gitLog.title":"History","gitLog.subtitle":e=>`${e?.count??0} commits`,"gitLog.loading":"Loading history…","gitLog.empty":"No commits yet","gitLog.unavailable":"Git is not available for this workspace","gitLog.error":"Failed to load history","gitLog.loadMore":"Load more","gitLog.loadingMore":"Loading…","gitLog.files":e=>`${e?.count??0} files · +${e?.added??0} −${e?.removed??0}`,"gitLog.detailError":"Failed to load commit details","gitLog.hidden":e=>`${e?.count??0} more file(s) not shown`,"gitLog.copySha":e=>`Copy commit ${e?.sha??""}`,"gitLog.allBranches":"All branches","gitLog.search":"Search message, author, or hash","gitLog.noMatches":"No commits match","githubPrs.title":"Pull requests","githubPrs.subtitle":e=>`${e?.count??0} open`,"githubPrs.loading":"Loading pull requests…","githubPrs.empty":"No open pull requests","githubPrs.unavailable":"This workspace is not a git repository","githubPrs.error":"Failed to load pull requests","githubPrs.cliUnavailable":"The GitHub CLI (gh) is not installed on the daemon host.\nInstall it and run `gh auth login`, then try again.","githubPrs.reviewApproved":"Approved","githubPrs.reviewChanges":"Changes requested","githubPrs.reviewRequired":"Review required","githubPrs.checksPassing":"Checks passing","githubPrs.checksFailing":"Checks failing","githubPrs.checksPending":"Checks pending","githubPrs.open":e=>`Open pull request #${e?.number??""} on GitHub`,"workspace.paneLabel":e=>`Workspace: ${e?.name??""}`,"about.auth":"Auth","about.baseUrl":"Base URL","about.fastModel":"Fast Model","about.memoryUsage":"Memory Usage","about.model":"Model","about.noProxy":"no proxy","about.noSandbox":"no sandbox","about.platform":"OS","about.proxy":"Proxy","about.runtime":"Runtime","about.sandbox":"Sandbox","about.sessionId":"Session ID","about.title":"Status","agent.back":"Back","agent.builtInBadge":"(built-in)","agent.action.delete":"Delete Agent","agent.action.edit":"Edit Agent","agent.action.view":"View Agent","agent.chooseAction":e=>`Choose action for ${e?.name??""}`,"agent.chooseActionTitle":"Choose Action","agent.colorLabel":"Color: ","agent.colorUpdated":e=>`Updated color for ${e?.name??""}`,"agent.create":"Create a new subagent","agent.create.button":"Create","agent.create.confirm":"Confirm and Save","agent.create.desc":"Create a new subagent","agent.create.descPlaceholder":"What does this agent do?","agent.create.describeAgent":"Describe requirements","agent.create.description":"Description","agent.create.editAgain":"Edit","agent.create.enterDescription":"Enter Description","agent.create.enterName":"Enter Subagent Name","agent.create.enterPrompt":"Enter System Prompt","agent.create.generateFailed":e=>`Failed to generate subagent: ${e?.error??"Unknown error"}`,"agent.create.generate":"Generate","agent.create.generatedDescription":"Description","agent.create.generatedSystemPrompt":"System prompt","agent.create.generatingConfig":"Generating subagent configuration...","agent.create.generatingPrompt":"Generating...","agent.create.loading":"Creating...","agent.create.location":"Choose Location","agent.create.method":"Choose Generation Method","agent.create.method.manual":"Manual Creation","agent.create.method.o1code":"Generate with O1-Code","agent.create.method.o1code.recommended":"Generate with O1-Code (Recommended)","agent.create.method.o1code.desc":"LLM generates the description and system prompt","agent.create.name":"Name","agent.create.namePlaceholder":"my-agent","agent.create.nameHelp":"Enter a clear, unique name for this subagent.","agent.create.project":"Project","agent.create.project.cli":"Workspace","agent.create.project.desc":"Create a project-level subagent","agent.create.prompt":"System prompt","agent.create.promptPlaceholder":"You are a specialized agent that...","agent.create.promptPlaceholder.cli":"e.g., You are an expert code reviewer...","agent.create.promptHelp":"Write the system prompt that defines this subagent's behavior. Be comprehensive for best results.","agent.create.preview":"Preview","agent.create.o1codeHint":"Explain the responsibilities, usage scenarios, and important constraints, then generate each field separately.","agent.create.o1codePlaceholder":"> e.g., Expert code reviewer that reviews code based on best practices...","agent.create.regenerate":"Regenerate draft","agent.create.required":"Name, description, and system prompt are required.","agent.create.tools":"Allowed tools","agent.create.toolsHelp":"Enter canonical tool names separated by commas or lines. MCP tools use mcp__server__tool; leave blank to inherit all tools.","agent.create.disallowedTools":"Disallowed tools","agent.create.model":"Model","agent.create.approvalMode":"Approval mode","agent.create.maxTurns":"Maximum execution turns","agent.create.maxTurnsHelp":"Limits the model reasoning rounds for a single task. Execution stops at the limit; leave blank for no agent-specific limit.","agent.create.maxTurnsInvalid":"Maximum execution turns must be a positive integer.","agent.create.mcpServers":"MCP servers","agent.create.mcpServers.empty":"No MCP servers are available.","agent.create.mcpServers.select":"Select an MCP Server","agent.create.mcpServers.noneSelected":"No MCP Servers selected.","agent.create.modelGenerate":"Generate with model","agent.create.modelGenerate.description":"Describe what you need, then generate and review the description and system prompt separately.","agent.create.color":"Color","agent.create.jsonObjectHelp":"Enter a JSON object, or leave blank.","agent.create.save":"Save Agent","agent.create.scope":"Category","agent.create.manualDescHelp":"Describe when and how this subagent should be used.","agent.create.manualDescPlaceholder":"e.g., Reviews code for best practices and potential bugs.","agent.create.tools.builtin":"Built-in tools","agent.create.tools.empty":"No tools are available.","agent.create.tools.mcp":"MCP tools","agent.create.tools.type":"Tool type","agent.create.tools.selectServer":"Select an MCP Server","agent.create.tools.selectTool":"Select a tool","agent.create.tools.noneSelected":"No tools selected.","agent.create.tools.initializing":"Initializing tool catalogs...","agent.create.tools.preheatFailed":"ACP preheating did not complete.","agent.create.tools.loadFailed":"Failed to load built-in tools.","agent.create.removeSelection":e=>`Remove ${e?.name??""}`,"agent.create.toolsSelectHelp":"Select the tools this subagent may use. Leave all unchecked to inherit all tools.","agent.create.toolsSelection":"Select Tools","agent.create.tools.all":"All Tools","agent.create.tools.allDefault":"All Tools (Default)","agent.create.tools.allInfo":"All tools selected, including MCP tools","agent.create.tools.allInfoFallback":"All tools selected, including MCP tools","agent.create.tools.editLabel":"• Edit tools:","agent.create.tools.executionLabel":"• Execution tools:","agent.create.tools.none":"(none)","agent.create.tools.readEdit":"Read & Edit Tools","agent.create.tools.readEditExecute":"Read & Edit & Execution Tools","agent.create.tools.readOnlyLabel":"• Read-only tools:","agent.create.tools.readOnly":"Read-only Tools","agent.create.tools.selected":"Selected tools:","agent.create.user":"User","agent.create.user.cli":"Global","agent.create.user.desc":"Create a user-level subagent","agent.create.useGenerated":"Use this draft","agent.approval.inherit":"Default","agent.approval.default":"Default approval","agent.approval.plan":"Plan only","agent.approval.auto-edit":"Automatically approve edits","agent.approval.yolo":"Automatically approve all actions","agent.approval.bubble":"Bubble approval","agent.approval.desc.inherit":"Use the subagent's default approval rules.","agent.approval.desc.bubble":"Forward tool approval requests to the parent session.","agent.createFirstHint":"Use '/agents create' to create your first subagent.","agent.created":e=>`Created ${e?.name??""}`,"agent.edit.save":"Save changes","agent.updated":e=>`Updated ${e?.name??""}`,"agent.turnsBadge":e=>`${e?.count??0} turns`,"agent.delete":"Delete","agent.delete.confirm":e=>`Are you sure you want to delete "${e?.name??""}"?`,"agent.delete.loading":"Deleting...","agent.delete.no":"No","agent.delete.title":e=>`Delete ${e?.name??""}`,"agent.delete.yes":"Yes, delete","agent.deleted":e=>`Deleted ${e?.name??""}`,"agent.edit":"Edit","agent.edit.color":"Edit Color","agent.edit.tools":"Edit Tools","agent.editColorTitle":e=>`Edit Color: ${e?.name??""}`,"agent.editTitle":e=>`Edit ${e?.name??""}`,"agent.empty":"No subagents found.","agent.noMatches":"No matching subagents found.","agent.footer.back":"Esc to go back","agent.footer.cliBack":"Enter to select, ↑↓ to navigate, Esc to go back","agent.footer.cliSelect":"Enter to select, ↑↓ to navigate, Esc to close","agent.footer.close":"Esc to close","agent.footer.deleteConfirm":"Enter to confirm, Esc to cancel","agent.footer.enterNext":"Press Enter to continue, Esc to go back","agent.footer.generating":"Esc to cancel","agent.footer.createLocation":"Press Enter to continue, ↑↓ to navigate, Esc to cancel","agent.footer.createContinue":"Press Enter to continue, ↑↓ to navigate, Esc to go back","agent.footer.final":"Press Enter to save, e to save and edit, Esc to go back","agent.footer.nav":"↑↓ navigate · Enter select · Esc back","agent.footer.navBack":"↑↓ navigate · Enter select · Esc back","agent.footer.navSelect":"↑↓ navigate · Enter select · Esc close","agent.footer.viewerBack":"Esc to go back","agent.filePathLabel":"File Path: ","agent.label":"Agent","agent.location":"Location","agent.level.builtin":"Built-in","agent.level.extension":"Extension","agent.level.project":"Project","agent.level.user":"User","agent.level.filter":"Filter by agent level","agent.manage":"Manage","agent.manage.desc":"Manage existing subagents","agent.modelLabel":"Model: ","agent.overriddenBadge":"(overridden by project level agent)","agent.readonly":"This agent is read-only.","agent.select":"Select an agent.","agent.selectAction":"Select an action","agent.descriptionLabel":"Description:","agent.systemPromptLabel":"System Prompt:","agent.level.label":"Level","agent.step":e=>`Step ${e?.n??""}`,"agent.tools":"Tools","agent.toolsLabel":"Tools: ","agent.detail.overview":"Basic Information","agent.detail.tools":"Tools","agent.detail.mcp":"MCP","agent.detail.hooks":"Hooks","agent.detail.systemPrompt":"System Prompt","agent.toolsUpdated":e=>`Updated tools for ${e?.name??""}`,"agent.usingCount":e=>`Using: ${e?.count??0} agents`,"agent.view":"View","agents.closed":"Agents panel closed.","agents.title":"Agents","subagent.result":"Result","subagent.tools":e=>`Tools (${e?.count??0})`,"subagent.toolsCount":e=>`${e?.count??0} tools`,"subagent.toggleStream":"Toggle agent stream details","subagent.creating":"Creating…","subagent.pending":"pending","subagent.running":"running","subagent.background":"background task","subagent.completed":"completed","subagent.failed":"failed","subagent.cancelled":"cancelled","subagent.paused":"paused","subagent.detailsLoading":"Loading agent details…","subagent.detailsLoadFailed":"Failed to load agent details.","agentType.general-purpose":"General-purpose","agentType.explore":"Explore","agentType.statusline-setup":"Status Line Setup","agentType.review-agent":"Review Agent","agentType.test-engineer":"Test Engineer","agentType.fork":"Fork","timeline.parallelAgents":"Parallel agents","timeline.thinking":"Thinking","timeline.assistantUpdate":"Assistant update","timeline.toolCalls":e=>`${e?.count??0} tool call${e?.count===1?"":"s"}`,"timeline.planUpdate":"Plan update","timeline.statusUpdate":"Status update","timeline.userTurn":"User turn","timeline.planDetail":"plan update","timeline.parallelAgentsDetail":e=>`${e?.count??0} parallel agent${e?.count===1?"":"s"}`,"timeline.noActivity":"No activity","timeline.sessionTimeline":"Session timeline","timeline.turnPrefix":e=>`Turn ${e?.index??0}`,"timeline.currentTurn":"Current turn","timeline.kind.thought":"thinking","timeline.kind.commentary":"assistant update","timeline.kind.tool":"tool calls","timeline.kind.agents":"parallel agents","timeline.kind.plan":"plan update","timeline.kind.status":"status update","timeline.kind.none":"turn","common.copy":"Copy","common.download":"Download","common.downloading":"Downloading…","common.downloadFailed":e=>`Download failed: ${e?.message??""}`,"common.open":"Open","common.openFailed":e=>`Could not open link: ${e?.message??""}`,"artifact.openLink":"Open link","artifact.longDocument":"File is large. Source is shown by default.","artifact.renderFullPreview":"Render full preview","artifact.registrationFailed":e=>`Could not add exported artifact: ${e?.message??""}`,"artifact.previewFailed":e=>`Could not load preview: ${e?.message??""}`,"artifact.showSource":"Show source","common.na":"N/A","common.server":"Server","common.agent":"Agent","common.auto":"auto","common.runtime":"Runtime","common.failedToLoad":"Failed to load","auth.notSet":"(not set)","auth.apiKeyPlaceholder":"sk-...","auth.modelsPlaceholder":"model-id-1, model-id-2","model.usingModel":e=>`Using ${e?.isRuntime?"runtime ":""}model: ${e?.modelId??""}`,"mermaid.label":"mermaid","mermaid.errorLabel":"mermaid (error)","user.uploadedImage":e=>`User uploaded image ${e?.index??1}`,"voice.noSpeech":"No speech detected.","voice.stopDictation":"Stop dictation","voice.transcribing":"Transcribing…","voice.starting":"Starting…","voice.errorRetry":e=>`Voice error — click to retry${e?.message?`: ${e.message}`:""}`,"voice.noSpeechRetry":"No speech detected — click to retry","voice.startDictation":"Start voice dictation","voice.error":"Voice error","resume.failedToLoad":"Failed to load sessions","toast.dismiss":"Dismiss notification","toast.dismissShort":"Dismiss","insight.ready":"Insight report generated successfully!","request.cancelled":"Request cancelled.","visionBridge.model":"vision model","visionBridge.skipped":e=>`Vision bridge cancelled.${e?.egressOccurred===1?` Your image and prompt/context were sent to ${e?.target??""}.`:""}`,"visionBridge.failed":e=>e?.egressOccurred===1?`Vision bridge (${e?.modelName??""}) failed: the vision model request failed. Your image and prompt/context were sent to ${e?.target??""}. The image was not interpreted.`:`Vision bridge (${e?.target??""}) failed: the vision bridge could not run. The image was not interpreted.`,"visionBridge.ok":e=>`Converted ${e?.convertedCount??0} image(s)${Number(e?.omittedCount??0)>0?` (${e?.omittedCount??0} image(s) omitted)`:""} to text via ${e?.target??""}.${e?.egressOccurred===1?" Your image and prompt/context were sent to that model.":""}`,"approval.goal.title":"Confirm session goal","approval.goal.overview":"Goal overview","approval.goal.full":"Full content","approval.goal.outcome":"Outcome","approval.goal.doneWhen":"Completion criteria","approval.goal.mustNot":"Constraints","approval.goal.budget":"Budget","approval.goal.onBlock":"When blocked","approval.goal.context":"Context","approval.goal.confirm":"Set goal and continue","approval.goal.reject":"Not now","approval.goal.hint":"Setting this goal continues execution and checks progress after each turn. Blockers will be reported.","approval.goal.pending":"Submitting…","approval.goal.failed":"Could not submit your choice. Please try again.","approval.execQuestion":e=>`Allow execution of: '${e?.tool??""}'?`,"approval.changeQuestion":"Apply this change?","approval.launchAgentQuestion":"Launch this agent?","approval.explain":"Explain","approval.explanation":"Command explanation","approval.explaining":"Explaining…","approval.explanationThinking":"Thinking…","approval.explanationFailed":"Explanation failed","approval.reExplain":"Explain again","approval.option.allowOnce":"Yes, allow once","approval.option.allowOnceAndSwitchToDefault":"Allow once and switch to Default mode","approval.option.restorePrevious":"Yes, restore previous mode","approval.option.rejectOnce":"Reject","approval.option.allowAllEdits":"Allow All Edits","approval.option.allowAlwaysProject":"Always allow in this project","approval.option.allowAlwaysUser":"Always allow for this user","approval.option.allowAlwaysServer":"Always allow for this server","approval.option.allowAlwaysTool":"Always allow for this tool","assistant.branch":"Branch","assistant.copy":"Copy","assistant.dissatisfied":"Not satisfied","assistant.satisfied":"Satisfied","at.category.extensions":"Extensions","at.category.extensions.description":"Reference active extensions","at.category.files":"Files","at.category.files.description":"Reference workspace files","at.files.upload":"Upload file","at.files.upload.description":"Upload a file into this folder","composer.upload.pending":"Waiting","composer.upload.uploading":"Uploading","composer.upload.done":"Uploaded","composer.upload.error":"Failed","composer.upload.error.noDaemon":"No daemon connection","composer.upload.error.tooLarge":e=>`File exceeds the ${e?.limit??""} upload limit`,"composer.upload.error.tooManyFiles":e=>`${e?.count??0} more files were not added (limit per batch)`,"composer.upload.cancel":"Cancel upload","composer.upload.dismiss":"Dismiss","composer.upload.renamed":"Saved as","composer.upload.drop":"Drop files","composer.dropChoice.title":e=>Number(e?.count)===1?"Add dropped file":`Add ${e?.count??0} dropped files`,"composer.dropChoice.description":"Attach the files to this message for the agent to read, or upload them to the workspace and insert @ references.","composer.dropChoice.cancel":"Cancel","composer.dropChoice.upload":"Upload to workspace","composer.dropChoice.reference":"Attach to message","composer.dropChoice.moreFiles":e=>`and ${e?.count??0} more files`,"composerAdd.trigger":"Add to message","composerMobile.expand":"Expand editor","composerMobile.hideKeyboard":"Hide keyboard","composerMobile.done":"Done","composerMobile.photos":"Photos","composerMobile.camera":"Take photo","composerMobile.files":"Attach files","composerMobile.commands":"All commands","composerMobile.searchCommands":"Search commands","composerMobile.history":"Input history","composerMobile.previousInput":"Previous input","composerMobile.nextInput":"Next input","composerMobile.stop":"Stop","composerMobile.attachments":e=>`Attached files/images: ${e?.count??0}`,"composerAdd.emptyState":"No add actions are available here","composerAdd.noResults":"No results","composerAdd.loadError":"Failed to load results","composerAdd.unavailable":"Unavailable","composerAdd.file.label":"Add file","composerAdd.file.attachDisabled":"Message attachments are unavailable","composerAdd.file.uploadDisabled":"Workspace upload is unavailable","composerAdd.referenceFile.label":"Reference file","composerAdd.referenceFile.searchPlaceholder":"Search workspace files","composerAdd.extensions.label":"Extensions","composerAdd.extensions.empty":"No extensions are enabled","composerAdd.mcp.label":"MCP","composerAdd.mcp.empty":"No MCP servers are available","composerAdd.skills.label":"Skills","composerAdd.plan.label":"Plan mode","composerAdd.plan.description":"Plan first, run after you approve","composerAdd.plan.busy":"Switching mode","at.category.mcpResources":"MCP resources","at.category.mcpResources.description":"Reference MCP server resources","at.menu":"Reference menu","common.back":"back","common.all":"All","common.add":"add","common.cancel":"cancel","common.close":"close","common.fullscreen":"Fullscreen","common.exitFullscreen":"Exit fullscreen","common.continue":"continue","common.current":"current","common.disabled":"disabled","common.enabled":"enabled","common.enterSelect":"Enter to select","common.invalid":"invalid","common.loading":"Loading...","common.retry":"Try again","session.recovery.interrupted_prompt":"The previous request was interrupted before the response completed.","session.recovery.interrupted_turn":"The previous task was interrupted. Some tool results were not saved.","session.recovery.degraded_history":"Conversation history is incomplete. The interrupted task cannot be continued.","session.recovery.continue":"Continue execution","session.recovery.continuing":"Continuing…","session.recovery.failed":"Could not continue the conversation.","session.archived":"This conversation is archived","session.archivedDescription":"Unarchive it before opening the conversation.","session.capabilitiesFailed":"The daemon capabilities could not be loaded. Try again before opening this conversation.","session.contextConflict":"A standalone or Live conversation link cannot include a workspace target.","session.loadFailed":"Failed to load conversation","session.notFound":"Conversation not found","session.notFoundDescription":"This standalone conversation no longer exists.","session.resolving":"Opening conversation...","session.standaloneUnavailable":"Standalone conversations are unavailable","session.standaloneUpgradeRequired":"Upgrade the daemon to open standalone conversations.","session.stillCreating":"The conversation is still being created. Try checking again.","session.recoveryPending":"Creation may have succeeded, but the result could not be confirmed. Sending is paused to avoid creating a duplicate conversation.","session.recoveryChecking":"Checking the reserved conversation ID...","session.recoveryStillCreating":"The conversation is still being created. Check again in a moment.","session.recoveryAbsent":"No conversation exists for the reserved ID. You can explicitly start a fresh conversation.","session.recoveryUnknown":"The creation result is still unknown. Check again before starting another conversation.","session.recoveryArchived":"The recovered conversation is archived. Unarchive it before opening.","session.recoveryCheckFailed":"Failed to check conversation creation","session.recoveryBlocksAction":"Resolve the pending standalone conversation state before continuing.","session.checkStatus":"Check status","session.retryCreation":"Start a fresh conversation","session.writerBlocked":"Another O1-Code process or an unresolved writer lock may be blocking this conversation. Close it in other processes and try again. If it still fails, check local daemon diagnostics before recovery.","session.directoryRecreated":"The transcript was recovered, but files from the previous private directory were not available.","session.directoryMissing":"This conversation's private working directory is missing. Repair it before sending another prompt.","session.directoryCompromised":"This private working directory is unsafe and cannot be repaired automatically. Export the transcript, then delete the conversation.","session.repair":"Repair directory","session.repairing":"Repairing...","session.repairFailed":"Failed to repair the private working directory","session.repairSucceeded":"The private working directory was repaired.","session.unarchive":"Unarchive","session.unarchiveFailed":"Failed to unarchive this conversation.","session.workspaceActionUnavailable":"This action is available only in project conversations.","common.save":"save","common.navigate":"↑↓ to navigate","common.next":"next","common.noResults":"No results","common.previous":"previous","common.expand":"Expand","common.collapse":"Collapse","common.refresh":"Refresh","common.search":"Search","common.valid":"valid","common.clients":e=>`${e?.count??0} clients`,"agent.count":e=>`${e?.count??0} agents`,"askUser.submit":"Submit","askUser.submitting":"Submitting...","askUser.submitFailed":"Failed to submit answer","askUser.submitOptionUnavailable":"Submit option is unavailable","askUser.ignore":"Ignore","askUser.multiHint":"multiple choice","askUser.progress":e=>`${e?.current??0}/${e?.total??0} questions`,"askUser.selectAnswer":"Select an answer","askUser.typePlaceholder":"Type something...","askUser.shortcuts.previous":"← previous","askUser.shortcuts.optionsSingle":"↑↓ select · Enter submit","askUser.shortcuts.optionsNext":"↑↓ select · Enter next","askUser.shortcuts.optionsFinal":"↑↓ select · Enter submit","askUser.shortcuts.multiSingle":"↑↓ move · Space select/deselect · Enter select & submit","askUser.shortcuts.multiNext":"↑↓ move · Space select/deselect · Enter select & next","askUser.shortcuts.multiFinal":"↑↓ move · Space select/deselect · Enter select & submit","askUser.shortcuts.customTrigger":"↑↓ select · Enter edit","askUser.shortcuts.customTriggerMulti":"↑↓ move · Enter edit","askUser.shortcuts.inputEmpty":"Type an answer · Esc stop editing","askUser.shortcuts.inputSingle":"Enter submit · Esc stop editing","askUser.shortcuts.inputNext":"Enter next · Esc stop editing","askUser.shortcuts.inputFinal":"Enter submit · Esc stop editing","copy.failedFallback":"Failed to copy to the clipboard","copy.inlineLatexMissing":"No matching inline LaTeX expression found in the last AI output.","copy.latexMissing":"No matching LaTeX block found in the last AI output.","copy.noOutput":"No output in history","copy.noText":"Last AI output contains no text to copy.","copy.codeMissing":"No matching code block found in the last AI output.","copy.outputCopied":"Last output copied to the clipboard","copy.toClipboard":e=>`${e?.label??"Selection"} copied to the clipboard`,"code.copy":"Copy","code.copied":"Copied!","echartsChart.noData":"No data","echartsChart.tableNotice":e=>{const t=Number(e?.omittedRows??0),n=Number(e?.omittedColumns??0);return t>0&&n>0?`Showing ${e?.visibleRows??0} of ${e?.totalRows??0} rows and ${e?.visibleColumns??0} of ${e?.totalColumns??0} columns`:n>0?`Showing ${e?.visibleColumns??0} of ${e?.totalColumns??0} columns`:`Showing ${e?.visibleRows??0} of ${e?.totalRows??0} rows`},"echartsChart.rendering":"Rendering chart","echartsChart.renderFailed":"Chart render failed.","echartsChart.viewMode":"View mode","echartsChart.showChart":"Show chart","echartsChart.showData":"Show data","echartsChart.chart":"Chart","echartsChart.data":"Data","markdownTable.blank":"(blank)","markdownTable.column":e=>`Column ${e?.index??""}`,"markdownTable.rows":e=>{const t=Number(e?.count??0);return`${t} row${t===1?"":"s"}`},"markdownTable.rowsFiltered":e=>`${e?.visible??0}/${e?.total??0} rows`,"markdownTable.hint":"Click headers to sort, open filters from ▾.","markdownTable.filtersActive":e=>{const t=Number(e?.count??0);return`${t} filter${t===1?"":"s"}`},"markdownTable.selection.selected":"Selected","markdownTable.selection.nonEmpty":"Non-empty","markdownTable.selection.numeric":"Numeric","markdownTable.selection.sum":"Sum","markdownTable.selection.average":"Average","markdownTable.selection.min":"Min","markdownTable.selection.max":"Max","markdownTable.copyTsv":"Copy TSV","markdownTable.copyTsvHint":"Copy as TSV for pasting into spreadsheet apps","markdownTable.copyVisible":"Copy table","markdownTable.customColumns":"Custom columns","markdownTable.customColumns.tableSection":"Columns shown in the table","markdownTable.customColumns.detailSection":"Fields shown in expanded rows","markdownTable.customColumns.toggleAllTable":"Toggle all table columns","markdownTable.customColumns.toggleAllDetails":"Toggle all expanded-row fields","markdownTable.customColumns.reset":"Reset","markdownTable.customColumns.noDetails":"No expanded-row fields selected.","markdownTable.freezeFirstColumn":"Freeze first column","markdownTable.unfreezeFirstColumn":"Unfreeze first column","markdownTable.densityLabel":"Table density","markdownTable.densityCurrent":e=>`${e?.density??""} density`.trim(),"markdownTable.density":e=>`Density: ${e?.density??""}`,"markdownTable.density.standard":"Standard","markdownTable.density.compact":"Compact","markdownTable.density.comfortable":"Comfortable","markdownTable.expandLongText":"Expand text","markdownTable.collapseLongText":"Collapse text","markdownTable.emptyValue":"(blank)","markdownTable.hideColumn":"Hide column","markdownTable.showHiddenColumns":e=>{const t=Number(e?.count??0);return`Show ${t} hidden column${t===1?"":"s"}`},"markdownTable.moveColumn":e=>`Move ${e?.column??""}`,"markdownTable.resizeColumn":e=>`Resize ${e?.column??""}`,"markdownTable.rowDetails":"Details","markdownTable.rowDetailsAria":e=>`View details for row ${e?.index??""}`,"markdownTable.closeRowDetailsAria":e=>`Hide details for row ${e?.index??""}`,"markdownTable.detailsHeader":"Row details","markdownTable.cellDialogTitle":"Current field value","markdownTable.copyCell":"Copy","markdownTable.close":"Close","markdownTable.actions":"Actions","markdownTable.sortByColumn":e=>`Sort by ${e?.column??""}`,"markdownTable.sortByColumnAsc":e=>`Sort by ${e?.column??""}, ascending`,"markdownTable.sortByColumnDesc":e=>`Sort by ${e?.column??""}, descending`,"markdownTable.filterColumn":e=>`Filter ${e?.column??""}`,"markdownTable.empty":"This table has no data.","markdownTable.emptyFiltered":"No rows match the filters.","markdownTable.sort.asc":"Sort ascending","markdownTable.sort.desc":"Sort descending","markdownTable.sort.clear":"Clear sort","markdownTable.filter.searchPlaceholder":"Search filter values","markdownTable.filter.searchAria":e=>`Search ${e?.column??""}`,"markdownTable.filter.selectVisible":"Select current results","markdownTable.filter.optionLimit":e=>`Showing first ${e?.count??0} items. Search to narrow results.`,"markdownTable.filter.noOptions":"No matches","markdownTable.filter.custom":"Custom filter","markdownTable.filter.numberAria":e=>`Number filter for ${e?.column??""}`,"markdownTable.filter.textAria":e=>`Text filter for ${e?.column??""}`,"markdownTable.filter.numberPlaceholder":"Value","markdownTable.filter.toPlaceholder":"To","markdownTable.filter.textPlaceholder":"Enter filter condition","markdownTable.filter.reset":"Reset","markdownTable.filter.cancel":"Cancel","markdownTable.filter.confirm":"Confirm","markdownTable.filter.text.contains":"Contains","markdownTable.filter.text.equals":"Equals","markdownTable.filter.text.notEquals":"Does not equal","markdownTable.filter.text.startsWith":"Starts with","markdownTable.filter.text.endsWith":"Ends with","markdownTable.filter.number.gt":"Greater than","markdownTable.filter.number.gte":"Greater than or equal to","markdownTable.filter.number.lt":"Less than","markdownTable.filter.number.lte":"Less than or equal to","markdownTable.filter.number.between":"Between","mermaid.rendering":"Rendering diagram...","mermaid.viewCode":"</>","mermaid.viewDiagram":"⊞","mermaid.zoomIn":"+","mermaid.zoomOut":"−","mermaid.zoomReset":"↺","contextUsage.active":"active","contextUsage.autocompactBuffer":"Autocompact buffer","contextUsage.bodyLoaded":"body loaded","contextUsage.builtinTools":"Built-in tools","contextUsage.contextWindow":"Context window","contextUsage.detailHint":"Run /context detail for per-item breakdown.","contextUsage.estimatedOverhead":"Estimated base overhead","contextUsage.estimatedUntilProviderUsage":"Token usage is estimated until provider usage is received.","contextUsage.free":"Free","contextUsage.memoryFiles":"Memory files","contextUsage.messages":"Messages","contextUsage.startupContext":"Startup context","contextUsage.unattributed":"Unattributed","contextUsage.cachedPrefix":"Cached prefix","contextUsage.mcpTools":"MCP tools","contextUsage.model":"Model","contextUsage.noSession":"No active session yet. Send your first message before viewing context usage.","contextUsage.usageUnavailable":"Current context usage is unavailable. The estimates below cover base overhead only, excluding conversation messages.","contextUsage.overLimit":"Context exceeds limit! Use /compress or /clear to reduce.","contextUsage.skills":"Skills","contextUsage.systemPrompt":"System prompt","contextUsage.title":"Context Usage","contextUsage.tokens":"tokens","contextUsage.used":"Used","contextUsage.accessibleUsage":e=>`${e?.used} of ${e?.total} tokens used`,"contextUsage.viewDetails":"View details","contextUsage.viewInConversation":"Click to view the breakdown in the conversation.","daemon.title":"Daemon Status","daemon.connection.title":"Connections","daemon.connection.target":"Current target","daemon.connection.state":"Connection state","daemon.connection.address":"Daemon address","daemon.connection.token":"Bearer token (optional)","daemon.connection.connect":"Connect","daemon.connection.add":"Add connection","daemon.connection.saved":"Connected computers","daemon.connection.forget":e=>`Forget ${e?.address}`,"daemon.connection.invalid":"Enter a valid HTTP or HTTPS origin.","daemon.connection.notReady":"The daemon did not accept the connection; the stored credential was left unchanged.","daemon.connection.authFailed":"The daemon rejected that token; the stored credential was left unchanged.","daemon.connection.reloadUnavailable":"Browser storage is unavailable, so the new token could not be applied to this connection.","daemon.connection.switchUnavailable":"Browser storage is unavailable, so the token could not be carried to that daemon.","daemon.connection.status.idle":"Idle","daemon.connection.status.connecting":"Connecting","daemon.connection.status.adding":"Adding","daemon.connection.status.connected":"Connected","daemon.connection.status.error":"Error","daemon.details.loading":"Loading diagnostics...","daemon.details.failed":"Failed to load diagnostics.","daemon.refresh":"Refresh","daemon.loading":"Loading daemon status...","daemon.loadFailed":"Failed to load daemon status","daemon.updatedAt":e=>`Updated ${e?.time??""}`,"daemon.none":"none","daemon.level.ok":"OK","daemon.level.warning":"Warning","daemon.level.error":"Error","daemon.level.unavailable":"Unavailable","daemon.issues.title":"Issues","daemon.overview.title":"Daemon","daemon.overview.version":"Version","daemon.overview.pid":"PID","daemon.overview.mode":"Mode","daemon.overview.uptime":"Uptime","daemon.overview.workspace":"Workspace","daemon.runtime.title":"Runtime","daemon.runtime.activeSessions":"Active sessions","daemon.runtime.activePrompts":"Active prompts","daemon.runtime.idle":"Idle for","daemon.runtime.noActivity":"no activity yet","daemon.runtime.pendingPermissions":"Pending permissions","daemon.runtime.permissionPolicy":"Permission policy","daemon.runtime.channel":"ACP channel","daemon.runtime.channelLive":"live","daemon.runtime.channelDown":"down","daemon.runtime.startingUp":"Runtime is starting...","daemon.runtime.startFailed":"Runtime failed to start","daemon.runtime.memory":"Memory (RSS / heap)","daemon.transport.title":"Transport","daemon.transport.restSse":"REST SSE streams","daemon.transport.acpDisabled":"ACP transport disabled","daemon.transport.acpConnections":"ACP connections","daemon.transport.acpStreams":"ACP streams (session/SSE/WS)","daemon.transport.pendingRequests":"Pending client requests","daemon.transport.rateLimitRejected":"Rate-limit rejects","daemon.security.title":"Security","daemon.security.token":"Bearer token","daemon.security.requireAuth":"Require auth","daemon.security.loopback":"Loopback bind","daemon.security.allowOrigin":"Allowed origins","daemon.security.shell":"Session shell commands","daemon.security.configured":"configured","daemon.security.notConfigured":"not configured","daemon.limits.title":"Limits","daemon.limits.unlimited":"unlimited","daemon.limits.maxSessions":"Max sessions","daemon.limits.maxPendingPrompts":"Max pending prompts / session","daemon.limits.maxConnections":"Max listener connections","daemon.limits.eventRing":"Event ring size","daemon.limits.promptDeadline":"Prompt deadline","daemon.limits.sessionIdle":"Session idle timeout","daemon.capabilities.title":"Capabilities","daemon.capabilities.titleCount":e=>`Capabilities (${e?.count??0})`,"daemon.full.sessions.title":"Sessions","daemon.full.sessions.empty":"No active sessions","daemon.full.session.pendingPrompts":e=>`${e?.count??0} pending prompts`,"daemon.full.session.pendingPermissions":e=>`${e?.count??0} pending permissions`,"daemon.full.session.prompting":"prompting","daemon.full.workspace.title":"Workspace Diagnostics","daemon.full.workspace.empty":"No workspace diagnostics reported","daemon.full.acp.title":"ACP connections","daemon.tab.overview":"Overview","daemon.tab.usage":"Usage","daemon.tab.metrics":"Metrics","daemon.tab.diagnostics":"Diagnostics","daemon.charts.title":"Metrics","daemon.charts.empty":"Collecting metrics… charts appear after the first sample.","daemon.charts.concurrency":"Concurrency","daemon.charts.activePrompts":"Active tasks","daemon.charts.activeSessions":"Sessions","daemon.charts.requests":"Requests","daemon.charts.reqTotal":"Total","daemon.charts.reqErrors":"Errors","daemon.charts.apiLatency":"API latency","daemon.charts.promptLatency":"Prompt latency","daemon.charts.queueWait":"Queue wait","daemon.charts.promptDuration":"Duration","daemon.charts.eventLoop":"Event-loop lag","daemon.charts.eventLoopLag":"Lag p99","daemon.charts.queuedPrompts":"Queued","daemon.charts.reqRejected":"Rejected","daemon.charts.llmLatency":"LLM API latency","daemon.charts.apiHealth":"Model API health","daemon.charts.apiErrors":"API errors","daemon.charts.apiRetries":"Retries","daemon.charts.cpu":"CPU","daemon.charts.pipe":"IPC pipe","daemon.charts.pipeIn":"In","daemon.charts.pipeOut":"Out","daemon.charts.connections":"Connections","daemon.charts.cpuDaemon":"Daemon","daemon.charts.cpuChild":"Child","daemon.charts.rssDaemon":"Daemon RSS","daemon.charts.rssChild":"Child RSS","daemon.charts.memory":"Memory","daemon.charts.heap":"Heap","daemon.charts.tokens":"Token burn","daemon.charts.tokensIn":"Input","daemon.charts.tokensOut":"Output","daemon.charts.peak":"peak","daemon.charts.concurrency.help":"Live load at each sample: prompts running now, prompts queued (accepted but not yet dispatched), and active sessions. Queued rising above active is backpressure.","daemon.charts.requests.help":"Client↔daemon HTTP traffic per window — NOT model calls. Total requests, those returning 4xx/5xx, and those the rate limiter rejected.","daemon.charts.apiLatency.help":"Client↔daemon HTTP request duration (p50/p95) — how fast the daemon answers, not the model. Compare with LLM API latency to separate 'we are slow' from 'the model is slow'.","daemon.charts.llmLatency.help":"Per-round model API round-trip (daemon→model→daemon), p50/p95. Model-side latency, distinct from the HTTP API latency above.","daemon.charts.apiHealth.help":"Provider-side LLM failures. Each failed attempt = 1 error; each automatic backoff = 1 retry. Transient 429/5xx are usually absorbed by retries (errors ≈ retries); errors climbing above retries means calls are failing outright.","daemon.charts.promptLatency.help":"Per prompt (task): p95 time waiting in the per-session queue before dispatch, and p95 end-to-end run time. Rising queue wait signals backpressure.","daemon.charts.eventLoop.help":"Daemon event-loop lag p99 per window — the CPU-saturation / blocking signal. High lag means the daemon is starved and everything slows.","daemon.charts.cpu.help":"CPU utilization (% of all cores) at each sample: the daemon and the ACP child (where LLM/tool work runs). Child at 0% means no child is running.","daemon.charts.memory.help":"Resident memory at each sample: daemon RSS, daemon V8 heap, and ACP child RSS. Steady growth over time hints at a leak.","daemon.charts.pipe.help":"Bytes over the stdio pipe to/from the ACP child per window. Sustained high volume points to chatty framing between daemon and child.","daemon.charts.connections.help":"Live client transport connections at each sample: REST/SSE streams, ACP WebSocket streams, and ACP connections.","daemon.charts.tokens.help":"Input (prompt) and output (completion) tokens attributed to model turns per window — model spend over time.","daemon.usage.today":"Today","daemon.usage.period7d":"7D","daemon.usage.period30d":"30D","daemon.usage.rangeWeek":"Last 7 days","daemon.usage.rangeMonth":"Last 30 days","daemon.usage.rangeGroup":"Summary period","daemon.usage.tokensConsumed":"tokens consumed","daemon.usage.sessions":"Sessions","daemon.usage.requests":"Requests","daemon.usage.tools":"Tools","daemon.usage.changes":"Changes","daemon.usage.breakdownTitle":"Token Breakdown","daemon.usage.inputTokens":"Input tokens","daemon.usage.inputHint":"request + cache read","daemon.usage.outputTokens":"Output tokens","daemon.usage.outputHint":"response + reasoning","daemon.usage.cacheRead":"Cache read","daemon.usage.cacheHint":"cache read share","daemon.usage.heatmapTitle":"Token Heatmap","daemon.usage.heatmapSub":e=>`recent ${e?.months??12} months · daily aggregated tokens`,"daemon.usage.low":"Low","daemon.usage.high":"High","daemon.usage.dowMon":"Mon","daemon.usage.dowWed":"Wed","daemon.usage.dowFri":"Fri","daemon.usage.empty":"No token usage recorded yet.","daemon.usage.loading":"Loading usage…","daemon.usage.failed":"Failed to load usage","daemon.usage.cellTokens":e=>`${e?.date??""} · Tokens: ${e?.tokens??"0"} · Cache: ${e?.cache??0}%`,"daemon.usage.rangeWordToday":"Today","daemon.usage.rangeWordWeek":"7 days","daemon.usage.rangeWordMonth":"30 days","daemon.usage.modelShareTitle":"model share","daemon.usage.modelShareSub":"token share · light green shows cache read","daemon.usage.modelMeta":e=>`${e?.tokens??"0"} tokens · cache ${e?.cache??0}%`,"daemon.usage.skillTitle":"skill calls","daemon.usage.skillSub":"skill name / count","daemon.usage.skillName":"Skill name","daemon.usage.skillCount":"Count","daemon.usage.dailyTokensTitle":"tokens","daemon.usage.dailyTokensSub":"daily token totals","daemon.usage.dailySessionsTitle":"sessions","daemon.usage.dailySessionsSub":"active session counts per day","delete.cannotCurrent":"Cannot delete the current active session.","delete.action":"Delete","delete.deleted":"Session deleted.","delete.deletedCount":e=>`${e?.count??0} session(s) deleted.`,"delete.deleting":"Deleting...","delete.failed":e=>`Failed to delete session.${e?.reason?` ${e.reason}`:""}`,"delete.footer":"↑↓ navigate · Space select · Enter delete · Esc cancel","delete.noMatch":e=>`No session matching "${e?.query??""}"`,"delete.none":"No sessions to delete","delete.allFailed":e=>`Failed to delete ${e?.count??0} session(s): ${e?.reason??"unknown error"}`,"delete.nonRemoved":"No sessions were deleted.","delete.notFound":"Session not found — it may have been deleted already.","delete.partialFail":e=>`${e?.removed??0} deleted, ${e?.failed??0} failed: ${e?.detail??"unknown error"}`,"delete.matches":e=>`${e?.count??0} matches`,"delete.pressSearch":"Press / to search; Space to select; Enter to delete","delete.selected":e=>`${e?.count??0} selected`,"delete.title":"Delete Session","time.justNow":"just now","time.minutesAgo":e=>`${e?.count??0} min ago`,"time.hoursAgo":e=>`${e?.count??0}h ago`,"time.daysAgo":e=>`${e?.count??0}d ago`,"dialog.footer.close":"Esc to close","dialog.footer.confirmCancel":"Enter to confirm · Esc to cancel","release.cannotCurrent":"Cannot release the current active session.","release.action":"Release","release.released":"Session released successfully.","release.failed":e=>`Failed to release session.${e?.reason?` ${e.reason}`:""}`,"release.footer":"↑↓ to navigate · Enter to release · Esc to cancel","release.inactive":"Only active live sessions can be released.","release.inactiveBadge":"inactive","release.noMatch":e=>`No session matching "${e?.query??""}"`,"release.matches":e=>`${e?.count??0} matches`,"release.none":"No live sessions to release","release.pressSearch":"Press / to search; Enter releases the selected live session","release.releasing":"Releasing...","release.title":"Release Session","dialog.footer.menu":"Esc to menu","dialog.footer.mcpServers":"↑↓ to navigate · Enter details · r refresh · Esc close","dialog.footer.mcpSelect":"↑↓ to navigate · Enter select · Esc back","dialog.footer.modelFast":"↑↓ to navigate · / to search · c for custom · Enter to set fast model · Esc to cancel","dialog.footer.navSelectCancel":"↑↓ to navigate · Enter to select · Esc to cancel","dialog.footer.navSelectClose":"↑↓ to navigate · Enter to select · Esc to close","dialog.footer.navSelectMenu":"↑↓ to navigate · Enter to select · Esc to menu","dialog.footer.navOpenClose":"↑↓ to navigate · Enter to open · Esc to close","dialog.footer.navOpenMenu":"↑↓ to navigate · Enter to open · Esc to menu","dialog.footer.back":"Esc to go back","dialog.footer.backClose":"Esc to close","dialog.footer.saveClose":"↑↓ switch fields · ⌘/Ctrl+Enter to save · Esc to close","dialog.footer.saveMenu":"↑↓ switch fields · ⌘/Ctrl+Enter to save · Esc to menu","dialog.footer.search":"Type to search · Enter to commit · Esc to clear","dialog.footer.select":"Enter to select","editor.escClearHint":"Press Esc again to clear","editor.hintCommands":"commands","editor.hintFiles":"Files","editor.hintNext":"next","editor.hintPrev":"previous","editor.hintSearch":"search","editor.noHistory":"No matching history","editor.placeholder":"Type a message or @ file path","history.loadingEarlier":"Loading earlier messages…","history.openEarlier":"Open earlier history","history.loadEarlier":"Load earlier","history.loadNewer":"Load newer","history.returnLatest":"Return to latest","history.viewUnavailable":"History is temporarily unavailable while the session reconnects or repairs its transcript.","history.snapshotView":"Historical snapshot · read-only","history.viewError":"This section could not be loaded. Move the reading position and retry, or return to latest.","history.capacityReached":"History display limit reached. Earlier messages remain saved.","history.paginationError":"Earlier history could not be loaded.","history.retry":"Retry","editor.shellPlaceholder":"Enter terminal command","editor.send":"Send message","editor.imagesSkipped":e=>`${e?.count??0} file(s) were unavailable and skipped.`,"editor.imagesReadFailed":e=>`${e?.count??0} file(s) could not be read.`,"editor.imagesTooLarge":e=>`${e?.count??0} file(s) exceeded the attachment size limit.`,"editor.pastedTextShowInEditor":"Show inline","editor.connectionDisconnected":"Connection interrupted. Please try again after it reconnects.","editor.sessionLoading":"Session is still loading. Try again in a moment.","editor.processing":"Processing. New messages will be queued.","editor.searchHint":"ctrl+r next · tab accept · enter send · esc cancel","editor.searchLabel":"reverse-i-search:","editor.searchPlaceholder":"type to search...","editor.newSessionSuggestionTitle":"This looks like a new topic","editor.newSessionSuggestionStart":"Send in new session","editor.btwSuggestionTitle":"This looks like a side question","editor.btwSuggestionSend":"Ask with BTW","quickActions.extensions":"Extensions","quickActions.help":"Help","quickActions.auth":"Auth","quickActions.settings":"Settings","quickActions.copy":"Copy output","quickActions.shellMode":"Shell mode","quickActions.exitShellMode":"Exit Shell","session.missing":"Current session does not exist","session.new":"New session","workspace.loadFailed":"Failed to load workspace","workspace.notFound":"Workspace not found","workspace.notFoundDescription":"This workspace may have been removed or the link is no longer valid.","workspace.loadFailedDescription":"The workspace service could not be reached. Check the daemon and try again.","scheduledTasks.title":"Scheduled Tasks","scheduledTasks.subtitle":"Run tasks automatically on a schedule, or trigger them manually anytime.","scheduledTasks.loading":"Loading…","scheduledTasks.count":e=>`${e?.count??0} task${Number(e?.count??0)===1?"":"s"}`,"scheduledTasks.refresh":"Refresh","scheduledTasks.new":"New scheduled task","scheduledTasks.createViaChat":"Create via chat","scheduledTasks.chatStarter":"Help me set up a recurring scheduled task (keep it long-term). What I want: ","scheduledTasks.name":"Name","scheduledTasks.workspace":"Workspace","scheduledTasks.session.label":"Conversation","scheduledTasks.session.dedicated":"Dedicated task conversation","scheduledTasks.session.current":"Current conversation","scheduledTasks.session.dedicatedHint":"Runs are kept in a separate conversation created for this task.","scheduledTasks.session.currentHint":"Future runs continue in the conversation that is open now.","scheduledTasks.session.currentUnsupported":"Current-conversation scheduling is unavailable on this daemon.","scheduledTasks.session.currentUnavailable":"Open an existing conversation before selecting the current conversation.","scheduledTasks.session.currentBusy":"Wait for the current turn or pending interaction to finish.","scheduledTasks.session.currentIneligible":"This conversation type cannot own a scheduled task.","scheduledTasks.session.currentWorkspaceMismatch":"The current conversation belongs to a different workspace.","scheduledTasks.session.currentAlreadyBound":"The current conversation is already bound to a scheduled task.","scheduledTasks.taskId":"Task ID","scheduledTasks.schedule":"Schedule","scheduledTasks.type":"Type","scheduledTasks.status":"Status","scheduledTasks.namePlaceholder":"Optional — defaults to the prompt","scheduledTasks.prompt":"Prompt","scheduledTasks.promptPlaceholder":"What should this task do?","workflowRuns.title":"Workflows","workflowRuns.saved":"Saved","workflowRuns.active":"Running","workflowRuns.history":"History","workflowRuns.create":"New","workflowRuns.refresh":"Refresh","workflowRuns.loading":"Loading workflow runs…","workflowRuns.loadFailed":"Failed to load workflow runs.","workflowRuns.noSession":"Open a session in this project to view its workflow runs.","workflowRuns.emptyActive":"No workflows are currently running.","workflowRuns.emptyHistory":"No saved workflow runs yet.","workflowRuns.emptySaved":"No reusable workflows saved yet.","workflowRuns.emptySavedHint":"Select New to create one with O1-Code, save a completed run from the terminal, or add a .js file under .o1-code/workflows.","workflowRuns.project":"Project","workflowRuns.user":"User","workflowRuns.projectDescription":"Available in this project","workflowRuns.userDescription":"Available across projects","workflowRuns.extension":"Extension","workflowRuns.extensionDescription":"Provided by an installed extension","workflowRuns.detail.toggle":e=>`Show details for ${e?.name??""}`,"workflowRuns.detail.loading":"Loading workflow definition…","workflowRuns.detail.unavailable":"This workflow definition is no longer available.","workflowRuns.detail.loadFailed":"Could not read the workflow definition.","workflowRuns.detail.retry":"Retry","workflowRuns.detail.noDescription":"This workflow declares no description.","workflowRuns.detail.whenToUse":"When to use","workflowRuns.detail.metaError":e=>`The meta block could not be parsed: ${e?.error??""}`,"workflowRuns.detail.phases":e=>`Phases (${e?.count??0})`,"workflowRuns.detail.recentRuns":"Recent runs","workflowRuns.detail.noRuns":"No runs in this session yet.","workflowRuns.detail.viewRuns":e=>`View ${e?.count??0} ${e?.count===1?"run":"runs"} in History`,"workflowRuns.detail.showSource":"Show source","workflowRuns.detail.hideSource":"Hide source","workflowRuns.run":"Run","workflowRuns.starting":"Starting…","workflowRuns.runNamed":e=>`Run ${e?.name??""}`,"workflowRuns.startFailed":"The saved workflow could not be started. Refresh and try again.","scheduledTasks.reference.extension":"Extensions","scheduledTasks.reference.skill":"Skills","scheduledTasks.reference.mcp":"MCP","scheduledTasks.referencePicker":"Reference picker","scheduledTasks.reference.remove":"Remove","scheduledTasks.reference.loading":"Loading…","scheduledTasks.reference.empty":"No available items.","scheduledTasks.frequency":"Frequency","scheduledTasks.freq.daily":"Daily","scheduledTasks.freq.weekdays":"Weekdays","scheduledTasks.freq.weekly":"Weekly","scheduledTasks.freq.hourly":"Hourly","scheduledTasks.freq.minutes":"Every N minutes","scheduledTasks.freq.custom":"Custom (cron)","scheduledTasks.time":"Time","scheduledTasks.weekday":"Weekday","scheduledTasks.interval":"Minutes","scheduledTasks.cron":"Cron expression","scheduledTasks.weekdayNames":"Sun,Mon,Tue,Wed,Thu,Fri,Sat","scheduledTasks.human.daily":e=>`Daily at ${e?.time??""}`,"scheduledTasks.human.weekdays":e=>`Weekdays at ${e?.time??""}`,"scheduledTasks.human.weekly":e=>`Every ${e?.day??""} at ${e?.time??""}`,"scheduledTasks.human.hourly":e=>`Hourly at :${e?.min??"00"}`,"scheduledTasks.human.everyMinutes":e=>`Every ${e?.n??""} minutes`,"scheduledTasks.never":"Never run","scheduledTasks.repeats":"Repeats","scheduledTasks.runsOnce":"Runs once","scheduledTasks.lastFired":e=>`Last run: ${e?.when??""}`,"scheduledTasks.runNow":"Run now","scheduledTasks.enable":"Enable","scheduledTasks.disable":"Disable","scheduledTasks.delete":"Delete","scheduledTasks.deleteConfirmTitle":"Delete scheduled task","scheduledTasks.deleteConfirm":e=>`Delete scheduled task "${e?.name??""}"?`,"scheduledTasks.deletedSnapshot":"This scheduled task has been deleted. Showing the snapshot from when it was created.","scheduledTasks.sessionScopedSnapshot":"This is a session-scoped scheduled task. Showing the snapshot from when it was created.","scheduledTasks.empty":"No scheduled tasks yet. Create one to get started.","scheduledTasks.create":"Create","scheduledTasks.creating":"Creating…","scheduledTasks.cancel":"Cancel","scheduledTasks.error.invalidSchedule":"Invalid schedule","scheduledTasks.error.workspaceUnavailable":"The selected workspace is unavailable or untrusted","scheduledTasks.error.emptyPrompt":"Prompt is required","scheduledTasks.error.promptTooLong":e=>`Prompt exceeds ${e?.max??1e5}-character limit`,"scheduledTasks.error.goalActive":"Cannot start a scheduled task while a Goal is active.","scheduledTasks.error.toggleFailed":"Failed to update task","scheduledTasks.error.deleteFailed":"Failed to delete task","scheduledTasks.edit":"Edit","scheduledTasks.editTitle":"Edit scheduled task","scheduledTasks.save":"Save","scheduledTasks.saving":"Saving…","scheduledTasks.runHistory":e=>`Run history (${e?.count??0})`,"scheduledTasks.viewHistory":e=>`View conversation (${e?.count??0})`,"scheduledTasks.viewHistoryEmpty":"View conversation","scheduledTasks.viewHistoryHint":"Open the task's session to see its runs","scheduledTasks.runKind.catchUp":"late","scheduledTasks.runKind.manual":"manual","scheduledTasks.runKind.withheld":"skipped","scheduledTasks.runKind.sessionDispatchFailed":"new session failed, nothing ran","scheduledTasks.runKind.sessionDispatchFallback":"new session failed, ran in the task session","scheduledTasks.openRunSession":"Open this run session","scheduledTasks.runContext.title":"Scheduled task run","scheduledTasks.runContext.taskId":"Task ID","scheduledTasks.runContext.schedule":"Schedule","scheduledTasks.runContext.triggeredAt":"Triggered","scheduledTasks.runContext.trigger.scheduled":"Scheduled","scheduledTasks.runContext.trigger.manual":"Run manually","scheduledTasks.error.runFailed":"Failed to record the run","scheduledTasks.error.oneShotConsumedButFailed":"The task was deleted but the prompt could not be delivered — it never ran. Recreate it to try again.","scheduledTasks.dueNow":"Due now","scheduledTasks.nextRunTooltip":e=>`Next run: ${e?.when??""}`,"scheduledTasks.dur.d":"d","scheduledTasks.dur.h":"h","scheduledTasks.dur.m":"m","scheduledTasks.dur.s":"s","scheduledTasks.runIn":"Run in","scheduledTasks.sessionMode.perRun":"A new session every run","scheduledTasks.sessionMode.persistent":"Persistent task session","scheduledTasks.sessionMode.perRun.hint":"Each run gets a clean context and its own conversation.","scheduledTasks.sessionMode.persistent.hint":"All runs continue in the same task conversation.","scheduledTasks.model":"Model","scheduledTasks.model.workspaceDefault":"Workspace default","scheduledTasks.model.hint":"The selected model is applied when each new run session is created.","scheduledTasks.group":"Session group","scheduledTasks.group.none":"No group","scheduledTasks.group.create":"Create a new group…","scheduledTasks.group.name":"New group name","scheduledTasks.group.color":"Group color","scheduledTasks.group.hint":"Each run conversation is placed in this group.","scheduledTasks.group.nameRequired":"Enter a name for the new group.","scheduledTasks.routing.loading":"Loading models and groups…","scheduledTasks.condition":"Precondition (optional)","scheduledTasks.conditionPlaceholder":"e.g. Check whether anything landed on main since yesterday. If nothing did, the task should not run.","scheduledTasks.condition.hint":"Checked in this task's own session before each run. The prompt only runs in a fresh session when the check says yes — otherwise the run is skipped.","scheduledTasks.condition.cardPrefix":"If:","turnOutputs.filesEdited":e=>`Edited ${e?.count??0} files`,"turnOutputs.imagePreview":"Image Preview","turnOutputs.viewChanges":"View changes","turnOutputs.review":"Changes","turnOutputs.reviewLatest":"View recent file changes","codeReview.authoritativeVerdict":"Authoritative verdict","codeReview.targetEffort":e=>`Target: ${e?.target??""} · Effort: ${e?.effort??""}`,"codeReview.openReport":"Open Markdown report","codeReview.loadingReport":"Loading Markdown report...","codeReview.back":"Back to review","codeReview.reviewCounts":"Review counts","codeReview.total":"Total","codeReview.confidence":e=>`${e?.value??""} confidence`,"codeReview.held":"Held","codeReview.heldByMeasurement":"Held back from Critical by measurement","codeReview.caps":"Caps","codeReview.none":"None","codeReview.severity":"Severity","codeReview.confidenceLabel":"Confidence","codeReview.all":"All","codeReview.noMatches":"No findings match these filters.","codeReview.source":e=>`Source: ${e?.value??""}`,"codeReview.failureScenario":"Failure scenario","codeReview.witness":"Witness","codeReview.suggestedFix":"Suggested fix","codeReview.outcome":"Outcome","codeReview.locations":"Locations","codeReview.evidence":"Evidence","codeReview.notLinked":"not linked","codeReview.loadErrorTitle":"Unable to display code review","codeReview.loading":"Loading code review...","codeReview.artifactTruncated":"Code review artifact is truncated and cannot be validated.","codeReview.reportTruncated":"Markdown report is truncated.","codeReview.unavailable":e=>`This code review is no longer authoritative because its artifact status is ${e?.status??"unknown"}. Regenerate the review to view it.`,"codeReview.workspaceRequired":"Code review artifacts must be readable workspace files.","sideTask.title":"Side task","sideTask.description":"View or create side tasks","sideTask.new":"New","sideTask.create":"New side task","webPreview.title":"Web preview","webPreview.openHint":"Preview a running web app","webPreview.address":"Development URL","webPreview.open":"Open","webPreview.refresh":"Refresh preview","webPreview.desktop":"Desktop width","webPreview.mobile":"Mobile width (390 px)","webPreview.external":"Open externally","webPreview.frame":"Web preview frame","webPreview.saved":"Saved version","webPreview.savedFrame":"Saved webpage version","webPreview.savedUnavailable":"This saved version is missing or has changed. It cannot be opened.","webPreview.savedLoadFailed":"Could not load this saved version. Try again.","webPreview.page":"Application preview","webPreview.empty":"Start your development server, then enter its URL above.","webPreview.reachable":"Use an address this browser can reach. For a remote server, use its accessible URL or an existing port forward.","webPreview.fallback":"Blank page? Check the server or open externally. The address and refresh use the entry URL.","webPreview.live":"Live page. Opening a link from an earlier message shows its current content, not a saved version.","webPreview.invalidUrl":"Use a separate HTTP/HTTPS development address with a hostname or IPv4 address, without login credentials. Web Shell and daemon addresses cannot be previewed.","terminal.title":"Terminal","terminal.open":"Open a terminal","terminal.notice.exited":e=>`Process exited with code ${e?.exitCode??"?"}`,"terminal.notice.error":e=>`Error: ${e?.message??""}`,"terminal.notice.unknownError":"Unknown error","terminal.notice.reconnecting":"Connection lost — reconnecting…","terminal.notice.protocolMismatch":"Terminal protocol changed; restart the daemon and reload this page.","localFiles.title":"Local files","localFiles.trigger":"Local files","localFiles.hint":"Lets this session read and write one directory on your own machine. Files stay on your computer; only what the agent asks for is sent to it.","localFiles.connect":"Connect a directory…","localFiles.reconnect":"Reconnect","localFiles.disconnect":"Disconnect","localFiles.openInNewTab":"Open in a new tab","localFiles.directory":"Directory","localFiles.tools":e=>`${e?.count??0} tools`,"localFiles.status.idle":"Not connected","localFiles.status.connecting":"Connecting…","localFiles.status.registering":"Registering…","localFiles.status.connected":"Connected","localFiles.status.reconnecting":"Reconnecting…","localFiles.status.heldElsewhere":"Connected in another tab","localFiles.status.needsSession":"Waiting for a session","localFiles.status.needsGesture":"Reconnect to continue","localFiles.status.failed":"Failed","localFiles.status.unavailable":"Unavailable here","localFiles.status.resolving":"Resolving…","localFiles.needsSessionHint":"Start a session first. The bridge binds to exactly one session, so no other session can reach your files.","localFiles.blocker.insecureContext":"This page is not a secure context, so the browser will not grant local file access. Serve the Web Shell over https, or forward the daemon port with SSH and open http://localhost:<port>.","localFiles.blocker.crossOriginFrame":"Local file access is blocked inside a cross-origin frame. Open the Web Shell in its own browser tab to connect a directory.","localFiles.blocker.unsupportedBrowser":"This browser has no File System Access API. Use Chrome or Edge to connect a local directory.","localFiles.blocker.workspaceIneligible":"This conversation's workspace cannot host a local directory (untrusted or live workspace).","localFiles.blocker.workspaceResolving":"Which workspace this conversation belongs to is not known yet.","localFiles.blocker.unsupportedDaemon":"This daemon does not advertise the client filesystem bridge (client_mcp_over_ws). Start the daemon with O1CODE_SERVE_CLIENT_MCP_OVER_WS=1 to enable local files.","rightPanel.add":"Add panel","attachment.showPreview":"Preview","attachment.showSource":"Source","attachment.previewUnsupported":"Preview is not available for this file type.","attachment.readFailed":"Failed to read attachment.","attachment.loadingFile":"Loading file...","attachment.loadingPreview":"Loading preview...","sideTask.creating":"Creating side task…","sideTask.createFailed":"Failed to create side task","sideTask.promptFailed":"Failed to send the side-task question","sideTask.renameFailed":"Failed to name side task","turnOutputs.preview":"Preview","turnOutputs.collapseFiles":"Collapse files","turnOutputs.showMoreFiles":e=>`Show ${e?.count??0} more files`,"turnOutputs.collapseArtifacts":"Collapse artifacts","turnOutputs.showMoreArtifacts":e=>`Show ${e?.count??0} more artifacts`,"turnOutputs.previousTurn":"Previous turn","turnOutputs.fileCount":e=>`${e?.count??0} files`,"turnOutputs.openFileTree":"Open file tree","turnOutputs.closeFileTree":"Close file tree","turnOutputs.artifactMissing":"File not found in the workspace","turnOutputs.artifactUnavailable":e=>e?.path?`File not found in the workspace · ${e.path}`:"File not found in the workspace","sidebar.label":"Workspace sidebar","sidebar.toggleMenu":"Toggle menu","sidebar.newChat":"New chat","sidebar.newTask":"New task","sidebar.newWorktreeTask":"New worktree task","sidebar.plugins":"Plugins","sidebar.live":"Live","sidebar.project":"Project","sidebar.pinnedSessions":"Pinned","sidebar.workspaceSelectLabel":"Workspace","sidebar.noWorkspace":"No workspace","sidebar.noWorkspaceSessions":"No-workspace sessions","sidebar.copySessionId":"Copy session ID","sidebar.copySessionIdFailed":"Failed to copy session ID","sidebar.sessionIdCopied":"Session ID copied","sidebar.workspaceUntrusted":"untrusted","sidebar.manageWorkspaces":"Manage workspaces…","sidebar.workspaceReadOnly":"read-only","sidebar.workspaceTrustToOpen":"Trust this workspace to open the session.","sidebar.addWorkspace":"Add workspace","sidebar.newWorkspace":"New workspace","sidebar.startFromScratch":"Start from scratch","sidebar.useExistingFolder":"Use an existing folder…","sidebar.scratchOutcomeUnknownTitle":"Check workspace creation","sidebar.scratchOutcomeUnknown":"The daemon response was interrupted. Check the refreshed workspace list before creating another workspace.","sidebar.scratchOutcomeRefresh":"Refresh workspace list","sidebar.scratchOutcomeAcknowledge":"I checked the workspace list","sidebar.addWorkspaceTitle":"Add Workspace","sidebar.addWorkspacePath":"Directory path","sidebar.addWorkspaceBrowse":"Browse…","sidebar.addWorkspaceBrowseError":"Unable to open the system folder picker. Enter an absolute path instead.","sidebar.addWorkspaceDisplayName":"Display name (optional)","sidebar.addWorkspaceDisplayNameHint":"Shown in Web Shell; the directory path remains the workspace identity.","sidebar.addWorkspaceRegister":"Register","sidebar.addWorkspaceCancel":"Cancel","sidebar.addWorkspaceError":"Failed to add workspace","sidebar.addWorkspaceBusyError":"Another workspace operation is in progress","sidebar.addWorkspacePersistenceError":"The daemon did not confirm persistent workspace registration","sidebar.addWorkspaceRefreshError":"Workspace added, but the workspace list could not be refreshed","sidebar.addWorkspaceAbsError":"Enter an absolute path or an SSH workspace URL.","sidebar.addWorkspaceHint":"Enter a local absolute path or ssh://user@host/absolute/project. SSH requires key authentication, a trusted host key and Python 3 on the remote computer. Shell commands also require Bash; O1-Code is not required there.","sidebar.addWorkspaceSuggestions":"Directory suggestions","sidebar.addWorkspacePersist":"Keep after daemon restart","sidebar.addWorkspacePersistHint":"Persist this workspace registration in the daemon configuration.","sidebar.addWorkspaceAdding":"Adding…","workspaceHost.source":"Folder source","workspaceHost.thisComputer":"This computer","workspaceHost.folderOn":e=>`Folder on ${e?.address}`,"workspaceHost.folderOnThisComputer":"Folder on this computer","workspaceHost.browseHint":"Choose a folder below, or type an absolute path.","workspaceHost.parent":"Parent folder","workspaceHost.addFolder":"Add this folder","workspaceHost.noFolders":"No subfolders in this directory.","workspaceHost.folderListError":"Could not read folders from this computer. Check the path or connection.","workspaceHost.navigationUnavailable":"Browser storage is unavailable, so the remote folder flow cannot continue safely.","workspaceHost.unsupported":"This computer does not support adding workspaces.","workspaceHost.loadingFolders":"Loading folders from this computer…","workspaceHost.connectionError":"Could not load workspace capabilities from this computer.","sidebar.removeWorkspace":"Remove workspace","sidebar.workspaceActions":"Workspace actions","sidebar.renameWorkspace":"Rename…","sidebar.renameWorkspaceTitle":"Rename Workspace","sidebar.workspaceNamePrompt":"Display name","sidebar.workspaceNameHint":"Leave empty to show the folder name.","sidebar.workspaceNameInvalid":"Names cannot contain control characters.","sidebar.renameWorkspaceFailed":"Failed to rename workspace","sidebar.copyWorkspacePath":"Copy path","sidebar.copyWorkspacePathFailed":"Failed to copy workspace path","sidebar.openWorkspaceFolder":"Open folder","sidebar.openWorkspaceFolderFailed":"Failed to open the workspace folder","sidebar.openWorkspaceFolderOpened":"Opened the workspace folder","sidebar.openWorkspaceTerminal":"Open terminal","sidebar.openWorkspaceTerminalFailed":"Failed to open a terminal","sidebar.openWorkspaceTerminalOpened":"Opened a terminal at the workspace","sidebar.manageWorkspace":"Manage","sidebar.reloadWorkspace":"Reload runtime","sidebar.reloadWorkspaceFailed":"Failed to reload workspace runtime","sidebar.workspaceCount":e=>`${e?.count??0} workspaces`,"sidebar.sessionsRunning":e=>`${e?.count??0} running session${e?.count===1?"":"s"}`,"sidebar.sessionsAttention":e=>`${e?.count??0} session${e?.count===1?"":"s"} waiting for you`,"sidebar.sessionsTotal":e=>`${e?.count??0}${e?.truncated?"+":""} session${e?.count===1&&!e?.truncated?"":"s"}`,"sidebar.overview.sessions":"Sessions","sidebar.overview.mcp":"MCP","sidebar.overview.skills":"Skills","sidebar.overview.extensions":"Extensions","sidebar.overview.context":"Context","sidebar.overview.hooks":"Hooks","sidebar.overview.settings":"Settings","sidebar.overview.mcpDetail":e=>`${e?.connected??0} of ${e?.configured??0} connected`+(Number(e?.failed)>0?`, ${e?.failed} failed`:"")+(Number(e?.disabled)>0?`, ${e?.disabled} disabled`:""),"sidebar.overview.skillsDetail":e=>`${e?.enabled??0} of ${e?.total??0} enabled`,"sidebar.overview.extensionsDetail":e=>`${e?.active??0} of ${e?.total??0} active`,"sidebar.overview.contextDetail":e=>`${e?.files??0} context file${e?.files===1?"":"s"}, ${e?.rules??0} rule${e?.rules===1?"":"s"}`,"sidebar.overview.hooksDetail":e=>`${e?.count??0} hook${e?.count===1?"":"s"}`,"sidebar.overview.hooksDisabled":e=>`${e?.count??0} hook${e?.count===1?"":"s"} (disabled)`,"sidebar.forceRemoveWorkspace":"Force remove","sidebar.removeWorkspaceTitle":"Remove Workspace","sidebar.removeWorkspaceConfirm":e=>`Remove the runtime and persistent registration for “${e?.name??""}”? Files, settings, and session history will not be deleted.`,"sidebar.removeWorkspaceBusy":e=>`“${e?.name??""}” still has active runtime resources. Force removal will terminate them.`,"sidebar.removeWorkspaceCurrentSession":"Switch to another workspace or close the current session before forcing removal.","sidebar.removeWorkspaceInProgress":"Another client is already removing this workspace. Refresh after that operation finishes.","sidebar.removeWorkspaceError":"Failed to remove workspace","sidebar.removeWorkspaceSessions":e=>`Sessions: ${e?.count??0}`,"sidebar.removeWorkspacePrompts":e=>`Active prompts: ${e?.count??0}`,"sidebar.removeWorkspaceStarts":e=>`Pending session starts: ${e?.count??0}`,"sidebar.removeWorkspaceConnections":e=>`ACP connections: ${e?.count??0}`,"sidebar.removeWorkspaceMemoryTasks":e=>`Memory tasks: ${e?.count??0}`,"sidebar.removeWorkspaceVoiceSessions":e=>`Voice sessions: ${e?.count??0}`,"sidebar.noSessions":"No sessions.","sidebar.projectFallback":"Project","sidebar.sessionsOverview":"Session Overview","sidebar.splitView":"Split View","sidebar.settings":"Settings","sidebar.daemonStatus":"Daemon Status","sidebar.scheduledTasks":"Scheduled Tasks","sidebar.workflows":"Workflows","sidebar.goals":"Goals","sidebar.themeLight":"Switch to light theme","sidebar.themeDark":"Switch to dark theme","sidebar.collapse":"Collapse","sidebar.expand":"Expand","sidebar.showAllSessions":"Show all","sidebar.collapseProject":"Collapse project","sidebar.expandProject":"Expand project","sidebar.search":"Search sessions","sidebar.searchPlaceholder":"Search sessions","sidebar.rename":"Rename","sidebar.export":"Export conversation record","sidebar.exportFailed":"Failed to export session","sidebar.delete":"Delete","sidebar.archive":"Archive","sidebar.unarchive":"Restore","sidebar.moreActions":"More actions","sidebar.archiveCurrentDisabled":"The current session cannot be archived","sidebar.archiveRunningDisabled":"A running session cannot be archived; archiving would stop its work","sidebar.archivedTitle":"Archived","sidebar.standaloneLoadFailed":"Failed to load recent conversations","sidebar.standaloneActionFailed":"Conversation action failed","sidebar.standaloneDeleteConfirm":"Delete this conversation and its private files?","sidebar.standaloneCleanupPending":"The conversation was deleted. Private file cleanup will finish automatically.","sidebar.archivedEmpty":"No archived sessions.","sidebar.archiveFailed":"Failed to archive session","sidebar.unarchiveFailed":"Failed to restore session","sidebar.loadFailed":"Failed to load sessions. Click to retry.","sidebar.renameFailed":"Failed to rename session","sidebar.deleteFailed":"Failed to delete session","sidebar.newSessionFailed":"Failed to create a new chat","sidebar.switchFailed":"Failed to switch session","sidebar.currentDeleteDisabled":"Current session cannot be deleted","sidebar.deleteConfirmDescription":e=>`Delete "${e?.name??""}"? This cannot be undone.`,"sidebar.clients":e=>`${e?.count??0} client(s)`,"sidebar.running":"Running","sidebar.activeWork":"Active work","sidebar.activityUnknown":"Background activity unknown","sidebar.waitingForApproval":"Waiting for approval","sidebar.waitingForApprovalShort":"Approval","sidebar.sessionPr":e=>`Pull Request #${e?.number??""}`,"sidebar.sessionPrMultiple":e=>`Pull Request #${e?.number??""} (${e?.count??0} total)`,"sidebar.sessionPrStateMerged":"Merged","sidebar.sessionPrStateClosed":"Closed","sidebar.sessionIssue":e=>`Issue #${e?.number??""}`,"sidebar.sessionIssueStateCompleted":"Completed","sidebar.sessionIssueStateNotPlanned":"Not planned","sidebar.userInputNeeded":"User input needed","sidebar.userInputNeededShort":"Input","sidebar.completedUnread":"Finished","sidebar.pin":"Pin","sidebar.unpin":"Unpin","sidebar.sessionGroup":"Group","sidebar.groupFilter":"Session group","sidebar.groupAll":"All","sidebar.groupPinned":"Pinned","sidebar.groupUngrouped":"Ungrouped","sidebar.groupRecent":"Recent","sidebar.groupCreate":"Create group","sidebar.groupRename":"Rename group","sidebar.groupDelete":"Delete group","sidebar.groupColor":"Group color","sidebar.groupNamePrompt":"Group name","sidebar.groupDeleteConfirm":e=>`Delete group "${e?.name??""}"?`,"sidebar.groupsLoadFailed":"Failed to load session groups","sidebar.groupCreateFailed":"Failed to create group","sidebar.groupAssignFailedAfterCreate":"Group created, but failed to move session into it","sidebar.groupUpdateFailed":"Failed to update group","sidebar.groupDeleteFailed":"Failed to delete group","sidebar.organizationFailed":"Failed to update session organization","sidebar.groupColor.red":"Red","sidebar.groupColor.orange":"Orange","sidebar.groupColor.yellow":"Yellow","sidebar.groupColor.green":"Green","sidebar.groupColor.blue":"Blue","sidebar.groupColor.purple":"Purple","sidebar.groupColor.custom":"Custom…","sidebar.groupColor.picker":"Choose custom group color","sidebar.groupColor.hex":"Hex color","sidebar.groupColor.invalid":"Enter a six-digit Hex color such as #416ef5.","quickKeys.retry":"Retry failed","error.unsupportedTheme":"Unsupported theme. Use /theme light or /theme dark.","queue.delete":"Delete","queue.edit":"Edit","queue.insert":"Insert","queue.cleared":"Queue cleared.","queue.deleteTip":"Remove from queue","queue.editTip":"Remove from queue and edit again","queue.submitting":"Submitting...","queue.midTurnQueued":"Queued...","queue.serverQueued":"Queued on server...","queue.editing":"Editing...","queue.inserting":"Inserting...","queue.removing":"Updating...","queue.submittingDisabled":"Submitting queued message...","queue.summaryEditDisabled":"This restored queue summary cannot recover its original attachments.","queue.admissionUnknown":"Delivery is uncertain. Check the session before trying again.","queue.restoreUnknown":"Restore local copy","queue.discardUnknown":"Discard local copy","queue.continueEditing":"Continue editing","queue.continueEditingConfirm":"The prompt may already be running. Continue editing only if you accept the risk of sending it twice.","queue.commandBlocked":"Slash commands can't be queued while a turn is running.","queue.commandGoalBlocked":"Slash commands are unavailable while a Goal owns the session or its state is loading.","queue.shellQueued":"Shell command queued — it will run after the current turn finishes.","queue.shellDropped":e=>{const t=e?.count??0;return t===1?"1 queued shell command will not run.":`${t} queued shell commands will not run.`},"queue.queueFailed":"Failed to queue message","queue.deleteFailed":"Failed to move message out of queue","queue.editFailed":"Failed to edit queued message","queue.insertFailed":"Failed to insert queued message","queue.insertTip":"Insert into the current turn","queue.insertCommandDisabled":"Commands cannot be inserted mid-turn","queue.footer":"Press ↑ to edit the latest queued message · Esc to clear queue","queue.imageCount":e=>`(+${e?.count??0} images)`,"queue.fileCount":e=>`(+${e?.count??0} files)`,"queue.more":e=>`... (+${e?.count??0} more)`,"help.builtIn":"Built-in commands","help.commandCount":e=>`${e?.count??0} commands`,"help.commandMeta.builtIn":"built-in","help.commandMeta.custom":"custom","help.commandMeta.subcommands":e=>`${e?.count??0} subcommands`,"help.commandsIntro":"Browse built-in commands:","help.customGroup":"Custom, skills, plugins, MCP","help.customIntro":"Browse custom, skill, plugin, and MCP commands:","help.empty":"No commands are currently available.","help.emptyCustom":"No custom commands are currently available.","help.footer":"Tab/Shift+Tab to switch tabs · ↑/↓ or PgUp/PgDn to scroll · Esc to close","help.intro":"O1-Code understands your codebase, makes edits with your permission, and executes commands right from your terminal.","help.section.shortcuts":"Shortcuts","help.search":"Search commands","help.shortcut.addContext":"Add files or folders as context","help.shortcut.altWords":"Jump through words","help.shortcut.clear":"Clear the screen","help.shortcut.commandMenu":"Open command menu","help.shortcut.completion":"Accept completion or switch help tabs","help.shortcut.history":"Cycle prompt history or scroll lists","help.shortcut.searchHistory":"Search prompt history","help.shortcut.newline":"Insert a newline","help.shortcut.pasteImages":"Paste images","help.shortcut.shell":"Run shell commands","help.shortcut.togglePanel":"Toggle this panel","help.shortcut.retry":"Retry last request","retry.hint":"Press Ctrl+Y to retry or click to retry","retry.none":"No failed request to retry.","system.taskNotification":"Task notification","background.result":"Background result","background.agent":"Background agent","background.running":"Background tasks running","background.task":"Background task","background.peer":"Cross-session message","background.details":"View details","background.processing":e=>`Processing ${e?.label??""} results`,"background.source":"Source","background.pending":"Awaiting processing","system.taskCompleted":"Background task completed","system.taskFailed":"Background task failed","system.taskCancelled":"Background task cancelled","notification.shell.completed":e=>`Background shell "${e?.command??""}" completed.`,"notification.shell.failed":e=>`Background shell "${e?.command??""}" failed.`,"notification.shell.cancelled":e=>`Background shell "${e?.command??""}" was cancelled.`,"notification.monitor.completed":e=>`Monitor "${e?.description??""}" completed. (${e?.events??0} events${e?.droppedLines?`, ${e.droppedLines} lines dropped due to throttling`:""})`,"notification.monitor.failed":e=>`Monitor "${e?.description??""}" failed. (${e?.events??0} events${e?.droppedLines?`, ${e.droppedLines} lines dropped due to throttling`:""})`,"notification.monitor.cancelled":e=>`Monitor "${e?.description??""}" was cancelled. (${e?.events??0} events${e?.droppedLines?`, ${e.droppedLines} lines dropped due to throttling`:""})`,"notification.agent.completed":e=>`Background agent "${e?.description??""}" completed.`,"notification.agent.failed":e=>`Background agent "${e?.description??""}" failed.`,"notification.agent.cancelled":e=>`Background agent "${e?.description??""}" was cancelled.`,"branch.failed":"Failed to branch session.","branch.stale":"This response is no longer on the active history path. The transcript has been refreshed.","branch.staleRefreshFailed":"This response is no longer on the active history path, and the transcript could not be refreshed. Please retry.","branch.staleUnsupported":"This response is no longer on the active history path. Branching from this point is not supported by the current session.","branch.success":e=>`Copied session. New session name: "${e?.name??""}". Switched to the new session.`,"fork.empty":"Please provide a directive. Usage: /fork <directive>","fork.failed":e=>`Failed to launch fork: ${e?.reason??""}`,"fork.notStarted":"Background agent was not launched.","fork.started":e=>`Started background agent: "${e?.name??""}". Track it in background tasks.`,"command.hidden":"This command is not available.","help.shortcut.approvals":"Cycle approval modes","help.shortcut.cancel":"Close dialogs or cancel operation","bug.failed":"Failed to load system info for bug report.","bug.popupBlocked":"Popup blocked — please allow popups and try again.","bug.submitted":"Bug report opened in a new tab.","clear.blocked":"Cannot clear while streaming — cancel first (Esc).","error.unknown":"Unknown error","error.modelStreamInterrupted":"Model response stream was interrupted. Please retry.","error.loopDetected":"The model got stuck while using tools or reached a safety limit, so this turn was stopped. Your session is still open—try a more specific instruction to continue.","shell.command":"Shell Command","shell.result.timedOut":"Timed out","shell.result.notices":"Notices","shell.result.truncated":"Output preview truncated","shell.result.outputFiles":"Output files","shell.result.output":"Output","shell.result.command":"Command","shell.result.copy":"Copy command","shell.result.details":"Execution details","shell.result.directory":"Directory","shell.result.timeout":"Timeout","shell.result.timeoutMs":e=>`${e?.milliseconds} ms`,"shell.result.defaultTimeout":"Use default","shell.result.exitCode":"Exit code","shell.result.signal":"Signal","shell.result.pending":"Pending","shell.result.elapsed":"Elapsed","shell.result.lines":"Output lines","shell.result.bytes":"Output bytes","shell.result.running":"Running","shell.result.completed":"Completed","shell.result.success":"Succeeded","shell.result.cancelled":"Cancelled","shell.result.waiting":"Waiting for output…","shell.result.empty":"No output","shell.result.exited":e=>`Exited with code ${e?.code}`,"help.subcommands":"subcommands","help.tab.commands":"Built-in commands","help.tab.custom":"custom-commands","help.tab.general":"shortcuts","help.title":"Help","slash.category.custom":"Custom commands","slash.category.skill":"Skill commands","slash.category.system":"System commands","language.changed":e=>`UI language changed to ${e?.language??""}`,"language.current":e=>`Current UI language: ${e?.language??""}`,"language.invalid":"Invalid language. Available: en, zh-CN","language.options":"Available options:","language.set":"Set UI language","language.usage":"Usage: /language ui [en|zh-CN]","localCommand.noSession":"No active session yet. Send your first message before using this command.","localCommand.diffNoWorkspace":"No workspace is available yet to show changes for.","localCommand.logNoWorkspace":"No workspace is available yet to show history for.","localCommand.prsNoWorkspace":"No workspace is available yet to show pull requests for.","localCommand.prsUnsupported":"This daemon does not support listing pull requests.","local.agents":"Manage subagents","local.bug":"Submit a bug report","local.compress":"Compress the context into a summary","local.compressFast":"Fast context compression without AI","local.config":"Get or set any setting by dot-path key","local.diff":"Show working-tree change stats versus HEAD","local.log":"Show commit history for the workspace","local.prs":"Show open GitHub pull requests for the workspace","local.directory":"Manage workspace directories","local.docs":"Open the full O1-Code documentation","local.doctor":"Run installation and environment diagnostics","local.dream":"Consolidate managed auto-memory topic files","local.effort":"Set reasoning effort for capable models","local.export":"Export the current session history to a file","local.forget":"Remove matching entries from managed auto-memory","local.hooks":"Manage O1-Code hooks","local.importConfig":"Import MCP servers from Claude configs","local.init":"Analyze the project and create an AGENTS.md file","local.insight":"Generate programming insights from chat history","local.lsp":"Show LSP server status","local.remember":"Save a durable memory to the memory system","local.summary":"Generate a project summary file","local.workflows":"List workflow runs or cooperatively pause/resume a live run","skilldesc.batch":"Run batch operations across many files in parallel","skilldesc.dataviz":"Design guidance for charts and data visualizations","skilldesc.extensionCreator":"Create, test, and customize O1-Code extensions","skilldesc.goalDraft":"Turn a fuzzy intention into a verifiable /goal objective","skilldesc.loop":"Run a prompt on a schedule or self-paced wakeups","skilldesc.newApp":"Workflow for building a new app from scratch","skilldesc.qcHelper":"Answer questions about using O1-Code","skilldesc.review":"Review changed code for bugs, security, and quality","skilldesc.simplify":"Clean up recent changes for reuse and simplicity","skilldesc.stuck":"Diagnose frozen or slow O1-Code sessions","skilldesc.agentReproduceAlign":"Align a ported Codex/Claude Code feature with the original","skilldesc.agentReproduceFeature":"Reproduce an existing Codex/Claude Code feature","skilldesc.autofix":"Review and fix local changes or run repository Autofix workflows","skilldesc.bugfix":"Fix a bug from a GitHub issue, reproduce-first","skilldesc.codegraph":"Analyze the codebase via graph and vector index","skilldesc.createIssue":"Draft and submit a GitHub issue from an idea","skilldesc.docsAuditAndRefresh":"Audit and refresh docs/ against the codebase","skilldesc.docsUpdateFromDiff":"Update official docs from local git diff","skilldesc.e2eTesting":"Run end-to-end tests of the O1-Code CLI","skilldesc.featDev":"End-to-end workflow for a non-trivial feature","skilldesc.memoryLeakDebug":"Diagnose CLI memory leaks via heap snapshots","skilldesc.preparePr":"Prepare a GitHub PR title and body from the branch","skilldesc.o1codeClaw":"Use O1-Code as a code-understanding agent","skilldesc.structuredDebugging":"Hypothesis-driven methodology for hard bugs","skilldesc.terminalCapture":"Automate terminal UI screenshot testing","skilldesc.tmuxRealUserTesting":"Real-user testing with tmux, saving logs","skilldesc.triage":"Triage and review O1-Code issues and PRs","local.approvalMode":"Change approval mode","local.auth":"Connect an LLM provider","auth.title":"Connect a Provider","auth.step.group":"Type","auth.step.provider":"Provider","auth.step.protocol":"Protocol","auth.step.api":"API","auth.step.baseUrl":"Base URL","auth.step.apiKey":"API Key","auth.step.models":"Model IDs","auth.step.advanced":"Advanced Config","auth.protocol.openai":"OpenAI-compatible","auth.protocol.openaiDesc":"Standard OpenAI API format (most common)","auth.protocol.anthropic":"Anthropic-compatible","auth.protocol.anthropicDesc":"Anthropic Messages API format","auth.protocol.gemini":"Gemini-compatible","auth.protocol.geminiDesc":"Google Gemini API format","auth.api.chatCompletions":"Chat Completions","auth.api.responses":"Responses","auth.apiKeyRequired":"API key cannot be empty.","auth.baseUrlInvalid":"Base URL must start with http:// or https://.","auth.baseUrlPrompt":"Enter the API endpoint for this protocol.","auth.baseUrlRequired":"Base URL cannot be empty.","auth.documentation":"Documentation","auth.modelsRequired":"Model IDs cannot be empty.","auth.review":"Review","auth.reviewText":"Review the connection and model settings before saving.","auth.save":"Save","auth.saving":"Saving...","auth.termsTitle":"Terms of Services and Privacy Notice","auth.continue":"Continue","auth.modelsPrompt":e=>`Enter model IDs separated by commas. Examples: ${e?.modelIds??""}`,"auth.advanced.prompt":"Optional: configure advanced generation settings.","auth.advanced.thinking":"Enable thinking","auth.advanced.thinkingDesc":"Enable extended reasoning. Leave off to use the model default.","auth.advanced.modality":"Enable modality","auth.advanced.modalityDesc":"Enables multimodal input capabilities (image, video, etc.).","auth.advanced.modalityImage":"Image","auth.advanced.modalityVideo":"Video","auth.advanced.modalityAudio":"Audio","auth.advanced.modalityPdf":"PDF","auth.advanced.contextWindow":"Context window","auth.advanced.contextDesc":"Context window capacity in tokens. Leave empty to infer the limit from the model ID.","auth.advanced.contextPlaceholder":"Context window (optional)","auth.advanced.maxTokens":"Maximum output tokens","auth.advanced.maxTokensDesc":"Maximum tokens per response. Leave empty to infer the limit from the model ID.","auth.advanced.tokenLimitInvalid":e=>`${e?.field??"Token limit"} must be a whole number between 1 and 10,000,000.`,"auth.advanced.modalitiesRequired":"Select at least one input type or turn off modality.","auth.advanced.defaults":"Use model defaults","auth.apiKeySet":"Set (hidden)","auth.apiKeyHint":"the key is saved in ~/.o1-code/credentials/, for your user only","auth.group.organizaone":"OrganizaOne","auth.group.organizaoneDesc":"Connect to OrganizaOne with your key","auth.group.apiKey":"API key","auth.group.apiKeyDesc":"Anthropic, OpenAI, Google Gemini, xAI and others","auth.group.local":"Local","auth.group.localDesc":"Models running on this machine","auth.group.custom":"Custom","auth.group.customDesc":"Any URL, OpenAI-compatible or Anthropic","auth.step.port":"Port","auth.comingSoon":"coming soon","auth.organizaone.apiKey":"API key","auth.organizaone.apiKeyDesc":"Paste your key; the models come from OrganizaOne","auth.local.looking":"… looking","auth.local.detected":e=>`detected · ${e?.count??0} models`,"auth.local.notRunning":"not running","auth.local.lookAgain":"Look again","auth.local.portPrompt":"Port of the server on the daemon host, or its full URL.","local.btw":"Ask a quick side question without affecting the main conversation. Usage: /btw <your question>","btw.empty":"Please provide a question. Usage: /btw <your question>","btw.side.empty":"Please provide a question. Usage: /btw side <your question>","btw.emptyAnswer":"No response received.","btw.failed":"Failed to answer btw question","btw.answering":"+ Answering...","btw.shortcuts.pending":"Press Escape, Ctrl+C, or Ctrl+D to cancel","btw.shortcuts.done":"Press Space, Enter, or Escape to dismiss","local.clear":"Start a new session with empty context; previous session stays on disk (resumable with /resume)","local.context":'Show context window usage breakdown. Use "/context detail" for per-item breakdown.',"local.copy":"Copy last output or snippet","local.delete":"Delete a session permanently","local.release":"Release a live session","local.rewind":"Rewind the current conversation","local.branch":"Fork the current conversation into a new session","local.fork":"Start a background agent from this conversation","local.help":"Show help and commands","local.language":"Change UI language","local.mcp":"Manage MCP servers","local.memory":"Manage memory","local.model":"Switch model or set fast model","local.new":"Start a new conversation","local.plan":"Enter Plan mode","local.goal":"Set a goal and keep working until it is met","local.recap":"Generate a session recap","recap.label":"Recap","recap.loading":"Generating recap...","recap.empty":"Not enough conversation context for a recap yet.","recap.failed":"Failed to generate recap","rewind.action":"Rewind","rewind.confirm":"Confirm rewind","rewind.empty":"No rewind snapshots are available for this session.","rewind.failed":e=>`Failed to rewind session: ${e?.reason??""}`,"rewind.loading":"Loading rewind snapshots...","rewind.promptFallback":e=>`Prompt ${e?.id??""}`,"rewind.rewinding":"Rewinding...","rewind.subtitle":"Only the conversation is rewound. Files are not changed.","rewind.title":"Rewind Conversation","rewind.turn":e=>`Prompt ${e?.turn??0}`,"local.rename":"Rename current session","rename.empty":"Please enter a session name, for example /rename project debugging, or use /rename --auto.","rename.success":e=>`Session renamed to ${e?.name??""}`,"local.reset":"Reset current conversation","local.resume":"Resume a previous session","local.skills":"View available skills","local.stats":"Show session statistics","local.tasks":"View background tasks","local.status":"Show version info","local.theme":"Change theme","local.settings":"View and edit settings","local.schedule":"Manage scheduled tasks","local.extensions":"Manage extensions. Usage: /extensions manage|install <source>","extensions.label":"extension","extensions.action.failed":e=>`Extension action failed${e?.name?` for "${e.name}"`:e?.source?` from "${e.source}"`:""}: ${e?.error??"Unknown error"}`,"extensions.commands.refreshFailed":"Failed to refresh extension commands.","extensions.install.failed":e=>`Failed to install extension${e?.source?` from "${e.source}"`:""}: ${e?.error??"Unknown error"}`,"extensions.manage.agents":"Agents:","extensions.manage.actions":"Extension actions","extensions.manage.add":"Add","extensions.manage.checkingUpdates":"Checking for updates...","extensions.manage.checkUpdates":"Check for updates","extensions.manage.commands":"Commands:","extensions.manage.contextFiles":"Context files:","extensions.manage.count":e=>`${e?.count??0} extensions installed`,"extensions.manage.setting.disabled":"Disabled","extensions.manage.setting.default":"Default","extensions.manage.setting.enabled":"Enabled","extensions.manage.setting.unknown":"Unavailable","extensions.manage.setting.unavailableDescription":"The service did not return scoped extension settings. Restart o1-code serve and try again.","extensions.manage.userSetting":"Global setting","extensions.manage.userSettingDescription":"Applies to your workspaces unless a workspace setting overrides it.","extensions.manage.workspaceSetting":"Workspace setting","extensions.manage.workspaceSettingDescription":"Applies only to the current workspace.","extensions.manage.disable":"Disable Extension","extensions.manage.disabled":e=>`Extension "${e?.name??"extension"}" disabled.`,"extensions.manage.disabling":e=>`Disabling extension "${e?.name??"extension"}"…`,"extensions.manage.inherited":e=>`Extension "${e?.name??"extension"}" now uses the global setting.`,"extensions.manage.inheriting":e=>`Resetting extension "${e?.name??"extension"}" to the global setting…`,"extensions.manage.empty":"No extensions installed.","extensions.manage.emptyAgents":"This extension has no agents.","extensions.manage.emptyCommands":"This extension has no commands.","extensions.manage.emptyContextFiles":"This extension has no context files.","extensions.manage.emptyDescription":"Install an extension to add commands, skills, agents, or MCP servers.","extensions.manage.emptyMcpServers":"This extension has no MCP servers.","extensions.manage.emptySkills":"This extension has no skills.","extensions.manage.enable":"Enable Extension","extensions.manage.enabled":e=>`Extension "${e?.name??"extension"}" enabled.`,"extensions.manage.enabling":e=>`Enabling extension "${e?.name??"extension"}"…`,"extensions.manage.install":"Install","extensions.manage.installDescription":"Enter a GitHub, Git, or npm source, or upload an Extension archive.","extensions.manage.sourceTab":"Source","extensions.manage.archiveTab":"Archive","extensions.manage.archiveSelect":"Select a .zip or .tar.gz archive.","extensions.manage.archiveSelected":e=>`Selected archive: ${e?.name??"extension archive"}`,"extensions.manage.archiveTooLarge":"Extension archives must be 10 MB or smaller.","extensions.manage.archiveEmpty":"The selected Extension archive is empty.","extensions.manage.archiveInvalid":"Select a .zip or .tar.gz Extension archive with a valid filename up to 255 bytes.","extensions.manage.installSelectPluginDescription":e=>`Choose a plugin from "${e?.marketplace??"this marketplace"}".`,"extensions.manage.installTitle":"Add Extension","extensions.manage.installType":"Install type:","extensions.manage.mcpServers":"MCP servers:","extensions.manage.marketplaceRoot":"Marketplace root","extensions.manage.name":"Name:","extensions.manage.notUpdatable":"not updatable","extensions.manage.operationFailed":"Extension operation failed.","extensions.manage.noDescription":"No description","extensions.manage.noMatches":"No matching extensions.","extensions.manage.origin":"Origin:","extensions.manage.overview":"Overview","extensions.manage.path":"Path:","extensions.manage.queued":e=>`Extension action queued for "${e?.name??"extension"}".`,"extensions.manage.refreshFailed":e=>`Extension action succeeded, but session refresh failed${e?.error?`: ${e.error}`:"."}`,"extensions.manage.restartRequired":"updated; restart required","extensions.manage.search":"Search extensions…","extensions.manage.selectExtension":"Choose an extension","extensions.manage.settings":"Settings:","extensions.manage.skills":"Skills:","extensions.manage.source":"Source:","extensions.manage.sourcePlaceholder":"https://github.com/owner/repository","extensions.manage.status":"Status:","extensions.manage.status.disabled":"disabled","extensions.manage.status.enabled":"enabled","extensions.manage.title":"Manage Extensions","extensions.manage.unknownUpdate":"unknown","extensions.manage.uninstalled":e=>`Extension "${e?.name??"extension"}" uninstalled.`,"extensions.manage.uninstalling":e=>`Uninstalling extension "${e?.name??"extension"}"…`,"extensions.manage.uninstallAction":"Uninstall Extension","extensions.manage.uninstallConfirm":e=>`Uninstall extension "${e?.name??"extension"}"?`,"extensions.manage.upToDate":"up to date","extensions.manage.update":"Update Extension","extensions.manage.updateAvailable":"update available","extensions.manage.updateError":"update check failed","extensions.manage.updateComplete":"updated","extensions.manage.updatedWithWarnings":"updated with warnings","extensions.manage.updateStatus":"Update status:","extensions.manage.updating":"updating…","extensions.manage.updatingExtension":e=>`Updating extension "${e?.name??"extension"}"…`,"extensions.manage.updated":e=>`Extension "${e?.name??"extension"}" updated.`,"extensions.manage.updatedWithVersion":e=>`Extension "${e?.name??"extension"}" updated to v${e?.version??""}.`,"extensions.manage.version":"Version:","extensions.manage.viewDetails":"View Details","extensions.install.installed":e=>`Extension "${e?.name??"extension"}" installed.`,"extensions.install.installedWithVersion":e=>`Extension "${e?.name??"extension"}" v${e?.version??""} installed.`,"extensions.install.missingOptionValue":e=>`Missing value for ${e?.option??"option"}`,"extensions.install.requestFailed":"Failed to install extension","extensions.install.started":e=>`Installing extension from "${e?.source??""}"...`,"extensions.install.unknownOption":e=>`Unknown option ${e?.option??""}`,"extensions.install.usage":"Usage: /extensions manage|install <source>","extensions.install.waitForSession":"Wait for the session to connect before installing an extension.","local.tools":"List available tools. Usage: /tools [desc]","loadWarning.commands":"Failed to load command list; slash commands may be incomplete.","loadWarning.context":"Failed to load session context; current mode may be inaccurate.","loadWarning.models":"Failed to load model list; some model details may be unavailable.","mcp.action.auth":"Authenticate","mcp.action.authHint":"Not exposed by daemon yet","mcp.action.authMessage":"Daemon serve does not expose MCP authentication yet.","mcp.action.clearAuth":"Clear Authentication","mcp.action.disable":"Disable","mcp.action.done":e=>`${e?.action??"Action"} complete.`,"mcp.action.enable":"Enable","mcp.action.enableMessage":"Daemon serve does not expose MCP enable/disable yet.","mcp.action.failed":e=>`Failed: ${e?.error??""}`,"mcp.action.running":e=>`${e?.action??"Action"}...`,"mcp.action.reauth":"Re-authenticate","mcp.action.approve":"Approve","mcp.actions":"Server actions","mcp.annotation.destructive":"destructive","mcp.annotation.idempotent":"idempotent","mcp.annotation.openWorld":"open-world","mcp.annotation.readOnly":"read-only","mcp.annotations":"Annotations","mcp.oauth.server":"Server","mcp.oauth.starting":e=>`Starting OAuth authentication for MCP server '${e?.name??""}'...`,"mcp.oauth.title":"OAuth Authentication","mcp.oauth.timeout":"Authentication timed out. Refresh to check the status.","mcp.oauth.authenticationFailed":"Authentication failed.","mcp.oauth.statusFailed":"Failed to check the authentication status.","mcp.oauth.serverRemoved":"The MCP server was removed during authentication.","mcp.clientBudget":e=>`${e?.count??0}/${e?.budget??0} clients · ${e?.mode??"off"}`,"mcp.command":"Command","mcp.description":"Description:","mcp.descriptionTitle":"Description","mcp.basicInfo":"Basic Information","mcp.action.reconnect":"Reconnect","mcp.action.edit":"Edit","mcp.reconnect.skipped":e=>`Reconnect was not completed: ${e?.reason??"unknown reason"}.`,"mcp.reconnect.authenticationRequired":"Authentication is required before reconnecting.","mcp.action.restart":"Restart","mcp.action.tools":"View tools","mcp.action.toolsHint":"Enter to inspect","mcp.empty":"No MCP servers configured.","mcp.emptyDescription":"Add an MCP server to manage it here.","mcp.emptyTools":"No tools discovered.","mcp.expand":"Expand MCP server","mcp.collapse":"Collapse MCP server","mcp.inputSchema":"Input schema","mcp.loadingStatus":"Loading MCP status...","mcp.loadingTools":"Loading tools...","mcp.name":"Name","mcp.noDescription":"No description","mcp.noMatches":"No matching MCP servers.","mcp.add.button":"Add","mcp.add.adding":"Adding MCP Server…","mcp.add.title":"Add MCP Server","mcp.add.description":"Save an MCP server to this workspace with a name and configuration.","mcp.add.name":"Name","mcp.add.serverDescription":"Description","mcp.add.serverDescriptionPlaceholder":"Describe this MCP server","mcp.add.scope":"Location","mcp.add.scope.global":"Global","mcp.add.nameRequired":"Enter an MCP server name.","mcp.add.config":"Configuration (JSON)","mcp.add.configInvalid":"Configuration must be a JSON object.","mcp.add.done":e=>`Added ${e?.name??"MCP server"}.`,"mcp.edit.title":"Edit MCP Server","mcp.edit.description":"Update the description or configuration. Name and location cannot be changed.","mcp.edit.save":"Save Changes","mcp.edit.saving":"Saving Changes…","mcp.edit.done":e=>`Updated ${e?.name??"MCP server"}.`,"mcp.edit.notFound":"The MCP server is no longer present in settings.","mcp.runtime.notUpdated":"Configuration was saved, but the current session was not updated.","mcp.runtime.removeNotUpdated":"Configuration was deleted, but the current session was not updated.","mcp.discovery.empty":"No MCP servers are configured.","mcp.discovery.timeout":"MCP discovery is taking longer than expected. Refresh to check again.","mcp.add.settingsUnavailable":"Workspace settings are unavailable.","mcp.action.remove":"Delete","mcp.remove.title":"Delete MCP Server","mcp.remove.description":e=>`Remove MCP server “${e?.name??""}” from this workspace?`,"mcp.remove.description.global":e=>`Remove MCP server “${e?.name??""}” from global settings?`,"mcp.remove.done":e=>`Deleted ${e?.name??"MCP server"}.`,"mcp.remove.notWorkspace":"This MCP server is not defined in workspace settings.","mcp.source.all":"All","mcp.noSchema":"No input schema.","mcp.oauth.open":"Open authentication page","mcp.serverTool":"Server tool","mcp.servers":e=>`${e?.count??0} servers`,"mcp.configuredServers":"Configured MCP servers:","mcp.fromExtension":e=>`(from ${e?.name??""})`,"mcp.extensionMcp":"Extension MCP","mcp.invalidReason":e=>`invalid: ${e?.reason??""}`,"mcp.invalidReasonLabel":"Reason:","mcp.invalidToolHelp":"Tools must have both name and description to be used by the LLM.","mcp.invalidToolWarning":"Warning: This tool cannot be called by the LLM","mcp.manageServers":"Manage MCP servers","mcp.viewDetails":"View details","mcp.parameters":"Parameters:","mcp.required":" required","mcp.resources":"Resources","mcp.resourcesUnavailable":"Resource details unavailable.","mcp.noResources":"No resources.","mcp.resourceCount":e=>`${e?.count??0} ${e?.count===1?"resource":"resources"}`,"mcp.promptCount":e=>`${e?.count??0} ${e?.count===1?"prompt":"prompts"}`,"mcp.resource.uriLabel":"URI:","mcp.resource.nameLabel":"Name:","mcp.resource.mimeTypeLabel":"MIME Type:","mcp.resource.sizeLabel":"Size:","mcp.resource.bytes":e=>`${e?.count??0} ${e?.count===1?"byte":"bytes"}`,"mcp.scrollPosition":e=>`${e?.current??0}/${e?.total??0}`,"mcp.shortcut.back":"Esc to back","mcp.shortcut.close":"Esc to close","mcp.shortcut.selectBack":"↑↓ to navigate · Enter to select · Esc to back","mcp.shortcut.selectClose":"↑↓ to navigate · Enter to select · Esc to close","mcp.settings":"Settings","mcp.extension":e=>`Extension: ${e?.name??""}`,"mcp.starting":e=>`⏳ MCP servers are starting up (${e?.count??0} initializing)...`,"mcp.startingNote":"Note: First startup may take longer. Tool availability will update automatically.","mcp.restartSkipped":e=>`Skipped ${e?.name??""}: ${e?.reason??""}`,"mcp.restarted":e=>`Restarted ${e?.name??""} in ${e?.duration??0}ms`,"mcp.restartEntries":e=>`Restarted ${e?.restarted??0}/${e?.total??0} ${e?.name??""} entries${e?.failedReasons?` (failed: ${e.failedReasons})`:""}`,"mcp.source":"Source","mcp.source.extension":"Extension","mcp.source.project":"Project MCP (.mcp.json)","mcp.source.workspace":"Workspace Settings","mcp.source.user":"Global Settings","mcp.status":"Status","mcp.status.blocked":"Blocked","mcp.status.authenticating":"Authenticating","mcp.status.authenticationFailed":"Authentication failed","mcp.status.needsAuthentication":"Needs authentication","mcp.status.needsApproval":"Needs approval","mcp.status.rejected":"Rejected","mcp.status.connected":"connected","mcp.status.connecting":"connecting","mcp.status.disconnected":"disconnected","mcp.status.disconnectedTitle":"Disconnected","mcp.status.disabled":"disabled","mcp.status.ready":"Ready","mcp.status.starting":"Starting... (first startup may take longer)","mcp.status.unknown":"unknown","mcp.tipDesc":"to show server and tool descriptions","mcp.tipNodesc":"to hide descriptions","mcp.tipSchema":"to show tool parameter schemas","mcp.tips":"💡 Tips:","mcp.toolCount":e=>`${e?.count??0} tool`,"mcp.toolsCount":e=>`${e?.count??0} tools`,"mcp.toolsLabel":"Tools:","mcp.title":"MCP Servers","mcp.toolDetail":"Tool Detail","mcp.tools":"Tools","mcp.toolsForServer":e=>`Tools for ${e?.name??"Server"}`,"mcp.transport":"Transport Protocol","mcp.use":"Use","mcp.userMcp":"Global MCP","mcp.workingDirectory":"Working Directory","goal.aborted":"Goal aborted","goal.blocked":"Goal blocked","goal.usageLimited":"Goal usage limited","goal.paused":"Goal paused","goal.achieved":"Goal achieved","goal.check":"Goal check","goal.cleared":"Goal cleared","goal.failed":"Goal could not be achieved","goal.judge":"Judge","goal.label":"Goal","goal.lastCheck":"Last check","goal.notYetMet":"not yet met","goal.set":"Goal set","goal.statusActive":"/goal active","goal.status.active":"In progress","goal.status.paused":"Paused","goal.status.blocked":"Blocked","goal.status.usage_limited":"Usage limited","goal.status.complete":"Complete","goal.activity.idle":"Waiting","goal.activity.running":"Working","goal.activity.verifying":"Verifying","goal.edit":"Edit goal","goal.pause":"Pause goal","goal.resume":"Resume goal","goal.turn":e=>`${e?.count??0} turn`,"goal.turnLabel":e=>`turn ${e?.count??0}`,"goal.turns":e=>`${e?.count??0} turns`,"goal.turnsOfBudget":e=>`${e?.count??0} / ${e?.budget??0} ${e?.budget===1?"turn":"turns"}`,"goal.activeOfBudget":e=>`${e?.used??""} / ${e?.budget??""}`,"goal.tokens":e=>`${e?.used??0} tokens`,"goal.tokensOfBudget":e=>`${e?.used??0} / ${e?.budget??0} tokens`,"goals.title":"Goals","goals.subtitle":"A goal keeps its session working until the condition is met. Only sessions that are currently loaded appear here — a goal advances only while its session is running.","goals.loading":"Loading goals…","goals.count":e=>`${e?.count??0} active ${Number(e?.count)===1?"goal":"goals"}`,"goals.empty":"No active goals. Set one with /goal <condition>.","goals.refresh":"Refresh","goals.new":"New goal","goals.newHint":"The goal starts in a new session and runs until its condition holds. For an enforced turn or time ceiling, run /config model.goalMaxTurns=20 or /config model.goalMaxActiveMinutes=30 in the chat; it applies after the daemon restarts, to Goals created afterwards.","goals.condition":"Condition","goals.conditionPlaceholder":"e.g. `npm test` exits 0 and `npm run lint` reports no warnings (paste the output); do not modify test files; as model guidance, stop as blocked after 20 turns","goals.cancel":"Cancel","goals.create":"Set goal","goals.creating":"Starting…","goals.saving":"Saving…","goals.save":"Save","goals.edit":"Edit goal","goals.objective":"Objective","goals.clear":"Clear goal","goals.clearConfirm":e=>`Clear the goal "${e?.condition??""}"?`,"goals.running":"Working","goals.idle":"Waiting","goals.dropped":e=>`${e?.count??0} session${Number(e?.count)===1?"":"s"} could not be reached — any goals they are running are missing from this list.`,"goals.notYetEvaluated":"not yet evaluated","goals.openSessionHint":"Open this goal's session","goals.error.emptyCondition":"Enter a condition for the goal.","goals.error.clearKeyword":e=>`"${e?.word??""}" clears a goal rather than setting one. Describe the condition to work toward.`,"goals.error.createFailed":"Failed to start the goal","goals.error.saveFailed":"Failed to save the goal","goals.error.goalUnavailable":"The goal is no longer available.","goals.error.requiresObjective":e=>`/goal ${e?.keyword??"set"} requires an objective.`,"goals.error.invalidCommand":"Invalid /goal command","goals.error.goalsUnavailable":"The goals view is not available on this surface.","goals.error.attachmentsUnsupported":"Remove attachments before using /goal.","goals.error.editFailed":"Failed to edit the goal","goals.error.pauseFailed":"Failed to pause the goal","goals.error.resumeFailed":"Failed to resume the goal","goals.error.clearFailed":"Failed to clear the goal","goals.error.controlBusy":"Another goal control is still running. Try again once it finishes.","memory.add":"Add","memory.add.desc":"Write a durable memory","memory.autoDream":e=>`Auto-dream: ${e?.status??"unknown"} · ${e?.lastDream??"never"} · /dream to run`,"memory.autoDreamUnsupported":"Auto-dream settings are not available from web-shell yet.","memory.autoFolder":"Open auto-memory folder","memory.autoMemory":e=>`Auto-memory: ${e?.status??"unknown"}`,"memory.autoMemoryUnsupported":"Auto-memory settings are not available from web-shell yet.","memory.autoSkill":e=>`Auto-skill: ${e?.status??"unknown"}`,"memory.autoSkillUnsupported":"Auto-skill settings are not available from web-shell yet.","memory.chooseScope":"Choose where to save the memory","memory.closed":"Memory panel closed.","memory.contentEmpty":"Memory content is empty.","memory.file":"Memory file","memory.fileOpen":"Memory file opened.","memory.fileTruncated":"Memory file opened. Content is truncated.","memory.files":"Memory Files","memory.footer":"Enter to confirm · Esc to cancel","memory.footer.back":"Esc to go back","memory.global":"User","memory.global.desc":"Saved to the global user memory file","memory.globalReadUnsupported":"Global memory is outside the bound workspace, so the current daemon file-read API cannot open its content.","memory.loading":"Loading memory...","memory.loadingFile":"Loading memory file...","memory.lastDream":"5 hours ago","memory.menu":"Memory","memory.never":"never","memory.noFiles":"No memory files found.","memory.on":"on","memory.openFolderUnsupported":"Opening the auto-memory folder is not available from web-shell yet.","memory.placeholder":e=>`Write ${e?.scope??"memory"} content...`,"memory.project":"Project","memory.project.desc":"Saved to this workspace memory file","memory.refresh":"Refresh","memory.refresh.desc":"Reload memory file information","memory.refreshed":"Memory refreshed.","memory.save":"Save Memory","memory.savedIn":e=>`Saved in ${e?.path??""}`,"memory.saved":e=>`${e?.scope??"Memory"} saved: ${e?.bytes??0} bytes -> ${e?.path??""}`,"memory.saving":"Saving...","memory.show":"Show","memory.show.desc":"Show configured memory files","memory.status":"Workspace and user memory files","memory.unknown":"unknown","memory.write":"Write memory content","mode.auto":"Classifier Approval","mode.auto.desc":"Uses a classifier to approve safe tool calls and block or ask for risky ones","mode.auto.notice":"Auto mode enabled. An LLM classifier evaluates each tool call and auto-approves safe actions, blocks risky ones. To exit: Shift+Tab or /approval-mode default.","mode.footer":"(Use Enter to select, Esc to cancel)","mode.name.plan":"plan","mode.name.default":"default","mode.name.auto-edit":"auto-edit","mode.name.auto":"auto","mode.name.yolo":"yolo","plan.toggle.on":"Plan before executing","plan.toggle.off":e=>`Planning; execute with ${e?.mode} after approval. Click to exit planning.`,"approval.option.executePlan":e=>`Approve and execute · ${e?.mode}`,"mode.label.plan":"Plan","mode.label.default":"Ask Approval","mode.label.auto-edit":"Auto Edit","mode.label.auto":"Classifier Approval","mode.label.yolo":"Full Access","mode.listLabel.plan":"Plan (plan)","mode.listLabel.default":"Ask Approval (default)","mode.listLabel.auto-edit":"Auto Edit (auto-edit)","mode.listLabel.auto":"Classifier Approval (auto)","mode.listLabel.yolo":"Full Access (yolo)","mode.desc.plan":"Analyze only, do not modify files or execute commands","mode.desc.default":"Ask before running commands, editing files, or accessing external resources","mode.desc.auto-edit":"Automatically approve file edits and ask before command execution or other sensitive actions","mode.desc.auto":"Evaluate tool risk automatically, run safe actions, and confirm risky ones","mode.desc.yolo":"Automatically approve all tool calls in trusted contexts","mode.select":"Approval Mode","mode.changePending":"A mode change or plan confirmation is pending. Try again when it finishes.","mode.autoApproved":(e=>e?.tool?`Auto-approved: ${e.tool}`:"Pending tool call auto-approved by mode switch."),"mode.auto-edit":"Auto-accept edits","mode.auto-edit.desc":"Automatically approve file read/write operations","mode.default":"Default mode","mode.default.desc":"Ask before each tool call","mode.plan":"Plan mode","mode.plan.desc":"Analyze and plan without running tools","mode.unknown":"unknown mode","mode.yolo":"YOLO mode","mode.yolo.desc":"Automatically approve all operations","plan.title":"Plan","model.contextWindow":"Context Window","model.contextWindow.unknown":"(unknown)","model.current":e=>`current: ${e?.model??"unknown"}`,"model.modality":"Modality","model.modality.text":"text","model.modality.textOnly":"text-only","model.modality.image":"image","model.modality.pdf":"pdf","model.modality.audio":"audio","model.modality.video":"video","model.baseUrl":"Base URL","model.apiKey":"API Key","model.default":"(default)","model.notSet":"(not set)","model.footer":"Enter select, ↑↓ navigate, Esc close","model.searchHint":"Press / to search","model.fastHint":"for suggestions and side tasks","model.noMatch":e=>`No model matching "${e?.query??""}"`,"model.unavailable":"Models are unavailable; the daemon default will be used.","model.none":"No models available","model.select":"Select Model","model.section":"Model","reasoning.options":"Options","reasoning.thinking":"Thinking","reasoning.thinkingOff":"Thinking Off","reasoning.effort":"Effort","reasoning.effort.low":"Low","reasoning.effort.medium":"Medium","reasoning.effort.high":"High","reasoning.effort.xhigh":"Extra High","reasoning.effort.max":"Max","reasoning.updateFailed":"Failed to update reasoning options","model.setFast":"Set Fast Model","model.setVoice":"Set Voice Model","auth.purpose.label":"Model purpose","auth.purpose.chat":"Conversation","auth.purpose.chatHint":"Use this provider for conversation. The current model is retained when it is included in the configuration.","auth.purpose.image":"Image generation","auth.purpose.voice":"Voice transcription","auth.purpose.realtime":"Live Voice","auth.purpose.imageHint":"Use a DashScope- or MiniMax-compatible HTTPS image-generation endpoint without query or fragment. Adding this model keeps your conversation model.","auth.purpose.voiceHint":"Use OpenAI Chat Completions with qwen3-asr-flash, qwen3-asr-flash-realtime, fun-asr-realtime, or paraformer-realtime. Adding this model keeps your conversation model.","settings.models.editWindow":"Edit context window","settings.models.windowHint":"Leave empty to infer the limit from the model ID. Existing sessions need a restart to use the new limit.","settings.models.windowSaved":"Saved. Restart existing sessions to apply.","settings.models.saved":"Saved","model.setAdvisor":"Set Advisor Model","settings.label.advisorModel":"Advisor Model","settings.label.imageModel":"Image Model","settings.label.voiceModel":"Voice Model","settings.description.advisorModel":"Model used to review recent conversation progress. Leave empty to use the main model.","settings.description.imageModel":"Model used for image generation. Add a custom model with Image generation purpose, then select it here.","settings.description.voiceModel":"Model used for voice transcription. Add a custom model with Voice transcription purpose, then select it here.","model.setImage":"Set Image Model","model.useMain":"Use main model","model.disabled":"Disabled","model.setVision":"Set Vision Model","model.switch":"Switch Model","model.unknown":"unknown","resume.current":"current","resume.activePrompt":"active prompt","resume.filter":"Filter","resume.noMatch":e=>`No session matching "${e?.query??""}"`,"resume.none":"No sessions to resume","resume.pressSearch":"Press / to search","resume.search":"Search","resume.title":"Resume Session","parallelAgents.title":"Parallel agents","parallelAgents.done":e=>`${e?.done??0}/${e?.total??0} done`,"parallelAgents.failed":e=>`${e?.count??0} failed`,"skills.actions":"Skill actions","skills.disable":"Disable","skills.disabled":"Skill disabled.","skills.enable":"Enable","skills.enabled":"Skill enabled.","skills.install.action":"Upload","skills.install.description":"Install a skill from GitHub, a local folder, or a ZIP archive.","skills.install.error.authentication":"Authentication is required to upload skills.","skills.install.error.folderRequired":"Enter a folder path.","skills.install.error.githubRequired":"Enter a GitHub SKILL.md URL.","skills.install.error.invalidName":"The skill name is missing or contains unsupported characters.","skills.install.error.manifestMissing":"The package must contain a SKILL.md file at its root.","skills.install.error.invalidPackage":"The skill package is invalid. Check its structure and SKILL.md content.","skills.install.error.zipTooLarge":"The ZIP file must not exceed 6 MB.","skills.install.error.invalidFolder":"Enter a valid local skill folder.","skills.install.error.githubFailed":"Could not download the skill from GitHub. Check the URL or authentication and try again.","skills.install.error.invalidScope":"Choose either the workspace or global install location.","skills.install.error.invalidSource":"The daemon does not recognize this upload source. Restart the updated daemon and try again.","skills.install.error.notFound":"The requested skill was not found.","skills.install.error.nameRequired":"Enter the skill name.","skills.install.error.untrusted":"Trust this workspace before uploading skills.","skills.install.failed":"Failed to upload skill.","skills.install.folder":"Local folder","skills.install.folderPath":"Folder path","skills.install.githubUrl":"SKILL.md URL","skills.install.name":"Skill name","skills.install.scope":"Install to","skills.install.scope.global":"Global","skills.install.scope.workspace":"Workspace","skills.install.selectZip":"Select a ZIP archive.","skills.install.title":"Upload skill","skills.install.succeeded":e=>`Skill “${e?.name??""}” uploaded successfully.`,"skills.install.zipSelected":e=>`Selected: ${e?.name??""}`,"skills.delete.action":"Delete skill","skills.delete.description":e=>`Delete “${e?.name??""}” from disk? This cannot be undone.`,"skills.delete.failed":"Failed to delete skill.","skills.delete.succeeded":e=>`Skill “${e?.name??""}” deleted successfully.`,"skills.delete.title":"Delete skill?","skills.empty":"No skills available.","skills.count":e=>[`${e?.count??0} skills`,...e?.enabled?[`${e.enabled} enabled`]:[],...e?.disabled?[`${e.disabled} disabled`]:[]].join(", "),"skills.details":"Skill details","skills.extension":"Extension","skills.filter.all":"All","skills.filter.bundled":"Built-in","skills.filter.extension":"Extensions","skills.filter.label":"Filter skills by source","skills.filter.project":"Workspace settings","skills.filter.status.all":"All","skills.filter.status.disabled":"Disabled","skills.filter.status.enabled":"Enabled","skills.filter.status.label":"Filter skills by status","skills.filter.user":"Global settings","skills.hint":"Hint","skills.invocation":"Invocation","skills.level":"Scope","skills.level.bundled":"Bundled","skills.level.extension":"Extension","skills.level.project":"Project","skills.level.user":"Global","skills.loading":"Loading skills...","skills.manualReference":"Manual reference","skills.manualReferenceHint":"The model cannot discover this skill automatically. Reference it manually.","skills.model":"Model","skills.modelAccess":"Model access","skills.modelAccess.disabled":"Not model-invocable","skills.modelAccess.enabled":"Model-invocable","skills.modelInvocable":"Model","skills.noDescription":"No description","skills.noMatches":"No matching skills.","skills.notToggleable":"This skill cannot be enabled or disabled.","skills.run":"Reference skill","skills.search":"Search skills…","skills.settingUpdated":"Workspace setting updated.","skills.settingUpdatedAvailabilityUnchanged":"Workspace setting updated. Effective Skill availability did not change.","skills.settingUnchanged":"Skill already has the requested workspace setting; no setting was changed.","skills.status":"Status","skills.status.disabled":"disabled","skills.status.enabled":"enabled","skills.toggleFailed":"Failed to update skill.","skills.error.inactiveExtension":"This skill belongs to an inactive extension. Enable the extension first.","skills.toggleUnsupported":"The connected daemon does not support skill enable or disable actions.","skills.title":"Skills","plugins.extensions":"Extensions","plugins.agents":"Agents","plugins.mcp":"MCP","plugins.sections":"Plugin sections","plugins.skills":"Skills","plugins.title":"Plugins","plugins.tools":"Tools","stats.accepted":"Accepted:","stats.agreementRate":"Overall Agreement Rate:","stats.api":"API","stats.apiTime":"API Time","stats.avgDuration":"Avg Duration","stats.avgLatency":"Avg Latency","stats.cached":"Cached","stats.cacheDesc":"of input tokens were served from the cache, reducing costs.","stats.calls":"Calls","stats.codeChanges":"Code Changes","stats.decisionSummary":"User Decision Summary","stats.duration":"Duration","stats.errors":"Errors","stats.inputTokens":"Input Tokens","stats.metric":"Metric","stats.modelStats":"Model Stats","stats.modelTip":"Tip: For a full token breakdown, run /stats model.","stats.modelUsage":"Model Usage","stats.modified":"Modified:","stats.noApiCalls":"No API calls have been made in this session.","stats.noToolCalls":"No tool calls have been made in this session.","stats.outputTokens":"Output Tokens","stats.overview":"Session Overview","stats.performance":"Performance","stats.prompts":"Prompts","stats.rejected":"Rejected:","stats.reqs":"Reqs","stats.requests":"Requests","stats.savingsHighlight":"Savings Highlight:","stats.successRate":"Success Rate","stats.thoughts":"Thoughts","stats.title":"Session Stats","stats.tokens":"Tokens","stats.toolCalls":"Tool Calls","stats.toolName":"Tool Name","stats.toolStats":"Tool Stats","stats.toolTime":"Tool Time","stats.total":"Total","stats.totalReviewed":"Total Reviewed Suggestions:","contextUsage.refresh":"Refresh","contextUsage.remaining":"Remaining","contextUsage.advanced":"Advanced · usage by category","contextUsage.snapshot":"Snapshot","contextUsage.viewCurrent":"View current context","contextUsage.compress":"Compress context","contextUsage.compressing":"Compressing…","contextUsage.compressed":"Compression completed. Context usage refreshed.","contextUsage.compressCancelled":"Cancellation requested. Refresh to check current usage.","contextUsage.compressInterrupted":"Connection changed during compression. Refresh to check current usage.","contextUsage.compressFailed":"Compression failed. You can try again.","contextUsage.compressRefreshFailed":"Compression completed, but usage could not be refreshed. Use Refresh to retry.","contextUsage.compressUnavailable":"Requires an idle, connected, writable session with the built-in compression command and no active goal.","contextCompression.result":e=>`Context compressed ${e?.from??""} → ${e?.to??""}`,"contextCompression.instructionsTruncated":e=>`Compression instructions were truncated to ${e?.max??""} characters.`,"contextCompression.noop":"No compression needed.","contextUsage.retry":"Retry","contextUsage.loadError":"Failed to load context usage.","contextUsage.previousReading":"Could not refresh. Showing a previous reading.","contextUsage.unavailable":"Context usage is unavailable for this session.","tokenUsage.avgLatency":"Avg latency","tokenUsage.cached":"Cached input","tokenUsage.input":"Input","tokenUsage.loadError":"Failed to load token usage.","tokenUsage.models":"By model","tokenUsage.noData":"No API calls in this session yet.","tokenUsage.noSubagents":"No subagent calls in this session yet.","tokenUsage.noTools":"No tool calls in this session yet.","tokenUsage.open":"Session token usage","tokenUsage.output":"Total output","tokenUsage.refresh":"Refresh","tokenUsage.requests":"Requests","tokenUsage.retry":"Retry","tokenUsage.subagents":"Subagents","tokenUsage.thoughts":"Reasoning (included in total output)","tokenUsage.title":"Token Usage","tokenUsage.toolRow":e=>`${e?.count??0} calls · ${e?.rate??0}% ok · ${e?.duration??""}`,"tokenUsage.tools":"Tools","tokenUsage.updatedAt":e=>`Updated ${e?.time??""}`,"tokenUsage.unavailable":"Token usage is unavailable for this session.","trajectory.title":"Trajectory","trajectory.description":"See where a run spent its time and tokens","trajectory.empty":"No records in this session yet.","trajectory.noTiming":"No request or tool durations are recorded for these records.","trajectory.truncated":"Showing the most recent records of this session.","trajectory.loadFailed":e=>`Could not read the transcript: ${e?.message??""}`,"trajectory.partial":"Part of this transcript could not be read, so some records are missing.","trajectory.totals":e=>`${i_(e?.turns,"turn")} · ${i_(e?.requests,"request")} · ${i_(e?.tools,"tool")} · ${e?.duration??""}`,"trajectory.turn":e=>`Turn ${e?.index??0}`,"trajectory.turnPartial":e=>`Turn ${e?.index??0} (continued)`,"trajectory.turnSummary":e=>`${i_(e?.requests,"request")} · ${i_(e?.tools,"tool")} · ${e?.duration??""}`,"trajectory.request":"Model request","trajectory.requestFailed":"Request failed","trajectory.ttft":e=>`TTFT ${e?.duration??""}`,"trajectory.subagentRollup":e=>`subagent ${i_(e?.requests,"request")} · ${i_(e?.tools,"tool")} · ${e?.duration??""}`,"trajectory.badge.user":"you","trajectory.badge.message":"say","trajectory.badge.thought":"think","trajectory.badge.tool":"tool","trajectory.badge.subagent":"sub","trajectory.badge.shell":"shell","trajectory.badge.permission":"ask","trajectory.badge.status":"note","trajectory.badge.cancelled":"stop","trajectory.badge.other":"other","trajectory.cancelled":"Turn cancelled","status.contextUsed":e=>`${e?.pct??"0.0"}% context used`,"status.disconnected":"Disconnected","status.modeHint":"(shift + tab or click to switch)","status.shortcuts":"? for shortcuts","stream.cancel":"esc to cancel","stream.cancelArmed":"Press Esc again to stop","stream.tokens":e=>`${e?.count??0} tokens`,"theme.current":e=>`current: ${e?.theme??""}`,"theme.auto":"Auto","theme.dark":"Dark","theme.dark.desc":"Terminal-style dark skin.","theme.light":"Light","theme.light.desc":"Terminal-style light skin.","theme.title":"Theme","todo.allDone":"All tasks completed","todo.collapse":"Collapse task list","todo.completedAbove":e=>`✓ ${e?.count??0} completed`,"todo.detail.api":"API","todo.detail.cached":"Cached","todo.detail.end":"End","todo.detail.hide":"Hide task detail","todo.detail.input":"Input","todo.detail.noResources":"Token & time usage wasn't captured for this task.","todo.detail.output":"Output","todo.detail.sectionSpent":"Time spent","todo.detail.sectionTime":"Time","todo.detail.sectionTokens":"Tokens","todo.detail.show":"Show task detail","todo.detail.start":"Start","todo.detail.tool":"Tool","todo.expand":"Expand task list","todo.more":e=>`... ${e?.count??0} more`,"todo.moreAbove":e=>`... ${e?.count??0} earlier`,"todo.showLess":"Show less","todo.stepProgress":e=>`Step ${e?.current??0} / ${e?.total??0}`,"todo.stepFraction":e=>`${e?.current??0} / ${e?.total??0}`,"todo.title":"Current tasks","planExecution.dialogTitle":"Plan & tasks","planExecution.title":"Plan execution","planExecution.overview":"Workflow overview","planExecution.overallProgress":"Overall progress","planExecution.stepsCompleted":"Steps completed","planExecution.activeAgents":"Active agents","planExecution.needsAttention":"Needs attention","planExecution.stepDetails":"Step details","planExecution.subagents":"Subagents","planExecution.noSubagents":"No agent has been linked to this step yet.","planExecution.openDetails":"Open subagent details","planExecution.currentActivity":"Current activity:","planExecution.toolCalls":e=>`${e?.count??0} tool calls`,"planExecution.tokens":e=>`${e?.count??0} tokens`,"planExecution.view":"View plan execution","planExecution.dependsOn":"Depends on:","planExecution.unblocks":"Unblocks:","planExecution.unassigned":"Unassigned executions","planExecution.attention":"Needs attention","planExecution.agentCount":e=>`${e?.count??0} ${Number(e?.count??0)===1?"agent":"agents"}`,"planExecution.status.running":"Running","planExecution.status.paused":"Paused","planExecution.status.completed":"Completed","planExecution.status.blocked":"Blocked","planExecution.status.in_progress":"In progress","planExecution.status.ready":"Ready","planExecution.edgesHidden":e=>`Too many dependencies to draw (${e?.count??0}). Each step lists what it depends on instead.`,"workflow.chatTitle":"Chat","workflow.title":"Workflow","workflow.inspector.summary":"Workflow progress","workflow.inspector.selectedStep":"Selected step","workflow.inspector.allSteps":"Steps","workflow.inspector.recentActivity":"Recent Agent activity","workflow.inspector.expandGraph":"Expand dependency graph","workflow.inspector.graphCanvas":"Dependency graph","workflow.inspector.canvasHint":"Select a graph node to inspect its dependencies and Agent runs here.","workflow.inspector.activeAgents":e=>`${e?.count??0} active Agent${e?.count===1?"":"s"}`,"workflow.inspector.attentionCount":e=>`${e?.count??0} need attention`,"workflow.planReview.title":"Plan & Review","workflow.planReview.question":"Confirm the plan and start collaboration?","workflow.planReview.confirm":"Confirm and start","workflow.planReview.continuePlanning":"Continue planning","workflow.empty.title":"This session has no structured workflow yet","workflow.empty.copy":"Return to Chat, enter Plan & Review, and ask for Todos with stable IDs and dependencies.","workflow.empty.action":"Return to Chat and create a plan","workflow.tabs.attention":"Needs attention","workflow.connection.connected":"Daemon connected","workflow.connection.reconnecting":"Daemon reconnecting","workflow.session.defaultTitle":"Current Session Workflow","workflow.session.workspace":"workspace","workflow.dependencies.upstream":"Depends on","workflow.dependencies.none":"None","workflow.dependencies.unblocks":"Unblocks","workflow.dependencies.noDownstream":"No downstream steps","workflow.activity.empty":"No Agent runs are linked to a Todo yet.","workflow.activity.showAll":e=>`Show all ${e?.count??0} runs`,"workflow.deliverables.title":"Session deliverables","workflow.deliverables.none":"No artifacts have been published yet","workflow.status.running":"Running","workflow.status.paused":"Paused","workflow.status.completed":"Completed","workflow.status.failed":"Failed","workflow.status.cancelled":"Cancelled","workflow.task.completed":"Completed","workflow.task.attention":"Needs attention","workflow.task.running":"Collaboration running","workflow.task.waitingExecution":"Waiting to execute","planExecution.locateCurrent":"Locate current step","status.mode":"Approval mode","chat.scrollToBottom":"Scroll to bottom","chatHeader.toggleEnvironment":"Toggle environment information","chatHeader.toggleRightPanel":"Toggle right panel","environment.title":"Environment","environment.changes":"Changes","environment.changeCount":e=>`${e?.count??0} changed`,"environment.clean":"Clean","environment.workspace":"Workspace","environment.branch":"Branch","environment.history":"Commit history","environment.agents":"Subagents","environment.unnamedAgent":e=>`Agent (${e?.index??0})`,"workflow.open":"Open agent workflow","workflow.mainAgent":"Main agent","workflow.empty":"No subagents in this workflow","workflow.loadFailed":"Failed to load agent workflow","environment.unavailable":"Unavailable","sources.title":"Sources","sources.count":e=>`${e?.count??0} ${(e?.count??0)===1?"source":"sources"}`,"sources.currentTurn":"Sources for this turn","sources.add":"Add source","sources.empty":"Add files or links for reference.","sources.explanation":"Adding a reference does not send its contents to the assistant.","sources.remove":"Remove source","sources.open":"Open source","sources.viewAll":"View all","sources.type":"Reference type","sources.workspaceFile":"Workspace file","sources.link":"Link","sources.location":"Path or link","sources.name":"Title (optional)","sources.description":"Description (optional)","sources.registrationFailed":"Message sent; some source details could not be saved","sources.attachmentsLoadFailed":e=>`Failed to load uploaded files: ${e?.error??"Unknown error"}`,"sources.openOriginal":"Open original","sources.unavailable":"This reference is no longer available in this workspace.","environment.attachments":"Attachments","environment.artifacts":"Artifacts","environment.artifactsEmpty":"Artifacts generated in this session will appear here.","rightPanel.attachmentLoadFailed":e=>`Failed to load attachment: ${e?.error??"Unknown error"}`,"rightPanel.savedContentUnavailable":"Saved panel content is unavailable","rightPanel.restoreFailed":e=>`Failed to restore panel: ${e?.error??"Unknown error"}`,"userMessage.showMore":"Show more","userMessage.showLess":"Collapse","userMessage.sendFailed":"Failed to send","userMessage.retrySend":"Retry sending message","userMessage.edit":"Edit message","userMessage.editSubmit":"Send","userMessage.editSending":"Sending…","userMessage.editBusy":"Wait for the current turn to finish before editing.","userMessage.editStale":"The message changed. Reopen the editor and try again.","userMessage.editAttachmentUnavailable":"An attachment is unavailable. The message was not rewound.","userMessage.editSyncFailed":"Could not confirm the rewind. Your edit is retained while waiting for synchronization.","userMessage.editFailed":e=>`Could not resend the edited message: ${e?.reason??""}`,"turn.processed":"Processed","turn.processing":"Processing","turn.collapse":"Collapse steps","turn.expand":"Expand steps","turn.cached":"cached","turn.executionSteps":e=>{const t=e?.count??0;return`${t} step${t===1?"":"s"}`},"turn.toolCalls":e=>{const t=e?.count??0;return`${t} tool call${t===1?"":"s"}`},"turn.thinkingCount":e=>{const t=e?.count??0;return`${t} thought${t===1?"":"s"}`},"turn.stopped":"You cancelled this request","turn.stoppedAfter":e=>{const t=e?.seconds??0;return`You cancelled this request after ${t} second${t===1?"":"s"}`},"message.renderError":"This message could not be displayed.","tasks.title":"Background tasks","tasks.empty":"No tasks currently running","tasks.refreshStale":"Task status may be stale; reconnecting...","tasks.cancelFailed":"Failed to cancel task","tasks.alreadyStopped":"Task already stopped","tasks.moreAbove":e=>`^ ${e?.count??0} more above`,"tasks.moreBelow":e=>`v ${e?.count??0} more below`,"tasks.running":"Running","tasks.pausing":"Pausing","tasks.completed":"Completed","tasks.failed":"Failed","tasks.cancelled":"Stopped","tasks.paused":"Paused","tasks.kind.shell":"Shell","tasks.kind.monitor":"Monitor","tasks.kind.workflow":"Workflow","workflow.graph.waiting":"Waiting for the first agent dispatch…","workflow.graph.notRecorded":"No execution graph was saved for this run.","workflow.inline.loading":"Loading live workflow execution…","workflow.inline.unavailable":"This workflow run is no longer available in the current session.","workflow.graph.omitted":e=>`Graph limited for performance: ${e?.lanes??0} phases, ${e?.nodes??0} agents, and ${e?.edges??0} connections omitted.`,"workflow.noPhase":"No phase","workflow.dispatchCount":e=>`${e?.count??0} dispatch${e?.count===1?"":"es"}`,"workflow.selectedDispatch":"Selected dispatch","workflow.dependencies":"Depends on","workflow.action.pause":"Pause","workflow.action.resume":"Resume","workflow.action.retry":"Retry failed path","workflow.action.rerun":"Rerun all","workflow.action.unavailable":"Workflow state changed before the action.","workflow.action.argsUnavailable":"No restart: its history does not have the args it was launched with.","workflow.action.failed":"Could not update the workflow.","workflow.history.retry":e=>`Retried from ${e?.runId??""}`,"workflow.history.rerun":e=>`Rerun from ${e?.runId??""}`,"workflow.history.cached":e=>`${e?.count??0} cached`,"workflow.history.saved":e=>`${e?.count??0} saved runs`,"workflow.history.restored":"Saved run","workflow.history.showRuns":e=>`Run history (${e?.count??0})`,"workflow.history.hideRuns":"Hide history","workflow.history.filter":"Filter runs","workflow.history.filterAll":"All statuses","workflow.history.visibleCount":e=>`${e?.count??0} of ${e?.total??0}`,"workflow.history.filterEmpty":"No saved runs match this filter.","workflow.history.exportVisible":"Export visible","workflow.history.delete":"Delete","workflow.history.deleteSaved":"Delete saved run","workflow.history.confirmDelete":"Confirm delete","workflow.history.deleteUnavailable":"The saved run is no longer available.","workflow.history.deleteFailed":"Could not delete the saved run.","workflow.history.compareRun":e=>`Compare run ${e?.runId??""}`,"workflow.history.compare":"Compare runs","workflow.history.hideComparison":"Hide comparison","workflow.history.source":"Source run","workflow.history.compared":"Compared run","workflow.history.current":"Current run","workflow.history.status":"Status","workflow.history.agents":"Agents","workflow.approvalNeeded":"Approval needed","workflow.respondInChat":"Respond in chat","workflow.metric.agents":"agents","workflow.metric.running":"running","workflow.metric.queued":"queued","workflow.metric.tokens":"tokens","workflow.dispatch.queued":"Queued","workflow.dispatch.running":"Running","workflow.dispatch.completed":"Completed","workflow.dispatch.failed":"Failed","workflow.dispatch.cancelled":"Cancelled","workflow.dispatch.cached":"Cached","tasks.action.stop":"Stop","tasks.action.abandon":"Abandon","tasks.action.confirmStop":"Confirm stop","tasks.action.confirmAbandon":"Confirm abandon","tasks.action.confirmHint":"This will end the blocking turn.","tasks.pill.agent":e=>`${e?.count??0} local agent`,"tasks.pill.agents":e=>`${e?.count??0} local agents`,"tasks.pill.agentPaused":e=>`${e?.count??0} local agent paused`,"tasks.pill.agentsPaused":e=>`${e?.count??0} local agents paused`,"tasks.pill.done":e=>`${e?.count??0} task done`,"tasks.pill.doneMany":e=>`${e?.count??0} tasks done`,"tasks.pill.monitor":e=>`${e?.count??0} monitor`,"tasks.pill.monitors":e=>`${e?.count??0} monitors`,"tasks.pill.shell":e=>`${e?.count??0} shell`,"tasks.pill.shells":e=>`${e?.count??0} shells`,"tasks.pill.workflow":e=>`${e?.count??0} workflow`,"tasks.pill.workflows":e=>`${e?.count??0} workflows`,"tasks.confirmStop":"x again to confirm stop · ends the blocking turn","tasks.shortcut.select":"↑/↓ select","tasks.shortcut.view":"Enter view","tasks.shortcut.stop":"x stop","tasks.shortcut.abandon":"x abandon","tasks.shortcut.listClose":"←/Esc close","tasks.shortcut.detailBack":"← go back","tasks.shortcut.detailClose":"Esc/Enter/Space close","tasks.shortcut.close":"Esc close","tasks.shortcut.cancelConfirm":"Esc cancel","tasks.detail.workingDir":"Working dir","tasks.detail.outputFile":"Output file","tasks.detail.command":"Command","tasks.detail.events":e=>`${e?.count??0} events`,"tasks.detail.exit":e=>`exit ${e?.exitCode??""}`,"tasks.detail.dropped":e=>`${e?.count??0} dropped`,"tasks.detail.error":"Error","tasks.detail.stoppedBecause":"Stopped because","tasks.detail.resumeBlocked":"Resume blocked","tasks.detail.progress":"Progress","tasks.detail.prompt":"Prompt","tasks.detail.type":"Type","tasks.detail.runtime":"Time","tasks.detail.eventCount":"Events","tasks.detail.pid":"PID","tasks.detail.lastEvent":"Last event","tasks.detail.droppedCount":"Dropped","tasks.detail.exitCode":"Exit code","tasks.detail.tokenCount":"Tokens","tasks.detail.toolCallCount":"Tool calls","tasks.detail.tokens":e=>`${e?.count??0} tokens`,"tasks.detail.toolCalls":e=>`${e?.count??0} tool calls`,"tasks.detail.nesting":"Nesting","tasks.detail.nestingValue":e=>`Level ${e?.level??"?"} · from ${e?.parent??"?"}`,"tasks.detail.nestingLevel":e=>`Level ${e?.level??"?"}`,"tasks.row.from":e=>`from ${e?.parent??"?"}`,"tasks.row.nested":"nested","tips.items":"Type / to see all available commands.|Use @ to reference file paths.|Press Esc to cancel an in-flight request.|Use Shift+Enter for a newline.|Press ↑↓ to browse message history.","tools.available":"Available tools:","tools.none":"No tools available.","tools.empty":"No built-in tools available. Open a session first.","tools.footer":e=>e?.name?`${e?.details?"Enter/Space for details · ":""}t to toggle ${e.name} · r to refresh · Esc to close`:"r to refresh · Esc to close","tools.details.hide":"Hide details","tools.details.show":"Show details","tools.description":"Description","tools.details":"Tool details","tools.loading":"Loading tools...","tools.name":"Tool name","tools.noDescription":"No description","tools.noMatches":"No matching tools.","tools.search":"Search tools…","tools.status":"Status","tools.status.disabled":"disabled","tools.status.enabled":"enabled","tools.summary":e=>`${e?.enabled??0}/${e?.total??0} enabled`,"tools.title":"Tools","tools.update.disable":"Disable","tools.update.enable":"Enable","tools.updating":"Updating...","tool.collapse":"▲ Collapse","tool.expand":"Expand","tool.viewFile":"View file","tool.viewImage":"View image","tool.viewCurrentFile":"View the current file","tool.collapseHint":"Collapse","tool.status.failed":"Failed","toolGroup.moreKinds":e=>` +${e?.count??0}`,"toolGroup.summary":e=>`Ran ${e?.count??0} tool${e?.count===1?"":"s"}`,"toolGroup.summary.ranAgents":e=>`Ran ${e?.count??0} agent${e?.count===1?"":"s"}`,"toolGroup.summary.editedFiles":e=>`Edited files ${e?.count??0} time${e?.count===1?"":"s"}`,"toolGroup.summary.ranCommands":e=>`Ran ${e?.count??0} command${e?.count===1?"":"s"}`,"toolGroup.summary.readFiles":e=>`Read files ${e?.count??0} time${e?.count===1?"":"s"}`,"toolGroup.summary.searched":e=>`Searched ${e?.count??0} time${e?.count===1?"":"s"}`,"toolGroup.summary.updatedTodos":e=>`Updated task list${e?.count===1?"":` ${e?.count??0} times`}`,"toolGroup.summary.provideInformation":"Provide information","toolGroup.summary.askedQuestions":e=>`Asked ${e?.count??0} question${e?.count===1?"":"s"}`,"toolGroup.summary.otherTools":e=>`Called ${e?.count??0} other tool${e?.count===1?"":"s"}`,"toolGroup.running":e=>Number(e?.count??0)>1?`Running ${e?.count??0} tools: ${e?.name??"tool"}`:`Running ${e?.name??"tool"}`,"toolGroup.runningPrefix":"Running","thinking.expand":"Expand thinking","thinking.collapse":"Collapse thinking","thinking.running":e=>`Thinking${e?.duration?` ${e.duration}`:""}`,"thinking.doneBriefly":"Thought briefly","thinking.done":e=>e?.duration?`Thought for ${e.duration}`:"Done thinking","thinking.translate":"Translate","thinking.translation":"Translated thinking","thinking.translating":"Translating...","thinking.translationThinking":"Thinking...","thinking.translationFailed":"Translation failed","thinking.retranslate":"Translate again","thinking.cancelTranslation":"Cancel","thinking.closeTranslation":"Close","thinking.inputTokens":e=>`Input tokens: ${e?.count??"--"}`,"thinking.outputTokens":e=>`Output tokens: ${e?.count??"--"}`,"sessionsOverview.current":"Current","sessionsOverview.empty":"No sessions yet","sessionsOverview.loadFailed":"Failed to load sessions","sessionsOverview.loading":"Loading sessions…","sessionsOverview.noData":"No data","sessionsOverview.openInSplit":"Open in split","sessionsOverview.openInSplitHint":"Show the selected sessions side by side in this window","sessionsOverview.splitLimit":e=>`Select at most ${e?.max??6} sessions to open them together`,"sessionsOverview.openInTab":"Open in new tab","sessionsOverview.openInTabHint":"Open the selected sessions as a split view in a new browser tab","sessionsOverview.popupBlocked":"Pop-up blocked. Allow pop-ups for this site to open sessions in new tabs.","sessionsOverview.refresh":"Refresh","sessionsOverview.selectAll":"Select all","sessionsOverview.titleColumn":"Title","sessionsOverview.actions":"Actions","sessionsOverview.time":"Time","sessionsOverview.selectedRows":e=>`${e?.count??0} of ${e?.total??0} row(s) selected.`,"sessionsOverview.previousPage":"Previous","sessionsOverview.nextPage":"Next","sessionsOverview.pageInfo":e=>`Page ${e?.page??0} of ${e?.total??0}`,"sessionsOverview.rowsPerPage":"Rows per page","sessionsOverview.workspaceFilter":"Filter by workspace","sessionsOverview.allWorkspaces":"All","sessionsOverview.searchPlaceholder":"Search title, branch, PR or ID…","sessionsOverview.workspaceAll":"All workspaces","sessionsOverview.workspacesSelected":e=>`${e?.count??0}/${e?.total??0} workspaces`,"sessionsOverview.statusColumn":"Status","sessionsOverview.statusFilter":"Filter by session status","sessionsOverview.filter.all":"All","sessionsOverview.filter.attention":"Needs attention","sessionsOverview.filter.running":"Running","sessionsOverview.filter.idle":"Idle","sessionsOverview.status.idle":"Idle","sessionsOverview.details":e=>`Details for ${e?.name??""}`,"sessionsOverview.sessionCount":e=>`${e?.total??0} session(s)`,"sessionsOverview.confirmArchiveTitle":"Archive session?","sessionsOverview.confirmArchive":e=>`"${e?.name??""}" will be moved to archived sessions.`,"sessionsOverview.confirmArchiveBulkTitle":e=>`Archive ${e?.count??0} sessions?`,"sessionsOverview.confirmArchiveBulk":e=>`${e?.count??0} selected sessions will be moved to archived sessions.`,"sessionsOverview.confirmDeleteTitle":"Delete session?","sessionsOverview.confirmDelete":e=>`"${e?.name??""}" and its conversation history will be permanently deleted. This cannot be undone.`,"sessionsOverview.deleteFailed":"Failed to delete session","sessionsOverview.archiveFailed":"Failed to archive session","sessionsOverview.actionUnavailable":"This action is unavailable for the selected session or workspace","sessionsOverview.bulkArchive":"Archive","sessionsOverview.bulkArchiveHint":e=>`Archive ${e?.count??0} selected sessions`,"sessionsOverview.bulkDelete":"Delete","sessionsOverview.bulkDeleteHint":e=>`Delete ${e?.count??0} selected sessions`,"sessionsOverview.confirmDeleteBulkTitle":e=>`Delete ${e?.count??0} sessions?`,"sessionsOverview.confirmDeleteBulk":e=>`${e?.count??0} selected sessions and their conversation history will be permanently deleted. This cannot be undone.`,"sessionsOverview.selectSession":e=>`Select ${e?.name??""}`,"sessionsOverview.status.askUserQuestion":"User input needed","sessionsOverview.status.needsApproval":"Needs approval","sessionsOverview.status.running":"Running","sessionsOverview.title":"Session Overview","workspacesOverview.title":"Workspaces","workspacesOverview.count":e=>`${e?.count??0} workspaces`,"workspacesOverview.column.name":"Name","workspacesOverview.column.path":"Path","workspacesOverview.column.sessions":"Sessions","workspacesOverview.column.mcp":"MCP","workspacesOverview.column.git":"Branch","workspacesOverview.column.lastActivity":"Last activity","workspacesOverview.column.actions":"Actions","workspacesOverview.primaryBadge":"primary","workspacesOverview.running":e=>`${e?.count??0} running`,"workspacesOverview.attention":e=>`${e?.count??0} need attention`,"workspacesOverview.truncated":"More sessions than one page; counts are a lower bound.","workspacesOverview.dirty":e=>`${e?.count??0} changed`,"workspacesOverview.mcpFailed":e=>`${e?.count??0} failed`,"workspacesOverview.newTask":"New task","workspacesOverview.remove":"Remove workspace","workspacesOverview.back":"Back","splitView.title":"Split View","splitView.count":e=>`${e?.count??0} panes`,"splitView.addPane":"Add session","splitView.closePane":"Close pane","splitView.maximizePane":"Maximize pane","splitView.restorePane":"Restore pane","splitView.morePaneActions":"More pane actions","splitView.defaultActionLabel":"Action","splitView.paneError":"This session pane hit an error","splitView.paneConnectionError":"Connection lost","splitView.outerApprovalPending":"Your main session is waiting for approval.","splitView.goToApproval":"Go to it","splitView.pendingCount":e=>`${e?.count??0} awaiting input`,"splitView.nextPending":"Go to the next session awaiting input","splitView.empty":"No sessions in the split. Add one to get started.","splitView.composerPlaceholder":"Message this session…","settings.title":"Settings","capacityChoice.primary":"Primary","settings.loading":"Loading settings...","settings.empty":"No settings available.","settings.footer":"↑↓ Navigate Enter Toggle Tab Scope r Reload ESC Close","settings.footer.edit":"Enter Save ESC Cancel","settings.footer.theme":"↑↓ Navigate Enter Select ESC Back","settings.scope.user":"User","settings.scope.workspace":"Workspace","settings.value.on":"ON","settings.value.off":"OFF","settings.action.edit":"Edit","settings.action.select":"Select","settings.action.save":"Save","settings.modifiedIn":e=>`(Modified in ${e?.scope??""})`,"settings.alsoModifiedIn":e=>`(Also modified in ${e?.scope??""})`,"settings.invalidNumber":"Invalid number","settings.requiresRestart":"This change requires a restart to take effect.","settings.localControl.title":"Local Control","settings.localControl.description":"Continue this O1-Code session from a phone on the same trusted network.","settings.localControl.on":"On","settings.localControl.off":"Off","settings.localControl.network":"Local network","settings.localControl.selectNetwork":"Choose a network","settings.localControl.qr":"Local Control QR code","settings.localControl.enable":"Turn on Local Control","settings.localControl.disable":"Disconnect phone access","settings.localControl.encrypted":"Encrypted","settings.localControl.unencrypted":"Unencrypted — trusted networks only; re-enable after network changes","settings.localControl.awake":"This Mac will stay awake","settings.localControl.maySleep":"This Mac may sleep","settings.localControl.urlRedacted":"The pairing URL is not shown here because this daemon has no bearer token. It was printed to the terminal where the daemon is running — pair from there.","localControl.open":"Mobile access","localControl.expires":e=>`One-time QR · Expires in ${e?.seconds??""}s · Refreshes automatically`,"localControl.expired":"QR code expired. Getting a fresh code…","localControl.retry":"Retry","localControl.noNetwork":"No local network address is available. Open the Web Shell through an address your phone can reach.","localControl.securePairing":"Scan to grant access until this daemon restarts.","localControl.insecurePairing":"Scan to grant access until this daemon restarts. Traffic is unencrypted; use a trusted network.","localControl.securePairingDynamic":"Scan to grant access to this daemon. The device that scans stays signed in until the daemon restarts or that device's tab is closed.","localControl.insecurePairingDynamic":"Scan to grant access to this daemon. The device that scans stays signed in until the daemon restarts or that device's tab is closed. Traffic is unencrypted; use a trusted network.","localControl.disabledHint":"Local Control is off. Turn it on in Settings to pair a phone on the same network.","localControl.openSettings":"Open Settings","settings.models.title":"Models","settings.models.context":e=>`Context: ${e?.tokens??""} tokens`,"settings.models.credentialEnv":"Key environment variable","settings.models.add":"+ Add Model","settings.models.setCurrent":"Set current","settings.models.current":"Current","settings.models.runtime":"Runtime","settings.models.savedConfiguration":"Saved configuration","settings.models.ambiguousWindow":"Multiple configurations share this route. Its context window cannot be edited here.","settings.models.delete":"Delete","settings.models.confirmDelete":"Confirm","settings.models.cancel":"Cancel","settings.models.empty":"No configured models yet.","settings.models.loading":"Loading models…","settings.models.deleteFailed":"Failed to delete model","settings.models.runtimeSyncFailed":"The change was saved, but running sessions could not be refreshed. Restart o1-code serve before using the updated model list.","settings.models.fallbacks.title":"Model Fallbacks","settings.models.fallbacks.hint":e=>`Select up to ${e?.max??3}; tried in order when the main model is at capacity.`,"settings.models.fallbacks.confirm":"Confirm","settings.models.fallbacks.empty":"No selectable models.","settings.models.fallbacks.saveFailed":"Failed to save fallback models","settings.models.fallbacks.limitReached":e=>`Maximum of ${e?.max??3} fallback models selected; deselect one to choose another.`,"settings.corrupted":e=>`Settings file was corrupted${e?.recovered==="true"?" (recovered from backup)":""}`,"browserNotifications.label":"Browser task notifications","browserNotifications.description":"Notify when the current chat or a split-view chat finishes or fails while this page is in the background or unfocused. Shows the session title, prompt and reply excerpts. Saved for this browser site only; the page must remain open.","browserNotifications.prompt":e=>`Prompt: ${e?.text??""}`,"browserNotifications.reply":e=>`Reply: ${e?.text??""}`,"browserNotifications.completed":"This turn has completed.","browserNotifications.failed":"This turn failed. Return to view the details.","browserNotifications.ended":"This turn has ended. Return to check the result.","browserNotifications.allow":"Allow notifications","browserNotifications.enabled":"Enabled.","browserNotifications.disabled":"Disabled.","browserNotifications.waiting":"Waiting for browser permission.","browserNotifications.denied":"Notifications are blocked. Allow them in your browser site settings.","browserNotifications.unavailable":"Notifications are unavailable in this browser or page context.","browserNotifications.requesting":"Waiting for your permission…","browserNotifications.error":"Unable to enable or show notifications. Check your browser and system settings.","browserNotifications.temporary":"This setting is saved for the current page only.","settings.label.ui.chatWidth":"Chat width","settings.description.ui.chatWidth":"Frontend-only chat content width. Stored in this browser.","settings.label.ui.enableFollowupSuggestions":"Enable Follow-up Suggestions","settings.description.ui.enableFollowupSuggestions":"Show context-aware follow-up suggestions after a task completes. Press Tab or Right Arrow to insert, Enter to accept and submit.","settings.option.ui.chatWidth.1000":"Regular","settings.option.ui.chatWidth.wide":"Ultra wide","settings.label.visionModel":"Vision Model","settings.description.visionModel":"Image-capable model used as the vision bridge. Leave empty to auto-select.","welcome.changeModel":"(/model to change)","welcome.defaultModel":"unknown model","welcome.modeHint":"Shift+Tab or /approval-mode","welcome.prompt":"What would you like to do?","welcome.titlePrefix":"Welcome to","welcome.tipLabel":"Tips:"},LNe={...$V,"capacityChoice.persistenceUnconfirmed":"无法确认最后一轮被中断内容是否已保存。","capacityChoice.title":"选择要停止的工作区","capacityChoice.description":"当前没有可用的 ACP 容量。选择一个工作区停止其会话,或取消并继续现有工作。","capacityChoice.warning":"停止将中断列出的所有会话及其工具。文件、工作区注册和已保存历史会保留,未保存工作可能丢失。确认后关闭此弹窗不会撤销停止。","capacityChoice.outdated":"草稿、会话或 daemon 已变化,请取消后重新执行原操作。","capacityChoice.inProgress":"所选停止仍在处理,请刷新状态后再继续。","capacityChoice.failedUnreleased":"停止失败。确认旧进程全部退出前,此工作区暂不可用,容量仍被占用。可刷新查看清理结果。","capacityChoice.failedUnknownCleanup":"停止失败,清理结果尚未确认。请刷新状态后再继续。","capacityChoice.workspaces":"要停止的工作区","capacityChoice.requester":"此工作区属于正在尝试继续的原操作。","capacityChoice.running":"运行中","capacityChoice.waiting":"等待你的回复","capacityChoice.background":"后台工作运行中","capacityChoice.backgroundUnknown":"后台工作状态未知","capacityChoice.none":"当前没有可在此停止的工作区。请查看上述原因,先结束独立工作,或取消。","capacityChoice.refresh":"刷新状态","capacityChoice.continue":"继续原操作","capacityChoice.confirm":"停止这些会话并继续","capacityChoice.stopped":"此工作区已停止,以释放 ACP 容量。需要时可主动恢复此会话。","capacityChoice.resume":"恢复会话","capacityChoice.blocked.stopping":"正在停止","capacityChoice.blocked.not_live":"没有运行中的 ACP","capacityChoice.blocked.release_unavailable":"无法确认自有进程释放","capacityChoice.blocked.session_start_pending":"正在启动或恢复会话","capacityChoice.blocked.workspace_control_pending":"工作区管理或 MCP 操作进行中","capacityChoice.blocked.session_closing":"会话正在关闭或重置","capacityChoice.blocked.runtime_unavailable":"工作区不可用或不可信","capacityChoice.blocked.special_runtime":"特殊用途工作区","capacityChoice.blocked.unsupported":"不支持停止此运行时","capacityChoice.blocked.activity_unknown":"无法确认活动状态","capacityChoice.blocked.pendingSessionStarts":"等待会话启动","capacityChoice.blocked.acpConnections":"有 ACP 客户端连接","capacityChoice.blocked.memoryTasks":"记忆任务运行中","capacityChoice.blocked.voiceSessions":"语音会话活跃","capacityChoice.blocked.management_pending":"工作区管理操作待完成","capacityChoice.blocked.scheduler_pending":"正在恢复定时任务会话","capacityChoice.blocked.enabled_scheduled_tasks":"请先禁用已启用的定时任务","capacityChoice.blocked.scheduled_tasks_unknown":"无法读取定时任务","capacityChoice.capacity":e=>`ACP 容量:${e?.used} / ${e?.limit}`,"capacityChoice.sessions":e=>`${e?.count} 个已加载会话`,"capacityChoice.queued":e=>`${e?.count} 个排队请求`,"capacityChoice.outcome":e=>`已关闭 ${e?.closed} 个会话,剩余 ${e?.remaining} 个。`,"footnotes.note":e=>`脚注 ${e?.number??""}`,"footnotes.references":e=>`查看 ${e?.count??""} 条引用`,"footnotes.preview":"引用预览","footnotes.previous":"上一条引用","footnotes.next":"下一条引用","footnotes.citations":e=>`${e?.count??0} 个引用`,"daemon.capacity.exhausted":"已达到当前服务的并发容量上限,暂时无法启动此会话。请稍后重试,或取消本次操作。","git.currentBranch":e=>`当前 Git 分支:${e?.branch??""}`,"git.detached":"游离 HEAD","git.clean":"工作区干净","git.operation.merge":"合并中","git.operation.rebase":"变基中","git.operation.cherry-pick":"拣选中","git.operation.revert":"回退中","git.operation.bisect":"二分中","git.conflicted":e=>`${e?.count??0} 个冲突`,"git.staged":e=>`${e?.count??0} 已暂存`,"git.unstaged":e=>`${e?.count??0} 已修改`,"git.untracked":e=>`${e?.count??0} 未跟踪`,"git.ahead":e=>`领先 ${e?.count??0}`,"git.behind":e=>`落后 ${e?.count??0}`,"git.stash":e=>`${e?.count??0} 个 stash`,"branchPicker.label":"Git","branchPicker.search":"搜索分支和操作","branchPicker.loading":"加载分支中…","branchPicker.noBranches":"无分支","branchPicker.noTags":"无标签","branchPicker.action.pull":"更新项目","branchPicker.action.push":"推送","branchPicker.action.commit":"提交","branchPicker.action.newBranch":"新建分支…","branchPicker.action.checkoutRef":"检出标签或修订…","branchPicker.action.viewChanges":"查看变更","branchPicker.action.history":"提交历史","branchPicker.newBranchPlaceholder":"分支名称","branchPicker.invalidBranchName":"无效的分支名称 — 避免空格、~、^、:、? * 以及以 - 开头","branchPicker.checkoutRefPlaceholder":"标签名或提交 SHA","branchPicker.section.recent":"最近","branchPicker.section.local":"本地","branchPicker.section.remote":"远程","branchPicker.section.tags":"标签","branchPicker.checkedOut":e=>`已检出 ${e?.branch??""}`,"branchPicker.createdBranch":e=>`已创建分支 ${e?.branch??""}`,"branchPicker.pushSuccess":"推送成功","branchPicker.pullSuccess":"更新成功","branchPicker.pullBlocked":"存在未提交的修改,无法更新","branchPicker.pullStash":"Stash 修改并更新","branchPicker.pullDiscard":"放弃修改并更新…","branchPicker.pullDiscardConfirm":"将放弃所有未提交的修改(包括未跟踪文件),此操作无法撤销。","branchPicker.pullDiscardGo":"放弃并更新","branchPicker.pullStashConflict":e=>`更新成功,但恢复 Stash 中的修改失败。修改仍保留在 Stash 条目 ${String(e?.sha??"").slice(0,12)||"(见 git stash list)"} 中 —— 请先解决冲突标记,再手动恢复。`,"branchPicker.cancel":"取消","branchPicker.hint.upToDate":"已是最新","branchPicker.hint.noUpstream":"无上游分支","branchPicker.hint.upstreamGone":"上游分支已不存在","branchPicker.hint.behindDirty":e=>`↓${e?.count??0} · 有未提交更改`,"branchPicker.hint.setsUpstream":"推送时设置上游","branchPicker.hint.createsPushBranch":e=>`将创建 ${e?.target??""}`,"branchPicker.hint.aheadBehind":e=>`↑${e?.ahead??0} ↓${e?.behind??0} · 已分叉`,"branchPicker.hint.nothingToPush":"无待推送","branchPicker.hint.noChanges":"无更改","branchPicker.hint.changes":e=>`${e?.count??0} 处更改`,"branchPicker.hint.changesUntracked":e=>`${e?.count??0} 处更改(${e?.untracked??0} 未跟踪)`,"branchPicker.action.manageRemotes":"管理远程仓库…","branchPicker.remotes.title":"远程仓库","branchPicker.remotes.back":"返回分支列表","branchPicker.remotes.loading":"加载远程仓库中…","branchPicker.remotes.empty":"未配置远程仓库","branchPicker.remotes.noMatches":"没有匹配的远程仓库","branchPicker.remotes.namePlaceholder":"名称","branchPicker.remotes.urlPlaceholder":"URL","branchPicker.remotes.add":"添加","branchPicker.remotes.remove":e=>`移除 ${e?.name??""}`,"branchPicker.remotes.removeConfirm":"确认","branchPicker.remotes.removeConfirmFor":e=>`确认移除 ${e?.name??""}${e?.extras?`(${e.extras})`:""}`,"branchPicker.remotes.invisibleName":"(不可见名称)","branchPicker.remotes.hiddenChars":"(隐藏字符)","branchPicker.remotes.lookalikeName":"(易混名称)","branchPicker.remotes.searchPlaceholder":"搜索远程仓库","branchPicker.remotes.urlTooltipFetch":e=>`拉取: ${e?.url??""}`,"branchPicker.remotes.urlTooltipPush":e=>`推送: ${e?.url??""}`,"branchPicker.remotes.promisor":"部分克隆","branchPicker.remotes.partialClone":e=>`部分克隆(${e?.filter})`,"branchPicker.remotes.customRefspec":"自定义 refspec","branchPicker.remotes.extraUrls":e=>`+${e?.count??0} 个 URL`,"branchPicker.remotes.otherSettings":e=>`其他 ${e?.count??0} 项设置`,"branchPicker.remotes.added":e=>`已添加远程仓库 ${e?.name??""}`,"branchPicker.remotes.removed":e=>`已移除远程仓库 ${e?.name??""}`,"branchPicker.remotes.invalidInput":"请输入远程仓库名称和 URL(不能以 - 开头)","gitCommit.title":"提交","gitCommit.messagePlaceholder":"提交信息(⌘/Ctrl+Enter 提交)","gitCommit.generating":"正在生成提交信息…","gitCommit.genFailed":"自动生成失败 — 请手动输入提交信息","gitCommit.prLogUnavailable":"无法加载所选目标分支的提交记录。","gitCommit.prPushFirst":"请先将分支推送到远程仓库,再创建合并请求。","gitCommit.commit":"提交","gitCommit.commitAndPush":"提交并推送","gitCommit.createPr":"创建合并请求","gitCommit.prTitlePlaceholder":"合并请求标题","gitCommit.prBodyPlaceholder":"描述(可选)","gitCommit.prEdit":"编辑","gitCommit.prPreview":"预览","gitCommit.prSubmit":"创建","gitCommit.prCreated":e=>`合并请求 #${e?.number??""} 已创建`,"gitCommit.commitSuccess":e=>`已提交 ${e?.sha??""}`,"gitCommit.commitPushSuccess":e=>`已提交并推送 ${e?.sha??""}`,"gitCommit.commitSuccessPushFailed":e=>`已提交 ${e?.sha??""} — 推送失败:${e?.error??"未知错误"}`,"branchSelect.baseBranch":"目标分支","branchSelect.search":"搜索分支…","branchSelect.loading":"加载中…","branchSelect.noMatches":"无匹配","branchSelect.error":"分支加载失败","branchSelect.retry":"重试","branchSelect.local":"本地","gitDiff.title":"变更","gitDiff.summary":e=>`${e?.count??0} 个文件 · +${e?.added??0} −${e?.removed??0}`,"gitDiff.loading":"加载变更中…","gitDiff.empty":"工作区无变更","gitDiff.unavailable":"此工作区无 Git","gitDiff.error":"加载变更失败","gitDiff.binary":"二进制","gitDiff.untracked":"未跟踪","gitDiff.deleted":"已删除","gitDiff.noDiff":"无差异可显示","gitDiff.fileError":"加载此差异失败","gitDiff.truncated":"差异已截断——文件过大,未完整显示","gitDiff.hidden":e=>`还有 ${e?.count??0} 个文件未显示`,"gitDiff.expand":e=>`显示 ${e?.path??"文件"} 的变更`,"gitDiff.collapse":e=>`隐藏 ${e?.path??"文件"} 的变更`,"gitMode.title":"Git 模式","gitMode.current":"当前分支","gitMode.currentDesc":e=>`直接在 ${e?.branch??"main"} 上开发`,"gitMode.branch":"新建分支","gitMode.branchDesc":e=>`从 ${e?.branch??"main"} 创建新分支`,"gitMode.branchPlaceholder":"feat/my-feature","gitMode.branchLabel":"分支名","gitMode.branchConflictWarning":"同一 workspace 同时只能有一个分支会话","gitMode.branchHint":"在工作目录中切换到新分支","gitMode.branchInvalidName":"分支名不合法","gitMode.worktree":"Worktree 隔离","gitMode.worktreeDesc":"独立副本 · 可并行","gitMode.confirmBranch":"创建分支","gitMode.confirmWorktree":"创建 Worktree","gitMode.resetToCurrent":"恢复当前分支","gitLog.title":"提交历史","gitLog.subtitle":e=>`${e?.count??0} 条提交`,"gitLog.loading":"加载历史中…","gitLog.empty":"暂无提交","gitLog.unavailable":"此工作区不可用 Git","gitLog.error":"加载历史失败","gitLog.loadMore":"加载更多","gitLog.loadingMore":"加载中…","gitLog.files":e=>`${e?.count??0} 个文件 · +${e?.added??0} −${e?.removed??0}`,"gitLog.detailError":"加载提交详情失败","gitLog.hidden":e=>`还有 ${e?.count??0} 个文件未显示`,"gitLog.copySha":e=>`复制提交 ${e?.sha??""}`,"gitLog.allBranches":"全部分支","gitLog.search":"搜索提交信息、作者或哈希","gitLog.noMatches":"没有匹配的提交","githubPrs.title":"拉取请求","githubPrs.subtitle":e=>`${e?.count??0} 个开放`,"githubPrs.loading":"加载拉取请求中…","githubPrs.empty":"没有开放的拉取请求","githubPrs.unavailable":"当前工作区不是 git 仓库","githubPrs.error":"加载拉取请求失败","githubPrs.cliUnavailable":"daemon 所在主机未安装 GitHub CLI(gh)。\n请先安装并运行 `gh auth login`,然后重试。","githubPrs.reviewApproved":"已批准","githubPrs.reviewChanges":"要求修改","githubPrs.reviewRequired":"需要审查","githubPrs.checksPassing":"检查通过","githubPrs.checksFailing":"检查失败","githubPrs.checksPending":"检查进行中","githubPrs.open":e=>`在 GitHub 上打开拉取请求 #${e?.number??""}`,"workspace.paneLabel":e=>`工作区:${e?.name??""}`,"toolName.exec":"执行代码","toolName.edit":"编辑","toolName.write_file":"写入文件","toolName.read_file":"读取文件","toolName.zoom_image":"图片放大","toolName.grep":"搜索内容","toolName.grep_search":"搜索内容","toolName.glob":"查找文件","toolName.run_shell_command":"运行命令","toolName.todo_write":"任务清单","toolName.report_progress":"报告进度","toolName.get_goal":"目标","toolName.update_goal":"更新目标","toolName.propose_goal":"提议目标","toolName.save_memory":"保存记忆","toolName.agent":"智能体","toolName.skill":"查看技能","toolName.enter_plan_mode":"进入计划模式","toolName.exit_plan_mode":"退出计划模式","toolName.web_fetch":"网络搜索","toolName.webfetch":"网络搜索","toolName.fetch":"网络搜索","toolName.web_search":"网络搜索","toolName.list_directory":"列出文件","toolName.lsp":"LSP","toolName.ask_user_question":"询问用户","toolName.cron_create":"创建定时任务","toolName.cron_list":"定时任务列表","toolName.cron_delete":"删除定时任务","toolName.task_create":"创建任务","toolName.task_update":"更新任务","toolName.task_list":"任务列表","toolName.task_stop":"停止任务","toolName.team_create":"创建团队","toolName.team_delete":"删除团队","toolName.send_message":"发送消息","toolName.request_shutdown":"请求下线","toolName.list_agents":"列出 Agent","toolName.structured_output":"结构化输出","toolName.monitor":"监控","toolName.notebook_edit":"编辑 Notebook","toolName.tool_call":"工具调用","toolName.tool_search":"工具搜索","toolName.enter_worktree":"进入 Worktree","toolName.exit_worktree":"退出 Worktree","toolName.workflow":"工作流","toolName.team_plan_approval":"团队计划审批","toolName.loop_wakeup":"循环唤醒","toolName.create_sub_session":"创建子会话","toolName.read_mcp_resource":"读取 MCP 资源","toolName.artifact":"制品","toolName.record_artifact":"记录制品","toolName.record_source":"记录来源","toolName.report_findings":"上报评审发现","toolName.image_gen":"生成图片","toolName.omni_downsample_image":"降采样图像","toolName.omni_downscale_video":"降采样视频","toolName.omni_downsample_audio":"降采样音频","toolName.omni_extract_keyframes":"提取关键帧","toolName.omni_extract_audio":"提取音轨","toolName.omni_clip_video":"剪辑视频","toolName.omni_clip_image":"裁剪图像","toolName.omni_clip_audio":"剪辑音频","toolName.omni_caption_image":"描述图像","toolName.omni_caption_audio":"描述音频","toolName.omni_ocr_image":"识别图像文字","toolName.omni_understand_video_segments":"分段理解视频","toolName.omni_convert_image":"转换图像","toolName.omni_transcribe_audio":"转写音频","toolName.omni_recall_media_memory":"召回媒体记忆","toolName.display_image":"显示图片","toolName.bash":"运行命令","toolName.shell":"Shell 命令","toolName.read":"读取文件","toolName.readfile":"读取文件","toolName.write":"写入文件","toolName.writefile":"写入文件","toolName.search":"搜索内容","toolName.todowrite":"任务清单","toolName.savememory":"保存记忆","toolName.askuserquestion":"询问用户","toolName.toolsearch":"工具搜索","about.auth":"认证","about.baseUrl":"Base URL","about.fastModel":"快速模型","about.memoryUsage":"内存使用","about.model":"模型","about.noProxy":"no proxy","about.noSandbox":"no sandbox","about.platform":"操作系统","about.proxy":"代理","about.runtime":"运行环境","about.sandbox":"沙箱","about.sessionId":"会话 ID","about.title":"状态","agent.back":"返回","agent.builtInBadge":"(内置)","agent.action.delete":"删除智能体","agent.action.edit":"编辑智能体","agent.action.view":"查看智能体","agent.chooseAction":e=>`选择操作:${e?.name??""}`,"agent.chooseActionTitle":"选择操作","agent.colorLabel":"颜色:","agent.colorUpdated":e=>`已更新 ${e?.name??""} 的颜色`,"agent.create":"创建新的智能体","agent.create.button":"创建","agent.create.confirm":"确认并保存","agent.create.desc":"创建新的智能体","agent.create.descPlaceholder":"这个智能体做什么?","agent.create.describeAgent":"描述需求","agent.create.description":"描述","agent.create.editAgain":"编辑","agent.create.enterDescription":"输入描述","agent.create.enterName":"输入子智能体名称","agent.create.enterPrompt":"输入系统提示词","agent.create.generateFailed":e=>`生成子智能体失败:${e?.error??"未知错误"}`,"agent.create.generate":"生成","agent.create.generatedDescription":"描述","agent.create.generatedSystemPrompt":"系统提示词","agent.create.generatingConfig":"正在生成子智能体配置...","agent.create.generatingPrompt":"生成中...","agent.create.loading":"创建中...","agent.create.location":"选择位置","agent.create.method":"选择生成方式","agent.create.method.manual":"手动创建","agent.create.method.o1code":"使用 O1-Code 生成","agent.create.method.o1code.recommended":"使用 O1-Code 生成(推荐)","agent.create.method.o1code.desc":"LLM 生成描述和系统提示词","agent.create.name":"名称","agent.create.namePlaceholder":"my-agent","agent.create.nameHelp":"输入此子智能体清晰且唯一的名称。","agent.create.project":"项目","agent.create.project.cli":"工作区","agent.create.project.desc":"创建项目级智能体","agent.create.prompt":"系统提示词","agent.create.promptPlaceholder":"你是一个专门的智能体...","agent.create.promptPlaceholder.cli":"例如:你是一名专业的代码审查员...","agent.create.promptHelp":"编写定义此子智能体行为的系统提示词。为了获得最佳效果,请全面描述。","agent.create.preview":"预览","agent.create.o1codeHint":"说明职责、使用场景和重要约束,然后分别生成各项内容。","agent.create.o1codePlaceholder":"> 例如:专业的代码审查员,根据最佳实践审查代码...","agent.create.regenerate":"重新生成草稿","agent.create.required":"名称、描述和系统提示词均为必填项。","agent.create.tools":"允许的工具","agent.create.toolsHelp":"使用逗号或换行分隔 canonical 工具名称;MCP 工具使用 mcp__server__tool,留空表示继承全部工具。","agent.create.disallowedTools":"禁用的工具","agent.create.model":"模型","agent.create.approvalMode":"审批模式","agent.create.maxTurns":"最大执行轮次","agent.create.maxTurnsHelp":"限制智能体完成单次任务时的模型调用轮数,达到上限后将停止执行。留空表示不设置智能体层级的限制。","agent.create.maxTurnsInvalid":"最大执行轮次必须是正整数。","agent.create.mcpServers":"MCP Server","agent.create.mcpServers.empty":"暂无可用的 MCP Server。","agent.create.mcpServers.select":"选择 MCP Server","agent.create.mcpServers.noneSelected":"尚未选择 MCP Server。","agent.create.modelGenerate":"模型生成","agent.create.modelGenerate.description":"描述你的需求,然后分别生成并检查描述和系统提示词。","agent.create.color":"颜色","agent.create.jsonObjectHelp":"请输入 JSON 对象,或留空。","agent.create.save":"保存智能体","agent.create.scope":"类别","agent.create.manualDescHelp":"描述此子智能体应该在何时以及如何使用。","agent.create.manualDescPlaceholder":"例如:根据最佳实践和潜在 bug 审查代码。","agent.create.tools.builtin":"内置工具","agent.create.tools.empty":"暂无可用工具。","agent.create.tools.mcp":"MCP 工具","agent.create.tools.type":"工具类型","agent.create.tools.selectServer":"选择 MCP Server","agent.create.tools.selectTool":"选择工具","agent.create.tools.noneSelected":"尚未选择工具。","agent.create.tools.initializing":"正在初始化工具目录...","agent.create.tools.preheatFailed":"ACP 预热未完成。","agent.create.tools.loadFailed":"内置工具加载失败。","agent.create.removeSelection":e=>`移除 ${e?.name??""}`,"agent.create.toolsSelectHelp":"选择此子智能体可以使用的工具;全部不选表示继承所有工具。","agent.create.toolsSelection":"选择工具","agent.create.tools.all":"所有工具","agent.create.tools.allDefault":"所有工具(默认)","agent.create.tools.allInfo":"已选择所有工具,包括 MCP 工具","agent.create.tools.allInfoFallback":"已选择所有工具,包括 MCP 工具","agent.create.tools.editLabel":"• 编辑工具:","agent.create.tools.executionLabel":"• 执行工具:","agent.create.tools.none":"(无)","agent.create.tools.readEdit":"读取和编辑工具","agent.create.tools.readEditExecute":"读取、编辑和执行工具","agent.create.tools.readOnlyLabel":"• 只读工具:","agent.create.tools.readOnly":"只读工具","agent.create.tools.selected":"已选择的工具:","agent.create.user":"用户","agent.create.user.cli":"全局","agent.create.user.desc":"创建用户级智能体","agent.create.useGenerated":"确认使用","agent.approval.inherit":"默认","agent.approval.default":"默认审批","agent.approval.plan":"仅规划","agent.approval.auto-edit":"自动批准编辑","agent.approval.yolo":"自动批准所有操作","agent.approval.bubble":"气泡审批","agent.approval.desc.inherit":"使用智能体默认的审批规则。","agent.approval.desc.bubble":"将工具审批请求转交给父会话处理。","agent.createFirstHint":"使用 '/agents create' 创建第一个智能体。","agent.created":e=>`已创建 ${e?.name??""}`,"agent.edit.save":"保存修改","agent.updated":e=>`已更新 ${e?.name??""}`,"agent.turnsBadge":e=>`${e?.count??0} 轮`,"agent.delete":"删除","agent.delete.confirm":e=>`确定要删除 "${e?.name??""}" 吗?`,"agent.delete.loading":"删除中...","agent.delete.no":"否","agent.delete.title":e=>`删除 ${e?.name??""}`,"agent.delete.yes":"是,删除","agent.deleted":e=>`已删除 ${e?.name??""}`,"agent.edit":"编辑","agent.edit.color":"编辑颜色","agent.edit.tools":"编辑工具","agent.editColorTitle":e=>`编辑颜色:${e?.name??""}`,"agent.editTitle":e=>`编辑 ${e?.name??""}`,"agent.empty":"未找到智能体。","agent.noMatches":"未找到匹配的智能体。","agent.footer.back":"Esc 返回","agent.footer.cliBack":"Enter 选择 · ↑↓ 导航 · Esc 返回","agent.footer.cliSelect":"Enter 选择 · ↑↓ 导航 · Esc 关闭","agent.footer.close":"Esc 关闭","agent.footer.deleteConfirm":"Enter 确认,Esc 取消","agent.footer.enterNext":"按 Enter 继续,Esc 返回","agent.footer.generating":"Esc 取消","agent.footer.createLocation":"按 Enter 继续,↑↓ 导航,Esc 取消","agent.footer.createContinue":"按 Enter 继续,↑↓ 导航,Esc 返回","agent.footer.final":"按 Enter 保存,e 保存并编辑,Esc 返回","agent.footer.nav":"↑↓ 导航 · Enter 选择 · Esc 返回","agent.footer.navBack":"↑↓ 导航 · Enter 选择 · Esc 返回","agent.footer.navSelect":"↑↓ 导航 · Enter 选择 · Esc 关闭","agent.footer.viewerBack":"Esc 返回","agent.filePathLabel":"文件路径:","agent.label":"智能体","agent.location":"位置","agent.level.builtin":"内置","agent.level.extension":"扩展","agent.level.project":"项目","agent.level.user":"用户","agent.level.filter":"按智能体级别筛选","agent.manage":"管理","agent.manage.desc":"管理已有智能体","agent.modelLabel":"模型:","agent.overriddenBadge":"(已被项目级智能体覆盖)","agent.readonly":"该智能体是只读的。","agent.select":"请选择一个智能体。","agent.selectAction":"选择操作","agent.descriptionLabel":"描述:","agent.systemPromptLabel":"系统提示词:","agent.level.label":"级别","agent.step":e=>`步骤 ${e?.n??""}`,"agent.tools":"工具","agent.toolsLabel":"工具:","agent.detail.overview":"基本信息","agent.detail.tools":"工具","agent.detail.mcp":"MCP","agent.detail.hooks":"Hooks","agent.detail.systemPrompt":"系统提示词","agent.toolsUpdated":e=>`已更新 ${e?.name??""} 的工具`,"agent.usingCount":e=>`使用中:${e?.count??0} 个智能体`,"agent.view":"查看","agents.closed":"智能体面板已关闭。","agents.title":"智能体","subagent.result":"结果","subagent.tools":e=>`工具 (${e?.count??0})`,"subagent.toolsCount":e=>`${e?.count??0} 个工具`,"subagent.toggleStream":"展开/收起子智能体详情","subagent.creating":"创建中","subagent.pending":"等待中","subagent.running":"运行中","subagent.background":"后台任务","subagent.completed":"已完成","subagent.failed":"失败","subagent.cancelled":"已取消","subagent.paused":"已暂停","subagent.detailsLoading":"正在加载子智能体详情…","subagent.detailsLoadFailed":"子智能体详情加载失败。","agentType.general-purpose":"通用","agentType.explore":"探索","agentType.statusline-setup":"状态栏设置","agentType.review-agent":"代码评审","agentType.test-engineer":"测试工程师","agentType.fork":"分支","timeline.parallelAgents":"并行智能体","timeline.thinking":"思考","timeline.assistantUpdate":"助手更新","timeline.toolCalls":e=>`${e?.count??0} 个工具调用`,"timeline.planUpdate":"计划更新","timeline.statusUpdate":"状态更新","timeline.userTurn":"用户轮次","timeline.planDetail":"计划更新","timeline.parallelAgentsDetail":e=>`${e?.count??0} 个并行智能体`,"timeline.noActivity":"无活动","timeline.sessionTimeline":"会话时间线","timeline.turnPrefix":e=>`第 ${e?.index??0} 轮`,"timeline.currentTurn":"当前轮次","timeline.kind.thought":"思考","timeline.kind.commentary":"助手更新","timeline.kind.tool":"工具调用","timeline.kind.agents":"并行智能体","timeline.kind.plan":"计划更新","timeline.kind.status":"状态更新","timeline.kind.none":"轮次","common.copy":"复制","common.download":"下载","common.downloading":"正在下载…","common.downloadFailed":e=>`下载失败:${e?.message??""}`,"common.open":"打开","common.openFailed":e=>`无法打开链接:${e?.message??""}`,"artifact.openLink":"打开链接","artifact.longDocument":"文件过大,默认展示源码。","artifact.renderFullPreview":"完整排版预览","artifact.registrationFailed":e=>`无法添加导出文件:${e?.message??""}`,"artifact.previewFailed":e=>`无法加载预览:${e?.message??""}`,"artifact.showSource":"显示源码","common.na":"不适用","common.server":"服务器","common.agent":"智能体","common.auto":"自动","common.runtime":"运行时","common.failedToLoad":"加载失败","auth.notSet":"(未设置)","auth.apiKeyPlaceholder":"sk-...","auth.modelsPlaceholder":"模型ID-1, 模型ID-2","model.usingModel":e=>`正在使用${e?.isRuntime?"运行时":""}模型:${e?.modelId??""}`,"mermaid.label":"mermaid","mermaid.errorLabel":"mermaid(错误)","user.uploadedImage":e=>`用户上传的图片 ${e?.index??1}`,"voice.noSpeech":"未检测到语音。","voice.stopDictation":"停止语音输入","voice.transcribing":"正在转录…","voice.starting":"正在启动…","voice.errorRetry":e=>`语音错误 — 点击重试${e?.message?`:${e.message}`:""}`,"voice.noSpeechRetry":"未检测到语音 — 点击重试","voice.startDictation":"开始语音输入","voice.error":"语音错误","resume.failedToLoad":"加载会话失败","toast.dismiss":"关闭通知","toast.dismissShort":"关闭","insight.ready":"Insight 报告已生成!","request.cancelled":"请求已取消。","visionBridge.model":"视觉模型","visionBridge.skipped":e=>`视觉桥接已取消。${e?.egressOccurred===1?`你的图片及提示词/上下文已发送至 ${e?.target??""}。`:""}`,"visionBridge.failed":e=>e?.egressOccurred===1?`视觉桥接(${e?.modelName??""})失败:视觉模型请求失败。你的图片及提示词/上下文已发送至 ${e?.target??""}。图片未被解析。`:`视觉桥接(${e?.target??""})失败:视觉桥接无法运行。图片未被解析。`,"visionBridge.ok":e=>`已通过 ${e?.target??""} 将 ${e?.convertedCount??0} 张图片转换为文本${Number(e?.omittedCount??0)>0?`(已忽略 ${e?.omittedCount??0} 张图片)`:""}。${e?.egressOccurred===1?"你的图片及提示词/上下文已发送至该模型。":""}`,"approval.goal.title":"确认会话目标","approval.goal.overview":"目标概览","approval.goal.full":"完整内容","approval.goal.outcome":"目标","approval.goal.doneWhen":"完成条件","approval.goal.mustNot":"执行边界","approval.goal.budget":"预算","approval.goal.onBlock":"遇到阻塞时","approval.goal.context":"上下文","approval.goal.confirm":"设置并继续","approval.goal.reject":"暂不设置","approval.goal.hint":"设置后将继续执行,并在每轮结束时检查目标进展;遇到阻塞会说明原因。","approval.goal.pending":"正在提交…","approval.goal.failed":"提交失败,请重试。","approval.execQuestion":e=>`允许执行:'${e?.tool??""}'?`,"approval.changeQuestion":"是否继续?","approval.launchAgentQuestion":"启动这个 agent?","approval.explain":"解释","approval.explanation":"命令解释","approval.explaining":"正在解释…","approval.explanationThinking":"思考中…","approval.explanationFailed":"解释失败","approval.reExplain":"重新解释","approval.option.allowOnce":"是,允许一次","approval.option.allowOnceAndSwitchToDefault":"允许一次并切换到默认模式","approval.option.restorePrevious":"是,恢复之前的模式","approval.option.rejectOnce":"拒绝","approval.option.allowAllEdits":"允许所有编辑","approval.option.allowAlwaysProject":"项目内始终允许","approval.option.allowAlwaysUser":"对此用户始终允许","approval.option.allowAlwaysServer":"对此服务始终允许","approval.option.allowAlwaysTool":"对此工具始终允许","assistant.branch":"分叉","assistant.copy":"复制","assistant.dissatisfied":"不满意","assistant.satisfied":"满意","at.category.extensions":"扩展","at.category.extensions.description":"引用已启用扩展","at.category.files":"文件","at.category.files.description":"引用工作区文件","at.files.upload":"上传文件","at.files.upload.description":"上传文件到此文件夹","composer.upload.pending":"等待中","composer.upload.uploading":"上传中","composer.upload.done":"已上传","composer.upload.error":"失败","composer.upload.error.noDaemon":"未连接 Daemon","composer.upload.error.tooLarge":e=>`文件超过 ${e?.limit??""} 上传上限`,"composer.upload.error.tooManyFiles":e=>`另有 ${e?.count??0} 个文件未添加(单批数量上限)`,"composer.upload.cancel":"取消上传","composer.upload.dismiss":"关闭","composer.upload.renamed":"已保存为","composer.upload.drop":"拖放文件","composer.dropChoice.title":e=>`添加拖入的 ${e?.count??0} 个文件`,"composer.dropChoice.description":"可作为当前消息的附件供 Agent 读取,或上传到工作区并插入 @ 引用。","composer.dropChoice.cancel":"取消","composer.dropChoice.upload":"上传到工作区","composer.dropChoice.reference":"添加为附件","composer.dropChoice.moreFiles":e=>`另有 ${e?.count??0} 个文件`,"composerAdd.trigger":"添加到消息","composerMobile.expand":"展开编辑","composerMobile.hideKeyboard":"收起键盘","composerMobile.done":"完成","composerMobile.photos":"照片","composerMobile.camera":"拍照","composerMobile.files":"添加文件附件","composerMobile.commands":"全部命令","composerMobile.searchCommands":"搜索命令","composerMobile.history":"输入历史","composerMobile.previousInput":"上一条输入","composerMobile.nextInput":"下一条输入","composerMobile.stop":"停止","composerMobile.attachments":e=>`已添加附件/图片:${e?.count??0}`,"composerAdd.emptyState":"此处没有可用的添加操作","composerAdd.noResults":"没有结果","composerAdd.loadError":"加载失败","composerAdd.unavailable":"不可用","composerAdd.file.label":"添加文件","composerAdd.file.attachDisabled":"当前无法添加消息附件","composerAdd.file.uploadDisabled":"当前工作区不可上传","composerAdd.referenceFile.label":"引用文件","composerAdd.referenceFile.searchPlaceholder":"搜索工作区文件","composerAdd.extensions.label":"扩展","composerAdd.extensions.empty":"没有已启用的扩展","composerAdd.mcp.label":"MCP","composerAdd.mcp.empty":"没有可用的 MCP 服务","composerAdd.skills.label":"技能","composerAdd.plan.label":"计划模式","composerAdd.plan.description":"先出计划,批准后再执行","composerAdd.plan.busy":"模式切换中","at.category.mcpResources":"MCP 资源","at.category.mcpResources.description":"引用 MCP server 资源","at.menu":"引用菜单","common.back":"返回","common.all":"全部","common.add":"添加","common.cancel":"取消","common.close":"关闭","common.fullscreen":"全屏","common.exitFullscreen":"退出全屏","common.continue":"继续","common.current":"当前","common.disabled":"已禁用","common.enabled":"已启用","common.enterSelect":"回车选择","common.invalid":"无效","common.loading":"加载中...","common.retry":"重试","session.recovery.interrupted_prompt":"上次请求在回答完成前中断。","session.recovery.interrupted_turn":"上次任务已中断,部分工具结果未保存。","session.recovery.degraded_history":"会话历史不完整,无法继续中断的任务。","session.recovery.continue":"继续执行","session.recovery.continuing":"正在继续…","session.recovery.failed":"无法继续此会话。","session.archived":"该会话已归档","session.archivedDescription":"需要先取消归档,才能打开该会话。","session.capabilitiesFailed":"无法加载 Daemon 能力。请重试后再打开该会话。","session.contextConflict":"Standalone 或 Live 会话链接不能同时指定工作区。","session.loadFailed":"会话加载失败","session.notFound":"会话不存在","session.notFoundDescription":"该 Standalone 会话已不存在。","session.resolving":"正在打开会话...","session.standaloneUnavailable":"Standalone 会话不可用","session.standaloneUpgradeRequired":"请升级 Daemon 后再打开 Standalone 会话。","session.stillCreating":"会话仍在创建中,请稍后重试。","session.recoveryPending":"创建可能已成功,但结果尚未确认。为避免重复创建,当前已暂停发送。","session.recoveryChecking":"正在检查预留的会话 ID...","session.recoveryStillCreating":"会话仍在创建中,请稍后再次检查。","session.recoveryAbsent":"预留 ID 对应的会话不存在,可以显式开始一个新会话。","session.recoveryUnknown":"创建结果仍不确定,请再次检查后再开始其他会话。","session.recoveryArchived":"恢复到的会话已归档,请先取消归档。","session.recoveryCheckFailed":"检查会话创建状态失败","session.recoveryBlocksAction":"请先处理待确认的 Standalone 会话状态,再继续操作。","session.checkStatus":"检查状态","session.retryCreation":"开始新会话","session.writerBlocked":"其他 O1-Code 进程或未解决的写入锁可能阻止该会话访问。请在其他进程中关闭它后重试;若仍失败,请先查看本地 daemon 诊断日志再进行恢复。","session.directoryRecreated":"会话记录已恢复,但之前私有目录中的文件未能恢复。","session.directoryMissing":"该会话的私有工作目录缺失,请修复后再发送消息。","session.directoryCompromised":"该私有工作目录存在安全风险,无法自动修复。请先导出会话记录,再删除该会话。","session.repair":"修复目录","session.repairing":"修复中...","session.repairFailed":"修复私有工作目录失败","session.repairSucceeded":"私有工作目录已修复。","session.unarchive":"取消归档","session.unarchiveFailed":"取消归档失败。","session.workspaceActionUnavailable":"该操作仅适用于项目会话。","common.save":"保存","common.navigate":"↑↓ 导航","common.next":"下一步","common.noResults":"无结果","common.previous":"上一步","common.expand":"展开","common.collapse":"收起","common.refresh":"刷新","common.search":"搜索","common.valid":"有效","common.clients":e=>`${e?.count??0} 个客户端`,"agent.count":e=>`${e?.count??0} 个智能体`,"askUser.submit":"提交","askUser.submitting":"提交中...","askUser.submitFailed":"提交回答失败","askUser.submitOptionUnavailable":"提交选项不可用","askUser.ignore":"忽略","askUser.multiHint":"可多选","askUser.progress":e=>`${e?.current??0}/${e?.total??0} 个问题`,"askUser.selectAnswer":"选择一个答案","askUser.typePlaceholder":"输入内容...","askUser.shortcuts.previous":"← 上一步","askUser.shortcuts.optionsSingle":"↑↓ 选择 · Enter 提交","askUser.shortcuts.optionsNext":"↑↓ 选择 · Enter 下一步","askUser.shortcuts.optionsFinal":"↑↓ 选择 · Enter 提交","askUser.shortcuts.multiSingle":"↑↓ 移动 · Space 选中/取消 · Enter 选中并提交","askUser.shortcuts.multiNext":"↑↓ 移动 · Space 选中/取消 · Enter 选中并下一步","askUser.shortcuts.multiFinal":"↑↓ 移动 · Space 选中/取消 · Enter 选中并提交","askUser.shortcuts.customTrigger":"↑↓ 选择 · Enter 编辑","askUser.shortcuts.customTriggerMulti":"↑↓ 移动 · Enter 编辑","askUser.shortcuts.inputEmpty":"输入答案 · Esc 退出编辑","askUser.shortcuts.inputSingle":"Enter 提交 · Esc 退出编辑","askUser.shortcuts.inputNext":"Enter 下一步 · Esc 退出编辑","askUser.shortcuts.inputFinal":"Enter 提交 · Esc 退出编辑","copy.failedFallback":"复制到剪贴板失败","copy.inlineLatexMissing":"最后一条 AI 输出中没有匹配的行内 LaTeX 表达式。","copy.latexMissing":"最后一条 AI 输出中没有匹配的 LaTeX 块。","copy.noOutput":"历史记录中没有可复制的输出","copy.noText":"最后一条 AI 输出没有可复制的文本。","copy.codeMissing":"最后一条 AI 输出中没有匹配的代码块。","copy.outputCopied":"已复制最后一条输出到剪贴板","copy.toClipboard":e=>`${e?.label??"内容"} 已复制到剪贴板`,"code.copy":"复制","code.copied":"已复制!","echartsChart.noData":"暂无数据","echartsChart.tableNotice":e=>{const t=Number(e?.omittedRows??0),n=Number(e?.omittedColumns??0);return t>0&&n>0?`显示 ${e?.visibleRows??0}/${e?.totalRows??0} 行,${e?.visibleColumns??0}/${e?.totalColumns??0} 列`:n>0?`显示 ${e?.visibleColumns??0}/${e?.totalColumns??0} 列`:`显示 ${e?.visibleRows??0}/${e?.totalRows??0} 行`},"echartsChart.rendering":"正在渲染图表","echartsChart.renderFailed":"图表渲染失败。","echartsChart.viewMode":"视图模式","echartsChart.showChart":"显示图表","echartsChart.showData":"显示数据","echartsChart.chart":"图表","echartsChart.data":"数据","markdownTable.blank":"(空白)","markdownTable.column":e=>`第 ${e?.index??""} 列`,"markdownTable.rows":e=>`共${e?.count??0}行`,"markdownTable.rowsFiltered":e=>`${e?.visible??0}/${e?.total??0} 行`,"markdownTable.hint":"点击表头排序,点击 ▾ 打开筛选。","markdownTable.filtersActive":e=>`${e?.count??0} 个筛选`,"markdownTable.selection.selected":"已选","markdownTable.selection.nonEmpty":"非空","markdownTable.selection.numeric":"数值","markdownTable.selection.sum":"求和","markdownTable.selection.average":"平均","markdownTable.selection.min":"最小","markdownTable.selection.max":"最大","markdownTable.copyTsv":"复制 TSV","markdownTable.copyTsvHint":"复制为 TSV,可粘贴到 Excel 等表格应用","markdownTable.copyVisible":"复制表格","markdownTable.customColumns":"自定义列","markdownTable.customColumns.tableSection":"显示在表格列的信息","markdownTable.customColumns.detailSection":"显示在折叠面板的信息","markdownTable.customColumns.toggleAllTable":"切换全部表格列","markdownTable.customColumns.toggleAllDetails":"切换全部折叠面板字段","markdownTable.customColumns.reset":"重置","markdownTable.customColumns.noDetails":"未选择折叠面板字段","markdownTable.freezeFirstColumn":"冻结首列","markdownTable.unfreezeFirstColumn":"取消冻结首列","markdownTable.densityLabel":"表格密度","markdownTable.densityCurrent":e=>`${e?.density??""}密度`,"markdownTable.density":e=>`密度:${e?.density??""}`,"markdownTable.density.standard":"标准","markdownTable.density.compact":"紧凑","markdownTable.density.comfortable":"舒适","markdownTable.expandLongText":"展开文本","markdownTable.collapseLongText":"收起文本","markdownTable.emptyValue":"(空白)","markdownTable.hideColumn":"隐藏列","markdownTable.showHiddenColumns":e=>`显示 ${e?.count??0} 个隐藏列`,"markdownTable.moveColumn":e=>`移动 ${e?.column??""}`,"markdownTable.resizeColumn":e=>`调整 ${e?.column??""} 列宽`,"markdownTable.rowDetails":"详情","markdownTable.rowDetailsAria":e=>`查看第 ${e?.index??""} 行详情`,"markdownTable.closeRowDetailsAria":e=>`收起第 ${e?.index??""} 行详情`,"markdownTable.detailsHeader":"单行详情","markdownTable.cellDialogTitle":"当前字段值","markdownTable.copyCell":"复制","markdownTable.close":"关闭","markdownTable.actions":"操作","markdownTable.sortByColumn":e=>`按 ${e?.column??""} 排序`,"markdownTable.sortByColumnAsc":e=>`${e?.column??""} 已升序排序`,"markdownTable.sortByColumnDesc":e=>`${e?.column??""} 已降序排序`,"markdownTable.filterColumn":e=>`筛选 ${e?.column??""}`,"markdownTable.empty":"此表格没有数据。","markdownTable.emptyFiltered":"没有符合筛选条件的行。","markdownTable.sort.asc":"升序排序","markdownTable.sort.desc":"降序排序","markdownTable.sort.clear":"清除排序","markdownTable.filter.searchPlaceholder":"搜索筛选值","markdownTable.filter.searchAria":e=>`搜索 ${e?.column??""}`,"markdownTable.filter.selectVisible":"全选当前结果","markdownTable.filter.optionLimit":e=>`已显示前 ${e?.count??0} 项,请搜索缩小范围`,"markdownTable.filter.noOptions":"没有匹配项","markdownTable.filter.custom":"自定义筛选","markdownTable.filter.numberAria":e=>`数字筛选 ${e?.column??""}`,"markdownTable.filter.textAria":e=>`文本筛选 ${e?.column??""}`,"markdownTable.filter.numberPlaceholder":"数值","markdownTable.filter.toPlaceholder":"到","markdownTable.filter.textPlaceholder":"输入筛选条件","markdownTable.filter.reset":"重置","markdownTable.filter.cancel":"取消","markdownTable.filter.confirm":"确认","markdownTable.filter.text.contains":"包含","markdownTable.filter.text.equals":"等于","markdownTable.filter.text.notEquals":"不等于","markdownTable.filter.text.startsWith":"开头是","markdownTable.filter.text.endsWith":"结尾是","markdownTable.filter.number.gt":"大于","markdownTable.filter.number.gte":"大于等于","markdownTable.filter.number.lt":"小于","markdownTable.filter.number.lte":"小于等于","markdownTable.filter.number.between":"区间","mermaid.rendering":"正在渲染图表...","mermaid.viewCode":"</>","mermaid.viewDiagram":"⊞","mermaid.zoomIn":"+","mermaid.zoomOut":"−","mermaid.zoomReset":"↺","contextUsage.active":"已激活","contextUsage.autocompactBuffer":"自动压缩缓冲区","contextUsage.bodyLoaded":"已加载正文","contextUsage.builtinTools":"内置工具","contextUsage.contextWindow":"上下文窗口","contextUsage.detailHint":"运行 /context detail 查看逐项明细。","contextUsage.estimatedOverhead":"基础开销估算","contextUsage.estimatedUntilProviderUsage":"Token 使用量为估算值,直到收到服务商返回的使用量。","contextUsage.free":"空闲","contextUsage.memoryFiles":"Memory 文件","contextUsage.messages":"消息","contextUsage.startupContext":"启动上下文","contextUsage.unattributed":"未归因","contextUsage.cachedPrefix":"缓存前缀","contextUsage.mcpTools":"MCP 工具","contextUsage.model":"模型","contextUsage.noSession":"当前还没有会话。请先发送第一条消息,再查看上下文使用情况。","contextUsage.usageUnavailable":"当前上下文用量暂不可用。下方仅为基础开销估算,不含对话消息。","contextUsage.overLimit":"上下文已超过限制!请使用 /compress 或 /clear 减少占用。","contextUsage.skills":"Skills","contextUsage.systemPrompt":"系统提示词","contextUsage.title":"上下文使用情况","contextUsage.tokens":"tokens","contextUsage.used":"已用","contextUsage.accessibleUsage":e=>`已用 ${e?.used} / ${e?.total} tokens`,"contextUsage.viewDetails":"查看明细","contextUsage.viewInConversation":"点击在对话中查看上下文组成。","daemon.title":"Daemon 状态","daemon.connection.title":"远程连接","daemon.connection.target":"当前目标","daemon.connection.state":"连接状态","daemon.connection.address":"Daemon 地址","daemon.connection.token":"Bearer token(可选)","daemon.connection.connect":"连接","daemon.connection.add":"添加连接","daemon.connection.saved":"已连接的计算机","daemon.connection.forget":e=>`移除 ${e?.address}`,"daemon.connection.invalid":"请输入有效的 HTTP 或 HTTPS origin。","daemon.connection.notReady":"Daemon 未接受该连接,已保存的凭据未被修改。","daemon.connection.authFailed":"Daemon 拒绝了该 token,已保存的凭据未被修改。","daemon.connection.reloadUnavailable":"浏览器存储不可用,因此新 token 无法应用到当前连接。","daemon.connection.switchUnavailable":"浏览器存储不可用,因此无法把 token 带到该 daemon。","daemon.connection.status.idle":"空闲","daemon.connection.status.connecting":"连接中","daemon.connection.status.adding":"添加中","daemon.connection.status.connected":"已连接","daemon.connection.status.error":"错误","daemon.details.loading":"正在加载诊断信息...","daemon.details.failed":"诊断信息加载失败。","daemon.refresh":"刷新","daemon.loading":"正在加载 Daemon 状态...","daemon.loadFailed":"加载 Daemon 状态失败","daemon.updatedAt":e=>`更新于 ${e?.time??""}`,"daemon.none":"无","daemon.level.ok":"正常","daemon.level.warning":"警告","daemon.level.error":"错误","daemon.level.unavailable":"不可用","daemon.issues.title":"问题","daemon.overview.title":"Daemon","daemon.overview.version":"版本","daemon.overview.pid":"PID","daemon.overview.mode":"模式","daemon.overview.uptime":"运行时长","daemon.overview.workspace":"工作区","daemon.runtime.title":"运行时","daemon.runtime.activeSessions":"活跃会话","daemon.runtime.activePrompts":"执行中的 prompt","daemon.runtime.idle":"空闲时长","daemon.runtime.noActivity":"暂无活动","daemon.runtime.pendingPermissions":"待审批权限","daemon.runtime.permissionPolicy":"权限策略","daemon.runtime.channel":"ACP 通道","daemon.runtime.channelLive":"在线","daemon.runtime.channelDown":"离线","daemon.runtime.startingUp":"运行时启动中...","daemon.runtime.startFailed":"运行时启动失败","daemon.runtime.memory":"内存 (RSS / 堆)","daemon.transport.title":"传输","daemon.transport.restSse":"REST SSE 流","daemon.transport.acpDisabled":"ACP 传输未启用","daemon.transport.acpConnections":"ACP 连接","daemon.transport.acpStreams":"ACP 流 (会话/SSE/WS)","daemon.transport.pendingRequests":"待处理客户端请求","daemon.transport.rateLimitRejected":"限流拒绝数","daemon.security.title":"安全","daemon.security.token":"Bearer 令牌","daemon.security.requireAuth":"强制鉴权","daemon.security.loopback":"回环绑定","daemon.security.allowOrigin":"允许来源","daemon.security.shell":"会话 Shell 命令","daemon.security.configured":"已配置","daemon.security.notConfigured":"未配置","daemon.limits.title":"限制","daemon.limits.unlimited":"无限制","daemon.limits.maxSessions":"最大会话数","daemon.limits.maxPendingPrompts":"每会话最大待处理 prompt 数","daemon.limits.maxConnections":"最大监听连接数","daemon.limits.eventRing":"事件环大小","daemon.limits.promptDeadline":"Prompt 截止时间","daemon.limits.sessionIdle":"会话空闲超时","daemon.capabilities.title":"能力","daemon.capabilities.titleCount":e=>`能力 (${e?.count??0})`,"daemon.full.sessions.title":"会话","daemon.full.sessions.empty":"无活跃会话","daemon.full.session.pendingPrompts":e=>`${e?.count??0} 个待处理 prompt`,"daemon.full.session.pendingPermissions":e=>`${e?.count??0} 个待审批权限`,"daemon.full.session.prompting":"执行中","daemon.full.workspace.title":"工作区诊断","daemon.full.workspace.empty":"未上报工作区诊断","daemon.full.acp.title":"ACP 连接","daemon.tab.overview":"概览","daemon.tab.usage":"用量","daemon.tab.metrics":"指标","daemon.tab.diagnostics":"诊断","daemon.charts.title":"指标图表","daemon.charts.empty":"正在采集指标…首次采样后显示图表。","daemon.charts.concurrency":"并发","daemon.charts.activePrompts":"执行中任务","daemon.charts.activeSessions":"会话","daemon.charts.requests":"请求数","daemon.charts.reqTotal":"总数","daemon.charts.reqErrors":"错误","daemon.charts.apiLatency":"API 耗时","daemon.charts.promptLatency":"Prompt 延迟","daemon.charts.queueWait":"排队等待","daemon.charts.promptDuration":"端到端","daemon.charts.eventLoop":"事件循环延迟","daemon.charts.eventLoopLag":"延迟 p99","daemon.charts.queuedPrompts":"排队中","daemon.charts.reqRejected":"限流拒绝","daemon.charts.llmLatency":"LLM 耗时","daemon.charts.apiHealth":"模型 API 健康","daemon.charts.apiErrors":"API 报错","daemon.charts.apiRetries":"重试","daemon.charts.cpu":"CPU","daemon.charts.pipe":"IPC 管道","daemon.charts.pipeIn":"接收","daemon.charts.pipeOut":"发送","daemon.charts.connections":"连接数","daemon.charts.cpuDaemon":"Daemon","daemon.charts.cpuChild":"子进程","daemon.charts.rssDaemon":"Daemon RSS","daemon.charts.rssChild":"子进程 RSS","daemon.charts.memory":"内存","daemon.charts.heap":"堆","daemon.charts.tokens":"Token 消耗","daemon.charts.tokensIn":"输入","daemon.charts.tokensOut":"输出","daemon.charts.peak":"峰值","daemon.charts.concurrency.help":"每次采样的实时负载:正在执行的 prompt、排队中(已接受未派发)、活跃会话数。排队数超过执行数即出现背压。","daemon.charts.requests.help":"每个窗口内客户端↔守护进程的 HTTP 流量,并非模型调用。总请求数、返回 4xx/5xx 的数量、被限流拒绝的数量。","daemon.charts.apiLatency.help":'客户端↔守护进程 HTTP 请求耗时(p50/p95)——反映守护进程本身快慢,而非模型。与「LLM 耗时」对比可区分是"我们慢"还是"模型慢"。',"daemon.charts.llmLatency.help":"每轮模型 API 往返耗时(守护进程→模型→守护进程),p50/p95。属模型侧延迟,区别于上面的 HTTP「API 耗时」。","daemon.charts.apiHealth.help":"服务商侧 LLM 失败。每次失败尝试 = 1 次报错,每次自动退避 = 1 次重试。瞬时 429/5xx 通常被重试吸收(报错 ≈ 重试);报错高于重试说明调用彻底失败。","daemon.charts.promptLatency.help":"每个 prompt(任务):派发前在会话队列中的等待 p95,以及端到端执行 p95。等待升高即背压信号。","daemon.charts.eventLoop.help":"守护进程事件循环延迟 p99——CPU 饱和 / 阻塞信号。延迟高说明守护进程被拖住,一切都会变慢。","daemon.charts.cpu.help":"每次采样的 CPU 占用(占全部核心百分比):守护进程,以及运行实际 LLM/工具的 ACP 子进程。子进程 0% 表示无子进程运行。","daemon.charts.memory.help":"每次采样的常驻内存:守护进程 RSS、守护进程 V8 堆、ACP 子进程 RSS。若持续增长可能是内存泄漏。","daemon.charts.pipe.help":"每个窗口内经 stdio 管道与 ACP 子进程收发的字节数。持续偏大说明守护进程与子进程间帧交互频繁。","daemon.charts.connections.help":"每次采样的客户端传输连接:REST/SSE 流、ACP WebSocket 流、ACP 连接数。","daemon.charts.tokens.help":"每个窗口内计入模型轮次的输入(prompt)与输出(completion)token——随时间的模型消耗。","daemon.usage.today":"今日","daemon.usage.period7d":"7天","daemon.usage.period30d":"30天","daemon.usage.rangeWeek":"近 7 天","daemon.usage.rangeMonth":"近 30 天","daemon.usage.rangeGroup":"统计周期","daemon.usage.tokensConsumed":"tokens 消耗","daemon.usage.sessions":"会话","daemon.usage.requests":"请求","daemon.usage.tools":"工具","daemon.usage.changes":"改动","daemon.usage.breakdownTitle":"Token 拆分","daemon.usage.inputTokens":"输入 tokens","daemon.usage.inputHint":"请求 + 缓存读取","daemon.usage.outputTokens":"输出 tokens","daemon.usage.outputHint":"响应 + 推理","daemon.usage.cacheRead":"缓存读取","daemon.usage.cacheHint":"缓存读取占比","daemon.usage.heatmapTitle":"Token 热力图","daemon.usage.heatmapSub":e=>`最近 ${e?.months??12} 个月 · 每日 token 汇总`,"daemon.usage.low":"少","daemon.usage.high":"多","daemon.usage.dowMon":"一","daemon.usage.dowWed":"三","daemon.usage.dowFri":"五","daemon.usage.empty":"暂无 token 使用记录。","daemon.usage.loading":"加载用量中…","daemon.usage.failed":"加载用量失败","daemon.usage.cellTokens":e=>`${e?.date??""} · Tokens: ${e?.tokens??"0"} · Cache: ${e?.cache??0}%`,"daemon.usage.rangeWordToday":"今日","daemon.usage.rangeWordWeek":"7 天","daemon.usage.rangeWordMonth":"30 天","daemon.usage.modelShareTitle":"模型份额","daemon.usage.modelShareSub":"token 份额 · 浅绿表示缓存读取","daemon.usage.modelMeta":e=>`${e?.tokens??"0"} tokens · 缓存 ${e?.cache??0}%`,"daemon.usage.skillTitle":"技能调用","daemon.usage.skillSub":"技能名 / 次数","daemon.usage.skillName":"技能名","daemon.usage.skillCount":"次数","daemon.usage.dailyTokensTitle":"Tokens","daemon.usage.dailyTokensSub":"每日 token 总量","daemon.usage.dailySessionsTitle":"会话","daemon.usage.dailySessionsSub":"每日活跃会话数","delete.cannotCurrent":"无法删除当前活动会话。","delete.action":"删除","delete.deleted":"会话已删除。","delete.deletedCount":e=>`已删除 ${e?.count??0} 个会话。`,"delete.deleting":"删除中...","delete.failed":e=>`删除会话失败。${e?.reason?` ${e.reason}`:""}`,"delete.footer":"↑↓ 导航 · Space 选择 · Enter 删除 · Esc 取消","delete.noMatch":e=>`没有匹配 "${e?.query??""}" 的会话`,"delete.none":"没有可删除的会话","delete.allFailed":e=>`删除 ${e?.count??0} 个会话失败: ${e?.reason??"未知错误"}`,"delete.nonRemoved":"没有会话被删除。","delete.notFound":"会话未找到,可能已被删除。","delete.partialFail":e=>`已删除 ${e?.removed??0} 个,${e?.failed??0} 个失败: ${e?.detail??"未知错误"}`,"delete.matches":e=>`${e?.count??0} 个匹配`,"delete.pressSearch":"按 / 搜索;Space 选择;Enter 删除","delete.selected":e=>`已选 ${e?.count??0} 个`,"delete.title":"删除会话","time.justNow":"刚刚","time.minutesAgo":e=>`${e?.count??0} 分钟前`,"time.hoursAgo":e=>`${e?.count??0} 小时前`,"time.daysAgo":e=>`${e?.count??0} 天前`,"dialog.footer.close":"Esc 关闭","dialog.footer.confirmCancel":"Enter 确认 · Esc 取消","release.cannotCurrent":"不能释放当前活动会话。","release.action":"释放","release.released":"会话已释放。","release.failed":e=>`释放会话失败。${e?.reason?` ${e.reason}`:""}`,"release.footer":"↑↓ 导航 · Enter 释放 · Esc 取消","release.inactive":"只有活跃的 live session 才能释放。","release.inactiveBadge":"非活跃","release.noMatch":e=>`没有匹配 "${e?.query??""}" 的会话`,"release.matches":e=>`${e?.count??0} 个匹配`,"release.none":"没有可释放的 live session","release.pressSearch":"按 / 搜索;Enter 释放选中的 live session","release.releasing":"释放中...","release.title":"释放会话","dialog.footer.menu":"Esc 返回菜单","dialog.footer.mcpServers":"↑↓ 导航 · Enter 查看详情 · r 刷新 · Esc 关闭","dialog.footer.mcpSelect":"↑↓ 导航 · Enter 选择 · Esc 返回","dialog.footer.modelFast":"↑↓ 导航 · / 搜索 · c 自定义 · Enter 设置 fast model · Esc 取消","dialog.footer.navSelectCancel":"↑↓ 导航 · Enter 选择 · Esc 取消","dialog.footer.navSelectClose":"↑↓ 导航 · Enter 选择 · Esc 关闭","dialog.footer.navSelectMenu":"↑↓ 导航 · Enter 选择 · Esc 返回菜单","dialog.footer.navOpenClose":"↑↓ 导航 · Enter 打开 · Esc 关闭","dialog.footer.navOpenMenu":"↑↓ 导航 · Enter 打开 · Esc 返回菜单","dialog.footer.back":"Esc 返回","dialog.footer.backClose":"Esc 关闭","dialog.footer.saveClose":"↑↓ 切换输入框 · ⌘/Ctrl+Enter 保存 · Esc 关闭","dialog.footer.saveMenu":"↑↓ 切换输入框 · ⌘/Ctrl+Enter 保存 · Esc 返回菜单","dialog.footer.search":"输入搜索 · Enter 确认 · Esc 清空","dialog.footer.select":"Enter 选择","editor.escClearHint":"再按一次 Esc 清空","editor.hintCommands":"命令","editor.hintFiles":"文件","editor.hintNext":"下一条","editor.hintPrev":"上一条","editor.hintSearch":"搜索","editor.noHistory":"没有匹配的历史记录","editor.placeholder":"输入消息或 @ 文件路径","history.loadingEarlier":"正在加载更早消息…","history.openEarlier":"打开更早历史","history.loadEarlier":"加载更早记录","history.loadNewer":"加载较新记录","history.returnLatest":"返回最新","history.viewUnavailable":"会话正在重连或修复记录,历史暂时不可用。","history.snapshotView":"历史快照 · 只读","history.viewError":"暂时无法加载此段记录。请移动阅读位置后重试,或返回最新。","history.capacityReached":"已达到历史显示上限,更早消息仍保存在会话中。","history.paginationError":"无法加载更早的历史记录。","history.retry":"重试","editor.shellPlaceholder":"请输入终端命令","editor.send":"发送消息","editor.imagesSkipped":e=>`已跳过 ${e?.count??0} 个不可读取的文件。`,"editor.imagesReadFailed":e=>`${e?.count??0} 个文件读取失败。`,"editor.imagesTooLarge":e=>`${e?.count??0} 个文件超过附件大小限制。`,"editor.pastedTextShowInEditor":"显示到输入框","editor.connectionDisconnected":"连接已中断,请在恢复后重试。","editor.sessionLoading":"会话正在加载,请稍后再发送。","editor.processing":"处理中。新消息会进入队列。","editor.searchHint":"ctrl+r 下一条 · tab 采纳 · enter 发送 · esc 取消","editor.searchLabel":"历史搜索:","editor.searchPlaceholder":"输入以搜索…","editor.newSessionSuggestionTitle":"这条消息看起来像新话题","editor.newSessionSuggestionStart":"在新会话发送","editor.btwSuggestionTitle":"这条消息看起来像顺带一问","editor.btwSuggestionSend":"用 BTW 提问","quickActions.extensions":"扩展","quickActions.help":"帮助","quickActions.auth":"认证","quickActions.settings":"设置","quickActions.copy":"复制输出","quickActions.shellMode":"Shell模式","quickActions.exitShellMode":"退出Shell","session.missing":"当前会话不存在","session.new":"新建会话","workspace.loadFailed":"工作区加载失败","workspace.notFound":"工作区不存在","workspace.notFoundDescription":"此工作区可能已被移除,或链接已经失效。","workspace.loadFailedDescription":"无法连接工作区服务,请检查守护进程后重试。","scheduledTasks.title":"定时任务","scheduledTasks.subtitle":"按计划自动执行任务,也可随时手动触发。","scheduledTasks.loading":"加载中…","scheduledTasks.count":e=>`${e?.count??0} 个任务`,"scheduledTasks.refresh":"刷新","scheduledTasks.new":"新建定时任务","scheduledTasks.createViaChat":"通过聊天创建","scheduledTasks.chatStarter":"帮我创建一个长期保留的定时任务,我想:","scheduledTasks.name":"名称","scheduledTasks.workspace":"工作区","scheduledTasks.session.label":"会话","scheduledTasks.session.dedicated":"独立任务会话","scheduledTasks.session.current":"当前会话","scheduledTasks.session.dedicatedHint":"任务运行记录保存在单独创建的会话中。","scheduledTasks.session.currentHint":"后续运行继续在当前打开的会话中。","scheduledTasks.session.currentUnsupported":"当前 daemon 不支持绑定当前会话。","scheduledTasks.session.currentUnavailable":"请先打开一个已有会话。","scheduledTasks.session.currentBusy":"请等待当前执行或待处理交互结束。","scheduledTasks.session.currentIneligible":"此类会话不能绑定定时任务。","scheduledTasks.session.currentWorkspaceMismatch":"当前会话属于另一个工作区。","scheduledTasks.session.currentAlreadyBound":"当前会话已绑定其他定时任务。","scheduledTasks.taskId":"任务 ID","scheduledTasks.schedule":"计划","scheduledTasks.type":"类型","scheduledTasks.status":"状态","scheduledTasks.namePlaceholder":"可选 —— 默认取提示词","scheduledTasks.prompt":"提示词","scheduledTasks.promptPlaceholder":"这个任务要做什么?","workflowRuns.title":"工作流","workflowRuns.saved":"已保存","workflowRuns.active":"运行中","workflowRuns.history":"历史","workflowRuns.create":"新建","workflowRuns.refresh":"刷新","workflowRuns.loading":"正在加载工作流…","workflowRuns.loadFailed":"工作流加载失败。","workflowRuns.noSession":"请先打开本项目中的任一会话,再查看工作流记录。","workflowRuns.emptyActive":"当前没有运行中的工作流。","workflowRuns.emptyHistory":"暂时没有已保存的工作流记录。","workflowRuns.emptySaved":"还没有可复用的工作流。","workflowRuns.emptySavedHint":"可以点击“新建”让 O1-Code 创建、在终端中保存一次已完成的运行,或在 .o1-code/workflows 下添加 .js 文件。","workflowRuns.project":"项目","workflowRuns.user":"用户","workflowRuns.projectDescription":"仅在当前项目中可用","workflowRuns.userDescription":"在所有项目中可用","workflowRuns.extension":"扩展","workflowRuns.extensionDescription":"由已安装的扩展提供","workflowRuns.detail.toggle":e=>`查看 ${e?.name??""} 的详情`,"workflowRuns.detail.loading":"正在加载工作流定义…","workflowRuns.detail.unavailable":"这个工作流定义已不可用。","workflowRuns.detail.loadFailed":"无法读取工作流定义。","workflowRuns.detail.retry":"重试","workflowRuns.detail.noDescription":"这个工作流没有声明描述。","workflowRuns.detail.whenToUse":"适用场景","workflowRuns.detail.metaError":e=>`meta 块无法解析:${e?.error??""}`,"workflowRuns.detail.phases":e=>`阶段(${e?.count??0})`,"workflowRuns.detail.recentRuns":"最近运行","workflowRuns.detail.noRuns":"当前会话还没有运行记录。","workflowRuns.detail.viewRuns":e=>`在历史中查看 ${e?.count??0} 次运行`,"workflowRuns.detail.showSource":"查看源码","workflowRuns.detail.hideSource":"收起源码","workflowRuns.run":"运行","workflowRuns.starting":"正在启动…","workflowRuns.runNamed":e=>`运行 ${e?.name??""}`,"workflowRuns.startFailed":"工作流未能启动,请刷新后重试。","scheduledTasks.reference.extension":"扩展","scheduledTasks.reference.skill":"技能","scheduledTasks.reference.mcp":"MCP","scheduledTasks.referencePicker":"引用选择器","scheduledTasks.reference.remove":"删除","scheduledTasks.reference.loading":"加载中…","scheduledTasks.reference.empty":"暂无可选项。","scheduledTasks.frequency":"频率","scheduledTasks.freq.daily":"每天","scheduledTasks.freq.weekdays":"工作日","scheduledTasks.freq.weekly":"每周","scheduledTasks.freq.hourly":"每小时","scheduledTasks.freq.minutes":"每 N 分钟","scheduledTasks.freq.custom":"自定义(cron)","scheduledTasks.time":"时间","scheduledTasks.weekday":"星期","scheduledTasks.interval":"分钟","scheduledTasks.cron":"Cron 表达式","scheduledTasks.weekdayNames":"周日,周一,周二,周三,周四,周五,周六","scheduledTasks.human.daily":e=>`每天 ${e?.time??""}`,"scheduledTasks.human.weekdays":e=>`工作日 ${e?.time??""}`,"scheduledTasks.human.weekly":e=>`每${e?.day??""} ${e?.time??""}`,"scheduledTasks.human.hourly":e=>`每小时 第 ${e?.min??"00"} 分`,"scheduledTasks.human.everyMinutes":e=>`每 ${e?.n??""} 分钟`,"scheduledTasks.never":"尚未运行","scheduledTasks.repeats":"重复","scheduledTasks.runsOnce":"仅一次","scheduledTasks.lastFired":e=>`上次运行:${e?.when??""}`,"scheduledTasks.runNow":"立即运行","scheduledTasks.enable":"启用","scheduledTasks.disable":"停用","scheduledTasks.delete":"删除","scheduledTasks.deleteConfirmTitle":"删除定时任务","scheduledTasks.deleteConfirm":e=>`确定删除定时任务「${e?.name??""}」?`,"scheduledTasks.deletedSnapshot":"这个定时任务已被删除,下面显示的是创建时的快照。","scheduledTasks.sessionScopedSnapshot":"这是一个会话内定时任务,下面显示的是创建时的快照。","scheduledTasks.empty":"还没有定时任务,创建一个开始吧。","scheduledTasks.create":"创建","scheduledTasks.creating":"创建中…","scheduledTasks.cancel":"取消","scheduledTasks.error.invalidSchedule":"计划无效","scheduledTasks.error.workspaceUnavailable":"所选工作区不可用或不受信任","scheduledTasks.error.emptyPrompt":"提示词不能为空","scheduledTasks.error.promptTooLong":e=>`提示词超过 ${e?.max??1e5} 字符限制`,"scheduledTasks.error.goalActive":"目标运行期间无法启动定时任务。","scheduledTasks.error.toggleFailed":"更新任务失败","scheduledTasks.error.deleteFailed":"删除任务失败","scheduledTasks.edit":"编辑","scheduledTasks.editTitle":"编辑定时任务","scheduledTasks.save":"保存","scheduledTasks.saving":"保存中…","scheduledTasks.runHistory":e=>`运行记录(${e?.count??0})`,"scheduledTasks.viewHistory":e=>`查看对话(${e?.count??0})`,"scheduledTasks.viewHistoryEmpty":"查看对话","scheduledTasks.viewHistoryHint":"打开该任务的会话查看运行详情","scheduledTasks.runKind.catchUp":"补跑","scheduledTasks.runKind.manual":"手动","scheduledTasks.runKind.withheld":"已跳过","scheduledTasks.runKind.sessionDispatchFailed":"新建会话失败,未运行","scheduledTasks.runKind.sessionDispatchFallback":"新建会话失败,已在任务会话中运行","scheduledTasks.openRunSession":"打开本次运行会话","scheduledTasks.runContext.title":"定时任务运行","scheduledTasks.runContext.taskId":"任务 ID","scheduledTasks.runContext.schedule":"计划","scheduledTasks.runContext.triggeredAt":"触发于","scheduledTasks.runContext.trigger.scheduled":"定时触发","scheduledTasks.runContext.trigger.manual":"手动运行","scheduledTasks.error.runFailed":"记录运行失败","scheduledTasks.error.oneShotConsumedButFailed":"任务已删除,但提示词未能送达——它没有运行。请重新创建后重试。","scheduledTasks.dueNow":"即将运行","scheduledTasks.nextRunTooltip":e=>`下次运行:${e?.when??""}`,"scheduledTasks.dur.d":"天","scheduledTasks.dur.h":"小时","scheduledTasks.dur.m":"分","scheduledTasks.dur.s":"秒","scheduledTasks.runIn":"运行于","scheduledTasks.sessionMode.perRun":"每次新会话","scheduledTasks.sessionMode.persistent":"固定会话","scheduledTasks.sessionMode.perRun.hint":"每次运行都创建独立会话,使用干净的上下文。","scheduledTasks.sessionMode.persistent.hint":"所有运行都继续使用同一个任务会话。","scheduledTasks.model":"模型","scheduledTasks.model.workspaceDefault":"工作区默认模型","scheduledTasks.model.hint":"创建每次运行的新会话时应用所选模型。","scheduledTasks.group":"会话分组","scheduledTasks.group.none":"不分组","scheduledTasks.group.create":"新建分组…","scheduledTasks.group.name":"新分组名称","scheduledTasks.group.color":"分组颜色","scheduledTasks.group.hint":"每次运行产生的会话都会放入这个分组。","scheduledTasks.group.nameRequired":"请输入新分组名称。","scheduledTasks.routing.loading":"正在加载模型和分组…","scheduledTasks.condition":"前置条件(可选)","scheduledTasks.conditionPlaceholder":"例如:检查昨天以来 main 分支有没有新提交。如果没有,则本次不应执行。","scheduledTasks.condition.hint":'每次触发前,先在本任务自己的会话中检查该条件。只有判定为"是",才会新建会话执行命令;否则跳过本次运行。',"scheduledTasks.condition.cardPrefix":"若:","turnOutputs.filesEdited":e=>`已编辑 ${e?.count??0} 个文件`,"turnOutputs.imagePreview":"图片预览","turnOutputs.viewChanges":"查看更改","turnOutputs.review":"文件更改","turnOutputs.reviewLatest":"查看最近文件修改","codeReview.authoritativeVerdict":"权威裁决","codeReview.targetEffort":e=>`目标:${e?.target??""} · 强度:${e?.effort??""}`,"codeReview.openReport":"打开 Markdown 报告","codeReview.loadingReport":"正在加载 Markdown 报告…","codeReview.back":"返回审查结果","codeReview.reviewCounts":"审查计数","codeReview.total":"总计","codeReview.confidence":e=>`${e?.value??""} 置信度`,"codeReview.held":"暂缓","codeReview.heldByMeasurement":"经基线测量暂缓,未保留 Critical","codeReview.caps":"裁决上限","codeReview.none":"无","codeReview.severity":"严重级别","codeReview.confidenceLabel":"置信度","codeReview.all":"全部","codeReview.noMatches":"没有符合当前筛选条件的发现。","codeReview.source":e=>`来源:${e?.value??""}`,"codeReview.failureScenario":"失败场景","codeReview.witness":"实测证据","codeReview.suggestedFix":"建议修复","codeReview.outcome":"处理结果","codeReview.locations":"位置","codeReview.evidence":"证据","codeReview.notLinked":"未链接","codeReview.loadErrorTitle":"无法显示代码审查结果","codeReview.loading":"正在加载代码审查结果…","codeReview.artifactTruncated":"代码审查制品已截断,无法验证。","codeReview.reportTruncated":"Markdown 报告已截断。","codeReview.unavailable":e=>`此代码审查已不再具备权威性,制品状态为 ${e?.status??"unknown"}。请重新生成审查结果。`,"codeReview.workspaceRequired":"代码审查制品必须是可读取的工作区文件。","sideTask.title":"侧边任务","sideTask.description":"查看或新增侧边任务","sideTask.new":"新增","sideTask.create":"新建侧边任务","webPreview.title":"网页预览","webPreview.openHint":"预览正在运行的网页应用","webPreview.address":"开发地址","webPreview.open":"打开","webPreview.refresh":"刷新预览","webPreview.desktop":"桌面宽度","webPreview.mobile":"手机宽度(390 px)","webPreview.external":"外部打开","webPreview.frame":"网页预览容器","webPreview.saved":"当时保存的版本","webPreview.savedFrame":"历史网页版本","webPreview.savedUnavailable":"这份历史版本已丢失或被修改,无法打开。","webPreview.savedLoadFailed":"暂时无法加载这份历史版本,请重试。","webPreview.page":"应用预览","webPreview.empty":"启动开发服务器,然后在上方输入地址。","webPreview.reachable":"使用当前浏览器可访问的地址。远程服务器请使用可访问的 URL 或已有的端口转发。","webPreview.fallback":"页面空白?请检查服务器或外部打开。地址栏和刷新使用最初打开的地址。","webPreview.live":"实时页面:从历史消息打开链接,也会显示当前内容,不是当时保存的版本。","webPreview.invalidUrl":"请使用独立开发服务器的 HTTP/HTTPS 地址,主机名或 IPv4 均可,且不含登录凭据。不能预览 Web Shell 或 daemon 地址。","terminal.title":"终端","terminal.open":"打开终端","terminal.notice.exited":e=>`进程已退出,退出码 ${e?.exitCode??"?"}`,"terminal.notice.error":e=>`错误:${e?.message??""}`,"terminal.notice.unknownError":"未知错误","terminal.notice.reconnecting":"连接已断开,正在重连…","terminal.notice.protocolMismatch":"终端协议已更新,请重启 daemon 并刷新页面。","localFiles.title":"本地文件","localFiles.trigger":"本地文件","localFiles.hint":"让当前会话读写你本机的一个目录。文件留在你的电脑上,只有 agent 主动索取的内容会发给它。","localFiles.connect":"连接目录…","localFiles.reconnect":"重新连接","localFiles.disconnect":"断开","localFiles.openInNewTab":"在新标签页打开","localFiles.directory":"目录","localFiles.tools":e=>`${e?.count??0} 个工具`,"localFiles.status.idle":"未连接","localFiles.status.connecting":"连接中…","localFiles.status.registering":"注册中…","localFiles.status.connected":"已连接","localFiles.status.reconnecting":"重连中…","localFiles.status.heldElsewhere":"已在其他标签页连接","localFiles.status.needsSession":"等待会话","localFiles.status.needsGesture":"需要重新连接","localFiles.status.failed":"连接失败","localFiles.status.unavailable":"当前环境不可用","localFiles.status.resolving":"解析中…","localFiles.needsSessionHint":"请先创建一个会话。桥只绑定一个会话,因此其他会话无法访问你的文件。","localFiles.blocker.insecureContext":"当前页面不是安全上下文,浏览器不会授予本地文件访问权。请通过 https 访问 Web Shell,或用 SSH 转发 daemon 端口后打开 http://localhost:<port>。","localFiles.blocker.crossOriginFrame":"跨源 iframe 中本地文件访问被禁用。请在独立的浏览器标签页中打开 Web Shell 再连接目录。","localFiles.blocker.unsupportedBrowser":"当前浏览器没有 File System Access API。请使用 Chrome 或 Edge 连接本地目录。","localFiles.blocker.workspaceIneligible":"该会话的工作区不能托管本地目录(不受信任或 live 工作区)。","localFiles.blocker.workspaceResolving":"尚不能确定该会话所属的工作区。","localFiles.blocker.unsupportedDaemon":"该 daemon 未启用客户端文件桥(client_mcp_over_ws)。以 O1CODE_SERVE_CLIENT_MCP_OVER_WS=1 启动 daemon 即可启用本地文件。","rightPanel.add":"添加页签","attachment.showPreview":"预览","attachment.showSource":"源码","attachment.previewUnsupported":"暂不支持预览此文件类型。","attachment.readFailed":"读取附件失败。","attachment.loadingFile":"正在加载文件...","attachment.loadingPreview":"正在加载预览...","sideTask.creating":"正在创建侧边任务…","sideTask.createFailed":"创建侧边任务失败","sideTask.promptFailed":"发送侧边任务问题失败","sideTask.renameFailed":"侧边任务命名失败","turnOutputs.preview":"预览","turnOutputs.collapseFiles":"收起文件","turnOutputs.showMoreFiles":e=>`再展示 ${e?.count??0} 个文件`,"turnOutputs.collapseArtifacts":"收起产物","turnOutputs.showMoreArtifacts":e=>`再展示 ${e?.count??0} 个产物`,"turnOutputs.previousTurn":"上轮对话","turnOutputs.fileCount":e=>`${e?.count??0} 个文件`,"turnOutputs.openFileTree":"打开文件树","turnOutputs.closeFileTree":"关闭文件树","turnOutputs.artifactMissing":"工作区中未找到该文件","turnOutputs.artifactUnavailable":e=>e?.path?`工作区中未找到该文件 · ${e.path}`:"工作区中未找到该文件","sidebar.label":"工作区侧边栏","sidebar.toggleMenu":"切换菜单","sidebar.newChat":"新对话","sidebar.newTask":"新建任务","sidebar.newWorktreeTask":"新建 Worktree 任务","sidebar.plugins":"插件","sidebar.live":"Live","sidebar.project":"项目","sidebar.pinnedSessions":"置顶","sidebar.workspaceSelectLabel":"工作区","sidebar.noWorkspace":"无工作区","sidebar.noWorkspaceSessions":"无工作区会话","sidebar.copySessionId":"复制会话 ID","sidebar.copySessionIdFailed":"复制会话 ID 失败","sidebar.sessionIdCopied":"会话 ID 已复制","sidebar.workspaceUntrusted":"未信任","sidebar.manageWorkspaces":"管理工作区…","sidebar.workspaceReadOnly":"只读","sidebar.workspaceTrustToOpen":"信任此工作区后才能打开会话。","sidebar.addWorkspace":"添加工作区","sidebar.newWorkspace":"新建工作区","sidebar.startFromScratch":"从空目录开始","sidebar.useExistingFolder":"使用已有目录…","sidebar.scratchOutcomeUnknownTitle":"确认工作区创建结果","sidebar.scratchOutcomeUnknown":"守护进程响应已中断。再次创建前,请检查刷新后的工作区列表。","sidebar.scratchOutcomeRefresh":"刷新工作区列表","sidebar.scratchOutcomeAcknowledge":"我已检查工作区列表","sidebar.addWorkspaceTitle":"添加工作区","sidebar.addWorkspacePath":"目录路径","sidebar.addWorkspaceBrowse":"浏览…","sidebar.addWorkspaceBrowseError":"无法打开系统文件夹选择器,请改为输入绝对路径。","sidebar.addWorkspaceDisplayName":"展示名称(可选)","sidebar.addWorkspaceDisplayNameHint":"用于 Web Shell 展示;目录路径仍是工作区身份。","sidebar.addWorkspaceRegister":"注册","sidebar.addWorkspaceCancel":"取消","sidebar.addWorkspaceError":"添加工作区失败","sidebar.addWorkspaceBusyError":"另一个工作区操作正在进行中","sidebar.addWorkspacePersistenceError":"守护进程未确认工作区已持久化注册","sidebar.addWorkspaceRefreshError":"工作区已添加,但无法刷新工作区列表","sidebar.addWorkspaceAbsError":"请输入绝对路径或 SSH 工作区地址。","sidebar.addWorkspaceHint":"请输入本地绝对路径或 ssh://user@host/absolute/project。SSH 需要密钥认证、已确认的主机密钥,以及远端 Python 3。Shell 命令还需要 Bash;远端无需安装 O1-Code。","sidebar.addWorkspaceSuggestions":"目录建议","sidebar.addWorkspacePersist":"服务重启后保留","sidebar.addWorkspacePersistHint":"将此工作区注册持久化到守护进程配置中。","sidebar.addWorkspaceAdding":"添加中…","workspaceHost.source":"目录来源","workspaceHost.thisComputer":"这台计算机","workspaceHost.folderOn":e=>`${e?.address} 上的目录`,"workspaceHost.folderOnThisComputer":"这台计算机上的目录","workspaceHost.browseHint":"请从下方选择目录,或输入绝对路径。","workspaceHost.parent":"上一级","workspaceHost.addFolder":"添加此文件夹","workspaceHost.noFolders":"此目录下没有子目录。","workspaceHost.folderListError":"无法读取该计算机上的目录,请检查路径或连接状态。","workspaceHost.navigationUnavailable":"浏览器存储不可用,无法安全继续添加远程目录。","workspaceHost.unsupported":"这台计算机不支持添加工作区。","workspaceHost.loadingFolders":"正在从这台计算机加载目录…","workspaceHost.connectionError":"无法从这台计算机加载工作区能力。","sidebar.removeWorkspace":"移除工作区","sidebar.workspaceActions":"工作区操作","sidebar.renameWorkspace":"重命名…","sidebar.renameWorkspaceTitle":"重命名工作区","sidebar.workspaceNamePrompt":"显示名称","sidebar.workspaceNameHint":"留空则显示文件夹名。","sidebar.workspaceNameInvalid":"名称不能包含控制字符。","sidebar.renameWorkspaceFailed":"重命名工作区失败","sidebar.copyWorkspacePath":"复制路径","sidebar.copyWorkspacePathFailed":"复制工作区路径失败","sidebar.openWorkspaceFolder":"打开文件夹","sidebar.openWorkspaceFolderFailed":"打开工作区文件夹失败","sidebar.openWorkspaceFolderOpened":"已打开工作区文件夹","sidebar.openWorkspaceTerminal":"打开终端","sidebar.openWorkspaceTerminalFailed":"打开终端失败","sidebar.openWorkspaceTerminalOpened":"已在工作区打开终端","sidebar.manageWorkspace":"管理","sidebar.reloadWorkspace":"重新加载运行时","sidebar.reloadWorkspaceFailed":"重新加载工作区运行时失败","sidebar.workspaceCount":e=>`${e?.count??0} 个工作区`,"sidebar.sessionsRunning":e=>`${e?.count??0} 个会话运行中`,"sidebar.sessionsAttention":e=>`${e?.count??0} 个会话等待处理`,"sidebar.sessionsTotal":e=>`${e?.count??0}${e?.truncated?"+":""} 个会话`,"sidebar.overview.sessions":"会话","sidebar.overview.mcp":"MCP","sidebar.overview.skills":"技能","sidebar.overview.extensions":"扩展","sidebar.overview.context":"上下文","sidebar.overview.hooks":"Hooks","sidebar.overview.settings":"设置","sidebar.overview.mcpDetail":e=>`${e?.configured??0} 个已配置,${e?.connected??0} 个已连接`+(Number(e?.failed)>0?`,${e?.failed} 个失败`:"")+(Number(e?.disabled)>0?`,${e?.disabled} 个已禁用`:""),"sidebar.overview.skillsDetail":e=>`共 ${e?.total??0} 个,${e?.enabled??0} 个已启用`,"sidebar.overview.extensionsDetail":e=>`共 ${e?.total??0} 个,${e?.active??0} 个已启用`,"sidebar.overview.contextDetail":e=>`${e?.files??0} 个上下文文件,${e?.rules??0} 条规则`,"sidebar.overview.hooksDetail":e=>`${e?.count??0} 个 hook`,"sidebar.overview.hooksDisabled":e=>`${e?.count??0} 个 hook(已禁用)`,"sidebar.forceRemoveWorkspace":"强制移除","sidebar.removeWorkspaceTitle":"移除工作区","sidebar.removeWorkspaceConfirm":e=>`确定移除“${e?.name??""}”的运行时和持久化注册吗?文件、设置和会话历史不会被删除。`,"sidebar.removeWorkspaceBusy":e=>`“${e?.name??""}”仍有活动运行时资源。强制移除会终止这些资源。`,"sidebar.removeWorkspaceCurrentSession":"请先切换到其他工作区或关闭当前会话,再执行强制移除。","sidebar.removeWorkspaceInProgress":"另一个客户端正在移除此工作区,请在操作完成后刷新。","sidebar.removeWorkspaceError":"移除工作区失败","sidebar.removeWorkspaceSessions":e=>`会话:${e?.count??0}`,"sidebar.removeWorkspacePrompts":e=>`活动提示:${e?.count??0}`,"sidebar.removeWorkspaceStarts":e=>`待启动会话:${e?.count??0}`,"sidebar.removeWorkspaceConnections":e=>`ACP 连接:${e?.count??0}`,"sidebar.removeWorkspaceMemoryTasks":e=>`Memory 任务:${e?.count??0}`,"sidebar.removeWorkspaceVoiceSessions":e=>`语音会话:${e?.count??0}`,"sidebar.noSessions":"暂无会话","sidebar.projectFallback":"项目","sidebar.sessionsOverview":"会话总览","sidebar.splitView":"分屏","sidebar.settings":"设置","sidebar.daemonStatus":"Daemon 状态","sidebar.scheduledTasks":"定时任务","sidebar.workflows":"工作流","sidebar.goals":"目标","sidebar.themeLight":"切换到浅色主题","sidebar.themeDark":"切换到深色主题","sidebar.collapse":"收起","sidebar.expand":"展开","sidebar.showAllSessions":"展开显示","sidebar.collapseProject":"收起项目","sidebar.expandProject":"展开项目","sidebar.search":"搜索会话","sidebar.searchPlaceholder":"搜索会话","sidebar.rename":"重命名","sidebar.export":"导出对话记录","sidebar.exportFailed":"导出会话失败","sidebar.delete":"删除","sidebar.archive":"归档","sidebar.unarchive":"恢复","sidebar.moreActions":"更多操作","sidebar.archiveCurrentDisabled":"不能归档当前会话","sidebar.archiveRunningDisabled":"不能归档运行中的会话,归档会终止其正在执行的工作","sidebar.archivedTitle":"已归档","sidebar.standaloneLoadFailed":"最近会话加载失败","sidebar.standaloneActionFailed":"会话操作失败","sidebar.standaloneDeleteConfirm":"删除该会话及其私有文件?","sidebar.standaloneCleanupPending":"会话已删除,私有文件清理将在后台自动完成。","sidebar.archivedEmpty":"没有已归档的会话。","sidebar.archiveFailed":"归档会话失败","sidebar.unarchiveFailed":"恢复会话失败","sidebar.loadFailed":"会话加载失败,点击重试。","sidebar.renameFailed":"重命名会话失败","sidebar.deleteFailed":"删除会话失败","sidebar.newSessionFailed":"创建新对话失败","sidebar.switchFailed":"切换会话失败","sidebar.currentDeleteDisabled":"不能删除当前会话","sidebar.deleteConfirmDescription":e=>`确定删除“${e?.name??""}”吗?删除后不可恢复。`,"sidebar.clients":e=>`${e?.count??0} 个客户端`,"sidebar.running":"运行中","sidebar.activeWork":"有活动任务","sidebar.activityUnknown":"后台活动状态未知","sidebar.waitingForApproval":"等待批准","sidebar.waitingForApprovalShort":"待批准","sidebar.sessionPr":e=>`合并请求 #${e?.number??""}`,"sidebar.sessionPrMultiple":e=>`合并请求 #${e?.number??""}(共 ${e?.count??0} 个)`,"sidebar.sessionPrStateMerged":"已合入","sidebar.sessionPrStateClosed":"已关闭","sidebar.sessionIssue":e=>`议题 #${e?.number??""}`,"sidebar.sessionIssueStateCompleted":"已完成","sidebar.sessionIssueStateNotPlanned":"未计划","sidebar.userInputNeeded":"需要用户输入","sidebar.userInputNeededShort":"需输入","sidebar.completedUnread":"刚完成","sidebar.pin":"置顶","sidebar.unpin":"取消置顶","sidebar.sessionGroup":"分组","sidebar.groupFilter":"会话分组","sidebar.groupAll":"全部","sidebar.groupPinned":"已置顶","sidebar.groupUngrouped":"未分组","sidebar.groupRecent":"最近","sidebar.groupCreate":"新建分组","sidebar.groupRename":"重命名分组","sidebar.groupDelete":"删除分组","sidebar.groupColor":"分组颜色","sidebar.groupNamePrompt":"分组名称","sidebar.groupDeleteConfirm":e=>`确定删除分组“${e?.name??""}”吗?`,"sidebar.groupsLoadFailed":"加载会话分组失败","sidebar.groupCreateFailed":"创建分组失败","sidebar.groupAssignFailedAfterCreate":"分组已创建,但移动会话失败","sidebar.groupUpdateFailed":"更新分组失败","sidebar.groupDeleteFailed":"删除分组失败","sidebar.organizationFailed":"更新会话组织失败","sidebar.groupColor.red":"红色","sidebar.groupColor.orange":"橙色","sidebar.groupColor.yellow":"黄色","sidebar.groupColor.green":"绿色","sidebar.groupColor.blue":"蓝色","sidebar.groupColor.purple":"紫色","sidebar.groupColor.custom":"自定义…","sidebar.groupColor.picker":"选择自定义分组颜色","sidebar.groupColor.hex":"Hex 颜色","sidebar.groupColor.invalid":"请输入六位 Hex 颜色,例如 #416ef5。","quickKeys.retry":"重试失败请求","error.unsupportedTheme":"不支持该主题。请使用 /theme light 或 /theme dark。","queue.delete":"删除","queue.edit":"编辑","queue.insert":"插入","queue.cleared":"队列已清空。","queue.deleteTip":"移出队列","queue.editTip":"移出队列并将内容放回输入框","queue.submitting":"提交中...","queue.midTurnQueued":"排队中...","queue.serverQueued":"服务器排队中...","queue.editing":"编辑中...","queue.inserting":"插入中...","queue.removing":"处理中...","queue.submittingDisabled":"排队消息正在提交中...","queue.summaryEditDisabled":"恢复的队列摘要无法还原原始附件。","queue.admissionUnknown":"消息是否送达尚不确定,请先检查会话再重试。","queue.restoreUnknown":"恢复本地副本","queue.discardUnknown":"丢弃本地副本","queue.continueEditing":"继续编辑","queue.continueEditingConfirm":"这条消息可能已经在执行。只有在接受重复发送风险时才继续编辑。","queue.commandBlocked":"当前回合运行时,Slash 命令不能进入排队。","queue.commandGoalBlocked":"Goal 正在占用会话或状态仍在加载,暂时无法执行 Slash 命令。","queue.shellQueued":"Shell 命令已排队,将在当前回合结束后执行。","queue.shellDropped":e=>`${e?.count??0} 条排队的 Shell 命令将不会执行。`,"queue.queueFailed":"排队消息失败","queue.deleteFailed":"移出队列失败","queue.editFailed":"编辑排队消息失败","queue.insertFailed":"插入排队消息失败","queue.insertTip":"插入当前回合","queue.insertCommandDisabled":"命令不能插入当前回合","queue.footer":"按 ↑ 编辑最后一条排队消息 · Esc 清空队列","queue.imageCount":e=>`(+${e?.count??0} 张图片)`,"queue.fileCount":e=>`(+${e?.count??0} 个文件)`,"queue.more":e=>`...(还有 ${e?.count??0} 条)`,"help.builtIn":"内置命令","help.commandCount":e=>`${e?.count??0} 个命令`,"help.commandMeta.builtIn":"内置","help.commandMeta.custom":"自定义","help.commandMeta.subcommands":e=>`${e?.count??0} 个子命令`,"help.commandsIntro":"浏览内置命令:","help.customGroup":"自定义、skills、plugins、MCP","help.customIntro":"浏览自定义、skill、plugin 和 MCP 命令:","help.empty":"当前没有可用命令。","help.emptyCustom":"当前没有可用的自定义命令。","help.footer":"Tab/Shift+Tab 切换标签 · ↑/↓ 或 PgUp/PgDn 滚动 · Esc 关闭","help.intro":"O1-Code 可以理解代码库,在你的许可下修改文件,并直接执行命令。","help.section.shortcuts":"快捷键","help.search":"搜索命令","help.shortcut.addContext":"添加文件或目录作为上下文","help.shortcut.altWords":"按词跳转","help.shortcut.clear":"清屏","help.shortcut.commandMenu":"打开命令菜单","help.shortcut.completion":"接受补全或切换帮助标签","help.shortcut.history":"切换历史 prompt 或滚动列表","help.shortcut.searchHistory":"搜索历史 prompt","help.shortcut.newline":"插入换行","help.shortcut.pasteImages":"粘贴图片","help.shortcut.shell":"运行 shell 命令","help.shortcut.togglePanel":"切换此面板","help.shortcut.retry":"重试上次请求","retry.hint":"按 Ctrl+Y 重试或点击重试","retry.none":"没有可重试的失败请求。","system.taskNotification":"后台任务通知","background.result":"后台结果","background.agent":"后台智能体","background.running":"后台任务执行中","background.task":"后台任务","background.peer":"跨会话消息","background.details":"查看详情","background.processing":e=>`正在处理 ${e?.label??""} 结果`,"background.source":"来源","background.pending":"等待处理","system.taskCompleted":"后台任务执行完成","system.taskFailed":"后台任务执行失败","system.taskCancelled":"后台任务已取消","notification.shell.completed":e=>`后台 Shell 已完成:${e?.command??""}`,"notification.shell.failed":e=>`后台 Shell 执行失败:${e?.command??""}`,"notification.shell.cancelled":e=>`后台 Shell 已取消:${e?.command??""}`,"notification.monitor.completed":e=>`监控器已完成(${e?.events??0} 个事件${e?.droppedLines?`,因限流丢弃 ${e.droppedLines} 行`:""}):${e?.description??""}`,"notification.monitor.failed":e=>`监控器执行失败(${e?.events??0} 个事件${e?.droppedLines?`,因限流丢弃 ${e.droppedLines} 行`:""}):${e?.description??""}`,"notification.monitor.cancelled":e=>`监控器已取消(${e?.events??0} 个事件${e?.droppedLines?`,因限流丢弃 ${e.droppedLines} 行`:""}):${e?.description??""}`,"notification.agent.completed":e=>`后台智能体已完成:${e?.description??""}`,"notification.agent.failed":e=>`后台智能体执行失败:${e?.description??""}`,"notification.agent.cancelled":e=>`后台智能体已取消:${e?.description??""}`,"branch.failed":"分支会话失败。","branch.stale":"这条回复已不在当前活跃历史路径中,会话记录已刷新。","branch.staleRefreshFailed":"这条回复已不在当前活跃历史路径中,且会话记录刷新失败,请重试。","branch.staleUnsupported":"这条回复已不在当前活跃历史路径中,当前会话不支持从此处分支。","branch.success":e=>`已复制会话,新会话名称为: "${e?.name??""}",当前已切换到新的会话。`,"fork.empty":"请提供任务指令。用法:/fork <指令>","fork.failed":e=>`启动后台智能体失败:${e?.reason??""}`,"fork.notStarted":"后台智能体未启动。","fork.started":e=>`已启动后台智能体:"${e?.name??""}",可在后台任务中查看。`,"command.hidden":"该命令不可用。","help.shortcut.approvals":"切换审批模式","help.shortcut.cancel":"关闭弹窗或取消操作","bug.failed":"加载系统信息失败,无法提交 Bug 报告。","bug.popupBlocked":"弹窗被拦截,请允许弹窗后重试。","bug.submitted":"Bug 报告已在新标签页中打开。","clear.blocked":"流式输出中无法清屏 — 先按 Esc 取消。","error.unknown":"未知错误","error.modelStreamInterrupted":"模型响应流已中断,请重试。","error.loopDetected":"模型在调用工具时反复尝试或达到了安全上限,因此系统停止了本轮操作。会话并未结束,你可以换一个更明确的指令继续。","shell.command":"Shell 命令","shell.result.timedOut":"执行超时","shell.result.notices":"提示","shell.result.truncated":"输出预览已截断","shell.result.outputFiles":"输出文件","shell.result.output":"输出","shell.result.command":"命令","shell.result.copy":"复制命令","shell.result.details":"执行详情","shell.result.directory":"目录","shell.result.timeout":"超时设置","shell.result.timeoutMs":e=>`${e?.milliseconds} 毫秒`,"shell.result.defaultTimeout":"使用默认值","shell.result.exitCode":"退出码","shell.result.signal":"信号","shell.result.pending":"等待执行","shell.result.elapsed":"已运行","shell.result.lines":"输出行数","shell.result.bytes":"输出字节数","shell.result.running":"运行中","shell.result.completed":"已完成","shell.result.success":"执行成功","shell.result.cancelled":"已取消","shell.result.waiting":"等待输出…","shell.result.empty":"无输出","shell.result.exited":e=>`退出码 ${e?.code}`,"help.subcommands":"子命令","help.tab.commands":"内置命令","help.tab.custom":"自定义命令","help.tab.general":"快捷键","help.title":"帮助","slash.category.custom":"自定义","slash.category.skill":"Skill","slash.category.system":"系统","language.changed":e=>`UI 语言已切换为 ${e?.language??""}`,"language.current":e=>`当前 UI 语言:${e?.language??""}`,"language.invalid":"语言无效。可用值:en, zh-CN","language.options":"可用选项:","language.set":"设置 UI 语言","language.usage":"用法:/language ui [en|zh-CN]","localCommand.noSession":"当前还没有会话。请先发送第一条消息,再使用这个命令。","localCommand.diffNoWorkspace":"当前还没有可用于查看变更的工作区。","localCommand.logNoWorkspace":"当前还没有可用于查看历史的工作区。","localCommand.prsNoWorkspace":"当前还没有可用于查看拉取请求的工作区。","localCommand.prsUnsupported":"当前 daemon 不支持查看拉取请求。","local.agents":"管理智能体","local.bug":"提交错误报告","local.compress":"将上下文压缩为摘要","local.compressFast":"无需 AI 的快速上下文压缩","local.config":"通过点分路径键获取或设置配置项","local.diff":"显示工作区相对 HEAD 的改动统计","local.log":"显示工作区的提交历史","local.prs":"显示工作区开放的 GitHub 拉取请求","local.directory":"管理工作区目录","local.docs":"打开完整的 O1-Code 文档","local.doctor":"运行安装和环境诊断","local.dream":"整合托管的自动记忆主题文件","local.effort":"设置推理模型的思考强度","local.export":"将当前会话历史导出到文件","local.forget":"从托管的自动记忆中移除匹配的条目","local.hooks":"管理 O1-Code 钩子","local.importConfig":"从 Claude 配置导入 MCP 服务器","local.init":"分析项目并创建 AGENTS.md 文件","local.insight":"根据聊天历史生成编程洞察","local.lsp":"显示 LSP 服务器状态","local.remember":"将持久记忆保存到记忆系统","local.summary":"生成项目摘要文件","local.workflows":"列出工作流运行,或协作式暂停/恢复运行中的任务","skilldesc.batch":"并行批量处理多个文件","skilldesc.dataviz":"图表与数据可视化设计指南","skilldesc.extensionCreator":"创建、测试和定制 O1-Code 扩展","skilldesc.goalDraft":"将模糊意图改写为可验证的 /goal 目标","skilldesc.loop":"按计划或自定节奏循环运行提示词","skilldesc.newApp":"从零构建新应用的工作流","skilldesc.qcHelper":"解答 O1-Code 使用相关问题","skilldesc.review":"审查代码变更的正确性、安全、质量与性能","skilldesc.simplify":"清理近期代码变更(复用与精简)","skilldesc.stuck":"诊断卡死或缓慢的 O1-Code 会话","skilldesc.agentReproduceAlign":"将已移植的 Codex/Claude Code 功能与原版对齐","skilldesc.agentReproduceFeature":"复现 Codex/Claude Code 的现有功能","skilldesc.autofix":"审查并修复本地改动,或运行仓库 Autofix 工作流","skilldesc.bugfix":"按先复现流程修复 GitHub issue 中的 bug","skilldesc.codegraph":"通过图数据库和向量索引分析代码库","skilldesc.createIssue":"根据想法或 bug 描述起草并提交 GitHub issue","skilldesc.docsAuditAndRefresh":"对照代码库审计并刷新 docs/ 文档","skilldesc.docsUpdateFromDiff":"按本地 git diff 更新官方文档","skilldesc.e2eTesting":"运行 O1-Code CLI 的端到端测试","skilldesc.featDev":"实现非平凡功能的端到端工作流","skilldesc.memoryLeakDebug":"用堆快照诊断 CLI 内存泄漏","skilldesc.preparePr":"从当前分支准备 GitHub PR 标题和正文","skilldesc.o1codeClaw":"将 O1-Code 用作代码理解智能体","skilldesc.structuredDebugging":"假设驱动的疑难 bug 调试方法","skilldesc.terminalCapture":"自动化终端 UI 截图测试","skilldesc.tmuxRealUserTesting":"用 tmux 做真实用户测试并保存日志","skilldesc.triage":"把关和审查 O1-Code 的 issue 与 PR","local.approvalMode":"切换审批模式","local.auth":"连接 LLM provider","auth.title":"连接 Provider","auth.step.group":"类型","auth.step.provider":"供应商","auth.step.protocol":"协议","auth.step.api":"API","auth.step.baseUrl":"Base URL","auth.step.apiKey":"API Key","auth.step.models":"模型 ID","auth.step.advanced":"高级配置","auth.protocol.openai":"OpenAI 兼容","auth.protocol.openaiDesc":"标准 OpenAI API 格式(最常用)","auth.protocol.anthropic":"Anthropic 兼容","auth.protocol.anthropicDesc":"Anthropic Messages API 格式","auth.protocol.gemini":"Gemini 兼容","auth.protocol.geminiDesc":"Google Gemini API 格式","auth.api.chatCompletions":"Chat Completions","auth.api.responses":"Responses","auth.apiKeyRequired":"API key 不能为空。","auth.baseUrlInvalid":"Base URL 必须以 http:// 或 https:// 开头。","auth.baseUrlPrompt":"输入此协议的 API endpoint。","auth.baseUrlRequired":"Base URL 不能为空。","auth.documentation":"文档","auth.modelsRequired":"模型 ID 不能为空。","auth.review":"确认","auth.reviewText":"保存前请确认连接信息和模型参数。","auth.save":"保存","auth.saving":"正在保存...","auth.termsTitle":"服务条款和隐私声明","auth.continue":"继续","auth.modelsPrompt":e=>`输入以逗号分隔的模型 ID。例如:${e?.modelIds??""}`,"auth.advanced.prompt":"可选:配置高级生成设置。","auth.advanced.thinking":"启用 thinking","auth.advanced.thinkingDesc":"启用扩展推理;不勾选时保留模型默认行为。","auth.advanced.modality":"启用多模态","auth.advanced.modalityDesc":"启用图片、视频等多模态输入能力。","auth.advanced.modalityImage":"图片","auth.advanced.modalityVideo":"视频","auth.advanced.modalityAudio":"音频","auth.advanced.modalityPdf":"PDF","auth.advanced.contextWindow":"上下文窗口","auth.advanced.contextDesc":"模型的上下文窗口 Token 容量,留空根据模型 ID 自动推断。","auth.advanced.contextPlaceholder":"上下文窗口(可选)","auth.advanced.maxTokens":"最大输出 Token","auth.advanced.maxTokensDesc":"每次回复的最大 Token 数,留空根据模型 ID 自动推断。","auth.advanced.tokenLimitInvalid":e=>`${e?.field??"Token 上限"}必须是 1 到 10,000,000 之间的整数。`,"auth.advanced.modalitiesRequired":"请至少选择一种输入类型,或关闭多模态选项。","auth.advanced.defaults":"使用模型默认值","auth.apiKeySet":"已设置(隐藏)","auth.apiKeyHint":"密钥保存在 ~/.o1-code/credentials/,仅你的用户可读","auth.group.organizaone":"OrganizaOne","auth.group.organizaoneDesc":"使用你的密钥连接 OrganizaOne","auth.group.apiKey":"API Key","auth.group.apiKeyDesc":"Anthropic、OpenAI、Google Gemini、xAI 等","auth.group.local":"本机","auth.group.localDesc":"在本机运行的模型","auth.group.custom":"自定义","auth.group.customDesc":"任意 URL,兼容 OpenAI 或 Anthropic","auth.step.port":"端口","auth.comingSoon":"即将推出","auth.organizaone.apiKey":"API Key","auth.organizaone.apiKeyDesc":"粘贴密钥;模型由 OrganizaOne 提供","auth.local.looking":"… 查找中","auth.local.detected":e=>`已检测 · ${e?.count??0} 个模型`,"auth.local.notRunning":"未运行","auth.local.lookAgain":"重新查找","auth.local.portPrompt":"daemon 所在主机上服务器的端口,或完整 URL。","local.btw":"快速问一个不影响主对话的侧边问题。用法:/btw <your question>","btw.empty":"请提供一个问题。用法:/btw <你的问题>","btw.side.empty":"请提供一个问题。用法:/btw side <你的问题>","btw.emptyAnswer":"未收到回答。","btw.failed":"回答 btw 问题失败","btw.answering":"+ 正在回答...","btw.shortcuts.pending":"按 Escape、Ctrl+C 或 Ctrl+D 取消","btw.shortcuts.done":"按 Space、Enter 或 Escape 关闭","local.clear":"以空上下文开始新会话;之前的会话会保留在磁盘上(可用 /resume 恢复)","local.context":'显示上下文窗口使用情况明细。使用 "/context detail" 查看逐项明细',"local.copy":"复制最后输出或代码片段","local.delete":"永久删除会话","local.release":"释放 live session","local.rewind":"回退当前会话","local.branch":"将当前对话分叉到新会话","local.fork":"基于当前对话启动后台智能体","local.help":"查看帮助和可用命令","local.language":"切换 UI 语言","local.mcp":"管理 MCP servers","local.memory":"管理 memory","local.model":"切换模型或设置 fast model","local.new":"开始新对话","local.plan":"进入 Plan 模式","local.goal":"设置目标并持续工作直到完成","local.recap":"生成会话摘要","recap.label":"回顾","recap.loading":"正在生成摘要...","recap.empty":"对话内容还不够,暂时无法生成摘要。","recap.failed":"生成摘要失败","rewind.action":"回退","rewind.confirm":"确认回退","rewind.empty":"当前会话没有可回退的快照。","rewind.failed":e=>`回退会话失败:${e?.reason??""}`,"rewind.loading":"正在加载可回退的 prompt...","rewind.promptFallback":e=>`Prompt ${e?.id??""}`,"rewind.rewinding":"回退中...","rewind.subtitle":"仅回退会话,不涉及文件。","rewind.title":"回退会话","rewind.turn":e=>`第 ${e?.turn??0} 个 prompt`,"local.rename":"重命名当前会话","rename.empty":"请输入会话名称,例如 /rename 项目调试,或使用 /rename --auto。","rename.success":e=>`会话已重命名为 ${e?.name??""}`,"local.reset":"重置当前对话","local.resume":"恢复历史会话","local.skills":"查看可用 skills","local.stats":"查看会话统计","local.tasks":"查看后台任务","local.status":"查看版本信息","local.theme":"切换主题","local.settings":"查看和编辑设置","local.schedule":"管理定时任务","local.extensions":"管理扩展。用法: /extensions manage|install <source>","extensions.label":"扩展","extensions.action.failed":e=>`扩展操作失败${e?.name?`(${e.name})`:e?.source?`(${e.source})`:""}:${e?.error??"未知错误"}`,"extensions.commands.refreshFailed":"刷新扩展命令失败。","extensions.install.failed":e=>`安装扩展失败${e?.source?`(${e.source})`:""}:${e?.error??"未知错误"}`,"extensions.manage.agents":"智能体:","extensions.manage.actions":"扩展操作","extensions.manage.add":"添加","extensions.manage.checkingUpdates":"正在检查更新...","extensions.manage.checkUpdates":"检查更新","extensions.manage.commands":"命令:","extensions.manage.contextFiles":"上下文文件:","extensions.manage.count":e=>`已安装 ${e?.count??0} 个扩展`,"extensions.manage.setting.disabled":"禁用","extensions.manage.setting.default":"默认","extensions.manage.setting.enabled":"启用","extensions.manage.setting.unknown":"状态不可用","extensions.manage.setting.unavailableDescription":"当前服务未返回扩展的全局和工作区设置,请重启 o1-code serve 后重试。","extensions.manage.userSetting":"全局设置","extensions.manage.userSettingDescription":"适用于用户工作区,工作区设置可单独覆盖。","extensions.manage.workspaceSetting":"工作区设置","extensions.manage.workspaceSettingDescription":"仅适用于当前工作区。","extensions.manage.disable":"禁用扩展","extensions.manage.disabled":e=>`扩展 "${e?.name??"扩展"}" 已禁用。`,"extensions.manage.disabling":e=>`正在禁用扩展 "${e?.name??"扩展"}"…`,"extensions.manage.inherited":e=>`扩展 "${e?.name??"扩展"}" 已恢复为全局设置。`,"extensions.manage.inheriting":e=>`正在将扩展 "${e?.name??"扩展"}" 恢复为全局设置…`,"extensions.manage.empty":"未安装扩展。","extensions.manage.emptyAgents":"此扩展没有智能体。","extensions.manage.emptyCommands":"此扩展没有命令。","extensions.manage.emptyContextFiles":"此扩展没有上下文文件。","extensions.manage.emptyDescription":"安装扩展以添加命令、Skills、智能体或 MCP servers。","extensions.manage.emptyMcpServers":"此扩展没有 MCP servers。","extensions.manage.emptySkills":"此扩展没有 Skills。","extensions.manage.enable":"启用扩展","extensions.manage.enabled":e=>`扩展 "${e?.name??"扩展"}" 已启用。`,"extensions.manage.enabling":e=>`正在启用扩展 "${e?.name??"扩展"}"…`,"extensions.manage.install":"安装","extensions.manage.installDescription":"输入 GitHub、Git 或 npm 扩展来源,或上传 Extension 压缩包。","extensions.manage.sourceTab":"来源","extensions.manage.archiveTab":"压缩包","extensions.manage.archiveSelect":"选择 .zip 或 .tar.gz 压缩包。","extensions.manage.archiveSelected":e=>`已选择压缩包:${e?.name??"Extension 压缩包"}`,"extensions.manage.archiveTooLarge":"Extension 压缩包不能超过 10 MB。","extensions.manage.archiveEmpty":"所选 Extension 压缩包为空。","extensions.manage.archiveInvalid":"请选择文件名有效且不超过 255 字节的 .zip 或 .tar.gz Extension 压缩包。","extensions.manage.installSelectPluginDescription":e=>`从「${e?.marketplace??"此市场"}」中选择插件。`,"extensions.manage.installTitle":"添加扩展","extensions.manage.installType":"安装类型:","extensions.manage.mcpServers":"MCP servers:","extensions.manage.marketplaceRoot":"此市场根目录","extensions.manage.name":"名称:","extensions.manage.notUpdatable":"不可更新","extensions.manage.operationFailed":"扩展操作失败。","extensions.manage.noDescription":"暂无描述","extensions.manage.noMatches":"没有匹配的扩展。","extensions.manage.origin":"来源平台:","extensions.manage.overview":"基本信息","extensions.manage.path":"路径:","extensions.manage.queued":e=>`扩展 "${e?.name??"扩展"}" 的操作已提交。`,"extensions.manage.refreshFailed":e=>`扩展操作已成功,但 session 刷新失败${e?.error?`:${e.error}`:"。"}`,"extensions.manage.restartRequired":"已更新,需要重启","extensions.manage.search":"搜索扩展…","extensions.manage.selectExtension":"请选择扩展","extensions.manage.settings":"设置:","extensions.manage.skills":"Skills:","extensions.manage.source":"来源:","extensions.manage.sourcePlaceholder":"https://github.com/owner/repository","extensions.manage.status":"状态:","extensions.manage.status.disabled":"已禁用","extensions.manage.status.enabled":"已启用","extensions.manage.title":"管理扩展","extensions.manage.unknownUpdate":"未知","extensions.manage.uninstalled":e=>`扩展 "${e?.name??"扩展"}" 已卸载。`,"extensions.manage.uninstalling":e=>`正在卸载扩展 "${e?.name??"扩展"}"…`,"extensions.manage.uninstallAction":"卸载扩展","extensions.manage.uninstallConfirm":e=>`确定卸载扩展 "${e?.name??"扩展"}"?`,"extensions.manage.upToDate":"已是最新","extensions.manage.update":"更新扩展","extensions.manage.updateAvailable":"有可用更新","extensions.manage.updateError":"检查更新失败","extensions.manage.updateComplete":"已更新","extensions.manage.updatedWithWarnings":"已更新,但有警告","extensions.manage.updateStatus":"更新状态:","extensions.manage.updating":"正在更新…","extensions.manage.updatingExtension":e=>`正在更新扩展 "${e?.name??"扩展"}"…`,"extensions.manage.updated":e=>`扩展 "${e?.name??"扩展"}" 已更新。`,"extensions.manage.updatedWithVersion":e=>`扩展 "${e?.name??"扩展"}" 已更新到 v${e?.version??""}。`,"extensions.manage.version":"版本:","extensions.manage.viewDetails":"查看详情","extensions.install.installed":e=>`扩展 "${e?.name??"扩展"}" 已安装。`,"extensions.install.installedWithVersion":e=>`扩展 "${e?.name??"扩展"}" v${e?.version??""} 已安装。`,"extensions.install.missingOptionValue":e=>`${e?.option??"选项"} 缺少值`,"extensions.install.requestFailed":"安装扩展失败","extensions.install.started":e=>`正在从 "${e?.source??""}" 安装扩展...`,"extensions.install.unknownOption":e=>`未知选项 ${e?.option??""}`,"extensions.install.usage":"用法: /extensions manage|install <source>","extensions.install.waitForSession":"等待会话连接后再安装扩展。","local.tools":"列出可用工具。用法: /tools [desc]","loadWarning.commands":"命令列表加载失败,斜杠命令可能不完整。","loadWarning.context":"会话上下文加载失败,当前模式可能不准确。","loadWarning.models":"模型列表加载失败,部分模型详情可能不可用。","mcp.action.auth":"认证","mcp.action.authHint":"daemon 尚未暴露","mcp.action.authMessage":"daemon serve 尚未暴露 MCP 认证能力。","mcp.action.clearAuth":"清空认证","mcp.action.disable":"禁用","mcp.action.done":e=>`${e?.action??"操作"}完成。`,"mcp.action.enable":"启用","mcp.action.enableMessage":"daemon serve 尚未暴露 MCP 启用/禁用能力。","mcp.action.failed":e=>`失败:${e?.error??""}`,"mcp.action.running":e=>`${e?.action??"操作"}中...`,"mcp.action.reauth":"重新认证","mcp.action.approve":"审批","mcp.actions":"服务器操作","mcp.annotation.destructive":"破坏性","mcp.annotation.idempotent":"幂等","mcp.annotation.openWorld":"开放世界","mcp.annotation.readOnly":"只读","mcp.annotations":"注解","mcp.oauth.server":"服务器","mcp.oauth.starting":e=>`正在为 MCP server '${e?.name??""}' 启动 OAuth 认证...`,"mcp.oauth.title":"OAuth 认证","mcp.oauth.timeout":"认证等待超时,请刷新后查看状态。","mcp.oauth.authenticationFailed":"认证失败。","mcp.oauth.statusFailed":"检查认证状态失败。","mcp.oauth.serverRemoved":"MCP 服务器已在认证期间被移除。","mcp.clientBudget":e=>`${e?.count??0}/${e?.budget??0} 个客户端 · ${e?.mode??"off"}`,"mcp.command":"命令","mcp.description":"描述:","mcp.descriptionTitle":"描述","mcp.basicInfo":"基本信息","mcp.action.reconnect":"重新连接","mcp.action.edit":"编辑","mcp.reconnect.skipped":e=>`重新连接未完成:${e?.reason??"未知原因"}。`,"mcp.reconnect.authenticationRequired":"请先完成认证,再重新连接。","mcp.action.restart":"重启","mcp.action.tools":"查看工具","mcp.action.toolsHint":"Enter 查看","mcp.empty":"未配置 MCP 服务器。","mcp.emptyDescription":"添加 MCP 服务器后可在此管理。","mcp.emptyTools":"没有发现工具。","mcp.expand":"展开 MCP server","mcp.collapse":"收起 MCP server","mcp.inputSchema":"输入 schema","mcp.loadingStatus":"正在加载 MCP 状态...","mcp.loadingTools":"正在加载工具...","mcp.name":"名称","mcp.noDescription":"没有描述","mcp.noMatches":"没有匹配的 MCP 服务器。","mcp.add.button":"添加","mcp.add.adding":"正在添加 MCP 服务器…","mcp.add.title":"添加 MCP 服务器","mcp.add.description":"输入服务器名称和配置,并保存到当前工作区。","mcp.add.name":"名称","mcp.add.serverDescription":"描述","mcp.add.serverDescriptionPlaceholder":"描述这个 MCP 服务器","mcp.add.scope":"保存位置","mcp.add.scope.global":"全局","mcp.add.nameRequired":"请输入 MCP 服务器名称。","mcp.add.config":"配置(JSON)","mcp.add.configInvalid":"配置必须是 JSON 对象。","mcp.add.done":e=>`已添加 ${e?.name??"MCP 服务器"}。`,"mcp.edit.title":"编辑 MCP 服务器","mcp.edit.description":"修改描述或配置。名称和保存位置不可修改。","mcp.edit.save":"保存修改","mcp.edit.saving":"正在保存修改…","mcp.edit.done":e=>`已更新 ${e?.name??"MCP 服务器"}。`,"mcp.edit.notFound":"设置中已不存在该 MCP 服务器。","mcp.runtime.notUpdated":"配置已保存,但未同步当前会话。","mcp.runtime.removeNotUpdated":"配置已删除,但未同步当前会话。","mcp.discovery.empty":"尚未配置 MCP 服务器。","mcp.discovery.timeout":"MCP 发现耗时较长,请刷新后查看状态。","mcp.add.settingsUnavailable":"无法读取工作区设置。","mcp.action.remove":"删除","mcp.remove.title":"删除 MCP 服务器","mcp.remove.description":e=>`确定从当前工作区移除 MCP 服务器“${e?.name??""}”吗?`,"mcp.remove.description.global":e=>`确定从全局设置中移除 MCP 服务器“${e?.name??""}”吗?`,"mcp.remove.done":e=>`已删除 ${e?.name??"MCP 服务器"}。`,"mcp.remove.notWorkspace":"此 MCP 服务器不在工作区设置中。","mcp.source.all":"全部","mcp.noSchema":"没有输入 schema。","mcp.oauth.open":"打开认证页面","mcp.serverTool":"服务器工具","mcp.servers":e=>`${e?.count??0} 个服务器`,"mcp.configuredServers":"已配置的 MCP 服务器:","mcp.fromExtension":e=>`(来自 ${e?.name??""})`,"mcp.extensionMcp":"扩展 MCP","mcp.invalidReason":e=>`无效:${e?.reason??""}`,"mcp.invalidReasonLabel":"原因:","mcp.invalidToolHelp":"工具必须同时包含 name 和 description 才能被 LLM 使用。","mcp.invalidToolWarning":"警告:这个工具不能被 LLM 调用","mcp.manageServers":"管理 MCP servers","mcp.viewDetails":"查看详情","mcp.parameters":"参数:","mcp.required":" 必填","mcp.resources":"资源","mcp.resourcesUnavailable":"无法加载资源详情。","mcp.noResources":"没有资源。","mcp.resourceCount":e=>`${e?.count??0} 个资源`,"mcp.promptCount":e=>`${e?.count??0} 个提示词`,"mcp.resource.uriLabel":"URI:","mcp.resource.nameLabel":"名称:","mcp.resource.mimeTypeLabel":"MIME 类型:","mcp.resource.sizeLabel":"大小:","mcp.resource.bytes":e=>`${e?.count??0} 字节`,"mcp.scrollPosition":e=>`${e?.current??0}/${e?.total??0}`,"mcp.shortcut.back":"Esc 返回","mcp.shortcut.close":"Esc 关闭","mcp.shortcut.selectBack":"↑↓ 导航 · Enter 选择 · Esc 返回","mcp.shortcut.selectClose":"↑↓ 导航 · Enter 选择 · Esc 关闭","mcp.settings":"设置","mcp.extension":e=>`扩展:${e?.name??""}`,"mcp.starting":e=>`⏳ MCP 服务器正在启动(${e?.count??0} 个初始化中)...`,"mcp.startingNote":"注意:首次启动可能需要更长时间。工具可用性会自动更新。","mcp.restartSkipped":e=>`已跳过 ${e?.name??""}:${e?.reason??""}`,"mcp.restarted":e=>`已重启 ${e?.name??""},耗时 ${e?.duration??0}ms`,"mcp.restartEntries":e=>`已重启 ${e?.name??""} 的 ${e?.restarted??0}/${e?.total??0} 个条目${e?.failedReasons?`(失败:${e.failedReasons})`:""}`,"mcp.source":"来源","mcp.source.extension":"扩展","mcp.source.project":"项目 MCP(.mcp.json)","mcp.source.workspace":"工作区设置","mcp.source.user":"全局设置","mcp.status":"状态","mcp.status.blocked":"已阻止","mcp.status.authenticating":"认证中","mcp.status.authenticationFailed":"认证失败","mcp.status.needsAuthentication":"待认证","mcp.status.needsApproval":"待审批","mcp.status.rejected":"已拒绝","mcp.status.connected":"已连接","mcp.status.connecting":"连接中","mcp.status.disconnected":"未连接","mcp.status.disconnectedTitle":"已断开","mcp.status.disabled":"已禁用","mcp.status.ready":"就绪","mcp.status.starting":"启动中...(首次启动可能需要更长时间)","mcp.status.unknown":"未知","mcp.tipDesc":"显示 server 和工具描述","mcp.tipNodesc":"隐藏描述","mcp.tipSchema":"显示工具参数 schema","mcp.tips":"💡 提示:","mcp.toolCount":e=>`${e?.count??0} 个工具`,"mcp.toolsCount":e=>`${e?.count??0} 个工具`,"mcp.toolsLabel":"工具:","mcp.title":"MCP 服务器","mcp.toolDetail":"工具详情","mcp.tools":"工具","mcp.toolsForServer":e=>`${e?.name??"Server"} 的工具`,"mcp.transport":"传输协议","mcp.use":"使用","mcp.userMcp":"全局 MCP","mcp.workingDirectory":"工作目录","goal.aborted":"目标已中止","goal.blocked":"目标已阻塞","goal.usageLimited":"目标用量受限","goal.paused":"目标已暂停","goal.achieved":"目标已达成","goal.check":"目标检查","goal.cleared":"目标已清除","goal.failed":"目标未能达成","goal.judge":"判断","goal.label":"目标","goal.lastCheck":"上次检查","goal.notYetMet":"尚未满足","goal.set":"目标已设置","goal.statusActive":"/goal 运行中","goal.status.active":"进行中","goal.status.paused":"已暂停","goal.status.blocked":"已阻塞","goal.status.usage_limited":"用量受限","goal.status.complete":"已完成","goal.activity.idle":"等待中","goal.activity.running":"执行中","goal.activity.verifying":"验证中","goal.edit":"编辑目标","goal.pause":"暂停目标","goal.resume":"继续目标","goal.turn":e=>`${e?.count??0} 轮`,"goal.turnLabel":e=>`第 ${e?.count??0} 轮`,"goal.turns":e=>`${e?.count??0} 轮`,"goal.turnsOfBudget":e=>`${e?.count??0} / ${e?.budget??0} 轮`,"goal.activeOfBudget":e=>`${e?.used??""} / ${e?.budget??""}`,"goal.tokens":e=>`已用 ${e?.used??0} tokens`,"goal.tokensOfBudget":e=>`已用 ${e?.used??0} / ${e?.budget??0} tokens`,"goals.title":"目标","goals.subtitle":"目标会让所在会话持续工作,直到条件满足。这里只列出当前已加载的会话——目标只在会话运行时才会推进。","goals.loading":"正在加载目标…","goals.count":e=>`${e?.count??0} 个进行中的目标`,"goals.empty":"没有进行中的目标。用 /goal <条件> 设置一个。","goals.refresh":"刷新","goals.new":"新建目标","goals.newHint":"目标会在一个新会话中启动,并持续运行直到条件满足。如需强制的轮数或时长上限,请在对话中运行 /config model.goalMaxTurns=20 或 /config model.goalMaxActiveMinutes=30,daemon 重启后生效,且只对之后新建的 Goal 生效。","goals.condition":"条件","goals.conditionPlaceholder":"例如:`npm test` 退出码为 0 且 `npm run lint` 无告警(贴出输出);不得修改测试文件;模型参考 20 轮内未达成则以 blocked 结束","goals.cancel":"取消","goals.create":"设置目标","goals.creating":"正在启动…","goals.saving":"正在保存…","goals.save":"保存","goals.edit":"编辑目标","goals.objective":"目标","goals.clear":"清除目标","goals.clearConfirm":e=>`确定清除目标“${e?.condition??""}”?`,"goals.running":"工作中","goals.idle":"等待中","goals.dropped":e=>`有 ${e?.count??0} 个会话无法访问——它们正在运行的目标未显示在此列表中。`,"goals.notYetEvaluated":"尚未判定","goals.openSessionHint":"打开该目标所在的会话","goals.error.emptyCondition":"请输入目标条件。","goals.error.clearKeyword":e=>`“${e?.word??""}”是清除目标的指令,不是一个条件。请描述要达成的条件。`,"goals.error.createFailed":"启动目标失败","goals.error.saveFailed":"保存目标失败","goals.error.goalUnavailable":"该目标已不可用。","goals.error.requiresObjective":e=>`/goal ${e?.keyword??"set"} 需要提供目标内容。`,"goals.error.invalidCommand":"无效的 /goal 命令","goals.error.goalsUnavailable":"当前界面不支持打开目标视图。","goals.error.attachmentsUnsupported":"使用 /goal 前请先移除附件。","goals.error.editFailed":"编辑目标失败","goals.error.pauseFailed":"暂停目标失败","goals.error.resumeFailed":"继续目标失败","goals.error.clearFailed":"清除目标失败","goals.error.controlBusy":"还有一个目标操作正在进行,请等它完成后再试。","memory.add":"添加","memory.add.desc":"写入一条持久 memory","memory.autoDream":e=>`自动整理:${e?.status??"未知"} · ${e?.lastDream??"从未"} · /dream 立即运行`,"memory.autoDreamUnsupported":"web-shell 暂不支持修改自动整理设置。","memory.autoFolder":"打开自动记忆文件夹","memory.autoMemory":e=>`自动记忆:${e?.status??"未知"}`,"memory.autoMemoryUnsupported":"web-shell 暂不支持修改自动记忆设置。","memory.autoSkill":e=>`自动技能:${e?.status??"未知"}`,"memory.autoSkillUnsupported":"web-shell 暂不支持修改自动技能设置。","memory.chooseScope":"选择 memory 的保存位置","memory.closed":"Memory 面板已关闭。","memory.contentEmpty":"Memory 内容为空。","memory.file":"Memory 文件","memory.fileOpen":"Memory 文件已打开。","memory.fileTruncated":"Memory 文件已打开,内容已截断。","memory.files":"Memory 文件","memory.footer":"Enter 确认 · Esc 取消","memory.footer.back":"Esc 返回","memory.global":"用户级","memory.global.desc":"保存到全局用户 memory 文件","memory.globalReadUnsupported":"全局 memory 位于当前 workspace 之外,当前 daemon 文件读取接口不能打开它的内容。","memory.loading":"正在加载 memory...","memory.loadingFile":"正在加载 memory 文件...","memory.lastDream":"5 hours ago","memory.menu":"Memory","memory.never":"从未","memory.noFiles":"未找到 memory 文件。","memory.on":"开","memory.openFolderUnsupported":"web-shell 暂不支持打开自动记忆文件夹。","memory.placeholder":e=>`写入${e?.scope??"memory"}内容...`,"memory.project":"项目级","memory.project.desc":"保存到当前 workspace memory 文件","memory.refresh":"刷新","memory.refresh.desc":"重新加载 memory 文件信息","memory.refreshed":"Memory 已刷新。","memory.save":"保存 Memory","memory.savedIn":e=>`Saved in ${e?.path??""}`,"memory.saved":e=>`${e?.scope??"Memory"} 已保存:${e?.bytes??0} 字节 -> ${e?.path??""}`,"memory.saving":"保存中...","memory.show":"查看","memory.show.desc":"查看已配置的 memory 文件","memory.status":"Workspace 和用户 memory 文件","memory.unknown":"未知","memory.write":"写入 memory 内容","mode.auto":"智能审批","mode.auto.desc":"使用分类器评估工具调用,安全操作自动批准,风险操作阻止或请求确认","mode.auto.notice":"Auto 模式已启用。LLM 分类器会评估每个工具调用,自动批准安全操作,拦截危险操作。退出方式:Shift+Tab 或 /approval-mode default。","mode.footer":"(Enter 选择,Esc 取消)","mode.name.plan":"plan","mode.name.default":"default","mode.name.auto-edit":"auto-edit","mode.name.auto":"auto","mode.name.yolo":"yolo","plan.toggle.on":"执行前先制定计划","plan.toggle.off":e=>`规划中,批准后按${e?.mode}执行。点击退出规划。`,"approval.option.executePlan":e=>`批准并执行 · ${e?.mode}`,"mode.label.plan":"计划","mode.label.default":"请求批准","mode.label.auto-edit":"自动编辑","mode.label.auto":"智能审批","mode.label.yolo":"完全访问权限","mode.listLabel.plan":"计划(plan)","mode.listLabel.default":"请求批准(default)","mode.listLabel.auto-edit":"自动编辑(auto-edit)","mode.listLabel.auto":"智能审批(auto)","mode.listLabel.yolo":"完全访问权限(yolo)","mode.desc.plan":"仅分析,不修改文件或执行命令","mode.desc.default":"执行命令、编辑文件或访问外部资源前请求确认","mode.desc.auto-edit":"自动批准文件编辑,命令执行等敏感操作仍会询问","mode.desc.auto":"自动评估工具风险,安全操作直接执行,风险操作再确认","mode.desc.yolo":"自动批准所有工具调用,适合可信任务环境","mode.select":"审批模式","mode.changePending":"模式切换或计划确认尚未完成,请稍后重试。","mode.autoApproved":(e=>e?.tool?`已自动批准:${e.tool}`:"切换模式后自动批准了待处理的工具调用。"),"mode.auto-edit":"自动编辑","mode.auto-edit.desc":"自动批准文件读写操作","mode.default":"默认模式","mode.default.desc":"每次工具调用都需要确认","mode.plan":"Plan 模式","mode.plan.desc":"仅分析和规划,不执行工具","mode.unknown":"未知模式","mode.yolo":"YOLO 模式","mode.yolo.desc":"自动批准所有操作","plan.title":"计划","model.contextWindow":"上下文窗口","model.contextWindow.unknown":"(未知)","model.current":e=>`当前:${e?.model??"未知"}`,"model.modality":"模态","model.modality.text":"文本","model.modality.textOnly":"仅文本","model.modality.image":"图片","model.modality.pdf":"PDF","model.modality.audio":"音频","model.modality.video":"视频","model.baseUrl":"Base URL","model.apiKey":"API Key","model.default":"(默认)","model.notSet":"(未设置)","model.footer":"Enter 选择,↑↓ 导航,Esc 关闭","model.searchHint":"按 / 搜索","model.fastHint":"用于建议和旁路任务","model.noMatch":e=>`没有匹配 "${e?.query??""}" 的模型`,"model.unavailable":"模型列表暂不可用,将使用守护进程默认模型。","model.none":"没有可用模型","model.select":"选择模型","model.section":"模型","reasoning.options":"选项","reasoning.thinking":"思考","reasoning.thinkingOff":"思考已关闭","reasoning.effort":"思考强度","reasoning.effort.low":"低","reasoning.effort.medium":"中","reasoning.effort.high":"高","reasoning.effort.xhigh":"极高","reasoning.effort.max":"最高","reasoning.updateFailed":"更新思考选项失败","model.setFast":"设置 Fast Model","model.setVoice":"设置语音模型","auth.purpose.label":"模型用途","auth.purpose.chat":"对话","auth.purpose.chatHint":"将此提供商用于对话。配置包含当前模型时会保留当前选择。","auth.purpose.image":"生图","auth.purpose.voice":"语音转写","auth.purpose.realtime":"实时语音","auth.purpose.imageHint":"支持 DashScope 或 MiniMax 兼容生图接口,请使用不含查询参数或片段的 HTTPS 地址。添加后保留当前对话模型。","auth.purpose.voiceHint":"请选择 OpenAI Chat Completions API,使用 qwen3-asr-flash、qwen3-asr-flash-realtime、fun-asr-realtime 或 paraformer-realtime 等受支持的转写模型。添加后保留当前对话模型。","settings.models.editWindow":"配置窗口大小","settings.models.windowHint":"留空根据模型 ID 自动推断。已有会话需重启后使用新窗口大小。","settings.models.windowSaved":"已保存,重启已有会话后生效。","settings.models.saved":"已保存","model.setAdvisor":"设置顾问模型","settings.label.advisorModel":"顾问模型","settings.label.imageModel":"生图模型","settings.label.voiceModel":"语音转写模型","settings.description.advisorModel":"用于复查近期对话进展,默认使用主模型。","settings.description.imageModel":"用于生成图片。添加自定义模型时选择“生图”用途,再在这里选择。","settings.description.voiceModel":"用于将语音转成文字。添加自定义模型时选择“语音转写”用途,再在这里选择。","model.setImage":"设置生图模型","model.useMain":"使用主模型","model.disabled":"不启用","model.setVision":"设置视觉模型","model.switch":"切换模型","model.unknown":"未知","resume.current":"当前","resume.activePrompt":"正在运行","resume.filter":"筛选","resume.noMatch":e=>`没有匹配 "${e?.query??""}" 的会话`,"resume.none":"没有可恢复的会话","resume.pressSearch":"按 / 搜索","resume.search":"搜索","resume.title":"恢复会话","parallelAgents.title":"并行智能体","parallelAgents.done":e=>`${e?.done??0}/${e?.total??0} 完成`,"parallelAgents.failed":e=>`失败 ${e?.count??0} 个`,"skills.actions":"Skill 操作","skills.disable":"禁用","skills.disabled":"Skill 已禁用。","skills.enable":"启用","skills.enabled":"Skill 已启用。","skills.install.action":"上传","skills.install.description":"从 GitHub、本地文件夹或 ZIP 压缩包安装技能。","skills.install.error.authentication":"上传技能需要身份认证。","skills.install.error.folderRequired":"请输入文件夹路径。","skills.install.error.githubRequired":"请输入 GitHub SKILL.md 地址。","skills.install.error.invalidName":"技能名称缺失或包含不支持的字符。","skills.install.error.manifestMissing":"技能包根目录中必须包含 SKILL.md 文件。","skills.install.error.invalidPackage":"技能包无效,请检查目录结构和 SKILL.md 内容。","skills.install.error.zipTooLarge":"ZIP 文件不能超过 6 MB。","skills.install.error.invalidFolder":"请输入有效的本地技能文件夹路径。","skills.install.error.githubFailed":"无法从 GitHub 下载技能,请检查地址或认证信息后重试。","skills.install.error.invalidScope":"请选择工作区或全局安装位置。","skills.install.error.invalidSource":"当前 daemon 无法识别这种上传来源,请重启已更新的 daemon 后重试。","skills.install.error.notFound":"未找到指定的技能。","skills.install.error.nameRequired":"请输入技能名称。","skills.install.error.untrusted":"请先信任当前工作区,再上传技能。","skills.install.failed":"上传技能失败。","skills.install.folder":"本地文件夹","skills.install.folderPath":"文件夹路径","skills.install.githubUrl":"SKILL.md 地址","skills.install.name":"技能名称","skills.install.scope":"安装位置","skills.install.scope.global":"全局","skills.install.scope.workspace":"工作区","skills.install.selectZip":"请选择 ZIP 压缩包。","skills.install.title":"上传技能","skills.install.succeeded":e=>`技能“${e?.name??""}”上传成功。`,"skills.install.zipSelected":e=>`已选择:${e?.name??""}`,"skills.delete.action":"删除技能","skills.delete.description":e=>`确定从磁盘删除“${e?.name??""}”吗?此操作无法撤销。`,"skills.delete.failed":"删除技能失败。","skills.delete.succeeded":e=>`技能“${e?.name??""}”删除成功。`,"skills.delete.title":"删除技能?","skills.empty":"没有可用 skill。","skills.count":e=>[`${e?.count??0} 个技能`,...e?.enabled?[`已启用 ${e.enabled} 个`]:[],...e?.disabled?[`已禁用 ${e.disabled} 个`]:[]].join(","),"skills.details":"Skill 详情","skills.extension":"所属扩展","skills.filter.all":"全部","skills.filter.bundled":"内置","skills.filter.extension":"扩展","skills.filter.label":"按来源筛选 Skills","skills.filter.project":"工作区设置","skills.filter.status.all":"全部","skills.filter.status.disabled":"已禁用","skills.filter.status.enabled":"已启用","skills.filter.status.label":"按状态筛选技能","skills.filter.user":"全局设置","skills.hint":"提示","skills.invocation":"调用方式","skills.level":"作用域","skills.level.bundled":"内置","skills.level.extension":"扩展","skills.level.project":"项目","skills.level.user":"全局","skills.loading":"正在加载 skills...","skills.manualReference":"手动引用","skills.manualReferenceHint":"模型无法自动识别,需手动引用 skill","skills.model":"模型","skills.modelAccess":"模型调用","skills.modelAccess.disabled":"不可由模型调用","skills.modelAccess.enabled":"可由模型调用","skills.modelInvocable":"模型可用","skills.noDescription":"暂无描述","skills.noMatches":"没有匹配的 Skill。","skills.notToggleable":"此 Skill 不支持启用或禁用。","skills.run":"引用 skill","skills.search":"搜索 Skills…","skills.settingUpdated":"Workspace 设置已更新。","skills.settingUpdatedAvailabilityUnchanged":"Workspace 设置已更新,Skill 的实际可用状态未改变。","skills.settingUnchanged":"Skill 已处于请求的 Workspace 设置,无需更改。","skills.status":"状态","skills.status.disabled":"已禁用","skills.status.enabled":"已启用","skills.toggleFailed":"更新 Skill 失败。","skills.error.inactiveExtension":"该技能所属扩展当前未启用,请先启用对应扩展。","skills.toggleUnsupported":"当前连接的 daemon 不支持启用或禁用 Skill。","skills.title":"Skills","plugins.extensions":"扩展","plugins.agents":"智能体","plugins.mcp":"MCP","plugins.sections":"插件分类","plugins.skills":"技能","plugins.title":"插件","plugins.tools":"工具","stats.accepted":"已接受:","stats.agreementRate":"总体同意率:","stats.api":"API","stats.apiTime":"API 耗时","stats.avgDuration":"平均耗时","stats.avgLatency":"平均延迟","stats.cached":"缓存","stats.cacheDesc":"的输入 Token 来自缓存,降低了成本。","stats.calls":"调用次数","stats.codeChanges":"代码变更","stats.decisionSummary":"用户决策摘要","stats.duration":"时长","stats.errors":"错误数","stats.inputTokens":"输入 Token","stats.metric":"指标","stats.modelStats":"模型统计(技术细节)","stats.modelTip":"提示:运行 /stats model 查看完整 Token 明细。","stats.modelUsage":"模型使用","stats.modified":"已修改:","stats.noApiCalls":"本次会话暂无 API 调用。","stats.noToolCalls":"本次会话暂无工具调用。","stats.outputTokens":"输出 Token","stats.overview":"会话概览","stats.performance":"性能","stats.prompts":"对话轮次","stats.rejected":"已拒绝:","stats.reqs":"请求","stats.requests":"请求数","stats.savingsHighlight":"节省亮点:","stats.successRate":"成功率","stats.thoughts":"思考","stats.title":"会话统计","stats.tokens":"Token","stats.toolCalls":"工具调用","stats.toolName":"工具名称","stats.toolStats":"工具统计(技术细节)","stats.toolTime":"工具耗时","stats.total":"总计","stats.totalReviewed":"已审核建议总数:","contextUsage.refresh":"刷新","contextUsage.remaining":"剩余","contextUsage.advanced":"高级 · 用量分类","contextUsage.snapshot":"历史快照","contextUsage.viewCurrent":"查看当前上下文","contextUsage.compress":"手动压缩","contextUsage.compressing":"正在压缩…","contextUsage.compressed":"压缩完成,已刷新上下文用量。","contextUsage.compressCancelled":"已请求取消压缩,请刷新确认当前用量。","contextUsage.compressInterrupted":"压缩期间连接发生变化,请刷新查看当前使用量。","contextUsage.compressFailed":"压缩失败,可以重试。","contextUsage.compressRefreshFailed":"压缩已完成,但用量刷新失败。请点击刷新重试。","contextUsage.compressUnavailable":"会话连接正常、空闲、可写、没有活动目标且支持内置压缩命令时可用。","contextCompression.result":e=>`上下文已压缩 ${e?.from??""} → ${e?.to??""}`,"contextCompression.instructionsTruncated":e=>`压缩指令已截断为 ${e?.max??""} 个字符。`,"contextCompression.noop":"无需压缩。","contextUsage.retry":"重试","contextUsage.loadError":"上下文使用情况加载失败。","contextUsage.previousReading":"刷新失败,当前显示先前读数。","contextUsage.unavailable":"当前会话无法读取上下文使用情况。","tokenUsage.avgLatency":"平均延迟","tokenUsage.cached":"缓存输入","tokenUsage.input":"输入","tokenUsage.loadError":"Token 消耗加载失败。","tokenUsage.models":"按模型","tokenUsage.noData":"本会话还没有 API 调用。","tokenUsage.noSubagents":"本会话还没有子 agent 调用。","tokenUsage.noTools":"本会话还没有工具调用。","tokenUsage.open":"会话 Token 消耗","tokenUsage.output":"总输出","tokenUsage.refresh":"刷新","tokenUsage.requests":"请求","tokenUsage.retry":"重试","tokenUsage.subagents":"子agent","tokenUsage.thoughts":"思考(包含在总输出中)","tokenUsage.title":"Token 消耗","tokenUsage.toolRow":e=>`${e?.count??0} 次 · 成功率 ${e?.rate??0}% · ${e?.duration??""}`,"tokenUsage.tools":"工具","tokenUsage.updatedAt":e=>`更新于 ${e?.time??""}`,"tokenUsage.unavailable":"当前会话无法读取 Token 消耗。","trajectory.title":"轨迹","trajectory.description":"查看这次运行把时间和 token 花在了哪里","trajectory.empty":"这个会话还没有记录。","trajectory.noTiming":"这些记录没有请求或工具的耗时数据。","trajectory.truncated":"只显示这个会话最近的记录。","trajectory.loadFailed":e=>`读取会话记录失败:${e?.message??""}`,"trajectory.partial":"这份会话记录有一部分读不出来,缺少了一些记录。","trajectory.totals":e=>`${e?.turns??0} 轮 · ${e?.requests??0} 次请求 · ${e?.tools??0} 次工具 · ${e?.duration??""}`,"trajectory.turn":e=>`第 ${e?.index??0} 轮`,"trajectory.turnPartial":e=>`第 ${e?.index??0} 轮(接上文)`,"trajectory.turnSummary":e=>`${e?.requests??0} 次请求 · ${e?.tools??0} 次工具 · ${e?.duration??""}`,"trajectory.request":"模型请求","trajectory.requestFailed":"请求失败","trajectory.ttft":e=>`首字 ${e?.duration??""}`,"trajectory.subagentRollup":e=>`子代理 ${e?.requests??0} 次请求 · ${e?.tools??0} 次工具 · ${e?.duration??""}`,"trajectory.badge.user":"用户","trajectory.badge.message":"回复","trajectory.badge.thought":"思考","trajectory.badge.tool":"工具","trajectory.badge.subagent":"子代理","trajectory.badge.shell":"终端","trajectory.badge.permission":"询问","trajectory.badge.status":"提示","trajectory.badge.cancelled":"中断","trajectory.badge.other":"其他","trajectory.cancelled":"本轮已取消","status.contextUsed":e=>`上下文已用 ${e?.pct??"0.0"}%`,"status.disconnected":"断开连接","status.modeHint":"(shift + tab 或点击切换)","status.shortcuts":"? 查看快捷键","stream.cancel":"esc 取消","stream.cancelArmed":"再按一次 Esc 停止","stream.tokens":e=>`${e?.count??0} tokens`,"theme.current":e=>`当前:${e?.theme??""}`,"theme.auto":"自动","theme.dark":"暗色","theme.dark.desc":"仿终端暗色皮肤。","theme.light":"亮色","theme.light.desc":"仿终端亮色皮肤。","theme.title":"主题","todo.allDone":"任务已全部完成","todo.collapse":"折叠任务列表","todo.completedAbove":e=>`✓ 已完成 ${e?.count??0} 项`,"todo.detail.api":"API","todo.detail.cached":"缓存","todo.detail.end":"结束","todo.detail.hide":"收起任务明细","todo.detail.input":"输入","todo.detail.noResources":"未采集到该任务的 Token 与耗时明细。","todo.detail.output":"输出","todo.detail.sectionSpent":"耗时","todo.detail.sectionTime":"时间","todo.detail.sectionTokens":"Token","todo.detail.show":"查看任务明细","todo.detail.start":"开始","todo.detail.tool":"工具","todo.expand":"展开任务列表","todo.more":e=>`... 还有 ${e?.count??0} 项`,"todo.moreAbove":e=>`... 前面还有 ${e?.count??0} 项`,"todo.showLess":"收起","todo.stepProgress":e=>`第 ${e?.current??0} / ${e?.total??0} 步`,"todo.stepFraction":e=>`${e?.current??0} / ${e?.total??0}`,"todo.title":"当前任务","planExecution.dialogTitle":"计划与任务","planExecution.title":"计划执行","planExecution.overview":"工作流概况","planExecution.overallProgress":"整体进度","planExecution.stepsCompleted":"步骤已完成","planExecution.activeAgents":"Agent 正在工作","planExecution.needsAttention":"需要关注","planExecution.stepDetails":"步骤详情","planExecution.subagents":"子智能体","planExecution.noSubagents":"该步骤暂未关联 Agent。","planExecution.openDetails":"打开子智能体详情","planExecution.currentActivity":"当前动作:","planExecution.toolCalls":e=>`${e?.count??0} 次工具调用`,"planExecution.tokens":e=>`${e?.count??0} tokens`,"planExecution.view":"查看计划执行","planExecution.dependsOn":"依赖:","planExecution.unblocks":"解锁:","planExecution.unassigned":"未关联的执行","planExecution.attention":"需要关注","planExecution.agentCount":e=>`${e?.count??0} 个 Agent`,"planExecution.status.running":"运行中","planExecution.status.paused":"已暂停","planExecution.status.completed":"已完成","planExecution.status.blocked":"被阻塞","planExecution.status.in_progress":"进行中","planExecution.status.ready":"就绪","planExecution.edgesHidden":e=>`依赖过多(${e?.count??0} 条),无法绘制连线,已改为在每个步骤上列出。`,"workflow.chatTitle":"对话","workflow.title":"工作流","workflow.inspector.summary":"工作流进度","workflow.inspector.selectedStep":"当前步骤","workflow.inspector.allSteps":"全部步骤","workflow.inspector.recentActivity":"最近 Agent 活动","workflow.inspector.expandGraph":"展开依赖图","workflow.inspector.graphCanvas":"依赖图画布","workflow.inspector.canvasHint":"在图中选择节点,可在这里查看依赖和 Agent 执行。","workflow.inspector.activeAgents":e=>`${e?.count??0} 个运行中的 Agent`,"workflow.inspector.attentionCount":e=>`${e?.count??0} 个需要关注`,"workflow.planReview.title":"计划并审阅","workflow.planReview.question":"确认计划并开始协作?","workflow.planReview.confirm":"确认并开始","workflow.planReview.continuePlanning":"继续完善计划","workflow.empty.title":"这个会话还没有结构化工作流","workflow.empty.copy":"返回对话,进入计划并审阅,让模型先写入带稳定 ID 和依赖的待办。","workflow.empty.action":"返回对话创建计划","workflow.tabs.attention":"待我处理","workflow.connection.connected":"Daemon 已连接","workflow.connection.reconnecting":"Daemon 正在重连","workflow.session.defaultTitle":"当前会话工作流","workflow.session.workspace":"工作区","workflow.dependencies.upstream":"依赖于","workflow.dependencies.none":"无","workflow.dependencies.unblocks":"解除阻塞","workflow.dependencies.noDownstream":"没有下游步骤","workflow.activity.empty":"还没有关联到待办的 Agent 执行。","workflow.activity.showAll":e=>`查看全部 ${e?.count??0} 条执行`,"workflow.deliverables.title":"会话交付物","workflow.deliverables.none":"尚未发布产物","workflow.status.running":"运行中","workflow.status.paused":"已暂停","workflow.status.completed":"已完成","workflow.status.failed":"失败","workflow.status.cancelled":"已取消","workflow.task.completed":"已完成","workflow.task.attention":"需要关注","workflow.task.running":"协作运行中","workflow.task.waitingExecution":"等待执行","planExecution.locateCurrent":"定位当前步骤","status.mode":"审批模式","chat.scrollToBottom":"回到底部","chatHeader.toggleEnvironment":"切换环境信息","chatHeader.toggleRightPanel":"切换右侧扩展区","environment.title":"环境信息","environment.changes":"变更","environment.changeCount":e=>`${e?.count??0} 项变更`,"environment.clean":"无变更","environment.workspace":"工作区","environment.branch":"分支","environment.history":"提交历史","environment.agents":"子智能体","environment.unnamedAgent":e=>`智能体(${e?.index??0})`,"workflow.open":"打开智能体工作流","workflow.mainAgent":"主智能体","workflow.empty":"此工作流中暂无子智能体","workflow.loadFailed":"工作流加载失败","environment.unavailable":"不可用","sources.title":"来源","sources.count":e=>`${e?.count??0} 个来源`,"sources.currentTurn":"本轮来源","sources.add":"添加来源","sources.empty":"添加文件或链接作为参考。","sources.explanation":"添加引用不会将内容发送给助手。","sources.remove":"移除来源","sources.open":"打开来源","sources.viewAll":"查看全部","sources.type":"引用类型","sources.workspaceFile":"工作区文件","sources.link":"链接","sources.location":"路径或链接","sources.name":"标题(可选)","sources.description":"描述(可选)","sources.registrationFailed":"消息已发送;部分来源信息未能保存","sources.attachmentsLoadFailed":e=>`上传文件加载失败:${e?.error??"未知错误"}`,"sources.openOriginal":"打开原链接","sources.unavailable":"此引用在当前工作区中不可用。","environment.attachments":"附件","environment.artifacts":"产物","environment.artifactsEmpty":"此会话生成的产物会显示在这里。","rightPanel.attachmentLoadFailed":e=>`附件加载失败:${e?.error??"未知错误"}`,"rightPanel.savedContentUnavailable":"保存的面板内容已不可用","rightPanel.restoreFailed":e=>`面板恢复失败:${e?.error??"未知错误"}`,"userMessage.showMore":"显示更多","userMessage.showLess":"收起","userMessage.sendFailed":"发送失败","userMessage.retrySend":"重新发送消息","userMessage.edit":"编辑消息","userMessage.editSubmit":"发送","userMessage.editSending":"发送中…","userMessage.editBusy":"请先等待当前轮次结束再编辑。","userMessage.editStale":"消息已发生变化,请重新打开编辑器后再试。","userMessage.editAttachmentUnavailable":"附件内容不可用,消息尚未回退。","userMessage.editSyncFailed":"无法确认回退已同步。编辑内容已暂存,正在等待同步。","userMessage.editFailed":e=>`无法重发编辑的消息:${e?.reason??""}`,"turn.processed":"已处理","turn.processing":"处理中","turn.collapse":"折叠步骤","turn.expand":"展开步骤","turn.cached":"缓存","turn.executionSteps":e=>`${e?.count??0} 步`,"turn.toolCalls":e=>`工具 ${e?.count??0} 次`,"turn.thinkingCount":e=>`思考 ${e?.count??0} 次`,"turn.stopped":"你已取消请求","turn.stoppedAfter":e=>`你在 ${e?.seconds??0} 秒后取消了请求`,"message.renderError":"此消息无法显示。","tasks.title":"后台任务","tasks.empty":"当前没有运行中的任务","tasks.refreshStale":"任务状态可能已过期,正在重连...","tasks.cancelFailed":"取消任务失败","tasks.alreadyStopped":"任务已停止","tasks.moreAbove":e=>`^ 上方还有 ${e?.count??0} 个`,"tasks.moreBelow":e=>`v 下方还有 ${e?.count??0} 个`,"tasks.running":"运行中","tasks.pausing":"暂停中","tasks.completed":"已完成","tasks.failed":"失败","tasks.cancelled":"已停止","tasks.paused":"已暂停","tasks.kind.shell":"Shell","tasks.kind.monitor":"监控","tasks.kind.workflow":"工作流","workflow.graph.waiting":"等待第一个 Agent 调度…","workflow.graph.notRecorded":"这次运行没有保存执行图。","workflow.inline.loading":"正在加载 Workflow 实时执行状态…","workflow.inline.unavailable":"当前会话中已无法读取这次 Workflow 运行。","workflow.graph.omitted":e=>`为保证性能,执行图已省略 ${e?.lanes??0} 个阶段、${e?.nodes??0} 个 Agent 和 ${e?.edges??0} 条连线。`,"workflow.noPhase":"未分阶段","workflow.dispatchCount":e=>`${e?.count??0} 个调度`,"workflow.selectedDispatch":"已选调度","workflow.dependencies":"依赖","workflow.action.pause":"暂停","workflow.action.resume":"继续","workflow.action.retry":"重试失败路径","workflow.action.rerun":"全部重跑","workflow.action.unavailable":"操作前工作流状态已发生变化。","workflow.action.argsUnavailable":"无法重启:历史里没有它启动时用的参数。","workflow.action.failed":"无法更新工作流状态。","workflow.history.retry":e=>`从 ${e?.runId??""} 续跑`,"workflow.history.rerun":e=>`从 ${e?.runId??""} 全部重跑`,"workflow.history.cached":e=>`${e?.count??0} 个缓存命中`,"workflow.history.saved":e=>`已保存 ${e?.count??0} 次运行`,"workflow.history.restored":"已保存运行","workflow.history.showRuns":e=>`运行历史(${e?.count??0})`,"workflow.history.hideRuns":"收起历史","workflow.history.filter":"筛选运行","workflow.history.filterAll":"全部状态","workflow.history.visibleCount":e=>`${e?.count??0} / ${e?.total??0}`,"workflow.history.filterEmpty":"没有符合当前筛选条件的历史运行。","workflow.history.exportVisible":"导出当前结果","workflow.history.delete":"删除","workflow.history.deleteSaved":"删除已保存运行","workflow.history.confirmDelete":"确认删除","workflow.history.deleteUnavailable":"这次历史运行已不存在。","workflow.history.deleteFailed":"无法删除这次历史运行。","workflow.history.compareRun":e=>`对比运行 ${e?.runId??""}`,"workflow.history.compare":"对比两次运行","workflow.history.hideComparison":"收起对比","workflow.history.source":"来源运行","workflow.history.compared":"对比运行","workflow.history.current":"当前运行","workflow.history.status":"状态","workflow.history.agents":"Agents","workflow.approvalNeeded":"等待审批","workflow.respondInChat":"请在对话中处理","workflow.metric.agents":"Agents","workflow.metric.running":"运行中","workflow.metric.queued":"排队中","workflow.metric.tokens":"Tokens","workflow.dispatch.queued":"排队中","workflow.dispatch.running":"运行中","workflow.dispatch.completed":"已完成","workflow.dispatch.failed":"失败","workflow.dispatch.cancelled":"已取消","workflow.dispatch.cached":"已缓存","tasks.action.stop":"停止","tasks.action.abandon":"放弃","tasks.action.confirmStop":"确认停止","tasks.action.confirmAbandon":"确认放弃","tasks.action.confirmHint":"这会终结当前阻塞轮次。","tasks.pill.agent":e=>`${e?.count??0} 个本地智能体`,"tasks.pill.agents":e=>`${e?.count??0} 个本地智能体`,"tasks.pill.agentPaused":e=>`${e?.count??0} 个本地智能体已暂停`,"tasks.pill.agentsPaused":e=>`${e?.count??0} 个本地智能体已暂停`,"tasks.pill.done":e=>`${e?.count??0} 个任务完成`,"tasks.pill.doneMany":e=>`${e?.count??0} 个任务完成`,"tasks.pill.monitor":e=>`${e?.count??0} 个监控`,"tasks.pill.monitors":e=>`${e?.count??0} 个监控`,"tasks.pill.shell":e=>`${e?.count??0} 个 shell`,"tasks.pill.shells":e=>`${e?.count??0} 个 shell`,"tasks.pill.workflow":e=>`${e?.count??0} 个工作流`,"tasks.pill.workflows":e=>`${e?.count??0} 个工作流`,"tasks.confirmStop":"再按 x 确认停止 · 会终结当前阻塞轮次","tasks.shortcut.select":"↑/↓ 选择","tasks.shortcut.view":"Enter 查看","tasks.shortcut.stop":"x 停止","tasks.shortcut.abandon":"x 放弃","tasks.shortcut.listClose":"←/Esc 关闭","tasks.shortcut.detailBack":"← 返回","tasks.shortcut.detailClose":"Esc/Enter/Space 关闭","tasks.shortcut.close":"Esc 关闭","tasks.shortcut.cancelConfirm":"Esc 取消","tasks.detail.workingDir":"工作目录","tasks.detail.outputFile":"输出文件","tasks.detail.command":"命令","tasks.detail.events":e=>`${e?.count??0} 个事件`,"tasks.detail.exit":e=>`退出码 ${e?.exitCode??""}`,"tasks.detail.dropped":e=>`${e?.count??0} 个已丢弃`,"tasks.detail.error":"错误","tasks.detail.stoppedBecause":"停止原因","tasks.detail.resumeBlocked":"恢复被阻止","tasks.detail.progress":"执行进度","tasks.detail.prompt":"提示词","tasks.detail.type":"类型","tasks.detail.runtime":"时间","tasks.detail.eventCount":"事件数","tasks.detail.pid":"PID","tasks.detail.lastEvent":"最近事件","tasks.detail.droppedCount":"丢弃行数","tasks.detail.exitCode":"退出码","tasks.detail.tokenCount":"Tokens","tasks.detail.toolCallCount":"工具数量","tasks.detail.tokens":e=>`${e?.count??0} tokens`,"tasks.detail.toolCalls":e=>`${e?.count??0} 次工具调用`,"tasks.detail.nesting":"嵌套","tasks.detail.nestingValue":e=>`第 ${e?.level??"?"} 层 · 来自 ${e?.parent??"?"}`,"tasks.detail.nestingLevel":e=>`第 ${e?.level??"?"} 层`,"tasks.row.from":e=>`来自 ${e?.parent??"?"}`,"tasks.row.nested":"嵌套","tips.items":"输入 / 查看所有可用命令。|使用 @ 引用文件路径。|按 Esc 取消正在进行的请求。|使用 Shift+Enter 换行。|按 ↑↓ 浏览历史消息。","tools.available":"可用工具:","tools.none":"没有可用工具。","tools.empty":"没有可用的内置工具。请先打开一个会话。","tools.footer":e=>e?.name?`${e?.details?"Enter/Space 查看详情 · ":""}t 切换 ${e.name} · r 刷新 · Esc 关闭`:"r 刷新 · Esc 关闭","tools.details.hide":"收起详情","tools.details.show":"展开详情","tools.description":"描述","tools.details":"工具详情","tools.loading":"正在加载工具...","tools.name":"工具名称","tools.noDescription":"暂无描述","tools.noMatches":"没有匹配的工具。","tools.search":"搜索工具…","tools.status":"状态","tools.status.disabled":"已禁用","tools.status.enabled":"已启用","tools.summary":e=>`${e?.enabled??0}/${e?.total??0} 已启用`,"tools.title":"工具","tools.update.disable":"禁用","tools.update.enable":"启用","tools.updating":"更新中...","tool.collapse":"▲ 收起","tool.expand":"展开","tool.viewFile":"查看文件","tool.viewImage":"查看图片","tool.viewCurrentFile":"查看当前文件","tool.collapseHint":"收起","tool.status.failed":"执行失败","toolGroup.moreKinds":e=>` +${e?.count??0}`,"toolGroup.summary":e=>`调用了 ${e?.count??0} 个工具`,"toolGroup.summary.ranAgents":e=>`已运行 ${e?.count??0} 个智能体`,"toolGroup.summary.editedFiles":e=>`已编辑文件 ${e?.count??0} 次`,"toolGroup.summary.ranCommands":e=>`已运行 ${e?.count??0} 条命令`,"toolGroup.summary.readFiles":e=>`已读取文件 ${e?.count??0} 次`,"toolGroup.summary.searched":e=>`已搜索 ${e?.count??0} 次`,"toolGroup.summary.updatedTodos":e=>Number(e?.count??0)>1?`已更新任务清单 ${e?.count??0} 次`:"已更新任务清单","toolGroup.summary.provideInformation":"补充信息","toolGroup.summary.askedQuestions":e=>`已询问 ${e?.count??0} 个问题`,"toolGroup.summary.otherTools":e=>`调用了 ${e?.count??0} 个工具`,"toolGroup.running":e=>Number(e?.count??0)>1?`正在执行 ${e?.count??0} 个工具:${e?.name??"工具"}`:`正在执行 ${e?.name??"工具"}`,"toolGroup.runningPrefix":"正在执行","thinking.expand":"展开思考","thinking.collapse":"收起思考","thinking.running":e=>`正在思考${e?.duration?` ${e.duration}`:""}`,"thinking.doneBriefly":"思考片刻","thinking.done":e=>e?.duration?`已思考 ${e.duration}`:"思考完成","thinking.translate":"翻译","thinking.translation":"思考翻译","thinking.translating":"正在翻译…","thinking.translationThinking":"思考中…","thinking.translationFailed":"翻译失败","thinking.retranslate":"重新翻译","thinking.cancelTranslation":"取消","thinking.closeTranslation":"关闭","thinking.inputTokens":e=>`发送 Token:${e?.count??"--"}`,"thinking.outputTokens":e=>`生成 Token:${e?.count??"--"}`,"welcome.changeModel":"(/model 切换)","welcome.defaultModel":"未知模型","sessionsOverview.current":"当前","sessionsOverview.empty":"暂无会话","sessionsOverview.loadFailed":"加载会话失败","sessionsOverview.loading":"正在加载会话…","sessionsOverview.noData":"暂无数据","sessionsOverview.openInSplit":"分屏打开","sessionsOverview.openInSplitHint":"在本窗口内并排显示选中的会话","sessionsOverview.splitLimit":e=>`最多选择 ${e?.max??6} 个会话同时打开`,"sessionsOverview.openInTab":"新标签页打开","sessionsOverview.openInTabHint":"在新标签页中以分屏并排打开选中的会话","sessionsOverview.popupBlocked":"弹出窗口被拦截。请允许本站弹窗,以便在新标签页中打开会话。","sessionsOverview.refresh":"刷新","sessionsOverview.selectAll":"全选","sessionsOverview.titleColumn":"标题","sessionsOverview.actions":"操作","sessionsOverview.time":"时间","sessionsOverview.selectedRows":e=>`${e?.count??0} / ${e?.total??0} 行已选`,"sessionsOverview.previousPage":"上一页","sessionsOverview.nextPage":"下一页","sessionsOverview.pageInfo":e=>`第 ${e?.page??0} / ${e?.total??0} 页`,"sessionsOverview.rowsPerPage":"每页行数","sessionsOverview.workspaceFilter":"按工作区筛选","sessionsOverview.allWorkspaces":"全部","sessionsOverview.searchPlaceholder":"搜索标题、分支、PR 或 ID…","sessionsOverview.workspaceAll":"全部工作区","sessionsOverview.workspacesSelected":e=>`${e?.count??0}/${e?.total??0} 个工作区`,"sessionsOverview.statusColumn":"状态","sessionsOverview.statusFilter":"按会话状态筛选","sessionsOverview.filter.all":"全部","sessionsOverview.filter.attention":"待处理","sessionsOverview.filter.running":"运行中","sessionsOverview.filter.idle":"空闲","sessionsOverview.status.idle":"空闲","sessionsOverview.details":e=>`${e?.name??""}的详情`,"sessionsOverview.sessionCount":e=>`${e?.total??0} 个会话`,"sessionsOverview.confirmArchiveTitle":"归档会话?","sessionsOverview.confirmArchive":e=>`“${e?.name??""}” 将移至已归档会话。`,"sessionsOverview.confirmArchiveBulkTitle":e=>`归档 ${e?.count??0} 个会话?`,"sessionsOverview.confirmArchiveBulk":e=>`选中的 ${e?.count??0} 个会话将移至已归档会话。`,"sessionsOverview.confirmDeleteTitle":"删除会话?","sessionsOverview.confirmDelete":e=>`"${e?.name??""}" 及其对话记录将被永久删除,此操作无法撤销。`,"sessionsOverview.deleteFailed":"删除会话失败","sessionsOverview.archiveFailed":"归档会话失败","sessionsOverview.actionUnavailable":"所选会话或工作区不支持此操作","sessionsOverview.bulkArchive":"归档","sessionsOverview.bulkArchiveHint":e=>`归档选中的 ${e?.count??0} 个会话`,"sessionsOverview.bulkDelete":"删除","sessionsOverview.bulkDeleteHint":e=>`删除选中的 ${e?.count??0} 个会话`,"sessionsOverview.confirmDeleteBulkTitle":e=>`删除 ${e?.count??0} 个会话?`,"sessionsOverview.confirmDeleteBulk":e=>`选中的 ${e?.count??0} 个会话及其对话记录将被永久删除,此操作无法撤销。`,"sessionsOverview.selectSession":e=>`选择 ${e?.name??""}`,"sessionsOverview.status.askUserQuestion":"需要用户输入","sessionsOverview.status.needsApproval":"待审批","sessionsOverview.status.running":"运行中","sessionsOverview.title":"会话总览","workspacesOverview.title":"工作区总览","workspacesOverview.count":e=>`${e?.count??0} 个工作区`,"workspacesOverview.column.name":"名称","workspacesOverview.column.path":"路径","workspacesOverview.column.sessions":"会话","workspacesOverview.column.mcp":"MCP","workspacesOverview.column.git":"分支","workspacesOverview.column.lastActivity":"最近活动","workspacesOverview.column.actions":"操作","workspacesOverview.primaryBadge":"主工作区","workspacesOverview.running":e=>`${e?.count??0} 个运行中`,"workspacesOverview.attention":e=>`${e?.count??0} 个待处理`,"workspacesOverview.truncated":"会话超过一页,计数为下限。","workspacesOverview.dirty":e=>`${e?.count??0} 处改动`,"workspacesOverview.mcpFailed":e=>`${e?.count??0} 个失败`,"workspacesOverview.newTask":"新建任务","workspacesOverview.remove":"移除工作区","workspacesOverview.back":"返回","splitView.title":"分屏","splitView.count":e=>`${e?.count??0} 个窗格`,"splitView.addPane":"添加会话","splitView.closePane":"关闭窗格","splitView.maximizePane":"最大化窗格","splitView.restorePane":"还原窗格","splitView.morePaneActions":"更多窗格操作","splitView.defaultActionLabel":"操作","splitView.paneError":"此会话窗格出错","splitView.paneConnectionError":"连接已断开","splitView.outerApprovalPending":"主会话正在等待审批。","splitView.goToApproval":"前往处理","splitView.pendingCount":e=>`${e?.count??0} 个会话待处理`,"splitView.nextPending":"前往下一个待处理会话","splitView.empty":"分屏中还没有会话,添加一个开始。","splitView.composerPlaceholder":"给这个会话发消息…","settings.title":"设置","capacityChoice.primary":"主工作区","settings.loading":"正在加载设置...","settings.empty":"暂无可用设置。","settings.footer":"↑↓ 导航 Enter 切换 Tab 切换作用域 r 刷新 ESC 关闭","settings.footer.edit":"Enter 保存 ESC 取消","settings.footer.theme":"↑↓ 导航 Enter 选择 ESC 返回","settings.scope.user":"用户","settings.scope.workspace":"工作区","settings.value.on":"开","settings.value.off":"关","settings.action.edit":"编辑","settings.action.select":"选择","settings.action.save":"保存","settings.modifiedIn":e=>`(已在${e?.scope??""}中修改)`,"settings.alsoModifiedIn":e=>`(同时在${e?.scope??""}中修改)`,"settings.invalidNumber":"无效数字","settings.requiresRestart":"此更改需要重启后才能生效。","settings.localControl.title":"本地控制","settings.localControl.description":"通过同一受信任网络中的手机继续当前 O1-Code 会话。","settings.localControl.on":"已开启","settings.localControl.off":"关闭","settings.localControl.network":"本地网络","settings.localControl.selectNetwork":"选择网络","settings.localControl.qr":"本地控制二维码","settings.localControl.enable":"开启本地控制","settings.localControl.disable":"断开手机访问","settings.localControl.encrypted":"已加密","settings.localControl.unencrypted":"未加密,仅限受信任网络;网络变化后请重新启用","settings.localControl.awake":"这台 Mac 将保持唤醒","settings.localControl.maySleep":"这台 Mac 可能进入睡眠","settings.localControl.urlRedacted":"由于该守护进程未配置 bearer token,配对 URL 不在此显示。它已打印到运行守护进程的终端,请到该终端获取配对 URL 完成配对。","localControl.open":"手机访问","localControl.expires":e=>`一次性二维码 · ${e?.seconds??""} 秒后过期 · 自动刷新`,"localControl.expired":"二维码已过期,正在获取新码…","localControl.retry":"重试","localControl.noNetwork":"没有可用的局域网地址。请通过手机可访问的地址打开 Web Shell。","localControl.securePairing":"扫码将授予访问权限,直到 daemon 重启。","localControl.insecurePairing":"扫码将授予访问权限,直到 daemon 重启。流量未加密,请使用受信任网络。","localControl.securePairingDynamic":"扫码将授予此 daemon 的访问权限。扫码的设备保持登录,直到 daemon 重启或该设备上的标签页关闭。","localControl.insecurePairingDynamic":"扫码将授予此 daemon 的访问权限。扫码的设备保持登录,直到 daemon 重启或该设备上的标签页关闭。流量未加密,请使用受信任网络。","localControl.disabledHint":"本地控制未开启。请在设置中开启后,配对同一网络下的手机。","localControl.openSettings":"打开设置","settings.models.title":"模型","settings.models.context":e=>`上下文:${e?.tokens??""} Token`,"settings.models.credentialEnv":"密钥环境变量","settings.models.add":"+ 增加模型","settings.models.setCurrent":"设为当前","settings.models.current":"当前","settings.models.runtime":"运行时","settings.models.savedConfiguration":"已保存配置","settings.models.ambiguousWindow":"多个配置共用此模型端点,无法在此修改窗口大小。","settings.models.delete":"删除","settings.models.confirmDelete":"确认删除","settings.models.cancel":"取消","settings.models.empty":"暂无配置的模型。","settings.models.loading":"正在加载模型…","settings.models.deleteFailed":"删除模型失败","settings.models.runtimeSyncFailed":"更改已保存,但无法刷新正在运行的会话。请重启 o1-code serve 后再使用更新后的模型列表。","settings.models.fallbacks.title":"模型回退","settings.models.fallbacks.hint":e=>`最多选择 ${e?.max??3} 个;主模型容量不足时按顺序回退。`,"settings.models.fallbacks.confirm":"确认","settings.models.fallbacks.empty":"暂无可选模型。","settings.models.fallbacks.saveFailed":"保存回退模型失败","settings.models.fallbacks.limitReached":e=>`最多可选 ${e?.max??3} 个回退模型;请先取消一个再选择其他。`,"settings.corrupted":e=>`设置文件已损坏${e?.recovered==="true"?"(已从备份恢复)":""}`,"browserNotifications.label":"浏览器任务通知","browserNotifications.description":"页面在后台或窗口失焦时,提醒当前聊天和分屏聊天的回合结束或失败。通知包含会话标题、提问和回复摘录。仅保存在此浏览器站点;网页需保持打开。","browserNotifications.prompt":e=>`提问:${e?.text??""}`,"browserNotifications.reply":e=>`回复:${e?.text??""}`,"browserNotifications.completed":"本轮已完成。","browserNotifications.failed":"本轮执行失败,请返回查看。","browserNotifications.ended":"本轮已结束,请返回查看结果。","browserNotifications.allow":"允许通知","browserNotifications.enabled":"已开启。","browserNotifications.disabled":"未开启。","browserNotifications.waiting":"等待浏览器授权。","browserNotifications.denied":"浏览器已阻止通知,请在浏览器站点设置中允许。","browserNotifications.unavailable":"当前浏览器或页面环境无法使用通知。","browserNotifications.requesting":"等待你的授权…","browserNotifications.error":"无法启用或显示通知,请检查浏览器及系统设置。","browserNotifications.temporary":"设置仅在当前页面有效。","settings.label.ui.chatWidth":"屏宽","settings.description.ui.chatWidth":"纯前端的聊天内容宽度设置,保存在当前浏览器中。","settings.option.ui.chatWidth.1000":"常规","settings.option.ui.chatWidth.wide":"超宽","settings.category.General":"通用","settings.category.UI":"界面","settings.category.Privacy":"隐私","settings.category.Model":"模型","settings.category.Context":"上下文","settings.category.Tools":"工具","settings.category.Daemon":"守护进程","settings.category.Connections":"连接","settings.category.Experimental":"实验性","settings.category.Advanced":"高级","settings.label.general.enableAutoUpdate":"启用自动更新","settings.description.general.enableAutoUpdate":"启动时自动检查并安装更新。","settings.label.general.showSessionRecap":"显示会话回顾","settings.description.general.showSessionRecap":"离开终端一段时间后返回时,自动显示一行“上次停在这里”的回顾。默认关闭。也可以随时使用 /recap 手动触发。","settings.label.general.sessionRecapAwayThresholdMinutes":"会话回顾离开阈值(分钟)","settings.description.general.sessionRecapAwayThresholdMinutes":"终端失焦多少分钟后,下一次重新聚焦时触发自动回顾。默认与 Claude Code 一致为 5 分钟;如果只是短暂切换窗口,可以调高。","settings.label.general.cleanupPeriodDays":"清理周期(天)","settings.description.general.cleanupPeriodDays":"~/.o1-code/file-history/ 中用于 /rewind 的会话备份、以及 runtime debug/ 目录下的会话 debug 日志的保留天数。后台清理最多每天运行一次。设为 0 表示最小保留(约 1 小时),仍会保护最近一小时触碰过的会话和当前活动会话。","settings.label.general.gitCoAuthor.commit":"归因:commit","settings.description.general.gitCoAuthor.commit":"通过 O1-Code 创建 commit 时,添加 Co-authored-by trailer,并写入逐文件 AI 归因 git note。关闭后两者都会跳过。","settings.label.general.gitCoAuthor.pr":"归因:PR","settings.description.general.gitCoAuthor.pr":"运行 gh pr create 时,在 PR 描述中追加 O1-Code 归因行。","settings.label.general.language":"语言:界面","settings.description.general.language":"用户界面的语言。使用 auto 可根据系统设置自动检测;也可以在 ~/.o1-code/locales/ 中放置 JS 语言文件来使用自定义语言代码。","settings.label.general.preventSystemSleep":"运行时防止系统睡眠","settings.description.general.preventSystemSleep":"当 O1-Code 正在流式生成模型回复或执行工具时防止系统睡眠。空闲输入状态和权限确认状态不会阻止睡眠。","settings.label.ui.theme":"主题","settings.description.ui.theme":"界面的颜色主题。","settings.label.ui.hideTips":"隐藏提示","settings.description.ui.hideTips":"隐藏界面中的帮助提示。","settings.label.ui.enableWelcomeBack":"显示欢迎回来对话框","settings.description.ui.enableWelcomeBack":"回到有历史会话的项目时显示欢迎回来对话框。选择“开始新的聊天会话”后,在项目摘要变化前不会再次显示。","settings.label.ui.enableUserFeedback":"启用用户反馈","settings.description.ui.enableUserFeedback":"对话结束后显示可选反馈对话框,帮助改进 O1-Code 表现。","settings.label.ui.enableFollowupSuggestions":"启用后续建议","settings.description.ui.enableFollowupSuggestions":"任务完成后显示上下文相关的后续建议。按 Tab 或右方向键插入,按 Enter 接受并提交。","settings.label.ui.shellOutputMaxLines":"Shell 输出最大行数","settings.description.ui.shellOutputMaxLines":"内联显示的 shell 输出最大行数。设为 0 可取消限制并显示完整输出;隐藏行数仍会通过 +N lines 指示器展示。","settings.label.privacy.usageStatisticsEnabled":"启用使用统计","settings.description.privacy.usageStatisticsEnabled":"启用使用统计收集。","settings.label.fastModel":"快速模型","settings.description.fastModel":"用于生成提示建议和推测执行的模型。留空则使用主模型。较小/更快的模型(例如 qwen3-coder-flash)可以降低延迟和成本。","settings.label.visionModel":"视觉模型","settings.description.visionModel":"用于视觉桥接的图像能力模型。留空则自动选择。","settings.label.context.fileFiltering.respectGitIgnore":"遵守 .gitignore","settings.description.context.fileFiltering.respectGitIgnore":"搜索时遵守 .gitignore 文件。","settings.label.context.fileFiltering.respectO1CodeIgnore":"遵守 .o1-codeignore","settings.description.context.fileFiltering.respectO1CodeIgnore":"搜索时遵守 .o1-codeignore 文件。","settings.label.context.fileFiltering.enableFuzzySearch":"启用模糊搜索","settings.description.context.fileFiltering.enableFuzzySearch":"搜索文件时启用模糊搜索。","settings.label.tools.toolSearch.enabled":"启用 ToolSearch","settings.description.tools.toolSearch.enabled":"启用后,deferred 工具会先通过 ToolSearch 检查 schema,再通过 ToolCall 调用。桥接的查看与调用保持工具声明列表稳定——桥接不会把 reveal 的工具重新声明——从而减少提示词大小且不触碰 prompt-cache 前缀。但声明列表并非不可变:会话仍会在以下情况重新声明——恢复会话时;工具集刷新(MCP 发现、会话中首次进入计划模式、子代理定义变更)在实时历史中发现对某个仍隐藏的 deferred 工具的直接调用时;子代理定义变更改写 agent 工具自身描述时;以及 MCP server 在会话中以 alwaysLoadTools: true 注册时。","settings.label.tools.shell.enableInteractiveShell":"交互式 Shell(PTY)","settings.description.tools.shell.enableInteractiveShell":"使用 node-pty 提供交互式 shell 体验。未设置时,明确的单次 prompt 默认使用 child_process;交互式和输入驱动模式默认使用 PTY。","settings.label.policy.permissionStrategy":"权限协调策略","settings.description.policy.permissionStrategy":"多个客户端连接时权限请求的决策方式。first-responder 表示任意客户端先响应者生效;designated 表示仅提示发起方决策;consensus 表示需要 N-of-M 投票同意;local-only 表示只有 loopback 客户端可决策。需要重启 daemon 后生效。","settings.option.policy.permissionStrategy.first-responder":"先响应者","settings.option.policy.permissionStrategy.designated":"指定发起方","settings.option.policy.permissionStrategy.consensus":"共识法定人数","settings.option.policy.permissionStrategy.local-only":"仅本机","settings.label.experimental.enableCronTools":"启用 Cron/Loop 工具","settings.description.experimental.enableCronTools":"启用会话内 cron/loop 工具(实验性)。启用后,模型可以用 cron_create、cron_list 和 cron_delete 创建周期性提示。也可通过 O1CODE_ENABLE_CRON=1 环境变量启用。","settings.label.experimental.sessionWorkflow":"Session Workflow 计划并审阅","settings.description.experimental.sessionWorkflow":"显示 Session Workflow DAG,并将 Plan 模式展示为计划并审阅。","settings.label.experimental.emitToolUseSummaries":"工具使用摘要","settings.description.experimental.emitToolUseSummaries":"每个工具批次完成后生成一个简短的 LLM 标签。已完成工具组的标签会替代通用的 Tool × N 标题;强制展开的工具组下方显示弱化的 ● <label> 行。需要配置快速模型。","settings.label.agents.arena.preserveArtifacts":"保留 Arena 产物","settings.description.agents.arena.preserveArtifacts":"启用后,Arena worktree 和会话状态文件会在会话结束或主智能体退出后保留。","welcome.modeHint":"Shift+Tab 或 /approval-mode","welcome.prompt":"你想构建什么?","welcome.titlePrefix":"欢迎使用","welcome.tipLabel":"提示:"},DNe={en:$V,"zh-CN":LNe},ONe={en:"English [en]","zh-CN":"中文 [zh-CN]"},ufe=d.createContext({language:"en",t:e=>e});function mw(e){const t=e?.trim().toLowerCase();return t&&(t==="zh"||t==="zh-cn"||t==="zh_cn")?"zh-CN":"en"}function BV(e){if(typeof e!="string")return;const t=e.trim().toLowerCase().replace(/_/g,"-");if(t){if(t==="auto")return mw(typeof navigator<"u"?navigator.language:void 0);if(t==="zh"||t==="zh-cn"||t==="chinese"||t==="中文")return"zh-CN";if(t==="en"||t==="en-us"||t==="english")return"en"}}function FV(e){return ONe[e]}function MS(e){const t=DNe[e];return(n,s)=>{const r=t[n]??$V[n]??n;return typeof r=="function"?r(s):r}}function $Ne({language:e,children:t}){const n=d.useMemo(()=>({language:e,t:MS(e)}),[e]);return a.jsx(ufe.Provider,{value:n,children:t})}function Ct(){return d.useContext(ufe)}/**
113
113
  * @license
114
114
  * Copyright 2025 Qwen Team
115
115
  * SPDX-License-Identifier: Apache-2.0
@@ -1091,7 +1091,7 @@ ${n}`:n}function xQ(e){const t=e.data.indexOf(","),n=e.data.startsWith("data:")&
1091
1091
  </head><body><iframe title="${G3(t)}" src="${G3(e.href)}" sandbox="allow-scripts allow-same-origin allow-forms" referrerpolicy="no-referrer"></iframe></body></html>`}function GG(e,t){const n=qP(t);if(KG.has(n))return"Audio";switch(n){case".htm":case".html":return"HTML";case".md":case".markdown":case".mdx":return"Markdown";case".pdf":return"PDF";case".avif":case".bmp":case".gif":case".ico":case".jpeg":case".jpg":case".png":case".svg":case".webp":return"Image";case".mov":case".mp4":case".webm":return"Video";case".doc":case".docx":case".docm":case".dotx":case".odt":return"Word";case".xls":case".xlsx":case".xlsm":case".xlsb":case".ods":return"Excel";case".ppt":case".pptx":case".pptm":case".odp":return"PowerPoint";case".csv":return"CSV"}switch(e){case"html":return"HTML";case"pdf":return"PDF";case"notebook":return"Notebook";case"document":return"Document";default:return e||"artifact"}}const rVe=new Set([".doc",".docx",".docm",".dotx",".xls",".xlsx",".xlsm",".xlsb",".ppt",".pptx",".pptm",".odt",".ods",".odp"]),KG=new Set([".m4a",".mp3",".ogg",".wav"]),oVe=new Set([...rVe,...KG,".pdf",".mp4",".mov",".webm"]);function swe(e){const t=qP(e.workspacePath),n=ub(e.mimeType);return t===".svg"||n==="image/svg+xml"||oVe.has(t)?!0:owe(e)||t===".md"||t===".markdown"||t===".html"||t===".htm"||n==="text/markdown"||n==="text/html"?!1:e.kind==="image"||e.kind==="document"||e.kind==="pdf"||e.kind==="video"||e.kind==="audio"}function qP(e){const n=(e??"").split(/[?#]/,1)[0].split(/[/\\]/).pop()??"",s=n.lastIndexOf(".");return s>=0?n.slice(s).toLowerCase():""}function iVe(e,t){return KG.has(qP(e))||ub(t).startsWith("audio/")}const aVe="o1code.workspace.sha256";function xte(e){const t=e.metadata?.[aVe],n=typeof t=="string"?t:"";return`${e.status}:${e.updatedAt}:${n}`}function lVe(e){const t=e.metadata?.artifactType;return typeof t=="string"&&t?t:GG(e.kind,e.workspacePath??e.url??e.title)}function VP(e){return e===void 0?"":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}const rwe={avif:"image/avif",bmp:"image/bmp",gif:"image/gif",ico:"image/x-icon",jpeg:"image/jpeg",jpg:"image/jpeg",png:"image/png",webp:"image/webp"},cVe=100*1024*1024,uVe=256*1024;function ub(e){return e?.split(";",1)[0]?.trim().toLowerCase()??""}function owe(e){const t=ub(e.mimeType);return t.startsWith("image/")?t==="image/jpg"?"image/jpeg":Object.values(rwe).includes(t)?t:void 0:FS(e.workspacePath??"")}function FS(e){const t=e.toLowerCase(),n=t.includes(".")?t.split(".").pop():void 0;return n?rwe[n]:void 0}function dVe(e){return/\.html?$/i.test(e)?"text/html":"text/markdown"}async function _4(e,t,n,s){const r=[],o=s.maxBytes??cVe,i=await s.statFile(t);if(s.isCancelled?.())throw new Error("File loading was cancelled.");if(i.type==="directory")throw new Error("Directories cannot be opened or downloaded as artifacts.");if(i.sizeBytes>o)throw new Error("File is too large to preview or download.");let l=0;for(;;){if(s.isCancelled?.())throw new Error("File loading was cancelled.");const c=await e(t,{offset:l,maxBytes:uVe});if(s.isCancelled?.())throw new Error("File loading was cancelled.");if(c.sizeBytes!==i.sizeBytes)throw new Error("File changed while loading. Please retry.");if(c.returnedBytes<=0&&l<i.sizeBytes)throw new Error("File loading made no progress.");const u=atob(c.contentBase64),h=new Uint8Array(u.length);for(let f=0;f<u.length;f++)h[f]=u.charCodeAt(f);if(r.push(h),l=c.offset+c.returnedBytes,l>=i.sizeBytes){const f=await s.statFile(t);if(s.isCancelled?.())throw new Error("File loading was cancelled.");if(f.sizeBytes!==i.sizeBytes||f.modifiedMs!==i.modifiedMs)throw new Error("File changed while loading. Please retry.");return new Blob(r,{type:n})}}}async function GP(e,t,n="application/octet-stream",s){const r=await _4((i,l)=>e.readFileBytes(i,l),t,n,{statFile:i=>e.stat(i),isCancelled:s}),o=URL.createObjectURL(r);try{const i=document.createElement("a");i.href=o,i.download=db(t).split("/").at(-1)??t,document.body.appendChild(i),i.click(),i.remove()}finally{URL.revokeObjectURL(o)}}function iwe(e){return e.workspacePath??e.url??e.managedId??""}function db(e){const t=(e??"").replaceAll("\\","/").replace(/^\.\//,"").replace(/\/+$/,""),n=t.startsWith("/"),s=[];for(const o of t.split("/"))if(!(!o||o===".")){if(o===".."){s.length>0&&s.at(-1)!==".."?s.pop():n||s.push(o);continue}s.push(o)}const r=s.join("/");return n?`/${r}`:r}function $E(e,t){const n=db(e),s=db(t);if(!s)return n;if(n===s)return n.split("/").pop()??n;const r=`${s}/`;return n.startsWith(r)?n.slice(r.length):n}function YG(e,t,n){const s=$E(e??"",n),r=$E(t??"",n);return!!s&&s===r}const xH="default-src 'none'; base-uri 'none'; form-action 'none'; script-src 'unsafe-inline' data:; style-src 'unsafe-inline' data:; img-src data: blob:; font-src data:; media-src data:;";function awe(e,t){return kH(_H(e),t)}function kH(e,t){return`<!doctype html><html><head>
1092
1092
  <meta http-equiv="Content-Security-Policy" content="${xH} frame-src 'none';">
1093
1093
  <style>html,body,iframe{width:100%;height:100%;margin:0;border:0;display:block;overflow:hidden}</style>
1094
- </head><body><iframe title="${G3(t)}" sandbox="allow-scripts" referrerpolicy="no-referrer" srcdoc="${G3(e)}"></iframe></body></html>`}let Mj;async function hVe(e,t,n){if(Mj?.content===e&&Mj.title===t)return Mj.document;const s=await fVe(e,t,n);return Mj={content:e,title:t,document:s},s}async function fVe(e,t,n){if(typeof DOMParser>"u")return awe(e,t);const s=new DOMParser().parseFromString(e,"text/html");if(!s.querySelector('script#transcript-document[type="application/json"]'))return kH(_H(s),t);const r=new AbortController,o=()=>r.abort();n.addEventListener("abort",o,{once:!0}),n.aborted&&r.abort();try{await Promise.all([["script#transcript-renderer","src","js","text/javascript"],['link#transcript-stylesheet[rel="stylesheet"]',"href","css","text/css"]].map(async([i,l,c,u])=>{const h=s.querySelector(i),f=h?.getAttribute(l)??"",m=h?.getAttribute("integrity")??"";if(!h)return;const g=`https://unpkg.com/@organizaone/o1-code@0.19.4/export-transcript-document.${c}`;if(f!==g||!/^sha384-[A-Za-z0-9+/]{64}$/.test(m))throw new Error("Unsupported export preview resource; use an export matching the current Web Shell version.");const w=await fetch(f,{integrity:m,signal:r.signal,credentials:"omit",referrerPolicy:"no-referrer",redirect:"error"});if(!w.ok)throw new Error(`Could not load export renderer (${w.status}).`);const y=new Blob([await w.arrayBuffer()],{type:u}),x=await new Promise((k,_)=>{const S=new FileReader;S.onload=()=>k(S.result),S.onerror=()=>_(S.error),S.readAsDataURL(y)});h.setAttribute(l,x),h.removeAttribute("integrity"),h.removeAttribute("crossorigin")}))}finally{n.removeEventListener("abort",o),r.abort()}return kH(_H(s),t)}function _H(e){if(typeof e=="string"&&typeof DOMParser>"u")return`<!doctype html><html><head><meta http-equiv="Content-Security-Policy" content="${xH}"></head><body>${pVe(e)}</body></html>`;const t=typeof e=="string"?new DOMParser().parseFromString(e,"text/html"):e;t.querySelectorAll('noscript, meta[http-equiv="refresh" i], meta[http-equiv="Content-Security-Policy" i]').forEach(s=>s.remove());const n=t.createElement("meta");return n.httpEquiv="Content-Security-Policy",n.content=xH,t.head.prepend(n),`<!doctype html>${t.documentElement.outerHTML}`}function pVe(e){return e.replace(/<noscript\b[^>]*>[\s\S]*?<\/noscript>/gi,"").replace(/<meta\b(?=[^>]*\bhttp-equiv\s*=\s*["']?refresh["']?)[^>]*>/gi,"").replace(/<meta\b(?=[^>]*\bhttp-equiv\s*=\s*["']?Content-Security-Policy["']?)[^>]*>/gi,"")}const lwe={csv:Gqe,file:Kqe,html:Yqe,image:Xqe,link:Zqe,md:Jqe,pdf:Qqe,spreadsheet:eVe,video:tVe,word:nVe},mVe={csv:"csv",html:"html",image:"image",link:"link",markdown:"md",md:"md",pdf:"pdf",spreadsheet:"spreadsheet",video:"video",word:"word"},gVe={audio:HG,document:k4,notebook:_We},kte={avif:"image",bmp:"image",csv:"csv",doc:"word",docm:"word",docx:"word",dotx:"word",gif:"image",htm:"html",html:"html",ico:"image",jpeg:"image",jpg:"image",md:"md",markdown:"md",mdx:"md",mov:"video",mp4:"video",ods:"spreadsheet",odt:"word",pdf:"pdf",png:"image",svg:"image",webm:"video",webp:"image",xls:"spreadsheet",xlsb:"spreadsheet",xlsm:"spreadsheet",xlsx:"spreadsheet"};function cwe(e){if(!e)return"file";const t=e.workspacePath??e.url??e.title,n=qP(t).slice(1);if(n&&kte[n])return kte[n];const s=ub(e.mimeType);return s==="application/pdf"?"pdf":s.startsWith("image/")?"image":s.startsWith("video/")?"video":s==="text/csv"?"csv":s.includes("spreadsheet")||s.includes("ms-excel")?"spreadsheet":s.includes("wordprocessingml")||s==="application/msword"?"word":s==="text/html"?"html":s==="text/markdown"?"md":mVe[e.kind]??"file"}function uwe({artifact:e,className:t}){const{artifact:n}=Th(),s=e?n?.renderImage?.(e):void 0;if(s!=null&&s!==!1)return s;const r=cwe(e),o=e?e.workspacePath??e.url??e.title:void 0,i=r==="file"&&e?iVe(o,e.mimeType)?"audio":e.kind:void 0,l=i?gVe[i]:void 0;return l?a.jsx(l,{className:t,"data-artifact-icon":i,"aria-hidden":"true"}):a.jsx("img",{className:t,src:lwe[r],"data-artifact-icon":r,alt:""})}const vVe=[[new Set(["json","jsonl","geojson"]),tHe],[new Set(["js","jsx","ts","tsx","mjs","cjs","css","html","htm","xml","svg","py","rb","go","rs","java","c","cc","cpp","h","hpp","sh","sql","yaml","yml","toml"]),Q8],[new Set(["zip","tar","gz","tgz","bz2","xz","7z","rar"]),eUe],[new Set(["csv","tsv","xls","xlsx","ods"]),aUe],[new Set(["ppt","pptx","odp"]),zWe],[new Set(["png","jpg","jpeg","gif","webp","bmp","ico","tif","tiff"]),Dve],[new Set(["mp3","wav","ogg","m4a","aac","flac"]),HG],[new Set(["mp4","mov","webm","avi","mkv"]),Ove],[new Set(["txt","md","mdx","log","pdf","doc","docx","rtf"]),k4]];function wVe(e,t){const n=e.split(".").pop()?.toLowerCase()??"";for(const[s,r]of vVe)if(s.has(n))return r;return t?.startsWith("image/")?Dve:t?.startsWith("audio/")?HG:t?.startsWith("video/")?Ove:t?.startsWith("text/")?k4:$ve}function U0({name:e,mimeType:t,size:n=24,absoluteStrokeWidth:s,...r}){const o=wVe(e,t),i=cwe({kind:"file",title:e.replace(/[?#]/g,"_"),mimeType:t});return i!=="file"||o===$ve?a.jsx("svg",{width:n,height:n,...r,"data-file-type-icon":i,children:a.jsx("image",{href:lwe[i],width:"100%",height:"100%"})}):a.jsx(o,{size:n,absoluteStrokeWidth:s,...r})}const yVe="_panel_19vsn_1",bVe="_floating_19vsn_16",xVe="_section_19vsn_26",kVe="_sectionHeader_19vsn_40",_Ve="_sectionHeaderRow_19vsn_59",SVe="_sectionAction_19vsn_70",CVe="_sectionContent_19vsn_111",TVe="_row_19vsn_115",IVe="_workspaceIcon_19vsn_158",RVe="_rowActionIcon_19vsn_162",EVe="_label_19vsn_168",AVe="_branchName_19vsn_173",jVe="_value_19vsn_181",NVe="_tasks_19vsn_191",MVe="_task_19vsn_191",PVe="_taskIcon_19vsn_229",LVe="_taskLabel_19vsn_240",DVe="_agentName_19vsn_248",OVe="_taskName_19vsn_249",$Ve="_agentColor_19vsn_260",BVe="_agentTag_19vsn_269",FVe="_taskStatus_19vsn_280",zVe="_statusRunning_19vsn_301",HVe="_attachmentFiles_19vsn_311",UVe="_attachmentFile_19vsn_311",WVe="_attachmentFileIcon_19vsn_344",qVe="_attachmentFileName_19vsn_348",VVe="_emptyDescription_19vsn_356",GVe="_sourceTitle_19vsn_363",Hr={panel:yVe,floating:bVe,section:xVe,sectionHeader:kVe,sectionHeaderRow:_Ve,sectionAction:SVe,sectionContent:CVe,row:TVe,workspaceIcon:IVe,rowActionIcon:RVe,label:EVe,branchName:AVe,value:jVe,tasks:NVe,task:MVe,taskIcon:PVe,taskLabel:LVe,agentName:DVe,taskName:OVe,agentColor:$Ve,agentTag:BVe,taskStatus:FVe,statusRunning:zVe,attachmentFiles:HVe,attachmentFile:UVe,attachmentFileIcon:WVe,attachmentFileName:qVe,emptyDescription:VVe,sourceTitle:GVe};function dwe({entries:e,onOpen:t}){const{t:n}=Ct();return a.jsx("ul",{className:Hr.attachmentFiles,children:e.map(s=>a.jsx("li",{children:a.jsxs("button",{type:"button",className:Hr.attachmentFile,title:wte(s),"aria-label":s.type==="source"?`${n("sources.open")} ${vte(s)}`:void 0,disabled:!t,onClick:()=>t?.(s),children:[s.type==="source"&&s.source.kind==="link"?a.jsx(Fve,{size:16,strokeWidth:1.7,className:Hr.attachmentFileIcon}):a.jsx(U0,{name:wte(s),mimeType:s.type==="attachment"?s.attachment.mimeType:void 0,size:16,strokeWidth:1.7,className:Hr.attachmentFileIcon,"aria-hidden":"true"}),a.jsx("span",{className:Hr.attachmentFileName,children:vte(s)})]})},AM(s)))})}function ow({className:e,...t}){return a.jsx("div",{"data-slot":"skeleton",className:cs("animate-pulse rounded-md bg-muted",e),...t})}function KVe(){return typeof window>"u"?!1:new URLSearchParams(window.location.search).get("addSource")==="1"}function YVe({hidden:e=!1,state:t,attachments:n=[],attachmentsLoading:s=!1,attachmentsError:r,onRetryAttachments:o,onOpen:i,retryRegistration:l,onDialogOpenChange:c,onReadImage:u,onImagePreview:h,onAttachmentPreview:f,onAttachmentPreviewError:m}){const{t:g}=Ct(),[w,y]=d.useState(!1),[x,k]=d.useState(!1);d.useEffect(()=>{e&&k(!1)},[e]),d.useEffect(()=>{k(!1),y(!1)},[t?.owner,t?.supported]),d.useEffect(()=>(c?.(x&&t?.supported===!0),()=>c?.(!1)),[x,c,t?.supported]);const _=t?.supported?t.sources:[],S=Qve(_,n);if(!t?.supported&&!S.length&&!s&&!r)return null;const I=s||t?.supported&&t.loading;return a.jsxs("section",{className:Hr.section,"aria-label":g("sources.title"),"data-testid":"sources-section",children:[a.jsxs("div",{className:Hr.sectionHeaderRow,children:[a.jsxs("h3",{className:`${Hr.sectionHeader} ${Hr.sourceTitle}`,children:[g("sources.title")," ",a.jsx("span",{className:"text-muted-foreground",children:S.length})]}),t?.supported&&KVe()&&a.jsx("button",{type:"button",className:Hr.sectionAction,"aria-label":g("sources.add"),onClick:()=>k(!0),children:a.jsx(Qf,{})})]}),l&&a.jsxs("div",{className:Hr.emptyDescription,role:"alert",children:[g("sources.registrationFailed")," ",a.jsx(Wt,{size:"sm",variant:"link",onClick:()=>void l(),children:g("common.retry")})]}),t?.supported&&t.error&&a.jsxs("div",{className:"mt-2 text-xs text-destructive",role:"alert",children:[t.error," ",a.jsx(Wt,{size:"sm",variant:"link",onClick:()=>void t.refresh(),children:g("common.retry")})]}),r&&a.jsxs("div",{className:"mt-2 text-xs text-destructive",role:"alert",children:[g("sources.attachmentsLoadFailed",{error:r})," ",a.jsx(Wt,{size:"sm",variant:"link",onClick:o,children:g("common.retry")})]}),a.jsx(dwe,{entries:w?S:S.slice(0,3),onOpen:E=>hwe(E,{onOpen:i,onReadImage:u,onImagePreview:h,onAttachmentPreview:f,onAttachmentPreviewError:m})}),I&&!S.length&&a.jsx("ul",{className:Hr.attachmentFiles,"data-testid":"environment-file-list-skeleton",role:"status","aria-label":g("common.loading"),children:[72,88,64].map(E=>a.jsxs("li",{className:Hr.attachmentFile,children:[a.jsx(ow,{className:"size-4 shrink-0 rounded-sm"}),a.jsx(ow,{className:"h-4",style:{width:`${E}%`}})]},E))}),!I&&!S.length&&t?.hydrated&&!t.error&&!r&&a.jsx("p",{className:Hr.emptyDescription,children:g("sources.empty")}),S.length>3&&a.jsx("button",{type:"button",className:Hr.attachmentFile,"aria-expanded":w,onClick:()=>y(E=>!E),children:g(w?"common.collapse":"sources.viewAll")}),x&&t?.supported&&a.jsx(XVe,{state:t,onClose:()=>k(!1)})]})}function XVe({state:e,onClose:t}){const{t:n}=Ct(),[s,r]=d.useState("workspace_file"),[o,i]=d.useState(""),[l,c]=d.useState(""),[u,h]=d.useState(""),[f,m]=d.useState(),[g,w]=d.useState(!1),y=async()=>{w(!0),m(void 0);try{const x=s==="url"?new URL(o).hostname:o.split(/[\\/]/).at(-1)||o,k=s==="workspace_file"?{type:s,workspacePath:o}:{type:s,url:o};await e.upsert({title:l.trim()||x.trim().slice(0,200),locator:k,...u?{description:u}:{}}),e.owner.isCurrent()&&t()}catch(x){e.owner.isCurrent()&&m(x instanceof Error?x.message:String(x))}finally{e.owner.isCurrent()&&w(!1)}};return a.jsx(Wa,{title:n("sources.add"),subtitle:n("sources.explanation"),onClose:t,size:"sm",children:a.jsxs("form",{className:"flex flex-col gap-3",onSubmit:x=>{x.preventDefault(),y()},children:[a.jsxs("label",{className:"flex flex-col gap-1 text-sm",children:[n("sources.type"),a.jsxs("select",{className:"h-8 rounded-lg border border-input bg-background px-2",value:s,onChange:x=>{r(x.target.value),i(""),m(void 0)},children:[a.jsx("option",{value:"workspace_file",children:n("sources.workspaceFile")}),a.jsx("option",{value:"url",children:n("sources.link")})]})]}),a.jsxs("label",{className:"flex flex-col gap-1 text-sm",children:[n("sources.location"),a.jsx(hi,{value:o,onChange:x=>i(x.target.value),required:!0,maxLength:s==="url"?2048:500,placeholder:s==="url"?"https://example.com":"docs/requirements.md"})]}),a.jsxs("label",{className:"flex flex-col gap-1 text-sm",children:[n("sources.name"),a.jsx(hi,{value:l,maxLength:200,onChange:x=>c(x.target.value)})]}),a.jsxs("label",{className:"flex flex-col gap-1 text-sm",children:[n("sources.description"),a.jsx(hi,{value:u,maxLength:1e3,onChange:x=>h(x.target.value)})]}),f&&a.jsx("div",{role:"alert",className:"text-xs text-destructive",children:f}),a.jsx(Wt,{type:"submit",disabled:g||!o,children:n("sources.add")})]})})}function hwe(e,t){if(e.type==="source"){t.onOpen?.(e.source);return}const n=e.attachment;if(n.type==="image"){t.onReadImage?.(n.attachmentId).then(s=>t.onImagePreview?.(s,n.attachmentId,{kind:"attachment",attachmentId:n.attachmentId})).catch(s=>t.onAttachmentPreviewError?.(s));return}t.onAttachmentPreview?.({name:n.attachmentId,mimeType:n.mimeType,attachmentId:n.attachmentId})}/**
1094
+ </head><body><iframe title="${G3(t)}" sandbox="allow-scripts" referrerpolicy="no-referrer" srcdoc="${G3(e)}"></iframe></body></html>`}let Mj;async function hVe(e,t,n){if(Mj?.content===e&&Mj.title===t)return Mj.document;const s=await fVe(e,t,n);return Mj={content:e,title:t,document:s},s}async function fVe(e,t,n){if(typeof DOMParser>"u")return awe(e,t);const s=new DOMParser().parseFromString(e,"text/html");if(!s.querySelector('script#transcript-document[type="application/json"]'))return kH(_H(s),t);const r=new AbortController,o=()=>r.abort();n.addEventListener("abort",o,{once:!0}),n.aborted&&r.abort();try{await Promise.all([["script#transcript-renderer","src","js","text/javascript"],['link#transcript-stylesheet[rel="stylesheet"]',"href","css","text/css"]].map(async([i,l,c,u])=>{const h=s.querySelector(i),f=h?.getAttribute(l)??"",m=h?.getAttribute("integrity")??"";if(!h)return;const g=`https://unpkg.com/@organizaone/o1-code@0.20.1/export-transcript-document.${c}`;if(f!==g||!/^sha384-[A-Za-z0-9+/]{64}$/.test(m))throw new Error("Unsupported export preview resource; use an export matching the current Web Shell version.");const w=await fetch(f,{integrity:m,signal:r.signal,credentials:"omit",referrerPolicy:"no-referrer",redirect:"error"});if(!w.ok)throw new Error(`Could not load export renderer (${w.status}).`);const y=new Blob([await w.arrayBuffer()],{type:u}),x=await new Promise((k,_)=>{const S=new FileReader;S.onload=()=>k(S.result),S.onerror=()=>_(S.error),S.readAsDataURL(y)});h.setAttribute(l,x),h.removeAttribute("integrity"),h.removeAttribute("crossorigin")}))}finally{n.removeEventListener("abort",o),r.abort()}return kH(_H(s),t)}function _H(e){if(typeof e=="string"&&typeof DOMParser>"u")return`<!doctype html><html><head><meta http-equiv="Content-Security-Policy" content="${xH}"></head><body>${pVe(e)}</body></html>`;const t=typeof e=="string"?new DOMParser().parseFromString(e,"text/html"):e;t.querySelectorAll('noscript, meta[http-equiv="refresh" i], meta[http-equiv="Content-Security-Policy" i]').forEach(s=>s.remove());const n=t.createElement("meta");return n.httpEquiv="Content-Security-Policy",n.content=xH,t.head.prepend(n),`<!doctype html>${t.documentElement.outerHTML}`}function pVe(e){return e.replace(/<noscript\b[^>]*>[\s\S]*?<\/noscript>/gi,"").replace(/<meta\b(?=[^>]*\bhttp-equiv\s*=\s*["']?refresh["']?)[^>]*>/gi,"").replace(/<meta\b(?=[^>]*\bhttp-equiv\s*=\s*["']?Content-Security-Policy["']?)[^>]*>/gi,"")}const lwe={csv:Gqe,file:Kqe,html:Yqe,image:Xqe,link:Zqe,md:Jqe,pdf:Qqe,spreadsheet:eVe,video:tVe,word:nVe},mVe={csv:"csv",html:"html",image:"image",link:"link",markdown:"md",md:"md",pdf:"pdf",spreadsheet:"spreadsheet",video:"video",word:"word"},gVe={audio:HG,document:k4,notebook:_We},kte={avif:"image",bmp:"image",csv:"csv",doc:"word",docm:"word",docx:"word",dotx:"word",gif:"image",htm:"html",html:"html",ico:"image",jpeg:"image",jpg:"image",md:"md",markdown:"md",mdx:"md",mov:"video",mp4:"video",ods:"spreadsheet",odt:"word",pdf:"pdf",png:"image",svg:"image",webm:"video",webp:"image",xls:"spreadsheet",xlsb:"spreadsheet",xlsm:"spreadsheet",xlsx:"spreadsheet"};function cwe(e){if(!e)return"file";const t=e.workspacePath??e.url??e.title,n=qP(t).slice(1);if(n&&kte[n])return kte[n];const s=ub(e.mimeType);return s==="application/pdf"?"pdf":s.startsWith("image/")?"image":s.startsWith("video/")?"video":s==="text/csv"?"csv":s.includes("spreadsheet")||s.includes("ms-excel")?"spreadsheet":s.includes("wordprocessingml")||s==="application/msword"?"word":s==="text/html"?"html":s==="text/markdown"?"md":mVe[e.kind]??"file"}function uwe({artifact:e,className:t}){const{artifact:n}=Th(),s=e?n?.renderImage?.(e):void 0;if(s!=null&&s!==!1)return s;const r=cwe(e),o=e?e.workspacePath??e.url??e.title:void 0,i=r==="file"&&e?iVe(o,e.mimeType)?"audio":e.kind:void 0,l=i?gVe[i]:void 0;return l?a.jsx(l,{className:t,"data-artifact-icon":i,"aria-hidden":"true"}):a.jsx("img",{className:t,src:lwe[r],"data-artifact-icon":r,alt:""})}const vVe=[[new Set(["json","jsonl","geojson"]),tHe],[new Set(["js","jsx","ts","tsx","mjs","cjs","css","html","htm","xml","svg","py","rb","go","rs","java","c","cc","cpp","h","hpp","sh","sql","yaml","yml","toml"]),Q8],[new Set(["zip","tar","gz","tgz","bz2","xz","7z","rar"]),eUe],[new Set(["csv","tsv","xls","xlsx","ods"]),aUe],[new Set(["ppt","pptx","odp"]),zWe],[new Set(["png","jpg","jpeg","gif","webp","bmp","ico","tif","tiff"]),Dve],[new Set(["mp3","wav","ogg","m4a","aac","flac"]),HG],[new Set(["mp4","mov","webm","avi","mkv"]),Ove],[new Set(["txt","md","mdx","log","pdf","doc","docx","rtf"]),k4]];function wVe(e,t){const n=e.split(".").pop()?.toLowerCase()??"";for(const[s,r]of vVe)if(s.has(n))return r;return t?.startsWith("image/")?Dve:t?.startsWith("audio/")?HG:t?.startsWith("video/")?Ove:t?.startsWith("text/")?k4:$ve}function U0({name:e,mimeType:t,size:n=24,absoluteStrokeWidth:s,...r}){const o=wVe(e,t),i=cwe({kind:"file",title:e.replace(/[?#]/g,"_"),mimeType:t});return i!=="file"||o===$ve?a.jsx("svg",{width:n,height:n,...r,"data-file-type-icon":i,children:a.jsx("image",{href:lwe[i],width:"100%",height:"100%"})}):a.jsx(o,{size:n,absoluteStrokeWidth:s,...r})}const yVe="_panel_19vsn_1",bVe="_floating_19vsn_16",xVe="_section_19vsn_26",kVe="_sectionHeader_19vsn_40",_Ve="_sectionHeaderRow_19vsn_59",SVe="_sectionAction_19vsn_70",CVe="_sectionContent_19vsn_111",TVe="_row_19vsn_115",IVe="_workspaceIcon_19vsn_158",RVe="_rowActionIcon_19vsn_162",EVe="_label_19vsn_168",AVe="_branchName_19vsn_173",jVe="_value_19vsn_181",NVe="_tasks_19vsn_191",MVe="_task_19vsn_191",PVe="_taskIcon_19vsn_229",LVe="_taskLabel_19vsn_240",DVe="_agentName_19vsn_248",OVe="_taskName_19vsn_249",$Ve="_agentColor_19vsn_260",BVe="_agentTag_19vsn_269",FVe="_taskStatus_19vsn_280",zVe="_statusRunning_19vsn_301",HVe="_attachmentFiles_19vsn_311",UVe="_attachmentFile_19vsn_311",WVe="_attachmentFileIcon_19vsn_344",qVe="_attachmentFileName_19vsn_348",VVe="_emptyDescription_19vsn_356",GVe="_sourceTitle_19vsn_363",Hr={panel:yVe,floating:bVe,section:xVe,sectionHeader:kVe,sectionHeaderRow:_Ve,sectionAction:SVe,sectionContent:CVe,row:TVe,workspaceIcon:IVe,rowActionIcon:RVe,label:EVe,branchName:AVe,value:jVe,tasks:NVe,task:MVe,taskIcon:PVe,taskLabel:LVe,agentName:DVe,taskName:OVe,agentColor:$Ve,agentTag:BVe,taskStatus:FVe,statusRunning:zVe,attachmentFiles:HVe,attachmentFile:UVe,attachmentFileIcon:WVe,attachmentFileName:qVe,emptyDescription:VVe,sourceTitle:GVe};function dwe({entries:e,onOpen:t}){const{t:n}=Ct();return a.jsx("ul",{className:Hr.attachmentFiles,children:e.map(s=>a.jsx("li",{children:a.jsxs("button",{type:"button",className:Hr.attachmentFile,title:wte(s),"aria-label":s.type==="source"?`${n("sources.open")} ${vte(s)}`:void 0,disabled:!t,onClick:()=>t?.(s),children:[s.type==="source"&&s.source.kind==="link"?a.jsx(Fve,{size:16,strokeWidth:1.7,className:Hr.attachmentFileIcon}):a.jsx(U0,{name:wte(s),mimeType:s.type==="attachment"?s.attachment.mimeType:void 0,size:16,strokeWidth:1.7,className:Hr.attachmentFileIcon,"aria-hidden":"true"}),a.jsx("span",{className:Hr.attachmentFileName,children:vte(s)})]})},AM(s)))})}function ow({className:e,...t}){return a.jsx("div",{"data-slot":"skeleton",className:cs("animate-pulse rounded-md bg-muted",e),...t})}function KVe(){return typeof window>"u"?!1:new URLSearchParams(window.location.search).get("addSource")==="1"}function YVe({hidden:e=!1,state:t,attachments:n=[],attachmentsLoading:s=!1,attachmentsError:r,onRetryAttachments:o,onOpen:i,retryRegistration:l,onDialogOpenChange:c,onReadImage:u,onImagePreview:h,onAttachmentPreview:f,onAttachmentPreviewError:m}){const{t:g}=Ct(),[w,y]=d.useState(!1),[x,k]=d.useState(!1);d.useEffect(()=>{e&&k(!1)},[e]),d.useEffect(()=>{k(!1),y(!1)},[t?.owner,t?.supported]),d.useEffect(()=>(c?.(x&&t?.supported===!0),()=>c?.(!1)),[x,c,t?.supported]);const _=t?.supported?t.sources:[],S=Qve(_,n);if(!t?.supported&&!S.length&&!s&&!r)return null;const I=s||t?.supported&&t.loading;return a.jsxs("section",{className:Hr.section,"aria-label":g("sources.title"),"data-testid":"sources-section",children:[a.jsxs("div",{className:Hr.sectionHeaderRow,children:[a.jsxs("h3",{className:`${Hr.sectionHeader} ${Hr.sourceTitle}`,children:[g("sources.title")," ",a.jsx("span",{className:"text-muted-foreground",children:S.length})]}),t?.supported&&KVe()&&a.jsx("button",{type:"button",className:Hr.sectionAction,"aria-label":g("sources.add"),onClick:()=>k(!0),children:a.jsx(Qf,{})})]}),l&&a.jsxs("div",{className:Hr.emptyDescription,role:"alert",children:[g("sources.registrationFailed")," ",a.jsx(Wt,{size:"sm",variant:"link",onClick:()=>void l(),children:g("common.retry")})]}),t?.supported&&t.error&&a.jsxs("div",{className:"mt-2 text-xs text-destructive",role:"alert",children:[t.error," ",a.jsx(Wt,{size:"sm",variant:"link",onClick:()=>void t.refresh(),children:g("common.retry")})]}),r&&a.jsxs("div",{className:"mt-2 text-xs text-destructive",role:"alert",children:[g("sources.attachmentsLoadFailed",{error:r})," ",a.jsx(Wt,{size:"sm",variant:"link",onClick:o,children:g("common.retry")})]}),a.jsx(dwe,{entries:w?S:S.slice(0,3),onOpen:E=>hwe(E,{onOpen:i,onReadImage:u,onImagePreview:h,onAttachmentPreview:f,onAttachmentPreviewError:m})}),I&&!S.length&&a.jsx("ul",{className:Hr.attachmentFiles,"data-testid":"environment-file-list-skeleton",role:"status","aria-label":g("common.loading"),children:[72,88,64].map(E=>a.jsxs("li",{className:Hr.attachmentFile,children:[a.jsx(ow,{className:"size-4 shrink-0 rounded-sm"}),a.jsx(ow,{className:"h-4",style:{width:`${E}%`}})]},E))}),!I&&!S.length&&t?.hydrated&&!t.error&&!r&&a.jsx("p",{className:Hr.emptyDescription,children:g("sources.empty")}),S.length>3&&a.jsx("button",{type:"button",className:Hr.attachmentFile,"aria-expanded":w,onClick:()=>y(E=>!E),children:g(w?"common.collapse":"sources.viewAll")}),x&&t?.supported&&a.jsx(XVe,{state:t,onClose:()=>k(!1)})]})}function XVe({state:e,onClose:t}){const{t:n}=Ct(),[s,r]=d.useState("workspace_file"),[o,i]=d.useState(""),[l,c]=d.useState(""),[u,h]=d.useState(""),[f,m]=d.useState(),[g,w]=d.useState(!1),y=async()=>{w(!0),m(void 0);try{const x=s==="url"?new URL(o).hostname:o.split(/[\\/]/).at(-1)||o,k=s==="workspace_file"?{type:s,workspacePath:o}:{type:s,url:o};await e.upsert({title:l.trim()||x.trim().slice(0,200),locator:k,...u?{description:u}:{}}),e.owner.isCurrent()&&t()}catch(x){e.owner.isCurrent()&&m(x instanceof Error?x.message:String(x))}finally{e.owner.isCurrent()&&w(!1)}};return a.jsx(Wa,{title:n("sources.add"),subtitle:n("sources.explanation"),onClose:t,size:"sm",children:a.jsxs("form",{className:"flex flex-col gap-3",onSubmit:x=>{x.preventDefault(),y()},children:[a.jsxs("label",{className:"flex flex-col gap-1 text-sm",children:[n("sources.type"),a.jsxs("select",{className:"h-8 rounded-lg border border-input bg-background px-2",value:s,onChange:x=>{r(x.target.value),i(""),m(void 0)},children:[a.jsx("option",{value:"workspace_file",children:n("sources.workspaceFile")}),a.jsx("option",{value:"url",children:n("sources.link")})]})]}),a.jsxs("label",{className:"flex flex-col gap-1 text-sm",children:[n("sources.location"),a.jsx(hi,{value:o,onChange:x=>i(x.target.value),required:!0,maxLength:s==="url"?2048:500,placeholder:s==="url"?"https://example.com":"docs/requirements.md"})]}),a.jsxs("label",{className:"flex flex-col gap-1 text-sm",children:[n("sources.name"),a.jsx(hi,{value:l,maxLength:200,onChange:x=>c(x.target.value)})]}),a.jsxs("label",{className:"flex flex-col gap-1 text-sm",children:[n("sources.description"),a.jsx(hi,{value:u,maxLength:1e3,onChange:x=>h(x.target.value)})]}),f&&a.jsx("div",{role:"alert",className:"text-xs text-destructive",children:f}),a.jsx(Wt,{type:"submit",disabled:g||!o,children:n("sources.add")})]})})}function hwe(e,t){if(e.type==="source"){t.onOpen?.(e.source);return}const n=e.attachment;if(n.type==="image"){t.onReadImage?.(n.attachmentId).then(s=>t.onImagePreview?.(s,n.attachmentId,{kind:"attachment",attachmentId:n.attachmentId})).catch(s=>t.onAttachmentPreviewError?.(s));return}t.onAttachmentPreview?.({name:n.attachmentId,mimeType:n.mimeType,attachmentId:n.attachmentId})}/**
1095
1095
  * @license
1096
1096
  * Copyright 2026 Qwen Team
1097
1097
  * SPDX-License-Identifier: Apache-2.0
@@ -1615,13 +1615,13 @@ License: MIT
1615
1615
  })();`,qct=`<!doctype html>
1616
1616
  <html><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="${Hct}"></head>
1617
1617
  <body><script>${Wct}<\/script></body></html>`;function Vct(){const e=globalThis.crypto;if(!e?.getRandomValues)throw new sr("LEGACY_SANDBOX_UNAVAILABLE","Secure random values are required by the temporary legacy sandbox");const t=new Uint32Array(4);return e.getRandomValues(t),Array.from(t,n=>n.toString(16).padStart(8,"0")).join("")}function Zse(){return new DOMException("The temporary legacy chart operation was aborted","AbortError")}function Gct(e){if(e.signal.aborted)return Promise.reject(Zse());if(!Number.isSafeInteger(e.timeoutMs)||e.timeoutMs<=0)return Promise.reject(new sr("SCHEMA_INVALID","Legacy sandbox timeout must be a positive safe integer"));if(typeof document>"u"||!document.body)return Promise.reject(new sr("LEGACY_SANDBOX_UNAVAILABLE","The temporary legacy sandbox requires a browser document body"));const t=Vct(),n=document.createElement("iframe");return n.hidden=!0,n.setAttribute("aria-hidden","true"),n.setAttribute("title","Temporary chart sandbox"),n.setAttribute("sandbox","allow-scripts"),n.srcdoc=qct,new Promise((s,r)=>{let o=!1,i=!1,l;const c=()=>{window.removeEventListener("message",m),e.signal.removeEventListener("abort",f),n.onload=null,n.onerror=null,l!==void 0&&clearTimeout(l),n.remove()},u=(g,w)=>{o||(o=!0,c(),g(w))},h=g=>{o||(o=!0,c(),r(g))},f=()=>h(Zse()),m=g=>{if(!(g.source!==n.contentWindow||!ja(g.data))&&!(g.data.channel!==xU||g.data.requestId!==t)){if(g.data.type==="error"){h(new sr("LEGACY_SANDBOX_EXECUTION_FAILED","Temporary legacy chart source failed in the isolated worker"));return}if(g.data.type==="result")try{const w=hye(g.data.option);if(!ja(w))throw new sr("SCHEMA_INVALID","Temporary legacy chart source must produce a JSON object option");u(s,w)}catch(w){h(w)}}};window.addEventListener("message",m),e.signal.addEventListener("abort",f,{once:!0}),n.onerror=()=>h(new sr("LEGACY_SANDBOX_EXECUTION_FAILED","Temporary legacy chart sandbox failed to load")),n.onload=()=>{if(!i){if(i=!0,n.onload=null,o||e.signal.aborted){f();return}n.contentWindow?.postMessage({channel:xU,type:"execute",requestId:t,source:e.source,inputData:e.inputData},"*")}},l=setTimeout(()=>h(new sr("LEGACY_SANDBOX_TIMEOUT",`Temporary legacy chart sandbox exceeded ${e.timeoutMs}ms`)),e.timeoutMs),document.body.append(n)})}var X1e=class extends Error{constructor(t,n,s){super(n,s&&"cause"in s?{cause:s.cause}:void 0);rt(this,"code");rt(this,"cause");this.name="LegacySandboxError",this.code=t,this.cause=s?.cause}},Kct=Object.freeze({maxArtifactContentBytes:5*1024*1024,maxRows:2e3,maxColumns:200,maxCells:4e4,executionTimeoutMs:5e3});function Yct(e,t){const n={...Kct,...e,...t};for(const[s,r]of Object.entries(n))if(!Number.isSafeInteger(r)||r<=0)throw new sr("SCHEMA_INVALID",`legacyArtifactLimits.${s} must be a positive safe integer`);return n}async function Z1e(e){let t;try{t=await e.resolveContent()}catch(o){throw e.signal.aborted||e.preserveLegacySandboxError&&o instanceof X1e?o:new sr("REF_RESOLUTION_FAILED",e.resolutionError,{cause:o})}if(typeof t!="string")throw new sr("SCHEMA_INVALID",e.returnTypeError);if(e.signal.aborted)throw new DOMException("The temporary legacy chart operation was aborted","AbortError");const n=$ct(t,e.limits),s=zct(e.source);if(!s)throw new sr("SCHEMA_INVALID","Temporary legacy chart source is empty after sanitization");const r=await Gct({source:s,inputData:n.source,signal:e.signal,timeoutMs:e.limits.executionTimeoutMs});return{data:n,spec:r}}async function Xct(e){return Z1e({source:e.block.source,signal:e.signal,limits:e.limits,resolveContent:()=>e.resolveArtifactContent({language:e.block.language,jobId:e.block.jobId,index:e.block.index,signal:e.signal}),resolutionError:"The temporary ChatBI ArtifactContent could not be resolved",returnTypeError:"resolveLegacyArtifactContent must return the raw CSV ArtifactContent string",preserveLegacySandboxError:e.preserveLegacySandboxError===!0})}async function Zct(e){return Z1e({source:e.block.source,signal:e.signal,limits:e.limits,resolveContent:()=>e.resolveSandboxFileContent({language:e.block.language,filePath:e.block.filePath,signal:e.signal}),resolutionError:"The temporary ChatBI sandbox file could not be resolved",returnTypeError:"resolveLegacySandboxFileContent must return a raw CSV string",preserveLegacySandboxError:e.preserveLegacySandboxError===!0})}var Jct=Object.freeze({maxRows:2e3,maxCells:4e4,maxSeries:100,maxDepth:40,maxNodes:1e5}),Qct=new Set(["angleAxis","aria","animation","animationDelay","animationDelayUpdate","animationDuration","animationDurationUpdate","animationEasing","animationEasingUpdate","animationThreshold","axisPointer","backgroundColor","blendMode","brush","calendar","color","darkMode","dataset","dataZoom","geo","grid","hoverLayerThreshold","legend","parallel","parallelAxis","polar","progressive","progressiveChunkMode","progressiveThreshold","radar","radiusAxis","series","singleAxis","stateAnimation","textStyle","title","tooltip","useUTC","visualMap","xAxis","yAxis"]),eut=new Set(["__proto__","prototype","constructor","extracsstext","renderitem","graphic","image","toolbox","dataview","transform","link","sublink","href","src","url"]),tut=/(?:url|uri|href|src|link)$/i,nut=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/,Jse=/(?:^|[\s("'=])(?:https?:|file:|ftp:|blob:|data:|javascript:|vbscript:|\/\/|image:\/\/)/i,sut=/\burl\s*\(/i,rut=/<\s*\/?\s*[a-z][^>]*>/i,out=/&(?:#\d+|#x[\da-f]+|[a-z][\da-z]+);/i,iut=/^[A-Za-z_][A-Za-z0-9_]*$/;function Ka(e){throw new sr("SCHEMA_INVALID",e)}function kU(e,t,n){for(const s of Object.keys(e))t.has(s)||Ka(`${n}.${s} is not allowed`)}function Qse(e,t){if(!Array.isArray(e)||e.length===0)return Ka(`${t} must be a non-empty array`);const n=e.map((s,r)=>typeof s!="string"||!iut.test(s)?Ka(`${t}[${r}] must be a stable ASCII identifier`):s);return new Set(n).size!==n.length?Ka(`${t} must not contain duplicate dimensions`):n}function aut(e,t){if(!ja(e)||typeof e.kind!="string")return Ka("echarts-fulldata.data must be an inline or ref dataset object");if(e.kind==="inline"){kU(e,new Set(["kind","dimensions","source"]),"echarts-fulldata.data");const n=Qse(e.dimensions,"echarts-fulldata.data.dimensions");if(!Array.isArray(e.source))return Ka("echarts-fulldata.data.source must be an array");e.source.forEach((r,o)=>{Array.isArray(r)||Ka(`echarts-fulldata.data.source[${o}] must be an array`),r.length!==n.length&&Ka(`echarts-fulldata.data.source[${o}] must contain ${n.length} cells`)});const s=wL(e.source,t,"echarts-fulldata.data.source");return{kind:"inline",dimensions:n,source:s}}if(e.kind==="ref"){if(kU(e,new Set(["kind","ref","format","dimensions"]),"echarts-fulldata.data"),typeof e.ref!="string"||e.ref.trim().length===0)return Ka("echarts-fulldata.data.ref must be a non-empty string");if(e.format!=="csv"&&e.format!=="json")return Ka("echarts-fulldata.data.format must be csv or json");const n=Qse(e.dimensions,"echarts-fulldata.data.dimensions");return{kind:"ref",ref:e.ref,format:e.format,dimensions:n}}return Ka(`Unsupported echarts-fulldata.data.kind: ${e.kind}`)}function J1e(e){const t=Array.isArray(e.title),n=t?e.title:[e.title];for(const[s,r]of n.entries()){if(!ja(r)||typeof r.text!="string")continue;const o=r.text.trim();if(o)return{index:s,isArray:t,title:r,text:o}}}function lut(e){return J1e(e)?.text}function cut(e,t){const n=J1e(e);if(!(!n||n.text!==t.trim())){if(Object.prototype.hasOwnProperty.call(n.title,"subtext")){delete n.title.text;return}if(n.isArray){e.title.splice(n.index,1);return}delete e.title}}function fb(e){return Array.isArray(e)?e.map(t=>fb(t)):ja(e)?Object.fromEntries(Object.entries(e).map(([t,n])=>[t,fb(n)])):e}function Q1e(e,t){if(e!==void 0)return(!Array.isArray(e)||e.some(n=>typeof n!="string"||n.length===0))&&Ka(`${t} must be an array of non-empty strings`),[...e]}function wL(e,t,n){if(Array.isArray(e)||Ka(`${n} must be an array`),e.length>t.maxRows)throw new sr("LIMIT_EXCEEDED",`${n} exceeds the ${t.maxRows} row limit`);let s=0;const r=e.map((o,i)=>{if(Array.isArray(o)){const l=o.map((c,u)=>(c!==null&&!["string","number","boolean"].includes(typeof c)&&Ka(`${n}[${i}][${u}] must be a JSON scalar`),c));return s+=l.length,l}if(ja(o)){const l={};for(const[c,u]of Object.entries(o))u!==null&&!["string","number","boolean"].includes(typeof u)&&Ka(`${n}[${i}].${c} must be a JSON scalar`),l[c]=u,s+=1;return l}return Ka(`${n}[${i}] must be an array or object`)});if(s>t.maxCells)throw new sr("LIMIT_EXCEEDED",`${n} exceeds the ${t.maxCells} cell limit`);return r}function uut(e,t){if(!ja(e)||typeof e.kind!="string")return Ka("echarts.data must be an inline or ref dataset object");const n=Q1e(e.dimensions,"echarts.data.dimensions");if(e.kind==="inline"){const s=wL(e.source,t,"echarts.data.source");return n?{kind:"inline",dimensions:n,source:s}:{kind:"inline",source:s}}return e.kind==="ref"?typeof e.ref!="string"||e.ref.length===0?Ka("echarts.data.ref must be a non-empty string"):e.format!==void 0&&e.format!=="csv"&&e.format!=="json"?Ka("echarts.data.format must be csv or json"):{kind:"ref",ref:e.ref,...e.format?{format:e.format}:{},...n?{dimensions:n}:{}}:Ka(`Unsupported echarts.data.kind: ${e.kind}`)}function ere(e,t){if(nut.test(e))throw new sr("UNSAFE_SPEC",`${t} contains an ASCII control character`);const n=e.replace(/[\n\r\t]/g,""),s=e.trim();if(Jse.test(s)||Jse.test(n.trim())||sut.test(e)||rut.test(e)||out.test(e))throw new sr("UNSAFE_SPEC",`${t} contains a URL, CSS URL, or unsafe markup`)}function dut(e,t){for(const r of Object.keys(e))if(!Qct.has(r))throw new sr("UNSAFE_SPEC",`echarts.option.${r} is not allowed`);let n=0;const s=(r,o,i)=>{if(n+=1,n>t.maxNodes)throw new sr("LIMIT_EXCEEDED",`ECharts option exceeds the ${t.maxNodes} node limit`);if(i>t.maxDepth)throw new sr("LIMIT_EXCEEDED",`ECharts option exceeds the ${t.maxDepth} depth limit`);if(typeof r=="string"){ere(r,o);return}if(Array.isArray(r)){r.forEach((l,c)=>s(l,`${o}[${c}]`,i+1));return}if(ja(r))for(const[l,c]of Object.entries(r)){const u=l.toLowerCase();if(u==="formatter"){if(typeof c!="string")throw new sr("UNSAFE_SPEC",`${o}.${l} must be a string`);ere(c,`${o}.${l}`);continue}if(eut.has(u)||tut.test(l))throw new sr("UNSAFE_SPEC",`${o}.${l} is not allowed`);if(l==="type"&&c==="custom")throw new sr("UNSAFE_SPEC","Custom ECharts series are not allowed");s(c,`${o}.${l}`,i+1)}};if(s(e,"echarts.option",0),Array.isArray(e.series)&&e.series.length>t.maxSeries)throw new sr("LIMIT_EXCEEDED",`ECharts option exceeds the ${t.maxSeries} series limit`);e.dataset!==void 0&&(Array.isArray(e.dataset)?e.dataset:[e.dataset]).forEach((o,i)=>{ja(o)||Ka(`echarts.option.dataset[${i}] must be an object`),o.source!==void 0&&wL(o.source,t,`echarts.option.dataset[${i}].source`)})}function _U(e,t,n){if(!ja(e))return Ka("ECharts specification must be an object");if(Object.prototype.hasOwnProperty.call(e,"option")||Object.prototype.hasOwnProperty.call(e,"data"))return Ka("Canonical markdown-chart data must be a sibling of spec; spec must contain the ECharts option directly");const s=fb(e),r=t===void 0?void 0:uut(t,n);return r&&Object.prototype.hasOwnProperty.call(s,"dataset")?Ka("echarts.option.dataset cannot be combined with echarts.data"):(dut(s,n),{option:s,data:r})}function hut(e,t){if(!ja(e))return Ka("echarts-fulldata must contain an object");if(kU(e,new Set(["version","data","option"]),"echarts-fulldata"),e.version!==1)throw new sr("UNSUPPORTED_VERSION","Only echarts-fulldata version 1 is supported");if(!Object.prototype.hasOwnProperty.call(e,"data"))return Ka("echarts-fulldata.data is required");if(!ja(e.option))return Ka("echarts-fulldata.option must be an object");const n=aut(e.data,t);return _U(e.option,n,t)}function fut(e){const t="default"in e?e.default:e;if(!t||typeof t.init!="function")throw new sr("RUNTIME_LOAD_FAILED","The supplied ECharts runtime has no init function");return t}function tre(e,t){const n=wL(e.source,t,"resolvedDataset.source"),s=e.dimensions?Q1e(e.dimensions,"resolvedDataset.dimensions"):void 0;return s?{data:{kind:"inline",dimensions:s,source:n},option:{dimensions:s,source:n}}:{data:{kind:"inline",source:n},option:{source:n}}}var put={light:{background:"#ffffff",foreground:"#343434",legendText:"#555555",titleText:"#343434",subtext:"#aaaaaa",axisLine:"#5d666f",valueAxisLine:"#6E7079",axisLabel:"#838d95",splitLine:"#e0e6f1",splitAreaA:"rgba(250,250,250,0.2)",splitAreaB:"rgba(210,219,238,0.2)",seriesBorder:"#ffffff",pointer:"#7c8a96",tooltipBg:"#ffffff",primary:"#6250f9",palette:["#6250F9","#33AFA9","#AB7BFF","#5F99F9","#A9AFFF","#60CCC5","#C2A5FF","#8EB8FE","#E0E3FE","#98E3DD","#E8E1FA","#D7E6FF"]},dark:{background:"#0d0d0d",foreground:"#f4f7ff",legendText:"#c8cad0",titleText:"#e0e2e8",subtext:"#8a8d93",axisLine:"#555a63",valueAxisLine:"#555a63",axisLabel:"#9da1a8",splitLine:"#3a3e47",splitAreaA:"rgba(60,60,70,0.2)",splitAreaB:"rgba(80,80,90,0.2)",seriesBorder:"#2a2d35",pointer:"#6a707a",tooltipBg:"rgba(30, 32, 40, 0.95)",primary:"#8aa0ff",palette:["#8EA0FF","#61D6D1","#C8A7FF","#8EB8FE","#C7CCFF","#8DE7E2","#D8C5FF","#B8D2FF","#EEF0FF","#C2F0ED","#F0EAFE","#E8F1FF"]}};function B0(e,t){const n={...fb(e),...t};for(const[s,r]of Object.entries(e)){const o=t[s];ja(r)&&ja(o)&&(n[s]=B0(r,o))}return n}function k3(e,t){return Array.isArray(e)?e.map(n=>ja(n)?B0(t,n):n):ja(e)?B0(t,e):e??fb(t)}function exe(e){const t=n=>ja(n)?{...n,appendToBody:!1,confine:!0,enterable:!1,renderMode:"richText"}:n;return Array.isArray(e)?e.map(t):t(e)}function ZE(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function mut(e,t){const n=s=>{if(!ZE(s,"top")&&!ZE(s,"bottom"))return B0(t,s);const r=fb(t);return delete r.top,delete r.bottom,B0(r,s)};return Array.isArray(e)?e.map(s=>ja(s)?n(s):s):ja(e)?n(e):e??fb(t)}var gut=740,txe=10,nre=gut*txe/100,vut=24,wut=24,sre=16,yut=24;function nxe(e){if(typeof e=="number")return Number.isFinite(e)&&e>=0&&e<=nre?e:null;if(typeof e!="string")return null;const t=e.trim();if(t==="top")return 0;const n=/^([+-]?(?:\d+(?:\.\d*)?|\.\d+))%$/.exec(t);if(!n)return null;const s=Number(n[1]);return Number.isFinite(s)&&s>=0&&s<=txe?nre:null}function but(e){return["text","subtext"].some(t=>typeof e[t]=="string"&&e[t].trim().length>0)}function xut(e){return e.show===!1||!but(e)?null:ZE(e,"top")?nxe(e.top):ZE(e,"bottom")?null:0}function kut(e){return e.show===!1||!ZE(e,"top")?null:nxe(e.top)}function rre(e){return Array.isArray(e)?e.filter(ja):ja(e)?[e]:[]}function _ut(e,t){const n=rre(e).flatMap(r=>{const o=xut(r);return o===null?[]:[o+vut+sre]}),s=rre(t).flatMap(r=>{const o=kut(r);return o===null?[]:[o+wut+sre]});return Math.max(yut,...n,...s)}function ore(e,t){return Array.isArray(e)?e.map((n,s)=>ja(n)?B0(t(s),n):n):ja(e)?B0(t(0),e):e}function ire(e,t){const n=typeof e.type=="string"?e.type:void 0;let s={emphasis:{focus:"series",itemStyle:{borderColor:t.seriesBorder,borderWidth:2}},labelLayout:{hideOverlap:!0}};n==="line"?s=B0(s,{lineStyle:{width:2},itemStyle:{borderWidth:1},symbol:"circle",symbolSize:4}):n==="bar"?s=B0(s,{barCategoryGap:"48%",barMaxWidth:42,itemStyle:{borderRadius:[3,3,0,0]}}):n==="pie"&&(s=B0(s,{itemStyle:{borderColor:t.seriesBorder,borderWidth:2}}));const r=B0(s,e);return Object.prototype.hasOwnProperty.call(e,"tooltip")&&(r.tooltip=exe(k3(e.tooltip,{appendToBody:!1,confine:!0,enterable:!1,renderMode:"richText"}))),r}var sxe=new Set(["pie","funnel","gauge","radar","treemap"]),Sut=new Set([...sxe,"graph","chord","themeRiver"]);function rxe(e){return Array.isArray(e.series)?e.series.filter(ja):ja(e.series)?[e.series]:[]}function Cut(e){if(Object.prototype.hasOwnProperty.call(e,"legend"))return!0;const t=rxe(e);return t.some(n=>typeof n.type=="string"&&Sut.has(n.type))?!0:t.filter(n=>typeof n.name=="string"&&n.name.trim().length>0).length>1}function Tut(e){if(!Object.prototype.hasOwnProperty.call(e,"xAxis")&&!Object.prototype.hasOwnProperty.call(e,"yAxis"))return"item";const t=rxe(e);return t.length>0&&t.every(n=>typeof n.type=="string"&&sxe.has(n.type))?"item":"axis"}function Iut(e){return e==null||e==="light"?"light":e==="dark"?"dark":void 0}function Rut(e,t="light"){const n=put[t],s=fb(e);return s.backgroundColor??=n.background,s.color??=[...n.palette],s.textStyle=k3(s.textStyle,{color:n.foreground,fontFamily:"'pingfang SC', 'helvetica neue', arial, 'hiragino sans gb', 'microsoft yahei ui', 'microsoft yahei', sans-serif"}),s.title!==void 0&&(s.title=k3(s.title,{textStyle:{color:n.titleText},subtextStyle:{color:n.subtext}})),s.tooltip=exe(k3(s.tooltip,{trigger:Tut(e),appendToBody:!1,confine:!0,enterable:!1,renderMode:"richText",backgroundColor:n.tooltipBg,borderColor:n.splitLine,borderWidth:1,padding:[8,10],textStyle:{color:n.titleText,fontSize:12},axisPointer:{lineStyle:{color:n.pointer,width:1},crossStyle:{color:n.pointer,width:1}}})),Cut(e)&&(s.legend=mut(s.legend,{type:"scroll",bottom:8,padding:[4,16],textStyle:{color:n.legendText,fontSize:12},pageIconColor:n.primary,pageIconInactiveColor:n.splitLine,pageTextStyle:{color:n.legendText}})),s.grid=k3(s.grid,{top:_ut(s.title,s.legend),right:36,bottom:48,left:24,containLabel:!0}),s.xAxis!==void 0&&(s.xAxis=ore(s.xAxis,()=>({axisLine:{show:!0,lineStyle:{color:n.axisLine}},axisTick:{show:!0,lineStyle:{color:n.axisLine}},axisLabel:{color:n.axisLabel,fontSize:12,hideOverlap:!0},splitLine:{show:!1,lineStyle:{color:n.splitLine}},splitArea:{show:!1,areaStyle:{color:[n.splitAreaA,n.splitAreaB]}},nameTextStyle:{color:n.axisLabel}}))),s.yAxis!==void 0&&(s.yAxis=ore(s.yAxis,r=>({alignTicks:!0,axisLine:{show:!1,lineStyle:{color:n.valueAxisLine}},axisTick:{show:!1,lineStyle:{color:n.valueAxisLine}},axisLabel:{color:n.axisLabel,fontSize:12,hideOverlap:!0},splitLine:{show:r===0,lineStyle:{color:n.splitLine}},splitArea:{show:!1,areaStyle:{color:[n.splitAreaA,n.splitAreaB]}},nameGap:12,nameTextStyle:{color:n.axisLabel,align:r===0?"left":"right"}}))),Array.isArray(s.series)?s.series=s.series.map(r=>ja(r)?ire(r,n):r):ja(s.series)&&(s.series=ire(s.series,n)),s}var G$={dispose(){}};function Eut(e={}){const t={...Jct,...e.limits},n=e.legacySandbox?.resolveLegacyArtifactContent,s=e.legacySandbox?.resolveLegacySandboxFileContent,r=e.legacySandbox?Yct({maxRows:t.maxRows,maxCells:t.maxCells},void 0):void 0,o=e.loadECharts??(async()=>await Je(()=>import("./index-CL4z8Fsq.js"),[])),i=async(l,c)=>{if(e.validateDataRef&&!e.validateDataRef(l.ref))throw new sr("REF_REJECTED","The host rejected the chart data reference");if(!e.resolveDataRef)throw new sr("REF_RESOLVER_MISSING","A resolveDataRef callback is required");let u;try{u=await e.resolveDataRef(l.ref,{format:l.format,dimensions:l.dimensions,signal:c})}catch(f){if(c.aborted)return;throw new sr("REF_RESOLUTION_FAILED","The chart dataset could not be resolved",{cause:f})}if(c.aborted)return;const h=u.dimensions||!l.dimensions?u:{...u,dimensions:l.dimensions};return tre(h,t).data};return{id:"echarts",aliases:["echarts-fulldata"],matchLanguage:Pct,parse(l,c){return c.language==="echarts-fulldata"?hut(l,t):_U(l,c.data,t)},parseSource(l,c){return Y1e(c.language)?{option:{},data:void 0,legacyEChartSandboxFile:Dct(c.rawLanguage??c.language,l)}:{option:{},data:void 0,legacyEChartQuery:Lct(c.language,l)}},getTitle(l){return lut(l.option)},async materialize(l,c){if(!l.legacyEChartQuery&&!l.legacyEChartSandboxFile){if(l.data?.kind==="ref"){const m=await i(l.data,c.signal);return m?{parsed:{...l,data:m},data:m}:{parsed:l,data:c.data}}return{parsed:l,data:l.data}}if(l.legacyEChartQuery&&!n)throw new sr("REF_RESOLVER_MISSING","legacySandbox is required for this temporary ChatBI query fence");if(l.legacyEChartSandboxFile&&!s)throw new sr("REF_RESOLVER_MISSING","legacySandbox is required for this temporary ChatBI sandbox-file fence");let u;try{l.legacyEChartSandboxFile?u=await Zct({block:l.legacyEChartSandboxFile,signal:c.signal,resolveSandboxFileContent:s,limits:r,preserveLegacySandboxError:e.legacySandbox!==void 0}):u=await Xct({block:l.legacyEChartQuery,signal:c.signal,resolveArtifactContent:n,limits:r,preserveLegacySandboxError:!0})}catch(m){if(c.signal.aborted)return{parsed:l,data:c.data};throw m instanceof sr||m instanceof X1e?m:new sr("REF_RESOLUTION_FAILED","The temporary ChatBI chart could not be resolved",{cause:m})}if(c.signal.aborted)return{parsed:l,data:c.data};let h;try{h=hye(u,{maxDepth:t.maxDepth,maxNodes:t.maxNodes})}catch(m){throw m instanceof sr?m:new sr("SCHEMA_INVALID","Temporary ChatBI resolver returned a non-JSON result",{cause:m})}if(!ja(h))return Ka("Temporary ChatBI resolver must return an object");if(!Object.prototype.hasOwnProperty.call(h,"data")||!Object.prototype.hasOwnProperty.call(h,"spec"))return Ka("Temporary ChatBI resolver must return data and spec");const f=_U(h.spec,h.data,t);return f.data?.kind!=="inline"?Ka("Temporary ChatBI resolver must return inline data"):{parsed:f,data:f.data}},async mount(l,c,u){if(c.legacyEChartQuery||c.legacyEChartSandboxFile)return Ka("Temporary ChatBI charts must be materialized before mounting");const h=fb(c.option);if(u.externalizedTitle&&cut(h,u.externalizedTitle),c.data){let x;if(c.data.kind==="inline")x=c.data;else{const _=await i(c.data,u.signal);if(!_)return G$;x=_}const k=tre(x,t);h.dataset=k.option}if(u.signal.aborted)return G$;let f;try{f=fut(await o())}catch(x){throw x instanceof sr?x:new sr("RUNTIME_LOAD_FAILED","The ECharts runtime could not be loaded",{cause:x})}if(u.signal.aborted)return G$;let m,g;try{const x=typeof u.theme=="string"||ja(u.theme)?u.theme:void 0;m=f.init(l,x);const k=Iut(u.theme),_=e.defaultStyle===!1||!k?h:Rut(h,k);m.setOption(_,{notMerge:!0,lazyUpdate:!1}),e.resizeObserver!==!1&&typeof ResizeObserver<"u"&&(g=new ResizeObserver(()=>m?.resize()),g.observe(l))}catch(x){try{g?.disconnect()}catch{}try{m?.dispose()}catch{}throw new sr("RENDER_FAILED","ECharts failed to render the chart",{cause:x})}const w=m;let y=!1;return{resize:()=>w.resize(),dispose(){y||(y=!0,g?.disconnect(),w.dispose())}}}}}var eY=d.createContext(null);function Aut(e){if(d.isValidElement(e))return typeof e.props.children=="string"?e.props.children:void 0}function jut(e){const t=e.source??Aut(e.children),n=d.useMemo(()=>({registry:e.registry,theme:e.theme,streaming:e.streaming??!1,source:t,loadingLabel:e.loadingLabel,labels:e.labels,onError:e.onError}),[e.registry,e.theme,e.streaming,t,e.loadingLabel,e.labels,e.onError]);return d.createElement(eY.Provider,{value:n},e.children)}function Nut(e){const t=d.useContext(eY);if(!t)throw new Error("MarkdownChartBlock must be rendered inside MarkdownChartProvider");const n=d.useRef(null),s=e.streaming??t.streaming,r=e.loadingLabel??t.loadingLabel,o=e.labels??t.labels,i=d.useMemo(()=>pye(o),[o]);d.useEffect(()=>{const c=n.current;if(!c)return;const u=new zJe(t.registry);let h=!1;return u.render(c,{language:e.language,source:e.source,theme:t.theme,streaming:s,...r!==void 0?{loadingLabel:r}:{},...o!==void 0?{labels:o}:{}}).catch(f=>{h||(c.classList.add("markdown-chart-error"),c.setAttribute("role","alert"),c.textContent=i.chartUnavailable,t.onError?.(f,{language:e.language,source:e.source}))}),()=>{h=!0,u.dispose()}},[t.registry,t.theme,t.onError,r,o,i,e.language,e.source,s]);const l=["markdown-chart-placeholder",s?"markdown-chart-streaming":void 0,e.className].filter(Boolean).join(" ");return d.createElement("div",{ref:n,className:l,style:e.style,"aria-label":i.chart,"aria-busy":s||void 0,"data-markdown-chart-complete":String(!s)})}function Mut(e,t){const n=t?.position?.start?.offset,s=t?.position?.end?.offset;if(e===void 0||n===void 0||s===void 0)return!1;const r=e.lastIndexOf(`
1618
- `,Math.max(0,n-1))+1,o=e.slice(r,n),i=/^(?: {0,3}>[ \t]?)+$/.test(o)?r:n;return gye(e.slice(i,s))||e.slice(s).trim().length>0}function oxe(e,t){return e===NM||t?.has(e)===!0}function Put(e={}){return{code({node:n,...s}){return d.createElement("code",s)},pre:function({node:s,children:r,...o}){const i=d.useContext(eY);if(d.isValidElement(r)){const l=r,u=/(?:^|\s)language-([^\s]+)/.exec(l.props.className??"")?.[1],h=u?.toLowerCase();if(u&&h&&oxe(h,i?.registry)){const f=d.Children.toArray(l.props.children).map(m=>typeof m=="string"||typeof m=="number"?String(m):"").join("");return d.createElement(Nut,{language:u,source:f,streaming:i?.streaming===!0&&!Mut(i.source,s),...e.chartClassName?{className:e.chartClassName}:{},...e.chartStyle?{style:e.chartStyle}:{}})}}return d.createElement("pre",o,r)}}}const Lut=3e4,Dut=["artifact://","session-file://"],Out=/^[a-z]:/i;function $ut(e={}){const{resolveDataRef:t,validateDataRef:n=Uut,...s}=e,r=e.validateDataRef===void 0,o=t?async(i,l)=>{const c=r?ixe(i):i;if(!c)throw new Error("Chart data reference is not supported.");return Wut(Promise.resolve(t(c,l)),"Chart data reference resolution")}:void 0;return new CJe().register(Eut({...s,resolveDataRef:o,validateDataRef:n}))}const But={registry:$ut()};function Fut(e,t={}){const n=Put(t).pre;if(!n)throw new Error("markdown-chart React adapter did not provide a pre renderer");return function({children:r,...o}){if(d.isValidElement(r)){const i=r,c=/(?:^|\s)language-([^\s]+)/.exec(i.props.className??"")?.[1]?.toLowerCase();if(c&&oxe(c,e))return d.createElement(n,o,r)}return d.createElement(d.Fragment,null,r)}}function zut({customization:e,source:t,streaming:n,theme:s,children:r}){const o=Hut(e.labels),{t:i}=Ct();return a.jsx(jut,{registry:e.registry,source:t,streaming:n,theme:s,loadingLabel:e.loadingLabel??i("echartsChart.rendering"),labels:o,onError:e.onError,children:r})}function Hut(e){const{t}=Ct();return d.useMemo(()=>({chartUnavailable:t("echartsChart.renderFailed"),viewMode:t("echartsChart.viewMode"),chart:t("echartsChart.chart"),data:t("echartsChart.data"),showChart:t("echartsChart.showChart"),showData:t("echartsChart.showData"),noData:t("echartsChart.noData"),tableNotice:({visibleRows:n,totalRows:s,visibleColumns:r,totalColumns:o})=>t("echartsChart.tableNotice",{visibleRows:n,totalRows:s,visibleColumns:r,totalColumns:o,omittedRows:s-n,omittedColumns:o-r}),...e}),[e,t])}function are(e){return/\s/.test(e)||Array.from(e).some(t=>{const n=t.codePointAt(0);return n!==void 0&&(n<=31||n===127)})}function ixe(e){if(e.trim()!==e||!e||are(e))return;const t=e.toLowerCase(),n=Dut.find(i=>t.startsWith(i));if(!n)return;const s=e.slice(n.length);if(!s||/[?#\\]/.test(s))return;let r;try{r=decodeURIComponent(s)}catch{return}if(/[%?#\\]/.test(r)||are(r))return;const o=r.split("/");if(!o.some(i=>i.length===0||i==="."||i===".."||Out.test(i)))return`${n}${o.join("/")}`}function Uut(e){return ixe(e)!==void 0}function Wut(e,t){return new Promise((n,s)=>{const r=globalThis.setTimeout(()=>s(new Error(`${t} timed out.`)),Lut);e.then(n,s).finally(()=>globalThis.clearTimeout(r))})}const qut="_content_1ns4y_1",Vut="_streamingPlainText_1ns4y_11",Gut="_inlineCode_1ns4y_135",Kut="_link_1ns4y_147",Yut="_tableWrapper_1ns4y_157",Xut="_table_1ns4y_157",Zut="_image_1ns4y_187",Jut="_codeBlock_1ns4y_195",Qut="_codeBlockHeader_1ns4y_204",edt="_codeBlockLang_1ns4y_213",tdt="_codeBlockCopy_1ns4y_221",ndt="_codeBlockContent_1ns4y_244",sdt="_codeBlockPlain_1ns4y_264",rdt="_mermaidBlock_1ns4y_282",odt="_mermaidInline_1ns4y_294",idt="_mermaidStage_1ns4y_308",adt="_mermaidLoading_1ns4y_331",ldt="_mermaidActions_1ns4y_338",cdt="_mermaidZoomWrapper_1ns4y_343",udt="_mermaidPannable_1ns4y_358",ddt="_mermaidDragging_1ns4y_362",ri={content:qut,streamingPlainText:Vut,inlineCode:Gut,link:Kut,tableWrapper:Yut,table:Xut,image:Zut,codeBlock:Jut,codeBlockHeader:Qut,codeBlockLang:edt,codeBlockCopy:tdt,codeBlockContent:ndt,codeBlockPlain:sdt,mermaidBlock:rdt,mermaidInline:odt,mermaidStage:idt,mermaidLoading:adt,mermaidActions:ldt,mermaidZoomWrapper:cdt,mermaidPannable:udt,mermaidDragging:ddt},hdt=32e3,fdt=new Set(["javascript","typescript","python","rust","go","java","c","cpp","csharp","fsharp","ruby","php","swift","kotlin","scala","bash","fish","powershell","sql","html","css","scss","json","yaml","toml","xml","markdown","dockerfile","graphql","lua","r","matlab","perl","haskell","elixir","erlang","clojure","dart","vue","svelte","astro","tsx","jsx","diff"]),lre={"c++":"cpp","c#":"csharp","f#":"fsharp",ts:"typescript",js:"javascript",py:"python",rb:"ruby",rs:"rust",kt:"kotlin",cs:"csharp",sh:"bash",zsh:"bash",shell:"bash",yml:"yaml",md:"markdown",golang:"go",ps1:"powershell",docker:"dockerfile"};function tY(e){const t=(e||"").toLowerCase(),n=Object.hasOwn(lre,t)?lre[t]:t,s=fdt.has(n)?n:"text";return{label:(e||"").trim()||"text",lang:n,resolvedLang:s}}const axe=/^(https?:|mailto:)/i,pdt=/^data:image\/(png|jpeg|gif|webp|bmp);base64,/i,lxe=/^data:image\/(png|jpeg|gif|webp);base64,[A-Za-z0-9+/]*={0,2}$/i;function N4(e){if(!e)return!1;const t=e.trim();return t?t.startsWith("#")||t.startsWith("/")&&!t.startsWith("//")?!0:axe.test(t):!1}function Ow(e,t=!1){if(!e)return!1;const n=e.trim();return n?t?lxe.test(n):n.startsWith("#")||n.startsWith("/")&&!n.startsWith("//")||pdt.test(n)?!0:axe.test(n):!1}let cre,ure=Promise.resolve(),mdt=0;const gdt=5e4,vdt=500,wdt=1e4,dre=16;function ydt({code:e}){const{t}=Ct(),n=yb(),s=Vl()!=="interactive",[r,o]=d.useState(null),[i,l]=d.useState(null),[c,u]=d.useState("diagram"),[h,f]=bx(),[m,g]=d.useState(1),[w,y]=d.useState(!1),x=d.useRef(null),[k,_]=d.useState(!1),[S,I]=d.useState(!1),[E,A]=d.useState(null),j=d.useRef(null),L=d.useRef(null),R=n==="light"?"default":"dark",N=.5,M=3,O=.25,P=()=>{g(V=>Math.min(M,Math.round((V+O)*100)/100))},F=()=>{g(V=>Math.max(N,Math.round((V-O)*100)/100))},H=d.useCallback(()=>{L.current=null,y(!1),g(1);const V=x.current;V&&(V.scrollLeft=0,V.scrollTop=0),_(!1)},[]),$=d.useCallback(V=>{const J=x.current;J&&(V.preventDefault(),y(!0),L.current={startX:V.clientX,startY:V.clientY,startLeft:J.scrollLeft,startTop:J.scrollTop})},[]),Y=d.useCallback(V=>{const{scrollLeft:J,scrollTop:q}=V.currentTarget;_(J!==0||q!==0)},[]),Z=d.useCallback(()=>{const V=x.current;V&&(I(V.scrollWidth>V.clientWidth||V.scrollHeight>V.clientHeight),_(V.scrollLeft!==0||V.scrollTop!==0))},[]),K=d.useCallback(()=>{const V=x.current,J=j.current?.querySelector("svg");if(!V||!J)return;const[,,q,te]=(J.getAttribute("viewBox")??"").split(/[\s,]+/).map(Number),ie=(J.getAttribute("width")??"").trim(),ge=Number.parseFloat(J.getAttribute("height")??""),re=q>0&&te>0,G=re?q:Number.parseFloat(ie),Q=re?te:ge;if(!(G>0)||!(Q>0)){A(null);return}const he=V.clientWidth-dre*2,ve=ie.endsWith("%")&&he>0?Math.min(G,he):G,ye=Math.max(0,V.offsetHeight-V.clientHeight);A({stageWidth:ve,canvasHeight:ve*Q/G+dre*2+ye})},[]);d.useEffect(()=>{if(!w)return;const V=q=>{const te=x.current,ie=L.current;!te||!ie||(te.scrollLeft=ie.startLeft-(q.clientX-ie.startX),te.scrollTop=ie.startTop-(q.clientY-ie.startY),_(te.scrollLeft!==0||te.scrollTop!==0))},J=()=>{L.current=null,y(!1)};return window.addEventListener("mousemove",V),window.addEventListener("mouseup",J),window.addEventListener("blur",J),()=>{window.removeEventListener("mousemove",V),window.removeEventListener("mouseup",J),window.removeEventListener("blur",J)}},[w]),d.useEffect(()=>{H()},[e,H]),d.useLayoutEffect(()=>{K(),Z()},[r,m,c,K,Z]),d.useEffect(()=>{const V=x.current;if(!V)return;const J=new ResizeObserver(()=>{K(),Z()});return J.observe(V),()=>J.disconnect()},[r,c,K,Z]),d.useEffect(()=>{let V=!1;o(null),l(null);const J=setTimeout(()=>{Je(()=>import("./mermaid.core-C5zbhLSB.js").then(q=>q.cb),[]).then(async q=>{if(V)return;const te=q.default,ie=`${R}:${s?"hardened":"runtime"}`,ge=ure.then(async()=>{if(V)throw new Error("Mermaid render skipped");cre!==ie&&(te.initialize({startOnLoad:!1,theme:R,securityLevel:"strict",suppressErrorRendering:!0,...s?{maxTextSize:gdt,maxEdges:vdt}:{},flowchart:{wrappingWidth:300,useMaxWidth:!1}}),cre=ie);const G=`mermaid-${++mdt}`;if(!s)return te.render(G,e.trim());let Q;try{return await Promise.race([te.render(G,e.trim()),new Promise((he,ve)=>{Q=setTimeout(()=>ve(new Error("Mermaid render timed out")),wdt)})])}finally{Q!==void 0&&clearTimeout(Q)}});ure=ge.then(()=>{},()=>{});const{svg:re}=await ge;V||o(re)}).catch(q=>{V||l(q instanceof Error?q.message:"Mermaid render failed")})},150);return()=>{V=!0,clearTimeout(J)}},[e,s,R]);const B=()=>{Yf(e).then(()=>{f()}).catch(W0)};return i?a.jsxs("div",{className:ri.codeBlock,children:[a.jsx("div",{className:ri.codeBlockHeader,children:a.jsx("span",{className:ri.codeBlockLang,children:t("mermaid.errorLabel")})}),a.jsx("pre",{className:`${ri.codeBlockContent} ${ri.codeBlockPlain}`,children:a.jsx("code",{children:e})})]}):a.jsxs("div",{className:ri.codeBlock,children:[a.jsxs("div",{className:ri.codeBlockHeader,children:[a.jsx("span",{className:ri.codeBlockLang,children:t("mermaid.label")}),a.jsxs("span",{className:ri.mermaidActions,children:[c==="diagram"&&a.jsxs(a.Fragment,{children:[a.jsx("button",{className:ri.codeBlockCopy,onClick:F,title:t("mermaid.zoomOut"),disabled:m<=N,children:t("mermaid.zoomOut")}),a.jsx("button",{className:ri.codeBlockCopy,onClick:H,title:t("mermaid.zoomReset"),disabled:m===1&&!k,children:t("mermaid.zoomReset")}),a.jsx("button",{className:ri.codeBlockCopy,onClick:P,title:t("mermaid.zoomIn"),disabled:m>=M,children:t("mermaid.zoomIn")})]}),a.jsx("button",{className:ri.codeBlockCopy,onClick:()=>u(c==="diagram"?"code":"diagram"),children:t(c==="diagram"?"mermaid.viewCode":"mermaid.viewDiagram")}),a.jsx("button",{className:ri.codeBlockCopy,onClick:B,children:t(h?"code.copied":"code.copy")})]})]}),c==="code"?a.jsx("pre",{className:`${ri.codeBlockContent} ${ri.codeBlockPlain}`,children:a.jsx("code",{children:e})}):r?a.jsx("div",{className:`${ri.mermaidZoomWrapper} ${S?ri.mermaidPannable:""} ${S&&w?ri.mermaidDragging:""}`,ref:x,style:E?{height:E.canvasHeight}:void 0,onMouseDown:$,onDoubleClick:H,onScroll:Y,children:a.jsx("div",{className:`${ri.mermaidBlock} ${ri.mermaidStage}`,ref:j,style:{...E?{width:E.stageWidth}:{},...m===1?{}:{zoom:m}},dangerouslySetInnerHTML:{__html:r}})}):a.jsx("div",{className:`${ri.mermaidBlock} ${ri.mermaidLoading} ${ri.mermaidInline}`,children:a.jsx("span",{children:t("mermaid.rendering")})})]})}function bdt({className:e,children:t,isStreaming:n}){const{t:s}=Ct(),r=yb(),o=Vl()==="document",[i,l]=d.useState(null),[c,u]=bx(),{label:h,lang:f,resolvedLang:m}=tY(cxe(e)),g=String(t).replace(/\n$/,""),w=r==="light"?"github-light-default":"github-dark-default";d.useEffect(()=>{if(o||n||f==="mermaid"||m==="text"||vU(g)){l(null);return}const x=pat(g,m,w);if(x!==null){l(x);return}const k=zse(g,m,w,!0);if(k!==null){l(k);return}l(null);let _=!1;return N1e(m).then(()=>{if(_)return;const S=zse(g,m,w,!0);S!==null&&l(S)}).catch(S=>{_||(console.warn("[web-shell] highlight failed for lang=%s",m,S),l(null))}),()=>{_=!0}},[g,o,f,m,w,n]);const y=()=>{Yf(g).then(()=>{u()}).catch(W0)};return f==="mermaid"&&!n&&!o?a.jsx(ydt,{code:g}):a.jsxs("div",{className:ri.codeBlock,children:[a.jsxs("div",{className:ri.codeBlockHeader,children:[a.jsx("span",{className:ri.codeBlockLang,children:h}),a.jsx("button",{className:ri.codeBlockCopy,onClick:y,children:s(c?"code.copied":"code.copy")})]}),!o&&!n&&i!==null?a.jsx("div",{className:ri.codeBlockContent,dangerouslySetInnerHTML:{__html:i}}):a.jsx("pre",{className:`${ri.codeBlockContent} ${ri.codeBlockPlain}`,children:a.jsx("code",{children:g})})]})}function cxe(e){const t=e?.match(/(?:^|\s)language-([^\s]+)/)?.[1]??"",n=t.match(/^([\w+.#-]+)/);if(!n)return"";const s=n[1]??"",r=t[s.length];return!r||r==="{"||r===":"?s:""}function xdt({children:e}){return a.jsx("code",{className:ri.inlineCode,children:e})}function hre({children:e}){return a.jsx("div",{className:ri.tableWrapper,children:a.jsx("table",{className:ri.table,children:e})})}const uxe=d.createContext(!1),dxe=d.createContext(void 0),hxe=d.createContext(void 0);function kdt(e,t,n){if(!n||e===void 0)return!1;const s=t?.position?.start.offset,r=t?.position?.end.offset;return s===void 0||r===void 0?!1:!gye(e.slice(s,r))&&e.slice(r).trim().length===0}function _dt({className:e,children:t,node:n}){const s=d.useContext(uxe),r=d.useContext(hxe);return e?.startsWith("language-")||typeof t=="string"&&t.includes(`
1618
+ `,Math.max(0,n-1))+1,o=e.slice(r,n),i=/^(?: {0,3}>[ \t]?)+$/.test(o)?r:n;return gye(e.slice(i,s))||e.slice(s).trim().length>0}function oxe(e,t){return e===NM||t?.has(e)===!0}function Put(e={}){return{code({node:n,...s}){return d.createElement("code",s)},pre:function({node:s,children:r,...o}){const i=d.useContext(eY);if(d.isValidElement(r)){const l=r,u=/(?:^|\s)language-([^\s]+)/.exec(l.props.className??"")?.[1],h=u?.toLowerCase();if(u&&h&&oxe(h,i?.registry)){const f=d.Children.toArray(l.props.children).map(m=>typeof m=="string"||typeof m=="number"?String(m):"").join("");return d.createElement(Nut,{language:u,source:f,streaming:i?.streaming===!0&&!Mut(i.source,s),...e.chartClassName?{className:e.chartClassName}:{},...e.chartStyle?{style:e.chartStyle}:{}})}}return d.createElement("pre",o,r)}}}const Lut=3e4,Dut=["artifact://","session-file://"],Out=/^[a-z]:/i;function $ut(e={}){const{resolveDataRef:t,validateDataRef:n=Uut,...s}=e,r=e.validateDataRef===void 0,o=t?async(i,l)=>{const c=r?ixe(i):i;if(!c)throw new Error("Chart data reference is not supported.");return Wut(Promise.resolve(t(c,l)),"Chart data reference resolution")}:void 0;return new CJe().register(Eut({...s,resolveDataRef:o,validateDataRef:n}))}const But={registry:$ut()};function Fut(e,t={}){const n=Put(t).pre;if(!n)throw new Error("markdown-chart React adapter did not provide a pre renderer");return function({children:r,...o}){if(d.isValidElement(r)){const i=r,c=/(?:^|\s)language-([^\s]+)/.exec(i.props.className??"")?.[1]?.toLowerCase();if(c&&oxe(c,e))return d.createElement(n,o,r)}return d.createElement(d.Fragment,null,r)}}function zut({customization:e,source:t,streaming:n,theme:s,children:r}){const o=Hut(e.labels),{t:i}=Ct();return a.jsx(jut,{registry:e.registry,source:t,streaming:n,theme:s,loadingLabel:e.loadingLabel??i("echartsChart.rendering"),labels:o,onError:e.onError,children:r})}function Hut(e){const{t}=Ct();return d.useMemo(()=>({chartUnavailable:t("echartsChart.renderFailed"),viewMode:t("echartsChart.viewMode"),chart:t("echartsChart.chart"),data:t("echartsChart.data"),showChart:t("echartsChart.showChart"),showData:t("echartsChart.showData"),noData:t("echartsChart.noData"),tableNotice:({visibleRows:n,totalRows:s,visibleColumns:r,totalColumns:o})=>t("echartsChart.tableNotice",{visibleRows:n,totalRows:s,visibleColumns:r,totalColumns:o,omittedRows:s-n,omittedColumns:o-r}),...e}),[e,t])}function are(e){return/\s/.test(e)||Array.from(e).some(t=>{const n=t.codePointAt(0);return n!==void 0&&(n<=31||n===127)})}function ixe(e){if(e.trim()!==e||!e||are(e))return;const t=e.toLowerCase(),n=Dut.find(i=>t.startsWith(i));if(!n)return;const s=e.slice(n.length);if(!s||/[?#\\]/.test(s))return;let r;try{r=decodeURIComponent(s)}catch{return}if(/[%?#\\]/.test(r)||are(r))return;const o=r.split("/");if(!o.some(i=>i.length===0||i==="."||i===".."||Out.test(i)))return`${n}${o.join("/")}`}function Uut(e){return ixe(e)!==void 0}function Wut(e,t){return new Promise((n,s)=>{const r=globalThis.setTimeout(()=>s(new Error(`${t} timed out.`)),Lut);e.then(n,s).finally(()=>globalThis.clearTimeout(r))})}const qut="_content_1ns4y_1",Vut="_streamingPlainText_1ns4y_11",Gut="_inlineCode_1ns4y_135",Kut="_link_1ns4y_147",Yut="_tableWrapper_1ns4y_157",Xut="_table_1ns4y_157",Zut="_image_1ns4y_187",Jut="_codeBlock_1ns4y_195",Qut="_codeBlockHeader_1ns4y_204",edt="_codeBlockLang_1ns4y_213",tdt="_codeBlockCopy_1ns4y_221",ndt="_codeBlockContent_1ns4y_244",sdt="_codeBlockPlain_1ns4y_264",rdt="_mermaidBlock_1ns4y_282",odt="_mermaidInline_1ns4y_294",idt="_mermaidStage_1ns4y_308",adt="_mermaidLoading_1ns4y_331",ldt="_mermaidActions_1ns4y_338",cdt="_mermaidZoomWrapper_1ns4y_343",udt="_mermaidPannable_1ns4y_358",ddt="_mermaidDragging_1ns4y_362",ri={content:qut,streamingPlainText:Vut,inlineCode:Gut,link:Kut,tableWrapper:Yut,table:Xut,image:Zut,codeBlock:Jut,codeBlockHeader:Qut,codeBlockLang:edt,codeBlockCopy:tdt,codeBlockContent:ndt,codeBlockPlain:sdt,mermaidBlock:rdt,mermaidInline:odt,mermaidStage:idt,mermaidLoading:adt,mermaidActions:ldt,mermaidZoomWrapper:cdt,mermaidPannable:udt,mermaidDragging:ddt},hdt=32e3,fdt=new Set(["javascript","typescript","python","rust","go","java","c","cpp","csharp","fsharp","ruby","php","swift","kotlin","scala","bash","fish","powershell","sql","html","css","scss","json","yaml","toml","xml","markdown","dockerfile","graphql","lua","r","matlab","perl","haskell","elixir","erlang","clojure","dart","vue","svelte","astro","tsx","jsx","diff"]),lre={"c++":"cpp","c#":"csharp","f#":"fsharp",ts:"typescript",js:"javascript",py:"python",rb:"ruby",rs:"rust",kt:"kotlin",cs:"csharp",sh:"bash",zsh:"bash",shell:"bash",yml:"yaml",md:"markdown",golang:"go",ps1:"powershell",docker:"dockerfile"};function tY(e){const t=(e||"").toLowerCase(),n=Object.hasOwn(lre,t)?lre[t]:t,s=fdt.has(n)?n:"text";return{label:(e||"").trim()||"text",lang:n,resolvedLang:s}}const axe=/^(https?:|mailto:)/i,pdt=/^data:image\/(png|jpeg|gif|webp|bmp);base64,/i,lxe=/^data:image\/(png|jpeg|gif|webp);base64,[A-Za-z0-9+/]*={0,2}$/i;function N4(e){if(!e)return!1;const t=e.trim();return t?t.startsWith("#")||t.startsWith("/")&&!t.startsWith("//")?!0:axe.test(t):!1}function Ow(e,t=!1){if(!e)return!1;const n=e.trim();return n?t?lxe.test(n):n.startsWith("#")||n.startsWith("/")&&!n.startsWith("//")||pdt.test(n)?!0:axe.test(n):!1}let cre,ure=Promise.resolve(),mdt=0;const gdt=5e4,vdt=500,wdt=1e4,dre=16;function ydt({code:e}){const{t}=Ct(),n=yb(),s=Vl()!=="interactive",[r,o]=d.useState(null),[i,l]=d.useState(null),[c,u]=d.useState("diagram"),[h,f]=bx(),[m,g]=d.useState(1),[w,y]=d.useState(!1),x=d.useRef(null),[k,_]=d.useState(!1),[S,I]=d.useState(!1),[E,A]=d.useState(null),j=d.useRef(null),L=d.useRef(null),R=n==="light"?"default":"dark",N=.5,M=3,O=.25,P=()=>{g(V=>Math.min(M,Math.round((V+O)*100)/100))},F=()=>{g(V=>Math.max(N,Math.round((V-O)*100)/100))},H=d.useCallback(()=>{L.current=null,y(!1),g(1);const V=x.current;V&&(V.scrollLeft=0,V.scrollTop=0),_(!1)},[]),$=d.useCallback(V=>{const J=x.current;J&&(V.preventDefault(),y(!0),L.current={startX:V.clientX,startY:V.clientY,startLeft:J.scrollLeft,startTop:J.scrollTop})},[]),Y=d.useCallback(V=>{const{scrollLeft:J,scrollTop:q}=V.currentTarget;_(J!==0||q!==0)},[]),Z=d.useCallback(()=>{const V=x.current;V&&(I(V.scrollWidth>V.clientWidth||V.scrollHeight>V.clientHeight),_(V.scrollLeft!==0||V.scrollTop!==0))},[]),K=d.useCallback(()=>{const V=x.current,J=j.current?.querySelector("svg");if(!V||!J)return;const[,,q,te]=(J.getAttribute("viewBox")??"").split(/[\s,]+/).map(Number),ie=(J.getAttribute("width")??"").trim(),ge=Number.parseFloat(J.getAttribute("height")??""),re=q>0&&te>0,G=re?q:Number.parseFloat(ie),Q=re?te:ge;if(!(G>0)||!(Q>0)){A(null);return}const he=V.clientWidth-dre*2,ve=ie.endsWith("%")&&he>0?Math.min(G,he):G,ye=Math.max(0,V.offsetHeight-V.clientHeight);A({stageWidth:ve,canvasHeight:ve*Q/G+dre*2+ye})},[]);d.useEffect(()=>{if(!w)return;const V=q=>{const te=x.current,ie=L.current;!te||!ie||(te.scrollLeft=ie.startLeft-(q.clientX-ie.startX),te.scrollTop=ie.startTop-(q.clientY-ie.startY),_(te.scrollLeft!==0||te.scrollTop!==0))},J=()=>{L.current=null,y(!1)};return window.addEventListener("mousemove",V),window.addEventListener("mouseup",J),window.addEventListener("blur",J),()=>{window.removeEventListener("mousemove",V),window.removeEventListener("mouseup",J),window.removeEventListener("blur",J)}},[w]),d.useEffect(()=>{H()},[e,H]),d.useLayoutEffect(()=>{K(),Z()},[r,m,c,K,Z]),d.useEffect(()=>{const V=x.current;if(!V)return;const J=new ResizeObserver(()=>{K(),Z()});return J.observe(V),()=>J.disconnect()},[r,c,K,Z]),d.useEffect(()=>{let V=!1;o(null),l(null);const J=setTimeout(()=>{Je(()=>import("./mermaid.core-Q4YMjYlN.js").then(q=>q.cb),[]).then(async q=>{if(V)return;const te=q.default,ie=`${R}:${s?"hardened":"runtime"}`,ge=ure.then(async()=>{if(V)throw new Error("Mermaid render skipped");cre!==ie&&(te.initialize({startOnLoad:!1,theme:R,securityLevel:"strict",suppressErrorRendering:!0,...s?{maxTextSize:gdt,maxEdges:vdt}:{},flowchart:{wrappingWidth:300,useMaxWidth:!1}}),cre=ie);const G=`mermaid-${++mdt}`;if(!s)return te.render(G,e.trim());let Q;try{return await Promise.race([te.render(G,e.trim()),new Promise((he,ve)=>{Q=setTimeout(()=>ve(new Error("Mermaid render timed out")),wdt)})])}finally{Q!==void 0&&clearTimeout(Q)}});ure=ge.then(()=>{},()=>{});const{svg:re}=await ge;V||o(re)}).catch(q=>{V||l(q instanceof Error?q.message:"Mermaid render failed")})},150);return()=>{V=!0,clearTimeout(J)}},[e,s,R]);const B=()=>{Yf(e).then(()=>{f()}).catch(W0)};return i?a.jsxs("div",{className:ri.codeBlock,children:[a.jsx("div",{className:ri.codeBlockHeader,children:a.jsx("span",{className:ri.codeBlockLang,children:t("mermaid.errorLabel")})}),a.jsx("pre",{className:`${ri.codeBlockContent} ${ri.codeBlockPlain}`,children:a.jsx("code",{children:e})})]}):a.jsxs("div",{className:ri.codeBlock,children:[a.jsxs("div",{className:ri.codeBlockHeader,children:[a.jsx("span",{className:ri.codeBlockLang,children:t("mermaid.label")}),a.jsxs("span",{className:ri.mermaidActions,children:[c==="diagram"&&a.jsxs(a.Fragment,{children:[a.jsx("button",{className:ri.codeBlockCopy,onClick:F,title:t("mermaid.zoomOut"),disabled:m<=N,children:t("mermaid.zoomOut")}),a.jsx("button",{className:ri.codeBlockCopy,onClick:H,title:t("mermaid.zoomReset"),disabled:m===1&&!k,children:t("mermaid.zoomReset")}),a.jsx("button",{className:ri.codeBlockCopy,onClick:P,title:t("mermaid.zoomIn"),disabled:m>=M,children:t("mermaid.zoomIn")})]}),a.jsx("button",{className:ri.codeBlockCopy,onClick:()=>u(c==="diagram"?"code":"diagram"),children:t(c==="diagram"?"mermaid.viewCode":"mermaid.viewDiagram")}),a.jsx("button",{className:ri.codeBlockCopy,onClick:B,children:t(h?"code.copied":"code.copy")})]})]}),c==="code"?a.jsx("pre",{className:`${ri.codeBlockContent} ${ri.codeBlockPlain}`,children:a.jsx("code",{children:e})}):r?a.jsx("div",{className:`${ri.mermaidZoomWrapper} ${S?ri.mermaidPannable:""} ${S&&w?ri.mermaidDragging:""}`,ref:x,style:E?{height:E.canvasHeight}:void 0,onMouseDown:$,onDoubleClick:H,onScroll:Y,children:a.jsx("div",{className:`${ri.mermaidBlock} ${ri.mermaidStage}`,ref:j,style:{...E?{width:E.stageWidth}:{},...m===1?{}:{zoom:m}},dangerouslySetInnerHTML:{__html:r}})}):a.jsx("div",{className:`${ri.mermaidBlock} ${ri.mermaidLoading} ${ri.mermaidInline}`,children:a.jsx("span",{children:t("mermaid.rendering")})})]})}function bdt({className:e,children:t,isStreaming:n}){const{t:s}=Ct(),r=yb(),o=Vl()==="document",[i,l]=d.useState(null),[c,u]=bx(),{label:h,lang:f,resolvedLang:m}=tY(cxe(e)),g=String(t).replace(/\n$/,""),w=r==="light"?"github-light-default":"github-dark-default";d.useEffect(()=>{if(o||n||f==="mermaid"||m==="text"||vU(g)){l(null);return}const x=pat(g,m,w);if(x!==null){l(x);return}const k=zse(g,m,w,!0);if(k!==null){l(k);return}l(null);let _=!1;return N1e(m).then(()=>{if(_)return;const S=zse(g,m,w,!0);S!==null&&l(S)}).catch(S=>{_||(console.warn("[web-shell] highlight failed for lang=%s",m,S),l(null))}),()=>{_=!0}},[g,o,f,m,w,n]);const y=()=>{Yf(g).then(()=>{u()}).catch(W0)};return f==="mermaid"&&!n&&!o?a.jsx(ydt,{code:g}):a.jsxs("div",{className:ri.codeBlock,children:[a.jsxs("div",{className:ri.codeBlockHeader,children:[a.jsx("span",{className:ri.codeBlockLang,children:h}),a.jsx("button",{className:ri.codeBlockCopy,onClick:y,children:s(c?"code.copied":"code.copy")})]}),!o&&!n&&i!==null?a.jsx("div",{className:ri.codeBlockContent,dangerouslySetInnerHTML:{__html:i}}):a.jsx("pre",{className:`${ri.codeBlockContent} ${ri.codeBlockPlain}`,children:a.jsx("code",{children:g})})]})}function cxe(e){const t=e?.match(/(?:^|\s)language-([^\s]+)/)?.[1]??"",n=t.match(/^([\w+.#-]+)/);if(!n)return"";const s=n[1]??"",r=t[s.length];return!r||r==="{"||r===":"?s:""}function xdt({children:e}){return a.jsx("code",{className:ri.inlineCode,children:e})}function hre({children:e}){return a.jsx("div",{className:ri.tableWrapper,children:a.jsx("table",{className:ri.table,children:e})})}const uxe=d.createContext(!1),dxe=d.createContext(void 0),hxe=d.createContext(void 0);function kdt(e,t,n){if(!n||e===void 0)return!1;const s=t?.position?.start.offset,r=t?.position?.end.offset;return s===void 0||r===void 0?!1:!gye(e.slice(s,r))&&e.slice(r).trim().length===0}function _dt({className:e,children:t,node:n}){const s=d.useContext(uxe),r=d.useContext(hxe);return e?.startsWith("language-")||typeof t=="string"&&t.includes(`
1619
1619
  `)?a.jsx(Sdt,{className:e,isStreaming:s,isIncomplete:kdt(r,n,s),children:t}):a.jsx(xdt,{children:t})}function Sdt({className:e,children:t,isStreaming:n,isIncomplete:s}){const r=d.useContext(dxe),o=yb(),{markdown:i}=Th(),l=String(t),c=l.replace(/\n$/,""),u=a.jsx(bdt,{className:e,isStreaming:n,children:l}),h=cxe(e),{resolvedLang:f}=tY(h);if(!!r&&!!e&&!!h)try{const g=i?.renderCodeBlock?.({language:h,resolvedLanguage:f,className:e,code:c,isStreaming:!!n,isIncomplete:!!s,source:r,theme:o});if(g!=null&&typeof g!="boolean")return a.jsx(K0,{fallback:u,label:`custom code block component render (lang=${h})`,resetKeys:[h,r,o,n?"streaming":"settled",s?"incomplete":"complete",c],children:g})}catch(g){console.error("[web-shell] custom code block renderer call failed (lang=%s):",h,g)}return u}function Cdt({children:e}){return a.jsx(a.Fragment,{children:e})}const SU=/^o1-code-session:\/\//i;function fre(e,t=!1){return t&&lxe.test(e.trim())||SU.test(e.trim())?e:uye(e)}function fxe({href:e,children:t,node:n,id:s,"aria-label":r,"aria-describedby":o}){const i=Vl(),l=Hp();if((n?.properties.dataFootnoteRef!==void 0||n?.properties.dataFootnoteBackref!==void 0)&&e?.startsWith("#"))return a.jsx("a",{id:s,href:e,className:ri.link,"aria-label":r,"aria-describedby":o,"data-footnote-ref":n?.properties.dataFootnoteRef!==void 0?"":void 0,"data-footnote-backref":n?.properties.dataFootnoteBackref!==void 0?"":void 0,onClick:h=>{const m=h.currentTarget.getRootNode().getElementById(e.slice(1));m&&(h.preventDefault(),m.scrollIntoView({block:"nearest"}),!m.hasAttribute("tabindex")&&m.tagName!=="BUTTON"&&(m.tabIndex=-1),m.focus({preventScroll:!0}))},children:t});if(e&&SU.test(e.trim())){if(i!=="interactive")return a.jsx("span",{className:ri.link,children:t});const h=e.trim().replace(SU,"");return a.jsx("a",{href:"#",role:"button",className:ri.link,onClick:f=>{f.preventDefault(),f.stopPropagation(),window.dispatchEvent(new CustomEvent("o1-code:open-session",{detail:h}))},children:t})}const u=N4(e)?e:void 0;return a.jsx("a",{href:u,target:"_blank",rel:"noopener noreferrer",className:ri.link,onClick:h=>l(h,u),children:t})}function Tdt({src:e,alt:t}){const n=Vl(),s=Ow(e,n==="document")?e:void 0;return a.jsx("img",{src:s,alt:t||"",className:ri.image})}function Idt(e,t,n=80){const[s,r]=d.useState(e),o=d.useRef(s);o.current=s;const i=d.useRef(0),l=d.useRef(null),c=d.useRef(e);return c.current=e,d.useEffect(()=>{if(!t){l.current&&(clearTimeout(l.current),l.current=null),o.current!==e&&r(e);return}const u=Date.now(),h=u-i.current;h>=n?(i.current=u,r(c.current)):l.current||(l.current=setTimeout(()=>{i.current=Date.now(),l.current=null,r(c.current)},n-h))},[e,t,n]),d.useEffect(()=>()=>{l.current&&(clearTimeout(l.current),l.current=null)},[]),!t||typeof e=="string"&&typeof s=="string"&&!e.startsWith(s)?e:s}function pxe(e="basic",t=""){return{code:_dt,pre:Cdt,a:fxe,img:Tdt,sup:q1e,section:V1e,table({children:n}){if(e==="advanced"){const s=a.jsx(hre,{children:n});return a.jsx(K0,{fallback:s,label:"enhanced markdown table",resetKeys:[t],children:a.jsx(bct,{fallback:s,children:n})})}return a.jsx(hre,{children:n})}}}const Rdt=pxe(),Edt=d.memo(function({content:t,components:n,remarkPlugins:s,rehypePlugins:r,urlTransform:o}){return a.jsx(mJe,{components:n,remarkPlugins:s,rehypePlugins:r,urlTransform:o,children:t})}),Im=d.memo(function({content:t,source:n,isStreaming:s,tableMode:r}){const{markdown:o,markdownTableMode:i}=Th(),l=yb(),c=Vl()==="document",u=`footnote-${d.useId()}-`,h=n?o:void 0,f=Idt(t??"",s),m=s===!0&&f.length>hdt,g=d.useMemo(()=>f&&n&&h?.transformMarkdown?h.transformMarkdown(f,{source:n,isStreaming:s===!0}):f,[n,h,f,s]),w=s?"basic":r??i??"basic",y=d.useMemo(()=>w==="advanced"?pxe("advanced",g):Rdt,[w,g]),x=h?.components,k=h?.getInlineFootnoteIcon,_=h?.mountFootnotePreview,S=d.useMemo(()=>{if(!x&&!k&&!_)return y;const O={...y,...x,...w==="advanced"?{table:y.table}:{}},P=x?.a;return x&&(O.a=F=>{if(F.node?.properties.dataFootnoteRef!==void 0||F.node?.properties.dataFootnoteBackref!==void 0||!P)return a.jsx(fxe,{...F});if(typeof P!="string")return d.createElement(P,F);const{node:$,...Y}=F;return d.createElement(P,Y)}),x?.sup||(O.sup=F=>a.jsx(q1e,{...F,linkComponent:P,iconResolver:k,mountPreview:_}),O.section=F=>a.jsx(V1e,{...F,sectionComponent:x?.section})),O},[y,w,x,k,_]),I=!c&&n==="assistant"&&!x?.code&&!x?.pre?h?.chart??(h?.renderCodeBlock?void 0:But):void 0,E=d.useMemo(()=>I?Fut(I.registry,{chartClassName:I.chartClassName,chartStyle:{minHeight:360,...I.chartStyle}}):void 0,[I]),A=d.useMemo(()=>E?{...S,pre:E}:S,[E,S]),j=d.useMemo(()=>h?.remarkPlugins?[_ne,cse,kse,...h.remarkPlugins]:[_ne,cse,kse],[h?.remarkPlugins]),L=d.useMemo(()=>[Ast,...h?.rehypePlugins??[],[Rct,{prefix:u,group:!c&&!x?.sup,safeHref:N4,safeImage:Ow,transformUrl:fre}]],[h?.rehypePlugins,u,c,x?.sup]),R=d.useMemo(()=>O=>fre(O,c),[c]);if(!t)return null;if(m)return a.jsx("div",{className:n!=="thinking"?ri.content:void 0,"data-markdown-source":n,"data-markdown-streaming-plain-text":"true",children:a.jsx("pre",{className:ri.streamingPlainText,children:g})});const N=a.jsx(Edt,{content:g,components:A,remarkPlugins:j,rehypePlugins:L,urlTransform:R}),M=I?a.jsx(zut,{customization:I,source:g,streaming:!!s,theme:l,children:N}):N;return a.jsx("div",{className:n!=="thinking"?ri.content:void 0,"data-markdown-source":n,children:a.jsx(uxe.Provider,{value:!!s,children:a.jsx(dxe.Provider,{value:n,children:a.jsx(hxe.Provider,{value:g,children:M})})})})}),K$=/https?:\/\/[A-Za-z0-9\-._~:/?#[\]{}@!$&'()*+,;=%]+/gi,Adt=new Set([...".,;:!?'*_~"]),jdt={")":"(","]":"[","}":"{"},Ndt=/^https?:\/\/./i;function pre(e,t){let n=0;for(const s of e)s===t&&(n+=1);return n}function Mdt(e){const t={};for(const[s,r]of Object.entries(jdt))t[s]=pre(e,s)-pre(e,r);let n=e.length;for(;n>0;){const s=e.charAt(n-1);if(Object.hasOwn(t,s)){if(t[s]<=0)break;t[s]--,n--;continue}if(!Adt.has(s))break;n--}return e.slice(0,n)}function Pdt(e){const t=[];let n=0;K$.lastIndex=0;for(let s=K$.exec(e);s!==null;s=K$.exec(e)){const r=Mdt(s[0]);if(!Ndt.test(r))continue;const o=s.index;o>n&&t.push({type:"text",value:e.slice(n,o)}),t.push({type:"url",value:r}),n=o+r.length}return n<e.length&&t.push({type:"text",value:e.slice(n)}),t}const M9=d.memo(function({text:t}){const n=Hp(),s=d.useMemo(()=>Pdt(t),[t]);return s.every(r=>r.type==="text")?t:s.map((r,o)=>{if(r.type==="text")return r.value;const i=r.value.replace(/%(?![0-9A-Za-z]{2})/g,"%25"),l=N4(i)?i:void 0;return a.jsx("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:ri.link,onClick:c=>n(c,l),children:r.value},o)})}),Ldt="_flash_96ig5_1",pb={flash:Ldt},Ddt="_chatMessageRow_qnd03_41",Odt="_chatMessageColumn_qnd03_48",$dt="_chatBubble_qnd03_55",Bdt="_scheduledTaskBubble_qnd03_68",Fdt="_scheduledTaskRun_qnd03_76",zdt="_scheduledTaskHeader_qnd03_83",Hdt="_scheduledTaskIcon_qnd03_90",Udt="_scheduledTaskHeading_qnd03_108",Wdt="_scheduledTaskEyebrow_qnd03_115",qdt="_scheduledTaskName_qnd03_122",Vdt="_scheduledTaskMeta_qnd03_131",Gdt="_scheduledTaskMetaItem_qnd03_138",Kdt="_scheduledTaskBadge_qnd03_158",Ydt="_scheduledTaskId_qnd03_170",Xdt="_scheduledTaskPrompt_qnd03_181",Zdt="_sendFailure_qnd03_191",Jdt="_retryButton_qnd03_201",Qdt="_editArea_qnd03_229",eht="_editInput_qnd03_237",tht="_editActions_qnd03_258",nht="_editCancel_qnd03_264",sht="_editSubmit_qnd03_265",rht="_chatContent_qnd03_294",oht="_messageTag_qnd03_299",iht="_messageTagTooltip_qnd03_317",aht="_messageTagClickable_qnd03_351",lht="_messageTagIcon_qnd03_364",cht="_messageTagLabel_qnd03_376",uht="_messageTagValue_qnd03_377",dht="_chatContentCollapsed_qnd03_400",hht="_toggleButton_qnd03_405",fht="_toggleIcon_qnd03_426",pht="_toggleIconExpanded_qnd03_433",mht="_chatImages_qnd03_437",ght="_chatImageThumb_qnd03_445",vht="_chatImageThumbInteractive_qnd03_453",wht="_chatFiles_qnd03_462",yht="_chatFileChip_qnd03_470",bht="_chatFileChipPreviewable_qnd03_483",xht="_fileTagIcon_qnd03_492",Uo={chatMessageRow:Ddt,chatMessageColumn:Odt,chatBubble:$dt,scheduledTaskBubble:Bdt,scheduledTaskRun:Fdt,scheduledTaskHeader:zdt,scheduledTaskIcon:Hdt,scheduledTaskHeading:Udt,scheduledTaskEyebrow:Wdt,scheduledTaskName:qdt,scheduledTaskMeta:Vdt,scheduledTaskMetaItem:Gdt,scheduledTaskBadge:Kdt,scheduledTaskId:Ydt,scheduledTaskPrompt:Xdt,sendFailure:Zdt,retryButton:Jdt,editArea:Qdt,editInput:eht,editActions:tht,editCancel:nht,editSubmit:sht,chatContent:rht,messageTag:oht,messageTagTooltip:iht,messageTagClickable:aht,messageTagIcon:lht,messageTagLabel:cht,messageTagValue:uht,chatContentCollapsed:dht,toggleButton:hht,toggleIcon:fht,toggleIconExpanded:pht,chatImages:mht,chatImageThumb:ght,chatImageThumbInteractive:vht,chatFiles:wht,chatFileChip:yht,chatFileChipPreviewable:bht,fileTagIcon:xht},kht="This is a scheduled task run. Execute the instructions below now. Do not create or modify a schedule unless the instructions explicitly ask you to.";function _ht(e){const t=`
1620
1620
 
1621
1621
  ${kht}
1622
1622
 
1623
1623
  `,n=e.indexOf(t);if(n<0)return null;const s=e.slice(0,n).split(`
1624
- `);if(s.length!==6||s[5]!=="Session: new chat for this run"||[["Scheduled task: ",s[0]],["Task ID: ",s[1]],["Schedule: ",s[2]],["Triggered at: ",s[3]],["Trigger: ",s[4]]].some(([i,l])=>!l?.startsWith(i)))return null;const o=s[4].slice(9);return o!=="scheduled"&&o!=="manual"?null:{name:s[0].slice(16),id:s[1].slice(9),cron:s[2].slice(10),triggeredAt:s[3].slice(14),trigger:o,prompt:e.slice(n+t.length)}}function Sht({run:e}){const{language:t,t:n}=Ct(),s=new Date(e.triggeredAt),r=Number.isNaN(s.getTime())?e.triggeredAt:s.toLocaleString(t);return a.jsxs("div",{className:Uo.scheduledTaskRun,"data-web-shell-scheduled-task-run-message":!0,children:[a.jsxs("div",{className:Uo.scheduledTaskHeader,children:[a.jsx("span",{className:Uo.scheduledTaskIcon,"aria-hidden":"true",children:a.jsx(V3,{})}),a.jsxs("span",{className:Uo.scheduledTaskHeading,children:[a.jsx("span",{className:Uo.scheduledTaskEyebrow,children:n("scheduledTasks.runContext.title")}),a.jsx("strong",{className:Uo.scheduledTaskName,children:e.name})]})]}),a.jsxs("div",{className:Uo.scheduledTaskMeta,children:[a.jsxs("span",{className:Uo.scheduledTaskMetaItem,title:e.cron,children:[a.jsx("span",{children:n("scheduledTasks.runContext.schedule")}),a.jsx("code",{children:BT(e.cron,n)})]}),a.jsxs("span",{className:Uo.scheduledTaskMetaItem,children:[a.jsx("span",{children:n("scheduledTasks.runContext.triggeredAt")}),a.jsx("time",{dateTime:e.triggeredAt,children:r})]}),a.jsx("span",{className:Uo.scheduledTaskBadge,children:n(e.trigger==="manual"?"scheduledTasks.runContext.trigger.manual":"scheduledTasks.runContext.trigger.scheduled")}),a.jsx("span",{className:Uo.scheduledTaskBadge,children:n("scheduledTasks.sessionMode.perRun")})]}),a.jsxs("div",{className:Uo.scheduledTaskId,children:[n("scheduledTasks.runContext.taskId"),": ",a.jsx("code",{children:e.id})]}),a.jsx("div",{className:Uo.scheduledTaskPrompt,children:a.jsx(M9,{text:e.prompt})})]})}function Cht({composerTagIcons:e,content:t,inputAnnotations:n,onComposerTagClick:s,onFileTagClick:r,renderComposerTag:o,renderComposerTagTooltip:i}){const l=d.useMemo(()=>Twe(t,n),[t,n]);return a.jsx(a.Fragment,{children:l.map((c,u)=>c.type==="text"?a.jsx(M9,{text:c.text},u):a.jsx(nY,{composerTagIcons:e,onComposerTagClick:c.tag.kind==="file"&&q0(c.tag)?r:s,renderComposerTag:o,renderComposerTagTooltip:i,tag:c.tag,title:c.tag.serialized,preserveCustomKindLabel:!0},`${c.tag.id}:${u}`))})}const mxe=d.memo(function({content:t,images:n,files:s,inputAnnotations:r,isLocateFlashing:o=!1,sendFailed:i=!1,onRetrySend:l,editing:c=!1,submittingEdit:u=!1,onEditSubmit:h,onEditCancel:f,onImagePreview:m,onAttachmentPreview:g}){const{t:w}=Ct(),y=Vl()==="document",{parseUserMessageContent:x,renderUserMessageContent:k,composerTagIcons:_,renderComposerTag:S,renderComposerTagTooltip:I,onComposerTagClick:E}=Th(),A=d.useRef(null),[j,L]=d.useState(!1),[R,N]=d.useState(!1),[M,O]=d.useState(t);d.useEffect(()=>{c&&O(t)},[c,t]);const P=d.useCallback(()=>{const B=M.trim();!B&&!n?.length&&!s?.length||u||h?.(B)},[M,s?.length,n?.length,h,u]),F=d.useCallback(B=>{if(!u&&!(B.nativeEvent.isComposing||B.nativeEvent.keyCode===229)){if(B.key==="Escape"){B.preventDefault(),f?.();return}B.key==="Enter"&&!B.shiftKey&&(B.preventDefault(),P())}},[f,P,u]),H=d.useCallback(B=>{q0(B.tag)&&g?.({name:B.tag.value.split(/[\\/]/).pop()??B.tag.value,workspacePath:B.tag.value}),E?.(B)},[g,E]),$=g||E?H:void 0,Y=d.useMemo(()=>_ht(t),[t]),Z=d.useMemo(()=>{if(Y)return a.jsx(Sht,{run:Y});const B=k?.({content:t,images:n,files:s,inputAnnotations:r});if(B!=null)return B;if(r&&r.length>0)return a.jsx(Cht,{composerTagIcons:_,content:t,inputAnnotations:r,onComposerTagClick:E,onFileTagClick:$,renderComposerTag:S,renderComposerTagTooltip:I});const V=eK(t,x,"[WebShell] failed to parse user message content");return V?V.map((J,q)=>J.type==="text"?a.jsx(M9,{text:J.text},q):a.jsx(nY,{tag:J.tag,composerTagIcons:_,renderComposerTag:S,renderComposerTagTooltip:I,onComposerTagClick:J.tag.kind==="file"&&q0(J.tag)?$:E},`${J.tag.id}-${q}`)):a.jsx(M9,{text:t})},[t,n,s,r,$,E,x,_,S,I,k,Y]),K=d.useCallback(()=>{const B=A.current;B&&N(B.scrollHeight>400)},[]);return d.useLayoutEffect(()=>{L(!1),K()},[t,n?.length,c,K]),d.useEffect(()=>{const B=A.current;if(!B||typeof ResizeObserver>"u")return;const V=new ResizeObserver(K);return V.observe(B),()=>V.disconnect()},[K]),a.jsx("div",{className:Uo.chatMessageRow,"data-web-shell-user-row":!0,children:a.jsxs("div",{className:`${Uo.chatMessageColumn}${o&&t.trim().length===0?` ${pb.flash}`:""}`,children:[n&&n.length>0&&a.jsx("div",{className:Uo.chatImages,"data-web-shell-user-images":!0,children:n.map((B,V)=>{const J=B.data.startsWith("data:")?B.data:`data:${B.mimeType};base64,${B.data}`;return Ow(J)?a.jsx("img",{src:J,alt:w("user.uploadedImage",{index:V+1}),className:`${Uo.chatImageThumb}${m?` ${Uo.chatImageThumbInteractive}`:""}`,onClick:m?()=>m(J,w("user.uploadedImage",{index:V+1}),B.attachmentId?{kind:"attachment",attachmentId:B.attachmentId}:void 0):void 0},V):null})}),s&&s.length>0&&a.jsx("div",{className:Uo.chatFiles,"data-web-shell-user-files":!0,children:s.map((B,V)=>{const J=!!(g&&(B.data!==void 0||B.text!==void 0||B.attachmentId));return a.jsx("span",{className:`${Uo.chatFileChip}${J?` ${Uo.chatFileChipPreviewable}`:""}`,role:J?"button":void 0,tabIndex:J?0:void 0,onClick:J?()=>g?.(B):void 0,onKeyDown:q=>{J&&(q.key==="Enter"||q.key===" ")&&(q.preventDefault(),g?.(B))},children:a.jsx(Cwe,{name:B.name,mimeType:B.mimeType})},`${B.name}-${V}`)})}),(t.trim().length>0||c)&&a.jsxs("div",{className:`${Uo.chatBubble}${Y?` ${Uo.scheduledTaskBubble}`:""}${o?` ${pb.flash}`:""}`,"data-web-shell-user-bubble":!0,children:[a.jsx("div",{ref:A,className:`${Uo.chatContent} ${R&&!y&&!j?Uo.chatContentCollapsed:""}`,hidden:c,children:Z}),c&&a.jsxs("div",{className:Uo.editArea,children:[a.jsx("textarea",{className:Uo.editInput,value:M,onChange:B=>O(B.target.value),onKeyDown:F,"aria-label":w("userMessage.edit"),readOnly:u,autoFocus:!0}),a.jsxs("div",{className:Uo.editActions,children:[a.jsx("button",{type:"button",className:Uo.editCancel,onClick:f,disabled:u,children:w("common.cancel")}),a.jsx("button",{type:"button",className:Uo.editSubmit,onClick:P,disabled:u||!M.trim()&&!n?.length&&!s?.length,children:w(u?"userMessage.editSending":"userMessage.editSubmit")})]})]}),R&&!y&&!c&&a.jsxs("button",{type:"button",className:Uo.toggleButton,onClick:()=>L(B=>!B),children:[a.jsx("span",{children:w(j?"userMessage.showLess":"userMessage.showMore")}),a.jsx("svg",{className:`${Uo.toggleIcon} ${j?Uo.toggleIconExpanded:""}`,viewBox:"0 0 16 16","aria-hidden":"true",children:a.jsx("path",{d:"m4 6 4 4 4-4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"})})]})]}),i&&l&&a.jsxs("div",{className:Uo.sendFailure,children:[a.jsx("span",{children:w("userMessage.sendFailed")}),a.jsxs("button",{type:"button",className:Uo.retryButton,onClick:l,"aria-label":w("userMessage.retrySend"),title:w("userMessage.retrySend"),children:[a.jsx(Hg,{"aria-hidden":"true"}),a.jsx("span",{children:w("common.retry")})]})]})]})})});function Tht(e){return QG(e)}function nY({tag:e,composerTagIcons:t,renderComposerTag:n,renderComposerTagTooltip:s,onComposerTagClick:r,title:o,preserveCustomKindLabel:i=!1}){const l={tag:e,placement:"user-message",readonly:!0};let c,u;try{c=n?.(l)}catch(_){console.warn("[WebShell] user message tag render failed",_)}try{u=s?.(l)}catch(_){console.warn("[WebShell] user message tag tooltip render failed",_)}const h=!!r,f=i?lKe(e,t):null,m=YP(e),g=f?.tagValue??FE(e),w=f?.tagLabel??(e.kind?"":m),y=f?.fallback??e.id,x=e.icon??f?.iconUrl??Tw(e.kind,t),k=x&&(nK(x)||Ow(x))?x:void 0;return a.jsxs("span",{className:`${Uo.messageTag}${h?` ${Uo.messageTagClickable}`:""}`,role:h?"button":void 0,tabIndex:h?0:void 0,title:o??Tht(e),onClick:_=>{h&&(_.stopPropagation(),r?.({...l,anchorRect:_.currentTarget.getBoundingClientRect()}))},onKeyDown:_=>{h&&(_.key!=="Enter"&&_.key!==" "||(_.preventDefault(),r?.({...l,anchorRect:_.currentTarget.getBoundingClientRect()})))},children:[c??a.jsxs(a.Fragment,{children:[q0(e)&&!e.icon&&k===Tw("file")?a.jsx(U0,{name:g,size:16,className:Uo.fileTagIcon,"aria-hidden":"true"}):k?a.jsx("span",{className:Uo.messageTagIcon,style:K1("--user-message-tag-icon-url",k),"aria-hidden":"true"}):null,w&&a.jsx("span",{className:Uo.messageTagLabel,children:w}),g?a.jsx("span",{className:Uo.messageTagValue,children:g}):w?null:a.jsx("span",{className:Uo.messageTagLabel,children:y})]}),u!=null&&a.jsx("span",{className:Uo.messageTagTooltip,role:"tooltip",children:u})]})}const Iht="_bubble_1gd1y_1",Rht="_answers_1gd1y_7",Eht="_question_1gd1y_14",Aht="_answer_1gd1y_7",eN={bubble:Iht,answers:Rht,question:Eht,answer:Aht};function jht({tool:e,result:t,isLocateFlashing:n=!1}){const{text:s,answers:r}=t;return a.jsx("div",{className:Uo.chatMessageRow,"data-transcript-tool-call-id":e.callId,children:a.jsx("div",{className:Uo.chatMessageColumn,children:a.jsx("div",{className:`${Uo.chatBubble} ${eN.bubble} ${n?pb.flash:""}`,children:r.length>0?a.jsx("dl",{className:eN.answers,children:r.map(({question:o,answer:i},l)=>a.jsxs("div",{children:[a.jsx("dt",{className:eN.question,children:o}),a.jsx("dd",{className:eN.answer,children:i})]},l))}):s})})})}const Nht={exec:"Exec",edit:"Edit",write_file:"WriteFile",read_file:"ReadFile",zoom_image:"ZoomImage",grep:"Grep",grep_search:"Grep",glob:"Glob",run_shell_command:"Shell",todo_write:"TodoList",get_goal:"Goal",update_goal:"UpdateGoal",propose_goal:"ProposeGoal",save_memory:"SaveMemory",agent:"Agent",skill:"Skill",exit_plan_mode:"ExitPlanMode",web_fetch:"WebFetch",webfetch:"WebFetch",fetch:"WebFetch",list_directory:"ListFiles",lsp:"Lsp",ask_user_question:"AskUserQuestion",cron_create:"CronCreate",cron_list:"CronList",cron_delete:"CronDelete",loop_wakeup:"LoopWakeup",create_sub_session:"CreateSubSession",task_stop:"TaskStop",list_agents:"ListAgents",send_message:"SendMessage",structured_output:"StructuredOutput",monitor:"Monitor",notebook_edit:"NotebookEdit",tool_search:"ToolSearch",tool_call:"ToolCall",read_mcp_resource:"ReadMcpResource",enter_worktree:"EnterWorktree",exit_worktree:"ExitWorktree",enter_plan_mode:"EnterPlanMode",task_create:"TaskCreate",task_update:"TaskUpdate",task_list:"TaskList",team_create:"TeamCreate",team_delete:"TeamDelete",team_plan_approval:"TeamPlanApproval",request_shutdown:"RequestShutdown",workflow:"Workflow",artifact:"Artifact",record_artifact:"RecordArtifact",record_source:"RecordSource",report_findings:"ReportFindings",web_search:"WebSearch",image_gen:"ImageGen",omni_downsample_image:"DownsampleImage",omni_downscale_video:"DownscaleVideo",omni_downsample_audio:"DownsampleAudio",omni_extract_keyframes:"ExtractKeyframes",omni_extract_audio:"ExtractAudio",omni_clip_video:"ClipVideo",omni_convert_image:"ConvertImage",omni_transcribe_audio:"TranscribeAudio",omni_clip_image:"ClipImage",omni_clip_audio:"ClipAudio",omni_caption_image:"CaptionImage",omni_caption_audio:"CaptionAudio",omni_ocr_image:"OcrImage",omni_understand_video_segments:"UnderstandVideoSegments",omni_recall_media_memory:"RecallMediaMemory",display_image:"DisplayImage",bash:"Shell",shell:"Shell Command",read:"ReadFile",write:"WriteFile",search:"Grep"},Mht=/[\x00-\x08\x0b-\x1f\x7f-\x9f\u202a-\u202e\u2066-\u2069]/g;function Cg(e){return e.replace(Mht,t=>{switch(t){case"\b":return"\\b";case"\f":return"\\f";case"\r":return"\\r";default:return`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`}})}function gxe(e){if(!e.trim())return"Tool";const t=Nht[e];if(t)return t;const n=e.toLowerCase();return n==="web_fetch"||n==="webfetch"||n==="fetch"?"WebFetch":e}function Wg(e,t){const n=gxe(e),s=[`toolName.${e}`,`toolName.${e.toLowerCase()}`,`toolName.${n.toLowerCase()}`];for(const r of s){const o=t(r);if(o!==r)return o}return n}function Rm(e){const t=e.toLowerCase();return t==="ask_user_question"||t==="askuserquestion"}function sY(e){return e.status==="completed"&&Rm(e.toolName)}function Pht(e){const t=e.rawOutput;return!t||typeof t!="object"||!("type"in t)||t.type!=="ask_user_question_answers"||!("text"in t)||typeof t.text!="string"||!("answers"in t)||!Array.isArray(t.answers)||!t.answers.every(n=>!!n&&typeof n=="object"&&"question"in n&&typeof n.question=="string"&&"answer"in n&&typeof n.answer=="string")?null:{text:t.text,answers:t.answers}}function Au(e,t){return e.length<=t?e:e.slice(0,t)+"..."}const gT=2e3;function P9(e,t){if(rY(e.toolName)){const r=yL(e.args,"skill");if(r)return Au(r,gT)}const n=Oht(e,t);if(n)return Au(n,gT);const s=wxe(e,t);return s?Au(s,gT):""}function vxe(e,t){if(!F0(e.toolName))return P9(e,t);const n=yL(e.args,"description");if(n)return Au(n,gT);const s=wxe(e,t,{includeTimeout:!1});return s?Au(s,gT):""}function Lht(e){return F0(e.toolName)?yL(e.args,"description"):""}function M4(e){if(!e.content)return TU(e.rawOutput);for(const t of e.content)if(t.type==="content"&&t.content?.text)return t.content.text;return TU(e.rawOutput)}function Dht(e){if(e.status!=="completed"&&e.status!=="failed")return"";const t=e.toolName.toLowerCase();if(t==="grep_search"||t==="grep"||t==="search"){const i=mre((TU(e.rawOutput)??"").trim());if(i)return i}const n=M4(e);if(!n)return"";const s=n.split(`
1624
+ `);if(s.length!==6||s[5]!=="Session: new chat for this run"||[["Scheduled task: ",s[0]],["Task ID: ",s[1]],["Schedule: ",s[2]],["Triggered at: ",s[3]],["Trigger: ",s[4]]].some(([i,l])=>!l?.startsWith(i)))return null;const o=s[4].slice(9);return o!=="scheduled"&&o!=="manual"?null:{name:s[0].slice(16),id:s[1].slice(9),cron:s[2].slice(10),triggeredAt:s[3].slice(14),trigger:o,prompt:e.slice(n+t.length)}}function Sht({run:e}){const{language:t,t:n}=Ct(),s=new Date(e.triggeredAt),r=Number.isNaN(s.getTime())?e.triggeredAt:s.toLocaleString(t);return a.jsxs("div",{className:Uo.scheduledTaskRun,"data-web-shell-scheduled-task-run-message":!0,children:[a.jsxs("div",{className:Uo.scheduledTaskHeader,children:[a.jsx("span",{className:Uo.scheduledTaskIcon,"aria-hidden":"true",children:a.jsx(V3,{})}),a.jsxs("span",{className:Uo.scheduledTaskHeading,children:[a.jsx("span",{className:Uo.scheduledTaskEyebrow,children:n("scheduledTasks.runContext.title")}),a.jsx("strong",{className:Uo.scheduledTaskName,children:e.name})]})]}),a.jsxs("div",{className:Uo.scheduledTaskMeta,children:[a.jsxs("span",{className:Uo.scheduledTaskMetaItem,title:e.cron,children:[a.jsx("span",{children:n("scheduledTasks.runContext.schedule")}),a.jsx("code",{children:BT(e.cron,n)})]}),a.jsxs("span",{className:Uo.scheduledTaskMetaItem,children:[a.jsx("span",{children:n("scheduledTasks.runContext.triggeredAt")}),a.jsx("time",{dateTime:e.triggeredAt,children:r})]}),a.jsx("span",{className:Uo.scheduledTaskBadge,children:n(e.trigger==="manual"?"scheduledTasks.runContext.trigger.manual":"scheduledTasks.runContext.trigger.scheduled")}),a.jsx("span",{className:Uo.scheduledTaskBadge,children:n("scheduledTasks.sessionMode.perRun")})]}),a.jsxs("div",{className:Uo.scheduledTaskId,children:[n("scheduledTasks.runContext.taskId"),": ",a.jsx("code",{children:e.id})]}),a.jsx("div",{className:Uo.scheduledTaskPrompt,children:a.jsx(M9,{text:e.prompt})})]})}function Cht({composerTagIcons:e,content:t,inputAnnotations:n,onComposerTagClick:s,onFileTagClick:r,renderComposerTag:o,renderComposerTagTooltip:i}){const l=d.useMemo(()=>Twe(t,n),[t,n]);return a.jsx(a.Fragment,{children:l.map((c,u)=>c.type==="text"?a.jsx(M9,{text:c.text},u):a.jsx(nY,{composerTagIcons:e,onComposerTagClick:c.tag.kind==="file"&&q0(c.tag)?r:s,renderComposerTag:o,renderComposerTagTooltip:i,tag:c.tag,title:c.tag.serialized,preserveCustomKindLabel:!0},`${c.tag.id}:${u}`))})}const mxe=d.memo(function({content:t,images:n,files:s,inputAnnotations:r,isLocateFlashing:o=!1,sendFailed:i=!1,onRetrySend:l,editing:c=!1,submittingEdit:u=!1,onEditSubmit:h,onEditCancel:f,onImagePreview:m,onAttachmentPreview:g}){const{t:w}=Ct(),y=Vl()==="document",{parseUserMessageContent:x,renderUserMessageContent:k,composerTagIcons:_,renderComposerTag:S,renderComposerTagTooltip:I,onComposerTagClick:E}=Th(),A=d.useRef(null),[j,L]=d.useState(!1),[R,N]=d.useState(!1),[M,O]=d.useState(t);d.useEffect(()=>{c&&O(t)},[c,t]);const P=d.useCallback(()=>{const B=M.trim();!B&&!n?.length&&!s?.length||u||h?.(B)},[M,s?.length,n?.length,h,u]),F=d.useCallback(B=>{if(!u&&!(B.nativeEvent.isComposing||B.nativeEvent.keyCode===229)){if(B.key==="Escape"){B.preventDefault(),f?.();return}B.key==="Enter"&&!B.shiftKey&&(B.preventDefault(),P())}},[f,P,u]),H=d.useCallback(B=>{q0(B.tag)&&g?.({name:B.tag.value.split(/[\\/]/).pop()??B.tag.value,workspacePath:B.tag.value}),E?.(B)},[g,E]),$=g||E?H:void 0,Y=d.useMemo(()=>_ht(t),[t]),Z=d.useMemo(()=>{if(Y)return a.jsx(Sht,{run:Y});const B=k?.({content:t,images:n,files:s,inputAnnotations:r});if(B!=null)return B;if(r&&r.length>0)return a.jsx(Cht,{composerTagIcons:_,content:t,inputAnnotations:r,onComposerTagClick:E,onFileTagClick:$,renderComposerTag:S,renderComposerTagTooltip:I});const V=eK(t,x,"[WebShell] failed to parse user message content");return V?V.map((J,q)=>J.type==="text"?a.jsx(M9,{text:J.text},q):a.jsx(nY,{tag:J.tag,composerTagIcons:_,renderComposerTag:S,renderComposerTagTooltip:I,onComposerTagClick:J.tag.kind==="file"&&q0(J.tag)?$:E},`${J.tag.id}-${q}`)):a.jsx(M9,{text:t})},[t,n,s,r,$,E,x,_,S,I,k,Y]),K=d.useCallback(()=>{const B=A.current;B&&N(B.scrollHeight>400)},[]);return d.useLayoutEffect(()=>{L(!1),K()},[t,n?.length,c,K]),d.useEffect(()=>{const B=A.current;if(!B||typeof ResizeObserver>"u")return;const V=new ResizeObserver(K);return V.observe(B),()=>V.disconnect()},[K]),a.jsx("div",{className:Uo.chatMessageRow,"data-web-shell-user-row":!0,children:a.jsxs("div",{className:`${Uo.chatMessageColumn}${o&&t.trim().length===0?` ${pb.flash}`:""}`,children:[n&&n.length>0&&a.jsx("div",{className:Uo.chatImages,"data-web-shell-user-images":!0,children:n.map((B,V)=>{const J=B.data.startsWith("data:")?B.data:`data:${B.mimeType};base64,${B.data}`;return Ow(J)?a.jsx("img",{src:J,alt:w("user.uploadedImage",{index:V+1}),className:`${Uo.chatImageThumb}${m?` ${Uo.chatImageThumbInteractive}`:""}`,onClick:m?()=>m(J,w("user.uploadedImage",{index:V+1}),B.attachmentId?{kind:"attachment",attachmentId:B.attachmentId}:void 0):void 0},V):null})}),s&&s.length>0&&a.jsx("div",{className:Uo.chatFiles,"data-web-shell-user-files":!0,children:s.map((B,V)=>{const J=!!(g&&(B.data!==void 0||B.text!==void 0||B.attachmentId));return a.jsx("span",{className:`${Uo.chatFileChip}${J?` ${Uo.chatFileChipPreviewable}`:""}`,role:J?"button":void 0,tabIndex:J?0:void 0,onClick:J?()=>g?.(B):void 0,onKeyDown:q=>{J&&(q.key==="Enter"||q.key===" ")&&(q.preventDefault(),g?.(B))},children:a.jsx(Cwe,{name:B.name,mimeType:B.mimeType})},`${B.name}-${V}`)})}),(t.trim().length>0||c)&&a.jsxs("div",{className:`${Uo.chatBubble}${Y?` ${Uo.scheduledTaskBubble}`:""}${o?` ${pb.flash}`:""}`,"data-web-shell-user-bubble":!0,children:[a.jsx("div",{ref:A,className:`${Uo.chatContent} ${R&&!y&&!j?Uo.chatContentCollapsed:""}`,hidden:c,children:Z}),c&&a.jsxs("div",{className:Uo.editArea,children:[a.jsx("textarea",{className:Uo.editInput,value:M,onChange:B=>O(B.target.value),onKeyDown:F,"aria-label":w("userMessage.edit"),readOnly:u,autoFocus:!0}),a.jsxs("div",{className:Uo.editActions,children:[a.jsx("button",{type:"button",className:Uo.editCancel,onClick:f,disabled:u,children:w("common.cancel")}),a.jsx("button",{type:"button",className:Uo.editSubmit,onClick:P,disabled:u||!M.trim()&&!n?.length&&!s?.length,children:w(u?"userMessage.editSending":"userMessage.editSubmit")})]})]}),R&&!y&&!c&&a.jsxs("button",{type:"button",className:Uo.toggleButton,onClick:()=>L(B=>!B),children:[a.jsx("span",{children:w(j?"userMessage.showLess":"userMessage.showMore")}),a.jsx("svg",{className:`${Uo.toggleIcon} ${j?Uo.toggleIconExpanded:""}`,viewBox:"0 0 16 16","aria-hidden":"true",children:a.jsx("path",{d:"m4 6 4 4 4-4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"})})]})]}),i&&l&&a.jsxs("div",{className:Uo.sendFailure,children:[a.jsx("span",{children:w("userMessage.sendFailed")}),a.jsxs("button",{type:"button",className:Uo.retryButton,onClick:l,"aria-label":w("userMessage.retrySend"),title:w("userMessage.retrySend"),children:[a.jsx(Hg,{"aria-hidden":"true"}),a.jsx("span",{children:w("common.retry")})]})]})]})})});function Tht(e){return QG(e)}function nY({tag:e,composerTagIcons:t,renderComposerTag:n,renderComposerTagTooltip:s,onComposerTagClick:r,title:o,preserveCustomKindLabel:i=!1}){const l={tag:e,placement:"user-message",readonly:!0};let c,u;try{c=n?.(l)}catch(_){console.warn("[WebShell] user message tag render failed",_)}try{u=s?.(l)}catch(_){console.warn("[WebShell] user message tag tooltip render failed",_)}const h=!!r,f=i?lKe(e,t):null,m=YP(e),g=f?.tagValue??FE(e),w=f?.tagLabel??(e.kind?"":m),y=f?.fallback??e.id,x=e.icon??f?.iconUrl??Tw(e.kind,t),k=x&&(nK(x)||Ow(x))?x:void 0;return a.jsxs("span",{className:`${Uo.messageTag}${h?` ${Uo.messageTagClickable}`:""}`,role:h?"button":void 0,tabIndex:h?0:void 0,title:o??Tht(e),onClick:_=>{h&&(_.stopPropagation(),r?.({...l,anchorRect:_.currentTarget.getBoundingClientRect()}))},onKeyDown:_=>{h&&(_.key!=="Enter"&&_.key!==" "||(_.preventDefault(),r?.({...l,anchorRect:_.currentTarget.getBoundingClientRect()})))},children:[c??a.jsxs(a.Fragment,{children:[q0(e)&&!e.icon&&k===Tw("file")?a.jsx(U0,{name:g,size:16,className:Uo.fileTagIcon,"aria-hidden":"true"}):k?a.jsx("span",{className:Uo.messageTagIcon,style:K1("--user-message-tag-icon-url",k),"aria-hidden":"true"}):null,w&&a.jsx("span",{className:Uo.messageTagLabel,children:w}),g?a.jsx("span",{className:Uo.messageTagValue,children:g}):w?null:a.jsx("span",{className:Uo.messageTagLabel,children:y})]}),u!=null&&a.jsx("span",{className:Uo.messageTagTooltip,role:"tooltip",children:u})]})}const Iht="_bubble_1gd1y_1",Rht="_answers_1gd1y_7",Eht="_question_1gd1y_14",Aht="_answer_1gd1y_7",eN={bubble:Iht,answers:Rht,question:Eht,answer:Aht};function jht({tool:e,result:t,isLocateFlashing:n=!1}){const{text:s,answers:r}=t;return a.jsx("div",{className:Uo.chatMessageRow,"data-transcript-tool-call-id":e.callId,children:a.jsx("div",{className:Uo.chatMessageColumn,children:a.jsx("div",{className:`${Uo.chatBubble} ${eN.bubble} ${n?pb.flash:""}`,children:r.length>0?a.jsx("dl",{className:eN.answers,children:r.map(({question:o,answer:i},l)=>a.jsxs("div",{children:[a.jsx("dt",{className:eN.question,children:o}),a.jsx("dd",{className:eN.answer,children:i})]},l))}):s})})})}const Nht={exec:"Exec",edit:"Edit",write_file:"WriteFile",read_file:"ReadFile",zoom_image:"ZoomImage",grep:"Grep",grep_search:"Grep",glob:"Glob",run_shell_command:"Shell",todo_write:"TodoList",report_progress:"Progress",get_goal:"Goal",update_goal:"UpdateGoal",propose_goal:"ProposeGoal",save_memory:"SaveMemory",agent:"Agent",skill:"Skill",exit_plan_mode:"ExitPlanMode",web_fetch:"WebFetch",webfetch:"WebFetch",fetch:"WebFetch",list_directory:"ListFiles",lsp:"Lsp",ask_user_question:"AskUserQuestion",cron_create:"CronCreate",cron_list:"CronList",cron_delete:"CronDelete",loop_wakeup:"LoopWakeup",create_sub_session:"CreateSubSession",task_stop:"TaskStop",list_agents:"ListAgents",send_message:"SendMessage",structured_output:"StructuredOutput",monitor:"Monitor",notebook_edit:"NotebookEdit",tool_search:"ToolSearch",tool_call:"ToolCall",read_mcp_resource:"ReadMcpResource",enter_worktree:"EnterWorktree",exit_worktree:"ExitWorktree",enter_plan_mode:"EnterPlanMode",task_create:"TaskCreate",task_update:"TaskUpdate",task_list:"TaskList",team_create:"TeamCreate",team_delete:"TeamDelete",team_plan_approval:"TeamPlanApproval",request_shutdown:"RequestShutdown",workflow:"Workflow",artifact:"Artifact",record_artifact:"RecordArtifact",record_source:"RecordSource",report_findings:"ReportFindings",web_search:"WebSearch",image_gen:"ImageGen",omni_downsample_image:"DownsampleImage",omni_downscale_video:"DownscaleVideo",omni_downsample_audio:"DownsampleAudio",omni_extract_keyframes:"ExtractKeyframes",omni_extract_audio:"ExtractAudio",omni_clip_video:"ClipVideo",omni_convert_image:"ConvertImage",omni_transcribe_audio:"TranscribeAudio",omni_clip_image:"ClipImage",omni_clip_audio:"ClipAudio",omni_caption_image:"CaptionImage",omni_caption_audio:"CaptionAudio",omni_ocr_image:"OcrImage",omni_understand_video_segments:"UnderstandVideoSegments",omni_recall_media_memory:"RecallMediaMemory",display_image:"DisplayImage",bash:"Shell",shell:"Shell Command",read:"ReadFile",write:"WriteFile",search:"Grep"},Mht=/[\x00-\x08\x0b-\x1f\x7f-\x9f\u202a-\u202e\u2066-\u2069]/g;function Cg(e){return e.replace(Mht,t=>{switch(t){case"\b":return"\\b";case"\f":return"\\f";case"\r":return"\\r";default:return`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`}})}function gxe(e){if(!e.trim())return"Tool";const t=Nht[e];if(t)return t;const n=e.toLowerCase();return n==="web_fetch"||n==="webfetch"||n==="fetch"?"WebFetch":e}function Wg(e,t){const n=gxe(e),s=[`toolName.${e}`,`toolName.${e.toLowerCase()}`,`toolName.${n.toLowerCase()}`];for(const r of s){const o=t(r);if(o!==r)return o}return n}function Rm(e){const t=e.toLowerCase();return t==="ask_user_question"||t==="askuserquestion"}function sY(e){return e.status==="completed"&&Rm(e.toolName)}function Pht(e){const t=e.rawOutput;return!t||typeof t!="object"||!("type"in t)||t.type!=="ask_user_question_answers"||!("text"in t)||typeof t.text!="string"||!("answers"in t)||!Array.isArray(t.answers)||!t.answers.every(n=>!!n&&typeof n=="object"&&"question"in n&&typeof n.question=="string"&&"answer"in n&&typeof n.answer=="string")?null:{text:t.text,answers:t.answers}}function Au(e,t){return e.length<=t?e:e.slice(0,t)+"..."}const gT=2e3;function P9(e,t){if(rY(e.toolName)){const r=yL(e.args,"skill");if(r)return Au(r,gT)}const n=Oht(e,t);if(n)return Au(n,gT);const s=wxe(e,t);return s?Au(s,gT):""}function vxe(e,t){if(!F0(e.toolName))return P9(e,t);const n=yL(e.args,"description");if(n)return Au(n,gT);const s=wxe(e,t,{includeTimeout:!1});return s?Au(s,gT):""}function Lht(e){return F0(e.toolName)?yL(e.args,"description"):""}function M4(e){if(!e.content)return TU(e.rawOutput);for(const t of e.content)if(t.type==="content"&&t.content?.text)return t.content.text;return TU(e.rawOutput)}function Dht(e){if(e.status!=="completed"&&e.status!=="failed")return"";const t=e.toolName.toLowerCase();if(t==="grep_search"||t==="grep"||t==="search"){const i=mre((TU(e.rawOutput)??"").trim());if(i)return i}const n=M4(e);if(!n)return"";const s=n.split(`
1625
1625
  `),r=s.length;if(t==="read"||t==="read_file"||t==="readfile")return`${r} line(s)`;if(t==="glob")return`Found ${s.filter(l=>l.trim()).length} matching file(s)`;if(t==="list_directory"||t==="listfiles")return`${s.filter(l=>l.trim()).length} item(s)`;if(F0(t)){if(r>3)return`${r} lines of output`;const i=s[0]||"";return Au(i,80)}if(t==="grep_search"||t==="grep"||t==="search"){const i=mre(n.trim());return i||`${s.filter(c=>c.trim()).length} result(s)`}if(t==="edit"||t==="write"||t==="write_file"||t==="editfile")return"";if(t==="webfetch"||t==="web_fetch"||t==="fetch"){const i=s[0]||"";return Au(i,80)}if(t==="websearch"||t==="web_search"){const i=s.filter(l=>l.trim()).length;return i>1?`${i} result(s)`:s[0]||""}if(Rm(t))return"";const o=s[0]||"";return Au(o,80)}function Oht(e,t){if(!e.title)return null;const n=gxe(e.toolName),s=e.title.trim();if(s===e.toolName||s===n)return null;const r=[n,e.toolName];for(const o of r)if(s.startsWith(o)){const i=s.slice(o.length);if(/^(:\s*|\s+)/.test(i))return gre(i.replace(/^:\s*|\s+/,""),t)}return gre(s,t)}function mre(e){return e==="No matches found"||/^Found \d+ match(?:es)?(?: \(truncated\))?$/.test(e)?e:null}function wxe(e,t,n={}){const s=e.args||{},r=e.toolName.toLowerCase(),o=n.includeTimeout??!0;if(s.command){let i=String(s.command);s.directory&&r!=="shell"&&(i+=` [in ${eT(String(s.directory),t)}]`),s.is_background?i+=" [background]":o&&s.timeout&&(i+=` [timeout: ${String(s.timeout)}ms]`);const l=yL(s,"description");return l&&(i+=` (${l})`),Au(i,gT)}if(r==="grep_search"||r==="grep"||r==="search"){const i=s.pattern??s.query;if(i){let l=`'${String(i)}'`;return s.path?l+=` in path '${String(s.path)}'`:(r==="grep_search"||r==="grep")&&(l+=" in path './'"),s.glob&&(l+=` (filter: '${String(s.glob)}')`),l}}if(r==="glob"&&s.pattern){let i=`'${String(s.pattern)}'`;return s.path&&(i+=` in path '${String(s.path)}'`),i}if(s.file_path)return s.description?String(s.description):eT(String(s.file_path),t);if(s.url){const i=String(s.url),l=typeof s.prompt=="string"?s.prompt:void 0,c=l?`${i} — "${Au(l,40)}"`:i;return Au(c,80)}if(s.path)return eT(String(s.path),t);if(s.query)return Au(String(s.query),60);if(r==="list_directory"||r==="listfiles"){const i=s.path||s.directory||"";return eT(String(i),t)}return s.description?String(s.description):""}function yL(e,t){const n=e?.[t];return typeof n=="string"?n.trim().replace(/\n/g," "):""}function bL(e){return e.toLowerCase()==="workflow"}function F0(e){const t=e.toLowerCase();return t==="run_shell_command"||t==="bash"||t==="shell"||t==="execute_command"}function rY(e){return e.toLowerCase()==="skill"}function Y0(e,t){return e.callId===t?!0:e.subTools?.some(n=>Y0(n,t))??!1}function gre(e,t){const n=e.trim();return yxe(CU(n))?eT(n,t):n.replace(/(^|[\s'"(])((?:[A-Za-z]:)?\/[^\s'")]+)/g,(s,r,o)=>r+eT(o,t))}function eT(e,t){const n=CU(e),s=t?CU(t).replace(/\/+$/,""):"";return s&&(n===s||n.startsWith(`${s}/`))?n.slice(s.length+1)||".":yxe(n)?$ht(n):n}function CU(e){return e.replace(/\\/g,"/")}function yxe(e){return e.startsWith("/")||/^[A-Za-z]:\//.test(e)}function $ht(e){return e.replace(/\/+$/,"").split("/").pop()||e}function P4(e){if(!e||typeof e!="object")return;const t=e;return t.type==="task_execution"?t:void 0}function oY(e){if(!e.rawOutput||typeof e.rawOutput!="object")return"";const t=e.rawOutput,n=typeof t.terminateReason=="string"?t.terminateReason:"";return typeof t.reason=="string"&&t.reason||n&&n!=="GOAL"&&n||typeof t.error=="string"&&t.error||""}function iY(e){if(!e.rawOutput||typeof e.rawOutput!="object")return!1;const t=e.rawOutput,n=typeof t.status=="string"?t.status.toLowerCase():"",s=oY(e);return n==="cancelled"||n==="canceled"||s.toLowerCase().includes("cancel")}function wh(e){if(e.subagentSessionReady!==!1)return;const t=e.rawOutput&&typeof e.rawOutput=="object"?e.rawOutput.status:void 0;if(e.wasCancelled||typeof t=="string"&&["cancelled","canceled"].includes(t.toLowerCase()))return"subagent.cancelled";if(e.status==="failed"||P4(e.rawOutput)?.status==="failed")return"subagent.failed";if(iY(e))return"subagent.cancelled";if(e.status!=="completed")return"subagent.creating"}function JE(e){return e.status==="failed"||iY(e)?"failed":e.status}function aY(e){return e>=1e6?`${(e/1e6).toFixed(1)}M tokens`:e>=1e3?(e/1e3).toFixed(1).replace(/\.0$/,"")+"k tokens":`${e} tokens`}const bxe="general-purpose";function lY(e){const t=P4(e.rawOutput);if(t){const s=t.subagentName;if(typeof s=="string"&&s)return s}const n=e.args?.subagent_type;return typeof n=="string"&&n?n:e.toolName==="task"?"task":bxe}function Bht(e){return e.toLowerCase()===bxe||e==="task"}function L4(e,t){const n=[`agentType.${e}`,`agentType.${e.toLowerCase()}`];for(const s of n){const r=t(s);if(r!==s)return r}return e}function u5(e){if(e.title){const o=e.title.indexOf(": ");if(o>0)return e.title.slice(o+2)}const t=e.args?.description;if(typeof t=="string"&&t.trim())return t.trim();const s=P4(e.rawOutput)?.taskDescription;if(typeof s=="string"&&s.trim())return s.trim();const r=e.args?.prompt;return typeof r=="string"&&r.trim()?r.trim().split(`
1626
1626
  `)[0]??"":""}function xxe(e,t){if(e.status!=="in_progress")return"";const n=e.subTools;if(!n||n.length===0)return"";const s=n[n.length-1];if(s.status!=="in_progress"&&s.status!=="pending")return"";let r=Wg(s.toolName??"",t);if(s.title){const o=s.title.indexOf(": ");r+=" "+(o>0?s.title.slice(o+2):s.title)}else s.args?.command?r+=" "+String(s.args.command):s.args?.file_path&&(r+=" "+String(s.args.file_path));return Au(r,50)}function TU(e){if(!e)return null;if(typeof e=="string")return e;if(typeof e!="object")return null;const t=e;return typeof t.output=="string"?t.output:typeof t.stdout=="string"?t.stdout:typeof t.content=="string"?t.content:typeof t.reason=="string"?t.reason:typeof t.terminateReason=="string"?t.terminateReason:typeof t.error=="string"?t.error:typeof t.text=="string"?t.text:null}function yw(e){return e instanceof HTMLElement?e.isContentEditable?!0:!!e.closest('input, textarea, select, [contenteditable="true"], .cm-editor, [data-keyboard-scope]'):!1}function Xy(e){const t=e?.getRootNode();return t instanceof Document||t instanceof ShadowRoot?t.activeElement:null}function Fht({sources:e,onOpen:t}){const{t:n}=Ct(),{getAssistantSourcesIcon:s}=Th(),[r,o]=d.useState(!1),i=d.useRef(null),l=d.useRef(null),c=d.useRef(!1),u=d.useRef(!1),h=d.useRef(void 0),f=d.useMemo(()=>{try{const y=s?.(e);return typeof y=="string"&&Ow(y)?y.trim():void 0}catch{return}},[s,e]),m=()=>clearTimeout(h.current),g=()=>{m(),o(!0)},w=()=>{m(),!c.current&&(h.current=setTimeout(()=>{(u.current||!i.current?.matches(":focus-within"))&&!l.current?.matches(":focus-within")&&o(!1)},200))};return d.useEffect(()=>()=>clearTimeout(h.current),[]),e.length?a.jsxs(_d,{open:r,onOpenChange:y=>{m(),y||(c.current=!1),o(y)},children:[a.jsx(Qh,{asChild:!0,children:a.jsxs("button",{ref:i,type:"button","data-web-shell-turn-sources-trigger":"",className:"inline-flex h-5 items-center gap-1 rounded-[5px] px-1 text-[11px] leading-[1.4] text-muted-foreground hover:bg-accent hover:text-accent-foreground focus-visible:outline-2 focus-visible:outline-ring",onPointerEnter:y=>{y.pointerType!=="touch"&&g()},onPointerLeave:w,onFocus:()=>{u.current=!1,g()},onBlur:w,onClick:y=>{y.preventDefault(),c.current=!0,g()},onKeyDown:y=>{["Enter"," ","ArrowDown"].includes(y.key)&&(y.preventDefault(),u.current=!1,g(),requestAnimationFrame(()=>l.current?.querySelector("button:not(:disabled)")?.focus()))},children:[a.jsx("span",{"aria-hidden":"true",className:`size-3.5 shrink-0 bg-current ${f?"":"-translate-y-px"}`,style:{maskImage:WS(f??QK),maskSize:"contain",maskPosition:"center",maskRepeat:"no-repeat"}}),n("sources.count",{count:e.length})]})}),a.jsxs(Sd,{ref:l,"data-web-shell-turn-sources":"",side:"top",align:"start",sideOffset:6,collisionPadding:12,className:"w-[360px] max-w-[calc(100vw-24px)] rounded-2xl p-4","aria-label":n("sources.currentTurn"),"aria-describedby":void 0,onOpenAutoFocus:y=>y.preventDefault(),onCloseAutoFocus:y=>y.preventDefault(),onEscapeKeyDown:()=>{i.current?.focus({preventScroll:!0}),u.current=!0},onPointerEnter:m,onPointerLeave:w,onFocusCapture:m,onBlurCapture:w,children:[a.jsx("div",{className:"text-xs text-muted-foreground",children:n("sources.currentTurn")}),a.jsx("div",{className:"-mx-1.5 max-h-[min(50vh,320px)] overflow-y-auto overscroll-contain px-1.5",tabIndex:0,children:a.jsx(dwe,{entries:e,onOpen:t?y=>{t(y),l.current?.contains(Xy(l.current))&&(i.current?.focus({preventScroll:!0}),u.current=!0),c.current=!1,o(!1)}:void 0})})]})]}):null}const zht="_message_fyphx_1",Hht="_customFooter_fyphx_7",Uht="_messageFooter_fyphx_11",Wht="_copyButton_fyphx_27",qht="_feedbackButton_fyphx_57",Vht="_feedbackButtonActiveUp_fyphx_68",Ght="_feedbackButtonActiveDown_fyphx_74",Kht="_footerTime_fyphx_80",Yht="_thinking_fyphx_92",Xht="_thinkingBody_fyphx_104",Zht="_thinkingHeader_fyphx_135",Jht="_thinkingSummary_fyphx_147",Qht="_translateButton_fyphx_163",eft="_thinkingHeaderExpanded_fyphx_186",tft="_translationPopover_fyphx_193",nft="_translationTitle_fyphx_199",sft="_translationContent_fyphx_204",rft="_translationPending_fyphx_211",oft="_translationError_fyphx_215",ift="_translationFooter_fyphx_219",aft="_translationUsage_fyphx_229",lft="_translationActions_fyphx_236",cft="_thinkingSummaryTextActive_fyphx_251",uft="_thinkingSummaryIcon_fyphx_258",dft="_thinkingSummaryText_fyphx_251",hft="_thinkingChevronRight_fyphx_315",fft="_thinkingChevronDown_fyphx_316",pft="_thinkingExpandedWrap_fyphx_379",mft="_thinkingExpandedClip_fyphx_383",gft="_thinkingExpandedInner_fyphx_390",vft="_content_fyphx_438",wft="_contentBody_fyphx_443",qi={message:zht,customFooter:Hht,messageFooter:Uht,copyButton:Wht,feedbackButton:qht,feedbackButtonActiveUp:Vht,feedbackButtonActiveDown:Ght,footerTime:Kht,thinking:Yht,thinkingBody:Xht,thinkingHeader:Zht,thinkingSummary:Jht,translateButton:Qht,thinkingHeaderExpanded:eft,translationPopover:tft,translationTitle:nft,translationContent:sft,translationPending:rft,translationError:oft,translationFooter:ift,translationUsage:aft,translationActions:lft,thinkingSummaryTextActive:cft,thinkingSummaryIcon:uft,thinkingSummaryText:dft,thinkingChevronRight:hft,thinkingChevronDown:fft,thinkingExpandedWrap:pft,thinkingExpandedClip:mft,thinkingExpandedInner:gft,content:vft,contentBody:wft},yft=d.memo(function({content:t,isStreaming:n,timestamp:s,onBranchSession:r,showFooterActions:o=!1,showBranchAction:i=!1,showAssistantFeedback:l=!1,assistantFeedbackRating:c,onAssistantFeedbackRate:u,isLocateFlashing:h=!1,customFooterInfo:f,turnSources:m,onSourceOpen:g}){const{t:w}=Ct(),y=Vl()==="document",{renderAssistantTurnFooter:x}=Th(),[k,_]=bx(),[S,I]=d.useState(!1),E=!!t&&!n&&(o||(m?.length??0)>0)&&!y,A=d.useMemo(()=>f?x?.(f):void 0,[f,x]),j=d.useCallback(async()=>{if(!(!r||S)){I(!0);try{await r()}catch{}finally{I(!1)}}},[S,r]),L=d.useCallback(()=>{Yf(t).then(()=>{_()}).catch(W0)},[t,_]),R=d.useCallback((M,O)=>{u&&(u(c===M?null:M),O.detail>0&&O.currentTarget.blur())},[c,u]),N=d.useCallback(M=>{const O=M==="up"?qi.feedbackButtonActiveUp:qi.feedbackButtonActiveDown;return`${qi.copyButton} ${qi.feedbackButton}${c===M?` ${O}`:""}`},[c]);return a.jsxs("div",{className:qi.message,children:[t&&a.jsx("div",{className:`${qi.content}${h?` ${pb.flash}`:""}`,children:a.jsx("div",{className:qi.contentBody,children:a.jsx(Im,{content:t,source:"assistant",isStreaming:n})})}),A&&a.jsx("div",{className:qi.customFooter,children:A}),E&&a.jsxs("div",{className:qi.messageFooter,children:[o&&a.jsx("button",{type:"button",className:qi.copyButton,title:w("assistant.copy"),"aria-label":w("assistant.copy"),onClick:L,children:k?a.jsx(xft,{}):a.jsx(bft,{})}),o&&l&&a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:N("up"),title:w("assistant.satisfied"),"aria-label":w("assistant.satisfied"),"aria-pressed":c==="up",onClick:M=>R("up",M),children:a.jsx(Cqe,{})}),a.jsx("button",{type:"button",className:N("down"),title:w("assistant.dissatisfied"),"aria-label":w("assistant.dissatisfied"),"aria-pressed":c==="down",onClick:M=>R("down",M),children:a.jsx(_qe,{})})]}),o&&i&&r&&a.jsx("button",{type:"button",className:qi.copyButton,title:w("assistant.branch"),"aria-label":w("assistant.branch"),disabled:S,onClick:()=>void j(),children:a.jsx(kft,{})}),m?.length?a.jsx(Fht,{sources:m,onOpen:g}):null,o&&s!==void 0&&a.jsx("span",{className:qi.footerTime,"aria-hidden":"true",children:xx(s)})]})]})});function bft(){return a.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[a.jsx("path",{d:"M5.2 4.4V3.2c0-.7.5-1.2 1.2-1.2h5.4c.7 0 1.2.5 1.2 1.2v5.4c0 .7-.5 1.2-1.2 1.2h-1.2",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.3"}),a.jsx("rect",{x:"3",y:"5.2",width:"7.8",height:"7.8",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.3"})]})}function xft(){return a.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:a.jsx("path",{d:"m3.5 8.3 3 3L12.8 5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.6"})})}function kft(){return a.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[a.jsx("path",{d:"M5 3.5v5.2c0 2.1 1.7 3.8 3.8 3.8H11",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.35"}),a.jsx("path",{d:"M5 8.2h3.2c1.5 0 2.8-1.2 2.8-2.8V4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.35"}),a.jsx("circle",{cx:"5",cy:"3.5",r:"1.5",fill:"currentColor"}),a.jsx("circle",{cx:"11",cy:"4",r:"1.5",fill:"currentColor"}),a.jsx("circle",{cx:"11",cy:"12.5",r:"1.5",fill:"currentColor"})]})}const z_=new Map,_ft=200;function vre(e,t){if(z_.delete(e),z_.set(e,t),z_.size<=_ft)return;const n=z_.keys().next().value;n!==void 0&&z_.delete(n)}const Sft=d.memo(function({thinkingActive:t,thinkingExpanded:n,documentMode:s,summaryText:r,translateContent:o,showTranslateButton:i,generateContent:l,onToggle:c}){const{t:u}=Ct();return a.jsxs("div",{className:`${qi.thinkingHeader}${n?` ${qi.thinkingHeaderExpanded}`:""}`,onClick:h=>{!s&&h.currentTarget.contains(h.target)&&c()},children:[a.jsxs("button",{type:"button",disabled:s,tabIndex:s?-1:void 0,className:qi.thinkingSummary,"aria-expanded":s?void 0:n,title:s?void 0:u(n?"thinking.collapse":"thinking.expand"),children:[a.jsx("span",{className:qi.thinkingSummaryIcon,"aria-hidden":"true",children:a.jsx(uY,{})}),a.jsx("span",{className:t?`${qi.thinkingSummaryText} ${qi.thinkingSummaryTextActive}`:qi.thinkingSummaryText,children:r})]}),i&&o!==void 0&&l&&a.jsx(cY,{content:o,generateContent:l,className:qi.translateButton}),a.jsx("span",{className:n?qi.thinkingChevronDown:qi.thinkingChevronRight,"aria-hidden":"true"})]})}),Cft=d.memo(function({content:t,isStreaming:n,timestamp:s,isLocateFlashing:r=!1,generateContent:o}){const{language:i,t:l}=Ct(),u=Vl()==="document",h=KP(),[f,m]=d.useState(!1),g=u?h:f,w=n===!0,y=d.useRef(s??Date.now()),x=d.useRef(w),[k,_]=d.useState(()=>Date.now()),[S,I]=d.useState(null),E=!!t;d.useEffect(()=>{if(!E||!w)return;_(Date.now());const M=setInterval(()=>_(Date.now()),1e3);return()=>clearInterval(M)},[E,w]),d.useEffect(()=>{if(t){if(w){x.current=!0,I(null);return}x.current&&S===null&&I(Date.now())}},[t,S,w]);const A=w||S!==null?(w?k:S)-y.current:void 0,j=Tft({isStreaming:n,durationMs:A}),L=A!==void 0?Ift(A):"",R=d.useCallback(()=>{u||m(M=>!M)},[u]),N=l(j,L?{duration:L}:{});return a.jsx("div",{className:`${qi.message}${r?` ${pb.flash}`:""}`,children:t&&a.jsx("div",{className:qi.thinking,children:a.jsxs("div",{className:qi.thinkingBody,children:[a.jsx(Sft,{thinkingActive:w,thinkingExpanded:g,documentMode:u,summaryText:N,translateContent:w?void 0:t,showTranslateButton:!u&&i==="zh-CN"&&!w&&o!==void 0,generateContent:o,onToggle:R}),g&&a.jsx("div",{className:qi.thinkingExpandedClip,children:a.jsx("div",{className:qi.thinkingExpandedInner,children:a.jsx("div",{className:qi.thinkingExpandedWrap,children:a.jsx(Im,{content:t,source:"thinking",isStreaming:n})})})})]})})})});function cY({content:e,generateContent:t,className:n,mode:s="translate"}){const{language:r,t:o}=Ct(),[i,l]=d.useState(!1),[c,u]=d.useState(),[h,f]=d.useState(!1),[m,g]=d.useState(!1),[w,y]=d.useState(!1),x=d.useRef(void 0);d.useEffect(()=>()=>{x.current?.abort()},[]);const k=d.useCallback(async(I=!1)=>{if(!t||h&&!I)return;const E=`${s}:${r}:${e}`,A=z_.get(E);if(A&&!I){vre(E,A),u(A);return}I&&z_.delete(E),x.current?.abort();const j=new AbortController;x.current=j,u({text:""}),g(!1),y(!1),f(!0);let L="",R=!1;try{const N=r==="zh-CN"?"Simplified Chinese":"English",M=s==="explain-shell"?`Explain the following shell command in ${N}. Describe what it does and call out any notable risks. Be concise and output only the explanation.
1627
1627
 
@@ -2213,7 +2213,7 @@ ${i("terminal.notice.protocolMismatch")}`),ie.close(4002,"Terminal protocol mism
2213
2213
  * Copyright 2025 Qwen Team
2214
2214
  * SPDX-License-Identifier: Apache-2.0
2215
2215
  */const agn=250,VF={truncated:!1,status:"idle"};function lgn(e){if(e instanceof Error&&e.message)return e.message;const t=String(e??"");return t.length>0?t:"Unknown error"}function cgn(e){return e.replayError?{kind:"unreadable",message:e.replayError}:e.partial?{kind:"partial"}:void 0}function ugn(e,t={}){const n=t.pageSize??agn,[s,r]=d.useState(VF),o=d.useRef(0),i=d.useCallback(()=>{if(!e)return;const u=++o.current;r(h=>({...h,status:"loading",error:void 0})),e({limit:n}).then(h=>{if(o.current!==u)return;const f=cgn(h);if(f!==void 0){r(m=>({...m,status:"error",error:f}));return}r({events:h.events,truncated:h.hasMore,status:"ready"})},h=>{o.current===u&&r(f=>({...f,status:"error",error:{kind:"unreadable",message:lgn(h)}}))})},[e,n]);d.useEffect(()=>{if(!e){o.current+=1,r(VF);return}return r(VF),i(),()=>{o.current+=1}},[e,i]);const l=s.events;return{trajectory:d.useMemo(()=>l===void 0?void 0:sgn(ign(l)),[l]),status:s.status,...s.error!==void 0?{error:s.error}:{},truncated:s.truncated,refresh:i}}const dgn="_panel_1ploj_1",hgn="_header_1ploj_8",fgn="_summary_1ploj_17",pgn="_headerActions_1ploj_26",mgn="_headerButton_1ploj_33",ggn="_iconButton_1ploj_54",vgn="_error_1ploj_78",wgn="_notice_1ploj_91",ygn="_tableWrap_1ploj_100",bgn="_placeholder_1ploj_107",xgn="_scroll_1ploj_114",kgn="_olderBar_1ploj_126",_gn="_olderNotice_1ploj_132",Sgn="_virtualBody_1ploj_137",Cgn="_virtualRow_1ploj_142",Tgn="_turnHeader_1ploj_151",Ign="_turnTitle_1ploj_167",Rgn="_turnSummary_1ploj_171",Egn="_record_1ploj_179",Agn="_nestMarker_1ploj_198",jgn="_selected_1ploj_203",Ngn="_badge_1ploj_208",Mgn="_text_1ploj_221",Pgn="_faint_1ploj_230",Lgn="_metrics_1ploj_235",Dgn="_toneError_1ploj_244",Ogn="_toneMuted_1ploj_248",Ua={panel:dgn,header:hgn,summary:fgn,headerActions:pgn,headerButton:mgn,iconButton:ggn,error:vgn,notice:wgn,tableWrap:ygn,placeholder:bgn,scroll:xgn,olderBar:kgn,olderNotice:_gn,virtualBody:Sgn,virtualRow:Cgn,turnHeader:Tgn,turnTitle:Ign,turnSummary:Rgn,record:Egn,nestMarker:Agn,selected:jgn,badge:Ngn,text:Mgn,faint:Pgn,metrics:Lgn,toneError:Dgn,toneMuted:Ogn},vue=34;function wue(e){return e>=999950?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function $gn(e){return`${wue(e.inputTokens)} → ${wue(e.outputTokens)}`}const Bgn=/-call_[A-Za-z0-9]+$/;function Fgn(e){const{subagentId:t,parentToolCallId:n}=e;if(t!==void 0)return n!==void 0&&t.endsWith(`-${n}`)?t.slice(0,-(n.length+1)):t.replace(Bgn,"")}function yE(e){const t=e.trim(),n=t.indexOf(`
2216
- `);return n===-1?t:t.slice(0,n)}function zgn(e,t){if(e.kind==="request"){const n=[kh(e.timing.durationMs)];return e.timing.ttftMs!==void 0&&n.push(t("trajectory.ttft",{duration:kh(e.timing.ttftMs)})),e.usage&&n.push($gn(e.usage)),n}if(e.kind==="tool"){const n=[];if(e.timing&&n.push(kh(e.timing.durationMs)),e.subagentSummary){const{requests:s,tools:r,requestMs:o}=e.subagentSummary;n.push(t("trajectory.subagentRollup",{requests:s,tools:r,duration:kh(o)}))}return n}return[]}function yue(e){const t=e.toolStatus??e.block.status;if(t==="error"||t==="failed")return Ua.toneError;if(t==="cancelled")return Ua.toneMuted}function Hgn(e,t){switch(e.kind){case"user":return{badge:t("trajectory.badge.user"),text:yE(e.block.text)};case"request":{const n=Fgn(e),s=e.status==="error",r=n!==void 0?`${n}${e.model?` · ${e.model}`:""}`:e.model??t("trajectory.request");return{badge:n!==void 0?t("trajectory.badge.subagent"):`#${e.requestIndex??"?"}`,...s?{badgeTone:Ua.toneError}:{},text:s?`${r} · ${t("trajectory.requestFailed")}`:r}}case"message":return{badge:e.thought?t("trajectory.badge.thought"):t("trajectory.badge.message"),text:yE(e.block.text),faint:e.thought};case"tool":return{badge:e.block.toolName??t("trajectory.badge.tool"),...yue(e)?{badgeTone:yue(e)}:{},text:e.block.title||(e.block.toolName??"")};default:return Ugn(e.block,t)}}function Ugn(e,t){switch(e.kind){case"shell":return{badge:t("trajectory.badge.shell"),text:yE(e.text)};case"user_shell":return{badge:t("trajectory.badge.shell"),text:yE(e.command||e.text)};case"permission":return{badge:t("trajectory.badge.permission"),text:e.title||e.toolName||""};case"status":case"error":case"debug":return{badge:t("trajectory.badge.status"),...e.kind==="error"?{badgeTone:Ua.toneError}:{},text:yE(e.text),faint:e.kind!=="error"};case"prompt_cancelled":return{badge:t("trajectory.badge.cancelled"),badgeTone:Ua.toneMuted,text:e.reason??t("trajectory.cancelled"),faint:!0};default:return{badge:t("trajectory.badge.other"),text:""}}}function Wgn(e){return e.rows.some(t=>t.kind==="request"||t.kind==="tool"&&t.timing!==void 0)}function qgn({loadPage:e}){const{t}=Ct(),{trajectory:n,status:s,error:r,truncated:o,refresh:i}=ugn(e),[l,c]=d.useState(void 0),u=d.useRef(null),h=d.useRef(!1),f=d.useRef(0),m=d.useId(),g=d.useCallback(R=>`${m}-row-${R}`,[m]),w=d.useCallback((R,N)=>{R.scrollTop=N,f.current=R.scrollTop},[]),y=d.useMemo(()=>{if(!n)return[];const R=new Map(n.rows.map(M=>[M.key,M])),N=[];for(const M of n.turns){const O=M.userRowKey??`ordinal:${M.index}`;N.push({kind:"turn",key:`turn:${O}`,turn:M});for(const P of M.rowKeys){const F=R.get(P);F&&N.push({kind:"row",key:P,row:F})}}return N},[n]),x=wwe({count:y.length,getScrollElement:()=>u.current,getItemKey:R=>y[R]?.key??R,estimateSize:()=>vue,overscan:12}),k=y.length>0;d.useLayoutEffect(()=>{const R=u.current;if(!R||typeof ResizeObserver>"u")return;let N=0;const M=()=>{R.scrollTop===0&&f.current>0&&(R.scrollTop=f.current)},O=new ResizeObserver(()=>{M(),N=requestAnimationFrame(M)});return O.observe(R),()=>{O.disconnect(),N!==0&&cancelAnimationFrame(N)}},[k]),d.useEffect(()=>{if(s!=="ready"||h.current||y.length===0)return;h.current=!0;const R=u.current;R&&w(R,R.scrollHeight)},[w,s,y.length]);const _=d.useMemo(()=>l===void 0?-1:y.findIndex(R=>R.key===l),[l,y]),S=d.useCallback(R=>{if(y.length===0)return;const N=Math.min(Math.max(R,0),y.length-1);c(y[N].key),x.scrollToIndex(N,{align:"auto"})},[x,y]),I=d.useCallback(R=>{c(R),u.current?.focus({preventScroll:!0})},[]),E=d.useCallback(R=>{if(y.length===0)return;const N=_<0?-1:_;R.key==="ArrowDown"?(R.preventDefault(),S(N+1)):R.key==="ArrowUp"?(R.preventDefault(),S(N<=0?0:N-1)):R.key==="Home"?(R.preventDefault(),S(0)):R.key==="End"&&(R.preventDefault(),S(y.length-1))},[S,_,y]),A=d.useMemo(()=>{if(!n)return;let R=0,N=0,M=0;for(const O of n.turns)R+=O.requestCount,N+=O.toolCount,M+=O.requestMs;return{turns:n.turns.length,requests:R,tools:N,durationMs:M}},[n]),j=s==="ready"&&y.length===0,L=n!==void 0&&y.length>0&&!Wgn(n);return a.jsxs("div",{className:Ua.panel,"data-testid":"trajectory-panel",children:[a.jsxs("div",{className:Ua.header,children:[a.jsx("div",{className:Ua.summary,children:A?a.jsx("span",{"data-testid":"trajectory-totals",children:t("trajectory.totals",{turns:A.turns,requests:A.requests,tools:A.tools,duration:A.durationMs>0?kh(A.durationMs):"—"})}):a.jsx("span",{children:t("trajectory.title")})}),a.jsx("div",{className:Ua.headerActions,children:a.jsx("button",{type:"button",className:Ua.iconButton,onClick:i,disabled:!e||s==="loading",title:t("common.refresh"),"aria-label":t("common.refresh"),children:a.jsx(Hg,{size:14,strokeWidth:1.6})})})]}),r!==void 0&&a.jsxs("div",{className:Ua.error,role:"alert",children:[a.jsx("span",{children:r.kind==="partial"?t("trajectory.partial"):t("trajectory.loadFailed",{message:r.message})}),a.jsx("button",{type:"button",className:Ua.headerButton,onClick:i,disabled:s==="loading",children:t("common.retry")})]}),L&&a.jsx("div",{className:Ua.notice,role:"status",children:t("trajectory.noTiming")}),a.jsx("div",{className:Ua.tableWrap,children:y.length===0?s==="error"?null:a.jsx("div",{className:Ua.placeholder,role:"status",children:t(j?"trajectory.empty":"common.loading")}):a.jsxs(a.Fragment,{children:[o&&a.jsx("div",{className:Ua.olderBar,children:a.jsx("span",{className:Ua.olderNotice,"data-testid":"trajectory-truncated",children:t("trajectory.truncated")})}),a.jsx("div",{ref:u,className:Ua.scroll,role:"grid",tabIndex:0,"aria-label":t("trajectory.title"),"aria-rowcount":y.length,"aria-activedescendant":_>=0?g(_):void 0,onKeyDown:E,onScroll:R=>{f.current=R.currentTarget.scrollTop},"data-testid":"trajectory-rows",children:a.jsx("div",{className:Ua.virtualBody,style:{height:`${x.getTotalSize()}px`},children:x.getVirtualItems().map(R=>{const N=y[R.index];return a.jsx("div",{id:g(R.index),className:Ua.virtualRow,style:{height:`${vue}px`,transform:`translateY(${R.start}px)`},role:"row","aria-rowindex":R.index+1,children:N.kind==="turn"?a.jsx(Vgn,{turn:N.turn,selected:N.key===l,onSelect:()=>I(N.key)}):a.jsx(Ggn,{row:N.row,selected:N.key===l,onSelect:()=>I(N.key)})},R.key)})})})]})})]})}function Vgn({turn:e,selected:t,onSelect:n}){const{t:s}=Ct();return a.jsxs("div",{className:`${Ua.turnHeader} ${t?Ua.selected:""}`,onClick:n,"aria-selected":t,"data-selected":t?"true":void 0,role:"gridcell","data-testid":"trajectory-turn",children:[a.jsx("span",{className:Ua.turnTitle,children:e.partial?s("trajectory.turnPartial",{index:e.index}):s("trajectory.turn",{index:e.index})}),a.jsx("span",{className:Ua.turnSummary,children:s("trajectory.turnSummary",{requests:e.requestCount,tools:e.toolCount,duration:e.requestMs>0?kh(e.requestMs):"—"})})]})}function Ggn({row:e,selected:t,onSelect:n}){const{t:s}=Ct(),r=Hgn(e,s),o=zgn(e,s);return a.jsxs("div",{className:`${Ua.record} ${t?Ua.selected:""}`,role:"gridcell","aria-selected":t,"data-selected":t?"true":void 0,onClick:n,"data-testid":`trajectory-row-${e.kind}`,"data-depth":e.depth,children:[e.depth>0&&a.jsx(zHe,{size:12,strokeWidth:1.6,className:Ua.nestMarker,"aria-hidden":"true"}),a.jsx("span",{className:`${Ua.badge} ${r.badgeTone??""}`,children:r.badge}),a.jsx("span",{className:`${Ua.text} ${r.faint?Ua.faint:""}`,children:r.text}),a.jsx("span",{className:Ua.metrics,"data-testid":"trajectory-row-metrics",children:o.length>0?o.join(" · "):"—"})]})}const Kgn="_panel_pwtdr_1",Ygn="_toolbar_pwtdr_5",Xgn="_actions_pwtdr_15",Zgn="_feedback_pwtdr_21",Jgn="_state_pwtdr_31",ky={panel:Kgn,toolbar:Ygn,actions:Xgn,feedback:Zgn,state:Jgn};function Qgn({sessionActions:e,sessionId:t,controls:n}){const{t:s}=Ct(),[r,o]=d.useState(null),[i,l]=d.useState(!0),[c,u]=d.useState(!1),h=d.useRef(0),f=d.useRef(()=>{}),m=d.useRef(null),g=n?.sessionId===t?n:void 0,w=g?.getContextUsage??e?.getContextUsage,y=d.useRef(g);y.current=g;const x=g?.result,[k,_]=d.useState(x),S=!!(x&&x!==k&&(x.kind!=="completed"||!c));d.useEffect(()=>{x?.kind==="completed"&&(h.current++,o(x.usage),u(!1))},[x]),d.useEffect(()=>{let A=!0,j=!1;const L=y.current?.result;o(N=>N?.sessionId===t?N:L?.kind==="completed"?L.usage:null),u(!1),l(!!w);const R=async()=>{if(!A||j||!w)return;j=!0,l(!0),u(!1);const N=h.current,M=m.current,O=M&&M.getContextUsage===w&&M.sessionId===t?M:{getContextUsage:w,sessionId:t,promise:w({detail:!0,silent:!0,...y.current?.result?{syncCounters:!0}:{}})};m.current=O;try{const P=await O.promise;if(!A||N!==h.current)return;o(P.sessionId===t&&P.usage.contextWindowSize>0?P:null)}catch(P){if(!A||N!==h.current)return;u(DV(P)?"transient":"hard")}finally{j=!1,m.current===O&&(m.current=null),A&&l(!1)}};return f.current=()=>void R(),R(),()=>{A=!1}},[w,t]);const I=!w||i||g?.compressing,E=()=>{_(x),f.current()};return a.jsxs("div",{className:ky.panel,"aria-busy":i,children:[a.jsxs("div",{className:ky.toolbar,children:[a.jsx("span",{children:s("contextUsage.title")}),a.jsxs("div",{className:ky.actions,children:[a.jsx(Wt,{type:"button",variant:"ghost",size:"icon-sm","aria-label":s("contextUsage.refresh"),title:s("contextUsage.refresh"),disabled:I,onClick:E,children:a.jsx(Hg,{"aria-hidden":"true"})}),a.jsx("span",{title:g?.compressing?void 0:g?.canCompress?i?s("common.loading"):void 0:s("contextUsage.compressUnavailable"),children:a.jsx(Wt,{type:"button",variant:"outline",size:"sm",disabled:!g?.canCompress||i,onClick:()=>void g?.compress(),children:s(g?.compressing?"contextUsage.compressing":"contextUsage.compress")})})]})]}),(g?.compressing||S)&&a.jsx(i4e,{controls:g,className:ky.feedback}),c==="transient"&&r&&a.jsx("div",{className:ky.feedback,role:"status",children:s("contextUsage.previousReading")}),c==="hard"?a.jsxs("div",{className:ky.state,role:"alert",children:[a.jsx("span",{children:s("contextUsage.loadError")}),a.jsx(Wt,{type:"button",variant:"outline",size:"sm",disabled:I,onClick:E,children:s("contextUsage.retry")})]}):w?i&&!r?a.jsx("div",{className:ky.state,role:"status",children:s("common.loading")}):r?a.jsx(Sxe,{status:r,compact:!0}):a.jsx("div",{className:ky.state,children:s("contextUsage.unavailable")}):a.jsx("div",{className:ky.state,children:s("contextUsage.unavailable")})]})}const e0n=700,t0n=["daily","weekdays","weekly","hourly","minutes","custom"],n0n=[1,2,3,4,5,6,10,12,15,20,30],s0n=(e,t)=>{},r0n=(e,t,n)=>{},o0n=()=>Promise.reject(new Error("Side-task session creation is unavailable"));function bue(e){return e.kind==="review"||e.kind==="file"||e.kind==="artifact"||e.kind==="scheduled_task"}function _y(e){return e.kind==="pending"?e.targetKind:e.kind}function i0n(e){return`image.${(e.match(/^data:image\/([a-z0-9+.+-]+)/i)?.[1]??"png").split("+")[0].toLowerCase()}`}const a0n=["review","sideTask"];function xue({contextUsageControls:e,artifacts:t,tabs:n,activeTabId:s,reviewChanges:r,selectedReviewPath:o,panelWidth:i,workspaceCwd:l,loading:c,restoring:u=!1,error:h,onSelectTab:f,onCloseTab:m,onOpenFilePreview:g,latestReviewAvailable:w=!1,onOpenLatestReview:y,onOpenTerminal:x,onOpenTrajectory:k,trajectoryTabId:_,onOpenWebPreview:S,onWebPreviewChange:I,items:E=a0n,sideTaskAvailable:A=!1,sideTasks:j=[],sideTasksLoading:L=!1,onCreateSideTask:R,onOpenSideTask:N,onCreateSideTaskSession:M,onSideTaskCreated:O,onSideTaskTitleChange:P,onNestedRightPanelOpen:F,onNestedArtifactsChange:H,onOpenNestedSubagent:$,agentTasks:Y=[],agentTraceLoading:Z=!1,agentTraceError:K,onOpenWorkflowAgent:B,onError:V,sessionWorkflowEnabled:J,workflow:q,onImageIngestionNotice:te,deferSubagentMount:ie=!1,onClose:ge,variant:re="docked",fullscreen:G=!1,onToggleFullscreen:Q}){const{t:he}=Ct(),[ve,ye]=d.useState(!1),[_e,ae]=d.useState(),Se=d.useRef(null),Te=d.useCallback(()=>{Se.current&&(clearTimeout(Se.current),Se.current=null),ye(!0)},[]),Ne=d.useCallback(()=>{Se.current&&clearTimeout(Se.current),Se.current=setTimeout(()=>{ye(!1),Se.current=null},120)},[]);d.useEffect(()=>()=>{Se.current&&clearTimeout(Se.current)},[]);const Ae=n.find(ke=>ke.id===s)??n[0],Ve=Ae?.kind==="file"&&Ae.sourcePreview&&(/\.html?$/i.test(Ae.workspacePath)||ub(Ae.previewMimeType||Ae.previewData?.type)==="text/html"),Ze=Ae?.kind==="file"&&Ae.previewOnly===!0&&!Ve&&/\.(?:html?|md|markdown)$/i.test(Ae.workspacePath)&&(Ae.previewContent!==void 0||!Ae.previewData||!!i4(Ae.previewMimeType||Ae.previewData.type,Ae.workspacePath)),Tt=_e===Ae?.id,je=E.includes("review")&&!n.some(ke=>_y(ke)==="review"),ot=E.includes("sideTask")&&A&&!!R,Ie=!!x,ue=E.includes("webPreview")&&!!S,W=E.includes("trajectory")&&!!k&&!n.some(ke=>ke.id===_),ne=!!Ae&&(je||ot||Ie||ue||W),me=Ae&&bue(Ae)?{workspaceCwd:Ae.workspaceCwd,workspaceId:Ae.workspaceId}:void 0,Me=O4(me?.workspaceCwd),Ke=Me?.workspaceId===me?.workspaceId?Me?.actions:void 0,be=Ae?.kind==="artifact"?t.find(ke=>ke.id===Ae.artifactId):void 0;return a.jsxs("aside",{className:`${pt.panel} ${re==="drawer"?pt.panelDrawer:""} ${G?pt.panelFullscreen:""}`,style:re==="docked"&&i&&!G?{flexBasis:i,width:i}:void 0,"aria-label":"Right panel",children:[a.jsxs("div",{className:pt.header,children:[n.length>0&&a.jsx("div",{className:pt.tabs,role:"tablist","aria-label":"Right panel",children:n.map(ke=>a.jsxs("div",{className:[pt.tabItem,ke.id===Ae?.id?pt.tabActive:""].filter(Boolean).join(" "),children:[a.jsxs("button",{type:"button",role:"tab","aria-selected":ke.id===Ae?.id,className:pt.tab,onClick:()=>f(ke.id),onMouseEnter:Pe=>yT(Pe.currentTarget),onFocus:Pe=>yT(Pe.currentTarget),title:ke.title,children:[a.jsx("span",{className:`${pt.tabIcon} ${_y(ke)==="artifact"?pt.tabArtifactIcon:""}`,"aria-hidden":"true",children:_y(ke)==="review"?a.jsx(GF,{}):ke.kind==="workflow"?a.jsx(zve,{className:pt.tabIconSvg,strokeWidth:1.6}):ke.kind==="file"?a.jsx(U0,{name:ke.workspacePath,className:pt.tabIconSvg,strokeWidth:1.6}):_y(ke)==="artifact"?a.jsx(uwe,{artifact:t.find(Pe=>"artifactId"in ke&&Pe.id===ke.artifactId),className:pt.tabIconSvg}):_y(ke)==="subagent"?a.jsx(l0n,{}):_y(ke)==="monitor"?a.jsx(Yve,{className:pt.tabIconSvg,strokeWidth:1.6}):_y(ke)==="shell"?a.jsx(Y2,{className:pt.tabIconSvg,strokeWidth:1.6}):_y(ke)==="side_task"?a.jsx(Aj,{className:pt.tabIconSvg,strokeWidth:1.6}):ke.kind==="web_preview"?a.jsx(hT,{className:pt.tabIconSvg}):ke.kind==="terminal"?a.jsx(Y2,{className:pt.tabIconSvg,strokeWidth:1.6}):_y(ke)==="image"?a.jsx(UUe,{className:pt.tabIconSvg,strokeWidth:1.6}):ke.kind==="context_usage"?a.jsx(WP,{className:pt.tabIconSvg,strokeWidth:1.6}):ke.kind==="token_usage"?a.jsx(UG,{className:pt.tabIconSvg,strokeWidth:1.6}):ke.kind==="trajectory"?a.jsx(GO,{className:pt.tabIconSvg,strokeWidth:1.6}):a.jsx(u0n,{})}),a.jsx("span",{className:pt.tabTitle,"data-web-shell-session-title":!0,children:a.jsx("span",{className:pt.tabTitleInner,children:ke.title})})]}),a.jsx("button",{type:"button",className:pt.tabCloseButton,onClick:()=>m(ke.id),"aria-label":`Close ${ke.title}`,title:"Close",children:a.jsx(c0n,{})})]},ke.id))}),a.jsxs("div",{className:pt.headerActions,children:[ne&&a.jsxs(Z0,{modal:!1,children:[a.jsx(Vg,{asChild:!0,children:a.jsx("button",{type:"button",className:`${pt.iconButton} ${pt.addButton}`,"aria-label":he("rightPanel.add"),title:he("rightPanel.add"),children:a.jsx(Qf,{className:pt.toolbarIcon})})}),a.jsxs(Gg,{align:"end",className:"w-64",children:[je&&a.jsxs(yi,{disabled:!w||!y,onSelect:y,children:[a.jsx(GF,{}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("turnOutputs.review")})]}),je&&ot&&a.jsx(ax,{}),ot&&a.jsxs(yi,{disabled:L,onSelect:R,children:[a.jsx(Aj,{className:pt.sideTaskNewIcon,strokeWidth:1.6,"aria-hidden":"true"}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("sideTask.create")})]}),Ie&&(je||ot)&&a.jsx(ax,{}),Ie&&a.jsxs(yi,{onSelect:()=>x?.(),children:[a.jsx(Y2,{className:pt.sideTaskNewIcon,strokeWidth:1.6,"aria-hidden":"true"}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("terminal.title")})]}),ue&&a.jsxs(yi,{onSelect:S,children:[a.jsx(hT,{className:pt.sideTaskNewIcon}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("webPreview.title")})]}),W&&a.jsxs(yi,{onSelect:()=>k?.(),children:[a.jsx(GO,{className:pt.sideTaskNewIcon,strokeWidth:1.6,"aria-hidden":"true"}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("trajectory.title")})]})]})]}),Q&&a.jsx("button",{type:"button",className:`${pt.iconButton} ${pt.fullscreenButton} ${G?pt.iconButtonActive:""}`,onClick:Q,"aria-label":he(G?"common.exitFullscreen":"common.fullscreen"),"aria-pressed":G,title:he(G?"common.exitFullscreen":"common.fullscreen"),children:G?a.jsx(qG,{className:pt.toolbarIcon,"aria-hidden":!0}):a.jsx(zG,{className:pt.toolbarIcon,"aria-hidden":!0})}),a.jsx("button",{type:"button",className:`${pt.iconButton} ${pt.panelToggleButton}`,onClick:ge,"aria-label":he("chatHeader.toggleRightPanel"),"aria-pressed":"true",title:he("chatHeader.toggleRightPanel"),children:a.jsx(Hve,{className:pt.panelToggleIcon})})]})]}),a.jsxs("div",{className:`${pt.body} ${Ae?.kind==="side_task"?pt.bodySideTask:""}`.trim(),children:[n.filter(ke=>ke.kind==="web_preview").map(ke=>a.jsx("div",{className:"h-full",hidden:ke.id!==Ae?.id,children:a.jsx(lmn,{state:ke,onChange:Pe=>I?.(ke.id,Pe)})},ke.id)),n.filter(ke=>ke.kind==="terminal").map(ke=>a.jsx("div",{className:`${pt.terminalPane} ${ke.id===Ae?.id?"":pt.terminalPaneHidden}`.trim(),"aria-hidden":ke.id===Ae?.id?void 0:!0,children:a.jsx(amn,{terminalId:ke.id,cwd:ke.workspaceCwd??l,active:ke.id===Ae?.id,enabled:ke.initialized!==!1})},ke.id)),Ze&&a.jsxs("button",{type:"button",className:pt.attachmentPreviewButton,onClick:()=>ae(Tt?void 0:Ae?.id),"aria-label":he(Tt?"attachment.showSource":"attachment.showPreview"),"aria-pressed":Tt,children:[Tt?a.jsx(PHe,{"aria-hidden":!0}):a.jsx(Pve,{"aria-hidden":!0}),he(Tt?"attachment.showSource":"attachment.showPreview")]}),u&&!Ae?a.jsxs("div",{className:"flex flex-col gap-4 p-5","data-testid":"right-panel-loading-skeleton",role:"status","aria-label":he("common.loading"),children:[a.jsx(ow,{className:"h-5 w-2/5"}),a.jsx(ow,{className:"h-32 w-full"}),a.jsx(ow,{className:"h-4 w-4/5"}),a.jsx(ow,{className:"h-4 w-3/5"})]}):Ae?.kind==="terminal"||Ae?.kind==="web_preview"?null:Ae?Ae.kind==="pending"?a.jsx("div",{className:pt.empty,role:Ae.loadError?"alert":"status",children:Ae.loadError??he("common.loading")}):Ae.kind==="workflow"?Ae.sessionId?a.jsx(tdn,{tasks:Y,loading:Z,error:K,onOpenAgent:B}):q?a.jsx(Udn,{...q}):a.jsx("div",{className:pt.empty,children:he("workflow.empty.title")}):bue(Ae)&&(Ae.kind!=="scheduled_task"||Ae.task.durable)&&(Ae.kind!=="file"||!Ae.previewOnly)&&(Ae.kind!=="artifact"||be?.metadata?.artifactType!=="web_preview_snapshot")&&!Ke?a.jsx("div",{className:pt.empty,role:"alert",children:he("workspace.notFoundDescription")}):Ae.kind==="review"?a.jsx(f0n,{changes:Ae.changes??r,selectedPath:Ae.selectedPath??o,workspaceCwd:Ae.workspaceCwd??l,onOpenFilePreview:ke=>g(ke,Ae.workspaceCwd??l,Ae.workspaceId),onDownloadFile:(ke,Pe)=>GP(Ke,ke.path,dVe(ke.path),Pe),onDownloadError:ke=>{const Pe=he("common.downloadFailed",{message:Iu(ke)});V?V(new Error(Pe,{cause:ke}),Pe):console.error(Pe,ke)}}):Ae.kind==="file"?Ae.attachmentId&&!Ae.previewData&&Ae.previewContent===void 0?a.jsx("div",{className:pt.empty,role:Ae.loadError?"alert":"status",children:Ae.loadError??he("common.loading")}):Ae.sourcePreview&&Ae.previewData&&ub(Ae.previewMimeType||Ae.previewData.type)!=="application/pdf"&&!i4(Ae.previewMimeType||Ae.previewData.type,Ae.workspacePath)?a.jsx(SRe,{data:Ae.previewData,title:Ae.title,image:!!FS(Ae.workspacePath)&&Ae.previewData.type.startsWith("image/")}):a.jsx(oD,{workspacePath:Ae.workspacePath,artifactVersion:String(Ae.previewVersion??0),workspaceActions:Ke,previewContent:Ae.previewContent,previewData:Ae.previewData,previewMimeType:Ae.previewMimeType,previewOnly:Ae.previewOnly,previewKind:Ve||Ae.previewOnly&&!Tt?"source":void 0},Ae.id):Ae.kind==="source"?a.jsx(A0n,{tab:Ae},Ae.id):Ae.kind==="artifact"?a.jsx(d0n,{artifacts:t,artifactId:Ae.artifactId,sourceSessionId:Ae.sourceSessionId,workspaceActions:Ke,previewContent:Ae.previewContent,loading:c,error:h},Ae.id):Ae.kind==="subagent"?ie?null:a.jsx(Oun,{sessionId:Ae.sessionId,rootToolCallId:Ae.rootToolCallId,initialRootTool:Ae.rootTool,workspaceCwd:Ae.workspaceCwd??l,onRightPanelOpen:F,onArtifactsChange:H,onOpenSubagent:$,onError:V}):Ae.kind==="monitor"?a.jsx(Owt,{task:Ae.task,actions:Ae.sessionActions},Ae.id):Ae.kind==="shell"?a.jsx($wt,{task:Ae.task,actions:Ae.sessionActions},Ae.id):Ae.kind==="side_task"?a.jsx(sdn,{tabId:Ae.id,sessionId:Ae.sessionId,parentSessionId:Ae.parentSessionId,workspaceCwd:Ae.workspaceCwd??l,title:Ae.title,shouldNameFromFirstPrompt:Ae.nameFromFirstPrompt,initialPrompt:Ae.initialPrompt,createSession:M??o0n,onCreated:O??s0n,onTitleChange:P??r0n,onRightPanelOpen:F,onArtifactsChange:H,onError:V,sessionWorkflowEnabled:J,onImageIngestionNotice:te},Ae.id):Ae.kind==="image"?Ae.src?a.jsxs("div",{className:pt.imagePreviewWrap,children:[a.jsx("img",{src:Ae.src,alt:Ae.alt??Ae.title,className:pt.imagePreview}),a.jsx("a",{className:pt.imageDownloadButton,href:Ae.src,download:i0n(Ae.src),"aria-label":he("common.download"),title:he("common.download"),children:a.jsx(Vy,{size:16,strokeWidth:1.8})})]}):a.jsx("div",{className:pt.empty,role:Ae.loadError?"alert":"status",children:Ae.loadError??he("common.loading")}):Ae.kind==="context_usage"?a.jsx(Qgn,{controls:e?.[Ae.sessionId],sessionActions:Ae.sessionActions,sessionId:Ae.sessionId},Ae.id):Ae.kind==="trajectory"?a.jsx(qgn,{loadPage:Ae.loadPage},Ae.id):Ae.kind==="token_usage"?a.jsx(Ymn,{sessionActions:Ae.sessionActions,sessionId:Ae.sessionId},Ae.id):a.jsx(h0n,{task:Ae.task,actions:Ke},Ae.id):a.jsxs("div",{className:pt.emptyActions,"data-testid":"right-panel-empty-actions",children:[E.includes("review")&&a.jsxs("button",{type:"button",className:pt.emptyAction,disabled:!w||!y,onClick:y,children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(GF,{})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("turnOutputs.review")}),a.jsx("span",{className:pt.emptyActionHint,children:he("turnOutputs.reviewLatest")}),a.jsx(Bl,{className:pt.emptyActionChevron,strokeWidth:1.6,"aria-hidden":"true"})]}),E.includes("sideTask")&&A&&R&&(j.length===0?a.jsxs("button",{type:"button",className:pt.emptyAction,disabled:L,"aria-busy":L,onClick:R,children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(Aj,{strokeWidth:1.6})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("sideTask.title")}),a.jsx("span",{className:pt.emptyActionHint,children:he("sideTask.description")}),a.jsx(Bl,{className:pt.emptyActionChevron,strokeWidth:1.6,"aria-hidden":"true"})]}):a.jsxs(Z0,{open:ve,onOpenChange:ye,modal:!1,children:[a.jsx(Vg,{asChild:!0,children:a.jsxs("button",{type:"button",className:pt.emptyAction,"aria-expanded":ve,onMouseEnter:Te,onMouseLeave:Ne,children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(Aj,{strokeWidth:1.6})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("sideTask.title")}),a.jsx("span",{className:pt.emptyActionHint,children:he("sideTask.description")}),a.jsx(Bl,{className:pt.emptyActionChevron,strokeWidth:1.6,"aria-hidden":"true"})]})}),a.jsxs(Gg,{align:"end",className:"w-80",onMouseEnter:Te,onMouseLeave:Ne,children:[j.map(ke=>a.jsxs(yi,{onSelect:()=>N?.(ke),children:[a.jsx("span",{className:pt.sideTaskListTitle,children:ke.title}),ke.updatedAt&&a.jsx("span",{className:pt.sideTaskListTime,children:EA(ke.updatedAt,he)})]},ke.sessionId)),a.jsx(ax,{}),a.jsxs(yi,{onSelect:R,children:[a.jsx(kHe,{className:pt.sideTaskNewIcon,strokeWidth:1.6,"aria-hidden":"true"}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("sideTask.new")})]})]})]})),ue&&a.jsxs("button",{type:"button",className:pt.emptyAction,onClick:S,children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(hT,{strokeWidth:1.6})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("webPreview.title")}),a.jsx("span",{className:pt.emptyActionHint,children:he("webPreview.openHint")}),a.jsx(Bl,{className:pt.emptyActionChevron,"aria-hidden":"true"})]}),W&&a.jsxs("button",{type:"button",className:pt.emptyAction,onClick:()=>k?.(),"data-testid":"right-panel-open-trajectory",children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(GO,{strokeWidth:1.6})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("trajectory.title")}),a.jsx("span",{className:pt.emptyActionHint,children:he("trajectory.description")}),a.jsx(Bl,{className:pt.emptyActionChevron,"aria-hidden":"true"})]}),x&&a.jsxs("button",{type:"button",className:pt.emptyAction,onClick:()=>x(),children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(Y2,{strokeWidth:1.6})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("terminal.title")}),a.jsx("span",{className:pt.emptyActionHint,children:he("terminal.open")}),a.jsx(Bl,{className:pt.emptyActionChevron,strokeWidth:1.6,"aria-hidden":"true"})]})]})]})]})}function l0n(){return a.jsxs("svg",{className:pt.tabIconSvg,viewBox:"0 0 24 24",fill:"none",focusable:"false","aria-hidden":"true",children:[a.jsx("circle",{cx:"12",cy:"8",r:"3",stroke:"currentColor",strokeWidth:"1.6"}),a.jsx("path",{d:"M6.5 19c.7-3.1 2.5-4.7 5.5-4.7s4.8 1.6 5.5 4.7",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})]})}function c0n(){return a.jsx("svg",{className:pt.tabCloseIcon,viewBox:"0 0 16 16",fill:"none",focusable:"false","aria-hidden":"true",children:a.jsx("path",{d:"m4.5 4.5 7 7M11.5 4.5l-7 7",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round"})})}function GF(){return a.jsxs("svg",{className:pt.tabIconSvg,viewBox:"0 0 24 24",fill:"none",focusable:"false",children:[a.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",stroke:"currentColor",strokeWidth:"1.6"}),a.jsx("path",{d:"M9 9.5h6M12 6.5v6",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"}),a.jsx("path",{d:"M9 16h6",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"})]})}function u0n(){return a.jsxs("svg",{className:pt.tabIconSvg,viewBox:"0 0 24 24",fill:"none",focusable:"false",children:[a.jsx("rect",{x:"4",y:"4",width:"16",height:"16",rx:"3",stroke:"currentColor",strokeWidth:"1.8"}),a.jsx("path",{d:"M12 8v4l3 2",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})]})}function d0n({artifacts:e,artifactId:t,sourceSessionId:n,workspaceActions:s,previewContent:r,loading:o,error:i}){const l=e.find(c=>c.id===t);return l?a.jsx(S0n,{artifact:l,sourceSessionId:n,workspaceActions:s,previewContent:r}):o?a.jsx("div",{className:pt.empty,children:"Loading artifact..."}):i?a.jsx("div",{className:pt.empty,children:i}):a.jsx("div",{className:pt.empty,children:"Artifact not found."})}function h0n({task:e,actions:t}){const{t:n}=Ct(),[s,r]=d.useState(null),[o,i]=d.useState(!0),[l,c]=d.useState(null),[u,h]=d.useState(""),[f,m]=d.useState(e.prompt),[g,w]=d.useState(()=>M1(e.cron)),[y,x]=d.useState(!1),[k,_]=d.useState(!1),[S,I]=d.useState(!1),[E,A]=d.useState(!1),[j,L]=d.useState(null),R=d.useRef(0),N=d.useRef(0),M=d.useRef({actions:t,taskId:e.id,workspaceId:e.workspaceId});M.current={actions:t,taskId:e.id,workspaceId:e.workspaceId};const O=d.useCallback((he,ve,ye,_e)=>{const ae=M.current;return he===R.current&&ae.actions===ve&&ae.taskId===ye&&ae.workspaceId===_e},[]),P=d.useCallback((he,ve,ye,_e)=>{const ae=M.current;return he===N.current&&ae.actions===ve&&ae.taskId===ye&&ae.workspaceId===_e},[]);d.useEffect(()=>()=>{R.current+=1,N.current+=1},[]),d.useEffect(()=>{I(!1),A(!1),L(null)},[t,e.id,e.workspaceId]);const F=d.useCallback(async()=>{const he=++R.current,ve=++N.current,ye=e.id,_e=e.workspaceId;if(!e.durable||!t){r(null),h(""),m(e.prompt),w(M1(e.cron)),c(null),i(!1);return}i(!0),c(null);try{const ae=await t.listScheduledTasks(_e);if(!O(he,t,ye,_e))return;const Se=ae.find(Te=>Te.id===e.id)??null;r(Se),Se?(h(Se.name??""),m(Se.prompt),w(M1(Se.cron))):(h(""),m(e.prompt),w(M1(e.cron)))}catch(ae){P(ve,t,ye,_e)&&c(ae instanceof Error?ae.message:String(ae))}finally{P(ve,t,ye,_e)&&i(!1)}},[t,P,O,e.cron,e.durable,e.id,e.prompt,e.workspaceId]);d.useEffect(()=>{F()},[F]);const H=!e.durable,$=e.durable&&!o&&!l&&!s,Y=!!s,Z=s?.name||s?.prompt||e.title,K=s?.prompt??e.prompt,B=s?.cron??e.cron,V=s?.recurring??e.recurring,J=s?.enabled,q=d.useCallback(()=>{s&&(h(s.name??""),m(s.prompt),w(M1(s.cron)),L(null),x(!0))},[s]),te=d.useCallback(()=>{x(!1),L(null),s&&(h(s.name??""),m(s.prompt),w(M1(s.cron)))},[s]),ie=d.useCallback(async()=>{if(!s||!t)return;const he=i9(g);if(!he){L(n("scheduledTasks.error.invalidSchedule"));return}if(f.trim().length===0){L(n("scheduledTasks.error.emptyPrompt"));return}const ve=++R.current,ye=e.id,_e=e.workspaceId;A(!0),L(null);try{const ae=await t.updateScheduledTask(s.id,{cron:he,prompt:f.trim(),name:u.trim()||null},_e);if(!O(ve,t,ye,_e))return;r(ae),h(ae.name??""),m(ae.prompt),w(M1(ae.cron)),x(!1)}catch(ae){O(ve,t,ye,_e)&&L(ae instanceof Error?ae.message:String(ae))}finally{O(ve,t,ye,_e)&&A(!1)}},[t,g,O,s,u,f,n,e.id,e.workspaceId]),ge=d.useCallback(async()=>{if(!s||!t)return;const he=++R.current,ve=e.id,ye=e.workspaceId;I(!0),L(null);try{const _e=await t.updateScheduledTask(s.id,{enabled:!s.enabled},ye);if(!O(he,t,ve,ye))return;r(_e)}catch(_e){O(he,t,ve,ye)&&L(_e instanceof Error?_e.message:String(_e))}finally{O(he,t,ve,ye)&&I(!1)}},[t,O,s,e.id,e.workspaceId]),re=d.useCallback(async()=>{if(!s||!t)return;const he=++R.current,ve=e.id,ye=e.workspaceId;I(!0),L(null);try{if(await t.deleteScheduledTask(s.id,ye),!O(he,t,ve,ye))return;r(null),_(!1)}catch(_e){O(he,t,ve,ye)&&L(_e instanceof Error?_e.message:String(_e))}finally{O(he,t,ve,ye)&&I(!1)}},[t,O,s,e.id,e.workspaceId]),G=i9(g),Q=G?BT(G,n):null;return a.jsxs("div",{className:pt.detail,children:[o&&a.jsx("div",{className:pt.empty,children:n("scheduledTasks.loading")}),l&&a.jsx("div",{className:rn.loadError,children:l}),$&&a.jsx("div",{className:pt.empty,children:n("scheduledTasks.deletedSnapshot")}),H&&a.jsx("div",{className:pt.empty,children:n("scheduledTasks.sessionScopedSnapshot")}),!$&&a.jsx("div",{className:pt.section,children:a.jsxs("div",{className:pt.fieldGrid,children:[a.jsx("span",{className:pt.fieldLabel,children:n("scheduledTasks.name")}),a.jsx("span",{className:pt.fieldValue,children:Z}),a.jsx("span",{className:pt.fieldLabel,children:n("scheduledTasks.taskId")}),a.jsx("span",{className:pt.fieldValue,children:e.id}),a.jsx("span",{className:pt.fieldLabel,children:n("scheduledTasks.schedule")}),a.jsx("span",{className:pt.fieldValue,children:BT(B,n)}),a.jsx("span",{className:pt.fieldLabel,children:"Cron"}),a.jsx("span",{className:pt.fieldValue,children:B}),a.jsx("span",{className:pt.fieldLabel,children:n("scheduledTasks.type")}),a.jsx("span",{className:pt.fieldValue,children:n(V?"scheduledTasks.repeats":"scheduledTasks.runsOnce")}),J!==void 0&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:pt.fieldLabel,children:n("scheduledTasks.status")}),a.jsx("span",{className:pt.fieldValue,children:n(J?"scheduledTasks.enable":"scheduledTasks.disable")})]})]})}),!$&&a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:"Prompt"}),a.jsx("div",{className:pt.description,children:K})]}),j&&a.jsx("div",{className:rn.formError,children:j}),a.jsxs("div",{className:pt.actionsRow,children:[a.jsx("button",{type:"button",className:rn.primaryButton,disabled:!Y||S,onClick:q,children:n("scheduledTasks.edit")}),a.jsx("button",{type:"button",className:rn.secondaryButton,disabled:!Y||S,onClick:()=>void ge(),children:s?.enabled?n("scheduledTasks.disable"):n("scheduledTasks.enable")}),a.jsx("button",{type:"button",className:rn.secondaryButton,disabled:!Y||S,onClick:()=>_(!0),children:n("scheduledTasks.delete")})]}),k&&s&&a.jsx(Wa,{title:n("scheduledTasks.deleteConfirmTitle"),size:"sm",onClose:()=>_(!1),children:a.jsxs("div",{className:rn.formFields,children:[a.jsx("div",{className:pt.description,children:n("scheduledTasks.deleteConfirm",{name:s.name||s.prompt})}),j&&a.jsx("div",{className:rn.formError,children:j}),a.jsxs("div",{className:rn.formActions,children:[a.jsx("button",{type:"button",className:rn.secondaryButton,onClick:()=>_(!1),disabled:S,children:n("scheduledTasks.cancel")}),a.jsx("button",{type:"button",className:rn.primaryButton,onClick:()=>void re(),disabled:S,children:n("scheduledTasks.delete")})]})]})}),y&&a.jsx(Wa,{title:n("scheduledTasks.editTitle"),size:"md",onClose:te,children:a.jsxs("div",{className:rn.formFields,children:[a.jsxs("label",{className:rn.field,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.name")}),a.jsx("input",{className:rn.input,type:"text",value:u,maxLength:200,placeholder:n("scheduledTasks.namePlaceholder"),onChange:he=>h(he.target.value)})]}),a.jsxs("label",{className:rn.field,children:[a.jsxs("span",{className:rn.fieldLabel,children:[n("scheduledTasks.prompt"),a.jsx("span",{className:rn.required,children:"*"})]}),a.jsx("textarea",{className:rn.textarea,value:f,rows:4,maxLength:1e5,placeholder:n("scheduledTasks.promptPlaceholder"),onChange:he=>m(he.target.value)})]}),a.jsxs("div",{className:rn.scheduleRow,children:[a.jsxs("label",{className:rn.field,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.frequency")}),a.jsx("select",{className:rn.select,value:g.frequency,onChange:he=>{const ve=he.target.value;w(ye=>({...ye,frequency:ve,...ve==="hourly"?{time:"00:00"}:{}}))},children:t0n.map(he=>a.jsx("option",{value:he,children:n(`scheduledTasks.freq.${he}`)},he))})]}),(g.frequency==="daily"||g.frequency==="weekdays"||g.frequency==="weekly")&&a.jsxs("label",{className:rn.field,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.time")}),a.jsx("input",{className:rn.input,type:"time",value:g.time,onChange:he=>w(ve=>({...ve,time:he.target.value}))})]}),g.frequency==="weekly"&&a.jsxs("label",{className:rn.field,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.weekday")}),a.jsx("select",{className:rn.select,value:g.weekday,onChange:he=>w(ve=>({...ve,weekday:Number(he.target.value)})),children:n("scheduledTasks.weekdayNames").split(",").map((he,ve)=>a.jsx("option",{value:ve,children:he},ve))})]}),g.frequency==="minutes"&&a.jsxs("label",{className:rn.field,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.interval")}),a.jsx("select",{className:rn.select,value:g.minuteInterval,onChange:he=>w(ve=>({...ve,minuteInterval:Number(he.target.value)})),children:n0n.map(he=>a.jsx("option",{value:he,children:he},he))})]}),g.frequency==="custom"&&a.jsxs("label",{className:`${rn.field} ${rn.fieldGrow}`,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.cron")}),a.jsx("input",{className:rn.input,type:"text",value:g.customCron,spellCheck:!1,placeholder:"0 9 * * 1-5",onChange:he=>w(ve=>({...ve,customCron:he.target.value}))})]})]}),a.jsx("div",{className:rn.preview,children:Q?a.jsxs(a.Fragment,{children:[a.jsx("span",{className:rn.previewLabel,children:Q}),a.jsx("code",{className:rn.previewCron,children:G})]}):a.jsx("span",{className:rn.previewInvalid,children:n("scheduledTasks.error.invalidSchedule")})}),j&&a.jsx("div",{className:rn.formError,children:j}),a.jsxs("div",{className:rn.formActions,children:[a.jsx("button",{type:"button",className:rn.secondaryButton,onClick:te,disabled:E,children:n("scheduledTasks.cancel")}),a.jsx("button",{type:"button",className:rn.primaryButton,onClick:()=>void ie(),disabled:E,children:n(E?"scheduledTasks.saving":"scheduledTasks.save")})]})]})})]})}function f0n({changes:e,selectedPath:t,workspaceCwd:n,onOpenFilePreview:s,onDownloadFile:r,onDownloadError:o}){const{t:i}=Ct(),[l,c]=d.useState(!1),[u,h]=d.useState(!0),[f,m]=d.useState(!1),[g,w]=d.useState(520),y=d.useRef(g),x=d.useRef(null),k=d.useRef(null),[_,S]=d.useState(null),[I,E]=d.useState(()=>new Set),A=d.useRef(!0);d.useEffect(()=>(A.current=!0,()=>{A.current=!1}),[]);const j=l,L=d.useMemo(()=>_0n(e,n),[e,n]);d.useEffect(()=>{S(t)},[t]),d.useEffect(()=>{y.current=g},[g]),d.useEffect(()=>{const P=x.current;if(!P)return;const F=()=>{m(P.clientWidth<e0n)};F();const H=new ResizeObserver(F);return H.observe(P),()=>H.disconnect()},[u]),d.useEffect(()=>()=>k.current?.(),[]);const R=d.useCallback(P=>{const F=x.current;if(!F)return;P.preventDefault();const H=P.currentTarget;H.setPointerCapture(P.pointerId);const $=P.clientX,Y=y.current,Z=F.getBoundingClientRect().width,K=Math.max(180,Z-180),B=document.body.style.cursor,V=document.body.style.userSelect;let J=Y,q=null;document.body.style.cursor="col-resize",document.body.style.userSelect="none";const te=()=>{q=null,w(J)},ie=G=>{J=Math.min(K,Math.max(180,Y+(G.clientX-$))),q===null&&(q=window.requestAnimationFrame(te))};let ge=()=>{};const re=G=>{k.current=null,q!==null&&(window.cancelAnimationFrame(q),q=null),G&&w(J),H.hasPointerCapture(P.pointerId)&&H.releasePointerCapture(P.pointerId),document.body.style.cursor=B,document.body.style.userSelect=V,window.removeEventListener("pointermove",ie),window.removeEventListener("pointerup",ge),window.removeEventListener("pointercancel",ge)};ge=()=>re(!0),k.current=()=>re(!1),window.addEventListener("pointermove",ie),window.addEventListener("pointerup",ge),window.addEventListener("pointercancel",ge)},[]);if(e.length===0)return a.jsx("div",{className:pt.empty,children:"No file changes to review."});const N=T_e(e),M=P=>{S(F=>F===P?null:P)},O=async P=>{if(!I.has(P.path)){E(F=>new Set(F).add(P.path));try{await r(P,()=>!A.current)}catch(F){A.current&&o(F)}finally{E(F=>{const H=new Set(F);return H.delete(P.path),H})}}};return a.jsxs("div",{className:pt.review,children:[a.jsxs("div",{className:pt.reviewToolbar,children:[a.jsxs("div",{className:pt.reviewToolbarTitle,children:[a.jsx("span",{children:i("turnOutputs.previousTurn")}),a.jsx(Y9,{additions:N?.additions,deletions:N?.deletions,className:pt.lineStats,additionsClassName:pt.additions,deletionsClassName:pt.deletions})]}),a.jsxs("div",{className:pt.reviewToolbarActions,children:[a.jsxs("button",{type:"button",className:pt.reviewTotalsButton,onClick:()=>h(P=>!P),"aria-expanded":u,children:[a.jsx("span",{children:i("turnOutputs.fileCount",{count:e.length})}),a.jsx("span",{className:[pt.chevron,u?pt.chevronOpen:""].filter(Boolean).join(" "),"aria-hidden":"true",children:a.jsx(_ue,{})})]}),a.jsx("button",{type:"button",className:[pt.iconButton,l?pt.iconButtonActive:""].filter(Boolean).join(" "),onClick:()=>c(P=>!P),"aria-label":i(l?"turnOutputs.closeFileTree":"turnOutputs.openFileTree"),title:i(l?"turnOutputs.closeFileTree":"turnOutputs.openFileTree"),children:l?a.jsx(x0n,{}):a.jsx(b0n,{})})]})]}),u&&a.jsxs("div",{ref:x,className:[pt.reviewContent,j?"":pt.reviewContentListOnly,j&&f?pt.reviewContentStacked:""].filter(Boolean).join(" "),style:{"--review-list-width":`${g}px`},children:[a.jsx("div",{className:[pt.reviewList,_?pt.reviewListWithExpanded:""].filter(Boolean).join(" "),children:e.map(P=>{const F=_===P.path,H=E_e(P.path),$=YIt(P.path);return a.jsxs("div",{className:[pt.reviewItem,F?pt.reviewItemExpanded:""].filter(Boolean).join(" "),children:[a.jsxs("div",{className:pt.reviewRow,"data-selected":P.path===t||void 0,children:[a.jsx("button",{type:"button",className:pt.reviewRowToggle,onClick:()=>M(P.path),"aria-label":P.path,"aria-expanded":F}),a.jsx("span",{className:pt.fileIcon,children:_Re(P.path)}),a.jsxs("span",{className:pt.reviewFileName,children:[a.jsx(v0n,{path:AL(P.path,n),title:P.path}),H&&a.jsx("button",{type:"button",className:pt.reviewOpenButton,onClick:()=>s(P),title:`${i("turnOutputs.preview")} ${P.path}`,children:i("turnOutputs.preview")}),$&&a.jsx("button",{type:"button",className:pt.reviewOpenButton,onClick:()=>void O(P),title:`${i("common.download")} ${P.path}`,disabled:I.has(P.path),children:i(I.has(P.path)?"common.downloading":"common.download")})]}),a.jsx(Y9,{additions:P.additions,deletions:P.deletions,className:pt.lineStats,additionsClassName:pt.additions,deletionsClassName:pt.deletions}),a.jsx("span",{className:[pt.chevron,F?pt.chevronOpen:""].filter(Boolean).join(" "),"aria-hidden":"true",children:a.jsx(_ue,{})})]}),F&&a.jsx(p0n,{change:P})]},`${P.toolCallId}:${P.path}`)})}),j&&!f&&a.jsx("div",{className:pt.reviewSplitHandle,role:"separator","aria-orientation":"vertical",onPointerDown:R}),j&&a.jsx("div",{className:pt.tree,children:L.children.map(P=>a.jsx(bRe,{node:P,depth:0,selectedPath:t},P.path))})]})]})}function p0n({change:e}){if(e.diffs.length===0)return a.jsx("div",{className:pt.diffEmpty,children:"No diff available."});const t=m0n(e.diffs);return a.jsx("div",{className:pt.diffPreview,children:t.map((n,s)=>n.fileDiff&&!n.fullContent?a.jsx(gY,{diff:n.fileDiff},s):a.jsx(g0n,{oldText:n.oldText,newText:n.newText},s))})}function m0n(e){for(let t=e.length-1;t>=0;t--)if(e[t]?.fullContent)return e.slice(t);return e}function g0n({oldText:e,newText:t}){const n=d.useRef(null),[s,r]=d.useState(null),[o,i]=d.useState(null);return d.useEffect(()=>{const l=n.current;if(!l)return;const c=()=>r(l.clientWidth>=720);c();const u=new ResizeObserver(c);return u.observe(l),()=>u.disconnect()},[]),d.useEffect(()=>{const l=n.current;if(!l||s===null)return;l.replaceChildren(),i(null);let c=!1,u=null;const h=[vTe,js.editable.of(!1),ua.readOnly.of(!0),js.lineWrapping],f={scanLimit:1e3,timeout:500},m={margin:3,minSize:8};return Je(async()=>{const{MergeView:g,unifiedMergeView:w}=await import("./index-CQ5O0GyT.js");return{MergeView:g,unifiedMergeView:w}},[]).then(({MergeView:g,unifiedMergeView:w})=>{if(!c)try{if(s){u=new g({a:{doc:e,extensions:h},b:{doc:t,extensions:h},parent:l,highlightChanges:!0,gutter:!0,revertControls:void 0,collapseUnchanged:m,diffConfig:f});return}u=new js({doc:t,extensions:[...h,w({original:e,highlightChanges:!0,gutter:!0,mergeControls:!1,allowInlineDiffs:!0,collapseUnchanged:m,diffConfig:f})],parent:l})}catch(y){c||i(y instanceof Error?y.message:String(y))}}).catch(g=>{c||i(g instanceof Error?g.message:String(g))}),()=>{c=!0,u?.destroy()}},[s,t,e]),a.jsxs("div",{className:pt.codeMirrorDiffWrap,children:[a.jsx("div",{ref:n,className:pt.codeMirrorDiff}),o&&a.jsxs("div",{className:pt.diffError,children:["Diff unavailable: ",o]})]})}function bRe({node:e,depth:t,selectedPath:n}){const s=!!e.file,[r,o]=d.useState(!0),i=[pt.treeRow,s?pt.treeFile:pt.treeFolder].filter(Boolean).join(" "),l={paddingLeft:10+t*18,"--tree-row-line-left":`${19+Math.max(0,t-1)*18}px`},c={"--tree-children-line-left":`${19+t*18}px`},u=a.jsxs(a.Fragment,{children:[a.jsx("span",{className:pt.treeTwisty,children:!s&&a.jsx("span",{className:[pt.treeChevron,r?"":pt.treeChevronClosed].filter(Boolean).join(" "),children:a.jsx(k0n,{})})}),a.jsxs("span",{className:pt.treeContent,children:[s&&a.jsx("span",{className:pt.fileIcon,children:_Re(e.path)}),a.jsx("span",{className:pt.treeName,children:e.name})]}),e.file?.isArtifact&&a.jsx("span",{className:pt.reviewBadge,children:"artifact"})]});return a.jsxs("div",{className:pt.treeNode,children:[s?a.jsx("div",{className:i,"data-selected":e.file?.path===n||void 0,"data-depth":t,style:l,title:e.path,children:u}):a.jsx("button",{type:"button",className:i,"data-depth":t,style:l,title:e.path,"aria-expanded":r,onClick:()=>o(h=>!h),children:u}),!s&&r&&e.children.length>0&&a.jsx("div",{className:pt.treeChildren,style:c,children:e.children.map(h=>a.jsx(bRe,{node:h,depth:t+1,selectedPath:n},h.path))})]})}function v0n({path:e,title:t}){const n=d.useRef(null),[s,r]=d.useState(()=>xRe(e));return d.useLayoutEffect(()=>{const o=n.current;if(!o)return;const i=()=>r(w0n(e,o));i();const l=new ResizeObserver(i);return l.observe(o),()=>l.disconnect()},[e]),a.jsxs("span",{ref:n,className:pt.reviewPath,title:t??e,children:[s.prefix&&a.jsx("span",{className:pt.pathPrefix,children:s.prefix}),a.jsx("span",{className:pt.pathFileName,children:s.leaf})]})}function xRe(e){const t=e.lastIndexOf("/");return t<0?{prefix:"",leaf:e}:{prefix:e.slice(0,t+1),leaf:e.slice(t+1)}}let kue=null;function w0n(e,t){const n=xRe(e),s=t.clientWidth;if(s<=0)return n;const r=y0n(t);if(r(e)<=s)return n;const o=e.split("/").filter(Boolean),i=o.at(-1)??e,l=r(i);if(o.length<=1||l+r(".../")>s)return{prefix:"",leaf:i};let c=".../";for(let u=1;u<o.length;u++){const f=`.../${o.slice(o.length-1-u,-1).join("/")}/`;if(r(f)+l>s)break;c=f}return{prefix:c,leaf:i}}function y0n(e){kue??=document.createElement("canvas");const t=kue.getContext("2d"),n=window.getComputedStyle(e);return t&&(t.font=[n.fontStyle,n.fontVariant,n.fontWeight,n.fontSize,n.fontFamily].join(" ")),s=>t?.measureText(s).width??s.length*8}function b0n(){return a.jsxs("svg",{className:pt.toolbarIcon,viewBox:"0 0 24 24",fill:"none",focusable:"false","aria-hidden":"true",children:[a.jsx("path",{d:"M3.5 7.5h6l1.6 2h9.4v8.2a2 2 0 0 1-2 2h-13a2 2 0 0 1-2-2V7.5Z",stroke:"currentColor",strokeWidth:"1.7",strokeLinejoin:"round"}),a.jsx("path",{d:"M3.5 7.5V5.8a1.5 1.5 0 0 1 1.5-1.5h4l1.8 2.1h7.2a1.5 1.5 0 0 1 1.5 1.5v1.6",stroke:"currentColor",strokeWidth:"1.7",strokeLinejoin:"round"})]})}function x0n(){return a.jsxs("svg",{className:pt.toolbarIcon,viewBox:"0 0 24 24",fill:"none",focusable:"false","aria-hidden":"true",children:[a.jsx("path",{d:"M3.5 8.2V5.8A1.5 1.5 0 0 1 5 4.3h4l1.8 2.1h7.2a1.5 1.5 0 0 1 1.5 1.5v1.4",stroke:"currentColor",strokeWidth:"1.7",strokeLinejoin:"round"}),a.jsx("path",{d:"M4.8 19.7h12.9a2 2 0 0 0 1.9-1.4l2-7H6.4l-2.8 7.1a.9.9 0 0 0 1.2 1.3Z",stroke:"currentColor",strokeWidth:"1.7",strokeLinejoin:"round"})]})}function _ue(){return a.jsx("svg",{className:pt.chevronIcon,viewBox:"0 0 16 16",fill:"none",focusable:"false","aria-hidden":"true",children:a.jsx("path",{d:"m6 4 4 4-4 4",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round"})})}function k0n(){return a.jsx("svg",{className:pt.treeChevronIcon,viewBox:"0 0 16 16",fill:"none",focusable:"false","aria-hidden":"true",children:a.jsx("path",{d:"m4 6 4 4 4-4",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round"})})}function _0n(e,t){const n={name:"",path:"",children:[]};for(const s of e){const r=AL(s.path,t).split("/").filter(Boolean);let o=n;for(let i=0;i<r.length;i++){const l=r[i],c=r.slice(0,i+1).join("/");let u=o.children.find(h=>h.name===l);u||(u={name:l,path:c,children:[]},o.children.push(u)),i===r.length-1&&(u.file=s),o=u}}return kRe(n),n}function kRe(e){e.children.sort((t,n)=>!!t.file!=!!n.file?t.file?1:-1:t.name.localeCompare(n.name));for(const t of e.children)kRe(t)}function y8(e){return db(e).split("/").filter(Boolean).at(-1)??e}function _Re(e){const t=y8(e),n=t.includes(".")?t.split(".").pop()?.toLowerCase():"";return n?{css:"CSS",html:"HTML",js:"JS",json:"JSON",jsx:"JSX",md:"MD",ts:"TS",tsx:"TSX"}[n]??n.slice(0,3).toUpperCase():"FILE"}function S0n({artifact:e,sourceSessionId:t,workspaceActions:n,previewContent:s}){const{t:r}=Ct(),o=Hp(),i=iwe(e),l=N4(e.url)?e.url:void 0,c=e.metadata?.artifactType==="automation_snapshot",u=e.metadata?.artifactType==="code_review",h=e.storage==="workspace"&&!!e.workspacePath,f=owe(e);return e.metadata?.artifactType==="web_preview_snapshot"?a.jsx(cmn,{artifact:e,sourceSessionId:t}):u?e.status!=="available"?a.jsx(C0n,{status:e.status}):!h||!e.workspacePath?a.jsx(T0n,{}):a.jsx(bun,{workspacePath:e.workspacePath,artifactVersion:xte(e),workspaceActions:n}):h&&e.workspacePath?swe(e)?a.jsx(E0n,{artifact:e,workspaceActions:n}):a.jsx(oD,{workspacePath:e.workspacePath,artifactVersion:xte(e),workspaceActions:n,previewContent:s,previewSizeBytes:e.sizeBytes,imageMimeType:f,previewKind:I0n(e)?"html":R0n(e)?"markdown":f?"image":"source"}):a.jsxs("div",{className:pt.detail,children:[a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:c?"Automation Snapshot":"Artifact"}),a.jsxs("div",{className:pt.fieldGrid,children:[a.jsx(kp,{label:"Type",value:GG(e.kind,e.workspacePath)}),a.jsx(kp,{label:"Storage",value:e.storage}),a.jsx(kp,{label:"Status",value:e.status}),a.jsx(kp,{label:"Source",value:e.source}),a.jsx(kp,{label:"Size",value:VP(e.sizeBytes)}),a.jsx(kp,{label:"Created",value:e.createdAt}),a.jsx(kp,{label:"Updated",value:e.updatedAt}),e.toolName&&a.jsx(kp,{label:"Tool",value:e.toolName}),e.toolCallId&&a.jsx(kp,{label:"Tool call",value:e.toolCallId})]})]}),e.description&&a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:"Description"}),a.jsx("div",{className:pt.description,children:e.description})]}),c&&e.metadata&&a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:"Details"}),a.jsxs("div",{className:pt.fieldGrid,children:[C2(e.metadata,"automationId","Automation ID"),C2(e.metadata,"schedule","Schedule"),C2(e.metadata,"timezone","Timezone"),C2(e.metadata,"status","Status"),C2(e.metadata,"nextRunAt","Next run"),C2(e.metadata,"prompt","Prompt")]})]}),(i||l)&&a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:"Location"}),l?a.jsxs("div",{className:pt.locationRow,children:[a.jsx("a",{className:pt.link,href:l,target:"_blank",rel:"noopener noreferrer",onClick:m=>o(m,l),children:l}),a.jsx("a",{className:pt.openButton,href:l,target:"_blank",rel:"noopener noreferrer",onClick:m=>o(m,l),children:r("artifact.openLink")})]}):a.jsx("div",{className:pt.meta,children:i})]})]})}function C0n({status:e}){const{t}=Ct();return a.jsx("div",{className:pt.previewError,role:"alert",children:t("codeReview.unavailable",{status:e})})}function T0n(){const{t:e}=Ct();return a.jsx("div",{className:pt.previewError,role:"alert",children:e("codeReview.workspaceRequired")})}function I0n(e){const t=e.workspacePath?.toLowerCase()??"",n=ub(e.mimeType);return e.kind==="html"||t.endsWith(".html")||t.endsWith(".htm")||n==="text/html"}function R0n(e){const t=e.workspacePath?.toLowerCase()??"",n=ub(e.mimeType);return t.endsWith(".md")||t.endsWith(".markdown")||n==="text/markdown"}function E0n({artifact:e,workspaceActions:t}){const{t:n}=Ct(),[s,r]=d.useState(null),[o,i]=d.useState(!1),l=d.useRef(!0),c=iwe(e);d.useEffect(()=>(l.current=!0,()=>{l.current=!1}),[]);const u=async()=>{if(e.workspacePath){i(!0),r(null);try{await GP(t,e.workspacePath,e.mimeType,()=>!l.current)}catch(h){if(!l.current)return;r(h instanceof Error?h.message:String(h))}finally{l.current&&i(!1)}}};return a.jsx("div",{className:pt.detail,children:a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:n("common.download")}),a.jsxs("div",{className:pt.fieldGrid,children:[a.jsx(kp,{label:"Type",value:GG(e.kind,e.workspacePath)}),a.jsx(kp,{label:"Size",value:VP(e.sizeBytes)}),c?a.jsx(kp,{label:"Location",value:c}):null,e.status!=="available"&&e.status!=="changed"?a.jsx(kp,{label:"Status",value:e.status??"missing"}):null]}),a.jsx("div",{className:pt.downloadRow,children:a.jsx("button",{type:"button",className:pt.downloadButton,onClick:()=>{u()},disabled:o||e.status!=="available"&&e.status!=="changed",children:n(o?"common.downloading":"common.download")})}),s&&a.jsx("div",{className:pt.previewError,children:s})]})})}function A0n({tab:e}){const{t}=Ct(),n=el(),s=O4(e.workspaceCwd),r=s?.actions,o=Hp(),[i,l]=d.useState(0),[c,u]=d.useState(),[h,f]=d.useState(),[m,g]=d.useState(),w=e.source,y=w.locator,x=e.owner.isCurrent()&&n.sessionId===e.sourceSessionId&&n.capabilities?.features.includes("session_sources")&&s?.workspaceId===e.workspaceId&&(!!s||e.workspaceCwd===void 0&&y.type!=="workspace_file")&&(y.type!=="workspace_file"||w.workspaceCwd===n.workspaceCwd),k=y.type==="workspace_file"?y.workspacePath:y.type==="attachment"?y.attachmentId:"",_=/\.pdf$/i.test(k);if(d.useEffect(()=>{let I=!1;return u(void 0),f(void 0),g(void 0),!x||y.type==="url"?void 0:((async()=>{if(y.type==="attachment"){const A=await e.sessionActions.readAttachment(y.attachmentId);if(I||!e.owner.isCurrent())return;const j=Uint8Array.from(atob(A.data),L=>L.charCodeAt(0));u(new Blob([j],{type:A.mimeType}))}else if(_&&r){const A=await _4(r.readFileBytes,k,"application/pdf",{statFile:r.stat,isCancelled:()=>I||!e.owner.isCurrent()});!I&&e.owner.isCurrent()&&u(A)}})().catch(A=>{!I&&e.owner.isCurrent()&&f(Iu(A))}),()=>{I=!0})},[i,x,y,k,_,e.owner,e.sessionActions,r]),x&&y.type==="url")return a.jsxs("div",{className:"flex flex-col gap-3 p-4",children:[a.jsx("h3",{children:w.title}),w.description&&a.jsx("p",{children:w.description}),a.jsx("p",{className:"break-all text-sm text-muted-foreground",children:y.url}),N4(y.url)&&a.jsx("a",{className:"text-primary underline",href:y.url,target:"_blank",rel:"noopener noreferrer",onClick:I=>o(I,y.url),children:t("sources.openOriginal")})]});if(!x||!s&&y.type!=="attachment")return a.jsx("div",{className:pt.empty,role:"alert",children:t("sources.unavailable")});const S=y.type==="workspace_file"&&!_&&swe({workspacePath:k});return a.jsxs("div",{className:"flex h-full min-h-0 flex-1 flex-col",children:[a.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-border px-3 py-2",children:[a.jsx("span",{className:"truncate text-xs text-muted-foreground",title:k,children:k}),a.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[m&&a.jsx(Wt,{variant:"ghost",size:"icon-sm",asChild:!0,children:a.jsx("a",{href:m,download:w.title,"aria-label":`Download ${w.title}`,title:t("common.download"),children:a.jsx(Vy,{})})}),h&&a.jsx(Wt,{variant:"ghost",size:"sm",onClick:()=>l(I=>I+1),children:t("common.retry")})]})]}),h?a.jsx("div",{className:pt.previewError,role:"alert",children:h}):S?a.jsxs("div",{className:"p-4",children:[a.jsx("p",{children:t("attachment.previewUnsupported")}),a.jsx(Wt,{onClick:()=>void GP(r,k,"application/octet-stream",()=>!e.owner.isCurrent()).catch(I=>{e.owner.isCurrent()&&f(Iu(I))}),children:t("common.download")})]}):(y.type==="attachment"||_)&&!c?a.jsx("div",{className:pt.empty,role:"status",children:t("common.loading")}):c&&c.type!=="application/pdf"&&!i4(c.type,k)?a.jsx(SRe,{data:c,title:w.title,onDownloadUrl:g,showDownload:!1,image:!!FS(k)&&c.type.startsWith("image/")}):a.jsx("div",{className:"relative min-h-0 flex-1 overflow-auto",children:a.jsx(oD,{workspacePath:k,workspaceActions:r,onLoadError:f,previewData:c,previewOnly:y.type==="attachment",previewMimeType:c?.type,previewKind:/\.html?$/i.test(k)||ub(c?.type)==="text/html"?"source":void 0},i)})]})}function SRe({data:e,title:t,image:n,onDownloadUrl:s,showDownload:r=!0}){const[o,i]=d.useState();return d.useEffect(()=>{const l=URL.createObjectURL(e);return i(l),s?.(l),()=>URL.revokeObjectURL(l)},[e,s]),o?a.jsxs("div",{className:pt.imagePreviewWrap,children:[n?a.jsx("img",{className:pt.imagePreview,src:o,alt:t}):a.jsx(CRe,{name:t,mimeType:e.type,size:e.size}),r&&a.jsx("a",{href:o,download:t,"aria-label":`Download ${t}`,children:a.jsx(Vy,{})})]}):null}function oD({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewSizeBytes:r,previewData:o,previewMimeType:i,imageMimeType:l,previewKind:c,previewOnly:u,onLoadError:h}){if(o)return a.jsx(j0n,{workspacePath:e,workspaceActions:n,data:o,mimeType:i,previewKind:c,onLoadError:h});const f=e.toLowerCase(),m=l??FS(e),g=c??(f.endsWith(".html")||f.endsWith(".htm")?"html":f.endsWith(".md")||f.endsWith(".markdown")?"markdown":m?"image":"source");return g==="html"?a.jsx(L0n,{workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewSizeBytes:r,previewOnly:u,onLoadError:h}):g==="markdown"?a.jsx(O0n,{workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewSizeBytes:r,previewOnly:u,onLoadError:h}):g==="image"&&m?a.jsx(P0n,{workspacePath:e,artifactVersion:t,workspaceActions:n,mimeType:m,onLoadError:h}):a.jsx(TRe,{workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:u,onLoadError:h})}function j0n({workspacePath:e,workspaceActions:t,data:n,mimeType:s,previewKind:r,onLoadError:o}){const i=(s||n.type||"application/octet-stream").split(";",1)[0].trim().toLowerCase();return i==="application/pdf"?a.jsx(M0n,{data:n,mimeType:i,title:e}):i4(i,e)?a.jsx(N0n,{workspacePath:e,workspaceActions:t,data:n,previewKind:r,onLoadError:o}):a.jsx(CRe,{name:e,mimeType:i,size:n.size})}function N0n({workspacePath:e,workspaceActions:t,data:n,previewKind:s,onLoadError:r}){const{t:o}=Ct(),[i,l]=d.useState(),[c,u]=d.useState();return d.useEffect(()=>{const h=new FileReader;return l(void 0),u(void 0),h.onload=()=>l(String(h.result??"")),h.onerror=()=>{const f=o("attachment.readFailed");u(f),r?.(f)},h.readAsText(n),()=>{h.readyState===FileReader.LOADING&&h.abort()}},[n,r,o]),c?a.jsx("div",{className:pt.previewError,children:c}):i===void 0?a.jsx("div",{className:pt.empty,children:o("attachment.loadingFile")}):a.jsx(oD,{workspacePath:e,workspaceActions:t,previewContent:i,previewSizeBytes:n.size,previewOnly:!0,previewKind:s})}function M0n({data:e,mimeType:t,title:n}){const{t:s}=Ct(),[r,o]=d.useState();return d.useEffect(()=>{const i=URL.createObjectURL(e.type===t?e:new Blob([e],{type:t}));return o(i),()=>URL.revokeObjectURL(i)},[e,t]),r?a.jsx("iframe",{className:pt.pdfAttachmentPreview,src:r,title:`Preview ${n}`}):a.jsx("div",{className:pt.empty,children:s("attachment.loadingPreview")})}function CRe({name:e,mimeType:t,size:n}){const{t:s}=Ct();return a.jsxs("div",{className:pt.unsupportedAttachmentPreview,children:[a.jsx(U0,{name:e,mimeType:t,"aria-hidden":"true"}),a.jsx("div",{children:s("attachment.previewUnsupported")}),a.jsxs("div",{className:pt.unsupportedAttachmentMeta,children:[t," · ",VP(n)]})]})}function P0n({workspacePath:e,artifactVersion:t,workspaceActions:n,mimeType:s,onLoadError:r}){const[o,i]=d.useState(null),[l,c]=d.useState(null);return d.useEffect(()=>{let u=!1,h;return i(null),c(null),_4((f,m)=>n.readFileBytes(f,m),e,s,{statFile:f=>n.stat(f),isCancelled:()=>u}).then(f=>{u||(h=URL.createObjectURL(f),i(h))}).catch(f=>{if(u)return;const m=f instanceof Error?f.message:String(f);c(m),r?.(m)}),()=>{u=!0,h&&URL.revokeObjectURL(h)}},[t,s,r,n,e]),a.jsxs("div",{className:pt.imagePreviewWrap,children:[o?a.jsxs(a.Fragment,{children:[a.jsx("img",{className:pt.imagePreview,src:o,alt:y8(e)}),a.jsx("a",{className:pt.imageDownloadButton,href:o,download:y8(e),"aria-label":`Download ${y8(e)}`,title:"Download",children:a.jsx(Vy,{size:16,strokeWidth:1.8})})]}):l?null:a.jsx("div",{className:pt.empty,children:"Loading image..."}),l&&a.jsx("div",{className:pt.previewError,children:l})]})}function SZ({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:r,onLoadError:o}){const[i,l]=d.useState(s??null),[c,u]=d.useState(),[h,f]=d.useState(null);return d.useEffect(()=>{let m=!1;if(l(s??null),f(null),u(void 0),!r)return n.stat(e).then(g=>{if(!m){if(g.type==="directory")throw new Error("Directories cannot be opened as artifacts.");return n.readWorkspaceFile(e,{maxBytes:256*1024})}}).then(async g=>{if(m||!g||!g.truncated)return g;const w=await _4((y,x)=>n.readFileBytes(y,x),e,"application/octet-stream",{statFile:y=>n.stat(y),isCancelled:()=>m});return{sizeBytes:w.size,content:new TextDecoder(g.encoding||"utf-8").decode(await w.arrayBuffer())}}).then(g=>{m||!g||(u(g.sizeBytes),l(g.content))}).catch(g=>{if(m)return;const w=g instanceof Error?g.message:String(g);f(w),o?.(w)}),()=>{m=!0}},[t,s,r,o,n,e]),{content:i,error:h,sizeBytes:c}}function L0n({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewSizeBytes:r,previewOnly:o,onLoadError:i}){const{content:l,error:c,sizeBytes:u}=SZ({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:o,onLoadError:i});return a.jsxs("div",{className:pt.htmlPreviewWrap,children:[l===null?!c&&a.jsx("div",{className:pt.empty,children:"Loading preview..."}):a.jsx(IRe,{content:l,sizeBytes:u??r,workspacePath:e,workspaceActions:n,children:()=>a.jsx(D0n,{content:l,workspacePath:e})}),c&&a.jsx("div",{className:pt.previewError,children:c})]})}function D0n({content:e,workspacePath:t}){const n=`Preview ${t}`,{t:s}=Ct(),[r,o]=d.useState(null),[i,l]=d.useState(null);return d.useEffect(()=>{const c=new AbortController;return o(null),l(null),hVe(e,n,c.signal).then(u=>{c.signal.aborted||o(u)},u=>{c.signal.aborted||l(Iu(u))}),()=>c.abort()},[e,n]),i?a.jsx("div",{className:pt.previewError,children:s("artifact.previewFailed",{message:i})}):r===null?a.jsx("div",{className:pt.empty,children:s("attachment.loadingPreview")}):a.jsx("iframe",{className:pt.htmlPreview,referrerPolicy:"no-referrer",sandbox:"allow-scripts",srcDoc:r,title:n})}function TRe({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:r,onLoadError:o}){const i=d.useRef(null),[l,c]=d.useState(null),{content:u,error:h}=SZ({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:r,onLoadError:o});return d.useEffect(()=>{const f=i.current;if(!f||u===null)return;f.replaceChildren(),c(null);let m;try{m=new js({doc:u,extensions:[vTe,js.editable.of(!1),ua.readOnly.of(!0),js.lineWrapping],parent:f})}catch(g){c(g instanceof Error?g.message:String(g));return}return()=>m.destroy()},[u]),a.jsxs("div",{className:pt.filePreviewWrap,children:[u===null?!h&&a.jsx("div",{className:pt.empty,children:"Loading file..."}):a.jsx("div",{ref:i,className:pt.codeMirrorFile}),(h||l)&&a.jsx("div",{className:pt.previewError,children:h||l})]})}function IRe({content:e,sizeBytes:t,workspacePath:n,workspaceActions:s,children:r}){const{t:o}=Ct(),[i,l]=d.useState(null);if(!d.useMemo(()=>(t??new TextEncoder().encode(e).byteLength)>1024*1024,[e,t]))return r();const u=i===e;return a.jsxs("div",{className:"absolute inset-3 flex min-h-0 flex-col gap-2",children:[a.jsxs("div",{className:"flex shrink-0 items-center gap-2 text-sm text-muted-foreground",children:[a.jsx("span",{children:o("artifact.longDocument")}),a.jsx(Wt,{className:"ml-auto shrink-0",variant:"outline",size:"sm",onClick:()=>l(u?null:e),children:o(u?"artifact.showSource":"artifact.renderFullPreview")})]}),a.jsx("div",{className:"relative min-h-0 flex-1 overflow-auto",children:u?r():a.jsx(TRe,{workspacePath:n,workspaceActions:s,previewContent:e,previewOnly:!0})})]})}function O0n({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewSizeBytes:r,previewOnly:o,onLoadError:i}){const{content:l,error:c,sizeBytes:u}=SZ({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:o,onLoadError:i});return a.jsxs("div",{className:pt.htmlPreviewWrap,children:[l===null?!c&&a.jsx("div",{className:pt.empty,children:"Loading preview..."}):a.jsx(IRe,{content:l,sizeBytes:u??r,workspacePath:e,workspaceActions:n,children:()=>a.jsx("div",{className:pt.markdownPreviewWrap,children:a.jsx(Im,{content:l})})}),c&&a.jsx("div",{className:pt.previewError,children:c})]})}function kp({label:e,value:t}){return t?a.jsxs(a.Fragment,{children:[a.jsx("span",{className:pt.fieldLabel,children:e}),a.jsx("span",{className:pt.fieldValue,children:t})]}):null}function C2(e,t,n){const s=e[t];return s==null||s===""?null:a.jsx(kp,{label:n,value:String(s)},t)}/**
2216
+ `);return n===-1?t:t.slice(0,n)}function zgn(e,t){if(e.kind==="request"){const n=[kh(e.timing.durationMs)];return e.timing.ttftMs!==void 0&&n.push(t("trajectory.ttft",{duration:kh(e.timing.ttftMs)})),e.usage&&n.push($gn(e.usage)),n}if(e.kind==="tool"){const n=[];if(e.timing&&n.push(kh(e.timing.durationMs)),e.subagentSummary){const{requests:s,tools:r,requestMs:o}=e.subagentSummary;n.push(t("trajectory.subagentRollup",{requests:s,tools:r,duration:kh(o)}))}return n}return[]}function yue(e){const t=e.toolStatus??e.block.status;if(t==="error"||t==="failed")return Ua.toneError;if(t==="cancelled")return Ua.toneMuted}function Hgn(e,t){switch(e.kind){case"user":return{badge:t("trajectory.badge.user"),text:yE(e.block.text)};case"request":{const n=Fgn(e),s=e.status==="error",r=n!==void 0?`${n}${e.model?` · ${e.model}`:""}`:e.model??t("trajectory.request");return{badge:n!==void 0?t("trajectory.badge.subagent"):`#${e.requestIndex??"?"}`,...s?{badgeTone:Ua.toneError}:{},text:s?`${r} · ${t("trajectory.requestFailed")}`:r}}case"message":return{badge:e.thought?t("trajectory.badge.thought"):t("trajectory.badge.message"),text:yE(e.block.text),faint:e.thought};case"tool":return{badge:e.block.toolName??t("trajectory.badge.tool"),...yue(e)?{badgeTone:yue(e)}:{},text:e.block.title||(e.block.toolName??"")};default:return Ugn(e.block,t)}}function Ugn(e,t){switch(e.kind){case"shell":return{badge:t("trajectory.badge.shell"),text:yE(e.text)};case"user_shell":return{badge:t("trajectory.badge.shell"),text:yE(e.command||e.text)};case"permission":return{badge:t("trajectory.badge.permission"),text:e.title||e.toolName||""};case"status":case"error":case"debug":return{badge:t("trajectory.badge.status"),...e.kind==="error"?{badgeTone:Ua.toneError}:{},text:yE(e.text),faint:e.kind!=="error"};case"prompt_cancelled":return{badge:t("trajectory.badge.cancelled"),badgeTone:Ua.toneMuted,text:e.reason??t("trajectory.cancelled"),faint:!0};default:return{badge:t("trajectory.badge.other"),text:""}}}function Wgn(e){return e.rows.some(t=>t.kind==="request"||t.kind==="tool"&&t.timing!==void 0)}function qgn({loadPage:e}){const{t}=Ct(),{trajectory:n,status:s,error:r,truncated:o,refresh:i}=ugn(e),[l,c]=d.useState(void 0),u=d.useRef(null),h=d.useRef(!1),f=d.useRef(0),m=d.useId(),g=d.useCallback(R=>`${m}-row-${R}`,[m]),w=d.useCallback((R,N)=>{R.scrollTop=N,f.current=R.scrollTop},[]),y=d.useMemo(()=>{if(!n)return[];const R=new Map(n.rows.map(M=>[M.key,M])),N=[];for(const M of n.turns){const O=M.userRowKey??`ordinal:${M.index}`;N.push({kind:"turn",key:`turn:${O}`,turn:M});for(const P of M.rowKeys){const F=R.get(P);F&&N.push({kind:"row",key:P,row:F})}}return N},[n]),x=wwe({count:y.length,getScrollElement:()=>u.current,getItemKey:R=>y[R]?.key??R,estimateSize:()=>vue,overscan:12}),k=y.length>0;d.useLayoutEffect(()=>{const R=u.current;if(!R||typeof ResizeObserver>"u")return;let N=0;const M=()=>{R.scrollTop===0&&f.current>0&&(R.scrollTop=f.current)},O=new ResizeObserver(()=>{M(),N=requestAnimationFrame(M)});return O.observe(R),()=>{O.disconnect(),N!==0&&cancelAnimationFrame(N)}},[k]),d.useEffect(()=>{if(s!=="ready"||h.current||y.length===0)return;h.current=!0;const R=u.current;R&&w(R,R.scrollHeight)},[w,s,y.length]);const _=d.useMemo(()=>l===void 0?-1:y.findIndex(R=>R.key===l),[l,y]),S=d.useCallback(R=>{if(y.length===0)return;const N=Math.min(Math.max(R,0),y.length-1);c(y[N].key),x.scrollToIndex(N,{align:"auto"})},[x,y]),I=d.useCallback(R=>{c(R),u.current?.focus({preventScroll:!0})},[]),E=d.useCallback(R=>{if(y.length===0)return;const N=_<0?-1:_;R.key==="ArrowDown"?(R.preventDefault(),S(N+1)):R.key==="ArrowUp"?(R.preventDefault(),S(N<=0?0:N-1)):R.key==="Home"?(R.preventDefault(),S(0)):R.key==="End"&&(R.preventDefault(),S(y.length-1))},[S,_,y]),A=d.useMemo(()=>{if(!n)return;let R=0,N=0,M=0;for(const O of n.turns)R+=O.requestCount,N+=O.toolCount,M+=O.requestMs;return{turns:n.turns.length,requests:R,tools:N,durationMs:M}},[n]),j=s==="ready"&&y.length===0,L=n!==void 0&&y.length>0&&!Wgn(n);return a.jsxs("div",{className:Ua.panel,"data-testid":"trajectory-panel",children:[a.jsxs("div",{className:Ua.header,children:[a.jsx("div",{className:Ua.summary,children:A?a.jsx("span",{"data-testid":"trajectory-totals",children:t("trajectory.totals",{turns:A.turns,requests:A.requests,tools:A.tools,duration:A.durationMs>0?kh(A.durationMs):"—"})}):a.jsx("span",{children:t("trajectory.title")})}),a.jsx("div",{className:Ua.headerActions,children:a.jsx("button",{type:"button",className:Ua.iconButton,onClick:i,disabled:!e||s==="loading",title:t("common.refresh"),"aria-label":t("common.refresh"),children:a.jsx(Hg,{size:14,strokeWidth:1.6})})})]}),r!==void 0&&a.jsxs("div",{className:Ua.error,role:"alert",children:[a.jsx("span",{children:r.kind==="partial"?t("trajectory.partial"):t("trajectory.loadFailed",{message:r.message})}),a.jsx("button",{type:"button",className:Ua.headerButton,onClick:i,disabled:s==="loading",children:t("common.retry")})]}),L&&a.jsx("div",{className:Ua.notice,role:"status",children:t("trajectory.noTiming")}),a.jsx("div",{className:Ua.tableWrap,children:y.length===0?s==="error"?null:a.jsx("div",{className:Ua.placeholder,role:"status",children:t(j?"trajectory.empty":"common.loading")}):a.jsxs(a.Fragment,{children:[o&&a.jsx("div",{className:Ua.olderBar,children:a.jsx("span",{className:Ua.olderNotice,"data-testid":"trajectory-truncated",children:t("trajectory.truncated")})}),a.jsx("div",{ref:u,className:Ua.scroll,role:"grid",tabIndex:0,"aria-label":t("trajectory.title"),"aria-rowcount":y.length,"aria-activedescendant":_>=0?g(_):void 0,onKeyDown:E,onScroll:R=>{f.current=R.currentTarget.scrollTop},"data-testid":"trajectory-rows",children:a.jsx("div",{className:Ua.virtualBody,style:{height:`${x.getTotalSize()}px`},children:x.getVirtualItems().map(R=>{const N=y[R.index];return a.jsx("div",{id:g(R.index),className:Ua.virtualRow,style:{height:`${vue}px`,transform:`translateY(${R.start}px)`},role:"row","aria-rowindex":R.index+1,children:N.kind==="turn"?a.jsx(Vgn,{turn:N.turn,selected:N.key===l,onSelect:()=>I(N.key)}):a.jsx(Ggn,{row:N.row,selected:N.key===l,onSelect:()=>I(N.key)})},R.key)})})})]})})]})}function Vgn({turn:e,selected:t,onSelect:n}){const{t:s}=Ct();return a.jsxs("div",{className:`${Ua.turnHeader} ${t?Ua.selected:""}`,onClick:n,"aria-selected":t,"data-selected":t?"true":void 0,role:"gridcell","data-testid":"trajectory-turn",children:[a.jsx("span",{className:Ua.turnTitle,children:e.partial?s("trajectory.turnPartial",{index:e.index}):s("trajectory.turn",{index:e.index})}),a.jsx("span",{className:Ua.turnSummary,children:s("trajectory.turnSummary",{requests:e.requestCount,tools:e.toolCount,duration:e.requestMs>0?kh(e.requestMs):"—"})})]})}function Ggn({row:e,selected:t,onSelect:n}){const{t:s}=Ct(),r=Hgn(e,s),o=zgn(e,s);return a.jsxs("div",{className:`${Ua.record} ${t?Ua.selected:""}`,role:"gridcell","aria-selected":t,"data-selected":t?"true":void 0,onClick:n,"data-testid":`trajectory-row-${e.kind}`,"data-depth":e.depth,children:[e.depth>0&&a.jsx(zHe,{size:12,strokeWidth:1.6,className:Ua.nestMarker,"aria-hidden":"true"}),a.jsx("span",{className:`${Ua.badge} ${r.badgeTone??""}`,children:r.badge}),a.jsx("span",{className:`${Ua.text} ${r.faint?Ua.faint:""}`,children:r.text}),a.jsx("span",{className:Ua.metrics,"data-testid":"trajectory-row-metrics",children:o.length>0?o.join(" · "):"—"})]})}const Kgn="_panel_pwtdr_1",Ygn="_toolbar_pwtdr_5",Xgn="_actions_pwtdr_15",Zgn="_feedback_pwtdr_21",Jgn="_state_pwtdr_31",ky={panel:Kgn,toolbar:Ygn,actions:Xgn,feedback:Zgn,state:Jgn};function Qgn({sessionActions:e,sessionId:t,controls:n}){const{t:s}=Ct(),[r,o]=d.useState(null),[i,l]=d.useState(!0),[c,u]=d.useState(!1),h=d.useRef(0),f=d.useRef(()=>{}),m=d.useRef(null),g=n?.sessionId===t?n:void 0,w=g?.getContextUsage??e?.getContextUsage,y=d.useRef(g);y.current=g;const x=g?.result,[k,_]=d.useState(x),S=!!(x&&x!==k&&(x.kind!=="completed"||!c));d.useEffect(()=>{x?.kind==="completed"&&(h.current++,o(x.usage),u(!1))},[x]),d.useEffect(()=>{let A=!0,j=!1;const L=y.current?.result;o(N=>N?.sessionId===t?N:L?.kind==="completed"?L.usage:null),u(!1),l(!!w);const R=async()=>{if(!A||j||!w)return;j=!0,l(!0),u(!1);const N=h.current,M=m.current,O=M&&M.getContextUsage===w&&M.sessionId===t?M:{getContextUsage:w,sessionId:t,promise:w({detail:!0,silent:!0,...y.current?.result?{syncCounters:!0}:{}})};m.current=O;try{const P=await O.promise;if(!A||N!==h.current)return;o(P.sessionId===t&&P.usage.contextWindowSize>0?P:null)}catch(P){if(!A||N!==h.current)return;u(DV(P)?"transient":"hard")}finally{j=!1,m.current===O&&(m.current=null),A&&l(!1)}};return f.current=()=>void R(),R(),()=>{A=!1}},[w,t]);const I=!w||i||g?.compressing,E=()=>{_(x),f.current()};return a.jsxs("div",{className:ky.panel,"aria-busy":i,children:[a.jsxs("div",{className:ky.toolbar,children:[a.jsx("span",{children:s("contextUsage.title")}),a.jsxs("div",{className:ky.actions,children:[a.jsx(Wt,{type:"button",variant:"ghost",size:"icon-sm","aria-label":s("contextUsage.refresh"),title:s("contextUsage.refresh"),disabled:I,onClick:E,children:a.jsx(Hg,{"aria-hidden":"true"})}),a.jsx("span",{title:g?.compressing?void 0:g?.canCompress?i?s("common.loading"):void 0:s("contextUsage.compressUnavailable"),children:a.jsx(Wt,{type:"button",variant:"outline",size:"sm",disabled:!g?.canCompress||i,onClick:()=>void g?.compress(),children:s(g?.compressing?"contextUsage.compressing":"contextUsage.compress")})})]})]}),(g?.compressing||S)&&a.jsx(i4e,{controls:g,className:ky.feedback}),c==="transient"&&r&&a.jsx("div",{className:ky.feedback,role:"status",children:s("contextUsage.previousReading")}),c==="hard"?a.jsxs("div",{className:ky.state,role:"alert",children:[a.jsx("span",{children:s("contextUsage.loadError")}),a.jsx(Wt,{type:"button",variant:"outline",size:"sm",disabled:I,onClick:E,children:s("contextUsage.retry")})]}):w?i&&!r?a.jsx("div",{className:ky.state,role:"status",children:s("common.loading")}):r?a.jsx(Sxe,{status:r,compact:!0}):a.jsx("div",{className:ky.state,children:s("contextUsage.unavailable")}):a.jsx("div",{className:ky.state,children:s("contextUsage.unavailable")})]})}const e0n=700,t0n=["daily","weekdays","weekly","hourly","minutes","custom"],n0n=[1,2,3,4,5,6,10,12,15,20,30],s0n=(e,t)=>{},r0n=(e,t,n)=>{},o0n=()=>Promise.reject(new Error("Side-task session creation is unavailable"));function bue(e){return e.kind==="review"||e.kind==="file"||e.kind==="artifact"||e.kind==="scheduled_task"}function _y(e){return e.kind==="pending"?e.targetKind:e.kind}function i0n(e){return`image.${(e.match(/^data:image\/([a-z0-9+.+-]+)/i)?.[1]??"png").split("+")[0].toLowerCase()}`}const a0n=["review","sideTask"];function xue({contextUsageControls:e,artifacts:t,tabs:n,activeTabId:s,reviewChanges:r,selectedReviewPath:o,panelWidth:i,workspaceCwd:l,loading:c,restoring:u=!1,error:h,onSelectTab:f,onCloseTab:m,onOpenFilePreview:g,latestReviewAvailable:w=!1,onOpenLatestReview:y,onOpenTerminal:x,onOpenTrajectory:k,trajectoryTabId:_,onOpenWebPreview:S,onWebPreviewChange:I,items:E=a0n,sideTaskAvailable:A=!1,sideTasks:j=[],sideTasksLoading:L=!1,onCreateSideTask:R,onOpenSideTask:N,onCreateSideTaskSession:M,onSideTaskCreated:O,onSideTaskTitleChange:P,onNestedRightPanelOpen:F,onNestedArtifactsChange:H,onOpenNestedSubagent:$,agentTasks:Y=[],agentTraceLoading:Z=!1,agentTraceError:K,onOpenWorkflowAgent:B,onError:V,sessionWorkflowEnabled:J,workflow:q,onImageIngestionNotice:te,deferSubagentMount:ie=!1,onClose:ge,variant:re="docked",fullscreen:G=!1,onToggleFullscreen:Q}){const{t:he}=Ct(),[ve,ye]=d.useState(!1),[_e,ae]=d.useState(),Se=d.useRef(null),Te=d.useCallback(()=>{Se.current&&(clearTimeout(Se.current),Se.current=null),ye(!0)},[]),Ne=d.useCallback(()=>{Se.current&&clearTimeout(Se.current),Se.current=setTimeout(()=>{ye(!1),Se.current=null},120)},[]);d.useEffect(()=>()=>{Se.current&&clearTimeout(Se.current)},[]);const Ae=n.find(ke=>ke.id===s)??n[0],Ve=Ae?.kind==="file"&&Ae.sourcePreview&&(/\.html?$/i.test(Ae.workspacePath)||ub(Ae.previewMimeType||Ae.previewData?.type)==="text/html"),Ze=Ae?.kind==="file"&&Ae.previewOnly===!0&&!Ve&&/\.(?:html?|md|markdown)$/i.test(Ae.workspacePath)&&(Ae.previewContent!==void 0||!Ae.previewData||!!i4(Ae.previewMimeType||Ae.previewData.type,Ae.workspacePath)),Tt=_e===Ae?.id,je=E.includes("review")&&!n.some(ke=>_y(ke)==="review"),ot=E.includes("sideTask")&&A&&!!R,Ie=!!x,ue=E.includes("webPreview")&&!!S,W=E.includes("trajectory")&&!!k&&!n.some(ke=>ke.id===_),ne=!!Ae&&(je||ot||Ie||ue||W),me=Ae&&bue(Ae)?{workspaceCwd:Ae.workspaceCwd,workspaceId:Ae.workspaceId}:void 0,Me=O4(me?.workspaceCwd),Ke=Me?.workspaceId===me?.workspaceId?Me?.actions:void 0,be=Ae?.kind==="artifact"?t.find(ke=>ke.id===Ae.artifactId):void 0;return a.jsxs("aside",{className:`${pt.panel} ${re==="drawer"?pt.panelDrawer:""} ${G?pt.panelFullscreen:""}`,style:re==="docked"&&i&&!G?{flexBasis:i,width:i}:void 0,"aria-label":"Right panel",children:[a.jsxs("div",{className:pt.header,children:[n.length>0&&a.jsx("div",{className:pt.tabs,role:"tablist","aria-label":"Right panel",children:n.map(ke=>a.jsxs("div",{className:[pt.tabItem,ke.id===Ae?.id?pt.tabActive:""].filter(Boolean).join(" "),children:[a.jsxs("button",{type:"button",role:"tab","aria-selected":ke.id===Ae?.id,className:pt.tab,onClick:()=>f(ke.id),onMouseEnter:Pe=>yT(Pe.currentTarget),onFocus:Pe=>yT(Pe.currentTarget),title:ke.title,children:[a.jsx("span",{className:`${pt.tabIcon} ${_y(ke)==="artifact"?pt.tabArtifactIcon:""}`,"aria-hidden":"true",children:_y(ke)==="review"?a.jsx(GF,{}):ke.kind==="workflow"?a.jsx(zve,{className:pt.tabIconSvg,strokeWidth:1.6}):ke.kind==="file"?a.jsx(U0,{name:ke.workspacePath,className:pt.tabIconSvg,strokeWidth:1.6}):_y(ke)==="artifact"?a.jsx(uwe,{artifact:t.find(Pe=>"artifactId"in ke&&Pe.id===ke.artifactId),className:pt.tabIconSvg}):_y(ke)==="subagent"?a.jsx(l0n,{}):_y(ke)==="monitor"?a.jsx(Yve,{className:pt.tabIconSvg,strokeWidth:1.6}):_y(ke)==="shell"?a.jsx(Y2,{className:pt.tabIconSvg,strokeWidth:1.6}):_y(ke)==="side_task"?a.jsx(Aj,{className:pt.tabIconSvg,strokeWidth:1.6}):ke.kind==="web_preview"?a.jsx(hT,{className:pt.tabIconSvg}):ke.kind==="terminal"?a.jsx(Y2,{className:pt.tabIconSvg,strokeWidth:1.6}):_y(ke)==="image"?a.jsx(UUe,{className:pt.tabIconSvg,strokeWidth:1.6}):ke.kind==="context_usage"?a.jsx(WP,{className:pt.tabIconSvg,strokeWidth:1.6}):ke.kind==="token_usage"?a.jsx(UG,{className:pt.tabIconSvg,strokeWidth:1.6}):ke.kind==="trajectory"?a.jsx(GO,{className:pt.tabIconSvg,strokeWidth:1.6}):a.jsx(u0n,{})}),a.jsx("span",{className:pt.tabTitle,"data-web-shell-session-title":!0,children:a.jsx("span",{className:pt.tabTitleInner,children:ke.title})})]}),a.jsx("button",{type:"button",className:pt.tabCloseButton,onClick:()=>m(ke.id),"aria-label":`Close ${ke.title}`,title:"Close",children:a.jsx(c0n,{})})]},ke.id))}),a.jsxs("div",{className:pt.headerActions,children:[ne&&a.jsxs(Z0,{modal:!1,children:[a.jsx(Vg,{asChild:!0,children:a.jsx("button",{type:"button",className:`${pt.iconButton} ${pt.addButton}`,"aria-label":he("rightPanel.add"),title:he("rightPanel.add"),children:a.jsx(Qf,{className:pt.toolbarIcon})})}),a.jsxs(Gg,{align:"end",className:"w-64",children:[je&&a.jsxs(yi,{disabled:!w||!y,onSelect:y,children:[a.jsx(GF,{}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("turnOutputs.review")})]}),je&&ot&&a.jsx(ax,{}),ot&&a.jsxs(yi,{disabled:L,onSelect:R,children:[a.jsx(Aj,{className:pt.sideTaskNewIcon,strokeWidth:1.6,"aria-hidden":"true"}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("sideTask.create")})]}),Ie&&(je||ot)&&a.jsx(ax,{}),Ie&&a.jsxs(yi,{onSelect:()=>x?.(),children:[a.jsx(Y2,{className:pt.sideTaskNewIcon,strokeWidth:1.6,"aria-hidden":"true"}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("terminal.title")})]}),ue&&a.jsxs(yi,{onSelect:S,children:[a.jsx(hT,{className:pt.sideTaskNewIcon}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("webPreview.title")})]}),W&&a.jsxs(yi,{onSelect:()=>k?.(),children:[a.jsx(GO,{className:pt.sideTaskNewIcon,strokeWidth:1.6,"aria-hidden":"true"}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("trajectory.title")})]})]})]}),Q&&a.jsx("button",{type:"button",className:`${pt.iconButton} ${pt.fullscreenButton} ${G?pt.iconButtonActive:""}`,onClick:Q,"aria-label":he(G?"common.exitFullscreen":"common.fullscreen"),"aria-pressed":G,title:he(G?"common.exitFullscreen":"common.fullscreen"),children:G?a.jsx(qG,{className:pt.toolbarIcon,"aria-hidden":!0}):a.jsx(zG,{className:pt.toolbarIcon,"aria-hidden":!0})}),a.jsx("button",{type:"button",className:`${pt.iconButton} ${pt.panelToggleButton}`,onClick:ge,"aria-label":he("chatHeader.toggleRightPanel"),"aria-pressed":"true",title:he("chatHeader.toggleRightPanel"),children:a.jsx(Hve,{className:pt.panelToggleIcon})})]})]}),a.jsxs("div",{className:`${pt.body} ${Ae?.kind==="side_task"?pt.bodySideTask:""}`.trim(),children:[n.filter(ke=>ke.kind==="web_preview").map(ke=>a.jsx("div",{className:"h-full",hidden:ke.id!==Ae?.id,children:a.jsx(lmn,{state:ke,onChange:Pe=>I?.(ke.id,Pe)})},ke.id)),n.filter(ke=>ke.kind==="terminal").map(ke=>a.jsx("div",{className:`${pt.terminalPane} ${ke.id===Ae?.id?"":pt.terminalPaneHidden}`.trim(),"aria-hidden":ke.id===Ae?.id?void 0:!0,children:a.jsx(amn,{terminalId:ke.id,cwd:ke.workspaceCwd??l,active:ke.id===Ae?.id,enabled:ke.initialized!==!1})},ke.id)),Ze&&a.jsxs("button",{type:"button",className:pt.attachmentPreviewButton,onClick:()=>ae(Tt?void 0:Ae?.id),"aria-label":he(Tt?"attachment.showSource":"attachment.showPreview"),"aria-pressed":Tt,children:[Tt?a.jsx(PHe,{"aria-hidden":!0}):a.jsx(Pve,{"aria-hidden":!0}),he(Tt?"attachment.showSource":"attachment.showPreview")]}),u&&!Ae?a.jsxs("div",{className:"flex flex-col gap-4 p-5","data-testid":"right-panel-loading-skeleton",role:"status","aria-label":he("common.loading"),children:[a.jsx(ow,{className:"h-5 w-2/5"}),a.jsx(ow,{className:"h-32 w-full"}),a.jsx(ow,{className:"h-4 w-4/5"}),a.jsx(ow,{className:"h-4 w-3/5"})]}):Ae?.kind==="terminal"||Ae?.kind==="web_preview"?null:Ae?Ae.kind==="pending"?a.jsx("div",{className:pt.empty,role:Ae.loadError?"alert":"status",children:Ae.loadError??he("common.loading")}):Ae.kind==="workflow"?Ae.sessionId?a.jsx(tdn,{tasks:Y,loading:Z,error:K,onOpenAgent:B}):q?a.jsx(Udn,{...q}):a.jsx("div",{className:pt.empty,children:he("workflow.empty.title")}):bue(Ae)&&(Ae.kind!=="scheduled_task"||Ae.task.durable)&&(Ae.kind!=="file"||!Ae.previewOnly)&&(Ae.kind!=="artifact"||be?.metadata?.artifactType!=="web_preview_snapshot")&&!Ke?a.jsx("div",{className:pt.empty,role:"alert",children:he("workspace.notFoundDescription")}):Ae.kind==="review"?a.jsx(f0n,{changes:Ae.changes??r,selectedPath:Ae.selectedPath??o,workspaceCwd:Ae.workspaceCwd??l,onOpenFilePreview:ke=>g(ke,Ae.workspaceCwd??l,Ae.workspaceId),onDownloadFile:(ke,Pe)=>GP(Ke,ke.path,dVe(ke.path),Pe),onDownloadError:ke=>{const Pe=he("common.downloadFailed",{message:Iu(ke)});V?V(new Error(Pe,{cause:ke}),Pe):console.error(Pe,ke)}}):Ae.kind==="file"?Ae.attachmentId&&!Ae.previewData&&Ae.previewContent===void 0?a.jsx("div",{className:pt.empty,role:Ae.loadError?"alert":"status",children:Ae.loadError??he("common.loading")}):Ae.sourcePreview&&Ae.previewData&&ub(Ae.previewMimeType||Ae.previewData.type)!=="application/pdf"&&!i4(Ae.previewMimeType||Ae.previewData.type,Ae.workspacePath)?a.jsx(SRe,{data:Ae.previewData,title:Ae.title,image:!!FS(Ae.workspacePath)&&Ae.previewData.type.startsWith("image/")}):a.jsx(oD,{workspacePath:Ae.workspacePath,artifactVersion:String(Ae.previewVersion??0),workspaceActions:Ke,previewContent:Ae.previewContent,previewData:Ae.previewData,previewMimeType:Ae.previewMimeType,previewOnly:Ae.previewOnly,previewKind:Ve||Ae.previewOnly&&!Tt?"source":void 0},Ae.id):Ae.kind==="source"?a.jsx(A0n,{tab:Ae},Ae.id):Ae.kind==="artifact"?a.jsx(d0n,{artifacts:t,artifactId:Ae.artifactId,sourceSessionId:Ae.sourceSessionId,workspaceActions:Ke,previewContent:Ae.previewContent,loading:c,error:h},Ae.id):Ae.kind==="subagent"?ie?null:a.jsx(Oun,{sessionId:Ae.sessionId,rootToolCallId:Ae.rootToolCallId,initialRootTool:Ae.rootTool,workspaceCwd:Ae.workspaceCwd??l,onRightPanelOpen:F,onArtifactsChange:H,onOpenSubagent:$,onError:V}):Ae.kind==="monitor"?a.jsx(Owt,{task:Ae.task,actions:Ae.sessionActions},Ae.id):Ae.kind==="shell"?a.jsx($wt,{task:Ae.task,actions:Ae.sessionActions},Ae.id):Ae.kind==="side_task"?a.jsx(sdn,{tabId:Ae.id,sessionId:Ae.sessionId,parentSessionId:Ae.parentSessionId,workspaceCwd:Ae.workspaceCwd??l,title:Ae.title,shouldNameFromFirstPrompt:Ae.nameFromFirstPrompt,initialPrompt:Ae.initialPrompt,createSession:M??o0n,onCreated:O??s0n,onTitleChange:P??r0n,onRightPanelOpen:F,onArtifactsChange:H,onError:V,sessionWorkflowEnabled:J,onImageIngestionNotice:te},Ae.id):Ae.kind==="image"?Ae.src?a.jsxs("div",{className:pt.imagePreviewWrap,children:[a.jsx("img",{src:Ae.src,alt:Ae.alt??Ae.title,className:pt.imagePreview}),a.jsx("a",{className:pt.imageDownloadButton,href:Ae.src,download:i0n(Ae.src),"aria-label":he("common.download"),title:he("common.download"),children:a.jsx(Vy,{size:16,strokeWidth:1.8})})]}):a.jsx("div",{className:pt.empty,role:Ae.loadError?"alert":"status",children:Ae.loadError??he("common.loading")}):Ae.kind==="context_usage"?a.jsx(Qgn,{controls:e?.[Ae.sessionId],sessionActions:Ae.sessionActions,sessionId:Ae.sessionId},Ae.id):Ae.kind==="trajectory"?a.jsx(qgn,{loadPage:Ae.loadPage},Ae.id):Ae.kind==="token_usage"?a.jsx(Ymn,{sessionActions:Ae.sessionActions,sessionId:Ae.sessionId},Ae.id):a.jsx(h0n,{task:Ae.task,actions:Ke},Ae.id):a.jsxs("div",{className:pt.emptyActions,"data-testid":"right-panel-empty-actions",children:[E.includes("review")&&a.jsxs("button",{type:"button",className:pt.emptyAction,disabled:!w||!y,onClick:y,children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(GF,{})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("turnOutputs.review")}),a.jsx("span",{className:pt.emptyActionHint,children:he("turnOutputs.reviewLatest")}),a.jsx(Bl,{className:pt.emptyActionChevron,strokeWidth:1.6,"aria-hidden":"true"})]}),E.includes("sideTask")&&A&&R&&(j.length===0?a.jsxs("button",{type:"button",className:pt.emptyAction,disabled:L,"aria-busy":L,onClick:R,children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(Aj,{strokeWidth:1.6})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("sideTask.title")}),a.jsx("span",{className:pt.emptyActionHint,children:he("sideTask.description")}),a.jsx(Bl,{className:pt.emptyActionChevron,strokeWidth:1.6,"aria-hidden":"true"})]}):a.jsxs(Z0,{open:ve,onOpenChange:ye,modal:!1,children:[a.jsx(Vg,{asChild:!0,children:a.jsxs("button",{type:"button",className:pt.emptyAction,"aria-expanded":ve,onMouseEnter:Te,onMouseLeave:Ne,children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(Aj,{strokeWidth:1.6})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("sideTask.title")}),a.jsx("span",{className:pt.emptyActionHint,children:he("sideTask.description")}),a.jsx(Bl,{className:pt.emptyActionChevron,strokeWidth:1.6,"aria-hidden":"true"})]})}),a.jsxs(Gg,{align:"end",className:"w-80",onMouseEnter:Te,onMouseLeave:Ne,children:[j.map(ke=>a.jsxs(yi,{onSelect:()=>N?.(ke),children:[a.jsx("span",{className:pt.sideTaskListTitle,children:ke.title}),ke.updatedAt&&a.jsx("span",{className:pt.sideTaskListTime,children:EA(ke.updatedAt,he)})]},ke.sessionId)),a.jsx(ax,{}),a.jsxs(yi,{onSelect:R,children:[a.jsx(kHe,{className:pt.sideTaskNewIcon,strokeWidth:1.6,"aria-hidden":"true"}),a.jsx("span",{className:pt.sideTaskListTitle,children:he("sideTask.new")})]})]})]})),ue&&a.jsxs("button",{type:"button",className:pt.emptyAction,onClick:S,children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(hT,{strokeWidth:1.6})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("webPreview.title")}),a.jsx("span",{className:pt.emptyActionHint,children:he("webPreview.openHint")}),a.jsx(Bl,{className:pt.emptyActionChevron,"aria-hidden":"true"})]}),W&&a.jsxs("button",{type:"button",className:pt.emptyAction,onClick:()=>k?.(),"data-testid":"right-panel-open-trajectory",children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(GO,{strokeWidth:1.6})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("trajectory.title")}),a.jsx("span",{className:pt.emptyActionHint,children:he("trajectory.description")}),a.jsx(Bl,{className:pt.emptyActionChevron,"aria-hidden":"true"})]}),x&&a.jsxs("button",{type:"button",className:pt.emptyAction,onClick:()=>x(),children:[a.jsx("span",{className:pt.emptyActionIcon,"aria-hidden":"true",children:a.jsx(Y2,{strokeWidth:1.6})}),a.jsx("span",{className:pt.emptyActionTitle,children:he("terminal.title")}),a.jsx("span",{className:pt.emptyActionHint,children:he("terminal.open")}),a.jsx(Bl,{className:pt.emptyActionChevron,strokeWidth:1.6,"aria-hidden":"true"})]})]})]})]})}function l0n(){return a.jsxs("svg",{className:pt.tabIconSvg,viewBox:"0 0 24 24",fill:"none",focusable:"false","aria-hidden":"true",children:[a.jsx("circle",{cx:"12",cy:"8",r:"3",stroke:"currentColor",strokeWidth:"1.6"}),a.jsx("path",{d:"M6.5 19c.7-3.1 2.5-4.7 5.5-4.7s4.8 1.6 5.5 4.7",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})]})}function c0n(){return a.jsx("svg",{className:pt.tabCloseIcon,viewBox:"0 0 16 16",fill:"none",focusable:"false","aria-hidden":"true",children:a.jsx("path",{d:"m4.5 4.5 7 7M11.5 4.5l-7 7",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round"})})}function GF(){return a.jsxs("svg",{className:pt.tabIconSvg,viewBox:"0 0 24 24",fill:"none",focusable:"false",children:[a.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",stroke:"currentColor",strokeWidth:"1.6"}),a.jsx("path",{d:"M9 9.5h6M12 6.5v6",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"}),a.jsx("path",{d:"M9 16h6",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"})]})}function u0n(){return a.jsxs("svg",{className:pt.tabIconSvg,viewBox:"0 0 24 24",fill:"none",focusable:"false",children:[a.jsx("rect",{x:"4",y:"4",width:"16",height:"16",rx:"3",stroke:"currentColor",strokeWidth:"1.8"}),a.jsx("path",{d:"M12 8v4l3 2",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})]})}function d0n({artifacts:e,artifactId:t,sourceSessionId:n,workspaceActions:s,previewContent:r,loading:o,error:i}){const l=e.find(c=>c.id===t);return l?a.jsx(S0n,{artifact:l,sourceSessionId:n,workspaceActions:s,previewContent:r}):o?a.jsx("div",{className:pt.empty,children:"Loading artifact..."}):i?a.jsx("div",{className:pt.empty,children:i}):a.jsx("div",{className:pt.empty,children:"Artifact not found."})}function h0n({task:e,actions:t}){const{t:n}=Ct(),[s,r]=d.useState(null),[o,i]=d.useState(!0),[l,c]=d.useState(null),[u,h]=d.useState(""),[f,m]=d.useState(e.prompt),[g,w]=d.useState(()=>M1(e.cron)),[y,x]=d.useState(!1),[k,_]=d.useState(!1),[S,I]=d.useState(!1),[E,A]=d.useState(!1),[j,L]=d.useState(null),R=d.useRef(0),N=d.useRef(0),M=d.useRef({actions:t,taskId:e.id,workspaceId:e.workspaceId});M.current={actions:t,taskId:e.id,workspaceId:e.workspaceId};const O=d.useCallback((he,ve,ye,_e)=>{const ae=M.current;return he===R.current&&ae.actions===ve&&ae.taskId===ye&&ae.workspaceId===_e},[]),P=d.useCallback((he,ve,ye,_e)=>{const ae=M.current;return he===N.current&&ae.actions===ve&&ae.taskId===ye&&ae.workspaceId===_e},[]);d.useEffect(()=>()=>{R.current+=1,N.current+=1},[]),d.useEffect(()=>{I(!1),A(!1),L(null)},[t,e.id,e.workspaceId]);const F=d.useCallback(async()=>{const he=++R.current,ve=++N.current,ye=e.id,_e=e.workspaceId;if(!e.durable||!t){r(null),h(""),m(e.prompt),w(M1(e.cron)),c(null),i(!1);return}i(!0),c(null);try{const ae=await t.listScheduledTasks(_e);if(!O(he,t,ye,_e))return;const Se=ae.find(Te=>Te.id===e.id)??null;r(Se),Se?(h(Se.name??""),m(Se.prompt),w(M1(Se.cron))):(h(""),m(e.prompt),w(M1(e.cron)))}catch(ae){P(ve,t,ye,_e)&&c(ae instanceof Error?ae.message:String(ae))}finally{P(ve,t,ye,_e)&&i(!1)}},[t,P,O,e.cron,e.durable,e.id,e.prompt,e.workspaceId]);d.useEffect(()=>{F()},[F]);const H=!e.durable,$=e.durable&&!o&&!l&&!s,Y=!!s,Z=s?.name||s?.prompt||e.title,K=s?.prompt??e.prompt,B=s?.cron??e.cron,V=s?.recurring??e.recurring,J=s?.enabled,q=d.useCallback(()=>{s&&(h(s.name??""),m(s.prompt),w(M1(s.cron)),L(null),x(!0))},[s]),te=d.useCallback(()=>{x(!1),L(null),s&&(h(s.name??""),m(s.prompt),w(M1(s.cron)))},[s]),ie=d.useCallback(async()=>{if(!s||!t)return;const he=i9(g);if(!he){L(n("scheduledTasks.error.invalidSchedule"));return}if(f.trim().length===0){L(n("scheduledTasks.error.emptyPrompt"));return}const ve=++R.current,ye=e.id,_e=e.workspaceId;A(!0),L(null);try{const ae=await t.updateScheduledTask(s.id,{cron:he,prompt:f.trim(),name:u.trim()||null},_e);if(!O(ve,t,ye,_e))return;r(ae),h(ae.name??""),m(ae.prompt),w(M1(ae.cron)),x(!1)}catch(ae){O(ve,t,ye,_e)&&L(ae instanceof Error?ae.message:String(ae))}finally{O(ve,t,ye,_e)&&A(!1)}},[t,g,O,s,u,f,n,e.id,e.workspaceId]),ge=d.useCallback(async()=>{if(!s||!t)return;const he=++R.current,ve=e.id,ye=e.workspaceId;I(!0),L(null);try{const _e=await t.updateScheduledTask(s.id,{enabled:!s.enabled},ye);if(!O(he,t,ve,ye))return;r(_e)}catch(_e){O(he,t,ve,ye)&&L(_e instanceof Error?_e.message:String(_e))}finally{O(he,t,ve,ye)&&I(!1)}},[t,O,s,e.id,e.workspaceId]),re=d.useCallback(async()=>{if(!s||!t)return;const he=++R.current,ve=e.id,ye=e.workspaceId;I(!0),L(null);try{if(await t.deleteScheduledTask(s.id,ye),!O(he,t,ve,ye))return;r(null),_(!1)}catch(_e){O(he,t,ve,ye)&&L(_e instanceof Error?_e.message:String(_e))}finally{O(he,t,ve,ye)&&I(!1)}},[t,O,s,e.id,e.workspaceId]),G=i9(g),Q=G?BT(G,n):null;return a.jsxs("div",{className:pt.detail,children:[o&&a.jsx("div",{className:pt.empty,children:n("scheduledTasks.loading")}),l&&a.jsx("div",{className:rn.loadError,children:l}),$&&a.jsx("div",{className:pt.empty,children:n("scheduledTasks.deletedSnapshot")}),H&&a.jsx("div",{className:pt.empty,children:n("scheduledTasks.sessionScopedSnapshot")}),!$&&a.jsx("div",{className:pt.section,children:a.jsxs("div",{className:pt.fieldGrid,children:[a.jsx("span",{className:pt.fieldLabel,children:n("scheduledTasks.name")}),a.jsx("span",{className:pt.fieldValue,children:Z}),a.jsx("span",{className:pt.fieldLabel,children:n("scheduledTasks.taskId")}),a.jsx("span",{className:pt.fieldValue,children:e.id}),a.jsx("span",{className:pt.fieldLabel,children:n("scheduledTasks.schedule")}),a.jsx("span",{className:pt.fieldValue,children:BT(B,n)}),a.jsx("span",{className:pt.fieldLabel,children:"Cron"}),a.jsx("span",{className:pt.fieldValue,children:B}),a.jsx("span",{className:pt.fieldLabel,children:n("scheduledTasks.type")}),a.jsx("span",{className:pt.fieldValue,children:n(V?"scheduledTasks.repeats":"scheduledTasks.runsOnce")}),J!==void 0&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:pt.fieldLabel,children:n("scheduledTasks.status")}),a.jsx("span",{className:pt.fieldValue,children:n(J?"scheduledTasks.enable":"scheduledTasks.disable")})]})]})}),!$&&a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:"Prompt"}),a.jsx("div",{className:pt.description,children:K})]}),j&&a.jsx("div",{className:rn.formError,children:j}),a.jsxs("div",{className:pt.actionsRow,children:[a.jsx("button",{type:"button",className:rn.primaryButton,disabled:!Y||S,onClick:q,children:n("scheduledTasks.edit")}),a.jsx("button",{type:"button",className:rn.secondaryButton,disabled:!Y||S,onClick:()=>void ge(),children:s?.enabled?n("scheduledTasks.disable"):n("scheduledTasks.enable")}),a.jsx("button",{type:"button",className:rn.secondaryButton,disabled:!Y||S,onClick:()=>_(!0),children:n("scheduledTasks.delete")})]}),k&&s&&a.jsx(Wa,{title:n("scheduledTasks.deleteConfirmTitle"),size:"sm",onClose:()=>_(!1),children:a.jsxs("div",{className:rn.formFields,children:[a.jsx("div",{className:pt.description,children:n("scheduledTasks.deleteConfirm",{name:s.name||s.prompt})}),j&&a.jsx("div",{className:rn.formError,children:j}),a.jsxs("div",{className:rn.formActions,children:[a.jsx("button",{type:"button",className:rn.secondaryButton,onClick:()=>_(!1),disabled:S,children:n("scheduledTasks.cancel")}),a.jsx("button",{type:"button",className:rn.primaryButton,onClick:()=>void re(),disabled:S,children:n("scheduledTasks.delete")})]})]})}),y&&a.jsx(Wa,{title:n("scheduledTasks.editTitle"),size:"md",onClose:te,children:a.jsxs("div",{className:rn.formFields,children:[a.jsxs("label",{className:rn.field,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.name")}),a.jsx("input",{className:rn.input,type:"text",value:u,maxLength:200,placeholder:n("scheduledTasks.namePlaceholder"),onChange:he=>h(he.target.value)})]}),a.jsxs("label",{className:rn.field,children:[a.jsxs("span",{className:rn.fieldLabel,children:[n("scheduledTasks.prompt"),a.jsx("span",{className:rn.required,children:"*"})]}),a.jsx("textarea",{className:rn.textarea,value:f,rows:4,maxLength:1e5,placeholder:n("scheduledTasks.promptPlaceholder"),onChange:he=>m(he.target.value)})]}),a.jsxs("div",{className:rn.scheduleRow,children:[a.jsxs("label",{className:rn.field,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.frequency")}),a.jsx("select",{className:rn.select,value:g.frequency,onChange:he=>{const ve=he.target.value;w(ye=>({...ye,frequency:ve,...ve==="hourly"?{time:"00:00"}:{}}))},children:t0n.map(he=>a.jsx("option",{value:he,children:n(`scheduledTasks.freq.${he}`)},he))})]}),(g.frequency==="daily"||g.frequency==="weekdays"||g.frequency==="weekly")&&a.jsxs("label",{className:rn.field,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.time")}),a.jsx("input",{className:rn.input,type:"time",value:g.time,onChange:he=>w(ve=>({...ve,time:he.target.value}))})]}),g.frequency==="weekly"&&a.jsxs("label",{className:rn.field,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.weekday")}),a.jsx("select",{className:rn.select,value:g.weekday,onChange:he=>w(ve=>({...ve,weekday:Number(he.target.value)})),children:n("scheduledTasks.weekdayNames").split(",").map((he,ve)=>a.jsx("option",{value:ve,children:he},ve))})]}),g.frequency==="minutes"&&a.jsxs("label",{className:rn.field,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.interval")}),a.jsx("select",{className:rn.select,value:g.minuteInterval,onChange:he=>w(ve=>({...ve,minuteInterval:Number(he.target.value)})),children:n0n.map(he=>a.jsx("option",{value:he,children:he},he))})]}),g.frequency==="custom"&&a.jsxs("label",{className:`${rn.field} ${rn.fieldGrow}`,children:[a.jsx("span",{className:rn.fieldLabel,children:n("scheduledTasks.cron")}),a.jsx("input",{className:rn.input,type:"text",value:g.customCron,spellCheck:!1,placeholder:"0 9 * * 1-5",onChange:he=>w(ve=>({...ve,customCron:he.target.value}))})]})]}),a.jsx("div",{className:rn.preview,children:Q?a.jsxs(a.Fragment,{children:[a.jsx("span",{className:rn.previewLabel,children:Q}),a.jsx("code",{className:rn.previewCron,children:G})]}):a.jsx("span",{className:rn.previewInvalid,children:n("scheduledTasks.error.invalidSchedule")})}),j&&a.jsx("div",{className:rn.formError,children:j}),a.jsxs("div",{className:rn.formActions,children:[a.jsx("button",{type:"button",className:rn.secondaryButton,onClick:te,disabled:E,children:n("scheduledTasks.cancel")}),a.jsx("button",{type:"button",className:rn.primaryButton,onClick:()=>void ie(),disabled:E,children:n(E?"scheduledTasks.saving":"scheduledTasks.save")})]})]})})]})}function f0n({changes:e,selectedPath:t,workspaceCwd:n,onOpenFilePreview:s,onDownloadFile:r,onDownloadError:o}){const{t:i}=Ct(),[l,c]=d.useState(!1),[u,h]=d.useState(!0),[f,m]=d.useState(!1),[g,w]=d.useState(520),y=d.useRef(g),x=d.useRef(null),k=d.useRef(null),[_,S]=d.useState(null),[I,E]=d.useState(()=>new Set),A=d.useRef(!0);d.useEffect(()=>(A.current=!0,()=>{A.current=!1}),[]);const j=l,L=d.useMemo(()=>_0n(e,n),[e,n]);d.useEffect(()=>{S(t)},[t]),d.useEffect(()=>{y.current=g},[g]),d.useEffect(()=>{const P=x.current;if(!P)return;const F=()=>{m(P.clientWidth<e0n)};F();const H=new ResizeObserver(F);return H.observe(P),()=>H.disconnect()},[u]),d.useEffect(()=>()=>k.current?.(),[]);const R=d.useCallback(P=>{const F=x.current;if(!F)return;P.preventDefault();const H=P.currentTarget;H.setPointerCapture(P.pointerId);const $=P.clientX,Y=y.current,Z=F.getBoundingClientRect().width,K=Math.max(180,Z-180),B=document.body.style.cursor,V=document.body.style.userSelect;let J=Y,q=null;document.body.style.cursor="col-resize",document.body.style.userSelect="none";const te=()=>{q=null,w(J)},ie=G=>{J=Math.min(K,Math.max(180,Y+(G.clientX-$))),q===null&&(q=window.requestAnimationFrame(te))};let ge=()=>{};const re=G=>{k.current=null,q!==null&&(window.cancelAnimationFrame(q),q=null),G&&w(J),H.hasPointerCapture(P.pointerId)&&H.releasePointerCapture(P.pointerId),document.body.style.cursor=B,document.body.style.userSelect=V,window.removeEventListener("pointermove",ie),window.removeEventListener("pointerup",ge),window.removeEventListener("pointercancel",ge)};ge=()=>re(!0),k.current=()=>re(!1),window.addEventListener("pointermove",ie),window.addEventListener("pointerup",ge),window.addEventListener("pointercancel",ge)},[]);if(e.length===0)return a.jsx("div",{className:pt.empty,children:"No file changes to review."});const N=T_e(e),M=P=>{S(F=>F===P?null:P)},O=async P=>{if(!I.has(P.path)){E(F=>new Set(F).add(P.path));try{await r(P,()=>!A.current)}catch(F){A.current&&o(F)}finally{E(F=>{const H=new Set(F);return H.delete(P.path),H})}}};return a.jsxs("div",{className:pt.review,children:[a.jsxs("div",{className:pt.reviewToolbar,children:[a.jsxs("div",{className:pt.reviewToolbarTitle,children:[a.jsx("span",{children:i("turnOutputs.previousTurn")}),a.jsx(Y9,{additions:N?.additions,deletions:N?.deletions,className:pt.lineStats,additionsClassName:pt.additions,deletionsClassName:pt.deletions})]}),a.jsxs("div",{className:pt.reviewToolbarActions,children:[a.jsxs("button",{type:"button",className:pt.reviewTotalsButton,onClick:()=>h(P=>!P),"aria-expanded":u,children:[a.jsx("span",{children:i("turnOutputs.fileCount",{count:e.length})}),a.jsx("span",{className:[pt.chevron,u?pt.chevronOpen:""].filter(Boolean).join(" "),"aria-hidden":"true",children:a.jsx(_ue,{})})]}),a.jsx("button",{type:"button",className:[pt.iconButton,l?pt.iconButtonActive:""].filter(Boolean).join(" "),onClick:()=>c(P=>!P),"aria-label":i(l?"turnOutputs.closeFileTree":"turnOutputs.openFileTree"),title:i(l?"turnOutputs.closeFileTree":"turnOutputs.openFileTree"),children:l?a.jsx(x0n,{}):a.jsx(b0n,{})})]})]}),u&&a.jsxs("div",{ref:x,className:[pt.reviewContent,j?"":pt.reviewContentListOnly,j&&f?pt.reviewContentStacked:""].filter(Boolean).join(" "),style:{"--review-list-width":`${g}px`},children:[a.jsx("div",{className:[pt.reviewList,_?pt.reviewListWithExpanded:""].filter(Boolean).join(" "),children:e.map(P=>{const F=_===P.path,H=E_e(P.path),$=YIt(P.path);return a.jsxs("div",{className:[pt.reviewItem,F?pt.reviewItemExpanded:""].filter(Boolean).join(" "),children:[a.jsxs("div",{className:pt.reviewRow,"data-selected":P.path===t||void 0,children:[a.jsx("button",{type:"button",className:pt.reviewRowToggle,onClick:()=>M(P.path),"aria-label":P.path,"aria-expanded":F}),a.jsx("span",{className:pt.fileIcon,children:_Re(P.path)}),a.jsxs("span",{className:pt.reviewFileName,children:[a.jsx(v0n,{path:AL(P.path,n),title:P.path}),H&&a.jsx("button",{type:"button",className:pt.reviewOpenButton,onClick:()=>s(P),title:`${i("turnOutputs.preview")} ${P.path}`,children:i("turnOutputs.preview")}),$&&a.jsx("button",{type:"button",className:pt.reviewOpenButton,onClick:()=>void O(P),title:`${i("common.download")} ${P.path}`,disabled:I.has(P.path),children:i(I.has(P.path)?"common.downloading":"common.download")})]}),a.jsx(Y9,{additions:P.additions,deletions:P.deletions,className:pt.lineStats,additionsClassName:pt.additions,deletionsClassName:pt.deletions}),a.jsx("span",{className:[pt.chevron,F?pt.chevronOpen:""].filter(Boolean).join(" "),"aria-hidden":"true",children:a.jsx(_ue,{})})]}),F&&a.jsx(p0n,{change:P})]},`${P.toolCallId}:${P.path}`)})}),j&&!f&&a.jsx("div",{className:pt.reviewSplitHandle,role:"separator","aria-orientation":"vertical",onPointerDown:R}),j&&a.jsx("div",{className:pt.tree,children:L.children.map(P=>a.jsx(bRe,{node:P,depth:0,selectedPath:t},P.path))})]})]})}function p0n({change:e}){if(e.diffs.length===0)return a.jsx("div",{className:pt.diffEmpty,children:"No diff available."});const t=m0n(e.diffs);return a.jsx("div",{className:pt.diffPreview,children:t.map((n,s)=>n.fileDiff&&!n.fullContent?a.jsx(gY,{diff:n.fileDiff},s):a.jsx(g0n,{oldText:n.oldText,newText:n.newText},s))})}function m0n(e){for(let t=e.length-1;t>=0;t--)if(e[t]?.fullContent)return e.slice(t);return e}function g0n({oldText:e,newText:t}){const n=d.useRef(null),[s,r]=d.useState(null),[o,i]=d.useState(null);return d.useEffect(()=>{const l=n.current;if(!l)return;const c=()=>r(l.clientWidth>=720);c();const u=new ResizeObserver(c);return u.observe(l),()=>u.disconnect()},[]),d.useEffect(()=>{const l=n.current;if(!l||s===null)return;l.replaceChildren(),i(null);let c=!1,u=null;const h=[vTe,js.editable.of(!1),ua.readOnly.of(!0),js.lineWrapping],f={scanLimit:1e3,timeout:500},m={margin:3,minSize:8};return Je(async()=>{const{MergeView:g,unifiedMergeView:w}=await import("./index-DLqoza9Y.js");return{MergeView:g,unifiedMergeView:w}},[]).then(({MergeView:g,unifiedMergeView:w})=>{if(!c)try{if(s){u=new g({a:{doc:e,extensions:h},b:{doc:t,extensions:h},parent:l,highlightChanges:!0,gutter:!0,revertControls:void 0,collapseUnchanged:m,diffConfig:f});return}u=new js({doc:t,extensions:[...h,w({original:e,highlightChanges:!0,gutter:!0,mergeControls:!1,allowInlineDiffs:!0,collapseUnchanged:m,diffConfig:f})],parent:l})}catch(y){c||i(y instanceof Error?y.message:String(y))}}).catch(g=>{c||i(g instanceof Error?g.message:String(g))}),()=>{c=!0,u?.destroy()}},[s,t,e]),a.jsxs("div",{className:pt.codeMirrorDiffWrap,children:[a.jsx("div",{ref:n,className:pt.codeMirrorDiff}),o&&a.jsxs("div",{className:pt.diffError,children:["Diff unavailable: ",o]})]})}function bRe({node:e,depth:t,selectedPath:n}){const s=!!e.file,[r,o]=d.useState(!0),i=[pt.treeRow,s?pt.treeFile:pt.treeFolder].filter(Boolean).join(" "),l={paddingLeft:10+t*18,"--tree-row-line-left":`${19+Math.max(0,t-1)*18}px`},c={"--tree-children-line-left":`${19+t*18}px`},u=a.jsxs(a.Fragment,{children:[a.jsx("span",{className:pt.treeTwisty,children:!s&&a.jsx("span",{className:[pt.treeChevron,r?"":pt.treeChevronClosed].filter(Boolean).join(" "),children:a.jsx(k0n,{})})}),a.jsxs("span",{className:pt.treeContent,children:[s&&a.jsx("span",{className:pt.fileIcon,children:_Re(e.path)}),a.jsx("span",{className:pt.treeName,children:e.name})]}),e.file?.isArtifact&&a.jsx("span",{className:pt.reviewBadge,children:"artifact"})]});return a.jsxs("div",{className:pt.treeNode,children:[s?a.jsx("div",{className:i,"data-selected":e.file?.path===n||void 0,"data-depth":t,style:l,title:e.path,children:u}):a.jsx("button",{type:"button",className:i,"data-depth":t,style:l,title:e.path,"aria-expanded":r,onClick:()=>o(h=>!h),children:u}),!s&&r&&e.children.length>0&&a.jsx("div",{className:pt.treeChildren,style:c,children:e.children.map(h=>a.jsx(bRe,{node:h,depth:t+1,selectedPath:n},h.path))})]})}function v0n({path:e,title:t}){const n=d.useRef(null),[s,r]=d.useState(()=>xRe(e));return d.useLayoutEffect(()=>{const o=n.current;if(!o)return;const i=()=>r(w0n(e,o));i();const l=new ResizeObserver(i);return l.observe(o),()=>l.disconnect()},[e]),a.jsxs("span",{ref:n,className:pt.reviewPath,title:t??e,children:[s.prefix&&a.jsx("span",{className:pt.pathPrefix,children:s.prefix}),a.jsx("span",{className:pt.pathFileName,children:s.leaf})]})}function xRe(e){const t=e.lastIndexOf("/");return t<0?{prefix:"",leaf:e}:{prefix:e.slice(0,t+1),leaf:e.slice(t+1)}}let kue=null;function w0n(e,t){const n=xRe(e),s=t.clientWidth;if(s<=0)return n;const r=y0n(t);if(r(e)<=s)return n;const o=e.split("/").filter(Boolean),i=o.at(-1)??e,l=r(i);if(o.length<=1||l+r(".../")>s)return{prefix:"",leaf:i};let c=".../";for(let u=1;u<o.length;u++){const f=`.../${o.slice(o.length-1-u,-1).join("/")}/`;if(r(f)+l>s)break;c=f}return{prefix:c,leaf:i}}function y0n(e){kue??=document.createElement("canvas");const t=kue.getContext("2d"),n=window.getComputedStyle(e);return t&&(t.font=[n.fontStyle,n.fontVariant,n.fontWeight,n.fontSize,n.fontFamily].join(" ")),s=>t?.measureText(s).width??s.length*8}function b0n(){return a.jsxs("svg",{className:pt.toolbarIcon,viewBox:"0 0 24 24",fill:"none",focusable:"false","aria-hidden":"true",children:[a.jsx("path",{d:"M3.5 7.5h6l1.6 2h9.4v8.2a2 2 0 0 1-2 2h-13a2 2 0 0 1-2-2V7.5Z",stroke:"currentColor",strokeWidth:"1.7",strokeLinejoin:"round"}),a.jsx("path",{d:"M3.5 7.5V5.8a1.5 1.5 0 0 1 1.5-1.5h4l1.8 2.1h7.2a1.5 1.5 0 0 1 1.5 1.5v1.6",stroke:"currentColor",strokeWidth:"1.7",strokeLinejoin:"round"})]})}function x0n(){return a.jsxs("svg",{className:pt.toolbarIcon,viewBox:"0 0 24 24",fill:"none",focusable:"false","aria-hidden":"true",children:[a.jsx("path",{d:"M3.5 8.2V5.8A1.5 1.5 0 0 1 5 4.3h4l1.8 2.1h7.2a1.5 1.5 0 0 1 1.5 1.5v1.4",stroke:"currentColor",strokeWidth:"1.7",strokeLinejoin:"round"}),a.jsx("path",{d:"M4.8 19.7h12.9a2 2 0 0 0 1.9-1.4l2-7H6.4l-2.8 7.1a.9.9 0 0 0 1.2 1.3Z",stroke:"currentColor",strokeWidth:"1.7",strokeLinejoin:"round"})]})}function _ue(){return a.jsx("svg",{className:pt.chevronIcon,viewBox:"0 0 16 16",fill:"none",focusable:"false","aria-hidden":"true",children:a.jsx("path",{d:"m6 4 4 4-4 4",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round"})})}function k0n(){return a.jsx("svg",{className:pt.treeChevronIcon,viewBox:"0 0 16 16",fill:"none",focusable:"false","aria-hidden":"true",children:a.jsx("path",{d:"m4 6 4 4 4-4",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round"})})}function _0n(e,t){const n={name:"",path:"",children:[]};for(const s of e){const r=AL(s.path,t).split("/").filter(Boolean);let o=n;for(let i=0;i<r.length;i++){const l=r[i],c=r.slice(0,i+1).join("/");let u=o.children.find(h=>h.name===l);u||(u={name:l,path:c,children:[]},o.children.push(u)),i===r.length-1&&(u.file=s),o=u}}return kRe(n),n}function kRe(e){e.children.sort((t,n)=>!!t.file!=!!n.file?t.file?1:-1:t.name.localeCompare(n.name));for(const t of e.children)kRe(t)}function y8(e){return db(e).split("/").filter(Boolean).at(-1)??e}function _Re(e){const t=y8(e),n=t.includes(".")?t.split(".").pop()?.toLowerCase():"";return n?{css:"CSS",html:"HTML",js:"JS",json:"JSON",jsx:"JSX",md:"MD",ts:"TS",tsx:"TSX"}[n]??n.slice(0,3).toUpperCase():"FILE"}function S0n({artifact:e,sourceSessionId:t,workspaceActions:n,previewContent:s}){const{t:r}=Ct(),o=Hp(),i=iwe(e),l=N4(e.url)?e.url:void 0,c=e.metadata?.artifactType==="automation_snapshot",u=e.metadata?.artifactType==="code_review",h=e.storage==="workspace"&&!!e.workspacePath,f=owe(e);return e.metadata?.artifactType==="web_preview_snapshot"?a.jsx(cmn,{artifact:e,sourceSessionId:t}):u?e.status!=="available"?a.jsx(C0n,{status:e.status}):!h||!e.workspacePath?a.jsx(T0n,{}):a.jsx(bun,{workspacePath:e.workspacePath,artifactVersion:xte(e),workspaceActions:n}):h&&e.workspacePath?swe(e)?a.jsx(E0n,{artifact:e,workspaceActions:n}):a.jsx(oD,{workspacePath:e.workspacePath,artifactVersion:xte(e),workspaceActions:n,previewContent:s,previewSizeBytes:e.sizeBytes,imageMimeType:f,previewKind:I0n(e)?"html":R0n(e)?"markdown":f?"image":"source"}):a.jsxs("div",{className:pt.detail,children:[a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:c?"Automation Snapshot":"Artifact"}),a.jsxs("div",{className:pt.fieldGrid,children:[a.jsx(kp,{label:"Type",value:GG(e.kind,e.workspacePath)}),a.jsx(kp,{label:"Storage",value:e.storage}),a.jsx(kp,{label:"Status",value:e.status}),a.jsx(kp,{label:"Source",value:e.source}),a.jsx(kp,{label:"Size",value:VP(e.sizeBytes)}),a.jsx(kp,{label:"Created",value:e.createdAt}),a.jsx(kp,{label:"Updated",value:e.updatedAt}),e.toolName&&a.jsx(kp,{label:"Tool",value:e.toolName}),e.toolCallId&&a.jsx(kp,{label:"Tool call",value:e.toolCallId})]})]}),e.description&&a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:"Description"}),a.jsx("div",{className:pt.description,children:e.description})]}),c&&e.metadata&&a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:"Details"}),a.jsxs("div",{className:pt.fieldGrid,children:[C2(e.metadata,"automationId","Automation ID"),C2(e.metadata,"schedule","Schedule"),C2(e.metadata,"timezone","Timezone"),C2(e.metadata,"status","Status"),C2(e.metadata,"nextRunAt","Next run"),C2(e.metadata,"prompt","Prompt")]})]}),(i||l)&&a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:"Location"}),l?a.jsxs("div",{className:pt.locationRow,children:[a.jsx("a",{className:pt.link,href:l,target:"_blank",rel:"noopener noreferrer",onClick:m=>o(m,l),children:l}),a.jsx("a",{className:pt.openButton,href:l,target:"_blank",rel:"noopener noreferrer",onClick:m=>o(m,l),children:r("artifact.openLink")})]}):a.jsx("div",{className:pt.meta,children:i})]})]})}function C0n({status:e}){const{t}=Ct();return a.jsx("div",{className:pt.previewError,role:"alert",children:t("codeReview.unavailable",{status:e})})}function T0n(){const{t:e}=Ct();return a.jsx("div",{className:pt.previewError,role:"alert",children:e("codeReview.workspaceRequired")})}function I0n(e){const t=e.workspacePath?.toLowerCase()??"",n=ub(e.mimeType);return e.kind==="html"||t.endsWith(".html")||t.endsWith(".htm")||n==="text/html"}function R0n(e){const t=e.workspacePath?.toLowerCase()??"",n=ub(e.mimeType);return t.endsWith(".md")||t.endsWith(".markdown")||n==="text/markdown"}function E0n({artifact:e,workspaceActions:t}){const{t:n}=Ct(),[s,r]=d.useState(null),[o,i]=d.useState(!1),l=d.useRef(!0),c=iwe(e);d.useEffect(()=>(l.current=!0,()=>{l.current=!1}),[]);const u=async()=>{if(e.workspacePath){i(!0),r(null);try{await GP(t,e.workspacePath,e.mimeType,()=>!l.current)}catch(h){if(!l.current)return;r(h instanceof Error?h.message:String(h))}finally{l.current&&i(!1)}}};return a.jsx("div",{className:pt.detail,children:a.jsxs("div",{className:pt.section,children:[a.jsx("div",{className:pt.sectionTitle,children:n("common.download")}),a.jsxs("div",{className:pt.fieldGrid,children:[a.jsx(kp,{label:"Type",value:GG(e.kind,e.workspacePath)}),a.jsx(kp,{label:"Size",value:VP(e.sizeBytes)}),c?a.jsx(kp,{label:"Location",value:c}):null,e.status!=="available"&&e.status!=="changed"?a.jsx(kp,{label:"Status",value:e.status??"missing"}):null]}),a.jsx("div",{className:pt.downloadRow,children:a.jsx("button",{type:"button",className:pt.downloadButton,onClick:()=>{u()},disabled:o||e.status!=="available"&&e.status!=="changed",children:n(o?"common.downloading":"common.download")})}),s&&a.jsx("div",{className:pt.previewError,children:s})]})})}function A0n({tab:e}){const{t}=Ct(),n=el(),s=O4(e.workspaceCwd),r=s?.actions,o=Hp(),[i,l]=d.useState(0),[c,u]=d.useState(),[h,f]=d.useState(),[m,g]=d.useState(),w=e.source,y=w.locator,x=e.owner.isCurrent()&&n.sessionId===e.sourceSessionId&&n.capabilities?.features.includes("session_sources")&&s?.workspaceId===e.workspaceId&&(!!s||e.workspaceCwd===void 0&&y.type!=="workspace_file")&&(y.type!=="workspace_file"||w.workspaceCwd===n.workspaceCwd),k=y.type==="workspace_file"?y.workspacePath:y.type==="attachment"?y.attachmentId:"",_=/\.pdf$/i.test(k);if(d.useEffect(()=>{let I=!1;return u(void 0),f(void 0),g(void 0),!x||y.type==="url"?void 0:((async()=>{if(y.type==="attachment"){const A=await e.sessionActions.readAttachment(y.attachmentId);if(I||!e.owner.isCurrent())return;const j=Uint8Array.from(atob(A.data),L=>L.charCodeAt(0));u(new Blob([j],{type:A.mimeType}))}else if(_&&r){const A=await _4(r.readFileBytes,k,"application/pdf",{statFile:r.stat,isCancelled:()=>I||!e.owner.isCurrent()});!I&&e.owner.isCurrent()&&u(A)}})().catch(A=>{!I&&e.owner.isCurrent()&&f(Iu(A))}),()=>{I=!0})},[i,x,y,k,_,e.owner,e.sessionActions,r]),x&&y.type==="url")return a.jsxs("div",{className:"flex flex-col gap-3 p-4",children:[a.jsx("h3",{children:w.title}),w.description&&a.jsx("p",{children:w.description}),a.jsx("p",{className:"break-all text-sm text-muted-foreground",children:y.url}),N4(y.url)&&a.jsx("a",{className:"text-primary underline",href:y.url,target:"_blank",rel:"noopener noreferrer",onClick:I=>o(I,y.url),children:t("sources.openOriginal")})]});if(!x||!s&&y.type!=="attachment")return a.jsx("div",{className:pt.empty,role:"alert",children:t("sources.unavailable")});const S=y.type==="workspace_file"&&!_&&swe({workspacePath:k});return a.jsxs("div",{className:"flex h-full min-h-0 flex-1 flex-col",children:[a.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-border px-3 py-2",children:[a.jsx("span",{className:"truncate text-xs text-muted-foreground",title:k,children:k}),a.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[m&&a.jsx(Wt,{variant:"ghost",size:"icon-sm",asChild:!0,children:a.jsx("a",{href:m,download:w.title,"aria-label":`Download ${w.title}`,title:t("common.download"),children:a.jsx(Vy,{})})}),h&&a.jsx(Wt,{variant:"ghost",size:"sm",onClick:()=>l(I=>I+1),children:t("common.retry")})]})]}),h?a.jsx("div",{className:pt.previewError,role:"alert",children:h}):S?a.jsxs("div",{className:"p-4",children:[a.jsx("p",{children:t("attachment.previewUnsupported")}),a.jsx(Wt,{onClick:()=>void GP(r,k,"application/octet-stream",()=>!e.owner.isCurrent()).catch(I=>{e.owner.isCurrent()&&f(Iu(I))}),children:t("common.download")})]}):(y.type==="attachment"||_)&&!c?a.jsx("div",{className:pt.empty,role:"status",children:t("common.loading")}):c&&c.type!=="application/pdf"&&!i4(c.type,k)?a.jsx(SRe,{data:c,title:w.title,onDownloadUrl:g,showDownload:!1,image:!!FS(k)&&c.type.startsWith("image/")}):a.jsx("div",{className:"relative min-h-0 flex-1 overflow-auto",children:a.jsx(oD,{workspacePath:k,workspaceActions:r,onLoadError:f,previewData:c,previewOnly:y.type==="attachment",previewMimeType:c?.type,previewKind:/\.html?$/i.test(k)||ub(c?.type)==="text/html"?"source":void 0},i)})]})}function SRe({data:e,title:t,image:n,onDownloadUrl:s,showDownload:r=!0}){const[o,i]=d.useState();return d.useEffect(()=>{const l=URL.createObjectURL(e);return i(l),s?.(l),()=>URL.revokeObjectURL(l)},[e,s]),o?a.jsxs("div",{className:pt.imagePreviewWrap,children:[n?a.jsx("img",{className:pt.imagePreview,src:o,alt:t}):a.jsx(CRe,{name:t,mimeType:e.type,size:e.size}),r&&a.jsx("a",{href:o,download:t,"aria-label":`Download ${t}`,children:a.jsx(Vy,{})})]}):null}function oD({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewSizeBytes:r,previewData:o,previewMimeType:i,imageMimeType:l,previewKind:c,previewOnly:u,onLoadError:h}){if(o)return a.jsx(j0n,{workspacePath:e,workspaceActions:n,data:o,mimeType:i,previewKind:c,onLoadError:h});const f=e.toLowerCase(),m=l??FS(e),g=c??(f.endsWith(".html")||f.endsWith(".htm")?"html":f.endsWith(".md")||f.endsWith(".markdown")?"markdown":m?"image":"source");return g==="html"?a.jsx(L0n,{workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewSizeBytes:r,previewOnly:u,onLoadError:h}):g==="markdown"?a.jsx(O0n,{workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewSizeBytes:r,previewOnly:u,onLoadError:h}):g==="image"&&m?a.jsx(P0n,{workspacePath:e,artifactVersion:t,workspaceActions:n,mimeType:m,onLoadError:h}):a.jsx(TRe,{workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:u,onLoadError:h})}function j0n({workspacePath:e,workspaceActions:t,data:n,mimeType:s,previewKind:r,onLoadError:o}){const i=(s||n.type||"application/octet-stream").split(";",1)[0].trim().toLowerCase();return i==="application/pdf"?a.jsx(M0n,{data:n,mimeType:i,title:e}):i4(i,e)?a.jsx(N0n,{workspacePath:e,workspaceActions:t,data:n,previewKind:r,onLoadError:o}):a.jsx(CRe,{name:e,mimeType:i,size:n.size})}function N0n({workspacePath:e,workspaceActions:t,data:n,previewKind:s,onLoadError:r}){const{t:o}=Ct(),[i,l]=d.useState(),[c,u]=d.useState();return d.useEffect(()=>{const h=new FileReader;return l(void 0),u(void 0),h.onload=()=>l(String(h.result??"")),h.onerror=()=>{const f=o("attachment.readFailed");u(f),r?.(f)},h.readAsText(n),()=>{h.readyState===FileReader.LOADING&&h.abort()}},[n,r,o]),c?a.jsx("div",{className:pt.previewError,children:c}):i===void 0?a.jsx("div",{className:pt.empty,children:o("attachment.loadingFile")}):a.jsx(oD,{workspacePath:e,workspaceActions:t,previewContent:i,previewSizeBytes:n.size,previewOnly:!0,previewKind:s})}function M0n({data:e,mimeType:t,title:n}){const{t:s}=Ct(),[r,o]=d.useState();return d.useEffect(()=>{const i=URL.createObjectURL(e.type===t?e:new Blob([e],{type:t}));return o(i),()=>URL.revokeObjectURL(i)},[e,t]),r?a.jsx("iframe",{className:pt.pdfAttachmentPreview,src:r,title:`Preview ${n}`}):a.jsx("div",{className:pt.empty,children:s("attachment.loadingPreview")})}function CRe({name:e,mimeType:t,size:n}){const{t:s}=Ct();return a.jsxs("div",{className:pt.unsupportedAttachmentPreview,children:[a.jsx(U0,{name:e,mimeType:t,"aria-hidden":"true"}),a.jsx("div",{children:s("attachment.previewUnsupported")}),a.jsxs("div",{className:pt.unsupportedAttachmentMeta,children:[t," · ",VP(n)]})]})}function P0n({workspacePath:e,artifactVersion:t,workspaceActions:n,mimeType:s,onLoadError:r}){const[o,i]=d.useState(null),[l,c]=d.useState(null);return d.useEffect(()=>{let u=!1,h;return i(null),c(null),_4((f,m)=>n.readFileBytes(f,m),e,s,{statFile:f=>n.stat(f),isCancelled:()=>u}).then(f=>{u||(h=URL.createObjectURL(f),i(h))}).catch(f=>{if(u)return;const m=f instanceof Error?f.message:String(f);c(m),r?.(m)}),()=>{u=!0,h&&URL.revokeObjectURL(h)}},[t,s,r,n,e]),a.jsxs("div",{className:pt.imagePreviewWrap,children:[o?a.jsxs(a.Fragment,{children:[a.jsx("img",{className:pt.imagePreview,src:o,alt:y8(e)}),a.jsx("a",{className:pt.imageDownloadButton,href:o,download:y8(e),"aria-label":`Download ${y8(e)}`,title:"Download",children:a.jsx(Vy,{size:16,strokeWidth:1.8})})]}):l?null:a.jsx("div",{className:pt.empty,children:"Loading image..."}),l&&a.jsx("div",{className:pt.previewError,children:l})]})}function SZ({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:r,onLoadError:o}){const[i,l]=d.useState(s??null),[c,u]=d.useState(),[h,f]=d.useState(null);return d.useEffect(()=>{let m=!1;if(l(s??null),f(null),u(void 0),!r)return n.stat(e).then(g=>{if(!m){if(g.type==="directory")throw new Error("Directories cannot be opened as artifacts.");return n.readWorkspaceFile(e,{maxBytes:256*1024})}}).then(async g=>{if(m||!g||!g.truncated)return g;const w=await _4((y,x)=>n.readFileBytes(y,x),e,"application/octet-stream",{statFile:y=>n.stat(y),isCancelled:()=>m});return{sizeBytes:w.size,content:new TextDecoder(g.encoding||"utf-8").decode(await w.arrayBuffer())}}).then(g=>{m||!g||(u(g.sizeBytes),l(g.content))}).catch(g=>{if(m)return;const w=g instanceof Error?g.message:String(g);f(w),o?.(w)}),()=>{m=!0}},[t,s,r,o,n,e]),{content:i,error:h,sizeBytes:c}}function L0n({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewSizeBytes:r,previewOnly:o,onLoadError:i}){const{content:l,error:c,sizeBytes:u}=SZ({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:o,onLoadError:i});return a.jsxs("div",{className:pt.htmlPreviewWrap,children:[l===null?!c&&a.jsx("div",{className:pt.empty,children:"Loading preview..."}):a.jsx(IRe,{content:l,sizeBytes:u??r,workspacePath:e,workspaceActions:n,children:()=>a.jsx(D0n,{content:l,workspacePath:e})}),c&&a.jsx("div",{className:pt.previewError,children:c})]})}function D0n({content:e,workspacePath:t}){const n=`Preview ${t}`,{t:s}=Ct(),[r,o]=d.useState(null),[i,l]=d.useState(null);return d.useEffect(()=>{const c=new AbortController;return o(null),l(null),hVe(e,n,c.signal).then(u=>{c.signal.aborted||o(u)},u=>{c.signal.aborted||l(Iu(u))}),()=>c.abort()},[e,n]),i?a.jsx("div",{className:pt.previewError,children:s("artifact.previewFailed",{message:i})}):r===null?a.jsx("div",{className:pt.empty,children:s("attachment.loadingPreview")}):a.jsx("iframe",{className:pt.htmlPreview,referrerPolicy:"no-referrer",sandbox:"allow-scripts",srcDoc:r,title:n})}function TRe({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:r,onLoadError:o}){const i=d.useRef(null),[l,c]=d.useState(null),{content:u,error:h}=SZ({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:r,onLoadError:o});return d.useEffect(()=>{const f=i.current;if(!f||u===null)return;f.replaceChildren(),c(null);let m;try{m=new js({doc:u,extensions:[vTe,js.editable.of(!1),ua.readOnly.of(!0),js.lineWrapping],parent:f})}catch(g){c(g instanceof Error?g.message:String(g));return}return()=>m.destroy()},[u]),a.jsxs("div",{className:pt.filePreviewWrap,children:[u===null?!h&&a.jsx("div",{className:pt.empty,children:"Loading file..."}):a.jsx("div",{ref:i,className:pt.codeMirrorFile}),(h||l)&&a.jsx("div",{className:pt.previewError,children:h||l})]})}function IRe({content:e,sizeBytes:t,workspacePath:n,workspaceActions:s,children:r}){const{t:o}=Ct(),[i,l]=d.useState(null);if(!d.useMemo(()=>(t??new TextEncoder().encode(e).byteLength)>1024*1024,[e,t]))return r();const u=i===e;return a.jsxs("div",{className:"absolute inset-3 flex min-h-0 flex-col gap-2",children:[a.jsxs("div",{className:"flex shrink-0 items-center gap-2 text-sm text-muted-foreground",children:[a.jsx("span",{children:o("artifact.longDocument")}),a.jsx(Wt,{className:"ml-auto shrink-0",variant:"outline",size:"sm",onClick:()=>l(u?null:e),children:o(u?"artifact.showSource":"artifact.renderFullPreview")})]}),a.jsx("div",{className:"relative min-h-0 flex-1 overflow-auto",children:u?r():a.jsx(TRe,{workspacePath:n,workspaceActions:s,previewContent:e,previewOnly:!0})})]})}function O0n({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewSizeBytes:r,previewOnly:o,onLoadError:i}){const{content:l,error:c,sizeBytes:u}=SZ({workspacePath:e,artifactVersion:t,workspaceActions:n,previewContent:s,previewOnly:o,onLoadError:i});return a.jsxs("div",{className:pt.htmlPreviewWrap,children:[l===null?!c&&a.jsx("div",{className:pt.empty,children:"Loading preview..."}):a.jsx(IRe,{content:l,sizeBytes:u??r,workspacePath:e,workspaceActions:n,children:()=>a.jsx("div",{className:pt.markdownPreviewWrap,children:a.jsx(Im,{content:l})})}),c&&a.jsx("div",{className:pt.previewError,children:c})]})}function kp({label:e,value:t}){return t?a.jsxs(a.Fragment,{children:[a.jsx("span",{className:pt.fieldLabel,children:e}),a.jsx("span",{className:pt.fieldValue,children:t})]}):null}function C2(e,t,n){const s=e[t];return s==null||s===""?null:a.jsx(kp,{label:n,value:String(s)},t)}/**
2217
2217
  * @license
2218
2218
  * Copyright 2025 Qwen Team
2219
2219
  * SPDX-License-Identifier: Apache-2.0