specrails-desktop 2.64.2 → 2.65.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1116) hide show
  1. package/README.md +1 -1
  2. package/cli/dist/status.js +3 -0
  3. package/client/dist/assets/ActivityFeedPage-ByVKYII-.js +1 -0
  4. package/client/dist/assets/AgentBrowserCapture-BGUTjhUr.js +1 -0
  5. package/client/dist/assets/AgentModeAnalyticsPane-CtOLDDjB.js +2 -0
  6. package/client/dist/assets/AgentModeCodePane-CDhUKarT.js +2 -0
  7. package/client/dist/assets/AgentModeJobsPane-BAa_oEHJ.js +1 -0
  8. package/client/dist/assets/AgentsPage-D32hG4Ve.js +120 -0
  9. package/client/dist/assets/AnalyticsPage-BU50zeG6.js +5 -0
  10. package/client/dist/assets/BudgetCard-DP_jxwaD.js +55 -0
  11. package/client/dist/assets/CodePage-jiYnKGpp.js +3 -0
  12. package/client/dist/assets/CostValue-Bvn8674q.js +1 -0
  13. package/client/dist/assets/DesktopAnalyticsPage-CF__H4e3.js +1 -0
  14. package/client/dist/assets/DocView-RrAp70zp.js +11 -0
  15. package/client/dist/assets/DocsDialog-DkqHU-JF.js +1 -0
  16. package/client/dist/assets/DocsPage-C6X089zC.js +1 -0
  17. package/client/dist/assets/ExportDropdown-C5-o8y3K.js +1 -0
  18. package/client/dist/assets/HelpHint-Crf9_uoR.js +1 -0
  19. package/client/dist/assets/IntegrationsPage-aflU3KHK.js +1 -0
  20. package/client/dist/assets/InteractiveJobComposer-CEMMhyyJ.js +19 -0
  21. package/client/dist/assets/JobDetailModal-BVJ6hyRs.js +1 -0
  22. package/client/dist/assets/JobDetailPage-DHzBUmox.js +1 -0
  23. package/client/dist/assets/JobsPage-o-LAqkwC.js +1 -0
  24. package/client/dist/assets/LoopBuilderPage-DbSVmXBM.js +1 -0
  25. package/client/dist/assets/LoopPreviewModal-DbJcVyN1.js +1 -0
  26. package/client/dist/assets/{LoopWindowSurface-DE0v2K1p.js → LoopWindowSurface-Co1ZK26V.js} +1 -1
  27. package/client/dist/assets/LoopsPage-C4lgkPXB.js +2 -0
  28. package/client/dist/assets/MinimizedChatsContext-742ypO8n.js +1 -0
  29. package/client/dist/assets/PluginsPage-Acks9ges.js +2 -0
  30. package/client/dist/assets/RailTrack-BfLmBzBh.js +1 -0
  31. package/client/dist/assets/{RepositoryScopeSelector-2eSqR9WK.js → RepositoryScopeSelector-DcxbKI9w.js} +1 -1
  32. package/client/dist/assets/ReviewPacketPage-CAVSIOAJ.js +7 -0
  33. package/client/dist/assets/TemplatePreviewModal-C23SYCTm.js +1 -0
  34. package/client/dist/assets/TicketDetailModalContext-B-Gtm6Ob.js +23 -0
  35. package/client/dist/assets/Trans-C6J0cLyh.js +1 -0
  36. package/client/dist/assets/a11y-prefs-BqoP5goK.js +1 -0
  37. package/client/dist/assets/activity-BBWfoUOG.js +1 -0
  38. package/client/dist/assets/activity-BM_skann.js +1 -0
  39. package/client/dist/assets/activity-Cevl82ke.js +1 -0
  40. package/client/dist/assets/activity-CmACk5W5.js +1 -0
  41. package/client/dist/assets/activity-D9LBw3PQ.js +1 -0
  42. package/client/dist/assets/activity-Dspbb9lz.js +1 -0
  43. package/client/dist/assets/activity-FPjYIjv9.js +1 -0
  44. package/client/dist/assets/activity-nLCKMUKt.js +1 -0
  45. package/client/dist/assets/addspec-BI4jDMhA.js +1 -0
  46. package/client/dist/assets/addspec-BldTv7Tl.js +1 -0
  47. package/client/dist/assets/addspec-Cdq-2EcC.js +1 -0
  48. package/client/dist/assets/addspec-DH5M16BQ.js +1 -0
  49. package/client/dist/assets/addspec-DOFo9pD5.js +1 -0
  50. package/client/dist/assets/addspec-DPkwhdmL.js +1 -0
  51. package/client/dist/assets/addspec-Dzy12Pv3.js +1 -0
  52. package/client/dist/assets/addspec-skTs6EEW.js +1 -0
  53. package/client/dist/assets/agent-B_UEUy7Y.js +1 -0
  54. package/client/dist/assets/agent-BarjlhTA.js +1 -0
  55. package/client/dist/assets/agent-BfqIITo5.js +1 -0
  56. package/client/dist/assets/agent-Bt9a7Kyj.js +1 -0
  57. package/client/dist/assets/agent-C3689RwP.js +1 -0
  58. package/client/dist/assets/agent-CrmboTAi.js +1 -0
  59. package/client/dist/assets/agent-DcsoTnuE.js +1 -0
  60. package/client/dist/assets/agent-GDZoYwd4.js +1 -0
  61. package/client/dist/assets/{agentRuntime-es2ymSl-.js → agentRuntime-BYH70bKY.js} +1 -1
  62. package/client/dist/assets/agentRuntime-BijLh8I9.js +1 -0
  63. package/client/dist/assets/{agentRuntime-BzuwQQgn.js → agentRuntime-BvyuETPe.js} +1 -1
  64. package/client/dist/assets/{agentRuntime-BDvbJMmS.js → agentRuntime-C2WI6HQh.js} +1 -1
  65. package/client/dist/assets/{agentRuntime-BKJfv5YD.js → agentRuntime-CZPIlQsr.js} +1 -1
  66. package/client/dist/assets/{agentRuntime-DiCldqGG.js → agentRuntime-D2dDvCyJ.js} +1 -1
  67. package/client/dist/assets/agentRuntime-DWZedEbn.js +1 -0
  68. package/client/dist/assets/agentRuntime-DkIruUNw.js +1 -0
  69. package/client/dist/assets/agents-35_PDKx9.js +1 -0
  70. package/client/dist/assets/agents-8fZnHhEQ.js +1 -0
  71. package/client/dist/assets/agents-Bgimtw8z.js +1 -0
  72. package/client/dist/assets/agents-C4P160Us.js +1 -0
  73. package/client/dist/assets/agents-Clg67zbp.js +1 -0
  74. package/client/dist/assets/agents-DJfF4o6G.js +1 -0
  75. package/client/dist/assets/agents-Dc9-Y5cw.js +1 -0
  76. package/client/dist/assets/agents-EN1Zl4YZ.js +1 -0
  77. package/client/dist/assets/agentstudio-Bm4-NYaG.js +1 -0
  78. package/client/dist/assets/agentstudio-CD1fuj2o.js +1 -0
  79. package/client/dist/assets/agentstudio-CQGWFSst.js +1 -0
  80. package/client/dist/assets/agentstudio-CqVSb65S.js +1 -0
  81. package/client/dist/assets/agentstudio-DIE_HjsX.js +1 -0
  82. package/client/dist/assets/agentstudio-D_OmQK-k.js +1 -0
  83. package/client/dist/assets/agentstudio-Djz9aUfb.js +1 -0
  84. package/client/dist/assets/agentstudio-Qa3v9o5J.js +1 -0
  85. package/client/dist/assets/{aiedit-DNXxq_Dr.js → aiedit-1VzLs37W.js} +1 -1
  86. package/client/dist/assets/{aiedit-DCjA7jLJ.js → aiedit-BNp6GSik.js} +1 -1
  87. package/client/dist/assets/{aiedit-BoG24nlg.js → aiedit-BOY5xRPi.js} +1 -1
  88. package/client/dist/assets/{aiedit-iIjz2_Qk.js → aiedit-BrqMZvbc.js} +1 -1
  89. package/client/dist/assets/{aiedit-CjlSRQVP.js → aiedit-CVgtl7hm.js} +1 -1
  90. package/client/dist/assets/{aiedit-DQ-0_pvE.js → aiedit-CrFW9Jd2.js} +1 -1
  91. package/client/dist/assets/{aiedit-olnv3QSt.js → aiedit-YE2lILp7.js} +1 -1
  92. package/client/dist/assets/{aiedit-B0KUbpB6.js → aiedit-iA_R1AVQ.js} +1 -1
  93. package/client/dist/assets/analytics-3w0t-4ic.js +1 -0
  94. package/client/dist/assets/analytics-BRi4KQD6.js +1 -0
  95. package/client/dist/assets/analytics-BtjAqzke.js +1 -0
  96. package/client/dist/assets/analytics-COSQ1h47.js +1 -0
  97. package/client/dist/assets/analytics-CP2HjESk.js +1 -0
  98. package/client/dist/assets/analytics-DY65TC62.js +1 -0
  99. package/client/dist/assets/analytics-Den_vvxn.js +1 -0
  100. package/client/dist/assets/analytics-LmBS96O8.js +1 -0
  101. package/client/dist/assets/api-DOGbyfTO.js +2 -0
  102. package/client/dist/assets/builder-BMVvSr4v.js +1 -0
  103. package/client/dist/assets/builder-BN-MuLZt.js +1 -0
  104. package/client/dist/assets/builder-BQOZi4CF.js +1 -0
  105. package/client/dist/assets/builder-BjUPjsyu.js +1 -0
  106. package/client/dist/assets/builder-BoBtN18T.js +1 -0
  107. package/client/dist/assets/builder-C5g5NhxL.js +1 -0
  108. package/client/dist/assets/builder-RUHXw3yx.js +1 -0
  109. package/client/dist/assets/builder-fyS_AiyC.js +1 -0
  110. package/client/dist/assets/button-CHPkroew.js +1 -0
  111. package/client/dist/assets/chat-C9L5T7KI.js +1 -0
  112. package/client/dist/assets/chevron-right-CwMAj0w_.js +1 -0
  113. package/client/dist/assets/chevron-up-BAMuP0XD.js +1 -0
  114. package/client/dist/assets/chunk-OB3PAWPO-BBaq6pUk.js +3 -0
  115. package/client/dist/assets/code-4le5IIbf.js +1 -0
  116. package/client/dist/assets/code-B-jCVIbm.js +1 -0
  117. package/client/dist/assets/code-BRfrn5ix.js +1 -0
  118. package/client/dist/assets/code-CC9NCrDM.js +1 -0
  119. package/client/dist/assets/code-CK6pm8wY.js +1 -0
  120. package/client/dist/assets/code-DDiOzd6c.js +1 -0
  121. package/client/dist/assets/code-tGifiyf5.js +1 -0
  122. package/client/dist/assets/code-xkn8kQTg.js +1 -0
  123. package/client/dist/assets/commands-Bv1QshHR.js +1 -0
  124. package/client/dist/assets/commands-BvxTxboW.js +1 -0
  125. package/client/dist/assets/commands-C5ORR0fO.js +1 -0
  126. package/client/dist/assets/commands-CBKMFSTV.js +1 -0
  127. package/client/dist/assets/commands-CFJIRsJv.js +1 -0
  128. package/client/dist/assets/commands-D9o3ZcXl.js +1 -0
  129. package/client/dist/assets/commands-DNox0Edk.js +1 -0
  130. package/client/dist/assets/commands-DmIUMLdV.js +1 -0
  131. package/client/dist/assets/common-5H4TkaoI.js +1 -0
  132. package/client/dist/assets/common-9S3OdPjx.js +1 -0
  133. package/client/dist/assets/common-BqnwIcjs.js +1 -0
  134. package/client/dist/assets/common-CQP3VafS.js +1 -0
  135. package/client/dist/assets/common-CZnAfkB2.js +1 -0
  136. package/client/dist/assets/common-D5sNttV4.js +1 -0
  137. package/client/dist/assets/common-k_qX9nlv.js +1 -0
  138. package/client/dist/assets/common-s4HIi9XI.js +1 -0
  139. package/client/dist/assets/compass-B7guwBlY.js +1 -0
  140. package/client/dist/assets/confirm-dialog-ChZdHL3Q.js +1 -0
  141. package/client/dist/assets/copy-DOPlLymH.js +1 -0
  142. package/client/dist/assets/core-BozBzB6Y.js +1 -0
  143. package/client/dist/assets/dashboard-6zGLGcEz.js +1 -0
  144. package/client/dist/assets/dashboard-8Gi0FBDq.js +1 -0
  145. package/client/dist/assets/dashboard-B7E5YrSy.js +1 -0
  146. package/client/dist/assets/dashboard-BhdKV8xK.js +1 -0
  147. package/client/dist/assets/dashboard-Bu3zzH_s.js +1 -0
  148. package/client/dist/assets/dashboard-Ce_6rELA.js +1 -0
  149. package/client/dist/assets/dashboard-DWY-oz8P.js +1 -0
  150. package/client/dist/assets/dashboard-gUzlWk0o.js +1 -0
  151. package/client/dist/assets/date-input-Cdlr8kHz.js +1 -0
  152. package/client/dist/assets/dialog-C23lB2iP.js +5 -0
  153. package/client/dist/assets/dist-Di-oOFkX.js +1 -0
  154. package/client/dist/assets/dist-js-CBmS6MsJ.js +1 -0
  155. package/client/dist/assets/{dist-js-Rlh4FLH5.js → dist-js-DaJmKapi.js} +1 -1
  156. package/client/dist/assets/dropdown-menu-Bfp2CK6H.js +1 -0
  157. package/client/dist/assets/empty-state-D5w9OWj-.js +1 -0
  158. package/client/dist/assets/es2015-DfnECntk.js +41 -0
  159. package/client/dist/assets/esm-BKF6CE7v.js +1 -0
  160. package/client/dist/assets/event-BEnMLqAi.js +1 -0
  161. package/client/dist/assets/explore--NOz9LCN.js +1 -0
  162. package/client/dist/assets/explore-B2ulH6dO.js +1 -0
  163. package/client/dist/assets/explore-BD-QiLdg.js +1 -0
  164. package/client/dist/assets/explore-BOqd4_1j.js +1 -0
  165. package/client/dist/assets/explore-Be_Zh5zu.js +1 -0
  166. package/client/dist/assets/explore-CLjzPSKo.js +1 -0
  167. package/client/dist/assets/explore-D_-vHm29.js +1 -0
  168. package/client/dist/assets/explore-yEQTF6ro.js +1 -0
  169. package/client/dist/assets/file-text-CNXzL3wj.js +1 -0
  170. package/client/dist/assets/format-BODoFIw6.js +1 -0
  171. package/client/dist/assets/formatDistanceToNow-DLMIOS0N.js +1 -0
  172. package/client/dist/assets/getTimezoneOffsetInMilliseconds-O61feXch.js +1 -0
  173. package/client/dist/assets/git-compare-arrows-Cu6tICCq.js +1 -0
  174. package/client/dist/assets/humanise-command-CB4ybLwq.js +1 -0
  175. package/client/dist/assets/inbox-BLZ8cm6_.js +1 -0
  176. package/client/dist/assets/inbox-BQ3VmNYY.js +1 -0
  177. package/client/dist/assets/inbox-BdcXWCuT.js +1 -0
  178. package/client/dist/assets/inbox-CF1PHjns.js +1 -0
  179. package/client/dist/assets/inbox-CFNPDhso.js +1 -0
  180. package/client/dist/assets/inbox-DIttK_NW.js +1 -0
  181. package/client/dist/assets/inbox-Dfdv1Ykl.js +1 -0
  182. package/client/dist/assets/inbox-JS1inmeO.js +1 -0
  183. package/client/dist/assets/index-4UWY7Xyz.css +2 -0
  184. package/client/dist/assets/index-DHzB0T26.js +120 -0
  185. package/client/dist/assets/integrations-BcKgzgPD.js +1 -0
  186. package/client/dist/assets/integrations-BmX_XyJq.js +1 -0
  187. package/client/dist/assets/integrations-CHpwMjlY.js +1 -0
  188. package/client/dist/assets/integrations-CT3kr8e-.js +1 -0
  189. package/client/dist/assets/integrations-C_5XAkgz.js +1 -0
  190. package/client/dist/assets/integrations-Ct9zLX7N.js +1 -0
  191. package/client/dist/assets/integrations-DEYemxUv.js +1 -0
  192. package/client/dist/assets/integrations-DWvsB_WB.js +1 -0
  193. package/client/dist/assets/{jira-Cq6yvN4q.js → jira-B_ERkFRv.js} +1 -1
  194. package/client/dist/assets/jira-Bn-A5lwD.js +1 -0
  195. package/client/dist/assets/jira-C71Ybnhp.js +1 -0
  196. package/client/dist/assets/jira-CkwjeJz6.js +1 -0
  197. package/client/dist/assets/jira-D9pSLXjI.js +1 -0
  198. package/client/dist/assets/jira-DBRS_lcp.js +1 -0
  199. package/client/dist/assets/jira-DHS6CsKh.js +1 -0
  200. package/client/dist/assets/jira-MInHRUb1.js +1 -0
  201. package/client/dist/assets/jira-api-DHme7Upx.js +1 -0
  202. package/client/dist/assets/jobs-BMLTDo63.js +1 -0
  203. package/client/dist/assets/jobs-BO8q4Mi1.js +1 -0
  204. package/client/dist/assets/jobs-Ck8uOWMM.js +1 -0
  205. package/client/dist/assets/jobs-CyFfPCpg.js +1 -0
  206. package/client/dist/assets/jobs-DT5s4fZ6.js +1 -0
  207. package/client/dist/assets/jobs-DZAgVPcD.js +1 -0
  208. package/client/dist/assets/jobs-b5gPYaKr.js +1 -0
  209. package/client/dist/assets/jobs-xsZK1440.js +1 -0
  210. package/client/dist/assets/launch-forecast-BTa-p3RP.js +1 -0
  211. package/client/dist/assets/{loop-layout-DtxX27Jz.css → loop-layout-DLioOiRN.css} +1 -1
  212. package/client/dist/assets/loop-layout-Sl9cfTvs.js +7 -0
  213. package/client/dist/assets/loops-BEEOVJDR.js +1 -0
  214. package/client/dist/assets/loops-BcrQ2vk7.js +1 -0
  215. package/client/dist/assets/loops-BjWxzJIZ.js +1 -0
  216. package/client/dist/assets/loops-BogV595N.js +1 -0
  217. package/client/dist/assets/loops-CU0BLZiz.js +1 -0
  218. package/client/dist/assets/loops-CrNBgi1G.js +1 -0
  219. package/client/dist/assets/loops-CwalwS_i.js +1 -0
  220. package/client/dist/assets/loops-_TDVN-fX.js +1 -0
  221. package/client/dist/assets/mcp-BNs8gxoL.js +1 -0
  222. package/client/dist/assets/mcp-BvRh_xO5.js +1 -0
  223. package/client/dist/assets/mcp-C2F1pghi.js +1 -0
  224. package/client/dist/assets/mcp-D9RLKAs2.js +1 -0
  225. package/client/dist/assets/mcp-DAghcsR0.js +1 -0
  226. package/client/dist/assets/mcp-DWWAPi1G.js +1 -0
  227. package/client/dist/assets/mcp-DbGSFC3f.js +1 -0
  228. package/client/dist/assets/mcp-FelCicrv.js +1 -0
  229. package/client/dist/assets/narration-C3NBkAR4.js +1 -0
  230. package/client/dist/assets/narration-CkoJq-Lf.js +1 -0
  231. package/client/dist/assets/narration-Cr0NeW9K.js +1 -0
  232. package/client/dist/assets/narration-DJUXOs-W.js +1 -0
  233. package/client/dist/assets/narration-DgL8TMvN.js +1 -0
  234. package/client/dist/assets/narration-DjBafgv0.js +1 -0
  235. package/client/dist/assets/narration-Dle6Iv0c.js +1 -0
  236. package/client/dist/assets/narration-MYlfktga.js +1 -0
  237. package/client/dist/assets/nav-BSQ8KW1c.js +1 -0
  238. package/client/dist/assets/nav-BauVof8Z.js +1 -0
  239. package/client/dist/assets/nav-BfOAH1se.js +1 -0
  240. package/client/dist/assets/nav-D3bOsipX.js +1 -0
  241. package/client/dist/assets/nav-DOMMhlLx.js +1 -0
  242. package/client/dist/assets/nav-DPzVlgZU.js +1 -0
  243. package/client/dist/assets/nav-DZJbFbah.js +1 -0
  244. package/client/dist/assets/nav-D_5aojd2.js +1 -0
  245. package/client/dist/assets/notify-error-BsWANx1T.js +1 -0
  246. package/client/dist/assets/onboarding-BdZQnNm3.js +1 -0
  247. package/client/dist/assets/onboarding-CJQEv1vp.js +1 -0
  248. package/client/dist/assets/onboarding-CWJGYUW3.js +1 -0
  249. package/client/dist/assets/onboarding-ChfYN7dA.js +1 -0
  250. package/client/dist/assets/onboarding-CjvDUR3V.js +1 -0
  251. package/client/dist/assets/onboarding-I6vS-zTB.js +1 -0
  252. package/client/dist/assets/onboarding-dgC_9dTB.js +1 -0
  253. package/client/dist/assets/onboarding-mlXSyKzX.js +1 -0
  254. package/client/dist/assets/origin-03nTuaOb.js +1 -0
  255. package/client/dist/assets/packet-BjpyRnZr.js +1 -0
  256. package/client/dist/assets/packet-BwgG5mBt.js +1 -0
  257. package/client/dist/assets/packet-C3eAUFkV.js +1 -0
  258. package/client/dist/assets/packet-C8wZuSld.js +1 -0
  259. package/client/dist/assets/packet-CNXEy_85.js +1 -0
  260. package/client/dist/assets/packet-DsV5Aa_8.js +1 -0
  261. package/client/dist/assets/packet-aasskOE7.js +1 -0
  262. package/client/dist/assets/packet-phxCc2gJ.js +1 -0
  263. package/client/dist/assets/page-header-BStSHkP8.js +1 -0
  264. package/client/dist/assets/project-repositories-DJPeAVBK.js +1 -0
  265. package/client/dist/assets/{provider-capabilities-lePfeT_Y.js → provider-capabilities-DtwcTme4.js} +1 -1
  266. package/client/dist/assets/recovery-BPDOsC92.js +1 -0
  267. package/client/dist/assets/recovery-BluNHoXM.js +1 -0
  268. package/client/dist/assets/recovery-CRvEmB0C.js +1 -0
  269. package/client/dist/assets/recovery-CeIoRnkR.js +1 -0
  270. package/client/dist/assets/recovery-DHCo8KGi.js +1 -0
  271. package/client/dist/assets/recovery-OxAIpbBF.js +1 -0
  272. package/client/dist/assets/recovery-XXexYGOJ.js +1 -0
  273. package/client/dist/assets/recovery-pITlc--v.js +1 -0
  274. package/client/dist/assets/refresh-cw-DfyTkbsf.js +1 -0
  275. package/client/dist/assets/select-xA3pSmqE.js +1 -0
  276. package/client/dist/assets/settings--yzDbX9r.js +1 -0
  277. package/client/dist/assets/settings-5_heTv8s.js +1 -0
  278. package/client/dist/assets/settings-BSf27MDg.js +1 -0
  279. package/client/dist/assets/settings-BSj6FakR.js +1 -0
  280. package/client/dist/assets/settings-BZDo_8Nn.js +1 -0
  281. package/client/dist/assets/settings-BdWgmNc0.js +1 -0
  282. package/client/dist/assets/settings-DRouxKqb.js +1 -0
  283. package/client/dist/assets/settings-DnWFoY-F.js +1 -0
  284. package/client/dist/assets/setup-BJWy62ri.js +1 -0
  285. package/client/dist/assets/setup-BgKOIuzc.js +1 -0
  286. package/client/dist/assets/setup-BvVIyUlz.js +1 -0
  287. package/client/dist/assets/setup-BxCk2pe1.js +1 -0
  288. package/client/dist/assets/setup-C-xQTL7R.js +1 -0
  289. package/client/dist/assets/setup-CbaVoiwV.js +1 -0
  290. package/client/dist/assets/setup-DxTBkX3P.js +1 -0
  291. package/client/dist/assets/setup-oGoVAzOD.js +1 -0
  292. package/client/dist/assets/specs-7tAb4IKr.js +1 -0
  293. package/client/dist/assets/specs-BUcY4s5v.js +1 -0
  294. package/client/dist/assets/specs-Bk5LeBAA.js +1 -0
  295. package/client/dist/assets/specs-CAA4Lrlg.js +1 -0
  296. package/client/dist/assets/specs-CS091AnA.js +1 -0
  297. package/client/dist/assets/specs-DJ6gmFcK.js +1 -0
  298. package/client/dist/assets/specs-GfCcrBSC.js +1 -0
  299. package/client/dist/assets/specs-xQgyc7WL.js +1 -0
  300. package/client/dist/assets/spending-CVH8VREb.js +1 -0
  301. package/client/dist/assets/square-Co6h5vZg.js +1 -0
  302. package/client/dist/assets/tauri-shell-43ixPGfa.js +2 -0
  303. package/client/dist/assets/terminal-0v9sBylD.js +1 -0
  304. package/client/dist/assets/terminal-AbUAmCxE.js +1 -0
  305. package/client/dist/assets/terminal-BJayIbIP.js +1 -0
  306. package/client/dist/assets/terminal-C2RUlXyi.js +1 -0
  307. package/client/dist/assets/terminal-CMmSb_Nj.js +1 -0
  308. package/client/dist/assets/terminal-DKWjj7HJ.js +1 -0
  309. package/client/dist/assets/terminal-KlFu7_pV.js +1 -0
  310. package/client/dist/assets/terminal-i99yqFvm.js +1 -0
  311. package/client/dist/assets/tickets-846Oq3i3.js +1 -0
  312. package/client/dist/assets/tickets-B5LJTe_b.js +1 -0
  313. package/client/dist/assets/tickets-Bfo2GGmH.js +1 -0
  314. package/client/dist/assets/tickets-BhdZ1yY2.js +1 -0
  315. package/client/dist/assets/tickets-CgjWJHAW.js +1 -0
  316. package/client/dist/assets/tickets-Ct9DbDUR.js +1 -0
  317. package/client/dist/assets/tickets-rptLEJB1.js +1 -0
  318. package/client/dist/assets/tickets-xQ6DpYdu.js +1 -0
  319. package/client/dist/assets/trending-up-BGvb4zZt.js +1 -0
  320. package/client/dist/assets/undo-6zuS4-sL.js +1 -0
  321. package/client/dist/assets/undo-BeM4gDOP.js +1 -0
  322. package/client/dist/assets/undo-BeppX8xS.js +1 -0
  323. package/client/dist/assets/undo-BqvNZ5MG.js +1 -0
  324. package/client/dist/assets/undo-BzwEPf_k.js +1 -0
  325. package/client/dist/assets/undo-CJ9Cu1NN.js +1 -0
  326. package/client/dist/assets/undo-ds8nMFbX.js +1 -0
  327. package/client/dist/assets/undo-x_gA-knG.js +1 -0
  328. package/client/dist/assets/useDesktop-BuOp2-MR.js +1 -0
  329. package/client/dist/assets/useRuntimeRuns-BRS6ncnO.js +1 -0
  330. package/client/dist/assets/utils-ELimjS2Y.js +1 -0
  331. package/client/dist/assets/wrench-Br2n1Lxd.js +1 -0
  332. package/client/dist/index.html +75 -60
  333. package/docs/ci-cd.md +29 -1
  334. package/docs/cli.md +10 -31
  335. package/docs/codex.md +1 -1
  336. package/docs/creating-specs.md +15 -12
  337. package/docs/customizing.md +16 -13
  338. package/docs/getting-started.md +12 -11
  339. package/docs/guide/de/agents/1-meet-the-agents.md +1 -1
  340. package/docs/guide/de/getting-started/2-installing-and-first-run.md +2 -0
  341. package/docs/guide/de/getting-started/3-try-the-sample-project.md +35 -0
  342. package/docs/guide/de/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  343. package/docs/guide/de/getting-started/6-universal-search.md +34 -0
  344. package/docs/guide/de/insights/1-analytics-and-cost-tracking.md +20 -6
  345. package/docs/guide/de/insights/2-the-integrated-terminal.md +1 -1
  346. package/docs/guide/de/insights/3-code-explorer.md +1 -1
  347. package/docs/guide/de/integrations/1-ai-providers.md +1 -1
  348. package/docs/guide/de/integrations/2-plugins.md +1 -1
  349. package/docs/guide/de/integrations/3-jira-integration.md +3 -3
  350. package/docs/guide/de/integrations/4-mobile-companion.md +1 -1
  351. package/docs/guide/de/integrations/5-mcp-server.md +1 -1
  352. package/docs/guide/de/integrations/6-agent-chat.md +12 -5
  353. package/docs/guide/de/integrations/8-flow-mode.md +69 -0
  354. package/docs/guide/de/pipeline/1-rails-and-jobs.md +21 -1
  355. package/docs/guide/de/pipeline/2-the-job-detail-view.md +12 -0
  356. package/docs/guide/de/pipeline/3-reviewing-a-delivery.md +43 -0
  357. package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +2 -2
  358. package/docs/guide/de/pipeline/5-the-loop-builder.md +1 -1
  359. package/docs/guide/de/settings/1-themes.md +1 -1
  360. package/docs/guide/de/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  361. package/docs/guide/de/settings/5-project-environment.md +1 -1
  362. package/docs/guide/de/settings/6-updates.md +24 -0
  363. package/docs/guide/de/settings/7-existing-projects.md +33 -0
  364. package/docs/guide/de/settings/8-accessibility.md +23 -0
  365. package/docs/guide/de/specs/1-specs-and-the-backlog.md +41 -3
  366. package/docs/guide/de/specs/2-add-spec-quick-mode.md +1 -1
  367. package/docs/guide/de/specs/3-add-spec-explore-mode.md +1 -1
  368. package/docs/guide/en/agents/1-meet-the-agents.md +1 -1
  369. package/docs/guide/en/getting-started/1-what-is-specrails.md +1 -1
  370. package/docs/guide/en/getting-started/2-installing-and-first-run.md +2 -0
  371. package/docs/guide/en/getting-started/3-try-the-sample-project.md +35 -0
  372. package/docs/guide/en/getting-started/5-the-dashboard-tour.md +52 -0
  373. package/docs/guide/en/getting-started/6-universal-search.md +34 -0
  374. package/docs/guide/en/insights/1-analytics-and-cost-tracking.md +24 -10
  375. package/docs/guide/en/insights/2-the-integrated-terminal.md +1 -1
  376. package/docs/guide/en/insights/3-code-explorer.md +5 -5
  377. package/docs/guide/en/integrations/1-ai-providers.md +1 -1
  378. package/docs/guide/en/integrations/2-plugins.md +1 -1
  379. package/docs/guide/en/integrations/3-jira-integration.md +4 -4
  380. package/docs/guide/en/integrations/4-mobile-companion.md +1 -1
  381. package/docs/guide/en/integrations/5-mcp-server.md +4 -4
  382. package/docs/guide/en/integrations/6-agent-chat.md +12 -5
  383. package/docs/guide/en/integrations/8-flow-mode.md +69 -0
  384. package/docs/guide/en/pipeline/1-rails-and-jobs.md +22 -3
  385. package/docs/guide/en/pipeline/2-the-job-detail-view.md +19 -7
  386. package/docs/guide/en/pipeline/3-reviewing-a-delivery.md +43 -0
  387. package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +2 -2
  388. package/docs/guide/en/pipeline/5-the-loop-builder.md +2 -2
  389. package/docs/guide/en/settings/1-themes.md +1 -1
  390. package/docs/guide/en/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  391. package/docs/guide/en/settings/5-project-environment.md +1 -1
  392. package/docs/guide/en/settings/6-updates.md +24 -0
  393. package/docs/guide/en/settings/7-existing-projects.md +33 -0
  394. package/docs/guide/en/settings/8-accessibility.md +23 -0
  395. package/docs/guide/en/specs/1-specs-and-the-backlog.md +42 -6
  396. package/docs/guide/en/specs/2-add-spec-quick-mode.md +1 -1
  397. package/docs/guide/en/specs/3-add-spec-explore-mode.md +2 -2
  398. package/docs/guide/es/agents/1-meet-the-agents.md +1 -1
  399. package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +1 -1
  400. package/docs/guide/es/agents/3-customizing-models-per-agent.md +2 -2
  401. package/docs/guide/es/agents/4-custom-agents-catalog.md +1 -1
  402. package/docs/guide/es/getting-started/1-what-is-specrails.md +3 -3
  403. package/docs/guide/es/getting-started/2-installing-and-first-run.md +2 -0
  404. package/docs/guide/es/getting-started/3-try-the-sample-project.md +35 -0
  405. package/docs/guide/es/getting-started/5-the-dashboard-tour.md +52 -0
  406. package/docs/guide/es/getting-started/6-universal-search.md +34 -0
  407. package/docs/guide/es/insights/1-analytics-and-cost-tracking.md +26 -12
  408. package/docs/guide/es/insights/2-the-integrated-terminal.md +1 -1
  409. package/docs/guide/es/insights/3-code-explorer.md +5 -5
  410. package/docs/guide/es/integrations/1-ai-providers.md +1 -1
  411. package/docs/guide/es/integrations/2-plugins.md +1 -1
  412. package/docs/guide/es/integrations/3-jira-integration.md +4 -4
  413. package/docs/guide/es/integrations/4-mobile-companion.md +1 -1
  414. package/docs/guide/es/integrations/5-mcp-server.md +4 -4
  415. package/docs/guide/es/integrations/6-agent-chat.md +14 -7
  416. package/docs/guide/es/integrations/7-local-engines.md +1 -1
  417. package/docs/guide/es/integrations/8-flow-mode.md +69 -0
  418. package/docs/guide/es/pipeline/1-rails-and-jobs.md +33 -13
  419. package/docs/guide/es/pipeline/2-the-job-detail-view.md +38 -26
  420. package/docs/guide/es/pipeline/3-reviewing-a-delivery.md +43 -0
  421. package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +2 -2
  422. package/docs/guide/es/pipeline/5-the-loop-builder.md +4 -4
  423. package/docs/guide/es/settings/1-themes.md +1 -1
  424. package/docs/guide/es/settings/3-pipeline-telemetry-and-diagnostics.md +10 -10
  425. package/docs/guide/es/settings/5-project-environment.md +1 -1
  426. package/docs/guide/es/settings/6-updates.md +24 -0
  427. package/docs/guide/es/settings/7-existing-projects.md +33 -0
  428. package/docs/guide/es/settings/8-accessibility.md +23 -0
  429. package/docs/guide/es/specs/1-specs-and-the-backlog.md +43 -7
  430. package/docs/guide/es/specs/2-add-spec-quick-mode.md +1 -1
  431. package/docs/guide/es/specs/3-add-spec-explore-mode.md +3 -3
  432. package/docs/guide/fr/agents/1-meet-the-agents.md +1 -1
  433. package/docs/guide/fr/getting-started/2-installing-and-first-run.md +2 -0
  434. package/docs/guide/fr/getting-started/3-try-the-sample-project.md +35 -0
  435. package/docs/guide/fr/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  436. package/docs/guide/fr/getting-started/6-universal-search.md +34 -0
  437. package/docs/guide/fr/insights/1-analytics-and-cost-tracking.md +18 -4
  438. package/docs/guide/fr/insights/2-the-integrated-terminal.md +1 -1
  439. package/docs/guide/fr/insights/3-code-explorer.md +1 -1
  440. package/docs/guide/fr/integrations/1-ai-providers.md +1 -1
  441. package/docs/guide/fr/integrations/2-plugins.md +1 -1
  442. package/docs/guide/fr/integrations/3-jira-integration.md +3 -3
  443. package/docs/guide/fr/integrations/4-mobile-companion.md +1 -1
  444. package/docs/guide/fr/integrations/5-mcp-server.md +1 -1
  445. package/docs/guide/fr/integrations/6-agent-chat.md +11 -4
  446. package/docs/guide/fr/integrations/8-flow-mode.md +69 -0
  447. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +21 -1
  448. package/docs/guide/fr/pipeline/2-the-job-detail-view.md +12 -0
  449. package/docs/guide/fr/pipeline/3-reviewing-a-delivery.md +43 -0
  450. package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +2 -2
  451. package/docs/guide/fr/pipeline/5-the-loop-builder.md +1 -1
  452. package/docs/guide/fr/settings/1-themes.md +1 -1
  453. package/docs/guide/fr/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  454. package/docs/guide/fr/settings/5-project-environment.md +1 -1
  455. package/docs/guide/fr/settings/6-updates.md +24 -0
  456. package/docs/guide/fr/settings/7-existing-projects.md +33 -0
  457. package/docs/guide/fr/settings/8-accessibility.md +23 -0
  458. package/docs/guide/fr/specs/1-specs-and-the-backlog.md +41 -3
  459. package/docs/guide/fr/specs/2-add-spec-quick-mode.md +1 -1
  460. package/docs/guide/fr/specs/3-add-spec-explore-mode.md +1 -1
  461. package/docs/guide/it/agents/1-meet-the-agents.md +1 -1
  462. package/docs/guide/it/getting-started/2-installing-and-first-run.md +2 -0
  463. package/docs/guide/it/getting-started/3-try-the-sample-project.md +35 -0
  464. package/docs/guide/it/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  465. package/docs/guide/it/getting-started/6-universal-search.md +34 -0
  466. package/docs/guide/it/insights/1-analytics-and-cost-tracking.md +18 -4
  467. package/docs/guide/it/insights/2-the-integrated-terminal.md +1 -1
  468. package/docs/guide/it/insights/3-code-explorer.md +1 -1
  469. package/docs/guide/it/integrations/1-ai-providers.md +1 -1
  470. package/docs/guide/it/integrations/2-plugins.md +1 -1
  471. package/docs/guide/it/integrations/3-jira-integration.md +3 -3
  472. package/docs/guide/it/integrations/4-mobile-companion.md +1 -1
  473. package/docs/guide/it/integrations/5-mcp-server.md +1 -1
  474. package/docs/guide/it/integrations/6-agent-chat.md +11 -4
  475. package/docs/guide/it/integrations/8-flow-mode.md +69 -0
  476. package/docs/guide/it/pipeline/1-rails-and-jobs.md +21 -1
  477. package/docs/guide/it/pipeline/2-the-job-detail-view.md +12 -0
  478. package/docs/guide/it/pipeline/3-reviewing-a-delivery.md +43 -0
  479. package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +2 -2
  480. package/docs/guide/it/pipeline/5-the-loop-builder.md +1 -1
  481. package/docs/guide/it/settings/1-themes.md +1 -1
  482. package/docs/guide/it/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  483. package/docs/guide/it/settings/5-project-environment.md +1 -1
  484. package/docs/guide/it/settings/6-updates.md +24 -0
  485. package/docs/guide/it/settings/7-existing-projects.md +33 -0
  486. package/docs/guide/it/settings/8-accessibility.md +23 -0
  487. package/docs/guide/it/specs/1-specs-and-the-backlog.md +41 -3
  488. package/docs/guide/it/specs/2-add-spec-quick-mode.md +1 -1
  489. package/docs/guide/it/specs/3-add-spec-explore-mode.md +1 -1
  490. package/docs/guide/ja/agents/1-meet-the-agents.md +1 -1
  491. package/docs/guide/ja/getting-started/2-installing-and-first-run.md +2 -0
  492. package/docs/guide/ja/getting-started/3-try-the-sample-project.md +35 -0
  493. package/docs/guide/ja/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  494. package/docs/guide/ja/getting-started/6-universal-search.md +34 -0
  495. package/docs/guide/ja/insights/1-analytics-and-cost-tracking.md +18 -4
  496. package/docs/guide/ja/insights/2-the-integrated-terminal.md +1 -1
  497. package/docs/guide/ja/insights/3-code-explorer.md +1 -1
  498. package/docs/guide/ja/integrations/1-ai-providers.md +1 -1
  499. package/docs/guide/ja/integrations/2-plugins.md +1 -1
  500. package/docs/guide/ja/integrations/3-jira-integration.md +3 -3
  501. package/docs/guide/ja/integrations/4-mobile-companion.md +1 -1
  502. package/docs/guide/ja/integrations/5-mcp-server.md +1 -1
  503. package/docs/guide/ja/integrations/6-agent-chat.md +11 -4
  504. package/docs/guide/ja/integrations/8-flow-mode.md +69 -0
  505. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +21 -1
  506. package/docs/guide/ja/pipeline/2-the-job-detail-view.md +12 -0
  507. package/docs/guide/ja/pipeline/3-reviewing-a-delivery.md +43 -0
  508. package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +2 -2
  509. package/docs/guide/ja/pipeline/5-the-loop-builder.md +1 -1
  510. package/docs/guide/ja/settings/1-themes.md +1 -1
  511. package/docs/guide/ja/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  512. package/docs/guide/ja/settings/5-project-environment.md +1 -1
  513. package/docs/guide/ja/settings/6-updates.md +24 -0
  514. package/docs/guide/ja/settings/7-existing-projects.md +33 -0
  515. package/docs/guide/ja/settings/8-accessibility.md +23 -0
  516. package/docs/guide/ja/specs/1-specs-and-the-backlog.md +41 -3
  517. package/docs/guide/ja/specs/2-add-spec-quick-mode.md +1 -1
  518. package/docs/guide/ja/specs/3-add-spec-explore-mode.md +1 -1
  519. package/docs/guide/pt/agents/1-meet-the-agents.md +1 -1
  520. package/docs/guide/pt/getting-started/2-installing-and-first-run.md +2 -0
  521. package/docs/guide/pt/getting-started/3-try-the-sample-project.md +35 -0
  522. package/docs/guide/pt/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  523. package/docs/guide/pt/getting-started/6-universal-search.md +34 -0
  524. package/docs/guide/pt/insights/1-analytics-and-cost-tracking.md +18 -4
  525. package/docs/guide/pt/insights/2-the-integrated-terminal.md +1 -1
  526. package/docs/guide/pt/insights/3-code-explorer.md +1 -1
  527. package/docs/guide/pt/integrations/1-ai-providers.md +1 -1
  528. package/docs/guide/pt/integrations/2-plugins.md +1 -1
  529. package/docs/guide/pt/integrations/3-jira-integration.md +3 -3
  530. package/docs/guide/pt/integrations/4-mobile-companion.md +1 -1
  531. package/docs/guide/pt/integrations/5-mcp-server.md +1 -1
  532. package/docs/guide/pt/integrations/6-agent-chat.md +12 -5
  533. package/docs/guide/pt/integrations/8-flow-mode.md +69 -0
  534. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +21 -1
  535. package/docs/guide/pt/pipeline/2-the-job-detail-view.md +12 -0
  536. package/docs/guide/pt/pipeline/3-reviewing-a-delivery.md +43 -0
  537. package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +2 -2
  538. package/docs/guide/pt/pipeline/5-the-loop-builder.md +1 -1
  539. package/docs/guide/pt/settings/1-themes.md +1 -1
  540. package/docs/guide/pt/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  541. package/docs/guide/pt/settings/5-project-environment.md +1 -1
  542. package/docs/guide/pt/settings/6-updates.md +24 -0
  543. package/docs/guide/pt/settings/7-existing-projects.md +33 -0
  544. package/docs/guide/pt/settings/8-accessibility.md +23 -0
  545. package/docs/guide/pt/specs/1-specs-and-the-backlog.md +41 -3
  546. package/docs/guide/pt/specs/2-add-spec-quick-mode.md +1 -1
  547. package/docs/guide/pt/specs/3-add-spec-explore-mode.md +1 -1
  548. package/docs/guide/zh/agents/1-meet-the-agents.md +1 -1
  549. package/docs/guide/zh/getting-started/2-installing-and-first-run.md +2 -0
  550. package/docs/guide/zh/getting-started/3-try-the-sample-project.md +35 -0
  551. package/docs/guide/zh/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  552. package/docs/guide/zh/getting-started/6-universal-search.md +34 -0
  553. package/docs/guide/zh/insights/1-analytics-and-cost-tracking.md +18 -4
  554. package/docs/guide/zh/insights/2-the-integrated-terminal.md +1 -1
  555. package/docs/guide/zh/insights/3-code-explorer.md +1 -1
  556. package/docs/guide/zh/integrations/1-ai-providers.md +1 -1
  557. package/docs/guide/zh/integrations/2-plugins.md +1 -1
  558. package/docs/guide/zh/integrations/3-jira-integration.md +3 -3
  559. package/docs/guide/zh/integrations/4-mobile-companion.md +1 -1
  560. package/docs/guide/zh/integrations/5-mcp-server.md +1 -1
  561. package/docs/guide/zh/integrations/6-agent-chat.md +11 -4
  562. package/docs/guide/zh/integrations/8-flow-mode.md +69 -0
  563. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +21 -1
  564. package/docs/guide/zh/pipeline/2-the-job-detail-view.md +12 -0
  565. package/docs/guide/zh/pipeline/3-reviewing-a-delivery.md +43 -0
  566. package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +2 -2
  567. package/docs/guide/zh/pipeline/5-the-loop-builder.md +1 -1
  568. package/docs/guide/zh/settings/1-themes.md +1 -1
  569. package/docs/guide/zh/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  570. package/docs/guide/zh/settings/5-project-environment.md +1 -1
  571. package/docs/guide/zh/settings/6-updates.md +24 -0
  572. package/docs/guide/zh/settings/7-existing-projects.md +33 -0
  573. package/docs/guide/zh/settings/8-accessibility.md +23 -0
  574. package/docs/guide/zh/specs/1-specs-and-the-backlog.md +41 -3
  575. package/docs/guide/zh/specs/2-add-spec-quick-mode.md +1 -1
  576. package/docs/guide/zh/specs/3-add-spec-explore-mode.md +1 -1
  577. package/docs/internals/README.md +8 -0
  578. package/docs/internals/adding-a-provider.md +19 -2
  579. package/docs/internals/agent-actions-audit.md +101 -0
  580. package/docs/internals/agent-sessions.md +36 -1
  581. package/docs/internals/api-reference.md +190 -45
  582. package/docs/internals/architecture.md +53 -47
  583. package/docs/internals/companion-inbox-decisions.md +42 -0
  584. package/docs/internals/companion-rails-as-loops-contract.md +17 -6
  585. package/docs/internals/configuration.md +140 -9
  586. package/docs/internals/core-runtime-updates.md +4 -4
  587. package/docs/internals/existing-project-anchoring.md +168 -0
  588. package/docs/internals/flow-mode.md +668 -0
  589. package/docs/internals/legacy-implementation-notes.md +13 -0
  590. package/docs/internals/local-testing-feedback-2026-10.md +210 -0
  591. package/docs/internals/mcp-mission-audit.md +4 -0
  592. package/docs/internals/mission-rail-cards.md +10 -5
  593. package/docs/internals/mission-read-only-policy.md +152 -0
  594. package/docs/internals/modal-standard.md +181 -0
  595. package/docs/internals/openspec-workflow.md +32 -0
  596. package/docs/internals/operations-runbook.md +30 -0
  597. package/docs/internals/profiles.md +6 -3
  598. package/docs/internals/programmatic-agent-runtime.md +8 -0
  599. package/docs/internals/project-builder.md +1 -1
  600. package/docs/internals/review-packet.md +161 -9
  601. package/docs/internals/safe-pr-review-flow.md +135 -6
  602. package/docs/internals/source-map.md +413 -18
  603. package/docs/internals/spec-addenda.md +10 -0
  604. package/docs/internals/spec-triage.md +140 -0
  605. package/docs/internals/visual-design-audit.md +15 -2
  606. package/docs/local-providers.md +3 -0
  607. package/docs/mcp.md +21 -3
  608. package/docs/platforms/macos.md +1 -1
  609. package/docs/platforms/windows.md +2 -2
  610. package/docs/running-pipelines.md +22 -6
  611. package/docs/tracking-cost.md +54 -10
  612. package/local-runner/dist/specrails-local-runner.js +3851 -1178
  613. package/mcp-bridge/dist/specrails-mcp.js +3864 -1143
  614. package/package.json +10 -9
  615. package/server/dist/agent-mcp-config.js +37 -1
  616. package/server/dist/api-version.js +19 -0
  617. package/server/dist/command-resolver.js +4 -2
  618. package/server/dist/core-compat.js +1 -1
  619. package/server/dist/core-execution.js +2 -1
  620. package/server/dist/core-update-manager.js +71 -13
  621. package/server/dist/db/job-search.js +248 -0
  622. package/server/dist/db/jobs.js +6 -0
  623. package/server/dist/db/migrations.js +239 -0
  624. package/server/dist/db.js +9 -2
  625. package/server/dist/desktop-db.js +99 -5
  626. package/server/dist/desktop-router.js +126 -13
  627. package/server/dist/docs-router.js +67 -1
  628. package/server/dist/feature-flags.js +22 -0
  629. package/server/dist/index.js +30 -15
  630. package/server/dist/jira/jira-adf.js +13 -1
  631. package/server/dist/jira/jira-clarifications.js +146 -0
  632. package/server/dist/jira/jira-client.js +8 -1
  633. package/server/dist/jira/jira-db.js +41 -0
  634. package/server/dist/jira/jira-sync-manager.js +328 -25
  635. package/server/dist/mcp/guide.js +17 -7
  636. package/server/dist/mcp/tools/agents.js +1 -1
  637. package/server/dist/mcp/tools/analytics.js +15 -3
  638. package/server/dist/mcp/tools/app-settings.js +14 -1
  639. package/server/dist/mcp/tools/chat.js +1 -1
  640. package/server/dist/mcp/tools/env.js +4 -2
  641. package/server/dist/mcp/tools/jobs.js +96 -7
  642. package/server/dist/mcp/tools/loops.js +1 -1
  643. package/server/dist/mcp/tools/meta.js +10 -13
  644. package/server/dist/mcp/tools/rails.js +15 -1
  645. package/server/dist/mcp/tools/setup.js +1 -1
  646. package/server/dist/mcp/tools/specs.js +8 -5
  647. package/server/dist/mcp/tools/support.js +6 -3
  648. package/server/dist/mcp/tools/types.js +38 -1
  649. package/server/dist/mobile/mobile-admin-router.js +0 -16
  650. package/server/dist/mobile/mobile-gateway.js +0 -18
  651. package/server/dist/mobile/mobile-inbox.js +240 -0
  652. package/server/dist/mobile/mobile-missions.js +6 -8
  653. package/server/dist/mobile/mobile-router.js +9 -9
  654. package/server/dist/mobile/mobile-webrtc-peer.js +4 -54
  655. package/server/dist/mobile/mobile-ws.js +27 -4
  656. package/server/dist/modules/accounting/runtime/ai-invocations.js +4 -0
  657. package/server/dist/modules/accounting/runtime/decision-times.js +102 -0
  658. package/server/dist/modules/accounting/runtime/loop-economics.js +284 -0
  659. package/server/dist/modules/accounting/runtime/spending.js +7 -2
  660. package/server/dist/modules/accounting/runtime/what-if.js +87 -0
  661. package/server/dist/modules/agent-runtime/runtime/agent-runtime-bridge.js +86 -5
  662. package/server/dist/modules/agent-runtime/runtime/agent-runtime-controls.js +28 -2
  663. package/server/dist/modules/agent-runtime/runtime/agent-runtime-metrics.js +15 -2
  664. package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings-router.js +21 -2
  665. package/server/dist/modules/agent-runtime/runtime/core-capabilities.js +55 -0
  666. package/server/dist/modules/agent-sessions/adapters/host-process.js +1 -1
  667. package/server/dist/modules/agent-sessions/domain/availability.js +16 -0
  668. package/server/dist/modules/agent-sessions/domain/protocol.js +8 -1
  669. package/server/dist/modules/agent-sessions/index.js +3 -1
  670. package/server/dist/modules/agent-sessions/runtime/core-sessions-availability.js +16 -0
  671. package/server/dist/modules/agents/runtime/agent-refine-manager.js +3 -1
  672. package/server/dist/modules/agents/runtime/agent-store.js +60 -73
  673. package/server/dist/modules/audit/adapters/http.js +66 -0
  674. package/server/dist/modules/audit/adapters/runtime.js +60 -0
  675. package/server/dist/modules/audit/adapters/sqlite.js +73 -0
  676. package/server/dist/modules/audit/application.js +190 -0
  677. package/server/dist/modules/audit/domain.js +434 -0
  678. package/server/dist/modules/audit/index.js +27 -0
  679. package/server/dist/modules/audit/ports.js +2 -0
  680. package/server/dist/modules/browser/runtime/browser-capture-manager.js +18 -141
  681. package/server/dist/modules/browser/runtime/browser-capture-types.js +1 -10
  682. package/server/dist/modules/browser/runtime/browser-playwright.js +0 -19
  683. package/server/dist/modules/code/runtime/file-provenance.js +23 -0
  684. package/server/dist/modules/conversations/runtime/chat-manager.js +5 -2
  685. package/server/dist/modules/delivery/adapters/decisions/chains.js +1 -0
  686. package/server/dist/modules/delivery/adapters/decisions/create.js +19 -1
  687. package/server/dist/modules/delivery/adapters/decisions/discard.js +2 -0
  688. package/server/dist/modules/delivery/adapters/decisions/local-changes.js +427 -0
  689. package/server/dist/modules/delivery/adapters/decisions/merge-local.js +80 -6
  690. package/server/dist/modules/delivery/adapters/decisions/observations.js +5 -0
  691. package/server/dist/modules/delivery/adapters/decisions/ownership.js +2 -1
  692. package/server/dist/modules/delivery/adapters/decisions/transitions.js +9 -0
  693. package/server/dist/modules/delivery/adapters/review-wip-store.js +37 -0
  694. package/server/dist/modules/delivery/domain/review-wip.js +71 -0
  695. package/server/dist/modules/delivery/index.js +9 -1
  696. package/server/dist/modules/delivery/runtime/delivery-changes.js +355 -0
  697. package/server/dist/modules/delivery/runtime/delivery-evidence.js +249 -8
  698. package/server/dist/modules/delivery/runtime/flow-review-legacy.js +99 -0
  699. package/server/dist/modules/delivery/runtime/flow-review-outcome.js +107 -0
  700. package/server/dist/modules/delivery/runtime/flow-worktree-handoff.js +32 -0
  701. package/server/dist/modules/delivery/runtime/flow-worktree-return.js +87 -0
  702. package/server/dist/modules/delivery/runtime/isolated-worktree.js +380 -0
  703. package/server/dist/modules/delivery/runtime/local-restore-branch.js +325 -0
  704. package/server/dist/modules/delivery/runtime/local-restore-resolver.js +48 -0
  705. package/server/dist/modules/delivery/runtime/local-stash.js +423 -0
  706. package/server/dist/modules/delivery/runtime/multi-repo-execution.js +27 -1
  707. package/server/dist/modules/delivery/runtime/phase3-harvest.js +40 -0
  708. package/server/dist/modules/delivery/runtime/pr-body.js +50 -0
  709. package/server/dist/modules/delivery/runtime/rail-isolated-launch.js +169 -166
  710. package/server/dist/modules/delivery/runtime/rail-launch-parser.js +5 -2
  711. package/server/dist/modules/delivery/runtime/rail-pr-decision.js +7 -1
  712. package/server/dist/modules/delivery/runtime/rail-pr-store.js +193 -12
  713. package/server/dist/modules/delivery/runtime/rails-router.js +267 -5
  714. package/server/dist/modules/delivery/runtime/review-brief.js +208 -0
  715. package/server/dist/modules/delivery/runtime/review-packet.js +41 -2
  716. package/server/dist/modules/delivery/runtime/review-wip-gate.js +67 -0
  717. package/server/dist/modules/delivery/runtime/run-records.js +267 -0
  718. package/server/dist/modules/delivery/runtime/run-review-diagnosis.js +102 -0
  719. package/server/dist/modules/execution/adapters/budget-storage.js +76 -0
  720. package/server/dist/modules/execution/application/enforce-budget.js +17 -2
  721. package/server/dist/modules/execution/domain/agent-env.js +98 -0
  722. package/server/dist/modules/execution/domain/daily-budget.js +36 -0
  723. package/server/dist/modules/execution/domain/spend-caps.js +166 -0
  724. package/server/dist/modules/execution/index.js +34 -1
  725. package/server/dist/modules/execution/runtime/budget-overview.js +76 -0
  726. package/server/dist/modules/execution/runtime/daily-budget-gate.js +86 -0
  727. package/server/dist/modules/execution/runtime/interactive-job-session.js +8 -0
  728. package/server/dist/modules/execution/runtime/launch-forecast.js +33 -0
  729. package/server/dist/modules/execution/runtime/queue-manager.js +54 -15
  730. package/server/dist/modules/execution/runtime/run-duration-stats.js +31 -13
  731. package/server/dist/modules/flow/adapters/bindings.js +1089 -0
  732. package/server/dist/modules/flow/adapters/http.js +147 -0
  733. package/server/dist/modules/flow/adapters/sqlite.js +121 -0
  734. package/server/dist/modules/flow/application.js +805 -0
  735. package/server/dist/modules/flow/domain.js +790 -0
  736. package/server/dist/modules/flow/index.js +34 -0
  737. package/server/dist/modules/flow/ports.js +2 -0
  738. package/server/dist/modules/inbox/adapters/http.js +21 -0
  739. package/server/dist/modules/inbox/adapters/project-source.js +233 -0
  740. package/server/dist/modules/inbox/application.js +28 -0
  741. package/server/dist/modules/inbox/domain.js +43 -0
  742. package/server/dist/modules/inbox/index.js +10 -0
  743. package/server/dist/modules/inbox/ports.js +2 -0
  744. package/server/dist/modules/loops/runtime/loop-definition-run.js +9 -0
  745. package/server/dist/modules/loops/runtime/loop-definition.js +5 -2
  746. package/server/dist/modules/loops/runtime/loop-executors.js +90 -9
  747. package/server/dist/modules/loops/runtime/loop-factory.js +30 -2
  748. package/server/dist/modules/loops/runtime/loop-flow-spec-recipe.js +166 -0
  749. package/server/dist/modules/loops/runtime/loop-graph.js +1 -1
  750. package/server/dist/modules/loops/runtime/loop-role-engines.js +4 -1
  751. package/server/dist/modules/loops/runtime/loop-run-manager.js +267 -10
  752. package/server/dist/modules/loops/runtime/loop-runs-store.js +21 -5
  753. package/server/dist/modules/loops/runtime/loop-templates.js +55 -12
  754. package/server/dist/modules/missions/runtime/agent-chat-manager.js +283 -20
  755. package/server/dist/modules/missions/runtime/agent-chat-router.js +96 -21
  756. package/server/dist/modules/missions/runtime/agent-failure-briefing.js +11 -3
  757. package/server/dist/modules/missions/runtime/agent-fence-promotion.js +9 -1
  758. package/server/dist/modules/missions/runtime/agent-flow-prompt.js +64 -0
  759. package/server/dist/modules/missions/runtime/agent-input-store.js +9 -4
  760. package/server/dist/modules/missions/runtime/agent-operator-prompt.js +100 -14
  761. package/server/dist/modules/missions/runtime/agent-session-store.js +88 -27
  762. package/server/dist/modules/missions/runtime/core-session-runner.js +89 -9
  763. package/server/dist/modules/missions/runtime/flow-turn-context.js +17 -0
  764. package/server/dist/modules/missions/runtime/mission-core-sessions.js +295 -55
  765. package/server/dist/modules/missions/runtime/mission-run-notify.js +2 -0
  766. package/server/dist/modules/missions/runtime/mission-session-projector.js +56 -19
  767. package/server/dist/modules/missions/runtime/mission-tool-policy.js +47 -0
  768. package/server/dist/modules/onboarding/adapters/http.js +78 -0
  769. package/server/dist/modules/onboarding/adapters/providers.js +41 -0
  770. package/server/dist/modules/onboarding/adapters/runtime.js +130 -0
  771. package/server/dist/modules/onboarding/application.js +133 -0
  772. package/server/dist/modules/onboarding/catalog.js +217 -0
  773. package/server/dist/modules/onboarding/domain.js +102 -0
  774. package/server/dist/modules/onboarding/index.js +20 -0
  775. package/server/dist/modules/onboarding/ports.js +2 -0
  776. package/server/dist/modules/project-rules/adapters/http.js +91 -0
  777. package/server/dist/modules/project-rules/domain.js +122 -0
  778. package/server/dist/modules/project-rules/runtime/rules-inventory-runs.js +97 -0
  779. package/server/dist/modules/project-rules/runtime/rules-store.js +109 -0
  780. package/server/dist/modules/project-settings/adapters/http.js +13 -0
  781. package/server/dist/modules/project-settings/adapters/sqlite.js +78 -8
  782. package/server/dist/modules/project-settings/domain.js +47 -1
  783. package/server/dist/modules/project-settings/index.js +7 -1
  784. package/server/dist/modules/recovery/adapters/sqlite.js +28 -0
  785. package/server/dist/modules/recovery/domain.js +162 -0
  786. package/server/dist/modules/recovery/index.js +16 -0
  787. package/server/dist/modules/specs/adapters/timeline-http.js +101 -0
  788. package/server/dist/modules/specs/domain/handoff-labels.js +371 -0
  789. package/server/dist/modules/specs/domain/handoff.js +260 -0
  790. package/server/dist/modules/specs/domain/non-goals.js +101 -0
  791. package/server/dist/modules/specs/domain/timeline.js +164 -0
  792. package/server/dist/modules/specs/domain/triage.js +320 -0
  793. package/server/dist/modules/specs/runtime/contract-refine-runner.js +3 -2
  794. package/server/dist/modules/specs/runtime/generated-spec-parser.js +75 -0
  795. package/server/dist/modules/specs/runtime/proposal-manager.js +4 -3
  796. package/server/dist/modules/specs/runtime/smash-runner.js +2 -1
  797. package/server/dist/modules/specs/runtime/spec-addenda.js +31 -0
  798. package/server/dist/modules/specs/runtime/spec-draft-parser.js +6 -1
  799. package/server/dist/modules/specs/runtime/spec-generation.js +431 -0
  800. package/server/dist/modules/specs/runtime/spec-handoff.js +103 -0
  801. package/server/dist/modules/specs/runtime/spec-history.js +376 -0
  802. package/server/dist/modules/specs/runtime/spec-launcher-manager.js +4 -3
  803. package/server/dist/modules/specs/runtime/spec-search.js +117 -0
  804. package/server/dist/modules/specs/runtime/ticket-store.js +47 -2
  805. package/server/dist/modules/specs/runtime/ticket-trash-service.js +62 -0
  806. package/server/dist/modules/specs/runtime/ticket-trash.js +193 -0
  807. package/server/dist/modules/specs/runtime/triage-runner.js +171 -0
  808. package/server/dist/modules/specs/runtime/triage.js +365 -0
  809. package/server/dist/modules/terminals/domain/app-urls.js +96 -0
  810. package/server/dist/modules/terminals/runtime/app-urls.js +77 -0
  811. package/server/dist/modules/terminals/runtime/background-process-service.js +25 -28
  812. package/server/dist/project-env.js +60 -0
  813. package/server/dist/project-git.js +65 -0
  814. package/server/dist/project-registry.js +264 -27
  815. package/server/dist/project-router-background-processes.js +27 -3
  816. package/server/dist/project-router-git.js +30 -0
  817. package/server/dist/project-router-helpers.js +5 -30
  818. package/server/dist/project-router-jobs.js +49 -1
  819. package/server/dist/project-router-loop-runs.js +72 -2
  820. package/server/dist/project-router-rules.js +54 -0
  821. package/server/dist/project-router-search.js +52 -0
  822. package/server/dist/project-router-settings.js +6 -0
  823. package/server/dist/project-router-setup.js +1 -1
  824. package/server/dist/project-router-spending.js +138 -0
  825. package/server/dist/project-router-tickets.js +246 -427
  826. package/server/dist/project-router.js +7 -0
  827. package/server/dist/providers/claude-adapter.js +25 -3
  828. package/server/dist/providers/codex-adapter.js +9 -1
  829. package/server/dist/providers/gemini-adapter.js +6 -1
  830. package/server/dist/providers/kimi-adapter.js +2 -0
  831. package/server/dist/providers/local-adapter.js +2 -0
  832. package/server/dist/providers/runtime.js +8 -0
  833. package/server/dist/schemas/agent-runtime.schema.json +3 -1
  834. package/server/dist/schemas/workflow-definition.schema.json +1 -0
  835. package/server/dist/setup-manager.js +19 -1
  836. package/server/dist/transient-children.js +25 -8
  837. package/server/dist/update-channel.js +21 -0
  838. package/server/dist/util/search-snippet.js +74 -0
  839. package/server/dist/worktree-manager.js +19 -8
  840. package/client/dist/assets/ActivityFeedPage-Dtp7EyHc.js +0 -1
  841. package/client/dist/assets/AgentBrowserCapture-CLqlEFw8.js +0 -1
  842. package/client/dist/assets/AgentModeAnalyticsPane-B8_hM3Tw.js +0 -2
  843. package/client/dist/assets/AgentModeCodePane-CNF8ZNjE.js +0 -2
  844. package/client/dist/assets/AgentModeJobsPane-CJpJbO9m.js +0 -1
  845. package/client/dist/assets/AgentsPage-BC8XSR79.js +0 -120
  846. package/client/dist/assets/AnalyticsPage-Cdv4jLtW.js +0 -1
  847. package/client/dist/assets/BarChart-BDMqVFJy.js +0 -55
  848. package/client/dist/assets/CodePage-DI1kegAr.js +0 -3
  849. package/client/dist/assets/DesktopAnalyticsPage-Bdp8E8U6.js +0 -1
  850. package/client/dist/assets/DocsDialog-Bm4RS7FX.js +0 -11
  851. package/client/dist/assets/DocsPage-DihYcU8r.js +0 -11
  852. package/client/dist/assets/ExportDropdown-Bb1lHx3r.js +0 -1
  853. package/client/dist/assets/IntegrationsPage-EAipiDWm.js +0 -1
  854. package/client/dist/assets/InteractiveJobComposer-BO6ASN-2.js +0 -19
  855. package/client/dist/assets/JobDetailModal-CuPYq7tP.js +0 -1
  856. package/client/dist/assets/JobDetailPage-BusMjJi9.js +0 -1
  857. package/client/dist/assets/JobsPage-C0QbsF2d.js +0 -1
  858. package/client/dist/assets/LoopBuilderPage-B7TlU4iS.js +0 -1
  859. package/client/dist/assets/LoopPreviewModal-BRWtXOD2.js +0 -1
  860. package/client/dist/assets/LoopsPage-C4q1DmCE.js +0 -2
  861. package/client/dist/assets/MinimizedChatsContext-DHfigjHS.js +0 -1
  862. package/client/dist/assets/PluginsPage-Z1JHSMdR.js +0 -2
  863. package/client/dist/assets/ProjectSettingsDialog-BUNj0tvN.js +0 -1
  864. package/client/dist/assets/RepositoryDeliveries-B4ybHOyB.js +0 -5
  865. package/client/dist/assets/ReviewPacketPage-hwfPNjyy.js +0 -4
  866. package/client/dist/assets/TemplatePreviewModal-V7FpMWuw.js +0 -1
  867. package/client/dist/assets/TicketDetailModalContext-Dkwo2cDs.js +0 -16
  868. package/client/dist/assets/Trans-BbFxRFtR.js +0 -1
  869. package/client/dist/assets/activity-B-rp4h_v.js +0 -1
  870. package/client/dist/assets/activity-C6kJpm9q.js +0 -1
  871. package/client/dist/assets/activity-CGx4kb_j.js +0 -1
  872. package/client/dist/assets/activity-CnoX2bH7.js +0 -1
  873. package/client/dist/assets/activity-DAyekdlt.js +0 -1
  874. package/client/dist/assets/activity-DCxtpT7j.js +0 -1
  875. package/client/dist/assets/activity-DiyjsgQV.js +0 -1
  876. package/client/dist/assets/activity-JzwRaWPD.js +0 -1
  877. package/client/dist/assets/addspec-BOvgmcgk.js +0 -1
  878. package/client/dist/assets/addspec-Clmyfn_R.js +0 -1
  879. package/client/dist/assets/addspec-CsNaBpHp.js +0 -1
  880. package/client/dist/assets/addspec-D2tvWmmV.js +0 -1
  881. package/client/dist/assets/addspec-D3nFwvD0.js +0 -1
  882. package/client/dist/assets/addspec-DVLEhK3w.js +0 -1
  883. package/client/dist/assets/addspec-DXbK-tb0.js +0 -1
  884. package/client/dist/assets/addspec-OHG8DFEn.js +0 -1
  885. package/client/dist/assets/agent-5bSixVzz.js +0 -1
  886. package/client/dist/assets/agent-BR4EHfhq.js +0 -1
  887. package/client/dist/assets/agent-C0IKkJP8.js +0 -1
  888. package/client/dist/assets/agent-C7li9ayC.js +0 -1
  889. package/client/dist/assets/agent-D0dRmEen.js +0 -1
  890. package/client/dist/assets/agent-DZVGHm7H.js +0 -1
  891. package/client/dist/assets/agent-Dip4h2YE.js +0 -1
  892. package/client/dist/assets/agent-Pp-P-n1p.js +0 -1
  893. package/client/dist/assets/agentRuntime-BxF81z52.js +0 -1
  894. package/client/dist/assets/agentRuntime-BxYS5V7u.js +0 -1
  895. package/client/dist/assets/agentRuntime-Dc9HG3BA.js +0 -1
  896. package/client/dist/assets/agents-B6ZsnARo.js +0 -1
  897. package/client/dist/assets/agents-BORdhe0K.js +0 -1
  898. package/client/dist/assets/agents-C6aq9Oqs.js +0 -1
  899. package/client/dist/assets/agents-Cbsc4bcX.js +0 -1
  900. package/client/dist/assets/agents-D0uYR6hq.js +0 -1
  901. package/client/dist/assets/agents-Doe1sHY5.js +0 -1
  902. package/client/dist/assets/agents-DyNi_I9m.js +0 -1
  903. package/client/dist/assets/agents-StKxiTg0.js +0 -1
  904. package/client/dist/assets/agentstudio-7cYCXn-L.js +0 -1
  905. package/client/dist/assets/agentstudio-BHWQh8G3.js +0 -1
  906. package/client/dist/assets/agentstudio-BjnWHyRs.js +0 -1
  907. package/client/dist/assets/agentstudio-BkV8vcK4.js +0 -1
  908. package/client/dist/assets/agentstudio-BzugqB_N.js +0 -1
  909. package/client/dist/assets/agentstudio-CWbp7KvH.js +0 -1
  910. package/client/dist/assets/agentstudio-DG6plf5o.js +0 -1
  911. package/client/dist/assets/agentstudio-DkZVF-Cc.js +0 -1
  912. package/client/dist/assets/analytics-B1DIQd4m.js +0 -1
  913. package/client/dist/assets/analytics-BAIZ9vE_.js +0 -1
  914. package/client/dist/assets/analytics-BTqgmgBd.js +0 -1
  915. package/client/dist/assets/analytics-BWynXPEm.js +0 -1
  916. package/client/dist/assets/analytics-DGcUsQ44.js +0 -1
  917. package/client/dist/assets/analytics-GnSnpJ4W.js +0 -1
  918. package/client/dist/assets/analytics-TWgYaoO0.js +0 -1
  919. package/client/dist/assets/analytics-kJy6Tuko.js +0 -1
  920. package/client/dist/assets/atom-one-dark-qiGhVQxg.js +0 -1
  921. package/client/dist/assets/builder-B9gorTnT.js +0 -1
  922. package/client/dist/assets/builder-Bvw5s3Mi.js +0 -1
  923. package/client/dist/assets/builder-CL5l4dU3.js +0 -1
  924. package/client/dist/assets/builder-CVDTVrQX.js +0 -1
  925. package/client/dist/assets/builder-CpS9liE9.js +0 -1
  926. package/client/dist/assets/builder-DNctIL9Q.js +0 -1
  927. package/client/dist/assets/builder-De2NxX6o.js +0 -1
  928. package/client/dist/assets/builder-DeYT7Y-m.js +0 -1
  929. package/client/dist/assets/button-4FS1ZDTp.js +0 -1
  930. package/client/dist/assets/chat-D_I7nU5K.js +0 -1
  931. package/client/dist/assets/chevron-up-6EFqEHBj.js +0 -1
  932. package/client/dist/assets/chunk-OB3PAWPO-B1EMk45A.js +0 -3
  933. package/client/dist/assets/clsx-CjueKrWZ.js +0 -1
  934. package/client/dist/assets/code-B37GRg9C.js +0 -1
  935. package/client/dist/assets/code-BBOEZbf9.js +0 -1
  936. package/client/dist/assets/code-BRm-jcyx.js +0 -1
  937. package/client/dist/assets/code-CF7w62CR.js +0 -1
  938. package/client/dist/assets/code-CLuvJt2r.js +0 -1
  939. package/client/dist/assets/code-D0RCm59f.js +0 -1
  940. package/client/dist/assets/code-DaZ-ZwCT.js +0 -1
  941. package/client/dist/assets/code-iIHkGaCL.js +0 -1
  942. package/client/dist/assets/commands-0XjAftla.js +0 -1
  943. package/client/dist/assets/commands-BAWSYHjQ.js +0 -1
  944. package/client/dist/assets/commands-BBwowgiE.js +0 -1
  945. package/client/dist/assets/commands-BacjIZLN.js +0 -1
  946. package/client/dist/assets/commands-Bs62IAZ3.js +0 -1
  947. package/client/dist/assets/commands-CLPdh-Hh.js +0 -1
  948. package/client/dist/assets/commands-DlbFzgrp.js +0 -1
  949. package/client/dist/assets/commands-LjPSsi5F.js +0 -1
  950. package/client/dist/assets/common-Bdi0qN4S.js +0 -1
  951. package/client/dist/assets/common-Bhb9zN1P.js +0 -1
  952. package/client/dist/assets/common-BykKlZg1.js +0 -1
  953. package/client/dist/assets/common-CvnNNSJA.js +0 -1
  954. package/client/dist/assets/common-D5zk_mqq.js +0 -1
  955. package/client/dist/assets/common-DQNO_al5.js +0 -1
  956. package/client/dist/assets/common-Dax30Vmp.js +0 -1
  957. package/client/dist/assets/common-DkllpVSb.js +0 -1
  958. package/client/dist/assets/core-B3mKBIh5.js +0 -1
  959. package/client/dist/assets/dashboard-B1ndRHuC.js +0 -1
  960. package/client/dist/assets/dashboard-BX7KXiqA.js +0 -1
  961. package/client/dist/assets/dashboard-B_BSNxcN.js +0 -1
  962. package/client/dist/assets/dashboard-CCeFN7-V.js +0 -1
  963. package/client/dist/assets/dashboard-CRl0WtFJ.js +0 -1
  964. package/client/dist/assets/dashboard-XGdQ5mjw.js +0 -1
  965. package/client/dist/assets/dashboard-_oltA6Jd.js +0 -1
  966. package/client/dist/assets/dashboard-bAuf5KVk.js +0 -1
  967. package/client/dist/assets/dialog-DtdR05v1.js +0 -45
  968. package/client/dist/assets/dist-js-CJ_2XX1Y.js +0 -1
  969. package/client/dist/assets/event-Bt7f3wXe.js +0 -1
  970. package/client/dist/assets/explore-BG99VGpL.js +0 -1
  971. package/client/dist/assets/explore-C0TjprJW.js +0 -1
  972. package/client/dist/assets/explore-C2dgEo7q.js +0 -1
  973. package/client/dist/assets/explore-C8NDHbob.js +0 -1
  974. package/client/dist/assets/explore-CWWgzQGR.js +0 -1
  975. package/client/dist/assets/explore-CcQXpdtS.js +0 -1
  976. package/client/dist/assets/explore-DgBACn39.js +0 -1
  977. package/client/dist/assets/explore-DsXAgnmJ.js +0 -1
  978. package/client/dist/assets/file-text-C0blZHLh.js +0 -1
  979. package/client/dist/assets/formatDistanceToNow-NjPHBLfB.js +0 -1
  980. package/client/dist/assets/getTimezoneOffsetInMilliseconds-vJ7qUoqN.js +0 -1
  981. package/client/dist/assets/git-branch-yf6LE1Bw.js +0 -1
  982. package/client/dist/assets/index-BgbCbIua.css +0 -2
  983. package/client/dist/assets/index-Ce4yZtKf.js +0 -83
  984. package/client/dist/assets/integrations-BkpRUbvp.js +0 -1
  985. package/client/dist/assets/integrations-Bo8qbJf4.js +0 -1
  986. package/client/dist/assets/integrations-CmSrKzZb.js +0 -1
  987. package/client/dist/assets/integrations-DGtq26Rr.js +0 -1
  988. package/client/dist/assets/integrations-De38GFnQ.js +0 -1
  989. package/client/dist/assets/integrations-Dw6zdtb-.js +0 -1
  990. package/client/dist/assets/integrations-Dwl9KQp0.js +0 -1
  991. package/client/dist/assets/integrations-Refg_d2I.js +0 -1
  992. package/client/dist/assets/jira-B6OYw4CJ.js +0 -1
  993. package/client/dist/assets/jira-BTF6RaOe.js +0 -1
  994. package/client/dist/assets/jira-CEetIB2q.js +0 -1
  995. package/client/dist/assets/jira-CIzsZLw5.js +0 -1
  996. package/client/dist/assets/jira-Daw9tmpI.js +0 -1
  997. package/client/dist/assets/jira-FXr7u2lh.js +0 -1
  998. package/client/dist/assets/jira-LaNQn7yl.js +0 -1
  999. package/client/dist/assets/jira-api-Cabj-H0J.js +0 -1
  1000. package/client/dist/assets/job-time-BCL7wee9.js +0 -1
  1001. package/client/dist/assets/jobs-ARwD85B9.js +0 -1
  1002. package/client/dist/assets/jobs-BMF1w4WT.js +0 -1
  1003. package/client/dist/assets/jobs-CBfzGLwm.js +0 -1
  1004. package/client/dist/assets/jobs-CPjiluBY.js +0 -1
  1005. package/client/dist/assets/jobs-CQQd58pY.js +0 -1
  1006. package/client/dist/assets/jobs-De3EqaO0.js +0 -1
  1007. package/client/dist/assets/jobs-Du9-Ei9a.js +0 -1
  1008. package/client/dist/assets/jobs-qMHbnxwC.js +0 -1
  1009. package/client/dist/assets/layers-BCLTgHXO.js +0 -1
  1010. package/client/dist/assets/loader-circle-BqV9xYGf.js +0 -1
  1011. package/client/dist/assets/loop-layout-CyXj9223.js +0 -7
  1012. package/client/dist/assets/loops-B2PhQLKR.js +0 -1
  1013. package/client/dist/assets/loops-BqbF46st.js +0 -1
  1014. package/client/dist/assets/loops-CINnHbfI.js +0 -1
  1015. package/client/dist/assets/loops-D-3XhH04.js +0 -1
  1016. package/client/dist/assets/loops-DKkEEjZ_.js +0 -1
  1017. package/client/dist/assets/loops-DzWR5-v6.js +0 -1
  1018. package/client/dist/assets/loops-WyWDkhok.js +0 -1
  1019. package/client/dist/assets/loops-scD5fIBf.js +0 -1
  1020. package/client/dist/assets/mcp-6rMoZfEO.js +0 -1
  1021. package/client/dist/assets/mcp-BD8sL5mP.js +0 -1
  1022. package/client/dist/assets/mcp-BkcA3I5s.js +0 -1
  1023. package/client/dist/assets/mcp-CCpSelOh.js +0 -1
  1024. package/client/dist/assets/mcp-CUAN6ORK.js +0 -1
  1025. package/client/dist/assets/mcp-CqbRxRTE.js +0 -1
  1026. package/client/dist/assets/mcp-DP2YfVhO.js +0 -1
  1027. package/client/dist/assets/mcp-DUVQamDz.js +0 -1
  1028. package/client/dist/assets/narration-BEKMVxGm.js +0 -1
  1029. package/client/dist/assets/narration-CjLwGKap.js +0 -1
  1030. package/client/dist/assets/narration-DANWuGsW.js +0 -1
  1031. package/client/dist/assets/narration-DGeEDWiT.js +0 -1
  1032. package/client/dist/assets/narration-DJgpGwIP.js +0 -1
  1033. package/client/dist/assets/narration-DbHnz0qV.js +0 -1
  1034. package/client/dist/assets/narration-bZSsTZG8.js +0 -1
  1035. package/client/dist/assets/narration-i6aKJKEc.js +0 -1
  1036. package/client/dist/assets/nav--u7iPYlS.js +0 -1
  1037. package/client/dist/assets/nav-C5Jgfaby.js +0 -1
  1038. package/client/dist/assets/nav-CAna_Wpt.js +0 -1
  1039. package/client/dist/assets/nav-CCLqeyHo.js +0 -1
  1040. package/client/dist/assets/nav-Cf3c90Jk.js +0 -1
  1041. package/client/dist/assets/nav-DMYQaQjR.js +0 -1
  1042. package/client/dist/assets/nav-Df_PkZ9F.js +0 -1
  1043. package/client/dist/assets/nav-VyNGBJwj.js +0 -1
  1044. package/client/dist/assets/packet-8nn9RsU7.js +0 -1
  1045. package/client/dist/assets/packet-B0H15elv.js +0 -1
  1046. package/client/dist/assets/packet-BQvBgrwh.js +0 -1
  1047. package/client/dist/assets/packet-BR7mO0-a.js +0 -1
  1048. package/client/dist/assets/packet-BgcQ6q_K.js +0 -1
  1049. package/client/dist/assets/packet-D2s92Jnn.js +0 -1
  1050. package/client/dist/assets/packet-YbtcD1HS.js +0 -1
  1051. package/client/dist/assets/packet-c0Qj_9eX.js +0 -1
  1052. package/client/dist/assets/project-repositories-Cnnuj9Ia.js +0 -1
  1053. package/client/dist/assets/rotate-ccw-DalJAQQX.js +0 -1
  1054. package/client/dist/assets/settings-B1NV8Ow9.js +0 -1
  1055. package/client/dist/assets/settings-BQ8XFZeE.js +0 -1
  1056. package/client/dist/assets/settings-BRkxfBbO.js +0 -1
  1057. package/client/dist/assets/settings-C_CcU1dP.js +0 -1
  1058. package/client/dist/assets/settings-Cto9n0eL.js +0 -1
  1059. package/client/dist/assets/settings-Pyw8uYtL.js +0 -1
  1060. package/client/dist/assets/settings-b3HVCNNd.js +0 -1
  1061. package/client/dist/assets/settings-hdive4u6.js +0 -1
  1062. package/client/dist/assets/setup-Be485n2u.js +0 -1
  1063. package/client/dist/assets/setup-CKGUxKr-.js +0 -1
  1064. package/client/dist/assets/setup-Ck1Uwd7_.js +0 -1
  1065. package/client/dist/assets/setup-Cm774a6v.js +0 -1
  1066. package/client/dist/assets/setup-DIqMQpxt.js +0 -1
  1067. package/client/dist/assets/setup-DfCsoNFL.js +0 -1
  1068. package/client/dist/assets/setup-DkeE8mP0.js +0 -1
  1069. package/client/dist/assets/setup-xVntVaz1.js +0 -1
  1070. package/client/dist/assets/specs-Bqvtz2kz.js +0 -1
  1071. package/client/dist/assets/specs-CKes-kz6.js +0 -1
  1072. package/client/dist/assets/specs-CfXxPDNB.js +0 -1
  1073. package/client/dist/assets/specs-CyF9HuTI.js +0 -1
  1074. package/client/dist/assets/specs-DMj035Mt.js +0 -1
  1075. package/client/dist/assets/specs-DfIdoU5L.js +0 -1
  1076. package/client/dist/assets/specs-j5pGLQeU.js +0 -1
  1077. package/client/dist/assets/specs-xW5pkkB7.js +0 -1
  1078. package/client/dist/assets/spending-CQnrWiR3.js +0 -1
  1079. package/client/dist/assets/square-D0JTbRSR.js +0 -1
  1080. package/client/dist/assets/tauri-shell-DE6LfGPw.js +0 -2
  1081. package/client/dist/assets/terminal-BAzpHtpY.js +0 -1
  1082. package/client/dist/assets/terminal-C7dHeR3x.js +0 -1
  1083. package/client/dist/assets/terminal-CMla5Qsz.js +0 -1
  1084. package/client/dist/assets/terminal-CdNXH-n9.js +0 -1
  1085. package/client/dist/assets/terminal-Cw5bZsmV.js +0 -1
  1086. package/client/dist/assets/terminal-DFUP4eNv.js +0 -1
  1087. package/client/dist/assets/terminal-DGqljeK_.js +0 -1
  1088. package/client/dist/assets/terminal-cU70NodO.js +0 -1
  1089. package/client/dist/assets/tickets--tiSOCcn.js +0 -1
  1090. package/client/dist/assets/tickets-BUJ3DMWU.js +0 -1
  1091. package/client/dist/assets/tickets-C1WNPODq.js +0 -1
  1092. package/client/dist/assets/tickets-CDjhWmiE.js +0 -1
  1093. package/client/dist/assets/tickets-CLgPC3uO.js +0 -1
  1094. package/client/dist/assets/tickets-D41ZMQpf.js +0 -1
  1095. package/client/dist/assets/tickets-DEaQC06P.js +0 -1
  1096. package/client/dist/assets/tickets-kcMzbLCp.js +0 -1
  1097. package/client/dist/assets/trash-D8zYUmTg.js +0 -1
  1098. package/client/dist/assets/useDesktop-BjLT0_EE.js +0 -1
  1099. package/client/dist/assets/useRuntimeRuns-C97qEqMg.js +0 -1
  1100. package/client/dist/assets/useSharedWebSocket-Bj4LMp7b.js +0 -2
  1101. package/client/dist/assets/utils-BC4DHlz2.js +0 -1
  1102. package/docs/guide/en/getting-started/4-the-dashboard-tour.md +0 -48
  1103. package/docs/guide/es/getting-started/4-the-dashboard-tour.md +0 -48
  1104. package/server/dist/mobile/mobile-preview-channel.js +0 -179
  1105. package/server/dist/mobile/mobile-preview.js +0 -366
  1106. package/server/dist/modules/browser/domain/preview-origins.js +0 -117
  1107. package/server/dist/modules/browser/runtime/preview-targets.js +0 -80
  1108. /package/client/dist/assets/{atom-one-dark-B-oHczHB.css → DocView-B-oHczHB.css} +0 -0
  1109. /package/docs/guide/de/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1110. /package/docs/guide/en/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1111. /package/docs/guide/es/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1112. /package/docs/guide/fr/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1113. /package/docs/guide/it/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1114. /package/docs/guide/ja/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1115. /package/docs/guide/pt/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1116. /package/docs/guide/zh/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
@@ -0,0 +1 @@
1
+ var e={title:`Intégrations`,subtitle:`Plugins par projet. Chaque projet choisit indépendamment les intégrations à activer.`,selectProject:`Sélectionnez un projet pour gérer les intégrations.`,deprecated:`Obsolète`,loadError:`Échec du chargement des plugins.`,empty:`Aucun plugin n'est inclus dans cette version.`},t={statusActive:`Actif`,statusDeactivated:`Désactivé`,statusDegraded:`Dégradé`,updateAvailable:`Mise à jour disponible`,requires:`Requiert : {{list}}`,deactivatedHint:`Installé mais désactivé — Claude ne le chargera pas à la prochaine session. Basculez sur <strong>Actif</strong> pour le réactiver.`,install:`Installer`,uninstall:`Désinstaller`},n={titleActive:`Actif — cliquez pour désactiver`,titleDeactivated:`Désactivé — cliquez pour activer`},r={body:`Claude a le plugin du marketplace <strong>installé mais désactivé</strong> dans son cache. Il peut encore résoudre le serveur depuis <code>~/.claude/plugins/cache/...</code> même si l'interrupteur est désactivé. Pour forcer la portée projet uniquement, désinstallez le plugin du marketplace depuis Claude :`,runInstruction:`Exécutez dans une session Claude active, puis redémarrez Claude dans ce projet.`},i={body:`Le manifeste inclus a changé depuis votre installation (probablement un renommage en amont). Réécrivez <code>.mcp.json</code> avec l'entrée canonique — opération chirurgicale, seules les clés possédées par le plugin sont touchées.`,button:`Mettre à jour l'entrée <code>.mcp.json</code>`},a={body:`<strong>{{name}}</strong> est aussi activé globalement via le marketplace de plugins de Claude, ce qui masque cette installation au niveau du projet. Pour que cette carte passe en Actif, désactivez la version globale ci-dessous — elle peut être réactivée depuis Claude à tout moment.`,disableButton:`Désactiver <code>{{key}}</code>`},o={badge:`Orphelin`,removeButton:`Supprimer l'orphelin`},s={title:`Installer {{name}}`,computingChanges:`Calcul des modifications…`,filesHeading:`Fichiers qui seront modifiés`,prerequisites:`Prérequis`,autoInstall:`Installation automatique`,progress:`Progression`,installingPrereq:`Installation de {{name}}…`,prereqStartFailed:`Échec du démarrage : {{message}}`},c={title:`Désinstaller {{name}} ?`,body:`Cela annulera les entrées gérées par le plugin dans <code>.mcp.json</code> et supprimera les fichiers créés par le plugin. Votre code, votre historique et les autres plugins ne sont pas affectés.`},l={title:`Documentation`,dialogDescription:`Le guide utilisateur de Specrails fourni avec cette version.`,sidebarEmpty:`Pas encore de docs`,indexEmpty:`La documentation apparaîtra ici. Le guide utilisateur est fourni avec l’app sous docs/guide/ ; déposez des fichiers Markdown sous ~/.specrails/docs/guide/ pour la personnaliser.`,categoryEmpty:`Aucun document dans cette catégorie pour l'instant.`,documentCount_one:`{{count}} document`,documentCount_other:`{{count}} documents`,categoryCount_one:`{{count}} catégorie`,categoryCount_other:`{{count}} catégories`,summary:`{{documents}} répartis dans {{categories}}.`,loadError:`Impossible de charger ce document.`,loading:`Chargement de la documentation…`,errorDetails:`Détails`,navLabel:`Sections de la documentation`,guideCount_one:`{{count}} guide fourni avec cette version`,guideCount_other:`{{count}} guides fournis avec cette version`,filterPlaceholder:`Filtrer les guides`,filterNoResults:`Aucun guide ne correspond à « {{query}} ».`},u={title:`Jira`,category:`Suivi des tickets`,description:`Adossez les specs de ce projet à un tableau Jira — synchronisation bidirectionnelle du statut, plus un commentaire à la fin d'un rail.`,connectedDescription:`Synchronisé avec {{key}}. Les specs reflètent votre tableau Jira dans les deux sens.`,connect:`Connecter`,connected:`Connecté`,manage:`Gérer`,modalTitle:`Se connecter à Jira`,manageTitle:`Connexion Jira`,bullet1:`Synchronisation bidirectionnelle du statut avec votre tableau Jira.`,bullet2:`Publie un commentaire à la fin d'un rail.`,bullet3:`Votre backlog Jira apparaît comme des specs sur le tableau.`,requires:`Nécessite un compte Jira Cloud ou Data Center.`},d={page:{title:`Plugins`,subtitle:`Outils globaux et intégrations de projet, gérés au même endroit.`,readyCount_one:`{{count}} prêt`,readyCount_other:`{{count}} prêts`,attentionCount_one:`{{count}} à vérifier`,attentionCount_other:`{{count}} à vérifier`,openWindow:`Ouvrir dans une fenêtre`,openWindowFailed:`Impossible d’ouvrir la fenêtre des plugins`},search:{placeholder:`Rechercher des plugins`},filters:{all:`Tous`,global:`Globaux`,project:`Projet`,label:`Portée`},sections:{installed:`Installés`,available:`Disponibles`},scope:{global:`Global`,project:`Projet`},groups:{global:{title:`Globaux`,detail:`S’applique à tout Specrails`},project:{title:`Locaux au projet`,detail:`Configurés par dépôt`}},empty:{installedSearch:`Aucun plugin installé ne correspond à cette recherche.`,installed:`Aucun plugin installé pour le moment.`,availableSearch:`Aucun plugin disponible ne correspond à cette recherche.`,allInstalled:`Tous les plugins sont installés.`},actions:{install:`Installer`,manage:`Gérer`,review:`Examiner`,cancel:`Annuler`,installBusy:`Installation…`,configureBusy:`Configuration…`,reviewBusy:`Vérification…`},status:{attention:`attention requise`,active:`actif`,externalActive:`externe actif`,external:`externe`,installed:`installé`,available:`disponible`,configuredCount_one:`{{count}} configuré`,configuredCount_other:`{{count}} configurés`,installedCount_one:`{{count}} installé`,installedCount_other:`{{count}} installés`},catalog:{headroom:{description:`Optimise les lancements Codex et Claude via Headroom AI.`},jira:{description:`Synchronise les specs du projet avec un tableau Jira, le mapping des statuts et les commentaires de fin.`},serena:{description:`Navigation sémantique locale au projet via Serena MCP.`}},headroom:{title:`Headroom AI`,dialogDescription:`Gérez l’installation globale de Headroom et le routage par fournisseur.`,panelDescription:`Installé globalement, activé séparément pour Codex et Claude.`,issueCode:`Code : {{code}}`,confirmDetach:`Cela désactive le routage Specrails et arrête le proxy. L’installation Headroom système existante reste intacte.`,confirmUninstall:`Cela désactive les routes Codex et Claude, arrête le proxy et supprime l’outil Headroom géré par Specrails.`,metrics:{install:`Installation`,checking:`Vérification`,ready:`Prêt`,missing:`Manquant`,source:`Source`,system:`Système`,specrails:`Specrails`,none:`Aucun`,proxy:`Proxy`,starting:`Démarrage`,off:`Désactivé`},actions:{installWithUv:`Installer avec uv inclus`,disableAllRoutes:`Désactiver toutes les routes`,viewDiagnostics:`Voir les diagnostics`,detachHeadroom:`Détacher Headroom`,uninstallHeadroom:`Désinstaller Headroom`,detach:`Détacher`,uninstall:`Désinstaller`},port:{label:`Port du proxy`,apply:`Appliquer`},provider:{noProjectUsesProvider:`Aucun projet Specrails n’utilise ce fournisseur`,routedThroughHeadroom:`Routé via Headroom`,detectedExternalRoute:`Route externe détectée`,notRouted:`Non routé`},savings:{title:`Économies de tokens Headroom`,learningOn:`sortie mesurée`,waitingForOutputSamples:`sortie non mesurée`,baseline:`référence {{method}}`,updatedLive:`mis à jour en direct`,baselineSamples_one:`{{count}} échantillon de référence`,baselineSamples_other:`{{count}} échantillons de référence`,tokens:`tokens`,learning:`Aucune donnée`,off:`Désactivé`,requestDetail:`{{method}} · {{count}} requêtes`,requestCount:`{{count}} requêtes`,detected:`détecté`,totals:`Totaux`,input:`Entrée`,output:`Sortie`,processed:`Traités`,saved:`Économisés`,noData:`Aucune donnée`,inputSaved:`Entrée économisée`,outputSaved:`Sortie économisée`,inputSavingsActive:`Routage via Headroom`,statusInputOutput:`Entrée + sortie`,statusInputOnly:`Entrée active`,statusRouting:`Routage actif`,statusInactive:`Inactif`,methods:{estimated:`estimée`,measured:`mesurée`,none:`aucune`},waitingForShapedResponses:`Aucune réponse de sortie mesurée`,outputObserved:`{{value}} de sortie observés`,routeDisabled:`Route désactivée`},issues:{uv_missing_or_corrupt:{title:`Le uv inclus n’est pas disponible`,guidance:`Specrails n’a pas pu démarrer son runtime uv inclus. Réinstallez Specrails ou utilisez Réparer quand le runtime sera disponible.`},network_unavailable:{title:`Headroom n’a pas pu être téléchargé`,guidance:`Vérifiez votre connexion réseau puis réessayez. Specrails gardera l’installation isolée dans son propre dossier d’outils.`},package_resolution_failed:{title:`Les dépendances de Headroom n’ont pas pu être résolues`,guidance:`Réessayez l’installation. Si l’échec persiste, ouvrez les diagnostics et partagez la sortie uv.`},install_permission_failed:{title:`Specrails ne peut pas écrire dans son dossier d’outils`,guidance:`Vérifiez les permissions sous ~/.specrails/tools, puis réessayez l’installation.`},headroom_not_found_after_install:{title:`L’installation est terminée mais Headroom est introuvable`,guidance:`Lancez Réparer l’installation. Specrails réinstallera Headroom et vérifiera l’exécutable.`},learning_setup_failed:{title:`L’apprentissage Headroom n’a pas pu être activé`,guidance:`Headroom est installé, mais la calibration des économies de sortie n’est pas terminée. Continuez à utiliser le routage proxy pendant la collecte d’échantillons.`},metrics_unavailable:{title:`Les métriques Headroom ne sont pas encore disponibles`,guidance:`Commencez à router du trafic via Headroom. Specrails actualisera les économies de tokens dès que le proxy rapportera des échantillons.`},proxy_port_busy:{title:`Le port du proxy Headroom est déjà utilisé`,guidance:`Choisissez un autre port ou arrêtez le processus utilisant le port actuel, puis réessayez l’activation.`},proxy_unhealthy:{title:`Le proxy Headroom n’est pas devenu sain`,guidance:`Réessayez l’activation. Si cela se reproduit, ouvrez les diagnostics pour inspecter la sortie du proxy.`},provider_route_failed:{title:`La vérification de la route du fournisseur a échoué`,guidance:`Specrails n’a pas pu vérifier la route du fournisseur. Le fournisseur reste inactif ; réessayez après avoir consulté les diagnostics.`},provider_config_conflict:{title:`La configuration fournisseur existante entre en conflit avec Headroom`,guidance:`Consultez les diagnostics avant d’activer le routage système. Le routage géré par Specrails reste réversible.`},activation_partially_applied:{title:`L’activation n’a été appliquée que partiellement`,guidance:`Specrails a tenté un rollback. Consultez les diagnostics et réessayez le fournisseur concerné.`},not_installed:{title:`Headroom n’est pas installé`,guidance:`Installez Headroom d’abord, puis activez Codex ou Claude.`},uninstall_failed:{title:`Headroom n’a pas pu être désinstallé`,guidance:`Specrails a désactivé le routage Headroom mais n’a pas pu supprimer l’outil géré. Ouvrez les diagnostics puis réessayez.`},unknown:{title:`L’opération Headroom a échoué`,guidance:`Réessayez l’opération. Si cela se reproduit, ouvrez les diagnostics et partagez les détails.`}}},projectWizard:{configureJira:`Configurer Jira`,installSerena:`Installer Serena`,description:`Sélectionnez le projet où ce plugin local au projet doit être configuré.`,chooseProject:`Choisir un projet`,requiresClaudeProvider:`Nécessite le fournisseur Claude`,selectProjectToContinue:`Sélectionnez un projet pour continuer.`,requiresSupportedProvider:`Nécessite Claude ou Codex`},serena:{loading:`Chargement de Serena…`,titleForProject:`Serena pour {{name}}`,description:`Installe la configuration MCP et l’état du plugin localement au projet. Les autres projets ne sont pas touchés.`,status:`Statut : {{status}}`,files:`Fichiers`,prerequisites:`Prérequis`,provider:`Fournisseur d'IA`},projectStatus:{installed:`installé`,deactivated:`désactivé`,"not-installed":`non installé`,orphan:`orphelin`,degraded:`dégradé`},diagnostics:{title:`Diagnostics Headroom`,description:`État technique de l’installation Headroom gérée par Specrails et du proxy.`},jira:{loading:`Chargement de Jira…`,titleForProject:`Jira pour {{name}}`,configuredDescription:`Gérez le projet Jira, le mappage des statuts, le statut d'abandon, la synchronisation et l'état de la connexion.`,loadFailed:`Impossible de charger la configuration Jira actuelle : {{message}}`,notConfiguredDescription:`Connectez ce projet à Jira.`}},f={page:e,card:t,toggle:n,cachedNotice:r,update:i,conflict:a,orphan:o,installDialog:s,uninstallDialog:c,docs:l,jiraCard:u,plugins:d};export{r as cachedNotice,t as card,a as conflict,f as default,l as docs,s as installDialog,u as jiraCard,o as orphan,e as page,d as plugins,n as toggle,c as uninstallDialog,i as update};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({cachedNotice:()=>a,card:()=>r,conflict:()=>s,default:()=>m,docs:()=>d,installDialog:()=>l,jiraCard:()=>f,orphan:()=>c,page:()=>n,plugins:()=>p,toggle:()=>i,uninstallDialog:()=>u,update:()=>o}),n={title:`Integrations`,subtitle:`Per-project plugins. Each project decides which integrations to enable independently.`,selectProject:`Select a project to manage integrations.`,deprecated:`Deprecated`,loadError:`Failed to load plugins.`,empty:`No plugins are bundled with this build.`},r={statusActive:`Active`,statusDeactivated:`Deactivated`,statusDegraded:`Degraded`,updateAvailable:`Update available`,requires:`Requires: {{list}}`,deactivatedHint:`Installed but deactivated — Claude won't load it next session. Toggle <strong>Active</strong> to re-enable.`,install:`Install`,uninstall:`Uninstall`},i={titleActive:`Active — click to deactivate`,titleDeactivated:`Deactivated — click to activate`},a={body:`Claude has the marketplace plugin <strong>installed but disabled</strong> in its cache. It may still resolve the server from <code>~/.claude/plugins/cache/...</code> even though the toggle is off. To force project-scoped only, uninstall the marketplace plugin from Claude:`,runInstruction:`Run inside an active Claude session, then restart Claude in this project.`},o={body:`The bundled manifest changed since you installed (likely an upstream rename). Re-write <code>.mcp.json</code> with the canonical entry — surgical, only the plugin's owned keys are touched.`,button:`Update <code>.mcp.json</code> entry`},s={body:`<strong>{{name}}</strong> is also enabled globally via Claude's plugin marketplace, which shadows this project-scoped install. To make this card go Active, disable the global version below — it can be re-enabled from Claude any time.`,disableButton:`Disable <code>{{key}}</code>`},c={badge:`Orphan`,removeButton:`Remove orphan`},l={title:`Install {{name}}`,computingChanges:`Computing changes…`,filesHeading:`Files that will change`,prerequisites:`Prerequisites`,autoInstall:`Auto-install`,progress:`Progress`,installingPrereq:`Installing {{name}}…`,prereqStartFailed:`Failed to start: {{message}}`},u={title:`Uninstall {{name}}?`,body:`This will revert plugin-managed entries in <code>.mcp.json</code> and remove any plugin-created files. Your code, history, and other plugins are not affected.`},d={title:`Documentation`,dialogDescription:`The Specrails user guide bundled with this version.`,sidebarEmpty:`No docs yet`,indexEmpty:`Documentation will appear here. The user guide ships with the app under docs/guide/; drop Markdown files under ~/.specrails/docs/guide/ to customize it.`,categoryEmpty:`No documents in this category yet.`,documentCount_one:`{{count}} document`,documentCount_other:`{{count}} documents`,categoryCount_one:`{{count}} category`,categoryCount_other:`{{count}} categories`,summary:`{{documents}} across {{categories}}.`,loadError:`This document could not be loaded.`,loading:`Loading documentation…`,errorDetails:`Details`,navLabel:`Documentation sections`,guideCount_one:`{{count}} guide bundled with this version`,guideCount_other:`{{count}} guides bundled with this version`,filterPlaceholder:`Filter guides`,filterNoResults:`No guides match “{{query}}”.`},f={title:`Jira`,category:`Issue tracking`,description:`Back this project's specs with a Jira board — two-way sync of status, plus a completion comment when a rail finishes.`,connectedDescription:`Synced with {{key}}. Specs mirror your Jira board both ways.`,connect:`Connect`,connected:`Connected`,manage:`Manage`,modalTitle:`Connect to Jira`,manageTitle:`Jira connection`,bullet1:`Two-way status sync with your Jira board.`,bullet2:`Posts a completion comment when a rail finishes.`,bullet3:`Your Jira backlog appears as specs on the board.`,requires:`Requires a Jira Cloud or Data Center account.`},p={page:{title:`Plugins`,subtitle:`Global tools and project integrations, managed from one place.`,readyCount_one:`{{count}} ready`,readyCount_other:`{{count}} ready`,attentionCount_one:`{{count}} needs attention`,attentionCount_other:`{{count}} need attention`,openWindow:`Open in window`,openWindowFailed:`Couldn't open the plugins window`},search:{placeholder:`Search plugins`},filters:{all:`All`,global:`Global`,project:`Project`,label:`Scope`},sections:{installed:`Installed`,available:`Available`},scope:{global:`Global`,project:`Project`},groups:{global:{title:`Global`,detail:`Applies across Specrails`},project:{title:`Project-local`,detail:`Configured per repository`}},empty:{installedSearch:`No installed plugins match this search.`,installed:`No installed plugins yet.`,availableSearch:`No available plugins match this search.`,allInstalled:`All plugins are installed.`},actions:{install:`Install`,manage:`Manage`,review:`Review`,cancel:`Cancel`,installBusy:`Installing…`,configureBusy:`Configuring…`,reviewBusy:`Checking…`},status:{attention:`attention`,active:`active`,externalActive:`external active`,external:`external`,installed:`installed`,available:`available`,configuredCount_one:`{{count}} configured`,configuredCount_other:`{{count}} configured`,installedCount_one:`{{count}} installed`,installedCount_other:`{{count}} installed`},catalog:{headroom:{description:`Optimize Codex and Claude launches through Headroom AI.`},jira:{description:`Sync project specs with a Jira board, status mapping, and completion comments.`},serena:{description:`Project-local semantic code navigation through Serena MCP.`}},headroom:{title:`Headroom AI`,dialogDescription:`Manage the global Headroom installation and provider routing.`,panelDescription:`Installed globally, activated independently for Codex and Claude.`,issueCode:`Code: {{code}}`,confirmDetach:`This disables Specrails routing and stops the proxy. The existing system Headroom install is left untouched.`,confirmUninstall:`This disables Codex and Claude routes, stops the proxy, and removes the Specrails-managed Headroom tool.`,metrics:{install:`Install`,checking:`Checking`,ready:`Ready`,missing:`Missing`,source:`Source`,system:`System`,specrails:`Specrails`,none:`None`,proxy:`Proxy`,starting:`Starting`,off:`Off`},actions:{installWithUv:`Install with bundled uv`,disableAllRoutes:`Disable all routes`,viewDiagnostics:`View diagnostics`,detachHeadroom:`Detach Headroom`,uninstallHeadroom:`Uninstall Headroom`,detach:`Detach`,uninstall:`Uninstall`},port:{label:`Proxy port`,apply:`Apply`},provider:{noProjectUsesProvider:`No Specrails project uses this provider`,routedThroughHeadroom:`Routed through Headroom`,detectedExternalRoute:`Detected external route`,notRouted:`Not routed`},savings:{title:`Headroom Token Savings`,learningOn:`output measured`,waitingForOutputSamples:`output not measured`,baseline:`{{method}} baseline`,updatedLive:`updated live`,baselineSamples_one:`{{count}} baseline sample`,baselineSamples_other:`{{count}} baseline samples`,tokens:`tokens`,learning:`No data`,off:`Off`,requestDetail:`{{method}} · {{count}} requests`,requestCount:`{{count}} requests`,detected:`detected`,totals:`Totals`,input:`Input`,output:`Output`,processed:`Processed`,saved:`Saved`,noData:`No data`,inputSaved:`Input saved`,outputSaved:`Output saved`,inputSavingsActive:`Routing through Headroom`,statusInputOutput:`Input + output`,statusInputOnly:`Input active`,statusRouting:`Routing active`,statusInactive:`Inactive`,methods:{estimated:`estimated`,measured:`measured`,none:`none`},waitingForShapedResponses:`No output responses measured yet`,outputObserved:`{{value}} output observed`,routeDisabled:`Route disabled`},issues:{uv_missing_or_corrupt:{title:`Bundled uv is not available`,guidance:`Specrails could not start its bundled uv runtime. Reinstall Specrails or use Repair once the runtime is available.`},network_unavailable:{title:`Headroom could not be downloaded`,guidance:`Check your network connection and retry. Specrails will keep the install isolated in its own tool directory.`},package_resolution_failed:{title:`Headroom dependencies could not be resolved`,guidance:`Retry the install. If it keeps failing, open diagnostics and share the uv output.`},install_permission_failed:{title:`Specrails cannot write its tool directory`,guidance:`Check permissions under ~/.specrails/tools, then retry the install.`},headroom_not_found_after_install:{title:`Install finished but Headroom was not found`,guidance:`Run Repair install. Specrails will reinstall Headroom and verify the executable.`},learning_setup_failed:{title:`Headroom learning could not be enabled`,guidance:`Headroom is installed, but output-savings calibration did not finish. Keep using proxy routing while metrics collect output samples.`},metrics_unavailable:{title:`Headroom metrics are not available yet`,guidance:`Start routing traffic through Headroom. Specrails will refresh token-savings metrics as soon as the proxy reports samples.`},proxy_port_busy:{title:`Headroom proxy port is already in use`,guidance:`Choose another port or stop the process using the current port, then retry activation.`},proxy_unhealthy:{title:`Headroom proxy did not become healthy`,guidance:`Retry activation. If it repeats, open diagnostics to inspect the proxy output.`},provider_route_failed:{title:`Provider route verification failed`,guidance:`Specrails could not verify the provider route. The provider remains inactive; retry after checking diagnostics.`},provider_config_conflict:{title:`Existing provider configuration conflicts with Headroom`,guidance:`Review diagnostics before enabling system-wide activation. Specrails-managed routing remains reversible.`},activation_partially_applied:{title:`Activation was only partially applied`,guidance:`Specrails attempted rollback. Review diagnostics and retry the affected provider.`},not_installed:{title:`Headroom is not installed`,guidance:`Install Headroom first, then activate Codex or Claude.`},uninstall_failed:{title:`Headroom could not be uninstalled`,guidance:`Specrails disabled Headroom routing but could not remove the managed tool. Open diagnostics, then retry uninstall.`},unknown:{title:`Headroom operation failed`,guidance:`Retry the operation. If it repeats, open diagnostics and share the details.`}}},projectWizard:{configureJira:`Configure Jira`,installSerena:`Install Serena`,description:`Select the project where this project-scoped plugin should be configured.`,chooseProject:`Choose project`,requiresClaudeProvider:`Requires Claude provider`,selectProjectToContinue:`Select a project to continue.`,requiresSupportedProvider:`Requires Claude or Codex`},serena:{loading:`Loading Serena…`,titleForProject:`Serena for {{name}}`,description:`Installs project-local MCP configuration and plugin state. Other projects are untouched.`,status:`Status: {{status}}`,files:`Files`,prerequisites:`Prerequisites`,provider:`AI provider`},projectStatus:{installed:`installed`,deactivated:`deactivated`,"not-installed":`not installed`,orphan:`orphan`,degraded:`degraded`},diagnostics:{title:`Headroom diagnostics`,description:`Technical status for the Specrails-managed Headroom installation and proxy.`},jira:{loading:`Loading Jira…`,titleForProject:`Jira for {{name}}`,configuredDescription:`Manage the Jira project, status mapping, discard status, sync, and connection state.`,loadFailed:`Could not load the current Jira configuration: {{message}}`,notConfiguredDescription:`Connect this project to Jira.`}},m={page:n,card:r,toggle:i,cachedNotice:a,update:o,conflict:s,orphan:c,installDialog:l,uninstallDialog:u,docs:d,jiraCard:f,plugins:p};export{t};
@@ -0,0 +1 @@
1
+ var e={title:`Integrações`,subtitle:`Plugins por projeto. Cada projeto decide de forma independente que integrações ativar.`,selectProject:`Selecione um projeto para gerir integrações.`,deprecated:`Descontinuado`,loadError:`Falha ao carregar os plugins.`,empty:`Esta build não inclui nenhum plugin.`},t={statusActive:`Ativo`,statusDeactivated:`Desativado`,statusDegraded:`Degradado`,updateAvailable:`Atualização disponível`,requires:`Requer: {{list}}`,deactivatedHint:`Instalado mas desativado — o Claude não o vai carregar na próxima sessão. Alterne <strong>Ativo</strong> para reativar.`,install:`Instalar`,uninstall:`Desinstalar`},n={titleActive:`Ativo — clique para desativar`,titleDeactivated:`Desativado — clique para ativar`},r={body:`O Claude tem o plugin do marketplace <strong>instalado mas desativado</strong> na cache. Pode ainda resolver o servidor a partir de <code>~/.claude/plugins/cache/...</code> mesmo com o toggle desligado. Para forçar apenas o âmbito do projeto, desinstale o plugin do marketplace no Claude:`,runInstruction:`Execute numa sessão ativa do Claude e depois reinicie o Claude neste projeto.`},i={body:`O manifesto incluído mudou desde a instalação (provavelmente um rename a montante). Reescreva o <code>.mcp.json</code> com a entrada canónica — de forma cirúrgica, só as chaves do plugin são tocadas.`,button:`Atualizar entrada no <code>.mcp.json</code>`},a={body:`<strong>{{name}}</strong> também está ativado globalmente via marketplace de plugins do Claude, o que sobrepõe esta instalação no âmbito do projeto. Para este cartão ficar Ativo, desative a versão global abaixo — pode ser reativada no Claude a qualquer momento.`,disableButton:`Desativar <code>{{key}}</code>`},o={badge:`Órfão`,removeButton:`Remover órfão`},s={title:`Instalar {{name}}`,computingChanges:`A calcular alterações…`,filesHeading:`Ficheiros que vão mudar`,prerequisites:`Pré-requisitos`,autoInstall:`Instalação automática`,progress:`Progresso`,installingPrereq:`A instalar {{name}}…`,prereqStartFailed:`Falha ao iniciar: {{message}}`},c={title:`Desinstalar {{name}}?`,body:`Isto vai reverter as entradas geridas pelo plugin no <code>.mcp.json</code> e remover quaisquer ficheiros criados pelo plugin. O seu código, histórico e outros plugins não são afetados.`},l={title:`Documentação`,dialogDescription:`O guia do usuário do Specrails incluído nesta versão.`,sidebarEmpty:`Ainda não há docs`,indexEmpty:`A documentação aparecerá aqui. O guia do utilizador é incluído na app em docs/guide/; adicione ficheiros Markdown em ~/.specrails/docs/guide/ para o personalizar.`,categoryEmpty:`Ainda não há documentos nesta categoria.`,documentCount_one:`{{count}} documento`,documentCount_other:`{{count}} documentos`,categoryCount_one:`{{count}} categoria`,categoryCount_other:`{{count}} categorias`,summary:`{{documents}} em {{categories}}.`,loadError:`Não foi possível carregar este documento.`,loading:`Carregando a documentação…`,errorDetails:`Detalhes`,navLabel:`Seções da documentação`,guideCount_one:`{{count}} guia incluído nesta versão`,guideCount_other:`{{count}} guias incluídos nesta versão`,filterPlaceholder:`Filtrar guias`,filterNoResults:`Nenhum guia corresponde a “{{query}}”.`},u={title:`Jira`,category:`Acompanhamento de tickets`,description:`Apoie as specs deste projeto num quadro Jira — sincronização bidirecional do estado e um comentário quando um rail termina.`,connectedDescription:`Sincronizado com {{key}}. As specs refletem o seu quadro Jira nos dois sentidos.`,connect:`Conectar`,connected:`Conectado`,manage:`Gerir`,modalTitle:`Conectar ao Jira`,manageTitle:`Ligação Jira`,bullet1:`Sincronização bidirecional do estado com o seu quadro Jira.`,bullet2:`Publica um comentário quando um rail termina.`,bullet3:`O seu backlog do Jira aparece como specs no quadro.`,requires:`Requer uma conta Jira Cloud ou Data Center.`},d={page:{title:`Plugins`,subtitle:`Ferramentas globais e integrações de projeto, geridas num só lugar.`,readyCount_one:`{{count}} pronto`,readyCount_other:`{{count}} prontos`,attentionCount_one:`{{count}} requer atenção`,attentionCount_other:`{{count}} requerem atenção`,openWindow:`Abrir numa janela`,openWindowFailed:`Não foi possível abrir a janela de plugins`},search:{placeholder:`Procurar plugins`},filters:{all:`Todos`,global:`Globais`,project:`Projeto`,label:`Âmbito`},sections:{installed:`Instalados`,available:`Disponíveis`},scope:{global:`Global`,project:`Projeto`},groups:{global:{title:`Globais`,detail:`Aplica-se a todo o Specrails`},project:{title:`Locais do projeto`,detail:`Configurados por repositório`}},empty:{installedSearch:`Nenhum plugin instalado corresponde a esta pesquisa.`,installed:`Ainda não há plugins instalados.`,availableSearch:`Nenhum plugin disponível corresponde a esta pesquisa.`,allInstalled:`Todos os plugins estão instalados.`},actions:{install:`Instalar`,manage:`Gerir`,review:`Rever`,cancel:`Cancelar`,installBusy:`A instalar…`,configureBusy:`A configurar…`,reviewBusy:`A verificar…`},status:{attention:`atenção`,active:`ativo`,externalActive:`externo ativo`,external:`externo`,installed:`instalado`,available:`disponível`,configuredCount_one:`{{count}} configurado`,configuredCount_other:`{{count}} configurados`,installedCount_one:`{{count}} instalado`,installedCount_other:`{{count}} instalados`},catalog:{headroom:{description:`Otimiza lançamentos do Codex e do Claude através do Headroom AI.`},jira:{description:`Sincroniza specs do projeto com um quadro Jira, mapeamento de estados e comentários de conclusão.`},serena:{description:`Navegação semântica de código local ao projeto através do Serena MCP.`}},headroom:{title:`Headroom AI`,dialogDescription:`Gere a instalação global do Headroom e o encaminhamento por fornecedor.`,panelDescription:`Instalado globalmente, ativado de forma independente para Codex e Claude.`,issueCode:`Código: {{code}}`,confirmDetach:`Isto desativa o encaminhamento do Specrails e para o proxy. A instalação existente do Headroom no sistema fica intacta.`,confirmUninstall:`Isto desativa as rotas Codex e Claude, para o proxy e remove a ferramenta Headroom gerida pelo Specrails.`,metrics:{install:`Instalação`,checking:`A verificar`,ready:`Pronto`,missing:`Em falta`,source:`Origem`,system:`Sistema`,specrails:`Specrails`,none:`Nenhum`,proxy:`Proxy`,starting:`A iniciar`,off:`Desligado`},actions:{installWithUv:`Instalar com uv incluído`,disableAllRoutes:`Desativar todas as rotas`,viewDiagnostics:`Ver diagnóstico`,detachHeadroom:`Desassociar Headroom`,uninstallHeadroom:`Desinstalar Headroom`,detach:`Desassociar`,uninstall:`Desinstalar`},port:{label:`Porta do proxy`,apply:`Aplicar`},provider:{noProjectUsesProvider:`Nenhum projeto Specrails usa este fornecedor`,routedThroughHeadroom:`Encaminhado pelo Headroom`,detectedExternalRoute:`Rota externa detetada`,notRouted:`Sem rota`},savings:{title:`Poupança de tokens Headroom`,learningOn:`saída medida`,waitingForOutputSamples:`saída sem medição`,baseline:`base {{method}}`,updatedLive:`atualizado em direto`,baselineSamples_one:`{{count}} amostra base`,baselineSamples_other:`{{count}} amostras base`,tokens:`tokens`,learning:`Sem dados`,off:`Desligado`,requestDetail:`{{method}} · {{count}} pedidos`,requestCount:`{{count}} pedidos`,detected:`detetado`,totals:`Totais`,input:`Entrada`,output:`Saída`,processed:`Processados`,saved:`Poupados`,noData:`Sem dados`,inputSaved:`Entrada poupada`,outputSaved:`Saída poupada`,inputSavingsActive:`A encaminhar pelo Headroom`,statusInputOutput:`Entrada + saída`,statusInputOnly:`Entrada ativa`,statusRouting:`Encaminhamento ativo`,statusInactive:`Inativo`,methods:{estimated:`estimada`,measured:`medida`,none:`nenhuma`},waitingForShapedResponses:`Sem respostas de saída medidas`,outputObserved:`{{value}} de saída observados`,routeDisabled:`Rota desativada`},issues:{uv_missing_or_corrupt:{title:`O uv incluído não está disponível`,guidance:`O Specrails não conseguiu iniciar o runtime uv incluído. Reinstale o Specrails ou use Reparar quando o runtime estiver disponível.`},network_unavailable:{title:`Não foi possível descarregar o Headroom`,guidance:`Verifique a ligação de rede e tente novamente. O Specrails manterá a instalação isolada no seu próprio diretório de ferramentas.`},package_resolution_failed:{title:`Não foi possível resolver as dependências do Headroom`,guidance:`Tente instalar novamente. Se continuar a falhar, abra o diagnóstico e partilhe a saída do uv.`},install_permission_failed:{title:`O Specrails não consegue escrever no diretório de ferramentas`,guidance:`Verifique as permissões em ~/.specrails/tools e tente instalar novamente.`},headroom_not_found_after_install:{title:`A instalação terminou mas o Headroom não foi encontrado`,guidance:`Execute Reparar instalação. O Specrails reinstalará o Headroom e verificará o executável.`},learning_setup_failed:{title:`Não foi possível ativar a aprendizagem do Headroom`,guidance:`O Headroom está instalado, mas a calibração das poupanças de saída não terminou. Continue a usar o proxy enquanto as métricas recolhem amostras.`},metrics_unavailable:{title:`As métricas do Headroom ainda não estão disponíveis`,guidance:`Comece a encaminhar tráfego pelo Headroom. O Specrails atualizará as métricas de poupança assim que o proxy reportar amostras.`},proxy_port_busy:{title:`A porta do proxy Headroom já está em uso`,guidance:`Escolha outra porta ou pare o processo que usa a porta atual e tente ativar novamente.`},proxy_unhealthy:{title:`O proxy Headroom não ficou saudável`,guidance:`Tente ativar novamente. Se se repetir, abra o diagnóstico para inspecionar a saída do proxy.`},provider_route_failed:{title:`Falhou a verificação da rota do fornecedor`,guidance:`O Specrails não conseguiu verificar a rota do fornecedor. O fornecedor permanece inativo; tente novamente após ver o diagnóstico.`},provider_config_conflict:{title:`A configuração existente do fornecedor conflita com o Headroom`,guidance:`Reveja o diagnóstico antes de ativar o encaminhamento global. O encaminhamento gerido pelo Specrails continua reversível.`},activation_partially_applied:{title:`A ativação foi aplicada apenas parcialmente`,guidance:`O Specrails tentou reverter. Reveja o diagnóstico e tente novamente o fornecedor afetado.`},not_installed:{title:`O Headroom não está instalado`,guidance:`Instale primeiro o Headroom e depois ative Codex ou Claude.`},uninstall_failed:{title:`Não foi possível desinstalar o Headroom`,guidance:`O Specrails desativou o encaminhamento do Headroom mas não conseguiu remover a ferramenta gerida. Abra o diagnóstico e tente novamente.`},unknown:{title:`A operação do Headroom falhou`,guidance:`Tente a operação novamente. Se se repetir, abra o diagnóstico e partilhe os detalhes.`}}},projectWizard:{configureJira:`Configurar Jira`,installSerena:`Instalar Serena`,description:`Selecione o projeto onde este plugin local do projeto deve ser configurado.`,chooseProject:`Escolher projeto`,requiresClaudeProvider:`Requer fornecedor Claude`,selectProjectToContinue:`Selecione um projeto para continuar.`,requiresSupportedProvider:`Requer Claude ou Codex`},serena:{loading:`A carregar Serena…`,titleForProject:`Serena para {{name}}`,description:`Instala a configuração MCP e o estado do plugin localmente no projeto. Outros projetos não são alterados.`,status:`Estado: {{status}}`,files:`Ficheiros`,prerequisites:`Pré-requisitos`,provider:`Fornecedor de IA`},projectStatus:{installed:`instalado`,deactivated:`desativado`,"not-installed":`não instalado`,orphan:`órfão`,degraded:`degradado`},diagnostics:{title:`Diagnóstico do Headroom`,description:`Estado técnico da instalação Headroom gerida pelo Specrails e do proxy.`},jira:{loading:`A carregar o Jira…`,titleForProject:`Jira para {{name}}`,configuredDescription:`Gira o projeto Jira, o mapeamento de estados, o estado de descarte, a sincronização e o estado da ligação.`,loadFailed:`Não foi possível carregar a configuração atual do Jira: {{message}}`,notConfiguredDescription:`Ligue este projeto ao Jira.`}},f={page:e,card:t,toggle:n,cachedNotice:r,update:i,conflict:a,orphan:o,installDialog:s,uninstallDialog:c,docs:l,jiraCard:u,plugins:d};export{r as cachedNotice,t as card,a as conflict,f as default,l as docs,s as installDialog,u as jiraCard,o as orphan,e as page,d as plugins,n as toggle,c as uninstallDialog,i as update};
@@ -0,0 +1 @@
1
+ var e={title:`Integrationen`,subtitle:`Plugins pro Projekt. Jedes Projekt entscheidet unabhängig, welche Integrationen aktiviert werden.`,selectProject:`Wähle ein Projekt, um Integrationen zu verwalten.`,deprecated:`Veraltet`,loadError:`Plugins konnten nicht geladen werden.`,empty:`In diesem Build sind keine Plugins gebündelt.`},t={statusActive:`Aktiv`,statusDeactivated:`Deaktiviert`,statusDegraded:`Beeinträchtigt`,updateAvailable:`Update verfügbar`,requires:`Erfordert: {{list}}`,deactivatedHint:`Installiert, aber deaktiviert – Claude lädt es in der nächsten Session nicht. Schalte auf <strong>Aktiv</strong>, um es wieder zu aktivieren.`,install:`Installieren`,uninstall:`Deinstallieren`},n={titleActive:`Aktiv – zum Deaktivieren klicken`,titleDeactivated:`Deaktiviert – zum Aktivieren klicken`},r={body:`Claude hat das Marketplace-Plugin im Cache <strong>installiert, aber deaktiviert</strong>. Es kann den Server weiterhin über <code>~/.claude/plugins/cache/...</code> auflösen, obwohl der Schalter aus ist. Um ausschließlich die projektbezogene Variante zu erzwingen, deinstalliere das Marketplace-Plugin aus Claude:`,runInstruction:`In einer aktiven Claude-Session ausführen, dann Claude in diesem Projekt neu starten.`},i={body:`Das gebündelte Manifest hat sich seit der Installation geändert (vermutlich eine Upstream-Umbenennung). Schreibe <code>.mcp.json</code> mit dem kanonischen Eintrag neu – chirurgisch, nur die vom Plugin verwalteten Schlüssel werden angefasst.`,button:`<code>.mcp.json</code>-Eintrag aktualisieren`},a={body:`<strong>{{name}}</strong> ist zusätzlich global über Claudes Plugin-Marketplace aktiviert, was diese projektbezogene Installation überlagert. Damit diese Karte „Aktiv“ wird, deaktiviere unten die globale Version – sie kann jederzeit wieder über Claude aktiviert werden.`,disableButton:`<code>{{key}}</code> deaktivieren`},o={badge:`Verwaist`,removeButton:`Verwaisten Eintrag entfernen`},s={title:`{{name}} installieren`,computingChanges:`Änderungen werden berechnet…`,filesHeading:`Dateien, die geändert werden`,prerequisites:`Voraussetzungen`,autoInstall:`Automatisch installieren`,progress:`Fortschritt`,installingPrereq:`{{name}} wird installiert…`,prereqStartFailed:`Start fehlgeschlagen: {{message}}`},c={title:`{{name}} deinstallieren?`,body:`Dies setzt die vom Plugin verwalteten Einträge in <code>.mcp.json</code> zurück und entfernt alle vom Plugin erstellten Dateien. Dein Code, deine Historie und andere Plugins sind nicht betroffen.`},l={title:`Dokumentation`,dialogDescription:`Das Specrails-Benutzerhandbuch, das mit dieser Version ausgeliefert wird.`,sidebarEmpty:`Noch keine Doku`,indexEmpty:`Die Dokumentation erscheint hier. Das Benutzerhandbuch wird mit der App unter docs/guide/ ausgeliefert; lege Markdown-Dateien unter ~/.specrails/docs/guide/ ab, um es anzupassen.`,categoryEmpty:`Noch keine Dokumente in dieser Kategorie.`,documentCount_one:`{{count}} Dokument`,documentCount_other:`{{count}} Dokumente`,categoryCount_one:`{{count}} Kategorie`,categoryCount_other:`{{count}} Kategorien`,summary:`{{documents}} in {{categories}}.`,loadError:`Dieses Dokument konnte nicht geladen werden.`,loading:`Dokumentation wird geladen…`,errorDetails:`Details`,navLabel:`Abschnitte der Dokumentation`,guideCount_one:`{{count}} Anleitung in dieser Version enthalten`,guideCount_other:`{{count}} Anleitungen in dieser Version enthalten`,filterPlaceholder:`Anleitungen filtern`,filterNoResults:`Keine Anleitung passt zu „{{query}}“.`},u={title:`Jira`,category:`Vorgangsverfolgung`,description:`Hinterlege die Specs dieses Projekts mit einem Jira-Board — bidirektionale Statussynchronisierung plus ein Kommentar am Ende eines Rails.`,connectedDescription:`Synchronisiert mit {{key}}. Specs spiegeln dein Jira-Board in beide Richtungen.`,connect:`Verbinden`,connected:`Verbunden`,manage:`Verwalten`,modalTitle:`Mit Jira verbinden`,manageTitle:`Jira-Verbindung`,bullet1:`Bidirektionale Statussynchronisierung mit deinem Jira-Board.`,bullet2:`Postet einen Kommentar, wenn ein Rail abschließt.`,bullet3:`Dein Jira-Backlog erscheint als Specs auf dem Board.`,requires:`Erfordert ein Jira-Cloud- oder Data-Center-Konto.`},d={page:{title:`Plugins`,subtitle:`Globale Tools und Projektintegrationen, zentral verwaltet.`,readyCount_one:`{{count}} bereit`,readyCount_other:`{{count}} bereit`,attentionCount_one:`{{count}} braucht Aufmerksamkeit`,attentionCount_other:`{{count}} brauchen Aufmerksamkeit`,openWindow:`In Fenster öffnen`,openWindowFailed:`Plugin-Fenster konnte nicht geöffnet werden`},search:{placeholder:`Plugins suchen`},filters:{all:`Alle`,global:`Global`,project:`Projekt`,label:`Bereich`},sections:{installed:`Installiert`,available:`Verfügbar`},scope:{global:`Global`,project:`Projekt`},groups:{global:{title:`Global`,detail:`Gilt für ganz Specrails`},project:{title:`Projektlokal`,detail:`Pro Repository konfiguriert`}},empty:{installedSearch:`Keine installierten Plugins passen zu dieser Suche.`,installed:`Noch keine Plugins installiert.`,availableSearch:`Keine verfügbaren Plugins passen zu dieser Suche.`,allInstalled:`Alle Plugins sind installiert.`},actions:{install:`Installieren`,manage:`Verwalten`,review:`Prüfen`,cancel:`Abbrechen`,installBusy:`Wird installiert…`,configureBusy:`Wird konfiguriert…`,reviewBusy:`Wird geprüft…`},status:{attention:`Achtung`,active:`aktiv`,externalActive:`extern aktiv`,external:`extern`,installed:`installiert`,available:`verfügbar`,configuredCount_one:`{{count}} konfiguriert`,configuredCount_other:`{{count}} konfiguriert`,installedCount_one:`{{count}} installiert`,installedCount_other:`{{count}} installiert`},catalog:{headroom:{description:`Optimiert Codex- und Claude-Starts mit Headroom AI.`},jira:{description:`Synchronisiert Projektspecs mit einem Jira-Board, Statusmapping und Abschlusskommentaren.`},serena:{description:`Projektlokale semantische Code-Navigation über Serena MCP.`}},headroom:{title:`Headroom AI`,dialogDescription:`Globale Headroom-Installation und Provider-Routing verwalten.`,panelDescription:`Global installiert, separat für Codex und Claude aktivierbar.`,issueCode:`Code: {{code}}`,confirmDetach:`Dies deaktiviert Specrails-Routing und stoppt den Proxy. Die bestehende Systeminstallation von Headroom bleibt unverändert.`,confirmUninstall:`Dies deaktiviert Codex- und Claude-Routen, stoppt den Proxy und entfernt das von Specrails verwaltete Headroom-Tool.`,metrics:{install:`Installation`,checking:`Prüfen`,ready:`Bereit`,missing:`Fehlt`,source:`Quelle`,system:`System`,specrails:`Specrails`,none:`Keine`,proxy:`Proxy`,starting:`Startet`,off:`Aus`},actions:{installWithUv:`Mit gebündeltem uv installieren`,disableAllRoutes:`Alle Routen deaktivieren`,viewDiagnostics:`Diagnose anzeigen`,detachHeadroom:`Headroom trennen`,uninstallHeadroom:`Headroom deinstallieren`,detach:`Trennen`,uninstall:`Deinstallieren`},port:{label:`Proxy-Port`,apply:`Anwenden`},provider:{noProjectUsesProvider:`Kein Specrails-Projekt nutzt diesen Provider`,routedThroughHeadroom:`Über Headroom geroutet`,detectedExternalRoute:`Externe Route erkannt`,notRouted:`Nicht geroutet`},savings:{title:`Headroom-Tokenersparnis`,learningOn:`Ausgabe gemessen`,waitingForOutputSamples:`Ausgabe nicht gemessen`,baseline:`{{method}}e Basislinie`,updatedLive:`live aktualisiert`,baselineSamples_one:`{{count}} Basisbeispiel`,baselineSamples_other:`{{count}} Basisbeispiele`,tokens:`Tokens`,learning:`Keine Daten`,off:`Aus`,requestDetail:`{{method}} · {{count}} Anfragen`,requestCount:`{{count}} Anfragen`,detected:`erkannt`,totals:`Gesamt`,input:`Eingabe`,output:`Ausgabe`,processed:`Verarbeitet`,saved:`Gespart`,noData:`Keine Daten`,inputSaved:`Eingabe gespart`,outputSaved:`Ausgabe gespart`,inputSavingsActive:`Routing über Headroom`,statusInputOutput:`Eingabe + Ausgabe`,statusInputOnly:`Eingabe aktiv`,statusRouting:`Routing aktiv`,statusInactive:`Inaktiv`,methods:{estimated:`geschätzt`,measured:`gemessen`,none:`keine`},waitingForShapedResponses:`Noch keine Ausgabeantworten gemessen`,outputObserved:`{{value}} Ausgabe beobachtet`,routeDisabled:`Route deaktiviert`},issues:{uv_missing_or_corrupt:{title:`Gebündeltes uv ist nicht verfügbar`,guidance:`Specrails konnte die gebündelte uv-Laufzeit nicht starten. Installiere Specrails neu oder nutze Reparieren, sobald die Laufzeit verfügbar ist.`},network_unavailable:{title:`Headroom konnte nicht heruntergeladen werden`,guidance:`Prüfe die Netzwerkverbindung und versuche es erneut. Specrails hält die Installation isoliert in seinem eigenen Tool-Verzeichnis.`},package_resolution_failed:{title:`Headroom-Abhängigkeiten konnten nicht aufgelöst werden`,guidance:`Versuche die Installation erneut. Wenn sie weiter fehlschlägt, öffne die Diagnose und teile die uv-Ausgabe.`},install_permission_failed:{title:`Specrails kann nicht in sein Tool-Verzeichnis schreiben`,guidance:`Prüfe die Berechtigungen unter ~/.specrails/tools und versuche die Installation erneut.`},headroom_not_found_after_install:{title:`Installation abgeschlossen, aber Headroom wurde nicht gefunden`,guidance:`Führe Installation reparieren aus. Specrails installiert Headroom neu und prüft die ausführbare Datei.`},learning_setup_failed:{title:`Headroom-Lernen konnte nicht aktiviert werden`,guidance:`Headroom ist installiert, aber die Kalibrierung der Ausgabeersparnis wurde nicht abgeschlossen. Nutze weiter das Proxy-Routing, während Metriken Beispiele sammeln.`},metrics_unavailable:{title:`Headroom-Metriken sind noch nicht verfügbar`,guidance:`Route Traffic über Headroom. Specrails aktualisiert Token-Ersparnisse, sobald der Proxy Beispiele meldet.`},proxy_port_busy:{title:`Der Headroom-Proxy-Port ist bereits belegt`,guidance:`Wähle einen anderen Port oder stoppe den Prozess auf dem aktuellen Port und versuche die Aktivierung erneut.`},proxy_unhealthy:{title:`Der Headroom-Proxy wurde nicht fehlerfrei`,guidance:`Versuche die Aktivierung erneut. Wenn es wieder passiert, öffne die Diagnose und prüfe die Proxy-Ausgabe.`},provider_route_failed:{title:`Provider-Routenprüfung fehlgeschlagen`,guidance:`Specrails konnte die Provider-Route nicht prüfen. Der Provider bleibt inaktiv; versuche es nach der Diagnose erneut.`},provider_config_conflict:{title:`Bestehende Provider-Konfiguration kollidiert mit Headroom`,guidance:`Prüfe die Diagnose, bevor du systemweites Routing aktivierst. Von Specrails verwaltetes Routing bleibt rückgängig machbar.`},activation_partially_applied:{title:`Aktivierung wurde nur teilweise angewendet`,guidance:`Specrails hat ein Rollback versucht. Prüfe die Diagnose und versuche den betroffenen Provider erneut.`},not_installed:{title:`Headroom ist nicht installiert`,guidance:`Installiere zuerst Headroom und aktiviere dann Codex oder Claude.`},uninstall_failed:{title:`Headroom konnte nicht deinstalliert werden`,guidance:`Specrails hat Headroom-Routing deaktiviert, konnte das verwaltete Tool aber nicht entfernen. Öffne die Diagnose und versuche es erneut.`},unknown:{title:`Headroom-Vorgang fehlgeschlagen`,guidance:`Versuche den Vorgang erneut. Wenn es wieder passiert, öffne die Diagnose und teile die Details.`}}},projectWizard:{configureJira:`Jira konfigurieren`,installSerena:`Serena installieren`,description:`Wähle das Projekt aus, in dem dieses projektbezogene Plugin konfiguriert werden soll.`,chooseProject:`Projekt wählen`,requiresClaudeProvider:`Erfordert Claude-Provider`,selectProjectToContinue:`Wähle ein Projekt aus, um fortzufahren.`,requiresSupportedProvider:`Erfordert Claude oder Codex`},serena:{loading:`Serena wird geladen…`,titleForProject:`Serena für {{name}}`,description:`Installiert projektlokale MCP-Konfiguration und Plugin-Status. Andere Projekte bleiben unverändert.`,status:`Status: {{status}}`,files:`Dateien`,prerequisites:`Voraussetzungen`,provider:`KI-Anbieter`},projectStatus:{installed:`installiert`,deactivated:`deaktiviert`,"not-installed":`nicht installiert`,orphan:`verwaist`,degraded:`beeinträchtigt`},diagnostics:{title:`Headroom-Diagnose`,description:`Technischer Status der von Specrails verwalteten Headroom-Installation und des Proxys.`},jira:{loading:`Jira wird geladen…`,titleForProject:`Jira für {{name}}`,configuredDescription:`Verwalte das Jira-Projekt, die Status-Zuordnung, den Verwerfen-Status, die Synchronisierung und den Verbindungsstatus.`,loadFailed:`Die aktuelle Jira-Konfiguration konnte nicht geladen werden: {{message}}`,notConfiguredDescription:`Verbinde dieses Projekt mit Jira.`}},f={page:e,card:t,toggle:n,cachedNotice:r,update:i,conflict:a,orphan:o,installDialog:s,uninstallDialog:c,docs:l,jiraCard:u,plugins:d};export{r as cachedNotice,t as card,a as conflict,f as default,l as docs,s as installDialog,u as jiraCard,o as orphan,e as page,d as plugins,n as toggle,c as uninstallDialog,i as update};
@@ -0,0 +1 @@
1
+ var e={title:`集成`,subtitle:`按项目管理的插件。每个项目独立决定启用哪些集成。`,selectProject:`选择一个项目以管理集成。`,deprecated:`已弃用`,loadError:`加载插件失败。`,empty:`此构建未捆绑任何插件。`},t={statusActive:`已启用`,statusDeactivated:`已停用`,statusDegraded:`已降级`,updateAvailable:`有可用更新`,requires:`需要:{{list}}`,deactivatedHint:`已安装但已停用 — Claude 下次会话不会加载它。切换<strong>启用</strong>以重新启用。`,install:`安装`,uninstall:`卸载`},n={titleActive:`已启用 — 点击停用`,titleDeactivated:`已停用 — 点击启用`},r={body:`Claude 的缓存中<strong>已安装但已禁用</strong>该 marketplace 插件。即使开关已关闭,它仍可能从 <code>~/.claude/plugins/cache/...</code> 解析该服务器。如需强制仅项目范围,请从 Claude 卸载该 marketplace 插件:`,runInstruction:`在活动的 Claude 会话中运行,然后在此项目中重启 Claude。`},i={body:`自你安装以来,捆绑的 manifest 已发生变化(可能是上游重命名)。用规范条目重写 <code>.mcp.json</code> — 精准操作,仅改动插件所拥有的键。`,button:`更新 <code>.mcp.json</code> 条目`},a={body:`<strong>{{name}}</strong> 也已通过 Claude 的插件 marketplace 全局启用,这会遮蔽此项目范围的安装。要使此卡片变为“已启用”,请在下方禁用全局版本 — 随时可从 Claude 重新启用。`,disableButton:`禁用 <code>{{key}}</code>`},o={badge:`孤立`,removeButton:`移除孤立项`},s={title:`安装 {{name}}`,computingChanges:`正在计算变更…`,filesHeading:`将更改的文件`,prerequisites:`前置条件`,autoInstall:`自动安装`,progress:`进度`,installingPrereq:`正在安装 {{name}}…`,prereqStartFailed:`启动失败:{{message}}`},c={title:`卸载 {{name}}?`,body:`这将还原 <code>.mcp.json</code> 中由插件管理的条目,并删除插件创建的文件。你的代码、历史记录和其他插件不受影响。`},l={title:`文档`,dialogDescription:`此版本随附的 Specrails 用户指南。`,sidebarEmpty:`暂无文档`,indexEmpty:`文档将在此处显示。用户指南随应用提供,位于 docs/guide/;将 Markdown 文件放在 ~/.specrails/docs/guide/ 下即可自定义。`,categoryEmpty:`此分类下暂无文档。`,documentCount_one:`{{count}} 篇文档`,documentCount_other:`{{count}} 篇文档`,categoryCount_one:`{{count}} 个分类`,categoryCount_other:`{{count}} 个分类`,summary:`共 {{documents}},分布在 {{categories}}中。`,loadError:`无法加载此文档。`,loading:`正在加载文档…`,errorDetails:`详细信息`,navLabel:`文档章节`,guideCount_one:`此版本随附 {{count}} 篇指南`,guideCount_other:`此版本随附 {{count}} 篇指南`,filterPlaceholder:`筛选指南`,filterNoResults:`没有与“{{query}}”匹配的指南。`},u={title:`Jira`,category:`事务跟踪`,description:`用 Jira 看板支撑此项目的规格——状态双向同步,并在 rail 结束时发布完成评论。`,connectedDescription:`已与 {{key}} 同步。规格与你的 Jira 看板双向镜像。`,connect:`连接`,connected:`已连接`,manage:`管理`,modalTitle:`连接到 Jira`,manageTitle:`Jira 连接`,bullet1:`与你的 Jira 看板进行状态双向同步。`,bullet2:`rail 结束时发布完成评论。`,bullet3:`你的 Jira 待办会作为规格出现在看板上。`,requires:`需要 Jira Cloud 或 Data Center 账户。`},d={page:{title:`插件`,subtitle:`在一个位置管理全局工具和项目集成。`,readyCount_one:`{{count}} 个就绪`,readyCount_other:`{{count}} 个就绪`,attentionCount_one:`{{count}} 个需要关注`,attentionCount_other:`{{count}} 个需要关注`,openWindow:`在窗口中打开`,openWindowFailed:`无法打开插件窗口`},search:{placeholder:`搜索插件`},filters:{all:`全部`,global:`全局`,project:`项目`,label:`范围`},sections:{installed:`已安装`,available:`可用`},scope:{global:`全局`,project:`项目`},groups:{global:{title:`全局`,detail:`适用于整个 Specrails`},project:{title:`项目本地`,detail:`按仓库配置`}},empty:{installedSearch:`没有匹配此搜索的已安装插件。`,installed:`尚未安装插件。`,availableSearch:`没有匹配此搜索的可用插件。`,allInstalled:`所有插件都已安装。`},actions:{install:`安装`,manage:`管理`,review:`检查`,cancel:`取消`,installBusy:`正在安装…`,configureBusy:`正在配置…`,reviewBusy:`正在检查…`},status:{attention:`需要注意`,active:`已启用`,externalActive:`外部已启用`,external:`外部`,installed:`已安装`,available:`可用`,configuredCount_one:`已配置 {{count}} 个`,configuredCount_other:`已配置 {{count}} 个`,installedCount_one:`已安装 {{count}} 个`,installedCount_other:`已安装 {{count}} 个`},catalog:{headroom:{description:`通过 Headroom AI 优化 Codex 和 Claude 启动。`},jira:{description:`将项目 specs 与 Jira 看板、状态映射和完成评论同步。`},serena:{description:`通过 Serena MCP 提供项目本地语义代码导航。`}},headroom:{title:`Headroom AI`,dialogDescription:`管理全局 Headroom 安装和按提供商路由。`,panelDescription:`全局安装,并可分别为 Codex 和 Claude 启用。`,issueCode:`代码:{{code}}`,confirmDetach:`这会禁用 Specrails 路由并停止代理。现有系统 Headroom 安装不会被修改。`,confirmUninstall:`这会禁用 Codex 和 Claude 路由,停止代理,并移除由 Specrails 管理的 Headroom 工具。`,metrics:{install:`安装`,checking:`检查中`,ready:`就绪`,missing:`缺失`,source:`来源`,system:`系统`,specrails:`Specrails`,none:`无`,proxy:`代理`,starting:`启动中`,off:`关闭`},actions:{installWithUv:`使用内置 uv 安装`,disableAllRoutes:`禁用所有路由`,viewDiagnostics:`查看诊断`,detachHeadroom:`解除 Headroom 绑定`,uninstallHeadroom:`卸载 Headroom`,detach:`解除绑定`,uninstall:`卸载`},port:{label:`代理端口`,apply:`应用`},provider:{noProjectUsesProvider:`没有 Specrails 项目使用此提供商`,routedThroughHeadroom:`通过 Headroom 路由`,detectedExternalRoute:`检测到外部路由`,notRouted:`未路由`},savings:{title:`Headroom Token 节省`,learningOn:`输出已测量`,waitingForOutputSamples:`输出未测量`,baseline:`{{method}}基线`,updatedLive:`实时更新`,baselineSamples_one:`{{count}} 个基线样本`,baselineSamples_other:`{{count}} 个基线样本`,tokens:`tokens`,learning:`无数据`,off:`关闭`,requestDetail:`{{method}} · {{count}} 次请求`,requestCount:`{{count}} 次请求`,detected:`已检测`,totals:`总计`,input:`输入`,output:`输出`,processed:`已处理`,saved:`已节省`,noData:`无数据`,inputSaved:`输入节省`,outputSaved:`输出节省`,inputSavingsActive:`正在通过 Headroom 路由`,statusInputOutput:`输入 + 输出`,statusInputOnly:`输入已启用`,statusRouting:`路由中`,statusInactive:`未启用`,methods:{estimated:`估算`,measured:`实测`,none:`无`},waitingForShapedResponses:`尚未测量输出响应`,outputObserved:`已观察到 {{value}} 输出`,routeDisabled:`路由已禁用`},issues:{uv_missing_or_corrupt:{title:`内置 uv 不可用`,guidance:`Specrails 无法启动内置 uv 运行时。请重新安装 Specrails,或在运行时可用后使用修复。`},network_unavailable:{title:`无法下载 Headroom`,guidance:`请检查网络连接并重试。Specrails 会将安装隔离在自己的工具目录中。`},package_resolution_failed:{title:`无法解析 Headroom 依赖`,guidance:`请重试安装。如果仍然失败,请打开诊断并分享 uv 输出。`},install_permission_failed:{title:`Specrails 无法写入工具目录`,guidance:`请检查 ~/.specrails/tools 下的权限,然后重试安装。`},headroom_not_found_after_install:{title:`安装完成但未找到 Headroom`,guidance:`运行修复安装。Specrails 将重新安装 Headroom 并验证可执行文件。`},learning_setup_failed:{title:`无法启用 Headroom 学习`,guidance:`Headroom 已安装,但输出节省校准尚未完成。请继续使用代理路由,等待指标收集样本。`},metrics_unavailable:{title:`Headroom 指标尚不可用`,guidance:`开始通过 Headroom 路由流量。代理报告样本后,Specrails 会刷新 token 节省指标。`},proxy_port_busy:{title:`Headroom 代理端口已被占用`,guidance:`请选择其他端口,或停止占用当前端口的进程,然后重试激活。`},proxy_unhealthy:{title:`Headroom 代理未变为健康状态`,guidance:`请重试激活。如果再次发生,请打开诊断检查代理输出。`},provider_route_failed:{title:`提供商路由验证失败`,guidance:`Specrails 无法验证提供商路由。提供商保持未激活;请查看诊断后重试。`},provider_config_conflict:{title:`现有提供商配置与 Headroom 冲突`,guidance:`启用系统级激活前请查看诊断。Specrails 管理的路由仍可回滚。`},activation_partially_applied:{title:`激活仅部分应用`,guidance:`Specrails 已尝试回滚。请查看诊断并重试受影响的提供商。`},not_installed:{title:`Headroom 未安装`,guidance:`请先安装 Headroom,然后再激活 Codex 或 Claude。`},uninstall_failed:{title:`无法卸载 Headroom`,guidance:`Specrails 已禁用 Headroom 路由,但无法移除托管工具。请打开诊断后重试卸载。`},unknown:{title:`Headroom 操作失败`,guidance:`请重试该操作。如果再次发生,请打开诊断并分享详情。`}}},projectWizard:{configureJira:`配置 Jira`,installSerena:`安装 Serena`,description:`选择要配置此项目级插件的项目。`,chooseProject:`选择项目`,requiresClaudeProvider:`需要 Claude 提供商`,selectProjectToContinue:`选择一个项目以继续。`,requiresSupportedProvider:`需要 Claude 或 Codex`},serena:{loading:`正在加载 Serena…`,titleForProject:`{{name}} 的 Serena`,description:`安装项目本地 MCP 配置和插件状态。其他项目不会被修改。`,status:`状态:{{status}}`,files:`文件`,prerequisites:`先决条件`,provider:`AI 提供商`},projectStatus:{installed:`已安装`,deactivated:`已停用`,"not-installed":`未安装`,orphan:`孤立`,degraded:`降级`},diagnostics:{title:`Headroom 诊断`,description:`Specrails 管理的 Headroom 安装和代理的技术状态。`},jira:{loading:`正在加载 Jira…`,titleForProject:`{{name}} 的 Jira`,configuredDescription:`管理 Jira 项目、状态映射、丢弃状态、同步和连接状态。`,loadFailed:`无法加载当前的 Jira 配置:{{message}}`,notConfiguredDescription:`将此项目连接到 Jira。`}},f={page:e,card:t,toggle:n,cachedNotice:r,update:i,conflict:a,orphan:o,installDialog:s,uninstallDialog:c,docs:l,jiraCard:u,plugins:d};export{r as cachedNotice,t as card,a as conflict,f as default,l as docs,s as installDialog,u as jiraCard,o as orphan,e as page,d as plugins,n as toggle,c as uninstallDialog,i as update};
@@ -0,0 +1 @@
1
+ var e={title:`インテグレーション`,subtitle:`プロジェクトごとのプラグイン。どのインテグレーションを有効にするかは各プロジェクトが独立して決定します。`,selectProject:`インテグレーションを管理するプロジェクトを選択してください。`,deprecated:`非推奨`,loadError:`プラグインの読み込みに失敗しました。`,empty:`このビルドにはプラグインが同梱されていません。`},t={statusActive:`有効`,statusDeactivated:`無効`,statusDegraded:`劣化`,updateAvailable:`アップデートあり`,requires:`必要条件: {{list}}`,deactivatedHint:`インストール済みですが無効です — 次のセッションで Claude は読み込みません。再有効化するには<strong>有効</strong>に切り替えてください。`,install:`インストール`,uninstall:`アンインストール`},n={titleActive:`有効 — クリックで無効化`,titleDeactivated:`無効 — クリックで有効化`},r={body:`Claude のキャッシュにはマーケットプレイス版プラグインが<strong>インストール済みかつ無効</strong>の状態で残っています。トグルがオフでも <code>~/.claude/plugins/cache/...</code> からサーバーを解決する可能性があります。プロジェクトスコープのみに限定するには、Claude からマーケットプレイス版プラグインをアンインストールしてください:`,runInstruction:`アクティブな Claude セッション内で実行し、その後このプロジェクトで Claude を再起動してください。`},i={body:`インストール後に同梱マニフェストが変更されました (おそらく上流での名前変更)。<code>.mcp.json</code> を正規のエントリで書き直します — 外科的な変更で、プラグインが所有するキーのみが対象です。`,button:`<code>.mcp.json</code> エントリを更新`},a={body:`<strong>{{name}}</strong> は Claude のプラグインマーケットプレイス経由でグローバルにも有効になっており、このプロジェクトスコープのインストールを覆い隠しています。このカードを有効にするには、下のグローバル版を無効にしてください — Claude からいつでも再有効化できます。`,disableButton:`<code>{{key}}</code> を無効化`},o={badge:`孤立`,removeButton:`孤立エントリを削除`},s={title:`{{name}} をインストール`,computingChanges:`変更内容を計算中…`,filesHeading:`変更されるファイル`,prerequisites:`前提条件`,autoInstall:`自動インストール`,progress:`進行状況`,installingPrereq:`{{name}} をインストール中…`,prereqStartFailed:`開始に失敗しました: {{message}}`},c={title:`{{name}} をアンインストールしますか?`,body:`<code>.mcp.json</code> 内のプラグイン管理エントリを元に戻し、プラグインが作成したファイルを削除します。コード、履歴、他のプラグインには影響しません。`},l={title:`ドキュメント`,dialogDescription:`このバージョンに同梱されている Specrails ユーザーガイドです。`,sidebarEmpty:`ドキュメントはまだありません`,indexEmpty:`ドキュメントはここに表示されます。ユーザーガイドはアプリに同梱され docs/guide/ にあります。~/.specrails/docs/guide/ 以下に Markdown ファイルを置くとカスタマイズできます。`,categoryEmpty:`このカテゴリにはまだドキュメントがありません。`,documentCount_one:`{{count}} 件のドキュメント`,documentCount_other:`{{count}} 件のドキュメント`,categoryCount_one:`{{count}} カテゴリ`,categoryCount_other:`{{count}} カテゴリ`,summary:`{{categories}}にわたって{{documents}}。`,loadError:`このドキュメントを読み込めませんでした。`,loading:`ドキュメントを読み込み中…`,errorDetails:`詳細`,navLabel:`ドキュメントのセクション`,guideCount_one:`このバージョンに同梱のガイド {{count}} 件`,guideCount_other:`このバージョンに同梱のガイド {{count}} 件`,filterPlaceholder:`ガイドを絞り込む`,filterNoResults:`「{{query}}」に一致するガイドはありません。`},u={title:`Jira`,category:`課題トラッキング`,description:`このプロジェクトのスペックを Jira ボードで裏付け — ステータスを双方向同期し、rail 完了時にコメントを投稿します。`,connectedDescription:`{{key}} と同期済み。スペックは Jira ボードと双方向でミラーされます。`,connect:`接続`,connected:`接続済み`,manage:`管理`,modalTitle:`Jira に接続`,manageTitle:`Jira 接続`,bullet1:`Jira ボードとステータスを双方向同期。`,bullet2:`rail 完了時にコメントを投稿。`,bullet3:`Jira のバックログがボードにスペックとして表示されます。`,requires:`Jira Cloud または Data Center のアカウントが必要です。`},d=JSON.parse(`{"page":{"title":"プラグイン","subtitle":"グローバルツールとプロジェクト連携を 1 か所で管理します。","readyCount_one":"{{count}} 件準備完了","readyCount_other":"{{count}} 件準備完了","attentionCount_one":"{{count}} 件は要確認","attentionCount_other":"{{count}} 件は要確認","openWindow":"ウィンドウで開く","openWindowFailed":"プラグインウィンドウを開けませんでした"},"search":{"placeholder":"プラグインを検索"},"filters":{"all":"すべて","global":"グローバル","project":"プロジェクト","label":"スコープ"},"sections":{"installed":"インストール済み","available":"利用可能"},"scope":{"global":"グローバル","project":"プロジェクト"},"groups":{"global":{"title":"グローバル","detail":"Specrails 全体に適用"},"project":{"title":"プロジェクトローカル","detail":"リポジトリごとに設定"}},"empty":{"installedSearch":"この検索に一致するインストール済みプラグインはありません。","installed":"インストール済みプラグインはまだありません。","availableSearch":"この検索に一致する利用可能なプラグインはありません。","allInstalled":"すべてのプラグインがインストール済みです。"},"actions":{"install":"インストール","manage":"管理","review":"確認","cancel":"キャンセル","installBusy":"インストール中…","configureBusy":"設定中…","reviewBusy":"確認中…"},"status":{"attention":"要確認","active":"有効","externalActive":"外部で有効","external":"外部","installed":"インストール済み","available":"利用可能","configuredCount_one":"{{count}} 件設定済み","configuredCount_other":"{{count}} 件設定済み","installedCount_one":"{{count}} 件インストール済み","installedCount_other":"{{count}} 件インストール済み"},"catalog":{"headroom":{"description":"Headroom AI で Codex と Claude の起動を最適化します。"},"jira":{"description":"プロジェクト specs を Jira ボード、ステータスマッピング、完了コメントと同期します。"},"serena":{"description":"Serena MCP によるプロジェクトローカルのセマンティックコードナビゲーション。"}},"headroom":{"title":"Headroom AI","dialogDescription":"Headroom のグローバルインストールとプロバイダー別ルーティングを管理します。","panelDescription":"グローバルにインストールされ、Codex と Claude で個別に有効化できます。","issueCode":"コード: {{code}}","confirmDetach":"Specrails ルーティングを無効化し、プロキシを停止します。既存のシステム Headroom インストールは変更されません。","confirmUninstall":"Codex と Claude のルートを無効化し、プロキシを停止して、Specrails 管理の Headroom ツールを削除します。","metrics":{"install":"インストール","checking":"確認中","ready":"準備完了","missing":"未検出","source":"ソース","system":"システム","specrails":"Specrails","none":"なし","proxy":"プロキシ","starting":"起動中","off":"オフ"},"actions":{"installWithUv":"同梱 uv でインストール","disableAllRoutes":"すべてのルートを無効化","viewDiagnostics":"診断を表示","detachHeadroom":"Headroom を切り離す","uninstallHeadroom":"Headroom をアンインストール","detach":"切り離す","uninstall":"アンインストール"},"port":{"label":"プロキシポート","apply":"適用"},"provider":{"noProjectUsesProvider":"このプロバイダーを使う Specrails プロジェクトはありません","routedThroughHeadroom":"Headroom 経由でルーティング中","detectedExternalRoute":"外部ルートを検出","notRouted":"未ルーティング"},"savings":{"title":"Headroom トークン節約","learningOn":"出力を測定済み","waitingForOutputSamples":"出力は未測定","baseline":"{{method}}ベースライン","updatedLive":"ライブ更新","baselineSamples_one":"{{count}} 件のベースラインサンプル","baselineSamples_other":"{{count}} 件のベースラインサンプル","tokens":"tokens","learning":"データなし","off":"オフ","requestDetail":"{{method}} · {{count}} 件のリクエスト","requestCount":"{{count}} 件のリクエスト","detected":"検出済み","totals":"合計","input":"入力","output":"出力","processed":"処理済み","saved":"節約","noData":"データなし","inputSaved":"入力の節約","outputSaved":"出力の節約","inputSavingsActive":"Headroom 経由でルーティング中","statusInputOutput":"入力 + 出力","statusInputOnly":"入力有効","statusRouting":"ルーティング中","statusInactive":"非アクティブ","methods":{"estimated":"推定","measured":"測定","none":"なし"},"waitingForShapedResponses":"出力レスポンスは未測定","outputObserved":"{{value}} の出力を確認済み","routeDisabled":"ルート無効"},"issues":{"uv_missing_or_corrupt":{"title":"同梱 uv が利用できません","guidance":"Specrails は同梱 uv ランタイムを起動できませんでした。Specrails を再インストールするか、ランタイムが利用可能になったら修復を使ってください。"},"network_unavailable":{"title":"Headroom をダウンロードできませんでした","guidance":"ネットワーク接続を確認して再試行してください。Specrails はインストールを専用ツールディレクトリに隔離します。"},"package_resolution_failed":{"title":"Headroom の依存関係を解決できませんでした","guidance":"インストールを再試行してください。失敗が続く場合は診断を開き、uv の出力を共有してください。"},"install_permission_failed":{"title":"Specrails がツールディレクトリに書き込めません","guidance":"~/.specrails/tools の権限を確認し、インストールを再試行してください。"},"headroom_not_found_after_install":{"title":"インストール完了後に Headroom が見つかりませんでした","guidance":"インストール修復を実行してください。Specrails が Headroom を再インストールし、実行ファイルを検証します。"},"learning_setup_failed":{"title":"Headroom 学習を有効化できませんでした","guidance":"Headroom はインストール済みですが、出力節約のキャリブレーションが完了していません。メトリクスがサンプルを収集するまでプロキシルーティングを使い続けてください。"},"metrics_unavailable":{"title":"Headroom メトリクスはまだ利用できません","guidance":"Headroom 経由でトラフィックをルーティングしてください。プロキシがサンプルを報告すると、Specrails が token 節約メトリクスを更新します。"},"proxy_port_busy":{"title":"Headroom プロキシポートは既に使用中です","guidance":"別のポートを選ぶか、現在のポートを使用しているプロセスを停止してから有効化を再試行してください。"},"proxy_unhealthy":{"title":"Headroom プロキシが正常状態になりませんでした","guidance":"有効化を再試行してください。繰り返す場合は診断を開いてプロキシ出力を確認してください。"},"provider_route_failed":{"title":"プロバイダールートの検証に失敗しました","guidance":"Specrails はプロバイダールートを検証できませんでした。プロバイダーは非アクティブのままです。診断確認後に再試行してください。"},"provider_config_conflict":{"title":"既存のプロバイダー設定が Headroom と競合しています","guidance":"システム全体の有効化前に診断を確認してください。Specrails 管理のルーティングは元に戻せます。"},"activation_partially_applied":{"title":"有効化は一部のみ適用されました","guidance":"Specrails はロールバックを試みました。診断を確認し、対象プロバイダーを再試行してください。"},"not_installed":{"title":"Headroom はインストールされていません","guidance":"まず Headroom をインストールし、その後 Codex または Claude を有効化してください。"},"uninstall_failed":{"title":"Headroom をアンインストールできませんでした","guidance":"Specrails は Headroom ルーティングを無効化しましたが、管理ツールを削除できませんでした。診断を開いて再試行してください。"},"unknown":{"title":"Headroom 操作に失敗しました","guidance":"操作を再試行してください。繰り返す場合は診断を開き、詳細を共有してください。"}}},"projectWizard":{"configureJira":"Jira を設定","installSerena":"Serena をインストール","description":"このプロジェクトスコープのプラグインを設定するプロジェクトを選択してください。","chooseProject":"プロジェクトを選択","requiresClaudeProvider":"Claude プロバイダーが必要","selectProjectToContinue":"続行するプロジェクトを選択してください。","requiresSupportedProvider":"Claude または Codex が必要です"},"serena":{"loading":"Serena を読み込み中…","titleForProject":"{{name}} の Serena","description":"プロジェクトローカルの MCP 設定とプラグイン状態をインストールします。他のプロジェクトは変更されません。","status":"ステータス: {{status}}","files":"ファイル","prerequisites":"前提条件","provider":"AI プロバイダー"},"projectStatus":{"installed":"インストール済み","deactivated":"無効","not-installed":"未インストール","orphan":"孤立","degraded":"劣化"},"diagnostics":{"title":"Headroom 診断","description":"Specrails 管理の Headroom インストールとプロキシの技術ステータス。"},"jira":{"loading":"Jira を読み込み中…","titleForProject":"{{name}} の Jira","configuredDescription":"Jira プロジェクト、ステータスのマッピング、破棄ステータス、同期、接続状態を管理します。","loadFailed":"現在の Jira 設定を読み込めませんでした: {{message}}","notConfiguredDescription":"このプロジェクトを Jira に接続します。"}}`),f={page:e,card:t,toggle:n,cachedNotice:r,update:i,conflict:a,orphan:o,installDialog:s,uninstallDialog:c,docs:l,jiraCard:u,plugins:d};export{r as cachedNotice,t as card,a as conflict,f as default,l as docs,s as installDialog,u as jiraCard,o as orphan,e as page,d as plugins,n as toggle,c as uninstallDialog,i as update};
@@ -0,0 +1 @@
1
+ var e={title:`Integraciones`,subtitle:`Plugins por proyecto. Cada proyecto decide de forma independiente qué integraciones activar.`,selectProject:`Selecciona un proyecto para gestionar sus integraciones.`,deprecated:`Obsoleto`,loadError:`No se pudieron cargar los plugins.`,empty:`Esta build no incluye ningún plugin.`},t={statusActive:`Activo`,statusDeactivated:`Desactivado`,statusDegraded:`Degradado`,updateAvailable:`Actualización disponible`,requires:`Requiere: {{list}}`,deactivatedHint:`Instalado pero desactivado — Claude no lo cargará en la próxima sesión. Activa <strong>Activo</strong> para volver a habilitarlo.`,install:`Instalar`,uninstall:`Desinstalar`},n={titleActive:`Activo — haz clic para desactivar`,titleDeactivated:`Desactivado — haz clic para activar`},r={body:`Claude tiene el plugin del marketplace <strong>instalado pero deshabilitado</strong> en su caché. Puede que siga resolviendo el servidor desde <code>~/.claude/plugins/cache/...</code> aunque el interruptor esté apagado. Para forzar solo el ámbito de proyecto, desinstala el plugin del marketplace desde Claude:`,runInstruction:`Ejecútalo dentro de una sesión activa de Claude y luego reinicia Claude en este proyecto.`},i={body:`El manifiesto incluido ha cambiado desde que lo instalaste (probablemente un renombrado upstream). Reescribe <code>.mcp.json</code> con la entrada canónica — de forma quirúrgica: solo se tocan las claves propiedad del plugin.`,button:`Actualizar la entrada de <code>.mcp.json</code>`},a={body:`<strong>{{name}}</strong> también está habilitado globalmente a través del marketplace de plugins de Claude, lo que eclipsa esta instalación de ámbito de proyecto. Para que esta tarjeta pase a Activo, deshabilita la versión global más abajo — puede volver a habilitarse desde Claude en cualquier momento.`,disableButton:`Deshabilitar <code>{{key}}</code>`},o={badge:`Huérfano`,removeButton:`Eliminar huérfano`},s={title:`Instalar {{name}}`,computingChanges:`Calculando cambios…`,filesHeading:`Archivos que cambiarán`,prerequisites:`Requisitos previos`,autoInstall:`Instalación automática`,progress:`Progreso`,installingPrereq:`Instalando {{name}}…`,prereqStartFailed:`No se pudo iniciar: {{message}}`},c={title:`¿Desinstalar {{name}}?`,body:`Esto revertirá las entradas gestionadas por el plugin en <code>.mcp.json</code> y eliminará los archivos creados por el plugin. Tu código, tu historial y el resto de plugins no se ven afectados.`},l={title:`Documentación`,dialogDescription:`La guía de usuario de Specrails incluida en esta versión.`,sidebarEmpty:`Aún no hay docs`,indexEmpty:`La documentación aparecerá aquí. La guía de usuario se incluye con la app en docs/guide/; añade archivos Markdown en ~/.specrails/docs/guide/ para personalizarla.`,categoryEmpty:`Aún no hay documentos en esta categoría.`,documentCount_one:`{{count}} documento`,documentCount_other:`{{count}} documentos`,categoryCount_one:`{{count}} categoría`,categoryCount_other:`{{count}} categorías`,summary:`{{documents}} en {{categories}}.`,loadError:`No se ha podido cargar este documento.`,loading:`Cargando documentación…`,errorDetails:`Detalles`,navLabel:`Secciones de la documentación`,guideCount_one:`{{count}} guía incluida en esta versión`,guideCount_other:`{{count}} guías incluidas en esta versión`,filterPlaceholder:`Filtrar guías`,filterNoResults:`Ninguna guía coincide con «{{query}}».`},u={title:`Jira`,category:`Seguimiento de incidencias`,description:`Respalda las specs de este proyecto con un tablero de Jira — sincronización bidireccional del estado y un comentario al terminar un rail.`,connectedDescription:`Sincronizado con {{key}}. Las specs reflejan tu tablero de Jira en ambos sentidos.`,connect:`Conectar`,connected:`Conectado`,manage:`Gestionar`,modalTitle:`Conectar con Jira`,manageTitle:`Conexión de Jira`,bullet1:`Sincronización bidireccional del estado con tu tablero de Jira.`,bullet2:`Publica un comentario al terminar un rail.`,bullet3:`Tu backlog de Jira aparece como specs en el tablero.`,requires:`Requiere una cuenta de Jira Cloud o Data Center.`},d={page:{title:`Plugins`,subtitle:`Herramientas globales e integraciones de proyecto, gestionadas desde un solo lugar.`,readyCount_one:`{{count}} listo`,readyCount_other:`{{count}} listos`,attentionCount_one:`{{count}} requiere atención`,attentionCount_other:`{{count}} requieren atención`,openWindow:`Abrir en ventana`,openWindowFailed:`No se pudo abrir la ventana de plugins`},search:{placeholder:`Buscar plugins`},filters:{all:`Todos`,global:`Globales`,project:`Proyecto`,label:`Ámbito`},sections:{installed:`Instalados`,available:`Disponibles`},scope:{global:`Global`,project:`Proyecto`},groups:{global:{title:`Globales`,detail:`Aplican a todo Specrails`},project:{title:`Locales de proyecto`,detail:`Configurados por repositorio`}},empty:{installedSearch:`No hay plugins instalados que coincidan con esta búsqueda.`,installed:`Todavía no hay plugins instalados.`,availableSearch:`No hay plugins disponibles que coincidan con esta búsqueda.`,allInstalled:`Todos los plugins están instalados.`},actions:{install:`Instalar`,manage:`Gestionar`,review:`Revisar`,cancel:`Cancelar`,installBusy:`Instalando…`,configureBusy:`Configurando…`,reviewBusy:`Revisando…`},status:{attention:`requiere atención`,active:`activo`,externalActive:`externo activo`,external:`externo`,installed:`instalado`,available:`disponible`,configuredCount_one:`{{count}} configurado`,configuredCount_other:`{{count}} configurados`,installedCount_one:`{{count}} instalado`,installedCount_other:`{{count}} instalados`},catalog:{headroom:{description:`Optimiza los lanzamientos de Codex y Claude con Headroom AI.`},jira:{description:`Sincroniza specs del proyecto con un tablero de Jira, mapeo de estados y comentarios de finalización.`},serena:{description:`Navegación semántica de código local al proyecto mediante Serena MCP.`}},headroom:{title:`Headroom AI`,dialogDescription:`Gestiona la instalación global de Headroom y el enrutado por proveedor.`,panelDescription:`Instalado globalmente, activado de forma independiente para Codex y Claude.`,issueCode:`Código: {{code}}`,confirmDetach:`Esto desactiva el enrutado de Specrails y detiene el proxy. La instalación existente de Headroom en el sistema queda intacta.`,confirmUninstall:`Esto desactiva las rutas de Codex y Claude, detiene el proxy y elimina la herramienta Headroom gestionada por Specrails.`,metrics:{install:`Instalación`,checking:`Comprobando`,ready:`Lista`,missing:`Falta`,source:`Origen`,system:`Sistema`,specrails:`Specrails`,none:`Ninguno`,proxy:`Proxy`,starting:`Iniciando`,off:`Apagado`},actions:{installWithUv:`Instalar con uv incluido`,disableAllRoutes:`Desactivar todas las rutas`,viewDiagnostics:`Ver diagnóstico`,detachHeadroom:`Desvincular Headroom`,uninstallHeadroom:`Desinstalar Headroom`,detach:`Desvincular`,uninstall:`Desinstalar`},port:{label:`Puerto del proxy`,apply:`Aplicar`},provider:{noProjectUsesProvider:`Ningún proyecto de Specrails usa este proveedor`,routedThroughHeadroom:`Enrutado mediante Headroom`,detectedExternalRoute:`Ruta externa detectada`,notRouted:`Sin enrutar`},savings:{title:`Ahorro de tokens Headroom`,learningOn:`salida medida`,waitingForOutputSamples:`salida sin medir`,baseline:`base {{method}}`,updatedLive:`actualizado en vivo`,baselineSamples_one:`{{count}} muestra base`,baselineSamples_other:`{{count}} muestras base`,tokens:`tokens`,learning:`Sin datos`,off:`Apagado`,requestDetail:`{{method}} · {{count}} solicitudes`,requestCount:`{{count}} solicitudes`,detected:`detectado`,totals:`Totales`,input:`Entrada`,output:`Salida`,processed:`Procesados`,saved:`Ahorrados`,noData:`Sin datos`,inputSaved:`Entrada ahorrada`,outputSaved:`Salida ahorrada`,inputSavingsActive:`Enrutando mediante Headroom`,statusInputOutput:`Entrada + salida`,statusInputOnly:`Entrada activa`,statusRouting:`Enrutando`,statusInactive:`Inactivo`,methods:{estimated:`estimada`,measured:`medida`,none:`sin medir`},waitingForShapedResponses:`Sin respuestas de salida medidas`,outputObserved:`{{value}} de salida observados`,routeDisabled:`Ruta desactivada`},issues:{uv_missing_or_corrupt:{title:`El uv incluido no está disponible`,guidance:`Specrails no pudo iniciar su runtime uv incluido. Reinstala Specrails o usa Reparar cuando el runtime esté disponible.`},network_unavailable:{title:`No se pudo descargar Headroom`,guidance:`Comprueba tu conexión de red y reintenta. Specrails mantendrá la instalación aislada en su propio directorio de herramientas.`},package_resolution_failed:{title:`No se pudieron resolver las dependencias de Headroom`,guidance:`Reintenta la instalación. Si sigue fallando, abre el diagnóstico y comparte la salida de uv.`},install_permission_failed:{title:`Specrails no puede escribir en su directorio de herramientas`,guidance:`Comprueba los permisos en ~/.specrails/tools y reintenta la instalación.`},headroom_not_found_after_install:{title:`La instalación terminó pero no se encontró Headroom`,guidance:`Ejecuta Reparar instalación. Specrails reinstalará Headroom y verificará el ejecutable.`},learning_setup_failed:{title:`No se pudo activar el aprendizaje de Headroom`,guidance:`Headroom está instalado, pero la calibración de ahorro de salida no terminó. Sigue usando el enrutado por proxy mientras las métricas recopilan muestras.`},metrics_unavailable:{title:`Las métricas de Headroom aún no están disponibles`,guidance:`Empieza a enrutar tráfico por Headroom. Specrails actualizará las métricas de ahorro cuando el proxy reporte muestras.`},proxy_port_busy:{title:`El puerto del proxy de Headroom ya está en uso`,guidance:`Elige otro puerto o detén el proceso que usa el puerto actual y reintenta la activación.`},proxy_unhealthy:{title:`El proxy de Headroom no llegó a estar sano`,guidance:`Reintenta la activación. Si se repite, abre el diagnóstico para inspeccionar la salida del proxy.`},provider_route_failed:{title:`Falló la verificación de ruta del proveedor`,guidance:`Specrails no pudo verificar la ruta del proveedor. El proveedor queda inactivo; reintenta tras revisar el diagnóstico.`},provider_config_conflict:{title:`La configuración existente del proveedor entra en conflicto con Headroom`,guidance:`Revisa el diagnóstico antes de activar el enrutado global. El enrutado gestionado por Specrails es reversible.`},activation_partially_applied:{title:`La activación solo se aplicó parcialmente`,guidance:`Specrails intentó revertir el cambio. Revisa el diagnóstico y reintenta el proveedor afectado.`},not_installed:{title:`Headroom no está instalado`,guidance:`Instala Headroom primero y después activa Codex o Claude.`},uninstall_failed:{title:`No se pudo desinstalar Headroom`,guidance:`Specrails desactivó el enrutado de Headroom pero no pudo eliminar la herramienta gestionada. Abre el diagnóstico y reintenta.`},unknown:{title:`Falló la operación de Headroom`,guidance:`Reintenta la operación. Si se repite, abre el diagnóstico y comparte los detalles.`}}},projectWizard:{configureJira:`Configurar Jira`,installSerena:`Instalar Serena`,description:`Selecciona el proyecto donde debe configurarse este plugin local de proyecto.`,chooseProject:`Elegir proyecto`,requiresClaudeProvider:`Requiere proveedor Claude`,selectProjectToContinue:`Selecciona un proyecto para continuar.`,requiresSupportedProvider:`Requiere Claude o Codex`},serena:{loading:`Cargando Serena…`,titleForProject:`Serena para {{name}}`,description:`Instala la configuración MCP y el estado del plugin solo en este proyecto. Los demás proyectos no se tocan.`,status:`Estado: {{status}}`,files:`Archivos`,prerequisites:`Prerrequisitos`,provider:`Proveedor de IA`},projectStatus:{installed:`instalado`,deactivated:`desactivado`,"not-installed":`no instalado`,orphan:`huérfano`,degraded:`degradado`},diagnostics:{title:`Diagnóstico de Headroom`,description:`Estado técnico de la instalación de Headroom gestionada por Specrails y del proxy.`},jira:{loading:`Cargando Jira…`,titleForProject:`Jira para {{name}}`,configuredDescription:`Gestiona el proyecto de Jira, el mapeo de estados, el estado de descarte, la sincronización y el estado de la conexión.`,loadFailed:`No se pudo cargar la configuración actual de Jira: {{message}}`,notConfiguredDescription:`Conecta este proyecto a Jira.`}},f={page:e,card:t,toggle:n,cachedNotice:r,update:i,conflict:a,orphan:o,installDialog:s,uninstallDialog:c,docs:l,jiraCard:u,plugins:d};export{r as cachedNotice,t as card,a as conflict,f as default,l as docs,s as installDialog,u as jiraCard,o as orphan,e as page,d as plugins,n as toggle,c as uninstallDialog,i as update};
@@ -0,0 +1 @@
1
+ var e={title:`Integrazioni`,subtitle:`Plugin per progetto. Ogni progetto decide in autonomia quali integrazioni abilitare.`,selectProject:`Seleziona un progetto per gestire le integrazioni.`,deprecated:`Deprecato`,loadError:`Impossibile caricare i plugin.`,empty:`Nessun plugin incluso in questa build.`},t={statusActive:`Attivo`,statusDeactivated:`Disattivato`,statusDegraded:`Degradato`,updateAvailable:`Aggiornamento disponibile`,requires:`Richiede: {{list}}`,deactivatedHint:`Installato ma disattivato — Claude non lo caricherà nella prossima sessione. Imposta su <strong>Attivo</strong> per riabilitarlo.`,install:`Installa`,uninstall:`Disinstalla`},n={titleActive:`Attivo — clicca per disattivare`,titleDeactivated:`Disattivato — clicca per attivare`},r={body:`Claude ha il plugin del marketplace <strong>installato ma disabilitato</strong> nella sua cache. Potrebbe comunque risolvere il server da <code>~/.claude/plugins/cache/...</code> anche con l'interruttore disattivato. Per forzare il solo ambito di progetto, disinstalla il plugin del marketplace da Claude:`,runInstruction:`Esegui all'interno di una sessione Claude attiva, poi riavvia Claude in questo progetto.`},i={body:`Il manifest incluso è cambiato dopo l'installazione (probabilmente una rinomina upstream). Riscrivi <code>.mcp.json</code> con la voce canonica — intervento chirurgico, vengono toccate solo le chiavi di proprietà del plugin.`,button:`Aggiorna la voce in <code>.mcp.json</code>`},a={body:`<strong>{{name}}</strong> è abilitato anche globalmente tramite il marketplace dei plugin di Claude, che mette in ombra questa installazione a livello di progetto. Per rendere Attiva questa scheda, disabilita qui sotto la versione globale — potrà essere riabilitata da Claude in qualsiasi momento.`,disableButton:`Disabilita <code>{{key}}</code>`},o={badge:`Orfano`,removeButton:`Rimuovi orfano`},s={title:`Installa {{name}}`,computingChanges:`Calcolo delle modifiche…`,filesHeading:`File che verranno modificati`,prerequisites:`Prerequisiti`,autoInstall:`Installazione automatica`,progress:`Avanzamento`,installingPrereq:`Installazione di {{name}}…`,prereqStartFailed:`Avvio non riuscito: {{message}}`},c={title:`Disinstallare {{name}}?`,body:`Verranno ripristinate le voci gestite dal plugin in <code>.mcp.json</code> e rimossi i file creati dal plugin. Il tuo codice, la cronologia e gli altri plugin non vengono toccati.`},l={title:`Documentazione`,dialogDescription:`La guida utente di Specrails inclusa in questa versione.`,sidebarEmpty:`Ancora nessun documento`,indexEmpty:`La documentazione apparirà qui. La guida utente è inclusa nell’app in docs/guide/; aggiungi file Markdown in ~/.specrails/docs/guide/ per personalizzarla.`,categoryEmpty:`Ancora nessun documento in questa categoria.`,documentCount_one:`{{count}} documento`,documentCount_other:`{{count}} documenti`,categoryCount_one:`{{count}} categoria`,categoryCount_other:`{{count}} categorie`,summary:`{{documents}} in {{categories}}.`,loadError:`Impossibile caricare questo documento.`,loading:`Caricamento della documentazione…`,errorDetails:`Dettagli`,navLabel:`Sezioni della documentazione`,guideCount_one:`{{count}} guida inclusa in questa versione`,guideCount_other:`{{count}} guide incluse in questa versione`,filterPlaceholder:`Filtra le guide`,filterNoResults:`Nessuna guida corrisponde a «{{query}}».`},u={title:`Jira`,category:`Tracciamento ticket`,description:`Appoggia le spec di questo progetto a una board Jira — sincronizzazione bidirezionale dello stato e un commento al termine di un rail.`,connectedDescription:`Sincronizzato con {{key}}. Le spec rispecchiano la tua board Jira in entrambe le direzioni.`,connect:`Connetti`,connected:`Connesso`,manage:`Gestisci`,modalTitle:`Connetti a Jira`,manageTitle:`Connessione Jira`,bullet1:`Sincronizzazione bidirezionale dello stato con la tua board Jira.`,bullet2:`Pubblica un commento al termine di un rail.`,bullet3:`Il tuo backlog Jira appare come spec sulla board.`,requires:`Richiede un account Jira Cloud o Data Center.`},d={page:{title:`Plugin`,subtitle:`Strumenti globali e integrazioni di progetto, gestiti da un unico posto.`,readyCount_one:`{{count}} pronto`,readyCount_other:`{{count}} pronti`,attentionCount_one:`{{count}} richiede attenzione`,attentionCount_other:`{{count}} richiedono attenzione`,openWindow:`Apri in una finestra`,openWindowFailed:`Impossibile aprire la finestra dei plugin`},search:{placeholder:`Cerca plugin`},filters:{all:`Tutti`,global:`Globali`,project:`Progetto`,label:`Ambito`},sections:{installed:`Installati`,available:`Disponibili`},scope:{global:`Globale`,project:`Progetto`},groups:{global:{title:`Globali`,detail:`Si applicano a tutto Specrails`},project:{title:`Locali al progetto`,detail:`Configurati per repository`}},empty:{installedSearch:`Nessun plugin installato corrisponde a questa ricerca.`,installed:`Nessun plugin installato.`,availableSearch:`Nessun plugin disponibile corrisponde a questa ricerca.`,allInstalled:`Tutti i plugin sono installati.`},actions:{install:`Installa`,manage:`Gestisci`,review:`Controlla`,cancel:`Annulla`,installBusy:`Installazione…`,configureBusy:`Configurazione…`,reviewBusy:`Verifica…`},status:{attention:`attenzione`,active:`attivo`,externalActive:`esterno attivo`,external:`esterno`,installed:`installato`,available:`disponibile`,configuredCount_one:`{{count}} configurato`,configuredCount_other:`{{count}} configurati`,installedCount_one:`{{count}} installato`,installedCount_other:`{{count}} installati`},catalog:{headroom:{description:`Ottimizza gli avvii di Codex e Claude tramite Headroom AI.`},jira:{description:`Sincronizza le spec di progetto con una board Jira, mapping degli stati e commenti di completamento.`},serena:{description:`Navigazione semantica del codice locale al progetto tramite Serena MCP.`}},headroom:{title:`Headroom AI`,dialogDescription:`Gestisci l’installazione globale di Headroom e il routing per provider.`,panelDescription:`Installato globalmente, attivato separatamente per Codex e Claude.`,issueCode:`Codice: {{code}}`,confirmDetach:`Questo disattiva il routing Specrails e ferma il proxy. L’installazione Headroom di sistema esistente resta intatta.`,confirmUninstall:`Questo disattiva le rotte Codex e Claude, ferma il proxy e rimuove lo strumento Headroom gestito da Specrails.`,metrics:{install:`Installazione`,checking:`Verifica`,ready:`Pronto`,missing:`Mancante`,source:`Origine`,system:`Sistema`,specrails:`Specrails`,none:`Nessuno`,proxy:`Proxy`,starting:`Avvio`,off:`Spento`},actions:{installWithUv:`Installa con uv incluso`,disableAllRoutes:`Disattiva tutte le rotte`,viewDiagnostics:`Vedi diagnostica`,detachHeadroom:`Scollega Headroom`,uninstallHeadroom:`Disinstalla Headroom`,detach:`Scollega`,uninstall:`Disinstalla`},port:{label:`Porta proxy`,apply:`Applica`},provider:{noProjectUsesProvider:`Nessun progetto Specrails usa questo provider`,routedThroughHeadroom:`Instradato tramite Headroom`,detectedExternalRoute:`Rotta esterna rilevata`,notRouted:`Non instradato`},savings:{title:`Risparmio token Headroom`,learningOn:`output misurato`,waitingForOutputSamples:`output non misurato`,baseline:`base {{method}}`,updatedLive:`aggiornato live`,baselineSamples_one:`{{count}} campione base`,baselineSamples_other:`{{count}} campioni base`,tokens:`token`,learning:`Nessun dato`,off:`Spento`,requestDetail:`{{method}} · {{count}} richieste`,requestCount:`{{count}} richieste`,detected:`rilevato`,totals:`Totali`,input:`Input`,output:`Output`,processed:`Processati`,saved:`Risparmiati`,noData:`Nessun dato`,inputSaved:`Input risparmiato`,outputSaved:`Output risparmiato`,inputSavingsActive:`Routing tramite Headroom`,statusInputOutput:`Input + output`,statusInputOnly:`Input attivo`,statusRouting:`Routing attivo`,statusInactive:`Inattivo`,methods:{estimated:`stimata`,measured:`misurata`,none:`nessuna`},waitingForShapedResponses:`Nessuna risposta di output misurata`,outputObserved:`{{value}} di output osservati`,routeDisabled:`Rotta disattivata`},issues:{uv_missing_or_corrupt:{title:`Il uv incluso non è disponibile`,guidance:`Specrails non è riuscito ad avviare il runtime uv incluso. Reinstalla Specrails o usa Ripara quando il runtime sarà disponibile.`},network_unavailable:{title:`Non è stato possibile scaricare Headroom`,guidance:`Controlla la connessione di rete e riprova. Specrails manterrà l’installazione isolata nella propria directory degli strumenti.`},package_resolution_failed:{title:`Non è stato possibile risolvere le dipendenze di Headroom`,guidance:`Riprova l’installazione. Se continua a fallire, apri la diagnostica e condividi l’output di uv.`},install_permission_failed:{title:`Specrails non può scrivere nella directory degli strumenti`,guidance:`Controlla i permessi in ~/.specrails/tools, poi riprova l’installazione.`},headroom_not_found_after_install:{title:`Installazione completata ma Headroom non trovato`,guidance:`Esegui Ripara installazione. Specrails reinstallerà Headroom e verificherà l’eseguibile.`},learning_setup_failed:{title:`Non è stato possibile abilitare l’apprendimento di Headroom`,guidance:`Headroom è installato, ma la calibrazione dei risparmi di output non è terminata. Continua a usare il routing proxy mentre le metriche raccolgono campioni.`},metrics_unavailable:{title:`Le metriche di Headroom non sono ancora disponibili`,guidance:`Inizia a instradare traffico tramite Headroom. Specrails aggiornerà le metriche di risparmio token appena il proxy riporterà campioni.`},proxy_port_busy:{title:`La porta del proxy Headroom è già in uso`,guidance:`Scegli un’altra porta o ferma il processo che usa la porta attuale, poi riprova l’attivazione.`},proxy_unhealthy:{title:`Il proxy Headroom non è diventato sano`,guidance:`Riprova l’attivazione. Se si ripete, apri la diagnostica per controllare l’output del proxy.`},provider_route_failed:{title:`Verifica della rotta del provider non riuscita`,guidance:`Specrails non ha potuto verificare la rotta del provider. Il provider resta inattivo; riprova dopo aver controllato la diagnostica.`},provider_config_conflict:{title:`La configurazione provider esistente è in conflitto con Headroom`,guidance:`Controlla la diagnostica prima di abilitare il routing a livello di sistema. Il routing gestito da Specrails resta reversibile.`},activation_partially_applied:{title:`L’attivazione è stata applicata solo in parte`,guidance:`Specrails ha tentato il rollback. Controlla la diagnostica e riprova il provider interessato.`},not_installed:{title:`Headroom non è installato`,guidance:`Installa prima Headroom, poi attiva Codex o Claude.`},uninstall_failed:{title:`Non è stato possibile disinstallare Headroom`,guidance:`Specrails ha disattivato il routing Headroom ma non ha potuto rimuovere lo strumento gestito. Apri la diagnostica e riprova.`},unknown:{title:`Operazione Headroom non riuscita`,guidance:`Riprova l’operazione. Se si ripete, apri la diagnostica e condividi i dettagli.`}}},projectWizard:{configureJira:`Configura Jira`,installSerena:`Installa Serena`,description:`Seleziona il progetto in cui configurare questo plugin locale al progetto.`,chooseProject:`Scegli progetto`,requiresClaudeProvider:`Richiede provider Claude`,selectProjectToContinue:`Seleziona un progetto per continuare.`,requiresSupportedProvider:`Richiede Claude o Codex`},serena:{loading:`Caricamento Serena…`,titleForProject:`Serena per {{name}}`,description:`Installa la configurazione MCP e lo stato del plugin localmente al progetto. Gli altri progetti non vengono modificati.`,status:`Stato: {{status}}`,files:`File`,prerequisites:`Prerequisiti`,provider:`Provider IA`},projectStatus:{installed:`installato`,deactivated:`disattivato`,"not-installed":`non installato`,orphan:`orfano`,degraded:`degradato`},diagnostics:{title:`Diagnostica Headroom`,description:`Stato tecnico dell’installazione Headroom gestita da Specrails e del proxy.`},jira:{loading:`Caricamento di Jira…`,titleForProject:`Jira per {{name}}`,configuredDescription:`Gestisci il progetto Jira, la mappatura degli stati, lo stato di scarto, la sincronizzazione e lo stato della connessione.`,loadFailed:`Impossibile caricare la configurazione Jira attuale: {{message}}`,notConfiguredDescription:`Collega questo progetto a Jira.`}},f={page:e,card:t,toggle:n,cachedNotice:r,update:i,conflict:a,orphan:o,installDialog:s,uninstallDialog:c,docs:l,jiraCard:u,plugins:d};export{r as cachedNotice,t as card,a as conflict,f as default,l as docs,s as installDialog,u as jiraCard,o as orphan,e as page,d as plugins,n as toggle,c as uninstallDialog,i as update};
@@ -1 +1 @@
1
- var e={title:`Jira`,subtitle:`Sincroniza las specs de este proyecto con un tablero de Jira`,connectCta:`Conectar con Jira`},t={step:`Paso {{current}} de {{total}}`,step1Title:`Conecta tu cuenta de Jira`,step2Title:`Elige un proyecto de Jira`,step3Title:`Mapea los estados (opcional)`,step4Title:`Revisa y conecta`,next:`Siguiente`,back:`Atrás`,cancel:`Cancelar`,connect:`Conectar`,connecting:`Conectando…`,later:`Hacerlo más adelante`},n={baseUrlLabel:`URL de Jira`,baseUrlPlaceholder:`https://tu-empresa.atlassian.net`,baseUrlHelp:`La URL de tu sitio Jira Cloud o servidor Data Center.`,emailLabel:`Email de la cuenta`,emailPlaceholder:`tu@empresa.com`,emailHelp:`Necesario para Jira Cloud — el email de tu cuenta de Atlassian.`,tokenLabel:`Token de API`,tokenHelp:`Créalo en id.atlassian.com → Seguridad → Tokens de API. Se guarda cifrado en este equipo y nunca sale de él.`,test:`Probar conexión`,testing:`Probando…`,testOk:`Conectado como {{name}}`,retest:`Volver a probar`},r={searchPlaceholder:`Buscar proyectos…`,manualLabel:`O introduce una clave de proyecto`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`No se encontraron proyectos`,loading:`Cargando proyectos…`},i={intro:`Los estados se emparejan automáticamente por categoría (Por hacer / En progreso / Hecho). Anula cualquier estado si tu flujo usa nombres personalizados.`,auto:`Automático (por categoría)`,todo:`Backlog / Por hacer`,inProgress:`En progreso`,onReview:`En revisión`,done:`Hecho`,cancelled:`Cancelado`,loading:`Cargando estados…`,loadFailed:`No se pudieron cargar los estados de Jira. Comprueba la conexión y vuelve a intentarlo.`,retry:`Reintentar`},a={site:`Sitio`,project:`Proyecto`,account:`Cuenta`,type:`Tipo`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Conectado a {{key}}`,enabledLabel:`Sincronización activada`,enabledHelp:`Cuando está activa, las specs se sincronizan con Jira y los resultados del rail actualizan los issues vinculados.`,pausedHelp:`La sincronización está pausada. Las specs siguen en el tablero pero ya no actualizan Jira.`,syncNow:`Sincronizar ahora`,syncing:`Sincronizando…`,syncedToast:`Sincronizados {{count}} issue(s) desde Jira`,disconnect:`Desconectar`,disconnectConfirm:`¿Desconectar este proyecto de Jira? Las specs existentes se quedan en el tablero; la sincronización se detiene.`,disconnectedToast:`Desconectado de Jira`},s={title:`Actualizaciones pendientes de Jira`,pending:`{{count}} pendientes`,dead:`{{count}} necesitan atención`,allSynced:`Todas las actualizaciones sincronizadas`,retry:`Reintentar`,deadHelp:`Comprueba el mapeo de estados de arriba y las transiciones permitidas para cada issue en Jira; después, reintenta. Las solicitudes de estado sustituidas por otras más recientes ya no necesitan atención.`,opTransition:`Actualización de estado`,opComment:`Comentario`,opCreate:`Crear issue`,issueFallback:`Issue de Jira {{id}}`,target:`Destino: {{status}}`,retrying:`Reintentando…`,loadFailed:`No se pudieron cargar las actualizaciones pendientes de Jira.`,opUpdate:`Edición del issue`,nonePending:`No hay actualizaciones de Jira pendientes`},c={title:`Jira desconectado`,body:`Tu token de Jira expiró o fue revocado. Reconecta para sincronizar {{count}} actualización(es) pendiente(s).`,reconnect:`Reconectar`},l={label:`Jira`,openInJira:`Abrir en Jira`},u={willCreate:`Se creará en Jira · {{key}}`},d={saveTitle:`Actualizar ticket de Jira`,saveBody:`Al guardar se actualizará el ticket de Jira {{key}} con estos cambios.`,saveConfirm:`Guardar y actualizar Jira`,detailsTitle:`Detalles de Jira`,developmentTitle:`Desarrollo`,dev:{pullRequests:`Pull requests`,branches:`Ramas`,commits:`Commits`},goToTicket:`Ir al ticket {{key}}`,epic:`Épica`},f={moveButton:`Mover a {{status}}`,title:`¿Mover la spec a {{status}}?`,body:`El ticket de Jira {{key}} de esta spec se moverá a «{{status}}» en lugar de borrarse. Añade un motivo opcional.`,commentLabel:`Motivo (opcional)`,commentPlaceholder:`¿Por qué mueves esta spec?`,confirm:`Mover a {{status}}`,moving:`Moviendo…`,movedToast:`{{key}} movido a {{status}}`,configLabel:`Al descartar, mover el ticket a`,configHelp:`Cuando descartas una spec vinculada a Jira, su ticket se mueve a este estado en lugar de borrarse.`,configNone:`Ninguno — borrar normalmente`,reviewLabel:`Descartar mueve a`},p={generic:`Algo salió mal`,testFirst:`Prueba la conexión primero`},m={queued:`Movimiento a «{{status}}» encolado — sincronizando con Jira`,failed:`No se pudo mover la spec en Jira`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
1
+ var e={title:`Jira`,subtitle:`Sincroniza las specs de este proyecto con un tablero de Jira`,connectCta:`Conectar con Jira`},t={step:`Paso {{current}} de {{total}}`,step1Title:`Conecta tu cuenta de Jira`,step2Title:`Elige un proyecto de Jira`,step3Title:`Mapea los estados (opcional)`,step4Title:`Revisa y conecta`,next:`Siguiente`,back:`Atrás`,cancel:`Cancelar`,connect:`Conectar`,connecting:`Conectando…`,later:`Hacerlo más adelante`},n={baseUrlLabel:`URL de Jira`,baseUrlPlaceholder:`https://tu-empresa.atlassian.net`,baseUrlHelp:`La URL de tu sitio Jira Cloud o servidor Data Center.`,emailLabel:`Email de la cuenta`,emailPlaceholder:`tu@empresa.com`,emailHelp:`Necesario para Jira Cloud — el email de tu cuenta de Atlassian.`,tokenLabel:`Token de API`,tokenHelp:`Créalo en id.atlassian.com → Seguridad → Tokens de API. Se guarda cifrado en este equipo y nunca sale de él.`,test:`Probar conexión`,testing:`Probando…`,testOk:`Conectado como {{name}}`,retest:`Volver a probar`},r={searchPlaceholder:`Buscar proyectos…`,manualLabel:`O introduce una clave de proyecto`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`No se encontraron proyectos`,loading:`Cargando proyectos…`,search:`Buscar`},i={intro:`Los estados se emparejan automáticamente por categoría (Por hacer / En progreso / Hecho). Anula cualquier estado si tu flujo usa nombres personalizados.`,auto:`Automático (por categoría)`,todo:`Backlog / Por hacer`,inProgress:`En progreso`,onReview:`En revisión`,done:`Hecho`,cancelled:`Cancelado`,loading:`Cargando estados…`,loadFailed:`No se pudieron cargar los estados de Jira. Comprueba la conexión y vuelve a intentarlo.`,retry:`Reintentar`},a={site:`Sitio`,project:`Proyecto`,account:`Cuenta`,type:`Tipo`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Conectado a {{key}}`,enabledLabel:`Sincronización activada`,enabledHelp:`Cuando está activa, las specs se sincronizan con Jira y los resultados del rail actualizan los issues vinculados.`,pausedHelp:`La sincronización está pausada. Las specs siguen en el tablero pero ya no actualizan Jira.`,syncNow:`Sincronizar ahora`,syncing:`Sincronizando…`,syncedToast:`Sincronizados {{count}} issue(s) desde Jira`,disconnect:`Desconectar`,disconnectConfirm:`¿Desconectar este proyecto de Jira? Las specs existentes se quedan en el tablero; la sincronización se detiene.`,disconnectedToast:`Desconectado de Jira`,disconnectConfirmTitle:`¿Desconectar de Jira?`},s={title:`Actualizaciones pendientes de Jira`,pending:`{{count}} pendientes`,dead:`{{count}} necesitan atención`,allSynced:`Todas las actualizaciones sincronizadas`,retry:`Reintentar`,deadHelp:`Comprueba el mapeo de estados de arriba y las transiciones permitidas para cada issue en Jira; después, reintenta. Las solicitudes de estado sustituidas por otras más recientes ya no necesitan atención.`,opTransition:`Actualización de estado`,opComment:`Comentario`,opCreate:`Crear issue`,issueFallback:`Issue de Jira {{id}}`,target:`Destino: {{status}}`,retrying:`Reintentando…`,loadFailed:`No se pudieron cargar las actualizaciones pendientes de Jira.`,opUpdate:`Edición del issue`,nonePending:`No hay actualizaciones de Jira pendientes`},c={title:`Jira desconectado`,body:`Tu token de Jira expiró o fue revocado. Reconecta para sincronizar {{count}} actualización(es) pendiente(s).`,reconnect:`Reconectar`},l={label:`Jira`,openInJira:`Abrir en Jira`},u={willCreate:`Se creará en Jira · {{key}}`},d={saveTitle:`Actualizar ticket de Jira`,saveBody:`Al guardar se actualizará el ticket de Jira {{key}} con estos cambios.`,saveConfirm:`Guardar y actualizar Jira`,detailsTitle:`Detalles de Jira`,developmentTitle:`Desarrollo`,dev:{pullRequests:`Pull requests`,branches:`Ramas`,commits:`Commits`},goToTicket:`Ir al ticket {{key}}`,epic:`Épica`},f={moveButton:`Mover a {{status}}`,title:`¿Mover la spec a {{status}}?`,body:`El ticket de Jira {{key}} de esta spec se moverá a «{{status}}» en lugar de borrarse. Añade un motivo opcional.`,commentLabel:`Motivo (opcional)`,commentPlaceholder:`¿Por qué mueves esta spec?`,confirm:`Mover a {{status}}`,moving:`Moviendo…`,movedToast:`{{key}} movido a {{status}}`,configLabel:`Al descartar, mover el ticket a`,configHelp:`Cuando descartas una spec vinculada a Jira, su ticket se mueve a este estado en lugar de borrarse.`,configNone:`Ninguno — borrar normalmente`,reviewLabel:`Descartar mueve a`},p={generic:`Algo salió mal`,testFirst:`Prueba la conexión primero`},m={queued:`Movimiento a «{{status}}» encolado — sincronizando con Jira`,failed:`No se pudo mover la spec en Jira`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
@@ -0,0 +1 @@
1
+ var e={title:`Jira`,subtitle:`Sincronizza le spec di questo progetto con una board Jira`,connectCta:`Connetti a Jira`},t={step:`Passo {{current}} di {{total}}`,step1Title:`Connetti il tuo account Jira`,step2Title:`Scegli un progetto Jira`,step3Title:`Mappa gli stati (facoltativo)`,step4Title:`Rivedi e connetti`,next:`Avanti`,back:`Indietro`,cancel:`Annulla`,connect:`Connetti`,connecting:`Connessione…`,later:`Fallo più tardi`},n={baseUrlLabel:`URL Jira`,baseUrlPlaceholder:`https://tua-azienda.atlassian.net`,baseUrlHelp:`L'URL del tuo sito Jira Cloud o server Data Center.`,emailLabel:`Email dell'account`,emailPlaceholder:`tu@azienda.com`,emailHelp:`Richiesta per Jira Cloud — l'email del tuo account Atlassian.`,tokenLabel:`Token API`,tokenHelp:`Creane uno su id.atlassian.com → Sicurezza → Token API. Viene memorizzato cifrato su questa macchina e non la lascia mai.`,test:`Prova connessione`,testing:`Verifica…`,testOk:`Connesso come {{name}}`,retest:`Riprova`},r={searchPlaceholder:`Cerca progetti…`,manualLabel:`Oppure inserisci una chiave progetto`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Nessun progetto trovato`,loading:`Caricamento progetti…`,search:`Cerca`},i={intro:`Gli stati vengono associati automaticamente per categoria (Da fare / In corso / Fatto). Sovrascrivi uno stato se il tuo workflow usa nomi personalizzati.`,auto:`Automatico (per categoria)`,todo:`Backlog / Da fare`,inProgress:`In corso`,onReview:`In revisione`,done:`Fatto`,cancelled:`Annullato`,loading:`Caricamento stati…`,loadFailed:`Impossibile caricare gli stati Jira. Controlla la connessione e riprova.`,retry:`Riprova`},a={site:`Sito`,project:`Progetto`,account:`Account`,type:`Tipo`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Connesso a {{key}}`,enabledLabel:`Sincronizzazione attiva`,enabledHelp:`Quando attiva, le spec si sincronizzano con Jira e gli esiti dei rail aggiornano i ticket collegati.`,pausedHelp:`La sincronizzazione è in pausa. Le spec restano sulla board ma non aggiornano più Jira.`,syncNow:`Sincronizza ora`,syncing:`Sincronizzazione…`,syncedToast:`{{count}} ticket sincronizzati da Jira`,disconnect:`Disconnetti`,disconnectConfirm:`Disconnettere questo progetto da Jira? Le spec esistenti restano sulla board; la sincronizzazione si ferma.`,disconnectedToast:`Disconnesso da Jira`,disconnectConfirmTitle:`Disconnettere da Jira?`},s={title:`Aggiornamenti Jira in sospeso`,pending:`{{count}} in sospeso`,dead:`{{count}} da verificare`,allSynced:`Tutti gli aggiornamenti sincronizzati`,retry:`Riprova`,deadHelp:`Controlla la mappatura degli stati qui sopra e le transizioni consentite per ogni issue Jira, poi riprova. Le richieste di stato sostituite da richieste più recenti non richiedono più attenzione.`,opTransition:`Aggiornamento stato`,opComment:`Commento`,opCreate:`Crea ticket`,issueFallback:`Issue Jira {{id}}`,target:`Destinazione: {{status}}`,retrying:`Nuovo tentativo…`,loadFailed:`Impossibile caricare gli aggiornamenti Jira in sospeso.`,opUpdate:`Modifica issue`,nonePending:`Nessun aggiornamento Jira in sospeso`},c={title:`Jira disconnesso`,body:`Il tuo token Jira è scaduto o è stato revocato. Riconnettiti per sincronizzare {{count}} aggiornamenti in sospeso.`,reconnect:`Riconnetti`},l={label:`Jira`,openInJira:`Apri in Jira`},u={willCreate:`Verrà creato in Jira · {{key}}`},d={saveTitle:`Aggiorna il ticket Jira`,saveBody:`Salvando, il ticket Jira {{key}} verrà aggiornato con queste modifiche.`,saveConfirm:`Salva e aggiorna Jira`,detailsTitle:`Dettagli Jira`,developmentTitle:`Sviluppo`,dev:{pullRequests:`Pull request`,branches:`Rami`,commits:`Commit`},goToTicket:`Vai al ticket {{key}}`,epic:`Epica`},f={moveButton:`Sposta in {{status}}`,title:`Spostare la spec in {{status}}?`,body:`Il ticket Jira {{key}} di questa spec verrà spostato in "{{status}}" invece di essere eliminato. Aggiungi un motivo facoltativo.`,commentLabel:`Motivo (facoltativo)`,commentPlaceholder:`Perché stai spostando questa spec?`,confirm:`Sposta in {{status}}`,moving:`Spostamento…`,movedToast:`{{key}} spostato in {{status}}`,configLabel:`Allo scarto, sposta il ticket in`,configHelp:`Quando scarti una spec collegata a Jira, il suo ticket viene spostato in questo stato invece di essere eliminato.`,configNone:`Nessuno — elimina normalmente`,reviewLabel:`Lo scarto sposta in`},p={generic:`Qualcosa è andato storto`,testFirst:`Prova prima la connessione`},m={queued:`Spostamento in "{{status}}" in coda — sincronizzazione con Jira`,failed:`Impossibile spostare la spec in Jira`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
@@ -0,0 +1 @@
1
+ var e={title:`Jira`,subtitle:`このプロジェクトのスペックを Jira ボードと同期します`,connectCta:`Jira に接続`},t={step:`ステップ {{current}} / {{total}}`,step1Title:`Jira アカウントに接続`,step2Title:`Jira プロジェクトを選択`,step3Title:`ステータスを対応付け(任意)`,step4Title:`確認して接続`,next:`次へ`,back:`戻る`,cancel:`キャンセル`,connect:`接続`,connecting:`接続中…`,later:`後で行う`},n={baseUrlLabel:`Jira の URL`,baseUrlPlaceholder:`https://your-company.atlassian.net`,baseUrlHelp:`Jira Cloud サイトまたは Data Center サーバーの URL。`,emailLabel:`アカウントのメール`,emailPlaceholder:`you@company.com`,emailHelp:`Jira Cloud では必須です — Atlassian アカウントのメールアドレス。`,tokenLabel:`API トークン`,tokenHelp:`id.atlassian.com → セキュリティ → API トークンで作成します。このマシンに暗号化して保存され、外部に出ることはありません。`,test:`接続をテスト`,testing:`テスト中…`,testOk:`{{name}} として接続しました`,retest:`再テスト`},r={searchPlaceholder:`プロジェクトを検索…`,manualLabel:`またはプロジェクトキーを入力`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`プロジェクトが見つかりません`,loading:`プロジェクトを読み込み中…`,search:`検索`},i={intro:`ステータスはカテゴリ(To Do / 進行中 / 完了)で自動的に対応付けられます。ワークフローが独自の名前を使う場合は上書きできます。`,auto:`自動(カテゴリ別)`,todo:`バックログ / To Do`,inProgress:`進行中`,onReview:`レビュー中`,done:`完了`,cancelled:`キャンセル`,loading:`ステータスを読み込み中…`,loadFailed:`Jiraのステータスを読み込めませんでした。接続を確認して再試行してください。`,retry:`再試行`},a={site:`サイト`,project:`プロジェクト`,account:`アカウント`,type:`種類`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`{{key}} に接続済み`,enabledLabel:`同期を有効化`,enabledHelp:`有効にすると、スペックが Jira と同期し、rail の結果がリンクされた課題を更新します。`,pausedHelp:`同期は一時停止中です。スペックはボードに残りますが、Jira は更新されなくなります。`,syncNow:`今すぐ同期`,syncing:`同期中…`,syncedToast:`Jira から {{count}} 件の課題を同期しました`,disconnect:`切断`,disconnectConfirm:`このプロジェクトを Jira から切断しますか?既存のスペックはボードに残り、同期は停止します。`,disconnectedToast:`Jira から切断しました`,disconnectConfirmTitle:`Jira との接続を解除しますか?`},s={title:`保留中の Jira 更新`,pending:`{{count}} 件保留中`,dead:`{{count}} 件は対応が必要`,allSynced:`すべての更新が同期されました`,retry:`再試行`,deadHelp:`上のステータスの対応付けと、各Jira課題で許可されている遷移を確認してから再試行してください。新しいリクエストに置き換えられた古いステータス変更は、対応不要になります。`,opTransition:`ステータス更新`,opComment:`コメント`,opCreate:`課題を作成`,issueFallback:`Jiraの課題 {{id}}`,target:`移行先: {{status}}`,retrying:`再試行中…`,loadFailed:`保留中のJira更新を読み込めませんでした。`,opUpdate:`課題の編集`,nonePending:`保留中のJira更新はありません`},c={title:`Jira が切断されました`,body:`Jira トークンが失効または取り消されました。再接続して保留中の {{count}} 件の更新を同期してください。`,reconnect:`再接続`},l={label:`Jira`,openInJira:`Jira で開く`},u={willCreate:`Jira に作成されます · {{key}}`},d={saveTitle:`Jira 課題を更新`,saveBody:`保存すると、Jira 課題 {{key}} がこの変更で更新されます。`,saveConfirm:`保存して Jira を更新`,detailsTitle:`Jira の詳細`,developmentTitle:`開発`,dev:{pullRequests:`プルリクエスト`,branches:`ブランチ`,commits:`コミット`},goToTicket:`チケット {{key}} を開く`,epic:`エピック`},f={moveButton:`{{status}} に移動`,title:`仕様を {{status}} に移動しますか?`,body:`この仕様の Jira 課題 {{key}} は削除されず、「{{status}}」に移動されます。任意で理由を追加できます。`,commentLabel:`理由(任意)`,commentPlaceholder:`この仕様を移動する理由は?`,confirm:`{{status}} に移動`,moving:`移動中…`,movedToast:`{{key}} を {{status}} に移動しました`,configLabel:`破棄時に課題を移動する先`,configHelp:`Jira と連携した仕様を破棄すると、その課題は削除されず、このステータスに移動されます。`,configNone:`なし — 通常どおり削除`,reviewLabel:`破棄時の移動先`},p={generic:`問題が発生しました`,testFirst:`先に接続をテストしてください`},m={queued:`「{{status}}」への移動をキューに追加 — Jira と同期中`,failed:`Jira でのスペック移動に失敗しました`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({addSpec:()=>f,authExpired:()=>u,badge:()=>d,creds:()=>i,default:()=>_,detail:()=>p,discard:()=>m,errors:()=>h,mapping:()=>o,moveToStatus:()=>g,outbox:()=>l,project:()=>a,review:()=>s,section:()=>n,status:()=>c,wizard:()=>r}),n={title:`Jira`,subtitle:`Sync this project's specs with a Jira board`,connectCta:`Connect to Jira`},r={step:`Step {{current}} of {{total}}`,step1Title:`Connect your Jira account`,step2Title:`Choose a Jira project`,step3Title:`Map statuses (optional)`,step4Title:`Review & connect`,next:`Next`,back:`Back`,cancel:`Cancel`,connect:`Connect`,connecting:`Connecting…`,later:`Do it later`},i={baseUrlLabel:`Jira URL`,baseUrlPlaceholder:`https://your-company.atlassian.net`,baseUrlHelp:`Your Jira Cloud site or Data Center server URL.`,emailLabel:`Account email`,emailPlaceholder:`you@company.com`,emailHelp:`Required for Jira Cloud — the email of your Atlassian account.`,tokenLabel:`API token`,tokenHelp:`Create one at id.atlassian.com → Security → API tokens. It is stored encrypted on this machine and never leaves it.`,test:`Test connection`,testing:`Testing…`,testOk:`Connected as {{name}}`,retest:`Re-test`},a={searchPlaceholder:`Search projects…`,manualLabel:`Or enter a project key`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`No projects found`,loading:`Loading projects…`,search:`Search`},o={intro:`Statuses are matched automatically by category (To Do / In Progress / Done). Override any state if your workflow uses custom names.`,auto:`Automatic (by category)`,todo:`Backlog / To Do`,inProgress:`In Progress`,onReview:`On Review`,done:`Done`,cancelled:`Cancelled`,loading:`Loading statuses…`,loadFailed:`Couldn't load Jira statuses. Check the connection and try again.`,retry:`Retry`},s={site:`Site`,project:`Project`,account:`Account`,type:`Type`,cloud:`Jira Cloud`,dc:`Jira Data Center`},c={connected:`Connected to {{key}}`,enabledLabel:`Sync enabled`,enabledHelp:`When on, specs sync with Jira and rail outcomes update the linked issues.`,pausedHelp:`Sync is paused. Specs stay on the board but no longer update Jira.`,syncNow:`Sync now`,syncing:`Syncing…`,syncedToast:`Synced {{count}} issue(s) from Jira`,disconnect:`Disconnect`,disconnectConfirm:`Disconnect this project from Jira? Existing specs stay on the board; sync stops.`,disconnectedToast:`Disconnected from Jira`,disconnectConfirmTitle:`Disconnect from Jira?`},l={title:`Pending Jira updates`,pending:`{{count}} pending`,dead:`{{count}} need attention`,allSynced:`All updates synced`,retry:`Retry`,deadHelp:`Check the status mapping above and the permitted transitions for each issue in Jira, then retry. Older status requests replaced by newer ones no longer need attention.`,opTransition:`Status update`,opComment:`Comment`,opCreate:`Create issue`,issueFallback:`Jira issue {{id}}`,target:`Target: {{status}}`,retrying:`Retrying…`,loadFailed:`Couldn't load pending Jira updates.`,opUpdate:`Issue update`,nonePending:`No pending Jira updates`},u={title:`Jira disconnected`,body:`Your Jira token expired or was revoked. Reconnect to sync {{count}} pending update(s).`,reconnect:`Reconnect`},d={label:`Jira`,openInJira:`Open in Jira`},f={willCreate:`Will be created in Jira · {{key}}`},p={saveTitle:`Update Jira ticket`,saveBody:`Saving will update Jira issue {{key}} with these changes.`,saveConfirm:`Save & update Jira`,detailsTitle:`Jira details`,developmentTitle:`Development`,dev:{pullRequests:`Pull requests`,branches:`Branches`,commits:`Commits`},goToTicket:`Go to Ticket {{key}}`,epic:`Epic`},m={moveButton:`Move to {{status}}`,title:`Move spec to {{status}}?`,body:`This spec's Jira issue {{key}} will be moved to "{{status}}" instead of being deleted. Add an optional reason for the move.`,commentLabel:`Reason (optional)`,commentPlaceholder:`Why are you moving this spec?`,confirm:`Move to {{status}}`,moving:`Moving…`,movedToast:`Moved {{key}} to {{status}}`,configLabel:`On discard, move issue to`,configHelp:`When you discard a Jira-backed spec, its issue is moved to this status instead of being deleted.`,configNone:`None — delete normally`,reviewLabel:`Discard moves to`},h={generic:`Something went wrong`,testFirst:`Test the connection first`},g={queued:`Move to "{{status}}" queued — syncing with Jira`,failed:`Failed to move the spec in Jira`},_={section:n,wizard:r,creds:i,project:a,mapping:o,review:s,status:c,outbox:l,authExpired:u,badge:d,addSpec:f,detail:p,discard:m,errors:h,moveToStatus:g};export{t};
@@ -0,0 +1 @@
1
+ var e={title:`Jira`,subtitle:`Synchronisez les specs de ce projet avec un tableau Jira`,connectCta:`Se connecter à Jira`},t={step:`Étape {{current}} sur {{total}}`,step1Title:`Connectez votre compte Jira`,step2Title:`Choisissez un projet Jira`,step3Title:`Associer les statuts (facultatif)`,step4Title:`Vérifier et connecter`,next:`Suivant`,back:`Retour`,cancel:`Annuler`,connect:`Connecter`,connecting:`Connexion…`,later:`Le faire plus tard`},n={baseUrlLabel:`URL Jira`,baseUrlPlaceholder:`https://votre-entreprise.atlassian.net`,baseUrlHelp:`L'URL de votre site Jira Cloud ou serveur Data Center.`,emailLabel:`E-mail du compte`,emailPlaceholder:`vous@entreprise.com`,emailHelp:`Requis pour Jira Cloud — l'e-mail de votre compte Atlassian.`,tokenLabel:`Jeton API`,tokenHelp:`Créez-en un sur id.atlassian.com → Sécurité → Jetons API. Il est stocké chiffré sur cette machine et n'en sort jamais.`,test:`Tester la connexion`,testing:`Test en cours…`,testOk:`Connecté en tant que {{name}}`,retest:`Retester`},r={searchPlaceholder:`Rechercher des projets…`,manualLabel:`Ou saisissez une clé de projet`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Aucun projet trouvé`,loading:`Chargement des projets…`,search:`Rechercher`},i={intro:`Les statuts sont associés automatiquement par catégorie (À faire / En cours / Terminé). Remplacez un état si votre workflow utilise des noms personnalisés.`,auto:`Automatique (par catégorie)`,todo:`Backlog / À faire`,inProgress:`En cours`,onReview:`En révision`,done:`Terminé`,cancelled:`Annulé`,loading:`Chargement des statuts…`,loadFailed:`Impossible de charger les statuts Jira. Vérifiez la connexion et réessayez.`,retry:`Réessayer`},a={site:`Site`,project:`Projet`,account:`Compte`,type:`Type`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Connecté à {{key}}`,enabledLabel:`Synchronisation activée`,enabledHelp:`Lorsqu'elle est activée, les specs se synchronisent avec Jira et les résultats des rails mettent à jour les tickets liés.`,pausedHelp:`La synchronisation est en pause. Les specs restent sur le tableau mais ne mettent plus Jira à jour.`,syncNow:`Synchroniser maintenant`,syncing:`Synchronisation…`,syncedToast:`{{count}} ticket(s) synchronisé(s) depuis Jira`,disconnect:`Déconnecter`,disconnectConfirm:`Déconnecter ce projet de Jira ? Les specs existantes restent sur le tableau ; la synchronisation s'arrête.`,disconnectedToast:`Déconnecté de Jira`,disconnectConfirmTitle:`Se déconnecter de Jira ?`},s={title:`Mises à jour Jira en attente`,pending:`{{count}} en attente`,dead:`{{count}} à vérifier`,allSynced:`Toutes les mises à jour sont synchronisées`,retry:`Réessayer`,deadHelp:`Vérifiez la correspondance des statuts ci-dessus et les transitions autorisées pour chaque ticket Jira, puis réessayez. Les demandes de statut remplacées par des demandes plus récentes ne nécessitent plus votre attention.`,opTransition:`Mise à jour du statut`,opComment:`Commentaire`,opCreate:`Créer un ticket`,issueFallback:`Ticket Jira {{id}}`,target:`Destination : {{status}}`,retrying:`Nouvelle tentative…`,loadFailed:`Impossible de charger les mises à jour Jira en attente.`,opUpdate:`Modification du ticket`,nonePending:`Aucune mise à jour Jira en attente`},c={title:`Jira déconnecté`,body:`Votre jeton Jira a expiré ou a été révoqué. Reconnectez-vous pour synchroniser {{count}} mise(s) à jour en attente.`,reconnect:`Se reconnecter`},l={label:`Jira`,openInJira:`Ouvrir dans Jira`},u={willCreate:`Sera créé dans Jira · {{key}}`},d={saveTitle:`Mettre à jour le ticket Jira`,saveBody:`L'enregistrement mettra à jour le ticket Jira {{key}} avec ces modifications.`,saveConfirm:`Enregistrer et mettre à jour Jira`,detailsTitle:`Détails Jira`,developmentTitle:`Développement`,dev:{pullRequests:`Pull requests`,branches:`Branches`,commits:`Commits`},goToTicket:`Aller au ticket {{key}}`,epic:`Épopée`},f={moveButton:`Déplacer vers {{status}}`,title:`Déplacer la spec vers {{status}} ?`,body:`Le ticket Jira {{key}} de cette spec sera déplacé vers « {{status}} » au lieu d'être supprimé. Ajoutez un motif facultatif.`,commentLabel:`Motif (facultatif)`,commentPlaceholder:`Pourquoi déplacez-vous cette spec ?`,confirm:`Déplacer vers {{status}}`,moving:`Déplacement…`,movedToast:`{{key}} déplacé vers {{status}}`,configLabel:`À l'abandon, déplacer le ticket vers`,configHelp:`Lorsque vous abandonnez une spec liée à Jira, son ticket est déplacé vers ce statut au lieu d'être supprimé.`,configNone:`Aucun — supprimer normalement`,reviewLabel:`L'abandon déplace vers`},p={generic:`Une erreur s'est produite`,testFirst:`Testez d'abord la connexion`},m={queued:`Déplacement vers « {{status}} » en file — synchronisation avec Jira`,failed:`Impossible de déplacer la spec dans Jira`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
@@ -0,0 +1 @@
1
+ var e={title:`Jira`,subtitle:`将此项目的规格与 Jira 看板同步`,connectCta:`连接到 Jira`},t={step:`第 {{current}} 步,共 {{total}} 步`,step1Title:`连接你的 Jira 账户`,step2Title:`选择一个 Jira 项目`,step3Title:`映射状态(可选)`,step4Title:`检查并连接`,next:`下一步`,back:`返回`,cancel:`取消`,connect:`连接`,connecting:`正在连接…`,later:`稍后再做`},n={baseUrlLabel:`Jira 网址`,baseUrlPlaceholder:`https://your-company.atlassian.net`,baseUrlHelp:`你的 Jira Cloud 站点或 Data Center 服务器网址。`,emailLabel:`账户邮箱`,emailPlaceholder:`you@company.com`,emailHelp:`Jira Cloud 必填——你的 Atlassian 账户邮箱。`,tokenLabel:`API 令牌`,tokenHelp:`在 id.atlassian.com → 安全 → API 令牌中创建。它会加密存储在本机,永不外泄。`,test:`测试连接`,testing:`测试中…`,testOk:`已连接为 {{name}}`,retest:`重新测试`},r={searchPlaceholder:`搜索项目…`,manualLabel:`或输入项目键`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`未找到项目`,loading:`正在加载项目…`,search:`搜索`},i={intro:`状态会按类别自动匹配(待办 / 进行中 / 完成)。如果你的工作流使用自定义名称,可覆盖任一状态。`,auto:`自动(按类别)`,todo:`待办 / To Do`,inProgress:`进行中`,onReview:`评审中`,done:`完成`,cancelled:`已取消`,loading:`正在加载状态…`,loadFailed:`无法加载 Jira 状态。请检查连接并重试。`,retry:`重试`},a={site:`站点`,project:`项目`,account:`账户`,type:`类型`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`已连接到 {{key}}`,enabledLabel:`已启用同步`,enabledHelp:`启用后,规格会与 Jira 同步,rail 的结果会更新关联的事务。`,pausedHelp:`同步已暂停。规格仍在看板上,但不再更新 Jira。`,syncNow:`立即同步`,syncing:`正在同步…`,syncedToast:`已从 Jira 同步 {{count}} 个事务`,disconnect:`断开连接`,disconnectConfirm:`要断开此项目与 Jira 的连接吗?现有规格仍保留在看板上;同步将停止。`,disconnectedToast:`已断开与 Jira 的连接`,disconnectConfirmTitle:`断开与 Jira 的连接?`},s={title:`待处理的 Jira 更新`,pending:`{{count}} 个待处理`,dead:`{{count}} 个需要处理`,allSynced:`所有更新已同步`,retry:`重试`,deadHelp:`请检查上方的状态映射以及每个 Jira 事项允许的状态转换,然后重试。已被较新请求替代的旧状态请求不再需要处理。`,opTransition:`状态更新`,opComment:`评论`,opCreate:`创建事务`,issueFallback:`Jira 事项 {{id}}`,target:`目标:{{status}}`,retrying:`正在重试…`,loadFailed:`无法加载待处理的 Jira 更新。`,opUpdate:`编辑事项`,nonePending:`没有待处理的 Jira 更新`},c={title:`Jira 已断开`,body:`你的 Jira 令牌已过期或被吊销。请重新连接以同步 {{count}} 个待处理更新。`,reconnect:`重新连接`},l={label:`Jira`,openInJira:`在 Jira 中打开`},u={willCreate:`将在 Jira 中创建 · {{key}}`},d={saveTitle:`更新 Jira 工单`,saveBody:`保存后将用这些更改更新 Jira 工单 {{key}}。`,saveConfirm:`保存并更新 Jira`,detailsTitle:`Jira 详情`,developmentTitle:`开发`,dev:{pullRequests:`拉取请求`,branches:`分支`,commits:`提交`},goToTicket:`前往工单 {{key}}`,epic:`史诗`},f={moveButton:`移动到 {{status}}`,title:`将规格移动到 {{status}}?`,body:`此规格的 Jira 工单 {{key}} 将被移动到“{{status}}”,而不是被删除。可选择填写原因。`,commentLabel:`原因(可选)`,commentPlaceholder:`为什么要移动此规格?`,confirm:`移动到 {{status}}`,moving:`正在移动…`,movedToast:`已将 {{key}} 移动到 {{status}}`,configLabel:`丢弃时将工单移动到`,configHelp:`当你丢弃一个关联 Jira 的规格时,其工单将被移动到此状态,而不是被删除。`,configNone:`无 — 正常删除`,reviewLabel:`丢弃时移动到`},p={generic:`出了点问题`,testFirst:`请先测试连接`},m={queued:`移动到"{{status}}"已排队 — 正在与 Jira 同步`,failed:`在 Jira 中移动该 spec 失败`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
@@ -0,0 +1 @@
1
+ var e={title:`Jira`,subtitle:`Sincronize as specs deste projeto com um quadro Jira`,connectCta:`Conectar ao Jira`},t={step:`Passo {{current}} de {{total}}`,step1Title:`Conecte a sua conta Jira`,step2Title:`Escolha um projeto Jira`,step3Title:`Mapear estados (opcional)`,step4Title:`Revisar e conectar`,next:`Seguinte`,back:`Voltar`,cancel:`Cancelar`,connect:`Conectar`,connecting:`A conectar…`,later:`Fazer mais tarde`},n={baseUrlLabel:`URL do Jira`,baseUrlPlaceholder:`https://sua-empresa.atlassian.net`,baseUrlHelp:`O URL do seu site Jira Cloud ou servidor Data Center.`,emailLabel:`E-mail da conta`,emailPlaceholder:`voce@empresa.com`,emailHelp:`Necessário para o Jira Cloud — o e-mail da sua conta Atlassian.`,tokenLabel:`Token de API`,tokenHelp:`Crie um em id.atlassian.com → Segurança → Tokens de API. É armazenado cifrado nesta máquina e nunca a abandona.`,test:`Testar ligação`,testing:`A testar…`,testOk:`Ligado como {{name}}`,retest:`Testar de novo`},r={searchPlaceholder:`Procurar projetos…`,manualLabel:`Ou introduza uma chave de projeto`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Nenhum projeto encontrado`,loading:`A carregar projetos…`,search:`Pesquisar`},i={intro:`Os estados são associados automaticamente por categoria (A fazer / Em curso / Concluído). Substitua um estado se o seu fluxo de trabalho usar nomes personalizados.`,auto:`Automático (por categoria)`,todo:`Backlog / A fazer`,inProgress:`Em curso`,onReview:`Em revisão`,done:`Concluído`,cancelled:`Cancelado`,loading:`A carregar estados…`,loadFailed:`Não foi possível carregar os estados do Jira. Verifique a ligação e tente novamente.`,retry:`Tentar novamente`},a={site:`Site`,project:`Projeto`,account:`Conta`,type:`Tipo`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Ligado a {{key}}`,enabledLabel:`Sincronização ativada`,enabledHelp:`Quando ativa, as specs sincronizam com o Jira e os resultados dos rails atualizam os tickets associados.`,pausedHelp:`A sincronização está em pausa. As specs permanecem no quadro mas já não atualizam o Jira.`,syncNow:`Sincronizar agora`,syncing:`A sincronizar…`,syncedToast:`{{count}} ticket(s) sincronizados do Jira`,disconnect:`Desligar`,disconnectConfirm:`Desligar este projeto do Jira? As specs existentes permanecem no quadro; a sincronização para.`,disconnectedToast:`Desligado do Jira`,disconnectConfirmTitle:`Desligar do Jira?`},s={title:`Atualizações Jira pendentes`,pending:`{{count}} pendentes`,dead:`{{count}} a precisar de atenção`,allSynced:`Todas as atualizações sincronizadas`,retry:`Tentar de novo`,deadHelp:`Verifique o mapeamento de estados acima e as transições permitidas para cada issue no Jira e tente novamente. Os pedidos de estado substituídos por pedidos mais recentes já não precisam de atenção.`,opTransition:`Atualização de estado`,opComment:`Comentário`,opCreate:`Criar ticket`,issueFallback:`Issue do Jira {{id}}`,target:`Destino: {{status}}`,retrying:`A tentar novamente…`,loadFailed:`Não foi possível carregar as atualizações pendentes do Jira.`,opUpdate:`Editar issue`,nonePending:`Não há atualizações pendentes do Jira`},c={title:`Jira desligado`,body:`O seu token Jira expirou ou foi revogado. Volte a ligar para sincronizar {{count}} atualizações pendentes.`,reconnect:`Voltar a ligar`},l={label:`Jira`,openInJira:`Abrir no Jira`},u={willCreate:`Será criado no Jira · {{key}}`},d={saveTitle:`Atualizar ticket do Jira`,saveBody:`Ao salvar, o ticket do Jira {{key}} será atualizado com estas alterações.`,saveConfirm:`Salvar e atualizar Jira`,detailsTitle:`Detalhes do Jira`,developmentTitle:`Desenvolvimento`,dev:{pullRequests:`Pull requests`,branches:`Ramos`,commits:`Commits`},goToTicket:`Ir para o ticket {{key}}`,epic:`Épico`},f={moveButton:`Mover para {{status}}`,title:`Mover a spec para {{status}}?`,body:`O ticket do Jira {{key}} desta spec será movido para "{{status}}" em vez de ser excluído. Adicione um motivo opcional.`,commentLabel:`Motivo (opcional)`,commentPlaceholder:`Por que está movendo esta spec?`,confirm:`Mover para {{status}}`,moving:`Movendo…`,movedToast:`{{key}} movido para {{status}}`,configLabel:`Ao descartar, mover o ticket para`,configHelp:`Quando você descarta uma spec vinculada ao Jira, o ticket é movido para este status em vez de ser excluído.`,configNone:`Nenhum — excluir normalmente`,reviewLabel:`Descartar move para`},p={generic:`Algo correu mal`,testFirst:`Teste primeiro a ligação`},m={queued:`Movimento para "{{status}}" em fila — a sincronizar com o Jira`,failed:`Não foi possível mover a spec no Jira`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
@@ -0,0 +1 @@
1
+ var e={title:`Jira`,subtitle:`Specs dieses Projekts mit einem Jira-Board synchronisieren`,connectCta:`Mit Jira verbinden`},t={step:`Schritt {{current}} von {{total}}`,step1Title:`Verbinde dein Jira-Konto`,step2Title:`Wähle ein Jira-Projekt`,step3Title:`Status zuordnen (optional)`,step4Title:`Prüfen und verbinden`,next:`Weiter`,back:`Zurück`,cancel:`Abbrechen`,connect:`Verbinden`,connecting:`Verbinde…`,later:`Später erledigen`},n={baseUrlLabel:`Jira-URL`,baseUrlPlaceholder:`https://dein-unternehmen.atlassian.net`,baseUrlHelp:`Die URL deiner Jira-Cloud-Site oder deines Data-Center-Servers.`,emailLabel:`Konto-E-Mail`,emailPlaceholder:`du@unternehmen.com`,emailHelp:`Für Jira Cloud erforderlich — die E-Mail deines Atlassian-Kontos.`,tokenLabel:`API-Token`,tokenHelp:`Erstelle einen unter id.atlassian.com → Sicherheit → API-Tokens. Er wird verschlüsselt auf diesem Gerät gespeichert und verlässt es nie.`,test:`Verbindung testen`,testing:`Teste…`,testOk:`Verbunden als {{name}}`,retest:`Erneut testen`},r={searchPlaceholder:`Projekte suchen…`,manualLabel:`Oder gib einen Projektschlüssel ein`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Keine Projekte gefunden`,loading:`Projekte werden geladen…`,search:`Suchen`},i={intro:`Status werden automatisch nach Kategorie zugeordnet (To Do / In Arbeit / Fertig). Überschreibe einen Status, wenn dein Workflow eigene Namen verwendet.`,auto:`Automatisch (nach Kategorie)`,todo:`Backlog / To Do`,inProgress:`In Arbeit`,onReview:`In Prüfung`,done:`Fertig`,cancelled:`Abgebrochen`,loading:`Status werden geladen…`,loadFailed:`Die Jira-Status konnten nicht geladen werden. Prüfe die Verbindung und versuche es erneut.`,retry:`Erneut versuchen`},a={site:`Site`,project:`Projekt`,account:`Konto`,type:`Typ`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Verbunden mit {{key}}`,enabledLabel:`Synchronisierung aktiviert`,enabledHelp:`Wenn aktiviert, werden Specs mit Jira synchronisiert und Rail-Ergebnisse aktualisieren die verknüpften Vorgänge.`,pausedHelp:`Die Synchronisierung ist pausiert. Specs bleiben auf dem Board, aktualisieren Jira aber nicht mehr.`,syncNow:`Jetzt synchronisieren`,syncing:`Synchronisiere…`,syncedToast:`{{count}} Vorgang/Vorgänge aus Jira synchronisiert`,disconnect:`Trennen`,disconnectConfirm:`Dieses Projekt von Jira trennen? Bestehende Specs bleiben auf dem Board; die Synchronisierung stoppt.`,disconnectedToast:`Von Jira getrennt`,disconnectConfirmTitle:`Von Jira trennen?`},s={title:`Ausstehende Jira-Updates`,pending:`{{count}} ausstehend`,dead:`{{count}} benötigen Aufmerksamkeit`,allSynced:`Alle Updates synchronisiert`,retry:`Erneut versuchen`,deadHelp:`Prüfe die Statuszuordnung oben und die zulässigen Übergänge für jeden Jira-Vorgang. Versuche es dann erneut. Durch neuere Anfragen ersetzte Statusanfragen benötigen keine Aufmerksamkeit mehr.`,opTransition:`Status-Update`,opComment:`Kommentar`,opCreate:`Vorgang erstellen`,issueFallback:`Jira-Vorgang {{id}}`,target:`Ziel: {{status}}`,retrying:`Neuer Versuch…`,loadFailed:`Ausstehende Jira-Aktualisierungen konnten nicht geladen werden.`,opUpdate:`Vorgang bearbeiten`,nonePending:`Keine ausstehenden Jira-Aktualisierungen`},c={title:`Jira getrennt`,body:`Dein Jira-Token ist abgelaufen oder wurde widerrufen. Verbinde dich erneut, um {{count}} ausstehende(s) Update(s) zu synchronisieren.`,reconnect:`Erneut verbinden`},l={label:`Jira`,openInJira:`In Jira öffnen`},u={willCreate:`Wird in Jira erstellt · {{key}}`},d={saveTitle:`Jira-Vorgang aktualisieren`,saveBody:`Beim Speichern wird der Jira-Vorgang {{key}} mit diesen Änderungen aktualisiert.`,saveConfirm:`Speichern und Jira aktualisieren`,detailsTitle:`Jira-Details`,developmentTitle:`Entwicklung`,dev:{pullRequests:`Pull Requests`,branches:`Branches`,commits:`Commits`},goToTicket:`Zum Ticket {{key}}`,epic:`Epic`},f={moveButton:`Verschieben nach {{status}}`,title:`Spec nach {{status}} verschieben?`,body:`Das Jira-Ticket {{key}} dieser Spec wird nach „{{status}}“ verschoben, statt gelöscht zu werden. Optional einen Grund angeben.`,commentLabel:`Grund (optional)`,commentPlaceholder:`Warum verschiebst du diese Spec?`,confirm:`Nach {{status}} verschieben`,moving:`Wird verschoben…`,movedToast:`{{key}} nach {{status}} verschoben`,configLabel:`Beim Verwerfen Ticket verschieben nach`,configHelp:`Wenn du eine mit Jira verknüpfte Spec verwirfst, wird ihr Ticket in diesen Status verschoben, statt gelöscht zu werden.`,configNone:`Keiner — normal löschen`,reviewLabel:`Verwerfen verschiebt nach`},p={generic:`Etwas ist schiefgelaufen`,testFirst:`Teste zuerst die Verbindung`},m={queued:`Verschieben nach „{{status}}" eingereiht — Synchronisierung mit Jira`,failed:`Spec konnte in Jira nicht verschoben werden`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
@@ -0,0 +1 @@
1
+ import{t as e}from"./api-DOGbyfTO.js";async function t(e){let t=await e.text(),n=t?JSON.parse(t):{};if(!e.ok)throw Error(n.error||`Request failed (${e.status})`);return n}function n(t){return t??e()}var r=e=>({method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),i={getConnection(e){return fetch(`${n(e)}/jira/connection`).then(e=>t(e))},test(e,i){return fetch(`${n(i)}/jira/test`,r(e)).then(e=>t(e))},discoverProjects(e,i){return fetch(`${n(i)}/jira/discover-projects`,r(e)).then(e=>t(e))},discoverStatuses(e,i){return fetch(`${n(i)}/jira/discover-statuses`,r(e)).then(e=>t(e))},connect(e,i){return fetch(`${n(i)}/jira/connect`,r(e)).then(e=>t(e))},setEnabled(e,r){return fetch(`${n(r)}/jira/connection`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:e})}).then(e=>t(e))},patchConnection(e,r){return fetch(`${n(r)}/jira/connection`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>t(e))},listStatuses(e){return fetch(`${n(e)}/jira/statuses`).then(e=>t(e))},moveSpecToStatus(e,i,a){return fetch(`${n(a)}/jira/specs/${e}/move-to-status`,r({status:i})).then(e=>t(e))},discardSpec(e,i,a){return fetch(`${n(a)}/jira/specs/${e}/discard`,r({comment:i})).then(e=>t(e))},getSpecDetails(e,r){return fetch(`${n(r)}/jira/specs/${e}/details`).then(e=>t(e))},disconnect(e){return fetch(`${n(e)}/jira/connection`,{method:`DELETE`}).then(e=>t(e))},syncNow(e){return fetch(`${n(e)}/jira/sync`,{method:`POST`}).then(e=>t(e))},resume(e){return fetch(`${n(e)}/jira/resume`,{method:`POST`}).then(e=>t(e))},listOutbox(e,r){let i=e?`?state=${e}`:``;return fetch(`${n(r)}/jira/outbox${i}`).then(e=>t(e))},retryOutbox(e,r){return fetch(`${n(r)}/jira/outbox/${e}/retry`,{method:`POST`}).then(e=>t(e))}};export{i as t};
@@ -0,0 +1 @@
1
+ var e={running:`En cours`,completed:`Terminé`,failed:`Échoué`,canceled:`Annulé`,queued:`En attente`,zombie:`Zombie`,skipped:`Ignoré`},t={running:`Le job est en cours d'exécution`,completed:`Le job s'est terminé avec succès`,failed:`Le job s'est terminé avec un code de sortie non nul`,canceled:`Le job a été annulé manuellement`,queued:`Le job attend dans la file`,queuedToRun:`Le job attend de s'exécuter`,zombie:`Le job a été arrêté automatiquement après une inactivité prolongée`,skipped:`Le job a été ignoré car un job parent du pipeline a échoué`},n={running:`en cours`,completed:`terminé`,failed:`échoué`,canceled:`annulé`,zombie_terminated:`zombie`,queued:`en attente`,skipped:`ignoré`},r={title:`Jobs`,subtitle:`Toutes les exécutions de ce projet, avec coût, durée et résultat.`,exportJobs:`Exporter les jobs`,proposalDeleted:`Proposition supprimée`,proposal:{title:`Proposition`,noContent:`Aucun contenu de proposition pour l'instant.`,githubIssue:`Issue GitHub :`,status:{input:`En attente de saisie`,exploring:`Exploration`,review:`Prête pour révision`,refining:`Affinage`,creatingIssue:`Création de l'issue`,created:`Créée`,cancelled:`Annulée`,unknown:`Statut inconnu : {{status}}`}},proposalDeleteFailed:`Impossible de supprimer la proposition. Réessayez.`},i={breadcrumbDashboard:`Tableau de bord`,breadcrumbJobs:`Jobs`,breadcrumbJob:`Job #{{id}}`,notFound:`Job introuvable`,notFoundDescription:`L'ID de job « {{id}} » n'existe pas`,backToDashboard:`Retour au tableau de bord`,startedAgo:`Démarré {{timeAgo}}`,queuedWaiting:`En file d'attente — en attente de démarrage`,exportDiagnostic:`Exporter le diagnostic`,exportDiagnosticAria:`Exporter le bundle de diagnostic`,exportDiagnosticTooltip:`Télécharger un ZIP avec la télémétrie, les logs et le résumé de ce job`,reExecute:`Relancer`,reExecuteTooltip:`Lancer un nouveau job avec la même commande`,cancelJob:`Annuler le job`,cancelJobTooltip:`Envoyer SIGTERM au processus en cours. Le job sera marqué comme annulé.`,cancelInteractive:`Abandonner`,finalizeJob:`Finaliser le job`,finalizing:`Finalisation…`,finalizeJobTooltip:`Terminer cette session interactive et agréger les tokens et le coût de chaque tour dans le total du job.`,interactive:{ready:`Prêt — envoyez un prompt`,working:`L'agent travaille…`,placeholder:`Envoyez un message au job en cours…`,send:`Envoyer`,liveTotals:`{{turns}} tours · {{cost}}`,autoHint:`Ce job suit son plan et se termine tout seul — les messages ne sont qu'un pilotage optionnel.`,wrapUp:`Terminer maintenant`,wrapUpTooltip:`Met fin à la session maintenant — le job se termine avec le travail produit jusqu'ici, les tokens et le coût de chaque tour étant intégrés au total.`,wrapUpStep:`Clore cette étape`,wrapUpStepTooltip:`Met fin à l'étape en cours maintenant — la boucle avance avec ce que l'étape a produit jusqu'ici.`,wrappingUp:`Finalisation…`,queued_one:`{{count}} message en attente`,queued_other:`{{count}} messages en attente`,waitingForStep:`Entre deux étapes — la boucle décide de la suite. Vous pourrez envoyer un message au démarrage de la prochaine étape IA.`,waitingForStepShort:`En attente de la prochaine étape…`,sendDisabledEmpty:`Écrivez d'abord un message`,sendDisabledWaiting:`Aucune session d'étape active pour le moment`},toast:{jobDeleted:`Job supprimé`,cancelSignalSent:`Signal d'annulation envoyé`,cancelSignalSentDescription:`Le job s'arrêtera au prochain point sûr`,failed:`Échec`,networkError:`Erreur réseau`,exportFailed:`Échec de l'export`,exportFailedHttp:`Échec de l'export (HTTP {{status}})`,jobRequeued:`Job remis en file`,spawnFailed:`Échec du lancement du job`,finalizeScheduled:`Finalisation du job interactif…`,finalizeFailed:`Échec de la finalisation du job`,sendFailed:`Échec de l'envoi du message`,wrapUpScheduled:`Finalisation du job…`,wrapUpStepScheduled:`Clôture de l'étape — la boucle avance avec ce qu'elle a produit`},actionFailed:`L’action n’a pas pu être effectuée`,breadcrumbAria:`Fil d’Ariane`},a={inProgress:`Job en cours`,completed:`Job terminé`,failed:`Job échoué`,duration:`Durée`,cost:`Coût`,turns:`Tours`,tokens:`Tokens`,filesCount_one:`{{count}} fichier`,filesCount_other:`{{count}} fichiers`,pipelineTotal:`Total du pipeline ({{count}} phases)`,totalCost:`Coût total`,totalTokens:`Total des tokens`,filesModified:`Fichiers modifiés`,zoneInProgress:`En cours`,zoneFinal:`Résumé final`,zoneFinalPending:`Résumé final — calculé à la fin`,pendingCaption:`Calculé à la fin`,pendingTooltip:`C'est le chiffre réel du fournisseur ; il apparaît à la fin du job.`,costTooltip:`Le coût réel est facturé par le fournisseur à la clôture du job.`,liveTooltip:`En direct`,explainer:`Le coût, les tours et les tokens sont les chiffres réels du fournisseur et apparaissent à la fin.`,notAvailable:`Non disponible`,steps_one:`{{count}} étape`,steps_other:`{{count}} étapes`,activity:{editing:`Édition de {{arg}}`,writing:`Écriture de {{arg}}`,reading:`Lecture de {{arg}}`,searching:`Recherche de « {{arg}} »`,running:`Exécution : {{arg}}`,thinking:`Réflexion…`,reasoning:`Raisonnement…`,working:`Travail en cours…`,connecting:`Connexion à l'agent…`,starting:`Démarrage…`,delegating:`Délégation à {{arg}}`},pipelinePartial:`≥ affiché — {{count}} phase(s) sans coût enregistré`,pipelinePartialTooltip:`Certaines phases se sont arrêtées avant de rapporter leur coût ; ce total est donc une borne inférieure.`,pipelineCostUnavailable:`La télémétrie de coût est indisponible pour toutes les phases.`,pipelineUsageUnavailable:`La télémétrie des tokens est indisponible pour toutes les phases.`,pipelineUsagePartial:`≥ affiché — phases sans télémétrie des tokens : {{count}}`,pipelineUsageTooltip:`Les fournisseurs peuvent terminer des phases sans exposer la télémétrie des tokens ; seule l'utilisation connue est incluse.`,costUnknownLocal:`Coût inconnu (moteur local)`,costUnknownLocalTooltip:`Coût inconnu (moteur local). Ajoutez des tarifs à la connexion pour voir une estimation.`},o={showMore:`+ {{count}} de plus`,showLess:`Voir moins`,deletedTicket:`#{{id}} (supprimé)`,deletedTooltip:`La spec n'existe plus`},s={notFound:`Job introuvable`,cancelConfirmTitle:`Annuler le job ?`,cancelConfirmDescription:`Le job s'arrêtera au prochain point sûr. Cette action est irréversible.`,keepRunning:`Laisser tourner`,cancelJob:`Annuler le job`,stopRun:`Arrêter l'exécution`,stopRunConfirmTitle:`Arrêter cette exécution ?`,stopRunConfirmDescription:`L'exécution de la boucle s'arrêtera à la prochaine limite d'étape. Cette action est irréversible.`,toast:{cancelSignalSent:`Signal d'annulation envoyé`,cancelSignalSentDescription:`Le job s'arrêtera au prochain point sûr`,stopSignalSent:`Signal d'arrêt envoyé`,stopSignalSentDescription:`L'exécution s'arrêtera à la prochaine limite d'étape`,cancelFailed:`Échec de l'annulation`,networkError:`Erreur réseau`},title:`Tâche {{kind}} · #{{id}}`,titleLoop:`Exécution de boucle · #{{id}}`,titleGeneric:`Tâche · #{{id}}`},c={title:`Comparaison de jobs`,jobN:`Job {{n}}`,loadFailed:`Impossible de charger la comparaison. Réessayez.`,duration:`Durée`,cost:`Coût`,tokensOut:`Tokens en sortie`,tokensIn:`Tokens en entrée`,cacheRead:`Lecture cache`,model:`Modèle`,phasesDone:`Phases terminées`,betterValueHint:`Les surlignages verts indiquent la meilleure valeur`,loading:`Chargement de la comparaison…`,description:`Durée, coût et consommation de tokens des deux exécutions côte à côte. Le vert indique la meilleure valeur.`},l={emptyTitle:`Aucun job pour l'instant`,emptyDescription:`Exécutez une commande ci-dessus pour voir l'historique de vos jobs ici`,loadFailed:`Échec du chargement des jobs`,filterAll:`Tous ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Date de début`,toDate:`Date de fin`,clear:`Effacer`,exitCompareMode:`Quitter le mode comparaison`,compareTwoJobs:`Comparer 2 jobs`,clearJobs:`Effacer les jobs`,selectTwoToCompare:`Sélectionnez 2 jobs à comparer`,selectOneMore:`Sélectionnez 1 job de plus`,readyToCompare:`Prêt — cliquez sur comparer`,compareAction:`Comparer →`,colStatus:`Statut`,colCommand:`Tâche`,colDuration:`Durée`,colTokens:`Tokens`,colCost:`Coût`,colStarted:`Démarré`,profileTooltip:`Profil : {{name}}`,pipelinePart:`Fait partie d'un pipeline`,pipelineDependsOn:`(dépend de l'étape précédente)`,deleteProposal:`Supprimer la proposition`,loadMore:`Charger plus ({{count}} restants)`,priority:{critical:`critique`,high:`haute`,normal:`normale`,low:`basse`},clearModal:{title:`Effacer les jobs`,jobsInHistory_one:`{{count}} job dans l'historique`,jobsInHistory_other:`{{count}} jobs dans l'historique`,clearAll_one:`Effacer {{count}} job`,clearAll_other:`Effacer les {{count}} jobs`,orByRange:`Ou effacer par plage de dates :`,fromPlaceholder:`Du`,toPlaceholder:`Au`,clearInRange_one:`Effacer {{count}} job dans la plage`,clearInRange_other:`Effacer {{count}} jobs dans la plage`,clearRange:`Effacer la plage`},deleteProposalConfirm:{title:`Supprimer la proposition ?`,description:`Cela supprimera définitivement 1 proposition. Cette action est irréversible.`},toast:{cleared_one:`{{count}} job effacé`,cleared_other:`{{count}} jobs effacés`,clearFailed:`Échec de l'effacement des jobs`,networkError:`Erreur réseau`},emptyCta:`Ouvrir le tableau des specs`,loading:`Chargement des jobs…`},u={none:`Aucun job actif`,noneHint:`Sélectionnez une commande ci-dessous pour démarrer un job`,exitCode:`exit {{code}}`,cancelTooltip:`Envoyer SIGTERM au processus claude en cours`,viewLogs:`Voir les logs`,toast:{cancelRequested:`Annulation du job demandée`,cancelRequestedDescription:`Envoi de SIGTERM au processus`,cancelFailed:`Échec de l'annulation du job`,networkError:`Erreur réseau lors de l'annulation du job`}},d={setup:`Préparation`,iteration:`Itération {{current}}/{{limit}}`,iterationBadge:`itér. {{count}}`,follow:`Suivi en direct`,resumeFollow:`Reprendre le suivi`,expandAll:`Tout développer`,collapseAll:`Tout réduire`,copyStep:`Copier l'étape`,copied:`Étape copiée dans le presse-papiers`,stepDetail:`Détails de l'étape`,stepDetailTemplate:`Modèle`,stepDetailCommand:`Commande`,copyCommand:`Copier`,interrupted:`Interrompue`,waiting:`En attente de la prochaine étape…`,stepMapAria:`Carte des étapes de la boucle`,stalled:`Bloquée`,stalledIdle_one:`Aucune sortie du fournisseur pendant {{count}} minute — l'app a arrêté cette tentative`,stalledIdle_other:`Aucune sortie du fournisseur pendant {{count}} minutes — l'app a arrêté cette tentative`,providerLimit:`Limite du fournisseur`,providerLimitHint:`Le fournisseur a répondu par un avis de limite d'utilisation ; l'app a arrêté l'exécution au lieu de boucler.`,paused:`En pause`,runtimeGraph:`Graphe d’exécution`,graphFullscreen:`Plein écran`,graphExitFullscreen:`Quitter le plein écran`,graphBack:`Retour`,graphOpenComponent:`Ouvrir le composant`,graphNoAttempts:`Aucune tentative enregistrée`,graphState:{running:`En cours`,paused:`En pause`,failed:`Échec`,stalled:`Bloqué`,interrupted:`Interrompu`,ok:`Réussi`,pending:`En attente`,unknown:`Inconnu`},repeatFromHere:`Reprendre à partir d’ici`,forkFailed:`Impossible de créer l’exécution liée`,forkPending:`Réessayez l’étape sélectionnée initialement pour terminer la bifurcation en attente.`,forkCreated:`Exécution liée créée. Ouvrez-la et reprenez au point sélectionné.`,openFork:`Ouvrir l’exécution liée`},f={loading:`Chargement des logs…`,empty:`Aucune sortie de log pour l'instant`,filterPlaceholder:`Filtrer les logs…`,copySuccess:`Log copié dans le presse-papiers`,copyFailed:`Échec de la copie du log`,retainedTail:`Les premières lignes du journal ont été omises de cette vue. La copie contient uniquement la vue conservée. Consultez Détails pour les preuves de vérification disponibles.`,lineCount:`{{filtered}} / {{total}} lignes`,jumpToBottom:`Aller en bas`,phaseLines_one:`{{count}} ligne`,phaseLines_other:`{{count}} lignes`,noMatchingLines:`Aucune ligne correspondante`,noOutput:`Aucune sortie`,completed:`Terminé`,turns_one:`{{count}} tour`,turns_other:`{{count}} tours`,copyAll:`Copier toutes les lignes du journal`},p={title:`Résultat de l’exécution`,execution:`Exécution`,implementation:`Implémentation`,validation:`Validation`,archive:`Archivage`,delivery:`Livraison`,counters:`Étapes : {{steps}} · Évaluations : {{evaluations}} · Tours de l’agent : {{turns}}`,unavailable:`Indisponible`,evidence:`Preuves, exceptions et durées des phases`,snapshot:`Enregistré à la fin : {{change}} · {{at}}`,acceptedBy:`Accepté par {{by}}`,required:`Obligatoire`,supplementary:`Complémentaire`,attempts:`Tentatives : {{count}}`,phaseCostUnavailable:`Le coût par phase Core est indisponible ; la consommation du fournisseur est attribuée aux étapes de la boucle.`,noCoreEvidence:`Preuves d’acceptation indisponibles. Une exécution réussie ne confirme pas à elle seule que la spec est terminée.`,status:{success:`Réussie`,failed:`Échouée`,blocked:`Bloquée`,stopped:`Arrêtée`,stalled:`Sans progression`,complete:`Terminée`,incomplete:`Incomplète`,verified:`Vérifiée`,"with-exceptions":`Vérifiée avec exceptions`,pending:`En attente`,"pending-host":`Livraison par l’hôte en attente`,done:`Terminé`,running:`En cours`,skipped:`Ignoré`,passed:`Réussi`,unavailable:`Indisponible`}},m={details:`Détails`,phaseActivity:`{{phase}} · {{activity}}`,liveReported:`Rapporté par le fournisseur jusqu'ici ; les chiffres définitifs arrivent à la fin du job.`,questionPending:`Répondre à la question`},h={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f,completion:p,runHeader:m};export{u as activeJob,c as comparison,p as completion,h as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,m as runHeader,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
@@ -0,0 +1 @@
1
+ var e={running:`Läuft`,completed:`Abgeschlossen`,failed:`Fehlgeschlagen`,canceled:`Abgebrochen`,queued:`In Warteschlange`,zombie:`Zombie`,skipped:`Übersprungen`},t={running:`Job wird gerade ausgeführt`,completed:`Job erfolgreich abgeschlossen`,failed:`Job wurde mit einem Exit-Code ungleich null beendet`,canceled:`Job wurde manuell abgebrochen`,queued:`Job wartet in der Warteschlange`,queuedToRun:`Job wartet auf Ausführung`,zombie:`Job wurde nach längerer Inaktivität automatisch beendet`,skipped:`Job wurde übersprungen, weil ein übergeordneter Job in der Pipeline fehlgeschlagen ist`},n={running:`läuft`,completed:`abgeschlossen`,failed:`fehlgeschlagen`,canceled:`abgebrochen`,zombie_terminated:`Zombie`,queued:`in Warteschlange`,skipped:`übersprungen`},r={title:`Jobs`,subtitle:`Jeder Lauf in diesem Projekt – mit Kosten, Dauer und Ergebnis.`,exportJobs:`Jobs exportieren`,proposalDeleted:`Vorschlag gelöscht`,proposal:{title:`Vorschlag`,noContent:`Noch kein Inhalt für den Vorschlag.`,githubIssue:`GitHub-Issue:`,status:{input:`Wartet auf Eingabe`,exploring:`Wird untersucht`,review:`Bereit zur Prüfung`,refining:`Wird verfeinert`,creatingIssue:`Issue wird erstellt`,created:`Erstellt`,cancelled:`Abgebrochen`,unknown:`Unbekannter Status: {{status}}`}},proposalDeleteFailed:`Der Vorschlag konnte nicht gelöscht werden. Versuche es erneut.`},i={breadcrumbDashboard:`Dashboard`,breadcrumbJobs:`Jobs`,breadcrumbJob:`Job #{{id}}`,notFound:`Job nicht gefunden`,notFoundDescription:`Die Job-ID „{{id}}“ existiert nicht`,backToDashboard:`Zurück zum Dashboard`,startedAgo:`Gestartet {{timeAgo}}`,queuedWaiting:`In Warteschlange – wartet auf Start`,exportDiagnostic:`Diagnose exportieren`,exportDiagnosticAria:`Diagnose-Bundle exportieren`,exportDiagnosticTooltip:`ZIP mit Telemetrie, Logs und Zusammenfassung für diesen Job herunterladen`,reExecute:`Erneut ausführen`,reExecuteTooltip:`Neuen Job mit demselben Befehl starten`,cancelJob:`Job abbrechen`,cancelJobTooltip:`SIGTERM an den laufenden Prozess senden. Der Job wird als abgebrochen markiert.`,cancelInteractive:`Verwerfen`,finalizeJob:`Job abschließen`,finalizing:`Wird abgeschlossen…`,finalizeJobTooltip:`Diese interaktive Sitzung beenden und Tokens sowie Kosten aller Turns in die Job-Gesamtsumme einrechnen.`,interactive:{ready:`Bereit – sende einen Prompt`,working:`Agent arbeitet…`,placeholder:`Sende eine Nachricht an den laufenden Job…`,send:`Senden`,liveTotals:`{{turns}} Turns · {{cost}}`,autoHint:`Dieser Job folgt seinem Plan und endet von selbst — Nachrichten sind optionale Steuerung.`,wrapUp:`Jetzt abschließen`,wrapUpTooltip:`Beendet die Session jetzt — der Job wird mit der bisher erzeugten Arbeit abgeschlossen, Tokens und Kosten jedes Turns fließen in die Summe ein.`,wrapUpStep:`Diesen Schritt abschließen`,wrapUpStepTooltip:`Beendet den aktuellen Schritt jetzt — der Loop geht mit dem weiter, was der Schritt bisher erzeugt hat.`,wrappingUp:`Wird abgeschlossen…`,queued_one:`{{count}} Nachricht in der Warteschlange`,queued_other:`{{count}} Nachrichten in der Warteschlange`,waitingForStep:`Zwischen den Schritten — der Loop entscheidet gerade, was als Nächstes läuft. Du kannst eine Nachricht senden, sobald der nächste KI-Schritt startet.`,waitingForStepShort:`Warten auf den nächsten Schritt…`,sendDisabledEmpty:`Schreibe zuerst eine Nachricht`,sendDisabledWaiting:`Gerade ist keine Schritt-Session aktiv`},toast:{jobDeleted:`Job gelöscht`,cancelSignalSent:`Abbruchsignal gesendet`,cancelSignalSentDescription:`Der Job stoppt am nächsten sicheren Punkt`,failed:`Fehlgeschlagen`,networkError:`Netzwerkfehler`,exportFailed:`Export fehlgeschlagen`,exportFailedHttp:`Export fehlgeschlagen (HTTP {{status}})`,jobRequeued:`Job erneut eingereiht`,spawnFailed:`Job konnte nicht gestartet werden`,finalizeScheduled:`Interaktiver Job wird abgeschlossen…`,finalizeFailed:`Job konnte nicht abgeschlossen werden`,sendFailed:`Nachricht konnte nicht gesendet werden`,wrapUpScheduled:`Job wird abgeschlossen…`,wrapUpStepScheduled:`Schritt wird abgeschlossen — der Loop geht mit dem Erzeugten weiter`},actionFailed:`Die Aktion konnte nicht abgeschlossen werden`,breadcrumbAria:`Brotkrümelnavigation`},a={inProgress:`Job läuft`,completed:`Job abgeschlossen`,failed:`Job fehlgeschlagen`,duration:`Dauer`,cost:`Kosten`,turns:`Turns`,tokens:`Tokens`,filesCount_one:`{{count}} Datei`,filesCount_other:`{{count}} Dateien`,pipelineTotal:`Pipeline gesamt ({{count}} Phasen)`,totalCost:`Gesamtkosten`,totalTokens:`Tokens gesamt`,filesModified:`Geänderte Dateien`,zoneInProgress:`Läuft`,zoneFinal:`Endabrechnung`,zoneFinalPending:`Endabrechnung — wird am Ende berechnet`,pendingCaption:`Wird am Ende berechnet`,pendingTooltip:`Dies ist der reale Wert des Anbieters; er erscheint, wenn der Job endet.`,costTooltip:`Die realen Kosten werden vom Anbieter beim Abschluss des Jobs berechnet.`,liveTooltip:`Live`,explainer:`Kosten, Runden und Tokens sind die realen Werte des Anbieters und erscheinen am Ende.`,notAvailable:`Nicht verfügbar`,steps_one:`{{count}} Schritt`,steps_other:`{{count}} Schritte`,activity:{editing:`Bearbeite {{arg}}`,writing:`Schreibe {{arg}}`,reading:`Lese {{arg}}`,searching:`Suche „{{arg}}“`,running:`Führe aus: {{arg}}`,thinking:`Denkt nach…`,reasoning:`Überlegt…`,working:`Arbeitet…`,connecting:`Verbinde mit dem Agenten…`,starting:`Startet…`,delegating:`Delegiere an {{arg}}`},pipelinePartial:`≥ angezeigt — {{count}} Phase(n) ohne erfasste Kosten`,pipelinePartialTooltip:`Einige Phasen wurden beendet, bevor ihre Kosten gemeldet wurden – dieser Gesamtwert ist eine Untergrenze.`,pipelineCostUnavailable:`Die Kostentelemetrie ist für alle Phasen nicht verfügbar.`,pipelineUsageUnavailable:`Die Token-Telemetrie ist für alle Phasen nicht verfügbar.`,pipelineUsagePartial:`≥ angezeigt — Phasen ohne Token-Telemetrie: {{count}}`,pipelineUsageTooltip:`Anbieter können Phasen abschließen, ohne Token-Telemetrie bereitzustellen; enthalten ist nur die bekannte Nutzung.`,costUnknownLocal:`Kosten unbekannt (lokale Engine)`,costUnknownLocalTooltip:`Kosten unbekannt (lokale Engine). Tarife in der Verbindung hinterlegen, um eine Schätzung zu sehen.`},o={showMore:`+ {{count}} weitere`,showLess:`Weniger anzeigen`,deletedTicket:`#{{id}} (gelöscht)`,deletedTooltip:`Spec existiert nicht mehr`},s={notFound:`Job nicht gefunden`,cancelConfirmTitle:`Job abbrechen?`,cancelConfirmDescription:`Der Job stoppt am nächsten sicheren Punkt. Diese Aktion kann nicht rückgängig gemacht werden.`,keepRunning:`Weiterlaufen lassen`,cancelJob:`Job abbrechen`,stopRun:`Lauf stoppen`,stopRunConfirmTitle:`Diesen Lauf stoppen?`,stopRunConfirmDescription:`Der Loop-Lauf stoppt an der nächsten Schrittgrenze. Diese Aktion kann nicht rückgängig gemacht werden.`,toast:{cancelSignalSent:`Abbruchsignal gesendet`,cancelSignalSentDescription:`Der Job stoppt am nächsten sicheren Punkt`,stopSignalSent:`Stoppsignal gesendet`,stopSignalSentDescription:`Der Lauf stoppt an der nächsten Schrittgrenze`,cancelFailed:`Abbrechen fehlgeschlagen`,networkError:`Netzwerkfehler`},title:`{{kind}}-Job · #{{id}}`,titleLoop:`Loop-Lauf · #{{id}}`,titleGeneric:`Job · #{{id}}`},c={title:`Job-Vergleich`,jobN:`Job {{n}}`,loadFailed:`Vergleich konnte nicht geladen werden. Versuche es erneut.`,duration:`Dauer`,cost:`Kosten`,tokensOut:`Ausgabe-Tokens`,tokensIn:`Eingabe-Tokens`,cacheRead:`Cache-Read`,model:`Modell`,phasesDone:`Abgeschlossene Phasen`,betterValueHint:`Grün hervorgehoben = besserer Wert`,loading:`Vergleich wird geladen…`,description:`Dauer, Kosten und Token-Verbrauch beider Läufe nebeneinander. Grün markiert den besseren Wert.`},l={emptyTitle:`Noch keine Jobs`,emptyDescription:`Führe oben einen Befehl aus, um hier deinen Job-Verlauf zu sehen`,loadFailed:`Jobs konnten nicht geladen werden`,filterAll:`Alle ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Von`,toDate:`Bis`,clear:`Zurücksetzen`,exitCompareMode:`Vergleichsmodus verlassen`,compareTwoJobs:`2 Jobs vergleichen`,clearJobs:`Jobs löschen`,selectTwoToCompare:`Wähle 2 Jobs zum Vergleichen`,selectOneMore:`Wähle 1 weiteren Job`,readyToCompare:`Bereit – auf Vergleichen klicken`,compareAction:`Vergleichen →`,colStatus:`Status`,colCommand:`Aufgabe`,colDuration:`Dauer`,colTokens:`Tokens`,colCost:`Kosten`,colStarted:`Gestartet`,profileTooltip:`Profil: {{name}}`,pipelinePart:`Teil einer Pipeline`,pipelineDependsOn:`(hängt vom vorherigen Schritt ab)`,deleteProposal:`Vorschlag löschen`,loadMore:`Mehr laden ({{count}} verbleibend)`,priority:{critical:`kritisch`,high:`hoch`,normal:`normal`,low:`niedrig`},clearModal:{title:`Jobs löschen`,jobsInHistory_one:`{{count}} Job im Verlauf`,jobsInHistory_other:`{{count}} Jobs im Verlauf`,clearAll_one:`{{count}} Job löschen`,clearAll_other:`Alle {{count}} Jobs löschen`,orByRange:`Oder nach Datumsbereich löschen:`,fromPlaceholder:`Von`,toPlaceholder:`Bis`,clearInRange_one:`{{count}} Job im Zeitraum löschen`,clearInRange_other:`{{count}} Jobs im Zeitraum löschen`,clearRange:`Zeitraum löschen`},deleteProposalConfirm:{title:`Vorschlag löschen?`,description:`Dadurch wird 1 Vorschlag dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.`},toast:{cleared_one:`{{count}} Job gelöscht`,cleared_other:`{{count}} Jobs gelöscht`,clearFailed:`Jobs konnten nicht gelöscht werden`,networkError:`Netzwerkfehler`},emptyCta:`Spec-Board öffnen`,loading:`Jobs werden geladen…`},u={none:`Kein aktiver Job`,noneHint:`Wähle unten einen Befehl, um einen Job zu starten`,exitCode:`exit {{code}}`,cancelTooltip:`SIGTERM an den laufenden claude-Prozess senden`,viewLogs:`Logs anzeigen`,toast:{cancelRequested:`Job-Abbruch angefordert`,cancelRequestedDescription:`SIGTERM wird an den Prozess gesendet`,cancelFailed:`Job konnte nicht abgebrochen werden`,networkError:`Netzwerkfehler beim Abbrechen des Jobs`}},d={setup:`Vorbereitung`,iteration:`Iteration {{current}}/{{limit}}`,iterationBadge:`Iter. {{count}}`,follow:`Folgt live`,resumeFollow:`Verfolgung fortsetzen`,expandAll:`Alle ausklappen`,collapseAll:`Alle einklappen`,copyStep:`Schritt kopieren`,copied:`Schritt in die Zwischenablage kopiert`,stepDetail:`Schrittdetails`,stepDetailTemplate:`Vorlage`,stepDetailCommand:`Befehl`,copyCommand:`Kopieren`,interrupted:`Unterbrochen`,waiting:`Warte auf den nächsten Schritt…`,stepMapAria:`Loop-Schrittübersicht`,stalled:`Hängt`,stalledIdle_one:`{{count}} Minute ohne Provider-Ausgabe – die App hat diesen Versuch beendet`,stalledIdle_other:`{{count}} Minuten ohne Provider-Ausgabe – die App hat diesen Versuch beendet`,providerLimit:`Anbieter-Limit`,providerLimitHint:`Der Anbieter antwortete mit einem Nutzungslimit-Hinweis; die App hat den Lauf gestoppt statt weiterzudrehen.`,paused:`Pausiert`,runtimeGraph:`Ausführungsgraph`,graphFullscreen:`Vollbild`,graphExitFullscreen:`Vollbild verlassen`,graphBack:`Zurück`,graphOpenComponent:`Komponente öffnen`,graphNoAttempts:`Keine aufgezeichneten Versuche`,graphState:{running:`Läuft`,paused:`Pausiert`,failed:`Fehlgeschlagen`,stalled:`Ohne Fortschritt`,interrupted:`Unterbrochen`,ok:`Erfolgreich`,pending:`Ausstehend`,unknown:`Unbekannt`},repeatFromHere:`Ab hier wiederholen`,forkFailed:`Verknüpfter Lauf konnte nicht erstellt werden`,forkPending:`Wiederholen Sie den ursprünglich ausgewählten Schritt, um die ausstehende Abzweigung abzuschließen.`,forkCreated:`Verknüpfter Lauf erstellt. Öffnen Sie ihn und setzen Sie am ausgewählten Prüfpunkt fort.`,openFork:`Verknüpften Lauf öffnen`},f={loading:`Logs werden geladen…`,empty:`Noch keine Log-Ausgabe`,filterPlaceholder:`Logs filtern…`,copySuccess:`Log in die Zwischenablage kopiert`,copyFailed:`Log konnte nicht kopiert werden`,retainedTail:`Frühere Protokollausgaben wurden in dieser Ansicht ausgelassen. Die Kopie enthält nur die beibehaltene Ansicht. Verfügbare Prüfnachweise finden Sie unter Details.`,lineCount:`{{filtered}} / {{total}} Zeilen`,jumpToBottom:`Zum Ende springen`,phaseLines_one:`{{count}} Zeile`,phaseLines_other:`{{count}} Zeilen`,noMatchingLines:`Keine passenden Zeilen`,noOutput:`Keine Ausgabe`,completed:`Abgeschlossen`,turns_one:`{{count}} Turn`,turns_other:`{{count}} Turns`,copyAll:`Alle Logzeilen kopieren`},p={title:`Ausführungsergebnis`,execution:`Ausführung`,implementation:`Implementierung`,validation:`Validierung`,archive:`Archivierung`,delivery:`Auslieferung`,counters:`Schritte: {{steps}} · Auswertungen: {{evaluations}} · Agentenrunden: {{turns}}`,unavailable:`Nicht verfügbar`,evidence:`Nachweise, Ausnahmen und Phasenzeiten`,snapshot:`Bei Abschluss erfasst: {{change}} · {{at}}`,acceptedBy:`Akzeptiert von {{by}}`,required:`Erforderlich`,supplementary:`Ergänzend`,attempts:`Versuche: {{count}}`,phaseCostUnavailable:`Kosten pro Core-Phase sind nicht verfügbar; der Anbieterverbrauch wird Schleifenschritten zugeordnet.`,noCoreEvidence:`Abnahmenachweise sind nicht verfügbar. Eine erfolgreiche Ausführung allein bestätigt keinen abgeschlossenen Vorgang.`,status:{success:`Erfolgreich`,failed:`Fehlgeschlagen`,blocked:`Blockiert`,stopped:`Gestoppt`,stalled:`Ohne Fortschritt`,complete:`Abgeschlossen`,incomplete:`Unvollständig`,verified:`Verifiziert`,"with-exceptions":`Mit Ausnahmen verifiziert`,pending:`Ausstehend`,"pending-host":`Auslieferung durch Host ausstehend`,done:`Abgeschlossen`,running:`Läuft`,skipped:`Übersprungen`,passed:`Bestanden`,unavailable:`Nicht verfügbar`}},m={details:`Details`,phaseActivity:`{{phase}} · {{activity}}`,liveReported:`Bisher vom Anbieter gemeldet; die endgültigen Zahlen kommen, wenn der Job endet.`,questionPending:`Frage beantworten`},h={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f,completion:p,runHeader:m};export{u as activeJob,c as comparison,p as completion,h as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,m as runHeader,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
@@ -0,0 +1 @@
1
+ var e={running:`Em execução`,completed:`Concluído`,failed:`Falhou`,canceled:`Cancelado`,queued:`Em fila`,zombie:`Zombie`,skipped:`Ignorado`},t={running:`O job está em execução`,completed:`O job foi concluído com sucesso`,failed:`O job terminou com um código de saída diferente de zero`,canceled:`O job foi cancelado manualmente`,queued:`O job está a aguardar na fila`,queuedToRun:`O job está a aguardar para ser executado`,zombie:`O job foi terminado automaticamente após inatividade prolongada`,skipped:`O job foi ignorado porque um job anterior do pipeline falhou`},n={running:`em execução`,completed:`concluído`,failed:`falhou`,canceled:`cancelado`,zombie_terminated:`zombie`,queued:`em fila`,skipped:`ignorado`},r={title:`Jobs`,subtitle:`Todas as execuções deste projeto, com custo, duração e resultado.`,exportJobs:`Exportar jobs`,proposalDeleted:`Proposta eliminada`,proposal:{title:`Proposta`,noContent:`Ainda não há conteúdo da proposta.`,githubIssue:`Issue do GitHub:`,status:{input:`A aguardar dados`,exploring:`A explorar`,review:`Pronta para revisão`,refining:`A refinar`,creatingIssue:`A criar issue`,created:`Criada`,cancelled:`Cancelada`,unknown:`Estado desconhecido: {{status}}`}},proposalDeleteFailed:`Não foi possível excluir a proposta. Tente novamente.`},i={breadcrumbDashboard:`Dashboard`,breadcrumbJobs:`Jobs`,breadcrumbJob:`Job #{{id}}`,notFound:`Job não encontrado`,notFoundDescription:`O ID de job "{{id}}" não existe`,backToDashboard:`Voltar ao Dashboard`,startedAgo:`Iniciado {{timeAgo}}`,queuedWaiting:`Em fila — a aguardar início`,exportDiagnostic:`Exportar diagnóstico`,exportDiagnosticAria:`Exportar pacote de diagnóstico`,exportDiagnosticTooltip:`Transferir um ZIP com telemetria, logs e resumo deste job`,reExecute:`Executar novamente`,reExecuteTooltip:`Lançar um novo job com o mesmo comando`,cancelJob:`Cancelar job`,cancelJobTooltip:`Enviar SIGTERM ao processo em execução. O job será marcado como cancelado.`,cancelInteractive:`Descartar`,finalizeJob:`Finalizar job`,finalizing:`A finalizar…`,finalizeJobTooltip:`Terminar esta sessão interativa e somar os tokens e o custo de cada turno ao total do job.`,interactive:{ready:`Pronto — envie um prompt`,working:`Agente a trabalhar…`,placeholder:`Envie uma mensagem ao job em execução…`,send:`Enviar`,liveTotals:`{{turns}} turnos · {{cost}}`,autoHint:`Este job segue o seu plano e termina sozinho — as mensagens são orientação opcional.`,wrapUp:`Concluir agora`,wrapUpTooltip:`Termina a sessão agora — o job conclui com o trabalho produzido até ao momento, com os tokens e o custo de cada turno somados ao total.`,wrapUpStep:`Fechar este passo`,wrapUpStepTooltip:`Termina o passo atual agora — o loop avança com o que o passo produziu até ao momento.`,wrappingUp:`A concluir…`,queued_one:`{{count}} mensagem em fila`,queued_other:`{{count}} mensagens em fila`,waitingForStep:`Entre passos — o loop está a decidir o que corre a seguir. Poderá enviar uma mensagem quando o próximo passo de IA começar.`,waitingForStepShort:`A aguardar o próximo passo…`,sendDisabledEmpty:`Escreva primeiro uma mensagem`,sendDisabledWaiting:`Não há nenhuma sessão de passo ativa neste momento`},toast:{jobDeleted:`Job eliminado`,cancelSignalSent:`Sinal de cancelamento enviado`,cancelSignalSentDescription:`O job vai parar no próximo ponto seguro`,failed:`Falhou`,networkError:`Erro de rede`,exportFailed:`Falha na exportação`,exportFailedHttp:`Falha na exportação (HTTP {{status}})`,jobRequeued:`Job colocado novamente na fila`,spawnFailed:`Falha ao lançar o job`,finalizeScheduled:`A finalizar o job interativo…`,finalizeFailed:`Falha ao finalizar o job`,sendFailed:`Falha ao enviar a mensagem`,wrapUpScheduled:`A concluir o job…`,wrapUpStepScheduled:`A fechar o passo — o loop avança com o que produziu`},actionFailed:`Não foi possível concluir a ação`,breadcrumbAria:`Trilha de navegação`},a={inProgress:`Job em curso`,completed:`Job concluído`,failed:`Job falhou`,duration:`Duração`,cost:`Custo`,turns:`Turnos`,tokens:`Tokens`,filesCount_one:`{{count}} ficheiro`,filesCount_other:`{{count}} ficheiros`,pipelineTotal:`Total do pipeline ({{count}} fases)`,totalCost:`Custo total`,totalTokens:`Total de tokens`,filesModified:`Ficheiros modificados`,zoneInProgress:`Em andamento`,zoneFinal:`Resumo final`,zoneFinalPending:`Resumo final — calculado ao terminar`,pendingCaption:`Calculado ao terminar`,pendingTooltip:`Este é o valor real do provedor; aparece ao terminar o job.`,costTooltip:`O custo real é cobrado pelo provedor ao encerrar o job.`,liveTooltip:`Ao vivo`,explainer:`Custo, turnos e tokens são os valores reais do provedor e aparecem ao terminar.`,notAvailable:`Indisponível`,steps_one:`{{count}} passo`,steps_other:`{{count}} passos`,activity:{editing:`Editando {{arg}}`,writing:`Escrevendo {{arg}}`,reading:`Lendo {{arg}}`,searching:`Buscando “{{arg}}”`,running:`Executando: {{arg}}`,thinking:`Pensando…`,reasoning:`Raciocinando…`,working:`Trabalhando…`,connecting:`Conectando ao agente…`,starting:`Iniciando…`,delegating:`Delegando a {{arg}}`},pipelinePartial:`≥ exibido — {{count}} fase(s) sem custo registrado`,pipelinePartialTooltip:`Algumas fases terminaram antes de reportar o custo, portanto este total é um limite inferior.`,pipelineCostUnavailable:`A telemetria de custo está indisponível em todas as fases.`,pipelineUsageUnavailable:`A telemetria de tokens está indisponível em todas as fases.`,pipelineUsagePartial:`≥ mostrado — fases sem telemetria de tokens: {{count}}`,pipelineUsageTooltip:`Os fornecedores podem concluir fases sem fornecer telemetria de tokens; apenas a utilização conhecida é incluída.`,costUnknownLocal:`Custo desconhecido (motor local)`,costUnknownLocalTooltip:`Custo desconhecido (motor local). Adicione tarifas à conexão para ver uma estimativa.`},o={showMore:`+ {{count}} mais`,showLess:`Mostrar menos`,deletedTicket:`#{{id}} (eliminado)`,deletedTooltip:`A spec já não existe`},s={notFound:`Job não encontrado`,cancelConfirmTitle:`Cancelar o job?`,cancelConfirmDescription:`O job vai parar no próximo ponto seguro. Esta ação não pode ser anulada.`,keepRunning:`Manter em execução`,cancelJob:`Cancelar job`,stopRun:`Parar execução`,stopRunConfirmTitle:`Parar esta execução?`,stopRunConfirmDescription:`A execução do loop será interrompida no próximo limite de etapa. Esta ação não pode ser desfeita.`,toast:{cancelSignalSent:`Sinal de cancelamento enviado`,cancelSignalSentDescription:`O job vai parar no próximo ponto seguro`,stopSignalSent:`Sinal de parada enviado`,stopSignalSentDescription:`A execução será interrompida no próximo limite de etapa`,cancelFailed:`Falha ao cancelar`,networkError:`Erro de rede`},title:`Tarefa {{kind}} · #{{id}}`,titleLoop:`Execução de loop · #{{id}}`,titleGeneric:`Tarefa · #{{id}}`},c={title:`Comparação de jobs`,jobN:`Job {{n}}`,loadFailed:`Não foi possível carregar a comparação. Tente novamente.`,duration:`Duração`,cost:`Custo`,tokensOut:`Tokens de saída`,tokensIn:`Tokens de entrada`,cacheRead:`Leitura de cache`,model:`Modelo`,phasesDone:`Fases concluídas`,betterValueHint:`Os destaques a verde indicam melhor valor`,loading:`Carregando comparação…`,description:`Duração, custo e uso de tokens das duas execuções lado a lado. O verde marca o melhor valor.`},l={emptyTitle:`Ainda não há jobs`,emptyDescription:`Execute um comando acima para ver aqui o seu histórico de jobs`,loadFailed:`Falha ao carregar os jobs`,filterAll:`Todos ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Data inicial`,toDate:`Data final`,clear:`Limpar`,exitCompareMode:`Sair do modo de comparação`,compareTwoJobs:`Comparar 2 jobs`,clearJobs:`Limpar jobs`,selectTwoToCompare:`Selecione 2 jobs para comparar`,selectOneMore:`Selecione mais 1 job`,readyToCompare:`Pronto — clique em comparar`,compareAction:`Comparar →`,colStatus:`Estado`,colCommand:`Tarefa`,colDuration:`Duração`,colTokens:`Tokens`,colCost:`Custo`,colStarted:`Início`,profileTooltip:`Perfil: {{name}}`,pipelinePart:`Parte de um pipeline`,pipelineDependsOn:`(depende do passo anterior)`,deleteProposal:`Eliminar proposta`,loadMore:`Carregar mais ({{count}} restantes)`,priority:{critical:`crítica`,high:`alta`,normal:`normal`,low:`baixa`},clearModal:{title:`Limpar jobs`,jobsInHistory_one:`{{count}} job no histórico`,jobsInHistory_other:`{{count}} jobs no histórico`,clearAll_one:`Limpar {{count}} job`,clearAll_other:`Limpar todos os {{count}} jobs`,orByRange:`Ou limpar por intervalo de datas:`,fromPlaceholder:`De`,toPlaceholder:`Até`,clearInRange_one:`Limpar {{count}} job no intervalo`,clearInRange_other:`Limpar {{count}} jobs no intervalo`,clearRange:`Limpar intervalo`},deleteProposalConfirm:{title:`Eliminar a proposta?`,description:`Isto vai eliminar permanentemente 1 proposta. Esta ação não pode ser anulada.`},toast:{cleared_one:`{{count}} job removido`,cleared_other:`{{count}} jobs removidos`,clearFailed:`Falha ao limpar os jobs`,networkError:`Erro de rede`},emptyCta:`Abrir o quadro de specs`,loading:`Carregando jobs…`},u={none:`Nenhum job ativo`,noneHint:`Selecione um comando abaixo para iniciar um job`,exitCode:`exit {{code}}`,cancelTooltip:`Enviar SIGTERM ao processo claude em execução`,viewLogs:`Ver logs`,toast:{cancelRequested:`Cancelamento do job pedido`,cancelRequestedDescription:`A enviar SIGTERM ao processo`,cancelFailed:`Falha ao cancelar o job`,networkError:`Erro de rede ao cancelar o job`}},d={setup:`Preparação`,iteration:`Iteração {{current}}/{{limit}}`,iterationBadge:`iter {{count}}`,follow:`A seguir em direto`,resumeFollow:`Retomar acompanhamento`,expandAll:`Expandir tudo`,collapseAll:`Recolher tudo`,copyStep:`Copiar passo`,copied:`Passo copiado para a área de transferência`,stepDetail:`Detalhes do passo`,stepDetailTemplate:`Modelo`,stepDetailCommand:`Comando`,copyCommand:`Copiar`,interrupted:`Interrompido`,waiting:`A aguardar o próximo passo...`,stepMapAria:`Mapa de passos do loop`,stalled:`Travado`,stalledIdle_one:`Sem saída do fornecedor durante {{count}} minuto — a app parou esta tentativa`,stalledIdle_other:`Sem saída do fornecedor durante {{count}} minutos — a app parou esta tentativa`,providerLimit:`Limite do fornecedor`,providerLimitHint:`O fornecedor respondeu com um aviso de limite de utilização, por isso a app parou a execução em vez de continuar a ciclar.`,paused:`Em pausa`,runtimeGraph:`Grafo de execução`,graphFullscreen:`Tela cheia`,graphExitFullscreen:`Sair da tela cheia`,graphBack:`Voltar`,graphOpenComponent:`Abrir componente`,graphNoAttempts:`Nenhuma tentativa registada`,graphState:{running:`Em execução`,paused:`Pausado`,failed:`Falhou`,stalled:`Sem progresso`,interrupted:`Interrompido`,ok:`Concluído`,pending:`Pendente`,unknown:`Desconhecido`},repeatFromHere:`Repetir a partir daqui`,forkFailed:`Não foi possível criar a execução vinculada`,forkPending:`Tente novamente a etapa selecionada originalmente para concluir a bifurcação pendente.`,forkCreated:`Execução vinculada criada. Abra-a e retome a partir do ponto selecionado.`,openFork:`Abrir execução vinculada`},f={loading:`A carregar logs...`,empty:`Ainda sem saída de log`,filterPlaceholder:`Filtrar logs...`,copySuccess:`Log copiado para a área de transferência`,copyFailed:`Falha ao copiar o log`,retainedTail:`As linhas anteriores do registro foram omitidas desta visualização. A cópia inclui apenas o conteúdo mantido. Consulte Detalhes para as evidências de verificação disponíveis.`,lineCount:`{{filtered}} / {{total}} linhas`,jumpToBottom:`Ir para o fim`,phaseLines_one:`{{count}} linha`,phaseLines_other:`{{count}} linhas`,noMatchingLines:`Nenhuma linha corresponde`,noOutput:`Sem saída`,completed:`Concluído`,turns_one:`{{count}} turno`,turns_other:`{{count}} turnos`,copyAll:`Copiar todas as linhas do log`},p={title:`Resultado da execução`,execution:`Execução`,implementation:`Implementação`,validation:`Validação`,archive:`Arquivo`,delivery:`Entrega`,counters:`Passos: {{steps}} · Avaliações: {{evaluations}} · Turnos do agente: {{turns}}`,unavailable:`Indisponível`,evidence:`Evidências, exceções e tempos por fase`,snapshot:`Registado ao concluir: {{change}} · {{at}}`,acceptedBy:`Aceite por {{by}}`,required:`Obrigatório`,supplementary:`Complementar`,attempts:`Tentativas: {{count}}`,phaseCostUnavailable:`O custo por fase do Core não está disponível; o consumo do fornecedor é atribuído aos passos do loop.`,noCoreEvidence:`Evidência de aceitação indisponível. O sucesso da execução, por si só, não confirma a conclusão da spec.`,status:{success:`Bem-sucedida`,failed:`Falhou`,blocked:`Bloqueada`,stopped:`Parada`,stalled:`Sem progresso`,complete:`Completa`,incomplete:`Incompleta`,verified:`Verificada`,"with-exceptions":`Verificada com exceções`,pending:`Pendente`,"pending-host":`Entrega pelo host pendente`,done:`Concluído`,running:`Em curso`,skipped:`Ignorado`,passed:`Aprovado`,unavailable:`Indisponível`}},m={details:`Detalhes`,phaseActivity:`{{phase}} · {{activity}}`,liveReported:`Reportado pelo provedor até agora; os números finais chegam quando o job termina.`,questionPending:`Responder à pergunta`},h={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f,completion:p,runHeader:m};export{u as activeJob,c as comparison,p as completion,h as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,m as runHeader,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
@@ -0,0 +1 @@
1
+ var e={running:`実行中`,completed:`完了`,failed:`失敗`,canceled:`キャンセル`,queued:`待機中`,zombie:`ゾンビ`,skipped:`スキップ`},t={running:`ジョブは実行中です`,completed:`ジョブは正常に完了しました`,failed:`ジョブは非ゼロの終了コードで終了しました`,canceled:`ジョブは手動でキャンセルされました`,queued:`ジョブはキュー内で待機しています`,queuedToRun:`ジョブは実行待ちです`,zombie:`長時間アクティビティがなかったため、ジョブは自動終了されました`,skipped:`パイプライン内の親ジョブが失敗したため、ジョブはスキップされました`},n={running:`実行中`,completed:`完了`,failed:`失敗`,canceled:`キャンセル`,zombie_terminated:`ゾンビ`,queued:`待機中`,skipped:`スキップ`},r={title:`ジョブ`,subtitle:`このプロジェクトのすべての実行を、コスト・所要時間・結果とともに表示します。`,exportJobs:`ジョブをエクスポート`,proposalDeleted:`提案を削除しました`,proposal:{title:`提案`,noContent:`提案の内容はまだありません。`,githubIssue:`GitHub イシュー:`,status:{input:`入力待ち`,exploring:`調査中`,review:`レビュー待ち`,refining:`改善中`,creatingIssue:`Issue を作成中`,created:`作成済み`,cancelled:`キャンセル済み`,unknown:`不明なステータス: {{status}}`}},proposalDeleteFailed:`提案を削除できませんでした。もう一度お試しください。`},i={breadcrumbDashboard:`ダッシュボード`,breadcrumbJobs:`ジョブ`,breadcrumbJob:`ジョブ #{{id}}`,notFound:`ジョブが見つかりません`,notFoundDescription:`ジョブ ID「{{id}}」は存在しません`,backToDashboard:`ダッシュボードに戻る`,startedAgo:`{{timeAgo}}に開始`,queuedWaiting:`キュー登録済み — 開始待ち`,exportDiagnostic:`診断をエクスポート`,exportDiagnosticAria:`診断バンドルをエクスポート`,exportDiagnosticTooltip:`このジョブのテレメトリ、ログ、サマリーを含む ZIP をダウンロード`,reExecute:`もう一度実行`,reExecuteTooltip:`同じコマンドで新しいジョブを起動`,cancelJob:`ジョブをキャンセル`,cancelJobTooltip:`実行中のプロセスに SIGTERM を送信します。ジョブはキャンセル済みとしてマークされます。`,cancelInteractive:`破棄`,finalizeJob:`ジョブをファイナライズ`,finalizing:`ファイナライズ中…`,finalizeJobTooltip:`このインタラクティブセッションを終了し、各ターンのトークンとコストをジョブの合計に集計します。`,interactive:{ready:`準備完了 — プロンプトを送信してください`,working:`エージェント作業中…`,placeholder:`実行中のジョブにメッセージを送信…`,send:`送信`,liveTotals:`{{turns}} ターン · {{cost}}`,autoHint:`このジョブは計画に沿って自動で完了します — メッセージは任意の指示です。`,wrapUp:`今すぐ切り上げる`,wrapUpTooltip:`セッションを今すぐ終了します — これまでの成果でジョブが完了し、各ターンのトークンとコストは合計に計上されます。`,wrapUpStep:`このステップを確定`,wrapUpStepTooltip:`現在のステップを今すぐ終了します — ループはこれまでの成果を持って次へ進みます。`,wrappingUp:`切り上げ中…`,queued_one:`{{count}} 件のキュー済みメッセージ`,queued_other:`{{count}} 件のキュー済みメッセージ`,waitingForStep:`ステップの合間です — ループが次に実行する内容を決めています。次の AI ステップが始まるとメッセージを送信できます。`,waitingForStepShort:`次のステップを待機中…`,sendDisabledEmpty:`先にメッセージを入力してください`,sendDisabledWaiting:`現在アクティブなステップセッションはありません`},toast:{jobDeleted:`ジョブを削除しました`,cancelSignalSent:`キャンセルシグナルを送信しました`,cancelSignalSentDescription:`ジョブは次の安全なポイントで停止します`,failed:`失敗しました`,networkError:`ネットワークエラー`,exportFailed:`エクスポートに失敗しました`,exportFailedHttp:`エクスポートに失敗しました (HTTP {{status}})`,jobRequeued:`ジョブを再キューしました`,spawnFailed:`ジョブの起動に失敗しました`,finalizeScheduled:`インタラクティブジョブをファイナライズ中…`,finalizeFailed:`ジョブのファイナライズに失敗しました`,sendFailed:`メッセージの送信に失敗しました`,wrapUpScheduled:`ジョブを切り上げ中…`,wrapUpStepScheduled:`ステップを確定中 — ループは産出済みの成果で先へ進みます`},actionFailed:`操作を完了できませんでした`,breadcrumbAria:`パンくずリスト`},a={inProgress:`ジョブ実行中`,completed:`ジョブ完了`,failed:`ジョブ失敗`,duration:`実行時間`,cost:`コスト`,turns:`ターン`,tokens:`トークン`,filesCount_one:`{{count}} ファイル`,filesCount_other:`{{count}} ファイル`,pipelineTotal:`パイプライン合計({{count}} フェーズ)`,totalCost:`合計コスト`,totalTokens:`合計トークン`,filesModified:`変更ファイル`,zoneInProgress:`進行中`,zoneFinal:`最終サマリー`,zoneFinalPending:`最終サマリー — 完了時に計算`,pendingCaption:`完了時に計算`,pendingTooltip:`これはプロバイダーの実際の数値です。ジョブ完了時に表示されます。`,costTooltip:`実際のコストはジョブ終了時にプロバイダーが請求します。`,liveTooltip:`ライブ`,explainer:`コスト・ターン・トークンはプロバイダーの実際の数値で、完了時に表示されます。`,notAvailable:`利用不可`,steps_one:`{{count}} ステップ`,steps_other:`{{count}} ステップ`,activity:{editing:`{{arg}} を編集中`,writing:`{{arg}} を書き込み中`,reading:`{{arg}} を読み込み中`,searching:`「{{arg}}」を検索中`,running:`実行中: {{arg}}`,thinking:`思考中…`,reasoning:`推論中…`,working:`作業中…`,connecting:`エージェントに接続中…`,starting:`起動中…`,delegating:`{{arg}} に委任中`},pipelinePartial:`≥ は部分値 — {{count}} 個のフェーズにコスト記録がありません`,pipelinePartialTooltip:`一部のフェーズはコストを報告する前に終了したため、この合計は下限値です。`,pipelineCostUnavailable:`すべてのフェーズでコストのテレメトリを利用できません。`,pipelineUsageUnavailable:`すべてのフェーズでトークンのテレメトリを利用できません。`,pipelineUsagePartial:`≥ 表示値 — {{count}} フェーズでトークンのテレメトリなし`,pipelineUsageTooltip:`プロバイダーはトークンのテレメトリを提供せずにフェーズを完了する場合があります。既知の使用量のみが含まれます。`,costUnknownLocal:`コスト不明(ローカルエンジン)`,costUnknownLocalTooltip:`コスト不明(ローカルエンジン)。接続に料金を追加すると概算が表示されます。`},o={showMore:`+ 他 {{count}} 件`,showLess:`折りたたむ`,deletedTicket:`#{{id}}(削除済み)`,deletedTooltip:`スペックはもう存在しません`},s={notFound:`ジョブが見つかりません`,cancelConfirmTitle:`ジョブをキャンセルしますか?`,cancelConfirmDescription:`ジョブは次の安全なポイントで停止します。この操作は元に戻せません。`,keepRunning:`実行を続ける`,cancelJob:`ジョブをキャンセル`,stopRun:`実行を停止`,stopRunConfirmTitle:`この実行を停止しますか?`,stopRunConfirmDescription:`ループ実行は次のステップ境界で停止します。この操作は取り消せません。`,toast:{cancelSignalSent:`キャンセルシグナルを送信しました`,cancelSignalSentDescription:`ジョブは次の安全なポイントで停止します`,stopSignalSent:`停止シグナルを送信しました`,stopSignalSentDescription:`実行は次のステップ境界で停止します`,cancelFailed:`キャンセルに失敗しました`,networkError:`ネットワークエラー`},title:`{{kind}} ジョブ · #{{id}}`,titleLoop:`ループ実行 · #{{id}}`,titleGeneric:`ジョブ · #{{id}}`},c={title:`ジョブ比較`,jobN:`ジョブ {{n}}`,loadFailed:`比較を読み込めませんでした。もう一度お試しください。`,duration:`実行時間`,cost:`コスト`,tokensOut:`出力トークン`,tokensIn:`入力トークン`,cacheRead:`キャッシュ読み取り`,model:`モデル`,phasesDone:`完了フェーズ`,betterValueHint:`緑のハイライトはより良い値を示します`,loading:`比較を読み込み中…`,description:`2 つの実行の所要時間・コスト・トークン使用量を並べて比較します。緑はより良い値を示します。`},l={emptyTitle:`ジョブはまだありません`,emptyDescription:`上でコマンドを実行すると、ここにジョブ履歴が表示されます`,loadFailed:`ジョブの読み込みに失敗しました`,filterAll:`すべて ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`開始日`,toDate:`終了日`,clear:`クリア`,exitCompareMode:`比較モードを終了`,compareTwoJobs:`ジョブを2件比較`,clearJobs:`ジョブをクリア`,selectTwoToCompare:`比較するジョブを2件選択`,selectOneMore:`あと1件選択してください`,readyToCompare:`準備完了 — 比較をクリック`,compareAction:`比較 →`,colStatus:`ステータス`,colCommand:`タスク`,colDuration:`実行時間`,colTokens:`トークン`,colCost:`コスト`,colStarted:`開始`,profileTooltip:`プロファイル: {{name}}`,pipelinePart:`パイプラインの一部`,pipelineDependsOn:`(前のステップに依存)`,deleteProposal:`提案を削除`,loadMore:`さらに読み込む(残り {{count}} 件)`,priority:{critical:`クリティカル`,high:`高`,normal:`通常`,low:`低`},clearModal:{title:`ジョブをクリア`,jobsInHistory_one:`履歴に {{count}} 件のジョブ`,jobsInHistory_other:`履歴に {{count}} 件のジョブ`,clearAll_one:`{{count}} 件のジョブをすべてクリア`,clearAll_other:`{{count}} 件のジョブをすべてクリア`,orByRange:`または日付範囲でクリア:`,fromPlaceholder:`開始`,toPlaceholder:`終了`,clearInRange_one:`範囲内の {{count}} 件のジョブをクリア`,clearInRange_other:`範囲内の {{count}} 件のジョブをクリア`,clearRange:`範囲をクリア`},deleteProposalConfirm:{title:`提案を削除しますか?`,description:`1件の提案が完全に削除されます。この操作は元に戻せません。`},toast:{cleared_one:`{{count}} 件のジョブをクリアしました`,cleared_other:`{{count}} 件のジョブをクリアしました`,clearFailed:`ジョブのクリアに失敗しました`,networkError:`ネットワークエラー`},emptyCta:`スペックボードを開く`,loading:`ジョブを読み込み中…`},u={none:`アクティブなジョブはありません`,noneHint:`下のコマンドを選択してジョブを開始`,exitCode:`exit {{code}}`,cancelTooltip:`実行中の claude プロセスに SIGTERM を送信`,viewLogs:`ログを表示`,toast:{cancelRequested:`ジョブのキャンセルをリクエストしました`,cancelRequestedDescription:`プロセスに SIGTERM を送信しています`,cancelFailed:`ジョブのキャンセルに失敗しました`,networkError:`ジョブのキャンセル中にネットワークエラーが発生しました`}},d={setup:`セットアップ`,iteration:`反復 {{current}}/{{limit}}`,iterationBadge:`反復 {{count}}`,follow:`ライブ追従中`,resumeFollow:`追従を再開`,expandAll:`すべて展開`,collapseAll:`すべて折りたたむ`,copyStep:`ステップをコピー`,copied:`ステップをクリップボードにコピーしました`,stepDetail:`ステップの詳細`,stepDetailTemplate:`テンプレート`,stepDetailCommand:`コマンド`,copyCommand:`コピー`,interrupted:`中断`,waiting:`次のステップを待機中...`,stepMapAria:`ループのステップマップ`,stalled:`停止`,stalledIdle_one:`{{count}} 分間プロバイダーの出力がなく、アプリがこの試行を停止しました`,stalledIdle_other:`{{count}} 分間プロバイダーの出力がなく、アプリがこの試行を停止しました`,providerLimit:`プロバイダー上限`,providerLimitHint:`プロバイダーが利用上限の通知を返したため、アプリはループを続けずに実行を停止しました。`,paused:`一時停止中`,runtimeGraph:`実行グラフ`,graphFullscreen:`全画面表示`,graphExitFullscreen:`全画面表示を終了`,graphBack:`戻る`,graphOpenComponent:`コンポーネントを開く`,graphNoAttempts:`記録された試行はありません`,graphState:{running:`実行中`,paused:`一時停止`,failed:`失敗`,stalled:`進行停止`,interrupted:`中断`,ok:`成功`,pending:`待機中`,unknown:`不明`},repeatFromHere:`ここから繰り返す`,forkFailed:`リンクされた実行を作成できませんでした`,forkPending:`保留中の分岐を完了するには、最初に選択したステップを再試行してください。`,forkCreated:`リンクされた実行を作成しました。開いて選択したチェックポイントから再開してください。`,openFork:`リンクされた実行を開く`},f={loading:`ログを読み込み中...`,empty:`ログ出力はまだありません`,filterPlaceholder:`ログをフィルター...`,copySuccess:`ログをクリップボードにコピーしました`,copyFailed:`ログのコピーに失敗しました`,retainedTail:`このビューでは以前のログ出力が省略されています。コピーには保持された内容のみが含まれます。利用可能な検証の証拠は「詳細」で確認してください。`,lineCount:`{{filtered}} / {{total}} 行`,jumpToBottom:`最下部へ移動`,phaseLines_one:`{{count}} 行`,phaseLines_other:`{{count}} 行`,noMatchingLines:`一致する行はありません`,noOutput:`出力なし`,completed:`完了`,turns_one:`{{count}} ターン`,turns_other:`{{count}} ターン`,copyAll:`すべてのログ行をコピー`},p={title:`実行結果`,execution:`実行`,implementation:`実装`,validation:`検証`,archive:`アーカイブ`,delivery:`引き渡し`,counters:`{{steps}} ステップ · {{evaluations}} 回の判定 · エージェント {{turns}} ターン`,unavailable:`利用不可`,evidence:`証拠、例外、フェーズの所要時間`,snapshot:`完了時の記録:{{change}} · {{at}}`,acceptedBy:`承認者:{{by}}`,required:`必須`,supplementary:`補足`,attempts:`{{count}} 回の試行`,phaseCostUnavailable:`Core のフェーズ別コストは利用できません。プロバイダー使用量はループのステップに割り当てられます。`,noCoreEvidence:`受け入れの証拠は利用できません。実行の成功だけではスペックの完了を確認できません。`,status:{success:`成功`,failed:`失敗`,blocked:`ブロック`,stopped:`停止`,stalled:`進展なし`,complete:`完了`,incomplete:`未完了`,verified:`検証済み`,"with-exceptions":`例外付きで検証済み`,pending:`保留`,"pending-host":`ホストの引き渡し待ち`,done:`完了`,running:`実行中`,skipped:`スキップ`,passed:`合格`,unavailable:`利用不可`}},m={details:`詳細`,phaseActivity:`{{phase}} · {{activity}}`,liveReported:`これまでにプロバイダーが報告した値です。最終的な数値はジョブ終了時に届きます。`,questionPending:`質問に回答`},h={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f,completion:p,runHeader:m};export{u as activeJob,c as comparison,p as completion,h as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,m as runHeader,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({activeJob:()=>f,comparison:()=>u,completion:()=>h,default:()=>_,detail:()=>o,logViewer:()=>m,loopExplorer:()=>p,modal:()=>l,page:()=>a,recent:()=>d,runHeader:()=>g,statusLabel:()=>n,statusName:()=>i,statusPanel:()=>s,statusTooltip:()=>r,ticketHeader:()=>c}),n={running:`Running`,completed:`Completed`,failed:`Failed`,canceled:`Canceled`,queued:`Queued`,zombie:`Zombie`,skipped:`Skipped`},r={running:`Job is actively executing`,completed:`Job completed successfully`,failed:`Job exited with a non-zero exit code`,canceled:`Job was manually canceled`,queued:`Job is waiting in the queue`,queuedToRun:`Job is waiting to run`,zombie:`Job was auto-terminated after prolonged inactivity`,skipped:`Job was skipped because a parent job in the pipeline failed`},i={running:`running`,completed:`completed`,failed:`failed`,canceled:`canceled`,zombie_terminated:`zombie`,queued:`queued`,skipped:`skipped`},a={title:`Jobs`,subtitle:`Every run on this project, with cost, duration and outcome.`,exportJobs:`Export Jobs`,proposalDeleted:`Proposal deleted`,proposal:{title:`Proposal`,noContent:`No proposal content yet.`,githubIssue:`GitHub Issue:`,status:{input:`Awaiting input`,exploring:`Exploring`,review:`Ready for review`,refining:`Refining`,creatingIssue:`Creating issue`,created:`Created`,cancelled:`Cancelled`,unknown:`Unknown status: {{status}}`}},proposalDeleteFailed:`Couldn't delete the proposal. Try again.`},o={breadcrumbDashboard:`Dashboard`,breadcrumbJobs:`Jobs`,breadcrumbJob:`Job #{{id}}`,notFound:`Job not found`,notFoundDescription:`The job ID "{{id}}" doesn't exist`,backToDashboard:`Back to Dashboard`,startedAgo:`Started {{timeAgo}}`,queuedWaiting:`Queued — waiting to start`,exportDiagnostic:`Export diagnostic`,exportDiagnosticAria:`Export diagnostic bundle`,exportDiagnosticTooltip:`Download ZIP with telemetry, logs, and summary for this job`,reExecute:`Run again`,reExecuteTooltip:`Spawn a new job with the same command`,cancelJob:`Cancel Job`,cancelJobTooltip:`Send SIGTERM to the running process. The job will be marked as canceled.`,cancelInteractive:`Discard`,finalizeJob:`Finalize Job`,finalizing:`Finalizing…`,finalizeJobTooltip:`End this interactive session and roll every turn's tokens and cost into the job total.`,interactive:{ready:`Ready — send a prompt`,working:`Agent working…`,placeholder:`Send a message to the running job…`,send:`Send`,liveTotals:`{{turns}} turns · {{cost}}`,autoHint:`This job follows its plan and finishes on its own — messages are optional steering.`,wrapUp:`Wrap up now`,wrapUpTooltip:`End the session now — the job completes with the work produced so far, every turn's tokens and cost rolled into the total.`,wrapUpStep:`Settle this step`,wrapUpStepTooltip:`End the current step now — the loop advances with what the step has produced so far.`,wrappingUp:`Wrapping up…`,queued_one:`{{count}} queued message`,queued_other:`{{count}} queued messages`,waitingForStep:`Between steps — the loop is deciding what runs next. You can send a message when the next AI step starts.`,waitingForStepShort:`Waiting for the next step…`,sendDisabledEmpty:`Type a message first`,sendDisabledWaiting:`No active step session right now`},toast:{jobDeleted:`Job deleted`,cancelSignalSent:`Cancel signal sent`,cancelSignalSentDescription:`Job will stop at the next safe point`,failed:`Failed`,networkError:`Network error`,exportFailed:`Export failed`,exportFailedHttp:`Export failed (HTTP {{status}})`,jobRequeued:`Job re-queued`,spawnFailed:`Failed to spawn job`,finalizeScheduled:`Finalizing interactive job…`,finalizeFailed:`Failed to finalize job`,sendFailed:`Failed to send message`,wrapUpScheduled:`Wrapping up the job…`,wrapUpStepScheduled:`Settling the step — the loop advances with what it produced`},actionFailed:`The action couldn’t be completed`,breadcrumbAria:`Breadcrumb`},s={inProgress:`Job in progress`,completed:`Job completed`,failed:`Job failed`,duration:`Duration`,cost:`Cost`,turns:`Turns`,tokens:`Tokens`,filesCount_one:`{{count}} file`,filesCount_other:`{{count}} files`,pipelineTotal:`Pipeline total ({{count}} phases)`,totalCost:`Total cost`,totalTokens:`Total tokens`,filesModified:`Files modified`,zoneInProgress:`In progress`,zoneFinal:`Final summary`,zoneFinalPending:`Final summary — calculated when finished`,pendingCaption:`Calculated when finished`,pendingTooltip:`This is the provider's real figure; it appears when the job finishes.`,costTooltip:`The real cost is billed by the provider when the job closes.`,liveTooltip:`Live`,explainer:`Cost, turns and tokens are the provider's real figures and appear when the job finishes.`,notAvailable:`Not available`,steps_one:`{{count}} step`,steps_other:`{{count}} steps`,activity:{editing:`Editing {{arg}}`,writing:`Writing {{arg}}`,reading:`Reading {{arg}}`,searching:`Searching “{{arg}}”`,running:`Running: {{arg}}`,thinking:`Thinking…`,reasoning:`Reasoning…`,working:`Working…`,connecting:`Connecting to the agent…`,starting:`Starting…`,delegating:`Delegating to {{arg}}`},pipelinePartial:`≥ shown — {{count}} phase(s) have no recorded cost yet`,pipelinePartialTooltip:`Some phases did not report cost, so this total is a lower bound.`,pipelineCostUnavailable:`Cost telemetry is unavailable for every phase.`,pipelineUsageUnavailable:`Token telemetry is unavailable for every phase.`,pipelineUsagePartial:`≥ shown — {{count}} phase(s) have no token telemetry`,pipelineUsageTooltip:`Providers may complete phases without exposing token telemetry; only known usage is included.`,costUnknownLocal:`Cost unknown (local engine)`,costUnknownLocalTooltip:`Cost unknown (local engine). Add rates to the connection to see an estimate.`},c={showMore:`+ {{count}} more`,showLess:`Show less`,deletedTicket:`#{{id}} (deleted)`,deletedTooltip:`Spec no longer exists`},l={notFound:`Job not found`,cancelConfirmTitle:`Cancel job?`,cancelConfirmDescription:`The job will stop at the next safe point. This action cannot be undone.`,keepRunning:`Keep running`,cancelJob:`Cancel job`,stopRun:`Stop run`,stopRunConfirmTitle:`Stop this run?`,stopRunConfirmDescription:`The loop run will stop at the next step boundary. This action cannot be undone.`,toast:{cancelSignalSent:`Cancel signal sent`,cancelSignalSentDescription:`Job will stop at the next safe point`,stopSignalSent:`Stop signal sent`,stopSignalSentDescription:`The run will stop at the next step boundary`,cancelFailed:`Failed to cancel`,networkError:`Network error`},title:`{{kind}} job · #{{id}}`,titleLoop:`Loop run · #{{id}}`,titleGeneric:`Job · #{{id}}`},u={title:`Job Comparison`,jobN:`Job {{n}}`,loadFailed:`Failed to load comparison. Try again.`,duration:`Duration`,cost:`Cost`,tokensOut:`Tokens out`,tokensIn:`Tokens in`,cacheRead:`Cache read`,model:`Model`,phasesDone:`Phases done`,betterValueHint:`Green highlights indicate better value`,loading:`Loading comparison…`,description:`Duration, cost and token usage of both runs side by side. Green marks the better value.`},d={emptyTitle:`No jobs yet`,emptyDescription:`Run a command above to see your job history here`,loadFailed:`Failed to load jobs`,filterAll:`All ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`From date`,toDate:`To date`,clear:`Clear`,exitCompareMode:`Exit compare mode`,compareTwoJobs:`Compare 2 jobs`,clearJobs:`Clear jobs`,selectTwoToCompare:`Select 2 jobs to compare`,selectOneMore:`Select 1 more job`,readyToCompare:`Ready — click compare`,compareAction:`Compare →`,colStatus:`Status`,colCommand:`Task`,colDuration:`Duration`,colTokens:`Tokens`,colCost:`Cost`,colStarted:`Started`,profileTooltip:`Profile: {{name}}`,pipelinePart:`Part of a pipeline`,pipelineDependsOn:`(depends on previous step)`,deleteProposal:`Delete proposal`,loadMore:`Load more ({{count}} remaining)`,priority:{critical:`critical`,high:`high`,normal:`normal`,low:`low`},clearModal:{title:`Clear Jobs`,jobsInHistory_one:`{{count}} job in history`,jobsInHistory_other:`{{count}} jobs in history`,clearAll_one:`Clear all {{count}} job`,clearAll_other:`Clear all {{count}} jobs`,orByRange:`Or clear by date range:`,fromPlaceholder:`From`,toPlaceholder:`To`,clearInRange_one:`Clear {{count}} job in range`,clearInRange_other:`Clear {{count}} jobs in range`,clearRange:`Clear range`},deleteProposalConfirm:{title:`Delete proposal?`,description:`This will permanently delete 1 proposal. This action cannot be undone.`},toast:{cleared_one:`Cleared {{count}} job`,cleared_other:`Cleared {{count}} jobs`,clearFailed:`Failed to clear jobs`,networkError:`Network error`},emptyCta:`Open specs board`,loading:`Loading jobs…`},f={none:`No active job`,noneHint:`Select a command below to start a job`,exitCode:`exit {{code}}`,cancelTooltip:`Send SIGTERM to the running claude process`,viewLogs:`View Logs`,toast:{cancelRequested:`Job cancellation requested`,cancelRequestedDescription:`Sending SIGTERM to the process`,cancelFailed:`Failed to cancel job`,networkError:`Network error canceling job`}},p={setup:`Setup`,iteration:`Iteration {{current}}/{{limit}}`,iterationBadge:`iter {{count}}`,follow:`Following live`,resumeFollow:`Resume follow`,expandAll:`Expand all`,collapseAll:`Collapse all`,copyStep:`Copy step`,copied:`Step copied to clipboard`,stepDetail:`Step details`,stepDetailTemplate:`Template`,stepDetailCommand:`Command`,copyCommand:`Copy`,interrupted:`Interrupted`,waiting:`Waiting for the next step…`,stepMapAria:`Loop step map`,stalled:`Stalled`,stalledIdle_one:`No provider output for {{count}} minute — the app stopped this attempt`,stalledIdle_other:`No provider output for {{count}} minutes — the app stopped this attempt`,providerLimit:`Provider limit`,providerLimitHint:`The provider answered with a usage or rate-limit notice, so the app stopped the run instead of cycling.`,paused:`Paused`,runtimeGraph:`Run graph`,graphFullscreen:`Full screen`,graphExitFullscreen:`Exit full screen`,graphBack:`Back`,graphOpenComponent:`Open component`,graphNoAttempts:`No recorded attempts`,graphState:{running:`Running`,paused:`Paused`,failed:`Failed`,stalled:`Stalled`,interrupted:`Interrupted`,ok:`Succeeded`,pending:`Pending`,unknown:`Unknown`},repeatFromHere:`Repeat from here`,forkFailed:`Could not create the linked run`,forkPending:`Retry the originally selected step to finish the pending fork.`,forkCreated:`Linked run created. Open it and resume from the selected checkpoint.`,openFork:`Open linked run`},m={loading:`Loading logs...`,empty:`No log output yet`,filterPlaceholder:`Filter logs...`,copySuccess:`Log copied to clipboard`,copyFailed:`Failed to copy log`,retainedTail:`Earlier log output omitted from this view. Copy includes only the retained view. Check Details for available verification evidence.`,lineCount:`{{filtered}} / {{total}} lines`,jumpToBottom:`Jump to bottom`,phaseLines_one:`{{count}} line`,phaseLines_other:`{{count}} lines`,noMatchingLines:`No matching lines`,noOutput:`No output`,completed:`Completed`,turns_one:`{{count}} turn`,turns_other:`{{count}} turns`,copyAll:`Copy all log lines`},h={title:`Run result`,execution:`Run`,implementation:`Implementation`,validation:`Validation`,archive:`Archive`,delivery:`Delivery`,counters:`Steps: {{steps}} · Decider evaluations: {{evaluations}} · Agent turns: {{turns}}`,unavailable:`Unavailable`,evidence:`Evidence, exceptions and phase timings`,snapshot:`Recorded at completion: {{change}} · {{at}}`,acceptedBy:`Accepted by {{by}}`,required:`Required`,supplementary:`Supplementary`,attempts:`Attempts: {{count}}`,phaseCostUnavailable:`Cost per Core phase is unavailable; provider usage is attributed to loop steps.`,noCoreEvidence:`Acceptance evidence unavailable. Run success alone does not confirm spec completion.`,status:{success:`Succeeded`,failed:`Failed`,blocked:`Blocked`,stopped:`Stopped`,stalled:`Stalled`,complete:`Complete`,incomplete:`Incomplete`,verified:`Verified`,"with-exceptions":`Verified with exceptions`,pending:`Pending`,"pending-host":`Pending host delivery`,done:`Done`,running:`Running`,skipped:`Skipped`,passed:`Passed`,unavailable:`Unavailable`}},g={details:`Details`,phaseActivity:`{{phase}} · {{activity}}`,liveReported:`Reported by the provider so far; the final figures arrive when the job finishes.`,questionPending:`Answer the question`},_={statusLabel:n,statusTooltip:r,statusName:i,page:a,detail:o,statusPanel:s,ticketHeader:c,modal:l,comparison:u,recent:d,activeJob:f,loopExplorer:p,logViewer:m,completion:h,runHeader:g};export{t};