specrails-desktop 2.64.2 → 2.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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={try:`サンプルプロジェクトで試す`,cost:`見て回るだけなら無料です。スペックを1つ実行すると約 {{usd}} かかります(≈ 見積もり)。`,local:`見て回るだけなら無料です。ローカルエンジンで動くため API 料金はかかりません。`,recordedOnly:`まだ使える AI プロバイダーがないため、代わりに録画された実行を見られます。`},t={title:`サンプルプロジェクトで Specrails を試す`,description:`小さなゲームと用意済みの3つのスペック。あなた自身のコードには触れずに、スペックがレールを通ってレビューパケットに届く様子を確認できます。`,gets:{repo:`専用の git リポジトリに入った小さな Web ゲーム({{name}})`,specs:`ボードに用意済みのスペック3件`,nothingRuns:`「実行」を押すまで何も実行されません`},folder:`フォルダ`,folderHint:`ホームフォルダ内に作成されます。既存のフォルダが上書きされることはありません。`,choose:`フォルダを選択`,chooseTitle:`サンプルの作成先を選択`,runLater:`後でスペックを実行するとき`,localAlso:`ローカルエンジン({{engine}})も利用できます。API 料金はかかりません。`,noProvider:`まだ使える AI プロバイダーがありません。サンプルを作成して、録画された実行を見ることはできます。`,notSignedIn:`AI プロバイダーはインストール済みですが、サインインしていません。サンプルを作成して、録画された実行を見ることはできます。`,create:`サンプルプロジェクトを作成`,creating:`作成中…`,errors:{path_exists:`そのフォルダは既に存在します。別のフォルダを選んでください。`,outside_home:`サンプルはホームフォルダ内に置く必要があります。`,generic:`サンプルプロジェクトを作成できませんでした。もう一度お試しください。`}},n={minutes:`約 {{low}}–{{high}} 分`,local:`API 料金なし:ローカルエンジンで実行 · {{time}}(見積もり)`,plan:`ご利用のプランを使用、追加料金なし · {{time}}(見積もり)`,metered:`≈ {{usd}} · {{time}}(見積もり)`,unknown:`従量課金の場合は ≈ {{usd}} · {{time}}(見積もり)`,using:`{{provider}} の {{model}} によるクイックモード`,cap:`{{cap}} を超える前に一時停止して確認します。`},r={label:`サンプルプロジェクトのガイド`,stepCount:`ステップ {{current}} / {{total}}`,dismiss:`ガイドを閉じる`,back:`戻る`,next:`次へ`,done:`完了`,ending:`これが一連の流れです。次は自分のコードで試してみましょう。`,addOwn:`自分のプロジェクトを追加`,remove:`サンプルを削除`},i={spec:{title:`スペック`,body:`この3つのスペックはあらかじめ書かれています。それぞれ、何を作るか、何をもって完了とするかが書かれています。`},rail:{title:`レール`,body:`レールは1つのスペックを完成した変更まで運びます。書いてテストし、あなたの確認のために止まります。最初のスペックを開始しましょう。`},review:{title:`レビュー`,body:`何も勝手にマージされません。実行が終わると、レビューパケットが変更内容を示し、承認か破棄を選べます。`}},a={noProvider:`このマシンでは使える AI プロバイダーがないため、実際の実行はまだできません。録画された実行で同じ流れを確認できます。`,notSignedIn:`AI プロバイダーにサインインしていないため、実際の実行はまだできません。録画された実行で同じ流れを確認できます。`,watchRecording:`録画された実行を見る`,recheck:`再確認`,recordingNote:`これは録画です。何も実行されず、課金もされません。`,started:`開始しました。約 {{low}}–{{high}} 分かかります。レールで進行を確認できます。`,engine:`実行先`,engineLocal:`ローカルエンジン({{provider}})`,engineCloud:`{{provider}}`,cta:`最初のスペックを実行`,launching:`開始中…`,preparing:`プロジェクトのワークスペースを準備しています。少しお待ちください。`,workspaceFailed:`ワークスペースを準備できませんでした。`,retryWorkspace:`再試行`,overBudget:`本日の予算に達しています。分析 ▸ 予算で引き上げてから、もう一度お試しください。`,failed:`実行を開始できませんでした。もう一度お試しください。`,failedDetail:`実行を開始できませんでした:{{detail}}`},o={label:`サンプルプロジェクト`,showGuide:`ガイドを表示`},s={title:`サンプルプロジェクトを削除しますか?`,description:`プロジェクト一覧から外れます。下で削除を選ばない限り、フォルダはディスクに残ります。`,deleteFolder:`サンプルのフォルダも削除する`,irreversible:`ファイルの削除は元に戻せません。`,confirm:`サンプルを削除`,confirmDelete:`削除してフォルダも消去`,failed:`サンプルプロジェクトを削除できませんでした。`},c={created:`サンプルプロジェクト「{{name}}」の準備ができました`,reopened:`サンプルプロジェクト「{{name}}」を開きました`,removed:`サンプルプロジェクトを削除しました`,removedDeleted:`サンプルプロジェクトとそのフォルダを削除しました`},l={title:`録画された実行`,description:`最初の実行が完了するとどう見えるか、スペックからレビューパケットまで。`,badge:`録画:何も実行されず、課金もされません`,logLabel:`録画された実行のログ`,lines:{setup:`環境のセットアップ`,specPhase:`フェーズ:変更を書く`,specDone:`「「もう一度」ボタンを追加」の変更を作成`,implementPhase:`フェーズ:実装`,implementDone:`ビルド成功 · 4 ファイルを変更`,testPhase:`フェーズ:テスト`,testDone:`5 件のテストに合格`,reviewPhase:`フェーズ:レビュー`,shipped:`レビュー準備完了 · 確信度 91/100`},packet:{title:`レビューパケット(録画)`,summary:`{{tests}} 件のテストに合格 · 確信度 {{confidence}}/100。変更はあなたの判断待ちです。`,decision:`実際の実行では、ここで判断します。変更を承認するか破棄するか。あなたの確認なしには何もマージされません。`},replay:`もう一度再生`,close:`閉じる`},u={replayTour:`ツアーをもう一度見る`},d={entry:e,dialog:t,cost:n,guide:r,steps:i,run:a,pill:o,remove:s,toast:c,recording:l,help:u};export{n as cost,d as default,t as dialog,e as entry,r as guide,u as help,o as pill,l as recording,s as remove,a as run,i as steps,c as toast};
@@ -0,0 +1 @@
1
+ function e(e=``){if(typeof window>`u`)return``;let t=window.location.protocol;return`__TAURI_INTERNALS__`in window||window.location.hostname===`tauri.localhost`||t!==`http:`&&t!==`https:`?e||`http://127.0.0.1:4200`:``}var t=e();export{t};
@@ -0,0 +1 @@
1
+ var e=`返回面板`,t=`仍在处理…`,n=`此项已处理完毕。`,r=`这次交付需要技术决策。请使用面板上的详细控件。`,i=`打开 pull request #{{number}}`,a=`未记录摘要。`,o={success:`你的更改已可供审阅`,successMany:`全部 {{count}} 项更改已可供审阅`,partial:`{{total}} 项更改中有 {{succeeded}} 项已就绪`,noChanges:`无需改动`,failed:`未能完成`,failedPartial:`仅完成了一部分`,generic:`审查已交付的更改`},s={pill:`AI 审阅者信心 {{overall}}/100`,unavailable:`没有审阅者评分`,tooltip:`AI 审阅者给自己的评分 — 不是独立检查。`},c={thisBuild:`本次花费 {{amount}}`,allVersions:`所有版本合计:{{amount}}`,baselinePart:`(其中基线 {{amount}})`},l={"create-pr":`接受并创建 pull request`,publish:`接受并送交审阅`,"merge-local":`接受到我的项目`,"mark-done":`接受 — 无需改动`,generic:`接受`,irreversibleWarning:`这会把更改直接写入你电脑上的项目。没有单独的审阅副本,且无法撤销。`,irreversibleConfirm:`是的,写入我的项目`},u={label:`要求修改`,comingSoon:`即将推出:用一句话描述要改什么。`,prompt:`你想改什么?`,placeholder:`例如:把登录按钮改成蓝色`,submit:`发送修改`,hint:`Quick SDD 在现有分支上应用更改并更新此次交付。`},d={label:`丢弃`,stackedNote:`此里程碑的后续轨道基于此交付构建。丢弃它会暂停里程碑链;后续轨道保留其工作。`,confirmTitle:`丢弃这次交付?`,confirmBody:`这次交付及其更改将被丢弃,且无法撤销。`},f={title:`接受前值得一看`},p={whatYouAsked:`你要求的`,whatIDid:`已完成的`,howItWasChecked:`如何检查的`,whatTheAgentDid:`智能体做了什么`},m={line:`{{files}} 个文件改动 · +{{added}} / −{{removed}} 行`,batchNotSplittable:`文件改动按整次交付统计,不按单个请求。`,testFiles_one:`涉及 {{count}} 个测试文件`,testFiles_other:`涉及 {{count}} 个测试文件`,noTestFiles:`未涉及测试文件`},h={"app-verified":{title:`由 Specrails 测量`,caveat:`取自实际改动的事实。`},"ai-reported":{title:`由 AI 报告`,caveat:`AI 自己的说法。Specrails 并未运行这些检查。`},"reviewer-score":{title:`AI 审阅者自评`,caveat:`AI 给自己的工作打分 — 有用,但不是独立审阅。`}},g={filesChanged:`{{files}} 个文件改动(+{{added}} / −{{removed}} 行)`,testFilesChanged:`改动了 {{count}} 个测试文件`,noTestFilesChanged:`没有改动测试文件。`,commitsRecorded:`工作已记录在 {{branches}} 个分支上`,verificationPassed:`AI 报告其检查通过({{count}})`,verificationFailed:`AI 报告其检查失败({{count}})`,noVerificationReported:`AI 未报告任何验证。`,verifyOutput:`AI 的验证输出:`,reviewerScore:`总分 {{overall}}/100`,reviewerAspect:`{{aspect}}:{{score}}/100`,reviewerScoreUnavailable:`未生成审阅者评分。`,evidenceUnavailable:`无证据`,hostCommandPassed:`运行时自行执行了 {{label}}:退出码 {{exitCode}}({{seconds}} 秒)`,hostCommandFailed:`运行时自行执行了 {{label}} 但失败:退出码 {{exitCode}}({{seconds}} 秒)`,acceptanceCheckPassed:`审查检查通过:{{name}}`,acceptanceCheckFailed:`审查检查失败:{{name}}`,reviewerSummary:`AI 审查者的总结:`,reviewerFinding:`AI 审查者指出:`},_={humanReviewRecommended:`AI 审阅者给出 {{overall}}/100,建议由人来查看。`,lowConfidence:`AI 审阅者仅给出 {{overall}}/100。`,reviewerFlag:`审阅者标记:`,noTestsForChangedCode:`{{files}} 个代码文件有改动但测试无改动。`},v={notFound:`找不到此审阅。`,loadFailed:`无法加载审阅。`,alreadyResolved:`已有人回应过。`,actionFailed:`该操作未成功。`,revisionStale:`此项刚在别处被处理 — 请重新加载查看状态。`,revisionFailed:`无法开始修改。你的文字已保留。`,revisionBudget:`每日预算已用尽,因此未开始此更改。你的文本已保留。`},y={title:`早前的版本({{count}})`,label:`版本 {{version}}`,current:`你正在查看这个`,originalBuild:`最初的成果。`},b={title:`这可能已超出你最初的要求`,advisory:`只是建议 — 你仍可以继续要求修改。`,costShare:`{{revisions}} 次修改已花费 {{revisionCost}} — 是最初 {{originalCost}} 的 {{share}}%。`,outOfScopeChurn:`{{total}} 个改动文件中有 {{files}} 个不属于最初的要求。`,revisionCount:`你已经要求了 {{revisions}} 轮修改。重写需求可能更快。`},x={title:`计划方案(来自 Spec)`,caveat:`这是需求中提出的方案,而不是 AI 实际所做的报告。上方的事实才是真正发生的变更。`},S={succeeded:`已实现`,failed:`未能完成`,noChanges:`无需更改`,notStarted:`未开始`,unknown:`结果未知`},C={title:`待解决的评审意见({{count}})`,caveat:`你要求修复的内容,在启动时冻结。以下结论是本次运行自己的报告,不是因为测试通过就断言一切正常。`,verdict:{resolved:`已解决`,partial:`部分解决`,blocked:`受阻`,unreported:`未报告`},files:`文件`,tests:`测试`,notes:`备注`,noReport:`本次运行未报告此意见。请查看下方的改动与证据。`,excluded:`已排除`,source:{pasted:`由你粘贴`,github:`来自 GitHub`}},w={title:`本次运行收到的规格附录({{count}})`,caveat:`附加在规格上并在启动时冻结的迭代说明。下方结论是运行自己的报告 — 并不因为测试通过就意味着一切正常。`,kind:{"change-request":`变更请求`,"review-feedback":`评审反馈`,clarification:`澄清`,constraint:`约束`},verdict:{applied:`已应用`,partial:`部分应用`,blocked:`受阻`,unreported:`未报告`},noReport:`运行未报告此附录。请查看下方的变更与证据。`},T={title:`推导`,coverage:`推导出的设计解释了 {{files}} 个已更改文件中的 {{explained}} 个`,change:`OpenSpec 变更`,requirements:`需求`,requirementsValue:`新增 {{added}} · 修改 {{modified}}`,confidence:`推导者置信度`,confidenceLevel:{high:`高`,medium:`中`,low:`低`},confidenceUnknown:`未报告`,caveat:`覆盖率由 Specrails 通过 git 测量;置信度是代理自己的评估。`,unexplainedTitle_one:`{{count}} 个已更改文件未被解释`,unexplainedTitle_other:`{{count}} 个已更改文件未被解释`,more_one:`……另外 {{count}} 个文件`,more_other:`……另外 {{count}} 个文件`,unavailable:`无法读取此 Flow 交付的推导报告。请直接查看差异。`,rewriteFailed:`无法根据推导出的变更重写 spec;它保留 Flow 草稿。OpenSpec 变更仍是技术记录。`},E={title:`需要关注的地方`,caveat:`AI 评审者给出的参考摘要:说明人工应优先查看的位置。它不是验证结果,也不会阻止任何决定。`,severity:{high:`高`,medium:`中`,low:`低`},area:{data:`数据`,security:`安全`,api:`API`,ux:`用户体验`,performance:`性能`,ops:`运维`,other:`其他`},sections:{risks:`风险`,behaviourChanges:`行为变化`,invariantsTouched:`涉及的不变量`,untested:`未测试的路径`,humanChecks:`人工检查`,divergences:`与规范的偏差`},userVisible:`用户可见`,invariantStatus:{kept:`保持`,changed:`已改变`,"at-risk":`有风险`},diagnostic:`评审摘要的部分内容无法使用:`,dropped_one:`{{count}} 条摘要条目格式不符,已跳过。`,dropped_other:`{{count}} 条摘要条目格式不符,已跳过。`,topRisk:`首要风险`,moreRisks_one:`另有 {{count}} 项`,moreRisks_other:`另有 {{count}} 项`},D={total_one:`{{count}} 项操作`,total_other:`{{count}} 项操作`,countsLabel:`按类型记录的智能体操作`,kinds:{read:`读取`,write:`写入`,exec:`命令`,mcp:`MCP 调用`,network:`网络请求`},caveat:`根据智能体自身的输出流记录:读取的完整程度取决于各提供方的上报。从不保存文件内容或环境变量值。`,run:`运行 {{id}}`,download:`{{format}}`,downloadFailed:`无法下载智能体操作记录`},O={title:`已证明的需求 {{demonstrated}}/{{total}}`,touched:`本次变更涉及:{{demonstrated}}/{{total}} 已证明`,caveat:`由 Specrails 测量:当带有需求 id 标签的测试在通过的验证中运行时,该需求计为已证明。仅供参考,不改变评审结果。`,caveatNoReceipt:`此追踪的一部分没有验证回执支撑,因此这些需求暂时不能计为已证明。`,undemonstratedTitle_other:`{{count}} 项需求未证明`,demonstratedTitle_other:`{{count}} 项需求已证明`,reason:{"no-test":`没有带标签的测试`,"not-executed":`带标签的测试未运行`,failed:`带标签的测试失败`},touchedBadge:`在此变更`,untagged_other:`{{count}} 个测试标签未匹配任何需求({{tags}}):可能是笔误或需求已重命名。`,showAll_other:`再显示 {{count}} 项`,showLess:`收起`,undemonstratedTitle_one:`{{count}} 项需求未证明`,demonstratedTitle_one:`{{count}} 项需求已证明`,untagged_one:`{{count}} 个测试标签未匹配任何需求({{tags}}):可能是笔误或需求已重命名。`,showAll_one:`再显示 {{count}} 项`},k={title:`已为本次工作涉及的代码创建规格`,status:{planned:`已规划基线:{{requirements}} 项现状需求,{{tests}} 个特征测试`,passed:`基线已在未修改的代码上得到证明:{{requirements}} 项现状需求,{{tests}} 个特征测试`,failed:`基线受阻:特征测试在未修改的代码上未通过,因此未编辑该模块`,violated:`基线受阻:基线步骤修改了测试以外的代码,因此运行已停止`,"not-needed":`无需基线:现有规格已覆盖本次变更涉及的代码`},module:`已描述的模块:`,more_other:`以及另外 {{count}} 个文件`,spec:`现状规格:`,capability:`{{capability}}({{demonstrated}}/{{requirements}} 已证明)`,cost:`基线成本 {{amount}},共 {{turns}} 轮,与本次变更分开计算`,costUnknown:`提供方未报告基线成本`,caveat:`特征测试描述当前行为;Core 在任何编辑之前于未修改的代码上运行了它们。`,more_one:`以及另外 {{count}} 个文件`},A={title_other:`需要人工检查:{{count}} 条项目规则`,caveat:`为本项目编写、但无法由自动检查强制执行的规则。请在接受前亲自检查。`,title_one:`需要人工检查:{{count}} 条项目规则`},j={label:`评审视图`,overview:`概览`,changes:`变更`},M={tab:`变更`,loading:`正在加载变更…`,error:`无法加载变更。`,refresh:`重新加载变更`,empty:`此次交付没有更改任何文件。`,unavailable:{not_a_repository:`项目文件夹不是 Git 仓库,因此没有可比较的内容。`,no_branch:`此次交付还没有可比较的分支。`,head_missing:`此次交付的分支已不在该仓库中。`,base_missing:`此次交付所基于的分支已不存在,因此无法衡量变更。`,git_failed:`Git 无法生成此次交付的变更。`},summary:`变更文件:{{count}}`,viewedCount:`已查看 {{viewed}}/{{total}}`,truncatedList:`仅显示前 {{count}} 个文件。`,source:`变更来源`,sourceDelivery:`整个交付`,sourceTicket:`规格 #{{id}}`,tree:{label:`变更的文件`},status:{added:`新增`,modified:`修改`,deleted:`删除`,renamed:`重命名`,copied:`复制`,typechange:`类型变更`},renamedFrom:`重命名自 {{path}}`,binaryShort:`二进制`,binary:`二进制文件:没有可显示的文本差异。`,noTextChanges:`没有行变更(仅文件名或模式发生了变化)。`,fileError:`无法加载此文件的差异。`,largeDiff:`显示 {{total}} 个变更行中的前 {{shown}} 行。`,loadFull:`加载完整的文件差异`,viewed:{mark:`标记为已查看`,unmark:`已查看`,changedSince:`自你查看后已更改`},mode:{label:`差异布局`,unified:`统一`,split:`分栏`},diff:{region:`{{path}} 的差异`},line:{select:`选择第 {{n}} 行`,selectOld:`选择原第 {{n}} 行`,added:`新增`,removed:`删除`},selection:{clear:`清除选择`},ask:{button:`请智能体做出修改`,title:`需要修改什么:`,placeholder:`描述你想要的修改…`,ticket:`规格`,submit:`添加到规格`,hint:`将作为评审反馈保存到规格中;之后针对该规格的运行会收到它。`,created:`已作为评审反馈添加到规格 #{{id}}。`,open:`打开规格`,failed:`无法将该备注添加到规格。`},editor:{open:`在 {{editor}} 中打开`,rootRepository:`在你本地的项目副本中打开该文件;评审分支可能没有在那里检出。`,names:{vscode:`VS Code`,cursor:`Cursor`,jetbrains:`JetBrains`},failed:`无法打开 {{editor}}。是否已安装?可在 设置 ▸ 代码 中更改。`},annotations:{title:`未关联到具体行({{count}})`,ask:`请智能体做出修改`,source:{"reviewer-finding":`评审员发现`,"review-risk":`需要检查的风险`,"review-untested":`未被测试覆盖`,"follow-up-comment":`评审评论`},severity:{high:`高`,medium:`中`,low:`低`}},keys:{files:`文件`,annotations:`批注`,viewed:`标记已查看`}},N={backToBoard:e,stillWorking:t,alreadyResolved:n,fineControlOnly:r,openPr:i,noSolutionRecorded:a,headline:o,confidence:s,cost:c,accept:l,requestChanges:u,discard:d,watchOut:f,sections:p,churn:m,tier:h,proof:g,watch:_,error:v,versions:y,drift:b,planned:x,outcome:S,followUp:C,addenda:w,derivation:T,brief:E,agentActions:D,requirements:O,baseline:k,humanEyes:A,tabs:j,changes:M};export{l as accept,w as addenda,D as agentActions,n as alreadyResolved,e as backToBoard,k as baseline,E as brief,M as changes,m as churn,s as confidence,c as cost,N as default,T as derivation,d as discard,b as drift,v as error,r as fineControlOnly,C as followUp,o as headline,A as humanEyes,a as noSolutionRecorded,i as openPr,S as outcome,x as planned,g as proof,u as requestChanges,O as requirements,p as sections,t as stillWorking,j as tabs,h as tier,y as versions,_ as watch,f as watchOut};
@@ -0,0 +1 @@
1
+ var e=`Zurück zum Board`,t=`Läuft noch…`,n=`Das wurde bereits entschieden.`,r=`Diese Lieferung braucht eine technische Entscheidung. Nutze die Detailsteuerung im Board.`,i=`Pull Request #{{number}} öffnen`,a=`Keine Zusammenfassung erfasst.`,o={success:`Deine Änderung ist bereit zur Prüfung`,successMany:`Alle {{count}} Änderungen sind bereit zur Prüfung`,partial:`{{succeeded}} von {{total}} Änderungen sind fertig`,noChanges:`Es musste nichts geändert werden`,failed:`Das konnte nicht abgeschlossen werden`,failedPartial:`Nur ein Teil konnte abgeschlossen werden`,generic:`Prüfe die gelieferte Änderung`},s={pill:`Sicherheit des KI-Reviewers {{overall}}/100`,unavailable:`Keine Reviewer-Bewertung`,tooltip:`Die Bewertung, die sich der KI-Reviewer selbst gibt — keine unabhängige Prüfung.`},c={thisBuild:`Diese Arbeit kostete {{amount}}`,allVersions:`Alle Versionen zusammen: {{amount}}`,baselinePart:` · davon Baseline {{amount}}`},l={"create-pr":`Annehmen und Pull Request öffnen`,publish:`Annehmen und zur Prüfung senden`,"merge-local":`In mein Projekt übernehmen`,"mark-done":`Annehmen — nichts zu ändern`,generic:`Annehmen`,irreversibleWarning:`Damit werden die Änderungen direkt in dein Projekt auf deinem Rechner geschrieben. Es gibt keine separate Prüfkopie und es ist nicht rückgängig zu machen.`,irreversibleConfirm:`Ja, in mein Projekt schreiben`},u={label:`Änderungen erbitten`,comingSoon:`Kommt als Nächstes: Änderung in einem Satz beschreiben.`,prompt:`Was soll geändert werden?`,placeholder:`z. B. den Login-Button blau machen`,submit:`Änderung senden`,hint:`Quick SDD setzt die Änderung auf dem bestehenden Branch um und aktualisiert diese Lieferung.`},d={label:`Verwerfen`,stackedNote:`Spätere Rails dieses Meilensteins bauen auf dieser Lieferung auf. Sie zu verwerfen pausiert die Meilenstein-Kette; die späteren Rails behalten ihre Arbeit.`,confirmTitle:`Diese Lieferung verwerfen?`,confirmBody:`Die Lieferung und ihre Änderungen werden verworfen. Das lässt sich nicht rückgängig machen.`},f={title:`Vor dem Annehmen ansehen`},p={whatYouAsked:`Was du wolltest`,whatIDid:`Was getan wurde`,howItWasChecked:`Wie es geprüft wurde`,whatTheAgentDid:`Was der Agent getan hat`},m={line:`{{files}} Dateien geändert · +{{added}} / −{{removed}} Zeilen`,batchNotSplittable:`Dateiänderungen gelten für die gesamte Lieferung, nicht pro Anfrage.`,testFiles_one:`{{count}} Testdatei berührt`,testFiles_other:`{{count}} Testdateien berührt`,noTestFiles:`Keine Testdateien berührt`},h={"app-verified":{title:`Von Specrails gemessen`,caveat:`Fakten aus den tatsächlichen Änderungen.`},"ai-reported":{title:`Von der KI berichtet`,caveat:`Worte der KI selbst. Specrails hat diese Prüfungen nicht ausgeführt.`},"reviewer-score":{title:`Selbsteinschätzung des KI-Reviewers`,caveat:`Die KI bewertet ihre eigene Arbeit — nützlich, aber keine unabhängige Prüfung.`}},g={filesChanged:`{{files}} Dateien geändert (+{{added}} / −{{removed}} Zeilen)`,testFilesChanged:`{{count}} Testdateien geändert`,noTestFilesChanged:`Keine Testdateien geändert.`,commitsRecorded:`Arbeit wurde auf {{branches}} Branch(es) festgehalten`,verificationPassed:`Die KI berichtete, ihre Prüfungen seien bestanden ({{count}})`,verificationFailed:`Die KI berichtete, ihre Prüfungen seien FEHLGESCHLAGEN ({{count}})`,noVerificationReported:`Die KI berichtete keine Verifizierung.`,verifyOutput:`Verifizierungsausgabe der KI:`,reviewerScore:`Gesamtbewertung {{overall}}/100`,reviewerAspect:`{{aspect}}: {{score}}/100`,reviewerScoreUnavailable:`Keine Reviewer-Bewertung erzeugt.`,evidenceUnavailable:`Belege nicht verfügbar`,hostCommandPassed:`Die Runtime hat {{label}} selbst ausgeführt: Exit-Code {{exitCode}} ({{seconds}} s)`,hostCommandFailed:`Die Runtime hat {{label}} selbst ausgeführt und es ist FEHLGESCHLAGEN: Exit-Code {{exitCode}} ({{seconds}} s)`,acceptanceCheckPassed:`Reviewer-Prüfung bestanden: {{name}}`,acceptanceCheckFailed:`Reviewer-Prüfung FEHLGESCHLAGEN: {{name}}`,reviewerSummary:`Zusammenfassung des KI-Reviewers:`,reviewerFinding:`Der KI-Reviewer merkte an:`},_={humanReviewRecommended:`Der KI-Reviewer gab {{overall}}/100 und empfiehlt eine menschliche Prüfung.`,lowConfidence:`Der KI-Reviewer gab nur {{overall}}/100.`,reviewerFlag:`Der Reviewer merkte an:`,noTestsForChangedCode:`{{files}} Code-Dateien geändert, ohne Teständerungen.`},v={notFound:`Diese Prüfung wurde nicht gefunden.`,loadFailed:`Die Prüfung konnte nicht geladen werden.`,alreadyResolved:`Jemand hat das schon beantwortet.`,actionFailed:`Diese Aktion ist nicht durchgegangen.`,revisionStale:`Das wurde gerade anderswo entschieden — neu laden, um den Stand zu sehen.`,revisionFailed:`Die Änderung konnte nicht gestartet werden. Dein Text wurde behalten.`,revisionBudget:`Das Tagesbudget ist ausgeschöpft, daher wurde die Änderung nicht gestartet. Dein Text bleibt erhalten.`},y={title:`Frühere Versionen ({{count}})`,label:`Version {{version}}`,current:`diese siehst du gerade`,originalBuild:`Die ursprüngliche Arbeit.`},b={title:`Das geht möglicherweise über die ursprüngliche Anfrage hinaus`,advisory:`Nur ein Hinweis — du kannst weiter Änderungen erbitten.`,costShare:`{{revisions}} Änderung(en) kosteten {{revisionCost}} — {{share}}% der {{originalCost}} der ursprünglichen Arbeit.`,outOfScopeChurn:`{{files}} von {{total}} geänderten Dateien gehörten nie zur ursprünglichen Anfrage.`,revisionCount:`Du hast {{revisions}} Änderungsrunden erbeten. Die Anfrage neu zu formulieren geht vielleicht schneller.`},x={title:`Geplanter Ansatz (laut Spec)`,caveat:`Was die Anfrage vorschlug – kein Bericht darüber, was die KI getan hat. Die Fakten oben zeigen, was sich tatsächlich geändert hat.`},S={succeeded:`Umgesetzt`,failed:`Konnte nicht abgeschlossen werden`,noChanges:`Nichts musste geändert werden`,notStarted:`Nicht begonnen`,unknown:`Ergebnis unbekannt`},C={title:`Zu behebende Review-Kommentare ({{count}})`,caveat:`Was du beheben lassen wolltest, beim Start eingefroren. Die Urteile sind der Bericht des Laufs selbst – keine Zusicherung, dass alles stimmt, weil die Tests bestanden haben.`,verdict:{resolved:`Behoben`,partial:`Teilweise behoben`,blocked:`Blockiert`,unreported:`Nicht berichtet`},files:`Dateien`,tests:`Tests`,notes:`Hinweise`,noReport:`Der Lauf hat zu diesem Kommentar nichts berichtet. Prüfe die Änderungen und Belege unten.`,excluded:`Ausgeschlossen`,source:{pasted:`von dir eingefügt`,github:`aus GitHub`}},w={title:`Spec-Addenda, mit denen dieser Lauf gebrieft wurde ({{count}})`,caveat:`An die Spec angehängte Iterationsnotizen, beim Start eingefroren. Die Urteile unten sind der eigene Bericht des Laufs – keine Zusicherung, dass alles in Ordnung ist, nur weil die Tests bestanden haben.`,kind:{"change-request":`Änderungswunsch`,"review-feedback":`Review-Feedback`,clarification:`Klarstellung`,constraint:`Einschränkung`},verdict:{applied:`Angewendet`,partial:`Teilweise angewendet`,blocked:`Blockiert`,unreported:`Nicht berichtet`},noReport:`Der Lauf hat zu diesem Addendum nichts berichtet. Prüfe die Änderungen und Belege unten.`},T={title:`Ableitung`,coverage:`{{explained}} von {{files}} geänderten Dateien werden vom abgeleiteten Design erklärt`,change:`OpenSpec-Änderung`,requirements:`Anforderungen`,requirementsValue:`{{added}} hinzugefügt · {{modified}} geändert`,confidence:`Konfidenz des Ableiters`,confidenceLevel:{high:`Hoch`,medium:`Mittel`,low:`Niedrig`},confidenceUnknown:`Nicht angegeben`,caveat:`Die Abdeckung misst Specrails mit git; die Konfidenz ist die Selbsteinschätzung des Agenten.`,unexplainedTitle_one:`{{count}} geänderte Datei ist nicht erklärt`,unexplainedTitle_other:`{{count}} geänderte Dateien sind nicht erklärt`,more_one:`…und {{count}} weitere Datei`,more_other:`…und {{count}} weitere Dateien`,unavailable:`Der Ableitungsbericht dieser Flow-Lieferung konnte nicht gelesen werden. Prüfe den Diff direkt.`,rewriteFailed:`Die Spec konnte nicht aus der abgeleiteten Änderung neu geschrieben werden; sie behält ihren Flow-Entwurf. Die OpenSpec-Änderung bleibt der technische Nachweis.`},E={title:`Worauf achten`,caveat:`Hinweise des KI-Reviewers: wo ein Mensch zuerst hinschauen sollte. Kein Prüfergebnis und blockiert nie eine Entscheidung.`,severity:{high:`Hoch`,medium:`Mittel`,low:`Niedrig`},area:{data:`Daten`,security:`Sicherheit`,api:`API`,ux:`UX`,performance:`Performance`,ops:`Betrieb`,other:`Sonstiges`},sections:{risks:`Risiken`,behaviourChanges:`Verhaltensänderungen`,invariantsTouched:`Berührte Invarianten`,untested:`Ungetestete Pfade`,humanChecks:`Manuelle Prüfungen`,divergences:`Abweichungen von der Spec`},userVisible:`Für Nutzer sichtbar`,invariantStatus:{kept:`Erhalten`,changed:`Geändert`,"at-risk":`Gefährdet`},diagnostic:`Ein Teil der Reviewer-Hinweise konnte nicht verwendet werden:`,dropped_one:`{{count}} Eintrag entsprach nicht dem erwarteten Format und wurde übersprungen.`,dropped_other:`{{count}} Einträge entsprachen nicht dem erwarteten Format und wurden übersprungen.`,topRisk:`Größtes Risiko`,moreRisks_one:`+{{count}} weiteres`,moreRisks_other:`+{{count}} weitere`},D={total_one:`{{count}} Aktion`,total_other:`{{count}} Aktionen`,countsLabel:`Erfasste Agentenaktionen nach Art`,kinds:{read:`Lesezugriffe`,write:`Schreibzugriffe`,exec:`Befehle`,mcp:`MCP-Aufrufe`,network:`Webanfragen`},caveat:`Aus den Streams der Agenten erfasst: Lesezugriffe sind nur so vollständig, wie jeder Anbieter sie meldet. Inhalte und Umgebungswerte werden nie gespeichert.`,run:`Lauf {{id}}`,download:`{{format}}`,downloadFailed:`Die Agentenaktionen konnten nicht heruntergeladen werden`},O={title:`Nachgewiesene Anforderungen {{demonstrated}}/{{total}}`,touched:`Von dieser Änderung berührt: {{demonstrated}}/{{total}} nachgewiesen`,caveat:`Von Specrails gemessen: Eine Anforderung zählt, wenn ein mit ihrer ID markierter Test in einer erfolgreichen Verifikation lief. Nur ein Hinweis; die Prüfung ändert sich nicht.`,caveatNoReceipt:`Hinter einem Teil dieser Spur steht kein Verifikationsbeleg, daher zählen diese Anforderungen noch nicht als nachgewiesen.`,undemonstratedTitle_one:`{{count}} Anforderung nicht nachgewiesen`,undemonstratedTitle_other:`{{count}} Anforderungen nicht nachgewiesen`,demonstratedTitle_one:`{{count}} Anforderung nachgewiesen`,demonstratedTitle_other:`{{count}} Anforderungen nachgewiesen`,reason:{"no-test":`kein markierter Test`,"not-executed":`markierter Test lief nicht`,failed:`markierter Test schlug fehl`},touchedBadge:`hier geändert`,untagged_one:`{{count}} Test-Markierung passt zu keiner Anforderung ({{tags}}): Tippfehler oder umbenannte Anforderung.`,untagged_other:`{{count}} Test-Markierungen passen zu keiner Anforderung ({{tags}}): Tippfehler oder umbenannte Anforderungen.`,showAll_one:`{{count}} weitere anzeigen`,showAll_other:`{{count}} weitere anzeigen`,showLess:`Weniger anzeigen`},k={title:`Spec für den Code erstellt, den die Arbeit berührt hat`,status:{planned:`Baseline geplant: {{requirements}} Ist-Anforderungen, {{tests}} Charakterisierungstests`,passed:`Baseline am unveränderten Code bestätigt: {{requirements}} Ist-Anforderungen, {{tests}} Charakterisierungstests`,failed:`Baseline blockiert: Die Charakterisierungstests liefen am unveränderten Code nicht durch, daher wurde das Modul nicht bearbeitet`,violated:`Baseline blockiert: Der Baseline-Schritt hat Code außer Tests geändert, daher wurde der Lauf gestoppt`,"not-needed":`Keine Baseline nötig: Specs decken den berührten Code bereits ab`},module:`Beschriebenes Modul:`,more_one:`und {{count}} weitere Datei`,more_other:`und {{count}} weitere Dateien`,spec:`Ist-Spec:`,capability:`{{capability}} ({{demonstrated}}/{{requirements}} nachgewiesen)`,cost:`Baseline-Kosten {{amount}} in {{turns}} Turns, getrennt von der Änderung gezählt`,costUnknown:`Baseline-Kosten vom Anbieter nicht gemeldet`,caveat:`Charakterisierungstests beschreiben das heutige Verhalten; Core hat sie vor jeder Änderung am unveränderten Code ausgeführt.`},A={title_one:`Menschliche Prüfung nötig: {{count}} Projektregel`,title_other:`Menschliche Prüfung nötig: {{count}} Projektregeln`,caveat:`Für dieses Projekt geschriebene Regeln, die keine automatische Prüfung durchsetzen kann. Prüfe sie selbst, bevor du annimmst.`},j={label:`Ansichten der Prüfung`,overview:`Übersicht`,changes:`Änderungen`},M={tab:`Änderungen`,loading:`Änderungen werden geladen…`,error:`Die Änderungen konnten nicht geladen werden.`,refresh:`Änderungen neu laden`,empty:`Diese Lieferung hat keine Dateien geändert.`,unavailable:{not_a_repository:`Der Projektordner ist kein Git-Repository, daher gibt es nichts zu vergleichen.`,no_branch:`Diese Lieferung hat noch keinen Branch zum Vergleichen.`,head_missing:`Der Branch der Lieferung existiert in diesem Repository nicht mehr.`,base_missing:`Der Branch, auf dem diese Lieferung basierte, existiert nicht mehr; die Änderungen lassen sich nicht messen.`,git_failed:`Git konnte die Änderungen dieser Lieferung nicht ermitteln.`},summary:`Geänderte Dateien: {{count}}`,viewedCount:`{{viewed}} von {{total}} angesehen`,truncatedList:`Es werden nur die ersten {{count}} Dateien angezeigt.`,source:`Änderungen von`,sourceDelivery:`Gesamte Lieferung`,sourceTicket:`Spec #{{id}}`,tree:{label:`Geänderte Dateien`},status:{added:`Hinzugefügt`,modified:`Geändert`,deleted:`Gelöscht`,renamed:`Umbenannt`,copied:`Kopiert`,typechange:`Typ geändert`},renamedFrom:`Umbenannt von {{path}}`,binaryShort:`binär`,binary:`Binärdatei: Es gibt keinen Text-Diff.`,noTextChanges:`Keine Zeilenänderungen (nur Name oder Modus der Datei wurden geändert).`,fileError:`Der Diff dieser Datei konnte nicht geladen werden.`,largeDiff:`Angezeigt werden die ersten {{shown}} von {{total}} geänderten Zeilen.`,loadFull:`Vollständigen Datei-Diff laden`,viewed:{mark:`Als angesehen markieren`,unmark:`Angesehen`,changedSince:`Seit dem Ansehen geändert`},mode:{label:`Diff-Darstellung`,unified:`Vereint`,split:`Geteilt`},diff:{region:`Diff von {{path}}`},line:{select:`Zeile {{n}} auswählen`,selectOld:`Ursprüngliche Zeile {{n}} auswählen`,added:`hinzugefügt`,removed:`entfernt`},selection:{clear:`Auswahl aufheben`},ask:{button:`Änderung beim Agenten anfragen`,title:`Was soll sich ändern in`,placeholder:`Beschreibe die gewünschte Änderung…`,ticket:`Spec`,submit:`Zur Spec hinzufügen`,hint:`Wird als Review-Feedback an der Spec gespeichert; der nächste Lauf dazu erhält es.`,created:`Als Review-Feedback zu Spec #{{id}} hinzugefügt.`,open:`Spec öffnen`,failed:`Die Notiz konnte nicht zur Spec hinzugefügt werden.`},editor:{open:`In {{editor}} öffnen`,rootRepository:`Öffnet die Datei in deinem Checkout des Projekts; der Review-Branch ist dort womöglich nicht ausgecheckt.`,names:{vscode:`VS Code`,cursor:`Cursor`,jetbrains:`JetBrains`},failed:`{{editor}} konnte nicht geöffnet werden. Ist es installiert? Ändere es unter Einstellungen ▸ Code.`},annotations:{title:`Keiner Zeile zugeordnet ({{count}})`,ask:`Änderung beim Agenten anfragen`,source:{"reviewer-finding":`Befund des Reviewers`,"review-risk":`Zu prüfendes Risiko`,"review-untested":`Nicht durch Tests abgedeckt`,"follow-up-comment":`Review-Kommentar`},severity:{high:`Hoch`,medium:`Mittel`,low:`Niedrig`}},keys:{files:`Dateien`,annotations:`Anmerkungen`,viewed:`als angesehen markieren`}},N={backToBoard:e,stillWorking:t,alreadyResolved:n,fineControlOnly:r,openPr:i,noSolutionRecorded:a,headline:o,confidence:s,cost:c,accept:l,requestChanges:u,discard:d,watchOut:f,sections:p,churn:m,tier:h,proof:g,watch:_,error:v,versions:y,drift:b,planned:x,outcome:S,followUp:C,addenda:w,derivation:T,brief:E,agentActions:D,requirements:O,baseline:k,humanEyes:A,tabs:j,changes:M};export{l as accept,w as addenda,D as agentActions,n as alreadyResolved,e as backToBoard,k as baseline,E as brief,M as changes,m as churn,s as confidence,c as cost,N as default,T as derivation,d as discard,b as drift,v as error,r as fineControlOnly,C as followUp,o as headline,A as humanEyes,a as noSolutionRecorded,i as openPr,S as outcome,x as planned,g as proof,u as requestChanges,O as requirements,p as sections,t as stillWorking,j as tabs,h as tier,y as versions,_ as watch,f as watchOut};
@@ -0,0 +1 @@
1
+ var e=`Voltar ao painel`,t=`Ainda a trabalhar nisto…`,n=`Isto já foi resolvido.`,r=`Esta entrega precisa de uma decisão técnica. Use os controlos detalhados do painel.`,i=`Abrir pull request #{{number}}`,a=`Nenhum resumo foi registado.`,o={success:`A sua alteração está pronta para revisão`,successMany:`As {{count}} alterações estão prontas para revisão`,partial:`{{succeeded}} de {{total}} alterações estão prontas`,noChanges:`Não era preciso alterar nada`,failed:`Isto não pôde ser concluído`,failedPartial:`Só parte pôde ser concluída`,generic:`Revise a alteração entregue`},s={pill:`Confiança do revisor IA {{overall}}/100`,unavailable:`Sem pontuação do revisor`,tooltip:`A pontuação que o revisor IA dá a si mesmo — não é uma verificação independente.`},c={thisBuild:`Este trabalho custou {{amount}}`,allVersions:`Todas as versões juntas: {{amount}}`,baselinePart:` · {{amount}} de baseline`},l={"create-pr":`Aceitar e abrir um pull request`,publish:`Aceitar e enviar para revisão`,"merge-local":`Aceitar no meu projeto`,"mark-done":`Aceitar — nada a alterar`,generic:`Aceitar`,irreversibleWarning:`Isto escreve as alterações diretamente no seu projeto, no seu computador. Não há cópia de revisão separada e não pode ser desfeito.`,irreversibleConfirm:`Sim, escrever no meu projeto`},u={label:`Pedir alterações`,comingSoon:`Em breve: descreva a alteração numa frase.`,prompt:`O que quer alterar?`,placeholder:`p. ex. pôr o botão de login azul`,submit:`Enviar a alteração`,hint:`Quick SDD aplica a alteração no branch existente e atualiza esta entrega.`},d={label:`Descartar isto`,stackedNote:`Os rails seguintes deste marco foram construídos sobre esta entrega. Descartá-la pausa a cadeia do marco; os rails seguintes mantêm o seu trabalho.`,confirmTitle:`Descartar esta entrega?`,confirmBody:`A entrega e as suas alterações são descartadas. Esta ação não pode ser desfeita.`},f={title:`Vale a pena ver antes de aceitar`},p={whatYouAsked:`O que pediu`,whatIDid:`O que foi feito`,howItWasChecked:`Como foi verificado`,whatTheAgentDid:`O que o agente fez`},m={line:`{{files}} ficheiros alterados · +{{added}} / −{{removed}} linhas`,batchNotSplittable:`As alterações de ficheiros referem-se a toda a entrega, não a cada pedido.`,testFiles_one:`{{count}} ficheiro de testes alterado`,testFiles_other:`{{count}} ficheiros de testes alterados`,noTestFiles:`Nenhum ficheiro de testes alterado`},h={"app-verified":{title:`Medido pelo Specrails`,caveat:`Factos retirados das alterações reais.`},"ai-reported":{title:`Reportado pela IA`,caveat:`Palavras da própria IA. O Specrails não executou estas verificações.`},"reviewer-score":{title:`Autoavaliação do revisor IA`,caveat:`A IA a avaliar o seu próprio trabalho — útil, mas não é uma revisão independente.`}},g={filesChanged:`{{files}} ficheiros alterados (+{{added}} / −{{removed}} linhas)`,testFilesChanged:`{{count}} ficheiros de teste alterados`,noTestFilesChanged:`Nenhum ficheiro de teste alterado.`,commitsRecorded:`O trabalho foi registado em {{branches}} ramo(s)`,verificationPassed:`A IA reportou que as suas verificações passaram ({{count}})`,verificationFailed:`A IA reportou que as suas verificações FALHARAM ({{count}})`,noVerificationReported:`A IA não reportou qualquer verificação.`,verifyOutput:`Saída de verificação da IA:`,reviewerScore:`Pontuação global {{overall}}/100`,reviewerAspect:`{{aspect}}: {{score}}/100`,reviewerScoreUnavailable:`Não foi gerada pontuação do revisor.`,evidenceUnavailable:`sem evidência`,hostCommandPassed:`O runtime executou {{label}} por si próprio: código de saída {{exitCode}} ({{seconds}} s)`,hostCommandFailed:`O runtime executou {{label}} por si próprio e FALHOU: código de saída {{exitCode}} ({{seconds}} s)`,acceptanceCheckPassed:`Verificação do revisor aprovada: {{name}}`,acceptanceCheckFailed:`Verificação do revisor FALHOU: {{name}}`,reviewerSummary:`Resumo do revisor de IA:`,reviewerFinding:`O revisor de IA assinalou:`},_={humanReviewRecommended:`O revisor IA pontuou {{overall}}/100 e recomenda que uma pessoa veja.`,lowConfidence:`O revisor IA pontuou apenas {{overall}}/100.`,reviewerFlag:`O revisor sinalizou:`,noTestsForChangedCode:`{{files}} ficheiros de código alterados sem alterações em testes.`},v={notFound:`Esta revisão não foi encontrada.`,loadFailed:`Não foi possível carregar a revisão.`,alreadyResolved:`Alguém já respondeu a isto.`,actionFailed:`Essa ação não foi concluída.`,revisionStale:`Isto acabou de ser resolvido noutro lugar — recarregue para ver o estado.`,revisionFailed:`Não foi possível iniciar a alteração. O seu texto foi guardado.`,revisionBudget:`O orçamento diário está esgotado, então a alteração não foi iniciada. Seu texto foi mantido.`},y={title:`Versões anteriores ({{count}})`,label:`Versão {{version}}`,current:`está a ver esta`,originalBuild:`O trabalho original.`},b={title:`Isto pode ter ultrapassado o que pediu`,advisory:`É apenas uma sugestão — pode continuar a pedir alterações.`,costShare:`{{revisions}} alteração(ões) custaram {{revisionCost}} — {{share}}% dos {{originalCost}} do trabalho original.`,outOfScopeChurn:`{{files}} de {{total}} ficheiros alterados não faziam parte do pedido original.`,revisionCount:`Já pediu {{revisions}} rondas de alterações. Reescrever o pedido pode ser mais rápido.`},x={title:`Abordagem prevista (segundo a spec)`,caveat:`O que o pedido propunha — não um relatório do que a IA fez. Os factos acima são o que realmente mudou.`},S={succeeded:`Implementado`,failed:`Não foi possível concluir`,noChanges:`Nada precisava de mudar`,notStarted:`Não iniciado`,unknown:`Resultado desconhecido`},C={title:`Comentários de revisão a resolver ({{count}})`,caveat:`O que você pediu para corrigir, congelado no lançamento. Os veredictos são o relatório da própria execução — não uma garantia de que tudo está bem porque os testes passaram.`,verdict:{resolved:`Resolvido`,partial:`Parcialmente resolvido`,blocked:`Bloqueado`,unreported:`Sem relato`},files:`Arquivos`,tests:`Testes`,notes:`Notas`,noReport:`A execução não relatou este comentário. Verifique as alterações e as evidências abaixo.`,excluded:`Excluído`,source:{pasted:`colado por você`,github:`do GitHub`}},w={title:`Adendos com que esta execução foi instruída ({{count}})`,caveat:`Notas de iteração anexadas à spec e congeladas no lançamento. Os veredictos abaixo são o relatório da própria execução — não uma garantia de que está tudo bem porque os testes passaram.`,kind:{"change-request":`Pedido de alteração`,"review-feedback":`Feedback de revisão`,clarification:`Esclarecimento`,constraint:`Restrição`},verdict:{applied:`Aplicado`,partial:`Parcialmente aplicado`,blocked:`Bloqueado`,unreported:`Não reportado`},noReport:`A execução não reportou este adendo. Verifique as alterações e as evidências abaixo.`},T={title:`Derivação`,coverage:`{{explained}} de {{files}} arquivos alterados são explicados pelo design derivado`,change:`Mudança OpenSpec`,requirements:`Requisitos`,requirementsValue:`{{added}} adicionados · {{modified}} modificados`,confidence:`Confiança do derivador`,confidenceLevel:{high:`Alta`,medium:`Média`,low:`Baixa`},confidenceUnknown:`Não informada`,caveat:`A cobertura é medida pelo Specrails com git; a confiança é a autoavaliação do agente.`,unexplainedTitle_one:`{{count}} arquivo alterado não está explicado`,unexplainedTitle_other:`{{count}} arquivos alterados não estão explicados`,more_one:`…e mais {{count}} arquivo`,more_other:`…e mais {{count}} arquivos`,unavailable:`Não foi possível ler o relatório de derivação desta entrega Flow. Revise o diff diretamente.`,rewriteFailed:`Não foi possível reescrever a spec a partir da mudança derivada; ela mantém o rascunho do Flow. A mudança OpenSpec continua sendo o registro técnico.`},E={title:`O que olhar`,caveat:`Resumo orientativo do revisor de IA: onde uma pessoa deve olhar primeiro. Não é um resultado de verificação e nunca bloqueia uma decisão.`,severity:{high:`Alto`,medium:`Médio`,low:`Baixo`},area:{data:`dados`,security:`segurança`,api:`API`,ux:`UX`,performance:`desempenho`,ops:`operações`,other:`outro`},sections:{risks:`Riscos`,behaviourChanges:`Mudanças de comportamento`,invariantsTouched:`Invariantes afetados`,untested:`Caminhos sem teste`,humanChecks:`Verificações humanas`,divergences:`Divergências da spec`},userVisible:`Visível para usuários`,invariantStatus:{kept:`Mantido`,changed:`Alterado`,"at-risk":`Em risco`},diagnostic:`Parte do resumo do revisor não pôde ser usada:`,dropped_one:`{{count}} entrada do resumo não seguia o formato esperado e foi ignorada.`,dropped_other:`{{count}} entradas do resumo não seguiam o formato esperado e foram ignoradas.`,topRisk:`Principal risco`,moreRisks_one:`+{{count}} outro`,moreRisks_other:`+{{count}} outros`},D={total_one:`{{count}} ação`,total_other:`{{count}} ações`,countsLabel:`Ações do agente registradas por tipo`,kinds:{read:`leituras`,write:`escritas`,exec:`comandos`,mcp:`chamadas MCP`,network:`pedidos web`},caveat:`Registrado a partir dos próprios streams dos agentes: as leituras são tão completas quanto cada provedor as reporta. Conteúdos e valores de ambiente nunca são armazenados.`,run:`Execução {{id}}`,download:`{{format}}`,downloadFailed:`Não foi possível baixar as ações do agente`},O={title:`Requisitos demonstrados {{demonstrated}}/{{total}}`,touched:`Tocados por esta mudança: {{demonstrated}}/{{total}} demonstrados`,caveat:`Medido pelo Specrails: um requisito conta quando um teste marcado com o seu id rodou numa verificação aprovada. Indicativo; não altera a revisão.`,caveatNoReceipt:`Parte deste rastreio não tem recibo de verificação, então esses requisitos ainda não podem contar como demonstrados.`,undemonstratedTitle_one:`{{count}} requisito não demonstrado`,undemonstratedTitle_other:`{{count}} requisitos não demonstrados`,demonstratedTitle_one:`{{count}} requisito demonstrado`,demonstratedTitle_other:`{{count}} requisitos demonstrados`,reason:{"no-test":`sem teste marcado`,"not-executed":`o teste marcado não rodou`,failed:`o teste marcado falhou`},touchedBadge:`alterado aqui`,untagged_one:`{{count}} marcação de teste não corresponde a nenhum requisito ({{tags}}): um erro de digitação ou um requisito renomeado.`,untagged_other:`{{count}} marcações de teste não correspondem a nenhum requisito ({{tags}}): erros de digitação ou requisitos renomeados.`,showAll_one:`Mostrar mais {{count}}`,showAll_other:`Mostrar mais {{count}}`,showLess:`Mostrar menos`},k={title:`Spec criada por onde o trabalho passou`,status:{planned:`Baseline planejado: {{requirements}} requisitos as-built, {{tests}} testes de caracterização`,passed:`Baseline comprovado no código inalterado: {{requirements}} requisitos as-built, {{tests}} testes de caracterização`,failed:`Baseline bloqueado: os testes de caracterização não passaram no código inalterado, então o módulo não foi editado`,violated:`Baseline bloqueado: a etapa de baseline editou código que não era de teste, então a execução parou`,"not-needed":`Não é preciso baseline: as specs já cobrem o código que esta mudança toca`},module:`Módulo descrito:`,more_one:`e mais {{count}} arquivo`,more_other:`e mais {{count}} arquivos`,spec:`Spec as-built:`,capability:`{{capability}} ({{demonstrated}}/{{requirements}} demonstrados)`,cost:`Custo do baseline {{amount}} em {{turns}} turnos, contado à parte da mudança`,costUnknown:`Custo do baseline não informado pelo provedor`,caveat:`Os testes de caracterização descrevem o comportamento atual; o Core os executou no código inalterado antes de qualquer edição.`},A={title_one:`Precisa de olhos humanos: {{count}} regra do projeto`,title_other:`Precisa de olhos humanos: {{count}} regras do projeto`,caveat:`Regras escritas para este projeto que nenhuma verificação automática consegue impor. Confira-as você mesmo antes de aceitar.`},j={label:`Visões da revisão`,overview:`Resumo`,changes:`Alterações`},M={tab:`Alterações`,loading:`Carregando as alterações…`,error:`Não foi possível carregar as alterações.`,refresh:`Recarregar as alterações`,empty:`Esta entrega não alterou nenhum arquivo.`,unavailable:{not_a_repository:`A pasta do projeto não é um repositório Git, então não há o que comparar.`,no_branch:`Esta entrega ainda não tem uma branch para comparar.`,head_missing:`A branch da entrega não existe mais neste repositório.`,base_missing:`A branch em que esta entrega se baseou não existe mais, então as alterações não podem ser medidas.`,git_failed:`O Git não conseguiu gerar as alterações desta entrega.`},summary:`Arquivos alterados: {{count}}`,viewedCount:`{{viewed}} de {{total}} vistos`,truncatedList:`Mostrando apenas os primeiros {{count}} arquivos.`,source:`Alterações de`,sourceDelivery:`Entrega inteira`,sourceTicket:`Spec #{{id}}`,tree:{label:`Arquivos alterados`},status:{added:`Adicionado`,modified:`Modificado`,deleted:`Excluído`,renamed:`Renomeado`,copied:`Copiado`,typechange:`Tipo alterado`},renamedFrom:`Renomeado de {{path}}`,binaryShort:`binário`,binary:`Arquivo binário: não há diff de texto para mostrar.`,noTextChanges:`Sem alterações de linhas (só o nome ou o modo do arquivo mudou).`,fileError:`Não foi possível carregar o diff deste arquivo.`,largeDiff:`Mostrando as primeiras {{shown}} de {{total}} linhas alteradas.`,loadFull:`Carregar o diff completo do arquivo`,viewed:{mark:`Marcar como visto`,unmark:`Visto`,changedSince:`Alterado desde que você viu`},mode:{label:`Layout do diff`,unified:`Unificado`,split:`Dividido`},diff:{region:`Diff de {{path}}`},line:{select:`Selecionar a linha {{n}}`,selectOld:`Selecionar a linha original {{n}}`,added:`adicionada`,removed:`removida`},selection:{clear:`Limpar a seleção`},ask:{button:`Pedir uma mudança ao agente`,title:`O que deve mudar em`,placeholder:`Descreva a mudança que você quer…`,ticket:`Spec`,submit:`Adicionar à spec`,hint:`Salvo como feedback de revisão na spec; a próxima execução dela o receberá.`,created:`Adicionado à spec #{{id}} como feedback de revisão.`,open:`Abrir spec`,failed:`Não foi possível adicionar a nota à spec.`},editor:{open:`Abrir no {{editor}}`,rootRepository:`Abre o arquivo na sua cópia do projeto; a branch da revisão pode não estar ativa lá.`,names:{vscode:`VS Code`,cursor:`Cursor`,jetbrains:`JetBrains`},failed:`Não foi possível abrir {{editor}}. Está instalado? Altere em Configurações ▸ Código.`},annotations:{title:`Sem linha associada ({{count}})`,ask:`Pedir uma mudança ao agente`,source:{"reviewer-finding":`Achado do revisor`,"review-risk":`Risco a verificar`,"review-untested":`Sem cobertura de testes`,"follow-up-comment":`Comentário de revisão`},severity:{high:`Alta`,medium:`Média`,low:`Baixa`}},keys:{files:`arquivos`,annotations:`anotações`,viewed:`marcar como visto`}},N={backToBoard:e,stillWorking:t,alreadyResolved:n,fineControlOnly:r,openPr:i,noSolutionRecorded:a,headline:o,confidence:s,cost:c,accept:l,requestChanges:u,discard:d,watchOut:f,sections:p,churn:m,tier:h,proof:g,watch:_,error:v,versions:y,drift:b,planned:x,outcome:S,followUp:C,addenda:w,derivation:T,brief:E,agentActions:D,requirements:O,baseline:k,humanEyes:A,tabs:j,changes:M};export{l as accept,w as addenda,D as agentActions,n as alreadyResolved,e as backToBoard,k as baseline,E as brief,M as changes,m as churn,s as confidence,c as cost,N as default,T as derivation,d as discard,b as drift,v as error,r as fineControlOnly,C as followUp,o as headline,A as humanEyes,a as noSolutionRecorded,i as openPr,S as outcome,x as planned,g as proof,u as requestChanges,O as requirements,p as sections,t as stillWorking,j as tabs,h as tier,y as versions,_ as watch,f as watchOut};
@@ -0,0 +1 @@
1
+ var e=`Retour au tableau`,t=`Toujours en cours…`,n=`Cela a déjà été résolu.`,r=`Cette livraison nécessite une décision technique. Utilisez les contrôles détaillés du tableau.`,i=`Ouvrir la pull request #{{number}}`,a=`Aucun résumé n'a été enregistré.`,o={success:`Votre changement est prêt à être relu`,successMany:`Les {{count}} changements sont prêts à être relus`,partial:`{{succeeded}} changements sur {{total}} sont prêts`,noChanges:`Rien n'avait besoin d'être changé`,failed:`Cela n'a pas pu être terminé`,failedPartial:`Seule une partie a pu être terminée`,generic:`Examinez la modification livrée`},s={pill:`Confiance du relecteur IA {{overall}}/100`,unavailable:`Pas de score du relecteur`,tooltip:`Le score que le relecteur IA s'attribue — ce n'est pas une vérification indépendante.`},c={thisBuild:`Ce travail a coûté {{amount}}`,allVersions:`Toutes les versions cumulées : {{amount}}`,baselinePart:` · dont {{amount}} de baseline`},l={"create-pr":`Accepter et ouvrir une pull request`,publish:`Accepter et envoyer en relecture`,"merge-local":`Accepter dans mon projet`,"mark-done":`Accepter — rien à changer`,generic:`Accepter`,irreversibleWarning:`Cela écrit les changements directement dans votre projet, sur votre ordinateur. Il n'y a pas de copie de relecture et c'est irréversible.`,irreversibleConfirm:`Oui, écrire dans mon projet`},u={label:`Demander des changements`,comingSoon:`Bientôt : décrivez le changement en une phrase.`,prompt:`Que voulez-vous changer ?`,placeholder:`ex. mettre le bouton de connexion en bleu`,submit:`Envoyer le changement`,hint:`Quick SDD applique le changement sur la branche existante et met à jour cette livraison.`},d={label:`Jeter ceci`,stackedNote:`Les rails suivants de ce jalon ont été construits sur cette livraison. L'abandonner met la chaîne du jalon en pause ; les rails suivants conservent leur travail.`,confirmTitle:`Jeter cette livraison ?`,confirmBody:`La livraison et ses modifications sont supprimées. Cette action est irréversible.`},f={title:`À regarder avant d'accepter`},p={whatYouAsked:`Ce que vous avez demandé`,whatIDid:`Ce qui a été fait`,howItWasChecked:`Comment cela a été vérifié`,whatTheAgentDid:`Ce que l'agent a fait`},m={line:`{{files}} fichiers modifiés · +{{added}} / −{{removed}} lignes`,batchNotSplittable:`Les modifications de fichiers concernent toute la livraison, pas chaque demande.`,testFiles_one:`{{count}} fichier de tests touché`,testFiles_other:`{{count}} fichiers de tests touchés`,noTestFiles:`Aucun fichier de tests touché`},h={"app-verified":{title:`Mesuré par Specrails`,caveat:`Faits tirés des modifications réelles.`},"ai-reported":{title:`Rapporté par l'IA`,caveat:`Les mots de l'IA. Specrails n'a pas exécuté ces vérifications.`},"reviewer-score":{title:`Auto-évaluation du relecteur IA`,caveat:`L'IA note son propre travail — utile, mais pas une relecture indépendante.`}},g={filesChanged:`{{files}} fichiers modifiés (+{{added}} / −{{removed}} lignes)`,testFilesChanged:`{{count}} fichiers de test modifiés`,noTestFilesChanged:`Aucun fichier de test modifié.`,commitsRecorded:`Le travail a été enregistré sur {{branches}} branche(s)`,verificationPassed:`L'IA a rapporté que ses vérifications ont réussi ({{count}})`,verificationFailed:`L'IA a rapporté que ses vérifications ont ÉCHOUÉ ({{count}})`,noVerificationReported:`L'IA n'a rapporté aucune vérification.`,verifyOutput:`Sortie de vérification de l'IA :`,reviewerScore:`Score global {{overall}}/100`,reviewerAspect:`{{aspect}} : {{score}}/100`,reviewerScoreUnavailable:`Aucun score de relecteur produit.`,evidenceUnavailable:`preuves indisponibles`,hostCommandPassed:`Le runtime a exécuté {{label}} lui-même : code de sortie {{exitCode}} ({{seconds}} s)`,hostCommandFailed:`Le runtime a exécuté {{label}} lui-même et cela a ÉCHOUÉ : code de sortie {{exitCode}} ({{seconds}} s)`,acceptanceCheckPassed:`Vérification du relecteur réussie : {{name}}`,acceptanceCheckFailed:`Vérification du relecteur ÉCHOUÉE : {{name}}`,reviewerSummary:`Résumé du relecteur IA :`,reviewerFinding:`Le relecteur IA a noté :`},_={humanReviewRecommended:`Le relecteur IA a noté {{overall}}/100 et recommande une relecture humaine.`,lowConfidence:`Le relecteur IA n'a noté que {{overall}}/100.`,reviewerFlag:`Le relecteur a signalé :`,noTestsForChangedCode:`{{files}} fichiers de code modifiés sans changement de test.`},v={notFound:`Cette relecture est introuvable.`,loadFailed:`La relecture n'a pas pu être chargée.`,alreadyResolved:`Quelqu'un a déjà répondu.`,actionFailed:`Cette action n'a pas abouti.`,revisionStale:`Cela vient d'être résolu ailleurs — rechargez pour voir l'état.`,revisionFailed:`Le changement n'a pas pu démarrer. Votre texte a été conservé.`,revisionBudget:`Le budget quotidien est épuisé, la modification n’a donc pas été lancée. Votre texte a été conservé.`},y={title:`Versions précédentes ({{count}})`,label:`Version {{version}}`,current:`vous consultez celle-ci`,originalBuild:`Le travail initial.`},b={title:`Cela dépasse peut-être votre demande initiale`,advisory:`Simple suggestion — vous pouvez continuer à demander des changements.`,costShare:`{{revisions}} changement(s) ont coûté {{revisionCost}} — {{share}} % des {{originalCost}} du travail initial.`,outOfScopeChurn:`{{files}} des {{total}} fichiers modifiés ne faisaient pas partie de la demande initiale.`,revisionCount:`Vous avez demandé {{revisions}} séries de changements. Réécrire la demande sera peut-être plus rapide.`},x={title:`Approche prévue (d'après la spec)`,caveat:`Ce que la demande proposait — pas un compte rendu de ce que l'IA a fait. Les faits ci-dessus sont ce qui a réellement changé.`},S={succeeded:`Implémenté`,failed:`N'a pas pu être terminé`,noChanges:`Rien à changer`,notStarted:`Non commencé`,unknown:`Résultat inconnu`},C={title:`Commentaires de revue à résoudre ({{count}})`,caveat:`Ce que vous avez demandé de corriger, figé au lancement. Les verdicts sont le rapport de l’exécution elle‑même, pas une garantie que tout va bien parce que les tests passent.`,verdict:{resolved:`Résolu`,partial:`Partiellement résolu`,blocked:`Bloqué`,unreported:`Non rapporté`},files:`Fichiers`,tests:`Tests`,notes:`Notes`,noReport:`L’exécution n’a rien rapporté pour ce commentaire. Vérifiez les changements et les preuves ci‑dessous.`,excluded:`Exclu`,source:{pasted:`collé par vous`,github:`depuis GitHub`}},w={title:`Addenda transmis à cette exécution ({{count}})`,caveat:`Notes d'itération attachées à la spec et figées au lancement. Les verdicts ci-dessous sont le rapport de l'exécution elle-même — pas une garantie que tout va bien parce que les tests passent.`,kind:{"change-request":`Demande de changement`,"review-feedback":`Retour de revue`,clarification:`Clarification`,constraint:`Contrainte`},verdict:{applied:`Appliqué`,partial:`Partiellement appliqué`,blocked:`Bloqué`,unreported:`Non signalé`},noReport:`L'exécution n'a rien signalé pour cet addendum. Vérifiez les changements et les preuves ci-dessous.`},T={title:`Dérivation`,coverage:`{{explained}} des {{files}} fichiers modifiés sont expliqués par la conception dérivée`,change:`Changement OpenSpec`,requirements:`Exigences`,requirementsValue:`{{added}} ajoutées · {{modified}} modifiées`,confidence:`Confiance du dériveur`,confidenceLevel:{high:`Élevée`,medium:`Moyenne`,low:`Faible`},confidenceUnknown:`Non indiquée`,caveat:`La couverture est mesurée par Specrails avec git ; la confiance est l'auto-évaluation de l'agent.`,unexplainedTitle_one:`{{count}} fichier modifié n'est pas expliqué`,unexplainedTitle_other:`{{count}} fichiers modifiés ne sont pas expliqués`,more_one:`…et {{count}} autre fichier`,more_other:`…et {{count}} autres fichiers`,unavailable:`Le rapport de dérivation de cette livraison Flow n'a pas pu être lu. Examinez directement le diff.`,rewriteFailed:`La spec n'a pas pu être réécrite à partir du changement dérivé ; elle conserve son brouillon Flow. Le changement OpenSpec reste la trace technique.`},E={title:`Points à examiner`,caveat:`Note indicative du relecteur IA : où un humain doit regarder en premier. Ce n'est pas un résultat de vérification et cela ne bloque jamais une décision.`,severity:{high:`Élevé`,medium:`Moyen`,low:`Faible`},area:{data:`données`,security:`sécurité`,api:`API`,ux:`UX`,performance:`performances`,ops:`exploitation`,other:`autre`},sections:{risks:`Risques`,behaviourChanges:`Changements de comportement`,invariantsTouched:`Invariants touchés`,untested:`Chemins non testés`,humanChecks:`Vérifications humaines`,divergences:`Écarts avec la spec`},userVisible:`Visible par les utilisateurs`,invariantStatus:{kept:`Préservé`,changed:`Modifié`,"at-risk":`Menacé`},diagnostic:`Une partie de la note du relecteur n'a pas pu être utilisée :`,dropped_one:`{{count}} entrée de la note ne respectait pas le format attendu et a été ignorée.`,dropped_other:`{{count}} entrées de la note ne respectaient pas le format attendu et ont été ignorées.`,topRisk:`Risque principal`,moreRisks_one:`+{{count}} autre`,moreRisks_other:`+{{count}} autres`},D={total_one:`{{count}} action`,total_other:`{{count}} actions`,countsLabel:`Actions de l'agent enregistrées par type`,kinds:{read:`lectures`,write:`écritures`,exec:`commandes`,mcp:`appels MCP`,network:`requêtes web`},caveat:`Enregistré à partir des flux des agents : les lectures ne sont complètes que dans la mesure où chaque fournisseur les signale. Les contenus et les valeurs d'environnement ne sont jamais stockés.`,run:`Exécution {{id}}`,download:`{{format}}`,downloadFailed:`Impossible de télécharger les actions de l'agent`},O={title:`Exigences démontrées {{demonstrated}}/{{total}}`,touched:`Touchées par ce changement : {{demonstrated}}/{{total}} démontrées`,caveat:`Mesuré par Specrails : une exigence compte quand un test étiqueté avec son id a été exécuté dans une vérification réussie. Indicatif ; cela ne change pas la revue.`,caveatNoReceipt:`Une partie de cette trace n'a pas de reçu de vérification, ces exigences ne peuvent donc pas encore compter comme démontrées.`,undemonstratedTitle_one:`{{count}} exigence non démontrée`,undemonstratedTitle_other:`{{count}} exigences non démontrées`,demonstratedTitle_one:`{{count}} exigence démontrée`,demonstratedTitle_other:`{{count}} exigences démontrées`,reason:{"no-test":`aucun test étiqueté`,"not-executed":`le test étiqueté n'a pas été exécuté`,failed:`le test étiqueté a échoué`},touchedBadge:`modifiée ici`,untagged_one:`{{count}} étiquette de test ne correspond à aucune exigence ({{tags}}) : une coquille ou une exigence renommée.`,untagged_other:`{{count}} étiquettes de test ne correspondent à aucune exigence ({{tags}}) : des coquilles ou des exigences renommées.`,showAll_one:`Afficher {{count}} de plus`,showAll_other:`Afficher {{count}} de plus`,showLess:`Afficher moins`},k={title:`Spec créée là où le travail est passé`,status:{planned:`Baseline prévue : {{requirements}} exigences tel-que-construit, {{tests}} tests de caractérisation`,passed:`Baseline prouvée sur le code inchangé : {{requirements}} exigences tel-que-construit, {{tests}} tests de caractérisation`,failed:`Baseline bloquée : les tests de caractérisation n'ont pas réussi sur le code inchangé, le module n'a donc pas été modifié`,violated:`Baseline bloquée : l'étape de baseline a modifié du code autre que des tests, le run s'est donc arrêté`,"not-needed":`Pas de baseline nécessaire : les specs couvrent déjà le code touché par ce changement`},module:`Module décrit :`,more_one:`et {{count}} fichier de plus`,more_other:`et {{count}} fichiers de plus`,spec:`Spec tel-que-construit :`,capability:`{{capability}} ({{demonstrated}}/{{requirements}} démontrées)`,cost:`Coût de la baseline {{amount}} sur {{turns}} tours, compté à part du changement`,costUnknown:`Coût de la baseline non communiqué par le fournisseur`,caveat:`Les tests de caractérisation décrivent le comportement actuel ; Core les a exécutés sur le code inchangé avant toute modification.`},A={title_one:`Regard humain requis : {{count}} règle du projet`,title_other:`Regard humain requis : {{count}} règles du projet`,caveat:`Règles écrites pour ce projet qu'aucun contrôle automatique ne peut faire respecter. Vérifiez-les vous-même avant d'accepter.`},j={label:`Vues de la revue`,overview:`Aperçu`,changes:`Modifications`},M={tab:`Modifications`,loading:`Chargement des modifications…`,error:`Impossible de charger les modifications.`,refresh:`Recharger les modifications`,empty:`Cette livraison n'a modifié aucun fichier.`,unavailable:{not_a_repository:`Le dossier du projet n'est pas un dépôt Git : il n'y a rien à comparer.`,no_branch:`Cette livraison n'a pas encore de branche à comparer.`,head_missing:`La branche de la livraison n'existe plus dans ce dépôt.`,base_missing:`La branche sur laquelle cette livraison s'appuyait n'existe plus ; les modifications ne peuvent pas être mesurées.`,git_failed:`Git n'a pas pu produire les modifications de cette livraison.`},summary:`Fichiers modifiés : {{count}}`,viewedCount:`{{viewed}} sur {{total}} vus`,truncatedList:`Seuls les {{count}} premiers fichiers sont affichés.`,source:`Modifications de`,sourceDelivery:`Toute la livraison`,sourceTicket:`Spec n° {{id}}`,tree:{label:`Fichiers modifiés`},status:{added:`Ajouté`,modified:`Modifié`,deleted:`Supprimé`,renamed:`Renommé`,copied:`Copié`,typechange:`Type modifié`},renamedFrom:`Renommé depuis {{path}}`,binaryShort:`binaire`,binary:`Fichier binaire : aucun diff texte à afficher.`,noTextChanges:`Aucune ligne modifiée (seuls le nom ou le mode du fichier ont changé).`,fileError:`Impossible de charger le diff de ce fichier.`,largeDiff:`Affichage des {{shown}} premières lignes modifiées sur {{total}}.`,loadFull:`Charger le diff complet du fichier`,viewed:{mark:`Marquer comme vu`,unmark:`Vu`,changedSince:`Modifié depuis votre lecture`},mode:{label:`Disposition du diff`,unified:`Unifié`,split:`Côte à côte`},diff:{region:`Diff de {{path}}`},line:{select:`Sélectionner la ligne {{n}}`,selectOld:`Sélectionner la ligne d'origine {{n}}`,added:`ajoutée`,removed:`supprimée`},selection:{clear:`Effacer la sélection`},ask:{button:`Demander une modification à l'agent`,title:`Que faut-il changer dans`,placeholder:`Décrivez la modification souhaitée…`,ticket:`Spec`,submit:`Ajouter à la spec`,hint:`Enregistré comme retour de revue sur la spec ; la prochaine exécution en tiendra compte.`,created:`Ajouté à la spec n° {{id}} comme retour de revue.`,open:`Ouvrir la spec`,failed:`Impossible d'ajouter la note à la spec.`},editor:{open:`Ouvrir dans {{editor}}`,rootRepository:`Ouvre le fichier dans votre copie du projet ; la branche de la revue n'y est peut-être pas extraite.`,names:{vscode:`VS Code`,cursor:`Cursor`,jetbrains:`JetBrains`},failed:`Impossible d’ouvrir {{editor}}. Est-il installé ? Changez-le dans Réglages ▸ Code.`},annotations:{title:`Sans ligne associée ({{count}})`,ask:`Demander une modification à l'agent`,source:{"reviewer-finding":`Constat du relecteur`,"review-risk":`Risque à vérifier`,"review-untested":`Non couvert par les tests`,"follow-up-comment":`Commentaire de revue`},severity:{high:`Élevée`,medium:`Moyenne`,low:`Faible`}},keys:{files:`fichiers`,annotations:`annotations`,viewed:`marquer comme vu`}},N={backToBoard:e,stillWorking:t,alreadyResolved:n,fineControlOnly:r,openPr:i,noSolutionRecorded:a,headline:o,confidence:s,cost:c,accept:l,requestChanges:u,discard:d,watchOut:f,sections:p,churn:m,tier:h,proof:g,watch:_,error:v,versions:y,drift:b,planned:x,outcome:S,followUp:C,addenda:w,derivation:T,brief:E,agentActions:D,requirements:O,baseline:k,humanEyes:A,tabs:j,changes:M};export{l as accept,w as addenda,D as agentActions,n as alreadyResolved,e as backToBoard,k as baseline,E as brief,M as changes,m as churn,s as confidence,c as cost,N as default,T as derivation,d as discard,b as drift,v as error,r as fineControlOnly,C as followUp,o as headline,A as humanEyes,a as noSolutionRecorded,i as openPr,S as outcome,x as planned,g as proof,u as requestChanges,O as requirements,p as sections,t as stillWorking,j as tabs,h as tier,y as versions,_ as watch,f as watchOut};
@@ -0,0 +1 @@
1
+ var e=`Volver al tablero`,t=`Todavía trabajando en esto…`,n=`Esto ya se ha resuelto.`,r=`Esta entrega necesita una decisión técnica. Usa los controles detallados del tablero.`,i=`Abrir pull request #{{number}}`,a=`No se registró ningún resumen.`,o={success:`Tu cambio está listo para revisar`,successMany:`Los {{count}} cambios están listos para revisar`,partial:`{{succeeded}} de {{total}} cambios están listos`,noChanges:`No hacía falta cambiar nada`,failed:`Esto no se pudo completar`,failedPartial:`Solo se pudo completar una parte`,generic:`Revisa el cambio entregado`},s={pill:`Confianza del revisor IA {{overall}}/100`,unavailable:`Sin puntuación del revisor`,tooltip:`La puntuación que el revisor IA se da a sí mismo — no es una comprobación independiente.`},c={thisBuild:`Este trabajo costó {{amount}}`,allVersions:`Todas las versiones juntas: {{amount}}`,baselinePart:` · {{amount}} de baseline`},l={"create-pr":`Aceptar y abrir un pull request`,publish:`Aceptar y enviar a revisión`,"merge-local":`Aceptar en mi proyecto`,"mark-done":`Aceptar — nada que cambiar`,generic:`Aceptar`,irreversibleWarning:`Esto escribe los cambios directamente en tu proyecto, en tu ordenador. No hay copia de revisión aparte y no se puede deshacer.`,irreversibleConfirm:`Sí, escríbelo en mi proyecto`},u={label:`Pedir cambios`,comingSoon:`Muy pronto: describe el cambio en una frase.`,prompt:`¿Qué quieres cambiar?`,placeholder:`p. ej. pon el botón de login en azul`,submit:`Enviar el cambio`,hint:`Quick SDD aplica el cambio sobre la rama existente y actualiza esta entrega.`},d={label:`Tirar esto`,stackedNote:`Los rails posteriores de este hito se construyeron sobre esta entrega. Descartarla pausa la cadena del hito; los rails posteriores conservan su trabajo.`,confirmTitle:`¿Tirar esta entrega?`,confirmBody:`La entrega y sus cambios se descartan. Esta acción no se puede deshacer.`},f={title:`Merece un vistazo antes de aceptar`},p={whatYouAsked:`Lo que pediste`,whatIDid:`Lo que se hizo`,howItWasChecked:`Cómo se comprobó`,whatTheAgentDid:`Qué hizo el agente`},m={line:`{{files}} archivos cambiados · +{{added}} / −{{removed}} líneas`,batchNotSplittable:`Los cambios de archivos se informan para toda la entrega, no por petición.`,testFiles_one:`{{count}} archivo de tests tocado`,testFiles_other:`{{count}} archivos de tests tocados`,noTestFiles:`Ningún archivo de tests tocado`},h={"app-verified":{title:`Medido por Specrails`,caveat:`Datos tomados de los cambios reales.`},"ai-reported":{title:`Informado por la IA`,caveat:`Palabras de la propia IA. Specrails no ejecutó estas comprobaciones.`},"reviewer-score":{title:`Autoevaluación del revisor IA`,caveat:`La IA calificando su propio trabajo — útil, pero no es una revisión independiente.`}},g={filesChanged:`{{files}} archivos cambiados (+{{added}} / −{{removed}} líneas)`,testFilesChanged:`Se cambiaron {{count}} archivos de test`,noTestFilesChanged:`No se cambió ningún archivo de test.`,commitsRecorded:`El trabajo se registró en {{branches}} rama(s)`,verificationPassed:`La IA informó de que sus comprobaciones pasaron ({{count}})`,verificationFailed:`La IA informó de que sus comprobaciones FALLARON ({{count}})`,noVerificationReported:`La IA no informó de ninguna verificación.`,verifyOutput:`Salida de verificación de la IA:`,reviewerScore:`Puntuación global {{overall}}/100`,reviewerAspect:`{{aspect}}: {{score}}/100`,reviewerScoreUnavailable:`No se generó puntuación del revisor.`,evidenceUnavailable:`sin evidencia`,hostCommandPassed:`El runtime ejecutó {{label}} por sí mismo: código de salida {{exitCode}} ({{seconds}} s)`,hostCommandFailed:`El runtime ejecutó {{label}} por sí mismo y FALLÓ: código de salida {{exitCode}} ({{seconds}} s)`,acceptanceCheckPassed:`Comprobación del revisor superada: {{name}}`,acceptanceCheckFailed:`Comprobación del revisor FALLIDA: {{name}}`,reviewerSummary:`Resumen del revisor IA:`,reviewerFinding:`El revisor IA señaló:`},_={humanReviewRecommended:`El revisor IA puntuó esto {{overall}}/100 y recomienda que lo mire una persona.`,lowConfidence:`El revisor IA puntuó esto solo {{overall}}/100.`,reviewerFlag:`El revisor señaló:`,noTestsForChangedCode:`{{files}} archivos de código cambiados sin cambios en tests.`},v={notFound:`No se encontró esta revisión.`,loadFailed:`No se pudo cargar la revisión.`,alreadyResolved:`Alguien ya respondió a esto.`,actionFailed:`Esa acción no se completó.`,revisionStale:`Esto se acaba de resolver en otro sitio — recarga para ver cómo está.`,revisionFailed:`No se pudo iniciar el cambio. Tu texto se ha conservado.`,revisionBudget:`El límite diario está agotado, así que el cambio no se inició. Tu texto se ha conservado.`},y={title:`Versiones anteriores ({{count}})`,label:`Versión {{version}}`,current:`estás viendo esta`,originalBuild:`El trabajo original.`},b={title:`Esto puede haberse salido de lo que pediste`,advisory:`Solo es una sugerencia — puedes seguir pidiendo cambios.`,costShare:`{{revisions}} cambio(s) han costado {{revisionCost}} — el {{share}}% de los {{originalCost}} del trabajo original.`,outOfScopeChurn:`{{files}} de {{total}} archivos cambiados no formaban parte de la petición original.`,revisionCount:`Ya has pedido {{revisions}} rondas de cambios. Reescribir la petición puede ser más rápido.`},x={title:`Enfoque previsto (según la spec)`,caveat:`Lo que proponía la petición, no un informe de lo que hizo la IA. Los hechos de arriba son lo que cambió de verdad.`},S={succeeded:`Implementado`,failed:`No se pudo completar`,noChanges:`No hacía falta cambiar nada`,notStarted:`No se empezó`,unknown:`Resultado desconocido`},C={title:`Comentarios de revisión a resolver ({{count}})`,caveat:`Lo que pediste corregir, congelado al lanzar. Los veredictos son el informe de la propia ejecución, no una afirmación de que todo está bien porque pasaron los tests.`,verdict:{resolved:`Resuelto`,partial:`Parcialmente resuelto`,blocked:`Bloqueado`,unreported:`Sin informe`},files:`Archivos`,tests:`Pruebas`,notes:`Notas`,noReport:`La ejecución no informó sobre este comentario. Revisa los cambios y la evidencia más abajo.`,excluded:`Descartado`,source:{pasted:`pegado por ti`,github:`de GitHub`}},w={title:`Anexos con los que se instruyó esta ejecución ({{count}})`,caveat:`Notas de iteración adjuntas a la spec y congeladas en el lanzamiento. Los veredictos son el informe de la propia ejecución, no una garantía de que todo esté bien porque pasaron los tests.`,kind:{"change-request":`Petición de cambio`,"review-feedback":`Feedback de revisión`,clarification:`Aclaración`,constraint:`Restricción`},verdict:{applied:`Aplicado`,partial:`Aplicado parcialmente`,blocked:`Bloqueado`,unreported:`Sin informar`},noReport:`La ejecución no informó sobre este anexo. Revisa los cambios y la evidencia más abajo.`},T={title:`Derivación`,coverage:`El diseño derivado explica {{explained}} de {{files}} ficheros cambiados`,change:`Cambio OpenSpec`,requirements:`Requisitos`,requirementsValue:`{{added}} añadidos · {{modified}} modificados`,confidence:`Confianza del derivador`,confidenceLevel:{high:`Alta`,medium:`Media`,low:`Baja`},confidenceUnknown:`No indicada`,caveat:`Specrails mide la cobertura con git; la confianza es la valoración del propio agente.`,unexplainedTitle_one:`{{count}} fichero cambiado sin explicar`,unexplainedTitle_other:`{{count}} ficheros cambiados sin explicar`,more_one:`…y {{count}} fichero más`,more_other:`…y {{count}} ficheros más`,unavailable:`No se pudo leer el informe de derivación de esta entrega Flow. Revisa el diff directamente.`,rewriteFailed:`No se pudo reescribir la spec a partir del cambio derivado; conserva su borrador de Flow. El cambio OpenSpec sigue siendo el registro técnico.`},E={title:`Qué mirar`,caveat:`Resumen orientativo del revisor de IA: dónde debería mirar primero una persona. No es un resultado de verificación y nunca bloquea una decisión.`,severity:{high:`Alto`,medium:`Medio`,low:`Bajo`},area:{data:`datos`,security:`seguridad`,api:`API`,ux:`UX`,performance:`rendimiento`,ops:`operaciones`,other:`otro`},sections:{risks:`Riesgos`,behaviourChanges:`Cambios de comportamiento`,invariantsTouched:`Invariantes afectados`,untested:`Rutas sin test`,humanChecks:`Comprobaciones humanas`,divergences:`Divergencias con la spec`},userVisible:`Visible para usuarios`,invariantStatus:{kept:`Se mantiene`,changed:`Cambia`,"at-risk":`En riesgo`},diagnostic:`Parte del resumen del revisor no se pudo usar:`,dropped_one:`{{count}} entrada del resumen no tenía el formato esperado y se omitió.`,dropped_other:`{{count}} entradas del resumen no tenían el formato esperado y se omitieron.`,topRisk:`Riesgo principal`,moreRisks_one:`+{{count}} más`,moreRisks_other:`+{{count}} más`},D={total_one:`{{count}} acción`,total_other:`{{count}} acciones`,countsLabel:`Acciones del agente registradas por tipo`,kinds:{read:`lecturas`,write:`escrituras`,exec:`comandos`,mcp:`llamadas MCP`,network:`peticiones web`},caveat:`Registrado a partir de los propios streams de los agentes: las lecturas son tan completas como las informe cada proveedor. Nunca se guardan contenidos ni valores de entorno.`,run:`Ejecución {{id}}`,download:`{{format}}`,downloadFailed:`No se pudieron descargar las acciones del agente`},O={title:`Requisitos demostrados {{demonstrated}}/{{total}}`,touched:`Tocados por este cambio: {{demonstrated}}/{{total}} demostrados`,caveat:`Medido por Specrails: un requisito cuenta cuando un test etiquetado con su id se ejecutó en una verificación que pasó. Es orientativo; no cambia la revisión.`,caveatNoReceipt:`Parte de esta traza no tiene un recibo de verificación detrás, así que esos requisitos aún no pueden contar como demostrados.`,undemonstratedTitle_one:`{{count}} requisito no demostrado`,undemonstratedTitle_other:`{{count}} requisitos no demostrados`,demonstratedTitle_one:`{{count}} requisito demostrado`,demonstratedTitle_other:`{{count}} requisitos demostrados`,reason:{"no-test":`sin test etiquetado`,"not-executed":`el test etiquetado no se ejecutó`,failed:`el test etiquetado falló`},touchedBadge:`cambiado aquí`,untagged_one:`{{count}} etiqueta de test no corresponde a ningún requisito ({{tags}}): una errata o un requisito renombrado.`,untagged_other:`{{count}} etiquetas de test no corresponden a ningún requisito ({{tags}}): erratas o requisitos renombrados.`,showAll_one:`Mostrar {{count}} más`,showAll_other:`Mostrar {{count}} más`,showLess:`Mostrar menos`},k={title:`Spec creada por donde pasa el trabajo`,status:{planned:`Baseline planificado: {{requirements}} requisitos as-built, {{tests}} tests de caracterización`,passed:`Baseline demostrado sobre el código sin cambios: {{requirements}} requisitos as-built, {{tests}} tests de caracterización`,failed:`Baseline bloqueado: los tests de caracterización no pasaron sobre el código sin cambios, así que no se editó el módulo`,violated:`Baseline bloqueado: el paso de baseline editó código que no era de test, así que la ejecución se detuvo`,"not-needed":`No hace falta baseline: las specs ya cubren el código que toca este cambio`},module:`Módulo descrito:`,more_one:`y {{count}} fichero más`,more_other:`y {{count}} ficheros más`,spec:`Spec as-built:`,capability:`{{capability}} ({{demonstrated}}/{{requirements}} demostrados)`,cost:`Coste del baseline {{amount}} en {{turns}} turnos, contado aparte del cambio`,costUnknown:`El proveedor no informó del coste del baseline`,caveat:`Los tests de caracterización describen el comportamiento actual; Core los ejecutó sobre el código sin cambios antes de cualquier edición.`},A={title_one:`Requiere ojo humano: {{count}} regla del proyecto`,title_other:`Requiere ojo humano: {{count}} reglas del proyecto`,caveat:`Reglas escritas para este proyecto que ningún check automático puede hacer cumplir. Revísalas tú antes de aceptar.`},j={label:`Vistas de la revisión`,overview:`Resumen`,changes:`Cambios`},M={tab:`Cambios`,loading:`Cargando los cambios…`,error:`No se pudieron cargar los cambios.`,refresh:`Recargar los cambios`,empty:`Esta entrega no cambió ningún archivo.`,unavailable:{not_a_repository:`La carpeta del proyecto no es un repositorio Git, así que no hay nada que comparar.`,no_branch:`Esta entrega todavía no tiene una rama que comparar.`,head_missing:`La rama de la entrega ya no existe en este repositorio.`,base_missing:`La rama en la que se basó esta entrega ya no existe, así que no se pueden medir los cambios.`,git_failed:`Git no pudo generar los cambios de esta entrega.`},summary:`Archivos cambiados: {{count}}`,viewedCount:`{{viewed}} de {{total}} vistos`,truncatedList:`Solo se muestran los primeros {{count}} archivos.`,source:`Cambios de`,sourceDelivery:`Toda la entrega`,sourceTicket:`Spec #{{id}}`,tree:{label:`Archivos cambiados`},status:{added:`Añadido`,modified:`Modificado`,deleted:`Eliminado`,renamed:`Renombrado`,copied:`Copiado`,typechange:`Tipo cambiado`},renamedFrom:`Renombrado desde {{path}}`,binaryShort:`binario`,binary:`Archivo binario: no hay diff de texto que mostrar.`,noTextChanges:`Sin cambios de líneas (solo cambió el nombre o el modo del archivo).`,fileError:`No se pudo cargar el diff de este archivo.`,largeDiff:`Se muestran las primeras {{shown}} de {{total}} líneas cambiadas.`,loadFull:`Cargar el diff completo del archivo`,viewed:{mark:`Marcar como visto`,unmark:`Visto`,changedSince:`Cambió desde que lo viste`},mode:{label:`Disposición del diff`,unified:`Unificado`,split:`Dividido`},diff:{region:`Diff de {{path}}`},line:{select:`Seleccionar la línea {{n}}`,selectOld:`Seleccionar la línea original {{n}}`,added:`añadida`,removed:`eliminada`},selection:{clear:`Borrar la selección`},ask:{button:`Pedir un cambio al agente`,title:`Cambio a hacer en`,placeholder:`Describe el cambio que quieres…`,ticket:`Spec`,submit:`Añadir a la spec`,hint:`Se guarda como feedback de revisión en la spec; la próxima ejecución sobre ella lo recibirá.`,created:`Añadido a la spec #{{id}} como feedback de revisión.`,open:`Abrir spec`,failed:`No se pudo añadir la nota a la spec.`},editor:{open:`Abrir en {{editor}}`,rootRepository:`Abre el archivo en tu copia del proyecto; puede que la rama de la revisión no esté activa allí.`,names:{vscode:`VS Code`,cursor:`Cursor`,jetbrains:`JetBrains`},failed:`No se pudo abrir {{editor}}. ¿Está instalado? Cámbialo en Ajustes ▸ Código.`},annotations:{title:`Sin línea asociada ({{count}})`,ask:`Pedir un cambio al agente`,source:{"reviewer-finding":`Hallazgo del revisor`,"review-risk":`Riesgo a comprobar`,"review-untested":`Sin cobertura de tests`,"follow-up-comment":`Comentario de revisión`},severity:{high:`Alta`,medium:`Media`,low:`Baja`}},keys:{files:`archivos`,annotations:`anotaciones`,viewed:`marcar visto`}},N={backToBoard:e,stillWorking:t,alreadyResolved:n,fineControlOnly:r,openPr:i,noSolutionRecorded:a,headline:o,confidence:s,cost:c,accept:l,requestChanges:u,discard:d,watchOut:f,sections:p,churn:m,tier:h,proof:g,watch:_,error:v,versions:y,drift:b,planned:x,outcome:S,followUp:C,addenda:w,derivation:T,brief:E,agentActions:D,requirements:O,baseline:k,humanEyes:A,tabs:j,changes:M};export{l as accept,w as addenda,D as agentActions,n as alreadyResolved,e as backToBoard,k as baseline,E as brief,M as changes,m as churn,s as confidence,c as cost,N as default,T as derivation,d as discard,b as drift,v as error,r as fineControlOnly,C as followUp,o as headline,A as humanEyes,a as noSolutionRecorded,i as openPr,S as outcome,x as planned,g as proof,u as requestChanges,O as requirements,p as sections,t as stillWorking,j as tabs,h as tier,y as versions,_ as watch,f as watchOut};
@@ -0,0 +1 @@
1
+ var e=`ボードに戻る`,t=`まだ作業中です…`,n=`これはすでに解決済みです。`,r=`この納品には技術的な判断が必要です。ボードの詳細操作を使ってください。`,i=`プルリクエスト #{{number}} を開く`,a=`要約は記録されていません。`,o={success:`変更のレビュー準備ができました`,successMany:`{{count}} 件すべての変更がレビュー可能です`,partial:`{{total}} 件のうち {{succeeded}} 件が完了`,noChanges:`変更は不要でした`,failed:`完了できませんでした`,failedPartial:`一部しか完了できませんでした`,generic:`納品された変更を確認してください`},s={pill:`AI レビュアーの確信度 {{overall}}/100`,unavailable:`レビュアースコアなし`,tooltip:`AI レビュアーが自分に付けたスコアです — 独立した検証ではありません。`},c={thisBuild:`この作業の費用 {{amount}}`,allVersions:`全バージョン合計:{{amount}}`,baselinePart:`(うちベースライン {{amount}})`},l={"create-pr":`承認してプルリクエストを作成`,publish:`承認してレビューに出す`,"merge-local":`自分のプロジェクトに取り込む`,"mark-done":`承認 — 変更なし`,generic:`承認`,irreversibleWarning:`変更をあなたのパソコンのプロジェクトへ直接書き込みます。別のレビュー用コピーはなく、取り消せません。`,irreversibleConfirm:`はい、プロジェクトに書き込む`},u={label:`修正を依頼`,comingSoon:`近日公開:修正内容を一文で伝えられます。`,prompt:`何を変更しますか?`,placeholder:`例:ログインボタンを青にする`,submit:`変更を送る`,hint:`Quick SDD が既存のブランチに変更を適用し、この成果物を更新します。`},d={label:`破棄する`,stackedNote:`このマイルストーンの後続レールはこの納品を基に構築されています。破棄するとマイルストーンのチェーンが一時停止します。後続レールの作業は保持されます。`,confirmTitle:`この成果物を破棄しますか?`,confirmBody:`この成果物とその変更は破棄されます。元に戻すことはできません。`},f={title:`承認する前に確認したい点`},p={whatYouAsked:`依頼した内容`,whatIDid:`行われた作業`,howItWasChecked:`確認の方法`,whatTheAgentDid:`エージェントが行ったこと`},m={line:`{{files}} ファイル変更 · +{{added}} / −{{removed}} 行`,batchNotSplittable:`ファイル変更は納品全体の集計で、依頼ごとではありません。`,testFiles_one:`{{count}} 件のテストファイルを変更`,testFiles_other:`{{count}} 件のテストファイルを変更`,noTestFiles:`テストファイルの変更なし`},h={"app-verified":{title:`Specrails が計測`,caveat:`実際の変更から得た事実です。`},"ai-reported":{title:`AI の報告`,caveat:`AI 自身の言葉です。Specrails はこれらの検査を実行していません。`},"reviewer-score":{title:`AI レビュアーの自己評価`,caveat:`AI が自分の作業を採点したもの — 参考にはなりますが独立したレビューではありません。`}},g={filesChanged:`{{files}} ファイル変更(+{{added}} / −{{removed}} 行)`,testFilesChanged:`テストファイル {{count}} 件を変更`,noTestFilesChanged:`テストファイルの変更はありません。`,commitsRecorded:`作業は {{branches}} 本のブランチに記録されました`,verificationPassed:`AI は検査に合格したと報告しました({{count}})`,verificationFailed:`AI は検査が失敗したと報告しました({{count}})`,noVerificationReported:`AI は検証を報告しませんでした。`,verifyOutput:`AI の検証出力:`,reviewerScore:`総合スコア {{overall}}/100`,reviewerAspect:`{{aspect}}:{{score}}/100`,reviewerScoreUnavailable:`レビュアースコアは生成されませんでした。`,evidenceUnavailable:`証跡なし`,hostCommandPassed:`ランタイムが {{label}} を自ら実行しました: 終了コード {{exitCode}}({{seconds}} 秒)`,hostCommandFailed:`ランタイムが {{label}} を自ら実行し、失敗しました: 終了コード {{exitCode}}({{seconds}} 秒)`,acceptanceCheckPassed:`レビュアーのチェックに合格: {{name}}`,acceptanceCheckFailed:`レビュアーのチェックに失敗: {{name}}`,reviewerSummary:`AI レビュアーの要約:`,reviewerFinding:`AI レビュアーの指摘:`},_={humanReviewRecommended:`AI レビュアーは {{overall}}/100 と評価し、人による確認を推奨しています。`,lowConfidence:`AI レビュアーの評価は {{overall}}/100 にとどまりました。`,reviewerFlag:`レビュアーの指摘:`,noTestsForChangedCode:`コード {{files}} ファイルが変更されましたが、テストの変更はありません。`},v={notFound:`このレビューは見つかりませんでした。`,loadFailed:`レビューを読み込めませんでした。`,alreadyResolved:`すでに誰かが回答しています。`,actionFailed:`その操作は完了しませんでした。`,revisionStale:`これは別の場所で解決済みです — 再読み込みして状態を確認してください。`,revisionFailed:`変更を開始できませんでした。入力した文章は保持されています。`,revisionBudget:`1日の予算を使い切っているため、変更は開始されませんでした。入力したテキストは保持されています。`},y={title:`以前のバージョン({{count}})`,label:`バージョン {{version}}`,current:`いま見ているもの`,originalBuild:`最初の成果。`},b={title:`当初の依頼から広がっているようです`,advisory:`あくまで提案です — 修正を続けて依頼できます。`,costShare:`{{revisions}} 件の変更で {{revisionCost}} かかりました — 当初 {{originalCost}} の {{share}}% です。`,outOfScopeChurn:`変更された {{total}} ファイルのうち {{files}} 件は当初の依頼に含まれていませんでした。`,revisionCount:`すでに {{revisions}} 回の修正を依頼しています。依頼を書き直したほうが早いかもしれません。`},x={title:`予定していたアプローチ(スペックより)`,caveat:`依頼で提案された内容であり、AI が実際に行ったことの報告ではありません。上の事実が実際に変更された内容です。`},S={succeeded:`実装済み`,failed:`完了できませんでした`,noChanges:`変更は不要でした`,notStarted:`未着手`,unknown:`結果不明`},C={title:`解決すべきレビューコメント({{count}})`,caveat:`修正を依頼した内容で、起動時に凍結されます。以下の判定は実行自身の報告であり、テストが通ったから問題ないという主張ではありません。`,verdict:{resolved:`解決済み`,partial:`一部解決`,blocked:`ブロック`,unreported:`未報告`},files:`ファイル`,tests:`テスト`,notes:`メモ`,noReport:`この実行はこのコメントについて報告していません。下の変更と証拠を確認してください。`,excluded:`対象外`,source:{pasted:`あなたが貼り付け`,github:`GitHub から`}},w={title:`この実行に渡されたスペック補足({{count}})`,caveat:`スペックに添付され起動時に凍結された反復メモ。以下の判定は実行自身の報告であり、テストが通ったから問題ないという主張ではありません。`,kind:{"change-request":`変更依頼`,"review-feedback":`レビューフィードバック`,clarification:`明確化`,constraint:`制約`},verdict:{applied:`適用済み`,partial:`一部適用`,blocked:`ブロック`,unreported:`未報告`},noReport:`実行はこの補足について報告しませんでした。以下の変更と証拠を確認してください。`},T={title:`導出`,coverage:`変更された {{files}} 個のファイルのうち {{explained}} 個が導出された設計で説明されています`,change:`OpenSpec 変更`,requirements:`要件`,requirementsValue:`追加 {{added}} · 変更 {{modified}}`,confidence:`導出エージェントの確信度`,confidenceLevel:{high:`高`,medium:`中`,low:`低`},confidenceUnknown:`未報告`,caveat:`カバレッジは Specrails が git で測定したものです。確信度はエージェント自身の評価です。`,unexplainedTitle_one:`説明されていない変更ファイルが {{count}} 個あります`,unexplainedTitle_other:`説明されていない変更ファイルが {{count}} 個あります`,more_one:`…ほか {{count}} 個のファイル`,more_other:`…ほか {{count}} 個のファイル`,unavailable:`この Flow 配信の導出レポートを読み取れませんでした。差分を直接確認してください。`,rewriteFailed:`導出された変更から spec を書き直せませんでした。Flow の下書きのままです。OpenSpec 変更は引き続き技術的な記録です。`},E={title:`確認すべき点`,caveat:`AI レビュアーによる参考情報です。人が最初に確認すべき箇所を示します。検証結果ではなく、判断をブロックすることもありません。`,severity:{high:`高`,medium:`中`,low:`低`},area:{data:`データ`,security:`セキュリティ`,api:`API`,ux:`UX`,performance:`パフォーマンス`,ops:`運用`,other:`その他`},sections:{risks:`リスク`,behaviourChanges:`動作の変更`,invariantsTouched:`影響を受ける不変条件`,untested:`テストされていないパス`,humanChecks:`人による確認`,divergences:`仕様との相違`},userVisible:`ユーザーに見える`,invariantStatus:{kept:`維持`,changed:`変更`,"at-risk":`リスクあり`},diagnostic:`レビュアーの概要の一部を使用できませんでした:`,dropped_one:`{{count}} 件の項目が想定形式と一致しないためスキップしました。`,dropped_other:`{{count}} 件の項目が想定形式と一致しないためスキップしました。`,topRisk:`最大のリスク`,moreRisks_one:`他 {{count}} 件`,moreRisks_other:`他 {{count}} 件`},D={total_one:`{{count}} 件のアクション`,total_other:`{{count}} 件のアクション`,countsLabel:`種類別に記録されたエージェントのアクション`,kinds:{read:`読み取り`,write:`書き込み`,exec:`コマンド`,mcp:`MCP 呼び出し`,network:`Web リクエスト`},caveat:`エージェント自身のストリームから記録しています。読み取りの網羅性は各プロバイダーの報告内容に依存します。内容や環境変数の値は保存されません。`,run:`実行 {{id}}`,download:`{{format}}`,downloadFailed:`エージェントのアクションをダウンロードできませんでした`},O={title:`実証済みの要件 {{demonstrated}}/{{total}}`,touched:`この変更で触れた要件:{{demonstrated}}/{{total}} 実証済み`,caveat:`Specrails による計測:要件 ID のタグが付いたテストが成功した検証で実行された場合に数えます。参考情報であり、レビュー結果は変わりません。`,caveatNoReceipt:`このトレースの一部には検証レシートがないため、それらの要件はまだ実証済みとして数えられません。`,undemonstratedTitle_other:`未実証の要件 {{count}} 件`,demonstratedTitle_other:`実証済みの要件 {{count}} 件`,reason:{"no-test":`タグ付きテストなし`,"not-executed":`タグ付きテストが実行されていない`,failed:`タグ付きテストが失敗`},touchedBadge:`ここで変更`,untagged_other:`どの要件にも一致しないテストタグが {{count}} 件あります({{tags}}):誤記か名前が変わった要件です。`,showAll_other:`さらに {{count}} 件表示`,showLess:`表示を減らす`,undemonstratedTitle_one:`未実証の要件 {{count}} 件`,demonstratedTitle_one:`実証済みの要件 {{count}} 件`,untagged_one:`どの要件にも一致しないテストタグが {{count}} 件あります({{tags}}):誤記か名前が変わった要件です。`,showAll_one:`さらに {{count}} 件表示`},k={title:`作業が触れた箇所にスペックを作成`,status:{planned:`ベースライン計画済み:現状要件 {{requirements}} 件、特性テスト {{tests}} 件`,passed:`変更前のコードでベースラインを実証:現状要件 {{requirements}} 件、特性テスト {{tests}} 件`,failed:`ベースラインでブロック:変更前のコードで特性テストが通らなかったため、モジュールは編集されていません`,violated:`ベースラインでブロック:ベースライン工程がテスト以外のコードを編集したため、実行を停止しました`,"not-needed":`ベースライン不要:この変更が触れるコードは既存のスペックでカバーされています`},module:`記述したモジュール:`,more_other:`ほか {{count}} ファイル`,spec:`現状スペック:`,capability:`{{capability}}({{demonstrated}}/{{requirements}} 実証済み)`,cost:`ベースラインのコスト {{amount}}({{turns}} ターン)、変更とは別に集計`,costUnknown:`プロバイダーがベースラインのコストを報告していません`,caveat:`特性テストは現在の動作を記述します。Core は編集前に変更前のコードでそれらを実行しました。`,more_one:`ほか {{count}} ファイル`},A={title_other:`人の目による確認が必要:プロジェクトルール {{count}} 件`,caveat:`このプロジェクト向けに書かれた、自動チェックでは強制できないルールです。承認する前にご自身で確認してください。`,title_one:`人の目による確認が必要:プロジェクトルール {{count}} 件`},j={label:`レビューの表示`,overview:`概要`,changes:`変更`},M={tab:`変更`,loading:`変更を読み込み中…`,error:`変更を読み込めませんでした。`,refresh:`変更を再読み込み`,empty:`この納品ではファイルが変更されていません。`,unavailable:{not_a_repository:`プロジェクトフォルダーが Git リポジトリではないため、比較できるものがありません。`,no_branch:`この納品には、まだ比較するブランチがありません。`,head_missing:`この納品のブランチはこのリポジトリにもう存在しません。`,base_missing:`この納品の基点となったブランチがもう存在しないため、変更を測定できません。`,git_failed:`Git がこの納品の変更を取得できませんでした。`},summary:`変更されたファイル: {{count}}`,viewedCount:`{{total}} 件中 {{viewed}} 件を確認済み`,truncatedList:`最初の {{count}} ファイルのみ表示しています。`,source:`変更の対象`,sourceDelivery:`納品全体`,sourceTicket:`スペック #{{id}}`,tree:{label:`変更されたファイル`},status:{added:`追加`,modified:`変更`,deleted:`削除`,renamed:`名前変更`,copied:`コピー`,typechange:`種類の変更`},renamedFrom:`{{path}} から名前変更`,binaryShort:`バイナリ`,binary:`バイナリファイル: 表示できるテキスト差分はありません。`,noTextChanges:`行の変更はありません(ファイル名またはモードのみ変更)。`,fileError:`このファイルの差分を読み込めませんでした。`,largeDiff:`変更された {{total}} 行のうち最初の {{shown}} 行を表示しています。`,loadFull:`ファイル全体の差分を読み込む`,viewed:{mark:`確認済みにする`,unmark:`確認済み`,changedSince:`確認後に変更されました`},mode:{label:`差分のレイアウト`,unified:`統合`,split:`並べて表示`},diff:{region:`{{path}} の差分`},line:{select:`{{n}} 行目を選択`,selectOld:`元の {{n}} 行目を選択`,added:`追加`,removed:`削除`},selection:{clear:`選択を解除`},ask:{button:`エージェントに変更を依頼`,title:`変更してほしい内容:`,placeholder:`希望する変更を書いてください…`,ticket:`追加先のスペック`,submit:`スペックに追加`,hint:`レビューフィードバックとしてスペックに保存され、次回の実行に反映されます。`,created:`レビューフィードバックとしてスペック #{{id}} に追加しました。`,open:`スペックを開く`,failed:`メモをスペックに追加できませんでした。`},editor:{open:`{{editor}} で開く`,rootRepository:`お使いのプロジェクトのチェックアウトでファイルを開きます。レビュー対象のブランチがそこでチェックアウトされていない場合があります。`,names:{vscode:`VS Code`,cursor:`Cursor`,jetbrains:`JetBrains`},failed:`{{editor}} を開けませんでした。インストールされていますか? 設定 ▸ コード で変更できます。`},annotations:{title:`行に紐づかないもの({{count}})`,ask:`エージェントに変更を依頼`,source:{"reviewer-finding":`レビュアーの指摘`,"review-risk":`確認すべきリスク`,"review-untested":`テストの対象外`,"follow-up-comment":`レビューコメント`},severity:{high:`高`,medium:`中`,low:`低`}},keys:{files:`ファイル`,annotations:`注釈`,viewed:`確認済みにする`}},N={backToBoard:e,stillWorking:t,alreadyResolved:n,fineControlOnly:r,openPr:i,noSolutionRecorded:a,headline:o,confidence:s,cost:c,accept:l,requestChanges:u,discard:d,watchOut:f,sections:p,churn:m,tier:h,proof:g,watch:_,error:v,versions:y,drift:b,planned:x,outcome:S,followUp:C,addenda:w,derivation:T,brief:E,agentActions:D,requirements:O,baseline:k,humanEyes:A,tabs:j,changes:M};export{l as accept,w as addenda,D as agentActions,n as alreadyResolved,e as backToBoard,k as baseline,E as brief,M as changes,m as churn,s as confidence,c as cost,N as default,T as derivation,d as discard,b as drift,v as error,r as fineControlOnly,C as followUp,o as headline,A as humanEyes,a as noSolutionRecorded,i as openPr,S as outcome,x as planned,g as proof,u as requestChanges,O as requirements,p as sections,t as stillWorking,j as tabs,h as tier,y as versions,_ as watch,f as watchOut};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({accept:()=>d,addenda:()=>E,agentActions:()=>k,alreadyResolved:()=>i,backToBoard:()=>n,baseline:()=>j,brief:()=>O,changes:()=>P,churn:()=>g,confidence:()=>l,cost:()=>u,default:()=>F,derivation:()=>D,discard:()=>p,drift:()=>S,error:()=>b,fineControlOnly:()=>a,followUp:()=>T,headline:()=>c,humanEyes:()=>M,noSolutionRecorded:()=>s,openPr:()=>o,outcome:()=>w,planned:()=>C,proof:()=>v,requestChanges:()=>f,requirements:()=>A,sections:()=>h,stillWorking:()=>r,tabs:()=>N,tier:()=>_,versions:()=>x,watch:()=>y,watchOut:()=>m}),n=`Back to the board`,r=`Still working on this…`,i=`This has already been resolved.`,a=`This delivery needs a technical decision. Use the detailed controls on the board.`,o=`Open pull request #{{number}}`,s=`No summary was recorded.`,c={success:`Your change is ready for review`,successMany:`All {{count}} changes are ready for review`,partial:`{{succeeded}} of {{total}} changes are ready`,noChanges:`Nothing needed changing`,failed:`This could not be completed`,failedPartial:`Only part of this could be completed`,generic:`Review the delivered change`},l={pill:`AI reviewer confidence {{overall}}/100`,unavailable:`No reviewer score`,tooltip:`The AI reviewer's own score for its work — not an independent check.`},u={thisBuild:`This build cost {{amount}}`,allVersions:`All versions together: {{amount}}`,baselinePart:` · baseline {{amount}} of it`},d={"create-pr":`Accept and open a pull request`,publish:`Accept and send for review`,"merge-local":`Accept into my project`,"mark-done":`Accept — nothing to change`,generic:`Accept`,irreversibleWarning:`This writes the changes directly into your project on your computer. There is no separate review copy and this cannot be undone.`,irreversibleConfirm:`Yes, write it into my project`},f={label:`Ask for changes`,comingSoon:`Coming next: describe the change in one sentence.`,prompt:`What would you like changed?`,placeholder:`e.g. make the login button blue`,submit:`Send the change`,hint:`Quick SDD applies your change on the existing branch and updates this delivery.`},p={label:`Throw this away`,stackedNote:`Later rails of this milestone were built on this delivery. Discarding it pauses the milestone chain; the later rails keep their work.`,confirmTitle:`Throw this delivery away?`,confirmBody:`The delivery and its changes are thrown away. This cannot be undone.`},m={title:`Worth a look before you accept`},h={whatYouAsked:`What you asked for`,whatIDid:`What was done`,howItWasChecked:`How it was checked`,whatTheAgentDid:`What the agent did`},g={line:`{{files}} files changed · +{{added}} / −{{removed}} lines`,batchNotSplittable:`File changes are reported for the whole delivery, not per request.`,testFiles_one:`{{count}} test file touched`,testFiles_other:`{{count}} test files touched`,noTestFiles:`No test files touched`},_={"app-verified":{title:`Measured by Specrails`,caveat:`Facts taken from the actual changes.`},"ai-reported":{title:`Reported by the AI`,caveat:`The AI's own words. Specrails did not run these checks itself.`},"reviewer-score":{title:`AI reviewer's self-assessment`,caveat:`The AI grading its own work — useful, but not an independent review.`}},v={filesChanged:`{{files}} files changed (+{{added}} / −{{removed}} lines)`,testFilesChanged:`{{count}} test files were changed`,noTestFilesChanged:`No test files were changed.`,commitsRecorded:`Work was recorded on {{branches}} branch(es)`,verificationPassed:`The AI reported its checks passed ({{count}})`,verificationFailed:`The AI reported its checks FAILED ({{count}})`,noVerificationReported:`The AI did not report any verification.`,verifyOutput:`The AI's verification output:`,reviewerScore:`Overall score {{overall}}/100`,reviewerAspect:`{{aspect}}: {{score}}/100`,reviewerScoreUnavailable:`No reviewer score was produced.`,evidenceUnavailable:`evidence unavailable`,hostCommandPassed:`The runtime ran {{label}} itself: exit code {{exitCode}} ({{seconds}}s)`,hostCommandFailed:`The runtime ran {{label}} itself and it FAILED: exit code {{exitCode}} ({{seconds}}s)`,acceptanceCheckPassed:`Reviewer check passed: {{name}}`,acceptanceCheckFailed:`Reviewer check FAILED: {{name}}`,reviewerSummary:`The AI reviewer's summary:`,reviewerFinding:`The AI reviewer noted:`},y={humanReviewRecommended:`The AI reviewer scored this {{overall}}/100 and recommends a person look at it.`,lowConfidence:`The AI reviewer scored this only {{overall}}/100.`,reviewerFlag:`The reviewer flagged:`,noTestsForChangedCode:`{{files}} code files changed with no test changes.`},b={notFound:`This review could not be found.`,loadFailed:`The review could not be loaded.`,alreadyResolved:`Someone already answered this.`,actionFailed:`That action did not go through.`,revisionStale:`This was just resolved elsewhere — reload to see where it stands.`,revisionFailed:`The change could not be started. Your text was kept.`,revisionBudget:`The daily limit is exhausted, so the change was not started. Your text was kept.`},x={title:`Earlier versions ({{count}})`,label:`Version {{version}}`,current:`you're looking at this one`,originalBuild:`The original build.`},S={title:`This may have outgrown its original request`,advisory:`Only a suggestion — you can keep asking for changes.`,costShare:`{{revisions}} change(s) have cost {{revisionCost}} — {{share}}% of the {{originalCost}} original build.`,outOfScopeChurn:`{{files}} of {{total}} changed files were never part of the original request.`,revisionCount:`You've asked for {{revisions}} rounds of changes. Rewriting the request may be quicker.`},C={title:`Planned approach (from the spec)`,caveat:`What the request proposed — not a report of what the AI did. The facts above are what actually changed.`},w={succeeded:`Implemented`,failed:`Could not be completed`,noChanges:`Nothing needed changing`,notStarted:`Not started`,unknown:`Outcome unknown`},T={title:`Review comments to resolve ({{count}})`,caveat:`What you asked the run to fix, frozen at launch. Verdicts below are the run’s own report — not a claim that everything is fine because the tests passed.`,verdict:{resolved:`Resolved`,partial:`Partially resolved`,blocked:`Blocked`,unreported:`Not reported`},files:`Files`,tests:`Tests`,notes:`Notes`,noReport:`The run did not report this comment. Check the changes and evidence below.`,excluded:`Ruled out`,source:{pasted:`pasted by you`,github:`from GitHub`}},E={title:`Spec addenda this run was briefed with ({{count}})`,caveat:`Iteration notes attached to the spec and frozen at launch. Verdicts below are the run's own report — not a claim that everything is fine because the tests passed.`,kind:{"change-request":`Change request`,"review-feedback":`Review feedback`,clarification:`Clarification`,constraint:`Constraint`},verdict:{applied:`Applied`,partial:`Partially applied`,blocked:`Blocked`,unreported:`Not reported`},noReport:`The run did not report this addendum. Check the changes and evidence below.`},D={title:`Derivation`,coverage:`{{explained}} of {{files}} changed files are explained by the derived design`,change:`OpenSpec change`,requirements:`Requirements`,requirementsValue:`{{added}} added · {{modified}} modified`,confidence:`Deriver confidence`,confidenceLevel:{high:`High`,medium:`Medium`,low:`Low`},confidenceUnknown:`Not reported`,caveat:`Coverage is measured by Specrails from git; the confidence is the agent's own assessment.`,unexplainedTitle_one:`{{count}} changed file is not explained`,unexplainedTitle_other:`{{count}} changed files are not explained`,more_one:`…and {{count}} more file`,more_other:`…and {{count}} more files`,unavailable:`The derivation report of this Flow delivery could not be read. Review the diff directly.`,rewriteFailed:`The spec could not be rewritten from the derived change; it keeps its Flow draft. The OpenSpec change is still the technical record.`},O={title:`What to look at`,caveat:`The AI reviewer's advisory brief: where a human should look first. It is not a verification result and never blocks a decision.`,severity:{high:`High`,medium:`Medium`,low:`Low`},area:{data:`data`,security:`security`,api:`API`,ux:`UX`,performance:`performance`,ops:`operations`,other:`other`},sections:{risks:`Risks`,behaviourChanges:`Behaviour changes`,invariantsTouched:`Invariants touched`,untested:`Untested paths`,humanChecks:`Human checks`,divergences:`Spec divergences`},userVisible:`Visible to users`,invariantStatus:{kept:`Kept`,changed:`Changed`,"at-risk":`At risk`},diagnostic:`Part of the reviewer's brief could not be used:`,dropped_one:`{{count}} brief entry did not match the expected format and was skipped.`,dropped_other:`{{count}} brief entries did not match the expected format and were skipped.`,topRisk:`Top risk`,moreRisks_one:`+{{count}} more`,moreRisks_other:`+{{count}} more`},k={total_one:`{{count}} action`,total_other:`{{count}} actions`,countsLabel:`Recorded agent actions by kind`,kinds:{read:`reads`,write:`writes`,exec:`commands`,mcp:`MCP calls`,network:`web requests`},caveat:`Recorded from the agents' own streams: reads are only as complete as each provider reports them. Contents and environment values are never stored.`,run:`Run {{id}}`,download:`{{format}}`,downloadFailed:`Could not download the agent actions`},A={title:`Requirements demonstrated {{demonstrated}}/{{total}}`,touched:`Touched by this change: {{demonstrated}}/{{total}} demonstrated`,caveat:`Measured by Specrails: a requirement counts when a test tagged with its id ran in a passing verification. Advisory; it does not change the review.`,caveatNoReceipt:`No verification receipt backs part of this trace, so those requirements cannot count as demonstrated yet.`,undemonstratedTitle_one:`{{count}} requirement not demonstrated`,undemonstratedTitle_other:`{{count}} requirements not demonstrated`,demonstratedTitle_one:`{{count}} requirement demonstrated`,demonstratedTitle_other:`{{count}} requirements demonstrated`,reason:{"no-test":`no tagged test`,"not-executed":`tagged test did not run`,failed:`tagged test failed`},touchedBadge:`changed here`,untagged_one:`{{count}} test tag matches no requirement ({{tags}}): a typo or a renamed requirement.`,untagged_other:`{{count}} test tags match no requirement ({{tags}}): typos or renamed requirements.`,showAll_one:`Show {{count}} more`,showAll_other:`Show {{count}} more`,showLess:`Show less`},j={title:`Spec created where the work passed`,status:{planned:`Baseline planned: {{requirements}} as-built requirements, {{tests}} characterization tests`,passed:`Baseline proven on the unchanged code: {{requirements}} as-built requirements, {{tests}} characterization tests`,failed:`Baseline blocked: the characterization tests did not pass on the unchanged code, so the module was not edited`,violated:`Baseline blocked: the baseline step edited code other than tests, so the run stopped`,"not-needed":`No baseline needed: specs already cover the code this change touches`},module:`Module described:`,more_one:`and {{count}} more file`,more_other:`and {{count}} more files`,spec:`As-built spec:`,capability:`{{capability}} ({{demonstrated}}/{{requirements}} demonstrated)`,cost:`Baseline cost {{amount}} over {{turns}} turns, counted apart from the change`,costUnknown:`Baseline cost not reported by the provider`,caveat:`Characterization tests describe today's behaviour; Core ran them on the unchanged code before any edit.`},M={title_one:`Needs human eyes: {{count}} project rule`,title_other:`Needs human eyes: {{count}} project rules`,caveat:`Rules written for this project that no automated check can enforce. Check them yourself before accepting.`},N={label:`Review views`,overview:`Overview`,changes:`Changes`},P={tab:`Changes`,loading:`Loading the changes…`,error:`The changes could not be loaded.`,refresh:`Reload the changes`,empty:`This delivery changed no files.`,unavailable:{not_a_repository:`The project folder is not a Git repository, so there is nothing to compare.`,no_branch:`This delivery has no branch to compare yet.`,head_missing:`The delivery's branch no longer exists in this repository.`,base_missing:`The branch this delivery was based on no longer exists, so the changes cannot be measured.`,git_failed:`Git could not produce the changes for this delivery.`},summary:`Files changed: {{count}}`,viewedCount:`{{viewed}} of {{total}} viewed`,truncatedList:`Showing the first {{count}} files only.`,source:`Changes from`,sourceDelivery:`Whole delivery`,sourceTicket:`Spec #{{id}}`,tree:{label:`Changed files`},status:{added:`Added`,modified:`Modified`,deleted:`Deleted`,renamed:`Renamed`,copied:`Copied`,typechange:`Type changed`},renamedFrom:`Renamed from {{path}}`,binaryShort:`binary`,binary:`Binary file: there is no text diff to show.`,noTextChanges:`No line changes (only the file's name or mode changed).`,fileError:`This file's diff could not be loaded.`,largeDiff:`Showing the first {{shown}} of {{total}} changed lines.`,loadFull:`Load full file diff`,viewed:{mark:`Mark as viewed`,unmark:`Viewed`,changedSince:`Changed since you viewed it`},mode:{label:`Diff layout`,unified:`Unified`,split:`Split`},diff:{region:`Diff of {{path}}`},line:{select:`Select line {{n}}`,selectOld:`Select original line {{n}}`,added:`added`,removed:`removed`},selection:{clear:`Clear the selection`},ask:{button:`Ask agent for a change`,title:`Change to make in`,placeholder:`Describe the change you want…`,ticket:`Spec`,submit:`Add to spec`,hint:`Saved as review feedback on the spec; the next run on it is briefed with it.`,created:`Added to spec #{{id}} as review feedback.`,open:`Open spec`,failed:`The note could not be added to the spec.`},editor:{open:`Open in {{editor}}`,rootRepository:`Opens the file in your checkout of the project; the review branch may not be checked out there.`,names:{vscode:`VS Code`,cursor:`Cursor`,jetbrains:`JetBrains`},failed:`Couldn’t open {{editor}}. Is it installed? Change it in Settings ▸ Code.`},annotations:{title:`Not tied to a line ({{count}})`,ask:`Ask agent for a change`,source:{"reviewer-finding":`Reviewer finding`,"review-risk":`Risk to check`,"review-untested":`Not covered by tests`,"follow-up-comment":`Review comment`},severity:{high:`High`,medium:`Medium`,low:`Low`}},keys:{files:`files`,annotations:`annotations`,viewed:`mark viewed`}},F={backToBoard:n,stillWorking:r,alreadyResolved:i,fineControlOnly:a,openPr:o,noSolutionRecorded:s,headline:c,confidence:l,cost:u,accept:d,requestChanges:f,discard:p,watchOut:m,sections:h,churn:g,tier:_,proof:v,watch:y,error:b,versions:x,drift:S,planned:C,outcome:w,followUp:T,addenda:E,derivation:D,brief:O,agentActions:k,requirements:A,baseline:j,humanEyes:M,tabs:N,changes:P};export{t};
@@ -0,0 +1 @@
1
+ var e=`Torna alla bacheca`,t=`Ancora al lavoro…`,n=`È già stato risolto.`,r=`Questa consegna richiede una decisione tecnica. Usa i controlli dettagliati nella bacheca.`,i=`Apri la pull request #{{number}}`,a=`Nessun riepilogo registrato.`,o={success:`La tua modifica è pronta per la revisione`,successMany:`Tutte le {{count}} modifiche sono pronte per la revisione`,partial:`{{succeeded}} modifiche su {{total}} sono pronte`,noChanges:`Non c'era nulla da cambiare`,failed:`Non è stato possibile completarlo`,failedPartial:`È stato completato solo in parte`,generic:`Rivedi la modifica consegnata`},s={pill:`Fiducia del revisore IA {{overall}}/100`,unavailable:`Nessun punteggio del revisore`,tooltip:`Il punteggio che il revisore IA assegna a sé stesso — non è un controllo indipendente.`},c={thisBuild:`Questo lavoro è costato {{amount}}`,allVersions:`Tutte le versioni insieme: {{amount}}`,baselinePart:` · di cui {{amount}} di baseline`},l={"create-pr":`Accetta e apri una pull request`,publish:`Accetta e invia in revisione`,"merge-local":`Accetta nel mio progetto`,"mark-done":`Accetta — nulla da cambiare`,generic:`Accetta`,irreversibleWarning:`Questo scrive le modifiche direttamente nel tuo progetto, sul tuo computer. Non esiste una copia di revisione separata e non è annullabile.`,irreversibleConfirm:`Sì, scrivi nel mio progetto`},u={label:`Chiedi modifiche`,comingSoon:`Prossimamente: descrivi la modifica in una frase.`,prompt:`Cosa vuoi cambiare?`,placeholder:`es. rendi blu il pulsante di accesso`,submit:`Invia la modifica`,hint:`Quick SDD applica la modifica sul ramo esistente e aggiorna questa consegna.`},d={label:`Butta via`,stackedNote:`I rail successivi di questa milestone sono stati costruiti su questa consegna. Scartarla mette in pausa la catena della milestone; i rail successivi conservano il loro lavoro.`,confirmTitle:`Buttare via questa consegna?`,confirmBody:`La consegna e le sue modifiche vengono scartate. L'operazione non può essere annullata.`},f={title:`Da guardare prima di accettare`},p={whatYouAsked:`Cosa hai chiesto`,whatIDid:`Cosa è stato fatto`,howItWasChecked:`Come è stato verificato`,whatTheAgentDid:`Cosa ha fatto l'agente`},m={line:`{{files}} file modificati · +{{added}} / −{{removed}} righe`,batchNotSplittable:`Le modifiche ai file riguardano tutta la consegna, non ogni richiesta.`,testFiles_one:`{{count}} file di test toccato`,testFiles_other:`{{count}} file di test toccati`,noTestFiles:`Nessun file di test toccato`},h={"app-verified":{title:`Misurato da Specrails`,caveat:`Fatti presi dalle modifiche reali.`},"ai-reported":{title:`Riferito dall'IA`,caveat:`Parole dell'IA stessa. Specrails non ha eseguito questi controlli.`},"reviewer-score":{title:`Autovalutazione del revisore IA`,caveat:`L'IA valuta il proprio lavoro — utile, ma non è una revisione indipendente.`}},g={filesChanged:`{{files}} file modificati (+{{added}} / −{{removed}} righe)`,testFilesChanged:`{{count}} file di test modificati`,noTestFilesChanged:`Nessun file di test modificato.`,commitsRecorded:`Il lavoro è stato registrato su {{branches}} ramo/i`,verificationPassed:`L'IA ha riferito che i suoi controlli sono passati ({{count}})`,verificationFailed:`L'IA ha riferito che i suoi controlli sono FALLITI ({{count}})`,noVerificationReported:`L'IA non ha riferito alcuna verifica.`,verifyOutput:`Output di verifica dell'IA:`,reviewerScore:`Punteggio complessivo {{overall}}/100`,reviewerAspect:`{{aspect}}: {{score}}/100`,reviewerScoreUnavailable:`Nessun punteggio del revisore prodotto.`,evidenceUnavailable:`prove non disponibili`,hostCommandPassed:`Il runtime ha eseguito {{label}} da solo: codice di uscita {{exitCode}} ({{seconds}} s)`,hostCommandFailed:`Il runtime ha eseguito {{label}} da solo ed è FALLITO: codice di uscita {{exitCode}} ({{seconds}} s)`,acceptanceCheckPassed:`Controllo del revisore superato: {{name}}`,acceptanceCheckFailed:`Controllo del revisore FALLITO: {{name}}`,reviewerSummary:`Riepilogo del revisore IA:`,reviewerFinding:`Il revisore IA ha segnalato:`},_={humanReviewRecommended:`Il revisore IA ha dato {{overall}}/100 e consiglia che una persona lo guardi.`,lowConfidence:`Il revisore IA ha dato solo {{overall}}/100.`,reviewerFlag:`Il revisore ha segnalato:`,noTestsForChangedCode:`{{files}} file di codice modificati senza modifiche ai test.`},v={notFound:`Questa revisione non è stata trovata.`,loadFailed:`Non è stato possibile caricare la revisione.`,alreadyResolved:`Qualcuno ha già risposto.`,actionFailed:`L'azione non è andata a buon fine.`,revisionStale:`È stato appena risolto altrove — ricarica per vedere lo stato.`,revisionFailed:`Non è stato possibile avviare la modifica. Il tuo testo è stato conservato.`,revisionBudget:`Il budget giornaliero è esaurito, quindi la modifica non è stata avviata. Il tuo testo è stato conservato.`},y={title:`Versioni precedenti ({{count}})`,label:`Versione {{version}}`,current:`stai guardando questa`,originalBuild:`Il lavoro originale.`},b={title:`Questo potrebbe essere andato oltre la richiesta iniziale`,advisory:`Solo un suggerimento — puoi continuare a chiedere modifiche.`,costShare:`{{revisions}} modifica/che sono costate {{revisionCost}} — il {{share}}% dei {{originalCost}} del lavoro originale.`,outOfScopeChurn:`{{files}} su {{total}} file modificati non facevano parte della richiesta iniziale.`,revisionCount:`Hai chiesto {{revisions}} giri di modifiche. Riscrivere la richiesta potrebbe essere più rapido.`},x={title:`Approccio previsto (dalla spec)`,caveat:`Ciò che la richiesta proponeva, non un resoconto di ciò che ha fatto l'IA. I fatti qui sopra sono ciò che è cambiato davvero.`},S={succeeded:`Implementato`,failed:`Non è stato possibile completarlo`,noChanges:`Non c'era nulla da cambiare`,notStarted:`Non avviato`,unknown:`Esito sconosciuto`},C={title:`Commenti di revisione da risolvere ({{count}})`,caveat:`Ciò che hai chiesto di correggere, congelato al lancio. I verdetti sono il rapporto dell’esecuzione stessa, non una garanzia che tutto vada bene perché i test passano.`,verdict:{resolved:`Risolto`,partial:`Parzialmente risolto`,blocked:`Bloccato`,unreported:`Non riportato`},files:`File`,tests:`Test`,notes:`Note`,noReport:`L’esecuzione non ha riportato nulla su questo commento. Controlla le modifiche e le evidenze qui sotto.`,excluded:`Escluso`,source:{pasted:`incollato da te`,github:`da GitHub`}},w={title:`Addenda con cui questa esecuzione è stata istruita ({{count}})`,caveat:`Note di iterazione allegate alla spec e congelate al lancio. I verdetti qui sotto sono il rapporto dell'esecuzione stessa — non una garanzia che tutto sia a posto perché i test sono passati.`,kind:{"change-request":`Richiesta di modifica`,"review-feedback":`Feedback di revisione`,clarification:`Chiarimento`,constraint:`Vincolo`},verdict:{applied:`Applicato`,partial:`Parzialmente applicato`,blocked:`Bloccato`,unreported:`Non riportato`},noReport:`L'esecuzione non ha riportato nulla su questo addendum. Controlla le modifiche e le evidenze qui sotto.`},T={title:`Derivazione`,coverage:`{{explained}} di {{files}} file modificati sono spiegati dal design derivato`,change:`Modifica OpenSpec`,requirements:`Requisiti`,requirementsValue:`{{added}} aggiunti · {{modified}} modificati`,confidence:`Fiducia del derivatore`,confidenceLevel:{high:`Alta`,medium:`Media`,low:`Bassa`},confidenceUnknown:`Non indicata`,caveat:`La copertura è misurata da Specrails con git; la fiducia è la valutazione dell'agente stesso.`,unexplainedTitle_one:`{{count}} file modificato non è spiegato`,unexplainedTitle_other:`{{count}} file modificati non sono spiegati`,more_one:`…e {{count}} altro file`,more_other:`…e altri {{count}} file`,unavailable:`Non è stato possibile leggere il rapporto di derivazione di questa consegna Flow. Esamina direttamente il diff.`,rewriteFailed:`Non è stato possibile riscrivere la spec dalla modifica derivata; mantiene la bozza Flow. La modifica OpenSpec resta il riferimento tecnico.`},E={title:`Cosa guardare`,caveat:`Nota orientativa del revisore IA: dove una persona dovrebbe guardare per prima. Non è un risultato di verifica e non blocca mai una decisione.`,severity:{high:`Alto`,medium:`Medio`,low:`Basso`},area:{data:`dati`,security:`sicurezza`,api:`API`,ux:`UX`,performance:`prestazioni`,ops:`operazioni`,other:`altro`},sections:{risks:`Rischi`,behaviourChanges:`Cambi di comportamento`,invariantsTouched:`Invarianti toccati`,untested:`Percorsi senza test`,humanChecks:`Controlli umani`,divergences:`Divergenze dalla spec`},userVisible:`Visibile agli utenti`,invariantStatus:{kept:`Mantenuto`,changed:`Cambiato`,"at-risk":`A rischio`},diagnostic:`Parte della nota del revisore non è stata utilizzabile:`,dropped_one:`{{count}} voce della nota non rispettava il formato previsto ed è stata ignorata.`,dropped_other:`{{count}} voci della nota non rispettavano il formato previsto e sono state ignorate.`,topRisk:`Rischio principale`,moreRisks_one:`+{{count}} altro`,moreRisks_other:`+{{count}} altri`},D={total_one:`{{count}} azione`,total_other:`{{count}} azioni`,countsLabel:`Azioni dell'agente registrate per tipo`,kinds:{read:`letture`,write:`scritture`,exec:`comandi`,mcp:`chiamate MCP`,network:`richieste web`},caveat:`Registrato dagli stream degli agenti: le letture sono complete solo quanto le riporta ciascun provider. Contenuti e valori d'ambiente non vengono mai salvati.`,run:`Esecuzione {{id}}`,download:`{{format}}`,downloadFailed:`Impossibile scaricare le azioni dell'agente`},O={title:`Requisiti dimostrati {{demonstrated}}/{{total}}`,touched:`Toccati da questa modifica: {{demonstrated}}/{{total}} dimostrati`,caveat:`Misurato da Specrails: un requisito conta quando un test etichettato con il suo id è stato eseguito in una verifica riuscita. Indicativo; non cambia la revisione.`,caveatNoReceipt:`Parte di questa traccia non ha una ricevuta di verifica, quindi quei requisiti non possono ancora contare come dimostrati.`,undemonstratedTitle_one:`{{count}} requisito non dimostrato`,undemonstratedTitle_other:`{{count}} requisiti non dimostrati`,demonstratedTitle_one:`{{count}} requisito dimostrato`,demonstratedTitle_other:`{{count}} requisiti dimostrati`,reason:{"no-test":`nessun test etichettato`,"not-executed":`il test etichettato non è stato eseguito`,failed:`il test etichettato è fallito`},touchedBadge:`modificato qui`,untagged_one:`{{count}} etichetta di test non corrisponde a nessun requisito ({{tags}}): un refuso o un requisito rinominato.`,untagged_other:`{{count}} etichette di test non corrispondono a nessun requisito ({{tags}}): refusi o requisiti rinominati.`,showAll_one:`Mostra altri {{count}}`,showAll_other:`Mostra altri {{count}}`,showLess:`Mostra meno`},k={title:`Spec creata dove è passato il lavoro`,status:{planned:`Baseline pianificata: {{requirements}} requisiti as-built, {{tests}} test di caratterizzazione`,passed:`Baseline dimostrata sul codice invariato: {{requirements}} requisiti as-built, {{tests}} test di caratterizzazione`,failed:`Baseline bloccata: i test di caratterizzazione non sono passati sul codice invariato, quindi il modulo non è stato modificato`,violated:`Baseline bloccata: il passo di baseline ha modificato codice diverso dai test, quindi il run si è fermato`,"not-needed":`Nessuna baseline necessaria: le spec coprono già il codice toccato da questa modifica`},module:`Modulo descritto:`,more_one:`e {{count}} altro file`,more_other:`e altri {{count}} file`,spec:`Spec as-built:`,capability:`{{capability}} ({{demonstrated}}/{{requirements}} dimostrati)`,cost:`Costo della baseline {{amount}} in {{turns}} turni, contato a parte rispetto alla modifica`,costUnknown:`Costo della baseline non riportato dal provider`,caveat:`I test di caratterizzazione descrivono il comportamento attuale; Core li ha eseguiti sul codice invariato prima di qualsiasi modifica.`},A={title_one:`Serve un occhio umano: {{count}} regola del progetto`,title_other:`Serve un occhio umano: {{count}} regole del progetto`,caveat:`Regole scritte per questo progetto che nessun controllo automatico può far rispettare. Verificale tu prima di accettare.`},j={label:`Viste della revisione`,overview:`Panoramica`,changes:`Modifiche`},M={tab:`Modifiche`,loading:`Caricamento delle modifiche…`,error:`Impossibile caricare le modifiche.`,refresh:`Ricarica le modifiche`,empty:`Questa consegna non ha modificato alcun file.`,unavailable:{not_a_repository:`La cartella del progetto non è un repository Git, quindi non c'è nulla da confrontare.`,no_branch:`Questa consegna non ha ancora un branch da confrontare.`,head_missing:`Il branch della consegna non esiste più in questo repository.`,base_missing:`Il branch su cui si basava questa consegna non esiste più, quindi le modifiche non si possono misurare.`,git_failed:`Git non è riuscito a produrre le modifiche di questa consegna.`},summary:`File modificati: {{count}}`,viewedCount:`{{viewed}} di {{total}} visti`,truncatedList:`Vengono mostrati solo i primi {{count}} file.`,source:`Modifiche da`,sourceDelivery:`Intera consegna`,sourceTicket:`Spec #{{id}}`,tree:{label:`File modificati`},status:{added:`Aggiunto`,modified:`Modificato`,deleted:`Eliminato`,renamed:`Rinominato`,copied:`Copiato`,typechange:`Tipo modificato`},renamedFrom:`Rinominato da {{path}}`,binaryShort:`binario`,binary:`File binario: non c'è un diff di testo da mostrare.`,noTextChanges:`Nessuna modifica di riga (sono cambiati solo il nome o la modalità del file).`,fileError:`Impossibile caricare il diff di questo file.`,largeDiff:`Vengono mostrate le prime {{shown}} di {{total}} righe modificate.`,loadFull:`Carica il diff completo del file`,viewed:{mark:`Segna come visto`,unmark:`Visto`,changedSince:`Modificato da quando l'hai visto`},mode:{label:`Layout del diff`,unified:`Unificato`,split:`Affiancato`},diff:{region:`Diff di {{path}}`},line:{select:`Seleziona la riga {{n}}`,selectOld:`Seleziona la riga originale {{n}}`,added:`aggiunta`,removed:`rimossa`},selection:{clear:`Cancella la selezione`},ask:{button:`Chiedi una modifica all'agente`,title:`Cosa deve cambiare in`,placeholder:`Descrivi la modifica che vuoi…`,ticket:`Spec`,submit:`Aggiungi alla spec`,hint:`Salvato come feedback di revisione sulla spec; la prossima esecuzione su di essa lo riceverà.`,created:`Aggiunto alla spec #{{id}} come feedback di revisione.`,open:`Apri la spec`,failed:`Impossibile aggiungere la nota alla spec.`},editor:{open:`Apri in {{editor}}`,rootRepository:`Apre il file nella tua copia del progetto; il branch della revisione potrebbe non essere attivo lì.`,names:{vscode:`VS Code`,cursor:`Cursor`,jetbrains:`JetBrains`},failed:`Impossibile aprire {{editor}}. È installato? Cambialo in Impostazioni ▸ Codice.`},annotations:{title:`Non legate a una riga ({{count}})`,ask:`Chiedi una modifica all'agente`,source:{"reviewer-finding":`Rilievo del revisore`,"review-risk":`Rischio da verificare`,"review-untested":`Non coperto dai test`,"follow-up-comment":`Commento di revisione`},severity:{high:`Alta`,medium:`Media`,low:`Bassa`}},keys:{files:`file`,annotations:`annotazioni`,viewed:`segna come visto`}},N={backToBoard:e,stillWorking:t,alreadyResolved:n,fineControlOnly:r,openPr:i,noSolutionRecorded:a,headline:o,confidence:s,cost:c,accept:l,requestChanges:u,discard:d,watchOut:f,sections:p,churn:m,tier:h,proof:g,watch:_,error:v,versions:y,drift:b,planned:x,outcome:S,followUp:C,addenda:w,derivation:T,brief:E,agentActions:D,requirements:O,baseline:k,humanEyes:A,tabs:j,changes:M};export{l as accept,w as addenda,D as agentActions,n as alreadyResolved,e as backToBoard,k as baseline,E as brief,M as changes,m as churn,s as confidence,c as cost,N as default,T as derivation,d as discard,b as drift,v as error,r as fineControlOnly,C as followUp,o as headline,A as humanEyes,a as noSolutionRecorded,i as openPr,S as outcome,x as planned,g as proof,u as requestChanges,O as requirements,p as sections,t as stillWorking,j as tabs,h as tier,y as versions,_ as watch,f as watchOut};
@@ -0,0 +1 @@
1
+ import{t as e}from"./jsx-runtime-BbYvbtY8.js";import{t}from"./utils-ELimjS2Y.js";var n=e();function r({title:e,description:r,icon:i,titleExtra:a,actions:o,titleHidden:s,className:c}){return(0,n.jsxs)(`div`,{className:t(`flex flex-wrap items-center justify-between gap-3`,c),children:[(0,n.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2.5`,children:[i&&(0,n.jsx)(`span`,{className:`shrink-0 text-muted-foreground [&>svg]:h-5 [&>svg]:w-5`,"aria-hidden":!0,children:i}),(0,n.jsxs)(`div`,{className:`min-w-0`,children:[(0,n.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,n.jsx)(`h1`,{className:s?`sr-only`:`text-headline text-foreground`,children:e}),a]}),r&&(0,n.jsx)(`p`,{className:`mt-0.5 text-caption text-muted-foreground`,children:r})]})]}),o&&(0,n.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:o})]})}export{r as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./origin-03nTuaOb.js";function t(e){return e?e.repositories?.length?e.repositories:[{id:`primary-${e.id}`,projectId:e.id,name:e.name,path:e.path,isPrimary:!0,kind:`git`,integrationBranch:null,addedAt:e.added_at}]:[]}function n(t,n){let r=`${e}/api/projects/${encodeURIComponent(t)}`;return n?`${r}/repositories/${encodeURIComponent(n)}`:r}export{n,t};
@@ -1 +1 @@
1
- var e=[`claude`,`codex`,`gemini`,`kimi`];function t(e){return e!==`gemini`&&e!==`kimi`}function n(t){for(let n of e)if(t.includes(n))return n;return t[0]??`claude`}var r=`roles`;function i(e){return e===r}function a(t){return typeof t==`string`&&t.length>0&&t!==`roles`&&!e.includes(t)}function o(e){return e===`claude`}function s(e){return e===`claude`||e===`codex`||e===`gemini`}var c={claude:[`low`,`medium`,`high`,`xhigh`],codex:[`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`],gemini:[],kimi:[`low`,`high`,`max`]},l=[`low`,`medium`,`high`,`xhigh`],u={"gpt-6.1-sol":[...l,`max`,`ultra`],"gpt-6-astra":[...l,`max`,`ultra`],"gpt-5.6-sol":[...l,`max`,`ultra`],"gpt-5.6-terra":[...l,`max`,`ultra`],"gpt-5.6-luna":[...l,`max`],"gpt-5.5":l,"gpt-5.4-mini":l};function d(e,t){return e===`kimi`&&t!==`k3`&&t!==`kimi-code/k3`?[]:e===`codex`&&t&&u[t]?u[t]:e?c[e]??[]:[]}function f(e,t){let n=d(e,t);return n.includes(`medium`)?`medium`:n.includes(`high`)?`high`:n[0]}function p(e,t){return d(e,t).length>0}var m={claude:[`none`,`read-only`],codex:[`read-only`],gemini:[`read-only`],kimi:[]},h=[`none`,`read-only`];function g(e,t){return e?(m[e]??(a(e)?h:[])).includes(t):!1}function _(e){return g(e,`none`)||g(e,`read-only`)}function v(e){return e===`claude`||e===`kimi`||a(e)}function y(e){return e===`claude`||e===`kimi`}function b(e){return e===`kimi`||a(e)}function x(e){return e===`claude`}function S(e){return x(e)||e===`codex`}function C(e){return e===`claude`}function w(e){return e===`codex`?`Codex`:e===`claude`?`Claude`:e===`gemini`?`Gemini`:e===`kimi`?`Kimi`:e??`Claude`}export{d as _,o as a,s as c,v as d,y as f,C as g,g as h,i,S as l,p as m,a as n,n as o,_ as p,t as r,w as s,f as t,b as u};
1
+ var e=[`claude`,`codex`,`gemini`,`kimi`];function t(e){return e!==`gemini`&&e!==`kimi`}function n(t){for(let n of e)if(t.includes(n))return n;return t[0]??`claude`}var r=`roles`;function i(e){return e===r}function a(t){return typeof t==`string`&&t.length>0&&t!==`roles`&&!e.includes(t)}function o(e){return e===`claude`}function s(e){return e===`claude`||e===`codex`||e===`gemini`}var c={claude:[`low`,`medium`,`high`,`xhigh`],codex:[`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`],gemini:[],kimi:[`low`,`high`,`max`]},l=[`low`,`medium`,`high`,`xhigh`],u={"gpt-6.1-sol":[...l,`max`,`ultra`],"gpt-6-astra":[...l,`max`,`ultra`],"gpt-5.6-sol":[...l,`max`,`ultra`],"gpt-5.6-terra":[...l,`max`,`ultra`],"gpt-5.6-luna":[...l,`max`],"gpt-5.5":l,"gpt-5.4-mini":l};function d(e,t){return e===`kimi`&&t!==`k3`&&t!==`kimi-code/k3`?[]:e===`codex`&&t&&u[t]?u[t]:e?c[e]??[]:[]}function f(e,t){let n=d(e,t);return n.includes(`medium`)?`medium`:n.includes(`high`)?`high`:n[0]}function p(e,t){return d(e,t).length>0}var m={claude:[`none`,`read-only`],codex:[`read-only`],gemini:[`read-only`],kimi:[]},h=[`none`,`read-only`];function g(e,t){return e?(m[e]??(a(e)?h:[])).includes(t):!1}function _(e){return g(e,`none`)||g(e,`read-only`)}function v(t){return typeof t==`string`&&e.includes(t)||a(t)}function y(e){return e===`claude`||e===`kimi`}function b(e){return e===`kimi`||a(e)}function x(e){return e===`claude`}function S(e){return x(e)||e===`codex`}function C(e){return e===`claude`}function w(e){return e===`codex`?`Codex`:e===`claude`?`Claude`:e===`gemini`?`Gemini`:e===`kimi`?`Kimi`:e??`Claude`}export{d as _,o as a,s as c,v as d,y as f,C as g,g as h,i,S as l,p as m,a as n,n as o,_ as p,t as r,w as s,f as t,b as u};
@@ -0,0 +1 @@
1
+ var e={tests_failed:{phaseRounds_one:`{{phase}}フェーズでテストが失敗しました(修正 {{count}} 回後)`,phaseRounds_other:`{{phase}}フェーズでテストが失敗しました(修正 {{count}} 回後)`,rounds_one:`テストが失敗しました(修正 {{count}} 回後)`,rounds_other:`テストが失敗しました(修正 {{count}} 回後)`,phase:`{{phase}}フェーズでテストが失敗しました`,plain:`テストが失敗しました`},provider_limit:`AI プロバイダーの利用上限に達しました`,environment:`環境でチェックを実行できません`,blocked:{phase:`実行が{{phase}}フェーズで止まっています`,plain:`実行が止まっています`},timeout:{phase:`{{phase}}フェーズが時間切れになりました`,plain:`実行が時間切れになりました`},tool_inactivity:{phase:`{{phase}}フェーズでエージェントの動きが止まりました`,plain:`エージェントの動きが止まりました`},crash:{phase:`{{phase}}フェーズでエージェントが予期せず停止しました`,plain:`エージェントが予期せず停止しました`},unknown:`原因は不明です`},t={provider_limit:{reset:`{{resetAt}} にリセットされます。リセット後に再開してください。`,noReset:`上限がリセットされるのを待ってから再開してください。`},environment:`変更そのものに問題はありません。先にマシン側の対応が必要です。`,tests_failed:`修正の後もチェックが失敗しています。`,blocked:`上限または判断待ちで止まりました。クラッシュではありません。`,timeout:`終了する前に制限時間に達しました。`,tool_inactivity:`ツールの使用も返信も長時間ありませんでした。`,crash:`実行中にプロバイダーのプロセスまたは接続が切れました。`,unknown:`止まった理由がわからないため、推測はしません。`},n={label:`復旧の方法`},r={resume:`再開`,resumeFrom:`{{phase}}から再開`,retry:`もう一度実行`,editSpec:`スペックを編集して再起動`,fixEnvironment:`環境を修復`,openLogs:`失敗箇所のログを開く`},i={command:`コマンド`,copy:`コマンドをコピー`,copied:`コピーしました`,inDirectory:`{{cwd}} 内`,requiredAction:`必要な操作`,generic:`実行を続けるには、環境の対応が必要です。`,then:`対応が済んだら、実行を再開してください。`},a={title:`ログの末尾`},o={notFound:`表示できるログはまだありません`},s=`技術的な詳細`,c={headline:e,why:t,remedies:n,remedy:r,environment:i,logTail:a,logs:o,technicalDetails:s};export{c as default,i as environment,e as headline,a as logTail,o as logs,n as remedies,r as remedy,s as technicalDetails,t as why};
@@ -0,0 +1 @@
1
+ var e={tests_failed:{phaseRounds_one:`I test sono falliti nella fase {{phase}} dopo {{count}} giro di correzioni`,phaseRounds_other:`I test sono falliti nella fase {{phase}} dopo {{count}} giri di correzioni`,rounds_one:`I test sono falliti dopo {{count}} giro di correzioni`,rounds_other:`I test sono falliti dopo {{count}} giri di correzioni`,phase:`I test sono falliti nella fase {{phase}}`,plain:`I test sono falliti`},provider_limit:`È stato raggiunto il limite d'uso del provider IA`,environment:`L'ambiente non riesce a eseguire i controlli`,blocked:{phase:`L'esecuzione è bloccata nella fase {{phase}}`,plain:`L'esecuzione è bloccata`},timeout:{phase:`La fase {{phase}} ha esaurito il tempo`,plain:`L'esecuzione ha esaurito il tempo`},tool_inactivity:{phase:`L'agente è rimasto in silenzio nella fase {{phase}}`,plain:`L'agente è rimasto in silenzio`},crash:{phase:`L'agente si è fermato all'improvviso nella fase {{phase}}`,plain:`L'agente si è fermato all'improvviso`},unknown:`Causa sconosciuta`},t={provider_limit:{reset:`Si azzera {{resetAt}}. Riprendi dopo.`,noReset:`Aspetta che il limite si azzeri, poi riprendi.`},environment:`Il problema non è la modifica in sé. La macchina ha bisogno di qualcosa prima.`,tests_failed:`I controlli continuano a fallire dopo le correzioni.`,blocked:`L'ha fermata un limite o una decisione. Non è andata in crash.`,timeout:`Ha raggiunto il limite di tempo prima di finire.`,tool_inactivity:`Ha smesso di usare strumenti e di rispondere per troppo tempo.`,crash:`Il processo del provider o la sua connessione è morto a metà esecuzione.`,unknown:`L'app non sa perché si è fermata e non tira a indovinare.`},n={label:`Modi per ripartire`},r={resume:`Riprendi`,resumeFrom:`Riprendi da {{phase}}`,retry:`Esegui di nuovo`,editSpec:`Modifica la spec e rilancia`,fixEnvironment:`Sistema l'ambiente`,openLogs:`Apri il log al punto del guasto`},i={command:`Comando`,copy:`Copia comando`,copied:`Copiato`,inDirectory:`in {{cwd}}`,requiredAction:`Azione richiesta`,generic:`L'ambiente richiede attenzione prima che l'esecuzione possa continuare.`,then:`Quando è fatto, riprendi l'esecuzione.`},a={title:`Fine del log`},o={notFound:`Ancora nessun log da mostrare`},s=`Dettagli tecnici`,c={headline:e,why:t,remedies:n,remedy:r,environment:i,logTail:a,logs:o,technicalDetails:s};export{c as default,i as environment,e as headline,a as logTail,o as logs,n as remedies,r as remedy,s as technicalDetails,t as why};
@@ -0,0 +1 @@
1
+ var e={tests_failed:{phaseRounds_one:`测试在{{phase}}阶段失败,已修复 {{count}} 轮`,phaseRounds_other:`测试在{{phase}}阶段失败,已修复 {{count}} 轮`,rounds_one:`测试失败,已修复 {{count}} 轮`,rounds_other:`测试失败,已修复 {{count}} 轮`,phase:`测试在{{phase}}阶段失败`,plain:`测试失败`},provider_limit:`已达到 AI 提供商的使用上限`,environment:`环境无法运行检查`,blocked:{phase:`运行在{{phase}}阶段被阻塞`,plain:`运行被阻塞`},timeout:{phase:`{{phase}}阶段超时`,plain:`运行超时`},tool_inactivity:{phase:`代理在{{phase}}阶段停止了动作`,plain:`代理停止了动作`},crash:{phase:`代理在{{phase}}阶段意外停止`,plain:`代理意外停止`},unknown:`原因未知`},t={provider_limit:{reset:`将在 {{resetAt}} 重置。重置后再继续。`,noReset:`等待上限重置,然后继续。`},environment:`问题不在改动本身,机器需要先准备好一些东西。`,tests_failed:`修正之后检查仍然失败。`,blocked:`是某个上限或某项决定让它停下的,并没有崩溃。`,timeout:`在完成之前达到了时间上限。`,tool_inactivity:`它太久没有使用工具,也没有回复。`,crash:`提供商进程或其连接在运行中断开了。`,unknown:`应用无法确定它为什么停止,也不会猜测。`},n={label:`恢复方式`},r={resume:`继续`,resumeFrom:`从{{phase}}继续`,retry:`再次运行`,editSpec:`编辑规格并重新启动`,fixEnvironment:`修复环境`,openLogs:`在失败处打开日志`},i={command:`命令`,copy:`复制命令`,copied:`已复制`,inDirectory:`位于 {{cwd}}`,requiredAction:`需要的操作`,generic:`需要先处理环境问题,运行才能继续。`,then:`处理完成后,继续运行。`},a={title:`日志末尾`},o={notFound:`暂无可显示的日志`},s=`技术详情`,c={headline:e,why:t,remedies:n,remedy:r,environment:i,logTail:a,logs:o,technicalDetails:s};export{c as default,i as environment,e as headline,a as logTail,o as logs,n as remedies,r as remedy,s as technicalDetails,t as why};
@@ -0,0 +1 @@
1
+ var e={tests_failed:{phaseRounds_one:`Os testes falharam na fase {{phase}} após {{count}} rodada de correção`,phaseRounds_other:`Os testes falharam na fase {{phase}} após {{count}} rodadas de correção`,rounds_one:`Os testes falharam após {{count}} rodada de correção`,rounds_other:`Os testes falharam após {{count}} rodadas de correção`,phase:`Os testes falharam na fase {{phase}}`,plain:`Os testes falharam`},provider_limit:`O limite de uso do provedor de IA foi atingido`,environment:`O ambiente não consegue executar as verificações`,blocked:{phase:`A execução está bloqueada na fase {{phase}}`,plain:`A execução está bloqueada`},timeout:{phase:`A fase {{phase}} ficou sem tempo`,plain:`A execução ficou sem tempo`},tool_inactivity:{phase:`O agente ficou em silêncio na fase {{phase}}`,plain:`O agente ficou em silêncio`},crash:{phase:`O agente parou inesperadamente na fase {{phase}}`,plain:`O agente parou inesperadamente`},unknown:`Causa desconhecida`},t={provider_limit:{reset:`Ele é redefinido {{resetAt}}. Retome depois.`,noReset:`Espere o limite ser redefinido e depois retome.`},environment:`O problema não é a mudança em si. A máquina precisa de algo antes.`,tests_failed:`As verificações continuam falhando após as correções.`,blocked:`Um limite ou uma decisão a interrompeu. Ela não travou.`,timeout:`Atingiu o limite de tempo antes de terminar.`,tool_inactivity:`Parou de usar ferramentas e de responder por tempo demais.`,crash:`O processo do provedor ou sua conexão morreu no meio da execução.`,unknown:`O app não sabe por que parou e não vai adivinhar.`},n={label:`Formas de recuperar`},r={resume:`Retomar`,resumeFrom:`Retomar a partir de {{phase}}`,retry:`Executar novamente`,editSpec:`Editar a spec e relançar`,fixEnvironment:`Corrigir o ambiente`,openLogs:`Abrir o registro na falha`},i={command:`Comando`,copy:`Copiar comando`,copied:`Copiado`,inDirectory:`em {{cwd}}`,requiredAction:`Ação necessária`,generic:`O ambiente precisa de atenção antes de a execução continuar.`,then:`Quando isso estiver feito, retome a execução.`},a={title:`Fim do registro`},o={notFound:`Ainda não há registro para mostrar`},s=`Detalhes técnicos`,c={headline:e,why:t,remedies:n,remedy:r,environment:i,logTail:a,logs:o,technicalDetails:s};export{c as default,i as environment,e as headline,a as logTail,o as logs,n as remedies,r as remedy,s as technicalDetails,t as why};
@@ -0,0 +1 @@
1
+ var e={tests_failed:{phaseRounds_one:`Les tests ont échoué en phase {{phase}} après {{count}} tour de correction`,phaseRounds_other:`Les tests ont échoué en phase {{phase}} après {{count}} tours de correction`,rounds_one:`Les tests ont échoué après {{count}} tour de correction`,rounds_other:`Les tests ont échoué après {{count}} tours de correction`,phase:`Les tests ont échoué en phase {{phase}}`,plain:`Les tests ont échoué`},provider_limit:`La limite d'utilisation du fournisseur d'IA est atteinte`,environment:`L'environnement ne peut pas exécuter les vérifications`,blocked:{phase:`L'exécution est bloquée en phase {{phase}}`,plain:`L'exécution est bloquée`},timeout:{phase:`La phase {{phase}} a manqué de temps`,plain:`L'exécution a manqué de temps`},tool_inactivity:{phase:`L'agent est resté silencieux en phase {{phase}}`,plain:`L'agent est resté silencieux`},crash:{phase:`L'agent s'est arrêté de façon inattendue en phase {{phase}}`,plain:`L'agent s'est arrêté de façon inattendue`},unknown:`Cause inconnue`},t={provider_limit:{reset:`Elle se réinitialise {{resetAt}}. Reprenez ensuite.`,noReset:`Attendez la réinitialisation de la limite, puis reprenez.`},environment:`Le problème n'est pas le changement. La machine a besoin de quelque chose d'abord.`,tests_failed:`Les vérifications échouent encore après les corrections.`,blocked:`Une limite ou une décision l'a arrêtée. Elle n'a pas planté.`,timeout:`Elle a atteint sa limite de temps avant de finir.`,tool_inactivity:`Elle a cessé d'utiliser des outils et de répondre trop longtemps.`,crash:`Le processus du fournisseur ou sa connexion est mort en cours d'exécution.`,unknown:`L'app ne sait pas pourquoi elle s'est arrêtée et ne va pas deviner.`},n={label:`Pour reprendre`},r={resume:`Reprendre`,resumeFrom:`Reprendre depuis {{phase}}`,retry:`Relancer`,editSpec:`Modifier la spec et relancer`,fixEnvironment:`Réparer l'environnement`,openLogs:`Ouvrir le journal à l'échec`},i={command:`Commande`,copy:`Copier la commande`,copied:`Copié`,inDirectory:`dans {{cwd}}`,requiredAction:`Action requise`,generic:`L'environnement demande de l'attention avant que l'exécution puisse continuer.`,then:`Une fois fait, reprenez l'exécution.`},a={title:`Fin du journal`},o={notFound:`Pas encore de journal à afficher`},s=`Détails techniques`,c={headline:e,why:t,remedies:n,remedy:r,environment:i,logTail:a,logs:o,technicalDetails:s};export{c as default,i as environment,e as headline,a as logTail,o as logs,n as remedies,r as remedy,s as technicalDetails,t as why};
@@ -0,0 +1 @@
1
+ var e={tests_failed:{phaseRounds_one:`Las pruebas fallaron en la fase {{phase}} tras {{count}} ronda de correcciones`,phaseRounds_other:`Las pruebas fallaron en la fase {{phase}} tras {{count}} rondas de correcciones`,rounds_one:`Las pruebas fallaron tras {{count}} ronda de correcciones`,rounds_other:`Las pruebas fallaron tras {{count}} rondas de correcciones`,phase:`Las pruebas fallaron en la fase {{phase}}`,plain:`Las pruebas fallaron`},provider_limit:`Se alcanzó el límite de uso del proveedor de IA`,environment:`El entorno no puede ejecutar las comprobaciones`,blocked:{phase:`La ejecución está bloqueada en la fase {{phase}}`,plain:`La ejecución está bloqueada`},timeout:{phase:`La fase {{phase}} se quedó sin tiempo`,plain:`La ejecución se quedó sin tiempo`},tool_inactivity:{phase:`El agente se quedó en silencio en la fase {{phase}}`,plain:`El agente se quedó en silencio`},crash:{phase:`El agente se detuvo inesperadamente en la fase {{phase}}`,plain:`El agente se detuvo inesperadamente`},unknown:`Causa desconocida`},t={provider_limit:{reset:`Se restablece {{resetAt}}. Reanuda cuando lo haga.`,noReset:`Espera a que se restablezca el límite y reanuda.`},environment:`El problema no está en el cambio. La máquina necesita algo antes.`,tests_failed:`Las comprobaciones siguen fallando tras las correcciones.`,blocked:`Lo detuvo un límite o una decisión. No se cayó.`,timeout:`Llegó a su límite de tiempo antes de terminar.`,tool_inactivity:`Dejó de usar herramientas y de responder durante demasiado tiempo.`,crash:`El proceso del proveedor o su conexión murió a mitad de la ejecución.`,unknown:`La app no sabe por qué se detuvo y no va a adivinarlo.`},n={label:`Formas de recuperarse`},r={resume:`Reanudar`,resumeFrom:`Reanudar desde {{phase}}`,retry:`Ejecutar de nuevo`,editSpec:`Editar la spec y relanzar`,fixEnvironment:`Arreglar el entorno`,openLogs:`Abrir el registro en el fallo`},i={command:`Comando`,copy:`Copiar comando`,copied:`Copiado`,inDirectory:`en {{cwd}}`,requiredAction:`Acción necesaria`,generic:`El entorno necesita atención antes de que la ejecución pueda continuar.`,then:`Cuando esté hecho, reanuda la ejecución.`},a={title:`Final del registro`},o={notFound:`Aún no hay registro que mostrar`},s=`Detalles técnicos`,c={headline:e,why:t,remedies:n,remedy:r,environment:i,logTail:a,logs:o,technicalDetails:s};export{c as default,i as environment,e as headline,a as logTail,o as logs,n as remedies,r as remedy,s as technicalDetails,t as why};
@@ -0,0 +1 @@
1
+ var e={tests_failed:{phaseRounds_one:`Tests sind in der Phase {{phase}} nach {{count}} Korrekturrunde fehlgeschlagen`,phaseRounds_other:`Tests sind in der Phase {{phase}} nach {{count}} Korrekturrunden fehlgeschlagen`,rounds_one:`Tests sind nach {{count}} Korrekturrunde fehlgeschlagen`,rounds_other:`Tests sind nach {{count}} Korrekturrunden fehlgeschlagen`,phase:`Tests sind in der Phase {{phase}} fehlgeschlagen`,plain:`Tests sind fehlgeschlagen`},provider_limit:`Das Nutzungslimit des KI-Anbieters ist erreicht`,environment:`Die Umgebung kann die Prüfungen nicht ausführen`,blocked:{phase:`Der Lauf ist in der Phase {{phase}} blockiert`,plain:`Der Lauf ist blockiert`},timeout:{phase:`Die Phase {{phase}} hat ihre Zeit überschritten`,plain:`Der Lauf hat seine Zeit überschritten`},tool_inactivity:{phase:`Der Agent blieb in der Phase {{phase}} stumm`,plain:`Der Agent blieb stumm`},crash:{phase:`Der Agent hat in der Phase {{phase}} unerwartet gestoppt`,plain:`Der Agent hat unerwartet gestoppt`},unknown:`Unbekannte Ursache`},t={provider_limit:{reset:`Es wird {{resetAt}} zurückgesetzt. Danach fortsetzen.`,noReset:`Warte, bis das Limit zurückgesetzt ist, und setze dann fort.`},environment:`Die Änderung selbst ist nicht das Problem. Der Rechner braucht zuerst etwas.`,tests_failed:`Die Prüfungen schlagen auch nach den Korrekturen fehl.`,blocked:`Ein Limit oder eine Entscheidung hat ihn gestoppt. Er ist nicht abgestürzt.`,timeout:`Er hat sein Zeitlimit erreicht, bevor er fertig war.`,tool_inactivity:`Er hat zu lange keine Werkzeuge benutzt und nicht geantwortet.`,crash:`Der Anbieterprozess oder seine Verbindung ist mitten im Lauf ausgefallen.`,unknown:`Die App weiß nicht, warum er gestoppt hat, und rät nicht.`},n={label:`Wege zur Wiederherstellung`},r={resume:`Fortsetzen`,resumeFrom:`Ab {{phase}} fortsetzen`,retry:`Erneut ausführen`,editSpec:`Spec bearbeiten und neu starten`,fixEnvironment:`Umgebung reparieren`,openLogs:`Protokoll am Fehler öffnen`},i={command:`Befehl`,copy:`Befehl kopieren`,copied:`Kopiert`,inDirectory:`in {{cwd}}`,requiredAction:`Erforderliche Aktion`,generic:`Die Umgebung braucht Aufmerksamkeit, bevor der Lauf weitergehen kann.`,then:`Wenn das erledigt ist, setze den Lauf fort.`},a={title:`Ende des Protokolls`},o={notFound:`Noch kein Protokoll zum Anzeigen`},s=`Technische Details`,c={headline:e,why:t,remedies:n,remedy:r,environment:i,logTail:a,logs:o,technicalDetails:s};export{c as default,i as environment,e as headline,a as logTail,o as logs,n as remedies,r as remedy,s as technicalDetails,t as why};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({default:()=>u,environment:()=>o,headline:()=>n,logTail:()=>s,logs:()=>c,remedies:()=>i,remedy:()=>a,technicalDetails:()=>l,why:()=>r}),n={tests_failed:{phaseRounds_one:`Tests failed in the {{phase}} phase after {{count}} fix round`,phaseRounds_other:`Tests failed in the {{phase}} phase after {{count}} fix rounds`,rounds_one:`Tests failed after {{count}} fix round`,rounds_other:`Tests failed after {{count}} fix rounds`,phase:`Tests failed in the {{phase}} phase`,plain:`Tests failed`},provider_limit:`The AI provider's usage limit was reached`,environment:`The environment can't run the checks`,blocked:{phase:`The run is blocked in the {{phase}} phase`,plain:`The run is blocked`},timeout:{phase:`The {{phase}} phase ran out of time`,plain:`The run ran out of time`},tool_inactivity:{phase:`The agent went quiet in the {{phase}} phase`,plain:`The agent went quiet`},crash:{phase:`The agent stopped unexpectedly in the {{phase}} phase`,plain:`The agent stopped unexpectedly`},unknown:`Unknown cause`},r={provider_limit:{reset:`It resets {{resetAt}}. Resume once it has.`,noReset:`Wait for the limit to reset, then resume.`},environment:`The change itself isn't the problem. The machine needs something first.`,tests_failed:`The checks still fail after the corrections.`,blocked:`A limit or a decision stopped it. It didn't crash.`,timeout:`It reached its time limit before finishing.`,tool_inactivity:`It stopped using tools and replying for too long.`,crash:`The provider process or its connection died mid-run.`,unknown:`The app can't tell why it stopped, so it won't guess.`},i={label:`Ways to recover`},a={resume:`Resume`,resumeFrom:`Resume from {{phase}}`,retry:`Run again`,editSpec:`Edit spec and relaunch`,fixEnvironment:`Fix the environment`,openLogs:`Open logs at the failure`},o={command:`Command`,copy:`Copy command`,copied:`Copied`,inDirectory:`in {{cwd}}`,requiredAction:`Required action`,generic:`The environment needs attention before the run can continue.`,then:`When that is done, resume the run.`},s={title:`End of the log`},c={notFound:`No log to show yet`},l=`Technical details`,u={headline:n,why:r,remedies:i,remedy:a,environment:o,logTail:s,logs:c,technicalDetails:l};export{t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-DtODIU64.js";var t={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};t.node;var n=e(t);export{n as t};
@@ -0,0 +1 @@
1
+ import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./jsx-runtime-BbYvbtY8.js";import{t as r}from"./react-dom-DDD8FYaU.js";import{n as i,r as a,t as o}from"./chevron-up-BAMuP0XD.js";import{a as s,i as c,n as l,o as u,r as d,s as f}from"./dist-Di-oOFkX.js";import{t as p}from"./utils-ELimjS2Y.js";import{a as m,c as h,d as g,g as _,h as v,i as y,l as b,m as x,n as S,o as C,p as w,r as ee,s as T,t as E,u as D}from"./es2015-DfnECntk.js";var O=e(t(),1),k=e(r(),1);function A(e,[t,n]){return Math.min(n,Math.max(t,e))}var j=n();function M(e){let t=N(e),n=O.forwardRef((e,n)=>{let{children:r,...i}=e,a=O.Children.toArray(r),o=a.find(te);if(o){let e=o.props.children,r=a.map(t=>t===o?O.Children.count(e)>1?O.Children.only(null):O.isValidElement(e)?e.props.children:null:t);return(0,j.jsx)(t,{...i,ref:n,children:O.isValidElement(e)?O.cloneElement(e,void 0,r):null})}return(0,j.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function N(e){let t=O.forwardRef((e,t)=>{let{children:n,...r}=e;if(O.isValidElement(n)){let e=I(n),i=F(r,n.props);return n.type!==O.Fragment&&(i.ref=t?x(t,e):e),O.cloneElement(n,i)}return O.Children.count(n)>1?O.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var P=Symbol(`radix.slottable`);function te(e){return O.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===P}function F(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function I(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function ne(e){let t=e+`CollectionProvider`,[n,r]=w(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=e=>{let{scope:t,children:n}=e,r=O.useRef(null),a=O.useRef(new Map).current;return(0,j.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})};o.displayName=t;let s=e+`CollectionSlot`,c=M(s),l=O.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=v(t,a(s,n).collectionRef);return(0,j.jsx)(c,{ref:i,children:r})});l.displayName=s;let u=e+`CollectionItemSlot`,d=`data-radix-collection-item`,f=M(u),p=O.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=O.useRef(null),s=v(t,o),c=a(u,n);return O.useEffect(()=>(c.itemMap.set(o,{ref:o,...i}),()=>void c.itemMap.delete(o))),(0,j.jsx)(f,{[d]:``,ref:s,children:r})});p.displayName=u;function m(t){let n=a(e+`CollectionConsumer`,t);return O.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${d}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return[{Provider:o,Slot:l,ItemSlot:p},m,r]}var L=O.createContext(void 0);function R(e){let t=O.useContext(L);return e||t||`ltr`}function z(e){let t=B(e),n=O.forwardRef((e,n)=>{let{children:r,...i}=e,a=O.Children.toArray(r),o=a.find(re);if(o){let e=o.props.children,r=a.map(t=>t===o?O.Children.count(e)>1?O.Children.only(null):O.isValidElement(e)?e.props.children:null:t);return(0,j.jsx)(t,{...i,ref:n,children:O.isValidElement(e)?O.cloneElement(e,void 0,r):null})}return(0,j.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function B(e){let t=O.forwardRef((e,t)=>{let{children:n,...r}=e;if(O.isValidElement(n)){let e=ae(n),i=ie(r,n.props);return n.type!==O.Fragment&&(i.ref=t?x(t,e):e),O.cloneElement(n,i)}return O.Children.count(n)>1?O.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var V=Symbol(`radix.slottable`);function re(e){return O.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===V}function ie(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function ae(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function oe(e){let t=O.useRef({value:e,previous:e});return O.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var se=[` `,`Enter`,`ArrowUp`,`ArrowDown`],H=[` `,`Enter`],U=`Select`,[W,G,ce]=ne(U),[K,le]=w(U,[ce,f]),q=f(),[ue,J]=K(U),[de,fe]=K(U),pe=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:d,autoComplete:f,disabled:p,required:m,form:h}=e,g=q(t),[_,v]=O.useState(null),[y,x]=O.useState(null),[S,C]=O.useState(!1),w=R(l),[ee,T]=b({prop:r,defaultProp:i??!1,onChange:a,caller:U}),[E,k]=b({prop:o,defaultProp:s,onChange:c,caller:U}),A=O.useRef(null),M=!_||h||!!_.closest(`form`),[N,P]=O.useState(new Set),te=Array.from(N).map(e=>e.props.value).join(`;`);return(0,j.jsx)(u,{...g,children:(0,j.jsxs)(ue,{required:m,scope:t,trigger:_,onTriggerChange:v,valueNode:y,onValueNodeChange:x,valueNodeHasChildren:S,onValueNodeHasChildrenChange:C,contentId:D(),value:E,onValueChange:k,open:ee,onOpenChange:T,dir:w,triggerPointerDownPosRef:A,disabled:p,children:[(0,j.jsx)(W.Provider,{scope:t,children:(0,j.jsx)(de,{scope:e.__scopeSelect,onNativeOptionAdd:O.useCallback(e=>{P(t=>new Set(t).add(e))},[]),onNativeOptionRemove:O.useCallback(e=>{P(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),M?(0,j.jsxs)(rt,{"aria-hidden":!0,required:m,tabIndex:-1,name:d,autoComplete:f,value:E,onChange:e=>k(e.target.value),disabled:p,form:h,children:[E===void 0?(0,j.jsx)(`option`,{value:``}):null,Array.from(N)]},te):null]})})};pe.displayName=U;var me=`SelectTrigger`,he=O.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=q(n),o=J(me,n),s=o.disabled||r,c=v(t,o.onTriggerChange),l=G(n),u=O.useRef(`touch`),[f,p,m]=at(e=>{let t=l().filter(e=>!e.disabled),n=ot(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),g=e=>{s||(o.onOpenChange(!0),m()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,j.jsx)(d,{asChild:!0,...a,children:(0,j.jsx)(h.button,{type:`button`,role:`combobox`,"aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:s,"data-disabled":s?``:void 0,"data-placeholder":it(o.value)?``:void 0,...i,ref:c,onClick:_(i.onClick,e=>{e.currentTarget.focus(),u.current!==`mouse`&&g(e)}),onPointerDown:_(i.onPointerDown,e=>{u.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(g(e),e.preventDefault())}),onKeyDown:_(i.onKeyDown,e=>{let t=f.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&p(e.key),!(t&&e.key===` `)&&se.includes(e.key)&&(g(),e.preventDefault())})})})});he.displayName=me;var ge=`SelectValue`,_e=O.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...s}=e,c=J(ge,n),{onValueNodeHasChildrenChange:l}=c,u=a!==void 0,d=v(t,c.onValueNodeChange);return g(()=>{l(u)},[l,u]),(0,j.jsx)(h.span,{...s,ref:d,style:{pointerEvents:`none`},children:it(c.value)?(0,j.jsx)(j.Fragment,{children:o}):a})});_e.displayName=ge;var ve=`SelectIcon`,ye=O.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,j.jsx)(h.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});ye.displayName=ve;var be=`SelectPortal`,xe=e=>(0,j.jsx)(y,{asChild:!0,...e});xe.displayName=be;var Y=`SelectContent`,Se=O.forwardRef((e,t)=>{let n=J(Y,e.__scopeSelect),[r,i]=O.useState();if(g(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?k.createPortal((0,j.jsx)(Ce,{scope:e.__scopeSelect,children:(0,j.jsx)(W.Slot,{scope:e.__scopeSelect,children:(0,j.jsx)(`div`,{children:e.children})})}),t):null}return(0,j.jsx)(Ee,{...e,ref:t})});Se.displayName=Y;var X=10,[Ce,Z]=K(Y),we=`SelectContentImpl`,Te=z(`SelectContent.RemoveScroll`),Ee=O.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:h,hideWhenDetached:g,avoidCollisions:y,...b}=e,x=J(Y,n),[w,T]=O.useState(null),[D,k]=O.useState(null),A=v(t,e=>T(e)),[M,N]=O.useState(null),[P,te]=O.useState(null),F=G(n),[I,ne]=O.useState(!1),L=O.useRef(!1);O.useEffect(()=>{if(w)return E(w)},[w]),ee();let R=O.useCallback(e=>{let[t,...n]=F().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&D&&(D.scrollTop=0),n===r&&D&&(D.scrollTop=D.scrollHeight),n?.focus(),document.activeElement!==i))return},[F,D]),z=O.useCallback(()=>R([M,w]),[R,M,w]);O.useEffect(()=>{I&&z()},[I,z]);let{onOpenChange:B,triggerPointerDownPosRef:V}=x;O.useEffect(()=>{if(w){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(V.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(V.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():w.contains(n.target)||B(!1),document.removeEventListener(`pointermove`,t),V.current=null};return V.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[w,B,V]),O.useEffect(()=>{let e=()=>B(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[B]);let[re,ie]=at(e=>{let t=F().filter(e=>!e.disabled),n=ot(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),ae=O.useCallback((e,t,n)=>{let r=!L.current&&!n;(x.value!==void 0&&x.value===t||r)&&(N(e),r&&(L.current=!0))},[x.value]),oe=O.useCallback(()=>w?.focus(),[w]),se=O.useCallback((e,t,n)=>{let r=!L.current&&!n;(x.value!==void 0&&x.value===t||r)&&te(e)},[x.value]),H=r===`popper`?Ae:Oe,U=H===Ae?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:h,hideWhenDetached:g,avoidCollisions:y}:{};return(0,j.jsx)(Ce,{scope:n,content:w,viewport:D,onViewportChange:k,itemRefCallback:ae,selectedItem:M,onItemLeave:oe,itemTextRefCallback:se,focusSelectedItem:z,selectedItemText:P,position:r,isPositioned:I,searchRef:re,children:(0,j.jsx)(S,{as:Te,allowPinchZoom:!0,children:(0,j.jsx)(m,{asChild:!0,trapped:x.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:_(i,e=>{x.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,j.jsx)(C,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>x.onOpenChange(!1),children:(0,j.jsx)(H,{role:`listbox`,id:x.contentId,"data-state":x.open?`open`:`closed`,dir:x.dir,onContextMenu:e=>e.preventDefault(),...b,...U,onPlaced:()=>ne(!0),ref:A,style:{display:`flex`,flexDirection:`column`,outline:`none`,...b.style},onKeyDown:_(b.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&ie(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=F().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>R(t)),e.preventDefault()}})})})})})})});Ee.displayName=we;var De=`SelectItemAlignedPosition`,Oe=O.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=J(Y,n),o=Z(Y,n),[s,c]=O.useState(null),[l,u]=O.useState(null),d=v(t,e=>u(e)),f=G(n),p=O.useRef(!1),m=O.useRef(!0),{viewport:_,selectedItem:y,selectedItemText:b,focusSelectedItem:x}=o,S=O.useCallback(()=>{if(a.trigger&&a.valueNode&&s&&l&&_&&y&&b){let e=a.trigger.getBoundingClientRect(),t=l.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=b.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-X,d=A(a,[X,Math.max(X,u-l)]);s.style.minWidth=c+`px`,s.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-X,d=A(a,[X,Math.max(X,u-l)]);s.style.minWidth=c+`px`,s.style.right=d+`px`}let o=f(),c=window.innerHeight-X*2,u=_.scrollHeight,d=window.getComputedStyle(l),m=parseInt(d.borderTopWidth,10),h=parseInt(d.paddingTop,10),g=parseInt(d.borderBottomWidth,10),v=parseInt(d.paddingBottom,10),x=m+h+u+v+g,S=Math.min(y.offsetHeight*5,x),C=window.getComputedStyle(_),w=parseInt(C.paddingTop,10),ee=parseInt(C.paddingBottom,10),T=e.top+e.height/2-X,E=c-T,D=y.offsetHeight/2,O=y.offsetTop+D,k=m+h+O,j=x-k;if(k<=T){let e=o.length>0&&y===o[o.length-1].ref.current;s.style.bottom=`0px`;let t=l.clientHeight-_.offsetTop-_.offsetHeight,n=k+Math.max(E,D+(e?ee:0)+t+g);s.style.height=n+`px`}else{let e=o.length>0&&y===o[0].ref.current;s.style.top=`0px`;let t=Math.max(T,m+_.offsetTop+(e?w:0)+D)+j;s.style.height=t+`px`,_.scrollTop=k-T+_.offsetTop}s.style.margin=`${X}px 0`,s.style.minHeight=S+`px`,s.style.maxHeight=c+`px`,r?.(),requestAnimationFrame(()=>p.current=!0)}},[f,a.trigger,a.valueNode,s,l,_,y,b,a.dir,r]);g(()=>S(),[S]);let[C,w]=O.useState();return g(()=>{l&&w(window.getComputedStyle(l).zIndex)},[l]),(0,j.jsx)(je,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:p,onScrollButtonChange:O.useCallback(e=>{e&&m.current===!0&&(S(),x?.(),m.current=!1)},[S,x]),children:(0,j.jsx)(`div`,{ref:c,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:C},children:(0,j.jsx)(h.div,{...i,ref:d,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});Oe.displayName=De;var ke=`SelectPopperPosition`,Ae=O.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=X,...a}=e,o=q(n);return(0,j.jsx)(s,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});Ae.displayName=ke;var[je,Me]=K(Y,{}),Ne=`SelectViewport`,Pe=O.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=Z(Ne,n),o=Me(Ne,n),s=v(t,a.onViewportChange),c=O.useRef(0);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,j.jsx)(W.Slot,{scope:n,children:(0,j.jsx)(h.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:s,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:_(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(c.current-t.scrollTop);if(e>0){let r=window.innerHeight-X*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}c.current=t.scrollTop})})})]})});Pe.displayName=Ne;var Fe=`SelectGroup`,[Ie,Le]=K(Fe),Re=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=D();return(0,j.jsx)(Ie,{scope:n,id:i,children:(0,j.jsx)(h.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});Re.displayName=Fe;var ze=`SelectLabel`,Be=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Le(ze,n);return(0,j.jsx)(h.div,{id:i.id,...r,ref:t})});Be.displayName=ze;var Q=`SelectItem`,[Ve,He]=K(Q),Ue=O.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,s=J(Q,n),c=Z(Q,n),l=s.value===r,[u,d]=O.useState(a??``),[f,p]=O.useState(!1),m=v(t,e=>c.itemRefCallback?.(e,r,i)),g=D(),y=O.useRef(`touch`),b=()=>{i||(s.onValueChange(r),s.onOpenChange(!1))};if(r===``)throw Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,j.jsx)(Ve,{scope:n,value:r,disabled:i,textId:g,isSelected:l,onItemTextChange:O.useCallback(e=>{d(t=>t||(e?.textContent??``).trim())},[]),children:(0,j.jsx)(W.ItemSlot,{scope:n,value:r,disabled:i,textValue:u,children:(0,j.jsx)(h.div,{role:`option`,"aria-labelledby":g,"data-highlighted":f?``:void 0,"aria-selected":l&&f,"data-state":l?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:m,onFocus:_(o.onFocus,()=>p(!0)),onBlur:_(o.onBlur,()=>p(!1)),onClick:_(o.onClick,()=>{y.current!==`mouse`&&b()}),onPointerUp:_(o.onPointerUp,()=>{y.current===`mouse`&&b()}),onPointerDown:_(o.onPointerDown,e=>{y.current=e.pointerType}),onPointerMove:_(o.onPointerMove,e=>{y.current=e.pointerType,i?c.onItemLeave?.():y.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:_(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:_(o.onKeyDown,e=>{c.searchRef?.current!==``&&e.key===` `||(H.includes(e.key)&&b(),e.key===` `&&e.preventDefault())})})})})});Ue.displayName=Q;var $=`SelectItemText`,We=O.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=J($,n),s=Z($,n),c=He($,n),l=fe($,n),[u,d]=O.useState(null),f=v(t,e=>d(e),c.onItemTextChange,e=>s.itemTextRefCallback?.(e,c.value,c.disabled)),p=u?.textContent,m=O.useMemo(()=>(0,j.jsx)(`option`,{value:c.value,disabled:c.disabled,children:p},c.value),[c.disabled,c.value,p]),{onNativeOptionAdd:_,onNativeOptionRemove:y}=l;return g(()=>(_(m),()=>y(m)),[_,y,m]),(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(h.span,{id:c.textId,...a,ref:f}),c.isSelected&&o.valueNode&&!o.valueNodeHasChildren?k.createPortal(a.children,o.valueNode):null]})});We.displayName=$;var Ge=`SelectItemIndicator`,Ke=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return He(Ge,n).isSelected?(0,j.jsx)(h.span,{"aria-hidden":!0,...r,ref:t}):null});Ke.displayName=Ge;var qe=`SelectScrollUpButton`,Je=O.forwardRef((e,t)=>{let n=Z(qe,e.__scopeSelect),r=Me(qe,e.__scopeSelect),[i,a]=O.useState(!1),o=v(t,r.onScrollButtonChange);return g(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollTop>0;a(e)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,j.jsx)(Ze,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});Je.displayName=qe;var Ye=`SelectScrollDownButton`,Xe=O.forwardRef((e,t)=>{let n=Z(Ye,e.__scopeSelect),r=Me(Ye,e.__scopeSelect),[i,a]=O.useState(!1),o=v(t,r.onScrollButtonChange);return g(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight,n=Math.ceil(t.scrollTop)<e;a(n)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,j.jsx)(Ze,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});Xe.displayName=Ye;var Ze=O.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=Z(`SelectScrollButton`,n),o=O.useRef(null),s=G(n),c=O.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return O.useEffect(()=>()=>c(),[c]),g(()=>{s().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[s]),(0,j.jsx)(h.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:_(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:_(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:_(i.onPointerLeave,()=>{c()})})}),Qe=`SelectSeparator`,$e=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,j.jsx)(h.div,{"aria-hidden":!0,...r,ref:t})});$e.displayName=Qe;var et=`SelectArrow`,tt=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=q(n),a=J(et,n),o=Z(et,n);return a.open&&o.position===`popper`?(0,j.jsx)(c,{...i,...r,ref:t}):null});tt.displayName=et;var nt=`SelectBubbleInput`,rt=O.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=O.useRef(null),a=v(r,i),o=oe(t);return O.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(o!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,j.jsx)(h.select,{...n,style:{...l,...n.style},ref:a,defaultValue:t})});rt.displayName=nt;function it(e){return e===``||e===void 0}function at(e){let t=T(e),n=O.useRef(``),r=O.useRef(0),i=O.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=O.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return O.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function ot(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=st(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function st(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var ct=pe,lt=he,ut=_e,dt=ye,ft=xe,pt=Se,mt=Pe,ht=Be,gt=Ue,_t=We,vt=Ke,yt=Je,bt=Xe,xt=$e,St=ct,Ct=ut,wt=O.forwardRef(({className:e,children:t,...n},r)=>(0,j.jsxs)(lt,{ref:r,className:p(`flex h-8 w-full items-center justify-between rounded-control border border-input bg-background px-3 py-1 text-xs placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1`,e),...n,children:[t,(0,j.jsx)(dt,{asChild:!0,children:(0,j.jsx)(i,{className:`h-3 w-3 opacity-50`})})]}));wt.displayName=lt.displayName;var Tt=O.forwardRef(({className:e,...t},n)=>(0,j.jsx)(yt,{ref:n,className:p(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,j.jsx)(o,{className:`h-3 w-3`})}));Tt.displayName=yt.displayName;var Et=O.forwardRef(({className:e,...t},n)=>(0,j.jsx)(bt,{ref:n,className:p(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,j.jsx)(i,{className:`h-3 w-3`})}));Et.displayName=bt.displayName;var Dt=O.forwardRef(({className:e,children:t,position:n=`popper`,...r},i)=>(0,j.jsx)(ft,{children:(0,j.jsxs)(pt,{ref:i,className:p(`relative z-[105] max-h-96 min-w-[8rem] overflow-hidden rounded-card border border-border bg-popover text-popover-foreground shadow-2 u-pop`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,...r,children:[(0,j.jsx)(Tt,{}),(0,j.jsx)(mt,{className:p(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]`),children:t}),(0,j.jsx)(Et,{})]})}));Dt.displayName=pt.displayName;var Ot=O.forwardRef(({className:e,...t},n)=>(0,j.jsx)(ht,{ref:n,className:p(`py-1.5 pl-8 pr-2 text-xs font-semibold`,e),...t}));Ot.displayName=ht.displayName;var kt=O.forwardRef(({className:e,children:t,...n},r)=>(0,j.jsxs)(gt,{ref:r,className:p(`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-xs outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,e),...n,children:[(0,j.jsx)(`span`,{className:`absolute left-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,j.jsx)(vt,{children:(0,j.jsx)(a,{className:`h-3 w-3`})})}),(0,j.jsx)(_t,{children:t})]}));kt.displayName=gt.displayName;var At=O.forwardRef(({className:e,...t},n)=>(0,j.jsx)(xt,{ref:n,className:p(`-mx-1 my-1 h-px bg-muted`,e),...t}));At.displayName=xt.displayName;export{mt as _,Ct as a,gt as c,ft as d,ct as f,ut as g,lt as h,wt as i,vt as l,yt as m,Dt as n,pt as o,bt as p,kt as r,dt as s,St as t,_t as u};
@@ -0,0 +1 @@
1
+ var e={title:`Sprache`,description:`Desktop-weite UI-Sprache. Wird sofort angewendet – kein Neustart nötig.`,selectLabel:`Oberflächensprache`,updateFailed:`Spracheinstellung konnte nicht gespeichert werden`},t={title:`Projekteinstellungen`,loadFailed:`Die Projektkonfiguration konnte nicht geladen werden`},n={saveFailed:`Speichern fehlgeschlagen`},r={title:`Pipeline-Telemetrie`,description:`Erfasst Token-Verbrauch, Phasendauern und Subagent-Aktivität für den Diagnose-Export. Standardmäßig an.`,toggleLabel:`Pipeline-Telemetrie aktivieren`,toggleDescription:`Wenn aktiviert, werden OTEL-Daten aus Pipeline-Jobs lokal erfasst. Verwenden Sie zum Herunterladen die Schaltfläche <mono>Diagnose exportieren</mono> auf einer beliebigen Job-Karte.`,enabled:`Pipeline-Telemetrie aktiviert`,disabled:`Pipeline-Telemetrie deaktiviert`,saveFailed:`Telemetrie-Einstellung konnte nicht gespeichert werden`},i={title:`Rail-Pre-Prompt`,description:`Zusätzliche projektspezifische Anweisungen, die an implement-Rail-Jobs angehängt werden – nach dem Spec-Kontext und vor der Ausführung.`,label:`Pre-Prompt`,placeholder:`Beispiel: Bevorzuge inkrementelle Änderungen, halte Migrationen abwärtskompatibel und füge Tests für jede Rail-Änderung hinzu.`,helper:`Für stabile Projektleitlinien, die jeden Rail-Implementierungslauf begleiten sollen.`,saveButton:`Pre-Prompt speichern`,cleared:`Pre-Prompt gelöscht`,saved:`Pre-Prompt gespeichert`,saveFailed:`Pre-Prompt konnte nicht gespeichert werden`},a={title:`Freestyle-Pre-Prompt`,description:`Anweisung, die in Freestyle an den ausgewählten Anbieter gesendet wird. Freestyle überspringt die OpenSpec-Pipeline – der Anbieter erhält diesen Pre-Prompt plus den Spec-Text und implementiert autonom. Leer lassen, um den eingebauten Standard zu verwenden.`,label:`Freestyle-Pre-Prompt`,placeholder:`Leer lassen, um die Standard-Freestyle-Anweisung zu verwenden.`,helper:`Der Spec-Text wird automatisch nach diesem Pre-Prompt angehängt. Leer = Standard.`,saveButton:`Freestyle-Pre-Prompt speichern`,resetToDefault:`Freestyle-Pre-Prompt auf Standard zurückgesetzt`,saved:`Freestyle-Pre-Prompt gespeichert`,saveFailed:`Freestyle-Pre-Prompt konnte nicht gespeichert werden`},o={title:`Budget`,description:`Tagesausgabenlimit für dieses Projekt festlegen. Die Queue pausiert automatisch, wenn das Limit erreicht ist.`,dailyLabel:`Tageslimit`,dailyHelper:`Die Ausgaben werden über die letzten 24 Stunden gezählt. Die Queue pausiert, sobald das Limit erreicht ist.`,perJobLabel:`Kostenalarm pro Job (USD)`,perJobHelper:`Alarm, wenn ein einzelner Job in diesem Projekt diesen Betrag überschreitet.`,perJobPlaceholder:`z. B. 0.50`,invalidNumber:`Positive Zahl eingeben oder leer lassen zum Deaktivieren`,perJobAlertDisabled:`Kostenalarm pro Job deaktiviert`,alertSet:`Alarm für Jobs über {{amount}} gesetzt`,saveThresholdFailed:`Schwellenwert konnte nicht gespeichert werden`,dailyCurrent:`Aktuell {{amount}} pro Tag`,dailyNone:`Kein Tageslimit gesetzt`},s={nav:{appearance:`Darstellung`,specrailsAgents:`KI-Anbieter`,code:`Code`,terminal:`Terminal`,updates:`Updates`,mobile:`Mobil`,mcp:`MCP`,projects:`Projekte`,advanced:`Erweitert`,webhooks:`Webhooks`,about:`Info`,effects:`Effekte`,subscriptionUsage:`Abonnementnutzung`},title:`Desktop-Einstellungen`,description:`Darstellung, KI-Anbieter, Updates und Desktop-weite Einstellungen.`,registeredProjects:`Registrierte Projekte`,noProjects:`Noch keine Projekte registriert`,techUrlDescription:`Basis-URL für die specrails-tech-API (Standard: http://localhost:3000)`,techUrlSaved:`specrails-tech-URL gespeichert`,techUrlSaveFailed:`URL konnte nicht gespeichert werden`,budgetAlertsHeading:`Budget & Alarme`,dailyBudgetLabel:`Desktop-Tageslimit`,dailyBudgetHelper:`Globales Tagesausgabenlimit über alle Projekte. Queues pausieren automatisch bei Überschreitung.`,perJobHelper:`Alarm, wenn ein einzelner Job diesen Betrag überschreitet. Leer lassen zum Deaktivieren.`,costAlertsDisabled:`Kostenalarme deaktiviert`,projectRemoved:`Projekt entfernt`,projectRemoveFailed:`Projekt konnte nicht entfernt werden`,onboardingHeading:`Onboarding`,platformTour:`Plattform-Tour`,platformTourDescription:`Den Willkommensassistenten erneut abspielen, um die wichtigsten Funktionen zu sehen.`,replayTour:`Tour erneut abspielen`,infoHeading:`Desktop-Informationen`,infoPort:`Port`,infoProjects:`Projekte`,infoDb:`Desktop-DB`,removeProjectConfirmTitle:`{{name}} entfernen?`,removeProjectConfirmBody:`{{name}} wird aus Specrails abgemeldet und laufende Arbeit wird gestoppt. Die Repository-Dateien auf der Festplatte werden nicht gelöscht; du kannst den Ordner später erneut hinzufügen.`,navLabel:`Einstellungsbereiche`,navGroups:{personal:`Persönlich`,agents:`Agenten`,system:`System`},unsavedChanges:`Ungespeicherte Änderungen`,dailyBudgetCurrent:`Aktuell {{amount}} pro Tag`,dailyBudgetNone:`Kein Tageslimit gesetzt`},c={heading:`OS-Benachrichtigungen`,description:`Native Desktop-Benachrichtigungen anzeigen, wenn Jobs abgeschlossen werden oder fehlschlagen. Benachrichtigungen erscheinen nur, wenn der Tab nicht fokussiert ist.`,enableLabel:`OS-Benachrichtigungen aktivieren`,notifyOn:`Benachrichtigen bei:`,filterAll:`Alle (abgeschlossen & fehlgeschlagen)`,filterCompleted:`Nur abgeschlossen`,filterFailed:`Nur fehlgeschlagen`,enabledToast:`OS-Benachrichtigungen aktiviert`,disabledToast:`OS-Benachrichtigungen deaktiviert`},l={heading:`Ausgehende Webhooks`,description:`Externe Tools (Slack, Zapier, CI/CD) bei Desktop-Ereignissen benachrichtigen. Anfragen werden über <code>X-Specrails-Signature</code> signiert, wenn ein Secret gesetzt ist.`,eventJobCompleted:`Job abgeschlossen`,eventJobFailed:`Job fehlgeschlagen`,eventDailyBudgetExceeded:`Tagesbudget überschritten`,disable:`Deaktivieren`,enable:`Aktivieren`,sendTestPing:`Test-Ping senden`,addHeading:`Webhook hinzufügen`,secretPlaceholder:`Signatur-Secret (optional)`,addButton:`Webhook hinzufügen`,urlRequired:`URL ist erforderlich`,selectEvent:`Mindestens ein Ereignis auswählen`,added:`Webhook hinzugefügt`,addFailed:`Webhook konnte nicht hinzugefügt werden`,updateFailed:`Webhook konnte nicht aktualisiert werden`,removed:`Webhook entfernt`,removeFailed:`Webhook konnte nicht entfernt werden`,testPingSent:`Test-Ping gesendet`,testPingFailed:`Test-Ping konnte nicht gesendet werden`,removeConfirmTitle:`Webhook entfernen?`,removeConfirmBody:`{{url}} erhält keine Desktop-Ereignisse mehr.`,urlLabel:`Webhook-URL`},u={title:`Terminal-Panel`,desktopDescription:`Desktop-weite Standardwerte für alle Projekte, sofern kein projektspezifischer Override gesetzt ist.`,projectDescription:`Projektspezifische Overrides für das Terminal-Panel. Lassen Sie ein Feld unverändert, um den Desktop-Standard zu erben.`,fontFamily:`Schriftfamilie`,fontSize:`Schriftgröße ({{min}}–{{max}})`,renderMode:`Render-Modus`,copyOnSelect:`Beim Auswählen kopieren`,shellIntegration:`Shell-Integration (OSC-133-Marken)`,notifyLongRunning:`Bei lang laufenden Befehlen benachrichtigen`,longCommandThreshold:`Schwellenwert für lange Befehle (ms)`,imageRendering:`Inline-Bilddarstellung (Sixel + iTerm2)`,browserShortcutUrl:`Browser-Shortcut-URL`,quickScript:`Quick-Skript (wird ins aktive Terminal eingefügt – Enter manuell drücken)`,reset:`Zurücksetzen`,unsavedChanges:`Ungespeicherte Änderungen`,clearOverride:`Override entfernen`,clear:`Entfernen`,inheritingDefault:`Erbt Desktop-Standard`,nothingToSave:`Nichts zu speichern`,saved:`Terminal-Einstellungen gespeichert`},d={heading:`Code-Bereich`,summaryLanguage:`Sprache der Zusammenfassungen`,monthlyBudget:`Monatsbudget (USD)`,budgetHelper:"Obergrenze für `surface=file-summary`-Ausgaben pro Kalendermonat. Von Nutzern angestoßene Neugenerierungen können sie überschreiten."},f={taglines:{dracula:`Das Original — dunkel mit Violettstich und lebhaften Neon-Akzenten`,"aurora-light":`Premium hell — Linear-inspiriertes Indigo auf warmem Cremeweiß`,"obsidian-dark":`Graphit Pro — neutrales Fast-Schwarz mit einem gedämpften Violett-Akzent`,specrails:`Marken-Theme — tiefes Marine-Indigo mit satten Cyan-Akzenten`,"code-rain":`Phosphor-Terminal — sanftes Mint auf grünlichem Fast-Schwarz`,galaxy:`Tiefraum-Blau mit einer leuchtenden Klingenspur`},heading:`Erscheinungsbild`,themeGroupLabel:`Theme`,currentlyActive:`Derzeit aktiv`,updateFailed:`Theme konnte nicht aktualisiert werden`},p={heading:`Mobile Companion`,description:`Steuern Sie Specrails über die SpecRails Companion-App auf Ihrem Smartphone – zu 100 % über Ihr lokales Netzwerk. Standardmäßig aus. Ein gekoppeltes Smartphone kann im Posteingang Fragen beantworten, fortsetzen, wiederholen und Entwurfs-PRs erstellen, soweit die MCP-Berechtigungsstufen es erlauben; Zusammenführen, Verwerfen und Einstellungen bleiben auf diesem Computer.`,accessOn:`Mobilzugriff an`,accessOff:`Mobilzugriff aus`,listeningOnPort:`Lauscht auf Port {{port}}`,notListening:`Lauscht nicht`,turnOn:`Einschalten`,turnOff:`Ausschalten`,pairWebDevice:`Web-Companion koppeln`,reset:`Zurücksetzen`,resetConfirm:`Mobile Identität zurücksetzen? Alle gekoppelten Geräte werden widerrufen und müssen neu gekoppelt werden.`,identityReset:`Mobile Identität zurückgesetzt`,enableFailed:`Mobilzugriff konnte nicht aktiviert werden`,disableFailed:`Mobilzugriff konnte nicht deaktiviert werden`,windowsFirewall:`Die Windows-Firewall fragt beim ersten Aktivieren, ob der SpecRails-Server zugelassen werden soll – wählen Sie „In privaten Netzwerken zulassen“.`,pairedDevices:`Gekoppelte Geräte`,noDevices:`Noch keine Geräte gekoppelt.`,revokeDevice:`{{name}} widerrufen`,resetConfirmTitle:`Mobile Identität zurücksetzen?`},m={title:`Web-Companion koppeln`,description:`Öffnen Sie specrails.dev/companion-app auf Ihrem Smartphone und scannen Sie damit diesen Code.`,startFailed:`Koppeln konnte nicht gestartet werden: {{error}}`,showThenScan:`Nachdem Ihr Smartphone dies gescannt hat, tippen Sie auf „Code des Smartphones scannen“ und richten Sie die Kamera auf Ihr Smartphone.`,scanAnswer:`Code des Smartphones scannen`,scanning:`Richten Sie die Kamera auf den Code auf Ihrem Smartphone…`,cameraFailed:`Kamera nicht verfügbar`,notAnswer:`Dieser QR-Code ist keine Kopplungsantwort.`,connecting:`Verbinden…`,paired:`✓ Gekoppelt`,pairedToast:`Web-Companion gekoppelt`,answerRejected:`Der Desktop hat diesen Code abgelehnt. Erzeugen Sie einen neuen und versuchen Sie es erneut.`,copyCode:`Code kopieren`,codeCopied:`Code kopiert`,cancel:`Abbrechen`},h={heading:`Specrails Core`,installed:`Installiert:`,updateAvailable:`Update verfügbar: {{version}}`,upToDate:`Aktuell`,neverChecked:`Nicht geprüft`,check:`Nach Updates suchen`,checking:`Wird geprüft…`,update:`Auf {{version}} aktualisieren`,downloading:`Wird heruntergeladen…`,materializing:`Wird installiert…`,affectsAll:`Gilt für alle Projekte — kein Neustart nötig.`,unavailable:`Core-Updates sind in diesem Build nicht verfügbar.`,toastDone:`Specrails Core auf {{version}} aktualisiert`,toastUpToDate:`Specrails Core ist aktuell`,runtime:`Laufzeit: {{version}}`,bundled:`In Desktop enthalten: {{version}}`,sources:{override:`Explizite Auswahl`,managed:`Von Desktop verwaltet`,bundled:`In Desktop enthalten`,local:`Lokales Paket`,global:`Externe CLI`},repair:`Update auf {{version}} abschließen`,stableFallback:`specrails-core hat noch keine stabile Version, daher folgt Core vorerst Neueste.`,updateFailed:`Core-Update fehlgeschlagen`,checkFailed:`Update-Prüfung fehlgeschlagen`,loadError:`Core-Status konnte nicht aktualisiert werden.`},g={heading:`Update-Kanal`,loading:`Kanal wird geladen…`,scope:`Gilt für Specrails Desktop und das specrails-core-Framework.`,saved:`Update-Kanal: {{channel}}`,saveFailed:`Update-Kanal konnte nicht geändert werden`,latest:{label:`Neueste`,description:`Jede Version sofort nach Veröffentlichung. Neue Funktionen und Korrekturen zuerst.`},stable:{label:`Stabil`,description:`Nur Versionen, die nach mindestens einer Woche auf Neueste mit grüner CI freigegeben wurden. Core folgt seinem stable-Tag.`}},_={heading:`Specrails Desktop`,installed:`Installiert:`,check:`Nach Updates suchen`,checking:`Wird geprüft…`,upToDate:`Du hast die neueste Version`,updateAvailable:`Update verfügbar: {{version}}`,autoHint:`Wird beim Start und alle 6 Stunden automatisch geprüft.`,unavailable:`App-Updates sind nur in der Desktop-App verfügbar.`,toastUpToDate:`Specrails Desktop ist aktuell`,toastCheckFailed:`Update-Prüfung fehlgeschlagen`,stableUnavailable:`Für den Kanal Stabil wurde noch keine Version freigegeben. Wechsle zu Neueste oder versuche es später erneut.`},v={title:`{{name}} — Einstellungen`,description:`Projektkonfiguration: Prompts, Branch, Umgebung, Budget, Telemetrie, Regeln und Terminal.`,nav:{general:`Allgemein`,branch:`Branch`,environment:`Umgebung`,budget:`Budget`,telemetry:`Telemetrie`,terminal:`Terminal`,agentRuntime:`Verifikationsbefehle`,subagents:`Sub-Agenten`,rules:`Regeln`,recentlyDeleted:`Zuletzt gelöscht`},navLabel:`Bereiche der Projekteinstellungen`},y={title:`Integrationszweig`,description:`Der Branch, von dem parallele Rails abzweigen und auf den ihre Entwurfs-PRs zielen. Leer lassen, um automatisch den Standard-Branch des Repositorys zu verwenden.`,placeholder:`automatisch (Standard-Branch)`,resolved:`Rails zweigen von <mono>{{branch}}</mono> ab`,save:`Branch speichern`,saved:`Integrationszweig gespeichert`,saveFailed:`Integrationszweig konnte nicht gespeichert werden`},b={title:`Worktree-Umgebung`,description:`Wählen Sie die Namen der Umgebungsvariablen, die dieses Projekt an Rail-Jobs und isolierte Loop-Worktrees weitergibt. Gespeichert werden nur Namen; Werte werden beim Start gelesen und bei Bedarf aus der Login-Shell nachgeladen.`,label:`Umgebungsvariable`,placeholder:`NODE_AUTH_TOKEN`,helper:`Drücken Sie Enter oder Hinzufügen. Mehrere Namen können durch Kommas oder Leerzeichen getrennt eingefügt werden.`,add:`Hinzufügen`,empty:`Für dieses Projekt sind noch keine eigenen Variablen konfiguriert.`,remove:`{{name}} entfernen`,save:`Umgebung speichern`,saved:`Worktree-Umgebung gespeichert`,saveFailed:`Worktree-Umgebung konnte nicht gespeichert werden`,invalidName:`{{name}} ist kein gültiger Name für eine Umgebungsvariable`,noValues:`Fügen Sie hier nur Variablennamen hinzu, keine KEY=value-Geheimnisse.`,status:{inherited:`Geerbt`,recovered:`Aus Login-Shell`,notDefined:`Nicht definiert`,probeTimeout:`Shell-Zeitüberschreitung`,probeFailed:`Shell-Prüfung fehlgeschlagen`,pending:`Wird geprüft…`},hint:{defaultShell:`deine Login-Shell`,inherited:`In der Umgebung verfügbar, mit der Specrails gestartet wurde.`,recovered:`Aus {{shell}} wiederhergestellt. Läufe erhalten sie automatisch; der Wert wird nie angezeigt.`,notDefined:`{{shell}} exportiert {{name}} nicht. Füge einen Export in dein Shell-Profil ein und prüfe erneut.`,notDefinedInherited:`{{name}} ist in der Umgebung, mit der Specrails gestartet wurde, nicht gesetzt. Setze sie dort und starte Specrails neu.`,probeTimeout:`{{shell}} brauchte länger als {{seconds}} s zum Starten. Beschleunige das Profil oder erhöhe SPECRAILS_LOGIN_SHELL_TIMEOUT_MS und prüfe erneut.`,probeFailed:`Specrails konnte {{shell}} nicht lesen. Korrigiere das Profil oder starte Specrails aus einem Terminal und prüfe erneut.`,pending:`Specrails liest deine Login-Shell.`},recheck:`Erneut prüfen`,checking:`Wird geprüft…`,lastChecked:`Zuletzt geprüft um {{time}}`,statusUnavailable:`Der Umgebungsstatus konnte nicht gelesen werden.`,unresolvedTitle:`Läufe starten ohne diese Variablen:`},x={title:`Agentenumgebung`,description:`Lege fest, welche Umgebungsvariablen die Agenten dieses Projekts erhalten: Rail-Jobs, Loops, Missionen, Chats und Spec-Helfer.`,modes:{inherit:{label:`Erben (Standard)`,description:`Agenten erhalten die vollständige Umgebung, mit der Specrails gestartet wurde, plus die Namen oben. Verhalten wie bisher.`},minimal:{label:`Minimal`,description:`Agenten erhalten nur eine Positivliste (PATH, HOME, Sprache, Temp, Terminal, Proxy und Zertifikate), die Specrails-eigenen Variablen, die Anmeldevariablen des gewählten Anbieters und die Namen oben. Alles andere, etwa Cloud- oder Datenbank-Zugangsdaten, wird zurückgehalten.`}},saved:{inherit:`Agenten erben die vollständige Umgebung`,minimal:`Agenten erhalten jetzt die minimale Umgebung`},saveFailed:`Die Agentenumgebung konnte nicht gespeichert werden`,namesTitle:`Im Minimalmodus übergebene Variablen`,shared:`Alle Agenten`,passthrough:`Projektnamen (oben)`,noPassthrough:`Keine Projektnamen konfiguriert.`,provider:`Zusätzlich für {{provider}}`,noProviderNames:`Derzeit keine gesetzt (akzeptiert {{patterns}}).`,namesHelp:`Es werden nur Namen angezeigt, niemals Werte. Änderungen gelten für danach gestartete Agenten; offene Missionssitzungen behalten ihre Umgebung bis zum Neustart. Braucht ein Werkzeug eine weitere Variable, füge ihren Namen oben hinzu.`,statusUnavailable:`Die Variablenliste konnte nicht gelesen werden.`},S={heading:`Effekte`,description:`Visuelle Akzente in der App. Jeder lässt sich hier abschalten.`,thinkingHalo:{label:`Denk-Halo am Agent-Composer`,description:`Während der Agent nachdenkt oder schreibt, leuchtet der kreisende Ring des Builders um den Composer: er blendet beim Start eines Turns ein und beim Abschluss der Antwort aus.`},reducedMotion:`Folgt der Systemeinstellung für reduzierte Bewegung: der Ring bleibt ein statisches Leuchten.`,preview:`Vorschau`,previewThinking:`Denkt nach…`},C={title:`Sub-Agenten`,stateOn:`Agenten dürfen Sub-Agenten starten.`,stateOff:`Agenten arbeiten allein, ohne Sub-Agenten.`,explainParallel:`Mit Sub-Agenten verteilt ein Agent Arbeit an Helfer, die parallel laufen, nach seiner Antwort weiterarbeiten und sich melden, wenn sie fertig sind.`,explainCost:`Jeder Sub-Agent verbraucht eigene Tokens – eine einzelne Anfrage kann deutlich mehr kosten.`,enabled:`Sub-Agenten erlaubt`,disabled:`Sub-Agenten deaktiviert`,saveFailed:`Die Sub-Agenten-Einstellung konnte nicht gespeichert werden`,project:{description:`Erlaubt Missionen, Explore- und Verfeinerungs-Agenten dieses Projekts, Sub-Agenten zu nutzen. Standardmäßig aus.`,toggleLabel:`Sub-Agenten in diesem Projekt erlauben`,explainScope:`Implement-Pipelines sind nicht betroffen. Missionen mit laufenden Sub-Agenten übernehmen die Änderung, sobald diese fertig sind.`},global:{description:`Erlaubt Missionen ohne Projekt, Sub-Agenten zu nutzen. Standardmäßig aus.`,toggleLabel:`Sub-Agenten in Missionen ohne Projekt erlauben`,explainScope:`Jedes Projekt hat eine eigene Einstellung in den Projekteinstellungen. Missionen mit laufenden Sub-Agenten übernehmen die Änderung, sobald diese fertig sind.`},runtime:{label:`Sub-Agenten ausführen mit`,same:`Wie der Missions-Agent`,sameHint:`Sub-Agenten nutzen Anbieter, Modell und Aufwand des Missions-Agenten und werden nativ von dessen CLI gestartet.`,chosenHint:`Missionen auf {{provider}} starten ihre eigenen Sub-Agenten mit diesem Modell. Bei jedem anderen Anbieter startet Specrails sie auf {{provider}}.`,providerLabel:`Anbieter der Sub-Agenten`,modelLabel:`Modell der Sub-Agenten`,effortLabel:`Aufwand der Sub-Agenten`,claudeEffortHint:`Claudes eigene Sub-Agenten ignorieren den Aufwand; er gilt, wenn Specrails sie startet.`,saved:`Sub-Agenten laufen jetzt mit {{provider}}`,reset:`Sub-Agenten folgen wieder dem Missions-Agenten`,confirm:{title:`Sub-Agenten mit {{provider}} ausführen?`,body:`In Missionen mit einem anderen Anbieter sind Sub-Agenten nicht mehr nativ: Specrails startet jeden als eigene {{provider}}-Sitzung statt im CLI der Mission.`,cost:`Langsamer und möglicherweise teurer: Jeder Sub-Agent startet kalt, ohne den Prompt-Cache, den er mit dem Missions-Agenten teilen würde.`,control:`Mehr Kontrolle und Flexibilität: Anbieter kombinieren, Modell und Aufwand wählen, die echten Kosten jedes Sub-Agenten sehen und sie nach der Antwort der Mission weiterarbeiten lassen.`,native:`Missionen, die bereits {{provider}} nutzen, behalten native Sub-Agenten, jetzt mit diesem Modell und Aufwand.`,cancel:`Wie die Mission belassen`,accept:`{{provider}} verwenden`}}},w={title:`Protokoll der Agentenaktionen`,description:`Ein Projektprotokoll darüber, was Agenten gelesen, geschrieben, ausgeführt, per MCP aufgerufen oder abgerufen haben — als JSONL oder CSV aus jedem Job und dem Review-Paket exportierbar.`,retentionLabel:`Einträge aufbewahren für`,daysUnit:`Tage`,caveat:`Ältere Einträge werden beim Start und täglich entfernt. Lesezugriffe sind nur so vollständig wie der Stream des jeweiligen Anbieters; Inhalte und Umgebungswerte werden nie gespeichert.`,save:`Aufbewahrung speichern`,saved_one:`Agentenaktionen werden {{count}} Tag aufbewahrt`,saved_other:`Agentenaktionen werden {{count}} Tage aufbewahrt`,saveFailed:`Die Aufbewahrung des Protokolls konnte nicht gespeichert werden`,invalidDays:`Gib eine ganze Zahl von Tagen zwischen 1 und {{max}} ein`},T={title:`Review-Limit`,description:`Begrenze, wie viele Lieferungen gleichzeitig auf dein Review warten dürfen, damit neue Arbeit sich nicht schneller stapelt, als du entscheiden kannst.`,label:`Lieferungen, die auf Review warten`,help:`Wir empfehlen {{suggested}}: genug, damit die Rails beschäftigt bleiben, während du reviewst. Es zählen laufende Lieferungen, unentschiedene Lieferungen und offene PRs der App. Änderungen an einer bestehenden Lieferung sind immer erlaubt. Leer lassen für kein Limit.`,placeholder:`Kein Limit`,useSuggested:`{{suggested}} verwenden`,invalid:`Gib eine ganze Zahl von 1 bis {{max}} ein oder lass das Feld leer für kein Limit.`,saved_one:`Review-Limit auf {{count}} gesetzt`,saved_other:`Review-Limit auf {{count}} gesetzt`,removed:`Review-Limit entfernt`,saveFailed:`Das Review-Limit konnte nicht gespeichert werden`},E={title:`Verankerung in bestehenden Projekten`,description:`Optionale Verhaltensweisen, die Läufen helfen, das bestehende Projekt zu respektieren. Jede braucht einen Core, der sie unterstützt.`,coreRequired:`Der installierte Core unterstützt das noch nicht. Aktualisiere Core, um es zu aktivieren.`,saveFailed:`Einstellung konnte nicht gespeichert werden`,jiraPostClarifications:{label:`Klärungsfragen des Architekten in Jira posten`,description:`Wenn ein Lauf mit Fragen des Architekten pausiert oder mit Annahmen fortfährt, werden sie als Kommentar im verknüpften Jira-Vorgang gepostet. Eine Antwort dort wird an der Spec als Klärung festgehalten.`,enabled:`Klärungen werden in Jira gepostet`,disabled:`Klärungen bleiben in Specrails`},baselineOnTouch:{label:`Baseline bei Berührung`,description:`Wenn eine Änderung Code erreicht, den keine Spec beschreibt, zuerst Charakterisierungstests (am unveränderten Code bestätigt) und eine minimale Ist-Spec schreiben. Verursacht Kosten, die separat ausgewiesen werden.`,enabled:`Baseline bei Berührung aktiviert`,disabled:`Baseline bei Berührung deaktiviert`}},D={title:`Projektregeln`,description:`Die Prüfungen, die das Projekt bereits ausführt, und jede schriftliche Regel, eingestuft als durchgesetzt, automatisierbar oder nur manuell prüfbar. Manuell zu prüfende Regeln erscheinen in jedem Review-Paket.`,rerun:`Inventur erneut ausführen`,running:`Inventur läuft…`,coreRequired:`Der installierte Core unterstützt die Regelinventur nicht. Aktualisiere Core, um sie auszuführen.`,missing:`Noch keine Inventur. Führe sie aus, um die Gates und Regeln des Projekts aufzulisten.`,invalid:`Die Regeldatei konnte nicht gelesen werden: {{message}}`,inventoryDone:`Regelinventur aktualisiert`,inventoryFailed:`Die Regelinventur ist fehlgeschlagen`,specCreated:`Spec #{{id}} erstellt`,specFailed:`Spec konnte nicht erstellt werden`,status:{automatable:`Automatisierbar`,humanOnly:`Nur manuell`,enforcedBy:`Durchgesetzt`,unclassified:`Nicht eingestuft`},generatedAt:`Erstellt {{date}}`,gates_one:`{{count}} Gate`,gates_other:`{{count}} Gates`,gatesHint:`Einfache Gate-Befehle werden in den Agent-Runtime-Einstellungen zuerst als Verifikationsprüfungen angeboten, wenn keine konfiguriert sind.`,enforcedBy:`Durchgesetzt durch {{check}}`,proposedCheck:`Vorgeschlagene Prüfung: {{check}}`,createSpec:`Spec erstellen`,dropped_one:`{{count}} Eintrag passte nicht zum Format und wurde übersprungen`,dropped_other:`{{count}} Einträge passten nicht zum Format und wurden übersprungen`,classification:{offline:`Die Regeln wurden offline erfasst und sind noch nicht eingestuft. Führe die Inventur mit einem konfigurierten Anbieter erneut aus.`,unavailable:`Es ist kein Anbieter zum Einstufen der Regeln konfiguriert.`,failed:`Das Einstufen der Regeln ist fehlgeschlagen.`,empty:`Es wurden keine schriftlichen Regeln gefunden.`,unknown:`Die Regeln sind nicht eingestuft.`},autoRunning:`Das Inventar läuft nach der Einrichtung. Diese Liste wird aktualisiert, sobald es fertig ist.`,lastRun:{setupFailed:`Das automatische Inventar nach der Einrichtung ist fehlgeschlagen ({{date}}).`,manualFailed:`Der letzte Inventarlauf ist fehlgeschlagen ({{date}}).`,retryHint:`Behebe die oben gezeigte Ursache und starte das Inventar erneut.`,setupDone:`Nach der Einrichtung automatisch inventarisiert.`}},O={heading:`Editor`,description:`Der Editor, den „Im Editor öffnen“ im Prüfpaket verwendet. Wird auf diesem Computer gespeichert.`,label:`Dateien öffnen in`,names:{vscode:`VS Code`,cursor:`Cursor`,jetbrains:`JetBrains-IDE`}},k=`Limits werden unter Analysen ▸ Budget bearbeitet.`,A=`Budget öffnen`,j=`Einstellungen öffnen`,M={density:{title:`Dichte`,description:`Wie viel Platz Karten und Zeilen einnehmen. Gilt für das Board, die Job-Liste und die Job-Story. Eine gespeicherte Board-Ansicht behält ihr eigenes Layout.`,comfortable:`Komfortabel`,comfortableHint:`Großzügige Karten und Zeilen`,compact:`Kompakt`,compactHint:`Mehr Specs und Zeilen auf dem Bildschirm`,resetBoard:`Auch für das Board verwenden`,resetBoardDone:`Das Board dieses Projekts folgt jetzt dieser Einstellung.`},motion:{title:`Bewegung reduzieren`,description:`Schaltet Animationen und Übergänge in Specrails aus, unabhängig von deinem Betriebssystem.`,system:`System folgen`,systemHint:`Nutzt die Einstellung deines Betriebssystems`,reduce:`Reduzieren`,reduceHint:`Immer ruhig: keine Animation`,full:`Volle Bewegung`,fullHint:`Animiert auch, wenn das System weniger verlangt`}},N={language:e,page:t,errors:n,telemetry:r,prePrompt:i,freestylePrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairWeb:m,coreUpdate:h,updateChannel:g,appUpdate:_,projectDialog:v,integrationBranch:y,worktreeEnv:b,agentEnv:x,effects:S,subagents:C,agentAudit:w,reviewWip:T,anchoring:E,rules:D,editorSection:O,budgetMoved:k,openBudget:A,openSettings:j,accessibility:M};export{M as accessibility,w as agentAudit,x as agentEnv,E as anchoring,_ as appUpdate,f as appearance,o as budget,k as budgetMoved,d as codeSection,h as coreUpdate,N as default,s as desktop,O as editorSection,S as effects,n as errors,a as freestylePrePrompt,y as integrationBranch,e as language,p as mobile,c as notifications,A as openBudget,j as openSettings,t as page,m as pairWeb,i as prePrompt,v as projectDialog,T as reviewWip,D as rules,C as subagents,r as telemetry,u as terminal,g as updateChannel,l as webhooks,b as worktreeEnv};