specrails-desktop 2.58.0 → 2.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/README.md +2 -5
  2. package/client/dist/assets/{ActivityFeedPage-BQGppIR0.js → ActivityFeedPage-DBFt8ZHP.js} +1 -1
  3. package/client/dist/assets/AgentBrowserCapture-DiQx0W67.js +1 -0
  4. package/client/dist/assets/AgentModeAnalyticsPane-BmDSXp_J.js +2 -0
  5. package/client/dist/assets/AgentModeCodePane-BLQLPSwr.js +2 -0
  6. package/client/dist/assets/{AgentModeJobsPane-DR_06oqH.js → AgentModeJobsPane-BbTXdKUa.js} +1 -1
  7. package/client/dist/assets/{AgentsPage-BKIKjm_1.js → AgentsPage-Dei1jGR8.js} +3 -3
  8. package/client/dist/assets/{AnalyticsPage-069npRVo.js → AnalyticsPage-BhkeGIGn.js} +1 -1
  9. package/client/dist/assets/CodePage-B_9yYWUx.js +3 -0
  10. package/client/dist/assets/{DesktopAnalyticsPage-qtWAPM47.js → DesktopAnalyticsPage-DAcfEJac.js} +1 -1
  11. package/client/dist/assets/DocsDialog-WCuiYgsc.js +11 -0
  12. package/client/dist/assets/DocsPage-bGVYTMTU.js +11 -0
  13. package/client/dist/assets/{ExportDropdown-BcMpvV89.js → ExportDropdown-CsodZ-yb.js} +1 -1
  14. package/client/dist/assets/InteractiveJobComposer-D5fh_eVL.js +19 -0
  15. package/client/dist/assets/JobDetailModal-DlpXF61O.js +1 -0
  16. package/client/dist/assets/JobDetailPage-2yR19_Lb.js +1 -0
  17. package/client/dist/assets/JobsPage-CS9IR6Dq.js +1 -0
  18. package/client/dist/assets/LoopBuilderPage-BwiAtmOr.js +1 -0
  19. package/client/dist/assets/{LoopPreviewModal-je5pSCf-.js → LoopPreviewModal--upwvgTv.js} +1 -1
  20. package/client/dist/assets/LoopWindowSurface-DRnUixtl.js +1 -0
  21. package/client/dist/assets/LoopsPage-Xm3nRToQ.js +2 -0
  22. package/client/dist/assets/MinimizedChatsContext-D_8L4EWZ.js +1 -0
  23. package/client/dist/assets/PluginsPage-CAFQ1B4Q.js +2 -0
  24. package/client/dist/assets/ProjectSettingsDialog-DYSO4v90.js +1 -0
  25. package/client/dist/assets/{RepositoryDeliveries-BiwJuS8r.js → RepositoryDeliveries-CbQmW7Qx.js} +1 -1
  26. package/client/dist/assets/RepositoryScopeSelector-DKzvIGSZ.js +2 -0
  27. package/client/dist/assets/ReviewPacketPage-SDBhYdQB.js +4 -0
  28. package/client/dist/assets/TemplatePreviewModal-DHBUds51.js +1 -0
  29. package/client/dist/assets/TicketDetailModalContext-UAeNm7BB.js +16 -0
  30. package/client/dist/assets/{Trans-D3AfDylf.js → Trans-DExd3Z00.js} +1 -1
  31. package/client/dist/assets/agent-BElLtdKP.js +1 -0
  32. package/client/dist/assets/agent-C-m9VugX.js +1 -0
  33. package/client/dist/assets/agent-CGSKxfZk.js +1 -0
  34. package/client/dist/assets/agent-CW74ODDP.js +1 -0
  35. package/client/dist/assets/agent-DeCAZDhL.js +1 -0
  36. package/client/dist/assets/agent-DrM4qned.js +1 -0
  37. package/client/dist/assets/agent-KdIXq3w5.js +1 -0
  38. package/client/dist/assets/agent-jK8mCisM.js +1 -0
  39. package/client/dist/assets/{agentRuntime-DGz_IqKW.js → agentRuntime-15Pkk6we.js} +1 -1
  40. package/client/dist/assets/agentRuntime-Bpx3yWHK.js +1 -0
  41. package/client/dist/assets/{agentRuntime-Bg9tbmqm.js → agentRuntime-C78n13To.js} +1 -1
  42. package/client/dist/assets/{agentRuntime-D-GJVGkj.js → agentRuntime-CCI7XF4c.js} +1 -1
  43. package/client/dist/assets/{agentRuntime-D2__CVI_.js → agentRuntime-CKDHe2-a.js} +1 -1
  44. package/client/dist/assets/{agentRuntime-D35dGVOP.js → agentRuntime-Ddqvp2bP.js} +1 -1
  45. package/client/dist/assets/{agentRuntime-hInH9Fzj.js → agentRuntime-TXPQowKJ.js} +1 -1
  46. package/client/dist/assets/{agentRuntime-O1liDt6G.js → agentRuntime-hqZRy08E.js} +1 -1
  47. package/client/dist/assets/{builder-DGETbtZj.js → builder-B9gorTnT.js} +1 -1
  48. package/client/dist/assets/{builder-DyQperXU.js → builder-Bvw5s3Mi.js} +1 -1
  49. package/client/dist/assets/{builder-C1neIYGR.js → builder-CL5l4dU3.js} +1 -1
  50. package/client/dist/assets/{builder-DXEJUlC0.js → builder-CVDTVrQX.js} +1 -1
  51. package/client/dist/assets/{builder-CzW5ovyI.js → builder-CpS9liE9.js} +1 -1
  52. package/client/dist/assets/{builder-CvnFm0im.js → builder-DNctIL9Q.js} +1 -1
  53. package/client/dist/assets/{builder-D06L7iPy.js → builder-De2NxX6o.js} +1 -1
  54. package/client/dist/assets/{builder-C0FyvM83.js → builder-DeYT7Y-m.js} +1 -1
  55. package/client/dist/assets/{button-Ccc9Dc-D.js → button-D1xExSTF.js} +1 -1
  56. package/client/dist/assets/{common-DmsclwjP.js → common-Bdi0qN4S.js} +1 -1
  57. package/client/dist/assets/{common-C4Yvvhp6.js → common-Bhb9zN1P.js} +1 -1
  58. package/client/dist/assets/{common-od8WThlf.js → common-BykKlZg1.js} +1 -1
  59. package/client/dist/assets/{common-C0BOdeNi.js → common-CvnNNSJA.js} +1 -1
  60. package/client/dist/assets/{common-BCK7c9Pv.js → common-D5zk_mqq.js} +1 -1
  61. package/client/dist/assets/{common-DpLWwgI1.js → common-DQNO_al5.js} +1 -1
  62. package/client/dist/assets/{common-OCvl3c8t.js → common-Dax30Vmp.js} +1 -1
  63. package/client/dist/assets/{common-c0aujEZC.js → common-DkllpVSb.js} +1 -1
  64. package/client/dist/assets/{dialog-xXB2q5HJ.js → dialog-CMgps2MY.js} +1 -1
  65. package/client/dist/assets/external-link-D6XxC_Cu.js +1 -0
  66. package/client/dist/assets/file-text-BcLCfcWZ.js +1 -0
  67. package/client/dist/assets/{formatDistanceToNow-aBss1Nai.js → formatDistanceToNow-aw7H5ORC.js} +1 -1
  68. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-DOGj1Mfz.js → getTimezoneOffsetInMilliseconds-NyC7gZJX.js} +1 -1
  69. package/client/dist/assets/index-CahchzS5.css +2 -0
  70. package/client/dist/assets/index-JSTZVJfe.js +83 -0
  71. package/client/dist/assets/integrations-BkpRUbvp.js +1 -0
  72. package/client/dist/assets/integrations-Bo8qbJf4.js +1 -0
  73. package/client/dist/assets/integrations-CmSrKzZb.js +1 -0
  74. package/client/dist/assets/integrations-DGtq26Rr.js +1 -0
  75. package/client/dist/assets/integrations-De38GFnQ.js +1 -0
  76. package/client/dist/assets/integrations-Dw6zdtb-.js +1 -0
  77. package/client/dist/assets/integrations-Dwl9KQp0.js +1 -0
  78. package/client/dist/assets/integrations-Refg_d2I.js +1 -0
  79. package/client/dist/assets/jira-api-DlXaRwA3.js +1 -0
  80. package/client/dist/assets/{jobs-KG4Sn12X.js → jobs-1G3wodhl.js} +1 -1
  81. package/client/dist/assets/{jobs-6_-r75yC.js → jobs-B4pu8TdF.js} +1 -1
  82. package/client/dist/assets/{jobs-pPv4KWjb.js → jobs-BD47Ov11.js} +1 -1
  83. package/client/dist/assets/{jobs-B1yqyId5.js → jobs-BLOoVRRl.js} +1 -1
  84. package/client/dist/assets/{jobs-BKiK-ZWh.js → jobs-CSrRx5lD.js} +1 -1
  85. package/client/dist/assets/{jobs-BFuV7ttH.js → jobs-DZAbh1m2.js} +1 -1
  86. package/client/dist/assets/{jobs-DmKV7b7d.js → jobs-epP7gt8W.js} +1 -1
  87. package/client/dist/assets/{jobs-BKa8LuwA.js → jobs-tWjcDF_6.js} +1 -1
  88. package/client/dist/assets/loops--KWr0X-w.js +1 -0
  89. package/client/dist/assets/{loops-BO3V8244.js → loops-3IutojWt.js} +1 -1
  90. package/client/dist/assets/{loops-C-hZK8pf.js → loops-BAosWtXE.js} +1 -1
  91. package/client/dist/assets/{loops-eUnCfLjC.js → loops-BISDssL5.js} +1 -1
  92. package/client/dist/assets/{loops-Dv849ckF.js → loops-Cm55CXJ4.js} +1 -1
  93. package/client/dist/assets/{loops-CDOWZ0ci.js → loops-D7tL_Saw.js} +1 -1
  94. package/client/dist/assets/{loops-BJDY9FTh.js → loops-DHQtnfze.js} +1 -1
  95. package/client/dist/assets/{loops-Q9LIgGkq.js → loops-kIJJkaxf.js} +1 -1
  96. package/client/dist/assets/nav--u7iPYlS.js +1 -0
  97. package/client/dist/assets/nav-C5Jgfaby.js +1 -0
  98. package/client/dist/assets/nav-CAna_Wpt.js +1 -0
  99. package/client/dist/assets/nav-CCLqeyHo.js +1 -0
  100. package/client/dist/assets/nav-Cf3c90Jk.js +1 -0
  101. package/client/dist/assets/nav-DMYQaQjR.js +1 -0
  102. package/client/dist/assets/nav-Df_PkZ9F.js +1 -0
  103. package/client/dist/assets/nav-VyNGBJwj.js +1 -0
  104. package/client/dist/assets/{project-repositories-CSnfzUpg.js → project-repositories-DXhb9FP4.js} +1 -1
  105. package/client/dist/assets/provider-capabilities-lePfeT_Y.js +1 -0
  106. package/client/dist/assets/save-OsUqVn99.js +1 -0
  107. package/client/dist/assets/settings-B5Hy_Kol.js +1 -0
  108. package/client/dist/assets/settings-BBj_kZaD.js +1 -0
  109. package/client/dist/assets/settings-ByVE7jdZ.js +1 -0
  110. package/client/dist/assets/settings-COlH_P33.js +1 -0
  111. package/client/dist/assets/settings-D77mC_Lb.js +1 -0
  112. package/client/dist/assets/settings-DZKy7MqN.js +1 -0
  113. package/client/dist/assets/settings-Dbyd6gmj.js +1 -0
  114. package/client/dist/assets/settings-Dn-pXukr.js +1 -0
  115. package/client/dist/assets/setup-Be485n2u.js +1 -0
  116. package/client/dist/assets/setup-CKGUxKr-.js +1 -0
  117. package/client/dist/assets/setup-Ck1Uwd7_.js +1 -0
  118. package/client/dist/assets/setup-Cm774a6v.js +1 -0
  119. package/client/dist/assets/setup-DIqMQpxt.js +1 -0
  120. package/client/dist/assets/setup-DfCsoNFL.js +1 -0
  121. package/client/dist/assets/setup-DkeE8mP0.js +1 -0
  122. package/client/dist/assets/setup-xVntVaz1.js +1 -0
  123. package/client/dist/assets/{spending-HBSk-6jv.js → spending-BdcyVkcd.js} +1 -1
  124. package/client/dist/assets/subscriptionUsage-Cf87DeS_.js +1 -0
  125. package/client/dist/assets/subscriptionUsage-D6u7VBdz.js +1 -0
  126. package/client/dist/assets/subscriptionUsage-DQ02J25O.js +1 -0
  127. package/client/dist/assets/subscriptionUsage-DWF3zKp4.js +1 -0
  128. package/client/dist/assets/subscriptionUsage-DkIf6Zuh.js +1 -0
  129. package/client/dist/assets/subscriptionUsage-DoWQv7l1.js +1 -0
  130. package/client/dist/assets/subscriptionUsage-N9hB-ARf.js +1 -0
  131. package/client/dist/assets/subscriptionUsage-zRcRPHkP.js +1 -0
  132. package/client/dist/assets/tauri-shell-DE6LfGPw.js +2 -0
  133. package/client/dist/assets/{useDesktop-0unHDBJJ.js → useDesktop-D07TvesS.js} +1 -1
  134. package/client/dist/assets/{useRuntimeRuns-BN1rhyEm.js → useRuntimeRuns-pGLmtAC6.js} +1 -1
  135. package/client/dist/assets/useSharedWebSocket-TzKtPRp9.js +2 -0
  136. package/client/dist/index.html +33 -32
  137. package/docs/README.md +1 -9
  138. package/docs/agent-live-steering.md +0 -6
  139. package/docs/agents/README.md +0 -2
  140. package/docs/agents/mcp.md +1 -14
  141. package/docs/cli.md +0 -13
  142. package/docs/codex.md +2 -75
  143. package/docs/creating-specs.md +0 -39
  144. package/docs/customizing.md +1 -15
  145. package/docs/getting-started.md +0 -23
  146. package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +0 -8
  147. package/docs/guide/de/agents/4-custom-agents-catalog.md +0 -15
  148. package/docs/guide/de/getting-started/1-what-is-specrails.md +0 -2
  149. package/docs/guide/de/getting-started/2-installing-and-first-run.md +0 -2
  150. package/docs/guide/de/getting-started/3-adding-your-first-project.md +0 -4
  151. package/docs/guide/de/getting-started/4-the-dashboard-tour.md +0 -5
  152. package/docs/guide/de/integrations/1-ai-providers.md +2 -50
  153. package/docs/guide/de/integrations/2-plugins.md +0 -8
  154. package/docs/guide/de/integrations/5-mcp-server.md +1 -14
  155. package/docs/guide/de/integrations/6-agent-chat.md +0 -11
  156. package/docs/guide/de/integrations/7-local-engines.md +0 -4
  157. package/docs/guide/de/pipeline/1-rails-and-jobs.md +0 -13
  158. package/docs/guide/de/pipeline/2-the-job-detail-view.md +0 -3
  159. package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +0 -20
  160. package/docs/guide/de/pipeline/5-the-loop-builder.md +0 -6
  161. package/docs/guide/de/specs/2-add-spec-quick-mode.md +0 -7
  162. package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +0 -10
  163. package/docs/guide/en/agents/4-custom-agents-catalog.md +0 -25
  164. package/docs/guide/en/getting-started/1-what-is-specrails.md +0 -2
  165. package/docs/guide/en/getting-started/2-installing-and-first-run.md +0 -2
  166. package/docs/guide/en/getting-started/3-adding-your-first-project.md +0 -4
  167. package/docs/guide/en/getting-started/4-the-dashboard-tour.md +0 -5
  168. package/docs/guide/en/insights/3-code-explorer.md +0 -5
  169. package/docs/guide/en/integrations/1-ai-providers.md +10 -99
  170. package/docs/guide/en/integrations/2-plugins.md +0 -8
  171. package/docs/guide/en/integrations/5-mcp-server.md +1 -1
  172. package/docs/guide/en/integrations/6-agent-chat.md +0 -17
  173. package/docs/guide/en/integrations/7-local-engines.md +0 -4
  174. package/docs/guide/en/pipeline/1-rails-and-jobs.md +2 -24
  175. package/docs/guide/en/pipeline/2-the-job-detail-view.md +0 -3
  176. package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +10 -65
  177. package/docs/guide/en/pipeline/5-the-loop-builder.md +0 -7
  178. package/docs/guide/en/specs/2-add-spec-quick-mode.md +0 -11
  179. package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +0 -8
  180. package/docs/guide/es/agents/4-custom-agents-catalog.md +0 -15
  181. package/docs/guide/es/getting-started/1-what-is-specrails.md +0 -2
  182. package/docs/guide/es/getting-started/2-installing-and-first-run.md +0 -2
  183. package/docs/guide/es/getting-started/3-adding-your-first-project.md +0 -4
  184. package/docs/guide/es/getting-started/4-the-dashboard-tour.md +0 -5
  185. package/docs/guide/es/integrations/1-ai-providers.md +10 -75
  186. package/docs/guide/es/integrations/2-plugins.md +0 -8
  187. package/docs/guide/es/integrations/5-mcp-server.md +1 -1
  188. package/docs/guide/es/integrations/6-agent-chat.md +0 -11
  189. package/docs/guide/es/integrations/7-local-engines.md +0 -4
  190. package/docs/guide/es/pipeline/1-rails-and-jobs.md +3 -13
  191. package/docs/guide/es/pipeline/2-the-job-detail-view.md +0 -3
  192. package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +10 -53
  193. package/docs/guide/es/pipeline/5-the-loop-builder.md +1 -6
  194. package/docs/guide/es/specs/2-add-spec-quick-mode.md +0 -7
  195. package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +0 -8
  196. package/docs/guide/fr/agents/4-custom-agents-catalog.md +0 -15
  197. package/docs/guide/fr/getting-started/1-what-is-specrails.md +0 -2
  198. package/docs/guide/fr/getting-started/2-installing-and-first-run.md +0 -2
  199. package/docs/guide/fr/getting-started/3-adding-your-first-project.md +0 -4
  200. package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +0 -5
  201. package/docs/guide/fr/integrations/1-ai-providers.md +2 -50
  202. package/docs/guide/fr/integrations/2-plugins.md +0 -8
  203. package/docs/guide/fr/integrations/5-mcp-server.md +1 -14
  204. package/docs/guide/fr/integrations/6-agent-chat.md +0 -11
  205. package/docs/guide/fr/integrations/7-local-engines.md +0 -4
  206. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +0 -13
  207. package/docs/guide/fr/pipeline/2-the-job-detail-view.md +0 -3
  208. package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +0 -22
  209. package/docs/guide/fr/pipeline/5-the-loop-builder.md +0 -6
  210. package/docs/guide/fr/specs/2-add-spec-quick-mode.md +0 -7
  211. package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +0 -8
  212. package/docs/guide/it/agents/4-custom-agents-catalog.md +0 -15
  213. package/docs/guide/it/getting-started/1-what-is-specrails.md +0 -2
  214. package/docs/guide/it/getting-started/2-installing-and-first-run.md +0 -2
  215. package/docs/guide/it/getting-started/3-adding-your-first-project.md +0 -4
  216. package/docs/guide/it/getting-started/4-the-dashboard-tour.md +0 -5
  217. package/docs/guide/it/integrations/1-ai-providers.md +2 -48
  218. package/docs/guide/it/integrations/2-plugins.md +0 -8
  219. package/docs/guide/it/integrations/5-mcp-server.md +1 -14
  220. package/docs/guide/it/integrations/6-agent-chat.md +0 -11
  221. package/docs/guide/it/integrations/7-local-engines.md +0 -4
  222. package/docs/guide/it/pipeline/1-rails-and-jobs.md +2 -13
  223. package/docs/guide/it/pipeline/2-the-job-detail-view.md +0 -3
  224. package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +0 -20
  225. package/docs/guide/it/pipeline/5-the-loop-builder.md +1 -6
  226. package/docs/guide/it/specs/2-add-spec-quick-mode.md +0 -7
  227. package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +0 -9
  228. package/docs/guide/ja/agents/4-custom-agents-catalog.md +0 -15
  229. package/docs/guide/ja/getting-started/1-what-is-specrails.md +0 -2
  230. package/docs/guide/ja/getting-started/2-installing-and-first-run.md +0 -2
  231. package/docs/guide/ja/getting-started/3-adding-your-first-project.md +0 -4
  232. package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +0 -5
  233. package/docs/guide/ja/integrations/1-ai-providers.md +1 -69
  234. package/docs/guide/ja/integrations/2-plugins.md +0 -8
  235. package/docs/guide/ja/integrations/5-mcp-server.md +1 -14
  236. package/docs/guide/ja/integrations/6-agent-chat.md +0 -10
  237. package/docs/guide/ja/integrations/7-local-engines.md +0 -4
  238. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +0 -13
  239. package/docs/guide/ja/pipeline/2-the-job-detail-view.md +0 -3
  240. package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +0 -21
  241. package/docs/guide/ja/pipeline/5-the-loop-builder.md +0 -6
  242. package/docs/guide/ja/specs/2-add-spec-quick-mode.md +0 -7
  243. package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +0 -8
  244. package/docs/guide/pt/agents/4-custom-agents-catalog.md +0 -15
  245. package/docs/guide/pt/getting-started/1-what-is-specrails.md +0 -2
  246. package/docs/guide/pt/getting-started/2-installing-and-first-run.md +0 -2
  247. package/docs/guide/pt/getting-started/3-adding-your-first-project.md +0 -4
  248. package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +0 -5
  249. package/docs/guide/pt/integrations/1-ai-providers.md +2 -48
  250. package/docs/guide/pt/integrations/2-plugins.md +0 -8
  251. package/docs/guide/pt/integrations/5-mcp-server.md +1 -14
  252. package/docs/guide/pt/integrations/6-agent-chat.md +0 -10
  253. package/docs/guide/pt/integrations/7-local-engines.md +0 -4
  254. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +0 -13
  255. package/docs/guide/pt/pipeline/2-the-job-detail-view.md +0 -2
  256. package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +0 -21
  257. package/docs/guide/pt/pipeline/5-the-loop-builder.md +0 -6
  258. package/docs/guide/pt/specs/2-add-spec-quick-mode.md +0 -7
  259. package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +0 -7
  260. package/docs/guide/zh/agents/4-custom-agents-catalog.md +0 -15
  261. package/docs/guide/zh/getting-started/1-what-is-specrails.md +0 -2
  262. package/docs/guide/zh/getting-started/2-installing-and-first-run.md +0 -2
  263. package/docs/guide/zh/getting-started/3-adding-your-first-project.md +0 -4
  264. package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +0 -5
  265. package/docs/guide/zh/integrations/1-ai-providers.md +1 -67
  266. package/docs/guide/zh/integrations/2-plugins.md +0 -8
  267. package/docs/guide/zh/integrations/5-mcp-server.md +1 -14
  268. package/docs/guide/zh/integrations/6-agent-chat.md +0 -9
  269. package/docs/guide/zh/integrations/7-local-engines.md +0 -4
  270. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +0 -13
  271. package/docs/guide/zh/pipeline/2-the-job-detail-view.md +0 -2
  272. package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +0 -20
  273. package/docs/guide/zh/pipeline/5-the-loop-builder.md +0 -6
  274. package/docs/guide/zh/specs/2-add-spec-quick-mode.md +0 -7
  275. package/docs/internals/adding-a-provider.md +7 -0
  276. package/docs/internals/desktop-owned-workflows.md +121 -0
  277. package/docs/internals/operations-runbook.md +20 -0
  278. package/docs/internals/programmatic-agent-runtime.md +34 -28
  279. package/docs/internals/project-builder.md +34 -11
  280. package/docs/internals/source-map.md +51 -3
  281. package/docs/internals/spec-addenda.md +11 -5
  282. package/docs/local-providers.md +8 -13
  283. package/docs/mcp.md +1 -17
  284. package/docs/platforms/macos.md +0 -40
  285. package/docs/platforms/windows-parity.md +1 -1
  286. package/docs/platforms/windows.md +0 -8
  287. package/docs/running-pipelines.md +1 -46
  288. package/docs/subscription-usage.md +19 -0
  289. package/docs/terminal.md +0 -2
  290. package/docs/tracking-cost.md +2 -33
  291. package/package.json +1 -1
  292. package/server/dist/core-execution.js +24 -15
  293. package/server/dist/desktop-db.js +23 -10
  294. package/server/dist/desktop-router.js +8 -4
  295. package/server/dist/index.js +10 -5
  296. package/server/dist/mcp/guide.js +1 -0
  297. package/server/dist/mcp/tools/jobs.js +1 -1
  298. package/server/dist/mcp/tools/loops.js +2 -0
  299. package/server/dist/mcp/tools/meta.js +6 -7
  300. package/server/dist/mcp/tools/projects.js +31 -6
  301. package/server/dist/mcp/tools/rails.js +6 -3
  302. package/server/dist/mcp/tools/setup.js +10 -0
  303. package/server/dist/mcp/tools/specs.js +1 -1
  304. package/server/dist/modules/accounting/runtime/pricing.js +6 -1
  305. package/server/dist/modules/agent-runtime/runtime/agent-runtime-bridge.js +55 -12
  306. package/server/dist/modules/agent-runtime/runtime/agent-runtime-metrics.js +1 -1
  307. package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings-router.js +1 -1
  308. package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings.js +42 -0
  309. package/server/dist/modules/agent-runtime/runtime/agent-runtime-verification-suggestions.js +10 -4
  310. package/server/dist/modules/builder/runtime/milestone-chain.js +76 -10
  311. package/server/dist/modules/delivery/runtime/delivery-evidence.js +3 -2
  312. package/server/dist/modules/delivery/runtime/multi-repo-execution.js +3 -0
  313. package/server/dist/modules/delivery/runtime/rail-isolated-launch.js +1 -0
  314. package/server/dist/modules/delivery/runtime/rail-launch-parser.js +8 -0
  315. package/server/dist/modules/delivery/runtime/rails-router.js +48 -26
  316. package/server/dist/modules/delivery/runtime/review-packet.js +1 -1
  317. package/server/dist/modules/loops/runtime/loop-agent-defaults.json +6 -0
  318. package/server/dist/modules/loops/runtime/loop-agents.js +21 -0
  319. package/server/dist/modules/loops/runtime/loop-command-catalog.js +1 -1
  320. package/server/dist/modules/loops/runtime/loop-core-factory.js +19 -3
  321. package/server/dist/modules/loops/runtime/loop-definition.js +79 -12
  322. package/server/dist/modules/loops/runtime/loop-effect.js +1 -1
  323. package/server/dist/modules/loops/runtime/loop-executors.js +24 -9
  324. package/server/dist/modules/loops/runtime/loop-factory.js +1 -1
  325. package/server/dist/modules/loops/runtime/loop-graph.js +5 -14
  326. package/server/dist/modules/loops/runtime/loop-implement-recipe.js +49 -0
  327. package/server/dist/modules/loops/runtime/loop-run-manager.js +3 -3
  328. package/server/dist/modules/loops/runtime/loop-templates.js +29 -5
  329. package/server/dist/modules/loops/runtime/loops-router.js +17 -0
  330. package/server/dist/modules/missions/runtime/agent-context-resolver.js +1 -1
  331. package/server/dist/modules/missions/runtime/agent-operator-prompt.js +17 -8
  332. package/server/dist/modules/specs/runtime/spec-models.js +4 -7
  333. package/server/dist/modules/subscription-usage/adapters/claude.js +113 -0
  334. package/server/dist/modules/subscription-usage/adapters/codex.js +164 -0
  335. package/server/dist/modules/subscription-usage/adapters/errors.js +15 -0
  336. package/server/dist/modules/subscription-usage/adapters/http.js +20 -0
  337. package/server/dist/modules/subscription-usage/adapters/local-auth.js +61 -0
  338. package/server/dist/modules/subscription-usage/application.js +11 -0
  339. package/server/dist/modules/subscription-usage/domain.js +70 -0
  340. package/server/dist/modules/subscription-usage/index.js +2 -0
  341. package/server/dist/modules/subscription-usage/ports.js +2 -0
  342. package/server/dist/modules/subscription-usage/runtime/composition.js +20 -0
  343. package/server/dist/modules/subscription-usage/runtime/usage-service.js +111 -0
  344. package/server/dist/project-registry.js +16 -1
  345. package/server/dist/project-repositories.js +51 -2
  346. package/server/dist/project-router-helpers.js +1 -1
  347. package/server/dist/project-router-loop-runs.js +4 -1
  348. package/server/dist/providers/claude-adapter.js +6 -4
  349. package/server/dist/providers/codex-adapter.js +4 -5
  350. package/server/dist/schemas/workflow-definition.schema.json +2 -0
  351. package/client/dist/assets/AgentBrowserCapture-PI-cxyxi.js +0 -1
  352. package/client/dist/assets/AgentModeAnalyticsPane-mQsOqdXx.js +0 -2
  353. package/client/dist/assets/AgentModeCodePane-BL-vpmlY.js +0 -2
  354. package/client/dist/assets/CodePage-Alitorrv.js +0 -3
  355. package/client/dist/assets/DocsDialog-DwL6rgcT.js +0 -11
  356. package/client/dist/assets/DocsPage-BA1hiJZ-.js +0 -11
  357. package/client/dist/assets/InteractiveJobComposer-B3H1YHr6.js +0 -19
  358. package/client/dist/assets/JobDetailModal-XZQ9eAAy.js +0 -1
  359. package/client/dist/assets/JobDetailPage-B-SIaq_q.js +0 -1
  360. package/client/dist/assets/JobsPage-iQXAv2mx.js +0 -1
  361. package/client/dist/assets/LoopBuilderPage-B_gbFAHn.js +0 -1
  362. package/client/dist/assets/LoopsPage-BZwcY5cu.js +0 -2
  363. package/client/dist/assets/MinimizedChatsContext-CNx_0bZu.js +0 -1
  364. package/client/dist/assets/PluginsPage-DFocnoHX.js +0 -2
  365. package/client/dist/assets/ProjectSettingsDialog-Bh3S6EBB.js +0 -1
  366. package/client/dist/assets/RepositoryScopeSelector-C2mvWBQ6.js +0 -1
  367. package/client/dist/assets/ReviewPacketPage-CrAf-WDy.js +0 -4
  368. package/client/dist/assets/TemplatePreviewModal-C7DordpN.js +0 -1
  369. package/client/dist/assets/TicketDetailModalContext-B-DySpKL.js +0 -16
  370. package/client/dist/assets/agent-BaG10AN6.js +0 -1
  371. package/client/dist/assets/agent-CH4aJ884.js +0 -1
  372. package/client/dist/assets/agent-CLc9fA7v.js +0 -1
  373. package/client/dist/assets/agent-DHh9-AdL.js +0 -1
  374. package/client/dist/assets/agent-DkKnd6Wv.js +0 -1
  375. package/client/dist/assets/agent-aiVhqFW1.js +0 -1
  376. package/client/dist/assets/agent-dbznD3eO.js +0 -1
  377. package/client/dist/assets/agent-sMVFcPwL.js +0 -1
  378. package/client/dist/assets/agentRuntime-BeUb3g9g.js +0 -1
  379. package/client/dist/assets/file-text-CFT-xXKN.js +0 -1
  380. package/client/dist/assets/index-BS7KCWkV.css +0 -2
  381. package/client/dist/assets/index-C4Mv6tV6.js +0 -80
  382. package/client/dist/assets/integrations-CH0zy1Mw.js +0 -1
  383. package/client/dist/assets/integrations-CIAjhd7L.js +0 -1
  384. package/client/dist/assets/integrations-CZdwOe8A.js +0 -1
  385. package/client/dist/assets/integrations-Ct7omMld.js +0 -1
  386. package/client/dist/assets/integrations-D6MSxy3-.js +0 -1
  387. package/client/dist/assets/integrations-DbZa-Zyc.js +0 -1
  388. package/client/dist/assets/integrations-b8pH-vfl.js +0 -1
  389. package/client/dist/assets/integrations-mB-7zoyT.js +0 -1
  390. package/client/dist/assets/jira-api-BYbEPlkr.js +0 -1
  391. package/client/dist/assets/layers-eDMjG41I.js +0 -1
  392. package/client/dist/assets/loops-B4_D-nbg.js +0 -1
  393. package/client/dist/assets/nav-B-tpjyc2.js +0 -1
  394. package/client/dist/assets/nav-BJNXGg29.js +0 -1
  395. package/client/dist/assets/nav-BdhtRLP7.js +0 -1
  396. package/client/dist/assets/nav-ByYgyN5T.js +0 -1
  397. package/client/dist/assets/nav-DA0Mva2c.js +0 -1
  398. package/client/dist/assets/nav-DcJm_Jg_.js +0 -1
  399. package/client/dist/assets/nav-DhMPtAXc.js +0 -1
  400. package/client/dist/assets/nav-DhPb-Isc.js +0 -1
  401. package/client/dist/assets/provider-capabilities-Vi1ZGvAK.js +0 -1
  402. package/client/dist/assets/save-B6wGWwBR.js +0 -1
  403. package/client/dist/assets/settings-3o4Ntzi5.js +0 -1
  404. package/client/dist/assets/settings-B97jlkwD.js +0 -1
  405. package/client/dist/assets/settings-BTaT_bsS.js +0 -1
  406. package/client/dist/assets/settings-CT8w7WiC.js +0 -1
  407. package/client/dist/assets/settings-Cvr8_tvh.js +0 -1
  408. package/client/dist/assets/settings-Dn1qgAC8.js +0 -1
  409. package/client/dist/assets/settings-EShDdg4J.js +0 -1
  410. package/client/dist/assets/settings-tfLhQZRN.js +0 -1
  411. package/client/dist/assets/setup-CBMu3tqH.js +0 -1
  412. package/client/dist/assets/setup-CPh-e6J2.js +0 -1
  413. package/client/dist/assets/setup-CRKLp_ke.js +0 -1
  414. package/client/dist/assets/setup-Cy302v4J.js +0 -1
  415. package/client/dist/assets/setup-D681vTPf.js +0 -1
  416. package/client/dist/assets/setup-DYK0VBkE.js +0 -1
  417. package/client/dist/assets/setup-KAuiIiVs.js +0 -1
  418. package/client/dist/assets/setup-OGX-oCfI.js +0 -1
  419. package/client/dist/assets/useSharedWebSocket-BZMrX4jr.js +0 -2
  420. package/client/dist/assets/wrench-BfmNO9Vw.js +0 -1
  421. package/docs/agy-cli-provider-study.md +0 -257
  422. package/docs/gemini-cli-provider-study.md +0 -301
  423. package/docs/gemini-core-support-evaluation.md +0 -160
  424. package/docs/gemini.md +0 -257
  425. package/docs/kimi.md +0 -291
@@ -1 +1 @@
1
- var e={title:`Construtor de projetos`,subtitle:`Da ideia ao backlog do Marco 1`,close:`Fechar o Construtor`,emptyTitle:`Descreva sua ideia de app`,emptyHint:`Uma ou duas frases bastam — o Construtor fará uma breve entrevista e proporá um blueprint completo. Você também pode deixá-lo decidir tudo.`,surpriseMe:`Surpreenda-me`,inputPlaceholder:`Um app que…`,createSpecs:`Criar specs`,createSpecsHint:`Disponível quando as specs do Marco 1 passarem na auditoria`,providerUnavailable:`O Construtor requer um provedor com modo nativo sem ferramentas ou somente leitura. Este provedor não está disponível aqui.`},t={title:`Blueprint`,product:`Produto`,coreFlow:`Fluxo principal`,platform:`Plataforma`,stack:`Stack`,milestones:`Marcos`,milestonesValue:`{{count}} planejados`,assumptions:`Suposições`,m1Specs:`Specs do Marco 1 ({{count}})`,dependsOn:`depende de #{{index}}`,criteriaCount:`{{count}} critérios de aceitação`,laterMilestones:`Marcos posteriores`,empty:`O blueprint se preenche enquanto você conversa.`,specsComplete:`Completas`,specsInProgress:`Em andamento`,specWriting:`a escrever…`,specPendingBody:`ainda por escrever`},n={title:`Criar o projeto`,description:`Nada toca o disco até você confirmar. O repo fica intocado — os artefatos do Specrails vivem fora dele.`,nameLabel:`Nome do projeto`,locationLabel:`Local`,locationHint:`Uma nova pasta será criada aqui (vazia ou inexistente).`,providersLabel:`Provedores de IA`,githubLabel:`Criar repositório privado no GitHub`,githubAuthHint:`Inicie sessão primeiro: gh auth login`,back:`Voltar`,submit:`Criar projeto`,creating:`Criando…`,errors:{generic:`O commit não pôde iniciar. Verifique os valores e tente de novo.`,invalid_name:`O nome do projeto é obrigatório.`,invalid_location:`O local é obrigatório.`,providers_required:`Selecione pelo menos um provedor.`,unknown_provider:`Um dos provedores selecionados não está disponível.`,invalid_blueprint:`O blueprint está incompleto — volte e termine com o Construtor.`,m1_specs_required:`O blueprint ainda não tem specs do Marco 1.`,m1_specs_over_cap:`O Marco 1 tem specs demais (máx. 10). Peça ao Construtor para enxugá-lo.`,m1_spec_quality_invalid:`As specs geradas ainda não estão prontas para implementação. Volte ao Construtor e refine o item indicado.`,bundled_framework_missing:`O framework embutido está ausente — reinstale o app Specrails.`,location_not_empty:`Essa pasta já existe e não está vazia. Escolha outro local.`,location_already_registered:`Esse local já pertence a um projeto registrado.`,commit_failed:`A criação do projeto falhou — veja a lista de passos para o motivo.`}},r={title:`Criando seu projeto…`,steps:{"create-dir":`Criar a pasta do projeto`,"git-init":`Inicializar o repositório git + README`,assemble:`Montar o workspace do Specrails (offline)`,blueprint:`Gravar o blueprint`,tickets:`Inserir as specs do Marco 1`,register:`Registrar o projeto`,github:`Criar o repositório no GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) não está instalado — repositório não criado`,gh_not_authenticated:`gh sem sessão (execute gh auth login) — repositório não criado`,gh_scope:`Seu token do gh não pode criar repositórios (falta o scope repo)`,gh_repo_exists:`Já existe um repositório com esse nome na sua conta`,gh_network:`Erro de rede com o GitHub — repositório não criado`,generic:`Falha ao criar o repositório do GitHub`}},i={title:`Projeto criado`,description:`Seu backlog do Marco 1 está no quadro, com a etiqueta M1.`,launchM1:`Lançar o Marco 1`,openProject:`Abrir o projeto`,launchFailed:`Não foi possível lançar o Marco 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lançar o Marco 1`,generateNext:`Gerar M{{n}}`,generateHint:`Abre uma sessão de specs ancorada no código, semeada com o blueprint`,generateUnavailable:`A geração de marcos requer um modo nativo somente leitura`},o={startFailed:`Não foi possível iniciar a conversa do Construtor.`,turnFailed:`O turno do Construtor falhou.`,commitFailed:`A criação do projeto falhou.`},s={title:`Gerar {{label}}`,inputPlaceholder:`Refine as specs…`,commit:`Confirmar {{count}} specs como {{label}}`,commitToast:`{{count}} specs adicionadas ao quadro como {{label}}`,commitFailed:`Não foi possível confirmar o marco`,providerUnavailable:`A geração de marcos não está disponível porque este provedor não tem modo nativo somente leitura.`},c={title:`Construtor de projetos`,subtitle:`O agente está construindo um projeto novo`,exit:`Sair`,exitConfirmTitle:`Sair do Construtor?`,exitConfirmBody:`O Construtor para agora. Seu blueprint fica salvo — retome-o em “Continue de onde parou” na próxima vez que abrir o Construtor.`,exitConfirmCancel:`Continuar construindo`,exitConfirmDiscard:`Descartar e sair`},l={surpriseMe:`Surpreenda-me — proponha valores sensatos para todas as dimensões do blueprint, mantenha m1Specs vazio e deixe-me aprovar o plano antes de gerar as specs detalhadas.`,milestoneSeed:`Gere as specs detalhadas do marco {{label}} ("{{title}}"). Leia primeiro o código real, valide o lote completo e só então emita TODAS as specs detalhadas do marco em uma única resposta/snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Gere as specs detalhadas do marco {{label}} ("{{title}}"). Títulos de specs planejadas: {{planned}}. Leia primeiro o código real, valide o lote completo e só então emita TODAS as specs detalhadas do marco em uma única resposta/snapshot blueprint-draft.`,repairSnapshot:`Seu último bloco blueprint-draft não pôde ser usado pelo app ({{reason}}). Reemita o snapshot COMPLETO como JSON estritamente válido (quebras de linha dentro de strings escapadas como \\n, sem vírgulas finais, sem blocos de código aninhados) — apenas o bloco.`,approve:`Aprovado — gera agora o backlog detalhado do Marco 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Fechar`,open:`Ver detalhe da spec`,empty:`Ainda sem descrição.`,summary:`Resumo`,priority:`Prioridade`,description:`Descrição da spec`,acceptanceCriteria:`Critérios de aceitação`,criteriaEmpty:`Ainda não há critérios de aceitação.`},d={writing:`A escrever as specs do Milestone 1…`,specCount:`spec {{n}}`,turn:`turno {{turn}}/{{total}}`,phase:{outline:`A esboçar as specs do Milestone 1…`,details:`A escrever em detalhe as specs {{from}}–{{to}} de {{total}}…`,audit:`A auditar as {{total}} specs…`,repair:`A pedir de novo as specs {{from}}–{{to}}…`}},f={title:`Pronto para criar as specs?`,steps:{blueprint:`Blueprint aprovado`,specs:`Specs do Marco 1 geradas`,audit:`Auditoria de qualidade`},details:{blueprint:{done:`{{filled}}/{{total}} dimensões`,pending:`{{filled}}/{{total}} dimensões`,blocked:`{{filled}}/{{total}} dimensões`},specs:{done:`{{count}} specs · completas`,pending:`{{count}} de {{min}}–{{max}}`,blocked:`{{count}} specs · precisa de {{min}}–{{max}}`,writing:`{{written}} de {{count}} escritas`},audit:{done:`sem problemas`,pending:`aguardando as specs`,blocked:`{{count}} a corrigir`,writing:`quando as specs estiverem escritas`}},hints:{blueprint:{pending:`Termine a entrevista ou diga “surpreenda-me” — {{filled}}/{{total}} dimensões até agora.`,blocked:`O blueprint está incompleto.`},specs:{pending:`Aprove o blueprint e o Construtor gerará o backlog do Marco 1.`,blocked:`O Marco 1 precisa de {{min}}–{{max}} specs (agora {{count}}). Peça ao Construtor para ajustar.`,writing:`O Construtor está a escrever cada spec por completo — a auditoria de qualidade corre quando o lote estiver completo.`},audit:{pending:`Aguardando as specs.`,blocked:`{{count}} problema(s) de auditoria bloqueiam o commit — abra a lista abaixo.`,writing:`A auditoria corre quando todas as specs estiverem escritas.`}},issuesCount_one:`{{count}} problema de auditoria`,issuesCount_other:`{{count}} problemas de auditoria`,askFix:`Pedir ao Construtor para corrigir`},p={repairing:{invalid_json:`Reparando o snapshot (o último bloco não era JSON válido)…`,truncated:`Solicitando o snapshot novamente (a resposta foi cortada)…`,quality:`Pedindo ao Construtor para corrigir os problemas de auditoria…`,automatic:`automático`},rejected:{title:`O último snapshot do Construtor não pôde ser usado`,invalid_json:`O bloco do blueprint não era JSON válido, então o painel ainda mostra o estado anterior.`,missing_version:`O bloco não era um snapshot de blueprint (blueprintVersion ausente).`,truncated:`A resposta foi cortada antes de fechar o bloco, então nada foi recebido.`,autoRepairFailed:`Uma reparação automática já foi tentada.`,retry:`Pedir o snapshot novamente`},repairedNote:`Snapshot reparado automaticamente`,nothingToRepair:`Não há nada para reparar — continue conversando com o Construtor.`,noSession:`Esta conversa não pode ser retomada com seu provedor; envie uma nova mensagem.`,alreadyStreaming:`O Construtor ainda está respondendo.`,halted:{title:`A geração de specs parou cedo demais`,detail:`{{written}} de {{total}} specs escritas por completo. As restantes ainda são só títulos do esboço.`,resume:`Continuar a gerar`}},m={title:`Continue de onde parou`,untitled:`Blueprint sem título`,specsComplete:`{{count}} specs prontas`,specsInProgress:`{{count}} specs em andamento`,dimensions:`{{filled}}/{{total}} dimensões`,pendingIssue:`snapshot a reparar`,discard:`Descartar`,discardConfirm:`Confirmar descarte`,discardCancel:`Manter`,resumeFailed:`Não foi possível retomar esse blueprint.`,discardFailed:`Não foi possível descartar esse blueprint.`},h={batch_incomplete:`O Construtor ainda não marcou o lote como completo.`,spec_count:`O lote precisa de {{min}}–{{max}} specs (agora {{count}}).`,invalid_shape:`A spec {{n}} não é um objeto válido.`,invalid_kind:`A spec {{n}} precisa de um tipo válido (scaffold, feature ou verification).`,scaffold_first:`A primeira spec deve ser o scaffold do projeto.`,duplicate_scaffold:`A spec {{n}} não pode ser um segundo scaffold.`,title_required:`A spec {{n}} precisa de um título.`,title_duplicate:`A spec {{n}} repete o título da spec {{other}}.`,summary:`A spec {{n}} precisa de um resumo de uma linha com menos de 240 caracteres.`,invalid_priority:`A spec {{n}} precisa de uma prioridade válida.`,canonical_sections:`Faltam à spec {{n}} as cinco seções canônicas em ordem.`,empty_section:`A spec {{n}} tem a seção “{{heading}}” vazia.`,section_bullets:`A spec {{n}} precisa de pelo menos {{min}} marcadores em "{{heading}}".`,complexity_format:`A spec {{n}} precisa de um nível de complexidade com justificativa.`,scaffold_readme:`A spec de scaffold deve mencionar o README existente.`,criteria_count:`A spec {{n}} precisa de {{min}}–{{max}} critérios de aceitação (tem {{count}}).`,criterion_quality:`Spec {{n}}, critério {{criterion}}: não é concreto o suficiente.`,duplicate_criterion:`A spec {{n}} repete o critério de aceitação {{criterion}}.`,milestone_label:`A spec {{n}} precisa do rótulo {{label}}.`,domain_label:`A spec {{n}} precisa de um rótulo de domínio além de {{label}}.`,invalid_dependency:`A spec {{n}} só pode depender de uma spec anterior.`,scaffold_dependency:`A spec de scaffold não pode declarar dependência.`,section_depth:`A spec {{n}} precisa de um "{{heading}}" mais completo (pelo menos {{min}} caracteres).`},g={state:{planned:`Planeado`,committed:`Pronto a lançar`,running:`Em curso`,delivered:`Entregue — a aguardar revisão`,done:`Concluído`},counts:`{{delivered}} de {{total}} entregues · {{done}} concluídas`,failedNote_one:`{{count}} spec falhou na última tentativa`,failedNote_other:`{{count}} specs falharam na última tentativa`,legend:{done:`Concluídas`,onReview:`Em revisão`,inProgress:`Em curso`,failed:`Falharam na última tentativa`,todo:`Pendentes`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} da cadeia`,running:`A correr · {{elapsed}}`,review:`Rever`,open:`Abrir o rail`,noDelivery:`Ainda sem entrega`},chain:{title:`Cadeia sequencial`,parallelTitle:`Lançamento paralelo`,progress:`rail {{k}} de {{n}}`,waiting:`à espera que o rail {{k}} termine`,stackedOn:`o próximo rail parte de {{branch}}`,paused:`Em pausa — {{reason}}`,completed:`Todos os rails lançados`,cancelled:`Cadeia cancelada`,resume:`Retomar`,cancel:`Cancelar cadeia`,resumed:`Cadeia retomada`,resumeFailed:`Não foi possível retomar a cadeia`,cancelledToast:`Cadeia cancelada — os rails em curso continuam`,reasons:{chunk_failed:`o último rail falhou`,chunk_stalled:`o último rail travou (sem saída do fornecedor)`,chunk_stopped:`o último rail foi parado`,launch_rejected:`o próximo rail não pôde ser lançado ({{detail}})`,head_missing:`o ramo de base já não existe`,head_discarded:`a entrega de que o próximo rail parte foi descartada`,run_lost:`o rail em execução não foi encontrado após um reinício`,unknown:`em pausa`,provider_limit:`o limite de utilização do fornecedor foi atingido`,rail_limit_reached:`todos os rails têm um PR à espera da tua decisão — faz merge ou descarta PRs pendentes para libertar um rail e depois retoma`},checkpoint:`Rail {{k}} de {{n}} entregue — lançar o rail {{next}}?`,launchNext:`Lançar o próximo rail`,nextLaunched:`Próximo rail lançado`,autoAdvance:`Continuar automaticamente`,autoAdvanceHint:`Lança cada rail seguinte assim que o anterior é entregue`,checkpointHint:`Para após cada rail e pergunta antes de lançar o próximo`,checkpointNote:`para após este rail`,autoOn:`Continuação automática ligada — os próximos rails são lançados sozinhos`,autoOff:`Continuação automática desligada — será perguntado antes de cada rail`,autoFailed:`Não foi possível atualizar a cadeia`},toast:{launched:`{{milestone}} lançado — a spec 1 de {{n}} está no seu rail; as specs seguintes seguem automaticamente, um rail cada`,launchedAll:`{{milestone}} lançado — uma spec por rail ({{n}} no total)`,chainActive:`{{milestone}} já está a ser lançado — veja o painel Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} de {{n}} lançado`,paused:`{{milestone}} em pausa — {{reason}}`,resume:`Retomar`,delivered:`{{milestone}} entregue — {{count}} specs aguardam a sua revisão`,review:`Rever`,completed:`{{milestone}} concluído — todas as specs integradas`,launchedCheckpoint:`{{milestone}} lançado — a spec 1 de {{n}} está no seu rail; será perguntado antes de cada seguinte`,checkpoint:`{{milestone}} — rail {{k}} de {{n}} entregue. Lançar o próximo rail?`,launchNext:`Lançar o próximo rail`,autoContinue:`Continuar auto`,railLimitReached:`{{milestone}} não pôde ser lançado — todos os rails têm um PR à espera da tua decisão. Faz merge ou descarta PRs pendentes para libertar um rail.`},sequentialHint:`Uma spec por rail, por ordem de dependências — cada rail parte do ramo do rail anterior`},_={settledLabel:`Decisão tomada`,surprise:{label:`Construtor`,hint:`Poderás ajustar qualquer decisão depois`,title:`Surpreende-me`,description:`Deixa o Construtor decidir produto, fluxo principal, plataforma, stack e marcos, e apresentar-te o blueprint para aprovares ou afinares.`,cta:`Surpreende-me`,settledTitle:`Surpreende-me`,settledDescription:`Deixaste o Construtor decidir todas as dimensões do blueprint.`},approve:{label:`Blueprint pronto`,hint:`Ou escreve o que queres mudar`,title:`Aprovar o blueprint`,description:`Todas as dimensões estão decididas. Aprova-o e o Construtor escreve as specs do Marco 1 por completo, duas de cada vez, e depois audita o lote.`,cta:`Aprovar e gerar specs`,settledTitle:`Blueprint aprovado`,settledDescription:`O Construtor está a gerar o backlog do Marco 1 a partir deste blueprint.`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
1
+ var e={title:`Construtor de projetos`,subtitle:`Da ideia ao backlog do Marco 1`,close:`Fechar o Construtor`,emptyTitle:`Descreva sua ideia de app`,emptyHint:`Uma ou duas frases bastam — o Construtor fará uma breve entrevista e proporá um blueprint completo. Você também pode deixá-lo decidir tudo.`,surpriseMe:`Surpreenda-me`,inputPlaceholder:`Um app que…`,createSpecs:`Criar specs`,createSpecsHint:`Disponível quando as specs do Marco 1 passarem na auditoria`,providerUnavailable:`O Construtor requer um provedor com modo nativo sem ferramentas ou somente leitura. Este provedor não está disponível aqui.`},t={title:`Blueprint`,product:`Produto`,coreFlow:`Fluxo principal`,platform:`Plataforma`,stack:`Stack`,milestones:`Marcos`,milestonesValue:`{{count}} planejados`,assumptions:`Suposições`,m1Specs:`Specs do Marco 1 ({{count}})`,dependsOn:`depende de #{{index}}`,criteriaCount:`{{count}} critérios de aceitação`,laterMilestones:`Marcos posteriores`,empty:`O blueprint se preenche enquanto você conversa.`,specsComplete:`Completas`,specsInProgress:`Em andamento`,specWriting:`a escrever…`,specPendingBody:`ainda por escrever`},n={title:`Criar o projeto`,description:`Nada toca o disco até você confirmar. O repo fica intocado — os artefatos do Specrails vivem fora dele.`,nameLabel:`Nome do projeto`,locationLabel:`Local`,locationHint:`Uma nova pasta será criada aqui (vazia ou inexistente).`,providersLabel:`Provedores de IA`,githubLabel:`Criar repositório privado no GitHub`,githubAuthHint:`Inicie sessão primeiro: gh auth login`,back:`Voltar`,submit:`Criar projeto`,creating:`Criando…`,errors:{generic:`O commit não pôde iniciar. Verifique os valores e tente de novo.`,invalid_name:`O nome do projeto é obrigatório.`,invalid_location:`O local é obrigatório.`,providers_required:`Selecione pelo menos um provedor.`,unknown_provider:`Um dos provedores selecionados não está disponível.`,invalid_blueprint:`O blueprint está incompleto — volte e termine com o Construtor.`,m1_specs_required:`O blueprint ainda não tem specs do Marco 1.`,m1_specs_over_cap:`O Marco 1 tem specs demais (máx. 10). Peça ao Construtor para enxugá-lo.`,m1_spec_quality_invalid:`As specs geradas ainda não estão prontas para implementação. Volte ao Construtor e refine o item indicado.`,bundled_framework_missing:`O framework embutido está ausente — reinstale o app Specrails.`,location_not_empty:`Essa pasta já existe e não está vazia. Escolha outro local.`,location_already_registered:`Esse local já pertence a um projeto registrado.`,commit_failed:`A criação do projeto falhou — veja a lista de passos para o motivo.`}},r={title:`Criando seu projeto…`,steps:{"create-dir":`Criar a pasta do projeto`,"git-init":`Inicializar o repositório git + README`,assemble:`Montar o workspace do Specrails (offline)`,blueprint:`Gravar o blueprint`,tickets:`Inserir as specs do Marco 1`,register:`Registrar o projeto`,github:`Criar o repositório no GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) não está instalado — repositório não criado`,gh_not_authenticated:`gh sem sessão (execute gh auth login) — repositório não criado`,gh_scope:`Seu token do gh não pode criar repositórios (falta o scope repo)`,gh_repo_exists:`Já existe um repositório com esse nome na sua conta`,gh_network:`Erro de rede com o GitHub — repositório não criado`,generic:`Falha ao criar o repositório do GitHub`}},i={title:`Projeto criado`,description:`Seu backlog do Marco 1 está no quadro, com a etiqueta M1.`,launchM1:`Lançar o Marco 1`,openProject:`Abrir o projeto`,launchFailed:`Não foi possível lançar o Marco 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lançar o Marco 1`,generateNext:`Gerar M{{n}}`,generateHint:`Abre uma sessão de specs ancorada no código, semeada com o blueprint`,generateUnavailable:`A geração de marcos requer um modo nativo somente leitura`},o={startFailed:`Não foi possível iniciar a conversa do Construtor.`,turnFailed:`O turno do Construtor falhou.`,commitFailed:`A criação do projeto falhou.`},s={title:`Gerar {{label}}`,inputPlaceholder:`Refine as specs…`,commit:`Confirmar {{count}} specs como {{label}}`,commitToast:`{{count}} specs adicionadas ao quadro como {{label}}`,commitFailed:`Não foi possível confirmar o marco`,providerUnavailable:`A geração de marcos não está disponível porque este provedor não tem modo nativo somente leitura.`},c={title:`Construtor de projetos`,subtitle:`O agente está construindo um projeto novo`,exit:`Sair`,exitConfirmTitle:`Sair do Construtor?`,exitConfirmBody:`O Construtor para agora. Seu blueprint fica salvo — retome-o em “Continue de onde parou” na próxima vez que abrir o Construtor.`,exitConfirmCancel:`Continuar construindo`,exitConfirmDiscard:`Descartar e sair`},l={surpriseMe:`Surpreenda-me — proponha valores sensatos para todas as dimensões do blueprint, mantenha m1Specs vazio e deixe-me aprovar o plano antes de gerar as specs detalhadas.`,milestoneSeed:`Gere as specs detalhadas do marco {{label}} ("{{title}}"). Leia primeiro o código real, valide o lote completo e só então emita TODAS as specs detalhadas do marco em uma única resposta/snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Gere as specs detalhadas do marco {{label}} ("{{title}}"). Títulos de specs planejadas: {{planned}}. Leia primeiro o código real, valide o lote completo e só então emita TODAS as specs detalhadas do marco em uma única resposta/snapshot blueprint-draft.`,repairSnapshot:`Seu último bloco blueprint-draft não pôde ser usado pelo app ({{reason}}). Reemita o snapshot COMPLETO como JSON estritamente válido (quebras de linha dentro de strings escapadas como \\n, sem vírgulas finais, sem blocos de código aninhados) — apenas o bloco.`,approve:`Aprovado — gera agora o backlog detalhado do Marco 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Fechar`,open:`Ver detalhe da spec`,empty:`Ainda sem descrição.`,summary:`Resumo`,priority:`Prioridade`,description:`Descrição da spec`,acceptanceCriteria:`Critérios de aceitação`,criteriaEmpty:`Ainda não há critérios de aceitação.`},d={writing:`A escrever as specs do Milestone 1…`,specCount:`spec {{n}}`,turn:`turno {{turn}}/{{total}}`,phase:{outline:`A esboçar as specs do Milestone 1…`,details:`A escrever em detalhe as specs {{from}}–{{to}} de {{total}}…`,audit:`A auditar as {{total}} specs…`,repair:`A pedir de novo as specs {{from}}–{{to}}…`}},f={title:`Pronto para criar as specs?`,steps:{blueprint:`Blueprint aprovado`,specs:`Specs do Marco 1 geradas`,audit:`Auditoria de qualidade`},details:{blueprint:{done:`{{filled}}/{{total}} dimensões`,pending:`{{filled}}/{{total}} dimensões`,blocked:`{{filled}}/{{total}} dimensões`},specs:{done:`{{count}} specs · completas`,pending:`{{count}} de {{min}}–{{max}}`,blocked:`{{count}} specs · precisa de {{min}}–{{max}}`,writing:`{{written}} de {{count}} escritas`},audit:{done:`sem problemas`,pending:`aguardando as specs`,blocked:`{{count}} a corrigir`,writing:`quando as specs estiverem escritas`}},hints:{blueprint:{pending:`Termine a entrevista ou diga “surpreenda-me” — {{filled}}/{{total}} dimensões até agora.`,blocked:`O blueprint está incompleto.`},specs:{pending:`Aprove o blueprint e o Construtor gerará o backlog do Marco 1.`,blocked:`O Marco 1 precisa de {{min}}–{{max}} specs (agora {{count}}). Peça ao Construtor para ajustar.`,writing:`O Construtor está a escrever cada spec por completo — a auditoria de qualidade corre quando o lote estiver completo.`},audit:{pending:`Aguardando as specs.`,blocked:`{{count}} problema(s) de auditoria bloqueiam o commit — abra a lista abaixo.`,writing:`A auditoria corre quando todas as specs estiverem escritas.`}},issuesCount_one:`{{count}} problema de auditoria`,issuesCount_other:`{{count}} problemas de auditoria`,askFix:`Pedir ao Construtor para corrigir`},p={repairing:{invalid_json:`Reparando o snapshot (o último bloco não era JSON válido)…`,truncated:`Solicitando o snapshot novamente (a resposta foi cortada)…`,quality:`Pedindo ao Construtor para corrigir os problemas de auditoria…`,automatic:`automático`},rejected:{title:`O último snapshot do Construtor não pôde ser usado`,invalid_json:`O bloco do blueprint não era JSON válido, então o painel ainda mostra o estado anterior.`,missing_version:`O bloco não era um snapshot de blueprint (blueprintVersion ausente).`,truncated:`A resposta foi cortada antes de fechar o bloco, então nada foi recebido.`,autoRepairFailed:`Uma reparação automática já foi tentada.`,retry:`Pedir o snapshot novamente`},repairedNote:`Snapshot reparado automaticamente`,nothingToRepair:`Não há nada para reparar — continue conversando com o Construtor.`,noSession:`Esta conversa não pode ser retomada com seu provedor; envie uma nova mensagem.`,alreadyStreaming:`O Construtor ainda está respondendo.`,halted:{title:`A geração de specs parou cedo demais`,detail:`{{written}} de {{total}} specs escritas por completo. As restantes ainda são só títulos do esboço.`,resume:`Continuar a gerar`}},m={title:`Continue de onde parou`,untitled:`Blueprint sem título`,specsComplete:`{{count}} specs prontas`,specsInProgress:`{{count}} specs em andamento`,dimensions:`{{filled}}/{{total}} dimensões`,pendingIssue:`snapshot a reparar`,discard:`Descartar`,discardConfirm:`Confirmar descarte`,discardCancel:`Manter`,resumeFailed:`Não foi possível retomar esse blueprint.`,discardFailed:`Não foi possível descartar esse blueprint.`},h={batch_incomplete:`O Construtor ainda não marcou o lote como completo.`,spec_count:`O lote precisa de {{min}}–{{max}} specs (agora {{count}}).`,invalid_shape:`A spec {{n}} não é um objeto válido.`,invalid_kind:`A spec {{n}} precisa de um tipo válido (scaffold, feature ou verification).`,scaffold_first:`A primeira spec deve ser o scaffold do projeto.`,duplicate_scaffold:`A spec {{n}} não pode ser um segundo scaffold.`,title_required:`A spec {{n}} precisa de um título.`,title_duplicate:`A spec {{n}} repete o título da spec {{other}}.`,summary:`A spec {{n}} precisa de um resumo de uma linha com menos de 240 caracteres.`,invalid_priority:`A spec {{n}} precisa de uma prioridade válida.`,canonical_sections:`Faltam à spec {{n}} as cinco seções canônicas em ordem.`,empty_section:`A spec {{n}} tem a seção “{{heading}}” vazia.`,section_bullets:`A spec {{n}} precisa de pelo menos {{min}} marcadores em "{{heading}}".`,complexity_format:`A spec {{n}} precisa de um nível de complexidade com justificativa.`,scaffold_readme:`A spec de scaffold deve mencionar o README existente.`,criteria_count:`A spec {{n}} precisa de {{min}}–{{max}} critérios de aceitação (tem {{count}}).`,criterion_quality:`Spec {{n}}, critério {{criterion}}: não é concreto o suficiente.`,duplicate_criterion:`A spec {{n}} repete o critério de aceitação {{criterion}}.`,milestone_label:`A spec {{n}} precisa do rótulo {{label}}.`,domain_label:`A spec {{n}} precisa de um rótulo de domínio além de {{label}}.`,invalid_dependency:`A spec {{n}} só pode depender de uma spec anterior.`,scaffold_dependency:`A spec de scaffold não pode declarar dependência.`,section_depth:`A spec {{n}} precisa de um "{{heading}}" mais completo (pelo menos {{min}} caracteres).`},g={state:{planned:`Planeado`,committed:`Pronto a lançar`,running:`Em curso`,delivered:`Entregue — a aguardar revisão`,done:`Concluído`},counts:`{{delivered}} de {{total}} entregues · {{done}} concluídas`,failedNote_one:`{{count}} spec falhou na última tentativa`,failedNote_other:`{{count}} specs falharam na última tentativa`,legend:{done:`Concluídas`,onReview:`Em revisão`,inProgress:`Em curso`,failed:`Falharam na última tentativa`,todo:`Pendentes`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} da cadeia`,running:`A correr · {{elapsed}}`,review:`Rever`,open:`Abrir o rail`,noDelivery:`Ainda sem entrega`},chain:{title:`Cadeia sequencial`,parallelTitle:`Lançamento paralelo`,progress:`rail {{k}} de {{n}}`,waiting:`à espera que o rail {{k}} termine`,stackedOn:`o próximo rail parte de {{branch}}`,paused:`Em pausa — {{reason}}`,completed:`Todos os rails lançados`,cancelled:`Cadeia cancelada`,resume:`Retomar`,cancel:`Cancelar cadeia`,resumed:`Cadeia retomada`,resumeFailed:`Não foi possível retomar a cadeia`,cancelledToast:`Cadeia cancelada — os rails em curso continuam`,reasons:{chunk_failed:`o último rail falhou`,chunk_stalled:`o último rail travou (sem saída do fornecedor)`,chunk_stopped:`o último rail foi parado`,launch_rejected:`o próximo rail não pôde ser lançado ({{detail}})`,head_missing:`o ramo de base já não existe`,head_discarded:`a entrega de que o próximo rail parte foi descartada`,run_lost:`o rail em execução não foi encontrado após um reinício`,unknown:`em pausa`,provider_limit:`o limite de utilização do fornecedor foi atingido`,rail_limit_reached:`todos os rails têm um PR à espera da tua decisão — faz merge ou descarta PRs pendentes para libertar um rail e depois retoma`,integration_failed:`spec integration failed ({{detail}}); resume retries integration`},checkpoint:`Rail {{k}} de {{n}} entregue — lançar o rail {{next}}?`,launchNext:`Lançar o próximo rail`,nextLaunched:`Próximo rail lançado`,autoAdvance:`Continuar automaticamente`,autoAdvanceHint:`Integrates each spec before creating the next worktree`,checkpointHint:`Para após cada rail e pergunta antes de lançar o próximo`,checkpointNote:`para após este rail`,autoOn:`Continuação automática ligada — os próximos rails são lançados sozinhos`,autoOff:`Continuação automática desligada — será perguntado antes de cada rail`,autoFailed:`Não foi possível atualizar a cadeia`,integrating:`integrating this spec before launching the next`},toast:{launched:`{{milestone}} lançado — a spec 1 de {{n}} está no seu rail; as specs seguintes seguem automaticamente, um rail cada`,launchedAll:`{{milestone}} lançado — uma spec por rail ({{n}} no total)`,chainActive:`{{milestone}} já está a ser lançado — veja o painel Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} de {{n}} lançado`,paused:`{{milestone}} em pausa — {{reason}}`,resume:`Retomar`,delivered:`{{milestone}} entregue — {{count}} specs aguardam a sua revisão`,review:`Rever`,completed:`{{milestone}} concluído — todas as specs integradas`,launchedCheckpoint:`{{milestone}} lançado — a spec 1 de {{n}} está no seu rail; será perguntado antes de cada seguinte`,checkpoint:`{{milestone}} — rail {{k}} de {{n}} entregue. Lançar o próximo rail?`,launchNext:`Lançar o próximo rail`,autoContinue:`Continuar auto`,railLimitReached:`{{milestone}} não pôde ser lançado — todos os rails têm um PR à espera da tua decisão. Faz merge ou descarta PRs pendentes para libertar um rail.`},sequentialHint:`Uma spec por rail, por ordem de dependências — cada rail parte do ramo do rail anterior`},_={settledLabel:`Decisão tomada`,surprise:{label:`Construtor`,hint:`Poderás ajustar qualquer decisão depois`,title:`Surpreende-me`,description:`Deixa o Construtor decidir produto, fluxo principal, plataforma, stack e marcos, e apresentar-te o blueprint para aprovares ou afinares.`,cta:`Surpreende-me`,settledTitle:`Surpreende-me`,settledDescription:`Deixaste o Construtor decidir todas as dimensões do blueprint.`},approve:{label:`Blueprint pronto`,hint:`Ou escreve o que queres mudar`,title:`Aprovar o blueprint`,description:`Todas as dimensões estão decididas. Aprova-o e o Construtor escreve as specs do Marco 1 por completo, duas de cada vez, e depois audita o lote.`,cta:`Aprovar e gerar specs`,settledTitle:`Blueprint aprovado`,settledDescription:`O Construtor está a gerar o backlog do Marco 1 a partir deste blueprint.`}},v={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,generation:d,readiness:f,snapshot:p,recent:m,quality:h,milestoneProgress:g,decisionCard:_};export{n as commit,_ as decisionCard,v as default,i as done,o as errors,d as generation,s as milestone,g as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,h as quality,f as readiness,m as recent,e as shell,a as sidebar,p as snapshot,u as specModal};
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./jsx-runtime-zu2_FqZY.js";import{k as r}from"./dialog-xXB2q5HJ.js";import{t as i}from"./clsx-CjueKrWZ.js";import{t as a}from"./utils-BC4DHlz2.js";var o=e(t(),1),s=n(),c=Symbol.for(`react.lazy`),l=o.use;function u(e){return typeof e==`object`&&!!e&&`then`in e}function d(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===c&&`_payload`in e&&u(e._payload)}function f(e){let t=m(e),n=o.forwardRef((e,n)=>{let{children:r,...i}=e;d(r)&&typeof l==`function`&&(r=l(r._payload));let a=o.Children.toArray(r),c=a.find(g);if(c){let e=c.props.children,r=a.map(t=>t===c?o.Children.count(e)>1?o.Children.only(null):o.isValidElement(e)?e.props.children:null:t);return(0,s.jsx)(t,{...i,ref:n,children:o.isValidElement(e)?o.cloneElement(e,void 0,r):null})}return(0,s.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var p=f(`Slot`);function m(e){let t=o.forwardRef((e,t)=>{let{children:n,...i}=e;if(d(n)&&typeof l==`function`&&(n=l(n._payload)),o.isValidElement(n)){let e=v(n),a=_(i,n.props);return n.type!==o.Fragment&&(a.ref=t?r(t,e):e),o.cloneElement(n,a)}return o.Children.count(n)>1?o.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var h=Symbol(`radix.slottable`);function g(e){return o.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===h}function _(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function v(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var y=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,b=i,x=(e,t)=>n=>{if(t?.variants==null)return b(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=y(t)||y(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return b(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},S=x(`inline-flex items-center justify-center whitespace-nowrap rounded-md text-xs font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-8 px-3 py-1.5`,sm:`h-7 rounded-md px-2`,lg:`h-10 rounded-md px-6`,icon:`h-8 w-8`}},defaultVariants:{variant:`default`,size:`default`}}),C=o.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},o)=>(0,s.jsx)(r?p:`button`,{className:a(S({variant:t,size:n,className:e})),ref:o,...i}));C.displayName=`Button`;export{x as n,C as t};
1
+ import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./jsx-runtime-zu2_FqZY.js";import{M as r}from"./dialog-CMgps2MY.js";import{t as i}from"./clsx-CjueKrWZ.js";import{t as a}from"./utils-BC4DHlz2.js";var o=e(t(),1),s=n(),c=Symbol.for(`react.lazy`),l=o.use;function u(e){return typeof e==`object`&&!!e&&`then`in e}function d(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===c&&`_payload`in e&&u(e._payload)}function f(e){let t=m(e),n=o.forwardRef((e,n)=>{let{children:r,...i}=e;d(r)&&typeof l==`function`&&(r=l(r._payload));let a=o.Children.toArray(r),c=a.find(g);if(c){let e=c.props.children,r=a.map(t=>t===c?o.Children.count(e)>1?o.Children.only(null):o.isValidElement(e)?e.props.children:null:t);return(0,s.jsx)(t,{...i,ref:n,children:o.isValidElement(e)?o.cloneElement(e,void 0,r):null})}return(0,s.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var p=f(`Slot`);function m(e){let t=o.forwardRef((e,t)=>{let{children:n,...i}=e;if(d(n)&&typeof l==`function`&&(n=l(n._payload)),o.isValidElement(n)){let e=v(n),a=_(i,n.props);return n.type!==o.Fragment&&(a.ref=t?r(t,e):e),o.cloneElement(n,a)}return o.Children.count(n)>1?o.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var h=Symbol(`radix.slottable`);function g(e){return o.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===h}function _(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function v(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var y=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,b=i,x=(e,t)=>n=>{if(t?.variants==null)return b(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=y(t)||y(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return b(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},S=x(`inline-flex items-center justify-center whitespace-nowrap rounded-md text-xs font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-8 px-3 py-1.5`,sm:`h-7 rounded-md px-2`,lg:`h-10 rounded-md px-6`,icon:`h-8 w-8`}},defaultVariants:{variant:`default`,size:`default`}}),C=o.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},o)=>(0,s.jsx)(r?p:`button`,{className:a(S({variant:t,size:n,className:e})),ref:o,...i}));C.displayName=`Button`;export{x as n,C as t};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({actions:()=>r,default:()=>d,modal:()=>c,network:()=>n,prDeliveryStatus:()=>o,prRecovery:()=>s,repositories:()=>l,repositoryDelivery:()=>u,states:()=>i,status:()=>a}),n={htmlResponse:`The API returned a web page instead of JSON. Check that the Specrails backend is running and the API port is correct.`,invalidResponse:`The Specrails API returned an invalid response.`,endpointUnavailable:`This API endpoint is unavailable. Check that the Specrails frontend and backend versions match.`,httpError:`The Specrails API returned HTTP {{status}}.`,requestFailed:`Could not reach the Specrails backend.`,deliveryUnconfirmed:`Message delivery could not be confirmed. Your draft is kept and will not be resent automatically.`},r={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`},i={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`},a={queued:`Queued`,running:`Running`,completed:`Completed`,failed:`Failed`,canceled:`Canceled`,draft:`Draft`,onReview:`On Review`},o={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`,restart_pending:`Waiting for workflow recovery`},s={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.`},c={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`},l={title:`Repositories and folders`,additional:`Additional folders`,sharedBacklog:`One project, one shared backlog. Specs can select one or several repositories.`,folderNumber:`Folder {{number}}`,removeFolder:`Remove folder`,addFolder:`Add folder`,primary:`Primary`,contextOnly:`Context only`,unavailable:`Unavailable`,detach:`Detach`,detachHint:`Detaching removes the association only. Files stay on disk. Specs and unfinished deliveries must release their references first.`,name:`Name`,path:`Folder path`,browse:`Choose folder`,integrationBranch:`Integration branch`,branchDefault:`Use repository default`,specScope:`Repositories for this spec`,scopeHint:`Select the repositories this spec can change. Unselected folders remain available for context.`,invalidSelection:`A selected repository is no longer registered. Update the selection before saving.`,shellTarget:`Repository for this command`,shellDefault:`Run repository (single-repository runs)`,shellHint:`Required when a run affects several repositories.`,select:`Repository`,all:`All repositories`},u={building:`Building`,on_review:`Ready for review`,no_changes:`No changes`,pr_draft:`Draft PR`,pr_ready:`Ready PR`,pr_closed:`PR closed`,completed:`Completed`,merged:`Integrated`,discarded:`Discarded`,superseded:`Superseded`,implementation_failed:`Implementation failed`,pr_failed:`Delivery failed`},d={network:n,actions:r,states:i,status:a,prDeliveryStatus:o,prRecovery:s,modal:c,repositories:l,repositoryDelivery:u};export{t};
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({actions:()=>r,default:()=>d,modal:()=>c,network:()=>n,prDeliveryStatus:()=>o,prRecovery:()=>s,repositories:()=>l,repositoryDelivery:()=>u,states:()=>i,status:()=>a}),n={htmlResponse:`The API returned a web page instead of JSON. Check that the Specrails backend is running and the API port is correct.`,invalidResponse:`The Specrails API returned an invalid response.`,endpointUnavailable:`This API endpoint is unavailable. Check that the Specrails frontend and backend versions match.`,httpError:`The Specrails API returned HTTP {{status}}.`,requestFailed:`Could not reach the Specrails backend.`,deliveryUnconfirmed:`Message delivery could not be confirmed. Your draft is kept and will not be resent automatically.`},r={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`},i={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`},a={queued:`Queued`,running:`Running`,completed:`Completed`,failed:`Failed`,canceled:`Canceled`,draft:`Draft`,onReview:`On Review`},o={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`,restart_pending:`Waiting for workflow recovery`},s={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.`},c={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`},l={title:`Project workspaces and context folders`,additional:`Additional folders`,sharedBacklog:`A project has one shared backlog and one or more code workspaces. A workspace may be the project folder or a folder inside a repository.`,folderNumber:`Folder {{number}}`,removeFolder:`Remove folder`,addFolder:`Add folder`,primary:`Primary`,contextOnly:`Context only`,unavailable:`Unavailable`,detach:`Detach`,detachHint:`Detaching removes the association only. Files stay on disk. Specs and unfinished deliveries must release their references first.`,name:`Name`,path:`Folder path`,browse:`Choose folder`,integrationBranch:`Integration branch`,branchDefault:`Use repository default`,specScope:`Workspaces for this spec`,scopeHint:`Select the code workspaces this spec can change and verify. Unselected folders remain available for context.`,invalidSelection:`A selected repository is no longer registered. Update the selection before saving.`,shellTarget:`Repository for this command`,shellDefault:`Run repository (single-repository runs)`,shellHint:`Required when a run affects several repositories.`,select:`Repository`,all:`All repositories`,workspacePath:`Code workspace path`,workspaceHint:`Optional. One directory per line, absolute or relative to this repository. Empty uses the repository folder. Implement, Quick SDD and Freestyle verify each listed code workspace.`,launchWorkspaces:`Workspaces for this run`,launchWorkspaceHint:`Code changes and tests are scoped to these folders. Select at least one workspace for each affected repository.`},u={building:`Building`,on_review:`Ready for review`,no_changes:`No changes`,pr_draft:`Draft PR`,pr_ready:`Ready PR`,pr_closed:`PR closed`,completed:`Completed`,merged:`Integrated`,discarded:`Discarded`,superseded:`Superseded`,implementation_failed:`Implementation failed`,pr_failed:`Delivery failed`},d={network:n,actions:r,states:i,status:a,prDeliveryStatus:o,prRecovery:s,modal:c,repositories:l,repositoryDelivery:u};export{t};
@@ -1 +1 @@
1
- var e={htmlResponse:`L’API ha restituito una pagina web anziché JSON. Verifica che il server Specrails sia attivo e che la porta dell’API sia corretta.`,invalidResponse:`L’API di Specrails ha restituito una risposta non valida.`,endpointUnavailable:`Questo endpoint API non è disponibile. Verifica che le versioni del client e del server Specrails corrispondano.`,httpError:`L’API di Specrails ha restituito HTTP {{status}}.`,requestFailed:`Impossibile contattare il server Specrails.`,deliveryUnconfirmed:`Non è stato possibile confermare la consegna del messaggio. La bozza viene conservata e non sarà inviata di nuovo automaticamente.`},t={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ù`},n={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`},r={queued:`In coda`,running:`In esecuzione`,completed:`Completato`,failed:`Non riuscito`,canceled:`Annullato`,draft:`Bozza`,onReview:`In revisione`},i={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`,restart_pending:`In attesa del ripristino del workflow`},a={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.`},o={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`},s={title:`Repository e cartelle`,additional:`Cartelle aggiuntive`,sharedBacklog:`Un progetto, un backlog condiviso. Ogni spec può selezionare uno o più repository.`,folderNumber:`Cartella {{number}}`,removeFolder:`Rimuovi cartella`,addFolder:`Aggiungi cartella`,primary:`Principale`,contextOnly:`Solo contesto`,unavailable:`Non disponibile`,detach:`Scollega`,detachHint:`Scollegare rimuove solo l’associazione. I file rimangono sul disco. Le spec e le consegne in sospeso devono prima rilasciare i propri riferimenti.`,name:`Nome`,path:`Percorso della cartella`,browse:`Scegli cartella`,integrationBranch:`Branch di integrazione`,branchDefault:`Usa il branch predefinito del repository`,specScope:`Repository di questa spec`,scopeHint:`Seleziona i repository che questa spec può modificare. Le altre cartelle rimangono disponibili come contesto.`,invalidSelection:`Un repository selezionato non è più registrato. Aggiorna la selezione prima di salvare.`,shellTarget:`Repository di questo comando`,shellDefault:`Repository di esecuzione (esecuzioni con un solo repository)`,shellHint:`Obbligatorio quando un’esecuzione interessa più repository.`,select:`Repository`,all:`Tutti i repository`},c={building:`Implementazione in corso`,on_review:`Pronta per la revisione`,no_changes:`Nessuna modifica`,pr_draft:`Bozza di PR`,pr_ready:`PR pronta`,pr_closed:`PR chiusa`,completed:`Completata`,merged:`Integrata`,discarded:`Scartata`,superseded:`Sostituita`,implementation_failed:`Implementazione non riuscita`,pr_failed:`Consegna non riuscita`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
1
+ var e={htmlResponse:`L’API ha restituito una pagina web anziché JSON. Verifica che il server Specrails sia attivo e che la porta dell’API sia corretta.`,invalidResponse:`L’API di Specrails ha restituito una risposta non valida.`,endpointUnavailable:`Questo endpoint API non è disponibile. Verifica che le versioni del client e del server Specrails corrispondano.`,httpError:`L’API di Specrails ha restituito HTTP {{status}}.`,requestFailed:`Impossibile contattare il server Specrails.`,deliveryUnconfirmed:`Non è stato possibile confermare la consegna del messaggio. La bozza viene conservata e non sarà inviata di nuovo automaticamente.`},t={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ù`},n={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`},r={queued:`In coda`,running:`In esecuzione`,completed:`Completato`,failed:`Non riuscito`,canceled:`Annullato`,draft:`Bozza`,onReview:`In revisione`},i={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`,restart_pending:`In attesa del ripristino del workflow`},a={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.`},o={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`},s={title:`Repository e cartelle`,additional:`Cartelle aggiuntive`,sharedBacklog:`Un progetto, un backlog condiviso. Ogni spec può selezionare uno o più repository.`,folderNumber:`Cartella {{number}}`,removeFolder:`Rimuovi cartella`,addFolder:`Aggiungi cartella`,primary:`Principale`,contextOnly:`Solo contesto`,unavailable:`Non disponibile`,detach:`Scollega`,detachHint:`Scollegare rimuove solo l’associazione. I file rimangono sul disco. Le spec e le consegne in sospeso devono prima rilasciare i propri riferimenti.`,name:`Nome`,path:`Percorso della cartella`,browse:`Scegli cartella`,integrationBranch:`Branch di integrazione`,branchDefault:`Usa il branch predefinito del repository`,specScope:`Repository di questa spec`,scopeHint:`Seleziona i repository che questa spec può modificare. Le altre cartelle rimangono disponibili come contesto.`,invalidSelection:`Un repository selezionato non è più registrato. Aggiorna la selezione prima di salvare.`,shellTarget:`Repository di questo comando`,shellDefault:`Repository di esecuzione (esecuzioni con un solo repository)`,shellHint:`Obbligatorio quando un’esecuzione interessa più repository.`,select:`Repository`,all:`Tutti i repository`,workspacePath:`Cartelle di codice`,workspaceHint:`Facoltativo. Una cartella per riga, assoluta o relativa al repository. Vuoto usa la cartella del repository. Implement, Quick SDD e Freestyle verificano ogni cartella indicata.`,launchWorkspaces:`Cartelle per questa esecuzione`,launchWorkspaceHint:`Modifiche e test sono limitati a queste cartelle. Seleziona almeno una cartella per ogni repository interessato.`},c={building:`Implementazione in corso`,on_review:`Pronta per la revisione`,no_changes:`Nessuna modifica`,pr_draft:`Bozza di PR`,pr_ready:`PR pronta`,pr_closed:`PR chiusa`,completed:`Completata`,merged:`Integrata`,discarded:`Scartata`,superseded:`Sostituita`,implementation_failed:`Implementazione non riuscita`,pr_failed:`Consegna non riuscita`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
@@ -1 +1 @@
1
- var e={htmlResponse:`La API devolvió una página web en lugar de JSON. Comprueba que el servidor de Specrails esté activo y que el puerto de la API sea correcto.`,invalidResponse:`La API de Specrails devolvió una respuesta no válida.`,endpointUnavailable:`Este endpoint de la API no está disponible. Comprueba que las versiones del cliente y del servidor de Specrails coincidan.`,httpError:`La API de Specrails devolvió HTTP {{status}}.`,requestFailed:`No se ha podido conectar con el servidor de Specrails.`,deliveryUnconfirmed:`No se ha podido confirmar la entrega del mensaje. El borrador se conserva y no se reenviará automáticamente.`},t={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`},n={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`},r={queued:`En cola`,running:`En ejecución`,completed:`Completado`,failed:`Fallido`,canceled:`Cancelado`,draft:`Borrador`,onReview:`En revisión`},i={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`,restart_pending:`Esperando la recuperación del workflow`},a={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.`},o={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`},s={title:`Repositorios y carpetas`,additional:`Carpetas adicionales`,sharedBacklog:`Un proyecto, un backlog común. Cada spec puede seleccionar uno o varios repositorios.`,folderNumber:`Carpeta {{number}}`,removeFolder:`Quitar carpeta`,addFolder:`Añadir carpeta`,primary:`Principal`,contextOnly:`Solo contexto`,unavailable:`No disponible`,detach:`Desvincular`,detachHint:`Desvincular elimina la asociación; los archivos permanecen en disco. Primero deben liberarse las referencias de specs y entregas pendientes.`,name:`Nombre`,path:`Ruta de la carpeta`,browse:`Seleccionar carpeta`,integrationBranch:`Rama de integración`,branchDefault:`Usar la predeterminada del repositorio`,specScope:`Repositorios de esta spec`,scopeHint:`Selecciona los repositorios que puede modificar esta spec. Las demás carpetas siguen disponibles como contexto.`,invalidSelection:`Un repositorio seleccionado ya no está registrado. Actualiza la selección antes de guardar.`,shellTarget:`Repositorio de este comando`,shellDefault:`Repositorio de ejecución (ejecuciones con un único repo)`,shellHint:`Obligatorio cuando la ejecución afecta a varios repositorios.`,select:`Repositorio`,all:`Todos los repositorios`},c={building:`Implementando`,on_review:`Listo para revisar`,no_changes:`Sin cambios`,pr_draft:`PR en borrador`,pr_ready:`PR lista`,pr_closed:`PR cerrada`,completed:`Completado`,merged:`Integrado`,discarded:`Descartado`,superseded:`Sustituido`,implementation_failed:`Implementación fallida`,pr_failed:`Entrega fallida`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
1
+ var e={htmlResponse:`La API devolvió una página web en lugar de JSON. Comprueba que el servidor de Specrails esté activo y que el puerto de la API sea correcto.`,invalidResponse:`La API de Specrails devolvió una respuesta no válida.`,endpointUnavailable:`Este endpoint de la API no está disponible. Comprueba que las versiones del cliente y del servidor de Specrails coincidan.`,httpError:`La API de Specrails devolvió HTTP {{status}}.`,requestFailed:`No se ha podido conectar con el servidor de Specrails.`,deliveryUnconfirmed:`No se ha podido confirmar la entrega del mensaje. El borrador se conserva y no se reenviará automáticamente.`},t={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`},n={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`},r={queued:`En cola`,running:`En ejecución`,completed:`Completado`,failed:`Fallido`,canceled:`Cancelado`,draft:`Borrador`,onReview:`En revisión`},i={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`,restart_pending:`Esperando la recuperación del workflow`},a={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.`},o={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`},s={title:`Workspaces y carpetas de contexto del proyecto`,additional:`Carpetas adicionales`,sharedBacklog:`Un proyecto tiene un backlog compartido y uno o varios workspaces de código. Un workspace puede ser la carpeta del proyecto o una carpeta dentro de un repositorio.`,folderNumber:`Carpeta {{number}}`,removeFolder:`Quitar carpeta`,addFolder:`Añadir carpeta`,primary:`Principal`,contextOnly:`Solo contexto`,unavailable:`No disponible`,detach:`Desvincular`,detachHint:`Desvincular elimina la asociación; los archivos permanecen en disco. Primero deben liberarse las referencias de specs y entregas pendientes.`,name:`Nombre`,path:`Ruta de la carpeta`,browse:`Seleccionar carpeta`,integrationBranch:`Rama de integración`,branchDefault:`Usar la predeterminada del repositorio`,specScope:`Workspaces de esta spec`,scopeHint:`Selecciona los workspaces de código que esta spec puede modificar y verificar. Las carpetas no seleccionadas siguen disponibles como contexto.`,invalidSelection:`Un repositorio seleccionado ya no está registrado. Actualiza la selección antes de guardar.`,shellTarget:`Repositorio de este comando`,shellDefault:`Repositorio de ejecución (ejecuciones con un único repo)`,shellHint:`Obligatorio cuando la ejecución afecta a varios repositorios.`,select:`Repositorio`,all:`Todos los repositorios`,workspacePath:`Ruta del workspace de código`,workspaceHint:`Opcional. Una carpeta por línea, absoluta o relativa a este repositorio. Vacío usa la carpeta del repositorio. Implement, Quick SDD y Freestyle verifican cada workspace de código indicado.`,launchWorkspaces:`Workspaces de esta ejecución`,launchWorkspaceHint:`Los cambios de código y los tests se limitan a estas carpetas. Selecciona al menos un workspace por repositorio afectado.`},c={building:`Implementando`,on_review:`Listo para revisar`,no_changes:`Sin cambios`,pr_draft:`PR en borrador`,pr_ready:`PR lista`,pr_closed:`PR cerrada`,completed:`Completado`,merged:`Integrado`,discarded:`Descartado`,superseded:`Sustituido`,implementation_failed:`Implementación fallida`,pr_failed:`Entrega fallida`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
@@ -1 +1 @@
1
- var e={htmlResponse:`L’API a renvoyé une page web au lieu de JSON. Vérifiez que le serveur Specrails fonctionne et que le port de l’API est correct.`,invalidResponse:`L’API Specrails a renvoyé une réponse non valide.`,endpointUnavailable:`Ce point d’accès API est indisponible. Vérifiez que les versions du client et du serveur Specrails correspondent.`,httpError:`L’API Specrails a renvoyé HTTP {{status}}.`,requestFailed:`Impossible de joindre le serveur Specrails.`,deliveryUnconfirmed:`La réception du message n’a pas pu être confirmée. Votre brouillon est conservé et ne sera pas renvoyé automatiquement.`},t={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`},n={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é`},r={queued:`En attente`,running:`En cours`,completed:`Terminé`,failed:`Échec`,canceled:`Annulé`,draft:`Brouillon`,onReview:`En révision`},i={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`,restart_pending:`En attente de la récupération du workflow`},a={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.`},o={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`},s={title:`Dépôts et dossiers`,additional:`Dossiers supplémentaires`,sharedBacklog:`Un projet, un backlog partagé. Chaque spec peut cibler un ou plusieurs dépôts.`,folderNumber:`Dossier {{number}}`,removeFolder:`Retirer le dossier`,addFolder:`Ajouter un dossier`,primary:`Principal`,contextOnly:`Contexte uniquement`,unavailable:`Indisponible`,detach:`Dissocier`,detachHint:`La dissociation retire uniquement le lien. Les fichiers restent sur le disque. Les specs et les livraisons inachevées doivent d’abord libérer leurs références.`,name:`Nom`,path:`Chemin du dossier`,browse:`Choisir un dossier`,integrationBranch:`Branche d’intégration`,branchDefault:`Utiliser la branche par défaut du dépôt`,specScope:`Dépôts de cette spec`,scopeHint:`Sélectionnez les dépôts que cette spec peut modifier. Les autres dossiers restent disponibles comme contexte.`,invalidSelection:`Un dépôt sélectionné n’est plus enregistré. Mettez à jour la sélection avant d’enregistrer.`,shellTarget:`Dépôt de cette commande`,shellDefault:`Dépôt d’exécution (exécutions avec un seul dépôt)`,shellHint:`Obligatoire lorsqu’une exécution concerne plusieurs dépôts.`,select:`Dépôt`,all:`Tous les dépôts`},c={building:`Implémentation en cours`,on_review:`Prête pour la revue`,no_changes:`Aucune modification`,pr_draft:`Brouillon de PR`,pr_ready:`PR prête`,pr_closed:`PR fermée`,completed:`Terminée`,merged:`Intégrée`,discarded:`Abandonnée`,superseded:`Remplacée`,implementation_failed:`Échec de l’implémentation`,pr_failed:`Échec de la livraison`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
1
+ var e={htmlResponse:`L’API a renvoyé une page web au lieu de JSON. Vérifiez que le serveur Specrails fonctionne et que le port de l’API est correct.`,invalidResponse:`L’API Specrails a renvoyé une réponse non valide.`,endpointUnavailable:`Ce point d’accès API est indisponible. Vérifiez que les versions du client et du serveur Specrails correspondent.`,httpError:`L’API Specrails a renvoyé HTTP {{status}}.`,requestFailed:`Impossible de joindre le serveur Specrails.`,deliveryUnconfirmed:`La réception du message n’a pas pu être confirmée. Votre brouillon est conservé et ne sera pas renvoyé automatiquement.`},t={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`},n={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é`},r={queued:`En attente`,running:`En cours`,completed:`Terminé`,failed:`Échec`,canceled:`Annulé`,draft:`Brouillon`,onReview:`En révision`},i={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`,restart_pending:`En attente de la récupération du workflow`},a={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.`},o={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`},s={title:`Dépôts et dossiers`,additional:`Dossiers supplémentaires`,sharedBacklog:`Un projet, un backlog partagé. Chaque spec peut cibler un ou plusieurs dépôts.`,folderNumber:`Dossier {{number}}`,removeFolder:`Retirer le dossier`,addFolder:`Ajouter un dossier`,primary:`Principal`,contextOnly:`Contexte uniquement`,unavailable:`Indisponible`,detach:`Dissocier`,detachHint:`La dissociation retire uniquement le lien. Les fichiers restent sur le disque. Les specs et les livraisons inachevées doivent d’abord libérer leurs références.`,name:`Nom`,path:`Chemin du dossier`,browse:`Choisir un dossier`,integrationBranch:`Branche d’intégration`,branchDefault:`Utiliser la branche par défaut du dépôt`,specScope:`Dépôts de cette spec`,scopeHint:`Sélectionnez les dépôts que cette spec peut modifier. Les autres dossiers restent disponibles comme contexte.`,invalidSelection:`Un dépôt sélectionné n’est plus enregistré. Mettez à jour la sélection avant d’enregistrer.`,shellTarget:`Dépôt de cette commande`,shellDefault:`Dépôt d’exécution (exécutions avec un seul dépôt)`,shellHint:`Obligatoire lorsqu’une exécution concerne plusieurs dépôts.`,select:`Dépôt`,all:`Tous les dépôts`,workspacePath:`Dossiers de code`,workspaceHint:`Facultatif. Un dossier par ligne, absolu ou relatif au dépôt. Vide utilise le dossier du dépôt. Implement, Quick SDD et Freestyle vérifient chaque dossier indiqué.`,launchWorkspaces:`Dossiers pour cette exécution`,launchWorkspaceHint:`Les modifications et les tests sont limités à ces dossiers. Sélectionnez au moins un dossier pour chaque dépôt concerné.`},c={building:`Implémentation en cours`,on_review:`Prête pour la revue`,no_changes:`Aucune modification`,pr_draft:`Brouillon de PR`,pr_ready:`PR prête`,pr_closed:`PR fermée`,completed:`Terminée`,merged:`Intégrée`,discarded:`Abandonnée`,superseded:`Remplacée`,implementation_failed:`Échec de l’implémentation`,pr_failed:`Échec de la livraison`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
@@ -1 +1 @@
1
- var e={htmlResponse:`A API devolveu uma página web em vez de JSON. Verifique se o servidor Specrails está ativo e se a porta da API está correta.`,invalidResponse:`A API do Specrails devolveu uma resposta inválida.`,endpointUnavailable:`Este endpoint da API não está disponível. Verifique se as versões do cliente e do servidor Specrails coincidem.`,httpError:`A API do Specrails devolveu HTTP {{status}}.`,requestFailed:`Não foi possível contactar o servidor Specrails.`,deliveryUnconfirmed:`Não foi possível confirmar a entrega da mensagem. O rascunho foi guardado e não será reenviado automaticamente.`},t={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`},n={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`},r={queued:`Em fila`,running:`Em execução`,completed:`Concluído`,failed:`Falhou`,canceled:`Cancelado`,draft:`Rascunho`,onReview:`Em revisão`},i={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`,restart_pending:`A aguardar a recuperação do workflow`},a={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.`},o={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`},s={title:`Repositórios e pastas`,additional:`Pastas adicionais`,sharedBacklog:`Um projeto, um backlog compartilhado. Cada spec pode selecionar um ou vários repositórios.`,folderNumber:`Pasta {{number}}`,removeFolder:`Remover pasta`,addFolder:`Adicionar pasta`,primary:`Principal`,contextOnly:`Apenas contexto`,unavailable:`Indisponível`,detach:`Desvincular`,detachHint:`Desvincular remove apenas a associação. Os arquivos permanecem no disco. As specs e as entregas pendentes devem liberar suas referências primeiro.`,name:`Nome`,path:`Caminho da pasta`,browse:`Escolher pasta`,integrationBranch:`Branch de integração`,branchDefault:`Usar o branch padrão do repositório`,specScope:`Repositórios desta spec`,scopeHint:`Selecione os repositórios que esta spec pode modificar. As outras pastas continuam disponíveis como contexto.`,invalidSelection:`Um repositório selecionado não está mais registrado. Atualize a seleção antes de salvar.`,shellTarget:`Repositório deste comando`,shellDefault:`Repositório de execução (execuções com um único repositório)`,shellHint:`Obrigatório quando uma execução afeta vários repositórios.`,select:`Repositório`,all:`Todos os repositórios`},c={building:`Implementação em andamento`,on_review:`Pronta para revisão`,no_changes:`Sem alterações`,pr_draft:`Rascunho de PR`,pr_ready:`PR pronta`,pr_closed:`PR fechada`,completed:`Concluída`,merged:`Integrada`,discarded:`Descartada`,superseded:`Substituída`,implementation_failed:`Falha na implementação`,pr_failed:`Falha na entrega`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
1
+ var e={htmlResponse:`A API devolveu uma página web em vez de JSON. Verifique se o servidor Specrails está ativo e se a porta da API está correta.`,invalidResponse:`A API do Specrails devolveu uma resposta inválida.`,endpointUnavailable:`Este endpoint da API não está disponível. Verifique se as versões do cliente e do servidor Specrails coincidem.`,httpError:`A API do Specrails devolveu HTTP {{status}}.`,requestFailed:`Não foi possível contactar o servidor Specrails.`,deliveryUnconfirmed:`Não foi possível confirmar a entrega da mensagem. O rascunho foi guardado e não será reenviado automaticamente.`},t={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`},n={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`},r={queued:`Em fila`,running:`Em execução`,completed:`Concluído`,failed:`Falhou`,canceled:`Cancelado`,draft:`Rascunho`,onReview:`Em revisão`},i={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`,restart_pending:`A aguardar a recuperação do workflow`},a={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.`},o={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`},s={title:`Repositórios e pastas`,additional:`Pastas adicionais`,sharedBacklog:`Um projeto, um backlog compartilhado. Cada spec pode selecionar um ou vários repositórios.`,folderNumber:`Pasta {{number}}`,removeFolder:`Remover pasta`,addFolder:`Adicionar pasta`,primary:`Principal`,contextOnly:`Apenas contexto`,unavailable:`Indisponível`,detach:`Desvincular`,detachHint:`Desvincular remove apenas a associação. Os arquivos permanecem no disco. As specs e as entregas pendentes devem liberar suas referências primeiro.`,name:`Nome`,path:`Caminho da pasta`,browse:`Escolher pasta`,integrationBranch:`Branch de integração`,branchDefault:`Usar o branch padrão do repositório`,specScope:`Repositórios desta spec`,scopeHint:`Selecione os repositórios que esta spec pode modificar. As outras pastas continuam disponíveis como contexto.`,invalidSelection:`Um repositório selecionado não está mais registrado. Atualize a seleção antes de salvar.`,shellTarget:`Repositório deste comando`,shellDefault:`Repositório de execução (execuções com um único repositório)`,shellHint:`Obrigatório quando uma execução afeta vários repositórios.`,select:`Repositório`,all:`Todos os repositórios`,workspacePath:`Pastas de código`,workspaceHint:`Opcional. Uma pasta por linha, absoluta ou relativa ao repositório. Vazio usa a pasta do repositório. Implement, Quick SDD e Freestyle verificam cada pasta indicada.`,launchWorkspaces:`Pastas para esta execução`,launchWorkspaceHint:`As alterações e os testes ficam limitados a estas pastas. Selecione pelo menos uma pasta para cada repositório afetado.`},c={building:`Implementação em andamento`,on_review:`Pronta para revisão`,no_changes:`Sem alterações`,pr_draft:`Rascunho de PR`,pr_ready:`PR pronta`,pr_closed:`PR fechada`,completed:`Concluída`,merged:`Integrada`,discarded:`Descartada`,superseded:`Substituída`,implementation_failed:`Falha na implementação`,pr_failed:`Falha na entrega`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
@@ -1 +1 @@
1
- var e={htmlResponse:`Die API hat eine Webseite statt JSON zurückgegeben. Prüfe, ob der Specrails-Server läuft und der API-Port stimmt.`,invalidResponse:`Die Specrails-API hat eine ungültige Antwort zurückgegeben.`,endpointUnavailable:`Dieser API-Endpunkt ist nicht verfügbar. Prüfe, ob die Versionen von Specrails-Client und -Server übereinstimmen.`,httpError:`Die Specrails-API hat HTTP {{status}} zurückgegeben.`,requestFailed:`Der Specrails-Server konnte nicht erreicht werden.`,deliveryUnconfirmed:`Die Zustellung der Nachricht konnte nicht bestätigt werden. Dein Entwurf bleibt erhalten und wird nicht automatisch erneut gesendet.`},t={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`},n={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`},r={queued:`In Warteschlange`,running:`Läuft`,completed:`Abgeschlossen`,failed:`Fehlgeschlagen`,canceled:`Abgebrochen`,draft:`Entwurf`,onReview:`In Prüfung`},i={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`,restart_pending:`Wartet auf Wiederherstellung des Workflows`},a={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.`},o={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`},s={title:`Repositorys und Ordner`,additional:`Zusätzliche Ordner`,sharedBacklog:`Ein Projekt, ein gemeinsames Backlog. Specs können ein oder mehrere Repositorys auswählen.`,folderNumber:`Ordner {{number}}`,removeFolder:`Ordner entfernen`,addFolder:`Ordner hinzufügen`,primary:`Primär`,contextOnly:`Nur Kontext`,unavailable:`Nicht verfügbar`,detach:`Verknüpfung lösen`,detachHint:`Es wird nur die Verknüpfung entfernt. Die Dateien bleiben auf dem Datenträger. Referenzen von Specs und noch offenen Lieferungen müssen zuerst entfernt werden.`,name:`Name`,path:`Ordnerpfad`,browse:`Ordner auswählen`,integrationBranch:`Integrationsbranch`,branchDefault:`Standardbranch des Repositorys verwenden`,specScope:`Repositorys für diese Spec`,scopeHint:`Wähle die Repositorys aus, die diese Spec ändern darf. Nicht ausgewählte Ordner bleiben als Kontext verfügbar.`,invalidSelection:`Ein ausgewähltes Repository ist nicht mehr registriert. Aktualisiere die Auswahl vor dem Speichern.`,shellTarget:`Repository für diesen Befehl`,shellDefault:`Ausführungsrepository (Ausführungen mit einem Repository)`,shellHint:`Erforderlich, wenn eine Ausführung mehrere Repositorys betrifft.`,select:`Repository`,all:`Alle Repositorys`},c={building:`Implementierung läuft`,on_review:`Bereit zur Überprüfung`,no_changes:`Keine Änderungen`,pr_draft:`PR-Entwurf`,pr_ready:`PR bereit`,pr_closed:`PR geschlossen`,completed:`Abgeschlossen`,merged:`Integriert`,discarded:`Verworfen`,superseded:`Ersetzt`,implementation_failed:`Implementierung fehlgeschlagen`,pr_failed:`Lieferung fehlgeschlagen`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
1
+ var e={htmlResponse:`Die API hat eine Webseite statt JSON zurückgegeben. Prüfe, ob der Specrails-Server läuft und der API-Port stimmt.`,invalidResponse:`Die Specrails-API hat eine ungültige Antwort zurückgegeben.`,endpointUnavailable:`Dieser API-Endpunkt ist nicht verfügbar. Prüfe, ob die Versionen von Specrails-Client und -Server übereinstimmen.`,httpError:`Die Specrails-API hat HTTP {{status}} zurückgegeben.`,requestFailed:`Der Specrails-Server konnte nicht erreicht werden.`,deliveryUnconfirmed:`Die Zustellung der Nachricht konnte nicht bestätigt werden. Dein Entwurf bleibt erhalten und wird nicht automatisch erneut gesendet.`},t={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`},n={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`},r={queued:`In Warteschlange`,running:`Läuft`,completed:`Abgeschlossen`,failed:`Fehlgeschlagen`,canceled:`Abgebrochen`,draft:`Entwurf`,onReview:`In Prüfung`},i={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`,restart_pending:`Wartet auf Wiederherstellung des Workflows`},a={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.`},o={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`},s={title:`Repositorys und Ordner`,additional:`Zusätzliche Ordner`,sharedBacklog:`Ein Projekt, ein gemeinsames Backlog. Specs können ein oder mehrere Repositorys auswählen.`,folderNumber:`Ordner {{number}}`,removeFolder:`Ordner entfernen`,addFolder:`Ordner hinzufügen`,primary:`Primär`,contextOnly:`Nur Kontext`,unavailable:`Nicht verfügbar`,detach:`Verknüpfung lösen`,detachHint:`Es wird nur die Verknüpfung entfernt. Die Dateien bleiben auf dem Datenträger. Referenzen von Specs und noch offenen Lieferungen müssen zuerst entfernt werden.`,name:`Name`,path:`Ordnerpfad`,browse:`Ordner auswählen`,integrationBranch:`Integrationsbranch`,branchDefault:`Standardbranch des Repositorys verwenden`,specScope:`Repositorys für diese Spec`,scopeHint:`Wähle die Repositorys aus, die diese Spec ändern darf. Nicht ausgewählte Ordner bleiben als Kontext verfügbar.`,invalidSelection:`Ein ausgewähltes Repository ist nicht mehr registriert. Aktualisiere die Auswahl vor dem Speichern.`,shellTarget:`Repository für diesen Befehl`,shellDefault:`Ausführungsrepository (Ausführungen mit einem Repository)`,shellHint:`Erforderlich, wenn eine Ausführung mehrere Repositorys betrifft.`,select:`Repository`,all:`Alle Repositorys`,workspacePath:`Code-Arbeitsverzeichnisse`,workspaceHint:`Optional. Ein Verzeichnis pro Zeile, absolut oder relativ zum Repository. Leer verwendet den Repository-Ordner. Implement, Quick SDD und Freestyle prüfen jedes angegebene Verzeichnis.`,launchWorkspaces:`Arbeitsverzeichnisse für diesen Lauf`,launchWorkspaceHint:`Codeänderungen und Tests sind auf diese Ordner begrenzt. Wähle mindestens ein Verzeichnis für jedes betroffene Repository.`},c={building:`Implementierung läuft`,on_review:`Bereit zur Überprüfung`,no_changes:`Keine Änderungen`,pr_draft:`PR-Entwurf`,pr_ready:`PR bereit`,pr_closed:`PR geschlossen`,completed:`Abgeschlossen`,merged:`Integriert`,discarded:`Verworfen`,superseded:`Ersetzt`,implementation_failed:`Implementierung fehlgeschlagen`,pr_failed:`Lieferung fehlgeschlagen`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
@@ -1 +1 @@
1
- var e={htmlResponse:`API が JSON ではなくウェブページを返しました。Specrails バックエンドが起動していることと、API ポートが正しいことを確認してください。`,invalidResponse:`Specrails API が無効な応答を返しました。`,endpointUnavailable:`この API エンドポイントは利用できません。Specrails のフロントエンドとバックエンドのバージョンが一致しているか確認してください。`,httpError:`Specrails API が HTTP {{status}} を返しました。`,requestFailed:`Specrails バックエンドに接続できませんでした。`,deliveryUnconfirmed:`メッセージの受信を確認できませんでした。下書きは保持され、自動的に再送信されることはありません。`},t={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:`詳細`},n={loading:`読み込み中…`,saving:`保存中…`,error:`エラー`,empty:`データなし`,none:`なし`,unknown:`不明`,yes:`はい`,no:`いいえ`,on:`オン`,off:`オフ`,enabled:`有効`,disabled:`無効`},r={queued:`キュー待ち`,running:`実行中`,completed:`完了`,failed:`失敗`,canceled:`キャンセル済み`,draft:`下書き`,onReview:`レビュー中`},i={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:`ブランチ参照が一致しません`,restart_pending:`ワークフローの復旧を待機中`},a={inProgress:`プロジェクトの復旧が進行中です。配信内容は安全に保たれています。しばらくしてから再試行してください。`,interrupted:`再起動中に以前の配信操作が中断されました。作業内容は保持されています。現在の状態を確認し、準備ができたら再試行してください。`},o={resize:{nw:`サイズ変更 — 左上隅`,n:`サイズ変更 — 上端`,ne:`サイズ変更 — 右上隅`,e:`サイズ変更 — 右端`,se:`サイズ変更 — 右下隅`,s:`サイズ変更 — 下端`,sw:`サイズ変更 — 左下隅`,w:`サイズ変更 — 左端`},resetPosition:`位置をリセット`},s={title:`リポジトリとフォルダー`,additional:`追加のフォルダー`,sharedBacklog:`プロジェクト全体で1つのバックログを共有します。各specで1つ以上のリポジトリを選択できます。`,folderNumber:`フォルダー {{number}}`,removeFolder:`フォルダーを削除`,addFolder:`フォルダーを追加`,primary:`プライマリ`,contextOnly:`コンテキスト専用`,unavailable:`利用不可`,detach:`関連付けを解除`,detachHint:`解除されるのは関連付けのみで、ファイルはディスク上に残ります。先にspecと未完了の成果物からの参照を解除する必要があります。`,name:`名前`,path:`フォルダーのパス`,browse:`フォルダーを選択`,integrationBranch:`統合ブランチ`,branchDefault:`リポジトリのデフォルトを使用`,specScope:`このspecのリポジトリ`,scopeHint:`このspecが変更できるリポジトリを選択してください。選択されていないフォルダーは引き続きコンテキストとして利用できます。`,invalidSelection:`選択されたリポジトリは登録が解除されています。保存する前に選択を更新してください。`,shellTarget:`このコマンドのリポジトリ`,shellDefault:`実行対象のリポジトリ(単一リポジトリでの実行)`,shellHint:`複数のリポジトリを対象に実行する場合は必須です。`,select:`リポジトリ`,all:`すべてのリポジトリ`},c={building:`実装中`,on_review:`レビュー待ち`,no_changes:`変更なし`,pr_draft:`ドラフトPR`,pr_ready:`PR準備完了`,pr_closed:`PRクローズ済み`,completed:`完了`,merged:`統合済み`,discarded:`破棄済み`,superseded:`置き換え済み`,implementation_failed:`実装失敗`,pr_failed:`成果物の準備に失敗`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
1
+ var e={htmlResponse:`API が JSON ではなくウェブページを返しました。Specrails バックエンドが起動していることと、API ポートが正しいことを確認してください。`,invalidResponse:`Specrails API が無効な応答を返しました。`,endpointUnavailable:`この API エンドポイントは利用できません。Specrails のフロントエンドとバックエンドのバージョンが一致しているか確認してください。`,httpError:`Specrails API が HTTP {{status}} を返しました。`,requestFailed:`Specrails バックエンドに接続できませんでした。`,deliveryUnconfirmed:`メッセージの受信を確認できませんでした。下書きは保持され、自動的に再送信されることはありません。`},t={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:`詳細`},n={loading:`読み込み中…`,saving:`保存中…`,error:`エラー`,empty:`データなし`,none:`なし`,unknown:`不明`,yes:`はい`,no:`いいえ`,on:`オン`,off:`オフ`,enabled:`有効`,disabled:`無効`},r={queued:`キュー待ち`,running:`実行中`,completed:`完了`,failed:`失敗`,canceled:`キャンセル済み`,draft:`下書き`,onReview:`レビュー中`},i={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:`ブランチ参照が一致しません`,restart_pending:`ワークフローの復旧を待機中`},a={inProgress:`プロジェクトの復旧が進行中です。配信内容は安全に保たれています。しばらくしてから再試行してください。`,interrupted:`再起動中に以前の配信操作が中断されました。作業内容は保持されています。現在の状態を確認し、準備ができたら再試行してください。`},o={resize:{nw:`サイズ変更 — 左上隅`,n:`サイズ変更 — 上端`,ne:`サイズ変更 — 右上隅`,e:`サイズ変更 — 右端`,se:`サイズ変更 — 右下隅`,s:`サイズ変更 — 下端`,sw:`サイズ変更 — 左下隅`,w:`サイズ変更 — 左端`},resetPosition:`位置をリセット`},s={title:`リポジトリとフォルダー`,additional:`追加のフォルダー`,sharedBacklog:`プロジェクト全体で1つのバックログを共有します。各specで1つ以上のリポジトリを選択できます。`,folderNumber:`フォルダー {{number}}`,removeFolder:`フォルダーを削除`,addFolder:`フォルダーを追加`,primary:`プライマリ`,contextOnly:`コンテキスト専用`,unavailable:`利用不可`,detach:`関連付けを解除`,detachHint:`解除されるのは関連付けのみで、ファイルはディスク上に残ります。先にspecと未完了の成果物からの参照を解除する必要があります。`,name:`名前`,path:`フォルダーのパス`,browse:`フォルダーを選択`,integrationBranch:`統合ブランチ`,branchDefault:`リポジトリのデフォルトを使用`,specScope:`このspecのリポジトリ`,scopeHint:`このspecが変更できるリポジトリを選択してください。選択されていないフォルダーは引き続きコンテキストとして利用できます。`,invalidSelection:`選択されたリポジトリは登録が解除されています。保存する前に選択を更新してください。`,shellTarget:`このコマンドのリポジトリ`,shellDefault:`実行対象のリポジトリ(単一リポジトリでの実行)`,shellHint:`複数のリポジトリを対象に実行する場合は必須です。`,select:`リポジトリ`,all:`すべてのリポジトリ`,workspacePath:`コード作業ディレクトリ`,workspaceHint:`任意。1行に1ディレクトリ。絶対パスまたはリポジトリからの相対パスを指定します。空欄はリポジトリのフォルダーを使用します。Implement、Quick SDD、Freestyle は各ディレクトリを検証します。`,launchWorkspaces:`今回の実行用ディレクトリ`,launchWorkspaceHint:`コード変更とテストはこれらのフォルダーに限定されます。対象リポジトリごとに少なくとも1つ選択してください。`},c={building:`実装中`,on_review:`レビュー待ち`,no_changes:`変更なし`,pr_draft:`ドラフトPR`,pr_ready:`PR準備完了`,pr_closed:`PRクローズ済み`,completed:`完了`,merged:`統合済み`,discarded:`破棄済み`,superseded:`置き換え済み`,implementation_failed:`実装失敗`,pr_failed:`成果物の準備に失敗`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
@@ -1 +1 @@
1
- var e={htmlResponse:`API 返回了网页,而非 JSON。请确认 Specrails 后端正在运行,且 API 端口正确。`,invalidResponse:`Specrails API 返回了无效响应。`,endpointUnavailable:`此 API 端点不可用。请确认 Specrails 前端与后端版本一致。`,httpError:`Specrails API 返回了 HTTP {{status}}。`,requestFailed:`无法连接 Specrails 后端。`,deliveryUnconfirmed:`无法确认消息是否送达。草稿已保留,不会自动重新发送。`},t={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:`了解更多`},n={loading:`加载中…`,saving:`保存中…`,error:`错误`,empty:`暂无数据`,none:`无`,unknown:`未知`,yes:`是`,no:`否`,on:`开`,off:`关`,enabled:`已启用`,disabled:`已禁用`},r={queued:`已排队`,running:`运行中`,completed:`已完成`,failed:`失败`,canceled:`已取消`,draft:`草稿`,onReview:`评审中`},i={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:`分支引用不匹配`,restart_pending:`等待工作流恢复`},a={inProgress:`项目恢复仍在进行中。你的交付内容是安全的,请稍后重试。`,interrupted:`上一次交付操作在重启期间被中断。你的工作已保留;请检查当前状态,并在准备好后重试。`},o={resize:{nw:`调整大小 — 左上角`,n:`调整大小 — 顶边`,ne:`调整大小 — 右上角`,e:`调整大小 — 右边`,se:`调整大小 — 右下角`,s:`调整大小 — 底边`,sw:`调整大小 — 左下角`,w:`调整大小 — 左边`},resetPosition:`重置位置`},s={title:`仓库和文件夹`,additional:`附加文件夹`,sharedBacklog:`一个项目,共享一个待办列表。每个 spec 可以选择一个或多个仓库。`,folderNumber:`文件夹 {{number}}`,removeFolder:`移除文件夹`,addFolder:`添加文件夹`,primary:`主仓库`,contextOnly:`仅供上下文使用`,unavailable:`不可用`,detach:`解除关联`,detachHint:`解除关联仅移除关联关系,文件仍保留在磁盘上。必须先移除 spec 和未完成交付对该仓库的引用。`,name:`名称`,path:`文件夹路径`,browse:`选择文件夹`,integrationBranch:`集成分支`,branchDefault:`使用仓库默认分支`,specScope:`此 spec 的仓库`,scopeHint:`选择此 spec 可以修改的仓库。未选中的文件夹仍可作为上下文使用。`,invalidSelection:`所选仓库已取消注册。请更新选择后再保存。`,shellTarget:`此命令的仓库`,shellDefault:`运行仓库(仅涉及一个仓库的运行)`,shellHint:`运行涉及多个仓库时为必填项。`,select:`仓库`,all:`所有仓库`},c={building:`实现中`,on_review:`待审查`,no_changes:`无更改`,pr_draft:`PR 草稿`,pr_ready:`PR 已就绪`,pr_closed:`PR 已关闭`,completed:`已完成`,merged:`已集成`,discarded:`已丢弃`,superseded:`已取代`,implementation_failed:`实现失败`,pr_failed:`交付失败`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
1
+ var e={htmlResponse:`API 返回了网页,而非 JSON。请确认 Specrails 后端正在运行,且 API 端口正确。`,invalidResponse:`Specrails API 返回了无效响应。`,endpointUnavailable:`此 API 端点不可用。请确认 Specrails 前端与后端版本一致。`,httpError:`Specrails API 返回了 HTTP {{status}}。`,requestFailed:`无法连接 Specrails 后端。`,deliveryUnconfirmed:`无法确认消息是否送达。草稿已保留,不会自动重新发送。`},t={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:`了解更多`},n={loading:`加载中…`,saving:`保存中…`,error:`错误`,empty:`暂无数据`,none:`无`,unknown:`未知`,yes:`是`,no:`否`,on:`开`,off:`关`,enabled:`已启用`,disabled:`已禁用`},r={queued:`已排队`,running:`运行中`,completed:`已完成`,failed:`失败`,canceled:`已取消`,draft:`草稿`,onReview:`评审中`},i={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:`分支引用不匹配`,restart_pending:`等待工作流恢复`},a={inProgress:`项目恢复仍在进行中。你的交付内容是安全的,请稍后重试。`,interrupted:`上一次交付操作在重启期间被中断。你的工作已保留;请检查当前状态,并在准备好后重试。`},o={resize:{nw:`调整大小 — 左上角`,n:`调整大小 — 顶边`,ne:`调整大小 — 右上角`,e:`调整大小 — 右边`,se:`调整大小 — 右下角`,s:`调整大小 — 底边`,sw:`调整大小 — 左下角`,w:`调整大小 — 左边`},resetPosition:`重置位置`},s={title:`仓库和文件夹`,additional:`附加文件夹`,sharedBacklog:`一个项目,共享一个待办列表。每个 spec 可以选择一个或多个仓库。`,folderNumber:`文件夹 {{number}}`,removeFolder:`移除文件夹`,addFolder:`添加文件夹`,primary:`主仓库`,contextOnly:`仅供上下文使用`,unavailable:`不可用`,detach:`解除关联`,detachHint:`解除关联仅移除关联关系,文件仍保留在磁盘上。必须先移除 spec 和未完成交付对该仓库的引用。`,name:`名称`,path:`文件夹路径`,browse:`选择文件夹`,integrationBranch:`集成分支`,branchDefault:`使用仓库默认分支`,specScope:`此 spec 的仓库`,scopeHint:`选择此 spec 可以修改的仓库。未选中的文件夹仍可作为上下文使用。`,invalidSelection:`所选仓库已取消注册。请更新选择后再保存。`,shellTarget:`此命令的仓库`,shellDefault:`运行仓库(仅涉及一个仓库的运行)`,shellHint:`运行涉及多个仓库时为必填项。`,select:`仓库`,all:`所有仓库`,workspacePath:`代码工作目录`,workspaceHint:`可选。每行一个目录,可为绝对路径或相对于仓库的路径。留空则使用仓库目录。Implement、Quick SDD 和 Freestyle 会验证每个列出的目录。`,launchWorkspaces:`本次运行的工作目录`,launchWorkspaceHint:`代码更改和测试仅限这些目录。请为每个受影响的仓库至少选择一个工作目录。`},c={building:`实现中`,on_review:`待审查`,no_changes:`无更改`,pr_draft:`PR 草稿`,pr_ready:`PR 已就绪`,pr_closed:`PR 已关闭`,completed:`已完成`,merged:`已集成`,discarded:`已丢弃`,superseded:`已取代`,implementation_failed:`实现失败`,pr_failed:`交付失败`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
@@ -42,4 +42,4 @@ import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./j
42
42
 
43
43
  If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
44
44
 
45
- For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return s.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Gn=`DialogDescriptionWarning`,Kn=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Un(Gn).contentName}}.`;return s.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},qn=yn,Jn=Tn,Yn=Dn,Xn=An,Zn=Fn,Qn=Ln,$n=zn;function er(...e){return s.useCallback(t=>{for(let n of e)n&&(typeof n==`function`?n(t):n.current=t)},e)}var tr=qn,nr=Jn,rr=$n,ir=s.forwardRef(({className:e,...t},n)=>(0,l.jsx)(Yn,{ref:n,style:S(),className:o(`fixed inset-0 z-50 bg-black/60 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t}));ir.displayName=Yn.displayName;var ar=()=>{let{t:e}=i(`common`);return(0,l.jsxs)($n,{className:`absolute right-4 top-4 z-20 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground`,children:[(0,l.jsx)(a,{className:`h-4 w-4`}),(0,l.jsx)(`span`,{className:`sr-only`,children:e(`actions.close`)})]})},or=s.forwardRef(({className:e,children:t,showCloseButton:n=!0,movableResizable:r=!1,style:i,...a},s)=>{let{panelRef:c,panelStyle:u,resizeHandles:d}=T({enabled:r,allowMove:!1}),f=er(s,c);return r?(0,l.jsxs)(nr,{children:[(0,l.jsx)(ir,{}),(0,l.jsxs)(Xn,{ref:f,style:{...i,...C(),...u},className:o(`fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-32px)] max-w-2xl max-h-[85vh] translate-x-[-50%] translate-y-[-50%] gap-4 border border-border/30 bg-popover p-6 shadow-xl backdrop-blur-md duration-200 overflow-y-auto data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-xl`,e),...a,children:[t,n&&(0,l.jsx)(ar,{})]}),(0,l.jsx)(E,{handles:d})]}):(0,l.jsxs)(nr,{children:[(0,l.jsx)(ir,{}),(0,l.jsxs)(Xn,{ref:s,style:{...i,...C()},className:o(`fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-32px)] max-w-2xl max-h-[85vh] translate-x-[-50%] translate-y-[-50%] gap-4 border border-border/30 bg-popover p-6 shadow-xl backdrop-blur-md duration-200 overflow-y-auto data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-xl`,e),...a,children:[t,n&&(0,l.jsx)(ar,{})]})]})});or.displayName=Xn.displayName;var sr=({className:e,...t})=>(0,l.jsx)(`div`,{className:o(`flex flex-col space-y-1.5 text-center sm:text-left`,e),...t});sr.displayName=`DialogHeader`;var cr=({className:e,...t})=>(0,l.jsx)(`div`,{className:o(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,e),...t});cr.displayName=`DialogFooter`;var lr=s.forwardRef(({className:e,...t},n)=>(0,l.jsx)(Zn,{ref:n,className:o(`text-lg font-semibold leading-none tracking-tight`,e),...t}));lr.displayName=Zn.displayName;var ur=s.forwardRef(({className:e,...t},n)=>(0,l.jsx)(Qn,{ref:n,className:o(`text-xs text-muted-foreground`,e),...t}));ur.displayName=Qn.displayName;export{k as A,R as C,M as D,N as E,T as M,S as N,A as O,z as S,I as T,Ze as _,cr as a,Pe as b,nr as c,Yn as d,Jn as f,en as g,cn as h,ur as i,E as j,O as k,lr as l,Zn as m,rr as n,sr as o,qn as p,or as r,ir as s,tr as t,Xn as u,V as v,L as w,Ce as x,Ke as y};
45
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return s.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Gn=`DialogDescriptionWarning`,Kn=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Un(Gn).contentName}}.`;return s.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},qn=yn,Jn=xn,Yn=Tn,Xn=Dn,Zn=An,Qn=Fn,$n=Ln,er=zn;function tr(...e){return s.useCallback(t=>{for(let n of e)n&&(typeof n==`function`?n(t):n.current=t)},e)}var nr=qn,rr=Jn,ir=Yn,ar=er,or=s.forwardRef(({className:e,...t},n)=>(0,l.jsx)(Xn,{ref:n,style:S(),className:o(`fixed inset-0 z-50 bg-black/60 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t}));or.displayName=Xn.displayName;var sr=()=>{let{t:e}=i(`common`);return(0,l.jsxs)(er,{className:`absolute right-4 top-4 z-20 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground`,children:[(0,l.jsx)(a,{className:`h-4 w-4`}),(0,l.jsx)(`span`,{className:`sr-only`,children:e(`actions.close`)})]})},cr=s.forwardRef(({className:e,overlayClassName:t,children:n,showCloseButton:r=!0,movableResizable:i=!1,style:a,...s},c)=>{let{panelRef:u,panelStyle:d,resizeHandles:f}=T({enabled:i,allowMove:!1}),p=tr(c,u);return i?(0,l.jsxs)(ir,{children:[(0,l.jsx)(or,{className:t}),(0,l.jsxs)(Zn,{ref:p,style:{...a,...C(),...d},className:o(`fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-32px)] max-w-2xl max-h-[85vh] translate-x-[-50%] translate-y-[-50%] gap-4 border border-border/30 bg-popover p-6 shadow-xl backdrop-blur-md duration-200 overflow-y-auto data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-xl`,e),...s,children:[n,r&&(0,l.jsx)(sr,{})]}),(0,l.jsx)(E,{handles:f})]}):(0,l.jsxs)(ir,{children:[(0,l.jsx)(or,{className:t}),(0,l.jsxs)(Zn,{ref:c,style:{...a,...C()},className:o(`fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-32px)] max-w-2xl max-h-[85vh] translate-x-[-50%] translate-y-[-50%] gap-4 border border-border/30 bg-popover p-6 shadow-xl backdrop-blur-md duration-200 overflow-y-auto data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-xl`,e),...s,children:[n,r&&(0,l.jsx)(sr,{})]})]})});cr.displayName=Zn.displayName;var lr=({className:e,...t})=>(0,l.jsx)(`div`,{className:o(`flex flex-col space-y-1.5 text-center sm:text-left`,e),...t});lr.displayName=`DialogHeader`;var ur=({className:e,...t})=>(0,l.jsx)(`div`,{className:o(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,e),...t});ur.displayName=`DialogFooter`;var dr=s.forwardRef(({className:e,...t},n)=>(0,l.jsx)(Qn,{ref:n,className:o(`text-lg font-semibold leading-none tracking-tight`,e),...t}));dr.displayName=Qn.displayName;var fr=s.forwardRef(({className:e,...t},n)=>(0,l.jsx)($n,{ref:n,className:o(`text-xs text-muted-foreground`,e),...t}));fr.displayName=$n.displayName;export{M as A,Pe as C,L as D,R as E,T as F,S as I,x as L,O as M,k as N,I as O,E as P,Ke as S,z as T,Jn as _,ur as a,Ze as b,ir as c,Zn as d,$n as f,Qn as g,qn as h,fr as i,A as j,N as k,dr as l,Yn as m,ar as n,lr as o,Xn as p,cr as r,or as s,nr as t,rr as u,cn as v,Ce as w,V as x,en as y};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-Bjbbp_KS.js";var t=e(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-Bjbbp_KS.js";var t=e(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),n=e(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]);export{t as n,n as t};
@@ -1 +1 @@
1
- import{A as e,C as t,S as n,k as r,w as i,x as a,y as o}from"./useSharedWebSocket-BZMrX4jr.js";import{t as s}from"./getTimezoneOffsetInMilliseconds-DOGj1Mfz.js";function c(e,t){let n=a(e)-+a(t);return n<0?-1:n>0?1:n}function l(e){return i(e,Date.now())}function u(e,n,r){let[i,a]=t(r?.in,e,n),o=i.getFullYear()-a.getFullYear(),s=i.getMonth()-a.getMonth();return o*12+s}function d(e){return t=>{let n=(e?Math[e]:Math.trunc)(t);return n===0?0:n}}function f(e,t){return a(e)-+a(t)}function p(e,t){let n=a(e,t?.in);return n.setHours(23,59,59,999),n}function m(e,t){let n=a(e,t?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function h(e,t){let n=a(e,t?.in);return+p(n,t)==+m(n,t)}function g(e,n,r){let[i,a,o]=t(r?.in,e,e,n),s=c(a,o),l=Math.abs(u(a,o));if(l<1)return 0;a.getMonth()===1&&a.getDate()>27&&a.setDate(30),a.setMonth(a.getMonth()-s*l);let d=c(a,o)===-s;h(i)&&l===1&&c(i,o)===1&&(d=!1);let f=s*(l-+d);return f===0?0:f}function _(e,t,n){let r=f(e,t)/1e3;return d(n?.roundingMethod)(r)}function v(i,a,l){let u=n(),d=l?.locale??u.locale??o,f=c(i,a);if(isNaN(f))throw RangeError(`Invalid time value`);let p=Object.assign({},l,{addSuffix:l?.addSuffix,comparison:f}),[m,h]=t(l?.in,...f>0?[a,i]:[i,a]),v=_(h,m),y=(s(h)-s(m))/1e3,b=Math.round((v-y)/60),x;if(b<2)return l?.includeSeconds?v<5?d.formatDistance(`lessThanXSeconds`,5,p):v<10?d.formatDistance(`lessThanXSeconds`,10,p):v<20?d.formatDistance(`lessThanXSeconds`,20,p):v<40?d.formatDistance(`halfAMinute`,0,p):v<60?d.formatDistance(`lessThanXMinutes`,1,p):d.formatDistance(`xMinutes`,1,p):b===0?d.formatDistance(`lessThanXMinutes`,1,p):d.formatDistance(`xMinutes`,b,p);if(b<45)return d.formatDistance(`xMinutes`,b,p);if(b<90)return d.formatDistance(`aboutXHours`,1,p);if(b<1440){let e=Math.round(b/60);return d.formatDistance(`aboutXHours`,e,p)}else if(b<2520)return d.formatDistance(`xDays`,1,p);else if(b<43200){let e=Math.round(b/r);return d.formatDistance(`xDays`,e,p)}else if(b<43200*2)return x=Math.round(b/e),d.formatDistance(`aboutXMonths`,x,p);if(x=g(h,m),x<12){let t=Math.round(b/e);return d.formatDistance(`xMonths`,t,p)}else{let e=x%12,t=Math.trunc(x/12);return e<3?d.formatDistance(`aboutXYears`,t,p):e<9?d.formatDistance(`overXYears`,t,p):d.formatDistance(`almostXYears`,t+1,p)}}function y(e,t){return v(e,l(e),t)}export{y as t};
1
+ import{A as e,C as t,S as n,k as r,w as i,x as a,y as o}from"./useSharedWebSocket-TzKtPRp9.js";import{t as s}from"./getTimezoneOffsetInMilliseconds-NyC7gZJX.js";function c(e,t){let n=a(e)-+a(t);return n<0?-1:n>0?1:n}function l(e){return i(e,Date.now())}function u(e,n,r){let[i,a]=t(r?.in,e,n),o=i.getFullYear()-a.getFullYear(),s=i.getMonth()-a.getMonth();return o*12+s}function d(e){return t=>{let n=(e?Math[e]:Math.trunc)(t);return n===0?0:n}}function f(e,t){return a(e)-+a(t)}function p(e,t){let n=a(e,t?.in);return n.setHours(23,59,59,999),n}function m(e,t){let n=a(e,t?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function h(e,t){let n=a(e,t?.in);return+p(n,t)==+m(n,t)}function g(e,n,r){let[i,a,o]=t(r?.in,e,e,n),s=c(a,o),l=Math.abs(u(a,o));if(l<1)return 0;a.getMonth()===1&&a.getDate()>27&&a.setDate(30),a.setMonth(a.getMonth()-s*l);let d=c(a,o)===-s;h(i)&&l===1&&c(i,o)===1&&(d=!1);let f=s*(l-+d);return f===0?0:f}function _(e,t,n){let r=f(e,t)/1e3;return d(n?.roundingMethod)(r)}function v(i,a,l){let u=n(),d=l?.locale??u.locale??o,f=c(i,a);if(isNaN(f))throw RangeError(`Invalid time value`);let p=Object.assign({},l,{addSuffix:l?.addSuffix,comparison:f}),[m,h]=t(l?.in,...f>0?[a,i]:[i,a]),v=_(h,m),y=(s(h)-s(m))/1e3,b=Math.round((v-y)/60),x;if(b<2)return l?.includeSeconds?v<5?d.formatDistance(`lessThanXSeconds`,5,p):v<10?d.formatDistance(`lessThanXSeconds`,10,p):v<20?d.formatDistance(`lessThanXSeconds`,20,p):v<40?d.formatDistance(`halfAMinute`,0,p):v<60?d.formatDistance(`lessThanXMinutes`,1,p):d.formatDistance(`xMinutes`,1,p):b===0?d.formatDistance(`lessThanXMinutes`,1,p):d.formatDistance(`xMinutes`,b,p);if(b<45)return d.formatDistance(`xMinutes`,b,p);if(b<90)return d.formatDistance(`aboutXHours`,1,p);if(b<1440){let e=Math.round(b/60);return d.formatDistance(`aboutXHours`,e,p)}else if(b<2520)return d.formatDistance(`xDays`,1,p);else if(b<43200){let e=Math.round(b/r);return d.formatDistance(`xDays`,e,p)}else if(b<43200*2)return x=Math.round(b/e),d.formatDistance(`aboutXMonths`,x,p);if(x=g(h,m),x<12){let t=Math.round(b/e);return d.formatDistance(`xMonths`,t,p)}else{let e=x%12,t=Math.trunc(x/12);return e<3?d.formatDistance(`aboutXYears`,t,p):e<9?d.formatDistance(`overXYears`,t,p):d.formatDistance(`almostXYears`,t+1,p)}}function y(e,t){return v(e,l(e),t)}export{y as t};
@@ -1 +1 @@
1
- import{x as e}from"./useSharedWebSocket-BZMrX4jr.js";function t(t){let n=e(t),r=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return r.setUTCFullYear(n.getFullYear()),t-+r}export{t};
1
+ import{x as e}from"./useSharedWebSocket-TzKtPRp9.js";function t(t){let n=e(t),r=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return r.setUTCFullYear(n.getFullYear()),t-+r}export{t};