specrails-desktop 2.30.2 → 2.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/README.md +28 -24
  2. package/client/dist/assets/{ActivityFeedPage-9DZOvIcY.js → ActivityFeedPage-CAhFRUO4.js} +1 -1
  3. package/client/dist/assets/{AgentBrowserCapture-DqyHbzk7.js → AgentBrowserCapture-Ct4G5lsE.js} +1 -1
  4. package/client/dist/assets/AgentModeCodePane-DQt9WIvu.js +2 -0
  5. package/client/dist/assets/{AgentModeJobsPane-CTIHMUKN.js → AgentModeJobsPane-podaJVl9.js} +1 -1
  6. package/client/dist/assets/AgentsPage-DTZdbW80.js +87 -0
  7. package/client/dist/assets/AnalyticsPage-BskgGPm0.js +1 -0
  8. package/client/dist/assets/CodePage-CvtYo1DU.js +2 -0
  9. package/client/dist/assets/{DesktopAnalyticsPage-CkXUFj3F.js → DesktopAnalyticsPage-Dnf99E8e.js} +1 -1
  10. package/client/dist/assets/{DocsDialog-PhdCJNVj.js → DocsDialog-DHi36rZ4.js} +1 -1
  11. package/client/dist/assets/{DocsPage-BY-wDthx.js → DocsPage-DIdVrQz1.js} +1 -1
  12. package/client/dist/assets/{InteractiveJobComposer-C9I0A4KR.js → InteractiveJobComposer-BHeB2inv.js} +1 -1
  13. package/client/dist/assets/{JobDetailModal-I_RoQJV4.js → JobDetailModal-CF1SKUHH.js} +1 -1
  14. package/client/dist/assets/JobDetailPage-De3rY18h.js +1 -0
  15. package/client/dist/assets/{JobsPage-DcllM4Ip.js → JobsPage-CfAqqJTx.js} +1 -1
  16. package/client/dist/assets/{LoopBuilderPage-DGm_iuff.js → LoopBuilderPage-DSBMuTb3.js} +2 -2
  17. package/client/dist/assets/{LoopPreviewModal-BC-TeFdD.js → LoopPreviewModal-B-c37kA0.js} +1 -1
  18. package/client/dist/assets/LoopsPage-DjnNXdmm.js +1 -0
  19. package/client/dist/assets/{MinimizedChatsContext-Cs34FPTz.js → MinimizedChatsContext-DIsnQMVz.js} +1 -1
  20. package/client/dist/assets/PluginsPage-DA5pQ_6u.js +2 -0
  21. package/client/dist/assets/{ProjectSettingsDialog-nEs-ENrE.js → ProjectSettingsDialog-DA23PSi6.js} +1 -1
  22. package/client/dist/assets/{TemplatePreviewModal-D4qW-J9B.js → TemplatePreviewModal-Cp7IQ-g2.js} +1 -1
  23. package/client/dist/assets/TicketDetailModal-BPD2i_0R.js +14 -0
  24. package/client/dist/assets/{Trans-CPISVji8.js → Trans-cWtExGkC.js} +1 -1
  25. package/client/dist/assets/addspec-4WmLJmBG.js +1 -0
  26. package/client/dist/assets/addspec-BRlk8jON.js +1 -0
  27. package/client/dist/assets/addspec-C7XRejU4.js +1 -0
  28. package/client/dist/assets/addspec-CHW9xf_X.js +1 -0
  29. package/client/dist/assets/addspec-DTmRrWrF.js +1 -0
  30. package/client/dist/assets/addspec-DhmnXER8.js +1 -0
  31. package/client/dist/assets/addspec-Di41DpYV.js +1 -0
  32. package/client/dist/assets/addspec-x3mizDxc.js +1 -0
  33. package/client/dist/assets/agent-BKsuIgIT.js +1 -0
  34. package/client/dist/assets/agent-Bs9NilfI.js +1 -0
  35. package/client/dist/assets/agent-C23h684q.js +1 -0
  36. package/client/dist/assets/agent-CqEjy3Z2.js +1 -0
  37. package/client/dist/assets/agent-D5DZTks1.js +1 -0
  38. package/client/dist/assets/agent-DE8hUYPl.js +1 -0
  39. package/client/dist/assets/agent-DsTuJGSc.js +1 -0
  40. package/client/dist/assets/agent-DwZM05-x.js +1 -0
  41. package/client/dist/assets/agents-45GbINfh.js +1 -0
  42. package/client/dist/assets/agents-BHp0_FQt.js +1 -0
  43. package/client/dist/assets/agents-Bvyi3y6R.js +1 -0
  44. package/client/dist/assets/agents-DMKFStHL.js +1 -0
  45. package/client/dist/assets/agents-DaYcxAr1.js +1 -0
  46. package/client/dist/assets/agents-IUOgqT5t.js +1 -0
  47. package/client/dist/assets/agents-ms7TwG16.js +1 -0
  48. package/client/dist/assets/agents-rzPnqoBR.js +1 -0
  49. package/client/dist/assets/agentstudio-8TQqBenW.js +1 -0
  50. package/client/dist/assets/agentstudio-B8Z_mmEX.js +1 -0
  51. package/client/dist/assets/agentstudio-BZR9YmLs.js +1 -0
  52. package/client/dist/assets/agentstudio-Bge9pAWb.js +1 -0
  53. package/client/dist/assets/agentstudio-Bz169Vzt.js +1 -0
  54. package/client/dist/assets/agentstudio-D6L2jpNi.js +1 -0
  55. package/client/dist/assets/agentstudio-K2-Z7CL0.js +1 -0
  56. package/client/dist/assets/agentstudio-Zmgzthv8.js +1 -0
  57. package/client/dist/assets/analytics-B8Qtptbl.js +1 -0
  58. package/client/dist/assets/analytics-BHqUazhP.js +1 -0
  59. package/client/dist/assets/analytics-BPptRY4f.js +1 -0
  60. package/client/dist/assets/analytics-BxDGOIwf.js +1 -0
  61. package/client/dist/assets/analytics-C9RaQcE3.js +1 -0
  62. package/client/dist/assets/analytics-CJIwqrEl.js +1 -0
  63. package/client/dist/assets/analytics-D_OZdQ9O.js +1 -0
  64. package/client/dist/assets/analytics-We6lUMI8.js +1 -0
  65. package/client/dist/assets/builder-3bygQtZi.js +1 -0
  66. package/client/dist/assets/builder-BiUG9Z5K.js +1 -0
  67. package/client/dist/assets/builder-CGRz_-zP.js +1 -0
  68. package/client/dist/assets/builder-CWYPw7Cw.js +1 -0
  69. package/client/dist/assets/builder-CX1437hF.js +1 -0
  70. package/client/dist/assets/{builder-CwA4T7gP.js → builder-Cowk9jtL.js} +1 -1
  71. package/client/dist/assets/builder-DwDexYRE.js +1 -0
  72. package/client/dist/assets/builder-skfnZ1uC.js +1 -0
  73. package/client/dist/assets/code-B0O8-p8k.js +1 -0
  74. package/client/dist/assets/code-B1VLZDhS.js +1 -0
  75. package/client/dist/assets/code-B86IMAfz.js +1 -0
  76. package/client/dist/assets/code-Bpj4Ddml.js +1 -0
  77. package/client/dist/assets/code-BykBZ5-e.js +1 -0
  78. package/client/dist/assets/code-CHPkOkDS.js +1 -0
  79. package/client/dist/assets/code-CkUuW4m9.js +1 -0
  80. package/client/dist/assets/code-cAqaqMTx.js +1 -0
  81. package/client/dist/assets/{dashboard-Dy2Um-US.js → dashboard-BVq6kRJe.js} +1 -1
  82. package/client/dist/assets/{dashboard-CHCEkds4.js → dashboard-BaKPPmLH.js} +1 -1
  83. package/client/dist/assets/{dashboard-CrlTV1ms.js → dashboard-Bm8e4zYG.js} +1 -1
  84. package/client/dist/assets/{dashboard-WhzOQw1S.js → dashboard-Bt6IesnM.js} +1 -1
  85. package/client/dist/assets/{dashboard-Cslu_GCH.js → dashboard-C_NQZle_.js} +1 -1
  86. package/client/dist/assets/{dashboard-DweT3Y4R.js → dashboard-CyZKoGoI.js} +1 -1
  87. package/client/dist/assets/{dashboard-DUU8-_Rg.js → dashboard-HIUdUBQ0.js} +1 -1
  88. package/client/dist/assets/{dashboard-Cqmmbh3l.js → dashboard-pm4Mr229.js} +1 -1
  89. package/client/dist/assets/{dist-js-jwoXo0YD.js → dist-js-BaP-xLOy.js} +1 -1
  90. package/client/dist/assets/{dist-js-Dj72W6qo.js → dist-js-CLlgOa5a.js} +1 -1
  91. package/client/dist/assets/format-command-C0D9IPmV.js +1 -0
  92. package/client/dist/assets/{formatDistanceToNow-ByKli7Q_.js → formatDistanceToNow-DUyzS4rr.js} +1 -1
  93. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-qrcBaLW1.js → getTimezoneOffsetInMilliseconds-BCIwmmTj.js} +1 -1
  94. package/client/dist/assets/{i18n-Bf9Ckd10.js → i18n-D21Pr8Sj.js} +2 -2
  95. package/client/dist/assets/index-BdSDUFnA.css +2 -0
  96. package/client/dist/assets/index-Ci4-JKDr.js +77 -0
  97. package/client/dist/assets/{jobs-CVFD8rar.js → jobs-BAls3bWq.js} +1 -1
  98. package/client/dist/assets/{jobs-DoSaFzAa.js → jobs-B_TeSQxb.js} +1 -1
  99. package/client/dist/assets/jobs-Bgq-PZkC.js +1 -0
  100. package/client/dist/assets/jobs-Bpks6doU.js +1 -0
  101. package/client/dist/assets/jobs-CN_zv4Gr.js +1 -0
  102. package/client/dist/assets/jobs-DUlWSYq2.js +1 -0
  103. package/client/dist/assets/{jobs-B-sDHEay.js → jobs-DhxKgWFq.js} +1 -1
  104. package/client/dist/assets/{jobs-lk1_Dq1U.js → jobs-SwYS2M-B.js} +1 -1
  105. package/client/dist/assets/nav-BHDiSIVu.js +1 -0
  106. package/client/dist/assets/nav-CMiYAq4i.js +1 -0
  107. package/client/dist/assets/nav-CqS7NrDW.js +1 -0
  108. package/client/dist/assets/nav-D-0M7xfv.js +1 -0
  109. package/client/dist/assets/nav-D65O6u9I.js +1 -0
  110. package/client/dist/assets/nav-D_LKYvBr.js +1 -0
  111. package/client/dist/assets/nav-FDTJmU79.js +1 -0
  112. package/client/dist/assets/nav-VaB-C4k5.js +1 -0
  113. package/client/dist/assets/provider-capabilities-BvoExILy.js +1 -0
  114. package/client/dist/assets/settings-BveOJoaI.js +1 -0
  115. package/client/dist/assets/settings-Cj1C6F5k.js +1 -0
  116. package/client/dist/assets/settings-CuVwOpe0.js +1 -0
  117. package/client/dist/assets/settings-D5X4DfRc.js +1 -0
  118. package/client/dist/assets/settings-DXwxe-BW.js +1 -0
  119. package/client/dist/assets/settings-Di81Ba_V.js +1 -0
  120. package/client/dist/assets/settings-jbLjCYC_.js +1 -0
  121. package/client/dist/assets/settings-wIZNPFnn.js +1 -0
  122. package/client/dist/assets/setup-BBiHEO7h.js +1 -0
  123. package/client/dist/assets/setup-BlTWhNIQ.js +1 -0
  124. package/client/dist/assets/setup-Bp2L_oiP.js +1 -0
  125. package/client/dist/assets/setup-CInYXp1-.js +1 -0
  126. package/client/dist/assets/{setup-CITtPjed.js → setup-CYH3bP6K.js} +1 -1
  127. package/client/dist/assets/setup-DwcQ921P.js +1 -0
  128. package/client/dist/assets/setup-PBLjuDSs.js +1 -0
  129. package/client/dist/assets/setup-bx6FtoBp.js +1 -0
  130. package/client/dist/assets/{spending-DMnCXy84.js → spending-BCyUxoOI.js} +1 -1
  131. package/client/dist/assets/{tickets-B8BuAaj5.js → tickets-BL9r1G0e.js} +1 -1
  132. package/client/dist/assets/{tickets-DpmdE8tv.js → tickets-B_NyHJ8f.js} +1 -1
  133. package/client/dist/assets/{tickets-B_yh4qQk.js → tickets-BarF1wuG.js} +1 -1
  134. package/client/dist/assets/{tickets-pAUJkDTu.js → tickets-CclVhpQA.js} +1 -1
  135. package/client/dist/assets/{tickets-D_yDquEw.js → tickets-CqqOHbli.js} +1 -1
  136. package/client/dist/assets/{tickets-CFk2n2Or.js → tickets-DCkFSiqt.js} +1 -1
  137. package/client/dist/assets/{tickets-DQp7JS2R.js → tickets-Djn3ccfT.js} +1 -1
  138. package/client/dist/assets/{tickets-Bs37scwY.js → tickets-MiHBPsy_.js} +1 -1
  139. package/client/dist/assets/{useBrowserCaptureSession-CkBJShUw.js → useBrowserCaptureSession-CkVCDzer.js} +1 -1
  140. package/client/dist/assets/{useDesktop-B4pSBIDd.js → useDesktop-DCP_MHp9.js} +1 -1
  141. package/client/dist/index.html +25 -24
  142. package/docs/README.md +7 -3
  143. package/docs/cli.md +3 -3
  144. package/docs/codex.md +51 -64
  145. package/docs/creating-specs.md +36 -4
  146. package/docs/customizing.md +5 -5
  147. package/docs/gemini.md +35 -47
  148. package/docs/getting-started.md +15 -9
  149. package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +5 -1
  150. package/docs/guide/de/agents/4-custom-agents-catalog.md +7 -4
  151. package/docs/guide/de/getting-started/1-what-is-specrails.md +1 -0
  152. package/docs/guide/de/getting-started/2-installing-and-first-run.md +1 -0
  153. package/docs/guide/de/getting-started/4-the-dashboard-tour.md +4 -4
  154. package/docs/guide/de/integrations/1-ai-providers.md +29 -18
  155. package/docs/guide/de/integrations/2-plugins.md +3 -3
  156. package/docs/guide/de/integrations/6-agent-chat.md +8 -1
  157. package/docs/guide/de/pipeline/1-rails-and-jobs.md +9 -6
  158. package/docs/guide/de/pipeline/2-the-job-detail-view.md +3 -1
  159. package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  160. package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +13 -13
  161. package/docs/guide/de/pipeline/5-the-loop-builder.md +6 -2
  162. package/docs/guide/de/specs/2-add-spec-quick-mode.md +6 -1
  163. package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +7 -1
  164. package/docs/guide/en/agents/4-custom-agents-catalog.md +17 -4
  165. package/docs/guide/en/getting-started/1-what-is-specrails.md +2 -1
  166. package/docs/guide/en/getting-started/2-installing-and-first-run.md +2 -1
  167. package/docs/guide/en/getting-started/4-the-dashboard-tour.md +5 -5
  168. package/docs/guide/en/insights/3-code-explorer.md +5 -0
  169. package/docs/guide/en/integrations/1-ai-providers.md +63 -22
  170. package/docs/guide/en/integrations/2-plugins.md +3 -3
  171. package/docs/guide/en/integrations/6-agent-chat.md +14 -2
  172. package/docs/guide/en/pipeline/1-rails-and-jobs.md +19 -7
  173. package/docs/guide/en/pipeline/2-the-job-detail-view.md +3 -1
  174. package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  175. package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +25 -11
  176. package/docs/guide/en/pipeline/5-the-loop-builder.md +7 -2
  177. package/docs/guide/en/specs/2-add-spec-quick-mode.md +10 -1
  178. package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +5 -1
  179. package/docs/guide/es/agents/4-custom-agents-catalog.md +7 -4
  180. package/docs/guide/es/getting-started/1-what-is-specrails.md +1 -0
  181. package/docs/guide/es/getting-started/2-installing-and-first-run.md +1 -0
  182. package/docs/guide/es/getting-started/4-the-dashboard-tour.md +4 -4
  183. package/docs/guide/es/integrations/1-ai-providers.md +30 -18
  184. package/docs/guide/es/integrations/2-plugins.md +3 -3
  185. package/docs/guide/es/integrations/6-agent-chat.md +8 -1
  186. package/docs/guide/es/pipeline/1-rails-and-jobs.md +9 -6
  187. package/docs/guide/es/pipeline/2-the-job-detail-view.md +3 -1
  188. package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  189. package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +15 -13
  190. package/docs/guide/es/pipeline/5-the-loop-builder.md +6 -2
  191. package/docs/guide/es/specs/2-add-spec-quick-mode.md +6 -1
  192. package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +5 -1
  193. package/docs/guide/fr/agents/4-custom-agents-catalog.md +7 -4
  194. package/docs/guide/fr/getting-started/1-what-is-specrails.md +1 -0
  195. package/docs/guide/fr/getting-started/2-installing-and-first-run.md +1 -0
  196. package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +4 -4
  197. package/docs/guide/fr/integrations/1-ai-providers.md +29 -18
  198. package/docs/guide/fr/integrations/2-plugins.md +3 -3
  199. package/docs/guide/fr/integrations/6-agent-chat.md +8 -1
  200. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +9 -6
  201. package/docs/guide/fr/pipeline/2-the-job-detail-view.md +3 -1
  202. package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  203. package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +15 -13
  204. package/docs/guide/fr/pipeline/5-the-loop-builder.md +6 -2
  205. package/docs/guide/fr/specs/2-add-spec-quick-mode.md +6 -1
  206. package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +5 -1
  207. package/docs/guide/it/agents/4-custom-agents-catalog.md +7 -4
  208. package/docs/guide/it/getting-started/1-what-is-specrails.md +1 -0
  209. package/docs/guide/it/getting-started/2-installing-and-first-run.md +1 -0
  210. package/docs/guide/it/getting-started/4-the-dashboard-tour.md +4 -4
  211. package/docs/guide/it/integrations/1-ai-providers.md +28 -18
  212. package/docs/guide/it/integrations/2-plugins.md +3 -3
  213. package/docs/guide/it/integrations/6-agent-chat.md +8 -1
  214. package/docs/guide/it/pipeline/1-rails-and-jobs.md +9 -6
  215. package/docs/guide/it/pipeline/2-the-job-detail-view.md +3 -1
  216. package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  217. package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +13 -13
  218. package/docs/guide/it/pipeline/5-the-loop-builder.md +6 -2
  219. package/docs/guide/it/specs/2-add-spec-quick-mode.md +6 -1
  220. package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +6 -1
  221. package/docs/guide/ja/agents/4-custom-agents-catalog.md +7 -4
  222. package/docs/guide/ja/getting-started/1-what-is-specrails.md +1 -0
  223. package/docs/guide/ja/getting-started/2-installing-and-first-run.md +1 -0
  224. package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +4 -4
  225. package/docs/guide/ja/integrations/1-ai-providers.md +28 -18
  226. package/docs/guide/ja/integrations/2-plugins.md +3 -3
  227. package/docs/guide/ja/integrations/6-agent-chat.md +7 -1
  228. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +9 -6
  229. package/docs/guide/ja/pipeline/2-the-job-detail-view.md +3 -1
  230. package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  231. package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +14 -13
  232. package/docs/guide/ja/pipeline/5-the-loop-builder.md +6 -2
  233. package/docs/guide/ja/specs/2-add-spec-quick-mode.md +6 -1
  234. package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +5 -1
  235. package/docs/guide/pt/agents/4-custom-agents-catalog.md +7 -4
  236. package/docs/guide/pt/getting-started/1-what-is-specrails.md +1 -0
  237. package/docs/guide/pt/getting-started/2-installing-and-first-run.md +1 -0
  238. package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +4 -4
  239. package/docs/guide/pt/integrations/1-ai-providers.md +28 -18
  240. package/docs/guide/pt/integrations/2-plugins.md +3 -3
  241. package/docs/guide/pt/integrations/6-agent-chat.md +7 -1
  242. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +9 -6
  243. package/docs/guide/pt/pipeline/2-the-job-detail-view.md +2 -1
  244. package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  245. package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +14 -13
  246. package/docs/guide/pt/pipeline/5-the-loop-builder.md +6 -2
  247. package/docs/guide/pt/specs/2-add-spec-quick-mode.md +6 -1
  248. package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +4 -1
  249. package/docs/guide/zh/agents/4-custom-agents-catalog.md +7 -4
  250. package/docs/guide/zh/getting-started/1-what-is-specrails.md +1 -0
  251. package/docs/guide/zh/getting-started/2-installing-and-first-run.md +1 -0
  252. package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +4 -4
  253. package/docs/guide/zh/integrations/1-ai-providers.md +26 -18
  254. package/docs/guide/zh/integrations/2-plugins.md +3 -3
  255. package/docs/guide/zh/integrations/6-agent-chat.md +6 -1
  256. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +9 -6
  257. package/docs/guide/zh/pipeline/2-the-job-detail-view.md +2 -1
  258. package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  259. package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +12 -12
  260. package/docs/guide/zh/pipeline/5-the-loop-builder.md +6 -2
  261. package/docs/guide/zh/specs/2-add-spec-quick-mode.md +6 -1
  262. package/docs/internals/README.md +4 -1
  263. package/docs/internals/adding-a-provider.md +32 -28
  264. package/docs/internals/api-reference.md +37 -13
  265. package/docs/internals/architecture.md +5 -5
  266. package/docs/internals/bundled-framework-build-plan.md +3 -3
  267. package/docs/internals/code-explorer-story.md +4 -0
  268. package/docs/internals/configuration.md +17 -5
  269. package/docs/internals/global-artifacts-alignment-contract.md +1 -1
  270. package/docs/internals/operations-runbook.md +1 -1
  271. package/docs/internals/profiles.md +37 -45
  272. package/docs/internals/project-builder.md +16 -0
  273. package/docs/kimi.md +291 -0
  274. package/docs/mcp.md +9 -2
  275. package/docs/platforms/macos.md +17 -7
  276. package/docs/platforms/windows.md +9 -4
  277. package/docs/running-pipelines.md +46 -12
  278. package/docs/terminal.md +1 -1
  279. package/docs/tracking-cost.md +25 -6
  280. package/package.json +4 -2
  281. package/server/dist/agent-chat-manager.js +74 -32
  282. package/server/dist/agent-chat-router.js +40 -17
  283. package/server/dist/agent-cwd-manager.js +14 -7
  284. package/server/dist/agent-generator.js +69 -85
  285. package/server/dist/agent-mcp-config.js +17 -11
  286. package/server/dist/agent-operator-prompt.js +29 -20
  287. package/server/dist/agent-refine-manager.js +58 -38
  288. package/server/dist/ai-invocations.js +65 -20
  289. package/server/dist/attachment-manager.js +49 -15
  290. package/server/dist/blueprint-chat-manager.js +41 -16
  291. package/server/dist/blueprint-router.js +40 -6
  292. package/server/dist/chat-manager.js +165 -89
  293. package/server/dist/code-explorer-router.js +26 -7
  294. package/server/dist/contract-refine-runner.js +146 -113
  295. package/server/dist/core-compat.js +57 -2
  296. package/server/dist/core-package.js +3 -3
  297. package/server/dist/core-update-manager.js +17 -1
  298. package/server/dist/db.js +60 -5
  299. package/server/dist/desktop-analytics.js +44 -6
  300. package/server/dist/desktop-router.js +127 -11
  301. package/server/dist/explore-cwd-manager.js +19 -3
  302. package/server/dist/feature-flags.js +1 -1
  303. package/server/dist/file-story-manager.js +3 -3
  304. package/server/dist/file-summary-generator.js +21 -15
  305. package/server/dist/file-summary-manager.js +6 -6
  306. package/server/dist/framework-manager.js +19 -2
  307. package/server/dist/framework-migration.js +27 -12
  308. package/server/dist/install-config-path.js +1 -1
  309. package/server/dist/interactive-job-session.js +8 -6
  310. package/server/dist/loop-command-catalog.js +27 -10
  311. package/server/dist/loop-executors.js +59 -27
  312. package/server/dist/loop-factory.js +2 -2
  313. package/server/dist/loop-run-manager.js +100 -39
  314. package/server/dist/loops-router.js +1 -1
  315. package/server/dist/mcp/guide.js +23 -16
  316. package/server/dist/mcp/tools/agents.js +47 -41
  317. package/server/dist/mcp/tools/analytics.js +2 -2
  318. package/server/dist/mcp/tools/loops.js +2 -2
  319. package/server/dist/mcp/tools/plugins.js +14 -9
  320. package/server/dist/mcp/tools/rails.js +12 -13
  321. package/server/dist/mcp/tools/support.js +1 -1
  322. package/server/dist/mobile/mobile-router.js +5 -1
  323. package/server/dist/offline-assemble.js +13 -1
  324. package/server/dist/path-resolver.js +2 -2
  325. package/server/dist/plugin-manager.js +391 -106
  326. package/server/dist/plugins/claude-md-mutation.js +5 -4
  327. package/server/dist/plugins/drift.js +32 -29
  328. package/server/dist/plugins/rail-integration.js +13 -2
  329. package/server/dist/plugins/serena/install.js +25 -17
  330. package/server/dist/plugins/serena/manifest.js +22 -5
  331. package/server/dist/plugins/serena/verify.js +46 -16
  332. package/server/dist/plugins-router.js +59 -8
  333. package/server/dist/profile-manager.js +148 -36
  334. package/server/dist/profiles-router.js +311 -82
  335. package/server/dist/project-registry.js +2 -2
  336. package/server/dist/project-router-chat.js +17 -8
  337. package/server/dist/project-router-helpers.js +93 -5
  338. package/server/dist/project-router-jobs.js +76 -12
  339. package/server/dist/project-router-loop-runs.js +42 -14
  340. package/server/dist/project-router-settings.js +31 -10
  341. package/server/dist/project-router-setup.js +4 -5
  342. package/server/dist/project-router-spending.js +15 -3
  343. package/server/dist/project-router-tickets.js +187 -181
  344. package/server/dist/project-router.js +1 -0
  345. package/server/dist/proposal-manager.js +125 -85
  346. package/server/dist/providers/claude-adapter.js +14 -0
  347. package/server/dist/providers/codex-adapter.js +20 -0
  348. package/server/dist/providers/gemini-adapter.js +14 -0
  349. package/server/dist/providers/index.js +18 -1
  350. package/server/dist/providers/kimi-adapter.js +361 -0
  351. package/server/dist/providers/kimi-skill-prompt.js +332 -0
  352. package/server/dist/providers/runtime.js +137 -0
  353. package/server/dist/queue-manager.js +103 -78
  354. package/server/dist/rail-isolated-launch.js +1 -1
  355. package/server/dist/rails-router.js +51 -38
  356. package/server/dist/result-event.js +5 -0
  357. package/server/dist/schemas/profile.v1.json +3 -4
  358. package/server/dist/setup-manager.js +222 -101
  359. package/server/dist/setup-prerequisites.js +7 -1
  360. package/server/dist/smash-runner.js +104 -57
  361. package/server/dist/spawn-lifecycle.js +18 -14
  362. package/server/dist/spec-launcher-manager.js +66 -54
  363. package/server/dist/spec-models.js +15 -6
  364. package/server/dist/spending.js +110 -17
  365. package/server/dist/util/cli-prompt.js +142 -5
  366. package/server/dist/util/stream-display.js +46 -0
  367. package/server/dist/workspace-manager.js +100 -37
  368. package/server/dist/worktree-manager.js +4 -0
  369. package/server/dist/worktree-overlay.js +12 -3
  370. package/client/dist/assets/AgentModeCodePane-BAYyFRmY.js +0 -2
  371. package/client/dist/assets/AgentsPage-DuyJuaFs.js +0 -86
  372. package/client/dist/assets/AnalyticsPage-BY7gtCx6.js +0 -1
  373. package/client/dist/assets/CodePage-vyQr40Vl.js +0 -2
  374. package/client/dist/assets/JobDetailPage-CU4FEnUC.js +0 -1
  375. package/client/dist/assets/LoopsPage-SqglnXlp.js +0 -1
  376. package/client/dist/assets/PluginsPage-B89S8o1a.js +0 -2
  377. package/client/dist/assets/TicketDetailModal-CI47Dq9E.js +0 -14
  378. package/client/dist/assets/addspec-BXjvkh5q.js +0 -1
  379. package/client/dist/assets/addspec-C4bwrmpi.js +0 -1
  380. package/client/dist/assets/addspec-CArHXUDM.js +0 -1
  381. package/client/dist/assets/addspec-DTKJcXiR.js +0 -1
  382. package/client/dist/assets/addspec-DbNBbrha.js +0 -1
  383. package/client/dist/assets/addspec-Rw8uVBC1.js +0 -1
  384. package/client/dist/assets/addspec-htHGZHOe.js +0 -1
  385. package/client/dist/assets/addspec-lr_LP6jk.js +0 -1
  386. package/client/dist/assets/agent-BABjRt0P.js +0 -1
  387. package/client/dist/assets/agent-BuUpgqVx.js +0 -1
  388. package/client/dist/assets/agent-CCDZesgU.js +0 -1
  389. package/client/dist/assets/agent-CVn64zWH.js +0 -1
  390. package/client/dist/assets/agent-CWeOny0E.js +0 -1
  391. package/client/dist/assets/agent-DOysmad_.js +0 -1
  392. package/client/dist/assets/agent-DSsjTBhn.js +0 -1
  393. package/client/dist/assets/agent-DlZMxfM9.js +0 -1
  394. package/client/dist/assets/agents-6ZOJXWVk.js +0 -1
  395. package/client/dist/assets/agents-BZ0XQKjg.js +0 -1
  396. package/client/dist/assets/agents-BqWklnHR.js +0 -1
  397. package/client/dist/assets/agents-Bz-thHkB.js +0 -1
  398. package/client/dist/assets/agents-CJclElx6.js +0 -1
  399. package/client/dist/assets/agents-D_l9L0VA.js +0 -1
  400. package/client/dist/assets/agents-DhG7mg6-.js +0 -1
  401. package/client/dist/assets/agents-u_C0jPB5.js +0 -1
  402. package/client/dist/assets/agentstudio-BF19hbXj.js +0 -1
  403. package/client/dist/assets/agentstudio-BIUe1Im2.js +0 -1
  404. package/client/dist/assets/agentstudio-BLGvxWBx.js +0 -1
  405. package/client/dist/assets/agentstudio-D9UKiWTj.js +0 -1
  406. package/client/dist/assets/agentstudio-Drs37nIM.js +0 -1
  407. package/client/dist/assets/agentstudio-nEnKkcXM.js +0 -1
  408. package/client/dist/assets/agentstudio-pyFcSBKy.js +0 -1
  409. package/client/dist/assets/agentstudio-zfTzQh3U.js +0 -1
  410. package/client/dist/assets/analytics-BC7mwR4s.js +0 -1
  411. package/client/dist/assets/analytics-BiNg8edP.js +0 -1
  412. package/client/dist/assets/analytics-C0s_T2GN.js +0 -1
  413. package/client/dist/assets/analytics-CdsAPAwZ.js +0 -1
  414. package/client/dist/assets/analytics-Cr1_q-lC.js +0 -1
  415. package/client/dist/assets/analytics-DZ8Aoq3I.js +0 -1
  416. package/client/dist/assets/analytics-IEsKZvpW.js +0 -1
  417. package/client/dist/assets/analytics-SRPf84OT.js +0 -1
  418. package/client/dist/assets/builder-BH8Fua-g.js +0 -1
  419. package/client/dist/assets/builder-BoV7DgKd.js +0 -1
  420. package/client/dist/assets/builder-Cc_Lf79C.js +0 -1
  421. package/client/dist/assets/builder-CwZ7Bme2.js +0 -1
  422. package/client/dist/assets/builder-CxW-JFsR.js +0 -1
  423. package/client/dist/assets/builder-D94lrV7x.js +0 -1
  424. package/client/dist/assets/builder-cqHpCyGa.js +0 -1
  425. package/client/dist/assets/code-76gS0IdL.js +0 -1
  426. package/client/dist/assets/code-BDXEM4ml.js +0 -1
  427. package/client/dist/assets/code-C1VwxlML.js +0 -1
  428. package/client/dist/assets/code-CnMZyJpr.js +0 -1
  429. package/client/dist/assets/code-D20ef9Cf.js +0 -1
  430. package/client/dist/assets/code-DdOXaWRY.js +0 -1
  431. package/client/dist/assets/code-Duohuf9l.js +0 -1
  432. package/client/dist/assets/code-geHmknB9.js +0 -1
  433. package/client/dist/assets/format-command-Dfa1o2d-.js +0 -1
  434. package/client/dist/assets/index-Dh9i4CnN.css +0 -2
  435. package/client/dist/assets/index-F9r8mWP_.js +0 -76
  436. package/client/dist/assets/jobs-BCtGfgUA.js +0 -1
  437. package/client/dist/assets/jobs-BHR_EnDI.js +0 -1
  438. package/client/dist/assets/jobs-BMbZJjJJ.js +0 -1
  439. package/client/dist/assets/jobs-DzSIR8V6.js +0 -1
  440. package/client/dist/assets/nav-BRJBxaGt.js +0 -1
  441. package/client/dist/assets/nav-CAGKv3_F.js +0 -1
  442. package/client/dist/assets/nav-CNskRJKQ.js +0 -1
  443. package/client/dist/assets/nav-DY93irBL.js +0 -1
  444. package/client/dist/assets/nav-DhjvYgqt.js +0 -1
  445. package/client/dist/assets/nav-Gb-r4wop.js +0 -1
  446. package/client/dist/assets/nav-TvumAFD2.js +0 -1
  447. package/client/dist/assets/nav-myFaXRHD.js +0 -1
  448. package/client/dist/assets/settings-B0ypw9uw.js +0 -1
  449. package/client/dist/assets/settings-B9ilOSYO.js +0 -1
  450. package/client/dist/assets/settings-BqlWHRHA.js +0 -1
  451. package/client/dist/assets/settings-D8dlqt4d.js +0 -1
  452. package/client/dist/assets/settings-DAZqjX2a.js +0 -1
  453. package/client/dist/assets/settings-DRh39v1S.js +0 -1
  454. package/client/dist/assets/settings-Mj1OJbfd.js +0 -1
  455. package/client/dist/assets/settings-lRReaSYm.js +0 -1
  456. package/client/dist/assets/setup-3832BJCo.js +0 -1
  457. package/client/dist/assets/setup-B8J-gECe.js +0 -1
  458. package/client/dist/assets/setup-BCIOxVsc.js +0 -1
  459. package/client/dist/assets/setup-BciLj_tU.js +0 -1
  460. package/client/dist/assets/setup-CTkE3cfh.js +0 -1
  461. package/client/dist/assets/setup-ajB4rYm-.js +0 -1
  462. package/client/dist/assets/setup-xFO1wNl0.js +0 -1
@@ -0,0 +1 @@
1
+ var e={title:`Spec hinzufügen`,dialogDescription:`Erstelle eine neue Spec aus einer kurzen Idee – sofort oder im Explore-Modus.`,engineAriaLabel:`KI-Engine für diese Spec`,modeTablistLabel:`Modus der Spec-Erstellung`,mode:{quick:`Quick`,explore:`Explore`,raw:`Raw`,exploreHint:`interaktiv`,rawHint:`ohne KI`,quickUnavailable:`für Kimi nicht verfügbar`},modeDescription:{quick:`Beschreibe das Feature oder die Änderung. Hänge Mockups, Briefings oder Daten für mehr Kontext an.`,explore:`Beschreibe eine grobe Idee. Der ausgewählte KI-Assistent hilft dir, sie im Gespräch zu formen – du entscheidest, wann committet wird.`,raw:`Dein Prompt, unverändert – als Spec-Ticket gespeichert. Es läuft jetzt keine KI; zieh es auf eine Rail, um es zu bauen.`},editorPlaceholder:{quick:`z. B. Einen Dark-Mode-Toggle auf der Einstellungsseite ergänzen, der die Nutzerpräferenz speichert…`,explore:`z. B. Dark Mode – unklar, wo der Toggle hingehört oder wie die Einstellung gespeichert wird…`,raw:`Beschreibe das Feature, die Änderung oder die Idee. Markdown, Bilder und Dateien werden unterstützt…`},ideaAriaLabel:`Spec-Idee`,raw:{titleLabel:`Titel`,titlePlaceholder:`Wird automatisch aus deinem Prompt befüllt…`,priorityLabel:`Priorität`,labelsLabel:`Labels`,removeLabel:`Label {{label}} entfernen`,addLabelAria:`Label hinzufügen`,labelPlaceholder:`optional…`,bodyAriaLabel:`Raw-Spec-Inhalt`},priority:{critical:`Kritisch`,high:`Hoch`,medium:`Mittel`,low:`Niedrig`},fromWebsite:`Von einer Website`,fromWebsiteTitle:`Öffne eine echte Webseite, wähle einen Bereich aus und mach daraus eine Spec`,capture:{responsiveSizes_one:`Responsive · {{count}} Größe`,responsiveSizes_other:`Responsive · {{count}} Größen`},submit:{quick:`Spec generieren`,explore:`Weiter`,raw:`Erstellen`,disabledTitle:`Schreib zuerst einen Prompt`},toast:{createFailed:`Spec konnte nicht erstellt werden`,rawSavedWithId:`Gespeichert als #{{id}} · Raw-Spec bereit für Rails`,rawCreated:`Raw-Spec erstellt`,exploreNotWired:`Der Explore-Modus ist in dieser Ansicht nicht angebunden`,generating:`Wird generiert…`,failedToStart:`{{projectName}} · Start fehlgeschlagen`,unsupportedFileType:`Nicht unterstützter Dateityp: {{name}}`,uploadFailed:`Upload fehlgeschlagen für {{name}}: {{message}}`}},t={title:`Feature vorschlagen`,ideaIntro:`Beschreibe deine Idee in einfachen Worten. Claude liest die Codebasis und strukturiert sie zu einem vollständigen Vorschlag.`,ideaAriaLabel:`Feature-Idee`,ideaPlaceholder:`z. B. Nutzer sollen einen Budget-Alarm einrichten können, um benachrichtigt zu werden, wenn die API-Kosten einen Schwellwert überschreiten…`,cmdEnterToSubmit:`Cmd+Enter zum Absenden`,exploreIdea:`Idee erkunden`,exploringTitle:`Deine Idee wird erkundet…`,refiningTitle:`Vorschlag wird verfeinert…`,reviewTitle:`Vorschlag prüfen`,readingCodebase_one:`Codebasis wird gelesen… ({{count}} Datei untersucht)`,readingCodebase_other:`Codebasis wird gelesen… ({{count}} Dateien untersucht)`,refinementAriaLabel:`Verfeinerungs-Feedback`,refinementPlaceholder:`Änderungen anfordern, Einschränkungen ergänzen, Umfang schärfen…`,sendRefinementTitle:`Verfeinerung senden (Cmd+Enter)`,cmdEnterToSend:`Cmd+Enter zum Senden`,confirmCreateIssue:`Aus diesem Vorschlag ein GitHub-Issue erstellen?`,yesCreateIssue:`Ja, Issue erstellen`,createGithubIssue:`GitHub-Issue erstellen`,startOver:`Neu beginnen`,creatingIssueTitle:`GitHub-Issue wird erstellt…`,creatingIssueViaCli:`Issue wird über die GitHub CLI erstellt…`,issueCreated:`Issue erstellt`,proposeAnother:`Weiteren Vorschlag erstellen`,errorTitle:`Etwas ist schiefgelaufen`,errorFallback:`Ein Fehler ist aufgetreten`,tryAgain:`Erneut versuchen`,cancelledTitle:`Abgebrochen`,cancelledBody:`Der Vorschlag wurde abgebrochen.`},n={heading:`Kontextbewusstsein`,custom:`Benutzerdefiniert`,customMix:`Eigene Mischung – siehe Feinabstimmung unten`,estimateUnavailable:`{{tier}} · keine Schätzung verfügbar`,preset:{minimal:`Minimal`,light:`Leicht`,standard:`Standard`,rich:`Umfangreich`,max:`Max`,desktop:`Desktop`},presetCost:{minimal:`1× Kosten · schnellstes erstes Token · keine Specs geladen`,light:`1,3× Kosten · Specrails-Specs geladen`,standard:`1,6× Kosten · Specrails- + OpenSpec-Specs geladen`,rich:`2× Kosten · voller Lesezugriff aufs Repo`,max:`4× Kosten · voller Lesezugriff + Contract-Layer-Verfeinerung`,desktop:`4–6× Kosten · alle Features + Projekt-MCPs & deine freigegebenen MCPs`},smashCapable:`SMASH-fähig`,smashHint:`Contract Layer ist aktiv, daher kann diese Spec später in Sub-Specs zerlegt werden.`,fineTune:`Feinabstimmung`,defaultLabel:`Kontextumfang`,summaryMinimal:`minimal`,tags:{specrails:`specrails`,openspec:`openspec`,codebase:`codebase`,mcp:`mcp`,myMcp:`my-mcp`,contract:`contract`},checks:{specrailsLabel:`specrails-Tickets`,openspecLabel:`openspec-Specs`,fullLabel:`Gesamte Codebasis`,mcpLabel:`Projekt-MCPs`,mcpHint:`.mcp.json-Server`,userMcpLabel:`Meine freigegebenen MCPs`,userMcpHint:`~/.claude Server`,userMcpTooltip:`Deine lokal freigegebenen MCP-Server (claude mcp add)`,exploreOnly:`Nur im Explore-Modus`,providerUnsupported:`Für {{provider}} nicht verfügbar`,contractLabel:`Mit Contract Layer anreichern`,contractHint:`Verfeinerung nach dem Commit · aktiviert SMASH`}},r={label:`KI-Engine`},i={presetHeading:`Modell-Preset`,preset:{balanced:{label:`Ausgewogen`,description:`{{model}} für alle Agents (empfohlen)`},budget:{label:`Budget`,description:`{{model}} für alle Agents – 3× günstiger, schneller`},max:{label:`Max`,description:`{{topModel}} für Architect + PM, {{baseModel}} für den Rest`}},overridesHeading:`Modell-Overrides pro Agent`,overriddenCount:`{{count}} überschrieben`,customBadge:`angepasst`,resetToDefault:`Auf Preset-Standard zurücksetzen`},a={alias:`Claude Code-Alias: {{alias}}`,tier:{balanced:`Ausgewogen`,mostCapable:`Leistungsstärkstes`,fastest:`Schnellstes`,frontier:`Frontier`}},o={heading:`Kostenbewusstsein`,meterAriaLabel:`Kostenstufe`,estimateUnavailable:`nur Stufe – keine Schätzung verfügbar`},s={heading:`Vorgeschlagener Befehl`,run:`Ausführen`,dismiss:`Verwerfen`},c={serverError:`Serverfehler ({{status}})`,connectionFailed:`Verbindung fehlgeschlagen: {{message}}`,sendRefinementFailed:`Verfeinerung konnte nicht gesendet werden`,createIssueFailed:`Issue konnte nicht erstellt werden`},l={proposeModal:e,featureProposal:t,contextScope:n,aiEngine:r,modelSelector:i,modelCombobox:a,costMeter:o,commandProposal:s,errors:c};export{r as aiEngine,s as commandProposal,n as contextScope,o as costMeter,l as default,c as errors,t as featureProposal,a as modelCombobox,i as modelSelector,e as proposeModal};
@@ -0,0 +1 @@
1
+ var e={title:`Añadir spec`,dialogDescription:`Crea una nueva spec a partir de una idea breve, ya sea al instante o mediante el modo Explore.`,engineAriaLabel:`Motor de IA para esta spec`,modeTablistLabel:`Modo de creación de la spec`,mode:{quick:`Quick`,explore:`Explore`,raw:`Raw`,exploreHint:`interactivo`,rawHint:`sin IA`,quickUnavailable:`no disponible para Kimi`},modeDescription:{quick:`Describe la funcionalidad o el cambio. Adjunta mockups, briefs o datos para dar más contexto.`,explore:`Describe una idea aproximada. El asistente de IA seleccionado te ayudará a darle forma conversando — tú decides cuándo confirmarla.`,raw:`Tu prompt, tal cual — guardado como ticket de spec. No se ejecuta IA ahora; arrástralo a un rail para construirlo.`},editorPlaceholder:{quick:`p. ej. Añade un interruptor de modo oscuro a la página de ajustes que recuerde la preferencia del usuario...`,explore:`p. ej. modo oscuro — no tengo claro dónde colocar el interruptor ni cómo persistirlo…`,raw:`Describe la funcionalidad, el cambio o la idea. Admite Markdown, imágenes y archivos…`},ideaAriaLabel:`Idea de la spec`,raw:{titleLabel:`Título`,titlePlaceholder:`Se autocompleta a partir de tu prompt…`,priorityLabel:`Prioridad`,labelsLabel:`Etiquetas`,removeLabel:`Quitar etiqueta {{label}}`,addLabelAria:`Añadir etiqueta`,labelPlaceholder:`opcional…`,bodyAriaLabel:`Cuerpo de la spec Raw`},priority:{critical:`Crítica`,high:`Alta`,medium:`Media`,low:`Baja`},fromWebsite:`Desde una web`,fromWebsiteTitle:`Abre una página web real, selecciona un área y conviértela en una spec`,capture:{responsiveSizes_one:`Responsive · {{count}} tamaño`,responsiveSizes_other:`Responsive · {{count}} tamaños`},submit:{quick:`Generar spec`,explore:`Continuar`,raw:`Crear`,disabledTitle:`Escribe primero un prompt`},toast:{createFailed:`No se pudo crear la spec`,rawSavedWithId:`Guardada como #{{id}} · Spec Raw lista para los rails`,rawCreated:`Spec Raw creada`,exploreNotWired:`El modo Explore no está disponible en esta vista`,generating:`Generando...`,failedToStart:`{{projectName}} · Error al iniciar`,unsupportedFileType:`Tipo de archivo no compatible: {{name}}`,uploadFailed:`Error al subir {{name}}: {{message}}`}},t={title:`Proponer una funcionalidad`,ideaIntro:`Describe tu idea en lenguaje natural. Claude leerá el código y la estructurará en una propuesta completa.`,ideaAriaLabel:`Idea de funcionalidad`,ideaPlaceholder:`p. ej. Quiero que los usuarios puedan configurar una alerta de presupuesto para recibir un aviso cuando los costes de la API superen un umbral...`,cmdEnterToSubmit:`Cmd+Enter para enviar`,exploreIdea:`Explorar idea`,exploringTitle:`Explorando tu idea...`,refiningTitle:`Refinando la propuesta...`,reviewTitle:`Revisar propuesta`,readingCodebase_one:`Leyendo el código... ({{count}} archivo explorado)`,readingCodebase_other:`Leyendo el código... ({{count}} archivos explorados)`,refinementAriaLabel:`Comentarios de refinamiento`,refinementPlaceholder:`Pide cambios, añade restricciones, ajusta el alcance...`,sendRefinementTitle:`Enviar refinamiento (Cmd+Enter)`,cmdEnterToSend:`Cmd+Enter para enviar`,confirmCreateIssue:`¿Crear un issue de GitHub a partir de esta propuesta?`,yesCreateIssue:`Sí, crear issue`,createGithubIssue:`Crear issue de GitHub`,startOver:`Empezar de nuevo`,creatingIssueTitle:`Creando issue de GitHub...`,creatingIssueViaCli:`Creando el issue con la CLI de GitHub...`,issueCreated:`Issue creado`,proposeAnother:`Proponer otra`,errorTitle:`Algo ha ido mal`,errorFallback:`Se ha producido un error`,tryAgain:`Reintentar`,cancelledTitle:`Cancelado`,cancelledBody:`La propuesta se ha cancelado.`},n={heading:`Conocimiento del contexto`,custom:`Personalizado`,customMix:`Combinación personalizada — ver Ajuste fino abajo`,estimateUnavailable:`{{tier}} · estimación no disponible`,preset:{minimal:`Mínimo`,light:`Ligero`,standard:`Estándar`,rich:`Amplio`,max:`Max`,desktop:`Desktop`},presetCost:{minimal:`Coste 1× · primer token más rápido · sin specs cargadas`,light:`Coste 1,3× · specs de Specrails cargadas`,standard:`Coste 1,6× · specs de Specrails + OpenSpec cargadas`,rich:`Coste 2× · acceso de lectura a todo el repo`,max:`Coste 4× · lectura completa + refinamiento de Contract Layer`,desktop:`Coste 4–6× · todas las funciones + MCP del proyecto y tus MCP aprobados`},smashCapable:`Compatible con SMASH`,smashHint:`La Contract Layer está activada, así que esta spec podrá descomponerse después en Sub-Specs.`,fineTune:`Ajuste fino`,defaultLabel:`Alcance del contexto`,summaryMinimal:`mínimo`,tags:{specrails:`specrails`,openspec:`openspec`,codebase:`codebase`,mcp:`mcp`,myMcp:`my-mcp`,contract:`contract`},checks:{specrailsLabel:`tickets de specrails`,openspecLabel:`specs de openspec`,fullLabel:`Código completo`,mcpLabel:`MCP del proyecto`,mcpHint:`servidores de .mcp.json`,userMcpLabel:`Mis MCP aprobados`,userMcpHint:`servidores de ~/.claude`,userMcpTooltip:`Tus servidores MCP aprobados en local (claude mcp add)`,exploreOnly:`Solo en modo Explore`,providerUnsupported:`No disponible para {{provider}}`,contractLabel:`Enriquecer con Contract Layer`,contractHint:`refinamiento post-commit · habilita SMASH`}},r={label:`Motor de IA`},i={presetHeading:`Preset de modelo`,preset:{balanced:{label:`Equilibrado`,description:`{{model}} para todos los agentes (recomendado)`},budget:{label:`Económico`,description:`{{model}} para todos los agentes — 3× más barato y rápido`},max:{label:`Max`,description:`{{topModel}} para arquitecto + PM, {{baseModel}} para el resto`}},overridesHeading:`Modelo por agente`,overriddenCount:`{{count}} modificados`,customBadge:`personalizado`,resetToDefault:`Restablecer al valor del preset`},a={alias:`Alias en Claude Code: {{alias}}`,tier:{balanced:`Equilibrado`,mostCapable:`Más capaz`,fastest:`Más rápido`,frontier:`Frontier`}},o={heading:`Indicador de coste`,meterAriaLabel:`nivel de coste`,estimateUnavailable:`solo nivel — estimación no disponible`},s={heading:`Comando sugerido`,run:`Ejecutar`,dismiss:`Descartar`},c={serverError:`Error del servidor ({{status}})`,connectionFailed:`Error de conexión: {{message}}`,sendRefinementFailed:`No se pudo enviar el refinamiento`,createIssueFailed:`No se pudo crear el issue`},l={proposeModal:e,featureProposal:t,contextScope:n,aiEngine:r,modelSelector:i,modelCombobox:a,costMeter:o,commandProposal:s,errors:c};export{r as aiEngine,s as commandProposal,n as contextScope,o as costMeter,l as default,c as errors,t as featureProposal,a as modelCombobox,i as modelSelector,e as proposeModal};
@@ -0,0 +1 @@
1
+ var e={title:`Adicionar Spec`,dialogDescription:`Crie uma nova spec a partir de uma ideia curta, imediatamente ou através do modo Explore.`,engineAriaLabel:`Motor de IA para esta spec`,modeTablistLabel:`Modo de criação da spec`,mode:{quick:`Quick`,explore:`Explore`,raw:`Raw`,exploreHint:`interativo`,rawHint:`sem IA`,quickUnavailable:`indisponível para Kimi`},modeDescription:{quick:`Descreva a funcionalidade ou alteração. Anexe mockups, briefs ou dados para mais contexto.`,explore:`Descreva uma ideia aproximada. O assistente de IA selecionado vai ajudá-lo a dar-lhe forma através de conversa — você decide quando confirmar.`,raw:`O seu prompt, tal como está — guardado como ticket de spec. Sem IA agora; arraste-o para um rail para o construir.`},editorPlaceholder:{quick:`p. ex. Adicionar um interruptor de modo escuro à página de definições que persista a preferência do utilizador...`,explore:`p. ex. modo escuro — não sei bem onde colocar o interruptor nem como persistir a preferência…`,raw:`Descreva a funcionalidade, alteração ou ideia. Suporta Markdown, imagens e ficheiros…`},ideaAriaLabel:`Ideia da spec`,raw:{titleLabel:`Título`,titlePlaceholder:`Preenchido automaticamente a partir do seu prompt…`,priorityLabel:`Prioridade`,labelsLabel:`Etiquetas`,removeLabel:`Remover etiqueta {{label}}`,addLabelAria:`Adicionar etiqueta`,labelPlaceholder:`opcional…`,bodyAriaLabel:`Corpo da spec Raw`},priority:{critical:`Crítica`,high:`Alta`,medium:`Média`,low:`Baixa`},fromWebsite:`A partir de um website`,fromWebsiteTitle:`Abra uma página web real, selecione uma área e converta-a numa spec`,capture:{responsiveSizes_one:`Responsivo · {{count}} tamanho`,responsiveSizes_other:`Responsivo · {{count}} tamanhos`},submit:{quick:`Gerar Spec`,explore:`Continuar`,raw:`Criar`,disabledTitle:`Escreva primeiro um prompt`},toast:{createFailed:`Falha ao criar a spec`,rawSavedWithId:`Guardada como #{{id}} · Spec Raw pronta para os rails`,rawCreated:`Spec Raw criada`,exploreNotWired:`O modo Explore não está disponível nesta vista`,generating:`A gerar...`,failedToStart:`{{projectName}} · Falha ao iniciar`,unsupportedFileType:`Tipo de ficheiro não suportado: {{name}}`,uploadFailed:`Falha no carregamento de {{name}}: {{message}}`}},t={title:`Propor uma funcionalidade`,ideaIntro:`Descreva a sua ideia em linguagem simples. O Claude vai ler a base de código e estruturá-la numa proposta completa.`,ideaAriaLabel:`Ideia de funcionalidade`,ideaPlaceholder:`p. ex. Quero que os utilizadores possam definir um alerta de orçamento para serem notificados quando os custos de API excederem um limite...`,cmdEnterToSubmit:`Cmd+Enter para submeter`,exploreIdea:`Explorar ideia`,exploringTitle:`A explorar a sua ideia...`,refiningTitle:`A refinar a proposta...`,reviewTitle:`Rever proposta`,readingCodebase_one:`A ler a base de código... ({{count}} ficheiro explorado)`,readingCodebase_other:`A ler a base de código... ({{count}} ficheiros explorados)`,refinementAriaLabel:`Feedback de refinamento`,refinementPlaceholder:`Peça alterações, adicione restrições, ajuste o âmbito...`,sendRefinementTitle:`Enviar refinamento (Cmd+Enter)`,cmdEnterToSend:`Cmd+Enter para enviar`,confirmCreateIssue:`Criar uma Issue do GitHub a partir desta proposta?`,yesCreateIssue:`Sim, criar issue`,createGithubIssue:`Criar Issue do GitHub`,startOver:`Recomeçar`,creatingIssueTitle:`A criar a Issue do GitHub...`,creatingIssueViaCli:`A criar a issue através da CLI do GitHub...`,issueCreated:`Issue criada`,proposeAnother:`Propor outra`,errorTitle:`Algo correu mal`,errorFallback:`Ocorreu um erro`,tryAgain:`Tentar novamente`,cancelledTitle:`Cancelado`,cancelledBody:`A proposta foi cancelada.`},n={heading:`Consciência de contexto`,custom:`Personalizado`,customMix:`Combinação personalizada — ver Ajuste fino abaixo`,estimateUnavailable:`{{tier}} · estimativa indisponível`,preset:{minimal:`Mínimo`,light:`Leve`,standard:`Padrão`,rich:`Rico`,max:`Máx`,desktop:`Desktop`},presetCost:{minimal:`custo 1× · primeiro token mais rápido · sem specs carregadas`,light:`custo 1,3× · specs do Specrails carregadas`,standard:`custo 1,6× · specs do Specrails + OpenSpec carregadas`,rich:`custo 2× · acesso de leitura a todo o repositório`,max:`custo 4× · leitura total + refinamento Contract Layer`,desktop:`custo 4–6× · todas as funcionalidades + MCPs do projeto e os seus MCPs aprovados`},smashCapable:`Compatível com SMASH`,smashHint:`O Contract Layer está ativo, por isso esta spec pode mais tarde ser decomposta em Sub-Specs.`,fineTune:`Ajuste fino`,defaultLabel:`Âmbito de contexto`,summaryMinimal:`mínimo`,tags:{specrails:`specrails`,openspec:`openspec`,codebase:`codebase`,mcp:`mcp`,myMcp:`my-mcp`,contract:`contract`},checks:{specrailsLabel:`tickets specrails`,openspecLabel:`specs openspec`,fullLabel:`Base de código completa`,mcpLabel:`MCPs do projeto`,mcpHint:`servidores .mcp.json`,userMcpLabel:`Os meus MCPs aprovados`,userMcpHint:`servidores ~/.claude`,userMcpTooltip:`Os seus servidores MCP aprovados localmente (claude mcp add)`,exploreOnly:`Apenas no modo Explore`,providerUnsupported:`Indisponível para {{provider}}`,contractLabel:`Enriquecer com Contract Layer`,contractHint:`refinamento pós-commit · ativa o SMASH`}},r={label:`Motor de IA`},i={presetHeading:`Predefinição de modelo`,preset:{balanced:{label:`Equilibrado`,description:`{{model}} para todos os agentes (recomendado)`},budget:{label:`Económico`,description:`{{model}} para todos os agentes — 3x mais barato, mais rápido`},max:{label:`Máx`,description:`{{topModel}} para arquiteto + PM, {{baseModel}} para os restantes`}},overridesHeading:`Substituições de modelo por agente`,overriddenCount:`{{count}} substituídos`,customBadge:`personalizado`,resetToDefault:`Repor a predefinição`},a={alias:`Alias no Claude Code: {{alias}}`,tier:{balanced:`Equilibrado`,mostCapable:`Mais capaz`,fastest:`Mais rápido`,frontier:`Frontier`}},o={heading:`Consciência de custos`,meterAriaLabel:`nível de custo`,estimateUnavailable:`apenas nível — estimativa indisponível`},s={heading:`Comando sugerido`,run:`Executar`,dismiss:`Dispensar`},c={serverError:`Erro do servidor ({{status}})`,connectionFailed:`Falha na ligação: {{message}}`,sendRefinementFailed:`Falha ao enviar o refinamento`,createIssueFailed:`Falha ao criar a issue`},l={proposeModal:e,featureProposal:t,contextScope:n,aiEngine:r,modelSelector:i,modelCombobox:a,costMeter:o,commandProposal:s,errors:c};export{r as aiEngine,s as commandProposal,n as contextScope,o as costMeter,l as default,c as errors,t as featureProposal,a as modelCombobox,i as modelSelector,e as proposeModal};
@@ -0,0 +1 @@
1
+ var e={title:`Ajouter une spec`,dialogDescription:`Créez une nouvelle spec à partir d'une idée courte, immédiatement ou via le mode Explore.`,engineAriaLabel:`Moteur IA pour cette spec`,modeTablistLabel:`Mode de création de la spec`,mode:{quick:`Quick`,explore:`Explore`,raw:`Raw`,exploreHint:`interactif`,rawHint:`sans IA`,quickUnavailable:`indisponible pour Kimi`},modeDescription:{quick:`Décrivez la fonctionnalité ou le changement. Joignez des maquettes, des briefs ou des données pour plus de contexte.`,explore:`Décrivez une idée approximative. L’assistant IA sélectionné vous aidera à la façonner par la conversation — vous décidez quand la valider.`,raw:`Votre prompt, tel quel — enregistré comme ticket de spec. Aucune IA n'est lancée maintenant ; glissez-le sur un rail pour le construire.`},editorPlaceholder:{quick:`ex. Ajouter un toggle de mode sombre à la page des réglages, qui persiste la préférence de l'utilisateur…`,explore:`ex. mode sombre — pas sûr d'où placer le toggle ni comment persister le choix…`,raw:`Décrivez la fonctionnalité, le changement ou l'idée. Markdown, images et fichiers pris en charge…`},ideaAriaLabel:`Idée de spec`,raw:{titleLabel:`Titre`,titlePlaceholder:`Rempli automatiquement depuis votre prompt…`,priorityLabel:`Priorité`,labelsLabel:`Labels`,removeLabel:`Supprimer le label {{label}}`,addLabelAria:`Ajouter un label`,labelPlaceholder:`optionnel…`,bodyAriaLabel:`Corps de la spec Raw`},priority:{critical:`Critique`,high:`Haute`,medium:`Moyenne`,low:`Basse`},fromWebsite:`Depuis un site web`,fromWebsiteTitle:`Ouvrez une vraie page web, sélectionnez une zone et transformez-la en spec`,capture:{responsiveSizes_one:`Responsive · {{count}} taille`,responsiveSizes_other:`Responsive · {{count}} tailles`},submit:{quick:`Générer la spec`,explore:`Continuer`,raw:`Créer`,disabledTitle:`Écrivez d'abord un prompt`},toast:{createFailed:`Échec de la création de la spec`,rawSavedWithId:`Enregistrée comme #{{id}} · Spec Raw prête pour les rails`,rawCreated:`Spec Raw créée`,exploreNotWired:`Le mode Explore n'est pas câblé dans cette vue`,generating:`Génération…`,failedToStart:`{{projectName}} · Échec du démarrage`,unsupportedFileType:`Type de fichier non pris en charge : {{name}}`,uploadFailed:`Échec de l'upload de {{name}} : {{message}}`}},t={title:`Proposer une fonctionnalité`,ideaIntro:`Décrivez votre idée en langage courant. Claude lira le codebase et la structurera en une proposition complète.`,ideaAriaLabel:`Idée de fonctionnalité`,ideaPlaceholder:`ex. Je veux que les utilisateurs puissent définir une alerte de budget pour être notifiés quand les coûts d'API dépassent un seuil…`,cmdEnterToSubmit:`Cmd+Entrée pour envoyer`,exploreIdea:`Explorer l'idée`,exploringTitle:`Exploration de votre idée…`,refiningTitle:`Affinage de la proposition…`,reviewTitle:`Relire la proposition`,readingCodebase_one:`Lecture du codebase… ({{count}} fichier exploré)`,readingCodebase_other:`Lecture du codebase… ({{count}} fichiers explorés)`,refinementAriaLabel:`Retour d'affinage`,refinementPlaceholder:`Demandez des changements, ajoutez des contraintes, affinez le périmètre…`,sendRefinementTitle:`Envoyer l'affinage (Cmd+Entrée)`,cmdEnterToSend:`Cmd+Entrée pour envoyer`,confirmCreateIssue:`Créer une issue GitHub à partir de cette proposition ?`,yesCreateIssue:`Oui, créer l'issue`,createGithubIssue:`Créer une issue GitHub`,startOver:`Recommencer`,creatingIssueTitle:`Création de l'issue GitHub…`,creatingIssueViaCli:`Création de l'issue via la CLI GitHub…`,issueCreated:`Issue créée`,proposeAnother:`Proposer une autre`,errorTitle:`Une erreur est survenue`,errorFallback:`Une erreur s'est produite`,tryAgain:`Réessayer`,cancelledTitle:`Annulé`,cancelledBody:`La proposition a été annulée.`},n={heading:`Prise en compte du contexte`,custom:`Personnalisé`,customMix:`Mix personnalisé — voir Réglages fins ci-dessous`,estimateUnavailable:`{{tier}} · estimation indisponible`,preset:{minimal:`Minimal`,light:`Léger`,standard:`Standard`,rich:`Riche`,max:`Max`,desktop:`Desktop`},presetCost:{minimal:`coût 1× · premier token le plus rapide · aucune spec chargée`,light:`coût 1,3× · specs Specrails chargées`,standard:`coût 1,6× · specs Specrails + OpenSpec chargées`,rich:`coût 2× · accès complet en lecture au repo`,max:`coût 4× · lecture complète + affinage Contract Layer`,desktop:`coût 4–6× · toutes les fonctionnalités + MCP du projet et vos MCP approuvés`},smashCapable:`Compatible SMASH`,smashHint:`Le Contract Layer est activé, donc cette spec pourra plus tard être décomposée en sous-specs.`,fineTune:`Réglages fins`,defaultLabel:`Portée du contexte`,summaryMinimal:`minimal`,tags:{specrails:`specrails`,openspec:`openspec`,codebase:`codebase`,mcp:`mcp`,myMcp:`mes-mcp`,contract:`contract`},checks:{specrailsLabel:`tickets specrails`,openspecLabel:`specs openspec`,fullLabel:`Codebase complet`,mcpLabel:`MCP du projet`,mcpHint:`serveurs .mcp.json`,userMcpLabel:`Mes MCP approuvés`,userMcpHint:`serveurs ~/.claude`,userMcpTooltip:`Vos serveurs MCP approuvés localement (claude mcp add)`,exploreOnly:`Mode Explore uniquement`,providerUnsupported:`Indisponible pour {{provider}}`,contractLabel:`Enrichir avec le Contract Layer`,contractHint:`affinage post-commit · active SMASH`}},r={label:`Moteur IA`},i={presetHeading:`Préréglage de modèle`,preset:{balanced:{label:`Équilibré`,description:`{{model}} pour tous les agents (recommandé)`},budget:{label:`Budget`,description:`{{model}} pour tous les agents — 3× moins cher, plus rapide`},max:{label:`Max`,description:`{{topModel}} pour l'architecte + le PM, {{baseModel}} pour le reste`}},overridesHeading:`Surcharges de modèle par agent`,overriddenCount:`{{count}} surchargé(s)`,customBadge:`personnalisé`,resetToDefault:`Réinitialiser au préréglage par défaut`},a={alias:`Alias Claude Code : {{alias}}`,tier:{balanced:`Équilibré`,mostCapable:`Le plus capable`,fastest:`Le plus rapide`,frontier:`Frontier`}},o={heading:`Estimation du coût`,meterAriaLabel:`palier de coût`,estimateUnavailable:`palier uniquement — estimation indisponible`},s={heading:`Commande suggérée`,run:`Exécuter`,dismiss:`Ignorer`},c={serverError:`Erreur serveur ({{status}})`,connectionFailed:`Échec de la connexion : {{message}}`,sendRefinementFailed:`Échec de l'envoi de l'affinage`,createIssueFailed:`Échec de la création de l'issue`},l={proposeModal:e,featureProposal:t,contextScope:n,aiEngine:r,modelSelector:i,modelCombobox:a,costMeter:o,commandProposal:s,errors:c};export{r as aiEngine,s as commandProposal,n as contextScope,o as costMeter,l as default,c as errors,t as featureProposal,a as modelCombobox,i as modelSelector,e as proposeModal};
@@ -0,0 +1 @@
1
+ var e={title:`添加 Spec`,dialogDescription:`用一句简短想法创建新 spec——可立即生成,也可通过 Explore 模式打磨。`,engineAriaLabel:`此 spec 使用的 AI 引擎`,modeTablistLabel:`Spec 创建模式`,mode:{quick:`Quick`,explore:`Explore`,raw:`Raw`,exploreHint:`交互式`,rawHint:`无 AI`,quickUnavailable:`Kimi 不可用`},modeDescription:{quick:`描述功能或改动。可附上原型图、简报或数据以提供更多上下文。`,explore:`描述一个粗略的想法。所选 AI 助手会通过对话帮你打磨——由你决定何时提交。`,raw:`你的 prompt 原样保存为 spec 工单。现在不运行 AI;拖到 rail 上即可开始构建。`},editorPlaceholder:{quick:`例如:在设置页添加深色模式开关,并持久化用户偏好…`,explore:`例如:深色模式——还不确定开关放在哪里、偏好如何持久化…`,raw:`描述功能、改动或想法。支持 Markdown、图片和文件…`},ideaAriaLabel:`Spec 想法`,raw:{titleLabel:`标题`,titlePlaceholder:`将根据你的 prompt 自动填充…`,priorityLabel:`优先级`,labelsLabel:`标签`,removeLabel:`移除标签 {{label}}`,addLabelAria:`添加标签`,labelPlaceholder:`可选…`,bodyAriaLabel:`Raw spec 正文`},priority:{critical:`紧急`,high:`高`,medium:`中`,low:`低`},fromWebsite:`从网站创建`,fromWebsiteTitle:`打开真实网页,框选一块区域,把它变成 spec`,capture:{responsiveSizes_one:`响应式 · {{count}} 个尺寸`,responsiveSizes_other:`响应式 · {{count}} 个尺寸`},submit:{quick:`生成 Spec`,explore:`继续`,raw:`创建`,disabledTitle:`请先输入 prompt`},toast:{createFailed:`创建 spec 失败`,rawSavedWithId:`已保存为 #{{id}} · Raw spec 可放入 rail`,rawCreated:`Raw spec 已创建`,exploreNotWired:`此视图未接入 Explore 模式`,generating:`正在生成…`,failedToStart:`{{projectName}} · 启动失败`,unsupportedFileType:`不支持的文件类型:{{name}}`,uploadFailed:`{{name}} 上传失败:{{message}}`}},t={title:`提议一个功能`,ideaIntro:`用自然语言描述你的想法。Claude 会阅读代码库并将其整理成完整提案。`,ideaAriaLabel:`功能想法`,ideaPlaceholder:`例如:我希望用户可以设置预算提醒,当 API 成本超过阈值时收到通知…`,cmdEnterToSubmit:`Cmd+Enter 提交`,exploreIdea:`探索想法`,exploringTitle:`正在探索你的想法…`,refiningTitle:`正在完善提案…`,reviewTitle:`审阅提案`,readingCodebase_one:`正在阅读代码库…(已浏览 {{count}} 个文件)`,readingCodebase_other:`正在阅读代码库…(已浏览 {{count}} 个文件)`,refinementAriaLabel:`完善反馈`,refinementPlaceholder:`提出修改、添加约束、调整范围…`,sendRefinementTitle:`发送完善意见(Cmd+Enter)`,cmdEnterToSend:`Cmd+Enter 发送`,confirmCreateIssue:`根据此提案创建 GitHub Issue?`,yesCreateIssue:`是,创建 Issue`,createGithubIssue:`创建 GitHub Issue`,startOver:`重新开始`,creatingIssueTitle:`正在创建 GitHub Issue…`,creatingIssueViaCli:`正在通过 GitHub CLI 创建 Issue…`,issueCreated:`Issue 已创建`,proposeAnother:`再提一个`,errorTitle:`出错了`,errorFallback:`发生错误`,tryAgain:`重试`,cancelledTitle:`已取消`,cancelledBody:`提案已取消。`},n={heading:`上下文感知`,custom:`自定义`,customMix:`自定义组合——见下方“微调”`,estimateUnavailable:`{{tier}} · 无法估算`,preset:{minimal:`极简`,light:`轻量`,standard:`标准`,rich:`丰富`,max:`最大`,desktop:`Desktop`},presetCost:{minimal:`1× 成本 · 首 token 最快 · 不加载 spec`,light:`1.3× 成本 · 加载 Specrails spec`,standard:`1.6× 成本 · 加载 Specrails + OpenSpec spec`,rich:`2× 成本 · 完整仓库读取权限`,max:`4× 成本 · 完整读取 + Contract Layer 增强`,desktop:`4–6× 成本 · 全部功能 + 项目及你已批准的 MCP`},smashCapable:`支持 SMASH`,smashHint:`已启用 Contract Layer,此 spec 之后可以被拆解为子 spec。`,fineTune:`微调`,defaultLabel:`上下文范围`,summaryMinimal:`极简`,tags:{specrails:`specrails`,openspec:`openspec`,codebase:`codebase`,mcp:`mcp`,myMcp:`my-mcp`,contract:`contract`},checks:{specrailsLabel:`specrails 工单`,openspecLabel:`openspec spec`,fullLabel:`完整代码库`,mcpLabel:`项目 MCP`,mcpHint:`.mcp.json 服务器`,userMcpLabel:`我已批准的 MCP`,userMcpHint:`~/.claude 服务器`,userMcpTooltip:`你在本地批准的 MCP 服务器(claude mcp add)`,exploreOnly:`仅限 Explore 模式`,providerUnsupported:`{{provider}} 不支持此功能`,contractLabel:`用 Contract Layer 增强`,contractHint:`提交后增强 · 启用 SMASH`}},r={label:`AI 引擎`},i={presetHeading:`模型预设`,preset:{balanced:{label:`均衡`,description:`所有 Agent 使用 {{model}}(推荐)`},budget:{label:`经济`,description:`所有 Agent 使用 {{model}}——便宜 3 倍、更快`},max:{label:`最强`,description:`架构师 + PM 使用 {{topModel}},其余使用 {{baseModel}}`}},overridesHeading:`按 Agent 覆写模型`,overriddenCount:`已覆写 {{count}} 个`,customBadge:`自定义`,resetToDefault:`重置为预设默认值`},a={alias:`Claude Code 别名:{{alias}}`,tier:{balanced:`均衡`,mostCapable:`能力最强`,fastest:`最快`,frontier:`前沿`}},o={heading:`成本感知`,meterAriaLabel:`成本级别`,estimateUnavailable:`仅显示级别——无法估算`},s={heading:`建议的命令`,run:`运行`,dismiss:`忽略`},c={serverError:`服务器错误({{status}})`,connectionFailed:`连接失败:{{message}}`,sendRefinementFailed:`发送完善意见失败`,createIssueFailed:`创建 Issue 失败`},l={proposeModal:e,featureProposal:t,contextScope:n,aiEngine:r,modelSelector:i,modelCombobox:a,costMeter:o,commandProposal:s,errors:c};export{r as aiEngine,s as commandProposal,n as contextScope,o as costMeter,l as default,c as errors,t as featureProposal,a as modelCombobox,i as modelSelector,e as proposeModal};
@@ -0,0 +1 @@
1
+ var e={title:`スペックを追加`,dialogDescription:`短いアイデアから、即時または Explore モードで新しいスペックを作成します。`,engineAriaLabel:`このスペックの AI エンジン`,modeTablistLabel:`スペック作成モード`,mode:{quick:`クイック`,explore:`Explore`,raw:`Raw`,exploreHint:`対話型`,rawHint:`AIなし`,quickUnavailable:`Kimiでは利用不可`},modeDescription:{quick:`機能や変更内容を記述してください。モックアップ、ブリーフ、データを添付するとコンテキストが充実します。`,explore:`大まかなアイデアを記述してください。選択した AI アシスタントが対話を通じて形にするのを手伝います — コミットのタイミングはあなたが決めます。`,raw:`プロンプトをそのままスペックチケットとして保存します。今は AI を実行しません。レールにドラッグするとビルドされます。`},editorPlaceholder:{quick:`例: 設定ページにダークモードの切り替えを追加し、ユーザーの設定を永続化する...`,explore:`例: ダークモード — トグルの配置や永続化の方法はまだ未定…`,raw:`機能、変更、アイデアを記述してください。Markdown、画像、ファイルに対応…`},ideaAriaLabel:`スペックのアイデア`,raw:{titleLabel:`タイトル`,titlePlaceholder:`プロンプトから自動入力…`,priorityLabel:`優先度`,labelsLabel:`ラベル`,removeLabel:`ラベル {{label}} を削除`,addLabelAria:`ラベルを追加`,labelPlaceholder:`任意…`,bodyAriaLabel:`Raw スペック本文`},priority:{critical:`クリティカル`,high:`高`,medium:`中`,low:`低`},fromWebsite:`ウェブサイトから`,fromWebsiteTitle:`実際のウェブページを開き、範囲を選択してスペックに変換`,capture:{responsiveSizes_one:`レスポンシブ · {{count}} サイズ`,responsiveSizes_other:`レスポンシブ · {{count}} サイズ`},submit:{quick:`スペックを生成`,explore:`続行`,raw:`作成`,disabledTitle:`先にプロンプトを入力してください`},toast:{createFailed:`スペックの作成に失敗しました`,rawSavedWithId:`#{{id}} として保存 · Raw スペックはレールで使用可能`,rawCreated:`Raw スペックを作成しました`,exploreNotWired:`このビューでは Explore モードは利用できません`,generating:`生成中...`,failedToStart:`{{projectName}} · 開始に失敗しました`,unsupportedFileType:`未対応のファイル形式: {{name}}`,uploadFailed:`{{name}} のアップロードに失敗しました: {{message}}`}},t={title:`機能を提案`,ideaIntro:`アイデアを平易な言葉で記述してください。Claude がコードベースを読み取り、完全な提案として構造化します。`,ideaAriaLabel:`機能のアイデア`,ideaPlaceholder:`例: API コストがしきい値を超えたときに通知される予算アラートをユーザーが設定できるようにしたい...`,cmdEnterToSubmit:`Cmd+Enter で送信`,exploreIdea:`アイデアを探索`,exploringTitle:`アイデアを探索中...`,refiningTitle:`提案を改良中...`,reviewTitle:`提案をレビュー`,readingCodebase_one:`コードベースを読み取り中...({{count}} ファイル探索済み)`,readingCodebase_other:`コードベースを読み取り中...({{count}} ファイル探索済み)`,refinementAriaLabel:`改良フィードバック`,refinementPlaceholder:`変更を依頼、制約を追加、スコープを調整...`,sendRefinementTitle:`改良を送信 (Cmd+Enter)`,cmdEnterToSend:`Cmd+Enter で送信`,confirmCreateIssue:`この提案から GitHub Issue を作成しますか?`,yesCreateIssue:`はい、作成します`,createGithubIssue:`GitHub Issue を作成`,startOver:`最初からやり直す`,creatingIssueTitle:`GitHub Issue を作成中...`,creatingIssueViaCli:`GitHub CLI で Issue を作成中...`,issueCreated:`Issue を作成しました`,proposeAnother:`別の提案をする`,errorTitle:`問題が発生しました`,errorFallback:`エラーが発生しました`,tryAgain:`再試行`,cancelledTitle:`キャンセルされました`,cancelledBody:`提案はキャンセルされました。`},n={heading:`コンテキスト認識`,custom:`カスタム`,customMix:`カスタム構成 — 下の「微調整」を参照`,estimateUnavailable:`{{tier}} · 見積もり不可`,preset:{minimal:`最小`,light:`ライト`,standard:`標準`,rich:`リッチ`,max:`最大`,desktop:`Desktop`},presetCost:{minimal:`1× コスト · 最速の初回トークン · スペック読み込みなし`,light:`1.3× コスト · Specrails スペックを読み込み`,standard:`1.6× コスト · Specrails + OpenSpec スペックを読み込み`,rich:`2× コスト · リポジトリ全体の読み取りアクセス`,max:`4× コスト · 全読み取り + Contract Layer 改良`,desktop:`4–6× コスト · 全機能 + プロジェクトおよび承認済み MCP`},smashCapable:`SMASH 対応`,smashHint:`Contract Layer が有効なため、このスペックは後で Sub-Spec に分解できます。`,fineTune:`微調整`,defaultLabel:`コンテキストスコープ`,summaryMinimal:`最小`,tags:{specrails:`specrails`,openspec:`openspec`,codebase:`codebase`,mcp:`mcp`,myMcp:`my-mcp`,contract:`contract`},checks:{specrailsLabel:`specrails チケット`,openspecLabel:`openspec スペック`,fullLabel:`コードベース全体`,mcpLabel:`プロジェクト MCP`,mcpHint:`.mcp.json のサーバー`,userMcpLabel:`承認済みの MCP`,userMcpHint:`~/.claude のサーバー`,userMcpTooltip:`ローカルで承認済みの MCP サーバー(claude mcp add)`,exploreOnly:`Explore モードのみ`,providerUnsupported:`{{provider}} では利用できません`,contractLabel:`Contract Layer で強化`,contractHint:`コミット後の改良 · SMASH を有効化`}},r={label:`AI エンジン`},i={presetHeading:`モデルプリセット`,preset:{balanced:{label:`バランス`,description:`全エージェントに {{model}}(推奨)`},budget:{label:`節約`,description:`全エージェントに {{model}} — 3倍安く、高速`},max:{label:`最大`,description:`アーキテクトと PM に {{topModel}}、その他に {{baseModel}}`}},overridesHeading:`エージェント別モデルオーバーライド`,overriddenCount:`{{count}} 件オーバーライド`,customBadge:`カスタム`,resetToDefault:`プリセットのデフォルトに戻す`},a={alias:`Claude Code エイリアス: {{alias}}`,tier:{balanced:`バランス`,mostCapable:`最高性能`,fastest:`最速`,frontier:`フロンティア`}},o={heading:`コスト認識`,meterAriaLabel:`コストティア`,estimateUnavailable:`ティアのみ — 見積もり不可`},s={heading:`推奨コマンド`,run:`実行`,dismiss:`閉じる`},c={serverError:`サーバーエラー ({{status}})`,connectionFailed:`接続に失敗しました: {{message}}`,sendRefinementFailed:`改良の送信に失敗しました`,createIssueFailed:`Issue の作成に失敗しました`},l={proposeModal:e,featureProposal:t,contextScope:n,aiEngine:r,modelSelector:i,modelCombobox:a,costMeter:o,commandProposal:s,errors:c};export{r as aiEngine,s as commandProposal,n as contextScope,o as costMeter,l as default,c as errors,t as featureProposal,a as modelCombobox,i as modelSelector,e as proposeModal};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({aiEngine:()=>a,commandProposal:()=>l,contextScope:()=>i,costMeter:()=>c,default:()=>d,errors:()=>u,featureProposal:()=>r,modelCombobox:()=>s,modelSelector:()=>o,proposeModal:()=>n}),n={title:`Add Spec`,dialogDescription:`Create a new spec from a short idea, either immediately or through Explore mode.`,engineAriaLabel:`AI engine for this spec`,modeTablistLabel:`Spec creation mode`,mode:{quick:`Quick`,explore:`Explore`,raw:`Raw`,exploreHint:`interactive`,rawHint:`no AI`,quickUnavailable:`unavailable for Kimi`},modeDescription:{quick:`Describe the feature or change. Attach mockups, briefs, or data for more context.`,explore:`Describe a rough idea. The selected AI assistant will help you shape it through conversation — you decide when to commit.`,raw:`Your prompt, as-is — saved as a spec ticket. No AI runs now; drag it to a rail to build it.`},editorPlaceholder:{quick:`e.g. Add a dark mode toggle to the settings page that persists the user's preference...`,explore:`e.g. dark mode — not sure where the toggle should live or how to persist it…`,raw:`Describe the feature, change, or idea. Markdown, images, and files supported…`},ideaAriaLabel:`Spec idea`,raw:{titleLabel:`Title`,titlePlaceholder:`Auto-filled from your prompt…`,priorityLabel:`Priority`,labelsLabel:`Labels`,removeLabel:`Remove label {{label}}`,addLabelAria:`Add label`,labelPlaceholder:`optional…`,bodyAriaLabel:`Raw spec body`},priority:{critical:`Critical`,high:`High`,medium:`Medium`,low:`Low`},fromWebsite:`From a website`,fromWebsiteTitle:`Open a real web page, select an area, and turn it into a spec`,capture:{responsiveSizes_one:`Responsive · {{count}} size`,responsiveSizes_other:`Responsive · {{count}} sizes`},submit:{quick:`Generate Spec`,explore:`Continue`,raw:`Create`,disabledTitle:`Write a prompt first`},toast:{createFailed:`Failed to create spec`,rawSavedWithId:`Saved as #{{id}} · Raw spec ready for rails`,rawCreated:`Raw spec created`,exploreNotWired:`Explore mode is not wired in this view`,generating:`Generating...`,failedToStart:`{{projectName}} · Failed to start`,unsupportedFileType:`Unsupported file type: {{name}}`,uploadFailed:`Upload failed for {{name}}: {{message}}`}},r={title:`Propose a Feature`,ideaIntro:`Describe your idea in plain language. Claude will read the codebase and structure it into a full proposal.`,ideaAriaLabel:`Feature idea`,ideaPlaceholder:`e.g. I want users to be able to set a budget alert so they get notified when API costs exceed a threshold...`,cmdEnterToSubmit:`Cmd+Enter to submit`,exploreIdea:`Explore Idea`,exploringTitle:`Exploring your idea...`,refiningTitle:`Refining proposal...`,reviewTitle:`Review Proposal`,readingCodebase_one:`Reading codebase... ({{count}} file explored)`,readingCodebase_other:`Reading codebase... ({{count}} files explored)`,refinementAriaLabel:`Refinement feedback`,refinementPlaceholder:`Ask for changes, add constraints, refine scope...`,sendRefinementTitle:`Send refinement (Cmd+Enter)`,cmdEnterToSend:`Cmd+Enter to send`,confirmCreateIssue:`Create a GitHub Issue from this proposal?`,yesCreateIssue:`Yes, create issue`,createGithubIssue:`Create GitHub Issue`,startOver:`Start Over`,creatingIssueTitle:`Creating GitHub Issue...`,creatingIssueViaCli:`Creating issue via GitHub CLI...`,issueCreated:`Issue Created`,proposeAnother:`Propose Another`,errorTitle:`Something went wrong`,errorFallback:`An error occurred`,tryAgain:`Try Again`,cancelledTitle:`Cancelled`,cancelledBody:`The proposal was cancelled.`},i={heading:`Context Awareness`,custom:`Custom`,customMix:`Custom mix — see Fine-tune below`,estimateUnavailable:`{{tier}} · estimate unavailable`,preset:{minimal:`Minimal`,light:`Light`,standard:`Standard`,rich:`Rich`,max:`Max`,desktop:`Desktop`},presetCost:{minimal:`1× cost · fastest first-token · no specs loaded`,light:`1.3× cost · Specrails specs loaded`,standard:`1.6× cost · Specrails + OpenSpec specs loaded`,rich:`2× cost · full repo read access`,max:`4× cost · full read + Contract Layer refinement`,desktop:`4–6× cost · all features + project & your approved MCPs`},smashCapable:`SMASH-capable`,smashHint:`Contract Layer is on, so this spec can later be decomposed into Sub-Specs.`,fineTune:`Fine-tune`,defaultLabel:`Context scope`,summaryMinimal:`minimal`,tags:{specrails:`specrails`,openspec:`openspec`,codebase:`codebase`,mcp:`mcp`,myMcp:`my-mcp`,contract:`contract`},checks:{specrailsLabel:`specrails tickets`,openspecLabel:`openspec specs`,fullLabel:`Full codebase`,mcpLabel:`Project MCPs`,mcpHint:`.mcp.json servers`,userMcpLabel:`My approved MCPs`,userMcpHint:`~/.claude servers`,userMcpTooltip:`Your locally-approved MCP servers (claude mcp add)`,exploreOnly:`Explore mode only`,providerUnsupported:`Unavailable for {{provider}}`,contractLabel:`Enrich with Contract Layer`,contractHint:`post-commit refinement · enables SMASH`}},a={label:`AI engine`},o={presetHeading:`Model preset`,preset:{balanced:{label:`Balanced`,description:`{{model}} for all agents (recommended)`},budget:{label:`Budget`,description:`{{model}} for all agents — 3x cheaper, faster`},max:{label:`Max`,description:`{{topModel}} for architect + PM, {{baseModel}} for rest`}},overridesHeading:`Per-agent model overrides`,overriddenCount:`{{count}} overridden`,customBadge:`custom`,resetToDefault:`Reset to preset default`},s={alias:`Claude Code alias: {{alias}}`,tier:{balanced:`Balanced`,mostCapable:`Most capable`,fastest:`Fastest`,frontier:`Frontier`}},c={heading:`Cost awareness`,meterAriaLabel:`cost tier`,estimateUnavailable:`tier-only — estimate unavailable`},l={heading:`Suggested command`,run:`Run`,dismiss:`Dismiss`},u={serverError:`Server error ({{status}})`,connectionFailed:`Connection failed: {{message}}`,sendRefinementFailed:`Failed to send refinement`,createIssueFailed:`Failed to create issue`},d={proposeModal:n,featureProposal:r,contextScope:i,aiEngine:a,modelSelector:o,modelCombobox:s,costMeter:c,commandProposal:l,errors:u};export{t};
@@ -0,0 +1 @@
1
+ var e=`Contrôle des missions`,t=`Pilotez Specrails en discutant`,n=`Contrôle des missions`,r=`Demandez à l'agent ce que vous voulez…`,i=`Envoyer`,a=`Arrêter`,o=`Copier`,s={openPreview:`Prévisualiser {{name}}`,openDownload:`Télécharger {{name}}`,previewTitle:`Aperçu de {{name}}`,downloadTitle:`Télécharger le fichier ?`,downloadPrompt:`Ce fichier ne peut pas être prévisualisé ici. Voulez-vous le télécharger ?`,download:`Télécharger`,cancelDownload:`Pas maintenant`,loading:`Préparation du fichier…`,loadFailed:`Impossible de charger la pièce jointe`,loadError:`Impossible de charger la pièce jointe : {{error}}`},c=`Agrandir`,l=`Restaurer`,u=`Réduire`,d=`Fermer`,f=`Nouvelle mission`,p=`Quelle est la mission ?`,m=`Choisissez un projet, puis demandez. Le tableau se met à jour en direct pendant que l'agent travaille.`,h=`Réflexion…`,g=`Connexion…`,_=`Consultation de l'app…`,v={compact:`Compact`,comfortable:`Confortable`,max:`Agrandir`},y={label:`Modèle`,loading:`Chargement des modèles…`,unavailable:`Modèles indisponibles`},b={hint:`Parcours de l'historique — tapez pour modifier, ↑↓ pour naviguer`},x={queued:`En file`,send:`Envoyer dans la file`,sendHint:`L'agent travaille encore — ce message sera mis en file puis traité`,placeholder:`Ajoutez-en pendant que l'agent travaille — mis en file…`},S={editing:`Modification du message en file {{n}} sur {{m}}`,hint:`↑↓ pour naviguer · Entrée enregistre · Échap annule`,save:`Enregistrer le message en file`,cancel:`Annuler la modification`,dispatched:`Ce message en file a déjà été envoyé — votre texte est conservé comme brouillon`,saveFailed:`Impossible d'enregistrer le message en file`},C={branch:`Branche`,detached:`(détaché)`,dirty:`Modifications non commitées`,switched:`Basculé sur {{branch}}`,switchFailed:`Impossible de changer de branche`,lockedWhileWorking:`Branche verrouillée pendant que l'agent travaille`,searchPlaceholder:`Rechercher des branches…`,noMatches:`Aucune branche ne correspond`,worktrees:`Worktrees`,worktreePathCopied:`Chemin du worktree copié`,copyWorktreePath:`Copier le chemin du worktree`},w={label:`Fournisseur`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},T={cycleHint:`⇧⇥ pour changer`,observe:{name:`Observer`,desc:`Lecture seule — rien ne change`},edit:{name:`Modifier`,desc:`Créer et modifier (réversible)`},operate:{name:`Opérer`,desc:`Lancer l'IA — c'est payant`},autonomous:{name:`Autonome`,desc:`Supprimer et arrêter — irréversible`},lockedTitle:`Nécessite un niveau supérieur`,lockedBody:`Cette action nécessite le niveau « {{level}} ». Vous êtes sur « {{current}} ».`,raiseHint:`⇧⇥ pour augmenter le niveau, ou demandez autrement.`},E={title:`Confirmer l'action`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Approuver`,cancel:`Annuler`,dontAskAgain:`Ne plus demander durant cette session`,approved:`Approuvé`,cancelled:`Annulé`},D={home:`Accueil`,searchPlaceholder:`Parlez à Specrails…`,searchProjectsPlaceholder:`Rechercher des projets…`,recents:`Récents`,allProjects:`Tous les projets`,searchAll:`Rechercher dans tous les projets`,addProject:`Ajouter un projet…`,homeHint:`Aucun projet sélectionné — opération sur tous les projets.`,askCreateOrSearch:`Aucun projet n'est sélectionné. Voulez-vous créer un nouveau projet ou rechercher dans tous les projets ?`},O={remove:`Retirer {{label}}`,addContextAction:`Ajouter un contexte ou une action`,filtering:`Filtrage de "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`Aucun résultat`,noMatchesFor:`Aucun résultat pour "{{query}}"`,mode:{reference:{title:`Référence`,hint:`@ projets, specs, missions`},trace:{title:`Trace`,hint:`# jobs, exécutions, IDs`},action:{title:`Action`,hint:`/ commandes pour ce contexte`}},plus:{reference:`Référence`,referenceHint:`Projets, specs, missions`,trace:`Trace`,traceHint:`Jobs, exécutions, IDs`,action:`Action`,actionHint:`Créer, lancer, inspecter`,fileAttachment:`Pièce jointe`,fileAttachmentHint:`Ajouter docs, images, logs`,browserCapture:`Capture navigateur`,browserCaptureHint:`Disponible depuis le navigateur du workspace`}},k={label:`Changer de mission`,untitled:`Nouvelle mission`,new:`Nouvelle mission`,searchPlaceholder:`Rechercher des missions…`,noMatches:`Aucune mission ne correspond`,working:`L'agent travaille`,queuedBadge:`{{n}} en file`,delete:`Supprimer la mission "{{title}}"`,deleteConfirm:`Supprimer ?`,deleteLiveConfirm:`L'agent travaille — supprimer quand même ?`,confirmDelete:`Confirmer la suppression`,cancelDelete:`Garder la mission`,deleteFailed:`Impossible de supprimer la mission`},A={title:`Aucun fournisseur d'IA installé`,body:`L'agent a besoin de Claude, Codex, Gemini ou Kimi sur votre machine. Installez-en un, puis rouvrez l'agent pour discuter.`,placeholder:`Installez un fournisseur d'IA pour utiliser l'agent…`},j={title:`Le MCP Specrails est désactivé`,body:`L'agent a besoin du serveur MCP intégré pour piloter l'app.`,enable:`Activer le MCP Specrails`,enabling:`Activation…`,enabled:`MCP activé`},M={live:`en direct`,queued:`en file`,running:`en cours`,done:`terminé`,failed:`échoué`},N={generic:`Une erreur est survenue. Réessayez.`,busy:`L'agent est occupé. Réessayez dans un instant.`},P={kindAgent:`Mission de l'agent`},F=`Nouvelle mission`,I=`Passer au Contrôle des missions`,L=`Passer au tableau`,R=`Rechercher`,z=`Accueil`,B=`Missions favorites`,V=`Sans titre`,H={title:`Espace de travail`,terminal:`Terminal`,files:`Fichiers`,browser:`Navigateur`,requiresProject:`Sélectionnez un projet pour utiliser cet outil`,resizeCode:`Redimensionner le volet de code`,closeFiles:`Fermer le code`,browserConfirm:`Ajouter à l'agent`,browserCaptured:`Capture ajoutée`,uploadFailed:`Échec du téléversement`,requiresConversation:`Lancez une mission pour utiliser cet outil`,jobs:`Jobs`,closeJobs:`Fermer les jobs`,resizeJobs:`Redimensionner le panneau des jobs`,noJobs:`Aucun job pour l'instant — demandez à l'agent d'en lancer un`},U=`Joindre un fichier`,W=`Supprimer «\xA0{{title}}\xA0»`,G=`Confirmer la suppression de «\xA0{{title}}\xA0»`,K=`Ajouter «\xA0{{title}}\xA0» aux favorites`,q=`Retirer «\xA0{{title}}\xA0» des favorites`,J=`confirmer\xA0?`,Y=`Ce fournisseur ne lit pas encore les images — joignez plutôt des fichiers texte`,X={label:`Effort`,minimal:`Minimal`,low:`Faible`,medium:`Moyen`,high:`Élevé`,xhigh:`Très élevé`,max:`Maximum`,ultra:`Ultra`},Z=JSON.parse(`{"operation":{"inProgress":"Action en cours…","create-pr":"Création de la PR…","publish":"Publication…","discard":"Suppression…","dismiss":"Fermeture du suivi…","poll-merge":"Vérification de la fusion…","reopen":"Réouverture…","merge-local":"Intégration locale…","recover-and-retry":"Création du commit et nouvelle tentative d’envoi du résultat préservé…","acknowledge-no-changes":"Marquage comme terminé…"},"markDone":"Marquer comme terminées","refine":"Affiner","completedNote":"Confirmé — les specs sont passées à Terminé","partialSummary":"{{succeeded}} sur {{total}} terminées ; {{failed}} en échec","unit":{"failed":"échec de l’implémentation","blocked":"livraison bloquée","noChanges":"aucune modification","succeeded":"prête"},"rail":"Rail {{index}}","specCount_one":"{{count}} spec","specCount_other":"{{count}} specs","base":"Branche de base","openPr":"Ouvrir la PR","existingPr":"PR existante","title":{"no_changes":"Aucune modification nécessaire","partial":"Implémentation partielle","delivery_blocked":"Implémentation terminée — la livraison requiert votre attention","update_failed":"Implémentation terminée — échec de la mise à jour","pr_closed":"PR fermée sans fusion","superseded":"Remplacée par une exécution plus récente","existing_pr_updated":"PR existante mise à jour","building":"Implémentation dans un worktree isolé…","buildingExistingPr":"Application des changements sur une PR existante…","paused":"Décision humaine requise","on_review":"Implémentation prête pour la revue","pr_draft":"PR en brouillon créée","pr_draft_degraded":"Livraison de la PR incomplète","pr_ready":"PR prête à être fusionnée","implementation_failed":"Échec de l’implémentation","pr_failed":"Échec de la création de la PR","merged":"PR fusionnée","discarded":"Abandonnée"},"buildingHint":"À la fin, il vous sera proposé de créer la PR.","buildingExistingPrHint":"Specrails travaille sur la branche de la PR existante et poussera les changements de revue vers cette même PR.","paused":"Implémentation en pause","pausedForRun":"En pause sur {{ref}}","resume":"Reprendre","stopExecution":"Arrêter l’exécution","stopExecutionSent":"Signal d’arrêt envoyé","stopExecutionFailed":"Impossible d’arrêter l’exécution","createPr":"Créer la PR","publish":"Publier","checkout":"Changer de branche","checkoutTooltip":"Basculer le dossier principal du projet sur {{branch}}","checkoutSuccess":"Checkout effectué sur {{branch}}","checkoutFailed":"Impossible de faire le checkout de la branche de la PR","checkoutDirtyTitle":"Checkout bloqué pour protéger vos modifications","checkoutDirtyBody":"Le dossier principal du projet contient des modifications non validées. Créez un commit ou mettez-les de côté, puis réessayez. Aucun changement n’a été effectué.","checkoutSafetyUnknownTitle":"Checkout suspendu, car la sécurité n’a pas pu être vérifiée","checkoutSafetyUnknownBody":"Specrails n’a pas pu lire l’état Git du dossier principal du projet. Rien n’a été libéré ni modifié. Réessayez lorsque Git sera disponible.","checkoutNotDeliverableTitle":"Cette branche de PR ne contient pas l’implémentation préservée","checkoutNotDeliverableBody":"Le commit exact de la livraison n’a pas encore été vérifié. Inspectez ou récupérez plutôt le résultat local.","inspectLocalResult":"Inspecter le résultat local","inspectLocalResultTooltip":"Afficher le worktree isolé préservé et copier son chemin","localResultPathCopied":"Chemin du résultat local copié","localResultPath":"Résultat local préservé","localResultUnavailableHere":"Aucun worktree récupérable n’est disponible sur cet ordinateur. Consultez le journal d’exécution depuis la machine où l’opération a été lancée.","recoverAndRetry":"Créer le commit et réessayer l’envoi","recoverAndRetryVerified":"Le commit récupéré {{sha}} est vérifié dans la PR","recoveryStillBlocked":"La récupération locale nécessite encore votre attention","recheckRecovery":"Vérifier à nouveau","recoveryUnavailable":"La récupération n’a pas pu être vérifiée sur cet ordinateur","recoveryUnavailableBody":"Specrails n’a pas pu prouver de manière sûre un résultat unique appartenant à la livraison dans ce clone. Rien n’a été modifié ou supprimé. Consultez le détail de l’étape et les journaux d’exécution. Si le run a été exécuté sur un autre ordinateur, ouvrez-y Specrails puis vérifiez à nouveau.","recoveryDetailSummary":"Détail technique de récupération","retry":"Réessayer","retryPr":"Réessayer la PR","checkMerge":"Vérifier le merge","verifyPr":"Vérifier la PR","discard":"Abandonner","confirmDiscard":"Confirmer l'abandon ?","mergedNote":"Fusionnée — specs passées en Terminé","discardedNote":"Abandonnée — specs renvoyées vers le backlog","implementationFailedNote":"Le run d’implémentation a échoué avant de produire quelque chose de livrable. Ouvrez le journal du run pour inspecter l’échec, puis abandonnez cette carte avant de relancer.","dismiss":"Fermer le suivi","discardLocalResult":"Supprimer le résultat local","retryPush":"Réessayer le push","retryPushVerified":"Push vérifié · le commit {{sha}} est dans la PR","commitAlreadyVerified":"Le commit {{sha}} est déjà vérifié dans la PR","deliveryCommit":"commit {{sha}}","reopen":"Rouvrir","createPartialPr":"Créer une PR avec {{count}}","supersededNote":"Une exécution d’implémentation plus récente a remplacé cette carte.","noChangesExisting":"Aucune nouvelle modification n’était nécessaire ; la PR existante reste inchangée.","noChangesNote":"Aucune modification de code n’était nécessaire. Marquez les specs comme terminées ou renvoyez-les dans le backlog pour les affiner.","deliveryNeedsAttention":"Implémentation terminée ; la livraison requiert votre attention","deliveryBlockedNote":"L’implémentation a réussi, mais la livraison est bloquée. Consultez le détail de l’étape et les journaux avant de supprimer le résultat local.","partialDeliveryBlockedNote":"Une partie de l’implémentation a réussi, mais rien ne peut encore être livré en toute sécurité. Consultez les éléments par unité et les journaux avant de choisir l’action suivante.","retryPushNote":"L’implémentation a réussi et les modifications sont en sécurité localement. Réessayez uniquement le push.","cleanupIncomplete_one":"Nettoyage incomplet ({{count}} avertissement)","cleanupIncomplete_other":"Nettoyage incomplet ({{count}} avertissements)","safetyArchiveTitle":"Archive de sécurité ({{count}})","safetyArchiveHint":"Des fichiers temporaires de l’espace de travail ont été conservés hors de la PR par précaution. Vous pouvez les examiner ou les supprimer manuellement.","confirm":{"recoverAndRetryTitle":"Créer le commit et envoyer le résultat préservé ?","recoverAndRetryBody":"Specrails utilisera uniquement le worktree isolé ou la branche enregistrée compatible avec une avance rapide pour {{branch}}. Si nécessaire, il créera un commit avec les fichiers livrables, puis enverra ce commit exact uniquement si la PR est toujours ouverte sur les branches source et cible attendues. Le dossier principal de votre projet et ses modifications non validées resteront intacts.","recheckRecoveryTitle":"Vérifier à nouveau cet ordinateur ?","recheckRecoveryBody":"Specrails réanalysera dans ce clone le worktree, la branche, les refs, les reflogs et les objets Git orphelins appartenant à la livraison de {{branch}}. S’il prouve un résultat unique, il pourra committer les changements isolés et retenter le push exact. Le dossier principal du projet ne sera pas touché.","noChangesDoneTitle":"Marquer ces specs comme terminées ?","noChangesDoneBody":"L’implémentation a confirmé qu’aucune modification de code n’est nécessaire. Les specs passeront à Terminé et le worktree sans changement sera nettoyé.","refineTitle":"Affiner ces specs ?","refineBody":"Le résultat sans modification sera fermé et les specs retourneront dans le backlog pour être affinées. Les journaux d’exécution resteront disponibles.","mergeLocalTitle":"Intégrer localement ?","mergeLocalBody":"Les branches livrées seront fusionnées dans {{base}} dans votre checkout local. Celui-ci doit être sur {{base}} avec un arbre de travail propre.","freshDiscardTitle":"Supprimer cette livraison ?","freshDiscardBody":"La PR sera fermée sans supprimer sa branche distante. Seuls les branches locales et les worktrees appartenant à SpecRails et toujours positionnés sur leur commit enregistré seront supprimés ; tout élément modifié sera conservé avec un avertissement. Les specs retourneront dans le backlog. Les ressources locales supprimées ne peuvent pas être récupérées.","implementationFailedDiscardTitle":"Abandonner cette livraison en échec ?","implementationFailedDiscardBody":"La carte sera fermée et ses specs retourneront dans le backlog. Le travail local et les branches seront conservés pour inspection. Seules les ressources dont le nettoyage est prouvé sûr pourront être supprimées.","dismissTitle":"Fermer ce suivi ?","dismissBody":"Cette carte de suivi sera fermée. Son worktree ne sera supprimé que si cela reste sans risque ; sinon, il sera conservé avec un avertissement. La PR existante, sa branche et son état de revue resteront inchangés.","discardLocalTitle":"Supprimer le résultat local ?","discardLocalBody":"L’itération locale récupérable ne sera supprimée que si cela reste sans risque ; si elle a changé, elle sera conservée avec un avertissement. Toute PR existante et sa branche resteront inchangées. Un résultat supprimé ne peut pas être récupéré."},"degraded":{"pushed":"La branche a été poussée mais la PR n'a pas pu être créée — réessayez pour terminer.","localOnly":"Les modifications ont été assemblées en local mais pas poussées — réessayez pour publier la PR."},"alreadyResolved":"Déjà résolue ailleurs","actionFailed":"L'action a échoué","notMergedYet":"Pas encore fusionnée","commitMissingRetry":"Le commit de livraison n’est plus présent dans la PR. Vous pouvez réessayer le push.","prVerifiedWaiting":"Commit {{sha}} vérifié · en attente du merge","viewLog":"Voir le journal d'exécution de {{ref}}","runElapsedAria":"{{elapsed}} écoulées","runCostAria":"{{cost}} dépensés","pinned":{"label":"Épinglée","marker":"Carte d’implémentation — épinglée ci-dessus","collapse":"Réduire la carte épinglée","expand":"Déployer la carte épinglée","expandCard":"Développer cette carte","collapseCard":"Réduire cette carte","collapsed_one":"Carte d’implémentation","collapsed_other":"{{count}} cartes d’implémentation","state":{"completed":"Terminée","no_changes":"Aucune modification","pr_closed":"Fermée","superseded":"Remplacée","building":"En cours","on_review":"Revue","pr_draft":"PR brouillon","pr_ready":"Publiée","implementation_failed":"Échec","pr_failed":"Échec","merged":"Fusionnée","discarded":"Abandonnée"}},"mergeLocal":"Intégrer en local","mergeLocalTooltip":"Fusionne les branches livrées dans {{base}} dans votre checkout local (sans GitHub)","mergeLocalBlockedDirty":"Impossible d'intégrer : votre arbre de travail sur {{base}} contient des changements non commités. Commitez ou stashez-les, puis réessayez.","mergeLocalBlockedBranch":"Impossible d'intégrer : votre checkout est sur {{current}}, pas sur {{base}}. Passez sur {{base}}, puis réessayez.","mergedLocally":"Intégré dans {{base}} en local"}`),Q={heading:`Brouillon de spec`,drafting:`Mise à jour du brouillon…`,acceptanceCriteria:`Critères d'acceptation`,untitled:`Spec sans titre`,expand:`Afficher la description complète`,collapse:`Réduire la description`},$={openTicket:`Ouvrir la spec #{{id}}`,openPullRequest:`Ouvrir la PR #{{id}}`,openJob:`Ouvrir le job {{id}}`,openLoop:`Ouvrir la boucle {{id}}`,ticketNotFound:`Spec #{{id}} introuvable — elle a peut-être été supprimée`,pullRequestUrlMissing:`La PR #{{id}} est mentionnée sans URL`,pullRequestNotFound:`PR #{{id}} introuvable dans ce projet`,jobNotFound:`Job introuvable — il a peut-être été supprimé`,loopNotFound:`Boucle introuvable — elle a peut-être été supprimée`,lookupFailed:`Impossible de vérifier la référence — réessayez`},ee={untitled:`Mission sans titre`,menu:`Menu de la mission`,rename:`Renommer`,renamePlaceholder:`Nom de la mission`,renameHint:`Double-clic pour renommer`,renameFailed:`Renommage impossible`,addFavorite:`Ajouter aux favorites`,removeFavorite:`Retirer des favorites`,copyName:`Copier le nom de la mission`,copyId:`Copier l'ID de la mission`,copyProject:`Copier le nom du projet`,copyProjectPath:`Copier le chemin du projet`,copyFailed:`Copie impossible`,copyTranscript:`Copier la transcription`,copyTranscriptSuccess:`Transcription copiée`,copyTranscriptFailed:`Impossible de copier la transcription`,exportTranscript:`Exporter la transcription (.txt)`,exportTranscriptSuccess:`Export de la transcription lancé`,exportTranscriptFailed:`Impossible d'exporter la transcription`,delete:`Supprimer la mission`,deleteConfirm:`Supprimer cette mission ? Action irréversible.`,deleteFailed:`Impossible de supprimer la mission`},te=`Que doit-on construire maintenant ?`,ne={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,queueEdit:S,git:C,provider:w,tier:T,approval:E,project:D,palette:O,mission:k,noProvider:A,degraded:j,toolCard:M,error:N,chip:P,newAgent:F,switchToAgent:I,switchToKanban:L,search:R,home:z,favoriteMissions:B,untitled:V,workspace:H,attachFile:U,deleteConversation:W,confirmDeleteConversation:G,addFavoriteConversation:K,removeFavoriteConversation:q,confirmShort:J,imagesUnsupported:Y,effort:X,prCard:Z,specDraft:Q,refs:$,header:ee,emptyTitleCodeRain:te};export{K as addFavoriteConversation,E as approval,U as attachFile,s as attachment,P as chip,d as close,r as composerPlaceholder,G as confirmDeleteConversation,J as confirmShort,g as connecting,_ as consultingCode,o as copy,ne as default,j as degraded,W as deleteConversation,X as effort,m as emptyHint,p as emptyTitle,te as emptyTitleCodeRain,N as error,B as favoriteMissions,C as git,ee as header,b as history,z as home,Y as imagesUnsupported,c as maximize,u as minimize,k as mission,y as model,F as newAgent,f as newConversation,A as noProvider,O as palette,Z as prCard,D as project,w as provider,x as queue,S as queueEdit,$ as refs,q as removeFavoriteConversation,l as restore,R as search,i as send,v as size,Q as specDraft,a as stop,t as subtitle,I as switchToAgent,L as switchToKanban,h as thinking,T as tier,e as title,M as toolCard,n as trigger,V as untitled,H as workspace};
@@ -0,0 +1 @@
1
+ import{r as ee}from"./rolldown-runtime-CNC7AqOf.js";var te=ee({addFavoriteConversation:()=>G,approval:()=>E,attachFile:()=>H,attachment:()=>s,chip:()=>N,close:()=>d,composerPlaceholder:()=>r,confirmDeleteConversation:()=>W,confirmShort:()=>q,connecting:()=>g,consultingCode:()=>_,copy:()=>o,default:()=>ie,degraded:()=>A,deleteConversation:()=>U,effort:()=>Y,emptyHint:()=>m,emptyTitle:()=>p,emptyTitleCodeRain:()=>re,error:()=>M,favoriteMissions:()=>z,git:()=>C,header:()=>$,history:()=>b,home:()=>R,imagesUnsupported:()=>J,maximize:()=>c,minimize:()=>u,mission:()=>O,model:()=>y,newAgent:()=>P,newConversation:()=>f,noProvider:()=>k,palette:()=>D,prCard:()=>X,project:()=>ne,provider:()=>w,queue:()=>x,queueEdit:()=>S,refs:()=>Q,removeFavoriteConversation:()=>K,restore:()=>l,search:()=>L,send:()=>i,size:()=>v,specDraft:()=>Z,stop:()=>a,subtitle:()=>t,switchToAgent:()=>F,switchToKanban:()=>I,thinking:()=>h,tier:()=>T,title:()=>e,toolCard:()=>j,trigger:()=>n,untitled:()=>B,workspace:()=>V}),e=`Mission Control`,t=`Operate Specrails by chatting`,n=`Mission Control`,r=`Ask the agent to do anything…`,i=`Send`,a=`Stop`,o=`Copy`,s={openPreview:`Preview {{name}}`,openDownload:`Download {{name}}`,previewTitle:`Preview {{name}}`,downloadTitle:`Download file?`,downloadPrompt:`This file cannot be previewed here. Do you want to download it?`,download:`Download`,cancelDownload:`Not now`,loading:`Preparing file…`,loadFailed:`Could not load attachment`,loadError:`Could not load attachment: {{error}}`},c=`Maximize`,l=`Restore`,u=`Minimize`,d=`Close`,f=`New mission`,p=`What's the mission?`,m=`Pick a project, then ask. The board updates live as the agent works.`,h=`Thinking…`,g=`Connecting…`,_=`Consulting the app…`,v={compact:`Compact`,comfortable:`Comfortable`,max:`Maximize`},y={label:`Model`,loading:`Loading models…`,unavailable:`Models unavailable`},b={hint:`Browsing prompt history — type to edit, ↑↓ to navigate`},x={queued:`Queued`,send:`Send to queue`,sendHint:`The agent is still working — this message will queue and run next`,placeholder:`Add more while the agent works — it will queue…`},S={editing:`Editing queued message {{n}} of {{m}}`,hint:`↑↓ to navigate · Enter saves · Esc cancels`,save:`Save queued message`,cancel:`Cancel editing`,dispatched:`That queued message was already sent — your text is kept as a draft`,saveFailed:`Couldn't save the queued message`},C={branch:`Branch`,detached:`(detached)`,dirty:`Uncommitted changes`,switched:`Switched to {{branch}}`,switchFailed:`Couldn't switch branch`,lockedWhileWorking:`Branch locked while the agent works`,searchPlaceholder:`Search branches…`,noMatches:`No branches match`,worktrees:`Worktrees`,worktreePathCopied:`Worktree path copied`,copyWorktreePath:`Copy worktree path`},w={label:`Provider`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},T={cycleHint:`⇧⇥ to change`,observe:{name:`Observe`,desc:`Read only — nothing changes`},edit:{name:`Edit`,desc:`Create and edit (reversible)`},operate:{name:`Operate`,desc:`Launch AI — costs money`},autonomous:{name:`Autonomous`,desc:`Delete and kill — irreversible`},lockedTitle:`Needs a higher level`,lockedBody:`That action needs the "{{level}}" level. You're on "{{current}}".`,raiseHint:`⇧⇥ to raise the level, or ask another way.`},E={title:`Confirm action`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Approve`,cancel:`Cancel`,dontAskAgain:`Don't ask again this session`,approved:`Approved`,cancelled:`Cancelled`},ne={home:`Home`,searchPlaceholder:`Talk to Specrails…`,searchProjectsPlaceholder:`Search projects…`,recents:`Recents`,allProjects:`All projects`,searchAll:`Search across all projects`,addProject:`Add project…`,homeHint:`No project selected — operating across all projects.`,askCreateOrSearch:`No project is selected. Do you want to create a new project, or search across all projects?`},D={remove:`Remove {{label}}`,addContextAction:`Add context or action`,filtering:`Filtering "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`No matches`,noMatchesFor:`No matches for "{{query}}"`,mode:{reference:{title:`Reference`,hint:`@ projects, specs, missions`},trace:{title:`Trace`,hint:`# jobs, runs, IDs`},action:{title:`Action`,hint:`/ commands for this context`}},plus:{reference:`Reference`,referenceHint:`Projects, specs, missions`,trace:`Trace`,traceHint:`Jobs, runs, IDs`,action:`Action`,actionHint:`Create, launch, inspect`,fileAttachment:`File attachment`,fileAttachmentHint:`Add docs, images, logs`,browserCapture:`Browser capture`,browserCaptureHint:`Available from workspace browser`}},O={label:`Switch mission`,untitled:`New mission`,new:`New mission`,searchPlaceholder:`Search missions…`,noMatches:`No missions match`,working:`Agent working`,queuedBadge:`{{n}} queued`,delete:`Delete mission "{{title}}"`,deleteConfirm:`Delete?`,deleteLiveConfirm:`Agent is working — delete anyway?`,confirmDelete:`Confirm delete`,cancelDelete:`Keep mission`,deleteFailed:`Couldn't delete the mission`},k={title:`No AI provider installed`,body:`The agent needs Claude, Codex, Gemini or Kimi on your machine. Install one, then reopen the agent to start chatting.`,placeholder:`Install an AI provider to use the agent…`},A={title:`Specrails MCP is off`,body:`The agent needs the embedded MCP server to operate the app.`,enable:`Enable Specrails MCP`,enabling:`Enabling…`,enabled:`MCP enabled`},j={live:`live`,queued:`queued`,running:`running`,done:`done`,failed:`failed`},M={generic:`Something went wrong. Try again.`,busy:`The agent is busy. Try again in a moment.`},N={kindAgent:`Agent mission`},P=`New Mission`,F=`Switch to Mission Control`,I=`Switch to Board`,L=`Search`,R=`Home`,z=`Favorite missions`,B=`Untitled`,V={title:`On workspace`,terminal:`Terminal`,files:`Files`,browser:`Browser`,requiresProject:`Select a project to use this tool`,resizeCode:`Resize code pane`,closeFiles:`Close code`,browserConfirm:`Add to agent`,browserCaptured:`Capture added`,uploadFailed:`Upload failed`,requiresConversation:`Start a mission to use this tool`,jobs:`Jobs`,closeJobs:`Close jobs`,resizeJobs:`Resize jobs pane`,noJobs:`No jobs yet — ask the agent to launch one`},H=`Attach file`,U=`Delete "{{title}}"`,W=`Confirm delete "{{title}}"`,G=`Add "{{title}}" to favorites`,K=`Remove "{{title}}" from favorites`,q=`confirm?`,J=`This provider can't read images yet — attach text files instead`,Y={label:`Effort`,minimal:`Minimal`,low:`Low`,medium:`Medium`,high:`High`,xhigh:`Extra high`,max:`Max`,ultra:`Ultra`},X={operation:{inProgress:`Action in progress…`,"create-pr":`Creating PR…`,publish:`Publishing…`,discard:`Discarding…`,dismiss:`Dismissing follow-up…`,"poll-merge":`Checking merge…`,reopen:`Reopening…`,"merge-local":`Integrating locally…`,"recover-and-retry":`Committing and retrying the preserved result…`,"acknowledge-no-changes":`Marking done…`},rail:`Rail {{index}}`,specCount_one:`{{count}} spec`,specCount_other:`{{count}} specs`,base:`Base branch`,openPr:`Open PR`,existingPr:`Existing PR`,title:{building:`Implementing in an isolated worktree…`,buildingExistingPr:`Applying changes to an existing PR…`,paused:`Needs a human decision`,on_review:`Implementation ready for review`,pr_draft:`Draft PR created`,pr_draft_degraded:`PR delivery incomplete`,pr_ready:`PR ready for merge`,no_changes:`No changes needed`,partial:`Partially implemented`,delivery_blocked:`Implementation complete — delivery needs attention`,update_failed:`Implementation complete — update failed`,pr_closed:`PR closed without merge`,superseded:`Superseded by a newer run`,existing_pr_updated:`Existing PR updated`,implementation_failed:`Implementation failed`,pr_failed:`PR creation failed`,merged:`PR merged`,discarded:`Discarded`},buildingHint:`You'll be asked to create the PR when it settles.`,buildingExistingPrHint:`Specrails is working on the existing PR branch and will push the review changes back to that PR.`,paused:`Implementation paused`,pausedForRun:`Paused on {{ref}}`,resume:`Resume`,stopExecution:`Stop execution`,stopExecutionSent:`Stop signal sent`,stopExecutionFailed:`Could not stop execution`,partialSummary:`{{succeeded}} of {{total}} completed; {{failed}} failed`,unit:{failed:`implementation failed`,blocked:`delivery blocked`,noChanges:`no changes`,succeeded:`ready`},createPr:`Create PR`,publish:`Publish`,checkout:`Checkout`,checkoutTooltip:`Check out {{branch}} in the main project folder`,checkoutSuccess:`Checked out {{branch}}`,checkoutFailed:`Could not check out the PR branch`,checkoutDirtyTitle:`Checkout blocked to protect your changes`,checkoutDirtyBody:`The main project folder has uncommitted changes. Commit or stash them, then retry. Nothing was changed.`,checkoutSafetyUnknownTitle:`Checkout paused because safety could not be verified`,checkoutSafetyUnknownBody:`Specrails could not read the main project folder’s Git status. Nothing was released or changed. Retry after Git is available.`,checkoutNotDeliverableTitle:`This PR branch is not the preserved implementation`,checkoutNotDeliverableBody:`No exact delivery commit has been verified yet. Inspect or recover the local result instead.`,inspectLocalResult:`Inspect local result`,inspectLocalResultTooltip:`Reveal the preserved isolated worktree and copy its path`,localResultPathCopied:`Local result path copied`,localResultPath:`Preserved local result`,localResultUnavailableHere:`No recoverable worktree is available on this computer. Review the run log from the machine where it executed.`,recoverAndRetry:`Commit & retry push`,recoverAndRetryVerified:`Recovered commit {{sha}} is verified in the PR`,recoveryStillBlocked:`Local recovery still needs attention`,recheckRecovery:`Check again`,recoveryUnavailable:`Recovery could not be verified on this computer`,recoveryUnavailableBody:`Specrails could not safely prove one delivery-owned result in this clone. Nothing was changed or removed. Inspect the stage detail and run logs. If the run executed on another computer, open Specrails there, then check again.`,recoveryDetailSummary:`Technical recovery detail`,retry:`Retry`,retryPr:`Retry PR`,checkMerge:`Check merge`,verifyPr:`Verify PR`,discard:`Discard`,dismiss:`Dismiss follow-up`,discardLocalResult:`Discard local result`,markDone:`Mark done`,refine:`Refine`,retryPush:`Retry push`,retryPushVerified:`Push verified · commit {{sha}} is in the PR`,commitAlreadyVerified:`Commit {{sha}} is already verified in the PR`,deliveryCommit:`commit {{sha}}`,reopen:`Reopen`,createPartialPr:`Create PR with {{count}}`,confirmDiscard:`Confirm discard?`,mergedNote:`Merged — specs moved to Done`,discardedNote:`Discarded — specs returned to the backlog`,supersededNote:`A newer implementation run replaced this card.`,completedNote:`Confirmed — specs moved to Done`,noChangesExisting:`No new changes were needed; the existing PR is unchanged.`,noChangesNote:`No code changes were needed. Mark the specs done or return them to the backlog to refine.`,deliveryNeedsAttention:`Implementation complete; delivery needs attention`,deliveryBlockedNote:`Implementation succeeded, but delivery is blocked. Review the stage detail and run logs before discarding the local result.`,partialDeliveryBlockedNote:`Part of the implementation succeeded, but nothing is safely deliverable yet. Review the per-unit evidence and run logs before choosing the next action.`,retryPushNote:`Implementation succeeded and the changes are safe locally. Retry only the push.`,cleanupIncomplete_one:`Cleanup is incomplete ({{count}} warning)`,cleanupIncomplete_other:`Cleanup is incomplete ({{count}} warnings)`,safetyArchiveTitle:`Safety archive ({{count}})`,safetyArchiveHint:`Temporary workspace files were preserved outside the PR as a precaution. You can inspect or remove them manually.`,implementationFailedNote:`The implementation run failed before there was anything deliverable. Open the run log to inspect the failure, then discard this card before relaunching.`,degraded:{pushed:`The branch was pushed but the PR could not be created — retry to finish.`,localOnly:`The changes were assembled locally but not pushed — retry to publish the PR.`},alreadyResolved:`Already resolved elsewhere`,actionFailed:`Action failed`,notMergedYet:`Not merged yet`,commitMissingRetry:`The delivery commit is no longer in the PR. Retry push is available again.`,prVerifiedWaiting:`Commit {{sha}} verified · waiting for merge`,viewLog:`View run log for {{ref}}`,runElapsedAria:`{{elapsed}} elapsed`,runCostAria:`{{cost}} spent`,pinned:{label:`Pinned`,marker:`Implementation card — pinned above`,collapse:`Minimize pinned card`,expand:`Expand pinned card`,expandCard:`Expand this card`,collapseCard:`Minimize this card`,collapsed_one:`Implementation card`,collapsed_other:`{{count}} implementation cards`,state:{building:`Building`,on_review:`Review`,pr_draft:`Draft PR`,pr_ready:`Published`,no_changes:`No changes`,completed:`Completed`,pr_closed:`Closed`,superseded:`Superseded`,implementation_failed:`Failed`,pr_failed:`Failed`,merged:`Merged`,discarded:`Discarded`}},mergeLocal:`Integrate locally`,mergeLocalTooltip:`Merge the delivered branches into {{base}} in your local checkout (no GitHub needed)`,mergeLocalBlockedDirty:`Cannot integrate: your working tree on {{base}} has uncommitted changes. Commit or stash them, then retry.`,mergeLocalBlockedBranch:`Cannot integrate: your checkout is on {{current}}, not {{base}}. Check out {{base}}, then retry.`,mergedLocally:`Integrated into {{base}} locally`,confirm:{mergeLocalTitle:`Integrate locally?`,mergeLocalBody:`The delivered branches will be merged into {{base}} in your local checkout. Your checkout must be on {{base}} with a clean working tree.`,recoverAndRetryTitle:`Commit and push the preserved result?`,recoverAndRetryBody:`Specrails will use only the isolated worktree or recorded fast-forward branch for {{branch}}. It will commit deliverable files if needed, then push the exact commit only if the PR is still open on the expected head and base. Your main project folder and its uncommitted changes will not be touched.`,recheckRecoveryTitle:`Check this computer again?`,recheckRecoveryBody:`Specrails will rescan this clone’s delivery-owned worktree, branch, refs, reflogs, and orphan Git objects for {{branch}}. If it proves one result, it may commit isolated changes and retry the exact push. Your main project folder will not be touched.`,freshDiscardTitle:`Discard this delivery?`,freshDiscardBody:`The PR will be closed without deleting its remote branch. Only SpecRails-owned local branches and worktrees that are still at their recorded commit will be removed; anything changed will be preserved with a warning. The specs will return to the backlog. Removed local resources cannot be recovered.`,implementationFailedDiscardTitle:`Discard this failed delivery?`,implementationFailedDiscardBody:`The card will be cleared and its specs will return to the backlog. Local work and branches will be kept for inspection. Only resources proven safe to clean up may be removed.`,dismissTitle:`Dismiss this follow-up?`,dismissBody:`This follow-up card will be cleared. Its owned worktree will be removed only if it is still safe; otherwise it will be preserved with a warning. The existing PR, its branch, and review state will remain unchanged.`,discardLocalTitle:`Discard the local result?`,discardLocalBody:`The recoverable local iteration will be removed only if it is still safe; if it changed, it will be preserved with a warning. Any existing PR and its branch will remain unchanged. A removed result cannot be recovered.`,noChangesDoneTitle:`Mark these specs done?`,noChangesDoneBody:`The implementation confirmed that no code changes are needed. The specs will move to Done and the no-change worktree will be cleaned up.`,refineTitle:`Refine these specs?`,refineBody:`The no-change result will be closed and the specs will return to the backlog so you can refine them. The run logs remain available.`}},Z={heading:`Spec draft`,drafting:`Updating draft…`,acceptanceCriteria:`Acceptance criteria`,untitled:`Untitled spec`,expand:`Show full description`,collapse:`Collapse description`},Q={openTicket:`Open spec #{{id}}`,openPullRequest:`Open PR #{{id}}`,openJob:`Open job {{id}}`,openLoop:`Open loop {{id}}`,ticketNotFound:`Spec #{{id}} not found — it may have been deleted`,pullRequestUrlMissing:`PR #{{id}} was referenced without a URL`,pullRequestNotFound:`PR #{{id}} could not be found in this project`,jobNotFound:`Job not found — it may have been deleted`,loopNotFound:`Loop not found — it may have been deleted`,lookupFailed:`Couldn't verify the reference — try again`},$={untitled:`Untitled mission`,menu:`Mission menu`,rename:`Rename`,renamePlaceholder:`Mission name`,renameHint:`Double-click to rename`,renameFailed:`Could not rename`,addFavorite:`Add to favorites`,removeFavorite:`Remove from favorites`,copyName:`Copy mission name`,copyId:`Copy mission ID`,copyProject:`Copy project name`,copyProjectPath:`Copy project path`,copyFailed:`Couldn't copy`,copyTranscript:`Copy transcript`,copyTranscriptSuccess:`Transcript copied`,copyTranscriptFailed:`Could not copy transcript`,exportTranscript:`Export transcript (.txt)`,exportTranscriptSuccess:`Transcript export started`,exportTranscriptFailed:`Could not export transcript`,delete:`Delete mission`,deleteConfirm:`Delete this mission? This cannot be undone.`,deleteFailed:`Could not delete the mission`},re=`What should we build next?`,ie={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,queueEdit:S,git:C,provider:w,tier:T,approval:E,project:ne,palette:D,mission:O,noProvider:k,degraded:A,toolCard:j,error:M,chip:N,newAgent:P,switchToAgent:F,switchToKanban:I,search:L,home:R,favoriteMissions:z,untitled:B,workspace:V,attachFile:H,deleteConversation:U,confirmDeleteConversation:W,addFavoriteConversation:G,removeFavoriteConversation:K,confirmShort:q,imagesUnsupported:J,effort:Y,prCard:X,specDraft:Z,refs:Q,header:$,emptyTitleCodeRain:re};export{te as t};
@@ -0,0 +1 @@
1
+ var e=`任务中心`,t=`通过对话操作 Specrails`,n=`任务中心`,r=`让智能体做任何事…`,i=`发送`,a=`停止`,o=`复制`,s={openPreview:`预览 {{name}}`,openDownload:`下载 {{name}}`,previewTitle:`{{name}} 预览`,downloadTitle:`下载文件?`,downloadPrompt:`此文件无法在此处预览。要下载它吗?`,download:`下载`,cancelDownload:`暂不`,loading:`正在准备文件…`,loadFailed:`无法加载附件`,loadError:`无法加载附件:{{error}}`},c=`最大化`,l=`还原`,u=`最小化`,d=`关闭`,f=`新任务`,p=`这次的任务是什么?`,m=`先选择一个项目,然后提问。智能体工作时看板会实时更新。`,h=`思考中…`,g=`连接中…`,_=`正在查询应用…`,v={compact:`紧凑`,comfortable:`舒适`,max:`最大化`},y={label:`模型`,loading:`正在加载模型…`,unavailable:`模型不可用`},b={hint:`浏览提示历史 — 输入以编辑,↑↓ 导航`},x={queued:`排队中`,send:`发送到队列`,sendHint:`智能体仍在工作——此消息将排队并在之后执行`,placeholder:`智能体工作时可继续输入——消息将排队…`},S={editing:`正在编辑排队消息 {{n}}/{{m}}`,hint:`↑↓ 导航 · 回车保存 · Esc 取消`,save:`保存排队消息`,cancel:`取消编辑`,dispatched:`该排队消息已发送——你的文本已保留为草稿`,saveFailed:`无法保存排队消息`},C={branch:`分支`,detached:`(分离头指针)`,dirty:`有未提交的更改`,switched:`已切换到 {{branch}}`,switchFailed:`无法切换分支`,lockedWhileWorking:`智能体工作时分支已锁定`,searchPlaceholder:`搜索分支…`,noMatches:`没有匹配的分支`,worktrees:`工作树`,worktreePathCopied:`已复制工作树路径`,copyWorktreePath:`复制工作树路径`},w={label:`提供方`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},T={cycleHint:`⇧⇥ 切换`,observe:{name:`观察`,desc:`只读 — 不做任何更改`},edit:{name:`编辑`,desc:`创建和编辑(可撤销)`},operate:{name:`操作`,desc:`启动 AI — 会产生费用`},autonomous:{name:`自主`,desc:`删除和终止 — 不可逆`},lockedTitle:`需要更高的级别`,lockedBody:`该操作需要「{{level}}」级别。你当前处于「{{current}}」。`,raiseHint:`⇧⇥ 提升级别,或换一种方式询问。`},E={title:`确认操作`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`批准`,cancel:`取消`,dontAskAgain:`本次会话不再询问`,approved:`已批准`,cancelled:`已取消`},D={home:`主页`,searchPlaceholder:`与 Specrails 对话…`,searchProjectsPlaceholder:`搜索项目…`,recents:`最近`,allProjects:`所有项目`,searchAll:`在所有项目中搜索`,addProject:`添加项目…`,homeHint:`未选择项目 — 正在跨所有项目操作。`,askCreateOrSearch:`未选择任何项目。你想创建一个新项目,还是在所有项目中搜索?`},O={remove:`移除 {{label}}`,addContextAction:`添加上下文或操作`,filtering:`筛选 "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`无匹配结果`,noMatchesFor:`没有 "{{query}}" 的匹配结果`,mode:{reference:{title:`引用`,hint:`@ 项目、规格、任务`},trace:{title:`追踪`,hint:`# 作业、运行、ID`},action:{title:`操作`,hint:`/ 此上下文的命令`}},plus:{reference:`引用`,referenceHint:`项目、规格、任务`,trace:`追踪`,traceHint:`作业、运行、ID`,action:`操作`,actionHint:`创建、启动、检查`,fileAttachment:`文件附件`,fileAttachmentHint:`添加文档、图片、日志`,browserCapture:`浏览器捕获`,browserCaptureHint:`可从工作区浏览器使用`}},k={label:`切换任务`,untitled:`新任务`,new:`新任务`,searchPlaceholder:`搜索任务…`,noMatches:`没有匹配的任务`,working:`代理正在工作`,queuedBadge:`{{n}} 条排队`,delete:`删除任务 "{{title}}"`,deleteConfirm:`删除?`,deleteLiveConfirm:`代理正在工作 — 仍要删除?`,confirmDelete:`确认删除`,cancelDelete:`保留任务`,deleteFailed:`无法删除任务`},A={title:`未安装 AI 提供方`,body:`智能体需要在你的机器上安装 Claude、Codex、Gemini 或 Kimi。安装其中之一后重新打开智能体即可开始对话。`,placeholder:`请安装 AI 提供方以使用智能体…`},j={title:`Specrails MCP 已关闭`,body:`智能体需要内置的 MCP 服务器来操作应用。`,enable:`启用 Specrails MCP`,enabling:`正在启用…`,enabled:`MCP 已启用`},M={live:`实时`,queued:`排队中`,running:`运行中`,done:`已完成`,failed:`失败`},N={generic:`出了点问题。请重试。`,busy:`智能体正忙。请稍后重试。`},P={kindAgent:`智能体任务`},F=`新任务`,I=`切换到任务中心`,L=`切换到看板`,R=`搜索`,z=`主页`,B=`收藏任务`,V=`未命名`,H={title:`工作区`,terminal:`终端`,files:`文件`,browser:`浏览器`,requiresProject:`请选择一个项目以使用此工具`,resizeCode:`调整代码面板`,closeFiles:`关闭代码`,browserConfirm:`添加到智能体`,browserCaptured:`已添加捕获`,uploadFailed:`上传失败`,requiresConversation:`启动任务后才能使用此工具`,jobs:`作业`,closeJobs:`关闭作业`,resizeJobs:`调整作业面板大小`,noJobs:`还没有作业——让智能体启动一个吧`},U=`附加文件`,W=`删除「{{title}}」`,G=`确认删除「{{title}}」`,K=`将「{{title}}」添加到收藏`,q=`从收藏中移除「{{title}}」`,J=`确认?`,Y=`该提供商暂不支持读取图片 — 请附加文本文件`,X={label:`推理强度`,minimal:`最小`,low:`低`,medium:`中`,high:`高`,xhigh:`极高`,max:`最大`,ultra:`超级`},Z={operation:{inProgress:`操作进行中…`,"create-pr":`正在创建 PR…`,publish:`正在发布…`,discard:`正在丢弃…`,dismiss:`正在关闭后续任务…`,"poll-merge":`正在检查合并…`,reopen:`正在重新打开…`,"merge-local":`正在本地集成…`,"recover-and-retry":`正在提交并重新推送已保留的结果…`,"acknowledge-no-changes":`正在标记完成…`},markDone:`标记为完成`,refine:`细化`,completedNote:`已确认 — spec 已移至完成`,partialSummary:`{{total}} 个中 {{succeeded}} 个完成,{{failed}} 个失败`,unit:{failed:`实现失败`,blocked:`交付受阻`,noChanges:`无更改`,succeeded:`已就绪`},rail:`Rail {{index}}`,specCount_one:`{{count}} 个 Spec`,specCount_other:`{{count}} 个 Spec`,base:`基础分支`,openPr:`打开 PR`,existingPr:`现有 PR`,title:{no_changes:`无需更改`,partial:`部分实现完成`,delivery_blocked:`实现完成 — 交付需要处理`,update_failed:`实现完成 — 更新失败`,pr_closed:`PR 已关闭但未合并`,superseded:`已被较新的运行取代`,existing_pr_updated:`现有 PR 已更新`,building:`正在隔离的 worktree 中实现…`,buildingExistingPr:`正在向现有 PR 应用更改…`,paused:`需要人工决策`,on_review:`实现已完成,待评审`,pr_draft:`已创建草稿 PR`,pr_draft_degraded:`PR 交付未完成`,pr_ready:`PR 已就绪,可合并`,implementation_failed:`实现失败`,pr_failed:`PR 创建失败`,merged:`PR 已合并`,discarded:`已丢弃`},buildingHint:`完成后会询问你是否创建 PR。`,buildingExistingPrHint:`Specrails 正在现有 PR 的分支上工作,并会把 review 更改推送回同一个 PR。`,paused:`实现已暂停`,pausedForRun:`在 {{ref}} 暂停`,resume:`继续`,stopExecution:`停止执行`,stopExecutionSent:`已发送停止信号`,stopExecutionFailed:`无法停止执行`,createPr:`创建 PR`,publish:`发布`,checkout:`检出分支`,checkoutTooltip:`在项目主目录检出 {{branch}}`,checkoutSuccess:`已检出 {{branch}}`,checkoutFailed:`无法检出 PR 分支`,checkoutDirtyTitle:`为保护你的更改,已阻止检出`,checkoutDirtyBody:`项目主目录中有未提交的更改。请先提交或暂存这些更改,然后重试。本次操作没有修改任何内容。`,checkoutSafetyUnknownTitle:`无法验证安全状态,已暂停检出`,checkoutSafetyUnknownBody:`Specrails 无法读取项目主目录的 Git 状态。没有释放或修改任何内容。请在 Git 恢复可用后重试。`,checkoutNotDeliverableTitle:`此 PR 分支不包含已保留的实现`,checkoutNotDeliverableBody:`尚未验证本次交付的精确提交。请改为检查或恢复本地结果。`,inspectLocalResult:`检查本地结果`,inspectLocalResultTooltip:`显示已保留的隔离 worktree 并复制其路径`,localResultPathCopied:`已复制本地结果路径`,localResultPath:`已保留的本地结果`,localResultUnavailableHere:`此电脑上没有可恢复的 worktree。请在运行该任务的电脑上查看运行日志。`,recoverAndRetry:`提交并重试推送`,recoverAndRetryVerified:`已恢复的提交 {{sha}} 已在 PR 中验证`,recoveryStillBlocked:`本地恢复仍需处理`,recheckRecovery:`再次检查`,recoveryUnavailable:`无法在此计算机上验证恢复结果`,recoveryUnavailableBody:`Specrails 无法在此克隆中安全证明唯一一个属于此次交付的结果。没有更改或删除任何内容。请检查阶段详情和运行日志。如果 run 在另一台计算机上执行,请在那里打开 Specrails,然后再次检查。`,recoveryDetailSummary:`恢复技术详情`,retry:`重试`,retryPr:`重试 PR`,checkMerge:`检查合并`,verifyPr:`验证 PR`,discard:`丢弃`,confirmDiscard:`确认丢弃?`,mergedNote:`已合并 — Spec 已移至完成`,discardedNote:`已丢弃 — Spec 已退回待办`,implementationFailedNote:`实现运行在生成可交付内容前失败。请打开运行日志查看失败原因,然后在重新启动前丢弃此卡片。`,dismiss:`关闭后续任务`,discardLocalResult:`丢弃本地结果`,retryPush:`重试推送`,retryPushVerified:`推送已验证 · 提交 {{sha}} 已在 PR 中`,commitAlreadyVerified:`提交 {{sha}} 已在 PR 中验证`,deliveryCommit:`提交 {{sha}}`,reopen:`重新打开`,createPartialPr:`用 {{count}} 个结果创建 PR`,supersededNote:`较新的实现运行已取代此卡片。`,noChangesExisting:`无需新的更改;现有 PR 保持不变。`,noChangesNote:`无需更改代码。请将 spec 标记为完成,或退回待办列表继续细化。`,deliveryNeedsAttention:`实现完成;交付需要处理`,deliveryBlockedNote:`实现已成功,但交付受阻。丢弃本地结果前,请查看阶段详情和运行日志。`,partialDeliveryBlockedNote:`部分实现已成功,但目前还没有可安全交付的内容。在选择下一步操作前,请查看各单元的结果和运行日志。`,retryPushNote:`实现已成功,更改安全保存在本地。请仅重试推送。`,cleanupIncomplete_one:`清理未完成({{count}} 条警告)`,cleanupIncomplete_other:`清理未完成({{count}} 条警告)`,safetyArchiveTitle:`安全存档({{count}})`,safetyArchiveHint:`为安全起见,临时工作区文件已保存在 PR 之外。你可以检查或手动删除它们。`,confirm:{recoverAndRetryTitle:`提交并推送已保留的结果?`,recoverAndRetryBody:`Specrails 只会使用 {{branch}} 对应的隔离 worktree 或已记录且可快进的分支。必要时,它会提交可交付文件;仅当 PR 仍以预期的源分支和目标分支保持打开状态时,才会推送这个精确提交。不会触碰项目主目录及其中尚未提交的更改。`,recheckRecoveryTitle:`再次检查此计算机?`,recheckRecoveryBody:`Specrails 将在此克隆中重新扫描属于 {{branch}} 交付的 worktree、分支、refs、reflogs 和孤立 Git 对象。如果能证明唯一结果,它可以提交隔离的更改并重试精确 push。不会触碰主项目文件夹。`,noChangesDoneTitle:`将这些 spec 标记为完成?`,noChangesDoneBody:`实现已确认无需更改代码。spec 将移至完成,并清理无更改的 worktree。`,refineTitle:`细化这些 spec?`,refineBody:`无更改结果将被关闭,spec 会返回待办列表以便细化。运行日志仍可查看。`,mergeLocalTitle:`在本地集成?`,mergeLocalBody:`已交付的分支将合并到本地 checkout 的 {{base}}。checkout 必须位于 {{base}},且工作树干净。`,freshDiscardTitle:`丢弃此交付?`,freshDiscardBody:`PR 将关闭,但不会删除其远程分支。只会删除归 SpecRails 所有且仍停留在已记录提交上的本地分支和 worktree;任何已更改的内容都会保留并显示警告。spec 将返回待办列表。已删除的本地资源无法恢复。`,implementationFailedDiscardTitle:`丢弃此失败的交付?`,implementationFailedDiscardBody:`卡片将被关闭,spec 会返回待办列表。本地工作和分支将保留以供检查。只有确认可安全清理的资源才可能被移除。`,dismissTitle:`关闭此后续任务?`,dismissBody:`此后续卡片将被关闭。仅在仍可安全删除时才会移除其专用 worktree;否则将保留并显示警告。现有 PR、分支和审查状态不会改变。`,discardLocalTitle:`丢弃本地结果?`,discardLocalBody:`仅在仍可安全删除时才会移除可恢复的本地迭代;如果它已发生变化,将保留并显示警告。任何现有 PR 及其分支都不会改变。已删除的结果无法恢复。`},degraded:{pushed:`分支已推送,但无法创建 PR — 请重试以完成。`,localOnly:`更改已在本地组装但未推送 — 请重试以发布 PR。`},alreadyResolved:`已在其他地方处理`,actionFailed:`操作失败`,notMergedYet:`尚未合并`,commitMissingRetry:`交付提交已不在 PR 中。你可以重新尝试推送。`,prVerifiedWaiting:`提交 {{sha}} 已验证 · 等待合并`,viewLog:`查看 {{ref}} 的运行日志`,runElapsedAria:`已运行 {{elapsed}}`,runCostAria:`已花费 {{cost}}`,pinned:{label:`已固定`,marker:`实现卡片 — 已固定在上方`,collapse:`最小化固定卡片`,expand:`展开固定卡片`,expandCard:`展开此卡片`,collapseCard:`最小化此卡片`,collapsed_one:`实现卡片`,collapsed_other:`{{count}} 张实现卡片`,state:{completed:`已完成`,no_changes:`无更改`,pr_closed:`已关闭`,superseded:`已取代`,building:`构建中`,on_review:`待审阅`,pr_draft:`草稿 PR`,pr_ready:`已发布`,implementation_failed:`失败`,pr_failed:`失败`,merged:`已合并`,discarded:`已丢弃`}},mergeLocal:`本地集成`,mergeLocalTooltip:`将交付的分支合并到本地检出的 {{base}}(无需 GitHub)`,mergeLocalBlockedDirty:`无法集成:{{base}} 上的工作树有未提交的更改。请提交或暂存后重试。`,mergeLocalBlockedBranch:`无法集成:当前检出在 {{current}},而不是 {{base}}。请切换到 {{base}} 后重试。`,mergedLocally:`已在本地集成到 {{base}}`},Q={heading:`规格草稿`,drafting:`正在更新草稿…`,acceptanceCriteria:`验收标准`,untitled:`未命名规格`,expand:`显示完整描述`,collapse:`收起描述`},$={openTicket:`打开 Spec #{{id}}`,openPullRequest:`打开 PR #{{id}}`,openJob:`打开任务 {{id}}`,openLoop:`打开循环 {{id}}`,ticketNotFound:`未找到 Spec #{{id}} — 可能已被删除`,pullRequestUrlMissing:`PR #{{id}} 被引用但没有 URL`,pullRequestNotFound:`在此项目中找不到 PR #{{id}}`,jobNotFound:`未找到任务 — 可能已被删除`,loopNotFound:`未找到循环 — 可能已被删除`,lookupFailed:`无法验证该引用 — 请重试`},ee={untitled:`未命名任务`,menu:`任务菜单`,rename:`重命名`,renamePlaceholder:`任务名称`,renameHint:`双击重命名`,renameFailed:`无法重命名`,addFavorite:`添加到收藏`,removeFavorite:`从收藏中移除`,copyName:`复制任务名称`,copyId:`复制任务 ID`,copyProject:`复制项目名称`,copyProjectPath:`复制项目路径`,copyFailed:`无法复制`,copyTranscript:`复制转录`,copyTranscriptSuccess:`转录已复制`,copyTranscriptFailed:`无法复制转录`,exportTranscript:`导出转录 (.txt)`,exportTranscriptSuccess:`转录导出已开始`,exportTranscriptFailed:`无法导出转录`,delete:`删除任务`,deleteConfirm:`删除此任务?此操作无法撤销。`,deleteFailed:`无法删除任务`},te=`接下来要构建什么?`,ne={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,queueEdit:S,git:C,provider:w,tier:T,approval:E,project:D,palette:O,mission:k,noProvider:A,degraded:j,toolCard:M,error:N,chip:P,newAgent:F,switchToAgent:I,switchToKanban:L,search:R,home:z,favoriteMissions:B,untitled:V,workspace:H,attachFile:U,deleteConversation:W,confirmDeleteConversation:G,addFavoriteConversation:K,removeFavoriteConversation:q,confirmShort:J,imagesUnsupported:Y,effort:X,prCard:Z,specDraft:Q,refs:$,header:ee,emptyTitleCodeRain:te};export{K as addFavoriteConversation,E as approval,U as attachFile,s as attachment,P as chip,d as close,r as composerPlaceholder,G as confirmDeleteConversation,J as confirmShort,g as connecting,_ as consultingCode,o as copy,ne as default,j as degraded,W as deleteConversation,X as effort,m as emptyHint,p as emptyTitle,te as emptyTitleCodeRain,N as error,B as favoriteMissions,C as git,ee as header,b as history,z as home,Y as imagesUnsupported,c as maximize,u as minimize,k as mission,y as model,F as newAgent,f as newConversation,A as noProvider,O as palette,Z as prCard,D as project,w as provider,x as queue,S as queueEdit,$ as refs,q as removeFavoriteConversation,l as restore,R as search,i as send,v as size,Q as specDraft,a as stop,t as subtitle,I as switchToAgent,L as switchToKanban,h as thinking,T as tier,e as title,M as toolCard,n as trigger,V as untitled,H as workspace};
@@ -0,0 +1 @@
1
+ var e=`Controle de missões`,t=`Opere o Specrails conversando`,n=`Controle de missões`,r=`Peça ao agente o que quiser…`,i=`Enviar`,a=`Parar`,o=`Copiar`,s={openPreview:`Pré-visualizar {{name}}`,openDownload:`Transferir {{name}}`,previewTitle:`Pré-visualização de {{name}}`,downloadTitle:`Transferir ficheiro?`,downloadPrompt:`Este ficheiro não pode ser pré-visualizado aqui. Queres transferi-lo?`,download:`Transferir`,cancelDownload:`Agora não`,loading:`A preparar ficheiro…`,loadFailed:`Não foi possível carregar o anexo`,loadError:`Não foi possível carregar o anexo: {{error}}`},c=`Maximizar`,l=`Restaurar`,u=`Minimizar`,d=`Fechar`,f=`Nova missão`,p=`Qual é a missão?`,m=`Escolha um projeto e depois pergunte. O quadro é atualizado ao vivo enquanto o agente trabalha.`,h=`Pensando…`,g=`Conectando…`,_=`Consultando o app…`,v={compact:`Compacto`,comfortable:`Confortável`,max:`Maximizar`},y={label:`Modelo`,loading:`Carregando modelos…`,unavailable:`Modelos indisponíveis`},b={hint:`Explorando histórico — escreva para editar, ↑↓ para navegar`},x={queued:`Na fila`,send:`Enviar para a fila`,sendHint:`O agente ainda está trabalhando — esta mensagem entrará na fila e será executada em seguida`,placeholder:`Adicione mais enquanto o agente trabalha — entrará na fila…`},S={editing:`Editando mensagem na fila {{n}} de {{m}}`,hint:`↑↓ para navegar · Enter salva · Esc cancela`,save:`Salvar mensagem na fila`,cancel:`Cancelar edição`,dispatched:`Essa mensagem na fila já foi enviada — seu texto foi mantido como rascunho`,saveFailed:`Não foi possível salvar a mensagem na fila`},C={branch:`Branch`,detached:`(detached)`,dirty:`Alterações sem commit`,switched:`Mudou para {{branch}}`,switchFailed:`Não foi possível trocar de branch`,lockedWhileWorking:`Branch bloqueada enquanto o agente trabalha`,searchPlaceholder:`Buscar branches…`,noMatches:`Nenhuma branch corresponde`,worktrees:`Worktrees`,worktreePathCopied:`Caminho do worktree copiado`,copyWorktreePath:`Copiar caminho do worktree`},w={label:`Provedor`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},T={cycleHint:`⇧⇥ para mudar`,observe:{name:`Observa`,desc:`Somente leitura — nada muda`},edit:{name:`Edita`,desc:`Criar e editar (reversível)`},operate:{name:`Opera`,desc:`Lançar IA — tem custo`},autonomous:{name:`Autônomo`,desc:`Excluir e encerrar — irreversível`},lockedTitle:`Precisa de um nível superior`,lockedBody:`Essa ação precisa do nível "{{level}}". Você está no "{{current}}".`,raiseHint:`⇧⇥ para aumentar o nível, ou peça de outra forma.`},E={title:`Confirmar ação`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Aprovar`,cancel:`Cancelar`,dontAskAgain:`Não perguntar de novo nesta sessão`,approved:`Aprovado`,cancelled:`Cancelado`},D={home:`Início`,searchPlaceholder:`Fale com o Specrails…`,searchProjectsPlaceholder:`Buscar projetos…`,recents:`Recentes`,allProjects:`Todos os projetos`,searchAll:`Buscar em todos os projetos`,addProject:`Adicionar projeto…`,homeHint:`Nenhum projeto selecionado — operando em todos os projetos.`,askCreateOrSearch:`Nenhum projeto está selecionado. Você quer criar um novo projeto ou buscar em todos os projetos?`},O={remove:`Remover {{label}}`,addContextAction:`Adicionar contexto ou ação`,filtering:`Filtrando "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`Sem resultados`,noMatchesFor:`Sem resultados para "{{query}}"`,mode:{reference:{title:`Referência`,hint:`@ projetos, specs, missões`},trace:{title:`Traço`,hint:`# jobs, execuções, IDs`},action:{title:`Ação`,hint:`/ comandos para este contexto`}},plus:{reference:`Referência`,referenceHint:`Projetos, specs, missões`,trace:`Traço`,traceHint:`Jobs, execuções, IDs`,action:`Ação`,actionHint:`Criar, lançar, inspecionar`,fileAttachment:`Anexo de arquivo`,fileAttachmentHint:`Adicionar docs, imagens, logs`,browserCapture:`Captura do navegador`,browserCaptureHint:`Disponível no navegador do workspace`}},k={label:`Trocar de missão`,untitled:`Nova missão`,new:`Nova missão`,searchPlaceholder:`Pesquisar missões…`,noMatches:`Nenhuma missão corresponde`,working:`O agente está trabalhando`,queuedBadge:`{{n}} na fila`,delete:`Excluir missão "{{title}}"`,deleteConfirm:`Excluir?`,deleteLiveConfirm:`O agente está trabalhando — excluir mesmo assim?`,confirmDelete:`Confirmar exclusão`,cancelDelete:`Manter missão`,deleteFailed:`Não foi possível excluir a missão`},A={title:`Nenhum provedor de IA instalado`,body:`O agente precisa de Claude, Codex, Gemini ou Kimi na sua máquina. Instale um e reabra o agente para começar a conversar.`,placeholder:`Instale um provedor de IA para usar o agente…`},j={title:`O MCP do Specrails está desligado`,body:`O agente precisa do servidor MCP integrado para operar o app.`,enable:`Ativar o MCP do Specrails`,enabling:`Ativando…`,enabled:`MCP ativado`},M={live:`ao vivo`,queued:`na fila`,running:`em execução`,done:`concluído`,failed:`falhou`},N={generic:`Algo deu errado. Tente novamente.`,busy:`O agente está ocupado. Tente novamente em um instante.`},P={kindAgent:`Missão do agente`},F=`Nova missão`,I=`Mudar para o Controle de missões`,L=`Mudar para o quadro`,R=`Buscar`,z=`Início`,B=`Missões favoritas`,V=`Sem título`,H={title:`No workspace`,terminal:`Terminal`,files:`Arquivos`,browser:`Navegador`,requiresProject:`Selecione um projeto para usar esta ferramenta`,resizeCode:`Redimensionar painel de código`,closeFiles:`Fechar código`,browserConfirm:`Adicionar ao agente`,browserCaptured:`Captura adicionada`,uploadFailed:`Falha no upload`,requiresConversation:`Inicie uma missão para usar esta ferramenta`,jobs:`Jobs`,closeJobs:`Fechar jobs`,resizeJobs:`Redimensionar painel de jobs`,noJobs:`Ainda não há jobs — peça ao agente para lançar um`},U=`Anexar arquivo`,W=`Excluir "{{title}}"`,G=`Confirmar exclusão de "{{title}}"`,K=`Adicionar "{{title}}" aos favoritos`,q=`Remover "{{title}}" dos favoritos`,J=`confirmar?`,Y=`Este provedor ainda não lê imagens — anexe arquivos de texto`,X={label:`Esforço`,minimal:`Mínimo`,low:`Baixo`,medium:`Médio`,high:`Alto`,xhigh:`Extra alto`,max:`Máximo`,ultra:`Ultra`},Z=JSON.parse(`{"operation":{"inProgress":"Ação em andamento…","create-pr":"Criando PR…","publish":"Publicando…","discard":"Descartando…","dismiss":"Encerrando acompanhamento…","poll-merge":"Verificando merge…","reopen":"Reabrindo…","merge-local":"Integrando localmente…","recover-and-retry":"A criar o commit e a tentar novamente o push do resultado preservado…","acknowledge-no-changes":"Marcando como concluído…"},"markDone":"Marcar como concluídas","refine":"Refinar","completedNote":"Confirmado — as specs foram movidas para Concluído","partialSummary":"{{succeeded}} de {{total}} concluídas; {{failed}} falharam","unit":{"failed":"implementação falhou","blocked":"entrega bloqueada","noChanges":"sem alterações","succeeded":"pronta"},"rail":"Rail {{index}}","specCount_one":"{{count}} spec","specCount_other":"{{count}} specs","base":"Ramo base","openPr":"Abrir PR","existingPr":"PR existente","title":{"no_changes":"Nenhuma alteração necessária","partial":"Implementação parcial","delivery_blocked":"Implementação concluída — a entrega requer atenção","update_failed":"Implementação concluída — falha na atualização","pr_closed":"PR fechada sem merge","superseded":"Substituída por uma execução mais recente","existing_pr_updated":"PR existente atualizada","building":"A implementar num worktree isolado…","buildingExistingPr":"A aplicar alterações numa PR existente…","paused":"Precisa de decisão humana","on_review":"Implementação pronta para revisão","pr_draft":"PR em rascunho criada","pr_draft_degraded":"Entrega da PR incompleta","pr_ready":"PR pronta para merge","implementation_failed":"Implementação falhou","pr_failed":"Falha ao criar a PR","merged":"Merge da PR concluído","discarded":"Descartada"},"buildingHint":"Quando terminar, ser-lhe-á perguntado se quer criar a PR.","buildingExistingPrHint":"O Specrails está a trabalhar no ramo da PR existente e irá enviar as alterações de revisão para essa mesma PR.","paused":"Implementação em pausa","pausedForRun":"Em pausa em {{ref}}","resume":"Retomar","stopExecution":"Parar execução","stopExecutionSent":"Sinal de paragem enviado","stopExecutionFailed":"Não foi possível parar a execução","createPr":"Criar PR","publish":"Publicar","checkout":"Mudar para o branch","checkoutTooltip":"Fazer checkout de {{branch}} na pasta principal do projeto","checkoutSuccess":"Checkout feito em {{branch}}","checkoutFailed":"Não foi possível fazer checkout do ramo da PR","checkoutDirtyTitle":"Checkout bloqueado para proteger as suas alterações","checkoutDirtyBody":"A pasta principal do projeto contém alterações sem commit. Faça commit ou stash e tente novamente. Não foi feita qualquer alteração.","checkoutSafetyUnknownTitle":"Checkout em pausa porque não foi possível verificar a segurança","checkoutSafetyUnknownBody":"O Specrails não conseguiu ler o estado do Git na pasta principal do projeto. Nada foi libertado ou alterado. Tente novamente quando o Git estiver disponível.","checkoutNotDeliverableTitle":"Este ramo da PR não contém a implementação preservada","checkoutNotDeliverableBody":"O commit exato da entrega ainda não foi verificado. Em alternativa, inspecione ou recupere o resultado local.","inspectLocalResult":"Inspecionar resultado local","inspectLocalResultTooltip":"Mostrar o worktree isolado preservado e copiar o respetivo caminho","localResultPathCopied":"Caminho do resultado local copiado","localResultPath":"Resultado local preservado","localResultUnavailableHere":"Não existe nenhum worktree recuperável neste computador. Consulte o log da execução no computador onde foi iniciada.","recoverAndRetry":"Fazer commit e tentar push novamente","recoverAndRetryVerified":"O commit recuperado {{sha}} está verificado na PR","recoveryStillBlocked":"A recuperação local ainda requer atenção","recheckRecovery":"Verificar novamente","recoveryUnavailable":"Não foi possível verificar a recuperação neste computador","recoveryUnavailableBody":"O Specrails não conseguiu comprovar com segurança um único resultado pertencente à entrega neste clone. Nada foi alterado ou removido. Consulte os detalhes da etapa e os registos de execução. Se o run foi executado noutro computador, abra o Specrails nele e verifique novamente.","recoveryDetailSummary":"Detalhe técnico da recuperação","retry":"Tentar novamente","retryPr":"Tentar PR novamente","checkMerge":"Verificar merge","verifyPr":"Verificar PR","discard":"Descartar","confirmDiscard":"Confirmar descarte?","mergedNote":"Merge concluído — specs movidas para Concluído","discardedNote":"Descartada — specs devolvidas ao backlog","implementationFailedNote":"A execução de implementação falhou antes de produzir algo entregável. Abra o log da execução para inspecionar a falha e descarte este cartão antes de relançar.","dismiss":"Encerrar acompanhamento","discardLocalResult":"Descartar resultado local","retryPush":"Tentar push novamente","retryPushVerified":"Push verificado · o commit {{sha}} está na PR","commitAlreadyVerified":"O commit {{sha}} já está verificado na PR","deliveryCommit":"commit {{sha}}","reopen":"Reabrir","createPartialPr":"Criar PR com {{count}}","supersededNote":"Uma execução de implementação mais recente substituiu este cartão.","noChangesExisting":"Nenhuma nova alteração foi necessária; a PR existente permanece inalterada.","noChangesNote":"Nenhuma alteração de código foi necessária. Marque as specs como concluídas ou devolva-as ao backlog para refinamento.","deliveryNeedsAttention":"Implementação concluída; a entrega requer atenção","deliveryBlockedNote":"A implementação foi concluída com sucesso, mas a entrega está bloqueada. Revise os detalhes da etapa e os logs antes de descartar o resultado local.","partialDeliveryBlockedNote":"Parte da implementação foi concluída com sucesso, mas ainda não há nada que possa ser entregue com segurança. Reveja as evidências por unidade e os logs antes de escolher a próxima ação.","retryPushNote":"A implementação foi concluída com sucesso e as alterações estão seguras localmente. Tente novamente apenas o push.","cleanupIncomplete_one":"Limpeza incompleta ({{count}} aviso)","cleanupIncomplete_other":"Limpeza incompleta ({{count}} avisos)","safetyArchiveTitle":"Arquivo de segurança ({{count}})","safetyArchiveHint":"Os ficheiros temporários do espaço de trabalho foram preservados fora da PR por precaução. Pode inspecioná-los ou removê-los manualmente.","confirm":{"recoverAndRetryTitle":"Fazer commit e enviar o resultado preservado?","recoverAndRetryBody":"O Specrails utilizará apenas o worktree isolado ou o ramo registado compatível com avanço rápido para {{branch}}. Se necessário, criará um commit com os ficheiros entregáveis e enviará esse commit exato apenas se a PR continuar aberta nos ramos de origem e destino esperados. A pasta principal do projeto e as respetivas alterações sem commit não serão afetadas.","recheckRecoveryTitle":"Verificar este computador novamente?","recheckRecoveryBody":"O Specrails examinará novamente neste clone o worktree, a branch, as refs, os reflogs e os objetos Git órfãos pertencentes à entrega de {{branch}}. Se comprovar um único resultado, poderá fazer commit das alterações isoladas e repetir o push exato. A pasta principal do projeto não será alterada.","noChangesDoneTitle":"Marcar estas specs como concluídas?","noChangesDoneBody":"A implementação confirmou que nenhuma alteração de código é necessária. As specs serão movidas para Concluído e o worktree sem alterações será limpo.","refineTitle":"Refinar estas specs?","refineBody":"O resultado sem alterações será fechado e as specs voltarão ao backlog para refinamento. Os logs de execução permanecerão disponíveis.","mergeLocalTitle":"Integrar localmente?","mergeLocalBody":"Os branches entregues serão mesclados em {{base}} no checkout local. O checkout deve estar em {{base}} com a árvore de trabalho limpa.","freshDiscardTitle":"Descartar esta entrega?","freshDiscardBody":"A PR será fechada sem excluir o branch remoto. Apenas branches locais e worktrees pertencentes ao SpecRails que ainda estejam no commit registrado serão removidos; qualquer item alterado será preservado com um aviso. As specs voltarão ao backlog. Os recursos locais removidos não podem ser recuperados.","implementationFailedDiscardTitle":"Descartar esta entrega com falha?","implementationFailedDiscardBody":"O cartão será fechado e as specs voltarão ao backlog. O trabalho local e os branches serão preservados para inspeção. Apenas recursos comprovadamente seguros para limpeza poderão ser removidos.","dismissTitle":"Encerrar este acompanhamento?","dismissBody":"Este cartão de acompanhamento será encerrado. Seu worktree só será removido se isso ainda for seguro; caso contrário, será preservado com um aviso. A PR existente, seu branch e o estado da revisão permanecerão inalterados.","discardLocalTitle":"Descartar o resultado local?","discardLocalBody":"A iteração local recuperável só será removida se isso ainda for seguro; se tiver sido alterada, será preservada com um aviso. Qualquer PR existente e seu branch permanecerão inalterados. Um resultado removido não pode ser recuperado."},"degraded":{"pushed":"O ramo foi enviado mas não foi possível criar a PR — tente novamente para concluir.","localOnly":"As alterações foram montadas localmente mas não enviadas — tente novamente para publicar a PR."},"alreadyResolved":"Já resolvida noutro lugar","actionFailed":"A ação falhou","notMergedYet":"Ainda sem merge","commitMissingRetry":"O commit da entrega não está mais na PR. Você pode tentar o push novamente.","prVerifiedWaiting":"Commit {{sha}} verificado · aguardando merge","viewLog":"Ver o registro de execução de {{ref}}","runElapsedAria":"{{elapsed}} decorridos","runCostAria":"{{cost}} gastos","pinned":{"label":"Fixada","marker":"Cartão de implementação — fixado acima","collapse":"Minimizar cartão fixado","expand":"Expandir cartão fixado","expandCard":"Expandir este cartão","collapseCard":"Minimizar este cartão","collapsed_one":"Cartão de implementação","collapsed_other":"{{count}} cartões de implementação","state":{"completed":"Concluída","no_changes":"Sem alterações","pr_closed":"Fechada","superseded":"Substituída","building":"Em curso","on_review":"Revisão","pr_draft":"PR rascunho","pr_ready":"Publicada","implementation_failed":"Falhou","pr_failed":"Falhou","merged":"Integrada","discarded":"Descartada"}},"mergeLocal":"Integrar localmente","mergeLocalTooltip":"Faz merge dos branches entregues em {{base}} no seu checkout local (sem GitHub)","mergeLocalBlockedDirty":"Não é possível integrar: sua árvore de trabalho em {{base}} tem mudanças sem commit. Faça commit ou stash e tente de novo.","mergeLocalBlockedBranch":"Não é possível integrar: seu checkout está em {{current}}, não em {{base}}. Mude para {{base}} e tente de novo.","mergedLocally":"Integrado em {{base}} localmente"}`),Q={heading:`Rascunho da spec`,drafting:`Atualizando rascunho…`,acceptanceCriteria:`Critérios de aceitação`,untitled:`Spec sem título`,expand:`Ver descrição completa`,collapse:`Recolher descrição`},$={openTicket:`Abrir spec #{{id}}`,openPullRequest:`Abrir PR #{{id}}`,openJob:`Abrir job {{id}}`,openLoop:`Abrir loop {{id}}`,ticketNotFound:`Spec #{{id}} não encontrada — pode ter sido excluída`,pullRequestUrlMissing:`A PR #{{id}} foi mencionada sem URL`,pullRequestNotFound:`A PR #{{id}} não foi encontrada neste projeto`,jobNotFound:`Job não encontrado — pode ter sido excluído`,loopNotFound:`Loop não encontrado — pode ter sido excluído`,lookupFailed:`Não foi possível verificar a referência — tente novamente`},ee={untitled:`Missão sem título`,menu:`Menu da missão`,rename:`Renomear`,renamePlaceholder:`Nome da missão`,renameHint:`Duplo clique para renomear`,renameFailed:`Não foi possível renomear`,addFavorite:`Adicionar aos favoritos`,removeFavorite:`Remover dos favoritos`,copyName:`Copiar nome da missão`,copyId:`Copiar ID da missão`,copyProject:`Copiar nome do projeto`,copyProjectPath:`Copiar caminho do projeto`,copyFailed:`Não foi possível copiar`,copyTranscript:`Copiar transcrição`,copyTranscriptSuccess:`Transcrição copiada`,copyTranscriptFailed:`Não foi possível copiar a transcrição`,exportTranscript:`Exportar transcrição (.txt)`,exportTranscriptSuccess:`Exportação da transcrição iniciada`,exportTranscriptFailed:`Não foi possível exportar a transcrição`,delete:`Excluir missão`,deleteConfirm:`Excluir esta missão? Não pode ser desfeito.`,deleteFailed:`Não foi possível excluir a missão`},te=`O que devemos construir agora?`,ne={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,queueEdit:S,git:C,provider:w,tier:T,approval:E,project:D,palette:O,mission:k,noProvider:A,degraded:j,toolCard:M,error:N,chip:P,newAgent:F,switchToAgent:I,switchToKanban:L,search:R,home:z,favoriteMissions:B,untitled:V,workspace:H,attachFile:U,deleteConversation:W,confirmDeleteConversation:G,addFavoriteConversation:K,removeFavoriteConversation:q,confirmShort:J,imagesUnsupported:Y,effort:X,prCard:Z,specDraft:Q,refs:$,header:ee,emptyTitleCodeRain:te};export{K as addFavoriteConversation,E as approval,U as attachFile,s as attachment,P as chip,d as close,r as composerPlaceholder,G as confirmDeleteConversation,J as confirmShort,g as connecting,_ as consultingCode,o as copy,ne as default,j as degraded,W as deleteConversation,X as effort,m as emptyHint,p as emptyTitle,te as emptyTitleCodeRain,N as error,B as favoriteMissions,C as git,ee as header,b as history,z as home,Y as imagesUnsupported,c as maximize,u as minimize,k as mission,y as model,F as newAgent,f as newConversation,A as noProvider,O as palette,Z as prCard,D as project,w as provider,x as queue,S as queueEdit,$ as refs,q as removeFavoriteConversation,l as restore,R as search,i as send,v as size,Q as specDraft,a as stop,t as subtitle,I as switchToAgent,L as switchToKanban,h as thinking,T as tier,e as title,M as toolCard,n as trigger,V as untitled,H as workspace};
@@ -0,0 +1 @@
1
+ var e=`ミッションセンター`,t=`チャットで Specrails を操作`,n=`ミッションセンター`,r=`エージェントに何でも頼んでください…`,i=`送信`,a=`停止`,o=`コピー`,s={openPreview:`{{name}}をプレビュー`,openDownload:`{{name}}をダウンロード`,previewTitle:`{{name}}のプレビュー`,downloadTitle:`ファイルをダウンロードしますか?`,downloadPrompt:`このファイルはここではプレビューできません。ダウンロードしますか?`,download:`ダウンロード`,cancelDownload:`今はしない`,loading:`ファイルを準備中…`,loadFailed:`添付ファイルを読み込めませんでした`,loadError:`添付ファイルを読み込めませんでした: {{error}}`},c=`最大化`,l=`元に戻す`,u=`最小化`,d=`閉じる`,f=`新しいミッション`,p=`ミッションは何ですか?`,m=`プロジェクトを選んでから尋ねてください。エージェントの作業中、ボードはリアルタイムで更新されます。`,h=`考え中…`,g=`接続中…`,_=`アプリを確認中…`,v={compact:`コンパクト`,comfortable:`快適`,max:`最大化`},y={label:`モデル`,loading:`モデルを読み込み中…`,unavailable:`モデルを利用できません`},b={hint:`プロンプト履歴を表示中 — 入力で編集、↑↓ で移動`},x={queued:`待機中`,send:`キューに送信`,sendHint:`エージェントは作業中です — このメッセージはキューに入り、次に実行されます`,placeholder:`エージェントの作業中に追加できます — キューに入ります…`},S={editing:`キュー内メッセージを編集中({{m}} 件中 {{n}} 件目)`,hint:`↑↓ で移動 · Enter で保存 · Esc でキャンセル`,save:`キュー内メッセージを保存`,cancel:`編集をキャンセル`,dispatched:`そのキュー内メッセージは既に送信されました — 入力したテキストは下書きとして保持されます`,saveFailed:`キュー内メッセージを保存できませんでした`},C={branch:`ブランチ`,detached:`(detached)`,dirty:`未コミットの変更あり`,switched:`{{branch}} に切り替えました`,switchFailed:`ブランチを切り替えられませんでした`,lockedWhileWorking:`エージェントの作業中はブランチをロックしています`,searchPlaceholder:`ブランチを検索…`,noMatches:`一致するブランチがありません`,worktrees:`ワークツリー`,worktreePathCopied:`ワークツリーのパスをコピーしました`,copyWorktreePath:`ワークツリーのパスをコピー`},w={label:`プロバイダー`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},T={cycleHint:`⇧⇥ で変更`,observe:{name:`観察`,desc:`読み取り専用 — 何も変更しません`},edit:{name:`編集`,desc:`作成と編集(取り消し可能)`},operate:{name:`操作`,desc:`AI を起動 — 費用がかかります`},autonomous:{name:`自律`,desc:`削除と停止 — 取り消し不可`},lockedTitle:`より高いレベルが必要です`,lockedBody:`その操作には「{{level}}」レベルが必要です。現在は「{{current}}」です。`,raiseHint:`⇧⇥ でレベルを上げるか、別の方法で尋ねてください。`},E={title:`操作を確認`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`承認`,cancel:`キャンセル`,dontAskAgain:`このセッションでは今後確認しない`,approved:`承認しました`,cancelled:`キャンセルしました`},D={home:`ホーム`,searchPlaceholder:`Specrails に話しかける…`,searchProjectsPlaceholder:`プロジェクトを検索…`,recents:`最近`,allProjects:`すべてのプロジェクト`,searchAll:`すべてのプロジェクトを検索`,addProject:`プロジェクトを追加…`,homeHint:`プロジェクトが未選択 — すべてのプロジェクトを横断して操作中。`,askCreateOrSearch:`プロジェクトが選択されていません。新しいプロジェクトを作成しますか、それともすべてのプロジェクトを検索しますか?`},O={remove:`{{label}} を削除`,addContextAction:`コンテキストまたはアクションを追加`,filtering:`"{{query}}" で絞り込み`,keyboard:`↑↓ Enter Esc`,noMatches:`一致なし`,noMatchesFor:`"{{query}}" の一致なし`,mode:{reference:{title:`参照`,hint:`@ プロジェクト、仕様、ミッション`},trace:{title:`トレース`,hint:`# ジョブ、実行、ID`},action:{title:`アクション`,hint:`/ このコンテキストのコマンド`}},plus:{reference:`参照`,referenceHint:`プロジェクト、仕様、ミッション`,trace:`トレース`,traceHint:`ジョブ、実行、ID`,action:`アクション`,actionHint:`作成、起動、確認`,fileAttachment:`ファイル添付`,fileAttachmentHint:`ドキュメント、画像、ログを追加`,browserCapture:`ブラウザーキャプチャ`,browserCaptureHint:`ワークスペースブラウザーから利用可能`}},k={label:`ミッションを切り替え`,untitled:`新しいミッション`,new:`新しいミッション`,searchPlaceholder:`ミッションを検索…`,noMatches:`一致するミッションがありません`,working:`エージェントが作業中`,queuedBadge:`{{n}} 件キュー中`,delete:`ミッション "{{title}}" を削除`,deleteConfirm:`削除しますか?`,deleteLiveConfirm:`エージェントが作業中です — それでも削除しますか?`,confirmDelete:`削除を確定`,cancelDelete:`ミッションを残す`,deleteFailed:`ミッションを削除できませんでした`},A={title:`AIプロバイダーが未インストール`,body:`エージェントには Claude、Codex、Gemini、Kimi のいずれかが必要です。インストールしてからエージェントを再度開いてください。`,placeholder:`AIプロバイダーをインストールしてエージェントを利用…`},j={title:`Specrails MCP がオフです`,body:`エージェントがアプリを操作するには、組み込みの MCP サーバーが必要です。`,enable:`Specrails MCP を有効化`,enabling:`有効化中…`,enabled:`MCP を有効化しました`},M={live:`ライブ`,queued:`待機中`,running:`実行中`,done:`完了`,failed:`失敗`},N={generic:`問題が発生しました。もう一度お試しください。`,busy:`エージェントは処理中です。しばらくしてからお試しください。`},P={kindAgent:`エージェントのミッション`},F=`新しいミッション`,I=`ミッションセンターに切り替え`,L=`ボードに切り替え`,R=`検索`,z=`ホーム`,B=`お気に入りミッション`,V=`無題`,H={title:`ワークスペース`,terminal:`ターミナル`,files:`ファイル`,browser:`ブラウザ`,requiresProject:`このツールを使うにはプロジェクトを選択してください`,resizeCode:`コードペインをリサイズ`,closeFiles:`コードを閉じる`,browserConfirm:`エージェントに追加`,browserCaptured:`キャプチャを追加しました`,uploadFailed:`アップロードに失敗しました`,requiresConversation:`このツールを使うにはミッションを開始してください`,jobs:`ジョブ`,closeJobs:`ジョブを閉じる`,resizeJobs:`ジョブパネルのサイズ変更`,noJobs:`まだジョブがありません — エージェントに実行を頼んでみましょう`},U=`ファイルを添付`,W=`「{{title}}」を削除`,G=`「{{title}}」の削除を確認`,K=`「{{title}}」をお気に入りに追加`,q=`「{{title}}」をお気に入りから削除`,J=`削除しますか?`,Y=`このプロバイダーはまだ画像を読み取れません — テキストファイルを添付してください`,X={label:`エフォート`,minimal:`最小`,low:`低`,medium:`中`,high:`高`,xhigh:`最高`,max:`最大`,ultra:`ウルトラ`},Z=JSON.parse(`{"operation":{"inProgress":"操作を実行中…","create-pr":"PR を作成中…","publish":"公開中…","discard":"破棄中…","dismiss":"フォローアップを閉じています…","poll-merge":"マージを確認中…","reopen":"再オープン中…","merge-local":"ローカルで統合中…","recover-and-retry":"保存された結果をコミットして再プッシュしています…","acknowledge-no-changes":"完了に変更中…"},"markDone":"完了にする","refine":"改善する","completedNote":"確認済み — spec を完了に移動しました","partialSummary":"{{total}} 件中 {{succeeded}} 件完了、{{failed}} 件失敗","unit":{"failed":"実装失敗","blocked":"配信ブロック","noChanges":"変更なし","succeeded":"準備完了"},"rail":"レール {{index}}","specCount_one":"スペック {{count}} 件","specCount_other":"スペック {{count}} 件","base":"ベースブランチ","openPr":"PR を開く","existingPr":"既存の PR","title":{"no_changes":"変更は不要でした","partial":"一部を実装しました","delivery_blocked":"実装完了 — 配信に対応が必要です","update_failed":"実装完了 — 更新に失敗しました","pr_closed":"PR はマージされずに閉じられました","superseded":"新しい実行に置き換えられました","existing_pr_updated":"既存の PR を更新しました","building":"分離されたワークツリーで実装中…","buildingExistingPr":"既存の PR に変更を適用中…","paused":"人の判断が必要です","on_review":"実装のレビュー準備完了","pr_draft":"ドラフト PR を作成しました","pr_draft_degraded":"PR の公開が未完了","pr_ready":"PR のマージ準備完了","implementation_failed":"実装に失敗しました","pr_failed":"PR の作成に失敗しました","merged":"PR がマージされました","discarded":"破棄済み"},"buildingHint":"完了すると PR を作成するか確認します。","buildingExistingPrHint":"Specrails は既存 PR のブランチで作業しており、レビュー変更を同じ PR に push します。","paused":"実装を一時停止中","pausedForRun":"{{ref}} で一時停止中","resume":"再開","stopExecution":"実行を停止","stopExecutionSent":"停止シグナルを送信しました","stopExecutionFailed":"実行を停止できませんでした","createPr":"PR を作成","publish":"公開","checkout":"ブランチをチェックアウト","checkoutTooltip":"プロジェクトのメインフォルダで {{branch}} をチェックアウト","checkoutSuccess":"{{branch}} をチェックアウトしました","checkoutFailed":"PR ブランチをチェックアウトできませんでした","checkoutDirtyTitle":"変更を保護するためチェックアウトをブロックしました","checkoutDirtyBody":"プロジェクトのメインフォルダーに未コミットの変更があります。コミットまたは stash してから、もう一度お試しください。変更は一切加えられていません。","checkoutSafetyUnknownTitle":"安全性を確認できないためチェックアウトを一時停止しました","checkoutSafetyUnknownBody":"Specrails はプロジェクトのメインフォルダーの Git 状態を読み取れませんでした。解放や変更は行われていません。Git が利用可能になってから再試行してください。","checkoutNotDeliverableTitle":"この PR ブランチには保存された実装が含まれていません","checkoutNotDeliverableBody":"配信対象の正確なコミットはまだ検証されていません。代わりにローカルの結果を確認または復元してください。","inspectLocalResult":"ローカルの結果を確認","inspectLocalResultTooltip":"保存された隔離 worktree を表示してパスをコピー","localResultPathCopied":"ローカル結果のパスをコピーしました","localResultPath":"保存されたローカル結果","localResultUnavailableHere":"このコンピューターには復元可能な worktree がありません。実行したコンピューターで実行ログを確認してください。","recoverAndRetry":"コミットして push を再試行","recoverAndRetryVerified":"復元したコミット {{sha}} が PR 上で検証されました","recoveryStillBlocked":"ローカル復元には引き続き対応が必要です","recheckRecovery":"もう一度確認","recoveryUnavailable":"このコンピューターでは復旧を検証できませんでした","recoveryUnavailableBody":"Specrails は、このクローンで配信に属する結果を安全に 1 つへ特定できませんでした。変更や削除は行われていません。ステージの詳細と run ログを確認してください。run を別のコンピューターで実行した場合は、そちらで Specrails を開いて再確認してください。","recoveryDetailSummary":"復旧の技術的詳細","retry":"再試行","retryPr":"PR を再試行","checkMerge":"マージを確認","verifyPr":"PRを検証","discard":"破棄","confirmDiscard":"破棄しますか?","mergedNote":"マージ済み — スペックは完了に移動しました","discardedNote":"破棄済み — スペックはバックログに戻されました","implementationFailedNote":"実装の実行は、配信可能な成果物が生成される前に失敗しました。実行ログで失敗内容を確認し、再実行する前にこのカードを破棄してください。","dismiss":"フォローアップを閉じる","discardLocalResult":"ローカル結果を破棄","retryPush":"プッシュを再試行","retryPushVerified":"プッシュを検証しました · コミット {{sha}} はPRに含まれています","commitAlreadyVerified":"コミット {{sha}} はすでにPRで検証済みです","deliveryCommit":"コミット {{sha}}","reopen":"再オープン","createPartialPr":"{{count}} 件で PR を作成","supersededNote":"新しい実装実行がこのカードを置き換えました。","noChangesExisting":"新しい変更は不要でした。既存の PR は変更されていません。","noChangesNote":"コード変更は不要でした。spec を完了にするか、改善のためバックログに戻してください。","deliveryNeedsAttention":"実装完了。配信に対応が必要です","deliveryBlockedNote":"実装は成功しましたが、配信がブロックされています。ローカル結果を破棄する前に、ステージの詳細と実行ログを確認してください。","partialDeliveryBlockedNote":"実装の一部は成功しましたが、まだ安全に配信できるものはありません。次の操作を選ぶ前に、ユニットごとの結果と実行ログを確認してください。","retryPushNote":"実装は成功し、変更はローカルに安全に保存されています。プッシュのみ再試行してください。","cleanupIncomplete_one":"クリーンアップが不完全です(警告 {{count}} 件)","cleanupIncomplete_other":"クリーンアップが不完全です(警告 {{count}} 件)","safetyArchiveTitle":"安全アーカイブ({{count}})","safetyArchiveHint":"念のため、一時ワークスペースファイルを PR の外部に保存しました。内容を確認するか、手動で削除できます。","confirm":{"recoverAndRetryTitle":"保存された結果をコミットして push しますか?","recoverAndRetryBody":"Specrails は {{branch}} 用の隔離 worktree または記録済みの fast-forward 可能なブランチだけを使用します。必要に応じて配信対象ファイルをコミットし、PR が想定された head/base のまま開いている場合に限り、その正確なコミットだけを push します。メインのプロジェクトフォルダーと未コミットの変更には一切触れません。","recheckRecoveryTitle":"このコンピューターをもう一度確認しますか?","recheckRecoveryBody":"Specrails は、このクローンで {{branch}} の配信に属する worktree、ブランチ、refs、reflogs、孤立した Git オブジェクトを再スキャンします。結果を 1 つに特定できた場合、隔離された変更をコミットし、正確な push を再試行します。メインのプロジェクトフォルダーには触れません。","noChangesDoneTitle":"これらの spec を完了にしますか?","noChangesDoneBody":"コード変更が不要であることを実装が確認しました。spec を完了に移動し、変更のない worktree をクリーンアップします。","refineTitle":"これらの spec を改善しますか?","refineBody":"変更なしの結果を閉じ、改善できるよう spec をバックログに戻します。実行ログは引き続き利用できます。","mergeLocalTitle":"ローカルで統合しますか?","mergeLocalBody":"配信されたブランチをローカル checkout の {{base}} にマージします。checkout は {{base}} で、作業ツリーがクリーンである必要があります。","freshDiscardTitle":"この配信を破棄しますか?","freshDiscardBody":"PR はリモートブランチを削除せずにクローズされます。SpecRails が所有し、記録済みコミットのままのローカルブランチと worktree だけが削除されます。変更されたものは警告とともに保持されます。spec はバックログに戻ります。削除されたローカルリソースは復旧できません。","implementationFailedDiscardTitle":"失敗した配信を破棄しますか?","implementationFailedDiscardBody":"カードを閉じ、spec をバックログに戻します。ローカルの作業とブランチは確認できるよう保持されます。安全にクリーンアップできることが確認されたリソースのみ削除される場合があります。","dismissTitle":"このフォローアップを閉じますか?","dismissBody":"このフォローアップカードを閉じます。専用 worktree は、安全に削除できる場合にのみ削除されます。安全でない場合は警告とともに保持されます。既存の PR、ブランチ、レビュー状態は変更されません。","discardLocalTitle":"ローカル結果を破棄しますか?","discardLocalBody":"復旧可能なローカル反復は、安全に削除できる場合にのみ削除されます。変更されている場合は警告とともに保持されます。既存の PR とブランチは変更されません。削除された結果は復旧できません。"},"degraded":{"pushed":"ブランチはプッシュされましたが、PR を作成できませんでした — 再試行して完了してください。","localOnly":"変更はローカルで組み立てられましたが、プッシュされていません — 再試行して PR を公開してください。"},"alreadyResolved":"すでに他の場所で解決済み","actionFailed":"操作に失敗しました","notMergedYet":"まだマージされていません","commitMissingRetry":"配信コミットは PR に含まれなくなりました。プッシュを再試行できます。","prVerifiedWaiting":"コミット {{sha}} を検証しました · マージ待ち","viewLog":"{{ref}} の実行ログを表示","runElapsedAria":"経過時間 {{elapsed}}","runCostAria":"消費コスト {{cost}}","pinned":{"label":"ピン留め","marker":"実装カード — 上部にピン留め中","collapse":"ピン留めカードを最小化","expand":"ピン留めカードを展開","expandCard":"このカードを展開","collapseCard":"このカードを最小化","collapsed_one":"実装カード","collapsed_other":"{{count}} 件の実装カード","state":{"completed":"完了","no_changes":"変更なし","pr_closed":"クローズ","superseded":"置換済み","building":"実装中","on_review":"レビュー","pr_draft":"ドラフト PR","pr_ready":"公開済み","implementation_failed":"失敗","pr_failed":"失敗","merged":"マージ済み","discarded":"破棄済み"}},"mergeLocal":"ローカルに統合","mergeLocalTooltip":"配信されたブランチをローカルチェックアウトの {{base}} にマージします(GitHub 不要)","mergeLocalBlockedDirty":"統合できません:{{base}} のワークツリーに未コミットの変更があります。コミットまたはスタッシュして再試行してください。","mergeLocalBlockedBranch":"統合できません:チェックアウトは {{current}} で、{{base}} ではありません。{{base}} に切り替えて再試行してください。","mergedLocally":"ローカルで {{base}} に統合しました"}`),Q={heading:`スペック下書き`,drafting:`下書きを更新中…`,acceptanceCriteria:`受け入れ基準`,untitled:`無題のスペック`,expand:`説明をすべて表示`,collapse:`説明を折りたたむ`},$={openTicket:`スペック #{{id}} を開く`,openPullRequest:`PR #{{id}} を開く`,openJob:`ジョブ {{id}} を開く`,openLoop:`ループ {{id}} を開く`,ticketNotFound:`スペック #{{id}} が見つかりません — 削除された可能性があります`,pullRequestUrlMissing:`PR #{{id}} は URL なしで参照されました`,pullRequestNotFound:`このプロジェクトで PR #{{id}} が見つかりません`,jobNotFound:`ジョブが見つかりません — 削除された可能性があります`,loopNotFound:`ループが見つかりません — 削除された可能性があります`,lookupFailed:`参照を確認できませんでした — もう一度お試しください`},ee={untitled:`無題のミッション`,menu:`ミッションメニュー`,rename:`名前を変更`,renamePlaceholder:`ミッション名`,renameHint:`ダブルクリックで名前を変更`,renameFailed:`名前を変更できませんでした`,addFavorite:`お気に入りに追加`,removeFavorite:`お気に入りから削除`,copyName:`ミッション名をコピー`,copyId:`ミッション ID をコピー`,copyProject:`プロジェクト名をコピー`,copyProjectPath:`プロジェクトパスをコピー`,copyFailed:`コピーできませんでした`,copyTranscript:`トランスクリプトをコピー`,copyTranscriptSuccess:`トランスクリプトをコピーしました`,copyTranscriptFailed:`トランスクリプトをコピーできませんでした`,exportTranscript:`トランスクリプトをエクスポート (.txt)`,exportTranscriptSuccess:`トランスクリプトのエクスポートを開始しました`,exportTranscriptFailed:`トランスクリプトをエクスポートできませんでした`,delete:`ミッションを削除`,deleteConfirm:`このミッションを削除しますか?元に戻せません。`,deleteFailed:`ミッションを削除できませんでした`},te=`次に何を作りますか?`,ne={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,queueEdit:S,git:C,provider:w,tier:T,approval:E,project:D,palette:O,mission:k,noProvider:A,degraded:j,toolCard:M,error:N,chip:P,newAgent:F,switchToAgent:I,switchToKanban:L,search:R,home:z,favoriteMissions:B,untitled:V,workspace:H,attachFile:U,deleteConversation:W,confirmDeleteConversation:G,addFavoriteConversation:K,removeFavoriteConversation:q,confirmShort:J,imagesUnsupported:Y,effort:X,prCard:Z,specDraft:Q,refs:$,header:ee,emptyTitleCodeRain:te};export{K as addFavoriteConversation,E as approval,U as attachFile,s as attachment,P as chip,d as close,r as composerPlaceholder,G as confirmDeleteConversation,J as confirmShort,g as connecting,_ as consultingCode,o as copy,ne as default,j as degraded,W as deleteConversation,X as effort,m as emptyHint,p as emptyTitle,te as emptyTitleCodeRain,N as error,B as favoriteMissions,C as git,ee as header,b as history,z as home,Y as imagesUnsupported,c as maximize,u as minimize,k as mission,y as model,F as newAgent,f as newConversation,A as noProvider,O as palette,Z as prCard,D as project,w as provider,x as queue,S as queueEdit,$ as refs,q as removeFavoriteConversation,l as restore,R as search,i as send,v as size,Q as specDraft,a as stop,t as subtitle,I as switchToAgent,L as switchToKanban,h as thinking,T as tier,e as title,M as toolCard,n as trigger,V as untitled,H as workspace};
@@ -0,0 +1 @@
1
+ var e=`Missionszentrale`,t=`Specrails per Chat bedienen`,n=`Missionszentrale`,r=`Bitte den Agenten um alles…`,i=`Senden`,a=`Stopp`,o=`Kopieren`,s={openPreview:`{{name}} anzeigen`,openDownload:`{{name}} herunterladen`,previewTitle:`Vorschau von {{name}}`,downloadTitle:`Datei herunterladen?`,downloadPrompt:`Diese Datei kann hier nicht in der Vorschau angezeigt werden. Möchtest du sie herunterladen?`,download:`Herunterladen`,cancelDownload:`Jetzt nicht`,loading:`Datei wird vorbereitet…`,loadFailed:`Anhang konnte nicht geladen werden`,loadError:`Anhang konnte nicht geladen werden: {{error}}`},c=`Maximieren`,l=`Wiederherstellen`,u=`Minimieren`,d=`Schließen`,f=`Neue Mission`,p=`Wie lautet die Mission?`,m=`Wähle ein Projekt und frag dann. Das Board aktualisiert sich live, während der Agent arbeitet.`,h=`Denkt nach…`,g=`Verbinden…`,_=`App wird abgefragt…`,v={compact:`Kompakt`,comfortable:`Komfortabel`,max:`Maximieren`},y={label:`Modell`,loading:`Modelle werden geladen…`,unavailable:`Modelle nicht verfügbar`},b={hint:`Verlauf durchsuchen — tippen zum Bearbeiten, ↑↓ zum Navigieren`},x={queued:`In Warteschlange`,send:`In Warteschlange senden`,sendHint:`Der Agent arbeitet noch — diese Nachricht wird eingereiht und danach ausgeführt`,placeholder:`Mehr hinzufügen, während der Agent arbeitet — wird eingereiht…`},S={editing:`Bearbeite eingereihte Nachricht {{n}} von {{m}}`,hint:`↑↓ zum Navigieren · Enter speichert · Esc bricht ab`,save:`Eingereihte Nachricht speichern`,cancel:`Bearbeitung abbrechen`,dispatched:`Diese eingereihte Nachricht wurde bereits gesendet — dein Text bleibt als Entwurf erhalten`,saveFailed:`Eingereihte Nachricht konnte nicht gespeichert werden`},C={branch:`Branch`,detached:`(detached)`,dirty:`Nicht committete Änderungen`,switched:`Zu {{branch}} gewechselt`,switchFailed:`Branch-Wechsel fehlgeschlagen`,lockedWhileWorking:`Branch gesperrt, während der Agent arbeitet`,searchPlaceholder:`Branches durchsuchen…`,noMatches:`Keine passenden Branches`,worktrees:`Worktrees`,worktreePathCopied:`Worktree-Pfad kopiert`,copyWorktreePath:`Worktree-Pfad kopieren`},w={label:`Anbieter`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},T={cycleHint:`⇧⇥ zum Wechseln`,observe:{name:`Beobachten`,desc:`Nur lesen — nichts ändert sich`},edit:{name:`Bearbeiten`,desc:`Erstellen und bearbeiten (umkehrbar)`},operate:{name:`Ausführen`,desc:`KI starten — kostet Geld`},autonomous:{name:`Autonom`,desc:`Löschen und beenden — unumkehrbar`},lockedTitle:`Höhere Stufe erforderlich`,lockedBody:`Diese Aktion erfordert die Stufe „{{level}}“. Du bist auf „{{current}}“.`,raiseHint:`⇧⇥ um die Stufe zu erhöhen, oder frag anders.`},E={title:`Aktion bestätigen`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Genehmigen`,cancel:`Abbrechen`,dontAskAgain:`In dieser Sitzung nicht mehr fragen`,approved:`Genehmigt`,cancelled:`Abgebrochen`},D={home:`Start`,searchPlaceholder:`Mit Specrails sprechen…`,searchProjectsPlaceholder:`Projekte suchen…`,recents:`Zuletzt verwendet`,allProjects:`Alle Projekte`,searchAll:`In allen Projekten suchen`,addProject:`Projekt hinzufügen…`,homeHint:`Kein Projekt ausgewählt — über alle Projekte hinweg.`,askCreateOrSearch:`Es ist kein Projekt ausgewählt. Möchtest du ein neues Projekt erstellen oder über alle Projekte hinweg suchen?`},O={remove:`{{label}} entfernen`,addContextAction:`Kontext oder Aktion hinzufügen`,filtering:`Filtere "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`Keine Treffer`,noMatchesFor:`Keine Treffer für "{{query}}"`,mode:{reference:{title:`Referenz`,hint:`@ Projekte, Specs, Missionen`},trace:{title:`Trace`,hint:`# Jobs, Läufe, IDs`},action:{title:`Aktion`,hint:`/ Befehle für diesen Kontext`}},plus:{reference:`Referenz`,referenceHint:`Projekte, Specs, Missionen`,trace:`Trace`,traceHint:`Jobs, Läufe, IDs`,action:`Aktion`,actionHint:`Erstellen, starten, prüfen`,fileAttachment:`Dateianhang`,fileAttachmentHint:`Docs, Bilder, Logs hinzufügen`,browserCapture:`Browser-Aufnahme`,browserCaptureHint:`Im Workspace-Browser verfügbar`}},k={label:`Mission wechseln`,untitled:`Neue Mission`,new:`Neue Mission`,searchPlaceholder:`Missionen durchsuchen…`,noMatches:`Keine Mission gefunden`,working:`Agent arbeitet`,queuedBadge:`{{n}} in Warteschlange`,delete:`Mission "{{title}}" löschen`,deleteConfirm:`Löschen?`,deleteLiveConfirm:`Der Agent arbeitet — trotzdem löschen?`,confirmDelete:`Löschen bestätigen`,cancelDelete:`Mission behalten`,deleteFailed:`Mission konnte nicht gelöscht werden`},A={title:`Kein KI-Anbieter installiert`,body:`Der Agent benötigt Claude, Codex, Gemini oder Kimi auf deinem Rechner. Installiere einen und öffne den Agenten erneut, um zu chatten.`,placeholder:`Installiere einen KI-Anbieter, um den Agenten zu nutzen…`},j={title:`Specrails MCP ist aus`,body:`Der Agent braucht den eingebetteten MCP-Server, um die App zu bedienen.`,enable:`Specrails MCP aktivieren`,enabling:`Wird aktiviert…`,enabled:`MCP aktiviert`},M={live:`live`,queued:`in Warteschlange`,running:`läuft`,done:`fertig`,failed:`fehlgeschlagen`},N={generic:`Etwas ist schiefgelaufen. Versuch es erneut.`,busy:`Der Agent ist beschäftigt. Versuch es gleich noch einmal.`},P={kindAgent:`Agenten-Mission`},F=`Neue Mission`,I=`Zur Missionszentrale wechseln`,L=`Zum Board wechseln`,R=`Suchen`,z=`Start`,B=`Lieblingsmissionen`,V=`Ohne Titel`,H={title:`Im Workspace`,terminal:`Terminal`,files:`Dateien`,browser:`Browser`,requiresProject:`Wähle ein Projekt, um dieses Tool zu nutzen`,resizeCode:`Code-Bereich anpassen`,closeFiles:`Code schließen`,browserConfirm:`Zum Agenten hinzufügen`,browserCaptured:`Aufnahme hinzugefügt`,uploadFailed:`Upload fehlgeschlagen`,requiresConversation:`Starte eine Mission, um dieses Werkzeug zu nutzen`,jobs:`Jobs`,closeJobs:`Jobs schließen`,resizeJobs:`Jobs-Bereich anpassen`,noJobs:`Noch keine Jobs — bitte den Agenten, einen zu starten`},U=`Datei anhängen`,W=`„{{title}}“ löschen`,G=`Löschen von „{{title}}“ bestätigen`,K=`„{{title}}“ zu Favoriten hinzufügen`,q=`„{{title}}“ aus Favoriten entfernen`,J=`bestätigen?`,Y=`Dieser Anbieter kann noch keine Bilder lesen — hänge stattdessen Textdateien an`,X={label:`Aufwand`,minimal:`Minimal`,low:`Niedrig`,medium:`Mittel`,high:`Hoch`,xhigh:`Sehr hoch`,max:`Maximal`,ultra:`Ultra`},Z=JSON.parse(`{"operation":{"inProgress":"Aktion läuft…","create-pr":"PR wird erstellt…","publish":"Wird veröffentlicht…","discard":"Wird verworfen…","dismiss":"Fortsetzung wird geschlossen…","poll-merge":"Merge wird geprüft…","reopen":"Wird erneut geöffnet…","merge-local":"Wird lokal integriert…","recover-and-retry":"Gesichertes Ergebnis wird committet und erneut gepusht…","acknowledge-no-changes":"Wird als erledigt markiert…"},"markDone":"Als erledigt markieren","refine":"Verfeinern","completedNote":"Bestätigt — Specs nach Erledigt verschoben","partialSummary":"{{succeeded}} von {{total}} abgeschlossen; {{failed}} fehlgeschlagen","unit":{"failed":"Implementierung fehlgeschlagen","blocked":"Bereitstellung blockiert","noChanges":"keine Änderungen","succeeded":"bereit"},"rail":"Rail {{index}}","specCount_one":"{{count}} Spec","specCount_other":"{{count}} Specs","base":"Basis-Branch","openPr":"PR öffnen","existingPr":"Bestehender PR","title":{"no_changes":"Keine Änderungen erforderlich","partial":"Teilweise implementiert","delivery_blocked":"Implementierung abgeschlossen — Bereitstellung erfordert Aufmerksamkeit","update_failed":"Implementierung abgeschlossen — Aktualisierung fehlgeschlagen","pr_closed":"PR ohne Merge geschlossen","superseded":"Durch einen neueren Lauf ersetzt","existing_pr_updated":"Bestehender PR aktualisiert","building":"Implementierung in einem isolierten Worktree…","buildingExistingPr":"Änderungen werden auf einen bestehenden PR angewendet…","paused":"Benötigt eine menschliche Entscheidung","on_review":"Implementierung bereit zur Prüfung","pr_draft":"Entwurfs-PR erstellt","pr_draft_degraded":"PR-Auslieferung unvollständig","pr_ready":"PR bereit zum Merge","implementation_failed":"Implementierung fehlgeschlagen","pr_failed":"PR-Erstellung fehlgeschlagen","merged":"PR gemergt","discarded":"Verworfen"},"buildingHint":"Nach Abschluss wirst du gefragt, ob der PR erstellt werden soll.","buildingExistingPrHint":"Specrails arbeitet auf dem Branch des bestehenden PRs und pusht die Review-Änderungen zurück in denselben PR.","paused":"Implementierung pausiert","pausedForRun":"Pausiert bei {{ref}}","resume":"Fortsetzen","stopExecution":"Ausführung stoppen","stopExecutionSent":"Stoppsignal gesendet","stopExecutionFailed":"Ausführung konnte nicht gestoppt werden","createPr":"PR erstellen","publish":"Veröffentlichen","checkout":"Branch auschecken","checkoutTooltip":"Den Hauptordner des Projekts auf {{branch}} auschecken","checkoutSuccess":"{{branch}} ausgecheckt","checkoutFailed":"PR-Branch konnte nicht ausgecheckt werden","checkoutDirtyTitle":"Checkout zum Schutz deiner Änderungen blockiert","checkoutDirtyBody":"Der Hauptordner des Projekts enthält nicht committete Änderungen. Committe oder stashe sie und versuche es erneut. Es wurde nichts verändert.","checkoutSafetyUnknownTitle":"Checkout pausiert, da die Sicherheit nicht geprüft werden konnte","checkoutSafetyUnknownBody":"Specrails konnte den Git-Status des Projekt-Hauptordners nicht lesen. Es wurde nichts freigegeben oder verändert. Versuche es erneut, sobald Git verfügbar ist.","checkoutNotDeliverableTitle":"Dieser PR-Branch enthält nicht die gesicherte Implementierung","checkoutNotDeliverableBody":"Der exakte Liefer-Commit wurde noch nicht verifiziert. Prüfe oder stelle stattdessen das lokale Ergebnis wieder her.","inspectLocalResult":"Lokales Ergebnis prüfen","inspectLocalResultTooltip":"Den gesicherten isolierten Worktree anzeigen und seinen Pfad kopieren","localResultPathCopied":"Pfad des lokalen Ergebnisses kopiert","localResultPath":"Gesichertes lokales Ergebnis","localResultUnavailableHere":"Auf diesem Computer ist kein wiederherstellbarer Worktree verfügbar. Prüfe das Run-Protokoll auf dem Computer, auf dem der Lauf ausgeführt wurde.","recoverAndRetry":"Committen und Push wiederholen","recoverAndRetryVerified":"Der wiederhergestellte Commit {{sha}} wurde im PR verifiziert","recoveryStillBlocked":"Die lokale Wiederherstellung erfordert noch Aufmerksamkeit","recheckRecovery":"Erneut prüfen","recoveryUnavailable":"Die Wiederherstellung konnte auf diesem Computer nicht verifiziert werden","recoveryUnavailableBody":"Specrails konnte in diesem Klon nicht sicher genau ein zur Lieferung gehörendes Ergebnis nachweisen. Nichts wurde geändert oder entfernt. Prüfe das Stufendetail und die Run-Protokolle. Wenn der Run auf einem anderen Computer lief, öffne Specrails dort und prüfe erneut.","recoveryDetailSummary":"Technisches Wiederherstellungsdetail","retry":"Erneut versuchen","retryPr":"PR erneut versuchen","checkMerge":"Merge prüfen","verifyPr":"PR verifizieren","discard":"Verwerfen","confirmDiscard":"Verwerfen bestätigen?","mergedNote":"Gemergt — Specs nach Fertig verschoben","discardedNote":"Verworfen — Specs zurück ins Backlog","implementationFailedNote":"Der Implementierungslauf ist fehlgeschlagen, bevor etwas Auslieferbares entstanden ist. Öffne das Run-Protokoll, um den Fehler zu prüfen, und verwirf diese Karte vor einem erneuten Start.","dismiss":"Fortsetzung schließen","discardLocalResult":"Lokales Ergebnis verwerfen","retryPush":"Push wiederholen","retryPushVerified":"Push verifiziert · Commit {{sha}} ist in der PR","commitAlreadyVerified":"Commit {{sha}} ist bereits in der PR verifiziert","deliveryCommit":"Commit {{sha}}","reopen":"Erneut öffnen","createPartialPr":"PR mit {{count}} erstellen","supersededNote":"Ein neuerer Implementierungslauf hat diese Karte ersetzt.","noChangesExisting":"Es waren keine neuen Änderungen nötig; der bestehende PR bleibt unverändert.","noChangesNote":"Es waren keine Codeänderungen nötig. Markiere die Specs als erledigt oder lege sie zur Verfeinerung zurück in den Backlog.","deliveryNeedsAttention":"Implementierung abgeschlossen; Bereitstellung erfordert Aufmerksamkeit","deliveryBlockedNote":"Die Implementierung war erfolgreich, aber die Bereitstellung ist blockiert. Prüfe Stufendetail und Protokolle, bevor du das lokale Ergebnis verwirfst.","partialDeliveryBlockedNote":"Ein Teil der Implementierung war erfolgreich, aber noch ist nichts sicher auslieferbar. Prüfe die Nachweise pro Einheit und die Protokolle, bevor du die nächste Aktion auswählst.","retryPushNote":"Die Implementierung war erfolgreich und die Änderungen sind lokal sicher. Wiederhole nur den Push.","cleanupIncomplete_one":"Bereinigung unvollständig ({{count}} Warnung)","cleanupIncomplete_other":"Bereinigung unvollständig ({{count}} Warnungen)","safetyArchiveTitle":"Sicherheitsarchiv ({{count}})","safetyArchiveHint":"Temporäre Workspace-Dateien wurden vorsichtshalber außerhalb des PR aufbewahrt. Du kannst sie prüfen oder manuell entfernen.","confirm":{"recoverAndRetryTitle":"Das gesicherte Ergebnis committen und pushen?","recoverAndRetryBody":"Specrails verwendet ausschließlich den isolierten Worktree oder den aufgezeichneten Fast-Forward-Branch für {{branch}}. Falls nötig, werden die lieferbaren Dateien committet. Anschließend wird nur dieser exakte Commit gepusht und auch nur dann, wenn der PR noch mit den erwarteten Quell- und Ziel-Branches geöffnet ist. Der Hauptordner deines Projekts und seine nicht committeten Änderungen bleiben unberührt.","recheckRecoveryTitle":"Diesen Computer erneut prüfen?","recheckRecoveryBody":"Specrails durchsucht in diesem Klon erneut den zur Lieferung gehörenden Worktree, Branch, Refs, Reflogs und verwaiste Git-Objekte für {{branch}}. Wird genau ein Ergebnis bewiesen, kann Specrails isolierte Änderungen committen und den exakten Push wiederholen. Der Hauptprojektordner bleibt unberührt.","noChangesDoneTitle":"Diese Specs als erledigt markieren?","noChangesDoneBody":"Die Implementierung hat bestätigt, dass keine Codeänderungen nötig sind. Die Specs werden nach Erledigt verschoben und der unveränderte Worktree wird bereinigt.","refineTitle":"Diese Specs verfeinern?","refineBody":"Das Ergebnis ohne Änderungen wird geschlossen und die Specs kehren zur Verfeinerung in den Backlog zurück. Die Ausführungsprotokolle bleiben verfügbar.","mergeLocalTitle":"Lokal integrieren?","mergeLocalBody":"Die gelieferten Branches werden in deinem lokalen Checkout in {{base}} zusammengeführt. Der Checkout muss auf {{base}} stehen und sauber sein.","freshDiscardTitle":"Diese Lieferung verwerfen?","freshDiscardBody":"Der PR wird geschlossen, ohne seinen Remote-Branch zu löschen. Nur lokale Branches und Worktrees, die SpecRails gehören und noch auf dem aufgezeichneten Commit stehen, werden entfernt; alles Veränderte bleibt mit einer Warnung erhalten. Die Specs kehren in den Backlog zurück. Entfernte lokale Ressourcen können nicht wiederhergestellt werden.","implementationFailedDiscardTitle":"Diese fehlgeschlagene Lieferung verwerfen?","implementationFailedDiscardBody":"Die Karte wird geschlossen und ihre Specs kehren in den Backlog zurück. Lokale Arbeit und Branches bleiben zur Prüfung erhalten. Nur nachweislich sicher bereinigbare Ressourcen dürfen entfernt werden.","dismissTitle":"Diese Fortsetzung schließen?","dismissBody":"Diese Fortsetzungskarte wird geschlossen. Ihr zugehöriger Worktree wird nur entfernt, wenn dies weiterhin sicher ist; andernfalls bleibt er mit einer Warnung erhalten. Der bestehende PR, sein Branch und der Review-Status bleiben unverändert.","discardLocalTitle":"Lokales Ergebnis verwerfen?","discardLocalBody":"Die wiederherstellbare lokale Iteration wird nur entfernt, wenn dies weiterhin sicher ist; wurde sie verändert, bleibt sie mit einer Warnung erhalten. Ein vorhandener PR und sein Branch bleiben unverändert. Ein entferntes Ergebnis kann nicht wiederhergestellt werden."},"degraded":{"pushed":"Der Branch wurde gepusht, aber die PR konnte nicht erstellt werden — erneut versuchen, um abzuschließen.","localOnly":"Die Änderungen wurden lokal zusammengeführt, aber nicht gepusht — erneut versuchen, um die PR zu veröffentlichen."},"alreadyResolved":"Bereits anderweitig erledigt","actionFailed":"Aktion fehlgeschlagen","notMergedYet":"Noch nicht gemergt","commitMissingRetry":"Der Liefer-Commit ist nicht mehr in der PR enthalten. Der Push kann erneut versucht werden.","prVerifiedWaiting":"Commit {{sha}} verifiziert · wartet auf Merge","viewLog":"Ausführungsprotokoll für {{ref}} anzeigen","runElapsedAria":"{{elapsed}} vergangen","runCostAria":"{{cost}} ausgegeben","pinned":{"label":"Angeheftet","marker":"Implementierungskarte — oben angeheftet","collapse":"Angeheftete Karte minimieren","expand":"Angeheftete Karte ausklappen","expandCard":"Diese Karte ausklappen","collapseCard":"Diese Karte minimieren","collapsed_one":"Implementierungskarte","collapsed_other":"{{count}} Implementierungskarten","state":{"completed":"Erledigt","no_changes":"Keine Änderungen","pr_closed":"Geschlossen","superseded":"Ersetzt","building":"Läuft","on_review":"Review","pr_draft":"Entwurfs-PR","pr_ready":"Veröffentlicht","implementation_failed":"Fehlgeschlagen","pr_failed":"Fehlgeschlagen","merged":"Gemerged","discarded":"Verworfen"}},"mergeLocal":"Lokal integrieren","mergeLocalTooltip":"Führt die gelieferten Branches lokal in {{base}} zusammen (ohne GitHub)","mergeLocalBlockedDirty":"Integration nicht möglich: dein Arbeitsverzeichnis auf {{base}} hat uncommittete Änderungen. Committe oder stashe sie und versuche es erneut.","mergeLocalBlockedBranch":"Integration nicht möglich: dein Checkout steht auf {{current}}, nicht auf {{base}}. Wechsle zu {{base}} und versuche es erneut.","mergedLocally":"Lokal in {{base}} integriert"}`),Q={heading:`Spec-Entwurf`,drafting:`Entwurf wird aktualisiert…`,acceptanceCriteria:`Akzeptanzkriterien`,untitled:`Spec ohne Titel`,expand:`Vollständige Beschreibung anzeigen`,collapse:`Beschreibung einklappen`},$={openTicket:`Spec #{{id}} öffnen`,openPullRequest:`PR #{{id}} öffnen`,openJob:`Job {{id}} öffnen`,openLoop:`Loop {{id}} öffnen`,ticketNotFound:`Spec #{{id}} nicht gefunden — möglicherweise gelöscht`,pullRequestUrlMissing:`PR #{{id}} wurde ohne URL erwähnt`,pullRequestNotFound:`PR #{{id}} wurde in diesem Projekt nicht gefunden`,jobNotFound:`Job nicht gefunden — möglicherweise gelöscht`,loopNotFound:`Loop nicht gefunden — er wurde möglicherweise gelöscht`,lookupFailed:`Referenz konnte nicht geprüft werden — bitte erneut versuchen`},ee={untitled:`Unbenannte Mission`,menu:`Missionsmenü`,rename:`Umbenennen`,renamePlaceholder:`Name der Mission`,renameHint:`Zum Umbenennen doppelklicken`,renameFailed:`Umbenennen fehlgeschlagen`,addFavorite:`Zu Favoriten hinzufügen`,removeFavorite:`Aus Favoriten entfernen`,copyName:`Missionsname kopieren`,copyId:`Missions-ID kopieren`,copyProject:`Projektname kopieren`,copyProjectPath:`Projektpfad kopieren`,copyFailed:`Kopieren fehlgeschlagen`,copyTranscript:`Transkript kopieren`,copyTranscriptSuccess:`Transkript kopiert`,copyTranscriptFailed:`Transkript konnte nicht kopiert werden`,exportTranscript:`Transkript exportieren (.txt)`,exportTranscriptSuccess:`Transkriptexport gestartet`,exportTranscriptFailed:`Transkript konnte nicht exportiert werden`,delete:`Mission löschen`,deleteConfirm:`Diese Mission löschen? Kann nicht rückgängig gemacht werden.`,deleteFailed:`Mission konnte nicht gelöscht werden`},te=`Was sollen wir als Nächstes bauen?`,ne={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,queueEdit:S,git:C,provider:w,tier:T,approval:E,project:D,palette:O,mission:k,noProvider:A,degraded:j,toolCard:M,error:N,chip:P,newAgent:F,switchToAgent:I,switchToKanban:L,search:R,home:z,favoriteMissions:B,untitled:V,workspace:H,attachFile:U,deleteConversation:W,confirmDeleteConversation:G,addFavoriteConversation:K,removeFavoriteConversation:q,confirmShort:J,imagesUnsupported:Y,effort:X,prCard:Z,specDraft:Q,refs:$,header:ee,emptyTitleCodeRain:te};export{K as addFavoriteConversation,E as approval,U as attachFile,s as attachment,P as chip,d as close,r as composerPlaceholder,G as confirmDeleteConversation,J as confirmShort,g as connecting,_ as consultingCode,o as copy,ne as default,j as degraded,W as deleteConversation,X as effort,m as emptyHint,p as emptyTitle,te as emptyTitleCodeRain,N as error,B as favoriteMissions,C as git,ee as header,b as history,z as home,Y as imagesUnsupported,c as maximize,u as minimize,k as mission,y as model,F as newAgent,f as newConversation,A as noProvider,O as palette,Z as prCard,D as project,w as provider,x as queue,S as queueEdit,$ as refs,q as removeFavoriteConversation,l as restore,R as search,i as send,v as size,Q as specDraft,a as stop,t as subtitle,I as switchToAgent,L as switchToKanban,h as thinking,T as tier,e as title,M as toolCard,n as trigger,V as untitled,H as workspace};
@@ -0,0 +1 @@
1
+ var e=`Controllo missioni`,t=`Gestisci Specrails chattando`,n=`Controllo missioni`,r=`Chiedi all'agente qualsiasi cosa…`,i=`Invia`,a=`Ferma`,o=`Copia`,s={openPreview:`Anteprima di {{name}}`,openDownload:`Scarica {{name}}`,previewTitle:`Anteprima di {{name}}`,downloadTitle:`Scaricare il file?`,downloadPrompt:`Questo file non può essere visualizzato qui. Vuoi scaricarlo?`,download:`Scarica`,cancelDownload:`Non ora`,loading:`Preparazione del file…`,loadFailed:`Impossibile caricare l'allegato`,loadError:`Impossibile caricare l'allegato: {{error}}`},c=`Massimizza`,l=`Ripristina`,u=`Riduci a icona`,d=`Chiudi`,f=`Nuova missione`,p=`Qual è la missione?`,m=`Scegli un progetto, poi chiedi. La board si aggiorna in tempo reale mentre l'agente lavora.`,h=`Sto pensando…`,g=`Connessione…`,_=`Consulto l'app…`,v={compact:`Compatto`,comfortable:`Comodo`,max:`Ingrandisci`},y={label:`Modello`,loading:`Caricamento modelli…`,unavailable:`Modelli non disponibili`},b={hint:`Cronologia prompt — scrivi per modificare, ↑↓ per navigare`},x={queued:`In coda`,send:`Invia in coda`,sendHint:`L'agente sta ancora lavorando — questo messaggio verrà messo in coda ed eseguito dopo`,placeholder:`Aggiungi altro mentre l'agente lavora — verrà messo in coda…`},S={editing:`Modifica del messaggio in coda {{n}} di {{m}}`,hint:`↑↓ per navigare · Invio salva · Esc annulla`,save:`Salva messaggio in coda`,cancel:`Annulla modifica`,dispatched:`Quel messaggio in coda è già stato inviato — il tuo testo è conservato come bozza`,saveFailed:`Impossibile salvare il messaggio in coda`},C={branch:`Branch`,detached:`(detached)`,dirty:`Modifiche non committate`,switched:`Passato a {{branch}}`,switchFailed:`Impossibile cambiare branch`,lockedWhileWorking:`Branch bloccato mentre l'agente lavora`,searchPlaceholder:`Cerca branch…`,noMatches:`Nessun branch corrisponde`,worktrees:`Worktree`,worktreePathCopied:`Percorso del worktree copiato`,copyWorktreePath:`Copia percorso del worktree`},w={label:`Provider`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},T={cycleHint:`⇧⇥ per cambiare`,observe:{name:`Osserva`,desc:`Solo lettura — niente cambia`},edit:{name:`Modifica`,desc:`Crea e modifica (reversibile)`},operate:{name:`Opera`,desc:`Avvia l'IA — ha un costo`},autonomous:{name:`Autonomo`,desc:`Elimina e arresta — irreversibile`},lockedTitle:`Serve un livello superiore`,lockedBody:`Quell'azione richiede il livello «{{level}}». Sei su «{{current}}».`,raiseHint:`⇧⇥ per alzare il livello, o chiedi in un altro modo.`},E={title:`Conferma azione`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Approva`,cancel:`Annulla`,dontAskAgain:`Non chiedere più in questa sessione`,approved:`Approvato`,cancelled:`Annullato`},D={home:`Home`,searchPlaceholder:`Parla con Specrails…`,searchProjectsPlaceholder:`Cerca progetti…`,recents:`Recenti`,allProjects:`Tutti i progetti`,searchAll:`Cerca in tutti i progetti`,addProject:`Aggiungi progetto…`,homeHint:`Nessun progetto selezionato — operando su tutti i progetti.`,askCreateOrSearch:`Nessun progetto è selezionato. Vuoi creare un nuovo progetto o cercare in tutti i progetti?`},O={remove:`Rimuovi {{label}}`,addContextAction:`Aggiungi contesto o azione`,filtering:`Filtro "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`Nessun risultato`,noMatchesFor:`Nessun risultato per "{{query}}"`,mode:{reference:{title:`Riferimento`,hint:`@ progetti, spec, missioni`},trace:{title:`Traccia`,hint:`# job, esecuzioni, ID`},action:{title:`Azione`,hint:`/ comandi per questo contesto`}},plus:{reference:`Riferimento`,referenceHint:`Progetti, spec, missioni`,trace:`Traccia`,traceHint:`Job, esecuzioni, ID`,action:`Azione`,actionHint:`Crea, avvia, ispeziona`,fileAttachment:`File allegato`,fileAttachmentHint:`Aggiungi doc, immagini, log`,browserCapture:`Cattura browser`,browserCaptureHint:`Disponibile dal browser del workspace`}},k={label:`Cambia missione`,untitled:`Nuova missione`,new:`Nuova missione`,searchPlaceholder:`Cerca missioni…`,noMatches:`Nessuna missione corrisponde`,working:`L'agente sta lavorando`,queuedBadge:`{{n}} in coda`,delete:`Elimina missione "{{title}}"`,deleteConfirm:`Eliminare?`,deleteLiveConfirm:`L'agente sta lavorando — eliminare comunque?`,confirmDelete:`Conferma eliminazione`,cancelDelete:`Mantieni missione`,deleteFailed:`Impossibile eliminare la missione`},A={title:`Nessun provider IA installato`,body:`L'agente richiede Claude, Codex, Gemini o Kimi sul tuo computer. Installane uno e riapri l'agente per iniziare a chattare.`,placeholder:`Installa un provider IA per usare l'agente…`},j={title:`L'MCP di Specrails è spento`,body:`L'agente ha bisogno del server MCP integrato per gestire l'app.`,enable:`Attiva l'MCP di Specrails`,enabling:`Attivazione…`,enabled:`MCP attivato`},M={live:`in diretta`,queued:`in coda`,running:`in corso`,done:`completato`,failed:`fallito`},N={generic:`Qualcosa è andato storto. Riprova.`,busy:`L'agente è occupato. Riprova tra un momento.`},P={kindAgent:`Missione dell'agente`},F=`Nuova missione`,I=`Passa al Controllo missioni`,L=`Passa alla board`,R=`Cerca`,z=`Home`,B=`Missioni preferite`,V=`Senza titolo`,H={title:`Nel workspace`,terminal:`Terminale`,files:`File`,browser:`Browser`,requiresProject:`Seleziona un progetto per usare questo strumento`,resizeCode:`Ridimensiona pannello codice`,closeFiles:`Chiudi codice`,browserConfirm:`Aggiungi all'agente`,browserCaptured:`Cattura aggiunta`,uploadFailed:`Caricamento non riuscito`,requiresConversation:`Avvia una missione per usare questo strumento`,jobs:`Jobs`,closeJobs:`Chiudi jobs`,resizeJobs:`Ridimensiona pannello jobs`,noJobs:`Ancora nessun job — chiedi all'agente di lanciarne uno`},U=`Allega file`,W=`Elimina «{{title}}»`,G=`Conferma eliminazione di «{{title}}»`,K=`Aggiungi «{{title}}» ai preferiti`,q=`Rimuovi «{{title}}» dai preferiti`,J=`confermare?`,Y=`Questo provider non legge ancora le immagini — allega file di testo`,X={label:`Sforzo`,minimal:`Minimo`,low:`Basso`,medium:`Medio`,high:`Alto`,xhigh:`Extra alto`,max:`Massimo`,ultra:`Ultra`},Z=JSON.parse(`{"operation":{"inProgress":"Azione in corso…","create-pr":"Creazione PR…","publish":"Pubblicazione…","discard":"Eliminazione…","dismiss":"Chiusura del follow-up…","poll-merge":"Verifica merge…","reopen":"Riapertura…","merge-local":"Integrazione locale…","recover-and-retry":"Creazione del commit e nuovo tentativo di push del risultato preservato…","acknowledge-no-changes":"Contrassegno come completato…"},"markDone":"Segna come completate","refine":"Perfeziona","completedNote":"Confermato — le spec sono passate a Completate","partialSummary":"{{succeeded}} di {{total}} completate; {{failed}} non riuscite","unit":{"failed":"implementazione non riuscita","blocked":"consegna bloccata","noChanges":"nessuna modifica","succeeded":"pronta"},"rail":"Rail {{index}}","specCount_one":"{{count}} spec","specCount_other":"{{count}} spec","base":"Ramo base","openPr":"Apri PR","existingPr":"PR esistente","title":{"no_changes":"Nessuna modifica necessaria","partial":"Implementazione parziale","delivery_blocked":"Implementazione completa — la consegna richiede attenzione","update_failed":"Implementazione completa — aggiornamento non riuscito","pr_closed":"PR chiusa senza merge","superseded":"Sostituita da un’esecuzione più recente","existing_pr_updated":"PR esistente aggiornata","building":"Implementazione in un worktree isolato…","buildingExistingPr":"Applicazione delle modifiche su una PR esistente…","paused":"Serve una decisione umana","on_review":"Implementazione pronta per la revisione","pr_draft":"PR in bozza creata","pr_draft_degraded":"Consegna della PR incompleta","pr_ready":"PR pronta per il merge","implementation_failed":"Implementazione non riuscita","pr_failed":"Creazione della PR non riuscita","merged":"Merge della PR effettuato","discarded":"Scartata"},"buildingHint":"Al termine ti verrà chiesto se creare la PR.","buildingExistingPrHint":"Specrails sta lavorando sul branch della PR esistente e invierà le modifiche di review a quella stessa PR.","paused":"Implementazione in pausa","pausedForRun":"In pausa su {{ref}}","resume":"Riprendi","stopExecution":"Interrompi esecuzione","stopExecutionSent":"Segnale di stop inviato","stopExecutionFailed":"Impossibile interrompere l’esecuzione","createPr":"Crea PR","publish":"Pubblica","checkout":"Passa al branch","checkoutTooltip":"Esegui il checkout di {{branch}} nella cartella principale del progetto","checkoutSuccess":"Checkout eseguito su {{branch}}","checkoutFailed":"Impossibile eseguire il checkout del branch della PR","checkoutDirtyTitle":"Checkout bloccato per proteggere le tue modifiche","checkoutDirtyBody":"La cartella principale del progetto contiene modifiche senza commit. Esegui un commit o uno stash, quindi riprova. Non è stato modificato nulla.","checkoutSafetyUnknownTitle":"Checkout in pausa: impossibile verificare la sicurezza","checkoutSafetyUnknownBody":"Specrails non ha potuto leggere lo stato Git della cartella principale del progetto. Nulla è stato rilasciato o modificato. Riprova quando Git sarà disponibile.","checkoutNotDeliverableTitle":"Questo branch della PR non contiene l’implementazione preservata","checkoutNotDeliverableBody":"Il commit esatto della consegna non è ancora stato verificato. Ispeziona o recupera invece il risultato locale.","inspectLocalResult":"Ispeziona il risultato locale","inspectLocalResultTooltip":"Mostra il worktree isolato preservato e copia il suo percorso","localResultPathCopied":"Percorso del risultato locale copiato","localResultPath":"Risultato locale preservato","localResultUnavailableHere":"Su questo computer non è disponibile alcun worktree recuperabile. Consulta il log dell’esecuzione dal computer su cui è stata eseguita.","recoverAndRetry":"Crea commit e riprova il push","recoverAndRetryVerified":"Il commit recuperato {{sha}} è verificato nella PR","recoveryStillBlocked":"Il recupero locale richiede ancora attenzione","recheckRecovery":"Controlla di nuovo","recoveryUnavailable":"Impossibile verificare il recupero su questo computer","recoveryUnavailableBody":"Specrails non ha potuto dimostrare in sicurezza un unico risultato appartenente alla consegna in questo clone. Nulla è stato modificato o rimosso. Controlla i dettagli della fase e i log di esecuzione. Se il run è stato eseguito su un altro computer, apri Specrails lì e controlla di nuovo.","recoveryDetailSummary":"Dettaglio tecnico del recupero","retry":"Riprova","retryPr":"Riprova PR","checkMerge":"Verifica merge","verifyPr":"Verifica PR","discard":"Scarta","confirmDiscard":"Confermare lo scarto?","mergedNote":"Merge effettuato — le spec sono passate a Completato","discardedNote":"Scartata — le spec sono tornate nel backlog","implementationFailedNote":"Il run di implementazione non è riuscito prima di produrre qualcosa di consegnabile. Apri il log del run per controllare l'errore, poi scarta questa scheda prima di rilanciare.","dismiss":"Chiudi follow-up","discardLocalResult":"Elimina risultato locale","retryPush":"Riprova push","retryPushVerified":"Push verificato · il commit {{sha}} è nella PR","commitAlreadyVerified":"Il commit {{sha}} è già verificato nella PR","deliveryCommit":"commit {{sha}}","reopen":"Riapri","createPartialPr":"Crea PR con {{count}}","supersededNote":"Un’esecuzione di implementazione più recente ha sostituito questa scheda.","noChangesExisting":"Non erano necessarie nuove modifiche; la PR esistente resta invariata.","noChangesNote":"Non erano necessarie modifiche al codice. Segna le spec come completate oppure riportale nel backlog per perfezionarle.","deliveryNeedsAttention":"Implementazione completa; la consegna richiede attenzione","deliveryBlockedNote":"L’implementazione è riuscita, ma la consegna è bloccata. Controlla il dettaglio della fase e i log prima di eliminare il risultato locale.","partialDeliveryBlockedNote":"Una parte dell’implementazione è riuscita, ma non c’è ancora nulla che possa essere consegnato in sicurezza. Controlla le evidenze per unità e i log prima di scegliere l’azione successiva.","retryPushNote":"L’implementazione è riuscita e le modifiche sono al sicuro in locale. Riprova solo il push.","cleanupIncomplete_one":"Pulizia incompleta ({{count}} avviso)","cleanupIncomplete_other":"Pulizia incompleta ({{count}} avvisi)","safetyArchiveTitle":"Archivio di sicurezza ({{count}})","safetyArchiveHint":"I file temporanei dell’area di lavoro sono stati conservati fuori dalla PR per precauzione. Puoi controllarli o rimuoverli manualmente.","confirm":{"recoverAndRetryTitle":"Creare il commit e inviare il risultato preservato?","recoverAndRetryBody":"Specrails userà esclusivamente il worktree isolato o il branch registrato compatibile con il fast-forward per {{branch}}. Se necessario, creerà un commit con i file consegnabili e invierà quel commit esatto solo se la PR è ancora aperta sui branch di origine e destinazione previsti. La cartella principale del progetto e le sue modifiche senza commit non verranno toccate.","recheckRecoveryTitle":"Controllare di nuovo questo computer?","recheckRecoveryBody":"Specrails riesaminerà in questo clone il worktree, il branch, i ref, i reflog e gli oggetti Git orfani appartenenti alla consegna di {{branch}}. Se dimostra un unico risultato, potrà eseguire il commit delle modifiche isolate e ritentare il push esatto. La cartella principale del progetto non verrà toccata.","noChangesDoneTitle":"Segnare queste spec come completate?","noChangesDoneBody":"L’implementazione ha confermato che non servono modifiche al codice. Le spec passeranno a Completate e il worktree senza modifiche verrà ripulito.","refineTitle":"Perfezionare queste spec?","refineBody":"Il risultato senza modifiche verrà chiuso e le spec torneranno nel backlog per essere perfezionate. I log di esecuzione resteranno disponibili.","mergeLocalTitle":"Integrare localmente?","mergeLocalBody":"I branch consegnati verranno uniti in {{base}} nel checkout locale. Il checkout deve trovarsi su {{base}} con un albero di lavoro pulito.","freshDiscardTitle":"Eliminare questa consegna?","freshDiscardBody":"La PR verrà chiusa senza eliminare il branch remoto. Verranno rimossi solo i branch locali e i worktree di proprietà di SpecRails che si trovano ancora sul commit registrato; qualsiasi elemento modificato sarà conservato con un avviso. Le spec torneranno nel backlog. Le risorse locali rimosse non possono essere recuperate.","implementationFailedDiscardTitle":"Scartare questa consegna non riuscita?","implementationFailedDiscardBody":"La scheda verrà chiusa e le spec torneranno nel backlog. Il lavoro locale e i branch saranno conservati per l’ispezione. Potranno essere rimosse solo le risorse la cui pulizia è dimostrata sicura.","dismissTitle":"Chiudere questo follow-up?","dismissBody":"Questa scheda di follow-up verrà chiusa. Il relativo worktree verrà rimosso solo se è ancora sicuro farlo; in caso contrario, sarà conservato con un avviso. La PR esistente, il suo branch e lo stato di revisione resteranno invariati.","discardLocalTitle":"Eliminare il risultato locale?","discardLocalBody":"L’iterazione locale recuperabile verrà rimossa solo se è ancora sicuro farlo; se è cambiata, sarà conservata con un avviso. Qualsiasi PR esistente e il suo branch resteranno invariati. Un risultato rimosso non può essere recuperato."},"degraded":{"pushed":"Il ramo è stato inviato ma non è stato possibile creare la PR — riprova per completare.","localOnly":"Le modifiche sono state assemblate in locale ma non inviate — riprova per pubblicare la PR."},"alreadyResolved":"Già risolta altrove","actionFailed":"Azione non riuscita","notMergedYet":"Ancora nessun merge","commitMissingRetry":"Il commit di consegna non è più presente nella PR. Puoi riprovare il push.","prVerifiedWaiting":"Commit {{sha}} verificato · in attesa del merge","viewLog":"Vedi il log di esecuzione di {{ref}}","runElapsedAria":"{{elapsed}} trascorsi","runCostAria":"{{cost}} spesi","pinned":{"label":"Fissata","marker":"Scheda di implementazione — fissata sopra","collapse":"Riduci la scheda fissata","expand":"Espandi la scheda fissata","expandCard":"Espandi questa scheda","collapseCard":"Riduci questa scheda","collapsed_one":"Scheda di implementazione","collapsed_other":"{{count}} schede di implementazione","state":{"completed":"Completata","no_changes":"Nessuna modifica","pr_closed":"Chiusa","superseded":"Sostituita","building":"In corso","on_review":"Revisione","pr_draft":"PR bozza","pr_ready":"Pubblicata","implementation_failed":"Fallita","pr_failed":"Fallita","merged":"Unita","discarded":"Scartata"}},"mergeLocal":"Integra in locale","mergeLocalTooltip":"Unisce i branch consegnati in {{base}} nel tuo checkout locale (senza GitHub)","mergeLocalBlockedDirty":"Impossibile integrare: il tuo albero di lavoro su {{base}} ha modifiche non committate. Fai commit o stash e riprova.","mergeLocalBlockedBranch":"Impossibile integrare: il tuo checkout è su {{current}}, non su {{base}}. Passa a {{base}} e riprova.","mergedLocally":"Integrato in {{base}} in locale"}`),Q={heading:`Bozza della spec`,drafting:`Aggiornamento della bozza…`,acceptanceCriteria:`Criteri di accettazione`,untitled:`Spec senza titolo`,expand:`Mostra descrizione completa`,collapse:`Comprimi descrizione`},$={openTicket:`Apri la spec #{{id}}`,openPullRequest:`Apri PR #{{id}}`,openJob:`Apri il job {{id}}`,openLoop:`Apri loop {{id}}`,ticketNotFound:`Spec #{{id}} non trovata — potrebbe essere stata eliminata`,pullRequestUrlMissing:`La PR #{{id}} è stata citata senza URL`,pullRequestNotFound:`La PR #{{id}} non è stata trovata in questo progetto`,jobNotFound:`Job non trovato — potrebbe essere stato eliminato`,loopNotFound:`Loop non trovato — potrebbe essere stato eliminato`,lookupFailed:`Impossibile verificare il riferimento — riprova`},ee={untitled:`Missione senza titolo`,menu:`Menu della missione`,rename:`Rinomina`,renamePlaceholder:`Nome della missione`,renameHint:`Doppio clic per rinominare`,renameFailed:`Impossibile rinominare`,addFavorite:`Aggiungi ai preferiti`,removeFavorite:`Rimuovi dai preferiti`,copyName:`Copia nome missione`,copyId:`Copia ID missione`,copyProject:`Copia nome progetto`,copyProjectPath:`Copia percorso progetto`,copyFailed:`Impossibile copiare`,copyTranscript:`Copia trascrizione`,copyTranscriptSuccess:`Trascrizione copiata`,copyTranscriptFailed:`Impossibile copiare la trascrizione`,exportTranscript:`Esporta trascrizione (.txt)`,exportTranscriptSuccess:`Esportazione della trascrizione avviata`,exportTranscriptFailed:`Impossibile esportare la trascrizione`,delete:`Elimina missione`,deleteConfirm:`Eliminare questa missione? Non è reversibile.`,deleteFailed:`Impossibile eliminare la missione`},te=`Cosa costruiamo adesso?`,ne={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,queueEdit:S,git:C,provider:w,tier:T,approval:E,project:D,palette:O,mission:k,noProvider:A,degraded:j,toolCard:M,error:N,chip:P,newAgent:F,switchToAgent:I,switchToKanban:L,search:R,home:z,favoriteMissions:B,untitled:V,workspace:H,attachFile:U,deleteConversation:W,confirmDeleteConversation:G,addFavoriteConversation:K,removeFavoriteConversation:q,confirmShort:J,imagesUnsupported:Y,effort:X,prCard:Z,specDraft:Q,refs:$,header:ee,emptyTitleCodeRain:te};export{K as addFavoriteConversation,E as approval,U as attachFile,s as attachment,P as chip,d as close,r as composerPlaceholder,G as confirmDeleteConversation,J as confirmShort,g as connecting,_ as consultingCode,o as copy,ne as default,j as degraded,W as deleteConversation,X as effort,m as emptyHint,p as emptyTitle,te as emptyTitleCodeRain,N as error,B as favoriteMissions,C as git,ee as header,b as history,z as home,Y as imagesUnsupported,c as maximize,u as minimize,k as mission,y as model,F as newAgent,f as newConversation,A as noProvider,O as palette,Z as prCard,D as project,w as provider,x as queue,S as queueEdit,$ as refs,q as removeFavoriteConversation,l as restore,R as search,i as send,v as size,Q as specDraft,a as stop,t as subtitle,I as switchToAgent,L as switchToKanban,h as thinking,T as tier,e as title,M as toolCard,n as trigger,V as untitled,H as workspace};
@@ -0,0 +1 @@
1
+ var e=`Control de misiones`,t=`Maneja Specrails conversando`,n=`Control de misiones`,r=`Pídele al agente lo que necesites…`,i=`Enviar`,a=`Detener`,o=`Copiar`,s={openPreview:`Previsualizar {{name}}`,openDownload:`Descargar {{name}}`,previewTitle:`Vista previa de {{name}}`,downloadTitle:`¿Descargar archivo?`,downloadPrompt:`Este archivo no se puede previsualizar aquí. ¿Quieres descargarlo?`,download:`Descargar`,cancelDownload:`Ahora no`,loading:`Preparando archivo…`,loadFailed:`No se pudo cargar el adjunto`,loadError:`No se pudo cargar el adjunto: {{error}}`},c=`Maximizar`,l=`Restaurar`,u=`Minimizar`,d=`Cerrar`,f=`Nueva misión`,p=`¿Cuál es la misión?`,m=`Elige un proyecto y luego pregunta. El tablero se actualiza en vivo mientras el agente trabaja.`,h=`Pensando…`,g=`Conectando…`,_=`Consultando la app…`,v={compact:`Compacto`,comfortable:`Cómodo`,max:`Maximizar`},y={label:`Modelo`,loading:`Cargando modelos…`,unavailable:`Modelos no disponibles`},b={hint:`Explorando historial de prompts — escribe para editar, ↑↓ para navegar`},x={queued:`En cola`,send:`Enviar a la cola`,sendHint:`El agente sigue trabajando — este mensaje se pondrá en cola y se ejecutará después`,placeholder:`Añade más mientras el agente trabaja — se pondrá en cola…`},S={editing:`Editando mensaje en cola {{n}} de {{m}}`,hint:`↑↓ para navegar · Enter guarda · Esc cancela`,save:`Guardar mensaje en cola`,cancel:`Cancelar edición`,dispatched:`Ese mensaje en cola ya se envió — tu texto se conserva como borrador`,saveFailed:`No se pudo guardar el mensaje en cola`},C={branch:`Rama`,detached:`(detached)`,dirty:`Cambios sin commitear`,switched:`Cambiado a {{branch}}`,switchFailed:`No se pudo cambiar de rama`,lockedWhileWorking:`Rama bloqueada mientras el agente trabaja`,searchPlaceholder:`Buscar ramas…`,noMatches:`Ninguna rama coincide`,worktrees:`Worktrees`,worktreePathCopied:`Ruta del worktree copiada`,copyWorktreePath:`Copiar ruta del worktree`},w={label:`Proveedor`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},T={cycleHint:`⇧⇥ para cambiar`,observe:{name:`Observa`,desc:`Solo lectura — nada cambia`},edit:{name:`Edita`,desc:`Crear y editar (reversible)`},operate:{name:`Opera`,desc:`Lanzar IA — tiene coste`},autonomous:{name:`Autónomo`,desc:`Borrar y detener — irreversible`},lockedTitle:`Necesita un nivel superior`,lockedBody:`Esa acción necesita el nivel «{{level}}». Estás en «{{current}}».`,raiseHint:`⇧⇥ para subir el nivel, o pídelo de otra forma.`},E={title:`Confirmar acción`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Aprobar`,cancel:`Cancelar`,dontAskAgain:`No volver a preguntar en esta sesión`,approved:`Aprobado`,cancelled:`Cancelado`},D={home:`Inicio`,searchPlaceholder:`Habla con Specrails…`,searchProjectsPlaceholder:`Buscar proyectos…`,recents:`Recientes`,allProjects:`Todos los proyectos`,searchAll:`Buscar en todos los proyectos`,addProject:`Añadir proyecto…`,homeHint:`Ningún proyecto seleccionado — operando en todos los proyectos.`,askCreateOrSearch:`No hay ningún proyecto seleccionado. ¿Quieres crear un proyecto nuevo o buscar en todos los proyectos?`},O={remove:`Quitar {{label}}`,addContextAction:`Añadir contexto o acción`,filtering:`Filtrando "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`Sin resultados`,noMatchesFor:`Sin resultados para "{{query}}"`,mode:{reference:{title:`Referencia`,hint:`@ proyectos, especificaciones, misiones`},trace:{title:`Traza`,hint:`# jobs, ejecuciones, IDs`},action:{title:`Acción`,hint:`/ comandos para este contexto`}},plus:{reference:`Referencia`,referenceHint:`Proyectos, especificaciones, misiones`,trace:`Traza`,traceHint:`Jobs, ejecuciones, IDs`,action:`Acción`,actionHint:`Crear, lanzar, inspeccionar`,fileAttachment:`Archivo adjunto`,fileAttachmentHint:`Añadir docs, imágenes, logs`,browserCapture:`Captura del navegador`,browserCaptureHint:`Disponible desde el navegador del workspace`}},k={label:`Cambiar de misión`,untitled:`Nueva misión`,new:`Nueva misión`,searchPlaceholder:`Buscar misiones…`,noMatches:`Ninguna misión coincide`,working:`El agente está trabajando`,queuedBadge:`{{n}} en cola`,delete:`Eliminar misión "{{title}}"`,deleteConfirm:`¿Eliminar?`,deleteLiveConfirm:`El agente está trabajando — ¿eliminar igualmente?`,confirmDelete:`Confirmar eliminación`,cancelDelete:`Conservar misión`,deleteFailed:`No se pudo eliminar la misión`},A={title:`No hay ningún proveedor de IA instalado`,body:`El agente necesita Claude, Codex, Gemini o Kimi en tu máquina. Instala uno y vuelve a abrir el agente para empezar a chatear.`,placeholder:`Instala un proveedor de IA para usar el agente…`},j={title:`El MCP de Specrails está apagado`,body:`El agente necesita el servidor MCP integrado para manejar la app.`,enable:`Activar el MCP de Specrails`,enabling:`Activando…`,enabled:`MCP activado`},M={live:`en vivo`,queued:`en cola`,running:`en curso`,done:`hecho`,failed:`fallido`},N={generic:`Algo salió mal. Inténtalo de nuevo.`,busy:`El agente está ocupado. Inténtalo de nuevo en un momento.`},P={kindAgent:`Misión del agente`},F=`Nueva misión`,I=`Cambiar a Control de misiones`,L=`Cambiar al tablero`,R=`Buscar`,z=`Inicio`,B=`Misiones favoritas`,V=`Sin título`,H={title:`En el workspace`,terminal:`Terminal`,files:`Archivos`,browser:`Navegador`,requiresProject:`Selecciona un proyecto para usar esta herramienta`,resizeCode:`Redimensionar panel de código`,closeFiles:`Cerrar código`,browserConfirm:`Añadir al agente`,browserCaptured:`Captura añadida`,uploadFailed:`Error al subir`,requiresConversation:`Inicia una misión para usar esta herramienta`,jobs:`Jobs`,closeJobs:`Cerrar jobs`,resizeJobs:`Redimensionar panel de jobs`,noJobs:`Aún no hay jobs — pide al agente que lance uno`},U=`Adjuntar archivo`,W=`Borrar «{{title}}»`,G=`Confirmar borrado de «{{title}}»`,K=`Añadir «{{title}}» a favoritas`,q=`Quitar «{{title}}» de favoritas`,J=`¿confirmar?`,Y=`Este proveedor aún no lee imágenes — adjunta archivos de texto`,X={label:`Esfuerzo`,minimal:`Mínimo`,low:`Bajo`,medium:`Medio`,high:`Alto`,xhigh:`Extra alto`,max:`Máximo`,ultra:`Ultra`},Z=JSON.parse(`{"operation":{"inProgress":"Acción en curso…","create-pr":"Creando PR…","publish":"Publicando…","discard":"Descartando…","dismiss":"Cerrando seguimiento…","poll-merge":"Comprobando merge…","reopen":"Reabriendo…","merge-local":"Integrando en local…","recover-and-retry":"Creando el commit y reintentando el push del resultado conservado…","acknowledge-no-changes":"Marcando como hecho…"},"rail":"Rail {{index}}","specCount_one":"{{count}} spec","specCount_other":"{{count}} specs","base":"Rama base","openPr":"Abrir PR","existingPr":"PR existente","title":{"building":"Implementando en un worktree aislado…","buildingExistingPr":"Aplicando cambios sobre una PR existente…","paused":"Necesita decisión humana","on_review":"Implementación lista para revisar","pr_draft":"PR en borrador creada","pr_draft_degraded":"Entrega de la PR incompleta","pr_ready":"PR lista para el merge","no_changes":"No hacían falta cambios","partial":"Implementación parcial","delivery_blocked":"Implementación completa — la entrega requiere atención","update_failed":"Implementación completa — falló la actualización","pr_closed":"PR cerrada sin merge","superseded":"Sustituida por una ejecución más reciente","existing_pr_updated":"PR existente actualizada","implementation_failed":"La implementación ha fallado","pr_failed":"No se pudo crear la PR","merged":"Merge de la PR completado","discarded":"Descartada"},"buildingHint":"Cuando termine, se te preguntará si crear la PR.","buildingExistingPrHint":"Specrails está trabajando sobre la rama de la PR existente y subirá los cambios de revisión a esa misma PR.","paused":"Implementación pausada","pausedForRun":"Pausada en {{ref}}","resume":"Reanudar","stopExecution":"Detener ejecución","stopExecutionSent":"Señal de parada enviada","stopExecutionFailed":"No se pudo parar la ejecución","partialSummary":"{{succeeded}} de {{total}} completadas; {{failed}} fallidas","unit":{"failed":"implementación fallida","blocked":"entrega bloqueada","noChanges":"sin cambios","succeeded":"lista"},"createPr":"Crear PR","publish":"Publicar","checkout":"Cambiar a la rama","checkoutTooltip":"Cambia la carpeta principal del proyecto a {{branch}}","checkoutSuccess":"Checkout en {{branch}}","checkoutFailed":"No se pudo hacer checkout de la rama de la PR","checkoutDirtyTitle":"Checkout bloqueado para proteger tus cambios","checkoutDirtyBody":"La carpeta principal del proyecto tiene cambios sin commitear. Haz commit o stash y vuelve a intentarlo. No se ha modificado nada.","checkoutSafetyUnknownTitle":"Checkout pausado porque no se pudo verificar la seguridad","checkoutSafetyUnknownBody":"Specrails no pudo leer el estado de Git de la carpeta principal del proyecto. No se ha liberado ni modificado nada. Vuelve a intentarlo cuando Git esté disponible.","checkoutNotDeliverableTitle":"Esta rama de la PR no contiene la implementación conservada","checkoutNotDeliverableBody":"Todavía no se ha verificado el commit exacto de la entrega. Inspecciona o recupera el resultado local.","inspectLocalResult":"Inspeccionar resultado local","inspectLocalResultTooltip":"Muestra el worktree aislado que se ha conservado y copia su ruta","localResultPathCopied":"Ruta del resultado local copiada","localResultPath":"Resultado local conservado","localResultUnavailableHere":"No hay ningún worktree recuperable en este equipo. Revisa el registro de ejecución desde el equipo donde se ejecutó.","recoverAndRetry":"Crear commit y reintentar push","recoverAndRetryVerified":"El commit recuperado {{sha}} está verificado en la PR","recoveryStillBlocked":"La recuperación local aún requiere atención","recheckRecovery":"Comprobar de nuevo","recoveryUnavailable":"No se pudo verificar la recuperación en este equipo","recoveryUnavailableBody":"Specrails no pudo demostrar de forma segura un único resultado perteneciente a la entrega en este clon. No se ha cambiado ni eliminado nada. Revisa el detalle de la fase y los registros de ejecución. Si el run se ejecutó en otro equipo, abre Specrails allí y vuelve a comprobar.","recoveryDetailSummary":"Detalle técnico de recuperación","retry":"Reintentar","retryPr":"Reintentar PR","checkMerge":"Comprobar merge","verifyPr":"Verificar PR","discard":"Descartar","dismiss":"Cerrar seguimiento","discardLocalResult":"Descartar resultado local","markDone":"Marcar como hecho","refine":"Refinar","retryPush":"Reintentar push","retryPushVerified":"Push verificado · el commit {{sha}} está en la PR","commitAlreadyVerified":"El commit {{sha}} ya está verificado en la PR","deliveryCommit":"commit {{sha}}","reopen":"Reabrir","createPartialPr":"Crear PR con {{count}}","confirmDiscard":"¿Confirmar descarte?","mergedNote":"Merge completado — las specs han pasado a Hecho","discardedNote":"Descartada — las specs han vuelto al backlog","supersededNote":"Una ejecución de implementación más reciente sustituyó esta tarjeta.","completedNote":"Confirmado — las specs han pasado a Hecho","noChangesExisting":"No hacían falta cambios nuevos; la PR existente no se ha modificado.","noChangesNote":"No hacían falta cambios de código. Marca las specs como hechas o devuélvelas al backlog para refinarlas.","deliveryNeedsAttention":"Implementación completa; la entrega requiere atención","deliveryBlockedNote":"La implementación terminó correctamente, pero la entrega está bloqueada. Revisa la etapa y los registros antes de descartar el resultado local.","partialDeliveryBlockedNote":"Parte de la implementación terminó correctamente, pero todavía no hay nada que se pueda entregar de forma segura. Revisa la evidencia por unidad y los registros antes de elegir la siguiente acción.","retryPushNote":"La implementación terminó correctamente y los cambios están seguros en local. Reintenta solo el push.","cleanupIncomplete_one":"La limpieza está incompleta ({{count}} aviso)","cleanupIncomplete_other":"La limpieza está incompleta ({{count}} avisos)","safetyArchiveTitle":"Archivo de seguridad ({{count}})","safetyArchiveHint":"Se han conservado archivos temporales del espacio de trabajo fuera de la PR como medida de precaución. Puedes revisarlos o eliminarlos manualmente.","implementationFailedNote":"El run de implementación falló antes de generar algo entregable. Abre el log del run para revisar el fallo y descarta esta card antes de relanzar.","degraded":{"pushed":"La rama se subió pero no se pudo crear la PR — reintenta para terminar.","localOnly":"Los cambios se ensamblaron en local pero no se subieron — reintenta para publicar la PR."},"alreadyResolved":"Ya resuelta en otro sitio","actionFailed":"La acción falló","notMergedYet":"Aún sin merge","commitMissingRetry":"El commit de la entrega ya no está en la PR. Puedes reintentar el push.","prVerifiedWaiting":"Commit {{sha}} verificado · pendiente de merge","viewLog":"Ver el registro de ejecución de {{ref}}","runElapsedAria":"{{elapsed}} transcurridos","runCostAria":"{{cost}} gastados","pinned":{"label":"Fijada","marker":"Tarjeta de implementación — fijada arriba","collapse":"Minimizar tarjeta fijada","expand":"Expandir tarjeta fijada","expandCard":"Expandir esta tarjeta","collapseCard":"Minimizar esta tarjeta","collapsed_one":"Tarjeta de implementación","collapsed_other":"{{count}} tarjetas de implementación","state":{"building":"En curso","on_review":"Revisión","pr_draft":"PR borrador","pr_ready":"Publicada","no_changes":"Sin cambios","completed":"Completada","pr_closed":"Cerrada","superseded":"Sustituida","implementation_failed":"Fallida","pr_failed":"Fallida","merged":"Fusionada","discarded":"Descartada"}},"mergeLocal":"Integrar en local","mergeLocalTooltip":"Fusiona las ramas entregadas en {{base}} en tu checkout local (sin necesidad de GitHub)","mergeLocalBlockedDirty":"No se puede integrar: tu árbol de trabajo en {{base}} tiene cambios sin commitear. Haz commit o stash y reintenta.","mergeLocalBlockedBranch":"No se puede integrar: tu checkout está en {{current}}, no en {{base}}. Cambia a {{base}} y reintenta.","mergedLocally":"Integrado en {{base}} en local","confirm":{"mergeLocalTitle":"¿Integrar en local?","mergeLocalBody":"Las ramas entregadas se fusionarán en {{base}} en tu checkout local. Debes estar en {{base}} y tener el árbol de trabajo limpio.","recoverAndRetryTitle":"¿Crear el commit y subir el resultado conservado?","recoverAndRetryBody":"Specrails solo usará el worktree aislado o la rama registrada con avance rápido para {{branch}}. Si hace falta, creará un commit con los archivos entregables y subirá ese commit exacto únicamente si la PR sigue abierta sobre las ramas de origen y destino esperadas. La carpeta principal del proyecto y sus cambios sin commitear no se tocarán.","recheckRecoveryTitle":"¿Volver a comprobar este equipo?","recheckRecoveryBody":"Specrails volverá a examinar en este clon el worktree, la rama, las refs, los reflogs y los objetos Git huérfanos pertenecientes a la entrega de {{branch}}. Si demuestra un único resultado, podrá confirmar los cambios aislados y reintentar el push exacto. No tocará la carpeta principal del proyecto.","freshDiscardTitle":"¿Descartar esta entrega?","freshDiscardBody":"La PR se cerrará sin eliminar su rama remota. Solo se eliminarán las ramas y los worktrees locales que pertenezcan a SpecRails y sigan en su commit registrado; cualquier recurso modificado se conservará y se mostrará un aviso. Las specs volverán al backlog. Los recursos locales eliminados no se pueden recuperar.","implementationFailedDiscardTitle":"¿Descartar esta entrega fallida?","implementationFailedDiscardBody":"Se cerrará la tarjeta y sus specs volverán al backlog. El trabajo local y las ramas se conservarán para su inspección. Solo se podrán eliminar los recursos cuya limpieza sea segura.","dismissTitle":"¿Cerrar este seguimiento?","dismissBody":"Se cerrará esta tarjeta de seguimiento. Su worktree solo se eliminará si sigue siendo seguro hacerlo; de lo contrario, se conservará y verás un aviso. La PR existente, su rama y su estado de revisión no cambiarán.","discardLocalTitle":"¿Descartar el resultado local?","discardLocalBody":"La iteración local recuperable solo se eliminará si sigue siendo seguro hacerlo; si ha cambiado, se conservará y verás un aviso. Cualquier PR existente y su rama no cambiarán. Un resultado eliminado no se puede recuperar.","noChangesDoneTitle":"¿Marcar estas specs como hechas?","noChangesDoneBody":"La implementación confirmó que no hacen falta cambios de código. Las specs pasarán a Hecho y se limpiará el worktree sin cambios.","refineTitle":"¿Refinar estas specs?","refineBody":"Se cerrará el resultado sin cambios y las specs volverán al backlog para que puedas refinarlas. Los registros de ejecución seguirán disponibles."}}`),Q={heading:`Borrador de spec`,drafting:`Actualizando borrador…`,acceptanceCriteria:`Criterios de aceptación`,untitled:`Spec sin título`,expand:`Ver descripción completa`,collapse:`Contraer descripción`},$={openTicket:`Abrir spec #{{id}}`,openPullRequest:`Abrir PR #{{id}}`,openJob:`Abrir job {{id}}`,openLoop:`Abrir loop {{id}}`,ticketNotFound:`Spec #{{id}} no encontrada — puede haber sido eliminada`,pullRequestUrlMissing:`La PR #{{id}} se mencionó sin URL`,pullRequestNotFound:`No se pudo encontrar la PR #{{id}} en este proyecto`,jobNotFound:`Job no encontrado — puede haber sido eliminado`,loopNotFound:`Loop no encontrado — puede haber sido eliminado`,lookupFailed:`No se pudo verificar la referencia — inténtalo de nuevo`},ee={untitled:`Misión sin título`,menu:`Menú de la misión`,rename:`Renombrar`,renamePlaceholder:`Nombre de la misión`,renameHint:`Doble clic para renombrar`,renameFailed:`No se pudo renombrar`,addFavorite:`Añadir a favoritas`,removeFavorite:`Quitar de favoritas`,copyName:`Copiar nombre de la misión`,copyId:`Copiar ID de la misión`,copyProject:`Copiar nombre del proyecto`,copyProjectPath:`Copiar ruta del proyecto`,copyFailed:`No se pudo copiar`,copyTranscript:`Copiar transcripción`,copyTranscriptSuccess:`Transcripción copiada`,copyTranscriptFailed:`No se pudo copiar la transcripción`,exportTranscript:`Exportar transcripción (.txt)`,exportTranscriptSuccess:`Exportación de transcripción iniciada`,exportTranscriptFailed:`No se pudo exportar la transcripción`,delete:`Borrar misión`,deleteConfirm:`¿Borrar esta misión? No se puede deshacer.`,deleteFailed:`No se pudo borrar la misión`},te=`¿Qué construimos ahora?`,ne={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,queueEdit:S,git:C,provider:w,tier:T,approval:E,project:D,palette:O,mission:k,noProvider:A,degraded:j,toolCard:M,error:N,chip:P,newAgent:F,switchToAgent:I,switchToKanban:L,search:R,home:z,favoriteMissions:B,untitled:V,workspace:H,attachFile:U,deleteConversation:W,confirmDeleteConversation:G,addFavoriteConversation:K,removeFavoriteConversation:q,confirmShort:J,imagesUnsupported:Y,effort:X,prCard:Z,specDraft:Q,refs:$,header:ee,emptyTitleCodeRain:te};export{K as addFavoriteConversation,E as approval,U as attachFile,s as attachment,P as chip,d as close,r as composerPlaceholder,G as confirmDeleteConversation,J as confirmShort,g as connecting,_ as consultingCode,o as copy,ne as default,j as degraded,W as deleteConversation,X as effort,m as emptyHint,p as emptyTitle,te as emptyTitleCodeRain,N as error,B as favoriteMissions,C as git,ee as header,b as history,z as home,Y as imagesUnsupported,c as maximize,u as minimize,k as mission,y as model,F as newAgent,f as newConversation,A as noProvider,O as palette,Z as prCard,D as project,w as provider,x as queue,S as queueEdit,$ as refs,q as removeFavoriteConversation,l as restore,R as search,i as send,v as size,Q as specDraft,a as stop,t as subtitle,I as switchToAgent,L as switchToKanban,h as thinking,T as tier,e as title,M as toolCard,n as trigger,V as untitled,H as workspace};