specrails-desktop 2.36.0 → 2.42.2

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 (510) hide show
  1. package/README.md +94 -247
  2. package/client/dist/assets/ActivityFeedPage-DoEMumQS.js +1 -0
  3. package/client/dist/assets/AgentBrowserCapture-DIh4K0gh.js +1 -0
  4. package/client/dist/assets/AgentModeAnalyticsPane-mbq4WEoO.js +2 -0
  5. package/client/dist/assets/AgentModeCodePane-CKh7zuA4.js +2 -0
  6. package/client/dist/assets/AgentModeJobsPane-BDokPiLJ.js +1 -0
  7. package/client/dist/assets/AgentsPage-BFVAZbBj.js +87 -0
  8. package/client/dist/assets/AnalyticsPage-3Y9LuWwz.js +1 -0
  9. package/client/dist/assets/CodePage-C9KyuV_C.js +3 -0
  10. package/client/dist/assets/DesktopAnalyticsPage-Bhi54bXQ.js +1 -0
  11. package/client/dist/assets/{DocsDialog-C76VdBJC.js → DocsDialog-Dj6mt4ga.js} +2 -2
  12. package/client/dist/assets/{DocsPage-ziMlj6B6.js → DocsPage-24yWglNI.js} +1 -1
  13. package/client/dist/assets/ExportDropdown-ophapHrT.js +1 -0
  14. package/client/dist/assets/InteractiveJobComposer-C1ucmxQh.js +19 -0
  15. package/client/dist/assets/JobDetailModal-DNWmgVHD.js +1 -0
  16. package/client/dist/assets/JobDetailPage-BcajZyuu.js +1 -0
  17. package/client/dist/assets/JobsPage-B9nTZw6e.js +1 -0
  18. package/client/dist/assets/LoopBuilderPage-Oc48iOFW.js +7 -0
  19. package/client/dist/assets/LoopPreviewModal-ae0Fr6SU.js +1 -0
  20. package/client/dist/assets/LoopsPage-CUEqzUBI.js +1 -0
  21. package/client/dist/assets/MinimizedChatsContext-Deg39peL.js +1 -0
  22. package/client/dist/assets/PluginsPage-C1xtARIx.js +2 -0
  23. package/client/dist/assets/ProjectSettingsDialog-JZzrXFBN.js +1 -0
  24. package/client/dist/assets/RepositoryDeliveries-CSDsiVUz.js +5 -0
  25. package/client/dist/assets/RepositoryScopeSelector-D-RCaknl.js +1 -0
  26. package/client/dist/assets/ReviewPacketPage-x5EfGTiL.js +1 -0
  27. package/client/dist/assets/TemplatePreviewModal-BSyuZxGq.js +1 -0
  28. package/client/dist/assets/TicketDetailModalContext-DqyF0so-.js +14 -0
  29. package/client/dist/assets/Trans-SnMX4MhW.js +1 -0
  30. package/client/dist/assets/agent-BdT0SB1D.js +1 -0
  31. package/client/dist/assets/agent-Bh9K7iEt.js +1 -0
  32. package/client/dist/assets/agent-C4ibdFk9.js +1 -0
  33. package/client/dist/assets/agent-CSFY22Zo.js +1 -0
  34. package/client/dist/assets/agent-DAnqxUn8.js +1 -0
  35. package/client/dist/assets/agent-DTQiu0Mi.js +1 -0
  36. package/client/dist/assets/agent-T54WuR_Y.js +1 -0
  37. package/client/dist/assets/agent-i75WDZOA.js +1 -0
  38. package/client/dist/assets/browser-05vRDg_y.js +1 -0
  39. package/client/dist/assets/browser-Bulb-cB1.js +1 -0
  40. package/client/dist/assets/browser-C7f-Jsg1.js +1 -0
  41. package/client/dist/assets/browser-CG0PE1j_.js +1 -0
  42. package/client/dist/assets/browser-CMzaqAjo.js +1 -0
  43. package/client/dist/assets/browser-DMajYdNX.js +1 -0
  44. package/client/dist/assets/browser-DxcOHrdP.js +1 -0
  45. package/client/dist/assets/browser-ObE7xVo3.js +1 -0
  46. package/client/dist/assets/builder-765NeYTp.js +1 -0
  47. package/client/dist/assets/builder-8MG3V6ea.js +1 -0
  48. package/client/dist/assets/builder-B-1UBs5K.js +1 -0
  49. package/client/dist/assets/builder-BTiGnPT0.js +1 -0
  50. package/client/dist/assets/builder-Cx9Rz-7u.js +1 -0
  51. package/client/dist/assets/builder-DKFMELBl.js +1 -0
  52. package/client/dist/assets/builder-OcmKrC0h.js +1 -0
  53. package/client/dist/assets/builder-P9qVBXFZ.js +1 -0
  54. package/client/dist/assets/{button-CJqFnUOL.js → button-DCBqEaZl.js} +1 -1
  55. package/client/dist/assets/{code-CkUuW4m9.js → code-B37GRg9C.js} +1 -1
  56. package/client/dist/assets/{code-B0O8-p8k.js → code-BBOEZbf9.js} +1 -1
  57. package/client/dist/assets/{code-B1VLZDhS.js → code-BRm-jcyx.js} +1 -1
  58. package/client/dist/assets/{code-Bpj4Ddml.js → code-CF7w62CR.js} +1 -1
  59. package/client/dist/assets/{code-BykBZ5-e.js → code-CLuvJt2r.js} +1 -1
  60. package/client/dist/assets/{code-B86IMAfz.js → code-D0RCm59f.js} +1 -1
  61. package/client/dist/assets/code-DaZ-ZwCT.js +1 -0
  62. package/client/dist/assets/{code-cAqaqMTx.js → code-iIHkGaCL.js} +1 -1
  63. package/client/dist/assets/commands-0XjAftla.js +1 -0
  64. package/client/dist/assets/commands-BAWSYHjQ.js +1 -0
  65. package/client/dist/assets/commands-BBwowgiE.js +1 -0
  66. package/client/dist/assets/commands-BacjIZLN.js +1 -0
  67. package/client/dist/assets/commands-Bs62IAZ3.js +1 -0
  68. package/client/dist/assets/commands-CLPdh-Hh.js +1 -0
  69. package/client/dist/assets/commands-DlbFzgrp.js +1 -0
  70. package/client/dist/assets/commands-LjPSsi5F.js +1 -0
  71. package/client/dist/assets/common-B5AZNYMH.js +1 -0
  72. package/client/dist/assets/common-BFZ0c_vN.js +1 -0
  73. package/client/dist/assets/common-BrlwEnL7.js +1 -0
  74. package/client/dist/assets/common-BttQx3z4.js +1 -0
  75. package/client/dist/assets/common-CM65k_-e.js +1 -0
  76. package/client/dist/assets/common-D4mvFFlu.js +1 -0
  77. package/client/dist/assets/common-TZ9Ny96S.js +1 -0
  78. package/client/dist/assets/common-nFpSF4GC.js +1 -0
  79. package/client/dist/assets/dashboard-B14uYXkG.js +1 -0
  80. package/client/dist/assets/dashboard-BK_mez-z.js +1 -0
  81. package/client/dist/assets/dashboard-BfBir_6o.js +1 -0
  82. package/client/dist/assets/dashboard-Bt0cCzeG.js +1 -0
  83. package/client/dist/assets/dashboard-BwkjxI6H.js +1 -0
  84. package/client/dist/assets/{dashboard-C8WOEiPu.js → dashboard-C3bDKf7s.js} +1 -1
  85. package/client/dist/assets/dashboard-CdvjGfog.js +1 -0
  86. package/client/dist/assets/dashboard-fRrP0Kv0.js +1 -0
  87. package/client/dist/assets/dialog-SRw01_QU.js +45 -0
  88. package/client/dist/assets/dist-js-CJ_2XX1Y.js +1 -0
  89. package/client/dist/assets/formatDistanceToNow-DSj5DprF.js +1 -0
  90. package/client/dist/assets/getTimezoneOffsetInMilliseconds-YhD8rIEs.js +1 -0
  91. package/client/dist/assets/index-DwAmL7m5.css +2 -0
  92. package/client/dist/assets/index-EzrkUb8B.js +76 -0
  93. package/client/dist/assets/{jira-api-B1-MUehg.js → jira-api-CSCqGr-Q.js} +1 -1
  94. package/client/dist/assets/{jobs-CN_zv4Gr.js → jobs-B8rrzfyZ.js} +1 -1
  95. package/client/dist/assets/{jobs-DUlWSYq2.js → jobs-BS6RTurf.js} +1 -1
  96. package/client/dist/assets/{jobs-Bpks6doU.js → jobs-BTT0Bsks.js} +1 -1
  97. package/client/dist/assets/{jobs-Bgq-PZkC.js → jobs-CezU69AE.js} +1 -1
  98. package/client/dist/assets/{jobs-SwYS2M-B.js → jobs-ClFJae0s.js} +1 -1
  99. package/client/dist/assets/{jobs-BAls3bWq.js → jobs-DJSFIFVy.js} +1 -1
  100. package/client/dist/assets/{jobs-DhxKgWFq.js → jobs-DhgGr8vm.js} +1 -1
  101. package/client/dist/assets/{jobs-B_TeSQxb.js → jobs-DzMjUcaN.js} +1 -1
  102. package/client/dist/assets/mcp-6rMoZfEO.js +1 -0
  103. package/client/dist/assets/mcp-BD8sL5mP.js +1 -0
  104. package/client/dist/assets/mcp-BkcA3I5s.js +1 -0
  105. package/client/dist/assets/mcp-CCpSelOh.js +1 -0
  106. package/client/dist/assets/mcp-CUAN6ORK.js +1 -0
  107. package/client/dist/assets/mcp-CqbRxRTE.js +1 -0
  108. package/client/dist/assets/mcp-DP2YfVhO.js +1 -0
  109. package/client/dist/assets/mcp-DUVQamDz.js +1 -0
  110. package/client/dist/assets/narration-B-ynWTpn.js +1 -0
  111. package/client/dist/assets/narration-Bj_laZwg.js +1 -0
  112. package/client/dist/assets/narration-BxHpmMv_.js +1 -0
  113. package/client/dist/assets/narration-C1Px0-0j.js +1 -0
  114. package/client/dist/assets/narration-CAXhGbzM.js +1 -0
  115. package/client/dist/assets/narration-DQ1l_Kq6.js +1 -0
  116. package/client/dist/assets/narration-XISXwqZd.js +1 -0
  117. package/client/dist/assets/narration-kwzfglQo.js +1 -0
  118. package/client/dist/assets/nav-1-Hh2kOz.js +1 -0
  119. package/client/dist/assets/nav-B34QkESm.js +1 -0
  120. package/client/dist/assets/nav-Bap_UXAq.js +1 -0
  121. package/client/dist/assets/{nav-pYuXq7sf.js → nav-BwxXIB24.js} +1 -1
  122. package/client/dist/assets/nav-Ch-zHBG5.js +1 -0
  123. package/client/dist/assets/nav-CygC_WN-.js +1 -0
  124. package/client/dist/assets/{nav-iwjCg5FR.js → nav-KnnLQtOQ.js} +1 -1
  125. package/client/dist/assets/nav-m00uxYUG.js +1 -0
  126. package/client/dist/assets/packet-BQ2tXfJI.js +1 -0
  127. package/client/dist/assets/packet-BdpOJ1Cy.js +1 -0
  128. package/client/dist/assets/packet-C3Ievb9R.js +1 -0
  129. package/client/dist/assets/packet-C4zJIG0Y.js +1 -0
  130. package/client/dist/assets/packet-Cx-zRuWn.js +1 -0
  131. package/client/dist/assets/packet-DUTGX52M.js +1 -0
  132. package/client/dist/assets/packet-DhsKtUPB.js +1 -0
  133. package/client/dist/assets/packet-z3LJ8Zyy.js +1 -0
  134. package/client/dist/assets/project-repositories-DYhTvwQ1.js +1 -0
  135. package/client/dist/assets/provider-capabilities-B-wOHfLP.js +1 -0
  136. package/client/dist/assets/settings-BBt2xtDQ.js +1 -0
  137. package/client/dist/assets/settings-BJB9RKJj.js +1 -0
  138. package/client/dist/assets/settings-CHwQR2rB.js +1 -0
  139. package/client/dist/assets/settings-CrMi3kSi.js +1 -0
  140. package/client/dist/assets/settings-DKyhDGD1.js +1 -0
  141. package/client/dist/assets/settings-Deupji9c.js +1 -0
  142. package/client/dist/assets/settings-DqRMmwAM.js +1 -0
  143. package/client/dist/assets/settings-J4rj6vo-.js +1 -0
  144. package/client/dist/assets/setup-2xGgu4Sk.js +1 -0
  145. package/client/dist/assets/setup-Ba11l2JA.js +1 -0
  146. package/client/dist/assets/setup-BzW4kMok.js +1 -0
  147. package/client/dist/assets/setup-COzwYhkJ.js +1 -0
  148. package/client/dist/assets/setup-CRVULhtF.js +1 -0
  149. package/client/dist/assets/setup-DgvlxwpE.js +1 -0
  150. package/client/dist/assets/setup-Dw_wYeEY.js +1 -0
  151. package/client/dist/assets/setup-ZPtEeJPW.js +1 -0
  152. package/client/dist/assets/spending-BqbdPm_4.js +1 -0
  153. package/client/dist/assets/square-Ci-PFcFe.js +1 -0
  154. package/client/dist/assets/{terminal-BFRZnMPP.js → terminal-BAzpHtpY.js} +1 -1
  155. package/client/dist/assets/{terminal-IahE4LW9.js → terminal-C7dHeR3x.js} +1 -1
  156. package/client/dist/assets/{terminal-tITa81iz.js → terminal-CMla5Qsz.js} +1 -1
  157. package/client/dist/assets/{terminal-BZiIu3rf.js → terminal-CdNXH-n9.js} +1 -1
  158. package/client/dist/assets/{terminal-ScjyXNxQ.js → terminal-Cw5bZsmV.js} +1 -1
  159. package/client/dist/assets/{terminal-C2NAd7BW.js → terminal-DFUP4eNv.js} +1 -1
  160. package/client/dist/assets/{terminal-d7GadXbN.js → terminal-DGqljeK_.js} +1 -1
  161. package/client/dist/assets/{terminal-QpXZU2Bn.js → terminal-cU70NodO.js} +1 -1
  162. package/client/dist/assets/useDesktop-RSMTyy7V.js +1 -0
  163. package/client/dist/assets/useSharedWebSocket-BOdS5_Iz.js +2 -0
  164. package/client/dist/index.html +34 -35
  165. package/docs/README.md +3 -0
  166. package/docs/agent-live-steering.md +57 -0
  167. package/docs/ci-cd.md +57 -0
  168. package/docs/code-explorer.md +48 -0
  169. package/docs/codex.md +12 -1
  170. package/docs/features/detachable-mission-windows.md +59 -0
  171. package/docs/guide/de/integrations/5-mcp-server.md +13 -9
  172. package/docs/guide/de/integrations/6-agent-chat.md +1 -0
  173. package/docs/guide/en/integrations/5-mcp-server.md +13 -9
  174. package/docs/guide/en/integrations/6-agent-chat.md +1 -0
  175. package/docs/guide/es/integrations/5-mcp-server.md +13 -9
  176. package/docs/guide/es/integrations/6-agent-chat.md +1 -0
  177. package/docs/guide/fr/integrations/5-mcp-server.md +13 -9
  178. package/docs/guide/fr/integrations/6-agent-chat.md +1 -0
  179. package/docs/guide/it/integrations/5-mcp-server.md +13 -9
  180. package/docs/guide/it/integrations/6-agent-chat.md +1 -0
  181. package/docs/guide/ja/integrations/5-mcp-server.md +13 -9
  182. package/docs/guide/ja/integrations/6-agent-chat.md +1 -0
  183. package/docs/guide/pt/integrations/5-mcp-server.md +13 -9
  184. package/docs/guide/pt/integrations/6-agent-chat.md +1 -0
  185. package/docs/guide/zh/integrations/5-mcp-server.md +13 -9
  186. package/docs/guide/zh/integrations/6-agent-chat.md +1 -0
  187. package/docs/internals/README.md +1 -0
  188. package/docs/internals/browser-capture-performance.md +55 -3
  189. package/docs/internals/browser-login-popups.md +45 -0
  190. package/docs/internals/browser-native-retina-audit.md +39 -0
  191. package/docs/internals/ci-cd-audit.md +39 -0
  192. package/docs/internals/core-runtime-updates.md +68 -0
  193. package/docs/internals/embedded-browser-native-webview-evaluation.md +2 -0
  194. package/docs/internals/implementation-reliability-audit.md +93 -0
  195. package/docs/internals/interactive-jobs.md +110 -6
  196. package/docs/internals/mcp-mission-audit.md +76 -0
  197. package/docs/internals/project-builder.md +404 -42
  198. package/docs/internals/safe-pr-review-flow.md +52 -10
  199. package/docs/internals/startup-recovery-audit.md +58 -0
  200. package/docs/mcp.md +74 -41
  201. package/docs/mission-processes.md +59 -0
  202. package/docs/multi-repo-projects.md +51 -0
  203. package/docs/platforms/windows-parity.md +70 -0
  204. package/docs/platforms/windows.md +13 -11
  205. package/docs/running-pipelines.md +14 -0
  206. package/mcp-bridge/dist/specrails-mcp.js +7186 -0
  207. package/package.json +9 -4
  208. package/server/dist/agent-chat-manager.js +537 -68
  209. package/server/dist/agent-chat-router.js +87 -6
  210. package/server/dist/agent-context-resolver.js +129 -25
  211. package/server/dist/agent-defaults.js +19 -11
  212. package/server/dist/agent-input-store.js +206 -0
  213. package/server/dist/agent-mcp-config.js +54 -15
  214. package/server/dist/agent-operator-prompt.js +255 -65
  215. package/server/dist/agent-spec-framing.js +202 -0
  216. package/server/dist/agent-steering.js +218 -0
  217. package/server/dist/agent-store.js +153 -0
  218. package/server/dist/api-not-found.js +8 -0
  219. package/server/dist/background-process-control.js +164 -0
  220. package/server/dist/background-process-service.js +61 -0
  221. package/server/dist/background-process-store.js +242 -0
  222. package/server/dist/background-windows-bootstrap.js +238 -0
  223. package/server/dist/blueprint-chat-manager.js +476 -62
  224. package/server/dist/blueprint-commit.js +21 -1
  225. package/server/dist/blueprint-draft-parser.js +122 -17
  226. package/server/dist/blueprint-generation.js +238 -0
  227. package/server/dist/blueprint-operator-prompt.js +91 -63
  228. package/server/dist/blueprint-router.js +55 -3
  229. package/server/dist/blueprint-spec-fixtures.js +85 -0
  230. package/server/dist/blueprint-spec-quality.js +57 -16
  231. package/server/dist/blueprint-store.js +92 -1
  232. package/server/dist/browser-capture-manager.js +86 -30
  233. package/server/dist/browser-playwright.js +168 -45
  234. package/server/dist/browser-viewport.js +26 -0
  235. package/server/dist/chat-manager.js +23 -15
  236. package/server/dist/chromium-archive.cjs +83 -0
  237. package/server/dist/chromium-resolver.js +72 -64
  238. package/server/dist/code-activity.js +145 -0
  239. package/server/dist/code-explorer-router.js +714 -114
  240. package/server/dist/core-compat.js +28 -1
  241. package/server/dist/core-execution.js +111 -0
  242. package/server/dist/core-package.js +4 -16
  243. package/server/dist/core-runtime.js +202 -0
  244. package/server/dist/core-update-manager.js +161 -60
  245. package/server/dist/core-update-state.js +29 -0
  246. package/server/dist/db.js +66 -35
  247. package/server/dist/delivery-evidence.js +142 -39
  248. package/server/dist/desktop-db.js +239 -43
  249. package/server/dist/desktop-router.js +109 -9
  250. package/server/dist/dev-ports.js +8 -3
  251. package/server/dist/file-provenance.js +34 -22
  252. package/server/dist/file-story-manager.js +62 -64
  253. package/server/dist/file-story.js +118 -35
  254. package/server/dist/file-summary-generator.js +46 -5
  255. package/server/dist/file-summary-manager.js +355 -106
  256. package/server/dist/framework-manager.js +98 -110
  257. package/server/dist/framework-reseed.js +76 -10
  258. package/server/dist/git-diagnostics.js +2 -2
  259. package/server/dist/headroom-manager.js +38 -3
  260. package/server/dist/host-control.js +52 -0
  261. package/server/dist/index.js +43 -2
  262. package/server/dist/interactive-job-session.js +149 -16
  263. package/server/dist/internal-api.js +48 -0
  264. package/server/dist/jira/jira-materializer.js +1 -0
  265. package/server/dist/json-tolerant.js +174 -0
  266. package/server/dist/legacy-migration.js +4 -2
  267. package/server/dist/loop-command-catalog.js +83 -21
  268. package/server/dist/loop-constants.js +6 -1
  269. package/server/dist/loop-decider.js +11 -1
  270. package/server/dist/loop-executors.js +194 -45
  271. package/server/dist/loop-factory.js +11 -4
  272. package/server/dist/loop-graph.js +90 -4
  273. package/server/dist/loop-run-manager.js +301 -69
  274. package/server/dist/loop-shell-invocation.js +21 -0
  275. package/server/dist/loop-step-idle.js +55 -0
  276. package/server/dist/loop-templates.js +31 -7
  277. package/server/dist/mcp/agent-capability.js +37 -4
  278. package/server/dist/mcp/guide.js +149 -36
  279. package/server/dist/mcp/mcp-admin-router.js +20 -4
  280. package/server/dist/mcp/mcp-server.js +89 -43
  281. package/server/dist/mcp/mcp-tiers.js +6 -5
  282. package/server/dist/mcp/mcp-token.js +3 -1
  283. package/server/dist/mcp/resources.js +5 -4
  284. package/server/dist/mcp/tools/catalog.js +4 -0
  285. package/server/dist/mcp/tools/code.js +125 -14
  286. package/server/dist/mcp/tools/context.js +153 -0
  287. package/server/dist/mcp/tools/git.js +15 -5
  288. package/server/dist/mcp/tools/jobs.js +84 -71
  289. package/server/dist/mcp/tools/loops.js +17 -6
  290. package/server/dist/mcp/tools/meta.js +74 -27
  291. package/server/dist/mcp/tools/mission.js +29 -0
  292. package/server/dist/mcp/tools/projects.js +22 -6
  293. package/server/dist/mcp/tools/rails.js +48 -11
  294. package/server/dist/mcp/tools/specs.js +86 -14
  295. package/server/dist/mcp/tools/support.js +1 -1
  296. package/server/dist/mcp/tools/types.js +117 -43
  297. package/server/dist/mcp/tools/watch.js +144 -51
  298. package/server/dist/milestone-chain-store.js +164 -0
  299. package/server/dist/milestone-chain.js +487 -0
  300. package/server/dist/milestone-progress.js +348 -0
  301. package/server/dist/mobile/mobile-devices.js +10 -7
  302. package/server/dist/mobile/mobile-gateway.js +2 -0
  303. package/server/dist/mobile/mobile-missions.js +214 -0
  304. package/server/dist/mobile/mobile-redact.js +17 -3
  305. package/server/dist/mobile/mobile-router.js +46 -4
  306. package/server/dist/mobile/mobile-ws.js +49 -4
  307. package/server/dist/multi-repo-bases.js +56 -0
  308. package/server/dist/multi-repo-checkout.js +101 -0
  309. package/server/dist/multi-repo-delivery.js +100 -0
  310. package/server/dist/multi-repo-execution-store.js +65 -0
  311. package/server/dist/multi-repo-execution.js +453 -0
  312. package/server/dist/offline-assemble.js +10 -8
  313. package/server/dist/openspec-runtime-plugin-commands.json +18 -0
  314. package/server/dist/openspec-runtime-plugin.js +120 -0
  315. package/server/dist/plugins/codex-spawn.js +49 -0
  316. package/server/dist/plugins/serena/manifest.js +2 -2
  317. package/server/dist/plugins/serena/templates/instructions.md +16 -0
  318. package/server/dist/pr-publisher.js +1 -1
  319. package/server/dist/profiles-router.js +3 -18
  320. package/server/dist/project-code-discovery.js +142 -0
  321. package/server/dist/project-git.js +19 -21
  322. package/server/dist/project-registry.js +272 -20
  323. package/server/dist/project-repositories.js +157 -0
  324. package/server/dist/project-repository-provenance.js +31 -0
  325. package/server/dist/project-router-background-processes.js +105 -0
  326. package/server/dist/project-router-git.js +75 -16
  327. package/server/dist/project-router-jobs.js +2 -126
  328. package/server/dist/project-router-loop-runs.js +72 -2
  329. package/server/dist/project-router-tickets.js +53 -8
  330. package/server/dist/project-router.js +239 -38
  331. package/server/dist/provider-detection.js +18 -6
  332. package/server/dist/provider-limit.js +64 -0
  333. package/server/dist/providers/claude-adapter.js +26 -1
  334. package/server/dist/providers/claude-background-tasks.js +18 -0
  335. package/server/dist/providers/claude-live-session.js +383 -0
  336. package/server/dist/providers/codex-adapter.js +19 -0
  337. package/server/dist/providers/codex-live-session.js +545 -0
  338. package/server/dist/providers/gemini-adapter.js +1 -0
  339. package/server/dist/providers/live-session-types.js +12 -0
  340. package/server/dist/providers/live-session.js +13 -0
  341. package/server/dist/providers/terminal-result.js +24 -0
  342. package/server/dist/queue-manager.js +2 -0
  343. package/server/dist/rail-isolated-launch.js +141 -16
  344. package/server/dist/rail-pr-decision.js +364 -99
  345. package/server/dist/rail-pr-store.js +24 -10
  346. package/server/dist/rail-worktree-release.js +34 -2
  347. package/server/dist/rail-worktrees-store.js +4 -4
  348. package/server/dist/rails-router.js +249 -55
  349. package/server/dist/repo-lock.js +92 -17
  350. package/server/dist/review-packet.js +23 -13
  351. package/server/dist/schemas/file-summary.v1.json +59 -59
  352. package/server/dist/schemas/profile.v1.json +137 -137
  353. package/server/dist/setup-manager.js +52 -8
  354. package/server/dist/shell-integration/bash-shim.bash +45 -0
  355. package/server/dist/shell-integration/fish-shim.fish +36 -0
  356. package/server/dist/shell-integration/powershell-shim.ps1 +48 -0
  357. package/server/dist/shell-integration/zsh-shim.zsh +47 -0
  358. package/server/dist/smash-runner.js +1 -0
  359. package/server/dist/spawn-lifecycle.js +44 -27
  360. package/server/dist/spec-contract-prompt.js +143 -0
  361. package/server/dist/spec-draft-parser.js +6 -1
  362. package/server/dist/spec-models.js +1 -0
  363. package/server/dist/stuck-run-detector.js +1 -0
  364. package/server/dist/terminal-manager.js +21 -1
  365. package/server/dist/terminal-shell-integration.js +4 -1
  366. package/server/dist/transient-children.js +619 -230
  367. package/server/dist/util/cli-prompt.js +78 -5
  368. package/server/dist/util/sqlite-migrations.js +20 -0
  369. package/server/dist/util/win-spawn.js +18 -3
  370. package/server/dist/util/windows-provider-shell.js +29 -0
  371. package/server/dist/verification-sentinel.js +14 -0
  372. package/server/dist/vitest-setup.js +2 -0
  373. package/server/dist/windows-job-supervisor.js +133 -0
  374. package/server/dist/workspace-manager.js +9 -30
  375. package/server/dist/worktree-manager.js +17 -2
  376. package/server/dist/worktree-overlay.js +3 -1
  377. package/client/dist/assets/ActivityFeedPage-tAQcWs1R.js +0 -1
  378. package/client/dist/assets/AgentBrowserCapture-BX8BNae5.js +0 -1
  379. package/client/dist/assets/AgentModeAnalyticsPane-BVAqCL0K.js +0 -2
  380. package/client/dist/assets/AgentModeCodePane-9XfqQc9c.js +0 -2
  381. package/client/dist/assets/AgentModeJobsPane-BCjLsPhc.js +0 -1
  382. package/client/dist/assets/AgentsPage-C8J_42sm.js +0 -87
  383. package/client/dist/assets/AnalyticsPage-BtQuyfJm.js +0 -1
  384. package/client/dist/assets/CodePage-BZ2MwdCu.js +0 -2
  385. package/client/dist/assets/DesktopAnalyticsPage-Bh_29V4g.js +0 -1
  386. package/client/dist/assets/ExportDropdown-BrtfWzEG.js +0 -1
  387. package/client/dist/assets/InteractiveJobComposer-BCZiSfzc.js +0 -19
  388. package/client/dist/assets/JobDetailModal-NAJmuYIT.js +0 -1
  389. package/client/dist/assets/JobDetailPage-fE0ZycUX.js +0 -1
  390. package/client/dist/assets/JobsPage-z5M_HVJG.js +0 -1
  391. package/client/dist/assets/LoopBuilderPage-j1FQS47c.js +0 -7
  392. package/client/dist/assets/LoopPreviewModal-DhDJjdCe.js +0 -1
  393. package/client/dist/assets/LoopsPage-Ll7zORZb.js +0 -1
  394. package/client/dist/assets/MinimizedChatsContext-Bd3OqR_S.js +0 -1
  395. package/client/dist/assets/PluginsPage-DN4kGvJt.js +0 -2
  396. package/client/dist/assets/ProjectSettingsDialog-OgsgxjzF.js +0 -1
  397. package/client/dist/assets/ReviewPacketPage-DFog4sXn.js +0 -1
  398. package/client/dist/assets/TemplatePreviewModal-L2XxqiOD.js +0 -1
  399. package/client/dist/assets/TicketDetailModal-CsF-AWZX.js +0 -14
  400. package/client/dist/assets/Trans-Bsz9_gyq.js +0 -1
  401. package/client/dist/assets/agent-BQgKv_2F.js +0 -1
  402. package/client/dist/assets/agent-C1NRDJqL.js +0 -1
  403. package/client/dist/assets/agent-CLNleiy6.js +0 -1
  404. package/client/dist/assets/agent-CmceArkQ.js +0 -1
  405. package/client/dist/assets/agent-D3UxQ3SR.js +0 -1
  406. package/client/dist/assets/agent-DB1JeE64.js +0 -1
  407. package/client/dist/assets/agent-DXkHcQ-D.js +0 -1
  408. package/client/dist/assets/agent-DjJJJ2M8.js +0 -1
  409. package/client/dist/assets/auth-D_5bQv5W.js +0 -1
  410. package/client/dist/assets/ban-E4EaZe3a.js +0 -1
  411. package/client/dist/assets/bot-DzuuuC5R.js +0 -1
  412. package/client/dist/assets/browser-BgqHDMXP.js +0 -1
  413. package/client/dist/assets/browser-CsKJtrpv.js +0 -1
  414. package/client/dist/assets/browser-Cu58EpZU.js +0 -1
  415. package/client/dist/assets/browser-CvXOJm-j.js +0 -1
  416. package/client/dist/assets/browser-DOrFh1c7.js +0 -1
  417. package/client/dist/assets/browser-DQv_Jo7x.js +0 -1
  418. package/client/dist/assets/browser-LPgxvJu2.js +0 -1
  419. package/client/dist/assets/browser-eL-3MIEI.js +0 -1
  420. package/client/dist/assets/builder-0IWtosUm.js +0 -1
  421. package/client/dist/assets/builder-Bf2N6XWn.js +0 -1
  422. package/client/dist/assets/builder-BnqaaBkT.js +0 -1
  423. package/client/dist/assets/builder-BxxfGgAO.js +0 -1
  424. package/client/dist/assets/builder-C5IIgWsq.js +0 -1
  425. package/client/dist/assets/builder-CHuahItu.js +0 -1
  426. package/client/dist/assets/builder-CjWosXL_.js +0 -1
  427. package/client/dist/assets/builder-CpCIOoKj.js +0 -1
  428. package/client/dist/assets/code-CHPkOkDS.js +0 -1
  429. package/client/dist/assets/commands-6tYQih5m.js +0 -1
  430. package/client/dist/assets/commands-BK2QinXN.js +0 -1
  431. package/client/dist/assets/commands-C2Nca76h.js +0 -1
  432. package/client/dist/assets/commands-CKdLihNX.js +0 -1
  433. package/client/dist/assets/commands-CYIBTAlc.js +0 -1
  434. package/client/dist/assets/commands-CjUtYJIM.js +0 -1
  435. package/client/dist/assets/commands-Cq_u_8y9.js +0 -1
  436. package/client/dist/assets/commands-D_ZHYQug.js +0 -1
  437. package/client/dist/assets/common-6MLbD-jM.js +0 -1
  438. package/client/dist/assets/common-BKGEu4rm.js +0 -1
  439. package/client/dist/assets/common-BNbnv8cE.js +0 -1
  440. package/client/dist/assets/common-BqGWtDbt.js +0 -1
  441. package/client/dist/assets/common-DBtTzeYm.js +0 -1
  442. package/client/dist/assets/common-DEW3Nr8n.js +0 -1
  443. package/client/dist/assets/common-DHsv9N5d.js +0 -1
  444. package/client/dist/assets/common-mkrEcW-Y.js +0 -1
  445. package/client/dist/assets/dashboard-B9GhC5ku.js +0 -1
  446. package/client/dist/assets/dashboard-CBnv6zOI.js +0 -1
  447. package/client/dist/assets/dashboard-CaP0fU87.js +0 -1
  448. package/client/dist/assets/dashboard-D4ZZ4x84.js +0 -1
  449. package/client/dist/assets/dashboard-DmuTQBX8.js +0 -1
  450. package/client/dist/assets/dashboard-DynLYj3d.js +0 -1
  451. package/client/dist/assets/dashboard-zj4gGFJ1.js +0 -1
  452. package/client/dist/assets/dialog-CdWCb02j.js +0 -45
  453. package/client/dist/assets/dist-bVqfYmby.js +0 -1
  454. package/client/dist/assets/dist-js-CWeUdf5Z.js +0 -1
  455. package/client/dist/assets/formatDistanceToNow-DQCvMgUc.js +0 -1
  456. package/client/dist/assets/getTimezoneOffsetInMilliseconds-C16cxSe1.js +0 -1
  457. package/client/dist/assets/git-refresh-wTW0rO0Z.js +0 -1
  458. package/client/dist/assets/i18n-hnX2DPmo.js +0 -2
  459. package/client/dist/assets/index-DIhMEAVw.js +0 -66
  460. package/client/dist/assets/index-DwygcU7s.css +0 -2
  461. package/client/dist/assets/mcp-B8X8wBLu.js +0 -1
  462. package/client/dist/assets/mcp-C2AojZZN.js +0 -1
  463. package/client/dist/assets/mcp-D8BT78_L.js +0 -1
  464. package/client/dist/assets/mcp-Df5RWBNk.js +0 -1
  465. package/client/dist/assets/mcp-Dj7BgMQW.js +0 -1
  466. package/client/dist/assets/mcp-Q7iT7rcz.js +0 -1
  467. package/client/dist/assets/mcp-YlvNvJbW.js +0 -1
  468. package/client/dist/assets/mcp-mKFpTSRb.js +0 -1
  469. package/client/dist/assets/narration-4Z2VUhZw.js +0 -1
  470. package/client/dist/assets/narration-BGuiEDj3.js +0 -1
  471. package/client/dist/assets/narration-BuSoqRmv.js +0 -1
  472. package/client/dist/assets/narration-CB9t29fy.js +0 -1
  473. package/client/dist/assets/narration-CU3x8FHD.js +0 -1
  474. package/client/dist/assets/narration-CWeXhfP5.js +0 -1
  475. package/client/dist/assets/narration-DRaDnhT5.js +0 -1
  476. package/client/dist/assets/narration-DtEbQgCw.js +0 -1
  477. package/client/dist/assets/nav-ApJVg3xu.js +0 -1
  478. package/client/dist/assets/nav-BKNky1Bg.js +0 -1
  479. package/client/dist/assets/nav-C6vWWKYx.js +0 -1
  480. package/client/dist/assets/nav-CXJ6Aw89.js +0 -1
  481. package/client/dist/assets/nav-CsmFBIDf.js +0 -1
  482. package/client/dist/assets/nav-DjkmQJjd.js +0 -1
  483. package/client/dist/assets/packet-B1IxaL5f.js +0 -1
  484. package/client/dist/assets/packet-Bh5kkbiB.js +0 -1
  485. package/client/dist/assets/packet-By8fqYxW.js +0 -1
  486. package/client/dist/assets/packet-CZdvA44E.js +0 -1
  487. package/client/dist/assets/packet-CrjHRQCP.js +0 -1
  488. package/client/dist/assets/packet-Dwi2pTtx.js +0 -1
  489. package/client/dist/assets/packet-_-ZIa0IR.js +0 -1
  490. package/client/dist/assets/packet-n0W6E1Hn.js +0 -1
  491. package/client/dist/assets/play-DNlrawbS.js +0 -1
  492. package/client/dist/assets/provider-capabilities-Doej9lfa.js +0 -1
  493. package/client/dist/assets/settings-Bd0x4TBa.js +0 -1
  494. package/client/dist/assets/settings-C1-7cXzC.js +0 -1
  495. package/client/dist/assets/settings-CAFaT38b.js +0 -1
  496. package/client/dist/assets/settings-Ct3v1nW2.js +0 -1
  497. package/client/dist/assets/settings-DHh7_IF5.js +0 -1
  498. package/client/dist/assets/settings-DQXAmdcv.js +0 -1
  499. package/client/dist/assets/settings-guzlhpup.js +0 -1
  500. package/client/dist/assets/settings-sZfTPMEH.js +0 -1
  501. package/client/dist/assets/setup-3jWaoVUO.js +0 -1
  502. package/client/dist/assets/setup-BjgRneb2.js +0 -1
  503. package/client/dist/assets/setup-BzFIjv-f.js +0 -1
  504. package/client/dist/assets/setup-C4VfQsxE.js +0 -1
  505. package/client/dist/assets/setup-DfUkpDbN.js +0 -1
  506. package/client/dist/assets/setup-ECe90Pmu.js +0 -1
  507. package/client/dist/assets/setup-dlqC4Jmm.js +0 -1
  508. package/client/dist/assets/setup-jwfLMiM2.js +0 -1
  509. package/client/dist/assets/spending-EC9xqio-.js +0 -1
  510. package/client/dist/assets/useDesktop-BQVt8lFd.js +0 -1
@@ -1 +0,0 @@
1
- var e={title:`Projekt-Builder`,subtitle:`Von der Idee zum Meilenstein-1-Backlog`,close:`Builder schließen`,emptyTitle:`Beschreibe deine App-Idee`,emptyHint:`Ein oder zwei Sätze genügen — der Builder interviewt dich kurz und schlägt einen vollständigen Blueprint vor. Du kannst ihn auch alles entscheiden lassen.`,surpriseMe:`Überrasch mich`,inputPlaceholder:`Eine App, die…`,createSpecs:`Specs erstellen`,createSpecsHint:`Verfügbar, sobald der Blueprint Meilenstein-1-Specs enthält`,providerUnavailable:`Der Projekt-Builder benötigt einen nativen Modus ohne Werkzeuge oder mit Lesezugriff. Dieser Anbieter ist hier nicht verfügbar.`},t={title:`Blueprint`,product:`Produkt`,coreFlow:`Kernablauf`,platform:`Plattform`,stack:`Stack`,milestones:`Meilensteine`,milestonesValue:`{{count}} geplant`,assumptions:`Annahmen`,m1Specs:`Meilenstein-1-Specs ({{count}})`,dependsOn:`baut auf #{{index}} auf`,criteriaCount:`{{count}} Akzeptanzkriterien`,laterMilestones:`Spätere Meilensteine`,empty:`Der Blueprint füllt sich während des Gesprächs.`},n={title:`Projekt erstellen`,description:`Nichts berührt die Festplatte, bis du bestätigst. Das Repo bleibt unberührt — Specrails-Artefakte liegen außerhalb.`,nameLabel:`Projektname`,locationLabel:`Speicherort`,locationHint:`Hier wird ein neuer Ordner erstellt (muss leer sein oder fehlen).`,providersLabel:`KI-Anbieter`,githubLabel:`Privates GitHub-Repository erstellen`,githubAuthHint:`Zuerst anmelden: gh auth login`,back:`Zurück`,submit:`Projekt erstellen`,creating:`Wird erstellt…`,errors:{generic:`Der Commit konnte nicht starten. Prüfe die Werte und versuche es erneut.`,invalid_name:`Der Projektname ist erforderlich.`,invalid_location:`Der Speicherort ist erforderlich.`,providers_required:`Wähle mindestens einen Anbieter.`,unknown_provider:`Einer der gewählten Anbieter ist nicht verfügbar.`,invalid_blueprint:`Der Blueprint ist unvollständig — geh zurück und vervollständige ihn mit dem Builder.`,m1_specs_required:`Der Blueprint hat noch keine Meilenstein-1-Specs.`,m1_specs_over_cap:`Meilenstein 1 hat zu viele Specs (max. 10). Bitte den Builder, ihn zu verschlanken.`,m1_spec_quality_invalid:`Die generierten Specs sind noch nicht umsetzungsreif. Kehre zum Builder zurück und verfeinere den angegebenen Punkt.`,bundled_framework_missing:`Das mitgelieferte Framework fehlt — installiere die Specrails-App neu.`,location_not_empty:`Dieser Ordner existiert bereits und ist nicht leer. Wähle einen anderen Ort.`,location_already_registered:`Dieser Ort gehört bereits zu einem registrierten Projekt.`,commit_failed:`Die Projekterstellung ist fehlgeschlagen — der Grund steht in der Schrittliste.`}},r={title:`Dein Projekt wird erstellt…`,steps:{"create-dir":`Projektordner erstellen`,"git-init":`Git-Repository + README initialisieren`,assemble:`Specrails-Workspace zusammenbauen (offline)`,blueprint:`Blueprint schreiben`,tickets:`Meilenstein-1-Specs einfügen`,register:`Projekt registrieren`,github:`GitHub-Repository erstellen`},githubErrors:{gh_not_installed:`GitHub CLI (gh) ist nicht installiert — Repository nicht erstellt`,gh_not_authenticated:`gh ist nicht angemeldet (gh auth login ausführen) — Repository nicht erstellt`,gh_scope:`Dein gh-Token kann keine Repositories erstellen (repo-Scope fehlt)`,gh_repo_exists:`Ein Repository mit diesem Namen existiert bereits in deinem Konto`,gh_network:`Netzwerkfehler mit GitHub — Repository nicht erstellt`,generic:`GitHub-Repository konnte nicht erstellt werden`}},i={title:`Projekt erstellt`,description:`Dein Meilenstein-1-Backlog ist auf dem Board, mit M1 gelabelt.`,launchM1:`Meilenstein 1 starten`,openProject:`Projekt öffnen`,launchToast:`Meilenstein 1 gestartet — {{count}} Specs auf Rails verteilt (max. 3 pro Rail)`,launchPartialToast:`Meilenstein 1 teilweise gestartet — {{count}} Specs gestartet, {{skipped}} ausstehend`,launchFailed:`Meilenstein 1 konnte nicht gestartet werden`},a={title:`Blueprint`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} fertig`,launchM1:`Meilenstein 1 starten`,generateNext:`M{{n}} generieren`,generateHint:`Öffnet eine im Code verankerte Spec-Session, gesät mit dem Blueprint`,generateUnavailable:`Die Meilenstein-Generierung benötigt einen nativen Nur-Lese-Modus`},o={startFailed:`Die Builder-Konversation konnte nicht gestartet werden.`,turnFailed:`Der Builder-Turn ist fehlgeschlagen.`,commitFailed:`Die Projekterstellung ist fehlgeschlagen.`},s={title:`{{label}} generieren`,inputPlaceholder:`Specs verfeinern…`,commit:`{{count}} Specs als {{label}} übernehmen`,commitToast:`{{count}} Specs als {{label}} auf das Board übernommen`,commitFailed:`Der Meilenstein konnte nicht übernommen werden`,providerUnavailable:`Die Meilenstein-Generierung ist nicht verfügbar, da dieser Anbieter keinen nativen Nur-Lese-Modus hat.`},c={title:`Projekt-Builder`,subtitle:`Der Agent baut ein neues Projekt`,exit:`Beenden`,exitConfirmTitle:`Builder verlassen?`,exitConfirmBody:`Der laufende Blueprint wird verworfen.`,exitConfirmCancel:`Weiterbauen`,exitConfirmDiscard:`Verwerfen und beenden`},l={surpriseMe:`Überrasch mich — schlage sinnvolle Werte für alle Blueprint-Dimensionen vor, lasse m1Specs leer und lass mich den Plan vor der Erstellung detaillierter Specs genehmigen.`,milestoneSeed:`Generiere die detaillierten Specs für Meilenstein {{label}} ("{{title}}"). Lies zuerst die echte Codebasis, validiere den vollständigen Satz und gib erst dann ALLE detaillierten Specs des Meilensteins in einer einzigen blueprint-draft-Antwort/einem einzigen Snapshot aus.`,milestoneSeedWithPlanned:`Generiere die detaillierten Specs für Meilenstein {{label}} ("{{title}}"). Geplante Spec-Titel: {{planned}}. Lies zuerst die echte Codebasis, validiere den vollständigen Satz und gib erst dann ALLE detaillierten Specs des Meilensteins in einer einzigen blueprint-draft-Antwort/einem einzigen Snapshot aus.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Schließen`,open:`Spec-Details ansehen`,empty:`Noch keine Beschreibung.`,summary:`Zusammenfassung`,priority:`Priorität`,description:`Spec-Beschreibung`,acceptanceCriteria:`Akzeptanzkriterien`,criteriaEmpty:`Noch keine Akzeptanzkriterien.`},d={modeLabel:`Startmodus`,mode:{sequential:`Sequenziell`,parallel:`Parallel`},chunkLaunched:`{{milestone}} — Rail {{chunk}}/{{total}} gestartet`,chunkFailed:`{{milestone}} — Rail {{chunk}}/{{total}} konnte nicht starten; restliche Rails gestoppt`,done:`{{milestone}} abgeschlossen — {{count}} Specs durchliefen die sequenzielle Kette`},f={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,sequential:d};export{n as commit,f as default,i as done,o as errors,s as milestone,c as mode,t as panel,r as progress,l as prompts,d as sequential,e as shell,a as sidebar,u as specModal};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({commit:()=>i,default:()=>m,done:()=>o,errors:()=>c,milestone:()=>l,mode:()=>u,panel:()=>r,progress:()=>a,prompts:()=>d,sequential:()=>p,shell:()=>n,sidebar:()=>s,specModal:()=>f}),n={title:`Project Builder`,subtitle:`From idea to Milestone-1 backlog`,close:`Close the Builder`,emptyTitle:`Describe your app idea`,emptyHint:`One or two sentences are enough — the Builder will interview you briefly and propose a full blueprint. You can also ask it to decide everything for you.`,surpriseMe:`Surprise me`,inputPlaceholder:`An app that…`,createSpecs:`Create specs`,createSpecsHint:`Available once the blueprint has Milestone-1 specs`,providerUnavailable:`Project Builder requires a provider with a native no-tools or read-only mode. This provider is unavailable here.`},r={title:`Blueprint`,product:`Product`,coreFlow:`Core flow`,platform:`Platform`,stack:`Stack`,milestones:`Milestones`,milestonesValue:`{{count}} planned`,assumptions:`Assumptions`,m1Specs:`Milestone 1 specs ({{count}})`,dependsOn:`builds on #{{index}}`,criteriaCount:`{{count}} acceptance criteria`,laterMilestones:`Later milestones`,empty:`The blueprint fills in as you talk.`},i={title:`Create the project`,description:`Nothing touches disk until you confirm. The repo stays pristine — Specrails artifacts live outside it.`,nameLabel:`Project name`,locationLabel:`Location`,locationHint:`A new folder will be created here (must be empty or absent).`,providersLabel:`AI providers`,githubLabel:`Create private GitHub repository`,githubAuthHint:`Sign in first: gh auth login`,back:`Back`,submit:`Create project`,creating:`Creating…`,errors:{generic:`The commit could not start. Check the values and try again.`,invalid_name:`The project name is required.`,invalid_location:`The location is required.`,providers_required:`Select at least one provider.`,unknown_provider:`One of the selected providers is not available.`,invalid_blueprint:`The blueprint is incomplete — go back and finish it with the Builder.`,m1_specs_required:`The blueprint has no Milestone-1 specs yet.`,m1_specs_over_cap:`Milestone 1 has too many specs (max 10). Ask the Builder to slim it down.`,m1_spec_quality_invalid:`The generated specs are not implementation-ready yet. Return to the Builder and refine the indicated item.`,bundled_framework_missing:`The bundled framework is missing — reinstall the Specrails app.`,location_not_empty:`That folder already exists and is not empty. Pick another location.`,location_already_registered:`That location already belongs to a registered project.`,commit_failed:`The project creation failed — see the step list for the reason.`}},a={title:`Creating your project…`,steps:{"create-dir":`Create project folder`,"git-init":`Initialize git repository + README`,assemble:`Assemble the Specrails workspace (offline)`,blueprint:`Write the blueprint`,tickets:`Insert Milestone-1 specs`,register:`Register the project`,github:`Create GitHub repository`},githubErrors:{gh_not_installed:`GitHub CLI (gh) is not installed — repository not created`,gh_not_authenticated:`gh is not signed in (run gh auth login) — repository not created`,gh_scope:`Your gh token cannot create repositories (missing repo scope)`,gh_repo_exists:`A repository with that name already exists on your account`,gh_network:`Network error talking to GitHub — repository not created`,generic:`GitHub repository creation failed`}},o={title:`Project created`,description:`Your Milestone-1 backlog is on the board, labeled M1.`,launchM1:`Launch Milestone 1`,openProject:`Open the project`,launchToast:`Milestone 1 launched — {{count}} specs across rails (max 3 per rail)`,launchPartialToast:`Milestone 1 partially launched — {{count}} specs launched, {{skipped}} pending`,launchFailed:`Could not launch Milestone 1`},s={title:`Blueprint`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} done`,launchM1:`Launch Milestone 1`,generateNext:`Generate M{{n}}`,generateHint:`Opens a grounded spec session seeded with the blueprint`,generateUnavailable:`Milestone generation requires a provider with native read-only mode`},c={startFailed:`Could not start the Builder conversation.`,turnFailed:`The Builder turn failed.`,commitFailed:`Project creation failed.`},l={title:`Generate {{label}}`,inputPlaceholder:`Refine the specs…`,commit:`Commit {{count}} specs as {{label}}`,commitToast:`{{count}} specs committed to the board as {{label}}`,commitFailed:`Could not commit the milestone`,providerUnavailable:`Milestone generation is unavailable because this provider has no native read-only mode.`},u={title:`Project Builder`,subtitle:`The agent is building a new project`,exit:`Exit`,exitConfirmTitle:`Leave the Builder?`,exitConfirmBody:`The blueprint in progress will be discarded.`,exitConfirmCancel:`Keep building`,exitConfirmDiscard:`Discard and exit`},d={surpriseMe:`Surprise me — propose sensible defaults for every blueprint dimension, keep m1Specs empty, and let me approve the plan before generating detailed specs.`,milestoneSeed:`Generate the detailed specs for milestone {{label}} ("{{title}}"). Read the real codebase first, validate the complete batch, then emit ALL detailed milestone specs in one blueprint-draft response/snapshot.`,milestoneSeedWithPlanned:`Generate the detailed specs for milestone {{label}} ("{{title}}"). Planned spec titles: {{planned}}. Read the real codebase first, validate the complete batch, then emit ALL detailed milestone specs in one blueprint-draft response/snapshot.`},f={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Close`,open:`View spec detail`,empty:`No description yet.`,summary:`Summary`,priority:`Priority`,description:`Spec description`,acceptanceCriteria:`Acceptance criteria`,criteriaEmpty:`No acceptance criteria yet.`},p={modeLabel:`Launch mode`,mode:{sequential:`Sequential`,parallel:`Parallel`},chunkLaunched:`{{milestone}} — rail {{chunk}}/{{total}} launched`,chunkFailed:`{{milestone}} — rail {{chunk}}/{{total}} failed to launch; remaining rails stopped`,done:`{{milestone}} complete — {{count}} specs went through the sequential chain`},m={shell:n,panel:r,commit:i,progress:a,done:o,sidebar:s,errors:c,milestone:l,mode:u,prompts:d,specModal:f,sequential:p};export{t};
@@ -1 +0,0 @@
1
- var e={title:`项目构建器`,subtitle:`从想法到里程碑 1 的待办清单`,close:`关闭构建器`,emptyTitle:`描述你的应用想法`,emptyHint:`一两句话就够了——构建器会简短地采访你并提出完整的蓝图。你也可以让它替你决定一切。`,surpriseMe:`给我惊喜`,inputPlaceholder:`一个能……的应用`,createSpecs:`创建规格`,createSpecsHint:`蓝图包含里程碑 1 规格后可用`,providerUnavailable:`项目构建器需要具备原生无工具或只读模式的提供商。此提供商在这里不可用。`},t={title:`蓝图`,product:`产品`,coreFlow:`核心流程`,platform:`平台`,stack:`技术栈`,milestones:`里程碑`,milestonesValue:`已规划 {{count}} 个`,assumptions:`假设`,m1Specs:`里程碑 1 规格({{count}})`,dependsOn:`依赖 #{{index}}`,criteriaCount:`{{count}} 条验收标准`,laterMilestones:`后续里程碑`,empty:`蓝图会在对话中逐步填充。`},n={title:`创建项目`,description:`确认之前不会写入磁盘。仓库保持纯净——Specrails 的产物存放在仓库之外。`,nameLabel:`项目名称`,locationLabel:`位置`,locationHint:`将在此创建一个新文件夹(必须为空或不存在)。`,providersLabel:`AI 提供商`,githubLabel:`创建私有 GitHub 仓库`,githubAuthHint:`请先登录:gh auth login`,back:`返回`,submit:`创建项目`,creating:`创建中…`,errors:{generic:`无法启动提交。请检查数值后重试。`,invalid_name:`项目名称为必填项。`,invalid_location:`位置为必填项。`,providers_required:`请至少选择一个提供商。`,unknown_provider:`所选提供商之一不可用。`,invalid_blueprint:`蓝图不完整——请返回并与构建器一起完成它。`,m1_specs_required:`蓝图还没有里程碑 1 的规格。`,m1_specs_over_cap:`里程碑 1 的规格太多(最多 10 个)。请让构建器精简。`,m1_spec_quality_invalid:`生成的规格尚未达到可实施质量。请返回构建器并完善所指出的项目。`,bundled_framework_missing:`缺少内置框架——请重新安装 Specrails 应用。`,location_not_empty:`该文件夹已存在且非空。请选择其他位置。`,location_already_registered:`该位置已属于一个已注册的项目。`,commit_failed:`项目创建失败——原因见步骤列表。`}},r={title:`正在创建你的项目…`,steps:{"create-dir":`创建项目文件夹`,"git-init":`初始化 git 仓库 + README`,assemble:`组装 Specrails 工作区(离线)`,blueprint:`写入蓝图`,tickets:`插入里程碑 1 规格`,register:`注册项目`,github:`创建 GitHub 仓库`},githubErrors:{gh_not_installed:`未安装 GitHub CLI(gh)— 未创建仓库`,gh_not_authenticated:`gh 未登录(请运行 gh auth login)— 未创建仓库`,gh_scope:`你的 gh 令牌无权创建仓库(缺少 repo 权限)`,gh_repo_exists:`你的账户中已存在同名仓库`,gh_network:`与 GitHub 通信时网络出错 — 未创建仓库`,generic:`创建 GitHub 仓库失败`}},i={title:`项目已创建`,description:`里程碑 1 的待办清单已在看板上,标签为 M1。`,launchM1:`启动里程碑 1`,openProject:`打开项目`,launchToast:`里程碑 1 已启动——{{count}} 个规格分布在多条轨道上(每条轨道最多 3 个)`,launchPartialToast:`里程碑 1 部分启动——已启动 {{count}} 个规格,{{skipped}} 个待处理`,launchFailed:`无法启动里程碑 1`},a={title:`蓝图`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} 已完成`,launchM1:`启动里程碑 1`,generateNext:`生成 M{{n}}`,generateHint:`打开以蓝图为种子、扎根真实代码的规格会话`,generateUnavailable:`里程碑生成需要原生只读模式`},o={startFailed:`无法启动构建器对话。`,turnFailed:`构建器回合失败。`,commitFailed:`项目创建失败。`},s={title:`生成 {{label}}`,inputPlaceholder:`完善规格…`,commit:`将 {{count}} 个规格提交为 {{label}}`,commitToast:`{{count}} 个规格已作为 {{label}} 加入看板`,commitFailed:`无法提交里程碑`,providerUnavailable:`此提供商没有原生只读模式,因此无法生成里程碑。`},c={title:`项目构建器`,subtitle:`智能体正在构建新项目`,exit:`退出`,exitConfirmTitle:`退出构建器?`,exitConfirmBody:`进行中的蓝图将被丢弃。`,exitConfirmCancel:`继续构建`,exitConfirmDiscard:`丢弃并退出`},l={surpriseMe:`给我惊喜——为蓝图的所有维度提出合理方案,保持 m1Specs 为空,并在生成详细规格前让我先批准计划。`,milestoneSeed:`为里程碑 {{label}}("{{title}}")生成详细规格。先阅读真实代码并验证完整批次,然后在一次 blueprint-draft 回复/快照中输出该里程碑的全部详细规格。`,milestoneSeedWithPlanned:`为里程碑 {{label}}("{{title}}")生成详细规格。计划的规格标题:{{planned}}。先阅读真实代码并验证完整批次,然后在一次 blueprint-draft 回复/快照中输出该里程碑的全部详细规格。`},u={eyebrow:`{{milestone}} · 规格 {{index}}`,close:`关闭`,open:`查看规格详情`,empty:`尚无描述。`,summary:`摘要`,priority:`优先级`,description:`规格描述`,acceptanceCriteria:`验收标准`,criteriaEmpty:`尚无验收标准。`},d={modeLabel:`启动模式`,mode:{sequential:`顺序`,parallel:`并行`},chunkLaunched:`{{milestone}} — 轨道 {{chunk}}/{{total}} 已启动`,chunkFailed:`{{milestone}} — 轨道 {{chunk}}/{{total}} 启动失败;已停止后续轨道`,done:`{{milestone}} 完成 — {{count}} 个 spec 已通过顺序链`},f={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,sequential:d};export{n as commit,f as default,i as done,o as errors,s as milestone,c as mode,t as panel,r as progress,l as prompts,d as sequential,e as shell,a as sidebar,u as specModal};
@@ -1 +0,0 @@
1
- var e={title:`Constructor de proyectos`,subtitle:`De la idea al backlog del Hito 1`,close:`Cerrar el Constructor`,emptyTitle:`Describe tu idea de app`,emptyHint:`Con una o dos frases basta — el Constructor te entrevistará brevemente y propondrá un blueprint completo. También puedes pedirle que lo decida todo por ti.`,surpriseMe:`Sorpréndeme`,inputPlaceholder:`Una app que…`,createSpecs:`Crear specs`,createSpecsHint:`Disponible cuando el blueprint tenga specs del Hito 1`,providerUnavailable:`El Constructor requiere un proveedor con modo nativo sin herramientas o de solo lectura. Este proveedor no está disponible aquí.`},t={title:`Blueprint`,product:`Producto`,coreFlow:`Flujo principal`,platform:`Plataforma`,stack:`Stack`,milestones:`Hitos`,milestonesValue:`{{count}} planificados`,assumptions:`Suposiciones`,m1Specs:`Specs del Hito 1 ({{count}})`,dependsOn:`depende de #{{index}}`,criteriaCount:`{{count}} criterios de aceptación`,laterMilestones:`Hitos posteriores`,empty:`El blueprint se completa mientras conversas.`},n={title:`Crear el proyecto`,description:`Nada toca el disco hasta que confirmes. El repo queda prístino — los artefactos de Specrails viven fuera.`,nameLabel:`Nombre del proyecto`,locationLabel:`Ubicación`,locationHint:`Se creará una carpeta nueva aquí (debe estar vacía o no existir).`,providersLabel:`Proveedores de IA`,githubLabel:`Crear repositorio privado en GitHub`,githubAuthHint:`Inicia sesión primero: gh auth login`,back:`Atrás`,submit:`Crear proyecto`,creating:`Creando…`,errors:{generic:`No se pudo iniciar el commit. Revisa los valores e inténtalo de nuevo.`,invalid_name:`El nombre del proyecto es obligatorio.`,invalid_location:`La ubicación es obligatoria.`,providers_required:`Selecciona al menos un proveedor.`,unknown_provider:`Uno de los proveedores seleccionados no está disponible.`,invalid_blueprint:`El blueprint está incompleto — vuelve atrás y termínalo con el Constructor.`,m1_specs_required:`El blueprint aún no tiene specs del Hito 1.`,m1_specs_over_cap:`El Hito 1 tiene demasiadas specs (máx. 10). Pide al Constructor que lo reduzca.`,m1_spec_quality_invalid:`Las specs generadas todavía no están listas para implementar. Vuelve al Constructor y refina el elemento indicado.`,bundled_framework_missing:`Falta el framework incluido — reinstala la app de Specrails.`,location_not_empty:`Esa carpeta ya existe y no está vacía. Elige otra ubicación.`,location_already_registered:`Esa ubicación ya pertenece a un proyecto registrado.`,commit_failed:`La creación del proyecto falló — mira la lista de pasos para ver el motivo.`}},r={title:`Creando tu proyecto…`,steps:{"create-dir":`Crear la carpeta del proyecto`,"git-init":`Inicializar el repositorio git + README`,assemble:`Ensamblar el workspace de Specrails (offline)`,blueprint:`Escribir el blueprint`,tickets:`Insertar las specs del Hito 1`,register:`Registrar el proyecto`,github:`Crear el repositorio en GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) no está instalado — repositorio no creado`,gh_not_authenticated:`gh no tiene sesión (ejecuta gh auth login) — repositorio no creado`,gh_scope:`Tu token de gh no puede crear repositorios (falta el scope repo)`,gh_repo_exists:`Ya existe un repositorio con ese nombre en tu cuenta`,gh_network:`Error de red con GitHub — repositorio no creado`,generic:`No se pudo crear el repositorio de GitHub`}},i={title:`Proyecto creado`,description:`Tu backlog del Hito 1 está en el tablero, etiquetado M1.`,launchM1:`Lanzar el Hito 1`,openProject:`Abrir el proyecto`,launchToast:`Hito 1 lanzado — {{count}} specs repartidas en raíles (máx. 3 por raíl)`,launchPartialToast:`Hito 1 lanzado parcialmente — {{count}} specs lanzadas, {{skipped}} pendientes`,launchFailed:`No se pudo lanzar el Hito 1`},a={title:`Blueprint`,milestone:`M{{n}}`,progress:`{{done}}/{{total}} hechas`,launchM1:`Lanzar el Hito 1`,generateNext:`Generar M{{n}}`,generateHint:`Abre una sesión de specs con contexto real sembrada con el blueprint`,generateUnavailable:`La generación de hitos requiere un modo nativo de solo lectura`},o={startFailed:`No se pudo iniciar la conversación del Constructor.`,turnFailed:`El turno del Constructor falló.`,commitFailed:`La creación del proyecto falló.`},s={title:`Generar {{label}}`,inputPlaceholder:`Refina las specs…`,commit:`Confirmar {{count}} specs como {{label}}`,commitToast:`{{count}} specs añadidas al tablero como {{label}}`,commitFailed:`No se pudo confirmar el hito`,providerUnavailable:`La generación de hitos no está disponible porque este proveedor no tiene modo nativo de solo lectura.`},c={title:`Constructor de proyectos`,subtitle:`El agente está construyendo un proyecto nuevo`,exit:`Salir`,exitConfirmTitle:`¿Salir del Constructor?`,exitConfirmBody:`El blueprint en curso se descartará.`,exitConfirmCancel:`Seguir construyendo`,exitConfirmDiscard:`Descartar y salir`},l={surpriseMe:`Sorpréndeme — propón valores sensatos para todas las dimensiones del blueprint, deja m1Specs vacío y permíteme aprobar el plan antes de generar las specs detalladas.`,milestoneSeed:`Genera las specs detalladas del hito {{label}} ("{{title}}"). Lee primero el código real, valida el lote completo y, solo entonces, emite TODAS las specs detalladas del hito en una única respuesta/snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Genera las specs detalladas del hito {{label}} ("{{title}}"). Títulos de specs planificadas: {{planned}}. Lee primero el código real, valida el lote completo y, solo entonces, emite TODAS las specs detalladas del hito en una única respuesta/snapshot blueprint-draft.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Cerrar`,open:`Ver detalle de la spec`,empty:`Aún sin descripción.`,summary:`Resumen`,priority:`Prioridad`,description:`Descripción de la spec`,acceptanceCriteria:`Criterios de aceptación`,criteriaEmpty:`Aún no hay criterios de aceptación.`},d={modeLabel:`Modo de lanzamiento`,mode:{sequential:`Secuencial`,parallel:`Paralelo`},chunkLaunched:`{{milestone}} — raíl {{chunk}}/{{total}} lanzado`,chunkFailed:`{{milestone}} — el raíl {{chunk}}/{{total}} falló al lanzar; se detienen los restantes`,done:`{{milestone}} completado — {{count}} specs pasaron por la cadena secuencial`},f={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,sequential:d};export{n as commit,f as default,i as done,o as errors,s as milestone,c as mode,t as panel,r as progress,l as prompts,d as sequential,e as shell,a as sidebar,u as specModal};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({action:()=>s,default:()=>h,history:()=>d,kind:()=>o,monaco:()=>p,page:()=>n,provenancePanel:()=>a,resizer:()=>r,story:()=>u,summary:()=>l,ticketFiles:()=>m,toolbar:()=>i,tree:()=>f,viewer:()=>c}),n={resizeFileTree:`Resize file tree`,selectFile:`Select a file to preview.`},r={hint:`Drag to resize. Double-click to reset.`},i={scope:`Scope`,allAi:`All AI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copy file path`,generateSummary:`Generate summary`,regenerateSummary:`Regenerate summary`,generating:`Generating…`,regenerating:`Regenerating…`,summaryUnavailable:`Summary unavailable: {{reason}}`,jobContext:`Job context`,clear:`Clear`},a={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} touched file`,touchedFiles_other:`{{count}} touched files`,log:`Log`},o={created:`created`,modified:`modified`,deleted:`deleted`},s={added:`added`,changed:`changed`,deleted:`deleted`},c={loadingFile:`Loading file…`,showSummary:`Show summary`,markdownViewMode:`Markdown view mode`,preview:`Preview`,raw:`Raw`,missingFile:`This file was touched by an AI job but no longer exists in the working tree.`,binaryFile:`Binary file.`,tooLarge:`File too large to preview ({{size}} MB).`,noContent:`No content available.`,pathCopied:`Path copied`,copyPathFailed:`Could not copy path`,budgetPrompt:`Override the budget cap?`,edit:`Edit`,save:`Save`,saving:`Saving…`,saved:`File saved`,saveFailed:`Save failed`},l={generationFailed:`Summary generation failed`,skipped:`Summary skipped: {{reason}}`,unavailable:`Summary unavailable: {{reason}}.`,empty:`No summary for this file yet.`,stale:`Stale`,hide:`Hide`,reason:{missing:`file missing`,binary:`binary file`,tooLarge:`file too large`,providerNoPureOutput:`selected AI provider cannot enforce safe pure-output mode`}},u={title_one:`Construction story · {{count}} chapter`,title_other:`Construction story · {{count}} chapters`,viewMode:`Story view mode`,modeStory:`Story`,modeLog:`Log`,loading:`Loading the story…`,loadFailed:`Could not load the story.`,empty:`No AI interventions recorded for this file yet.`,spec:`Spec #{{ticketId}}`,unknownSpec:`AI change without a spec`,openSpec:`Open spec #{{ticketId}}`,kindLabel:{created:`Created`,modified:`Modified`,deleted:`Deleted`},fallback:{created:`This file was created while implementing this spec.`,modified:`This file was modified while implementing this spec.`,deleted:`This file was deleted while implementing this spec.`,createdNoSpec:`This file was created by an AI job.`,modifiedNoSpec:`This file was modified by an AI job.`,deletedNoSpec:`This file was deleted by an AI job.`},explain:`Explain this change`,explaining:`Explaining…`,explainFailed:`Could not generate the explanation`,explainUnavailable:`AI explanation is unavailable because the selected provider cannot enforce safe pure-output mode.`,budgetReached:`Monthly AI budget reached.`,generateAnyway:`Generate anyway`,explainedBy:`Explained by {{model}}`,linesAdded:`Lines added`,linesRemoved:`Lines removed`},d={resize:`Resize AI touch history`,title_one:`AI touch history · {{count}} change`,title_other:`AI touch history · {{count}} changes`,show:`Show`,hide:`Hide`,unknownJob:`unknown job`,filterByJob:`Filter Code by job {{jobId}}`,diff:`Diff`,openSpec:`Open spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Loading diff...`,diffUnavailable:`Diff unavailable for this historical touch. New jobs will store patches automatically.`,diffTruncated:`[diff truncated]`},f={jobFiles:`Job files`,specFiles:`Spec files`,touchedByAi:`Touched by AI`,allFiles:`All files`,collapseAll:`Collapse all folders`,expandAll:`Expand all folders`,touchedCount_one:`{{count}} AI-touched file`,touchedCount_other:`{{count}} AI-touched files`,loadingFiles:`Loading files…`,emptyTouched:`No AI-touched files yet. Run a job, or switch to All files.`,showAllFiles:`Show all files`,noFiles:`No files.`,folderTouched_one:`{{count}} AI-touched file below this folder`,folderTouched_other:`{{count}} AI-touched files below this folder`,jobTitle:`Job {{jobId}}`,createdBySpec:`Created while implementing spec #{{id}}`,modifiedBySpec:`Modified while implementing spec #{{id}}`,latestTitleCreated:`Latest AI job added this file`,latestTitleModified:`Latest AI job changed this file`,latestTitleDeleted:`Latest AI job deleted this file`},p={loadFailed:`Failed to load the code viewer.`,reload:`Reload`,loadingEditor:`Loading editor…`},m={title:`Files touched by this ticket`,jobTitle:`Job {{jobId}}`},h={page:n,resizer:r,toolbar:i,provenancePanel:a,kind:o,action:s,viewer:c,summary:l,story:u,history:d,tree:f,monaco:p,ticketFiles:m};export{t};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({default:()=>d,errors:()=>i,grid:()=>a,notifications:()=>c,palette:()=>n,shortcuts:()=>o,templateDialog:()=>u,templates:()=>l,toasts:()=>r,update:()=>s}),n={label:`Command palette`,searchPlaceholder:`Search projects, commands, jobs...`,noResults:`No results found.`,activeBadge:`active`,groups:{projects:`Projects`,spec:`Spec`,jobs:`Jobs`,navigation:`Navigation`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Desktop Analytics`,projectAnalytics:`Project Analytics`,activityFeed:`Activity Feed`,desktopSettings:`Desktop Settings`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Collapse left sidebar (keep pinned)`,unpinLeft:`Unpin left sidebar`,pinLeftOpen:`Pin left sidebar open`,collapseRightKeepPinned:`Collapse right sidebar (keep pinned)`,unpinRight:`Unpin right sidebar`,pinRightOpen:`Pin right sidebar open`},footer:{navigate:`navigate`,select:`select`,close:`close`}},r={queued:`{{name}} queued`,queuing:`Queuing {{name}}...`},i={spawnFailed:`Failed to spawn command`},a={sections:{discovery:`Discovery`,discoverySubtitle:`Explore & define your product`,delivery:`Delivery`,deliverySubtitle:`Build & ship features`,others:`Others`},displayNames:{proposeSpec:`Custom-Propose`,updateBacklog:`Auto-propose`,productBacklog:`Auto-Select Specs`},emptyState:{title:`No commands installed`,hint:`Run <1>/setup</1> in Claude Code to install specrails commands`},runs_one:`{{count}} run`,runs_other:`{{count}} runs`,tooltip:{opensWizard:`Opens guided wizard`}},o={title:`Keyboard Shortcuts`,subtitle:`Press <1>?</1> anywhere to toggle this panel`,categories:{general:`General`,navigation:`Navigation`,actions:`Actions`},items:{showCheatsheet:`Show keyboard shortcuts`,closeModal:`Close modal / sidebar`,toggleRightSidebar:`Toggle right sidebar`,toggleLeftSidebar:`Toggle left sidebar`,toggleTerminal:`Toggle terminal panel`,toggleAgent:`Toggle agent chat`,navigateProjectPageWithAgents:`Navigate to project page (Dashboard/Jobs/Analytics/Agents/Settings)`,navigateProjectPage:`Navigate to project page (Dashboard/Jobs/Analytics/Settings)`,switchProject:`Switch to project by position`,goDashboard:`Go to Dashboard`,goActivity:`Go to Activity / Jobs`,goAnalytics:`Go to Analytics`,goSettings:`Go to Settings`,nextItem:`Next item in list`,prevItem:`Previous item in list`}},s={title:{available:`Update available`,downloading:`Downloading update`,installing:`Installing update`,ready:`Update ready`,error:`Update failed`},desc:{available:`A new version of Specrails is ready to install.`,fetching:`Fetching {{size}}…`,progress:`{{percent}}% · {{downloaded}} of {{total}}`,installing:`Verifying signature and finishing up…`,ready:`Restart to launch version {{version}}.`,errorFallback:`Couldn’t complete the update. Please try again.`},pill:{downloading:`Downloading`,installing:`Installing`,ready:`Ready`},actions:{restart:`Restart`,later:`Later`,update:`Update`,installing:`Installing…`,tryAgain:`Try again`,dismiss:`Dismiss`},mockReady:`Mock update ready — restart skipped`,errors:{installFailed:`Could not install update`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},c={jobCompleted:`Job completed`,jobFailed:`Job failed`,jobStuck:`Run seems stuck`,jobStuckBody_one:`No activity for {{count}} minute — open it to check`,jobStuckBody_other:`No activity for {{count}} minutes — open it to check`,unknownCommand:`Unknown command`},l={emptyState:{title:`No templates yet.`,hint:`Save command sequences to run them with one click.`},createButton:`Create template`,newButton:`New template`,steps_one:`{{count}} step`,steps_other:`{{count}} steps`,moreCommands_one:`+{{count}} more`,moreCommands_other:`+{{count}} more`,run:`Run`,queuing:`Queuing…`,aria:{edit:`Edit template`,delete:`Delete template`},confirmDelete:`Delete template "{{name}}"?`,toasts:{queuedJobs_one:`Queued {{count}} job from "{{name}}"`,queuedJobs_other:`Queued {{count}} jobs from "{{name}}"`,deleted:`Template "{{name}}" deleted`},errors:{runFailed:`Failed to run template`,deleteFailed:`Failed to delete template`}},u={editTitle:`Edit Template`,newTitle:`New Template`,nameLabel:`Name`,namePlaceholder:`e.g. Full pipeline`,descriptionLabel:`Description (optional)`,descriptionPlaceholder:`What does this rail do?`,stepsLabel:`Steps (commands or free prompts)`,stepPlaceholder:`Select a command or type a free prompt...`,aria:{moveUp:`Move up`,removeStep:`Remove step`},update:`Update`,create:`Create`,errors:{nameRequired:`Name is required`,stepRequired:`At least one step is required`,saveFailed:`Failed to save template`},toasts:{updated:`Template updated`,created:`Template created`}},d={palette:n,toasts:r,errors:i,grid:a,shortcuts:o,update:s,notifications:c,templates:l,templateDialog:u};export{t};
@@ -1 +0,0 @@
1
- var e={label:`Paleta de comandos`,searchPlaceholder:`Pesquisar projetos, comandos, jobs...`,noResults:`Nenhum resultado encontrado.`,activeBadge:`ativo`,groups:{projects:`Projetos`,spec:`Spec`,jobs:`Jobs`,navigation:`Navegação`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Análises do Desktop`,projectAnalytics:`Análises do projeto`,activityFeed:`Feed de atividade`,desktopSettings:`Definições do Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Recolher barra lateral esquerda (manter afixada)`,unpinLeft:`Desafixar barra lateral esquerda`,pinLeftOpen:`Afixar barra lateral esquerda aberta`,collapseRightKeepPinned:`Recolher barra lateral direita (manter afixada)`,unpinRight:`Desafixar barra lateral direita`,pinRightOpen:`Afixar barra lateral direita aberta`},footer:{navigate:`navegar`,select:`selecionar`,close:`fechar`}},t={queued:`{{name}} em fila`,queuing:`A colocar {{name}} em fila...`},n={spawnFailed:`Falha ao iniciar o comando`},r={sections:{discovery:`Descoberta`,discoverySubtitle:`Explore e defina o seu produto`,delivery:`Entrega`,deliverySubtitle:`Construa e lance funcionalidades`,others:`Outros`},displayNames:{proposeSpec:`Propor personalizada`,updateBacklog:`Propor automaticamente`,productBacklog:`Seleção automática de Specs`},emptyState:{title:`Nenhum comando instalado`,hint:`Execute <1>/setup</1> no Claude Code para instalar os comandos specrails`},runs_one:`{{count}} execução`,runs_other:`{{count}} execuções`,tooltip:{opensWizard:`Abre o assistente guiado`}},i={title:`Atalhos de teclado`,subtitle:`Prima <1>?</1> em qualquer lugar para alternar este painel`,categories:{general:`Geral`,navigation:`Navegação`,actions:`Ações`},items:{showCheatsheet:`Mostrar atalhos de teclado`,closeModal:`Fechar modal / barra lateral`,toggleRightSidebar:`Alternar barra lateral direita`,toggleLeftSidebar:`Alternar barra lateral esquerda`,toggleTerminal:`Alternar painel do terminal`,toggleAgent:`Mostrar/ocultar chat do agente`,navigateProjectPageWithAgents:`Navegar para página do projeto (Dashboard/Jobs/Análises/Agentes/Definições)`,navigateProjectPage:`Navegar para página do projeto (Dashboard/Jobs/Análises/Definições)`,switchProject:`Mudar de projeto por posição`,goDashboard:`Ir para o Dashboard`,goActivity:`Ir para Atividade / Jobs`,goAnalytics:`Ir para Análises`,goSettings:`Ir para Definições`,nextItem:`Item seguinte na lista`,prevItem:`Item anterior na lista`}},a={title:{available:`Atualização disponível`,downloading:`A transferir atualização`,installing:`A instalar atualização`,ready:`Atualização pronta`,error:`Falha na atualização`},desc:{available:`Está pronta a instalar uma nova versão do Specrails.`,fetching:`A obter {{size}}…`,progress:`{{percent}}% · {{downloaded}} de {{total}}`,installing:`A verificar a assinatura e a concluir…`,ready:`Reinicie para abrir a versão {{version}}.`,errorFallback:`Não foi possível concluir a atualização. Tente novamente.`},pill:{downloading:`A transferir`,installing:`A instalar`,ready:`Pronta`},actions:{restart:`Reiniciar`,later:`Mais tarde`,update:`Atualizar`,installing:`A instalar…`,tryAgain:`Tentar novamente`,dismiss:`Dispensar`},mockReady:`Atualização simulada pronta — reinício ignorado`,errors:{installFailed:`Não foi possível instalar a atualização`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job concluído`,jobFailed:`Job falhou`,jobStuck:`A execução parece travada`,jobStuckBody_one:`Sem atividade há {{count}} minuto — abra para verificar`,jobStuckBody_other:`Sem atividade há {{count}} minutos — abra para verificar`,unknownCommand:`Comando desconhecido`},s={emptyState:{title:`Ainda não há templates.`,hint:`Guarde sequências de comandos para as executar com um clique.`},createButton:`Criar template`,newButton:`Novo template`,steps_one:`{{count}} passo`,steps_other:`{{count}} passos`,moreCommands_one:`+{{count}} mais`,moreCommands_other:`+{{count}} mais`,run:`Executar`,queuing:`A colocar em fila…`,aria:{edit:`Editar template`,delete:`Eliminar template`},confirmDelete:`Eliminar o template "{{name}}"?`,toasts:{queuedJobs_one:`{{count}} job em fila a partir de "{{name}}"`,queuedJobs_other:`{{count}} jobs em fila a partir de "{{name}}"`,deleted:`Template "{{name}}" eliminado`},errors:{runFailed:`Falha ao executar o template`,deleteFailed:`Falha ao eliminar o template`}},c={editTitle:`Editar template`,newTitle:`Novo template`,nameLabel:`Nome`,namePlaceholder:`ex.: Pipeline completa`,descriptionLabel:`Descrição (opcional)`,descriptionPlaceholder:`O que faz este rail?`,stepsLabel:`Passos (comandos ou prompts livres)`,stepPlaceholder:`Selecione um comando ou escreva um prompt livre...`,aria:{moveUp:`Mover para cima`,removeStep:`Remover passo`},update:`Atualizar`,create:`Criar`,errors:{nameRequired:`O nome é obrigatório`,stepRequired:`É necessário pelo menos um passo`,saveFailed:`Falha ao guardar o template`},toasts:{updated:`Template atualizado`,created:`Template criado`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
@@ -1 +0,0 @@
1
- var e={label:`Befehlspalette`,searchPlaceholder:`Projekte, Befehle, Jobs durchsuchen...`,noResults:`Keine Ergebnisse gefunden.`,activeBadge:`aktiv`,groups:{projects:`Projekte`,spec:`Spec`,jobs:`Jobs`,navigation:`Navigation`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Desktop-Analytics`,projectAnalytics:`Projekt-Analytics`,activityFeed:`Aktivitäts-Feed`,desktopSettings:`Desktop-Einstellungen`,docs:`Doku`},sidebar:{collapseLeftKeepPinned:`Linke Seitenleiste einklappen (angepinnt lassen)`,unpinLeft:`Linke Seitenleiste lösen`,pinLeftOpen:`Linke Seitenleiste offen anpinnen`,collapseRightKeepPinned:`Rechte Seitenleiste einklappen (angepinnt lassen)`,unpinRight:`Rechte Seitenleiste lösen`,pinRightOpen:`Rechte Seitenleiste offen anpinnen`},footer:{navigate:`navigieren`,select:`auswählen`,close:`schließen`}},t={queued:`{{name}} eingereiht`,queuing:`{{name}} wird eingereiht...`},n={spawnFailed:`Befehl konnte nicht gestartet werden`},r={sections:{discovery:`Discovery`,discoverySubtitle:`Produkt erkunden & definieren`,delivery:`Delivery`,deliverySubtitle:`Features bauen & ausliefern`,others:`Sonstige`},displayNames:{proposeSpec:`Custom-Propose`,updateBacklog:`Auto-propose`,productBacklog:`Auto-Select Specs`},emptyState:{title:`Keine Befehle installiert`,hint:`Führe <1>/setup</1> in Claude Code aus, um die specrails-Befehle zu installieren`},runs_one:`{{count}} Lauf`,runs_other:`{{count}} Läufe`,tooltip:{opensWizard:`Öffnet einen geführten Assistenten`}},i={title:`Tastaturkürzel`,subtitle:`Drücke an beliebiger Stelle <1>?</1>, um dieses Panel umzuschalten`,categories:{general:`Allgemein`,navigation:`Navigation`,actions:`Aktionen`},items:{showCheatsheet:`Tastaturkürzel anzeigen`,closeModal:`Modal / Seitenleiste schließen`,toggleRightSidebar:`Rechte Seitenleiste umschalten`,toggleLeftSidebar:`Linke Seitenleiste umschalten`,toggleTerminal:`Terminal-Panel umschalten`,toggleAgent:`Agent-Chat umschalten`,navigateProjectPageWithAgents:`Zu Projektseite navigieren (Dashboard/Jobs/Analytics/Agenten/Einstellungen)`,navigateProjectPage:`Zu Projektseite navigieren (Dashboard/Jobs/Analytics/Einstellungen)`,switchProject:`Projekt nach Position wechseln`,goDashboard:`Zum Dashboard`,goActivity:`Zu Aktivität / Jobs`,goAnalytics:`Zu Analytics`,goSettings:`Zu den Einstellungen`,nextItem:`Nächstes Listenelement`,prevItem:`Vorheriges Listenelement`}},a={title:{available:`Update verfügbar`,downloading:`Update wird heruntergeladen`,installing:`Update wird installiert`,ready:`Update bereit`,error:`Update fehlgeschlagen`},desc:{available:`Eine neue Version von Specrails ist bereit zur Installation.`,fetching:`Lade {{size}}…`,progress:`{{percent}} % · {{downloaded}} von {{total}}`,installing:`Signatur wird geprüft und abgeschlossen…`,ready:`Neu starten, um Version {{version}} zu starten.`,errorFallback:`Update konnte nicht abgeschlossen werden. Bitte erneut versuchen.`},pill:{downloading:`Wird heruntergeladen`,installing:`Wird installiert`,ready:`Bereit`},actions:{restart:`Neu starten`,later:`Später`,update:`Aktualisieren`,installing:`Wird installiert…`,tryAgain:`Erneut versuchen`,dismiss:`Schließen`},mockReady:`Mock-Update bereit – Neustart übersprungen`,errors:{installFailed:`Update konnte nicht installiert werden`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job abgeschlossen`,jobFailed:`Job fehlgeschlagen`,jobStuck:`Ausführung scheint zu hängen`,jobStuckBody_one:`Seit {{count}} Minute keine Aktivität — zum Prüfen öffnen`,jobStuckBody_other:`Seit {{count}} Minuten keine Aktivität — zum Prüfen öffnen`,unknownCommand:`Unbekannter Befehl`},s={emptyState:{title:`Noch keine Vorlagen.`,hint:`Speichere Befehlssequenzen, um sie mit einem Klick auszuführen.`},createButton:`Vorlage erstellen`,newButton:`Neue Vorlage`,steps_one:`{{count}} Schritt`,steps_other:`{{count}} Schritte`,moreCommands_one:`+{{count}} weiterer`,moreCommands_other:`+{{count}} weitere`,run:`Ausführen`,queuing:`Wird eingereiht…`,aria:{edit:`Vorlage bearbeiten`,delete:`Vorlage löschen`},confirmDelete:`Vorlage „{{name}}“ löschen?`,toasts:{queuedJobs_one:`{{count}} Job aus „{{name}}“ eingereiht`,queuedJobs_other:`{{count}} Jobs aus „{{name}}“ eingereiht`,deleted:`Vorlage „{{name}}“ gelöscht`},errors:{runFailed:`Vorlage konnte nicht ausgeführt werden`,deleteFailed:`Vorlage konnte nicht gelöscht werden`}},c={editTitle:`Vorlage bearbeiten`,newTitle:`Neue Vorlage`,nameLabel:`Name`,namePlaceholder:`z. B. Komplette Pipeline`,descriptionLabel:`Beschreibung (optional)`,descriptionPlaceholder:`Was macht dieses Rail?`,stepsLabel:`Schritte (Befehle oder freie Prompts)`,stepPlaceholder:`Befehl auswählen oder freien Prompt eingeben...`,aria:{moveUp:`Nach oben verschieben`,removeStep:`Schritt entfernen`},update:`Aktualisieren`,create:`Erstellen`,errors:{nameRequired:`Name ist erforderlich`,stepRequired:`Mindestens ein Schritt ist erforderlich`,saveFailed:`Vorlage konnte nicht gespeichert werden`},toasts:{updated:`Vorlage aktualisiert`,created:`Vorlage erstellt`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
@@ -1 +0,0 @@
1
- var e={label:`命令面板`,searchPlaceholder:`搜索项目、命令、任务...`,noResults:`未找到结果。`,activeBadge:`当前`,groups:{projects:`项目`,spec:`Spec`,jobs:`任务`,navigation:`导航`},nav:{dashboard:`仪表盘`,desktopAnalytics:`Desktop 分析`,projectAnalytics:`项目分析`,activityFeed:`活动流`,desktopSettings:`Desktop 设置`,docs:`文档`},sidebar:{collapseLeftKeepPinned:`收起左侧边栏(保持固定)`,unpinLeft:`取消固定左侧边栏`,pinLeftOpen:`固定并展开左侧边栏`,collapseRightKeepPinned:`收起右侧边栏(保持固定)`,unpinRight:`取消固定右侧边栏`,pinRightOpen:`固定并展开右侧边栏`},footer:{navigate:`导航`,select:`选择`,close:`关闭`}},t={queued:`{{name}} 已加入队列`,queuing:`正在将 {{name}} 加入队列...`},n={spawnFailed:`启动命令失败`},r={sections:{discovery:`探索`,discoverySubtitle:`探索并定义你的产品`,delivery:`交付`,deliverySubtitle:`构建并交付功能`,others:`其他`},displayNames:{proposeSpec:`自定义提案`,updateBacklog:`自动提案`,productBacklog:`自动选择 Spec`},emptyState:{title:`未安装命令`,hint:`在 Claude Code 中运行 <1>/setup</1> 以安装 specrails 命令`},runs_one:`{{count}} 次运行`,runs_other:`{{count}} 次运行`,tooltip:{opensWizard:`打开引导向导`}},i={title:`键盘快捷键`,subtitle:`在任意位置按 <1>?</1> 切换此面板`,categories:{general:`通用`,navigation:`导航`,actions:`操作`},items:{showCheatsheet:`显示键盘快捷键`,closeModal:`关闭弹窗 / 侧边栏`,toggleRightSidebar:`切换右侧边栏`,toggleLeftSidebar:`切换左侧边栏`,toggleTerminal:`切换终端面板`,toggleAgent:`切换智能体聊天`,navigateProjectPageWithAgents:`导航到项目页面(仪表盘/任务/分析/Agent/设置)`,navigateProjectPage:`导航到项目页面(仪表盘/任务/分析/设置)`,switchProject:`按位置切换项目`,goDashboard:`前往仪表盘`,goActivity:`前往活动 / 任务`,goAnalytics:`前往分析`,goSettings:`前往设置`,nextItem:`列表中的下一项`,prevItem:`列表中的上一项`}},a={title:{available:`有可用更新`,downloading:`正在下载更新`,installing:`正在安装更新`,ready:`更新已就绪`,error:`更新失败`},desc:{available:`Specrails 新版本已可安装。`,fetching:`正在获取 {{size}}…`,progress:`{{percent}}% · {{downloaded}} / {{total}}`,installing:`正在验证签名并完成…`,ready:`重启以启动版本 {{version}}。`,errorFallback:`无法完成更新。请重试。`},pill:{downloading:`下载中`,installing:`安装中`,ready:`已就绪`},actions:{restart:`重启`,later:`稍后`,update:`更新`,installing:`安装中…`,tryAgain:`重试`,dismiss:`忽略`},mockReady:`模拟更新已就绪 — 已跳过重启`,errors:{installFailed:`无法安装更新`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`任务已完成`,jobFailed:`任务失败`,jobStuck:`运行似乎卡住了`,jobStuckBody_one:`已有 {{count}} 分钟没有活动 — 打开查看`,jobStuckBody_other:`已有 {{count}} 分钟没有活动 — 打开查看`,unknownCommand:`未知命令`},s={emptyState:{title:`暂无模板。`,hint:`保存命令序列,一键运行。`},createButton:`创建模板`,newButton:`新建模板`,steps_one:`{{count}} 个步骤`,steps_other:`{{count}} 个步骤`,moreCommands_one:`+{{count}} 更多`,moreCommands_other:`+{{count}} 更多`,run:`运行`,queuing:`加入队列中…`,aria:{edit:`编辑模板`,delete:`删除模板`},confirmDelete:`删除模板“{{name}}”?`,toasts:{queuedJobs_one:`已从“{{name}}”将 {{count}} 个任务加入队列`,queuedJobs_other:`已从“{{name}}”将 {{count}} 个任务加入队列`,deleted:`模板“{{name}}”已删除`},errors:{runFailed:`运行模板失败`,deleteFailed:`删除模板失败`}},c={editTitle:`编辑模板`,newTitle:`新建模板`,nameLabel:`名称`,namePlaceholder:`例如:完整流水线`,descriptionLabel:`描述(可选)`,descriptionPlaceholder:`这个 Rail 做什么?`,stepsLabel:`步骤(命令或自由提示词)`,stepPlaceholder:`选择命令或输入自由提示词...`,aria:{moveUp:`上移`,removeStep:`移除步骤`},update:`更新`,create:`创建`,errors:{nameRequired:`名称为必填项`,stepRequired:`至少需要一个步骤`,saveFailed:`保存模板失败`},toasts:{updated:`模板已更新`,created:`模板已创建`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
@@ -1 +0,0 @@
1
- var e={label:`コマンドパレット`,searchPlaceholder:`プロジェクト、コマンド、ジョブを検索...`,noResults:`結果が見つかりません。`,activeBadge:`アクティブ`,groups:{projects:`プロジェクト`,spec:`スペック`,jobs:`ジョブ`,navigation:`ナビゲーション`},nav:{dashboard:`ダッシュボード`,desktopAnalytics:`Desktop 分析`,projectAnalytics:`プロジェクト分析`,activityFeed:`アクティビティフィード`,desktopSettings:`Desktop 設定`,docs:`ドキュメント`},sidebar:{collapseLeftKeepPinned:`左サイドバーを折りたたむ (ピン留めは維持)`,unpinLeft:`左サイドバーのピン留めを解除`,pinLeftOpen:`左サイドバーを開いた状態でピン留め`,collapseRightKeepPinned:`右サイドバーを折りたたむ (ピン留めは維持)`,unpinRight:`右サイドバーのピン留めを解除`,pinRightOpen:`右サイドバーを開いた状態でピン留め`},footer:{navigate:`移動`,select:`選択`,close:`閉じる`}},t={queued:`{{name}} をキューに追加しました`,queuing:`{{name}} をキューに追加中...`},n={spawnFailed:`コマンドの起動に失敗しました`},r={sections:{discovery:`ディスカバリー`,discoverySubtitle:`プロダクトを探索して定義`,delivery:`デリバリー`,deliverySubtitle:`機能を構築してリリース`,others:`その他`},displayNames:{proposeSpec:`カスタム提案`,updateBacklog:`自動提案`,productBacklog:`スペック自動選択`},emptyState:{title:`コマンドがインストールされていません`,hint:`Claude Code で <1>/setup</1> を実行して specrails コマンドをインストールしてください`},runs_one:`{{count}} 回実行`,runs_other:`{{count}} 回実行`,tooltip:{opensWizard:`ガイド付きウィザードを開きます`}},i={title:`キーボードショートカット`,subtitle:`どこでも <1>?</1> を押すとこのパネルを切り替えられます`,categories:{general:`一般`,navigation:`ナビゲーション`,actions:`アクション`},items:{showCheatsheet:`キーボードショートカットを表示`,closeModal:`モーダル / サイドバーを閉じる`,toggleRightSidebar:`右サイドバーの表示を切り替え`,toggleLeftSidebar:`左サイドバーの表示を切り替え`,toggleTerminal:`ターミナルパネルの表示を切り替え`,toggleAgent:`エージェントチャットの切り替え`,navigateProjectPageWithAgents:`プロジェクトページへ移動 (ダッシュボード/ジョブ/分析/エージェント/設定)`,navigateProjectPage:`プロジェクトページへ移動 (ダッシュボード/ジョブ/分析/設定)`,switchProject:`位置でプロジェクトを切り替え`,goDashboard:`ダッシュボードへ移動`,goActivity:`アクティビティ / ジョブへ移動`,goAnalytics:`分析へ移動`,goSettings:`設定へ移動`,nextItem:`リストの次の項目`,prevItem:`リストの前の項目`}},a={title:{available:`アップデートがあります`,downloading:`アップデートをダウンロード中`,installing:`アップデートをインストール中`,ready:`アップデート準備完了`,error:`アップデートに失敗しました`},desc:{available:`Specrails の新しいバージョンをインストールできます。`,fetching:`{{size}} を取得中…`,progress:`{{percent}}% · {{total}} 中 {{downloaded}}`,installing:`署名を検証して仕上げています…`,ready:`再起動するとバージョン {{version}} が起動します。`,errorFallback:`アップデートを完了できませんでした。もう一度お試しください。`},pill:{downloading:`ダウンロード中`,installing:`インストール中`,ready:`準備完了`},actions:{restart:`再起動`,later:`後で`,update:`アップデート`,installing:`インストール中…`,tryAgain:`再試行`,dismiss:`閉じる`},mockReady:`モックアップデート準備完了 — 再起動はスキップされました`,errors:{installFailed:`アップデートをインストールできませんでした`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`ジョブが完了しました`,jobFailed:`ジョブが失敗しました`,jobStuck:`実行が停止しているようです`,jobStuckBody_one:`{{count}} 分間 動きがありません — 開いて確認してください`,jobStuckBody_other:`{{count}} 分間 動きがありません — 開いて確認してください`,unknownCommand:`不明なコマンド`},s={emptyState:{title:`テンプレートはまだありません。`,hint:`コマンドの並びを保存してワンクリックで実行できます。`},createButton:`テンプレートを作成`,newButton:`新しいテンプレート`,steps_one:`{{count}} ステップ`,steps_other:`{{count}} ステップ`,moreCommands_one:`+{{count}} 件`,moreCommands_other:`+{{count}} 件`,run:`実行`,queuing:`キューに追加中…`,aria:{edit:`テンプレートを編集`,delete:`テンプレートを削除`},confirmDelete:`テンプレート「{{name}}」を削除しますか?`,toasts:{queuedJobs_one:`「{{name}}」から {{count}} 件のジョブをキューに追加しました`,queuedJobs_other:`「{{name}}」から {{count}} 件のジョブをキューに追加しました`,deleted:`テンプレート「{{name}}」を削除しました`},errors:{runFailed:`テンプレートの実行に失敗しました`,deleteFailed:`テンプレートの削除に失敗しました`}},c={editTitle:`テンプレートを編集`,newTitle:`新しいテンプレート`,nameLabel:`名前`,namePlaceholder:`例: フルパイプライン`,descriptionLabel:`説明 (任意)`,descriptionPlaceholder:`このレールは何をしますか?`,stepsLabel:`ステップ (コマンドまたは自由なプロンプト)`,stepPlaceholder:`コマンドを選択するか、自由なプロンプトを入力...`,aria:{moveUp:`上へ移動`,removeStep:`ステップを削除`},update:`更新`,create:`作成`,errors:{nameRequired:`名前は必須です`,stepRequired:`少なくとも 1 つのステップが必要です`,saveFailed:`テンプレートの保存に失敗しました`},toasts:{updated:`テンプレートを更新しました`,created:`テンプレートを作成しました`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
@@ -1 +0,0 @@
1
- var e={label:`Paleta de comandos`,searchPlaceholder:`Buscar proyectos, comandos, jobs...`,noResults:`Sin resultados.`,activeBadge:`activo`,groups:{projects:`Proyectos`,spec:`Spec`,jobs:`Jobs`,navigation:`Navegación`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Analíticas de Desktop`,projectAnalytics:`Analíticas del proyecto`,activityFeed:`Actividad`,desktopSettings:`Ajustes de Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Contraer barra lateral izquierda (mantener anclada)`,unpinLeft:`Desanclar barra lateral izquierda`,pinLeftOpen:`Anclar barra lateral izquierda abierta`,collapseRightKeepPinned:`Contraer barra lateral derecha (mantener anclada)`,unpinRight:`Desanclar barra lateral derecha`,pinRightOpen:`Anclar barra lateral derecha abierta`},footer:{navigate:`navegar`,select:`seleccionar`,close:`cerrar`}},t={queued:`{{name}} en cola`,queuing:`Encolando {{name}}...`},n={spawnFailed:`No se pudo lanzar el comando`},r={sections:{discovery:`Descubrimiento`,discoverySubtitle:`Explora y define tu producto`,delivery:`Entrega`,deliverySubtitle:`Construye y entrega funcionalidades`,others:`Otros`},displayNames:{proposeSpec:`Custom-Propose`,updateBacklog:`Auto-propose`,productBacklog:`Auto-Select Specs`},emptyState:{title:`No hay comandos instalados`,hint:`Ejecuta <1>/setup</1> en Claude Code para instalar los comandos de specrails`},runs_one:`{{count}} ejecución`,runs_other:`{{count}} ejecuciones`,tooltip:{opensWizard:`Abre el asistente guiado`}},i={title:`Atajos de teclado`,subtitle:`Pulsa <1>?</1> en cualquier parte para mostrar u ocultar este panel`,categories:{general:`General`,navigation:`Navegación`,actions:`Acciones`},items:{showCheatsheet:`Mostrar atajos de teclado`,closeModal:`Cerrar modal / barra lateral`,toggleRightSidebar:`Mostrar/ocultar barra lateral derecha`,toggleLeftSidebar:`Mostrar/ocultar barra lateral izquierda`,toggleTerminal:`Mostrar/ocultar panel del terminal`,toggleAgent:`Mostrar/ocultar chat del agente`,navigateProjectPageWithAgents:`Ir a una página del proyecto (Dashboard/Jobs/Analíticas/Agentes/Ajustes)`,navigateProjectPage:`Ir a una página del proyecto (Dashboard/Jobs/Analíticas/Ajustes)`,switchProject:`Cambiar de proyecto por posición`,goDashboard:`Ir al Dashboard`,goActivity:`Ir a Actividad / Jobs`,goAnalytics:`Ir a Analíticas`,goSettings:`Ir a Ajustes`,nextItem:`Siguiente elemento de la lista`,prevItem:`Elemento anterior de la lista`}},a={title:{available:`Actualización disponible`,downloading:`Descargando actualización`,installing:`Instalando actualización`,ready:`Actualización lista`,error:`Error al actualizar`},desc:{available:`Hay una nueva versión de Specrails lista para instalar.`,fetching:`Descargando {{size}}…`,progress:`{{percent}}% · {{downloaded}} de {{total}}`,installing:`Verificando la firma y terminando…`,ready:`Reinicia para abrir la versión {{version}}.`,errorFallback:`No se pudo completar la actualización. Inténtalo de nuevo.`},pill:{downloading:`Descargando`,installing:`Instalando`,ready:`Lista`},actions:{restart:`Reiniciar`,later:`Más tarde`,update:`Actualizar`,installing:`Instalando…`,tryAgain:`Reintentar`,dismiss:`Descartar`},mockReady:`Actualización simulada lista — reinicio omitido`,errors:{installFailed:`No se pudo instalar la actualización`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job completado`,jobFailed:`Job fallido`,jobStuck:`La ejecución parece atascada`,jobStuckBody_one:`Sin actividad desde {{count}} minuto — ábrela para comprobarlo`,jobStuckBody_other:`Sin actividad desde {{count}} minutos — ábrela para comprobarlo`,unknownCommand:`Comando desconocido`},s={emptyState:{title:`Aún no hay plantillas.`,hint:`Guarda secuencias de comandos para ejecutarlas con un clic.`},createButton:`Crear plantilla`,newButton:`Nueva plantilla`,steps_one:`{{count}} paso`,steps_other:`{{count}} pasos`,moreCommands_one:`+{{count}} más`,moreCommands_other:`+{{count}} más`,run:`Ejecutar`,queuing:`Encolando…`,aria:{edit:`Editar plantilla`,delete:`Eliminar plantilla`},confirmDelete:`¿Eliminar la plantilla "{{name}}"?`,toasts:{queuedJobs_one:`{{count}} job encolado desde "{{name}}"`,queuedJobs_other:`{{count}} jobs encolados desde "{{name}}"`,deleted:`Plantilla "{{name}}" eliminada`},errors:{runFailed:`No se pudo ejecutar la plantilla`,deleteFailed:`No se pudo eliminar la plantilla`}},c={editTitle:`Editar plantilla`,newTitle:`Nueva plantilla`,nameLabel:`Nombre`,namePlaceholder:`p. ej. Pipeline completo`,descriptionLabel:`Descripción (opcional)`,descriptionPlaceholder:`¿Qué hace este rail?`,stepsLabel:`Pasos (comandos o prompts libres)`,stepPlaceholder:`Selecciona un comando o escribe un prompt libre...`,aria:{moveUp:`Subir`,removeStep:`Quitar paso`},update:`Actualizar`,create:`Crear`,errors:{nameRequired:`El nombre es obligatorio`,stepRequired:`Se necesita al menos un paso`,saveFailed:`No se pudo guardar la plantilla`},toasts:{updated:`Plantilla actualizada`,created:`Plantilla creada`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
@@ -1 +0,0 @@
1
- var e={label:`Palette de commandes`,searchPlaceholder:`Rechercher projets, commandes, jobs...`,noResults:`Aucun résultat.`,activeBadge:`actif`,groups:{projects:`Projets`,spec:`Spec`,jobs:`Jobs`,navigation:`Navigation`},nav:{dashboard:`Tableau de bord`,desktopAnalytics:`Analytics de Desktop`,projectAnalytics:`Analytics du projet`,activityFeed:`Fil d'activité`,desktopSettings:`Paramètres de Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Replier la barre latérale gauche (garder épinglée)`,unpinLeft:`Désépingler la barre latérale gauche`,pinLeftOpen:`Épingler la barre latérale gauche ouverte`,collapseRightKeepPinned:`Replier la barre latérale droite (garder épinglée)`,unpinRight:`Désépingler la barre latérale droite`,pinRightOpen:`Épingler la barre latérale droite ouverte`},footer:{navigate:`naviguer`,select:`sélectionner`,close:`fermer`}},t={queued:`{{name}} ajouté à la file`,queuing:`Mise en file de {{name}}...`},n={spawnFailed:`Échec du lancement de la commande`},r={sections:{discovery:`Découverte`,discoverySubtitle:`Explorez et définissez votre produit`,delivery:`Livraison`,deliverySubtitle:`Construisez et livrez des fonctionnalités`,others:`Autres`},displayNames:{proposeSpec:`Proposition personnalisée`,updateBacklog:`Proposition auto`,productBacklog:`Sélection auto de specs`},emptyState:{title:`Aucune commande installée`,hint:`Exécutez <1>/setup</1> dans Claude Code pour installer les commandes specrails`},runs_one:`{{count}} exécution`,runs_other:`{{count}} exécutions`,tooltip:{opensWizard:`Ouvre l'assistant guidé`}},i={title:`Raccourcis clavier`,subtitle:`Appuyez sur <1>?</1> n'importe où pour afficher ou masquer ce panneau`,categories:{general:`Général`,navigation:`Navigation`,actions:`Actions`},items:{showCheatsheet:`Afficher les raccourcis clavier`,closeModal:`Fermer la modale / barre latérale`,toggleRightSidebar:`Afficher/masquer la barre latérale droite`,toggleLeftSidebar:`Afficher/masquer la barre latérale gauche`,toggleTerminal:`Afficher/masquer le panneau du terminal`,toggleAgent:`Afficher/masquer le chat de l'agent`,navigateProjectPageWithAgents:`Aller à une page du projet (Tableau de bord/Jobs/Analytics/Agents/Paramètres)`,navigateProjectPage:`Aller à une page du projet (Tableau de bord/Jobs/Analytics/Paramètres)`,switchProject:`Changer de projet par position`,goDashboard:`Aller au tableau de bord`,goActivity:`Aller à Activité / Jobs`,goAnalytics:`Aller à Analytics`,goSettings:`Aller aux paramètres`,nextItem:`Élément suivant dans la liste`,prevItem:`Élément précédent dans la liste`}},a={title:{available:`Mise à jour disponible`,downloading:`Téléchargement de la mise à jour`,installing:`Installation de la mise à jour`,ready:`Mise à jour prête`,error:`Échec de la mise à jour`},desc:{available:`Une nouvelle version de Specrails est prête à être installée.`,fetching:`Récupération de {{size}}…`,progress:`{{percent}} % · {{downloaded}} sur {{total}}`,installing:`Vérification de la signature et finalisation…`,ready:`Redémarrez pour lancer la version {{version}}.`,errorFallback:`Impossible de terminer la mise à jour. Veuillez réessayer.`},pill:{downloading:`Téléchargement`,installing:`Installation`,ready:`Prête`},actions:{restart:`Redémarrer`,later:`Plus tard`,update:`Mettre à jour`,installing:`Installation…`,tryAgain:`Réessayer`,dismiss:`Ignorer`},mockReady:`Mise à jour factice prête — redémarrage ignoré`,errors:{installFailed:`Impossible d'installer la mise à jour`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job terminé`,jobFailed:`Job en échec`,jobStuck:`L'exécution semble bloquée`,jobStuckBody_one:`Aucune activité depuis {{count}} minute — ouvrez-la pour vérifier`,jobStuckBody_other:`Aucune activité depuis {{count}} minutes — ouvrez-la pour vérifier`,unknownCommand:`Commande inconnue`},s={emptyState:{title:`Aucun template pour l'instant.`,hint:`Enregistrez des séquences de commandes pour les lancer en un clic.`},createButton:`Créer un template`,newButton:`Nouveau template`,steps_one:`{{count}} étape`,steps_other:`{{count}} étapes`,moreCommands_one:`+{{count}} de plus`,moreCommands_other:`+{{count}} de plus`,run:`Lancer`,queuing:`Mise en file…`,aria:{edit:`Modifier le template`,delete:`Supprimer le template`},confirmDelete:`Supprimer le template « {{name}} » ?`,toasts:{queuedJobs_one:`{{count}} job mis en file depuis « {{name}} »`,queuedJobs_other:`{{count}} jobs mis en file depuis « {{name}} »`,deleted:`Template « {{name}} » supprimé`},errors:{runFailed:`Échec du lancement du template`,deleteFailed:`Échec de la suppression du template`}},c={editTitle:`Modifier le template`,newTitle:`Nouveau template`,nameLabel:`Nom`,namePlaceholder:`ex. Pipeline complet`,descriptionLabel:`Description (facultatif)`,descriptionPlaceholder:`Que fait ce rail ?`,stepsLabel:`Étapes (commandes ou prompts libres)`,stepPlaceholder:`Sélectionnez une commande ou saisissez un prompt libre...`,aria:{moveUp:`Monter`,removeStep:`Supprimer l'étape`},update:`Mettre à jour`,create:`Créer`,errors:{nameRequired:`Le nom est requis`,stepRequired:`Au moins une étape est requise`,saveFailed:`Échec de l'enregistrement du template`},toasts:{updated:`Template mis à jour`,created:`Template créé`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
@@ -1 +0,0 @@
1
- var e={label:`Palette comandi`,searchPlaceholder:`Cerca progetti, comandi, job...`,noResults:`Nessun risultato trovato.`,activeBadge:`attivo`,groups:{projects:`Progetti`,spec:`Spec`,jobs:`Job`,navigation:`Navigazione`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Analytics di Desktop`,projectAnalytics:`Analytics del progetto`,activityFeed:`Feed attività`,desktopSettings:`Impostazioni Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Comprimi barra laterale sinistra (mantieni fissata)`,unpinLeft:`Sblocca barra laterale sinistra`,pinLeftOpen:`Fissa aperta la barra laterale sinistra`,collapseRightKeepPinned:`Comprimi barra laterale destra (mantieni fissata)`,unpinRight:`Sblocca barra laterale destra`,pinRightOpen:`Fissa aperta la barra laterale destra`},footer:{navigate:`naviga`,select:`seleziona`,close:`chiudi`}},t={queued:`{{name}} in coda`,queuing:`Accodamento di {{name}}...`},n={spawnFailed:`Impossibile avviare il comando`},r={sections:{discovery:`Discovery`,discoverySubtitle:`Esplora e definisci il tuo prodotto`,delivery:`Delivery`,deliverySubtitle:`Costruisci e rilascia funzionalità`,others:`Altri`},displayNames:{proposeSpec:`Proposta personalizzata`,updateBacklog:`Auto-proposta`,productBacklog:`Auto-selezione spec`},emptyState:{title:`Nessun comando installato`,hint:`Esegui <1>/setup</1> in Claude Code per installare i comandi specrails`},runs_one:`{{count}} esecuzione`,runs_other:`{{count}} esecuzioni`,tooltip:{opensWizard:`Apre la procedura guidata`}},i={title:`Scorciatoie da tastiera`,subtitle:`Premi <1>?</1> ovunque per mostrare o nascondere questo pannello`,categories:{general:`Generale`,navigation:`Navigazione`,actions:`Azioni`},items:{showCheatsheet:`Mostra scorciatoie da tastiera`,closeModal:`Chiudi modale / barra laterale`,toggleRightSidebar:`Mostra/nascondi barra laterale destra`,toggleLeftSidebar:`Mostra/nascondi barra laterale sinistra`,toggleTerminal:`Mostra/nascondi pannello terminale`,toggleAgent:`Mostra/nascondi chat dell'agente`,navigateProjectPageWithAgents:`Vai alla pagina del progetto (Dashboard/Job/Analytics/Agenti/Impostazioni)`,navigateProjectPage:`Vai alla pagina del progetto (Dashboard/Job/Analytics/Impostazioni)`,switchProject:`Passa al progetto per posizione`,goDashboard:`Vai alla Dashboard`,goActivity:`Vai ad Attività / Job`,goAnalytics:`Vai ad Analytics`,goSettings:`Vai alle Impostazioni`,nextItem:`Elemento successivo nell'elenco`,prevItem:`Elemento precedente nell'elenco`}},a={title:{available:`Aggiornamento disponibile`,downloading:`Download dell'aggiornamento`,installing:`Installazione dell'aggiornamento`,ready:`Aggiornamento pronto`,error:`Aggiornamento non riuscito`},desc:{available:`Una nuova versione di Specrails è pronta per l'installazione.`,fetching:`Recupero di {{size}}…`,progress:`{{percent}}% · {{downloaded}} di {{total}}`,installing:`Verifica della firma e completamento…`,ready:`Riavvia per avviare la versione {{version}}.`,errorFallback:`Impossibile completare l'aggiornamento. Riprova.`},pill:{downloading:`Download`,installing:`Installazione`,ready:`Pronto`},actions:{restart:`Riavvia`,later:`Più tardi`,update:`Aggiorna`,installing:`Installazione…`,tryAgain:`Riprova`,dismiss:`Ignora`},mockReady:`Aggiornamento mock pronto — riavvio saltato`,errors:{installFailed:`Impossibile installare l'aggiornamento`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job completato`,jobFailed:`Job non riuscito`,jobStuck:`L'esecuzione sembra bloccata`,jobStuckBody_one:`Nessuna attività da {{count}} minuto — aprila per controllare`,jobStuckBody_other:`Nessuna attività da {{count}} minuti — aprila per controllare`,unknownCommand:`Comando sconosciuto`},s={emptyState:{title:`Ancora nessun template.`,hint:`Salva sequenze di comandi per eseguirle con un clic.`},createButton:`Crea template`,newButton:`Nuovo template`,steps_one:`{{count}} passaggio`,steps_other:`{{count}} passaggi`,moreCommands_one:`+{{count}} altro`,moreCommands_other:`+{{count}} altri`,run:`Esegui`,queuing:`Accodamento…`,aria:{edit:`Modifica template`,delete:`Elimina template`},confirmDelete:`Eliminare il template "{{name}}"?`,toasts:{queuedJobs_one:`{{count}} job accodato da "{{name}}"`,queuedJobs_other:`{{count}} job accodati da "{{name}}"`,deleted:`Template "{{name}}" eliminato`},errors:{runFailed:`Impossibile eseguire il template`,deleteFailed:`Impossibile eliminare il template`}},c={editTitle:`Modifica template`,newTitle:`Nuovo template`,nameLabel:`Nome`,namePlaceholder:`es. Pipeline completa`,descriptionLabel:`Descrizione (facoltativa)`,descriptionPlaceholder:`Cosa fa questo rail?`,stepsLabel:`Passaggi (comandi o prompt liberi)`,stepPlaceholder:`Seleziona un comando o scrivi un prompt libero...`,aria:{moveUp:`Sposta su`,removeStep:`Rimuovi passaggio`},update:`Aggiorna`,create:`Crea`,errors:{nameRequired:`Il nome è obbligatorio`,stepRequired:`Serve almeno un passaggio`,saveFailed:`Impossibile salvare il template`},toasts:{updated:`Template aggiornato`,created:`Template creato`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
@@ -1 +0,0 @@
1
- var e={save:`Speichern`,cancel:`Abbrechen`,close:`Schließen`,delete:`Löschen`,confirm:`Bestätigen`,retry:`Wiederholen`,search:`Suchen`,copy:`Kopieren`,copied:`Kopiert`,back:`Zurück`,next:`Weiter`,done:`Fertig`,open:`Öffnen`,add:`Hinzufügen`,remove:`Entfernen`,edit:`Bearbeiten`,rename:`Umbenennen`,duplicate:`Duplizieren`,refresh:`Aktualisieren`,export:`Exportieren`,discard:`Verwerfen`,minimize:`Minimieren`,expand:`Ausklappen`,collapse:`Einklappen`,viewAll:`Alle anzeigen`,learnMore:`Mehr erfahren`},t={loading:`Wird geladen…`,saving:`Wird gespeichert…`,error:`Fehler`,empty:`Keine Daten`,none:`Keine`,unknown:`Unbekannt`,yes:`Ja`,no:`Nein`,on:`Ein`,off:`Aus`,enabled:`Aktiviert`,disabled:`Deaktiviert`},n={queued:`In Warteschlange`,running:`Läuft`,completed:`Abgeschlossen`,failed:`Fehlgeschlagen`,canceled:`Abgebrochen`,draft:`Entwurf`,onReview:`In Prüfung`},r={implementation_running:`Implementierung läuft`,implementation_failed:`Implementierung fehlgeschlagen`,ready_for_review:`Bereit zur Prüfung`,partial_success:`Teilweise implementiert`,partial_delivery:`Teillieferung bereit`,existing_pr_updated:`Bestehender PR aktualisiert`,no_changes:`Keine Änderungen erforderlich`,commit_failed:`Commit-Schritt fehlgeschlagen`,branch_verification_failed:`Branch-Prüfung fehlgeschlagen`,push_failed:`Push fehlgeschlagen`,settlement_interrupted:`Vorbereitung der Lieferung unterbrochen`,recovery_unavailable:`Auf diesem Computer konnte kein eindeutiges wiederherstellbares Ergebnis nachgewiesen werden`,operation_interrupted:`Vorherige Lieferaktion unterbrochen`,delivery_failed:`Lieferung fehlgeschlagen`,pr_draft_ready:`PR-Entwurf bereit`,pr_ready:`PR bereit`,pr_closed:`PR ohne Merge geschlossen`,merged:`Zusammengeführt`,discarded:`Verworfen`,superseded:`Durch einen neueren Lauf ersetzt`,cleanup_incomplete:`Bereinigung unvollständig`,status_failed:`Worktree-Statusprüfung fehlgeschlagen`,ref_mismatch:`Branch-Referenz stimmt nicht überein`},i={inProgress:`Die Projektwiederherstellung läuft noch. Deine Lieferung ist sicher – versuche es gleich noch einmal.`,interrupted:`Eine frühere Lieferaktion wurde beim Neustart unterbrochen. Deine Arbeit wurde erhalten; prüfe den aktuellen Stand und versuche es erneut, wenn du bereit bist.`},a={resize:{nw:`Größe ändern — obere linke Ecke`,n:`Größe ändern — obere Kante`,ne:`Größe ändern — obere rechte Ecke`,e:`Größe ändern — rechte Kante`,se:`Größe ändern — untere rechte Ecke`,s:`Größe ändern — untere Kante`,sw:`Größe ändern — untere linke Ecke`,w:`Größe ändern — linke Kante`},resetPosition:`Position zurücksetzen`},o={actions:e,states:t,status:n,prDeliveryStatus:r,prRecovery:i,modal:a};export{e as actions,o as default,a as modal,r as prDeliveryStatus,i as prRecovery,t as states,n as status};
@@ -1 +0,0 @@
1
- var e={save:`Guardar`,cancel:`Cancelar`,close:`Fechar`,delete:`Eliminar`,confirm:`Confirmar`,retry:`Repetir`,search:`Pesquisar`,copy:`Copiar`,copied:`Copiado`,back:`Voltar`,next:`Seguinte`,done:`Concluído`,open:`Abrir`,add:`Adicionar`,remove:`Remover`,edit:`Editar`,rename:`Renomear`,duplicate:`Duplicar`,refresh:`Atualizar`,export:`Exportar`,discard:`Descartar`,minimize:`Minimizar`,expand:`Expandir`,collapse:`Recolher`,viewAll:`Ver tudo`,learnMore:`Saber mais`},t={loading:`A carregar…`,saving:`A guardar…`,error:`Erro`,empty:`Sem dados`,none:`Nenhum`,unknown:`Desconhecido`,yes:`Sim`,no:`Não`,on:`Ligado`,off:`Desligado`,enabled:`Ativado`,disabled:`Desativado`},n={queued:`Em fila`,running:`Em execução`,completed:`Concluído`,failed:`Falhou`,canceled:`Cancelado`,draft:`Rascunho`,onReview:`Em revisão`},r={implementation_running:`Implementação em andamento`,implementation_failed:`Implementação falhou`,ready_for_review:`Pronta para revisão`,partial_success:`Implementação parcial`,partial_delivery:`Entrega parcial pronta`,existing_pr_updated:`PR existente atualizada`,no_changes:`Nenhuma alteração necessária`,commit_failed:`Falha na etapa de commit`,branch_verification_failed:`Falha na verificação do branch`,push_failed:`Falha no push`,settlement_interrupted:`Preparação da entrega interrompida`,recovery_unavailable:`Não foi possível comprovar um único resultado recuperável neste computador`,operation_interrupted:`Ação de entrega anterior interrompida`,delivery_failed:`Falha na entrega`,pr_draft_ready:`Rascunho da PR pronto`,pr_ready:`PR pronta`,pr_closed:`PR fechada sem merge`,merged:`Merge concluído`,discarded:`Descartada`,superseded:`Substituída por uma execução mais recente`,cleanup_incomplete:`Limpeza incompleta`,status_failed:`Falha na verificação do estado do worktree`,ref_mismatch:`A referência do branch não corresponde`},i={inProgress:`A recuperação do projeto ainda está em andamento. Sua entrega está segura; tente novamente em instantes.`,interrupted:`Uma ação de entrega anterior foi interrompida durante a reinicialização. Seu trabalho foi preservado; revise o estado atual e tente novamente quando estiver pronto.`},a={resize:{nw:`Redimensionar — canto superior esquerdo`,n:`Redimensionar — borda superior`,ne:`Redimensionar — canto superior direito`,e:`Redimensionar — borda direita`,se:`Redimensionar — canto inferior direito`,s:`Redimensionar — borda inferior`,sw:`Redimensionar — canto inferior esquerdo`,w:`Redimensionar — borda esquerda`},resetPosition:`Repor posição`},o={actions:e,states:t,status:n,prDeliveryStatus:r,prRecovery:i,modal:a};export{e as actions,o as default,a as modal,r as prDeliveryStatus,i as prRecovery,t as states,n as status};
@@ -1 +0,0 @@
1
- var e={save:`保存`,cancel:`キャンセル`,close:`閉じる`,delete:`削除`,confirm:`確認`,retry:`再試行`,search:`検索`,copy:`コピー`,copied:`コピーしました`,back:`戻る`,next:`次へ`,done:`完了`,open:`開く`,add:`追加`,remove:`削除`,edit:`編集`,rename:`名前を変更`,duplicate:`複製`,refresh:`更新`,export:`エクスポート`,discard:`破棄`,minimize:`最小化`,expand:`展開`,collapse:`折りたたむ`,viewAll:`すべて表示`,learnMore:`詳細`},t={loading:`読み込み中…`,saving:`保存中…`,error:`エラー`,empty:`データなし`,none:`なし`,unknown:`不明`,yes:`はい`,no:`いいえ`,on:`オン`,off:`オフ`,enabled:`有効`,disabled:`無効`},n={queued:`キュー待ち`,running:`実行中`,completed:`完了`,failed:`失敗`,canceled:`キャンセル済み`,draft:`下書き`,onReview:`レビュー中`},r={implementation_running:`実装を実行中`,implementation_failed:`実装に失敗`,ready_for_review:`レビュー準備完了`,partial_success:`一部を実装済み`,partial_delivery:`部分配信の準備完了`,existing_pr_updated:`既存の PR を更新済み`,no_changes:`変更不要`,commit_failed:`コミット段階に失敗`,branch_verification_failed:`ブランチ検証に失敗`,push_failed:`プッシュに失敗`,settlement_interrupted:`配信準備が中断されました`,recovery_unavailable:`このコンピューターでは復旧可能な結果を 1 つに特定できませんでした`,operation_interrupted:`以前の配信操作が中断されました`,delivery_failed:`配信に失敗`,pr_draft_ready:`PR 下書きの準備完了`,pr_ready:`PR の準備完了`,pr_closed:`PR はマージされずにクローズ`,merged:`マージ済み`,discarded:`破棄済み`,superseded:`新しい実行に置換済み`,cleanup_incomplete:`クリーンアップが不完全`,status_failed:`worktree の状態確認に失敗`,ref_mismatch:`ブランチ参照が一致しません`},i={inProgress:`プロジェクトの復旧が進行中です。配信内容は安全に保たれています。しばらくしてから再試行してください。`,interrupted:`再起動中に以前の配信操作が中断されました。作業内容は保持されています。現在の状態を確認し、準備ができたら再試行してください。`},a={resize:{nw:`サイズ変更 — 左上隅`,n:`サイズ変更 — 上端`,ne:`サイズ変更 — 右上隅`,e:`サイズ変更 — 右端`,se:`サイズ変更 — 右下隅`,s:`サイズ変更 — 下端`,sw:`サイズ変更 — 左下隅`,w:`サイズ変更 — 左端`},resetPosition:`位置をリセット`},o={actions:e,states:t,status:n,prDeliveryStatus:r,prRecovery:i,modal:a};export{e as actions,o as default,a as modal,r as prDeliveryStatus,i as prRecovery,t as states,n as status};
@@ -1 +0,0 @@
1
- var e={save:`Guardar`,cancel:`Cancelar`,close:`Cerrar`,delete:`Eliminar`,confirm:`Confirmar`,retry:`Reintentar`,search:`Buscar`,copy:`Copiar`,copied:`Copiado`,back:`Atrás`,next:`Siguiente`,done:`Hecho`,open:`Abrir`,add:`Añadir`,remove:`Quitar`,edit:`Editar`,rename:`Renombrar`,duplicate:`Duplicar`,refresh:`Actualizar`,export:`Exportar`,discard:`Descartar`,minimize:`Minimizar`,expand:`Expandir`,collapse:`Contraer`,viewAll:`Ver todo`,learnMore:`Más información`},t={loading:`Cargando…`,saving:`Guardando…`,error:`Error`,empty:`Sin datos`,none:`Ninguno`,unknown:`Desconocido`,yes:`Sí`,no:`No`,on:`Activado`,off:`Desactivado`,enabled:`Habilitado`,disabled:`Deshabilitado`},n={queued:`En cola`,running:`En ejecución`,completed:`Completado`,failed:`Fallido`,canceled:`Cancelado`,draft:`Borrador`,onReview:`En revisión`},r={implementation_running:`Implementación en curso`,implementation_failed:`Implementación fallida`,ready_for_review:`Lista para revisión`,partial_success:`Implementación parcial`,partial_delivery:`Entrega parcial lista`,existing_pr_updated:`PR existente actualizada`,no_changes:`No se requieren cambios`,commit_failed:`Falló la etapa de commit`,branch_verification_failed:`Falló la verificación de la rama`,push_failed:`Falló el push`,settlement_interrupted:`Se interrumpió la preparación de la entrega`,recovery_unavailable:`No se ha podido demostrar un único resultado recuperable en este equipo`,operation_interrupted:`Acción de entrega anterior interrumpida`,delivery_failed:`La entrega falló`,pr_draft_ready:`PR en borrador lista`,pr_ready:`PR lista`,pr_closed:`PR cerrada sin merge`,merged:`Merge completado`,discarded:`Descartada`,superseded:`Sustituida por una ejecución más reciente`,cleanup_incomplete:`Limpieza incompleta`,status_failed:`Falló la comprobación del estado del worktree`,ref_mismatch:`La referencia de la rama no coincide`},i={inProgress:`La recuperación del proyecto sigue en curso. Tu entrega está a salvo; vuelve a intentarlo en unos instantes.`,interrupted:`Una acción de entrega anterior se interrumpió durante el reinicio. Tu trabajo se conservó; revisa el estado actual y vuelve a intentarlo cuando quieras.`},a={resize:{nw:`Redimensionar — esquina superior izquierda`,n:`Redimensionar — borde superior`,ne:`Redimensionar — esquina superior derecha`,e:`Redimensionar — borde derecho`,se:`Redimensionar — esquina inferior derecha`,s:`Redimensionar — borde inferior`,sw:`Redimensionar — esquina inferior izquierda`,w:`Redimensionar — borde izquierdo`},resetPosition:`Restablecer posición`},o={actions:e,states:t,status:n,prDeliveryStatus:r,prRecovery:i,modal:a};export{e as actions,o as default,a as modal,r as prDeliveryStatus,i as prRecovery,t as states,n as status};
@@ -1 +0,0 @@
1
- var e={save:`Enregistrer`,cancel:`Annuler`,close:`Fermer`,delete:`Supprimer`,confirm:`Confirmer`,retry:`Réessayer`,search:`Rechercher`,copy:`Copier`,copied:`Copié`,back:`Retour`,next:`Suivant`,done:`Terminé`,open:`Ouvrir`,add:`Ajouter`,remove:`Retirer`,edit:`Modifier`,rename:`Renommer`,duplicate:`Dupliquer`,refresh:`Actualiser`,export:`Exporter`,discard:`Abandonner`,minimize:`Réduire`,expand:`Déplier`,collapse:`Replier`,viewAll:`Tout voir`,learnMore:`En savoir plus`},t={loading:`Chargement…`,saving:`Enregistrement…`,error:`Erreur`,empty:`Aucune donnée`,none:`Aucun`,unknown:`Inconnu`,yes:`Oui`,no:`Non`,on:`Activé`,off:`Désactivé`,enabled:`Activé`,disabled:`Désactivé`},n={queued:`En attente`,running:`En cours`,completed:`Terminé`,failed:`Échec`,canceled:`Annulé`,draft:`Brouillon`,onReview:`En révision`},r={implementation_running:`Implémentation en cours`,implementation_failed:`Échec de l’implémentation`,ready_for_review:`Prête pour la revue`,partial_success:`Implémentation partielle`,partial_delivery:`Livraison partielle prête`,existing_pr_updated:`PR existante mise à jour`,no_changes:`Aucune modification nécessaire`,commit_failed:`Échec de l’étape de commit`,branch_verification_failed:`Échec de la vérification de la branche`,push_failed:`Échec du push`,settlement_interrupted:`Préparation de la livraison interrompue`,recovery_unavailable:`Aucun résultat récupérable unique n’a pu être démontré sur cet ordinateur`,operation_interrupted:`Action de livraison précédente interrompue`,delivery_failed:`Échec de la livraison`,pr_draft_ready:`Brouillon de PR prêt`,pr_ready:`PR prête`,pr_closed:`PR fermée sans fusion`,merged:`Fusionnée`,discarded:`Supprimée`,superseded:`Remplacée par une exécution plus récente`,cleanup_incomplete:`Nettoyage incomplet`,status_failed:`Échec de la vérification de l’état du worktree`,ref_mismatch:`La référence de branche ne correspond pas`},i={inProgress:`La récupération du projet est toujours en cours. Votre livraison est en sécurité ; réessayez dans un instant.`,interrupted:`Une action de livraison précédente a été interrompue lors du redémarrage. Votre travail a été préservé ; vérifiez l’état actuel et réessayez quand vous êtes prêt.`},a={resize:{nw:`Redimensionner — coin supérieur gauche`,n:`Redimensionner — bord supérieur`,ne:`Redimensionner — coin supérieur droit`,e:`Redimensionner — bord droit`,se:`Redimensionner — coin inférieur droit`,s:`Redimensionner — bord inférieur`,sw:`Redimensionner — coin inférieur gauche`,w:`Redimensionner — bord gauche`},resetPosition:`Réinitialiser la position`},o={actions:e,states:t,status:n,prDeliveryStatus:r,prRecovery:i,modal:a};export{e as actions,o as default,a as modal,r as prDeliveryStatus,i as prRecovery,t as states,n as status};
@@ -1 +0,0 @@
1
- var e={save:`Salva`,cancel:`Annulla`,close:`Chiudi`,delete:`Elimina`,confirm:`Conferma`,retry:`Riprova`,search:`Cerca`,copy:`Copia`,copied:`Copiato`,back:`Indietro`,next:`Avanti`,done:`Fatto`,open:`Apri`,add:`Aggiungi`,remove:`Rimuovi`,edit:`Modifica`,rename:`Rinomina`,duplicate:`Duplica`,refresh:`Aggiorna`,export:`Esporta`,discard:`Scarta`,minimize:`Riduci`,expand:`Espandi`,collapse:`Comprimi`,viewAll:`Vedi tutto`,learnMore:`Scopri di più`},t={loading:`Caricamento…`,saving:`Salvataggio…`,error:`Errore`,empty:`Nessun dato`,none:`Nessuno`,unknown:`Sconosciuto`,yes:`Sì`,no:`No`,on:`On`,off:`Off`,enabled:`Abilitato`,disabled:`Disabilitato`},n={queued:`In coda`,running:`In esecuzione`,completed:`Completato`,failed:`Non riuscito`,canceled:`Annullato`,draft:`Bozza`,onReview:`In revisione`},r={implementation_running:`Implementazione in corso`,implementation_failed:`Implementazione non riuscita`,ready_for_review:`Pronta per la revisione`,partial_success:`Implementazione parziale`,partial_delivery:`Consegna parziale pronta`,existing_pr_updated:`PR esistente aggiornata`,no_changes:`Nessuna modifica necessaria`,commit_failed:`Fase di commit non riuscita`,branch_verification_failed:`Verifica del branch non riuscita`,push_failed:`Push non riuscito`,settlement_interrupted:`Preparazione della consegna interrotta`,recovery_unavailable:`Non è stato possibile dimostrare un unico risultato recuperabile su questo computer`,operation_interrupted:`Azione di consegna precedente interrotta`,delivery_failed:`Consegna non riuscita`,pr_draft_ready:`Bozza PR pronta`,pr_ready:`PR pronta`,pr_closed:`PR chiusa senza merge`,merged:`Merge completato`,discarded:`Eliminata`,superseded:`Sostituita da un’esecuzione più recente`,cleanup_incomplete:`Pulizia incompleta`,status_failed:`Controllo dello stato del worktree non riuscito`,ref_mismatch:`Il riferimento del branch non corrisponde`},i={inProgress:`Il ripristino del progetto è ancora in corso. La consegna è al sicuro; riprova tra poco.`,interrupted:`Un’azione di consegna precedente è stata interrotta durante il riavvio. Il lavoro è stato preservato; controlla lo stato attuale e riprova quando vuoi.`},a={resize:{nw:`Ridimensiona — angolo in alto a sinistra`,n:`Ridimensiona — bordo superiore`,ne:`Ridimensiona — angolo in alto a destra`,e:`Ridimensiona — bordo destro`,se:`Ridimensiona — angolo in basso a destra`,s:`Ridimensiona — bordo inferiore`,sw:`Ridimensiona — angolo in basso a sinistra`,w:`Ridimensiona — bordo sinistro`},resetPosition:`Reimposta posizione`},o={actions:e,states:t,status:n,prDeliveryStatus:r,prRecovery:i,modal:a};export{e as actions,o as default,a as modal,r as prDeliveryStatus,i as prRecovery,t as states,n as status};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({actions:()=>n,default:()=>c,modal:()=>s,prDeliveryStatus:()=>a,prRecovery:()=>o,states:()=>r,status:()=>i}),n={save:`Save`,cancel:`Cancel`,close:`Close`,delete:`Delete`,confirm:`Confirm`,retry:`Retry`,search:`Search`,copy:`Copy`,copied:`Copied`,back:`Back`,next:`Next`,done:`Done`,open:`Open`,add:`Add`,remove:`Remove`,edit:`Edit`,rename:`Rename`,duplicate:`Duplicate`,refresh:`Refresh`,export:`Export`,discard:`Discard`,minimize:`Minimize`,expand:`Expand`,collapse:`Collapse`,viewAll:`View all`,learnMore:`Learn more`},r={loading:`Loading…`,saving:`Saving…`,error:`Error`,empty:`No data`,none:`None`,unknown:`Unknown`,yes:`Yes`,no:`No`,on:`On`,off:`Off`,enabled:`Enabled`,disabled:`Disabled`},i={queued:`Queued`,running:`Running`,completed:`Completed`,failed:`Failed`,canceled:`Canceled`,draft:`Draft`,onReview:`On Review`},a={implementation_running:`Implementation running`,implementation_failed:`Implementation failed`,ready_for_review:`Ready for review`,partial_success:`Partial implementation`,partial_delivery:`Partial delivery ready`,existing_pr_updated:`Existing PR updated`,no_changes:`No changes required`,commit_failed:`Commit step failed`,branch_verification_failed:`Branch verification failed`,push_failed:`Push failed`,settlement_interrupted:`Delivery settlement interrupted`,recovery_unavailable:`No single recoverable result could be proven on this computer`,operation_interrupted:`Previous delivery action interrupted`,delivery_failed:`Delivery failed`,pr_draft_ready:`Draft PR ready`,pr_ready:`PR ready`,pr_closed:`PR closed without merge`,merged:`Merged`,discarded:`Discarded`,superseded:`Replaced by a newer run`,cleanup_incomplete:`Cleanup incomplete`,status_failed:`Worktree status check failed`,ref_mismatch:`Branch reference mismatch`},o={inProgress:`Project recovery is still in progress. Your delivery is safe — retry in a moment.`,interrupted:`A previous delivery action was interrupted during restart. Your work was preserved; review the current state and retry when ready.`},s={resize:{nw:`Resize modal — top-left corner`,n:`Resize modal — top edge`,ne:`Resize modal — top-right corner`,e:`Resize modal — right edge`,se:`Resize modal — bottom-right corner`,s:`Resize modal — bottom edge`,sw:`Resize modal — bottom-left corner`,w:`Resize modal — left edge`},resetPosition:`Reset modal position`},c={actions:n,states:r,status:i,prDeliveryStatus:a,prRecovery:o,modal:s};export{t};
@@ -1 +0,0 @@
1
- var e={save:`保存`,cancel:`取消`,close:`关闭`,delete:`删除`,confirm:`确认`,retry:`重试`,search:`搜索`,copy:`复制`,copied:`已复制`,back:`返回`,next:`下一步`,done:`完成`,open:`打开`,add:`添加`,remove:`移除`,edit:`编辑`,rename:`重命名`,duplicate:`创建副本`,refresh:`刷新`,export:`导出`,discard:`丢弃`,minimize:`最小化`,expand:`展开`,collapse:`收起`,viewAll:`查看全部`,learnMore:`了解更多`},t={loading:`加载中…`,saving:`保存中…`,error:`错误`,empty:`暂无数据`,none:`无`,unknown:`未知`,yes:`是`,no:`否`,on:`开`,off:`关`,enabled:`已启用`,disabled:`已禁用`},n={queued:`已排队`,running:`运行中`,completed:`已完成`,failed:`失败`,canceled:`已取消`,draft:`草稿`,onReview:`评审中`},r={implementation_running:`实现进行中`,implementation_failed:`实现失败`,ready_for_review:`已可审查`,partial_success:`部分实现完成`,partial_delivery:`部分交付已就绪`,existing_pr_updated:`现有 PR 已更新`,no_changes:`无需更改`,commit_failed:`提交阶段失败`,branch_verification_failed:`分支验证失败`,push_failed:`推送失败`,settlement_interrupted:`交付准备被中断`,recovery_unavailable:`无法在此计算机上证明唯一的可恢复结果`,operation_interrupted:`上一次交付操作已中断`,delivery_failed:`交付失败`,pr_draft_ready:`PR 草稿已就绪`,pr_ready:`PR 已就绪`,pr_closed:`PR 已关闭但未合并`,merged:`已合并`,discarded:`已丢弃`,superseded:`已被较新的运行取代`,cleanup_incomplete:`清理未完成`,status_failed:`worktree 状态检查失败`,ref_mismatch:`分支引用不匹配`},i={inProgress:`项目恢复仍在进行中。你的交付内容是安全的,请稍后重试。`,interrupted:`上一次交付操作在重启期间被中断。你的工作已保留;请检查当前状态,并在准备好后重试。`},a={resize:{nw:`调整大小 — 左上角`,n:`调整大小 — 顶边`,ne:`调整大小 — 右上角`,e:`调整大小 — 右边`,se:`调整大小 — 右下角`,s:`调整大小 — 底边`,sw:`调整大小 — 左下角`,w:`调整大小 — 左边`},resetPosition:`重置位置`},o={actions:e,states:t,status:n,prDeliveryStatus:r,prRecovery:i,modal:a};export{e as actions,o as default,a as modal,r as prDeliveryStatus,i as prRecovery,t as states,n as status};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({default:()=>f,freestyleDialog:()=>l,launchAll:()=>a,launchAllDialog:()=>o,railControls:()=>s,railPr:()=>r,railRow:()=>c,railsBoard:()=>i,targetPr:()=>d,toasts:()=>n,useRails:()=>u}),n={railAdded:`Rail {{n}} added`,railRemoved:`{{rail}} removed`,railLimitReached:`Rail limit reached ({{max}} max)`,railDeleteFailed:`Couldn't remove the rail — it holds specs, is running, or has a pending PR decision`,launchTicketsInFlight:`A spec on this rail is already being worked by an active run`,launchTicketCap:`This rail has {{count}} specs — a launch takes at most {{max}} per rail. Split them across rails.`,launchAllSummary_one:`{{count}} rail launched in parallel`,launchAllSummary_other:`{{count}} rails launched in parallel`,launchAllNoneEligible:`No rails ready to launch — assign specs to an idle rail first`,launchAllFailed:`No rails could be launched`,railCompleted:`Rail {{n}} completed`,railFailed:`Rail {{n}} failed — specs returned to Specs`,railEnded:`Rail {{n}} {{status}} — specs returned to Specs`,alreadyOnRail:`Already on {{rail}}`,movedToRail:`Moved to {{rail}}`,railRunningStopFirst:`{{rail}} is running — stop it before removing`,removedFromRail:`Removed from {{rail}}`,queuedOnRail:`Queued on {{rail}}`,queuedOnRailDescription:`Rail is currently running`,railStopped:`{{rail}} stopped`,stopFailed:`Failed to stop rail`,syncTicketsFailed:`Failed to sync rail tickets`,launchFailed:`Failed to launch rail`,launchNetworkError:`Network error launching rail`,railLaunched:`{{rail}} launched`,launchDescription_one:`{{mode}} with {{count}} spec`,launchDescription_other:`{{mode}} with {{count}} specs`,railWorktreeNeedsReview:`Rail {{n}}: spec #{{ticket}} needs review after merge`,railWorktreesNoGit:`Worktree isolation unavailable: this project isn't a git repository — running in shared mode.`,railWorktreesNoCommits:`Worktree isolation unavailable: the repository has no commits yet — make an initial commit, then relaunch.`,railWorktreesError:`Worktree isolation failed — this run continues WITHOUT the PR review flow (no implementation card). See the error detail below.`,onReviewCannotMoveToRail:`This spec is awaiting PR review — resolve the PR decision first`,onReviewNotLaunchable:`A spec on this rail is awaiting PR review — resolve the PR decision before launching`},r={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…`},readyForReview:`Ready for review`,openReview:`Review`,openReviewTooltip:`Open the plain-language review`,draftPr:`Draft PR`,branchPushed:`Branch pushed — PR pending`,branchPushedHint:`The branch was pushed but the PR couldn't be created (GitHub CLI unavailable). Retry to create it.`,localOnly:`Changes available locally`,localOnlyHint:`The implementation completed, but the changes have not been pushed. Integrate them locally or retry publishing when the remote is available.`,noChanges:`No changes needed`,markDone:`Mark done`,refine:`Refine`,completedToast:`Confirmed — specs moved to Done`,markDoneConfirmTitle:`Mark these specs done?`,markDoneConfirmBody:`The implementation confirmed that no code changes are needed. The specs will move to Done and the no-change worktree will be cleaned up.`,refineConfirmTitle:`Refine these specs?`,refineConfirmBody:`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.`,partial:`{{succeeded}} of {{total}} implementations ready`,createPartialPr:`Create PR with {{count}}`,deliveryBlocked:`Implementation complete — delivery needs attention`,updateFailed:`Implementation complete — update failed`,retryPush:`Retry push`,retryPushVerified:`Push verified · commit {{sha}} is in the PR`,commitAlreadyVerified:`Commit {{sha}} is already verified in the PR`,deliveryCommit:`commit {{sha}}`,prClosed:`PR closed without merge`,reopen:`Reopen`,iteratingPr:`Updating PR`,prReady:`PR ready`,implementationFailed:`Implementation failed`,implementationFailedHint:`The implementation run failed. Open the run log, then discard this card before relaunching.`,prFailed:`PR failed`,prFailedDetail:`PR failed: {{detail}}`,createDegraded:`Couldn't publish the PR — {{detail}}. Retry when resolved.`,createPr:`Create PR`,createPrTooltip:`→ {{base}}`,publish:`Publish`,publishTooltip:`Open this draft PR for team review`,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`,recoverAndRetryConfirmTitle:`Commit and push the preserved result?`,recoverAndRetryConfirmBody:`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.`,recoverAndRetryVerified:`Recovered commit {{sha}} is verified in the PR`,recoveryStillBlocked:`Local recovery still needs attention`,recheckRecovery:`Check again`,recheckRecoveryConfirmTitle:`Check this computer again?`,recheckRecoveryConfirmBody:`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.`,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`,discard:`Discard`,dismiss:`Dismiss follow-up`,discardLocalResult:`Discard local result`,discardTooltip:`Close the delivery and return its tickets to Specs; changed local work is preserved`,retryPr:`Retry PR`,retry:`Retry`,checkMerge:`Check merge`,verifyPr:`Verify PR`,verifyPrTooltip:`Verify the exact commit in GitHub and check whether the PR is merged`,checkMergeTooltip:`Ask GitHub whether the PR has been merged`,prLinkFallback:`PR`,openPrTitle:`Open the PR on GitHub`,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`,alreadyResolved:`Already resolved elsewhere`,ghFailed:`GitHub CLI failed: {{detail}}`,actionFailed:`Couldn't apply the PR decision`,mergedToast:`PR merged — tickets moved to Done`,discardedToast:`PR discarded — tickets returned to Specs`,decisionPending:`This rail has a pending PR decision — create, publish or discard it before relaunching`,discardConfirmTitle:`Discard this delivery?`,discardConfirmBody:`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 tickets will return to the Specs backlog. Removed local resources cannot be recovered.`,implementationFailedDiscardTitle:`Discard this failed delivery?`,implementationFailedDiscardBody:`The card will be cleared and its tickets will return to Specs. Local work and branches will be kept for inspection. Only resources proven safe to clean up may be removed.`,dismissConfirmTitle:`Dismiss this follow-up?`,dismissConfirmBody:`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.`,discardLocalConfirmTitle:`Discard the local result?`,discardLocalConfirmBody:`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.`,mergeLocal:`Integrate locally`,mergeLocalTooltip:`Merge the delivered branches into {{base}} in your local checkout (no GitHub needed)`,mergeLocalConfirmTitle:`Integrate locally?`,mergeLocalConfirmBody:`The delivered branches will be merged into {{base}} in your local checkout. Your checkout must be on {{base}} with a clean working tree.`,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.`,mergeLocalFailed:`Local merge failed: {{detail}}`,mergedLocally:`Integrated into {{base}} locally`,viewRunLog:`View run log for {{ref}}`,cleanupIncomplete_one:`Cleanup is incomplete ({{count}} warning)`,cleanupIncomplete_other:`Cleanup is incomplete ({{count}} warnings)`,cleanupIncompleteHint:`Local recovery data was preserved. Inspect these details before removing anything manually.`,copyCleanupDetails:`Copy recovery details`,safetyArchiveTitle:`Safety archive ({{count}})`,safetyArchiveHint:`Temporary workspace files were preserved outside the PR as a precaution. You can inspect or remove them manually.`,copySafetyArchive:`Copy paths`,unit:{failed:`implementation failed`,blocked:`delivery blocked`,noChanges:`no changes`,succeeded:`ready`}},i={title:`Rails`,runningCount_one:`{{count}} running`,runningCount_other:`{{count}} running`,launchAll:`Launch all`,launchAllTitle:`Launch every ready rail in parallel — each run is isolated in its own git worktree`},a={skipRunning_one:`{{count}} already running`,skipRunning_other:`{{count}} already running`,skipEmpty_one:`{{count}} without specs`,skipEmpty_other:`{{count}} without specs`,skipPendingDecision_one:`{{count}} awaiting a PR decision`,skipPendingDecision_other:`{{count}} awaiting a PR decision`,skipOnReview_one:`{{count}} with specs on review`,skipOnReview_other:`{{count}} with specs on review`,skipInFlight_one:`{{count}} skipped (spec already in flight)`,skipInFlight_other:`{{count}} skipped (specs already in flight)`,failedCount_one:`{{count}} failed`,failedCount_other:`{{count}} failed`},o={title:`Launch all rails`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rails`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} specs`,isolationTitle:`Parallel & isolated.`,isolationBody:`Each rail runs in its own git worktree — concurrent launches never collide.`,pipelinesTitle_one:`{{count}} AI pipeline.`,pipelinesTitle_other:`{{count}} AI pipelines.`,pipelinesBody:`One launch per rail, each with its configured mode, engine and profile.`,costTitle:`Multiplied cost.`,costBody:`Every rail spawns its own AI run — spend scales with the number of rails.`,launch_one:`Launch {{count}} rail`,launch_other:`Launch {{count}} rails`},s={viewJobLog:`View job log`,log:`Log`,implement:`Implement`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — the selected provider implements the spec autonomously, no pipeline`,loop:`Loop`,loopTitle:`Loop — run a published automation loop against the rail's specs`,pickLoop:`Pick a loop…`,effortTitle:`Reasoning effort`,stop:`Stop`,play:`Play`,failedRetry:`Job failed — click to retry`,addSpecsFirst:`Add specs to this rail first`,builtInLoops:`Built-in`,customLoops:`Custom loops`,worktreesMerged:`{{count}} merged`,worktreesNeedsReview:`{{count}} need review`,execSteps:`{{count}} steps`,execLines:`{{count}} lines`,openspec:`OpenSpec`},c={moveToSpecs:`Move to Specs`,deleteRail:`Delete {{label}}`,dropHere:`Drop here`,dropOnThisRail:`Drop on this rail`,dragSpecsHere:`Drag specs here`},l={title:`Launch in Freestyle mode`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} specs`,noPipelineTitle:`No OpenSpec pipeline.`,noPipelineBody:`The structured architect → developer → reviewer flow is skipped entirely.`,autonomyTitle:`Native {{provider}} autonomy.`,autonomyBody:`{{provider}} works on its own using native agents and dynamic workflows.`,costTitle:`Variable cost.`,costBody:`Spend depends on what {{provider}} decides to do — it can be higher than expected.`,continue:`Continue`},u={fetchFailed:`Failed to fetch rails: {{status}}`},d={chipNew:`New PR`,chipTitle:`Deliver into an existing PR`,clear:`Clear PR target`,newPr:`New PR (default)`,loading:`Loading open PRs…`,none:`No open PRs found`,fork:`Fork — not pushable`,manualPlaceholder:`PR number`,manualUse:`Use`,confirmTitle:`Deliver into existing PR?`,confirmBody:`This run works on the PR's head branch and pushes into it — no new PR is created.`,confirmBranch:`Head branch`,confirmLaunch:`Launch into PR #{{number}}`,errors:{invalid_target_pr:`Invalid PR number`,target_pr_requires_pr_mode:`Delivering into an existing PR needs the isolated PR flow`,target_pr_not_found:`PR not found on this repository`,target_pr_not_open:`That PR is not open anymore`,target_pr_fork:`That PR comes from a fork and cannot be pushed to`,target_pr_invalid:`The PR's branches are unusable as a delivery target`,target_pr_unfetchable:`The PR's head branch could not be fetched`}},f={toasts:n,railPr:r,railsBoard:i,launchAll:a,launchAllDialog:o,railControls:s,railRow:c,freestyleDialog:l,useRails:u,targetPr:d};export{t};
@@ -1 +0,0 @@
1
- var e={railAdded:`Rail {{n}} añadido`,railRemoved:`{{rail}} eliminado`,railLimitReached:`Límite de rails alcanzado ({{max}} máx.)`,railDeleteFailed:`No se pudo eliminar el rail — tiene specs, está en ejecución o tiene una decisión de PR pendiente`,launchTicketsInFlight:`Una spec de este rail ya está siendo trabajada por una ejecución activa`,launchTicketCap:`Este raíl tiene {{count}} specs — un lanzamiento admite como máximo {{max}} por raíl. Repártelas entre raíles.`,launchAllSummary_one:`{{count}} rail lanzado en paralelo`,launchAllSummary_other:`{{count}} rails lanzados en paralelo`,launchAllNoneEligible:`No hay rails listos para lanzar — asigna specs a un rail libre primero`,launchAllFailed:`No se pudo lanzar ningún rail`,railCompleted:`Rail {{n}} completado`,railFailed:`Rail {{n}} fallido — las specs han vuelto a Specs`,railEnded:`Rail {{n}} {{status}} — las specs han vuelto a Specs`,alreadyOnRail:`Ya está en {{rail}}`,movedToRail:`Movida a {{rail}}`,railRunningStopFirst:`{{rail}} está en ejecución — detenlo antes de eliminarlo`,removedFromRail:`Quitada de {{rail}}`,queuedOnRail:`En cola en {{rail}}`,queuedOnRailDescription:`El rail está en ejecución`,railStopped:`{{rail}} detenido`,stopFailed:`No se pudo detener el rail`,syncTicketsFailed:`No se pudieron sincronizar los tickets del rail`,launchFailed:`No se pudo lanzar el rail`,launchNetworkError:`Error de red al lanzar el rail`,railLaunched:`{{rail}} lanzado`,launchDescription_one:`{{mode}} con {{count}} spec`,launchDescription_other:`{{mode}} con {{count}} specs`,railWorktreeNeedsReview:`Rail {{n}}: la spec #{{ticket}} necesita revisión tras el merge`,railWorktreesNoGit:`Aislamiento por worktrees no disponible: el proyecto no es un repositorio git — ejecutando en modo compartido.`,railWorktreesNoCommits:`Aislamiento por worktrees no disponible: el repositorio aún no tiene commits — haz un commit inicial y relanza.`,railWorktreesError:`La aislación por worktrees falló — este run continúa SIN el flujo de revisión por PR (sin tarjeta de implementación). Mira el detalle del error abajo.`,onReviewCannotMoveToRail:`Esta spec está pendiente de revisión de PR — resuelve primero la decisión de la PR`,onReviewNotLaunchable:`Una spec de este rail está pendiente de revisión de PR — resuelve la decisión de la PR antes de lanzar`},t={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…`},readyForReview:`Listo para revisión`,openReview:`Revisar`,openReviewTooltip:`Abrir la revisión en lenguaje claro`,draftPr:`PR en borrador`,branchPushed:`Rama subida — PR pendiente`,branchPushedHint:`La rama se subió pero no se pudo crear la PR (GitHub CLI no disponible). Reintenta para crearla.`,localOnly:`Cambios disponibles en local`,localOnlyHint:`La implementación terminó, pero los cambios no se han subido. Intégralos en local o reintenta la publicación cuando el remoto esté disponible.`,noChanges:`No hacían falta cambios`,markDone:`Marcar como hecho`,refine:`Refinar`,completedToast:`Confirmado — las specs han pasado a Hecho`,markDoneConfirmTitle:`¿Marcar estas specs como hechas?`,markDoneConfirmBody:`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.`,refineConfirmTitle:`¿Refinar estas specs?`,refineConfirmBody:`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.`,partial:`{{succeeded}} de {{total}} implementaciones listas`,createPartialPr:`Crear PR con {{count}}`,deliveryBlocked:`Implementación completa — la entrega requiere atención`,updateFailed:`Implementación completa — falló la actualización`,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}}`,prClosed:`PR cerrada sin merge`,reopen:`Reabrir`,iteratingPr:`Actualizando PR`,prReady:`PR lista`,implementationFailed:`Implementación fallida`,implementationFailedHint:`El run de implementación ha fallado. Abre el log del run y descarta esta card antes de relanzar.`,prFailed:`PR fallida`,prFailedDetail:`PR fallida: {{detail}}`,createDegraded:`No se pudo publicar la PR — {{detail}}. Reintenta cuando esté resuelto.`,createPr:`Crear PR`,createPrTooltip:`→ {{base}}`,publish:`Publicar`,publishTooltip:`Abre la PR en borrador para la revisión del equipo`,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`,recoverAndRetryConfirmTitle:`¿Crear el commit y subir el resultado conservado?`,recoverAndRetryConfirmBody:`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.`,recoverAndRetryVerified:`El commit recuperado {{sha}} está verificado en la PR`,recoveryStillBlocked:`La recuperación local aún requiere atención`,recheckRecovery:`Comprobar de nuevo`,recheckRecoveryConfirmTitle:`¿Volver a comprobar este equipo?`,recheckRecoveryConfirmBody:`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.`,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`,discard:`Descartar`,dismiss:`Cerrar seguimiento`,discardLocalResult:`Descartar resultado local`,discardTooltip:`Cierra la entrega y devuelve sus tickets a Specs; el trabajo local modificado se conserva`,retryPr:`Reintentar PR`,retry:`Reintentar`,checkMerge:`Comprobar merge`,verifyPr:`Verificar PR`,verifyPrTooltip:`Verifica el commit exacto en GitHub y comprueba si la PR ya se ha integrado`,checkMergeTooltip:`Consulta a GitHub si ya se ha hecho merge de la PR`,prLinkFallback:`PR`,openPrTitle:`Abrir la PR en GitHub`,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`,alreadyResolved:`Ya resuelta en otro sitio`,ghFailed:`GitHub CLI falló: {{detail}}`,actionFailed:`No se pudo aplicar la decisión de la PR`,mergedToast:`Merge de la PR completado — los tickets han pasado a Hecho`,discardedToast:`PR descartada — los tickets han vuelto a Specs`,decisionPending:`Este rail tiene una decisión de PR pendiente — créala, publícala o descártala antes de relanzar`,discardConfirmTitle:`¿Descartar esta entrega?`,discardConfirmBody:`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. Los tickets volverán al backlog de Specs. Los recursos locales eliminados no se pueden recuperar.`,implementationFailedDiscardTitle:`¿Descartar esta entrega fallida?`,implementationFailedDiscardBody:`Se cerrará la tarjeta y sus tickets volverán a Specs. El trabajo local y las ramas se conservarán para su inspección. Solo se podrán eliminar los recursos cuya limpieza sea segura.`,dismissConfirmTitle:`¿Cerrar este seguimiento?`,dismissConfirmBody:`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.`,discardLocalConfirmTitle:`¿Descartar el resultado local?`,discardLocalConfirmBody:`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.`,mergeLocal:`Integrar en local`,mergeLocalTooltip:`Fusiona las ramas entregadas en {{base}} en tu checkout local (sin necesidad de GitHub)`,mergeLocalConfirmTitle:`¿Integrar en local?`,mergeLocalConfirmBody:`Las ramas entregadas se fusionarán en {{base}} en tu checkout local. Tu checkout debe estar en {{base}} con el árbol de trabajo limpio.`,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.`,mergeLocalFailed:`La fusión local falló: {{detail}}`,mergedLocally:`Integrado en {{base}} en local`,viewRunLog:`Ver el registro de ejecución de {{ref}}`,cleanupIncomplete_one:`La limpieza está incompleta ({{count}} aviso)`,cleanupIncomplete_other:`La limpieza está incompleta ({{count}} avisos)`,cleanupIncompleteHint:`Se han conservado datos de recuperación locales. Revisa estos detalles antes de eliminar nada manualmente.`,copyCleanupDetails:`Copiar detalles de recuperación`,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.`,copySafetyArchive:`Copiar rutas`,unit:{failed:`implementación fallida`,blocked:`entrega bloqueada`,noChanges:`sin cambios`,succeeded:`lista`}},n={title:`Rails`,runningCount_one:`{{count}} en ejecución`,runningCount_other:`{{count}} en ejecución`,launchAll:`Lanzar todos`,launchAllTitle:`Lanza en paralelo todos los rails listos — cada ejecución se aísla en su propio worktree de git`},r={skipRunning_one:`{{count}} ya en ejecución`,skipRunning_other:`{{count}} ya en ejecución`,skipEmpty_one:`{{count}} sin specs`,skipEmpty_other:`{{count}} sin specs`,skipPendingDecision_one:`{{count}} con decisión de PR pendiente`,skipPendingDecision_other:`{{count}} con decisión de PR pendiente`,skipOnReview_one:`{{count}} con specs en revisión`,skipOnReview_other:`{{count}} con specs en revisión`,skipInFlight_one:`{{count}} omitido (spec ya en curso)`,skipInFlight_other:`{{count}} omitidos (specs ya en curso)`,failedCount_one:`{{count}} fallido`,failedCount_other:`{{count}} fallidos`},i={title:`Lanzar todos los rails`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rails`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} specs`,isolationTitle:`Paralelo y aislado.`,isolationBody:`Cada rail se ejecuta en su propio worktree de git — los lanzamientos simultáneos nunca colisionan.`,pipelinesTitle_one:`{{count}} pipeline de IA.`,pipelinesTitle_other:`{{count}} pipelines de IA.`,pipelinesBody:`Un lanzamiento por rail, cada uno con su modo, motor y perfil configurados.`,costTitle:`Coste multiplicado.`,costBody:`Cada rail genera su propia ejecución de IA — el gasto escala con el número de rails.`,launch_one:`Lanzar {{count}} rail`,launch_other:`Lanzar {{count}} rails`},a={viewJobLog:`Ver log del job`,log:`Log`,implement:`Implement`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — el proveedor seleccionado implementa la spec de forma autónoma, sin pipeline`,loop:`Loop`,loopTitle:`Loop — ejecuta un bucle de automatización publicado sobre las specs del rail`,pickLoop:`Elige un bucle…`,effortTitle:`Esfuerzo de razonamiento`,stop:`Detener`,play:`Iniciar`,failedRetry:`El job ha fallado — haz clic para reintentar`,addSpecsFirst:`Añade primero specs a este rail`,builtInLoops:`Integrados`,customLoops:`Loops personalizados`,worktreesMerged:`{{count}} fusionados`,worktreesNeedsReview:`{{count}} a revisar`,execSteps:`{{count}} pasos`,execLines:`{{count}} líneas`,openspec:`OpenSpec`},o={moveToSpecs:`Mover a Specs`,deleteRail:`Eliminar {{label}}`,dropHere:`Suelta aquí`,dropOnThisRail:`Suelta en este rail`,dragSpecsHere:`Arrastra specs aquí`},s={title:`Lanzar en modo Freestyle`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} specs`,noPipelineTitle:`Sin pipeline de OpenSpec.`,noPipelineBody:`El flujo estructurado architect → developer → reviewer se omite por completo.`,autonomyTitle:`Autonomía nativa de {{provider}}.`,autonomyBody:`{{provider}} trabaja por su cuenta con agentes nativos y flujos dinámicos.`,costTitle:`Coste variable.`,costBody:`El gasto depende de lo que {{provider}} decida hacer — puede ser mayor de lo esperado.`,continue:`Continuar`},c={fetchFailed:`No se pudieron obtener los rails: {{status}}`},l={chipNew:`PR nueva`,chipTitle:`Entregar en una PR existente`,clear:`Quitar PR objetivo`,newPr:`PR nueva (por defecto)`,loading:`Cargando PRs abiertas…`,none:`No hay PRs abiertas`,fork:`Fork — no se puede pushear`,manualPlaceholder:`Número de PR`,manualUse:`Usar`,confirmTitle:`¿Entregar en la PR existente?`,confirmBody:`Esta ejecución trabaja sobre la rama head de la PR y pushea en ella — no se crea una PR nueva.`,confirmBranch:`Rama head`,confirmLaunch:`Lanzar hacia PR #{{number}}`,errors:{invalid_target_pr:`Número de PR inválido`,target_pr_requires_pr_mode:`Entregar en una PR existente requiere el flujo aislado de PR`,target_pr_not_found:`PR no encontrada en este repositorio`,target_pr_not_open:`Esa PR ya no está abierta`,target_pr_fork:`Esa PR viene de un fork y no se puede pushear`,target_pr_invalid:`Las ramas de la PR no sirven como destino de entrega`,target_pr_unfetchable:`No se pudo hacer fetch de la rama head de la PR`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
@@ -1 +0,0 @@
1
- var e={railAdded:`Rail {{n}} hinzugefügt`,railRemoved:`{{rail}} entfernt`,railLimitReached:`Rail-Limit erreicht (max. {{max}})`,railDeleteFailed:`Rail konnte nicht entfernt werden – es enthält Specs, läuft gerade oder hat eine ausstehende PR-Entscheidung`,launchTicketsInFlight:`Eine Spec dieses Rails wird bereits von einem aktiven Lauf bearbeitet`,launchTicketCap:`Dieses Rail hat {{count}} Specs — ein Start erlaubt höchstens {{max}} pro Rail. Verteile sie auf mehrere Rails.`,launchAllSummary_one:`{{count}} Rail parallel gestartet`,launchAllSummary_other:`{{count}} Rails parallel gestartet`,launchAllNoneEligible:`Keine Rails startbereit – weise zuerst Specs einem freien Rail zu`,launchAllFailed:`Es konnte kein Rail gestartet werden`,railCompleted:`Rail {{n}} abgeschlossen`,railFailed:`Rail {{n}} fehlgeschlagen – Specs zurück in Specs`,railEnded:`Rail {{n}} {{status}} – Specs zurück in Specs`,alreadyOnRail:`Bereits auf {{rail}}`,movedToRail:`Auf {{rail}} verschoben`,railRunningStopFirst:`{{rail}} läuft – vor dem Entfernen stoppen`,removedFromRail:`Von {{rail}} entfernt`,queuedOnRail:`Auf {{rail}} eingereiht`,queuedOnRailDescription:`Rail läuft gerade`,railStopped:`{{rail}} gestoppt`,stopFailed:`Rail konnte nicht gestoppt werden`,syncTicketsFailed:`Rail-Tickets konnten nicht synchronisiert werden`,launchFailed:`Rail konnte nicht gestartet werden`,launchNetworkError:`Netzwerkfehler beim Starten des Rails`,railLaunched:`{{rail}} gestartet`,launchDescription_one:`{{mode}} mit {{count}} Spec`,launchDescription_other:`{{mode}} mit {{count}} Specs`,railWorktreeNeedsReview:`Rail {{n}}: Spec #{{ticket}} muss nach dem Merge geprüft werden`,railWorktreesNoGit:`Worktree-Isolation nicht verfügbar: Dieses Projekt ist kein Git-Repository — Ausführung im gemeinsamen Modus.`,railWorktreesNoCommits:`Worktree-Isolation nicht verfügbar: Das Repository hat noch keine Commits — erstelle einen ersten Commit und starte neu.`,railWorktreesError:`Worktree-Isolation fehlgeschlagen — dieser Lauf läuft OHNE den PR-Review-Flow weiter (keine Implementierungskarte). Siehe Fehlerdetail unten.`,onReviewCannotMoveToRail:`Diese Spec wartet auf die PR-Prüfung — löse zuerst die PR-Entscheidung`,onReviewNotLaunchable:`Eine Spec auf diesem Rail wartet auf die PR-Prüfung — löse die PR-Entscheidung vor dem Start`},t=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","completedToast":"Bestätigt — Specs nach Erledigt verschoben","markDoneConfirmTitle":"Diese Specs als erledigt markieren?","markDoneConfirmBody":"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.","refineConfirmTitle":"Diese Specs verfeinern?","refineConfirmBody":"Das Ergebnis ohne Änderungen wird geschlossen und die Specs kehren zur Verfeinerung in den Backlog zurück. Die Ausführungsprotokolle bleiben verfügbar.","localOnly":"Änderungen sind lokal verfügbar","localOnlyHint":"Die Implementierung ist abgeschlossen, aber die Änderungen wurden nicht gepusht. Integriere sie lokal oder veröffentliche sie erneut, sobald das Remote verfügbar ist.","noChanges":"Keine Änderungen erforderlich","partial":"{{succeeded}} von {{total}} Implementierungen bereit","createPartialPr":"PR mit {{count}} erstellen","deliveryBlocked":"Implementierung abgeschlossen — Bereitstellung erfordert Aufmerksamkeit","updateFailed":"Implementierung abgeschlossen — Aktualisierung fehlgeschlagen","retryPush":"Push wiederholen","retryPushVerified":"Push verifiziert · Commit {{sha}} ist in der PR","commitAlreadyVerified":"Commit {{sha}} ist bereits in der PR verifiziert","deliveryCommit":"Commit {{sha}}","prClosed":"PR ohne Merge geschlossen","reopen":"Erneut öffnen","dismiss":"Fortsetzung schließen","discardLocalResult":"Lokales Ergebnis verwerfen","dismissConfirmTitle":"Diese Fortsetzung schließen?","dismissConfirmBody":"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.","discardLocalConfirmTitle":"Lokales Ergebnis verwerfen?","discardLocalConfirmBody":"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.","viewRunLog":"Ausführungsprotokoll für {{ref}} anzeigen","cleanupIncomplete_one":"Bereinigung unvollständig ({{count}} Warnung)","cleanupIncomplete_other":"Bereinigung unvollständig ({{count}} Warnungen)","cleanupIncompleteHint":"Lokale Wiederherstellungsdaten wurden beibehalten. Prüfe diese Details, bevor du etwas manuell entfernst.","copyCleanupDetails":"Wiederherstellungsdetails kopieren","safetyArchiveTitle":"Sicherheitsarchiv ({{count}})","safetyArchiveHint":"Temporäre Workspace-Dateien wurden vorsichtshalber außerhalb des PR aufbewahrt. Du kannst sie prüfen oder manuell entfernen.","copySafetyArchive":"Pfade kopieren","unit":{"failed":"Implementierung fehlgeschlagen","blocked":"Bereitstellung blockiert","noChanges":"keine Änderungen","succeeded":"bereit"},"readyForReview":"Bereit zur Prüfung","openReview":"Prüfen","openReviewTooltip":"Die Prüfung in klarer Sprache öffnen","draftPr":"Entwurfs-PR","branchPushed":"Branch gepusht — PR ausstehend","branchPushedHint":"Der Branch wurde gepusht, aber die PR konnte nicht erstellt werden (GitHub CLI nicht verfügbar). Erneut versuchen, um sie zu erstellen.","iteratingPr":"PR wird aktualisiert","prReady":"PR bereit","implementationFailed":"Implementierung fehlgeschlagen","implementationFailedHint":"Der Implementierungslauf ist fehlgeschlagen. Öffne das Run-Protokoll und verwirf diese Karte vor einem erneuten Start.","prFailed":"PR fehlgeschlagen","prFailedDetail":"PR fehlgeschlagen: {{detail}}","createDegraded":"PR konnte nicht veröffentlicht werden — {{detail}}. Nach Behebung erneut versuchen.","createPr":"PR erstellen","createPrTooltip":"→ {{base}}","publish":"Veröffentlichen","publishTooltip":"Öffnet den Entwurfs-PR für das Review des Teams","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","recoverAndRetryConfirmTitle":"Das gesicherte Ergebnis committen und pushen?","recoverAndRetryConfirmBody":"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.","recoverAndRetryVerified":"Der wiederhergestellte Commit {{sha}} wurde im PR verifiziert","recoveryStillBlocked":"Die lokale Wiederherstellung erfordert noch Aufmerksamkeit","recheckRecovery":"Erneut prüfen","recheckRecoveryConfirmTitle":"Diesen Computer erneut prüfen?","recheckRecoveryConfirmBody":"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.","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","discard":"Verwerfen","discardTooltip":"Schließt die Lieferung und schickt ihre Tickets zurück zu Specs; geänderte lokale Arbeit bleibt erhalten","retryPr":"PR erneut versuchen","retry":"Erneut versuchen","checkMerge":"Merge prüfen","verifyPr":"PR verifizieren","verifyPrTooltip":"Den exakten Commit in GitHub und den Merge-Status der PR prüfen","checkMergeTooltip":"Bei GitHub nachfragen, ob die PR gemergt wurde","prLinkFallback":"PR","openPrTitle":"PR auf GitHub öffnen","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","alreadyResolved":"Bereits anderweitig erledigt","ghFailed":"GitHub CLI fehlgeschlagen: {{detail}}","actionFailed":"PR-Entscheidung konnte nicht angewendet werden","mergedToast":"PR gemergt — Tickets nach Fertig verschoben","discardedToast":"PR verworfen — Tickets zurück in Specs","decisionPending":"Dieser Rail hat eine ausstehende PR-Entscheidung — erstelle, veröffentliche oder verwirf sie, bevor du neu startest","discardConfirmTitle":"Diese Lieferung verwerfen?","discardConfirmBody":"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 Tickets kehren in den Specs-Backlog zurück. Entfernte lokale Ressourcen können nicht wiederhergestellt werden.","implementationFailedDiscardTitle":"Diese fehlgeschlagene Lieferung verwerfen?","implementationFailedDiscardBody":"Die Karte wird geschlossen und ihre Tickets kehren zu Specs zurück. Lokale Arbeit und Branches bleiben zur Prüfung erhalten. Nur nachweislich sicher bereinigbare Ressourcen dürfen entfernt werden.","mergeLocal":"Lokal integrieren","mergeLocalTooltip":"Führt die gelieferten Branches lokal in {{base}} zusammen (ohne GitHub)","mergeLocalConfirmTitle":"Lokal integrieren?","mergeLocalConfirmBody":"Die gelieferten Branches werden lokal in {{base}} zusammengeführt. Dein Checkout muss auf {{base}} stehen und sauber sein.","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.","mergeLocalFailed":"Lokaler Merge fehlgeschlagen: {{detail}}","mergedLocally":"Lokal in {{base}} integriert"}`),n={title:`Rails`,runningCount_one:`{{count}} läuft`,runningCount_other:`{{count}} laufen`,launchAll:`Alle starten`,launchAllTitle:`Startet alle startbereiten Rails parallel – jeder Lauf ist in seinem eigenen Git-Worktree isoliert`},r={skipRunning_one:`{{count}} läuft bereits`,skipRunning_other:`{{count}} laufen bereits`,skipEmpty_one:`{{count}} ohne Specs`,skipEmpty_other:`{{count}} ohne Specs`,skipPendingDecision_one:`{{count}} wartet auf eine PR-Entscheidung`,skipPendingDecision_other:`{{count}} warten auf eine PR-Entscheidung`,skipOnReview_one:`{{count}} mit Specs im Review`,skipOnReview_other:`{{count}} mit Specs im Review`,skipInFlight_one:`{{count}} übersprungen (Spec bereits in Arbeit)`,skipInFlight_other:`{{count}} übersprungen (Specs bereits in Arbeit)`,failedCount_one:`{{count}} fehlgeschlagen`,failedCount_other:`{{count}} fehlgeschlagen`},i={title:`Alle Rails starten`,railsCount_one:`{{count}} Rail`,railsCount_other:`{{count}} Rails`,specsCount_one:`{{count}} Spec`,specsCount_other:`{{count}} Specs`,isolationTitle:`Parallel und isoliert.`,isolationBody:`Jedes Rail läuft in seinem eigenen Git-Worktree – gleichzeitige Starts kollidieren nie.`,pipelinesTitle_one:`{{count}} KI-Pipeline.`,pipelinesTitle_other:`{{count}} KI-Pipelines.`,pipelinesBody:`Ein Start pro Rail, jeweils mit dem konfigurierten Modus, Engine und Profil.`,costTitle:`Vervielfachte Kosten.`,costBody:`Jedes Rail erzeugt seinen eigenen KI-Lauf – die Ausgaben skalieren mit der Anzahl der Rails.`,launch_one:`{{count}} Rail starten`,launch_other:`{{count}} Rails starten`},a={viewJobLog:`Job-Log anzeigen`,log:`Log`,implement:`Implement`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle – der gewählte Anbieter implementiert die Spec autonom, ohne Pipeline`,loop:`Loop`,loopTitle:`Loop – eine veröffentlichte Automatisierungsschleife gegen die Specs des Rails ausführen`,pickLoop:`Schleife auswählen…`,effortTitle:`Denkaufwand`,stop:`Stopp`,play:`Start`,failedRetry:`Job fehlgeschlagen – zum Wiederholen klicken`,addSpecsFirst:`Füge zuerst Specs zu diesem Rail hinzu`,builtInLoops:`Integriert`,customLoops:`Eigene Loops`,worktreesMerged:`{{count}} zusammengeführt`,worktreesNeedsReview:`{{count}} zu prüfen`,execSteps:`{{count}} Schritte`,execLines:`{{count}} Zeilen`,openspec:`OpenSpec`},o={moveToSpecs:`Nach Specs verschieben`,deleteRail:`{{label}} löschen`,dropHere:`Hier ablegen`,dropOnThisRail:`Auf diesem Rail ablegen`,dragSpecsHere:`Specs hierher ziehen`},s={title:`Im Freestyle-Modus starten`,context_one:`{{rail}} · {{count}} Spec`,context_other:`{{rail}} · {{count}} Specs`,noPipelineTitle:`Keine OpenSpec-Pipeline.`,noPipelineBody:`Der strukturierte Flow Architect → Developer → Reviewer wird komplett übersprungen.`,autonomyTitle:`Native {{provider}}-Autonomie.`,autonomyBody:`{{provider}} arbeitet eigenständig mit nativen Agenten und dynamischen Workflows.`,costTitle:`Variable Kosten.`,costBody:`Die Ausgaben hängen davon ab, was {{provider}} entscheidet – sie können höher ausfallen als erwartet.`,continue:`Weiter`},c={fetchFailed:`Rails konnten nicht geladen werden: {{status}}`},l={chipNew:`Neuer PR`,chipTitle:`In einen bestehenden PR liefern`,clear:`PR-Ziel entfernen`,newPr:`Neuer PR (Standard)`,loading:`Offene PRs werden geladen…`,none:`Keine offenen PRs gefunden`,fork:`Fork — kein Push möglich`,manualPlaceholder:`PR-Nummer`,manualUse:`Verwenden`,confirmTitle:`In bestehenden PR liefern?`,confirmBody:`Dieser Lauf arbeitet auf dem Head-Branch des PR und pusht hinein — es wird kein neuer PR erstellt.`,confirmBranch:`Head-Branch`,confirmLaunch:`In PR #{{number}} starten`,errors:{invalid_target_pr:`Ungültige PR-Nummer`,target_pr_requires_pr_mode:`Die Lieferung in einen bestehenden PR erfordert den isolierten PR-Flow`,target_pr_not_found:`PR in diesem Repository nicht gefunden`,target_pr_not_open:`Dieser PR ist nicht mehr offen`,target_pr_fork:`Dieser PR stammt aus einem Fork und kann nicht gepusht werden`,target_pr_invalid:`Die Branches des PR sind als Lieferziel unbrauchbar`,target_pr_unfetchable:`Der Head-Branch des PR konnte nicht geholt werden`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
@@ -1 +0,0 @@
1
- var e={railAdded:`Rail {{n}} aggiunto`,railRemoved:`{{rail}} rimosso`,railLimitReached:`Limite di rail raggiunto ({{max}} max)`,railDeleteFailed:`Impossibile rimuovere il rail — contiene spec, è in esecuzione o ha una decisione PR in sospeso`,launchTicketsInFlight:`Una spec di questo rail è già in lavorazione da un'esecuzione attiva`,launchTicketCap:`Questo binario ha {{count}} spec — un lancio ne accetta al massimo {{max}} per binario. Distribuiscile su più binari.`,launchAllSummary_one:`{{count}} rail lanciato in parallelo`,launchAllSummary_other:`{{count}} rail lanciati in parallelo`,launchAllNoneEligible:`Nessun rail pronto al lancio — assegna prima le spec a un rail libero`,launchAllFailed:`Nessun rail è stato lanciato`,railCompleted:`Rail {{n}} completato`,railFailed:`Rail {{n}} non riuscito — le spec sono tornate in Specs`,railEnded:`Rail {{n}} {{status}} — le spec sono tornate in Specs`,alreadyOnRail:`Già su {{rail}}`,movedToRail:`Spostata su {{rail}}`,railRunningStopFirst:`{{rail}} è in esecuzione — fermalo prima di rimuoverlo`,removedFromRail:`Rimossa da {{rail}}`,queuedOnRail:`In coda su {{rail}}`,queuedOnRailDescription:`Il rail è attualmente in esecuzione`,railStopped:`{{rail}} fermato`,stopFailed:`Impossibile fermare il rail`,syncTicketsFailed:`Impossibile sincronizzare i ticket del rail`,launchFailed:`Impossibile avviare il rail`,launchNetworkError:`Errore di rete durante l'avvio del rail`,railLaunched:`{{rail}} avviato`,launchDescription_one:`{{mode}} con {{count}} spec`,launchDescription_other:`{{mode}} con {{count}} spec`,railWorktreeNeedsReview:`Rail {{n}}: la spec #{{ticket}} richiede revisione dopo il merge`,railWorktreesNoGit:`Isolamento con worktree non disponibile: il progetto non è un repository git — esecuzione in modalità condivisa.`,railWorktreesNoCommits:`Isolamento con worktree non disponibile: il repository non ha ancora commit — crea un commit iniziale e rilancia.`,railWorktreesError:`L'isolamento tramite worktree è fallito — questa esecuzione continua SENZA il flusso di revisione PR (nessuna scheda di implementazione). Vedi il dettaglio dell'errore sotto.`,onReviewCannotMoveToRail:`Questa spec è in attesa della revisione della PR — risolvi prima la decisione sulla PR`,onReviewNotLaunchable:`Una spec di questo rail è in attesa della revisione della PR — risolvi la decisione sulla PR prima di lanciare`},t={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`,completedToast:`Confermato — le spec sono passate a Completate`,markDoneConfirmTitle:`Segnare queste spec come completate?`,markDoneConfirmBody:`L’implementazione ha confermato che non servono modifiche al codice. Le spec passeranno a Completate e il worktree senza modifiche verrà ripulito.`,refineConfirmTitle:`Perfezionare queste spec?`,refineConfirmBody:`Il risultato senza modifiche verrà chiuso e le spec torneranno nel backlog per essere perfezionate. I log di esecuzione resteranno disponibili.`,localOnly:`Modifiche disponibili in locale`,localOnlyHint:`L’implementazione è completa, ma le modifiche non sono state inviate. Integrale localmente o riprova a pubblicarle quando il remoto sarà disponibile.`,noChanges:`Nessuna modifica necessaria`,partial:`{{succeeded}} implementazioni su {{total}} pronte`,createPartialPr:`Crea PR con {{count}}`,deliveryBlocked:`Implementazione completa — la consegna richiede attenzione`,updateFailed:`Implementazione completa — aggiornamento non riuscito`,retryPush:`Riprova push`,retryPushVerified:`Push verificato · il commit {{sha}} è nella PR`,commitAlreadyVerified:`Il commit {{sha}} è già verificato nella PR`,deliveryCommit:`commit {{sha}}`,prClosed:`PR chiusa senza merge`,reopen:`Riapri`,dismiss:`Chiudi follow-up`,discardLocalResult:`Elimina risultato locale`,dismissConfirmTitle:`Chiudere questo follow-up?`,dismissConfirmBody:`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.`,discardLocalConfirmTitle:`Eliminare il risultato locale?`,discardLocalConfirmBody:`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.`,viewRunLog:`Visualizza il log di esecuzione di {{ref}}`,cleanupIncomplete_one:`Pulizia incompleta ({{count}} avviso)`,cleanupIncomplete_other:`Pulizia incompleta ({{count}} avvisi)`,cleanupIncompleteHint:`I dati di recupero locali sono stati conservati. Controlla questi dettagli prima di rimuovere qualcosa manualmente.`,copyCleanupDetails:`Copia dettagli di recupero`,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.`,copySafetyArchive:`Copia percorsi`,unit:{failed:`implementazione non riuscita`,blocked:`consegna bloccata`,noChanges:`nessuna modifica`,succeeded:`pronta`},readyForReview:`Pronto per la revisione`,openReview:`Rivedi`,openReviewTooltip:`Apri la revisione in linguaggio semplice`,draftPr:`PR in bozza`,branchPushed:`Ramo inviato — PR in sospeso`,branchPushedHint:`Il ramo è stato inviato ma non è stato possibile creare la PR (GitHub CLI non disponibile). Riprova per crearla.`,iteratingPr:`Aggiornamento PR`,prReady:`PR pronta`,implementationFailed:`Implementazione non riuscita`,implementationFailedHint:`Il run di implementazione non è riuscito. Apri il log del run, poi scarta questa scheda prima di rilanciare.`,prFailed:`PR non riuscita`,prFailedDetail:`PR non riuscita: {{detail}}`,createDegraded:`Impossibile pubblicare la PR — {{detail}}. Riprova una volta risolto.`,createPr:`Crea PR`,createPrTooltip:`→ {{base}}`,publish:`Pubblica`,publishTooltip:`Apre la PR in bozza per la revisione del team`,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`,recoverAndRetryConfirmTitle:`Creare il commit e inviare il risultato preservato?`,recoverAndRetryConfirmBody:`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.`,recoverAndRetryVerified:`Il commit recuperato {{sha}} è verificato nella PR`,recoveryStillBlocked:`Il recupero locale richiede ancora attenzione`,recheckRecovery:`Controlla di nuovo`,recheckRecoveryConfirmTitle:`Controllare di nuovo questo computer?`,recheckRecoveryConfirmBody:`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.`,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`,discard:`Scarta`,discardTooltip:`Chiude la consegna e riporta i ticket in Specs; il lavoro locale modificato viene conservato`,retryPr:`Riprova PR`,retry:`Riprova`,checkMerge:`Verifica merge`,verifyPr:`Verifica PR`,verifyPrTooltip:`Verifica il commit esatto su GitHub e se la PR è stata unita`,checkMergeTooltip:`Chiede a GitHub se è stato fatto il merge della PR`,prLinkFallback:`PR`,openPrTitle:`Apri la PR su GitHub`,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`,alreadyResolved:`Già risolta altrove`,ghFailed:`GitHub CLI non riuscita: {{detail}}`,actionFailed:`Impossibile applicare la decisione sulla PR`,mergedToast:`Merge della PR effettuato — i ticket sono passati a Completato`,discardedToast:`PR scartata — i ticket sono tornati in Specs`,decisionPending:`Questo rail ha una decisione sulla PR in sospeso — creala, pubblicala o scartala prima di rilanciare`,discardConfirmTitle:`Scartare questa consegna?`,discardConfirmBody:`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. I ticket torneranno nel backlog di Specs. Le risorse locali rimosse non possono essere recuperate.`,implementationFailedDiscardTitle:`Scartare questa consegna non riuscita?`,implementationFailedDiscardBody:`La scheda verrà chiusa e i ticket torneranno in Specs. Il lavoro locale e i branch saranno conservati per l'ispezione. Potranno essere rimosse solo le risorse la cui pulizia è dimostrata sicura.`,mergeLocal:`Integra in locale`,mergeLocalTooltip:`Unisce i branch consegnati in {{base}} nel tuo checkout locale (senza GitHub)`,mergeLocalConfirmTitle:`Integrare in locale?`,mergeLocalConfirmBody:`I branch consegnati verranno uniti in {{base}} nel tuo checkout locale. Il checkout deve essere su {{base}} con albero di lavoro pulito.`,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.`,mergeLocalFailed:`Merge locale fallito: {{detail}}`,mergedLocally:`Integrato in {{base}} in locale`},n={title:`Rails`,runningCount_one:`{{count}} in esecuzione`,runningCount_other:`{{count}} in esecuzione`,launchAll:`Lancia tutti`,launchAllTitle:`Lancia in parallelo tutti i rail pronti — ogni esecuzione è isolata nel proprio worktree git`},r={skipRunning_one:`{{count}} già in esecuzione`,skipRunning_other:`{{count}} già in esecuzione`,skipEmpty_one:`{{count}} senza spec`,skipEmpty_other:`{{count}} senza spec`,skipPendingDecision_one:`{{count}} in attesa di una decisione PR`,skipPendingDecision_other:`{{count}} in attesa di una decisione PR`,skipOnReview_one:`{{count}} con spec in revisione`,skipOnReview_other:`{{count}} con spec in revisione`,skipInFlight_one:`{{count}} saltato (spec già in corso)`,skipInFlight_other:`{{count}} saltati (spec già in corso)`,failedCount_one:`{{count}} non riuscito`,failedCount_other:`{{count}} non riusciti`},i={title:`Lancia tutti i rail`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rail`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} spec`,isolationTitle:`Parallelo e isolato.`,isolationBody:`Ogni rail gira nel proprio worktree git — i lanci simultanei non collidono mai.`,pipelinesTitle_one:`{{count}} pipeline IA.`,pipelinesTitle_other:`{{count}} pipeline IA.`,pipelinesBody:`Un lancio per rail, ciascuno con la propria modalità, engine e profilo configurati.`,costTitle:`Costo moltiplicato.`,costBody:`Ogni rail genera la propria esecuzione IA — la spesa cresce con il numero di rail.`,launch_one:`Lancia {{count}} rail`,launch_other:`Lancia {{count}} rail`},a={viewJobLog:`Visualizza log del job`,log:`Log`,implement:`Implementa`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — il provider selezionato implementa la spec in autonomia, senza pipeline`,loop:`Loop`,loopTitle:`Loop — esegui un loop di automazione pubblicato sulle spec del rail`,pickLoop:`Scegli un loop…`,effortTitle:`Sforzo di ragionamento`,stop:`Stop`,play:`Avvia`,failedRetry:`Job non riuscito — clicca per riprovare`,addSpecsFirst:`Aggiungi prima delle spec a questo rail`,builtInLoops:`Integrati`,customLoops:`Loop personalizzati`,worktreesMerged:`{{count}} uniti`,worktreesNeedsReview:`{{count}} da rivedere`,execSteps:`{{count}} passi`,execLines:`{{count}} righe`,openspec:`OpenSpec`},o={moveToSpecs:`Sposta in Specs`,deleteRail:`Elimina {{label}}`,dropHere:`Rilascia qui`,dropOnThisRail:`Rilascia su questo rail`,dragSpecsHere:`Trascina qui le spec`},s={title:`Avvia in modalità Freestyle`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} spec`,noPipelineTitle:`Nessuna pipeline OpenSpec.`,noPipelineBody:`Il flusso strutturato architect → developer → reviewer viene saltato del tutto.`,autonomyTitle:`Autonomia nativa di {{provider}}.`,autonomyBody:`{{provider}} lavora in autonomia usando agenti nativi e workflow dinamici.`,costTitle:`Costo variabile.`,costBody:`La spesa dipende da cosa decide {{provider}} — può essere più alta del previsto.`,continue:`Continua`},c={fetchFailed:`Impossibile recuperare i rail: {{status}}`},l={chipNew:`Nuova PR`,chipTitle:`Consegnare in una PR esistente`,clear:`Rimuovi PR di destinazione`,newPr:`Nuova PR (predefinito)`,loading:`Caricamento PR aperte…`,none:`Nessuna PR aperta trovata`,fork:`Fork — push non possibile`,manualPlaceholder:`Numero PR`,manualUse:`Usa`,confirmTitle:`Consegnare nella PR esistente?`,confirmBody:`Questa esecuzione lavora sul branch head della PR e vi effettua il push — non viene creata una nuova PR.`,confirmBranch:`Branch head`,confirmLaunch:`Avvia verso la PR #{{number}}`,errors:{invalid_target_pr:`Numero PR non valido`,target_pr_requires_pr_mode:`Consegnare in una PR esistente richiede il flusso PR isolato`,target_pr_not_found:`PR non trovata in questo repository`,target_pr_not_open:`Quella PR non è più aperta`,target_pr_fork:`Quella PR proviene da un fork e non può ricevere push`,target_pr_invalid:`I branch della PR non sono utilizzabili come destinazione`,target_pr_unfetchable:`Impossibile recuperare il branch head della PR`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
@@ -1 +0,0 @@
1
- var e={railAdded:`已添加 Rail {{n}}`,railRemoved:`已移除 {{rail}}`,railLimitReached:`已达到 Rail 上限(最多 {{max}} 个)`,railDeleteFailed:`无法移除该 Rail — 它包含 Spec、正在运行或有待处理的 PR 决定`,launchTicketsInFlight:`该 Rail 上的某个 Spec 已在被一个活动运行处理`,launchTicketCap:`此轨道有 {{count}} 个规格——每次启动每条轨道最多 {{max}} 个。请将它们分配到多条轨道。`,launchAllSummary_one:`已并行启动 {{count}} 个 Rail`,launchAllSummary_other:`已并行启动 {{count}} 个 Rail`,launchAllNoneEligible:`没有可启动的 Rail — 请先将 Spec 分配到空闲的 Rail`,launchAllFailed:`没有任何 Rail 能够启动`,railCompleted:`Rail {{n}} 已完成`,railFailed:`Rail {{n}} 失败 — Spec 已退回 Specs`,railEnded:`Rail {{n}} {{status}} — Spec 已退回 Specs`,alreadyOnRail:`已在 {{rail}} 上`,movedToRail:`已移至 {{rail}}`,railRunningStopFirst:`{{rail}} 正在运行 — 请先停止再移除`,removedFromRail:`已从 {{rail}} 移除`,queuedOnRail:`已在 {{rail}} 排队`,queuedOnRailDescription:`Rail 正在运行`,railStopped:`{{rail}} 已停止`,stopFailed:`停止 Rail 失败`,syncTicketsFailed:`同步 Rail 工单失败`,launchFailed:`启动 Rail 失败`,launchNetworkError:`启动 Rail 时网络错误`,railLaunched:`{{rail}} 已启动`,launchDescription_one:`{{mode}},共 {{count}} 个 Spec`,launchDescription_other:`{{mode}},共 {{count}} 个 Spec`,railWorktreeNeedsReview:`Rail {{n}}:合并后 spec #{{ticket}} 需要复查`,railWorktreesNoGit:`worktree 隔离不可用:该项目不是 git 仓库 — 以共享模式运行。`,railWorktreesNoCommits:`worktree 隔离不可用:仓库还没有任何提交 — 先做一次初始提交再重新启动。`,railWorktreesError:`Worktree 隔离失败 — 此次运行将在没有 PR 审查流程的情况下继续(无实施卡片)。请查看下方错误详情。`,onReviewCannotMoveToRail:`该 Spec 正在等待 PR 评审 — 请先处理 PR 决定`,onReviewNotLaunchable:`该 Rail 上有 Spec 正在等待 PR 评审 — 请先处理 PR 决定再启动`},t={operation:{inProgress:`操作进行中…`,"create-pr":`正在创建 PR…`,publish:`正在发布…`,discard:`正在丢弃…`,dismiss:`正在关闭后续任务…`,"poll-merge":`正在检查合并…`,reopen:`正在重新打开…`,"merge-local":`正在本地集成…`,"recover-and-retry":`正在提交并重新推送已保留的结果…`,"acknowledge-no-changes":`正在标记完成…`},markDone:`标记为完成`,refine:`细化`,completedToast:`已确认 — spec 已移至完成`,markDoneConfirmTitle:`将这些 spec 标记为完成?`,markDoneConfirmBody:`实现已确认无需更改代码。spec 将移至完成,并清理无更改的 worktree。`,refineConfirmTitle:`细化这些 spec?`,refineConfirmBody:`无更改结果将被关闭,spec 会返回待办列表以便细化。运行日志仍可查看。`,localOnly:`更改保存在本地`,localOnlyHint:`实现已完成,但更改尚未推送。请在本地集成,或在远程可用后重试发布。`,noChanges:`无需更改`,partial:`{{total}} 个实现中有 {{succeeded}} 个已就绪`,createPartialPr:`用 {{count}} 个结果创建 PR`,deliveryBlocked:`实现完成 — 交付需要处理`,updateFailed:`实现完成 — 更新失败`,retryPush:`重试推送`,retryPushVerified:`推送已验证 · 提交 {{sha}} 已在 PR 中`,commitAlreadyVerified:`提交 {{sha}} 已在 PR 中验证`,deliveryCommit:`提交 {{sha}}`,prClosed:`PR 已关闭但未合并`,reopen:`重新打开`,dismiss:`关闭后续任务`,discardLocalResult:`丢弃本地结果`,dismissConfirmTitle:`关闭此后续任务?`,dismissConfirmBody:`此后续卡片将被关闭。仅在仍可安全删除时才会移除其专用 worktree;否则将保留并显示警告。现有 PR、分支和审查状态不会改变。`,discardLocalConfirmTitle:`丢弃本地结果?`,discardLocalConfirmBody:`仅在仍可安全删除时才会移除可恢复的本地迭代;如果它已发生变化,将保留并显示警告。任何现有 PR 及其分支都不会改变。已删除的结果无法恢复。`,viewRunLog:`查看 {{ref}} 的运行日志`,cleanupIncomplete_one:`清理未完成({{count}} 条警告)`,cleanupIncomplete_other:`清理未完成({{count}} 条警告)`,cleanupIncompleteHint:`本地恢复数据已保留。手动删除任何内容前,请先检查以下详情。`,copyCleanupDetails:`复制恢复详情`,safetyArchiveTitle:`安全存档({{count}})`,safetyArchiveHint:`为安全起见,临时工作区文件已保存在 PR 之外。你可以检查或手动删除它们。`,copySafetyArchive:`复制路径`,unit:{failed:`实现失败`,blocked:`交付受阻`,noChanges:`无更改`,succeeded:`已就绪`},readyForReview:`评审就绪`,openReview:`审阅`,openReviewTooltip:`打开通俗语言的审阅`,draftPr:`草稿 PR`,branchPushed:`分支已推送 — PR 待创建`,branchPushedHint:`分支已推送,但无法创建 PR(GitHub CLI 不可用)。请重试以创建。`,iteratingPr:`正在更新 PR`,prReady:`PR 已就绪`,implementationFailed:`实现失败`,implementationFailedHint:`实现运行失败。请打开运行日志,然后在重新启动前丢弃此卡片。`,prFailed:`PR 失败`,prFailedDetail:`PR 失败:{{detail}}`,createDegraded:`无法发布 PR — {{detail}}。解决后请重试。`,createPr:`创建 PR`,createPrTooltip:`→ {{base}}`,publish:`发布`,publishTooltip:`将草稿 PR 开放给团队评审`,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:`提交并重试推送`,recoverAndRetryConfirmTitle:`提交并推送已保留的结果?`,recoverAndRetryConfirmBody:`Specrails 只会使用 {{branch}} 对应的隔离 worktree 或已记录且可快进的分支。必要时,它会提交可交付文件;仅当 PR 仍以预期的源分支和目标分支保持打开状态时,才会推送这个精确提交。不会触碰项目主目录及其中尚未提交的更改。`,recoverAndRetryVerified:`已恢复的提交 {{sha}} 已在 PR 中验证`,recoveryStillBlocked:`本地恢复仍需处理`,recheckRecovery:`再次检查`,recheckRecoveryConfirmTitle:`再次检查此计算机?`,recheckRecoveryConfirmBody:`Specrails 将在此克隆中重新扫描属于 {{branch}} 交付的 worktree、分支、refs、reflogs 和孤立 Git 对象。如果能证明唯一结果,它可以提交隔离的更改并重试精确 push。不会触碰主项目文件夹。`,recoveryUnavailable:`无法在此计算机上验证恢复结果`,recoveryUnavailableBody:`Specrails 无法在此克隆中安全证明唯一一个属于此次交付的结果。没有更改或删除任何内容。请检查阶段详情和运行日志。如果 run 在另一台计算机上执行,请在那里打开 Specrails,然后再次检查。`,recoveryDetailSummary:`恢复技术详情`,discard:`丢弃`,discardTooltip:`关闭交付并将工单退回 Specs;已修改的本地工作会保留`,retryPr:`重试 PR`,retry:`重试`,checkMerge:`检查合并`,verifyPr:`验证 PR`,verifyPrTooltip:`验证 GitHub 中的准确提交并检查 PR 是否已合并`,checkMergeTooltip:`向 GitHub 查询该 PR 是否已合并`,prLinkFallback:`PR`,openPrTitle:`在 GitHub 上打开该 PR`,notMergedYet:`尚未合并`,commitMissingRetry:`交付提交已不在 PR 中。你可以重新尝试推送。`,prVerifiedWaiting:`提交 {{sha}} 已验证 · 等待合并`,alreadyResolved:`已在其他地方处理`,ghFailed:`GitHub CLI 失败:{{detail}}`,actionFailed:`无法应用 PR 决定`,mergedToast:`PR 已合并 — 工单已移至完成`,discardedToast:`PR 已丢弃 — 工单已退回 Specs`,decisionPending:`该 Rail 有待处理的 PR 决定 — 请先创建、发布或丢弃,再重新启动`,discardConfirmTitle:`丢弃本次交付?`,discardConfirmBody:`PR 将关闭,但不会删除其远程分支。只会删除归 SpecRails 所有且仍停留在已记录提交上的本地分支和 worktree;任何已更改的内容都会保留并显示警告。工单将返回 Specs 待办列表。已删除的本地资源无法恢复。`,implementationFailedDiscardTitle:`丢弃此失败的交付?`,implementationFailedDiscardBody:`卡片将被关闭,工单会返回 Specs。本地工作和分支将保留以供检查。只有确认可安全清理的资源才可能被移除。`,mergeLocal:`本地集成`,mergeLocalTooltip:`将交付的分支合并到本地检出的 {{base}}(无需 GitHub)`,mergeLocalConfirmTitle:`本地集成?`,mergeLocalConfirmBody:`交付的分支将合并到本地检出的 {{base}}。你的检出必须位于 {{base}} 且工作树干净。`,mergeLocalBlockedDirty:`无法集成:{{base}} 上的工作树有未提交的更改。请提交或暂存后重试。`,mergeLocalBlockedBranch:`无法集成:当前检出在 {{current}},而不是 {{base}}。请切换到 {{base}} 后重试。`,mergeLocalFailed:`本地合并失败:{{detail}}`,mergedLocally:`已在本地集成到 {{base}}`},n={title:`Rails`,runningCount_one:`{{count}} 个运行中`,runningCount_other:`{{count}} 个运行中`,launchAll:`全部启动`,launchAllTitle:`并行启动所有就绪的 Rail — 每次运行都隔离在自己的 git worktree 中`},r={skipRunning_one:`{{count}} 个已在运行`,skipRunning_other:`{{count}} 个已在运行`,skipEmpty_one:`{{count}} 个没有 Spec`,skipEmpty_other:`{{count}} 个没有 Spec`,skipPendingDecision_one:`{{count}} 个等待 PR 决定`,skipPendingDecision_other:`{{count}} 个等待 PR 决定`,skipOnReview_one:`{{count}} 个包含审查中的 Spec`,skipOnReview_other:`{{count}} 个包含审查中的 Spec`,skipInFlight_one:`{{count}} 个已跳过(Spec 已在进行中)`,skipInFlight_other:`{{count}} 个已跳过(Spec 已在进行中)`,failedCount_one:`{{count}} 个失败`,failedCount_other:`{{count}} 个失败`},i={title:`启动所有 Rail`,railsCount_one:`{{count}} 个 Rail`,railsCount_other:`{{count}} 个 Rail`,specsCount_one:`{{count}} 个 Spec`,specsCount_other:`{{count}} 个 Spec`,isolationTitle:`并行且隔离。`,isolationBody:`每个 Rail 都在自己的 git worktree 中运行 — 同时启动永不冲突。`,pipelinesTitle_one:`{{count}} 条 AI 流水线。`,pipelinesTitle_other:`{{count}} 条 AI 流水线。`,pipelinesBody:`每个 Rail 启动一次,各自使用配置好的模式、引擎和 Profile。`,costTitle:`成本成倍增加。`,costBody:`每个 Rail 都会产生自己的 AI 运行 — 花费随 Rail 数量增长。`,launch_one:`启动 {{count}} 个 Rail`,launch_other:`启动 {{count}} 个 Rail`},a={viewJobLog:`查看任务日志`,log:`日志`,implement:`实现`,batch:`批量`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — 所选提供方自主实现该 Spec,不走流水线`,loop:`Loop`,loopTitle:`Loop — 针对该轨道的 Spec 运行已发布的自动化循环`,pickLoop:`选择一个循环…`,effortTitle:`推理强度`,stop:`停止`,play:`运行`,failedRetry:`任务失败 — 点击重试`,addSpecsFirst:`请先向此 Rail 添加 Spec`,builtInLoops:`内置`,customLoops:`自定义循环`,worktreesMerged:`已合并 {{count}}`,worktreesNeedsReview:`{{count}} 需复查`,execSteps:`{{count}} 步`,execLines:`{{count}} 行`,openspec:`OpenSpec`},o={moveToSpecs:`移至 Specs`,deleteRail:`删除 {{label}}`,dropHere:`拖放到此处`,dropOnThisRail:`拖放到此 Rail`,dragSpecsHere:`将 Spec 拖到此处`},s={title:`以 Freestyle 模式启动`,context_one:`{{rail}} · {{count}} 个 Spec`,context_other:`{{rail}} · {{count}} 个 Spec`,noPipelineTitle:`无 OpenSpec 流水线。`,noPipelineBody:`完全跳过架构师 → 开发者 → 审查者的结构化流程。`,autonomyTitle:`{{provider}} 原生自主模式。`,autonomyBody:`{{provider}} 使用原生 Agent 和动态工作流自主工作。`,costTitle:`成本不固定。`,costBody:`花费取决于 {{provider}} 的决策 — 可能高于预期。`,continue:`继续`},c={fetchFailed:`获取 Rails 失败:{{status}}`},l={chipNew:`新 PR`,chipTitle:`交付到现有 PR`,clear:`清除目标 PR`,newPr:`新 PR(默认)`,loading:`正在加载打开的 PR…`,none:`未找到打开的 PR`,fork:`Fork — 无法推送`,manualPlaceholder:`PR 编号`,manualUse:`使用`,confirmTitle:`交付到现有 PR?`,confirmBody:`本次运行将在该 PR 的 head 分支上工作并推送到它 — 不会创建新 PR。`,confirmBranch:`Head 分支`,confirmLaunch:`启动并交付到 PR #{{number}}`,errors:{invalid_target_pr:`PR 编号无效`,target_pr_requires_pr_mode:`交付到现有 PR 需要隔离的 PR 流程`,target_pr_not_found:`在此仓库中未找到该 PR`,target_pr_not_open:`该 PR 已不再打开`,target_pr_fork:`该 PR 来自 fork,无法推送`,target_pr_invalid:`该 PR 的分支无法作为交付目标`,target_pr_unfetchable:`无法获取该 PR 的 head 分支`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
@@ -1 +0,0 @@
1
- var e={railAdded:`Rail {{n}} ajouté`,railRemoved:`{{rail}} supprimé`,railLimitReached:`Limite de rails atteinte ({{max}} max.)`,railDeleteFailed:`Impossible de supprimer le rail — il contient des specs, est en cours d'exécution ou a une décision de PR en attente`,launchTicketsInFlight:`Une spec de ce rail est déjà traitée par une exécution active`,launchTicketCap:`Ce rail contient {{count}} specs — un lancement en accepte au plus {{max}} par rail. Répartissez-les sur plusieurs rails.`,launchAllSummary_one:`{{count}} rail lancé en parallèle`,launchAllSummary_other:`{{count}} rails lancés en parallèle`,launchAllNoneEligible:`Aucun rail prêt à lancer — assignez d'abord des specs à un rail libre`,launchAllFailed:`Aucun rail n'a pu être lancé`,railCompleted:`Rail {{n}} terminé`,railFailed:`Rail {{n}} en échec — specs renvoyées vers Specs`,railEnded:`Rail {{n}} {{status}} — specs renvoyées vers Specs`,alreadyOnRail:`Déjà sur {{rail}}`,movedToRail:`Déplacé vers {{rail}}`,railRunningStopFirst:`{{rail}} est en cours d'exécution — arrêtez-le avant de le supprimer`,removedFromRail:`Retiré de {{rail}}`,queuedOnRail:`Mis en file sur {{rail}}`,queuedOnRailDescription:`Le rail est en cours d'exécution`,railStopped:`{{rail}} arrêté`,stopFailed:`Échec de l'arrêt du rail`,syncTicketsFailed:`Échec de la synchronisation des tickets du rail`,launchFailed:`Échec du lancement du rail`,launchNetworkError:`Erreur réseau au lancement du rail`,railLaunched:`{{rail}} lancé`,launchDescription_one:`{{mode}} avec {{count}} spec`,launchDescription_other:`{{mode}} avec {{count}} specs`,railWorktreeNeedsReview:`Rail {{n}} : la spec #{{ticket}} nécessite une revue après le merge`,railWorktreesNoGit:`Isolation par worktree indisponible : ce projet n'est pas un dépôt git — exécution en mode partagé.`,railWorktreesNoCommits:`Isolation par worktree indisponible : le dépôt n'a pas encore de commit — faites un commit initial puis relancez.`,railWorktreesError:`L'isolation par worktrees a échoué — cette exécution continue SANS le flux de revue par PR (pas de carte d'implémentation). Voir le détail de l'erreur ci-dessous.`,onReviewCannotMoveToRail:`Cette spec attend une revue de PR — résolvez d'abord la décision de la PR`,onReviewNotLaunchable:`Une spec de ce rail attend une revue de PR — résolvez la décision de la PR avant de lancer`},t=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","completedToast":"Confirmé — les specs sont passées à Terminé","markDoneConfirmTitle":"Marquer ces specs comme terminées ?","markDoneConfirmBody":"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é.","refineConfirmTitle":"Affiner ces specs ?","refineConfirmBody":"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.","localOnly":"Modifications disponibles localement","localOnlyHint":"L’implémentation est terminée, mais les modifications n’ont pas été poussées. Intégrez-les localement ou republiez-les lorsque le dépôt distant sera disponible.","noChanges":"Aucune modification nécessaire","partial":"{{succeeded}} implémentations sur {{total}} sont prêtes","createPartialPr":"Créer une PR avec {{count}}","deliveryBlocked":"Implémentation terminée — la livraison requiert votre attention","updateFailed":"Implémentation terminée — échec de la mise à jour","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}}","prClosed":"PR fermée sans fusion","reopen":"Rouvrir","dismiss":"Fermer le suivi","discardLocalResult":"Supprimer le résultat local","dismissConfirmTitle":"Fermer ce suivi ?","dismissConfirmBody":"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.","discardLocalConfirmTitle":"Supprimer le résultat local ?","discardLocalConfirmBody":"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é.","viewRunLog":"Voir le journal d’exécution de {{ref}}","cleanupIncomplete_one":"Nettoyage incomplet ({{count}} avertissement)","cleanupIncomplete_other":"Nettoyage incomplet ({{count}} avertissements)","cleanupIncompleteHint":"Les données de récupération locales ont été conservées. Examinez ces détails avant toute suppression manuelle.","copyCleanupDetails":"Copier les détails de récupération","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.","copySafetyArchive":"Copier les chemins","unit":{"failed":"échec de l’implémentation","blocked":"livraison bloquée","noChanges":"aucune modification","succeeded":"prête"},"readyForReview":"Prêt pour la revue","openReview":"Relire","openReviewTooltip":"Ouvrir la relecture en langage clair","draftPr":"PR en brouillon","branchPushed":"Branche poussée — PR en attente","branchPushedHint":"La branche a été poussée mais la PR n'a pas pu être créée (GitHub CLI indisponible). Réessayez pour la créer.","iteratingPr":"Mise à jour de la PR","prReady":"PR prête","implementationFailed":"Échec de l’implémentation","implementationFailedHint":"Le run d’implémentation a échoué. Ouvrez le journal du run, puis abandonnez cette carte avant de relancer.","prFailed":"PR en échec","prFailedDetail":"PR en échec : {{detail}}","createDegraded":"Impossible de publier la PR — {{detail}}. Réessayez une fois le problème résolu.","createPr":"Créer la PR","createPrTooltip":"→ {{base}}","publish":"Publier","publishTooltip":"Ouvre la PR en brouillon pour la relecture de l'équipe","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","recoverAndRetryConfirmTitle":"Créer le commit et envoyer le résultat préservé ?","recoverAndRetryConfirmBody":"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.","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","recheckRecoveryConfirmTitle":"Vérifier à nouveau cet ordinateur ?","recheckRecoveryConfirmBody":"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é.","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","discard":"Abandonner","discardTooltip":"Ferme la livraison et renvoie ses tickets vers Specs ; le travail local modifié est conservé","retryPr":"Réessayer la PR","retry":"Réessayer","checkMerge":"Vérifier le merge","verifyPr":"Vérifier la PR","verifyPrTooltip":"Vérifier le commit exact dans GitHub et si la PR est fusionnée","checkMergeTooltip":"Demande à GitHub si la PR a été fusionnée","prLinkFallback":"PR","openPrTitle":"Ouvrir la PR sur GitHub","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","alreadyResolved":"Déjà résolue ailleurs","ghFailed":"GitHub CLI a échoué : {{detail}}","actionFailed":"Impossible d'appliquer la décision de la PR","mergedToast":"PR fusionnée — tickets passés en Terminé","discardedToast":"PR abandonnée — tickets renvoyés vers Specs","decisionPending":"Ce rail a une décision de PR en attente — créez, publiez ou abandonnez-la avant de relancer","discardConfirmTitle":"Abandonner cette livraison ?","discardConfirmBody":"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 tickets retourneront dans le backlog Specs. 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 tickets retourneront vers Specs. 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.","mergeLocal":"Intégrer en local","mergeLocalTooltip":"Fusionne les branches livrées dans {{base}} dans votre checkout local (sans GitHub)","mergeLocalConfirmTitle":"Intégrer en local ?","mergeLocalConfirmBody":"Les branches livrées seront fusionnées dans {{base}} dans votre checkout local. Votre checkout doit être sur {{base}} avec un arbre de travail propre.","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.","mergeLocalFailed":"La fusion locale a échoué : {{detail}}","mergedLocally":"Intégré dans {{base}} en local"}`),n={title:`Rails`,runningCount_one:`{{count}} en cours`,runningCount_other:`{{count}} en cours`,launchAll:`Tout lancer`,launchAllTitle:`Lance en parallèle tous les rails prêts — chaque exécution est isolée dans son propre worktree git`},r={skipRunning_one:`{{count}} déjà en cours`,skipRunning_other:`{{count}} déjà en cours`,skipEmpty_one:`{{count}} sans specs`,skipEmpty_other:`{{count}} sans specs`,skipPendingDecision_one:`{{count}} en attente d'une décision de PR`,skipPendingDecision_other:`{{count}} en attente d'une décision de PR`,skipOnReview_one:`{{count}} avec des specs en revue`,skipOnReview_other:`{{count}} avec des specs en revue`,skipInFlight_one:`{{count}} ignoré (spec déjà en cours)`,skipInFlight_other:`{{count}} ignorés (specs déjà en cours)`,failedCount_one:`{{count}} en échec`,failedCount_other:`{{count}} en échec`},i={title:`Lancer tous les rails`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rails`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} specs`,isolationTitle:`Parallèle et isolé.`,isolationBody:`Chaque rail s'exécute dans son propre worktree git — les lancements simultanés n'entrent jamais en collision.`,pipelinesTitle_one:`{{count}} pipeline IA.`,pipelinesTitle_other:`{{count}} pipelines IA.`,pipelinesBody:`Un lancement par rail, chacun avec son mode, son moteur et son profil configurés.`,costTitle:`Coût multiplié.`,costBody:`Chaque rail génère sa propre exécution IA — la dépense augmente avec le nombre de rails.`,launch_one:`Lancer {{count}} rail`,launch_other:`Lancer {{count}} rails`},a={viewJobLog:`Voir le log du job`,log:`Log`,implement:`Implémenter`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — le fournisseur sélectionné implémente la spec en autonomie, sans pipeline`,loop:`Loop`,loopTitle:`Loop — exécute une boucle d'automatisation publiée sur les specs du rail`,pickLoop:`Choisir une boucle…`,effortTitle:`Effort de raisonnement`,stop:`Arrêter`,play:`Lancer`,failedRetry:`Job en échec — cliquez pour réessayer`,addSpecsFirst:`Ajoutez d'abord des specs à ce rail`,builtInLoops:`Intégrés`,customLoops:`Loops personnalisés`,worktreesMerged:`{{count}} fusionnés`,worktreesNeedsReview:`{{count}} à vérifier`,execSteps:`{{count}} étapes`,execLines:`{{count}} lignes`,openspec:`OpenSpec`},o={moveToSpecs:`Déplacer vers Specs`,deleteRail:`Supprimer {{label}}`,dropHere:`Déposer ici`,dropOnThisRail:`Déposer sur ce rail`,dragSpecsHere:`Glissez des specs ici`},s={title:`Lancer en mode Freestyle`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} specs`,noPipelineTitle:`Pas de pipeline OpenSpec.`,noPipelineBody:`Le flux structuré architecte → développeur → reviewer est entièrement ignoré.`,autonomyTitle:`Autonomie native de {{provider}}.`,autonomyBody:`{{provider}} travaille seul avec ses agents natifs et des workflows dynamiques.`,costTitle:`Coût variable.`,costBody:`La dépense dépend de ce que {{provider}} décide de faire — elle peut être plus élevée que prévu.`,continue:`Continuer`},c={fetchFailed:`Échec de la récupération des rails : {{status}}`},l={chipNew:`Nouvelle PR`,chipTitle:`Livrer dans une PR existante`,clear:`Retirer la PR cible`,newPr:`Nouvelle PR (par défaut)`,loading:`Chargement des PR ouvertes…`,none:`Aucune PR ouverte trouvée`,fork:`Fork — push impossible`,manualPlaceholder:`Numéro de PR`,manualUse:`Utiliser`,confirmTitle:`Livrer dans la PR existante ?`,confirmBody:`Cette exécution travaille sur la branche head de la PR et pousse dedans — aucune nouvelle PR n'est créée.`,confirmBranch:`Branche head`,confirmLaunch:`Lancer vers la PR #{{number}}`,errors:{invalid_target_pr:`Numéro de PR invalide`,target_pr_requires_pr_mode:`Livrer dans une PR existante nécessite le flux PR isolé`,target_pr_not_found:`PR introuvable sur ce dépôt`,target_pr_not_open:`Cette PR n'est plus ouverte`,target_pr_fork:`Cette PR provient d'un fork et ne peut pas recevoir de push`,target_pr_invalid:`Les branches de la PR sont inutilisables comme cible de livraison`,target_pr_unfetchable:`Impossible de récupérer la branche head de la PR`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
@@ -1 +0,0 @@
1
- var e={railAdded:`Rail {{n}} adicionado`,railRemoved:`{{rail}} removido`,railLimitReached:`Limite de rails atingido ({{max}} máx.)`,railDeleteFailed:`Não foi possível remover o rail — ele contém specs, está em execução ou tem uma decisão de PR pendente`,launchTicketsInFlight:`Uma spec deste rail já está sendo trabalhada por uma execução ativa`,launchTicketCap:`Este trilho tem {{count}} specs — um lançamento aceita no máximo {{max}} por trilho. Distribua-as entre trilhos.`,launchAllSummary_one:`{{count}} rail lançado em paralelo`,launchAllSummary_other:`{{count}} rails lançados em paralelo`,launchAllNoneEligible:`Nenhum rail pronto para lançar — atribua specs a um rail livre primeiro`,launchAllFailed:`Nenhum rail pôde ser lançado`,railCompleted:`Rail {{n}} concluído`,railFailed:`Rail {{n}} falhou — specs devolvidas a Specs`,railEnded:`Rail {{n}} {{status}} — specs devolvidas a Specs`,alreadyOnRail:`Já está em {{rail}}`,movedToRail:`Movido para {{rail}}`,railRunningStopFirst:`{{rail}} está em execução — pare-o antes de remover`,removedFromRail:`Removido de {{rail}}`,queuedOnRail:`Em fila em {{rail}}`,queuedOnRailDescription:`O rail está atualmente em execução`,railStopped:`{{rail}} parado`,stopFailed:`Falha ao parar o rail`,syncTicketsFailed:`Falha ao sincronizar os tickets do rail`,launchFailed:`Falha ao lançar o rail`,launchNetworkError:`Erro de rede ao lançar o rail`,railLaunched:`{{rail}} lançado`,launchDescription_one:`{{mode}} com {{count}} spec`,launchDescription_other:`{{mode}} com {{count}} specs`,railWorktreeNeedsReview:`Rail {{n}}: a spec #{{ticket}} precisa de revisão após o merge`,railWorktreesNoGit:`Isolamento por worktree indisponível: este projeto não é um repositório git — executando em modo compartilhado.`,railWorktreesNoCommits:`Isolamento por worktree indisponível: o repositório ainda não tem commits — faça um commit inicial e relance.`,railWorktreesError:`O isolamento por worktrees falhou — esta execução continua SEM o fluxo de revisão por PR (sem cartão de implementação). Veja o detalhe do erro abaixo.`,onReviewCannotMoveToRail:`Esta spec aguarda revisão da PR — resolva primeiro a decisão da PR`,onReviewNotLaunchable:`Uma spec deste rail aguarda revisão da PR — resolva a decisão da PR antes de lançar`},t={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`,completedToast:`Confirmado — as specs foram movidas para Concluído`,markDoneConfirmTitle:`Marcar estas specs como concluídas?`,markDoneConfirmBody:`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.`,refineConfirmTitle:`Refinar estas specs?`,refineConfirmBody:`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.`,localOnly:`Alterações disponíveis localmente`,localOnlyHint:`A implementação foi concluída, mas as alterações não foram enviadas. Integre-as localmente ou tente publicar novamente quando o remoto estiver disponível.`,noChanges:`Nenhuma alteração necessária`,partial:`{{succeeded}} de {{total}} implementações prontas`,createPartialPr:`Criar PR com {{count}}`,deliveryBlocked:`Implementação concluída — a entrega requer atenção`,updateFailed:`Implementação concluída — falha na atualização`,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}}`,prClosed:`PR fechada sem merge`,reopen:`Reabrir`,dismiss:`Encerrar acompanhamento`,discardLocalResult:`Descartar resultado local`,dismissConfirmTitle:`Encerrar este acompanhamento?`,dismissConfirmBody:`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.`,discardLocalConfirmTitle:`Descartar o resultado local?`,discardLocalConfirmBody:`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.`,viewRunLog:`Ver log de execução de {{ref}}`,cleanupIncomplete_one:`Limpeza incompleta ({{count}} aviso)`,cleanupIncomplete_other:`Limpeza incompleta ({{count}} avisos)`,cleanupIncompleteHint:`Os dados de recuperação locais foram preservados. Verifique estes detalhes antes de remover algo manualmente.`,copyCleanupDetails:`Copiar detalhes de recuperação`,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.`,copySafetyArchive:`Copiar caminhos`,unit:{failed:`implementação falhou`,blocked:`entrega bloqueada`,noChanges:`sem alterações`,succeeded:`pronta`},readyForReview:`Pronto para revisão`,openReview:`Revisar`,openReviewTooltip:`Abrir a revisão em linguagem clara`,draftPr:`PR em rascunho`,branchPushed:`Ramo enviado — PR pendente`,branchPushedHint:`O ramo foi enviado mas não foi possível criar a PR (GitHub CLI indisponível). Tente novamente para a criar.`,iteratingPr:`A atualizar PR`,prReady:`PR pronta`,implementationFailed:`Implementação falhou`,implementationFailedHint:`A execução de implementação falhou. Abra o log da execução e descarte este cartão antes de relançar.`,prFailed:`PR falhou`,prFailedDetail:`PR falhou: {{detail}}`,createDegraded:`Não foi possível publicar a PR — {{detail}}. Tente novamente quando estiver resolvido.`,createPr:`Criar PR`,createPrTooltip:`→ {{base}}`,publish:`Publicar`,publishTooltip:`Abre a PR em rascunho para a revisão da equipa`,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`,recoverAndRetryConfirmTitle:`Fazer commit e enviar o resultado preservado?`,recoverAndRetryConfirmBody:`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.`,recoverAndRetryVerified:`O commit recuperado {{sha}} está verificado na PR`,recoveryStillBlocked:`A recuperação local ainda requer atenção`,recheckRecovery:`Verificar novamente`,recheckRecoveryConfirmTitle:`Verificar este computador novamente?`,recheckRecoveryConfirmBody:`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.`,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`,discard:`Descartar`,discardTooltip:`Fecha a entrega e devolve os tickets a Specs; o trabalho local alterado é preservado`,retryPr:`Tentar PR novamente`,retry:`Tentar novamente`,checkMerge:`Verificar merge`,verifyPr:`Verificar PR`,verifyPrTooltip:`Verificar o commit exato no GitHub e se a PR foi integrada`,checkMergeTooltip:`Pergunta ao GitHub se já foi feito merge da PR`,prLinkFallback:`PR`,openPrTitle:`Abrir a PR no GitHub`,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`,alreadyResolved:`Já resolvida noutro lugar`,ghFailed:`GitHub CLI falhou: {{detail}}`,actionFailed:`Não foi possível aplicar a decisão da PR`,mergedToast:`Merge da PR concluído — tickets movidos para Concluído`,discardedToast:`PR descartada — tickets devolvidos a Specs`,decisionPending:`Este rail tem uma decisão de PR pendente — crie, publique ou descarte-a antes de relançar`,discardConfirmTitle:`Descartar esta entrega?`,discardConfirmBody:`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. Os tickets voltarão ao backlog de Specs. Os recursos locais removidos não podem ser recuperados.`,implementationFailedDiscardTitle:`Descartar esta entrega com falha?`,implementationFailedDiscardBody:`O cartão será fechado e os tickets voltarão a Specs. O trabalho local e os branches serão preservados para inspeção. Apenas recursos comprovadamente seguros para limpeza poderão ser removidos.`,mergeLocal:`Integrar localmente`,mergeLocalTooltip:`Faz merge dos branches entregues em {{base}} no seu checkout local (sem GitHub)`,mergeLocalConfirmTitle:`Integrar localmente?`,mergeLocalConfirmBody:`Os branches entregues serão mesclados em {{base}} no seu checkout local. Seu checkout deve estar em {{base}} com a árvore de trabalho limpa.`,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.`,mergeLocalFailed:`O merge local falhou: {{detail}}`,mergedLocally:`Integrado em {{base}} localmente`},n={title:`Rails`,runningCount_one:`{{count}} em execução`,runningCount_other:`{{count}} em execução`,launchAll:`Lançar todos`,launchAllTitle:`Lança em paralelo todos os rails prontos — cada execução é isolada em seu próprio worktree do git`},r={skipRunning_one:`{{count}} já em execução`,skipRunning_other:`{{count}} já em execução`,skipEmpty_one:`{{count}} sem specs`,skipEmpty_other:`{{count}} sem specs`,skipPendingDecision_one:`{{count}} aguardando uma decisão de PR`,skipPendingDecision_other:`{{count}} aguardando uma decisão de PR`,skipOnReview_one:`{{count}} com specs em revisão`,skipOnReview_other:`{{count}} com specs em revisão`,skipInFlight_one:`{{count}} ignorado (spec já em andamento)`,skipInFlight_other:`{{count}} ignorados (specs já em andamento)`,failedCount_one:`{{count}} falhou`,failedCount_other:`{{count}} falharam`},i={title:`Lançar todos os rails`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rails`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} specs`,isolationTitle:`Paralelo e isolado.`,isolationBody:`Cada rail roda em seu próprio worktree do git — lançamentos simultâneos nunca colidem.`,pipelinesTitle_one:`{{count}} pipeline de IA.`,pipelinesTitle_other:`{{count}} pipelines de IA.`,pipelinesBody:`Um lançamento por rail, cada um com seu modo, motor e perfil configurados.`,costTitle:`Custo multiplicado.`,costBody:`Cada rail gera sua própria execução de IA — o gasto escala com o número de rails.`,launch_one:`Lançar {{count}} rail`,launch_other:`Lançar {{count}} rails`},a={viewJobLog:`Ver log do job`,log:`Log`,implement:`Implementar`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — o fornecedor selecionado implementa a spec de forma autónoma, sem pipeline`,loop:`Loop`,loopTitle:`Loop — execute um loop de automação publicado nas specs do rail`,pickLoop:`Escolha um loop…`,effortTitle:`Esforço de raciocínio`,stop:`Parar`,play:`Iniciar`,failedRetry:`O job falhou — clique para repetir`,addSpecsFirst:`Adicione primeiro specs a este rail`,builtInLoops:`Integrados`,customLoops:`Loops personalizados`,worktreesMerged:`{{count}} mesclados`,worktreesNeedsReview:`{{count}} para revisar`,execSteps:`{{count}} passos`,execLines:`{{count}} linhas`,openspec:`OpenSpec`},o={moveToSpecs:`Mover para Specs`,deleteRail:`Eliminar {{label}}`,dropHere:`Largar aqui`,dropOnThisRail:`Largar neste rail`,dragSpecsHere:`Arraste specs para aqui`},s={title:`Lançar em modo Freestyle`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} specs`,noPipelineTitle:`Sem pipeline OpenSpec.`,noPipelineBody:`O fluxo estruturado architect → developer → reviewer é totalmente ignorado.`,autonomyTitle:`Autonomia nativa do {{provider}}.`,autonomyBody:`O {{provider}} trabalha por conta própria com agentes nativos e workflows dinâmicos.`,costTitle:`Custo variável.`,costBody:`O gasto depende do que o {{provider}} decidir fazer — pode ser superior ao esperado.`,continue:`Continuar`},c={fetchFailed:`Falha ao obter os rails: {{status}}`},l={chipNew:`PR nova`,chipTitle:`Entregar em uma PR existente`,clear:`Remover PR alvo`,newPr:`PR nova (padrão)`,loading:`Carregando PRs abertas…`,none:`Nenhuma PR aberta encontrada`,fork:`Fork — não é possível fazer push`,manualPlaceholder:`Número da PR`,manualUse:`Usar`,confirmTitle:`Entregar na PR existente?`,confirmBody:`Esta execução trabalha na branch head da PR e faz push nela — nenhuma PR nova é criada.`,confirmBranch:`Branch head`,confirmLaunch:`Lançar para a PR #{{number}}`,errors:{invalid_target_pr:`Número de PR inválido`,target_pr_requires_pr_mode:`Entregar em uma PR existente exige o fluxo isolado de PR`,target_pr_not_found:`PR não encontrada neste repositório`,target_pr_not_open:`Essa PR não está mais aberta`,target_pr_fork:`Essa PR vem de um fork e não pode receber push`,target_pr_invalid:`As branches da PR não servem como destino de entrega`,target_pr_unfetchable:`Não foi possível buscar a branch head da PR`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};