specrails-desktop 2.64.2 → 2.65.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1116) hide show
  1. package/README.md +1 -1
  2. package/cli/dist/status.js +3 -0
  3. package/client/dist/assets/ActivityFeedPage-ByVKYII-.js +1 -0
  4. package/client/dist/assets/AgentBrowserCapture-BGUTjhUr.js +1 -0
  5. package/client/dist/assets/AgentModeAnalyticsPane-CtOLDDjB.js +2 -0
  6. package/client/dist/assets/AgentModeCodePane-CDhUKarT.js +2 -0
  7. package/client/dist/assets/AgentModeJobsPane-BAa_oEHJ.js +1 -0
  8. package/client/dist/assets/AgentsPage-D32hG4Ve.js +120 -0
  9. package/client/dist/assets/AnalyticsPage-BU50zeG6.js +5 -0
  10. package/client/dist/assets/BudgetCard-DP_jxwaD.js +55 -0
  11. package/client/dist/assets/CodePage-jiYnKGpp.js +3 -0
  12. package/client/dist/assets/CostValue-Bvn8674q.js +1 -0
  13. package/client/dist/assets/DesktopAnalyticsPage-CF__H4e3.js +1 -0
  14. package/client/dist/assets/DocView-RrAp70zp.js +11 -0
  15. package/client/dist/assets/DocsDialog-DkqHU-JF.js +1 -0
  16. package/client/dist/assets/DocsPage-C6X089zC.js +1 -0
  17. package/client/dist/assets/ExportDropdown-C5-o8y3K.js +1 -0
  18. package/client/dist/assets/HelpHint-Crf9_uoR.js +1 -0
  19. package/client/dist/assets/IntegrationsPage-aflU3KHK.js +1 -0
  20. package/client/dist/assets/InteractiveJobComposer-CEMMhyyJ.js +19 -0
  21. package/client/dist/assets/JobDetailModal-BVJ6hyRs.js +1 -0
  22. package/client/dist/assets/JobDetailPage-DHzBUmox.js +1 -0
  23. package/client/dist/assets/JobsPage-o-LAqkwC.js +1 -0
  24. package/client/dist/assets/LoopBuilderPage-DbSVmXBM.js +1 -0
  25. package/client/dist/assets/LoopPreviewModal-DbJcVyN1.js +1 -0
  26. package/client/dist/assets/{LoopWindowSurface-DE0v2K1p.js → LoopWindowSurface-Co1ZK26V.js} +1 -1
  27. package/client/dist/assets/LoopsPage-C4lgkPXB.js +2 -0
  28. package/client/dist/assets/MinimizedChatsContext-742ypO8n.js +1 -0
  29. package/client/dist/assets/PluginsPage-Acks9ges.js +2 -0
  30. package/client/dist/assets/RailTrack-BfLmBzBh.js +1 -0
  31. package/client/dist/assets/{RepositoryScopeSelector-2eSqR9WK.js → RepositoryScopeSelector-DcxbKI9w.js} +1 -1
  32. package/client/dist/assets/ReviewPacketPage-CAVSIOAJ.js +7 -0
  33. package/client/dist/assets/TemplatePreviewModal-C23SYCTm.js +1 -0
  34. package/client/dist/assets/TicketDetailModalContext-B-Gtm6Ob.js +23 -0
  35. package/client/dist/assets/Trans-C6J0cLyh.js +1 -0
  36. package/client/dist/assets/a11y-prefs-BqoP5goK.js +1 -0
  37. package/client/dist/assets/activity-BBWfoUOG.js +1 -0
  38. package/client/dist/assets/activity-BM_skann.js +1 -0
  39. package/client/dist/assets/activity-Cevl82ke.js +1 -0
  40. package/client/dist/assets/activity-CmACk5W5.js +1 -0
  41. package/client/dist/assets/activity-D9LBw3PQ.js +1 -0
  42. package/client/dist/assets/activity-Dspbb9lz.js +1 -0
  43. package/client/dist/assets/activity-FPjYIjv9.js +1 -0
  44. package/client/dist/assets/activity-nLCKMUKt.js +1 -0
  45. package/client/dist/assets/addspec-BI4jDMhA.js +1 -0
  46. package/client/dist/assets/addspec-BldTv7Tl.js +1 -0
  47. package/client/dist/assets/addspec-Cdq-2EcC.js +1 -0
  48. package/client/dist/assets/addspec-DH5M16BQ.js +1 -0
  49. package/client/dist/assets/addspec-DOFo9pD5.js +1 -0
  50. package/client/dist/assets/addspec-DPkwhdmL.js +1 -0
  51. package/client/dist/assets/addspec-Dzy12Pv3.js +1 -0
  52. package/client/dist/assets/addspec-skTs6EEW.js +1 -0
  53. package/client/dist/assets/agent-B_UEUy7Y.js +1 -0
  54. package/client/dist/assets/agent-BarjlhTA.js +1 -0
  55. package/client/dist/assets/agent-BfqIITo5.js +1 -0
  56. package/client/dist/assets/agent-Bt9a7Kyj.js +1 -0
  57. package/client/dist/assets/agent-C3689RwP.js +1 -0
  58. package/client/dist/assets/agent-CrmboTAi.js +1 -0
  59. package/client/dist/assets/agent-DcsoTnuE.js +1 -0
  60. package/client/dist/assets/agent-GDZoYwd4.js +1 -0
  61. package/client/dist/assets/{agentRuntime-es2ymSl-.js → agentRuntime-BYH70bKY.js} +1 -1
  62. package/client/dist/assets/agentRuntime-BijLh8I9.js +1 -0
  63. package/client/dist/assets/{agentRuntime-BzuwQQgn.js → agentRuntime-BvyuETPe.js} +1 -1
  64. package/client/dist/assets/{agentRuntime-BDvbJMmS.js → agentRuntime-C2WI6HQh.js} +1 -1
  65. package/client/dist/assets/{agentRuntime-BKJfv5YD.js → agentRuntime-CZPIlQsr.js} +1 -1
  66. package/client/dist/assets/{agentRuntime-DiCldqGG.js → agentRuntime-D2dDvCyJ.js} +1 -1
  67. package/client/dist/assets/agentRuntime-DWZedEbn.js +1 -0
  68. package/client/dist/assets/agentRuntime-DkIruUNw.js +1 -0
  69. package/client/dist/assets/agents-35_PDKx9.js +1 -0
  70. package/client/dist/assets/agents-8fZnHhEQ.js +1 -0
  71. package/client/dist/assets/agents-Bgimtw8z.js +1 -0
  72. package/client/dist/assets/agents-C4P160Us.js +1 -0
  73. package/client/dist/assets/agents-Clg67zbp.js +1 -0
  74. package/client/dist/assets/agents-DJfF4o6G.js +1 -0
  75. package/client/dist/assets/agents-Dc9-Y5cw.js +1 -0
  76. package/client/dist/assets/agents-EN1Zl4YZ.js +1 -0
  77. package/client/dist/assets/agentstudio-Bm4-NYaG.js +1 -0
  78. package/client/dist/assets/agentstudio-CD1fuj2o.js +1 -0
  79. package/client/dist/assets/agentstudio-CQGWFSst.js +1 -0
  80. package/client/dist/assets/agentstudio-CqVSb65S.js +1 -0
  81. package/client/dist/assets/agentstudio-DIE_HjsX.js +1 -0
  82. package/client/dist/assets/agentstudio-D_OmQK-k.js +1 -0
  83. package/client/dist/assets/agentstudio-Djz9aUfb.js +1 -0
  84. package/client/dist/assets/agentstudio-Qa3v9o5J.js +1 -0
  85. package/client/dist/assets/{aiedit-DNXxq_Dr.js → aiedit-1VzLs37W.js} +1 -1
  86. package/client/dist/assets/{aiedit-DCjA7jLJ.js → aiedit-BNp6GSik.js} +1 -1
  87. package/client/dist/assets/{aiedit-BoG24nlg.js → aiedit-BOY5xRPi.js} +1 -1
  88. package/client/dist/assets/{aiedit-iIjz2_Qk.js → aiedit-BrqMZvbc.js} +1 -1
  89. package/client/dist/assets/{aiedit-CjlSRQVP.js → aiedit-CVgtl7hm.js} +1 -1
  90. package/client/dist/assets/{aiedit-DQ-0_pvE.js → aiedit-CrFW9Jd2.js} +1 -1
  91. package/client/dist/assets/{aiedit-olnv3QSt.js → aiedit-YE2lILp7.js} +1 -1
  92. package/client/dist/assets/{aiedit-B0KUbpB6.js → aiedit-iA_R1AVQ.js} +1 -1
  93. package/client/dist/assets/analytics-3w0t-4ic.js +1 -0
  94. package/client/dist/assets/analytics-BRi4KQD6.js +1 -0
  95. package/client/dist/assets/analytics-BtjAqzke.js +1 -0
  96. package/client/dist/assets/analytics-COSQ1h47.js +1 -0
  97. package/client/dist/assets/analytics-CP2HjESk.js +1 -0
  98. package/client/dist/assets/analytics-DY65TC62.js +1 -0
  99. package/client/dist/assets/analytics-Den_vvxn.js +1 -0
  100. package/client/dist/assets/analytics-LmBS96O8.js +1 -0
  101. package/client/dist/assets/api-DOGbyfTO.js +2 -0
  102. package/client/dist/assets/builder-BMVvSr4v.js +1 -0
  103. package/client/dist/assets/builder-BN-MuLZt.js +1 -0
  104. package/client/dist/assets/builder-BQOZi4CF.js +1 -0
  105. package/client/dist/assets/builder-BjUPjsyu.js +1 -0
  106. package/client/dist/assets/builder-BoBtN18T.js +1 -0
  107. package/client/dist/assets/builder-C5g5NhxL.js +1 -0
  108. package/client/dist/assets/builder-RUHXw3yx.js +1 -0
  109. package/client/dist/assets/builder-fyS_AiyC.js +1 -0
  110. package/client/dist/assets/button-CHPkroew.js +1 -0
  111. package/client/dist/assets/chat-C9L5T7KI.js +1 -0
  112. package/client/dist/assets/chevron-right-CwMAj0w_.js +1 -0
  113. package/client/dist/assets/chevron-up-BAMuP0XD.js +1 -0
  114. package/client/dist/assets/chunk-OB3PAWPO-BBaq6pUk.js +3 -0
  115. package/client/dist/assets/code-4le5IIbf.js +1 -0
  116. package/client/dist/assets/code-B-jCVIbm.js +1 -0
  117. package/client/dist/assets/code-BRfrn5ix.js +1 -0
  118. package/client/dist/assets/code-CC9NCrDM.js +1 -0
  119. package/client/dist/assets/code-CK6pm8wY.js +1 -0
  120. package/client/dist/assets/code-DDiOzd6c.js +1 -0
  121. package/client/dist/assets/code-tGifiyf5.js +1 -0
  122. package/client/dist/assets/code-xkn8kQTg.js +1 -0
  123. package/client/dist/assets/commands-Bv1QshHR.js +1 -0
  124. package/client/dist/assets/commands-BvxTxboW.js +1 -0
  125. package/client/dist/assets/commands-C5ORR0fO.js +1 -0
  126. package/client/dist/assets/commands-CBKMFSTV.js +1 -0
  127. package/client/dist/assets/commands-CFJIRsJv.js +1 -0
  128. package/client/dist/assets/commands-D9o3ZcXl.js +1 -0
  129. package/client/dist/assets/commands-DNox0Edk.js +1 -0
  130. package/client/dist/assets/commands-DmIUMLdV.js +1 -0
  131. package/client/dist/assets/common-5H4TkaoI.js +1 -0
  132. package/client/dist/assets/common-9S3OdPjx.js +1 -0
  133. package/client/dist/assets/common-BqnwIcjs.js +1 -0
  134. package/client/dist/assets/common-CQP3VafS.js +1 -0
  135. package/client/dist/assets/common-CZnAfkB2.js +1 -0
  136. package/client/dist/assets/common-D5sNttV4.js +1 -0
  137. package/client/dist/assets/common-k_qX9nlv.js +1 -0
  138. package/client/dist/assets/common-s4HIi9XI.js +1 -0
  139. package/client/dist/assets/compass-B7guwBlY.js +1 -0
  140. package/client/dist/assets/confirm-dialog-ChZdHL3Q.js +1 -0
  141. package/client/dist/assets/copy-DOPlLymH.js +1 -0
  142. package/client/dist/assets/core-BozBzB6Y.js +1 -0
  143. package/client/dist/assets/dashboard-6zGLGcEz.js +1 -0
  144. package/client/dist/assets/dashboard-8Gi0FBDq.js +1 -0
  145. package/client/dist/assets/dashboard-B7E5YrSy.js +1 -0
  146. package/client/dist/assets/dashboard-BhdKV8xK.js +1 -0
  147. package/client/dist/assets/dashboard-Bu3zzH_s.js +1 -0
  148. package/client/dist/assets/dashboard-Ce_6rELA.js +1 -0
  149. package/client/dist/assets/dashboard-DWY-oz8P.js +1 -0
  150. package/client/dist/assets/dashboard-gUzlWk0o.js +1 -0
  151. package/client/dist/assets/date-input-Cdlr8kHz.js +1 -0
  152. package/client/dist/assets/dialog-C23lB2iP.js +5 -0
  153. package/client/dist/assets/dist-Di-oOFkX.js +1 -0
  154. package/client/dist/assets/dist-js-CBmS6MsJ.js +1 -0
  155. package/client/dist/assets/{dist-js-Rlh4FLH5.js → dist-js-DaJmKapi.js} +1 -1
  156. package/client/dist/assets/dropdown-menu-Bfp2CK6H.js +1 -0
  157. package/client/dist/assets/empty-state-D5w9OWj-.js +1 -0
  158. package/client/dist/assets/es2015-DfnECntk.js +41 -0
  159. package/client/dist/assets/esm-BKF6CE7v.js +1 -0
  160. package/client/dist/assets/event-BEnMLqAi.js +1 -0
  161. package/client/dist/assets/explore--NOz9LCN.js +1 -0
  162. package/client/dist/assets/explore-B2ulH6dO.js +1 -0
  163. package/client/dist/assets/explore-BD-QiLdg.js +1 -0
  164. package/client/dist/assets/explore-BOqd4_1j.js +1 -0
  165. package/client/dist/assets/explore-Be_Zh5zu.js +1 -0
  166. package/client/dist/assets/explore-CLjzPSKo.js +1 -0
  167. package/client/dist/assets/explore-D_-vHm29.js +1 -0
  168. package/client/dist/assets/explore-yEQTF6ro.js +1 -0
  169. package/client/dist/assets/file-text-CNXzL3wj.js +1 -0
  170. package/client/dist/assets/format-BODoFIw6.js +1 -0
  171. package/client/dist/assets/formatDistanceToNow-DLMIOS0N.js +1 -0
  172. package/client/dist/assets/getTimezoneOffsetInMilliseconds-O61feXch.js +1 -0
  173. package/client/dist/assets/git-compare-arrows-Cu6tICCq.js +1 -0
  174. package/client/dist/assets/humanise-command-CB4ybLwq.js +1 -0
  175. package/client/dist/assets/inbox-BLZ8cm6_.js +1 -0
  176. package/client/dist/assets/inbox-BQ3VmNYY.js +1 -0
  177. package/client/dist/assets/inbox-BdcXWCuT.js +1 -0
  178. package/client/dist/assets/inbox-CF1PHjns.js +1 -0
  179. package/client/dist/assets/inbox-CFNPDhso.js +1 -0
  180. package/client/dist/assets/inbox-DIttK_NW.js +1 -0
  181. package/client/dist/assets/inbox-Dfdv1Ykl.js +1 -0
  182. package/client/dist/assets/inbox-JS1inmeO.js +1 -0
  183. package/client/dist/assets/index-4UWY7Xyz.css +2 -0
  184. package/client/dist/assets/index-DHzB0T26.js +120 -0
  185. package/client/dist/assets/integrations-BcKgzgPD.js +1 -0
  186. package/client/dist/assets/integrations-BmX_XyJq.js +1 -0
  187. package/client/dist/assets/integrations-CHpwMjlY.js +1 -0
  188. package/client/dist/assets/integrations-CT3kr8e-.js +1 -0
  189. package/client/dist/assets/integrations-C_5XAkgz.js +1 -0
  190. package/client/dist/assets/integrations-Ct9zLX7N.js +1 -0
  191. package/client/dist/assets/integrations-DEYemxUv.js +1 -0
  192. package/client/dist/assets/integrations-DWvsB_WB.js +1 -0
  193. package/client/dist/assets/{jira-Cq6yvN4q.js → jira-B_ERkFRv.js} +1 -1
  194. package/client/dist/assets/jira-Bn-A5lwD.js +1 -0
  195. package/client/dist/assets/jira-C71Ybnhp.js +1 -0
  196. package/client/dist/assets/jira-CkwjeJz6.js +1 -0
  197. package/client/dist/assets/jira-D9pSLXjI.js +1 -0
  198. package/client/dist/assets/jira-DBRS_lcp.js +1 -0
  199. package/client/dist/assets/jira-DHS6CsKh.js +1 -0
  200. package/client/dist/assets/jira-MInHRUb1.js +1 -0
  201. package/client/dist/assets/jira-api-DHme7Upx.js +1 -0
  202. package/client/dist/assets/jobs-BMLTDo63.js +1 -0
  203. package/client/dist/assets/jobs-BO8q4Mi1.js +1 -0
  204. package/client/dist/assets/jobs-Ck8uOWMM.js +1 -0
  205. package/client/dist/assets/jobs-CyFfPCpg.js +1 -0
  206. package/client/dist/assets/jobs-DT5s4fZ6.js +1 -0
  207. package/client/dist/assets/jobs-DZAgVPcD.js +1 -0
  208. package/client/dist/assets/jobs-b5gPYaKr.js +1 -0
  209. package/client/dist/assets/jobs-xsZK1440.js +1 -0
  210. package/client/dist/assets/launch-forecast-BTa-p3RP.js +1 -0
  211. package/client/dist/assets/{loop-layout-DtxX27Jz.css → loop-layout-DLioOiRN.css} +1 -1
  212. package/client/dist/assets/loop-layout-Sl9cfTvs.js +7 -0
  213. package/client/dist/assets/loops-BEEOVJDR.js +1 -0
  214. package/client/dist/assets/loops-BcrQ2vk7.js +1 -0
  215. package/client/dist/assets/loops-BjWxzJIZ.js +1 -0
  216. package/client/dist/assets/loops-BogV595N.js +1 -0
  217. package/client/dist/assets/loops-CU0BLZiz.js +1 -0
  218. package/client/dist/assets/loops-CrNBgi1G.js +1 -0
  219. package/client/dist/assets/loops-CwalwS_i.js +1 -0
  220. package/client/dist/assets/loops-_TDVN-fX.js +1 -0
  221. package/client/dist/assets/mcp-BNs8gxoL.js +1 -0
  222. package/client/dist/assets/mcp-BvRh_xO5.js +1 -0
  223. package/client/dist/assets/mcp-C2F1pghi.js +1 -0
  224. package/client/dist/assets/mcp-D9RLKAs2.js +1 -0
  225. package/client/dist/assets/mcp-DAghcsR0.js +1 -0
  226. package/client/dist/assets/mcp-DWWAPi1G.js +1 -0
  227. package/client/dist/assets/mcp-DbGSFC3f.js +1 -0
  228. package/client/dist/assets/mcp-FelCicrv.js +1 -0
  229. package/client/dist/assets/narration-C3NBkAR4.js +1 -0
  230. package/client/dist/assets/narration-CkoJq-Lf.js +1 -0
  231. package/client/dist/assets/narration-Cr0NeW9K.js +1 -0
  232. package/client/dist/assets/narration-DJUXOs-W.js +1 -0
  233. package/client/dist/assets/narration-DgL8TMvN.js +1 -0
  234. package/client/dist/assets/narration-DjBafgv0.js +1 -0
  235. package/client/dist/assets/narration-Dle6Iv0c.js +1 -0
  236. package/client/dist/assets/narration-MYlfktga.js +1 -0
  237. package/client/dist/assets/nav-BSQ8KW1c.js +1 -0
  238. package/client/dist/assets/nav-BauVof8Z.js +1 -0
  239. package/client/dist/assets/nav-BfOAH1se.js +1 -0
  240. package/client/dist/assets/nav-D3bOsipX.js +1 -0
  241. package/client/dist/assets/nav-DOMMhlLx.js +1 -0
  242. package/client/dist/assets/nav-DPzVlgZU.js +1 -0
  243. package/client/dist/assets/nav-DZJbFbah.js +1 -0
  244. package/client/dist/assets/nav-D_5aojd2.js +1 -0
  245. package/client/dist/assets/notify-error-BsWANx1T.js +1 -0
  246. package/client/dist/assets/onboarding-BdZQnNm3.js +1 -0
  247. package/client/dist/assets/onboarding-CJQEv1vp.js +1 -0
  248. package/client/dist/assets/onboarding-CWJGYUW3.js +1 -0
  249. package/client/dist/assets/onboarding-ChfYN7dA.js +1 -0
  250. package/client/dist/assets/onboarding-CjvDUR3V.js +1 -0
  251. package/client/dist/assets/onboarding-I6vS-zTB.js +1 -0
  252. package/client/dist/assets/onboarding-dgC_9dTB.js +1 -0
  253. package/client/dist/assets/onboarding-mlXSyKzX.js +1 -0
  254. package/client/dist/assets/origin-03nTuaOb.js +1 -0
  255. package/client/dist/assets/packet-BjpyRnZr.js +1 -0
  256. package/client/dist/assets/packet-BwgG5mBt.js +1 -0
  257. package/client/dist/assets/packet-C3eAUFkV.js +1 -0
  258. package/client/dist/assets/packet-C8wZuSld.js +1 -0
  259. package/client/dist/assets/packet-CNXEy_85.js +1 -0
  260. package/client/dist/assets/packet-DsV5Aa_8.js +1 -0
  261. package/client/dist/assets/packet-aasskOE7.js +1 -0
  262. package/client/dist/assets/packet-phxCc2gJ.js +1 -0
  263. package/client/dist/assets/page-header-BStSHkP8.js +1 -0
  264. package/client/dist/assets/project-repositories-DJPeAVBK.js +1 -0
  265. package/client/dist/assets/{provider-capabilities-lePfeT_Y.js → provider-capabilities-DtwcTme4.js} +1 -1
  266. package/client/dist/assets/recovery-BPDOsC92.js +1 -0
  267. package/client/dist/assets/recovery-BluNHoXM.js +1 -0
  268. package/client/dist/assets/recovery-CRvEmB0C.js +1 -0
  269. package/client/dist/assets/recovery-CeIoRnkR.js +1 -0
  270. package/client/dist/assets/recovery-DHCo8KGi.js +1 -0
  271. package/client/dist/assets/recovery-OxAIpbBF.js +1 -0
  272. package/client/dist/assets/recovery-XXexYGOJ.js +1 -0
  273. package/client/dist/assets/recovery-pITlc--v.js +1 -0
  274. package/client/dist/assets/refresh-cw-DfyTkbsf.js +1 -0
  275. package/client/dist/assets/select-xA3pSmqE.js +1 -0
  276. package/client/dist/assets/settings--yzDbX9r.js +1 -0
  277. package/client/dist/assets/settings-5_heTv8s.js +1 -0
  278. package/client/dist/assets/settings-BSf27MDg.js +1 -0
  279. package/client/dist/assets/settings-BSj6FakR.js +1 -0
  280. package/client/dist/assets/settings-BZDo_8Nn.js +1 -0
  281. package/client/dist/assets/settings-BdWgmNc0.js +1 -0
  282. package/client/dist/assets/settings-DRouxKqb.js +1 -0
  283. package/client/dist/assets/settings-DnWFoY-F.js +1 -0
  284. package/client/dist/assets/setup-BJWy62ri.js +1 -0
  285. package/client/dist/assets/setup-BgKOIuzc.js +1 -0
  286. package/client/dist/assets/setup-BvVIyUlz.js +1 -0
  287. package/client/dist/assets/setup-BxCk2pe1.js +1 -0
  288. package/client/dist/assets/setup-C-xQTL7R.js +1 -0
  289. package/client/dist/assets/setup-CbaVoiwV.js +1 -0
  290. package/client/dist/assets/setup-DxTBkX3P.js +1 -0
  291. package/client/dist/assets/setup-oGoVAzOD.js +1 -0
  292. package/client/dist/assets/specs-7tAb4IKr.js +1 -0
  293. package/client/dist/assets/specs-BUcY4s5v.js +1 -0
  294. package/client/dist/assets/specs-Bk5LeBAA.js +1 -0
  295. package/client/dist/assets/specs-CAA4Lrlg.js +1 -0
  296. package/client/dist/assets/specs-CS091AnA.js +1 -0
  297. package/client/dist/assets/specs-DJ6gmFcK.js +1 -0
  298. package/client/dist/assets/specs-GfCcrBSC.js +1 -0
  299. package/client/dist/assets/specs-xQgyc7WL.js +1 -0
  300. package/client/dist/assets/spending-CVH8VREb.js +1 -0
  301. package/client/dist/assets/square-Co6h5vZg.js +1 -0
  302. package/client/dist/assets/tauri-shell-43ixPGfa.js +2 -0
  303. package/client/dist/assets/terminal-0v9sBylD.js +1 -0
  304. package/client/dist/assets/terminal-AbUAmCxE.js +1 -0
  305. package/client/dist/assets/terminal-BJayIbIP.js +1 -0
  306. package/client/dist/assets/terminal-C2RUlXyi.js +1 -0
  307. package/client/dist/assets/terminal-CMmSb_Nj.js +1 -0
  308. package/client/dist/assets/terminal-DKWjj7HJ.js +1 -0
  309. package/client/dist/assets/terminal-KlFu7_pV.js +1 -0
  310. package/client/dist/assets/terminal-i99yqFvm.js +1 -0
  311. package/client/dist/assets/tickets-846Oq3i3.js +1 -0
  312. package/client/dist/assets/tickets-B5LJTe_b.js +1 -0
  313. package/client/dist/assets/tickets-Bfo2GGmH.js +1 -0
  314. package/client/dist/assets/tickets-BhdZ1yY2.js +1 -0
  315. package/client/dist/assets/tickets-CgjWJHAW.js +1 -0
  316. package/client/dist/assets/tickets-Ct9DbDUR.js +1 -0
  317. package/client/dist/assets/tickets-rptLEJB1.js +1 -0
  318. package/client/dist/assets/tickets-xQ6DpYdu.js +1 -0
  319. package/client/dist/assets/trending-up-BGvb4zZt.js +1 -0
  320. package/client/dist/assets/undo-6zuS4-sL.js +1 -0
  321. package/client/dist/assets/undo-BeM4gDOP.js +1 -0
  322. package/client/dist/assets/undo-BeppX8xS.js +1 -0
  323. package/client/dist/assets/undo-BqvNZ5MG.js +1 -0
  324. package/client/dist/assets/undo-BzwEPf_k.js +1 -0
  325. package/client/dist/assets/undo-CJ9Cu1NN.js +1 -0
  326. package/client/dist/assets/undo-ds8nMFbX.js +1 -0
  327. package/client/dist/assets/undo-x_gA-knG.js +1 -0
  328. package/client/dist/assets/useDesktop-BuOp2-MR.js +1 -0
  329. package/client/dist/assets/useRuntimeRuns-BRS6ncnO.js +1 -0
  330. package/client/dist/assets/utils-ELimjS2Y.js +1 -0
  331. package/client/dist/assets/wrench-Br2n1Lxd.js +1 -0
  332. package/client/dist/index.html +75 -60
  333. package/docs/ci-cd.md +29 -1
  334. package/docs/cli.md +10 -31
  335. package/docs/codex.md +1 -1
  336. package/docs/creating-specs.md +15 -12
  337. package/docs/customizing.md +16 -13
  338. package/docs/getting-started.md +12 -11
  339. package/docs/guide/de/agents/1-meet-the-agents.md +1 -1
  340. package/docs/guide/de/getting-started/2-installing-and-first-run.md +2 -0
  341. package/docs/guide/de/getting-started/3-try-the-sample-project.md +35 -0
  342. package/docs/guide/de/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  343. package/docs/guide/de/getting-started/6-universal-search.md +34 -0
  344. package/docs/guide/de/insights/1-analytics-and-cost-tracking.md +20 -6
  345. package/docs/guide/de/insights/2-the-integrated-terminal.md +1 -1
  346. package/docs/guide/de/insights/3-code-explorer.md +1 -1
  347. package/docs/guide/de/integrations/1-ai-providers.md +1 -1
  348. package/docs/guide/de/integrations/2-plugins.md +1 -1
  349. package/docs/guide/de/integrations/3-jira-integration.md +3 -3
  350. package/docs/guide/de/integrations/4-mobile-companion.md +1 -1
  351. package/docs/guide/de/integrations/5-mcp-server.md +1 -1
  352. package/docs/guide/de/integrations/6-agent-chat.md +12 -5
  353. package/docs/guide/de/integrations/8-flow-mode.md +69 -0
  354. package/docs/guide/de/pipeline/1-rails-and-jobs.md +21 -1
  355. package/docs/guide/de/pipeline/2-the-job-detail-view.md +12 -0
  356. package/docs/guide/de/pipeline/3-reviewing-a-delivery.md +43 -0
  357. package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +2 -2
  358. package/docs/guide/de/pipeline/5-the-loop-builder.md +1 -1
  359. package/docs/guide/de/settings/1-themes.md +1 -1
  360. package/docs/guide/de/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  361. package/docs/guide/de/settings/5-project-environment.md +1 -1
  362. package/docs/guide/de/settings/6-updates.md +24 -0
  363. package/docs/guide/de/settings/7-existing-projects.md +33 -0
  364. package/docs/guide/de/settings/8-accessibility.md +23 -0
  365. package/docs/guide/de/specs/1-specs-and-the-backlog.md +41 -3
  366. package/docs/guide/de/specs/2-add-spec-quick-mode.md +1 -1
  367. package/docs/guide/de/specs/3-add-spec-explore-mode.md +1 -1
  368. package/docs/guide/en/agents/1-meet-the-agents.md +1 -1
  369. package/docs/guide/en/getting-started/1-what-is-specrails.md +1 -1
  370. package/docs/guide/en/getting-started/2-installing-and-first-run.md +2 -0
  371. package/docs/guide/en/getting-started/3-try-the-sample-project.md +35 -0
  372. package/docs/guide/en/getting-started/5-the-dashboard-tour.md +52 -0
  373. package/docs/guide/en/getting-started/6-universal-search.md +34 -0
  374. package/docs/guide/en/insights/1-analytics-and-cost-tracking.md +24 -10
  375. package/docs/guide/en/insights/2-the-integrated-terminal.md +1 -1
  376. package/docs/guide/en/insights/3-code-explorer.md +5 -5
  377. package/docs/guide/en/integrations/1-ai-providers.md +1 -1
  378. package/docs/guide/en/integrations/2-plugins.md +1 -1
  379. package/docs/guide/en/integrations/3-jira-integration.md +4 -4
  380. package/docs/guide/en/integrations/4-mobile-companion.md +1 -1
  381. package/docs/guide/en/integrations/5-mcp-server.md +4 -4
  382. package/docs/guide/en/integrations/6-agent-chat.md +12 -5
  383. package/docs/guide/en/integrations/8-flow-mode.md +69 -0
  384. package/docs/guide/en/pipeline/1-rails-and-jobs.md +22 -3
  385. package/docs/guide/en/pipeline/2-the-job-detail-view.md +19 -7
  386. package/docs/guide/en/pipeline/3-reviewing-a-delivery.md +43 -0
  387. package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +2 -2
  388. package/docs/guide/en/pipeline/5-the-loop-builder.md +2 -2
  389. package/docs/guide/en/settings/1-themes.md +1 -1
  390. package/docs/guide/en/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  391. package/docs/guide/en/settings/5-project-environment.md +1 -1
  392. package/docs/guide/en/settings/6-updates.md +24 -0
  393. package/docs/guide/en/settings/7-existing-projects.md +33 -0
  394. package/docs/guide/en/settings/8-accessibility.md +23 -0
  395. package/docs/guide/en/specs/1-specs-and-the-backlog.md +42 -6
  396. package/docs/guide/en/specs/2-add-spec-quick-mode.md +1 -1
  397. package/docs/guide/en/specs/3-add-spec-explore-mode.md +2 -2
  398. package/docs/guide/es/agents/1-meet-the-agents.md +1 -1
  399. package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +1 -1
  400. package/docs/guide/es/agents/3-customizing-models-per-agent.md +2 -2
  401. package/docs/guide/es/agents/4-custom-agents-catalog.md +1 -1
  402. package/docs/guide/es/getting-started/1-what-is-specrails.md +3 -3
  403. package/docs/guide/es/getting-started/2-installing-and-first-run.md +2 -0
  404. package/docs/guide/es/getting-started/3-try-the-sample-project.md +35 -0
  405. package/docs/guide/es/getting-started/5-the-dashboard-tour.md +52 -0
  406. package/docs/guide/es/getting-started/6-universal-search.md +34 -0
  407. package/docs/guide/es/insights/1-analytics-and-cost-tracking.md +26 -12
  408. package/docs/guide/es/insights/2-the-integrated-terminal.md +1 -1
  409. package/docs/guide/es/insights/3-code-explorer.md +5 -5
  410. package/docs/guide/es/integrations/1-ai-providers.md +1 -1
  411. package/docs/guide/es/integrations/2-plugins.md +1 -1
  412. package/docs/guide/es/integrations/3-jira-integration.md +4 -4
  413. package/docs/guide/es/integrations/4-mobile-companion.md +1 -1
  414. package/docs/guide/es/integrations/5-mcp-server.md +4 -4
  415. package/docs/guide/es/integrations/6-agent-chat.md +14 -7
  416. package/docs/guide/es/integrations/7-local-engines.md +1 -1
  417. package/docs/guide/es/integrations/8-flow-mode.md +69 -0
  418. package/docs/guide/es/pipeline/1-rails-and-jobs.md +33 -13
  419. package/docs/guide/es/pipeline/2-the-job-detail-view.md +38 -26
  420. package/docs/guide/es/pipeline/3-reviewing-a-delivery.md +43 -0
  421. package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +2 -2
  422. package/docs/guide/es/pipeline/5-the-loop-builder.md +4 -4
  423. package/docs/guide/es/settings/1-themes.md +1 -1
  424. package/docs/guide/es/settings/3-pipeline-telemetry-and-diagnostics.md +10 -10
  425. package/docs/guide/es/settings/5-project-environment.md +1 -1
  426. package/docs/guide/es/settings/6-updates.md +24 -0
  427. package/docs/guide/es/settings/7-existing-projects.md +33 -0
  428. package/docs/guide/es/settings/8-accessibility.md +23 -0
  429. package/docs/guide/es/specs/1-specs-and-the-backlog.md +43 -7
  430. package/docs/guide/es/specs/2-add-spec-quick-mode.md +1 -1
  431. package/docs/guide/es/specs/3-add-spec-explore-mode.md +3 -3
  432. package/docs/guide/fr/agents/1-meet-the-agents.md +1 -1
  433. package/docs/guide/fr/getting-started/2-installing-and-first-run.md +2 -0
  434. package/docs/guide/fr/getting-started/3-try-the-sample-project.md +35 -0
  435. package/docs/guide/fr/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  436. package/docs/guide/fr/getting-started/6-universal-search.md +34 -0
  437. package/docs/guide/fr/insights/1-analytics-and-cost-tracking.md +18 -4
  438. package/docs/guide/fr/insights/2-the-integrated-terminal.md +1 -1
  439. package/docs/guide/fr/insights/3-code-explorer.md +1 -1
  440. package/docs/guide/fr/integrations/1-ai-providers.md +1 -1
  441. package/docs/guide/fr/integrations/2-plugins.md +1 -1
  442. package/docs/guide/fr/integrations/3-jira-integration.md +3 -3
  443. package/docs/guide/fr/integrations/4-mobile-companion.md +1 -1
  444. package/docs/guide/fr/integrations/5-mcp-server.md +1 -1
  445. package/docs/guide/fr/integrations/6-agent-chat.md +11 -4
  446. package/docs/guide/fr/integrations/8-flow-mode.md +69 -0
  447. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +21 -1
  448. package/docs/guide/fr/pipeline/2-the-job-detail-view.md +12 -0
  449. package/docs/guide/fr/pipeline/3-reviewing-a-delivery.md +43 -0
  450. package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +2 -2
  451. package/docs/guide/fr/pipeline/5-the-loop-builder.md +1 -1
  452. package/docs/guide/fr/settings/1-themes.md +1 -1
  453. package/docs/guide/fr/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  454. package/docs/guide/fr/settings/5-project-environment.md +1 -1
  455. package/docs/guide/fr/settings/6-updates.md +24 -0
  456. package/docs/guide/fr/settings/7-existing-projects.md +33 -0
  457. package/docs/guide/fr/settings/8-accessibility.md +23 -0
  458. package/docs/guide/fr/specs/1-specs-and-the-backlog.md +41 -3
  459. package/docs/guide/fr/specs/2-add-spec-quick-mode.md +1 -1
  460. package/docs/guide/fr/specs/3-add-spec-explore-mode.md +1 -1
  461. package/docs/guide/it/agents/1-meet-the-agents.md +1 -1
  462. package/docs/guide/it/getting-started/2-installing-and-first-run.md +2 -0
  463. package/docs/guide/it/getting-started/3-try-the-sample-project.md +35 -0
  464. package/docs/guide/it/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  465. package/docs/guide/it/getting-started/6-universal-search.md +34 -0
  466. package/docs/guide/it/insights/1-analytics-and-cost-tracking.md +18 -4
  467. package/docs/guide/it/insights/2-the-integrated-terminal.md +1 -1
  468. package/docs/guide/it/insights/3-code-explorer.md +1 -1
  469. package/docs/guide/it/integrations/1-ai-providers.md +1 -1
  470. package/docs/guide/it/integrations/2-plugins.md +1 -1
  471. package/docs/guide/it/integrations/3-jira-integration.md +3 -3
  472. package/docs/guide/it/integrations/4-mobile-companion.md +1 -1
  473. package/docs/guide/it/integrations/5-mcp-server.md +1 -1
  474. package/docs/guide/it/integrations/6-agent-chat.md +11 -4
  475. package/docs/guide/it/integrations/8-flow-mode.md +69 -0
  476. package/docs/guide/it/pipeline/1-rails-and-jobs.md +21 -1
  477. package/docs/guide/it/pipeline/2-the-job-detail-view.md +12 -0
  478. package/docs/guide/it/pipeline/3-reviewing-a-delivery.md +43 -0
  479. package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +2 -2
  480. package/docs/guide/it/pipeline/5-the-loop-builder.md +1 -1
  481. package/docs/guide/it/settings/1-themes.md +1 -1
  482. package/docs/guide/it/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  483. package/docs/guide/it/settings/5-project-environment.md +1 -1
  484. package/docs/guide/it/settings/6-updates.md +24 -0
  485. package/docs/guide/it/settings/7-existing-projects.md +33 -0
  486. package/docs/guide/it/settings/8-accessibility.md +23 -0
  487. package/docs/guide/it/specs/1-specs-and-the-backlog.md +41 -3
  488. package/docs/guide/it/specs/2-add-spec-quick-mode.md +1 -1
  489. package/docs/guide/it/specs/3-add-spec-explore-mode.md +1 -1
  490. package/docs/guide/ja/agents/1-meet-the-agents.md +1 -1
  491. package/docs/guide/ja/getting-started/2-installing-and-first-run.md +2 -0
  492. package/docs/guide/ja/getting-started/3-try-the-sample-project.md +35 -0
  493. package/docs/guide/ja/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  494. package/docs/guide/ja/getting-started/6-universal-search.md +34 -0
  495. package/docs/guide/ja/insights/1-analytics-and-cost-tracking.md +18 -4
  496. package/docs/guide/ja/insights/2-the-integrated-terminal.md +1 -1
  497. package/docs/guide/ja/insights/3-code-explorer.md +1 -1
  498. package/docs/guide/ja/integrations/1-ai-providers.md +1 -1
  499. package/docs/guide/ja/integrations/2-plugins.md +1 -1
  500. package/docs/guide/ja/integrations/3-jira-integration.md +3 -3
  501. package/docs/guide/ja/integrations/4-mobile-companion.md +1 -1
  502. package/docs/guide/ja/integrations/5-mcp-server.md +1 -1
  503. package/docs/guide/ja/integrations/6-agent-chat.md +11 -4
  504. package/docs/guide/ja/integrations/8-flow-mode.md +69 -0
  505. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +21 -1
  506. package/docs/guide/ja/pipeline/2-the-job-detail-view.md +12 -0
  507. package/docs/guide/ja/pipeline/3-reviewing-a-delivery.md +43 -0
  508. package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +2 -2
  509. package/docs/guide/ja/pipeline/5-the-loop-builder.md +1 -1
  510. package/docs/guide/ja/settings/1-themes.md +1 -1
  511. package/docs/guide/ja/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  512. package/docs/guide/ja/settings/5-project-environment.md +1 -1
  513. package/docs/guide/ja/settings/6-updates.md +24 -0
  514. package/docs/guide/ja/settings/7-existing-projects.md +33 -0
  515. package/docs/guide/ja/settings/8-accessibility.md +23 -0
  516. package/docs/guide/ja/specs/1-specs-and-the-backlog.md +41 -3
  517. package/docs/guide/ja/specs/2-add-spec-quick-mode.md +1 -1
  518. package/docs/guide/ja/specs/3-add-spec-explore-mode.md +1 -1
  519. package/docs/guide/pt/agents/1-meet-the-agents.md +1 -1
  520. package/docs/guide/pt/getting-started/2-installing-and-first-run.md +2 -0
  521. package/docs/guide/pt/getting-started/3-try-the-sample-project.md +35 -0
  522. package/docs/guide/pt/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  523. package/docs/guide/pt/getting-started/6-universal-search.md +34 -0
  524. package/docs/guide/pt/insights/1-analytics-and-cost-tracking.md +18 -4
  525. package/docs/guide/pt/insights/2-the-integrated-terminal.md +1 -1
  526. package/docs/guide/pt/insights/3-code-explorer.md +1 -1
  527. package/docs/guide/pt/integrations/1-ai-providers.md +1 -1
  528. package/docs/guide/pt/integrations/2-plugins.md +1 -1
  529. package/docs/guide/pt/integrations/3-jira-integration.md +3 -3
  530. package/docs/guide/pt/integrations/4-mobile-companion.md +1 -1
  531. package/docs/guide/pt/integrations/5-mcp-server.md +1 -1
  532. package/docs/guide/pt/integrations/6-agent-chat.md +12 -5
  533. package/docs/guide/pt/integrations/8-flow-mode.md +69 -0
  534. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +21 -1
  535. package/docs/guide/pt/pipeline/2-the-job-detail-view.md +12 -0
  536. package/docs/guide/pt/pipeline/3-reviewing-a-delivery.md +43 -0
  537. package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +2 -2
  538. package/docs/guide/pt/pipeline/5-the-loop-builder.md +1 -1
  539. package/docs/guide/pt/settings/1-themes.md +1 -1
  540. package/docs/guide/pt/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  541. package/docs/guide/pt/settings/5-project-environment.md +1 -1
  542. package/docs/guide/pt/settings/6-updates.md +24 -0
  543. package/docs/guide/pt/settings/7-existing-projects.md +33 -0
  544. package/docs/guide/pt/settings/8-accessibility.md +23 -0
  545. package/docs/guide/pt/specs/1-specs-and-the-backlog.md +41 -3
  546. package/docs/guide/pt/specs/2-add-spec-quick-mode.md +1 -1
  547. package/docs/guide/pt/specs/3-add-spec-explore-mode.md +1 -1
  548. package/docs/guide/zh/agents/1-meet-the-agents.md +1 -1
  549. package/docs/guide/zh/getting-started/2-installing-and-first-run.md +2 -0
  550. package/docs/guide/zh/getting-started/3-try-the-sample-project.md +35 -0
  551. package/docs/guide/zh/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  552. package/docs/guide/zh/getting-started/6-universal-search.md +34 -0
  553. package/docs/guide/zh/insights/1-analytics-and-cost-tracking.md +18 -4
  554. package/docs/guide/zh/insights/2-the-integrated-terminal.md +1 -1
  555. package/docs/guide/zh/insights/3-code-explorer.md +1 -1
  556. package/docs/guide/zh/integrations/1-ai-providers.md +1 -1
  557. package/docs/guide/zh/integrations/2-plugins.md +1 -1
  558. package/docs/guide/zh/integrations/3-jira-integration.md +3 -3
  559. package/docs/guide/zh/integrations/4-mobile-companion.md +1 -1
  560. package/docs/guide/zh/integrations/5-mcp-server.md +1 -1
  561. package/docs/guide/zh/integrations/6-agent-chat.md +11 -4
  562. package/docs/guide/zh/integrations/8-flow-mode.md +69 -0
  563. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +21 -1
  564. package/docs/guide/zh/pipeline/2-the-job-detail-view.md +12 -0
  565. package/docs/guide/zh/pipeline/3-reviewing-a-delivery.md +43 -0
  566. package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +2 -2
  567. package/docs/guide/zh/pipeline/5-the-loop-builder.md +1 -1
  568. package/docs/guide/zh/settings/1-themes.md +1 -1
  569. package/docs/guide/zh/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  570. package/docs/guide/zh/settings/5-project-environment.md +1 -1
  571. package/docs/guide/zh/settings/6-updates.md +24 -0
  572. package/docs/guide/zh/settings/7-existing-projects.md +33 -0
  573. package/docs/guide/zh/settings/8-accessibility.md +23 -0
  574. package/docs/guide/zh/specs/1-specs-and-the-backlog.md +41 -3
  575. package/docs/guide/zh/specs/2-add-spec-quick-mode.md +1 -1
  576. package/docs/guide/zh/specs/3-add-spec-explore-mode.md +1 -1
  577. package/docs/internals/README.md +8 -0
  578. package/docs/internals/adding-a-provider.md +19 -2
  579. package/docs/internals/agent-actions-audit.md +101 -0
  580. package/docs/internals/agent-sessions.md +36 -1
  581. package/docs/internals/api-reference.md +190 -45
  582. package/docs/internals/architecture.md +53 -47
  583. package/docs/internals/companion-inbox-decisions.md +42 -0
  584. package/docs/internals/companion-rails-as-loops-contract.md +17 -6
  585. package/docs/internals/configuration.md +140 -9
  586. package/docs/internals/core-runtime-updates.md +4 -4
  587. package/docs/internals/existing-project-anchoring.md +168 -0
  588. package/docs/internals/flow-mode.md +668 -0
  589. package/docs/internals/legacy-implementation-notes.md +13 -0
  590. package/docs/internals/local-testing-feedback-2026-10.md +210 -0
  591. package/docs/internals/mcp-mission-audit.md +4 -0
  592. package/docs/internals/mission-rail-cards.md +10 -5
  593. package/docs/internals/mission-read-only-policy.md +152 -0
  594. package/docs/internals/modal-standard.md +181 -0
  595. package/docs/internals/openspec-workflow.md +32 -0
  596. package/docs/internals/operations-runbook.md +30 -0
  597. package/docs/internals/profiles.md +6 -3
  598. package/docs/internals/programmatic-agent-runtime.md +8 -0
  599. package/docs/internals/project-builder.md +1 -1
  600. package/docs/internals/review-packet.md +161 -9
  601. package/docs/internals/safe-pr-review-flow.md +135 -6
  602. package/docs/internals/source-map.md +413 -18
  603. package/docs/internals/spec-addenda.md +10 -0
  604. package/docs/internals/spec-triage.md +140 -0
  605. package/docs/internals/visual-design-audit.md +15 -2
  606. package/docs/local-providers.md +3 -0
  607. package/docs/mcp.md +21 -3
  608. package/docs/platforms/macos.md +1 -1
  609. package/docs/platforms/windows.md +2 -2
  610. package/docs/running-pipelines.md +22 -6
  611. package/docs/tracking-cost.md +54 -10
  612. package/local-runner/dist/specrails-local-runner.js +3851 -1178
  613. package/mcp-bridge/dist/specrails-mcp.js +3864 -1143
  614. package/package.json +10 -9
  615. package/server/dist/agent-mcp-config.js +37 -1
  616. package/server/dist/api-version.js +19 -0
  617. package/server/dist/command-resolver.js +4 -2
  618. package/server/dist/core-compat.js +1 -1
  619. package/server/dist/core-execution.js +2 -1
  620. package/server/dist/core-update-manager.js +71 -13
  621. package/server/dist/db/job-search.js +248 -0
  622. package/server/dist/db/jobs.js +6 -0
  623. package/server/dist/db/migrations.js +239 -0
  624. package/server/dist/db.js +9 -2
  625. package/server/dist/desktop-db.js +99 -5
  626. package/server/dist/desktop-router.js +126 -13
  627. package/server/dist/docs-router.js +67 -1
  628. package/server/dist/feature-flags.js +22 -0
  629. package/server/dist/index.js +30 -15
  630. package/server/dist/jira/jira-adf.js +13 -1
  631. package/server/dist/jira/jira-clarifications.js +146 -0
  632. package/server/dist/jira/jira-client.js +8 -1
  633. package/server/dist/jira/jira-db.js +41 -0
  634. package/server/dist/jira/jira-sync-manager.js +328 -25
  635. package/server/dist/mcp/guide.js +17 -7
  636. package/server/dist/mcp/tools/agents.js +1 -1
  637. package/server/dist/mcp/tools/analytics.js +15 -3
  638. package/server/dist/mcp/tools/app-settings.js +14 -1
  639. package/server/dist/mcp/tools/chat.js +1 -1
  640. package/server/dist/mcp/tools/env.js +4 -2
  641. package/server/dist/mcp/tools/jobs.js +96 -7
  642. package/server/dist/mcp/tools/loops.js +1 -1
  643. package/server/dist/mcp/tools/meta.js +10 -13
  644. package/server/dist/mcp/tools/rails.js +15 -1
  645. package/server/dist/mcp/tools/setup.js +1 -1
  646. package/server/dist/mcp/tools/specs.js +8 -5
  647. package/server/dist/mcp/tools/support.js +6 -3
  648. package/server/dist/mcp/tools/types.js +38 -1
  649. package/server/dist/mobile/mobile-admin-router.js +0 -16
  650. package/server/dist/mobile/mobile-gateway.js +0 -18
  651. package/server/dist/mobile/mobile-inbox.js +240 -0
  652. package/server/dist/mobile/mobile-missions.js +6 -8
  653. package/server/dist/mobile/mobile-router.js +9 -9
  654. package/server/dist/mobile/mobile-webrtc-peer.js +4 -54
  655. package/server/dist/mobile/mobile-ws.js +27 -4
  656. package/server/dist/modules/accounting/runtime/ai-invocations.js +4 -0
  657. package/server/dist/modules/accounting/runtime/decision-times.js +102 -0
  658. package/server/dist/modules/accounting/runtime/loop-economics.js +284 -0
  659. package/server/dist/modules/accounting/runtime/spending.js +7 -2
  660. package/server/dist/modules/accounting/runtime/what-if.js +87 -0
  661. package/server/dist/modules/agent-runtime/runtime/agent-runtime-bridge.js +86 -5
  662. package/server/dist/modules/agent-runtime/runtime/agent-runtime-controls.js +28 -2
  663. package/server/dist/modules/agent-runtime/runtime/agent-runtime-metrics.js +15 -2
  664. package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings-router.js +21 -2
  665. package/server/dist/modules/agent-runtime/runtime/core-capabilities.js +55 -0
  666. package/server/dist/modules/agent-sessions/adapters/host-process.js +1 -1
  667. package/server/dist/modules/agent-sessions/domain/availability.js +16 -0
  668. package/server/dist/modules/agent-sessions/domain/protocol.js +8 -1
  669. package/server/dist/modules/agent-sessions/index.js +3 -1
  670. package/server/dist/modules/agent-sessions/runtime/core-sessions-availability.js +16 -0
  671. package/server/dist/modules/agents/runtime/agent-refine-manager.js +3 -1
  672. package/server/dist/modules/agents/runtime/agent-store.js +60 -73
  673. package/server/dist/modules/audit/adapters/http.js +66 -0
  674. package/server/dist/modules/audit/adapters/runtime.js +60 -0
  675. package/server/dist/modules/audit/adapters/sqlite.js +73 -0
  676. package/server/dist/modules/audit/application.js +190 -0
  677. package/server/dist/modules/audit/domain.js +434 -0
  678. package/server/dist/modules/audit/index.js +27 -0
  679. package/server/dist/modules/audit/ports.js +2 -0
  680. package/server/dist/modules/browser/runtime/browser-capture-manager.js +18 -141
  681. package/server/dist/modules/browser/runtime/browser-capture-types.js +1 -10
  682. package/server/dist/modules/browser/runtime/browser-playwright.js +0 -19
  683. package/server/dist/modules/code/runtime/file-provenance.js +23 -0
  684. package/server/dist/modules/conversations/runtime/chat-manager.js +5 -2
  685. package/server/dist/modules/delivery/adapters/decisions/chains.js +1 -0
  686. package/server/dist/modules/delivery/adapters/decisions/create.js +19 -1
  687. package/server/dist/modules/delivery/adapters/decisions/discard.js +2 -0
  688. package/server/dist/modules/delivery/adapters/decisions/local-changes.js +427 -0
  689. package/server/dist/modules/delivery/adapters/decisions/merge-local.js +80 -6
  690. package/server/dist/modules/delivery/adapters/decisions/observations.js +5 -0
  691. package/server/dist/modules/delivery/adapters/decisions/ownership.js +2 -1
  692. package/server/dist/modules/delivery/adapters/decisions/transitions.js +9 -0
  693. package/server/dist/modules/delivery/adapters/review-wip-store.js +37 -0
  694. package/server/dist/modules/delivery/domain/review-wip.js +71 -0
  695. package/server/dist/modules/delivery/index.js +9 -1
  696. package/server/dist/modules/delivery/runtime/delivery-changes.js +355 -0
  697. package/server/dist/modules/delivery/runtime/delivery-evidence.js +249 -8
  698. package/server/dist/modules/delivery/runtime/flow-review-legacy.js +99 -0
  699. package/server/dist/modules/delivery/runtime/flow-review-outcome.js +107 -0
  700. package/server/dist/modules/delivery/runtime/flow-worktree-handoff.js +32 -0
  701. package/server/dist/modules/delivery/runtime/flow-worktree-return.js +87 -0
  702. package/server/dist/modules/delivery/runtime/isolated-worktree.js +380 -0
  703. package/server/dist/modules/delivery/runtime/local-restore-branch.js +325 -0
  704. package/server/dist/modules/delivery/runtime/local-restore-resolver.js +48 -0
  705. package/server/dist/modules/delivery/runtime/local-stash.js +423 -0
  706. package/server/dist/modules/delivery/runtime/multi-repo-execution.js +27 -1
  707. package/server/dist/modules/delivery/runtime/phase3-harvest.js +40 -0
  708. package/server/dist/modules/delivery/runtime/pr-body.js +50 -0
  709. package/server/dist/modules/delivery/runtime/rail-isolated-launch.js +169 -166
  710. package/server/dist/modules/delivery/runtime/rail-launch-parser.js +5 -2
  711. package/server/dist/modules/delivery/runtime/rail-pr-decision.js +7 -1
  712. package/server/dist/modules/delivery/runtime/rail-pr-store.js +193 -12
  713. package/server/dist/modules/delivery/runtime/rails-router.js +267 -5
  714. package/server/dist/modules/delivery/runtime/review-brief.js +208 -0
  715. package/server/dist/modules/delivery/runtime/review-packet.js +41 -2
  716. package/server/dist/modules/delivery/runtime/review-wip-gate.js +67 -0
  717. package/server/dist/modules/delivery/runtime/run-records.js +267 -0
  718. package/server/dist/modules/delivery/runtime/run-review-diagnosis.js +102 -0
  719. package/server/dist/modules/execution/adapters/budget-storage.js +76 -0
  720. package/server/dist/modules/execution/application/enforce-budget.js +17 -2
  721. package/server/dist/modules/execution/domain/agent-env.js +98 -0
  722. package/server/dist/modules/execution/domain/daily-budget.js +36 -0
  723. package/server/dist/modules/execution/domain/spend-caps.js +166 -0
  724. package/server/dist/modules/execution/index.js +34 -1
  725. package/server/dist/modules/execution/runtime/budget-overview.js +76 -0
  726. package/server/dist/modules/execution/runtime/daily-budget-gate.js +86 -0
  727. package/server/dist/modules/execution/runtime/interactive-job-session.js +8 -0
  728. package/server/dist/modules/execution/runtime/launch-forecast.js +33 -0
  729. package/server/dist/modules/execution/runtime/queue-manager.js +54 -15
  730. package/server/dist/modules/execution/runtime/run-duration-stats.js +31 -13
  731. package/server/dist/modules/flow/adapters/bindings.js +1089 -0
  732. package/server/dist/modules/flow/adapters/http.js +147 -0
  733. package/server/dist/modules/flow/adapters/sqlite.js +121 -0
  734. package/server/dist/modules/flow/application.js +805 -0
  735. package/server/dist/modules/flow/domain.js +790 -0
  736. package/server/dist/modules/flow/index.js +34 -0
  737. package/server/dist/modules/flow/ports.js +2 -0
  738. package/server/dist/modules/inbox/adapters/http.js +21 -0
  739. package/server/dist/modules/inbox/adapters/project-source.js +233 -0
  740. package/server/dist/modules/inbox/application.js +28 -0
  741. package/server/dist/modules/inbox/domain.js +43 -0
  742. package/server/dist/modules/inbox/index.js +10 -0
  743. package/server/dist/modules/inbox/ports.js +2 -0
  744. package/server/dist/modules/loops/runtime/loop-definition-run.js +9 -0
  745. package/server/dist/modules/loops/runtime/loop-definition.js +5 -2
  746. package/server/dist/modules/loops/runtime/loop-executors.js +90 -9
  747. package/server/dist/modules/loops/runtime/loop-factory.js +30 -2
  748. package/server/dist/modules/loops/runtime/loop-flow-spec-recipe.js +166 -0
  749. package/server/dist/modules/loops/runtime/loop-graph.js +1 -1
  750. package/server/dist/modules/loops/runtime/loop-role-engines.js +4 -1
  751. package/server/dist/modules/loops/runtime/loop-run-manager.js +267 -10
  752. package/server/dist/modules/loops/runtime/loop-runs-store.js +21 -5
  753. package/server/dist/modules/loops/runtime/loop-templates.js +55 -12
  754. package/server/dist/modules/missions/runtime/agent-chat-manager.js +283 -20
  755. package/server/dist/modules/missions/runtime/agent-chat-router.js +96 -21
  756. package/server/dist/modules/missions/runtime/agent-failure-briefing.js +11 -3
  757. package/server/dist/modules/missions/runtime/agent-fence-promotion.js +9 -1
  758. package/server/dist/modules/missions/runtime/agent-flow-prompt.js +64 -0
  759. package/server/dist/modules/missions/runtime/agent-input-store.js +9 -4
  760. package/server/dist/modules/missions/runtime/agent-operator-prompt.js +100 -14
  761. package/server/dist/modules/missions/runtime/agent-session-store.js +88 -27
  762. package/server/dist/modules/missions/runtime/core-session-runner.js +89 -9
  763. package/server/dist/modules/missions/runtime/flow-turn-context.js +17 -0
  764. package/server/dist/modules/missions/runtime/mission-core-sessions.js +295 -55
  765. package/server/dist/modules/missions/runtime/mission-run-notify.js +2 -0
  766. package/server/dist/modules/missions/runtime/mission-session-projector.js +56 -19
  767. package/server/dist/modules/missions/runtime/mission-tool-policy.js +47 -0
  768. package/server/dist/modules/onboarding/adapters/http.js +78 -0
  769. package/server/dist/modules/onboarding/adapters/providers.js +41 -0
  770. package/server/dist/modules/onboarding/adapters/runtime.js +130 -0
  771. package/server/dist/modules/onboarding/application.js +133 -0
  772. package/server/dist/modules/onboarding/catalog.js +217 -0
  773. package/server/dist/modules/onboarding/domain.js +102 -0
  774. package/server/dist/modules/onboarding/index.js +20 -0
  775. package/server/dist/modules/onboarding/ports.js +2 -0
  776. package/server/dist/modules/project-rules/adapters/http.js +91 -0
  777. package/server/dist/modules/project-rules/domain.js +122 -0
  778. package/server/dist/modules/project-rules/runtime/rules-inventory-runs.js +97 -0
  779. package/server/dist/modules/project-rules/runtime/rules-store.js +109 -0
  780. package/server/dist/modules/project-settings/adapters/http.js +13 -0
  781. package/server/dist/modules/project-settings/adapters/sqlite.js +78 -8
  782. package/server/dist/modules/project-settings/domain.js +47 -1
  783. package/server/dist/modules/project-settings/index.js +7 -1
  784. package/server/dist/modules/recovery/adapters/sqlite.js +28 -0
  785. package/server/dist/modules/recovery/domain.js +162 -0
  786. package/server/dist/modules/recovery/index.js +16 -0
  787. package/server/dist/modules/specs/adapters/timeline-http.js +101 -0
  788. package/server/dist/modules/specs/domain/handoff-labels.js +371 -0
  789. package/server/dist/modules/specs/domain/handoff.js +260 -0
  790. package/server/dist/modules/specs/domain/non-goals.js +101 -0
  791. package/server/dist/modules/specs/domain/timeline.js +164 -0
  792. package/server/dist/modules/specs/domain/triage.js +320 -0
  793. package/server/dist/modules/specs/runtime/contract-refine-runner.js +3 -2
  794. package/server/dist/modules/specs/runtime/generated-spec-parser.js +75 -0
  795. package/server/dist/modules/specs/runtime/proposal-manager.js +4 -3
  796. package/server/dist/modules/specs/runtime/smash-runner.js +2 -1
  797. package/server/dist/modules/specs/runtime/spec-addenda.js +31 -0
  798. package/server/dist/modules/specs/runtime/spec-draft-parser.js +6 -1
  799. package/server/dist/modules/specs/runtime/spec-generation.js +431 -0
  800. package/server/dist/modules/specs/runtime/spec-handoff.js +103 -0
  801. package/server/dist/modules/specs/runtime/spec-history.js +376 -0
  802. package/server/dist/modules/specs/runtime/spec-launcher-manager.js +4 -3
  803. package/server/dist/modules/specs/runtime/spec-search.js +117 -0
  804. package/server/dist/modules/specs/runtime/ticket-store.js +47 -2
  805. package/server/dist/modules/specs/runtime/ticket-trash-service.js +62 -0
  806. package/server/dist/modules/specs/runtime/ticket-trash.js +193 -0
  807. package/server/dist/modules/specs/runtime/triage-runner.js +171 -0
  808. package/server/dist/modules/specs/runtime/triage.js +365 -0
  809. package/server/dist/modules/terminals/domain/app-urls.js +96 -0
  810. package/server/dist/modules/terminals/runtime/app-urls.js +77 -0
  811. package/server/dist/modules/terminals/runtime/background-process-service.js +25 -28
  812. package/server/dist/project-env.js +60 -0
  813. package/server/dist/project-git.js +65 -0
  814. package/server/dist/project-registry.js +264 -27
  815. package/server/dist/project-router-background-processes.js +27 -3
  816. package/server/dist/project-router-git.js +30 -0
  817. package/server/dist/project-router-helpers.js +5 -30
  818. package/server/dist/project-router-jobs.js +49 -1
  819. package/server/dist/project-router-loop-runs.js +72 -2
  820. package/server/dist/project-router-rules.js +54 -0
  821. package/server/dist/project-router-search.js +52 -0
  822. package/server/dist/project-router-settings.js +6 -0
  823. package/server/dist/project-router-setup.js +1 -1
  824. package/server/dist/project-router-spending.js +138 -0
  825. package/server/dist/project-router-tickets.js +246 -427
  826. package/server/dist/project-router.js +7 -0
  827. package/server/dist/providers/claude-adapter.js +25 -3
  828. package/server/dist/providers/codex-adapter.js +9 -1
  829. package/server/dist/providers/gemini-adapter.js +6 -1
  830. package/server/dist/providers/kimi-adapter.js +2 -0
  831. package/server/dist/providers/local-adapter.js +2 -0
  832. package/server/dist/providers/runtime.js +8 -0
  833. package/server/dist/schemas/agent-runtime.schema.json +3 -1
  834. package/server/dist/schemas/workflow-definition.schema.json +1 -0
  835. package/server/dist/setup-manager.js +19 -1
  836. package/server/dist/transient-children.js +25 -8
  837. package/server/dist/update-channel.js +21 -0
  838. package/server/dist/util/search-snippet.js +74 -0
  839. package/server/dist/worktree-manager.js +19 -8
  840. package/client/dist/assets/ActivityFeedPage-Dtp7EyHc.js +0 -1
  841. package/client/dist/assets/AgentBrowserCapture-CLqlEFw8.js +0 -1
  842. package/client/dist/assets/AgentModeAnalyticsPane-B8_hM3Tw.js +0 -2
  843. package/client/dist/assets/AgentModeCodePane-CNF8ZNjE.js +0 -2
  844. package/client/dist/assets/AgentModeJobsPane-CJpJbO9m.js +0 -1
  845. package/client/dist/assets/AgentsPage-BC8XSR79.js +0 -120
  846. package/client/dist/assets/AnalyticsPage-Cdv4jLtW.js +0 -1
  847. package/client/dist/assets/BarChart-BDMqVFJy.js +0 -55
  848. package/client/dist/assets/CodePage-DI1kegAr.js +0 -3
  849. package/client/dist/assets/DesktopAnalyticsPage-Bdp8E8U6.js +0 -1
  850. package/client/dist/assets/DocsDialog-Bm4RS7FX.js +0 -11
  851. package/client/dist/assets/DocsPage-DihYcU8r.js +0 -11
  852. package/client/dist/assets/ExportDropdown-Bb1lHx3r.js +0 -1
  853. package/client/dist/assets/IntegrationsPage-EAipiDWm.js +0 -1
  854. package/client/dist/assets/InteractiveJobComposer-BO6ASN-2.js +0 -19
  855. package/client/dist/assets/JobDetailModal-CuPYq7tP.js +0 -1
  856. package/client/dist/assets/JobDetailPage-BusMjJi9.js +0 -1
  857. package/client/dist/assets/JobsPage-C0QbsF2d.js +0 -1
  858. package/client/dist/assets/LoopBuilderPage-B7TlU4iS.js +0 -1
  859. package/client/dist/assets/LoopPreviewModal-BRWtXOD2.js +0 -1
  860. package/client/dist/assets/LoopsPage-C4q1DmCE.js +0 -2
  861. package/client/dist/assets/MinimizedChatsContext-DHfigjHS.js +0 -1
  862. package/client/dist/assets/PluginsPage-Z1JHSMdR.js +0 -2
  863. package/client/dist/assets/ProjectSettingsDialog-BUNj0tvN.js +0 -1
  864. package/client/dist/assets/RepositoryDeliveries-B4ybHOyB.js +0 -5
  865. package/client/dist/assets/ReviewPacketPage-hwfPNjyy.js +0 -4
  866. package/client/dist/assets/TemplatePreviewModal-V7FpMWuw.js +0 -1
  867. package/client/dist/assets/TicketDetailModalContext-Dkwo2cDs.js +0 -16
  868. package/client/dist/assets/Trans-BbFxRFtR.js +0 -1
  869. package/client/dist/assets/activity-B-rp4h_v.js +0 -1
  870. package/client/dist/assets/activity-C6kJpm9q.js +0 -1
  871. package/client/dist/assets/activity-CGx4kb_j.js +0 -1
  872. package/client/dist/assets/activity-CnoX2bH7.js +0 -1
  873. package/client/dist/assets/activity-DAyekdlt.js +0 -1
  874. package/client/dist/assets/activity-DCxtpT7j.js +0 -1
  875. package/client/dist/assets/activity-DiyjsgQV.js +0 -1
  876. package/client/dist/assets/activity-JzwRaWPD.js +0 -1
  877. package/client/dist/assets/addspec-BOvgmcgk.js +0 -1
  878. package/client/dist/assets/addspec-Clmyfn_R.js +0 -1
  879. package/client/dist/assets/addspec-CsNaBpHp.js +0 -1
  880. package/client/dist/assets/addspec-D2tvWmmV.js +0 -1
  881. package/client/dist/assets/addspec-D3nFwvD0.js +0 -1
  882. package/client/dist/assets/addspec-DVLEhK3w.js +0 -1
  883. package/client/dist/assets/addspec-DXbK-tb0.js +0 -1
  884. package/client/dist/assets/addspec-OHG8DFEn.js +0 -1
  885. package/client/dist/assets/agent-5bSixVzz.js +0 -1
  886. package/client/dist/assets/agent-BR4EHfhq.js +0 -1
  887. package/client/dist/assets/agent-C0IKkJP8.js +0 -1
  888. package/client/dist/assets/agent-C7li9ayC.js +0 -1
  889. package/client/dist/assets/agent-D0dRmEen.js +0 -1
  890. package/client/dist/assets/agent-DZVGHm7H.js +0 -1
  891. package/client/dist/assets/agent-Dip4h2YE.js +0 -1
  892. package/client/dist/assets/agent-Pp-P-n1p.js +0 -1
  893. package/client/dist/assets/agentRuntime-BxF81z52.js +0 -1
  894. package/client/dist/assets/agentRuntime-BxYS5V7u.js +0 -1
  895. package/client/dist/assets/agentRuntime-Dc9HG3BA.js +0 -1
  896. package/client/dist/assets/agents-B6ZsnARo.js +0 -1
  897. package/client/dist/assets/agents-BORdhe0K.js +0 -1
  898. package/client/dist/assets/agents-C6aq9Oqs.js +0 -1
  899. package/client/dist/assets/agents-Cbsc4bcX.js +0 -1
  900. package/client/dist/assets/agents-D0uYR6hq.js +0 -1
  901. package/client/dist/assets/agents-Doe1sHY5.js +0 -1
  902. package/client/dist/assets/agents-DyNi_I9m.js +0 -1
  903. package/client/dist/assets/agents-StKxiTg0.js +0 -1
  904. package/client/dist/assets/agentstudio-7cYCXn-L.js +0 -1
  905. package/client/dist/assets/agentstudio-BHWQh8G3.js +0 -1
  906. package/client/dist/assets/agentstudio-BjnWHyRs.js +0 -1
  907. package/client/dist/assets/agentstudio-BkV8vcK4.js +0 -1
  908. package/client/dist/assets/agentstudio-BzugqB_N.js +0 -1
  909. package/client/dist/assets/agentstudio-CWbp7KvH.js +0 -1
  910. package/client/dist/assets/agentstudio-DG6plf5o.js +0 -1
  911. package/client/dist/assets/agentstudio-DkZVF-Cc.js +0 -1
  912. package/client/dist/assets/analytics-B1DIQd4m.js +0 -1
  913. package/client/dist/assets/analytics-BAIZ9vE_.js +0 -1
  914. package/client/dist/assets/analytics-BTqgmgBd.js +0 -1
  915. package/client/dist/assets/analytics-BWynXPEm.js +0 -1
  916. package/client/dist/assets/analytics-DGcUsQ44.js +0 -1
  917. package/client/dist/assets/analytics-GnSnpJ4W.js +0 -1
  918. package/client/dist/assets/analytics-TWgYaoO0.js +0 -1
  919. package/client/dist/assets/analytics-kJy6Tuko.js +0 -1
  920. package/client/dist/assets/atom-one-dark-qiGhVQxg.js +0 -1
  921. package/client/dist/assets/builder-B9gorTnT.js +0 -1
  922. package/client/dist/assets/builder-Bvw5s3Mi.js +0 -1
  923. package/client/dist/assets/builder-CL5l4dU3.js +0 -1
  924. package/client/dist/assets/builder-CVDTVrQX.js +0 -1
  925. package/client/dist/assets/builder-CpS9liE9.js +0 -1
  926. package/client/dist/assets/builder-DNctIL9Q.js +0 -1
  927. package/client/dist/assets/builder-De2NxX6o.js +0 -1
  928. package/client/dist/assets/builder-DeYT7Y-m.js +0 -1
  929. package/client/dist/assets/button-4FS1ZDTp.js +0 -1
  930. package/client/dist/assets/chat-D_I7nU5K.js +0 -1
  931. package/client/dist/assets/chevron-up-6EFqEHBj.js +0 -1
  932. package/client/dist/assets/chunk-OB3PAWPO-B1EMk45A.js +0 -3
  933. package/client/dist/assets/clsx-CjueKrWZ.js +0 -1
  934. package/client/dist/assets/code-B37GRg9C.js +0 -1
  935. package/client/dist/assets/code-BBOEZbf9.js +0 -1
  936. package/client/dist/assets/code-BRm-jcyx.js +0 -1
  937. package/client/dist/assets/code-CF7w62CR.js +0 -1
  938. package/client/dist/assets/code-CLuvJt2r.js +0 -1
  939. package/client/dist/assets/code-D0RCm59f.js +0 -1
  940. package/client/dist/assets/code-DaZ-ZwCT.js +0 -1
  941. package/client/dist/assets/code-iIHkGaCL.js +0 -1
  942. package/client/dist/assets/commands-0XjAftla.js +0 -1
  943. package/client/dist/assets/commands-BAWSYHjQ.js +0 -1
  944. package/client/dist/assets/commands-BBwowgiE.js +0 -1
  945. package/client/dist/assets/commands-BacjIZLN.js +0 -1
  946. package/client/dist/assets/commands-Bs62IAZ3.js +0 -1
  947. package/client/dist/assets/commands-CLPdh-Hh.js +0 -1
  948. package/client/dist/assets/commands-DlbFzgrp.js +0 -1
  949. package/client/dist/assets/commands-LjPSsi5F.js +0 -1
  950. package/client/dist/assets/common-Bdi0qN4S.js +0 -1
  951. package/client/dist/assets/common-Bhb9zN1P.js +0 -1
  952. package/client/dist/assets/common-BykKlZg1.js +0 -1
  953. package/client/dist/assets/common-CvnNNSJA.js +0 -1
  954. package/client/dist/assets/common-D5zk_mqq.js +0 -1
  955. package/client/dist/assets/common-DQNO_al5.js +0 -1
  956. package/client/dist/assets/common-Dax30Vmp.js +0 -1
  957. package/client/dist/assets/common-DkllpVSb.js +0 -1
  958. package/client/dist/assets/core-B3mKBIh5.js +0 -1
  959. package/client/dist/assets/dashboard-B1ndRHuC.js +0 -1
  960. package/client/dist/assets/dashboard-BX7KXiqA.js +0 -1
  961. package/client/dist/assets/dashboard-B_BSNxcN.js +0 -1
  962. package/client/dist/assets/dashboard-CCeFN7-V.js +0 -1
  963. package/client/dist/assets/dashboard-CRl0WtFJ.js +0 -1
  964. package/client/dist/assets/dashboard-XGdQ5mjw.js +0 -1
  965. package/client/dist/assets/dashboard-_oltA6Jd.js +0 -1
  966. package/client/dist/assets/dashboard-bAuf5KVk.js +0 -1
  967. package/client/dist/assets/dialog-DtdR05v1.js +0 -45
  968. package/client/dist/assets/dist-js-CJ_2XX1Y.js +0 -1
  969. package/client/dist/assets/event-Bt7f3wXe.js +0 -1
  970. package/client/dist/assets/explore-BG99VGpL.js +0 -1
  971. package/client/dist/assets/explore-C0TjprJW.js +0 -1
  972. package/client/dist/assets/explore-C2dgEo7q.js +0 -1
  973. package/client/dist/assets/explore-C8NDHbob.js +0 -1
  974. package/client/dist/assets/explore-CWWgzQGR.js +0 -1
  975. package/client/dist/assets/explore-CcQXpdtS.js +0 -1
  976. package/client/dist/assets/explore-DgBACn39.js +0 -1
  977. package/client/dist/assets/explore-DsXAgnmJ.js +0 -1
  978. package/client/dist/assets/file-text-C0blZHLh.js +0 -1
  979. package/client/dist/assets/formatDistanceToNow-NjPHBLfB.js +0 -1
  980. package/client/dist/assets/getTimezoneOffsetInMilliseconds-vJ7qUoqN.js +0 -1
  981. package/client/dist/assets/git-branch-yf6LE1Bw.js +0 -1
  982. package/client/dist/assets/index-BgbCbIua.css +0 -2
  983. package/client/dist/assets/index-Ce4yZtKf.js +0 -83
  984. package/client/dist/assets/integrations-BkpRUbvp.js +0 -1
  985. package/client/dist/assets/integrations-Bo8qbJf4.js +0 -1
  986. package/client/dist/assets/integrations-CmSrKzZb.js +0 -1
  987. package/client/dist/assets/integrations-DGtq26Rr.js +0 -1
  988. package/client/dist/assets/integrations-De38GFnQ.js +0 -1
  989. package/client/dist/assets/integrations-Dw6zdtb-.js +0 -1
  990. package/client/dist/assets/integrations-Dwl9KQp0.js +0 -1
  991. package/client/dist/assets/integrations-Refg_d2I.js +0 -1
  992. package/client/dist/assets/jira-B6OYw4CJ.js +0 -1
  993. package/client/dist/assets/jira-BTF6RaOe.js +0 -1
  994. package/client/dist/assets/jira-CEetIB2q.js +0 -1
  995. package/client/dist/assets/jira-CIzsZLw5.js +0 -1
  996. package/client/dist/assets/jira-Daw9tmpI.js +0 -1
  997. package/client/dist/assets/jira-FXr7u2lh.js +0 -1
  998. package/client/dist/assets/jira-LaNQn7yl.js +0 -1
  999. package/client/dist/assets/jira-api-Cabj-H0J.js +0 -1
  1000. package/client/dist/assets/job-time-BCL7wee9.js +0 -1
  1001. package/client/dist/assets/jobs-ARwD85B9.js +0 -1
  1002. package/client/dist/assets/jobs-BMF1w4WT.js +0 -1
  1003. package/client/dist/assets/jobs-CBfzGLwm.js +0 -1
  1004. package/client/dist/assets/jobs-CPjiluBY.js +0 -1
  1005. package/client/dist/assets/jobs-CQQd58pY.js +0 -1
  1006. package/client/dist/assets/jobs-De3EqaO0.js +0 -1
  1007. package/client/dist/assets/jobs-Du9-Ei9a.js +0 -1
  1008. package/client/dist/assets/jobs-qMHbnxwC.js +0 -1
  1009. package/client/dist/assets/layers-BCLTgHXO.js +0 -1
  1010. package/client/dist/assets/loader-circle-BqV9xYGf.js +0 -1
  1011. package/client/dist/assets/loop-layout-CyXj9223.js +0 -7
  1012. package/client/dist/assets/loops-B2PhQLKR.js +0 -1
  1013. package/client/dist/assets/loops-BqbF46st.js +0 -1
  1014. package/client/dist/assets/loops-CINnHbfI.js +0 -1
  1015. package/client/dist/assets/loops-D-3XhH04.js +0 -1
  1016. package/client/dist/assets/loops-DKkEEjZ_.js +0 -1
  1017. package/client/dist/assets/loops-DzWR5-v6.js +0 -1
  1018. package/client/dist/assets/loops-WyWDkhok.js +0 -1
  1019. package/client/dist/assets/loops-scD5fIBf.js +0 -1
  1020. package/client/dist/assets/mcp-6rMoZfEO.js +0 -1
  1021. package/client/dist/assets/mcp-BD8sL5mP.js +0 -1
  1022. package/client/dist/assets/mcp-BkcA3I5s.js +0 -1
  1023. package/client/dist/assets/mcp-CCpSelOh.js +0 -1
  1024. package/client/dist/assets/mcp-CUAN6ORK.js +0 -1
  1025. package/client/dist/assets/mcp-CqbRxRTE.js +0 -1
  1026. package/client/dist/assets/mcp-DP2YfVhO.js +0 -1
  1027. package/client/dist/assets/mcp-DUVQamDz.js +0 -1
  1028. package/client/dist/assets/narration-BEKMVxGm.js +0 -1
  1029. package/client/dist/assets/narration-CjLwGKap.js +0 -1
  1030. package/client/dist/assets/narration-DANWuGsW.js +0 -1
  1031. package/client/dist/assets/narration-DGeEDWiT.js +0 -1
  1032. package/client/dist/assets/narration-DJgpGwIP.js +0 -1
  1033. package/client/dist/assets/narration-DbHnz0qV.js +0 -1
  1034. package/client/dist/assets/narration-bZSsTZG8.js +0 -1
  1035. package/client/dist/assets/narration-i6aKJKEc.js +0 -1
  1036. package/client/dist/assets/nav--u7iPYlS.js +0 -1
  1037. package/client/dist/assets/nav-C5Jgfaby.js +0 -1
  1038. package/client/dist/assets/nav-CAna_Wpt.js +0 -1
  1039. package/client/dist/assets/nav-CCLqeyHo.js +0 -1
  1040. package/client/dist/assets/nav-Cf3c90Jk.js +0 -1
  1041. package/client/dist/assets/nav-DMYQaQjR.js +0 -1
  1042. package/client/dist/assets/nav-Df_PkZ9F.js +0 -1
  1043. package/client/dist/assets/nav-VyNGBJwj.js +0 -1
  1044. package/client/dist/assets/packet-8nn9RsU7.js +0 -1
  1045. package/client/dist/assets/packet-B0H15elv.js +0 -1
  1046. package/client/dist/assets/packet-BQvBgrwh.js +0 -1
  1047. package/client/dist/assets/packet-BR7mO0-a.js +0 -1
  1048. package/client/dist/assets/packet-BgcQ6q_K.js +0 -1
  1049. package/client/dist/assets/packet-D2s92Jnn.js +0 -1
  1050. package/client/dist/assets/packet-YbtcD1HS.js +0 -1
  1051. package/client/dist/assets/packet-c0Qj_9eX.js +0 -1
  1052. package/client/dist/assets/project-repositories-Cnnuj9Ia.js +0 -1
  1053. package/client/dist/assets/rotate-ccw-DalJAQQX.js +0 -1
  1054. package/client/dist/assets/settings-B1NV8Ow9.js +0 -1
  1055. package/client/dist/assets/settings-BQ8XFZeE.js +0 -1
  1056. package/client/dist/assets/settings-BRkxfBbO.js +0 -1
  1057. package/client/dist/assets/settings-C_CcU1dP.js +0 -1
  1058. package/client/dist/assets/settings-Cto9n0eL.js +0 -1
  1059. package/client/dist/assets/settings-Pyw8uYtL.js +0 -1
  1060. package/client/dist/assets/settings-b3HVCNNd.js +0 -1
  1061. package/client/dist/assets/settings-hdive4u6.js +0 -1
  1062. package/client/dist/assets/setup-Be485n2u.js +0 -1
  1063. package/client/dist/assets/setup-CKGUxKr-.js +0 -1
  1064. package/client/dist/assets/setup-Ck1Uwd7_.js +0 -1
  1065. package/client/dist/assets/setup-Cm774a6v.js +0 -1
  1066. package/client/dist/assets/setup-DIqMQpxt.js +0 -1
  1067. package/client/dist/assets/setup-DfCsoNFL.js +0 -1
  1068. package/client/dist/assets/setup-DkeE8mP0.js +0 -1
  1069. package/client/dist/assets/setup-xVntVaz1.js +0 -1
  1070. package/client/dist/assets/specs-Bqvtz2kz.js +0 -1
  1071. package/client/dist/assets/specs-CKes-kz6.js +0 -1
  1072. package/client/dist/assets/specs-CfXxPDNB.js +0 -1
  1073. package/client/dist/assets/specs-CyF9HuTI.js +0 -1
  1074. package/client/dist/assets/specs-DMj035Mt.js +0 -1
  1075. package/client/dist/assets/specs-DfIdoU5L.js +0 -1
  1076. package/client/dist/assets/specs-j5pGLQeU.js +0 -1
  1077. package/client/dist/assets/specs-xW5pkkB7.js +0 -1
  1078. package/client/dist/assets/spending-CQnrWiR3.js +0 -1
  1079. package/client/dist/assets/square-D0JTbRSR.js +0 -1
  1080. package/client/dist/assets/tauri-shell-DE6LfGPw.js +0 -2
  1081. package/client/dist/assets/terminal-BAzpHtpY.js +0 -1
  1082. package/client/dist/assets/terminal-C7dHeR3x.js +0 -1
  1083. package/client/dist/assets/terminal-CMla5Qsz.js +0 -1
  1084. package/client/dist/assets/terminal-CdNXH-n9.js +0 -1
  1085. package/client/dist/assets/terminal-Cw5bZsmV.js +0 -1
  1086. package/client/dist/assets/terminal-DFUP4eNv.js +0 -1
  1087. package/client/dist/assets/terminal-DGqljeK_.js +0 -1
  1088. package/client/dist/assets/terminal-cU70NodO.js +0 -1
  1089. package/client/dist/assets/tickets--tiSOCcn.js +0 -1
  1090. package/client/dist/assets/tickets-BUJ3DMWU.js +0 -1
  1091. package/client/dist/assets/tickets-C1WNPODq.js +0 -1
  1092. package/client/dist/assets/tickets-CDjhWmiE.js +0 -1
  1093. package/client/dist/assets/tickets-CLgPC3uO.js +0 -1
  1094. package/client/dist/assets/tickets-D41ZMQpf.js +0 -1
  1095. package/client/dist/assets/tickets-DEaQC06P.js +0 -1
  1096. package/client/dist/assets/tickets-kcMzbLCp.js +0 -1
  1097. package/client/dist/assets/trash-D8zYUmTg.js +0 -1
  1098. package/client/dist/assets/useDesktop-BjLT0_EE.js +0 -1
  1099. package/client/dist/assets/useRuntimeRuns-C97qEqMg.js +0 -1
  1100. package/client/dist/assets/useSharedWebSocket-Bj4LMp7b.js +0 -2
  1101. package/client/dist/assets/utils-BC4DHlz2.js +0 -1
  1102. package/docs/guide/en/getting-started/4-the-dashboard-tour.md +0 -48
  1103. package/docs/guide/es/getting-started/4-the-dashboard-tour.md +0 -48
  1104. package/server/dist/mobile/mobile-preview-channel.js +0 -179
  1105. package/server/dist/mobile/mobile-preview.js +0 -366
  1106. package/server/dist/modules/browser/domain/preview-origins.js +0 -117
  1107. package/server/dist/modules/browser/runtime/preview-targets.js +0 -80
  1108. /package/client/dist/assets/{atom-one-dark-B-oHczHB.css → DocView-B-oHczHB.css} +0 -0
  1109. /package/docs/guide/de/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1110. /package/docs/guide/en/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1111. /package/docs/guide/es/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1112. /package/docs/guide/fr/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1113. /package/docs/guide/it/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1114. /package/docs/guide/ja/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1115. /package/docs/guide/pt/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1116. /package/docs/guide/zh/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
@@ -1 +1 @@
1
- var e=`Motore degli agenti`,t=`Architetto, sviluppatore e revisore girano come fasi separate con verifica deterministica in mezzo. Scegli un fornitore per ruolo; tutto il resto ha un valore predefinito funzionante.`,n=`Caricamento delle impostazioni…`,r=`Impossibile caricare le impostazioni. Riprova prima di modificarle.`,i=`Riprova`,a=`Questa installazione di Core non include il motore degli agenti. Aggiorna Core prima di attivarlo; puoi preparare le impostazioni mentre è disattivato.`,o=`Salva impostazioni`,s=`Salvataggio…`,c=`Impostazioni salvate`,l=`Impossibile salvare le impostazioni.`,u=`Richiedi approvazione prima di completare il flusso`,d={title:`Fornitori`,hint:`I CLI usano l’accesso esistente. Le API accettano solo il nome di una variabile d’ambiente, mai la chiave. Per servizi locali può restare vuoto. Riassegna i ruoli prima di rimuovere il fornitore.`,entry:`Fornitore {{index}}`,id:`ID del fornitore`,kind:`Tipo di connessione`,cli:`CLI di programmazione installato`,compatible:`Endpoint compatibile con OpenAI`,command:`CLI di programmazione`,baseUrl:`URL base dell’API`,apiKeyEnv:`Variabile d’ambiente della chiave (facoltativa)`,remove:`Rimuovi fornitore`,addCli:`Aggiungi fornitore CLI`,addLocal:`Aggiungi fornitore locale / API`,show:`Mostra connessioni dei fornitori`,hide:`Nascondi connessioni dei fornitori`,globalTitle:`Provider di IA`,globalHint:`Due tipi di provider alimentano ogni progetto: le CLI di programmazione rilevate su questa macchina e i motori locali compatibili con OpenAI che registri qui. Assegnali alle fasi della pipeline in Impostazioni del progetto ▸ Motore degli agenti. Le modifiche si applicano alle nuove esecuzioni.`,label:`Nome visualizzato (facoltativo)`,labelPlaceholder:`es. Macchina LAN`,defaultModel:`Modello predefinito`,defaultModelNone:`Nessun predefinito (primo rilevato)`,defaultModelPlaceholder:`ID del modello o alias personalizzato`,customModel:`Alias personalizzato…`,discoveredModels:`Modelli rilevati`,noModels:`Nessun modello rilevato finora: prova la connessione.`,rates:`Tariffe (USD per 1M di token, facoltativo)`,ratesHint:`I costi sono mostrati come stime; lascia entrambe vuote e il costo resta sconosciuto.`,inputRate:`Input per 1M`,outputRate:`Output per 1M`,ratesInvalid:`Inserisci entrambe le tariffe come numeri non negativi, oppure lasciale entrambe vuote.`,reasoningEffort:`L'endpoint accetta lo sforzo di ragionamento`,reasoningEffortHint:`Invia il campo reasoning_effort di OpenAI: lo sforzo configurato del ruolo a ogni chiamata, alzato ad alto mentre l'architetto compatto scrive il piano. Lascialo disattivo se il server non lo rispetta.`,apiKeyEnvMissing:`{{name}} non è impostata nel processo dell'app. Impostala nell'ambiente da cui viene avviata l'app.`,test:`Prova connessione`,testing:`Prova in corso…`,testFailed:`Impossibile provare la connessione.`,rename:`Rinomina`,renameHint:`Rinominando, le assegnazioni dei ruoli continuano a puntare a questa connessione.`,idLocked:`L'id è bloccato dopo il salvataggio. Usa Rinomina per cambiarlo.`,localBadge:`Motore locale`,cliBadge:`CLI`,notDetected:`Non rilevato su questa macchina`,unsaved:`Modifiche non salvate`,empty:`Nessuna connessione ancora. Aggiungi un provider locale / API per iniziare.`,fixBeforeSave:`Correggi i campi evidenziati prima di salvare.`,status:{probing:`Verifica…`,reachable:`Raggiungibile`,unauthorized:`Non autorizzato`,unreachable:`Non raggiungibile`,untested:`Mai provato`},auth:{authenticated:`Accesso effettuato`,unauthenticated:`Accesso non effettuato`,unknown:`Accesso sconosciuto`},agentLoop:`Loop dell'agente`,agentLoopHint:`come la pipeline implement guida questo modello`,agentLoop_compact:`Compatto`,agentLoop_compactHint:`Micro-passi guidati dall'app con output strutturato. Consigliato per modelli sotto ~30B.`,agentLoop_free:`Libero`,agentLoop_freeHint:`Un loop agentico per ruolo, come un provider CLI. Richiede un modello potente.`,contextWindow:`Finestra di contesto (token)`,contextWindowHint:`Allineala alla dimensione di contesto del server (n_ctx / num_ctx). Serve a compattare i vecchi risultati degli strumenti prima di riempire la finestra. Predefinito 32768.`,maxOutput:`Budget di output per turno (token)`,maxOutputHint:`max_tokens di un turno con strumenti; un turno troncato viene ritentato una volta al doppio. Conta dentro la finestra di contesto, quindi è sempre limitato allo spazio rimanente — alzalo se il modello ragiona in privato (il thinking lo consuma). Predefinito 8192.`,reasoningEffortRailHint:`Disattivo: il selettore dello sforzo di ragionamento non compare nell'intestazione del rail per questo motore.`,presetTitle:`Configurazione rapida`,presetSmallModel:`Consigliato per modelli piccoli`,presetSmallModelApplied:`Preset per modelli piccoli applicato`,presetSmallModelHint:`Imposta il loop Compatto, inoltra lo sforzo di ragionamento e una finestra di contesto di 32k: la combinazione validata con modelli da 7–14B. Ogni campo resta modificabile.`,cliGroup:`Strumenti CLI`,cliGroupHint:`Rilevati su questa macchina: usano il proprio accesso, niente da configurare.`,localGroup:`Motori locali`,localGroupHint:`Endpoint compatibili con OpenAI (llama.cpp, Ollama, vLLM, LM Studio…) raggiungibili da questa app.`,models_one:`{{count}} modello`,models_other:`{{count}} modelli`,expand:`Mostra impostazioni`,collapse:`Nascondi impostazioni`,overflow:`Altre azioni`,addLocalHero:`Aggiungi motore locale`,emptyLocalPitch:`Nessun motore locale per ora. Punta l’app a un endpoint compatibile con OpenAI per eseguire la pipeline sul tuo hardware: il costo resta sotto il tuo controllo e nulla esce dalla tua rete.`,defaultsGroup:`Valori predefiniti del provider`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`Architetto`,developer:`Sviluppatore`,reviewer:`Revisore`,fixer:`Correttore`,verify:`Verifica`,archive:`Completamento`},m={title:`Assegnazione dei ruoli`,hint:`Ogni ruolo può usare un provider e un modello diversi. Connessioni: Impostazioni generali → Provider di IA. Limite predefinito: {{turns}} turni per agente.`,provider:`Fornitore`,model:`Modello`,modelPlaceholder:`ID del modello o predefinito del CLI`,maxTurns:`Numero massimo di turni (predefinito {{turns}})`,defaultModel:`Predefinito ({{model}})`,thinking:`Ragionamento nascosto`,thinking_off:`Disattivato`,thinking_on:`Attivato`,thinkingHint:`Disattivato per impostazione predefinita: il ragionamento nascosto consuma il budget di output e minuti per turno in un ciclo guidato dall'host. Attivalo per un ruolo che trae vantaggio dalla deliberazione (inviato come chat_template_kwargs.enable_thinking; gli endpoint che non lo conoscono lo ignorano).`},h={title:`Limiti del flusso`,hint:`I campi vuoti usano i valori di Core: {{attempts}} tentativi di correzione e {{minutes}} minuti per passo di ruolo. Sui motori locali il timeout si applica a ogni unità di lavoro (un gruppo di attività, un artefatto, una revisione) — 45 minuti per impostazione predefinita — più un watchdog di inattività di 20 minuti; un passo che esaurisce il tempo blocca l'esecuzione e può riprendere dal gruppo aperto successivo. I limiti di token e USD sono facoltativi; quelli in USD richiedono Claude per ogni ruolo.`,maxAttempts:`Tentativi massimi dello sviluppatore (predefinito {{attempts}})`,timeoutMinutes:`Timeout in minuti (predefinito {{minutes}}; motori locali 45 per gruppo di attività)`,maxTokens:`Token massimi`,maxCostUsd:`Costo massimo (USD)`,unlimited:`Nessun limite`},g={title:`Comandi di verifica`,hint:`Facoltativo. Vengono eseguiti quando lo sviluppatore termina e i fallimenti tornano allo sviluppatore. Lista vuota: l’architetto propone i controlli propri del progetto a ogni esecuzione; i repository senza controllo automatico vengono comunque revisionati.`,detect:`Rileva i controlli del progetto`,detecting:`Rilevamento…`,detected:`Compilato con i controlli che questo progetto già definisce.`,nothingDetected:`Nessun comando di test, controllo tipi o build trovato. Va bene: l’architetto propone controlli a ogni esecuzione quando possibile.`,detectFailed:`Impossibile ispezionare i repository del progetto.`,repository:`Repository`,command:`Comando`,reason:`Rilevato da {{reason}}`,remove:`Rimuovi`,add:`Aggiungi comando`,invalidLine:`Comando di verifica vuoto o con virgolette non chiuse: {{line}}`,label:`Nome del controllo (facoltativo)`,moveUp:`Sposta su`,moveDown:`Sposta giù`},_={title:`Comandi di preparazione`,hint:"Comandi idempotenti che Core esegue prima di ogni verifica, nel checkout del repository (per esempio `npx playwright install chromium`).",add:`Aggiungi comando di preparazione`,invalidLine:`Il comando di preparazione è vuoto o ha una virgoletta non chiusa: {{line}}`,repository:`Repository`,command:`Comando di preparazione`,label:`Etichetta di preparazione (facoltativa)`,remove:`Rimuovi`,moveUp:`Sposta su il comando di preparazione`,moveDown:`Sposta giù il comando di preparazione`,empty:`Nessun comando di preparazione. La verifica viene eseguita direttamente nel checkout.`},v={title:`Esecuzioni salvate`,refresh:`Aggiorna`,hint:`Continua nel worktree originale con ambito e impostazioni salvati; l’avanzamento compare nel log di quel job. Non pubblica né riavvia la consegna Desktop. Le esecuzioni attive si fermano dai controlli del job.`,empty:`Nessuna esecuzione salvata.`,loadFailed:`Impossibile caricare le esecuzioni.`,actionFailed:`Impossibile aggiornare questa esecuzione.`,phase:`Prossima fase: {{phase}}`,approve:`Approva completamento`,recover:`Recupera fase interrotta`,resume:`Riprendi`,cancel:`Annulla continuazione`,status:{running:`Continuazione in corso…`,succeeded:`Riuscito`,failed:`Fallito`,blocked:`Bloccato`,paused:`In pausa`,cancelled:`Annullato`,interrupted:`Interrotto`,unavailable:`Non disponibile`,expired:`Scaduto`},question:`L'architetto chiede:`,answerLabel:`La tua risposta`,answerPlaceholder:`Rispondi alla domanda; l'architetto prosegue con essa.`,answer:`Rispondi e riprendi`,viewLog:`Visualizza log del job`,implementation:`Implementazione`,preserveProgress:`Riprendi dalla fase indicata, conservando il lavoro e le impostazioni salvate.`,reviewDelivery:`Implementazione completata. Controlla il risultato nel log prima della consegna; questa ripresa non lo ha pubblicato.`,prepareDelivery:`Prepara consegna`,dismiss:`Ignora`,selectRecovery:`Seleziona i tentativi interrotti da riprendere`},y={architect:`Legge il codice e scrive proposta, design, attività e spec. Sola lettura.`,developer:`Implementa le attività con i test. Può modificare file ed eseguire comandi nella sandbox del CLI.`,reviewer:`Controlla il risultato rispetto alla spec e alle prove di verifica. Sola lettura.`},b={title:`Soglia di revisione`,hint:`I campi vuoti usano la soglia di Core. I valori possono solo alzarla: punteggio complessivo almeno {{score}}, sicurezza almeno {{security}}, altri aspetti almeno {{aspect}}.`,minScore:`Punteggio complessivo minimo (predefinito {{score}})`,aspects:{type_correctness:`Correttezza dei tipi (predefinito {{score}})`,pattern_adherence:`Aderenza ai pattern (predefinito {{score}})`,test_coverage:`Copertura dei test (predefinito {{score}})`,security:`Sicurezza (predefinito {{score}})`,architectural_alignment:`Allineamento architetturale (predefinito {{score}})`}},x={title:`Confidenza dell'architetto`,hint:`Dopo un passaggio di indagine autonoma, un progetto ancora poco sicuro si mette in pausa con la domanda dell'architetto oppure procede su ipotesi dichiarate.`,onLowConfidence:`Con bassa confidenza`,ask:`Chiedere (pausa con la domanda)`,proceed:`Procedere su ipotesi dichiarate`},S={title:`Consumo e tempo`,hint:`Include correzioni e chiamate non riuscite. Il tempo degli agenti include gli strumenti. I token della cache fanno parte dei token di input.`,unknown:`Non disponibile`,duration:`Tempo di esecuzione`,agentTime:`Tempo degli agenti`,cost:`Costo dichiarato`,providerCalls:`Chiamate agli agenti`,toolCalls:`Chiamate agli strumenti`,input:`Token di input`,output:`Token di output`,uncached:`Input senza cache`,cacheRead:`Letture della cache`,cacheWrite:`Scritture della cache`,partial:`Alcuni tentativi non hanno misurazioni dettagliate.`,phases:`Consumo per fase`,phase:`Fase`,attempts:`Tentativi`},C={title:`Prompt dei ruoli degli agenti`,description:`Visualizza e modifica le istruzioni di ogni ruolo. Sono condivise da tutti i progetti e provider; le modifiche si applicano ai nuovi lavori. I lavori ripresi mantengono i prompt originali.`,definition:`Definizione di {{role}}`,default:`Impostazione predefinita`,custom:`Personalizzato`,restore:`Ripristina predefinito`,contracts:`Il contesto della spec, il workflow OpenSpec e il formato di risposta richiesto vengono aggiunti automaticamente e non sono modificabili qui.`,invalid:`Ogni definizione deve contenere da 1 a 20.000 caratteri, con testo non vuoto e senza byte nulli.`,saved:`Prompt dei ruoli salvati`,unsaved:`Modifiche non salvate`,discard:`Scarta modifiche`,save:`Salva prompt`,fixerHint:`Usato solo nei giri di correzione: dopo una verifica fallita o una revisione respinta. Gira sul motore dello sviluppatore, salvo che Impostazioni ▸ Motore agenti ▸ Correttore ne indichi uno proprio. Un provider CLI che riprende la sessione dello sviluppatore riceve il breve seguito di correzione; la definizione si applica ogni volta che parte una sessione nuova (motori locali, motore correttore, sessione persa).`},w={title:`Efficienza dell’implementazione`,scope:`Si applica alle nuove esecuzioni. Quelle salvate mantengono configurazione e motore originali.`,effort:`Sforzo di ragionamento`,providerDefault:`Predefinito del fornitore`,unconfirmed:`Non confermato`,unknownSupport:`Il supporto per questo modello e trasporto non è confermato.`,escalation:`Consenti un livello superiore con lo stesso fornitore`,baseRequired:`Seleziona prima un modello base esplicito.`,escalationModel:`Modello di livello superiore`,triggers:{architect:`Solo l’approfondimento già previsto può selezionare questo livello.`,developer:`Dopo due candidati falliti, il tentativo successivo consentito può selezionare questo livello.`,reviewer:`Solo per correggere risposte malformate; il rifiuto del codice non lo attiva.`,fixer:`Solo un giro di correzione può raggiungere questo livello; i primi passaggi non eseguono mai il correttore.`},contextMode:`Contesto del repository`,reviewMode:`Revisione delle correzioni`,planning:`Profondità della pianificazione`,adaptive:`Adattivo`,full:`Completo`,developerChecks:`Accetta controlli aggiuntivi proposti dallo sviluppatore`,concurrency:`Controlli simultanei massimi`,concurrencyHint:`Predefinito: 1. Solo controlli indipendenti dichiarati dall’host in repository diversi possono essere simultanei. Nessun riutilizzo predefinito.`,checkCapabilities:`Verifica compatibilità dei modelli`,capabilitiesFailed:`Compatibilità non confermata. Aggiorna Core o mantieni i valori del fornitore.`},T={title:`Evidenze di verifica`,acceptance:`Accettazione tecnica`,acceptanceStatus:{pending:`In attesa`,validated:`Validato`,"with-exceptions":`Con eccezioni`,blocked:`Bloccato`},calls:`Chiamate agli agenti`,executed:`Controlli eseguiti`,reused:`Controlli riutilizzati`,unknown:`Non disponibile`,unavailable:`Evidenza non disponibile. Il risultato registrato non prova la validità attuale.`,current:`Candidato e piano attuali`,historical:`Risultato storico`,moreChecks:`Altri controlli`,output:`Output della verifica`,empty:`Nessun output`,truncated:`Pagina limitata o acquisizione troncata.`,nextPage:`Pagina successiva`,status:{passed:`Superato`,failed:`Fallito`,cancelled:`Annullato`,interrupted:`Interrotto`},disposition:{executed:`Eseguito`,reused:`Riutilizzato`,"not-run":`Non eseguito`},origin:`Origine`,origins:{host:`Host`,architect:`Architetto`,developer:`Sviluppatore`,"frozen-runtime-config":`Configurazione salvata`,"project-role":`Ruolo del progetto`,default:`Predefinito`,"explicit-launch-override":`Provider scelto per questo avvio`,"loop-role":`Ruolo del loop`},reuseDisabled:`Riutilizzo disabilitato per questo controllo.`,reuseConfirmed:`Riutilizzato dopo la conferma di input e strumenti identici.`,inputsChanged:`Input cambiati durante la verifica; risultato invalidato.`,reuseUnproven:`Nessun risultato attuale con input identici comprovati; controllo rieseguito.`,original:`Esecuzione originale`,requested:`Richiesto`,reported:`Segnalato`},E={title:`Ruoli del loop`,hint:`Motori dei ruoli del loop quando un rail viene lanciato con il motore «Ruoli». I ruoli della pipeline qui sopra (architect, developer, reviewer) provengono già da questa configurazione del runtime.`,verifier:`Verificatore`,verifierHint:`Ogni passo IA del loop esterno al core: verify, fix e passi IA personalizzati.`,decider:`Decisore`,deciderHint:`Il Loop Decider che legge il verdetto e sceglie il passo successivo: un modello economico e veloce è la scelta naturale.`,inherit:`Eredita il principale`,model:`Modello`,effort:`Sforzo di ragionamento`,disabled:`Il runtime degli agenti è disattivato: i rail lanciati con il motore «Ruoli» vengono rifiutati finché non viene attivato.`,saveFailed:`Impossibile salvare i ruoli del loop.`},D={title:`Pipeline di implementazione`,explainer:`Queste fasi vengono eseguite in quest'ordine a ogni implementazione. Quando il motore del rail è "{{roles}}", ogni fase usa il motore configurato qui sotto: provider, modello ed effort diversi per fase. Scegliendo un motore specifico sul rail, tutte le fasi girano su quel motore.`,host:`Host`,noCommand:`nessun comando`,inherits:`Eredita il principale`,inheritsDeveloper:`Eredita dallo sviluppatore`,open:`Apri`,collapse:`Comprimi`,groups:{core:{title:`Pipeline principale`,hint:`Viene eseguita in ogni implementazione: pianificare, costruire, verificare, correggere, revisionare.`},loop:{title:`Passi del loop`,hint:`Passi IA del loop del rail che avvolge l'esecuzione (verificare → decidere → correggere) e dei loop personalizzati; ereditano il motore principale se non impostati.`,chip:`loop del rail`}},phases:{architect:{name:`Architetto`,purpose:`Legge il codice e scrive proposta, design e task.`},developer:{name:`Sviluppatore`,purpose:`Implementa i task con i test.`},verification:{name:`Verifica`,purpose:`L'host esegue i tuoi controlli; i fallimenti tornano allo sviluppatore.`},fixer:{name:`Correttore`,purpose:`Corregge ciò che la verifica o la revisione respingono; eredita dallo sviluppatore se non configurato.`},reviewer:{name:`Revisore`,purpose:`Confronta il risultato con la spec e le evidenze.`},verifier:{name:`Verificatore`,purpose:`Passi IA verify, fix e personalizzati del loop.`},decider:{name:`Decisore`,purpose:`Legge il verdetto e sceglie il prossimo passo del loop.`}}},O={title:`Motore del correttore`,inherit:`Eredita sviluppatore`,own:`Motore proprio`,hint:`Viene eseguito solo nei giri di correzione: dopo una verifica fallita o una revisione respinta; i primi passaggi restano sullo sviluppatore. Un modello più potente o cloud qui conviene quando lo sviluppatore è un modello locale economico.`},k={title:`Guardrail`,intro:`Regole di processo che l'host applica intorno ai modelli locali perché un modello piccolo non deragli. Tutte attive per impostazione predefinita; disattivane una solo per regolare il processo. I provider CLI non sono mai coinvolti.`,unsupported:`Questa installazione di Core non espone guardrail configurabili. Aggiorna Core per regolarli; le regole integrate continuano ad applicarsi.`,active:`{{on}} di {{total}} attivi`,reset:`Ripristina predefiniti`,phases:{architect:`Architetto`,developer:`Sviluppatore`,host:`Host`},unknown:`Un guardrail aggiunto da un Core più recente; questa app non ha ancora una descrizione.`,items:{"plan-validation":{title:`Piano di attività validato`,description:`Rifiuta piani che puntano a openspec/, elencano semplici nomi di file come attività, hanno troppo poche attività/gruppi per la spec o lasciano criteri di accettazione scoperti; l'architetto riprova.`,why:`Un piano vago o incompleto è la causa n. 1 per cui un piccolo modello sviluppatore scrive stub.`},"genuine-blocking-question":{title:`Solo vere domande bloccanti`,description:`L'architetto può mettere in pausa l'esecuzione solo con una vera domanda che termina con '?', mai con testo d'esempio copiato.`,why:`I modelli piccoli ripetono i segnaposto del prompt e bloccherebbero ogni esecuzione.`},"plan-language-hint":{title:`Pianificare nel linguaggio del repository`,description:`Indica all'architetto il linguaggio principale così i nomi dei file delle attività hanno l'estensione giusta.`,why:`Un piano JS su un repo TypeScript rende impossibile spuntare le attività.`},"frozen-plan-writes":{title:`Gli artefatti di pianificazione sono congelati`,description:`Lo sviluppatore non può scrivere sotto openspec/; il piano appartiene all'host.`,why:`I modelli 'implementano' modificando il piano invece del codice.`},"primary-language":{title:`Promemoria del linguaggio principale`,description:`A ogni gruppo di attività viene indicato il linguaggio principale del repository; i nuovi file dovrebbero usarlo.`,why:`Evita una seconda implementazione in un altro linguaggio.`},"duplicate-sibling":{title:`Nessun modulo gemello tra linguaggi`,description:`Rifiuta board.js quando board.ts esiste già; estendi invece il modulo esistente.`,why:`I gemelli compilano entrambi e i test importano quello sbagliato.`},"one-test-per-module":{title:`Un file di test per modulo`,description:`Rifiuta board.tick.test.ts quando esiste board.test.ts; estendilo invece.`,why:`Altrimenti ogni passata di correzione aggiunge una nuova suite.`},"empty-write":{title:`Nessuna sovrascrittura vuota`,description:`Una scrittura vuota su un file con contenuto viene rifiutata; scrivi il contenuto completo o applica una patch.`,why:`Una passata di 'pulizia' una volta lasciò index.ts a 0 righe.`},"evidence-gated-ticking":{title:`Prove prima di spuntare un'attività`,description:`Un'attività che nomina file è completata solo se esistono e non sono stub (estensioni sorelle accettate).`,why:`Senza, 'fatto' è solo un'affermazione e la verifica gira contro il nulla.`},"inventory-retry":{title:`Riprova con l'inventario reale`,description:`Quando il modello rinuncia sostenendo che il repo è vuoto mentre non lo è, riprova una volta con l'elenco dei file.`,why:`Seconda possibilità economica invece di un passo fallito.`},"synthetic-corrections":{title:`Trasformare il feedback in attività`,description:`Quando tutte le attività sono spuntate ma review/verify sono falliti, il feedback diventa attività di correzione concrete.`,why:`Altrimenti lo sviluppatore risponde 'già fatto' e nulla cambia.`},"silent-group-closure":{title:`Chiudere i gruppi silenziosi, conservare i loro file`,description:`Un gruppo il cui modello smette di rispondere viene chiuso accreditando i file scritti e lasciando aperte le sue attività, invece di far fallire l'esecuzione.`,why:`Un modello 9B scrisse cinque moduli, tacque e l'intera esecuzione fallì.`},"environment-repair":{title:`L'host ripara l'ambiente`,description:`Dipendenze o strumenti di test mancanti (npm install, ts-jest, @types/jest, moduli di config Jest) vengono installati dall'host, poi la verifica viene rieseguita una volta.`,why:`Il modello non può sistemare l'ambiente e brucia correzioni provandoci.`},"lockfile-repair":{title:`Scartare i lockfile scritti a mano`,description:`Un package-lock.json inventato dal modello (EINTEGRITY/ETARGET) viene rimosso e l'installazione ritentata una volta.`,why:`Gli hash inventati non si installano mai.`},"verify-idle-timeout":{title:`Fermare i test bloccati`,description:`Un comando di verifica senza output per 5 minuti viene fermato e segnalato come probabile blocco (ultimo output incluso).`,why:`Altrimenti un ciclo while in un test trattiene l'esecuzione fino al limite di 15 minuti.`},"verify-per-group":{title:`Verifica dopo ogni gruppo`,description:`Esegue il comando di test del repository subito dopo ogni gruppo di attività; un errore riceve un giro di correzione immediato finché il contesto del gruppo è fresco.`,why:`Cinque suite rotte alla fine sono molto più difficili da sistemare di una alla volta.`},"test-reachability":{title:`Ogni nuovo test deve essere eseguito davvero`,description:"Un file di test scritto dal developer che il comando di test del repository non esegue mai (uno script `test` che enumera e salta il file nuovo) fa fallire la verifica indicando il file esatto, prima a livello di gruppo e poi di nuovo nella verifica dell'host.",why:`Una suite di 622 righe con sei casi falliti è passata in verde perché nessuno l'aveva mai eseguita.`},"exit-code-honesty":{title:`Diffidare di un exit 0 che segnala fallimenti`,description:`Un comando di verifica che esce con 0 mentre l'output stampa fallimenti (righe \`FAIL:\`, "3 failed", un AssertionError) è trattato come FALLITO e passato al correttore con l'harness indicato come difetto.`,why:`Un runner di test artigianale che non impostava mai un exit code diverso da zero ha consegnato tre test rossi come verdi.`},"verification-output-adoption":{title:`Adottare l'output scritto dai controlli stessi`,description:`Se la verifica passa ma i suoi comandi riscrivono file tracciati (un passaggio di lint che rigenera una mappatura), l'host mantiene quei file nel candidato e verifica ancora una volta; reviewer e fixer non devono annullarli.`,why:`Un passaggio di lint che rigenerava un file tracciato faceva sembrare ogni esecuzione verde un candidato modificato e consumava correzioni su un non-difetto.`}}},A=`Modifiche non salvate`,j={title:`Ruoli personalizzati`,hint:`Definisci istruzioni riutilizzabili e autorizzazioni esplicite per i ruoli del flusso.`,unsupported:`Aggiorna Core per modificare i ruoli personalizzati.`,remove:`Rimuovi {{id}}`,access:`Accesso al codice`,read:`Sola lettura`,write:`Lettura e scrittura`,artifacts:`Accesso agli artefatti OpenSpec`,none:`Nessuno`,tasks:`Solo caselle delle attività`,all:`Tutti gli artefatti della modifica`,skill:`Skill OpenSpec`,noSkill:`Nessuno skill associato`,prompt:`Istruzioni del ruolo`,id:`ID del ruolo`,add:`Aggiungi ruolo`,invalidId:`Usa un ID univoco in minuscolo che inizi con una lettera, con un massimo di 64 lettere, numeri o trattini. Gli ID integrati sono riservati.`,escalationHint:`Solo una correzione consentita del protocollo può usare il modello superiore. Non viene aggiunto alcun tentativo.`},M={title:`Istruzioni di esecuzione`,hint:`Core conserva queste istruzioni per il prossimo turno di agente compatibile. L’invio non risponde alle domande e non concede approvazioni.`,label:`Istruzioni aggiuntive`,send:`Invia istruzioni`,accepted:`Ricevute da Core; in attesa di utilizzo.`,pending:`In attesa di un turno di agente`,consumed:`Utilizzate da un agente`,counts:`In attesa: {{pending}} · Utilizzate: {{consumed}}`,failed:`Impossibile inviare le istruzioni. Riprova per confermare lo stesso messaggio.`,unavailable:`I dettagli delle ricevute non sono disponibili.`,unreported:`Questa versione di Core non segnala l’utilizzo.`,truncated:`Sono mostrate solo le ricevute recenti e i messaggi in attesa.`},N={title:`Valori predefiniti del ruolo Core`,hint:`Questi valori del file si applicano ai nuovi workflow. Le impostazioni esplicite del progetto hanno la precedenza; le esecuzioni salvate mantengono le impostazioni fissate.`,invalid:`Correggi l’intestazione YAML nell’editor prima di modificare i campi del ruolo.`,escalationEffort:`Sforzo di ragionamento del modello superiore`},P={title:`Conservazione della cronologia`,description:`Elimina le cronologie scadute e le versioni di Core inutilizzate. Le cronologie eliminate non possono essere riprese o biforcate. Le esecuzioni attive o recuperabili e le consegne in sospeso restano protette; i log e i costi vengono conservati.`,forever:`Conserva la cronologia indefinitamente`,days:`Giorni di conservazione`,save:`Salva conservazione`,preview:`Anteprima pulizia`,collect:`Elimina cronologia scaduta`,previewSummary:`Idonei: {{runs}} cronologie e {{packages}} versioni di Core inutilizzate.`,collectedSummary:`Scadute: {{runs}} cronologie. Rimosse: {{packages}} versioni di Core inutilizzate.`,more:`{{count}} esecuzioni aggiuntive.`,failed:`Impossibile consultare o aggiornare la conservazione.`,expired:`Questa cronologia è scaduta secondo la politica del progetto. Il log e la contabilità restano disponibili.`,loading:`Caricamento della politica…`,states:{protected:`Conservato`,eligible:`Idoneo`,expired:`Scaduto`,cleanup_pending:`Pulizia in sospeso`,busy:`In uso`,error:`Verifica non riuscita`},reasons:{disabled:`Conservazione indefinita`,recoverable:`Recupero ancora disponibile`,active:`Esecuzione attiva`,human_pending:`In attesa di risposta umana`,interrupted_writes:`Scritture interrotte da verificare`,delivery_pending:`Consegna in sospeso`,fork_pending:`Resta una biforcazione dipendente`,unknown_terminal_time:`Data di completamento sconosciuta`,within_retention:`Periodo di conservazione non scaduto`}},F={title:`Loop agents`,hint:`These definitions are shared by every project using this loop. Duplicate the loop to customize a separate workflow.`,legacy:`This saved loop still uses historical project agents. Import them or enable loop agents before changing its configuration.`,enable:`Use loop agents`,import:`Import current project agents`,restoreDefinition:`Usa la definizione di Core`,default:`Provider default`,effort:`Reasoning effort`,escalationModel:`Escalation model`,escalationEffort:`Escalation effort`,policy:`Workflow policy`,maxAttempts:`Maximum correction attempts`,maxTokens:`Token budget`,maxCostUsd:`Cost budget (USD)`,timeoutMs:`Run timeout (ms)`,projectHint:`Configure repository checks here. Agent definitions, models and workflow policy are configured in the loop editor. Historical project agents can be imported into a duplicated loop.`,showUnused:`Also show agents not used in this loop`,stepTitle:`Step agent and options`,stepHint:`Edit this step’s agent definition and engine. Steps using the same role in this loop share these settings.`,inheritProvider:`Eredita il provider della missione`,inheritDefinition:`Segue la definizione di Core: ogni aggiornamento di Core la rinnova automaticamente.`,customizeDefinition:`Personalizza per questo loop`,coreDefinitionUnavailable:`Anteprima non disponibile finché non è installato un runtime Core.`,turnLimits:{title:`Limiti di turni`,hint:`Ogni chiamata a uno strumento dell'agente conta come un turno. Se un passo si ferma con "reached the configured limit of N turns", aumenta qui il suo limite, salva e pubblica; i nuovi avvii lo useranno. Vuoto usa il valore predefinito di Core ({{turns}}). Le impostazioni del progetto non modificano le esecuzioni dei loop.`,role:`Ruolo {{role}}`,input:`Numero massimo di turni per {{steps}} (ruolo {{role}})`,stepHint:`Il ruolo {{role}} si ferma dopo {{turns}} turni. I passi che condividono questo ruolo condividono il limite; vale per i nuovi avvii dopo la pubblicazione.`}},I={title:e,description:t,loading:n,loadFailed:r,retry:i,unavailable:a,save:o,saving:s,saved:c,saveFailed:l,approvalBeforeArchive:u,providers:d,cliNames:f,roles:p,agents:m,limits:h,verification:g,setup:_,runs:v,roleHints:y,review:b,architect:x,metrics:S,prompts:C,efficiency:w,evidence:T,loopRoles:E,pipeline:D,fixer:O,guardrails:k,unsavedChanges:A,customRoles:j,steering:M,studioRole:N,retention:P,loopAgents:F};export{m as agents,u as approvalBeforeArchive,x as architect,f as cliNames,j as customRoles,I as default,t as description,w as efficiency,T as evidence,O as fixer,k as guardrails,h as limits,r as loadFailed,n as loading,F as loopAgents,E as loopRoles,S as metrics,D as pipeline,C as prompts,d as providers,P as retention,i as retry,b as review,y as roleHints,p as roles,v as runs,o as save,l as saveFailed,c as saved,s as saving,_ as setup,M as steering,N as studioRole,e as title,a as unavailable,A as unsavedChanges,g as verification};
1
+ var e=`Motore degli agenti`,t=`Architetto, sviluppatore e revisore girano come fasi separate con verifica deterministica in mezzo. Scegli un fornitore per ruolo; tutto il resto ha un valore predefinito funzionante.`,n=`Caricamento delle impostazioni…`,r=`Impossibile caricare le impostazioni. Riprova prima di modificarle.`,i=`Riprova`,a=`Questa installazione di Core non include il motore degli agenti. Aggiorna Core prima di attivarlo; puoi preparare le impostazioni mentre è disattivato.`,o=`Salva impostazioni`,s=`Salvataggio…`,c=`Impostazioni salvate`,l=`Impossibile salvare le impostazioni.`,u=`Richiedi approvazione prima di completare il flusso`,d={title:`Fornitori`,hint:`I CLI usano l’accesso esistente. Le API accettano solo il nome di una variabile d’ambiente, mai la chiave. Per servizi locali può restare vuoto. Riassegna i ruoli prima di rimuovere il fornitore.`,entry:`Fornitore {{index}}`,id:`ID del fornitore`,kind:`Tipo di connessione`,cli:`CLI di programmazione installato`,compatible:`Endpoint compatibile con OpenAI`,command:`CLI di programmazione`,baseUrl:`URL base dell’API`,apiKeyEnv:`Variabile d’ambiente della chiave (facoltativa)`,remove:`Rimuovi fornitore`,addCli:`Aggiungi fornitore CLI`,addLocal:`Aggiungi fornitore locale / API`,show:`Mostra connessioni dei fornitori`,hide:`Nascondi connessioni dei fornitori`,globalTitle:`Provider di IA`,globalHint:`Due tipi di provider alimentano ogni progetto: le CLI di programmazione rilevate su questa macchina e i motori locali compatibili con OpenAI che registri qui. Assegnali alle fasi della pipeline in Impostazioni del progetto ▸ Motore degli agenti. Le modifiche si applicano alle nuove esecuzioni.`,label:`Nome visualizzato (facoltativo)`,labelPlaceholder:`es. Macchina LAN`,defaultModel:`Modello predefinito`,defaultModelNone:`Nessun predefinito (primo rilevato)`,defaultModelPlaceholder:`ID del modello o alias personalizzato`,customModel:`Alias personalizzato…`,discoveredModels:`Modelli rilevati`,noModels:`Nessun modello rilevato finora: prova la connessione.`,rates:`Tariffe (USD per 1M di token, facoltativo)`,ratesHint:`I costi sono mostrati come stime; lascia entrambe vuote e il costo resta sconosciuto.`,inputRate:`Input per 1M`,outputRate:`Output per 1M`,ratesInvalid:`Inserisci entrambe le tariffe come numeri non negativi, oppure lasciale entrambe vuote.`,reasoningEffort:`L'endpoint accetta lo sforzo di ragionamento`,reasoningEffortHint:`Invia il campo reasoning_effort di OpenAI: lo sforzo configurato del ruolo a ogni chiamata, alzato ad alto mentre l'architetto compatto scrive il piano. Lascialo disattivo se il server non lo rispetta.`,apiKeyEnvMissing:`{{name}} non è impostata nel processo dell'app. Impostala nell'ambiente da cui viene avviata l'app.`,test:`Prova connessione`,testing:`Prova in corso…`,testFailed:`Impossibile provare la connessione.`,rename:`Rinomina`,renameHint:`Rinominando, le assegnazioni dei ruoli continuano a puntare a questa connessione.`,idLocked:`L'id è bloccato dopo il salvataggio. Usa Rinomina per cambiarlo.`,localBadge:`Motore locale`,cliBadge:`CLI`,notDetected:`Non rilevato su questa macchina`,unsaved:`Modifiche non salvate`,empty:`Nessuna connessione ancora. Aggiungi un provider locale / API per iniziare.`,fixBeforeSave:`Correggi i campi evidenziati prima di salvare.`,status:{probing:`Verifica…`,reachable:`Raggiungibile`,unauthorized:`Non autorizzato`,unreachable:`Non raggiungibile`,untested:`Mai provato`},auth:{authenticated:`Accesso effettuato`,unauthenticated:`Accesso non effettuato`,unknown:`Accesso sconosciuto`},agentLoop:`Loop dell'agente`,agentLoopHint:`come la pipeline implement guida questo modello`,agentLoop_compact:`Compatto`,agentLoop_compactHint:`Micro-passi guidati dall'app con output strutturato. Consigliato per modelli sotto ~30B.`,agentLoop_free:`Libero`,agentLoop_freeHint:`Un loop agentico per ruolo, come un provider CLI. Richiede un modello potente.`,contextWindow:`Finestra di contesto (token)`,contextWindowHint:`Allineala alla dimensione di contesto del server (n_ctx / num_ctx). Serve a compattare i vecchi risultati degli strumenti prima di riempire la finestra. Predefinito 32768.`,maxOutput:`Budget di output per turno (token)`,maxOutputHint:`max_tokens di un turno con strumenti; un turno troncato viene ritentato una volta al doppio. Conta dentro la finestra di contesto, quindi è sempre limitato allo spazio rimanente — alzalo se il modello ragiona in privato (il thinking lo consuma). Predefinito 8192.`,reasoningEffortRailHint:`Disattivo: il selettore dello sforzo di ragionamento non compare nell'intestazione del rail per questo motore.`,presetTitle:`Configurazione rapida`,presetSmallModel:`Consigliato per modelli piccoli`,presetSmallModelApplied:`Preset per modelli piccoli applicato`,presetSmallModelHint:`Imposta il loop Compatto, inoltra lo sforzo di ragionamento e una finestra di contesto di 32k: la combinazione validata con modelli da 7–14B. Ogni campo resta modificabile.`,cliGroup:`Strumenti CLI`,cliGroupHint:`Rilevati su questa macchina: usano il proprio accesso, niente da configurare.`,localGroup:`Motori locali`,localGroupHint:`Endpoint compatibili con OpenAI (llama.cpp, Ollama, vLLM, LM Studio…) raggiungibili da questa app.`,models_one:`{{count}} modello`,models_other:`{{count}} modelli`,expand:`Mostra impostazioni`,collapse:`Nascondi impostazioni`,overflow:`Altre azioni`,addLocalHero:`Aggiungi motore locale`,emptyLocalPitch:`Nessun motore locale per ora. Punta l’app a un endpoint compatibile con OpenAI per eseguire la pipeline sul tuo hardware: il costo resta sotto il tuo controllo e nulla esce dalla tua rete.`,defaultsGroup:`Valori predefiniti del provider`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`Architetto`,developer:`Sviluppatore`,reviewer:`Revisore`,fixer:`Correttore`,verify:`Verifica`,archive:`Completamento`},m={title:`Assegnazione dei ruoli`,hint:`Ogni ruolo può usare un provider e un modello diversi. Connessioni: Impostazioni generali → Provider di IA. Limite predefinito: {{turns}} turni per agente.`,provider:`Fornitore`,model:`Modello`,modelPlaceholder:`ID del modello o predefinito del CLI`,maxTurns:`Numero massimo di turni (predefinito {{turns}})`,defaultModel:`Predefinito ({{model}})`,thinking:`Ragionamento nascosto`,thinking_off:`Disattivato`,thinking_on:`Attivato`,thinkingHint:`Disattivato per impostazione predefinita: il ragionamento nascosto consuma il budget di output e minuti per turno in un ciclo guidato dall'host. Attivalo per un ruolo che trae vantaggio dalla deliberazione (inviato come chat_template_kwargs.enable_thinking; gli endpoint che non lo conoscono lo ignorano).`},h={title:`Limiti del flusso`,hint:`I campi vuoti usano i valori di Core: {{attempts}} tentativi di correzione e {{minutes}} minuti per passo di ruolo. Sui motori locali il timeout si applica a ogni unità di lavoro (un gruppo di attività, un artefatto, una revisione) — 45 minuti per impostazione predefinita — più un watchdog di inattività di 20 minuti; un passo che esaurisce il tempo blocca l'esecuzione e può riprendere dal gruppo aperto successivo. I limiti di token e USD sono facoltativi; quelli in USD richiedono Claude per ogni ruolo.`,maxAttempts:`Tentativi massimi dello sviluppatore (predefinito {{attempts}})`,timeoutMinutes:`Timeout in minuti (predefinito {{minutes}}; motori locali 45 per gruppo di attività)`,maxTokens:`Token massimi`,maxCostUsd:`Costo massimo (USD)`,unlimited:`Nessun limite`},g={title:`Comandi di verifica`,hint:`Facoltativo. Vengono eseguiti quando lo sviluppatore termina e i fallimenti tornano allo sviluppatore. Lista vuota: l’architetto propone i controlli propri del progetto a ogni esecuzione; i repository senza controllo automatico vengono comunque revisionati.`,detect:`Rileva i controlli del progetto`,detecting:`Rilevamento…`,detected:`Compilato con i controlli che questo progetto già definisce.`,nothingDetected:`Nessun comando di test, controllo tipi o build trovato. Va bene: l’architetto propone controlli a ogni esecuzione quando possibile.`,detectFailed:`Impossibile ispezionare i repository del progetto.`,repository:`Repository`,command:`Comando`,reason:`Rilevato da {{reason}}`,remove:`Rimuovi`,add:`Aggiungi comando`,invalidLine:`Comando di verifica vuoto o con virgolette non chiuse: {{line}}`,label:`Nome del controllo (facoltativo)`,moveUp:`Sposta su`,moveDown:`Sposta giù`},_={title:`Comandi di preparazione`,hint:"Comandi idempotenti che Core esegue prima di ogni verifica, nel checkout del repository (per esempio `npx playwright install chromium`).",add:`Aggiungi comando di preparazione`,invalidLine:`Il comando di preparazione è vuoto o ha una virgoletta non chiusa: {{line}}`,repository:`Repository`,command:`Comando di preparazione`,label:`Etichetta di preparazione (facoltativa)`,remove:`Rimuovi`,moveUp:`Sposta su il comando di preparazione`,moveDown:`Sposta giù il comando di preparazione`,empty:`Nessun comando di preparazione. La verifica viene eseguita direttamente nel checkout.`},v={title:`Esecuzioni salvate`,refresh:`Aggiorna`,hint:`Continua nel worktree originale con ambito e impostazioni salvati; l’avanzamento compare nel log di quel job. Non pubblica né riavvia la consegna Desktop. Le esecuzioni attive si fermano dai controlli del job.`,empty:`Nessuna esecuzione salvata.`,loadFailed:`Impossibile caricare le esecuzioni.`,actionFailed:`Impossibile aggiornare questa esecuzione.`,phase:`Prossima fase: {{phase}}`,approve:`Approva completamento`,recover:`Recupera fase interrotta`,resume:`Riprendi`,cancel:`Annulla continuazione`,status:{running:`Continuazione in corso…`,succeeded:`Riuscito`,failed:`Fallito`,blocked:`Bloccato`,paused:`In pausa`,cancelled:`Annullato`,interrupted:`Interrotto`,unavailable:`Non disponibile`,expired:`Scaduto`},question:`L'architetto chiede:`,answerLabel:`La tua risposta`,answerPlaceholder:`Rispondi alla domanda; l'architetto prosegue con essa.`,answer:`Rispondi e riprendi`,viewLog:`Visualizza log del job`,implementation:`Implementazione`,preserveProgress:`Riprendi dalla fase indicata, conservando il lavoro e le impostazioni salvate.`,reviewDelivery:`Implementazione completata. Controlla il risultato nel log prima della consegna; questa ripresa non lo ha pubblicato.`,prepareDelivery:`Prepara consegna`,dismiss:`Ignora`,selectRecovery:`Seleziona i tentativi interrotti da riprendere`},y={architect:`Legge il codice e scrive proposta, design, attività e spec. Sola lettura.`,developer:`Implementa le attività con i test. Può modificare file ed eseguire comandi nella sandbox del CLI.`,reviewer:`Controlla il risultato rispetto alla spec e alle prove di verifica. Sola lettura.`},b={title:`Soglia di revisione`,hint:`I campi vuoti usano la soglia di Core. I valori possono solo alzarla: punteggio complessivo almeno {{score}}, sicurezza almeno {{security}}, altri aspetti almeno {{aspect}}.`,minScore:`Punteggio complessivo minimo (predefinito {{score}})`,aspects:{type_correctness:`Correttezza dei tipi (predefinito {{score}})`,pattern_adherence:`Aderenza ai pattern (predefinito {{score}})`,test_coverage:`Copertura dei test (predefinito {{score}})`,security:`Sicurezza (predefinito {{score}})`,architectural_alignment:`Allineamento architetturale (predefinito {{score}})`}},x={title:`Confidenza dell'architetto`,hint:`Dopo un passaggio di indagine autonoma, un progetto ancora poco sicuro si mette in pausa con la domanda dell'architetto oppure procede su ipotesi dichiarate.`,onLowConfidence:`Con bassa confidenza`,ask:`Chiedere (pausa con la domanda)`,proceed:`Procedere su ipotesi dichiarate`},S={title:`Consumo e tempo`,hint:`Include correzioni e chiamate non riuscite. Il tempo degli agenti include gli strumenti. I token della cache fanno parte dei token di input.`,unknown:`Non disponibile`,duration:`Tempo di esecuzione`,agentTime:`Tempo degli agenti`,cost:`Costo dichiarato`,providerCalls:`Chiamate agli agenti`,toolCalls:`Chiamate agli strumenti`,input:`Token di input`,output:`Token di output`,uncached:`Input senza cache`,cacheRead:`Letture della cache`,cacheWrite:`Scritture della cache`,partial:`Alcuni tentativi non hanno misurazioni dettagliate.`,phases:`Consumo per fase`,phase:`Fase`,attempts:`Tentativi`},C={title:`Prompt dei ruoli degli agenti`,description:`Visualizza e modifica le istruzioni di ogni ruolo. Sono condivise da tutti i progetti e provider; le modifiche si applicano ai nuovi lavori. I lavori ripresi mantengono i prompt originali.`,definition:`Definizione di {{role}}`,default:`Impostazione predefinita`,custom:`Personalizzato`,restore:`Ripristina predefinito`,contracts:`Il contesto della spec, il workflow OpenSpec e il formato di risposta richiesto vengono aggiunti automaticamente e non sono modificabili qui.`,invalid:`Ogni definizione deve contenere da 1 a 20.000 caratteri, con testo non vuoto e senza byte nulli.`,saved:`Prompt dei ruoli salvati`,unsaved:`Modifiche non salvate`,discard:`Scarta modifiche`,save:`Salva prompt`,fixerHint:`Usato solo nei giri di correzione: dopo una verifica fallita o una revisione respinta. Gira sul motore dello sviluppatore, salvo che Impostazioni ▸ Motore agenti ▸ Correttore ne indichi uno proprio. Un provider CLI che riprende la sessione dello sviluppatore riceve il breve seguito di correzione; la definizione si applica ogni volta che parte una sessione nuova (motori locali, motore correttore, sessione persa).`},w={title:`Efficienza dell’implementazione`,scope:`Si applica alle nuove esecuzioni. Quelle salvate mantengono configurazione e motore originali.`,effort:`Sforzo di ragionamento`,providerDefault:`Predefinito del fornitore`,unconfirmed:`Non confermato`,unknownSupport:`Il supporto per questo modello e trasporto non è confermato.`,escalation:`Consenti un livello superiore con lo stesso fornitore`,baseRequired:`Seleziona prima un modello base esplicito.`,escalationModel:`Modello di livello superiore`,triggers:{architect:`Solo l’approfondimento già previsto può selezionare questo livello.`,developer:`Dopo due candidati falliti, il tentativo successivo consentito può selezionare questo livello.`,reviewer:`Solo per correggere risposte malformate; il rifiuto del codice non lo attiva.`,fixer:`Solo un giro di correzione può raggiungere questo livello; i primi passaggi non eseguono mai il correttore.`},contextMode:`Contesto del repository`,reviewMode:`Revisione delle correzioni`,planning:`Profondità della pianificazione`,adaptive:`Adattivo`,full:`Completo`,developerChecks:`Accetta controlli aggiuntivi proposti dallo sviluppatore`,concurrency:`Controlli simultanei massimi`,concurrencyHint:`Predefinito: 1. Solo controlli indipendenti dichiarati dall’host in repository diversi possono essere simultanei. Nessun riutilizzo predefinito.`,checkCapabilities:`Verifica compatibilità dei modelli`,capabilitiesFailed:`Compatibilità non confermata. Aggiorna Core o mantieni i valori del fornitore.`},T={title:`Evidenze di verifica`,acceptance:`Accettazione tecnica`,acceptanceStatus:{pending:`In attesa`,validated:`Validato`,"with-exceptions":`Con eccezioni`,blocked:`Bloccato`},calls:`Chiamate agli agenti`,executed:`Controlli eseguiti`,reused:`Controlli riutilizzati`,unknown:`Non disponibile`,unavailable:`Evidenza non disponibile. Il risultato registrato non prova la validità attuale.`,current:`Candidato e piano attuali`,historical:`Risultato storico`,moreChecks:`Altri controlli`,output:`Output della verifica`,empty:`Nessun output`,truncated:`Pagina limitata o acquisizione troncata.`,nextPage:`Pagina successiva`,status:{passed:`Superato`,failed:`Fallito`,cancelled:`Annullato`,interrupted:`Interrotto`},disposition:{executed:`Eseguito`,reused:`Riutilizzato`,"not-run":`Non eseguito`},origin:`Origine`,origins:{host:`Host`,architect:`Architetto`,developer:`Sviluppatore`,"frozen-runtime-config":`Configurazione salvata`,"project-role":`Ruolo del progetto`,default:`Predefinito`,"explicit-launch-override":`Provider scelto per questo avvio`,"loop-role":`Ruolo del loop`},reuseDisabled:`Riutilizzo disabilitato per questo controllo.`,reuseConfirmed:`Riutilizzato dopo la conferma di input e strumenti identici.`,inputsChanged:`Input cambiati durante la verifica; risultato invalidato.`,reuseUnproven:`Nessun risultato attuale con input identici comprovati; controllo rieseguito.`,original:`Esecuzione originale`,requested:`Richiesto`,reported:`Segnalato`},E={title:`Ruoli del loop`,hint:`Motori dei ruoli del loop quando un rail viene lanciato con il motore «Ruoli». I ruoli della pipeline qui sopra (architect, developer, reviewer) provengono già da questa configurazione del runtime.`,verifier:`Verificatore`,verifierHint:`Ogni passo IA del loop esterno al core: verify, fix e passi IA personalizzati.`,decider:`Decisore`,deciderHint:`Il Loop Decider che legge il verdetto e sceglie il passo successivo: un modello economico e veloce è la scelta naturale.`,inherit:`Eredita il principale`,model:`Modello`,effort:`Sforzo di ragionamento`,disabled:`Il runtime degli agenti è disattivato: i rail lanciati con il motore «Ruoli» vengono rifiutati finché non viene attivato.`,saveFailed:`Impossibile salvare i ruoli del loop.`},D={title:`Pipeline di implementazione`,explainer:`Queste fasi vengono eseguite in quest'ordine a ogni implementazione. Quando il motore del rail è "{{roles}}", ogni fase usa il motore configurato qui sotto: provider, modello ed effort diversi per fase. Scegliendo un motore specifico sul rail, tutte le fasi girano su quel motore.`,host:`Host`,noCommand:`nessun comando`,inherits:`Eredita il principale`,inheritsDeveloper:`Eredita dallo sviluppatore`,open:`Apri`,collapse:`Comprimi`,groups:{core:{title:`Pipeline principale`,hint:`Viene eseguita in ogni implementazione: pianificare, costruire, verificare, correggere, revisionare.`},loop:{title:`Passi del loop`,hint:`Passi IA del loop del rail che avvolge l'esecuzione (verificare → decidere → correggere) e dei loop personalizzati; ereditano il motore principale se non impostati.`,chip:`loop del rail`}},phases:{architect:{name:`Architetto`,purpose:`Legge il codice e scrive proposta, design e task.`},developer:{name:`Sviluppatore`,purpose:`Implementa i task con i test.`},verification:{name:`Verifica`,purpose:`L'host esegue i tuoi controlli; i fallimenti tornano allo sviluppatore.`},fixer:{name:`Correttore`,purpose:`Corregge ciò che la verifica o la revisione respingono; eredita dallo sviluppatore se non configurato.`},reviewer:{name:`Revisore`,purpose:`Confronta il risultato con la spec e le evidenze.`},verifier:{name:`Verificatore`,purpose:`Passi IA verify, fix e personalizzati del loop.`},decider:{name:`Decisore`,purpose:`Legge il verdetto e sceglie il prossimo passo del loop.`}}},O={title:`Motore del correttore`,inherit:`Eredita sviluppatore`,own:`Motore proprio`,hint:`Viene eseguito solo nei giri di correzione: dopo una verifica fallita o una revisione respinta; i primi passaggi restano sullo sviluppatore. Un modello più potente o cloud qui conviene quando lo sviluppatore è un modello locale economico.`},k={title:`Guardrail`,intro:`Regole di processo che l'host applica intorno ai modelli locali perché un modello piccolo non deragli. Tutte attive per impostazione predefinita; disattivane una solo per regolare il processo. I provider CLI non sono mai coinvolti.`,unsupported:`Questa installazione di Core non espone guardrail configurabili. Aggiorna Core per regolarli; le regole integrate continuano ad applicarsi.`,active:`{{on}} di {{total}} attivi`,reset:`Ripristina predefiniti`,phases:{architect:`Architetto`,developer:`Sviluppatore`,host:`Host`},unknown:`Un guardrail aggiunto da un Core più recente; questa app non ha ancora una descrizione.`,items:{"plan-validation":{title:`Piano di attività validato`,description:`Rifiuta piani che puntano a openspec/, elencano semplici nomi di file come attività, hanno troppo poche attività/gruppi per la spec o lasciano criteri di accettazione scoperti; l'architetto riprova.`,why:`Un piano vago o incompleto è la causa n. 1 per cui un piccolo modello sviluppatore scrive stub.`},"genuine-blocking-question":{title:`Solo vere domande bloccanti`,description:`L'architetto può mettere in pausa l'esecuzione solo con una vera domanda che termina con '?', mai con testo d'esempio copiato.`,why:`I modelli piccoli ripetono i segnaposto del prompt e bloccherebbero ogni esecuzione.`},"plan-language-hint":{title:`Pianificare nel linguaggio del repository`,description:`Indica all'architetto il linguaggio principale così i nomi dei file delle attività hanno l'estensione giusta.`,why:`Un piano JS su un repo TypeScript rende impossibile spuntare le attività.`},"frozen-plan-writes":{title:`Gli artefatti di pianificazione sono congelati`,description:`Lo sviluppatore non può scrivere sotto openspec/; il piano appartiene all'host.`,why:`I modelli 'implementano' modificando il piano invece del codice.`},"primary-language":{title:`Promemoria del linguaggio principale`,description:`A ogni gruppo di attività viene indicato il linguaggio principale del repository; i nuovi file dovrebbero usarlo.`,why:`Evita una seconda implementazione in un altro linguaggio.`},"duplicate-sibling":{title:`Nessun modulo gemello tra linguaggi`,description:`Rifiuta board.js quando board.ts esiste già; estendi invece il modulo esistente.`,why:`I gemelli compilano entrambi e i test importano quello sbagliato.`},"one-test-per-module":{title:`Un file di test per modulo`,description:`Rifiuta board.tick.test.ts quando esiste board.test.ts; estendilo invece.`,why:`Altrimenti ogni passata di correzione aggiunge una nuova suite.`},"empty-write":{title:`Nessuna sovrascrittura vuota`,description:`Una scrittura vuota su un file con contenuto viene rifiutata; scrivi il contenuto completo o applica una patch.`,why:`Una passata di 'pulizia' una volta lasciò index.ts a 0 righe.`},"evidence-gated-ticking":{title:`Prove prima di spuntare un'attività`,description:`Un'attività che nomina file è completata solo se esistono e non sono stub (estensioni sorelle accettate).`,why:`Senza, 'fatto' è solo un'affermazione e la verifica gira contro il nulla.`},"inventory-retry":{title:`Riprova con l'inventario reale`,description:`Quando il modello rinuncia sostenendo che il repo è vuoto mentre non lo è, riprova una volta con l'elenco dei file.`,why:`Seconda possibilità economica invece di un passo fallito.`},"synthetic-corrections":{title:`Trasformare il feedback in attività`,description:`Quando tutte le attività sono spuntate ma review/verify sono falliti, il feedback diventa attività di correzione concrete.`,why:`Altrimenti lo sviluppatore risponde 'già fatto' e nulla cambia.`},"silent-group-closure":{title:`Chiudere i gruppi silenziosi, conservare i loro file`,description:`Un gruppo il cui modello smette di rispondere viene chiuso accreditando i file scritti e lasciando aperte le sue attività, invece di far fallire l'esecuzione.`,why:`Un modello 9B scrisse cinque moduli, tacque e l'intera esecuzione fallì.`},"environment-repair":{title:`L'host ripara l'ambiente`,description:`Dipendenze o strumenti di test mancanti (npm install, ts-jest, @types/jest, moduli di config Jest) vengono installati dall'host, poi la verifica viene rieseguita una volta.`,why:`Il modello non può sistemare l'ambiente e brucia correzioni provandoci.`},"lockfile-repair":{title:`Scartare i lockfile scritti a mano`,description:`Un package-lock.json inventato dal modello (EINTEGRITY/ETARGET) viene rimosso e l'installazione ritentata una volta.`,why:`Gli hash inventati non si installano mai.`},"verify-idle-timeout":{title:`Fermare i test bloccati`,description:`Un comando di verifica senza output per 5 minuti viene fermato e segnalato come probabile blocco (ultimo output incluso).`,why:`Altrimenti un ciclo while in un test trattiene l'esecuzione fino al limite di 15 minuti.`},"verify-per-group":{title:`Verifica dopo ogni gruppo`,description:`Esegue il comando di test del repository subito dopo ogni gruppo di attività; un errore riceve un giro di correzione immediato finché il contesto del gruppo è fresco.`,why:`Cinque suite rotte alla fine sono molto più difficili da sistemare di una alla volta.`},"test-reachability":{title:`Ogni nuovo test deve essere eseguito davvero`,description:"Un file di test scritto dal developer che il comando di test del repository non esegue mai (uno script `test` che enumera e salta il file nuovo) fa fallire la verifica indicando il file esatto, prima a livello di gruppo e poi di nuovo nella verifica dell'host.",why:`Una suite di 622 righe con sei casi falliti è passata in verde perché nessuno l'aveva mai eseguita.`},"exit-code-honesty":{title:`Diffidare di un exit 0 che segnala fallimenti`,description:`Un comando di verifica che esce con 0 mentre l'output stampa fallimenti (righe \`FAIL:\`, "3 failed", un AssertionError) è trattato come FALLITO e passato al correttore con l'harness indicato come difetto.`,why:`Un runner di test artigianale che non impostava mai un exit code diverso da zero ha consegnato tre test rossi come verdi.`},"verification-output-adoption":{title:`Adottare l'output scritto dai controlli stessi`,description:`Se la verifica passa ma i suoi comandi riscrivono file tracciati (un passaggio di lint che rigenera una mappatura), l'host mantiene quei file nel candidato e verifica ancora una volta; reviewer e fixer non devono annullarli.`,why:`Un passaggio di lint che rigenerava un file tracciato faceva sembrare ogni esecuzione verde un candidato modificato e consumava correzioni su un non-difetto.`}}},A=`Modifiche non salvate`,j={title:`Ruoli personalizzati`,hint:`Definisci istruzioni riutilizzabili e autorizzazioni esplicite per i ruoli del flusso.`,unsupported:`Aggiorna Core per modificare i ruoli personalizzati.`,remove:`Rimuovi {{id}}`,access:`Accesso al codice`,read:`Sola lettura`,write:`Lettura e scrittura`,artifacts:`Accesso agli artefatti OpenSpec`,none:`Nessuno`,tasks:`Solo caselle delle attività`,all:`Tutti gli artefatti della modifica`,skill:`Skill OpenSpec`,noSkill:`Nessuno skill associato`,prompt:`Istruzioni del ruolo`,id:`ID del ruolo`,add:`Aggiungi ruolo`,invalidId:`Usa un ID univoco in minuscolo che inizi con una lettera, con un massimo di 64 lettere, numeri o trattini. Gli ID integrati sono riservati.`,escalationHint:`Solo una correzione consentita del protocollo può usare il modello superiore. Non viene aggiunto alcun tentativo.`},M={title:`Istruzioni di esecuzione`,hint:`Core conserva queste istruzioni per il prossimo turno di agente compatibile. L’invio non risponde alle domande e non concede approvazioni.`,label:`Istruzioni aggiuntive`,send:`Invia istruzioni`,accepted:`Ricevute da Core; in attesa di utilizzo.`,pending:`In attesa di un turno di agente`,consumed:`Utilizzate da un agente`,counts:`In attesa: {{pending}} · Utilizzate: {{consumed}}`,failed:`Impossibile inviare le istruzioni. Riprova per confermare lo stesso messaggio.`,unavailable:`I dettagli delle ricevute non sono disponibili.`,unreported:`Questa versione di Core non segnala l’utilizzo.`,truncated:`Sono mostrate solo le ricevute recenti e i messaggi in attesa.`},N={title:`Valori predefiniti del ruolo Core`,hint:`Questi valori del file si applicano ai nuovi workflow. Le impostazioni esplicite del progetto hanno la precedenza; le esecuzioni salvate mantengono le impostazioni fissate.`,invalid:`Correggi l’intestazione YAML nell’editor prima di modificare i campi del ruolo.`,escalationEffort:`Sforzo di ragionamento del modello superiore`},P={title:`Conservazione della cronologia`,description:`Elimina le cronologie scadute e le versioni di Core inutilizzate. Le cronologie eliminate non possono essere riprese o biforcate. Le esecuzioni attive o recuperabili e le consegne in sospeso restano protette; i log e i costi vengono conservati.`,forever:`Conserva la cronologia indefinitamente`,days:`Giorni di conservazione`,save:`Salva conservazione`,preview:`Anteprima pulizia`,collect:`Elimina cronologia scaduta`,previewSummary:`Idonei: {{runs}} cronologie e {{packages}} versioni di Core inutilizzate.`,collectedSummary:`Scadute: {{runs}} cronologie. Rimosse: {{packages}} versioni di Core inutilizzate.`,more:`{{count}} esecuzioni aggiuntive.`,failed:`Impossibile consultare o aggiornare la conservazione.`,expired:`Questa cronologia è scaduta secondo la politica del progetto. Il log e la contabilità restano disponibili.`,loading:`Caricamento della politica…`,states:{protected:`Conservato`,eligible:`Idoneo`,expired:`Scaduto`,cleanup_pending:`Pulizia in sospeso`,busy:`In uso`,error:`Verifica non riuscita`},reasons:{disabled:`Conservazione indefinita`,recoverable:`Recupero ancora disponibile`,active:`Esecuzione attiva`,human_pending:`In attesa di risposta umana`,interrupted_writes:`Scritture interrotte da verificare`,delivery_pending:`Consegna in sospeso`,fork_pending:`Resta una biforcazione dipendente`,unknown_terminal_time:`Data di completamento sconosciuta`,within_retention:`Periodo di conservazione non scaduto`}},F={title:`Agenti del loop`,hint:`Queste definizioni sono condivise da tutti i progetti che usano questo loop. Duplica il loop per personalizzare un workflow separato.`,legacy:`Questo loop salvato usa ancora gli agenti storici del progetto. Importali o attiva gli agenti del loop prima di modificarne la configurazione.`,enable:`Usa gli agenti del loop`,import:`Importa gli agenti del progetto corrente`,restoreDefinition:`Usa la definizione di Core`,default:`Predefinito del provider`,effort:`Sforzo di ragionamento`,escalationModel:`Modello di escalation`,escalationEffort:`Sforzo di escalation`,policy:`Policy del workflow`,maxAttempts:`Tentativi di correzione massimi`,maxTokens:`Budget di token`,maxCostUsd:`Budget di costo (USD)`,timeoutMs:`Timeout di esecuzione (ms)`,projectHint:`Configura qui i controlli del repository. Definizioni degli agenti, modelli e policy del workflow si configurano nell'editor dei loop. Gli agenti storici del progetto possono essere importati in un loop duplicato.`,showUnused:`Mostra anche gli agenti non usati in questo loop`,stepTitle:`Agente e opzioni del passo`,stepHint:`Modifica la definizione dell’agente e il motore di questo passo. I passi di questo loop che usano lo stesso ruolo condividono queste impostazioni.`,inheritProvider:`Eredita il provider della missione`,inheritDefinition:`Segue la definizione di Core: ogni aggiornamento di Core la rinnova automaticamente.`,customizeDefinition:`Personalizza per questo loop`,coreDefinitionUnavailable:`Anteprima non disponibile finché non è installato un runtime Core.`,turnLimits:{title:`Limiti di turni`,hint:`Ogni chiamata a uno strumento dell'agente conta come un turno. Se un passo si ferma con "reached the configured limit of N turns", aumenta qui il suo limite, salva e pubblica; i nuovi avvii lo useranno. Vuoto usa il valore predefinito di Core ({{turns}}). Le impostazioni del progetto non modificano le esecuzioni dei loop.`,role:`Ruolo {{role}}`,input:`Numero massimo di turni per {{steps}} (ruolo {{role}})`,stepHint:`Il ruolo {{role}} si ferma dopo {{turns}} turni. I passi che condividono questo ruolo condividono il limite; vale per i nuovi avvii dopo la pubblicazione.`}},I={label:`Suggerimento sulla famiglia di modelli del revisore`,title:`Esegui il revisore con {{provider}}: una famiglia di modelli diversa individua errori diversi`,body:`Lo sviluppatore e il revisore usano attualmente lo stesso provider. È solo un suggerimento: non cambia nulla finché non lo applichi.`,apply:`Applica`,dismiss:`Ignora`},L={title:`Motore del triage delle spec`,hint:`Il triage legge ogni spec nuova o modificata e consiglia il loop con cui avviarla. È una chiamata breve e strutturata per spec. Per impostazione predefinita usa il provider principale del progetto con il suo modello più economico.`,provider:`Provider del triage`,inherit:`Provider principale`,model:`Modello`,cheapestModel:`Modello più economico (predefinito)`,loading:`Caricamento del motore di triage…`,loadFailed:`Impossibile leggere il motore di triage. Il triage continua a usare il provider principale; riapri queste impostazioni per riprovare.`,saveFailed:`Il motore di triage non è stato salvato. Resta la scelta precedente.`},R={title:e,description:t,loading:n,loadFailed:r,retry:i,unavailable:a,save:o,saving:s,saved:c,saveFailed:l,approvalBeforeArchive:u,providers:d,cliNames:f,roles:p,agents:m,limits:h,verification:g,setup:_,runs:v,roleHints:y,review:b,architect:x,metrics:S,prompts:C,efficiency:w,evidence:T,loopRoles:E,pipeline:D,fixer:O,guardrails:k,unsavedChanges:A,customRoles:j,steering:M,studioRole:N,retention:P,loopAgents:F,reviewerSuggestion:I,triageEngine:L};export{m as agents,u as approvalBeforeArchive,x as architect,f as cliNames,j as customRoles,R as default,t as description,w as efficiency,T as evidence,O as fixer,k as guardrails,h as limits,r as loadFailed,n as loading,F as loopAgents,E as loopRoles,S as metrics,D as pipeline,C as prompts,d as providers,P as retention,i as retry,b as review,I as reviewerSuggestion,y as roleHints,p as roles,v as runs,o as save,l as saveFailed,c as saved,s as saving,_ as setup,M as steering,N as studioRole,e as title,L as triageEngine,a as unavailable,A as unsavedChanges,g as verification};
@@ -1 +1 @@
1
- var e=`エージェント実行エンジン`,t=`アーキテクト、デベロッパー、レビュアーが別々のフェーズとして実行され、その間に決定的な検証が入ります。役割ごとにプロバイダーを選ぶだけで、他はそのまま動く既定値です。`,n=`実行設定を読み込み中…`,r=`実行設定を読み込めませんでした。変更する前に再試行してください。`,i=`再試行`,a=`この Core にはエージェント実行エンジンが含まれていません。有効にする前に Core を更新してください。無効な状態で設定を準備できます。`,o=`実行設定を保存`,s=`保存中…`,c=`実行設定を保存しました`,l=`実行設定を保存できませんでした。`,u=`ワークフロー完了前に承認を待つ`,d={title:`プロバイダー`,hint:`CLI は既存のログインを使用します。API には環境変数名のみを指定し、キー自体は入力しないでください。ローカルの場合は空欄にできます。削除前に役割を別のプロバイダーに割り当ててください。`,entry:`プロバイダー {{index}}`,id:`プロバイダー ID`,kind:`接続方式`,cli:`インストール済みの開発 CLI`,compatible:`OpenAI 互換エンドポイント`,command:`開発 CLI`,baseUrl:`API ベース URL`,apiKeyEnv:`API キーの環境変数(任意)`,remove:`プロバイダーを削除`,addCli:`CLI プロバイダーを追加`,addLocal:`ローカル / API プロバイダーを追加`,show:`プロバイダー接続を表示`,hide:`プロバイダー接続を隠す`,globalTitle:`AI プロバイダー`,globalHint:`各プロジェクトは 2 種類のプロバイダーで動きます。このマシンで検出されたコーディング CLI と、ここで登録するローカルの OpenAI 互換エンジンです。プロジェクト設定 ▸ エージェントエンジンでパイプラインの各フェーズに割り当てます。変更は新しい実行に適用されます。`,label:`表示名(任意)`,labelPlaceholder:`例: LAN マシン`,defaultModel:`既定のモデル`,defaultModelNone:`既定なし(最初に検出したもの)`,defaultModelPlaceholder:`モデル ID またはカスタムエイリアス`,customModel:`カスタムエイリアス…`,discoveredModels:`検出されたモデル`,noModels:`まだモデルが検出されていません。接続をテストしてください。`,rates:`料金(100 万トークンあたり USD、任意)`,ratesHint:`コストは概算として表示されます。両方を空にするとコストは不明のままです。`,inputRate:`入力 / 100 万`,outputRate:`出力 / 100 万`,ratesInvalid:`両方の料金を 0 以上の数値で入力するか、両方を空にしてください。`,reasoningEffort:`エンドポイントが推論の強さに対応`,reasoningEffortHint:`OpenAI の reasoning_effort フィールドを送信します。各呼び出しではロールに設定した強さを、コンパクトアーキテクトが計画を書く間は high に引き上げます。サーバーが対応していない場合はオフのままにしてください。`,apiKeyEnvMissing:`{{name}} はアプリのプロセスに設定されていません。アプリを起動する環境で設定してください。`,test:`接続をテスト`,testing:`テスト中…`,testFailed:`接続をテストできませんでした。`,rename:`名前を変更`,renameHint:`名前を変更してもロールの割り当てはこの接続を指したままです。`,idLocked:`保存後は ID がロックされます。変更するには「名前を変更」を使ってください。`,localBadge:`ローカルエンジン`,cliBadge:`CLI`,notDetected:`このマシンでは検出されていません`,unsaved:`未保存の変更`,empty:`接続はまだありません。ローカル / API プロバイダーを追加して始めましょう。`,fixBeforeSave:`保存する前にハイライトされた項目を修正してください。`,status:{probing:`確認中…`,reachable:`到達可能`,unauthorized:`未認可`,unreachable:`到達不可`,untested:`未テスト`},auth:{authenticated:`サインイン済み`,unauthenticated:`未サインイン`,unknown:`サインイン状態不明`},agentLoop:`エージェントループ`,agentLoopHint:`implement パイプラインがこのモデルを動かす方法`,agentLoop_compact:`コンパクト`,agentLoop_compactHint:`アプリ主導のマイクロステップと構造化出力。約 30B 未満のモデルに推奨。`,agentLoop_free:`フリー`,agentLoop_freeHint:`ロールごとに 1 つのエージェントループ。CLI プロバイダーと同じ。強力なモデルが必要。`,contextWindow:`コンテキストウィンドウ(トークン)`,contextWindowHint:`サーバーのコンテキストサイズ(n_ctx / num_ctx)に合わせてください。ウィンドウが埋まる前に古いツール結果を圧縮するために使います。既定 32768。`,maxOutput:`ターンあたりの出力予算(トークン)`,maxOutputHint:`ツールターン1回の max_tokens。途中で切れたターンは2倍で1回だけ再試行します。コンテキストウィンドウ内で数えられるため、常に残り容量で上限が決まります。モデルが内部で思考する場合(thinking はこの予算を消費します)は増やしてください。既定値 8192。`,reasoningEffortRailHint:`オフの場合、このエンジンではレールのヘッダーに推論の強さセレクターが表示されません。`,presetTitle:`クイック設定`,presetSmallModel:`小型モデル向け推奨`,presetSmallModelApplied:`小型モデル用プリセットを適用済み`,presetSmallModelHint:`コンパクトループを有効にし、推論の強さを転送し、32k のコンテキストウィンドウを設定します。7–14B モデルで検証済みの組み合わせです。各項目は後から変更できます。`,cliGroup:`CLI ツール`,cliGroupHint:`このマシンで検出済み。各自のログインを使うため設定は不要です。`,localGroup:`ローカルエンジン`,localGroupHint:`このアプリから到達できる OpenAI 互換エンドポイント(llama.cpp、Ollama、vLLM、LM Studio など)。`,models_one:`{{count}} モデル`,models_other:`{{count}} モデル`,expand:`設定を表示`,collapse:`設定を隠す`,overflow:`その他の操作`,addLocalHero:`ローカルエンジンを追加`,emptyLocalPitch:`ローカルエンジンはまだありません。OpenAI 互換エンドポイントを指定すると、自分のハードウェアでパイプラインを実行できます。コストは自分で管理でき、データはネットワークの外に出ません。`,defaultsGroup:`プロバイダーの既定値`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`設計担当`,developer:`開発担当`,reviewer:`レビュー担当`,fixer:`フィクサー`,verify:`検証`,archive:`完了`},m={title:`役割の割り当て`,hint:`各ロールで異なるプロバイダーとモデルを使用できます。接続は一般設定 → AI プロバイダーで管理します。既定の上限はエージェントごとに{{turns}}ターンです。`,provider:`プロバイダー`,model:`モデル`,modelPlaceholder:`モデル ID または CLI の既定値`,maxTurns:`最大ターン数(既定 {{turns}})`,defaultModel:`既定({{model}})`,thinking:`非表示の思考`,thinking_off:`オフ`,thinking_on:`オン`,thinkingHint:`既定はオフ:ホスト駆動のループでは、隠れた推論が出力予算とターンごとの時間を消費します。熟考が有効なロールでのみオンにしてください(chat_template_kwargs.enable_thinking として送信され、未対応のエンドポイントでは無視されます)。`},h={title:`ワークフローの制限`,hint:`空欄は Core の既定値を使います:修正試行 {{attempts}} 回、ロールステップごとに {{minutes}} 分。ローカルエンジンではタイムアウトは作業単位ごと(タスクグループ、成果物、レビュー)に適用され、既定 45 分に加えて 20 分のアイドル監視があります。時間切れのステップは実行をブロックし、次の未完了タスクグループから再開できます。トークン/USD の上限は任意で、USD 上限はすべての AI ロールに Claude が必要です。`,maxAttempts:`デベロッパーの最大試行回数(既定 {{attempts}})`,timeoutMinutes:`タイムアウト(分。既定 {{minutes}}、ローカルエンジンはタスクグループごとに 45)`,maxTokens:`最大トークン数`,maxCostUsd:`最大コスト(USD)`,unlimited:`制限なし`},g={title:`検証コマンド`,hint:`任意。デベロッパー完了後に実行され、失敗はデベロッパーに戻されます。空のままなら、毎回アーキテクトがプロジェクト自身のチェックを提案します。自動チェックのないリポジトリもレビューされます。`,detect:`プロジェクトのチェックを検出`,detecting:`検出中…`,detected:`このプロジェクトが定義済みのチェックで埋めました。`,nothingDetected:`テスト・型チェック・ビルドのコマンドは見つかりませんでした。問題ありません。可能な場合はアーキテクトが実行時にチェックを提案します。`,detectFailed:`プロジェクトのリポジトリを調べられませんでした。`,repository:`リポジトリ`,command:`コマンド`,reason:`{{reason}} から検出`,remove:`削除`,add:`コマンドを追加`,invalidLine:`検証コマンドが空か、引用符が閉じていません: {{line}}`,label:`チェック名(任意)`,moveUp:`上へ`,moveDown:`下へ`},_={title:`セットアップコマンド`,hint:"Core が各検証の前にリポジトリのチェックアウト内で実行する冪等なコマンドです(例: `npx playwright install chromium`)。",add:`セットアップコマンドを追加`,invalidLine:`セットアップコマンドが空か、引用符が閉じていません: {{line}}`,repository:`リポジトリ`,command:`セットアップコマンド`,label:`セットアップのラベル(任意)`,remove:`削除`,moveUp:`セットアップコマンドを上へ`,moveDown:`セットアップコマンドを下へ`,empty:`セットアップコマンドはありません。検証はチェックアウト内で直接実行されます。`},v={title:`保存された実行`,refresh:`更新`,hint:`元のワークツリーで保存された範囲と設定を使って続行し、進行状況はそのジョブのログに表示されます。公開や Desktop の配信再開は行いません。実行中のレールはジョブの操作から停止してください。`,empty:`保存された実行はありません。`,loadFailed:`保存された実行を読み込めませんでした。`,actionFailed:`この実行を更新できませんでした。`,phase:`次のフェーズ: {{phase}}`,approve:`完了を承認`,recover:`中断したフェーズを復旧`,resume:`再開`,cancel:`続行をキャンセル`,status:{running:`続行中…`,succeeded:`成功`,failed:`失敗`,blocked:`ブロック中`,paused:`一時停止`,cancelled:`キャンセル済み`,interrupted:`中断`,unavailable:`利用不可`,expired:`期限切れ`},question:`アーキテクトからの質問:`,answerLabel:`あなたの回答`,answerPlaceholder:`質問に回答すると、アーキテクトはそれをもとに続行します。`,answer:`回答して再開`,viewLog:`ジョブログを表示`,implementation:`実装`,preserveProgress:`表示されたフェーズから、既存の作業と保存済み設定を保持して続行します。`,reviewDelivery:`実装が完了しました。引き渡しの前にジョブログで結果を確認してください。この続行では公開していません。`,prepareDelivery:`引き渡しを準備`,dismiss:`閉じる`,selectRecovery:`復旧する中断された試行を選択`},y={architect:`コードを読み、提案・設計・タスク・仕様を書きます。読み取り専用。`,developer:`タスクをテスト付きで実装します。CLI のサンドボックス内でファイル編集とコマンド実行ができます。`,reviewer:`仕様と検証結果に照らして成果を確認します。読み取り専用。`},b={title:`レビュー基準`,hint:`空欄は Core の基準を使います。値は基準を厳しくする方向にのみ設定できます: 総合スコア {{score}} 以上、セキュリティ {{security}} 以上、その他の観点 {{aspect}} 以上。`,minScore:`最低総合スコア(既定 {{score}})`,aspects:{type_correctness:`型の正確さ(既定 {{score}})`,pattern_adherence:`パターン準拠(既定 {{score}})`,test_coverage:`テストカバレッジ(既定 {{score}})`,security:`セキュリティ(既定 {{score}})`,architectural_alignment:`アーキテクチャ整合性(既定 {{score}})`}},x={title:`アーキテクトの確信度`,hint:`自律的な調査を1回行っても確信度が低い設計は、アーキテクトの質問で一時停止するか、明示した前提のもとで続行します。`,onLowConfidence:`確信度が低いとき`,ask:`質問する(質問で一時停止)`,proceed:`明示した前提で続行`},S={title:`使用量と時間`,hint:`修正と失敗した呼び出しを含みます。エージェント時間にはツールの実行時間を含みます。キャッシュトークンは入力トークンの一部です。`,unknown:`取得不可`,duration:`実行時間`,agentTime:`エージェント時間`,cost:`報告された費用`,providerCalls:`エージェント呼び出し`,toolCalls:`ツール呼び出し`,input:`入力トークン`,output:`出力トークン`,uncached:`キャッシュなしの入力`,cacheRead:`キャッシュ読み取り`,cacheWrite:`キャッシュ書き込み`,partial:`一部の試行には詳細な計測値がありません。`,phases:`フェーズ別使用量`,phase:`フェーズ`,attempts:`試行回数`},C={title:`エージェントのロール別プロンプト`,description:`各ロールの指示を表示・編集します。すべてのプロジェクトとプロバイダーで共有され、変更は新しいジョブに適用されます。再開したジョブは元のプロンプトを使用します。`,definition:`{{role}}の定義`,default:`初期設定`,custom:`カスタマイズ済み`,restore:`初期設定に戻す`,contracts:`Spec のコンテキスト、OpenSpec ワークフロー、必須の応答形式は自動的に追加されるため、ここでは編集できません。`,invalid:`各定義は 1~20,000 文字で、空白以外のテキストを含み、ヌルバイトを含まない必要があります。`,saved:`ロール別プロンプトを保存しました`,unsaved:`未保存の変更`,discard:`変更を破棄`,save:`プロンプトを保存`,fixerHint:`修正ラウンドでのみ使用されます(検証失敗またはレビュー却下の後)。設定 ▸ エージェントエンジン ▸ フィクサーで独自エンジンを指定しない限り、開発者のエンジンで実行されます。開発者セッションを再開する CLI プロバイダーには短い修正フォローアップが送られます。新しいセッションが始まるとき(ローカルエンジン、フィクサーエンジン、セッション喪失時)にこの定義が適用されます。`},w={title:`実装の効率`,scope:`新しい実行に適用されます。保存済みの実行は元の設定とランタイムを維持します。`,effort:`推論の強度`,providerDefault:`プロバイダーの既定値`,unconfirmed:`未確認`,unknownSupport:`このモデルと通信方式の対応状況は未確認です。`,escalation:`同じプロバイダーの上位モデルを1段階許可`,baseRequired:`まず基本モデルを明示的に選択してください。`,escalationModel:`上位モデル`,triggers:{architect:`既存の追加調査のみがこの段階を選択できます。`,developer:`候補が2回失敗した後、次の許可された試行で選択できます。`,reviewer:`不正な形式の応答の修復のみ。コードの却下では昇格しません。`,fixer:`この段階に到達できるのは修正ラウンドのみで、初回の実装ではフィクサーは実行されません。`},contextMode:`リポジトリのコンテキスト`,reviewMode:`修正のレビュー`,planning:`計画の深さ`,adaptive:`適応型`,full:`完全`,developerChecks:`開発者が提案する追加チェックを許可`,concurrency:`同時チェック数の上限`,concurrencyHint:`既定値は1。ホストが独立と宣言した異なるリポジトリのチェックのみ並行実行できます。既定では再利用しません。`,checkCapabilities:`モデルの互換性を確認`,capabilitiesFailed:`互換性を確認できません。対応するCoreを更新するか、既定値を維持してください。`},T={title:`検証の証拠`,acceptance:`技術的な受け入れ`,acceptanceStatus:{pending:`保留中`,validated:`検証済み`,"with-exceptions":`例外あり`,blocked:`ブロック済み`},calls:`エージェント呼び出し`,executed:`実行したチェック`,reused:`再利用したチェック`,unknown:`利用不可`,unavailable:`証拠は利用できません。記録された結果は現在の有効性を保証しません。`,current:`現在の候補と計画`,historical:`過去の結果`,moreChecks:`その他のチェック`,output:`検証出力`,empty:`出力なし`,truncated:`制限されたページまたは切り詰められた記録です。`,nextPage:`次の出力ページ`,status:{passed:`成功`,failed:`失敗`,cancelled:`キャンセル`,interrupted:`中断`},disposition:{executed:`実行済み`,reused:`再利用`,"not-run":`未実行`},origin:`出所`,origins:{host:`ホスト`,architect:`アーキテクト`,developer:`開発者`,"frozen-runtime-config":`保存済み設定`,"project-role":`プロジェクトの役割`,default:`既定`,"explicit-launch-override":`この実行で選択したプロバイダー`,"loop-role":`ループのロール`},reuseDisabled:`このチェックの再利用は無効です。`,reuseConfirmed:`入力とツールの一致を確認して再利用しました。`,inputsChanged:`検証中に入力が変化したため、結果は無効です。`,reuseUnproven:`入力の一致を証明できる有効な結果がないため、再実行しました。`,original:`元の実行`,requested:`要求値`,reported:`報告値`},E={title:`ループロール`,hint:`レールを「ロール別」エンジンで起動したときにループ側のロールが使うエンジンです。上のパイプラインロール(architect・developer・reviewer)はすでにこのランタイム設定から決まります。`,verifier:`検証者`,verifierHint:`ループ内のコア以外のすべての AI ステップ:verify、fix、カスタム AI ステップ。`,decider:`決定者`,deciderHint:`判定を読んで次のステップを決める Loop Decider です。安価で高速なモデルが自然な選択です。`,inherit:`プライマリを継承`,model:`モデル`,effort:`推論の深さ`,disabled:`エージェントランタイムが無効です。有効にするまで「ロール別」エンジンでのレール起動は拒否されます。`,saveFailed:`ループロールを保存できませんでした。`},D={title:`実装パイプライン`,explainer:`各実装ではこれらのフェーズがこの順序で実行されます。レールのエンジンが「{{roles}}」の場合、各フェーズは下で設定したエンジンで実行されます。フェーズごとに異なるプロバイダー、モデル、推論強度を指定できます。レールで特定のエンジンを選ぶと、すべてのフェーズがそのエンジンで実行されます。`,host:`ホスト`,noCommand:`コマンドなし`,inherits:`プライマリを継承`,inheritsDeveloper:`開発者を継承`,open:`開く`,collapse:`折りたたむ`,groups:{core:{title:`コアパイプライン`,hint:`すべての実装内で実行:計画、構築、検証、修正、レビュー。`},loop:{title:`ループステップ`,hint:`実行を包むレールのループ(検証 → 判定 → 修正)とカスタムループの AI ステップ。未設定の場合はプライマリエンジンを継承します。`,chip:`レールループ`}},phases:{architect:{name:`アーキテクト`,purpose:`コードを読み、提案・設計・タスクを書きます。`},developer:{name:`デベロッパー`,purpose:`テスト付きでタスクを実装します。`},verification:{name:`検証`,purpose:`ホストがチェックを実行し、失敗はデベロッパーに戻ります。`},fixer:{name:`フィクサー`,purpose:`検証やレビューで却下された内容を修正します。未設定の場合は開発者を継承します。`},reviewer:{name:`レビュアー`,purpose:`仕様と証拠に照らして結果を確認します。`},verifier:{name:`ベリファイア`,purpose:`ループの verify・fix・カスタム AI ステップ。`},decider:{name:`ディサイダー`,purpose:`判定を読み、ループの次のステップを決めます。`}}},O={title:`フィクサーのエンジン`,inherit:`開発者を継承`,own:`専用エンジン`,hint:`修正ラウンドでのみ実行されます(検証失敗またはレビュー却下の後)。初回の実装は開発者が担当します。開発者が安価なローカルモデルの場合、ここに強力なモデルやクラウドモデルを設定すると効果的です。`},k={title:`ガードレール`,intro:`小さなモデルが脱線しないよう、ホストがローカルモデルの周囲に適用するプロセスルールです。既定ではすべて有効。プロセスを調整する場合にのみ個別に無効化してください。CLI プロバイダーには影響しません。`,unsupported:`この Core には設定可能なガードレールがありません。調整するには Core を更新してください。組み込みルールは引き続き適用されます。`,active:`{{total}} 件中 {{on}} 件が有効`,reset:`既定に戻す`,phases:{architect:`アーキテクト`,developer:`開発者`,host:`ホスト`},unknown:`新しい Core で追加されたガードレールです。このアプリにはまだ説明がありません。`,items:{"plan-validation":{title:`検証済みのタスク計画`,description:`openspec/ を対象にする、ファイル名だけをタスクとして列挙する、仕様に対してタスク/グループが少なすぎる、受け入れ基準が未カバーな計画を拒否し、アーキテクトが再試行します。`,why:`曖昧または不完全な計画は、小さな開発者モデルがスタブを書く最大の原因です。`},"genuine-blocking-question":{title:`本当にブロックする質問のみ`,description:`アーキテクトは「?」で終わる実際の質問でのみ実行を一時停止でき、コピーした例文では停止できません。`,why:`小さなモデルはプロンプトのプレースホルダーをそのまま返し、すべての実行をブロックしてしまいます。`},"plan-language-hint":{title:`リポジトリの言語で計画する`,description:`アーキテクトに主要言語を伝え、タスクのファイル名が正しい拡張子を持つようにします。`,why:`TypeScript リポジトリに JS の計画を立てるとタスクを完了扱いにできません。`},"frozen-plan-writes":{title:`計画成果物は凍結`,description:`開発者は openspec/ 配下に書き込めません。計画はホストのものです。`,why:`モデルはコードではなく計画を編集して「実装」しがちです。`},"primary-language":{title:`主要言語のリマインダー`,description:`各タスクグループにリポジトリの主要言語を伝えます。新規ファイルはその言語を使うべきです。`,why:`別の言語による二重実装を防ぎます。`},"duplicate-sibling":{title:`言語をまたぐ双子モジュールを禁止`,description:`board.ts が既にある場合 board.js を拒否し、既存モジュールを拡張させます。`,why:`双子は両方コンパイルされ、テストが誤った方を import します。`},"one-test-per-module":{title:`モジュールごとにテストファイルは 1 つ`,description:`board.test.ts がある場合 board.tick.test.ts を拒否し、既存を拡張させます。`,why:`そうしないと修正のたびに新しいスイートが増えます。`},"empty-write":{title:`空の上書きを禁止`,description:`内容のあるファイルへの空の書き込みを拒否します。全内容を書くかパッチを当ててください。`,why:`「クリーンアップ」で index.ts が 0 行になったことがあります。`},"evidence-gated-ticking":{title:`証拠があってからタスクを完了にする`,description:`ファイルを指すタスクは、そのファイルが存在しスタブでない場合のみ完了です(類似拡張子は許容)。`,why:`これがないと「完了」は主張にすぎず、検証は何も対象にできません。`},"inventory-retry":{title:`実際のインベントリで再試行`,description:`モデルがリポジトリが空だと主張して諦めたが実際は空でない場合、ファイル一覧付きで一度再試行します。`,why:`失敗したステップの代わりに安価な二度目のチャンスを与えます。`},"synthetic-corrections":{title:`フィードバックをタスクに変換`,description:`すべてのタスクが完了なのにレビュー/検証が失敗した場合、フィードバックを具体的な修正タスクにします。`,why:`そうしないと開発者は「完了済み」と報告し、何も変わりません。`},"silent-group-closure":{title:`沈黙したグループを閉じ、ファイルは保持`,description:`モデルが応答しなくなったグループは、書き込んだファイルを計上しタスクは未完了のまま閉じ、実行を失敗させません。`,why:`9B モデルが 5 モジュールを書いた後に沈黙し、実行全体が失敗したことがあります。`},"environment-repair":{title:`ホストが環境を修復`,description:`不足する依存関係やテストツール(npm install、ts-jest、@types/jest、Jest 設定モジュール)をホストがインストールし、検証を一度再実行します。`,why:`モデルは環境を直せず、試行に修正回数を浪費します。`},"lockfile-repair":{title:`手書きのロックファイルを破棄`,description:`モデルが捏造した package-lock.json(EINTEGRITY/ETARGET)を削除し、インストールを一度再試行します。`,why:`捏造されたハッシュは決してインストールできません。`},"verify-idle-timeout":{title:`ハングしたテストを停止`,description:`5 分間出力のない検証コマンドを停止し、ハングの疑いとして報告します(最後の出力を含む)。`,why:`そうしないとテスト内の while ループが 15 分の上限まで実行を占有します。`},"verify-per-group":{title:`グループごとに検証`,description:`各タスクグループの直後にリポジトリのテストコマンドを実行し、失敗した場合はグループの文脈が新しいうちにその場で1回修正します。`,why:`最後に5つの壊れたスイートを直すより、1つずつ直す方がはるかに簡単です。`},"test-reachability":{title:`新しいテストは必ず実行されること`,description:"開発者が書いたのにリポジトリのテストコマンドが一度も実行しないテストファイル(ファイルを列挙する `test` スクリプトが新ファイルを漏らした場合)は、該当ファイル名を示して検証を失敗させます。まずグループ単位で、次にホスト検証で再確認します。",why:`6件の失敗を含む622行のスイートが、一度も実行されなかったためにグリーンのまま出荷されたことがあります。`},"exit-code-honesty":{title:`失敗を報告する終了コード 0 を信用しない`,description:'検証コマンドが 0 で終了しても出力に失敗(`FAIL:` 行、"3 failed"、AssertionError)が含まれる場合は失敗として扱い、テストハーネス自体を欠陥として指摘してフィクサーに渡します。',why:`非ゼロの終了コードを設定しない自作テストランナーが、3 件の失敗テストを成功として出荷したことがあります。`},"verification-output-adoption":{title:`チェック自身が書いた出力を採用する`,description:`検証は成功したがそのコマンドが追跡対象ファイルを書き換えた場合(マッピングを再生成する lint ステップなど)、ホストはそれらのファイルを候補に残してもう一度検証します。reviewer と fixer はそれらを元に戻してはいけません。`,why:`追跡対象ファイルを再生成する lint の事前ステップにより、成功した実行がすべて候補の変更に見え、欠陥ではないものに修正回数を消費していました。`}}},A=`未保存の変更`,j={title:`カスタムロール`,hint:`ワークフローのロールに再利用可能な指示と明示的な権限を設定します。`,unsupported:`カスタムロールを編集するには Core を更新してください。`,remove:`{{id}} を削除`,access:`ソースコードへのアクセス`,read:`読み取りのみ`,write:`読み取りと書き込み`,artifacts:`OpenSpec 成果物へのアクセス`,none:`なし`,tasks:`タスクのチェックボックスのみ`,all:`変更のすべての成果物`,skill:`OpenSpec スキル`,noSkill:`スキルの関連付けなし`,prompt:`ロールへの指示`,id:`ロール ID`,add:`ロールを追加`,invalidId:`英字で始まる一意の小文字 ID を入力してください。英小文字・数字・ハイフンを64文字まで使用できます。組み込み ID は予約済みです。`,escalationHint:`許可されたプロトコル修正でのみ上位モデルを使用できます。再試行回数は増えません。`},M={title:`実行への指示`,hint:`Core は、対応する次のエージェントのターンのために指示を保存します。送信しても質問への回答や承認にはなりません。`,label:`追加の指示`,send:`指示を送信`,accepted:`Core が受信しました。エージェントでの使用を待っています。`,pending:`エージェントのターン待ち`,consumed:`エージェントが使用済み`,counts:`待機中: {{pending}} · 使用済み: {{consumed}}`,failed:`指示を送信できませんでした。同じメッセージを確認するには再試行してください。`,unavailable:`受信記録の詳細を取得できません。`,unreported:`このバージョンの Core は使用状況を報告しません。`,truncated:`最近の受信記録と待機中のメッセージのみ表示しています。`},N={title:`Core ロールの既定値`,hint:`このファイルの既定値は新しいワークフローに適用されます。プロジェクトの明示的な設定が優先され、保存済みの実行は固定された設定を保持します。`,invalid:`ロールの項目を変更する前に、エディターで YAML ヘッダーを修正してください。`,escalationEffort:`上位モデルの推論レベル`},P={title:`履歴の保持`,description:`期限切れの実行履歴と未使用の Core バージョンを削除します。削除した履歴は再開や分岐ができません。実行中・復旧可能な実行や未完了の配信は保護され、ジョブログと費用記録は保持されます。`,forever:`履歴を無期限に保持`,days:`保持日数`,save:`保持設定を保存`,preview:`削除対象を確認`,collect:`期限切れの履歴を削除`,previewSummary:`対象:履歴 {{runs}} 件、未使用の Core バージョン {{packages}} 件。`,collectedSummary:`期限切れ:履歴 {{runs}} 件。削除済み:未使用の Core バージョン {{packages}} 件。`,more:`ほか {{count}} 件の実行。`,failed:`保持設定を確認または更新できませんでした。`,expired:`この実行履歴はプロジェクトの保持方針により期限切れになりました。ジョブログと費用記録は引き続き利用できます。`,loading:`保持方針を読み込み中…`,states:{protected:`保持`,eligible:`対象`,expired:`期限切れ`,cleanup_pending:`削除待ち`,busy:`使用中`,error:`確認失敗`},reasons:{disabled:`無期限保持`,recoverable:`復旧可能`,active:`実行中`,human_pending:`人による回答待ち`,interrupted_writes:`中断した書き込みの確認が必要`,delivery_pending:`配信待ち`,fork_pending:`依存する分岐が残っています`,unknown_terminal_time:`完了日時が不明`,within_retention:`保持期間内`}},F={title:`Loop agents`,hint:`These definitions are shared by every project using this loop. Duplicate the loop to customize a separate workflow.`,legacy:`This saved loop still uses historical project agents. Import them or enable loop agents before changing its configuration.`,enable:`Use loop agents`,import:`Import current project agents`,restoreDefinition:`Core の定義を使用`,default:`Provider default`,effort:`Reasoning effort`,escalationModel:`Escalation model`,escalationEffort:`Escalation effort`,policy:`Workflow policy`,maxAttempts:`Maximum correction attempts`,maxTokens:`Token budget`,maxCostUsd:`Cost budget (USD)`,timeoutMs:`Run timeout (ms)`,projectHint:`Configure repository checks here. Agent definitions, models and workflow policy are configured in the loop editor. Historical project agents can be imported into a duplicated loop.`,showUnused:`Also show agents not used in this loop`,stepTitle:`Step agent and options`,stepHint:`Edit this step’s agent definition and engine. Steps using the same role in this loop share these settings.`,inheritProvider:`ミッションのプロバイダーを継承`,inheritDefinition:`Core の定義に従います。Core をアップグレードすると自動的に更新されます。`,customizeDefinition:`このループ用にカスタマイズ`,coreDefinitionUnavailable:`Core ランタイムをインストールするまでプレビューは利用できません。`,turnLimits:{title:`ターン数の上限`,hint:`エージェントのツール呼び出し1回が1ターンとして数えられます。ステップが "reached the configured limit of N turns" で停止した場合は、ここで上限を上げて保存・公開してください。新しい起動から適用されます。空欄の場合は Core の既定値({{turns}})を使います。プロジェクト設定はループの実行に影響しません。`,role:`ロール {{role}}`,input:`{{steps}} の最大ターン数(ロール {{role}})`,stepHint:`ロール {{role}} は {{turns}} ターンで停止します。このロールを使うステップは上限を共有し、公開後の新しい起動から適用されます。`}},I={title:e,description:t,loading:n,loadFailed:r,retry:i,unavailable:a,save:o,saving:s,saved:c,saveFailed:l,approvalBeforeArchive:u,providers:d,cliNames:f,roles:p,agents:m,limits:h,verification:g,setup:_,runs:v,roleHints:y,review:b,architect:x,metrics:S,prompts:C,efficiency:w,evidence:T,loopRoles:E,pipeline:D,fixer:O,guardrails:k,unsavedChanges:A,customRoles:j,steering:M,studioRole:N,retention:P,loopAgents:F};export{m as agents,u as approvalBeforeArchive,x as architect,f as cliNames,j as customRoles,I as default,t as description,w as efficiency,T as evidence,O as fixer,k as guardrails,h as limits,r as loadFailed,n as loading,F as loopAgents,E as loopRoles,S as metrics,D as pipeline,C as prompts,d as providers,P as retention,i as retry,b as review,y as roleHints,p as roles,v as runs,o as save,l as saveFailed,c as saved,s as saving,_ as setup,M as steering,N as studioRole,e as title,a as unavailable,A as unsavedChanges,g as verification};
1
+ var e=`エージェント実行エンジン`,t=`アーキテクト、デベロッパー、レビュアーが別々のフェーズとして実行され、その間に決定的な検証が入ります。役割ごとにプロバイダーを選ぶだけで、他はそのまま動く既定値です。`,n=`実行設定を読み込み中…`,r=`実行設定を読み込めませんでした。変更する前に再試行してください。`,i=`再試行`,a=`この Core にはエージェント実行エンジンが含まれていません。有効にする前に Core を更新してください。無効な状態で設定を準備できます。`,o=`実行設定を保存`,s=`保存中…`,c=`実行設定を保存しました`,l=`実行設定を保存できませんでした。`,u=`ワークフロー完了前に承認を待つ`,d={title:`プロバイダー`,hint:`CLI は既存のログインを使用します。API には環境変数名のみを指定し、キー自体は入力しないでください。ローカルの場合は空欄にできます。削除前に役割を別のプロバイダーに割り当ててください。`,entry:`プロバイダー {{index}}`,id:`プロバイダー ID`,kind:`接続方式`,cli:`インストール済みの開発 CLI`,compatible:`OpenAI 互換エンドポイント`,command:`開発 CLI`,baseUrl:`API ベース URL`,apiKeyEnv:`API キーの環境変数(任意)`,remove:`プロバイダーを削除`,addCli:`CLI プロバイダーを追加`,addLocal:`ローカル / API プロバイダーを追加`,show:`プロバイダー接続を表示`,hide:`プロバイダー接続を隠す`,globalTitle:`AI プロバイダー`,globalHint:`各プロジェクトは 2 種類のプロバイダーで動きます。このマシンで検出されたコーディング CLI と、ここで登録するローカルの OpenAI 互換エンジンです。プロジェクト設定 ▸ エージェントエンジンでパイプラインの各フェーズに割り当てます。変更は新しい実行に適用されます。`,label:`表示名(任意)`,labelPlaceholder:`例: LAN マシン`,defaultModel:`既定のモデル`,defaultModelNone:`既定なし(最初に検出したもの)`,defaultModelPlaceholder:`モデル ID またはカスタムエイリアス`,customModel:`カスタムエイリアス…`,discoveredModels:`検出されたモデル`,noModels:`まだモデルが検出されていません。接続をテストしてください。`,rates:`料金(100 万トークンあたり USD、任意)`,ratesHint:`コストは概算として表示されます。両方を空にするとコストは不明のままです。`,inputRate:`入力 / 100 万`,outputRate:`出力 / 100 万`,ratesInvalid:`両方の料金を 0 以上の数値で入力するか、両方を空にしてください。`,reasoningEffort:`エンドポイントが推論の強さに対応`,reasoningEffortHint:`OpenAI の reasoning_effort フィールドを送信します。各呼び出しではロールに設定した強さを、コンパクトアーキテクトが計画を書く間は high に引き上げます。サーバーが対応していない場合はオフのままにしてください。`,apiKeyEnvMissing:`{{name}} はアプリのプロセスに設定されていません。アプリを起動する環境で設定してください。`,test:`接続をテスト`,testing:`テスト中…`,testFailed:`接続をテストできませんでした。`,rename:`名前を変更`,renameHint:`名前を変更してもロールの割り当てはこの接続を指したままです。`,idLocked:`保存後は ID がロックされます。変更するには「名前を変更」を使ってください。`,localBadge:`ローカルエンジン`,cliBadge:`CLI`,notDetected:`このマシンでは検出されていません`,unsaved:`未保存の変更`,empty:`接続はまだありません。ローカル / API プロバイダーを追加して始めましょう。`,fixBeforeSave:`保存する前にハイライトされた項目を修正してください。`,status:{probing:`確認中…`,reachable:`到達可能`,unauthorized:`未認可`,unreachable:`到達不可`,untested:`未テスト`},auth:{authenticated:`サインイン済み`,unauthenticated:`未サインイン`,unknown:`サインイン状態不明`},agentLoop:`エージェントループ`,agentLoopHint:`implement パイプラインがこのモデルを動かす方法`,agentLoop_compact:`コンパクト`,agentLoop_compactHint:`アプリ主導のマイクロステップと構造化出力。約 30B 未満のモデルに推奨。`,agentLoop_free:`フリー`,agentLoop_freeHint:`ロールごとに 1 つのエージェントループ。CLI プロバイダーと同じ。強力なモデルが必要。`,contextWindow:`コンテキストウィンドウ(トークン)`,contextWindowHint:`サーバーのコンテキストサイズ(n_ctx / num_ctx)に合わせてください。ウィンドウが埋まる前に古いツール結果を圧縮するために使います。既定 32768。`,maxOutput:`ターンあたりの出力予算(トークン)`,maxOutputHint:`ツールターン1回の max_tokens。途中で切れたターンは2倍で1回だけ再試行します。コンテキストウィンドウ内で数えられるため、常に残り容量で上限が決まります。モデルが内部で思考する場合(thinking はこの予算を消費します)は増やしてください。既定値 8192。`,reasoningEffortRailHint:`オフの場合、このエンジンではレールのヘッダーに推論の強さセレクターが表示されません。`,presetTitle:`クイック設定`,presetSmallModel:`小型モデル向け推奨`,presetSmallModelApplied:`小型モデル用プリセットを適用済み`,presetSmallModelHint:`コンパクトループを有効にし、推論の強さを転送し、32k のコンテキストウィンドウを設定します。7–14B モデルで検証済みの組み合わせです。各項目は後から変更できます。`,cliGroup:`CLI ツール`,cliGroupHint:`このマシンで検出済み。各自のログインを使うため設定は不要です。`,localGroup:`ローカルエンジン`,localGroupHint:`このアプリから到達できる OpenAI 互換エンドポイント(llama.cpp、Ollama、vLLM、LM Studio など)。`,models_one:`{{count}} モデル`,models_other:`{{count}} モデル`,expand:`設定を表示`,collapse:`設定を隠す`,overflow:`その他の操作`,addLocalHero:`ローカルエンジンを追加`,emptyLocalPitch:`ローカルエンジンはまだありません。OpenAI 互換エンドポイントを指定すると、自分のハードウェアでパイプラインを実行できます。コストは自分で管理でき、データはネットワークの外に出ません。`,defaultsGroup:`プロバイダーの既定値`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`設計担当`,developer:`開発担当`,reviewer:`レビュー担当`,fixer:`フィクサー`,verify:`検証`,archive:`完了`},m={title:`役割の割り当て`,hint:`各ロールで異なるプロバイダーとモデルを使用できます。接続は一般設定 → AI プロバイダーで管理します。既定の上限はエージェントごとに{{turns}}ターンです。`,provider:`プロバイダー`,model:`モデル`,modelPlaceholder:`モデル ID または CLI の既定値`,maxTurns:`最大ターン数(既定 {{turns}})`,defaultModel:`既定({{model}})`,thinking:`非表示の思考`,thinking_off:`オフ`,thinking_on:`オン`,thinkingHint:`既定はオフ:ホスト駆動のループでは、隠れた推論が出力予算とターンごとの時間を消費します。熟考が有効なロールでのみオンにしてください(chat_template_kwargs.enable_thinking として送信され、未対応のエンドポイントでは無視されます)。`},h={title:`ワークフローの制限`,hint:`空欄は Core の既定値を使います:修正試行 {{attempts}} 回、ロールステップごとに {{minutes}} 分。ローカルエンジンではタイムアウトは作業単位ごと(タスクグループ、成果物、レビュー)に適用され、既定 45 分に加えて 20 分のアイドル監視があります。時間切れのステップは実行をブロックし、次の未完了タスクグループから再開できます。トークン/USD の上限は任意で、USD 上限はすべての AI ロールに Claude が必要です。`,maxAttempts:`デベロッパーの最大試行回数(既定 {{attempts}})`,timeoutMinutes:`タイムアウト(分。既定 {{minutes}}、ローカルエンジンはタスクグループごとに 45)`,maxTokens:`最大トークン数`,maxCostUsd:`最大コスト(USD)`,unlimited:`制限なし`},g={title:`検証コマンド`,hint:`任意。デベロッパー完了後に実行され、失敗はデベロッパーに戻されます。空のままなら、毎回アーキテクトがプロジェクト自身のチェックを提案します。自動チェックのないリポジトリもレビューされます。`,detect:`プロジェクトのチェックを検出`,detecting:`検出中…`,detected:`このプロジェクトが定義済みのチェックで埋めました。`,nothingDetected:`テスト・型チェック・ビルドのコマンドは見つかりませんでした。問題ありません。可能な場合はアーキテクトが実行時にチェックを提案します。`,detectFailed:`プロジェクトのリポジトリを調べられませんでした。`,repository:`リポジトリ`,command:`コマンド`,reason:`{{reason}} から検出`,remove:`削除`,add:`コマンドを追加`,invalidLine:`検証コマンドが空か、引用符が閉じていません: {{line}}`,label:`チェック名(任意)`,moveUp:`上へ`,moveDown:`下へ`},_={title:`セットアップコマンド`,hint:"Core が各検証の前にリポジトリのチェックアウト内で実行する冪等なコマンドです(例: `npx playwright install chromium`)。",add:`セットアップコマンドを追加`,invalidLine:`セットアップコマンドが空か、引用符が閉じていません: {{line}}`,repository:`リポジトリ`,command:`セットアップコマンド`,label:`セットアップのラベル(任意)`,remove:`削除`,moveUp:`セットアップコマンドを上へ`,moveDown:`セットアップコマンドを下へ`,empty:`セットアップコマンドはありません。検証はチェックアウト内で直接実行されます。`},v={title:`保存された実行`,refresh:`更新`,hint:`元のワークツリーで保存された範囲と設定を使って続行し、進行状況はそのジョブのログに表示されます。公開や Desktop の配信再開は行いません。実行中のレールはジョブの操作から停止してください。`,empty:`保存された実行はありません。`,loadFailed:`保存された実行を読み込めませんでした。`,actionFailed:`この実行を更新できませんでした。`,phase:`次のフェーズ: {{phase}}`,approve:`完了を承認`,recover:`中断したフェーズを復旧`,resume:`再開`,cancel:`続行をキャンセル`,status:{running:`続行中…`,succeeded:`成功`,failed:`失敗`,blocked:`ブロック中`,paused:`一時停止`,cancelled:`キャンセル済み`,interrupted:`中断`,unavailable:`利用不可`,expired:`期限切れ`},question:`アーキテクトからの質問:`,answerLabel:`あなたの回答`,answerPlaceholder:`質問に回答すると、アーキテクトはそれをもとに続行します。`,answer:`回答して再開`,viewLog:`ジョブログを表示`,implementation:`実装`,preserveProgress:`表示されたフェーズから、既存の作業と保存済み設定を保持して続行します。`,reviewDelivery:`実装が完了しました。引き渡しの前にジョブログで結果を確認してください。この続行では公開していません。`,prepareDelivery:`引き渡しを準備`,dismiss:`閉じる`,selectRecovery:`復旧する中断された試行を選択`},y={architect:`コードを読み、提案・設計・タスク・仕様を書きます。読み取り専用。`,developer:`タスクをテスト付きで実装します。CLI のサンドボックス内でファイル編集とコマンド実行ができます。`,reviewer:`仕様と検証結果に照らして成果を確認します。読み取り専用。`},b={title:`レビュー基準`,hint:`空欄は Core の基準を使います。値は基準を厳しくする方向にのみ設定できます: 総合スコア {{score}} 以上、セキュリティ {{security}} 以上、その他の観点 {{aspect}} 以上。`,minScore:`最低総合スコア(既定 {{score}})`,aspects:{type_correctness:`型の正確さ(既定 {{score}})`,pattern_adherence:`パターン準拠(既定 {{score}})`,test_coverage:`テストカバレッジ(既定 {{score}})`,security:`セキュリティ(既定 {{score}})`,architectural_alignment:`アーキテクチャ整合性(既定 {{score}})`}},x={title:`アーキテクトの確信度`,hint:`自律的な調査を1回行っても確信度が低い設計は、アーキテクトの質問で一時停止するか、明示した前提のもとで続行します。`,onLowConfidence:`確信度が低いとき`,ask:`質問する(質問で一時停止)`,proceed:`明示した前提で続行`},S={title:`使用量と時間`,hint:`修正と失敗した呼び出しを含みます。エージェント時間にはツールの実行時間を含みます。キャッシュトークンは入力トークンの一部です。`,unknown:`取得不可`,duration:`実行時間`,agentTime:`エージェント時間`,cost:`報告された費用`,providerCalls:`エージェント呼び出し`,toolCalls:`ツール呼び出し`,input:`入力トークン`,output:`出力トークン`,uncached:`キャッシュなしの入力`,cacheRead:`キャッシュ読み取り`,cacheWrite:`キャッシュ書き込み`,partial:`一部の試行には詳細な計測値がありません。`,phases:`フェーズ別使用量`,phase:`フェーズ`,attempts:`試行回数`},C={title:`エージェントのロール別プロンプト`,description:`各ロールの指示を表示・編集します。すべてのプロジェクトとプロバイダーで共有され、変更は新しいジョブに適用されます。再開したジョブは元のプロンプトを使用します。`,definition:`{{role}}の定義`,default:`初期設定`,custom:`カスタマイズ済み`,restore:`初期設定に戻す`,contracts:`Spec のコンテキスト、OpenSpec ワークフロー、必須の応答形式は自動的に追加されるため、ここでは編集できません。`,invalid:`各定義は 1~20,000 文字で、空白以外のテキストを含み、ヌルバイトを含まない必要があります。`,saved:`ロール別プロンプトを保存しました`,unsaved:`未保存の変更`,discard:`変更を破棄`,save:`プロンプトを保存`,fixerHint:`修正ラウンドでのみ使用されます(検証失敗またはレビュー却下の後)。設定 ▸ エージェントエンジン ▸ フィクサーで独自エンジンを指定しない限り、開発者のエンジンで実行されます。開発者セッションを再開する CLI プロバイダーには短い修正フォローアップが送られます。新しいセッションが始まるとき(ローカルエンジン、フィクサーエンジン、セッション喪失時)にこの定義が適用されます。`},w={title:`実装の効率`,scope:`新しい実行に適用されます。保存済みの実行は元の設定とランタイムを維持します。`,effort:`推論の強度`,providerDefault:`プロバイダーの既定値`,unconfirmed:`未確認`,unknownSupport:`このモデルと通信方式の対応状況は未確認です。`,escalation:`同じプロバイダーの上位モデルを1段階許可`,baseRequired:`まず基本モデルを明示的に選択してください。`,escalationModel:`上位モデル`,triggers:{architect:`既存の追加調査のみがこの段階を選択できます。`,developer:`候補が2回失敗した後、次の許可された試行で選択できます。`,reviewer:`不正な形式の応答の修復のみ。コードの却下では昇格しません。`,fixer:`この段階に到達できるのは修正ラウンドのみで、初回の実装ではフィクサーは実行されません。`},contextMode:`リポジトリのコンテキスト`,reviewMode:`修正のレビュー`,planning:`計画の深さ`,adaptive:`適応型`,full:`完全`,developerChecks:`開発者が提案する追加チェックを許可`,concurrency:`同時チェック数の上限`,concurrencyHint:`既定値は1。ホストが独立と宣言した異なるリポジトリのチェックのみ並行実行できます。既定では再利用しません。`,checkCapabilities:`モデルの互換性を確認`,capabilitiesFailed:`互換性を確認できません。対応するCoreを更新するか、既定値を維持してください。`},T={title:`検証の証拠`,acceptance:`技術的な受け入れ`,acceptanceStatus:{pending:`保留中`,validated:`検証済み`,"with-exceptions":`例外あり`,blocked:`ブロック済み`},calls:`エージェント呼び出し`,executed:`実行したチェック`,reused:`再利用したチェック`,unknown:`利用不可`,unavailable:`証拠は利用できません。記録された結果は現在の有効性を保証しません。`,current:`現在の候補と計画`,historical:`過去の結果`,moreChecks:`その他のチェック`,output:`検証出力`,empty:`出力なし`,truncated:`制限されたページまたは切り詰められた記録です。`,nextPage:`次の出力ページ`,status:{passed:`成功`,failed:`失敗`,cancelled:`キャンセル`,interrupted:`中断`},disposition:{executed:`実行済み`,reused:`再利用`,"not-run":`未実行`},origin:`出所`,origins:{host:`ホスト`,architect:`アーキテクト`,developer:`開発者`,"frozen-runtime-config":`保存済み設定`,"project-role":`プロジェクトの役割`,default:`既定`,"explicit-launch-override":`この実行で選択したプロバイダー`,"loop-role":`ループのロール`},reuseDisabled:`このチェックの再利用は無効です。`,reuseConfirmed:`入力とツールの一致を確認して再利用しました。`,inputsChanged:`検証中に入力が変化したため、結果は無効です。`,reuseUnproven:`入力の一致を証明できる有効な結果がないため、再実行しました。`,original:`元の実行`,requested:`要求値`,reported:`報告値`},E={title:`ループロール`,hint:`レールを「ロール別」エンジンで起動したときにループ側のロールが使うエンジンです。上のパイプラインロール(architect・developer・reviewer)はすでにこのランタイム設定から決まります。`,verifier:`検証者`,verifierHint:`ループ内のコア以外のすべての AI ステップ:verify、fix、カスタム AI ステップ。`,decider:`決定者`,deciderHint:`判定を読んで次のステップを決める Loop Decider です。安価で高速なモデルが自然な選択です。`,inherit:`プライマリを継承`,model:`モデル`,effort:`推論の深さ`,disabled:`エージェントランタイムが無効です。有効にするまで「ロール別」エンジンでのレール起動は拒否されます。`,saveFailed:`ループロールを保存できませんでした。`},D={title:`実装パイプライン`,explainer:`各実装ではこれらのフェーズがこの順序で実行されます。レールのエンジンが「{{roles}}」の場合、各フェーズは下で設定したエンジンで実行されます。フェーズごとに異なるプロバイダー、モデル、推論強度を指定できます。レールで特定のエンジンを選ぶと、すべてのフェーズがそのエンジンで実行されます。`,host:`ホスト`,noCommand:`コマンドなし`,inherits:`プライマリを継承`,inheritsDeveloper:`開発者を継承`,open:`開く`,collapse:`折りたたむ`,groups:{core:{title:`コアパイプライン`,hint:`すべての実装内で実行:計画、構築、検証、修正、レビュー。`},loop:{title:`ループステップ`,hint:`実行を包むレールのループ(検証 → 判定 → 修正)とカスタムループの AI ステップ。未設定の場合はプライマリエンジンを継承します。`,chip:`レールループ`}},phases:{architect:{name:`アーキテクト`,purpose:`コードを読み、提案・設計・タスクを書きます。`},developer:{name:`デベロッパー`,purpose:`テスト付きでタスクを実装します。`},verification:{name:`検証`,purpose:`ホストがチェックを実行し、失敗はデベロッパーに戻ります。`},fixer:{name:`フィクサー`,purpose:`検証やレビューで却下された内容を修正します。未設定の場合は開発者を継承します。`},reviewer:{name:`レビュアー`,purpose:`仕様と証拠に照らして結果を確認します。`},verifier:{name:`ベリファイア`,purpose:`ループの verify・fix・カスタム AI ステップ。`},decider:{name:`ディサイダー`,purpose:`判定を読み、ループの次のステップを決めます。`}}},O={title:`フィクサーのエンジン`,inherit:`開発者を継承`,own:`専用エンジン`,hint:`修正ラウンドでのみ実行されます(検証失敗またはレビュー却下の後)。初回の実装は開発者が担当します。開発者が安価なローカルモデルの場合、ここに強力なモデルやクラウドモデルを設定すると効果的です。`},k={title:`ガードレール`,intro:`小さなモデルが脱線しないよう、ホストがローカルモデルの周囲に適用するプロセスルールです。既定ではすべて有効。プロセスを調整する場合にのみ個別に無効化してください。CLI プロバイダーには影響しません。`,unsupported:`この Core には設定可能なガードレールがありません。調整するには Core を更新してください。組み込みルールは引き続き適用されます。`,active:`{{total}} 件中 {{on}} 件が有効`,reset:`既定に戻す`,phases:{architect:`アーキテクト`,developer:`開発者`,host:`ホスト`},unknown:`新しい Core で追加されたガードレールです。このアプリにはまだ説明がありません。`,items:{"plan-validation":{title:`検証済みのタスク計画`,description:`openspec/ を対象にする、ファイル名だけをタスクとして列挙する、仕様に対してタスク/グループが少なすぎる、受け入れ基準が未カバーな計画を拒否し、アーキテクトが再試行します。`,why:`曖昧または不完全な計画は、小さな開発者モデルがスタブを書く最大の原因です。`},"genuine-blocking-question":{title:`本当にブロックする質問のみ`,description:`アーキテクトは「?」で終わる実際の質問でのみ実行を一時停止でき、コピーした例文では停止できません。`,why:`小さなモデルはプロンプトのプレースホルダーをそのまま返し、すべての実行をブロックしてしまいます。`},"plan-language-hint":{title:`リポジトリの言語で計画する`,description:`アーキテクトに主要言語を伝え、タスクのファイル名が正しい拡張子を持つようにします。`,why:`TypeScript リポジトリに JS の計画を立てるとタスクを完了扱いにできません。`},"frozen-plan-writes":{title:`計画成果物は凍結`,description:`開発者は openspec/ 配下に書き込めません。計画はホストのものです。`,why:`モデルはコードではなく計画を編集して「実装」しがちです。`},"primary-language":{title:`主要言語のリマインダー`,description:`各タスクグループにリポジトリの主要言語を伝えます。新規ファイルはその言語を使うべきです。`,why:`別の言語による二重実装を防ぎます。`},"duplicate-sibling":{title:`言語をまたぐ双子モジュールを禁止`,description:`board.ts が既にある場合 board.js を拒否し、既存モジュールを拡張させます。`,why:`双子は両方コンパイルされ、テストが誤った方を import します。`},"one-test-per-module":{title:`モジュールごとにテストファイルは 1 つ`,description:`board.test.ts がある場合 board.tick.test.ts を拒否し、既存を拡張させます。`,why:`そうしないと修正のたびに新しいスイートが増えます。`},"empty-write":{title:`空の上書きを禁止`,description:`内容のあるファイルへの空の書き込みを拒否します。全内容を書くかパッチを当ててください。`,why:`「クリーンアップ」で index.ts が 0 行になったことがあります。`},"evidence-gated-ticking":{title:`証拠があってからタスクを完了にする`,description:`ファイルを指すタスクは、そのファイルが存在しスタブでない場合のみ完了です(類似拡張子は許容)。`,why:`これがないと「完了」は主張にすぎず、検証は何も対象にできません。`},"inventory-retry":{title:`実際のインベントリで再試行`,description:`モデルがリポジトリが空だと主張して諦めたが実際は空でない場合、ファイル一覧付きで一度再試行します。`,why:`失敗したステップの代わりに安価な二度目のチャンスを与えます。`},"synthetic-corrections":{title:`フィードバックをタスクに変換`,description:`すべてのタスクが完了なのにレビュー/検証が失敗した場合、フィードバックを具体的な修正タスクにします。`,why:`そうしないと開発者は「完了済み」と報告し、何も変わりません。`},"silent-group-closure":{title:`沈黙したグループを閉じ、ファイルは保持`,description:`モデルが応答しなくなったグループは、書き込んだファイルを計上しタスクは未完了のまま閉じ、実行を失敗させません。`,why:`9B モデルが 5 モジュールを書いた後に沈黙し、実行全体が失敗したことがあります。`},"environment-repair":{title:`ホストが環境を修復`,description:`不足する依存関係やテストツール(npm install、ts-jest、@types/jest、Jest 設定モジュール)をホストがインストールし、検証を一度再実行します。`,why:`モデルは環境を直せず、試行に修正回数を浪費します。`},"lockfile-repair":{title:`手書きのロックファイルを破棄`,description:`モデルが捏造した package-lock.json(EINTEGRITY/ETARGET)を削除し、インストールを一度再試行します。`,why:`捏造されたハッシュは決してインストールできません。`},"verify-idle-timeout":{title:`ハングしたテストを停止`,description:`5 分間出力のない検証コマンドを停止し、ハングの疑いとして報告します(最後の出力を含む)。`,why:`そうしないとテスト内の while ループが 15 分の上限まで実行を占有します。`},"verify-per-group":{title:`グループごとに検証`,description:`各タスクグループの直後にリポジトリのテストコマンドを実行し、失敗した場合はグループの文脈が新しいうちにその場で1回修正します。`,why:`最後に5つの壊れたスイートを直すより、1つずつ直す方がはるかに簡単です。`},"test-reachability":{title:`新しいテストは必ず実行されること`,description:"開発者が書いたのにリポジトリのテストコマンドが一度も実行しないテストファイル(ファイルを列挙する `test` スクリプトが新ファイルを漏らした場合)は、該当ファイル名を示して検証を失敗させます。まずグループ単位で、次にホスト検証で再確認します。",why:`6件の失敗を含む622行のスイートが、一度も実行されなかったためにグリーンのまま出荷されたことがあります。`},"exit-code-honesty":{title:`失敗を報告する終了コード 0 を信用しない`,description:'検証コマンドが 0 で終了しても出力に失敗(`FAIL:` 行、"3 failed"、AssertionError)が含まれる場合は失敗として扱い、テストハーネス自体を欠陥として指摘してフィクサーに渡します。',why:`非ゼロの終了コードを設定しない自作テストランナーが、3 件の失敗テストを成功として出荷したことがあります。`},"verification-output-adoption":{title:`チェック自身が書いた出力を採用する`,description:`検証は成功したがそのコマンドが追跡対象ファイルを書き換えた場合(マッピングを再生成する lint ステップなど)、ホストはそれらのファイルを候補に残してもう一度検証します。reviewer と fixer はそれらを元に戻してはいけません。`,why:`追跡対象ファイルを再生成する lint の事前ステップにより、成功した実行がすべて候補の変更に見え、欠陥ではないものに修正回数を消費していました。`}}},A=`未保存の変更`,j={title:`カスタムロール`,hint:`ワークフローのロールに再利用可能な指示と明示的な権限を設定します。`,unsupported:`カスタムロールを編集するには Core を更新してください。`,remove:`{{id}} を削除`,access:`ソースコードへのアクセス`,read:`読み取りのみ`,write:`読み取りと書き込み`,artifacts:`OpenSpec 成果物へのアクセス`,none:`なし`,tasks:`タスクのチェックボックスのみ`,all:`変更のすべての成果物`,skill:`OpenSpec スキル`,noSkill:`スキルの関連付けなし`,prompt:`ロールへの指示`,id:`ロール ID`,add:`ロールを追加`,invalidId:`英字で始まる一意の小文字 ID を入力してください。英小文字・数字・ハイフンを64文字まで使用できます。組み込み ID は予約済みです。`,escalationHint:`許可されたプロトコル修正でのみ上位モデルを使用できます。再試行回数は増えません。`},M={title:`実行への指示`,hint:`Core は、対応する次のエージェントのターンのために指示を保存します。送信しても質問への回答や承認にはなりません。`,label:`追加の指示`,send:`指示を送信`,accepted:`Core が受信しました。エージェントでの使用を待っています。`,pending:`エージェントのターン待ち`,consumed:`エージェントが使用済み`,counts:`待機中: {{pending}} · 使用済み: {{consumed}}`,failed:`指示を送信できませんでした。同じメッセージを確認するには再試行してください。`,unavailable:`受信記録の詳細を取得できません。`,unreported:`このバージョンの Core は使用状況を報告しません。`,truncated:`最近の受信記録と待機中のメッセージのみ表示しています。`},N={title:`Core ロールの既定値`,hint:`このファイルの既定値は新しいワークフローに適用されます。プロジェクトの明示的な設定が優先され、保存済みの実行は固定された設定を保持します。`,invalid:`ロールの項目を変更する前に、エディターで YAML ヘッダーを修正してください。`,escalationEffort:`上位モデルの推論レベル`},P={title:`履歴の保持`,description:`期限切れの実行履歴と未使用の Core バージョンを削除します。削除した履歴は再開や分岐ができません。実行中・復旧可能な実行や未完了の配信は保護され、ジョブログと費用記録は保持されます。`,forever:`履歴を無期限に保持`,days:`保持日数`,save:`保持設定を保存`,preview:`削除対象を確認`,collect:`期限切れの履歴を削除`,previewSummary:`対象:履歴 {{runs}} 件、未使用の Core バージョン {{packages}} 件。`,collectedSummary:`期限切れ:履歴 {{runs}} 件。削除済み:未使用の Core バージョン {{packages}} 件。`,more:`ほか {{count}} 件の実行。`,failed:`保持設定を確認または更新できませんでした。`,expired:`この実行履歴はプロジェクトの保持方針により期限切れになりました。ジョブログと費用記録は引き続き利用できます。`,loading:`保持方針を読み込み中…`,states:{protected:`保持`,eligible:`対象`,expired:`期限切れ`,cleanup_pending:`削除待ち`,busy:`使用中`,error:`確認失敗`},reasons:{disabled:`無期限保持`,recoverable:`復旧可能`,active:`実行中`,human_pending:`人による回答待ち`,interrupted_writes:`中断した書き込みの確認が必要`,delivery_pending:`配信待ち`,fork_pending:`依存する分岐が残っています`,unknown_terminal_time:`完了日時が不明`,within_retention:`保持期間内`}},F={title:`ループエージェント`,hint:`これらの定義は、このループを使うすべてのプロジェクトで共有されます。別のワークフローとしてカスタマイズするには、ループを複製してください。`,legacy:`この保存済みループは、まだ以前のプロジェクトエージェントを使用しています。設定を変更する前に、それらをインポートするか、ループエージェントを有効にしてください。`,enable:`ループエージェントを使用`,import:`現在のプロジェクトのエージェントをインポート`,restoreDefinition:`Core の定義を使用`,default:`プロバイダーの既定値`,effort:`推論エフォート`,escalationModel:`エスカレーション用モデル`,escalationEffort:`エスカレーション時のエフォート`,policy:`ワークフローポリシー`,maxAttempts:`修正の最大試行回数`,maxTokens:`トークン予算`,maxCostUsd:`コスト予算 (USD)`,timeoutMs:`実行タイムアウト (ms)`,projectHint:`ここではリポジトリのチェックを設定します。エージェントの定義、モデル、ワークフローポリシーはループエディターで設定します。以前のプロジェクトエージェントは、複製したループにインポートできます。`,showUnused:`このループで使われていないエージェントも表示`,stepTitle:`ステップのエージェントとオプション`,stepHint:`このステップのエージェント定義とエンジンを編集します。このループ内で同じロールを使うステップは、これらの設定を共有します。`,inheritProvider:`ミッションのプロバイダーを継承`,inheritDefinition:`Core の定義に従います。Core をアップグレードすると自動的に更新されます。`,customizeDefinition:`このループ用にカスタマイズ`,coreDefinitionUnavailable:`Core ランタイムをインストールするまでプレビューは利用できません。`,turnLimits:{title:`ターン数の上限`,hint:`エージェントのツール呼び出し1回が1ターンとして数えられます。ステップが "reached the configured limit of N turns" で停止した場合は、ここで上限を上げて保存・公開してください。新しい起動から適用されます。空欄の場合は Core の既定値({{turns}})を使います。プロジェクト設定はループの実行に影響しません。`,role:`ロール {{role}}`,input:`{{steps}} の最大ターン数(ロール {{role}})`,stepHint:`ロール {{role}} は {{turns}} ターンで停止します。このロールを使うステップは上限を共有し、公開後の新しい起動から適用されます。`}},I={label:`レビュアーのモデルファミリーの提案`,title:`レビュアーを {{provider}} で実行しましょう — 異なるモデルファミリーは異なるミスを見つけます`,body:`現在、開発者とレビュアーは同じプロバイダーで動作しています。これは提案にすぎず、適用しない限り何も変わりません。`,apply:`適用`,dismiss:`閉じる`},L={title:`スペック トリアージのエンジン`,hint:`トリアージは新規または編集されたスペックを読み、起動に使うループを提案します。スペックごとに短い構造化呼び出しを 1 回行います。既定では、プロジェクトのプライマリ プロバイダーの最も安価なモデルで実行します。`,provider:`トリアージのプロバイダー`,inherit:`プライマリ プロバイダー`,model:`モデル`,cheapestModel:`最も安価なモデル (既定)`,loading:`トリアージのエンジンを読み込み中…`,loadFailed:`トリアージのエンジンを読み込めませんでした。トリアージは引き続きプライマリ プロバイダーを使います。再試行するにはこの設定を開き直してください。`,saveFailed:`トリアージのエンジンを保存できませんでした。以前の選択が維持されます。`},R={title:e,description:t,loading:n,loadFailed:r,retry:i,unavailable:a,save:o,saving:s,saved:c,saveFailed:l,approvalBeforeArchive:u,providers:d,cliNames:f,roles:p,agents:m,limits:h,verification:g,setup:_,runs:v,roleHints:y,review:b,architect:x,metrics:S,prompts:C,efficiency:w,evidence:T,loopRoles:E,pipeline:D,fixer:O,guardrails:k,unsavedChanges:A,customRoles:j,steering:M,studioRole:N,retention:P,loopAgents:F,reviewerSuggestion:I,triageEngine:L};export{m as agents,u as approvalBeforeArchive,x as architect,f as cliNames,j as customRoles,R as default,t as description,w as efficiency,T as evidence,O as fixer,k as guardrails,h as limits,r as loadFailed,n as loading,F as loopAgents,E as loopRoles,S as metrics,D as pipeline,C as prompts,d as providers,P as retention,i as retry,b as review,I as reviewerSuggestion,y as roleHints,p as roles,v as runs,o as save,l as saveFailed,c as saved,s as saving,_ as setup,M as steering,N as studioRole,e as title,L as triageEngine,a as unavailable,A as unsavedChanges,g as verification};
@@ -1 +1 @@
1
- var e=`Moteur d’agents`,t=`Architecte, développeur et relecteur s’exécutent en phases séparées avec une vérification déterministe entre elles. Choisissez un fournisseur par rôle ; tout le reste a une valeur par défaut qui fonctionne.`,n=`Chargement des paramètres…`,r=`Impossible de charger les paramètres. Réessayez avant de les modifier.`,i=`Réessayer`,a=`Cette installation de Core ne contient pas le moteur d’agents. Mettez Core à jour avant de l’activer ; vous pouvez préparer les paramètres en attendant.`,o=`Enregistrer les paramètres`,s=`Enregistrement…`,c=`Paramètres enregistrés`,l=`Impossible d’enregistrer les paramètres.`,u=`Demander une approbation avant de terminer le workflow`,d={title:`Fournisseurs`,hint:`Les CLI utilisent leur connexion existante. Pour les API, indiquez uniquement un nom de variable d’environnement, jamais une clé. Il peut rester vide en local. Réaffectez les rôles avant de supprimer leur fournisseur.`,entry:`Fournisseur {{index}}`,id:`ID du fournisseur`,kind:`Type de connexion`,cli:`CLI de programmation installé`,compatible:`API compatible OpenAI`,command:`CLI de programmation`,baseUrl:`URL de base de l’API`,apiKeyEnv:`Variable d’environnement de la clé (facultative)`,remove:`Supprimer le fournisseur`,addCli:`Ajouter un fournisseur CLI`,addLocal:`Ajouter un fournisseur local / API`,show:`Afficher les connexions aux fournisseurs`,hide:`Masquer les connexions aux fournisseurs`,globalTitle:`Fournisseurs d'IA`,globalHint:`Deux types de fournisseurs alimentent chaque projet : les CLI de programmation détectées sur cette machine et les moteurs locaux compatibles OpenAI que vous enregistrez ici. Attribuez-les aux phases du pipeline dans Paramètres du projet ▸ Moteur des agents. Les changements s’appliquent aux nouvelles exécutions.`,label:`Nom affiché (facultatif)`,labelPlaceholder:`ex. Machine LAN`,defaultModel:`Modèle par défaut`,defaultModelNone:`Aucun défaut (premier découvert)`,defaultModelPlaceholder:`ID du modèle ou alias personnalisé`,customModel:`Alias personnalisé…`,discoveredModels:`Modèles découverts`,noModels:`Aucun modèle découvert pour l'instant : testez la connexion.`,rates:`Tarifs (USD par 1M de jetons, facultatif)`,ratesHint:`Les coûts sont affichés comme des estimations ; laissez les deux vides et le coût reste inconnu.`,inputRate:`Entrée par 1M`,outputRate:`Sortie par 1M`,ratesInvalid:`Saisissez les deux tarifs comme nombres non négatifs, ou laissez les deux vides.`,reasoningEffort:`Le service accepte l'effort de raisonnement`,reasoningEffortHint:`Envoie le champ reasoning_effort d'OpenAI : l'effort configuré du rôle à chaque appel, porté à élevé pendant que l'architecte compact rédige le plan. Laissez désactivé sauf si le serveur le prend en charge.`,apiKeyEnvMissing:`{{name}} n'est pas définie dans le processus de l'app. Définissez-la dans l'environnement qui lance l'app.`,test:`Tester la connexion`,testing:`Test en cours…`,testFailed:`Impossible de tester la connexion.`,rename:`Renommer`,renameHint:`Le renommage conserve les affectations de rôles vers cette connexion.`,idLocked:`L'id est verrouillé après l'enregistrement. Utilisez Renommer pour le modifier.`,localBadge:`Moteur local`,cliBadge:`CLI`,notDetected:`Non détecté sur cette machine`,unsaved:`Modifications non enregistrées`,empty:`Aucune connexion pour l'instant. Ajoutez un fournisseur local / API pour commencer.`,fixBeforeSave:`Corrigez les champs signalés avant d'enregistrer.`,status:{probing:`Vérification…`,reachable:`Joignable`,unauthorized:`Non autorisé`,unreachable:`Injoignable`,untested:`Jamais testé`},auth:{authenticated:`Connecté`,unauthenticated:`Non connecté`,unknown:`Connexion inconnue`},agentLoop:`Boucle de l'agent`,agentLoopHint:`comment le pipeline implement pilote ce modèle`,agentLoop_compact:`Compacte`,agentLoop_compactHint:`Micro-étapes pilotées par l'application avec sortie structurée. Recommandé pour les modèles de moins de ~30B.`,agentLoop_free:`Libre`,agentLoop_freeHint:`Une boucle agentique par rôle, comme un fournisseur CLI. Nécessite un modèle puissant.`,contextWindow:`Fenêtre de contexte (tokens)`,contextWindowHint:`Alignez sur la taille de contexte du serveur (n_ctx / num_ctx). Sert à compacter les anciens résultats d'outils avant de remplir la fenêtre. Par défaut 32768.`,maxOutput:`Budget de sortie par tour (tokens)`,maxOutputHint:`max_tokens d'un tour d'outils ; un tour coupé est retenté une fois au double. Compte dans la fenêtre de contexte, donc toujours plafonné à l'espace restant — augmentez-le si le modèle raisonne en privé (le thinking le consomme). Par défaut 8192.`,reasoningEffortRailHint:`Désactivé : le sélecteur d'effort de raisonnement n'apparaît pas dans l'en-tête du rail pour ce moteur.`,presetTitle:`Configuration rapide`,presetSmallModel:`Recommandé pour les petits modèles`,presetSmallModelApplied:`Préréglage petits modèles appliqué`,presetSmallModelHint:`Active la boucle Compacte, transmet l'effort de raisonnement et fixe une fenêtre de contexte de 32k : la combinaison validée avec des modèles de 7–14B. Chaque champ reste modifiable.`,cliGroup:`Outils CLI`,cliGroupHint:`Détectés sur cette machine : ils utilisent leur propre connexion, rien à configurer.`,localGroup:`Moteurs locaux`,localGroupHint:`Points de terminaison compatibles OpenAI (llama.cpp, Ollama, vLLM, LM Studio…) accessibles depuis cette application.`,models_one:`{{count}} modèle`,models_other:`{{count}} modèles`,expand:`Afficher les paramètres`,collapse:`Masquer les paramètres`,overflow:`Plus d'actions`,addLocalHero:`Ajouter un moteur local`,emptyLocalPitch:`Aucun moteur local pour l'instant. Pointez l'application vers un point de terminaison compatible OpenAI pour exécuter le pipeline sur votre propre matériel : le coût reste sous votre contrôle et rien ne quitte votre réseau.`,defaultsGroup:`Valeurs par défaut du fournisseur`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`Architecte`,developer:`Développeur`,reviewer:`Réviseur`,fixer:`Correcteur`,verify:`Vérification`,archive:`Finalisation`},m={title:`Attribution des rôles`,hint:`Chaque rôle peut utiliser un fournisseur et un modèle différents. Connexions : Paramètres généraux → Fournisseurs d'IA. Limite par défaut : {{turns}} tours par agent.`,provider:`Fournisseur`,model:`Modèle`,modelPlaceholder:`ID du modèle ou modèle par défaut du CLI`,maxTurns:`Nombre maximal de tours (par défaut {{turns}})`,defaultModel:`Par défaut ({{model}})`,thinking:`Raisonnement privé`,thinking_off:`Désactivé`,thinking_on:`Activé`,thinkingHint:`Désactivé par défaut : le raisonnement caché consomme le budget de sortie et des minutes par tour dans une boucle pilotée par l'hôte. Activez-le pour un rôle qui profite de la délibération (envoyé comme chat_template_kwargs.enable_thinking ; ignoré par les endpoints qui ne le connaissent pas).`},h={title:`Limites du workflow`,hint:`Les champs vides utilisent les valeurs de Core : {{attempts}} tentatives de correction et {{minutes}} minutes par étape de rôle. Sur les moteurs locaux, le délai s'applique à chaque unité de travail (un groupe de tâches, un artefact, une revue) — 45 minutes par défaut — plus une surveillance d'inactivité de 20 minutes ; une étape qui dépasse son temps bloque l'exécution et peut reprendre au prochain groupe ouvert. Les plafonds de tokens et USD sont facultatifs ; ceux en USD exigent Claude pour tous les rôles.`,maxAttempts:`Tentatives maximales du développeur (par défaut {{attempts}})`,timeoutMinutes:`Délai en minutes (par défaut {{minutes}} ; moteurs locaux 45 par groupe de tâches)`,maxTokens:`Jetons maximum`,maxCostUsd:`Coût maximum (USD)`,unlimited:`Sans limite`},g={title:`Commandes de vérification`,hint:`Facultatif. Elles s’exécutent quand le développeur a terminé et leurs échecs lui reviennent. Liste vide : l’architecte propose les vérifications propres au projet à chaque exécution ; les dépôts sans vérification automatique sont quand même relus.`,detect:`Détecter les vérifications du projet`,detecting:`Détection…`,detected:`Rempli avec les vérifications que ce projet définit déjà.`,nothingDetected:`Aucune commande de test, de vérification de types ou de build trouvée. Ce n’est pas grave : l’architecte propose des vérifications à chaque exécution quand c’est possible.`,detectFailed:`Impossible d’inspecter les dépôts du projet.`,repository:`Dépôt`,command:`Commande`,reason:`Détecté depuis {{reason}}`,remove:`Retirer`,add:`Ajouter une commande`,invalidLine:`Commande de vérification vide ou guillemet non fermé : {{line}}`,label:`Libellé du contrôle (facultatif)`,moveUp:`Monter`,moveDown:`Descendre`},_={title:`Commandes de préparation`,hint:"Commandes idempotentes que Core exécute avant chaque vérification, dans le checkout du dépôt (par exemple `npx playwright install chromium`).",add:`Ajouter une commande de préparation`,invalidLine:`La commande de préparation est vide ou contient un guillemet non fermé : {{line}}`,repository:`Dépôt`,command:`Commande de préparation`,label:`Libellé de préparation (facultatif)`,remove:`Retirer`,moveUp:`Monter la commande de préparation`,moveDown:`Descendre la commande de préparation`,empty:`Aucune commande de préparation. La vérification s'exécute directement dans le checkout.`},v={title:`Exécutions enregistrées`,refresh:`Actualiser`,hint:`Continue dans le worktree d’origine avec le périmètre et les paramètres enregistrés ; la progression apparaît dans le journal de ce job. Ne publie pas et ne relance pas la livraison Desktop. Les exécutions actives s’arrêtent depuis les contrôles du job.`,empty:`Aucune exécution enregistrée.`,loadFailed:`Impossible de charger les exécutions.`,actionFailed:`Impossible de mettre à jour cette exécution.`,phase:`Phase suivante : {{phase}}`,approve:`Approuver la fin`,recover:`Récupérer la phase interrompue`,resume:`Reprendre`,cancel:`Annuler la reprise`,status:{running:`Reprise en cours…`,succeeded:`Réussi`,failed:`Échec`,blocked:`Bloqué`,paused:`En pause`,cancelled:`Annulé`,interrupted:`Interrompu`,unavailable:`Indisponible`,expired:`Expiré`},question:`L'architecte demande :`,answerLabel:`Votre réponse`,answerPlaceholder:`Répondez à la question ; l'architecte poursuit avec elle.`,answer:`Répondre et reprendre`,viewLog:`Voir le journal du job`,implementation:`Implémentation`,preserveProgress:`Reprendre à la phase indiquée en conservant le travail et les paramètres enregistrés.`,reviewDelivery:`Implémentation terminée. Vérifiez le résultat dans le journal avant la livraison ; cette reprise ne l’a pas publié.`,prepareDelivery:`Préparer la livraison`,dismiss:`Ignorer`,selectRecovery:`Sélectionnez les tentatives interrompues à reprendre`},y={architect:`Lit le code et rédige la proposition, la conception, les tâches et la spec. Lecture seule.`,developer:`Implémente les tâches avec des tests. Peut modifier des fichiers et exécuter des commandes dans le bac à sable du CLI.`,reviewer:`Vérifie le résultat par rapport à la spec et aux preuves de vérification. Lecture seule.`},b={title:`Seuil de revue`,hint:`Les champs vides utilisent le seuil de Core. Les valeurs ne peuvent que le relever : score global d'au moins {{score}}, sécurité d'au moins {{security}}, autres aspects d'au moins {{aspect}}.`,minScore:`Score global minimal (par défaut {{score}})`,aspects:{type_correctness:`Exactitude des types (par défaut {{score}})`,pattern_adherence:`Respect des patrons (par défaut {{score}})`,test_coverage:`Couverture de tests (par défaut {{score}})`,security:`Sécurité (par défaut {{score}})`,architectural_alignment:`Alignement architectural (par défaut {{score}})`}},x={title:`Confiance de l'architecte`,hint:`Après une passe d'investigation autonome, une conception encore peu sûre se met en pause avec la question de l'architecte ou continue sur des hypothèses explicites.`,onLowConfidence:`En cas de faible confiance`,ask:`Demander (pause avec la question)`,proceed:`Continuer sur des hypothèses explicites`},S={title:`Consommation et durée`,hint:`Inclut les corrections et les appels échoués. La durée des agents inclut les outils. Les tokens en cache font partie des tokens en entrée.`,unknown:`Indisponible`,duration:`Durée d’exécution`,agentTime:`Durée des agents`,cost:`Coût déclaré`,providerCalls:`Appels aux agents`,toolCalls:`Appels aux outils`,input:`Tokens en entrée`,output:`Tokens en sortie`,uncached:`Entrée sans cache`,cacheRead:`Lectures du cache`,cacheWrite:`Écritures du cache`,partial:`Certains essais ne disposent pas de mesures détaillées.`,phases:`Consommation par phase`,phase:`Phase`,attempts:`Essais`},C={title:`Prompts des rôles des agents`,description:`Consultez et modifiez les instructions de chaque rôle. Elles sont partagées par tous les projets et fournisseurs ; les modifications s’appliquent aux nouveaux travaux. Les travaux repris conservent leurs prompts d’origine.`,definition:`Définition de {{role}}`,default:`Valeur par défaut`,custom:`Personnalisé`,restore:`Rétablir la valeur par défaut`,contracts:`Le contexte de la spec, le workflow OpenSpec et le format de réponse requis sont ajoutés automatiquement et ne sont pas modifiables ici.`,invalid:`Chaque définition doit contenir entre 1 et 20 000 caractères, du texte non vide et aucun octet nul.`,saved:`Prompts des rôles enregistrés`,unsaved:`Modifications non enregistrées`,discard:`Annuler les modifications`,save:`Enregistrer les prompts`,fixerHint:`Utilisé uniquement lors des tours de correction : après une vérification échouée ou une revue rejetée. Tourne sur le moteur du développeur sauf si Réglages ▸ Moteur des agents ▸ Correcteur en désigne un. Un fournisseur CLI qui reprend la session du développeur reçoit le court suivi de correction ; la définition s'applique dès qu'une session neuve démarre (moteurs locaux, moteur correcteur, session perdue).`},w={title:`Efficacité de l’implémentation`,scope:`S’applique aux nouvelles exécutions. Les exécutions enregistrées conservent leur configuration et leur moteur.`,effort:`Effort de raisonnement`,providerDefault:`Valeur du fournisseur`,unconfirmed:`Non confirmé`,unknownSupport:`La prise en charge de ce modèle et de ce transport reste à confirmer.`,escalation:`Autoriser un niveau supérieur avec le même fournisseur`,baseRequired:`Sélectionnez d’abord un modèle de base explicite.`,escalationModel:`Modèle supérieur`,triggers:{architect:`Seule l’investigation approfondie existante peut sélectionner ce niveau.`,developer:`Après deux candidats en échec, la prochaine tentative autorisée peut sélectionner ce niveau.`,reviewer:`Uniquement pour réparer une réponse mal formée, jamais pour un refus du code.`,fixer:`Seul un tour de correction peut atteindre ce palier ; les premiers passages n'exécutent jamais le correcteur.`},contextMode:`Contexte du dépôt`,reviewMode:`Revue des corrections`,planning:`Profondeur de planification`,adaptive:`Adaptatif`,full:`Complet`,developerChecks:`Accepter les contrôles supplémentaires proposés par le développeur`,concurrency:`Contrôles simultanés maximum`,concurrencyHint:`Par défaut : 1. Seuls les contrôles indépendants déclarés par l’hôte dans différents dépôts peuvent s’exécuter ensemble. Aucune réutilisation par défaut.`,checkCapabilities:`Vérifier la compatibilité des modèles`,capabilitiesFailed:`Compatibilité non confirmée. Mettez à jour Core ou conservez les valeurs du fournisseur.`},T={title:`Preuves de vérification`,acceptance:`Acceptation technique`,acceptanceStatus:{pending:`En attente`,validated:`Validé`,"with-exceptions":`Avec exceptions`,blocked:`Bloqué`},calls:`Appels aux agents`,executed:`Contrôles exécutés`,reused:`Contrôles réutilisés`,unknown:`Indisponible`,unavailable:`Preuves indisponibles. Le résultat enregistré ne prouve pas la validité actuelle.`,current:`Candidat et plan actuels`,historical:`Résultat historique`,moreChecks:`Plus de contrôles`,output:`Sortie de vérification`,empty:`Aucune sortie`,truncated:`Page limitée ou capture tronquée.`,nextPage:`Page de sortie suivante`,status:{passed:`Réussi`,failed:`Échec`,cancelled:`Annulé`,interrupted:`Interrompu`},disposition:{executed:`Exécuté`,reused:`Réutilisé`,"not-run":`Non exécuté`},origin:`Origine`,origins:{host:`Hôte`,architect:`Architecte`,developer:`Développeur`,"frozen-runtime-config":`Configuration enregistrée`,"project-role":`Rôle du projet`,default:`Par défaut`,"explicit-launch-override":`Fournisseur choisi pour le lancement`,"loop-role":`Rôle de la boucle`},reuseDisabled:`Réutilisation désactivée pour ce contrôle.`,reuseConfirmed:`Réutilisé après confirmation des entrées et outils identiques.`,inputsChanged:`Entrées modifiées pendant la vérification ; résultat invalidé.`,reuseUnproven:`Aucun résultat actuel avec des entrées identiques prouvées ; contrôle relancé.`,original:`Exécution originale`,requested:`Demandé`,reported:`Rapporté`},E={title:`Rôles de boucle`,hint:`Moteurs des rôles côté boucle lorsqu'un rail est lancé avec le moteur « Rôles ». Les rôles du pipeline ci-dessus (architect, developer, reviewer) proviennent déjà de cette configuration du runtime.`,verifier:`Vérificateur`,verifierHint:`Chaque étape IA de la boucle hors core : verify, fix et étapes IA personnalisées.`,decider:`Décideur`,deciderHint:`Le Loop Decider qui lit le verdict et choisit l'étape suivante — un modèle rapide et peu coûteux est le choix naturel.`,inherit:`Hériter du principal`,model:`Modèle`,effort:`Effort de raisonnement`,disabled:`Le runtime des agents est désactivé : les rails lancés avec le moteur « Rôles » sont refusés tant qu'il n'est pas activé.`,saveFailed:`Impossible d'enregistrer les rôles de boucle.`},D={title:`Pipeline d'implémentation`,explainer:`Ces phases s'exécutent dans cet ordre à chaque implémentation. Quand le moteur du rail est « {{roles}} », chaque phase utilise le moteur configuré ci-dessous : fournisseur, modèle et effort différents par phase. Choisir un moteur précis sur le rail exécute toutes les phases avec ce moteur.`,host:`Hôte`,noCommand:`aucune commande`,inherits:`Hérite du principal`,inheritsDeveloper:`Hérite du développeur`,open:`Ouvrir`,collapse:`Réduire`,groups:{core:{title:`Pipeline principal`,hint:`S'exécute dans chaque implémentation : planifier, construire, vérifier, corriger, relire.`},loop:{title:`Étapes de la boucle`,hint:`Étapes IA de la boucle du rail qui entoure l'exécution (vérifier → décider → corriger) et des boucles personnalisées ; elles héritent du moteur principal sauf réglage.`,chip:`boucle du rail`}},phases:{architect:{name:`Architecte`,purpose:`Lit le code et rédige la proposition, la conception et les tâches.`},developer:{name:`Développeur`,purpose:`Implémente les tâches avec des tests.`},verification:{name:`Vérification`,purpose:`L'hôte exécute vos contrôles ; les échecs reviennent au développeur.`},fixer:{name:`Correcteur`,purpose:`Corrige ce que la vérification ou la revue rejettent ; hérite du développeur s'il n'est pas configuré.`},reviewer:{name:`Relecteur`,purpose:`Confronte le résultat à la spec et aux preuves.`},verifier:{name:`Vérificateur`,purpose:`Étapes IA verify, fix et personnalisées de la boucle.`},decider:{name:`Décideur`,purpose:`Lit le verdict et choisit l'étape suivante de la boucle.`}}},O={title:`Moteur du correcteur`,inherit:`Hériter du développeur`,own:`Moteur dédié`,hint:`Ne s'exécute que lors des tours de correction : après une vérification échouée ou une revue rejetée ; les premiers passages restent sur le développeur. Un modèle plus puissant ou cloud ici est rentable quand le développeur est un modèle local bon marché.`},k={title:`Garde-fous`,intro:`Règles de processus que l'hôte applique autour des modèles locaux pour qu'un petit modèle ne déraille pas. Toutes actives par défaut ; n'en désactivez une que pour ajuster le processus. Les fournisseurs CLI ne sont jamais concernés.`,unsupported:`Cette installation de Core n'expose pas de garde-fous configurables. Mettez Core à jour pour les ajuster ; les règles intégrées s'appliquent toujours.`,active:`{{on}} sur {{total}} actifs`,reset:`Rétablir les valeurs par défaut`,phases:{architect:`Architecte`,developer:`Développeur`,host:`Hôte`},unknown:`Un garde-fou ajouté par un Core plus récent ; cette application n'a pas encore de description pour lui.`,items:{"plan-validation":{title:`Plan de tâches validé`,description:`Rejette les plans qui ciblent openspec/, listent de simples noms de fichiers comme tâches, ont trop peu de tâches/groupes pour la spec ou laissent des critères d'acceptation non couverts ; l'architecte réessaie.`,why:`Un plan vague ou incomplet est la raison nº 1 pour laquelle un petit modèle développeur écrit des stubs.`},"genuine-blocking-question":{title:`Uniquement de vraies questions bloquantes`,description:`L'architecte ne peut mettre l'exécution en pause qu'avec une vraie question terminée par « ? », jamais avec un texte d'exemple copié.`,why:`Les petits modèles répètent les espaces réservés du prompt et bloqueraient chaque exécution.`},"plan-language-hint":{title:`Planifier dans le langage du dépôt`,description:`Indique à l'architecte le langage principal pour que les noms de fichiers des tâches portent la bonne extension.`,why:`Un plan JS sur un dépôt TypeScript rend les tâches impossibles à cocher.`},"frozen-plan-writes":{title:`Les artefacts de planification sont figés`,description:`Le développeur ne peut pas écrire sous openspec/ ; le plan appartient à l'hôte.`,why:`Les modèles « implémentent » en modifiant le plan au lieu du code.`},"primary-language":{title:`Rappel du langage principal`,description:`Chaque groupe de tâches reçoit le langage principal du dépôt ; les nouveaux fichiers doivent l'utiliser.`,why:`Évite une seconde implémentation dans un autre langage.`},"duplicate-sibling":{title:`Pas de modules jumeaux entre langages`,description:`Refuse board.js quand board.ts existe déjà ; étendez plutôt le module existant.`,why:`Les jumeaux compilent tous les deux et les tests importent le mauvais.`},"one-test-per-module":{title:`Un fichier de test par module`,description:`Refuse board.tick.test.ts quand board.test.ts existe ; étendez-le plutôt.`,why:`Sinon chaque passe de correction ajoute une nouvelle suite.`},"empty-write":{title:`Pas d'écrasements vides`,description:`Une écriture vide sur un fichier rempli est refusée ; écrivez le contenu complet ou appliquez un patch.`,why:`Une passe de « nettoyage » a un jour laissé index.ts à 0 ligne.`},"evidence-gated-ticking":{title:`Des preuves avant de cocher une tâche`,description:`Une tâche nommant des fichiers n'est terminée que s'ils existent et ne sont pas des stubs (extensions sœurs acceptées).`,why:`Sans cela, « terminé » n'est qu'une affirmation et la vérification s'exécute sur rien.`},"inventory-retry":{title:`Réessayer avec le vrai inventaire`,description:`Quand le modèle abandonne en prétendant que le dépôt est vide alors qu'il ne l'est pas, réessaie une fois avec la liste des fichiers.`,why:`Une seconde chance peu coûteuse plutôt qu'une étape échouée.`},"synthetic-corrections":{title:`Transformer le retour en tâches`,description:`Quand toutes les tâches sont cochées mais que la revue/vérification a échoué, le retour devient des tâches de correction concrètes.`,why:`Sinon le développeur répond « déjà fait » et rien ne change.`},"silent-group-closure":{title:`Fermer les groupes silencieux, garder leurs fichiers`,description:`Un groupe dont le modèle cesse de répondre est fermé en créditant les fichiers écrits et en laissant ses tâches ouvertes, au lieu de faire échouer l'exécution.`,why:`Un modèle 9B a écrit cinq modules, s'est tu, et toute l'exécution a échoué.`},"environment-repair":{title:`L'hôte répare l'environnement`,description:`Les dépendances ou outils de test manquants (npm install, ts-jest, @types/jest, modules de config Jest) sont installés par l'hôte, puis la vérification est relancée une fois.`,why:`Le modèle ne peut pas réparer l'environnement et gaspille des corrections à essayer.`},"lockfile-repair":{title:`Supprimer les lockfiles écrits à la main`,description:`Un package-lock.json inventé par le modèle (EINTEGRITY/ETARGET) est supprimé et l'installation retentée une fois.`,why:`Des hachages inventés ne s'installent jamais.`},"verify-idle-timeout":{title:`Arrêter les tests bloqués`,description:`Une commande de vérification sans sortie pendant 5 minutes est arrêtée et signalée comme blocage probable (dernière sortie incluse).`,why:`Sinon une boucle while dans un test retient l'exécution jusqu'à la limite de 15 minutes.`},"verify-per-group":{title:`Vérifier après chaque groupe`,description:`Lance la commande de test du dépôt juste après chaque groupe de tâches ; un échec reçoit une correction immédiate tant que le contexte du groupe est frais.`,why:`Cinq suites cassées à la fin sont bien plus dures à corriger qu'une à la fois.`},"test-reachability":{title:`Chaque nouveau test doit vraiment s'exécuter`,description:"Un fichier de test écrit par le developer que la commande de test du dépôt n'exécute jamais (un script `test` énumératif qui omet le nouveau fichier) fait échouer la vérification en nommant le fichier exact, d'abord au niveau du groupe puis à la vérification de l'hôte.",why:`Une suite de 622 lignes avec six cas en échec est passée au vert parce que rien ne l'avait jamais lancée.`},"exit-code-honesty":{title:`Se méfier d'un code de sortie 0 qui signale des échecs`,description:"Une commande de vérification qui sort avec 0 alors que sa sortie affiche des échecs (lignes `FAIL:`, « 3 failed », une AssertionError) est traitée comme ÉCHOUÉE et transmise au correcteur, le harnais étant désigné comme le défaut.",why:`Un lanceur de tests maison qui ne fixait jamais de code de sortie non nul a livré trois tests rouges comme verts.`},"verification-output-adoption":{title:`Adopter la sortie écrite par les vérifications`,description:`Si la vérification réussit mais que ses commandes réécrivent des fichiers suivis (une étape de lint qui régénère un mapping), l'hôte conserve ces fichiers dans le candidat et vérifie une fois de plus ; le reviewer et le fixer ne doivent pas les annuler.`,why:`Une étape de lint qui régénérait un fichier suivi faisait passer chaque exécution verte pour un candidat modifié et consommait des corrections pour un non-défaut.`}}},A=`Modifications non enregistrées`,j={title:`Rôles personnalisés`,hint:`Définissez des instructions réutilisables et des permissions explicites pour les rôles du workflow.`,unsupported:`Mettez Core à jour pour modifier les rôles personnalisés.`,remove:`Supprimer {{id}}`,access:`Accès au code`,read:`Lecture seule`,write:`Lecture et écriture`,artifacts:`Accès aux artefacts OpenSpec`,none:`Aucun`,tasks:`Cases des tâches uniquement`,all:`Tous les artefacts du changement`,skill:`Skill OpenSpec`,noSkill:`Aucun skill associé`,prompt:`Instructions du rôle`,id:`ID du rôle`,add:`Ajouter un rôle`,invalidId:`Utilisez un ID unique en minuscules commençant par une lettre, avec au plus 64 lettres, chiffres ou tirets. Les IDs intégrés sont réservés.`,escalationHint:`Seule une réparation autorisée du protocole peut utiliser le modèle supérieur. Aucun nouvel essai n’est ajouté.`},M={title:`Instructions d’exécution`,hint:`Core conserve ces instructions pour le prochain tour d’agent compatible. Leur envoi ne répond pas aux questions et ne donne aucune approbation.`,label:`Instructions supplémentaires`,send:`Envoyer les instructions`,accepted:`Reçues par Core ; en attente de traitement.`,pending:`En attente d’un tour d’agent`,consumed:`Prises en compte par un agent`,counts:`En attente : {{pending}} · Traitées : {{consumed}}`,failed:`Impossible d’envoyer les instructions. Réessayez pour confirmer le même message.`,unavailable:`Les détails des reçus sont indisponibles.`,unreported:`Cette version de Core ne signale pas la prise en compte.`,truncated:`Seuls les reçus récents et les messages en attente sont affichés.`},N={title:`Valeurs par défaut du rôle Core`,hint:`Ces valeurs du fichier s’appliquent aux nouveaux workflows. Les paramètres explicites du projet sont prioritaires ; les exécutions enregistrées conservent leurs paramètres figés.`,invalid:`Corrigez l’en-tête YAML dans l’éditeur avant de modifier les champs du rôle.`,escalationEffort:`Effort de raisonnement du modèle supérieur`},P={title:`Conservation de l’historique`,description:`Supprimez les historiques expirés et les versions de Core inutilisées. Un historique supprimé ne peut plus être repris ni bifurqué. Les exécutions actives ou récupérables et les livraisons en attente restent protégées ; les journaux et les coûts sont conservés.`,forever:`Conserver indéfiniment`,days:`Jours de conservation`,save:`Enregistrer la conservation`,preview:`Aperçu du nettoyage`,collect:`Supprimer les historiques expirés`,previewSummary:`Éligibles : {{runs}} historiques et {{packages}} versions de Core inutilisées.`,collectedSummary:`Expirés : {{runs}} historiques. Supprimées : {{packages}} versions de Core inutilisées.`,more:`{{count}} exécutions supplémentaires.`,failed:`Impossible de consulter ou modifier la conservation.`,expired:`Cet historique a expiré selon la politique du projet. Le journal et la comptabilité restent disponibles.`,loading:`Chargement de la politique…`,states:{protected:`Conservé`,eligible:`Éligible`,expired:`Expiré`,cleanup_pending:`Nettoyage en attente`,busy:`Utilisé`,error:`Échec de vérification`},reasons:{disabled:`Conservation indéfinie`,recoverable:`Récupération encore possible`,active:`Exécution active`,human_pending:`Réponse humaine attendue`,interrupted_writes:`Écritures interrompues à examiner`,delivery_pending:`Livraison en attente`,fork_pending:`Bifurcation dépendante restante`,unknown_terminal_time:`Date de fin inconnue`,within_retention:`Durée de conservation non dépassée`}},F={title:`Loop agents`,hint:`These definitions are shared by every project using this loop. Duplicate the loop to customize a separate workflow.`,legacy:`This saved loop still uses historical project agents. Import them or enable loop agents before changing its configuration.`,enable:`Use loop agents`,import:`Import current project agents`,restoreDefinition:`Utiliser la définition de Core`,default:`Provider default`,effort:`Reasoning effort`,escalationModel:`Escalation model`,escalationEffort:`Escalation effort`,policy:`Workflow policy`,maxAttempts:`Maximum correction attempts`,maxTokens:`Token budget`,maxCostUsd:`Cost budget (USD)`,timeoutMs:`Run timeout (ms)`,projectHint:`Configure repository checks here. Agent definitions, models and workflow policy are configured in the loop editor. Historical project agents can be imported into a duplicated loop.`,showUnused:`Also show agents not used in this loop`,stepTitle:`Step agent and options`,stepHint:`Edit this step’s agent definition and engine. Steps using the same role in this loop share these settings.`,inheritProvider:`Hériter du fournisseur de la mission`,inheritDefinition:`Suit la définition de Core : chaque mise à niveau de Core la met à jour automatiquement.`,customizeDefinition:`Personnaliser pour cette boucle`,coreDefinitionUnavailable:`Aperçu indisponible tant qu’aucun runtime Core n’est installé.`,turnLimits:{title:`Limites de tours`,hint:`Chaque appel d'outil d'un agent compte comme un tour. Si une étape s'arrête avec "reached the configured limit of N turns", augmentez sa limite ici, enregistrez et publiez ; les nouveaux lancements l'utiliseront. Vide utilise la valeur par défaut de Core ({{turns}}). Les paramètres du projet ne modifient pas les exécutions de loops.`,role:`Rôle {{role}}`,input:`Nombre maximal de tours pour {{steps}} (rôle {{role}})`,stepHint:`Le rôle {{role}} s'arrête après {{turns}} tours. Les étapes qui partagent ce rôle partagent la limite ; elle s'applique aux nouveaux lancements après publication.`}},I={title:e,description:t,loading:n,loadFailed:r,retry:i,unavailable:a,save:o,saving:s,saved:c,saveFailed:l,approvalBeforeArchive:u,providers:d,cliNames:f,roles:p,agents:m,limits:h,verification:g,setup:_,runs:v,roleHints:y,review:b,architect:x,metrics:S,prompts:C,efficiency:w,evidence:T,loopRoles:E,pipeline:D,fixer:O,guardrails:k,unsavedChanges:A,customRoles:j,steering:M,studioRole:N,retention:P,loopAgents:F};export{m as agents,u as approvalBeforeArchive,x as architect,f as cliNames,j as customRoles,I as default,t as description,w as efficiency,T as evidence,O as fixer,k as guardrails,h as limits,r as loadFailed,n as loading,F as loopAgents,E as loopRoles,S as metrics,D as pipeline,C as prompts,d as providers,P as retention,i as retry,b as review,y as roleHints,p as roles,v as runs,o as save,l as saveFailed,c as saved,s as saving,_ as setup,M as steering,N as studioRole,e as title,a as unavailable,A as unsavedChanges,g as verification};
1
+ var e=`Moteur d’agents`,t=`Architecte, développeur et relecteur s’exécutent en phases séparées avec une vérification déterministe entre elles. Choisissez un fournisseur par rôle ; tout le reste a une valeur par défaut qui fonctionne.`,n=`Chargement des paramètres…`,r=`Impossible de charger les paramètres. Réessayez avant de les modifier.`,i=`Réessayer`,a=`Cette installation de Core ne contient pas le moteur d’agents. Mettez Core à jour avant de l’activer ; vous pouvez préparer les paramètres en attendant.`,o=`Enregistrer les paramètres`,s=`Enregistrement…`,c=`Paramètres enregistrés`,l=`Impossible d’enregistrer les paramètres.`,u=`Demander une approbation avant de terminer le workflow`,d={title:`Fournisseurs`,hint:`Les CLI utilisent leur connexion existante. Pour les API, indiquez uniquement un nom de variable d’environnement, jamais une clé. Il peut rester vide en local. Réaffectez les rôles avant de supprimer leur fournisseur.`,entry:`Fournisseur {{index}}`,id:`ID du fournisseur`,kind:`Type de connexion`,cli:`CLI de programmation installé`,compatible:`API compatible OpenAI`,command:`CLI de programmation`,baseUrl:`URL de base de l’API`,apiKeyEnv:`Variable d’environnement de la clé (facultative)`,remove:`Supprimer le fournisseur`,addCli:`Ajouter un fournisseur CLI`,addLocal:`Ajouter un fournisseur local / API`,show:`Afficher les connexions aux fournisseurs`,hide:`Masquer les connexions aux fournisseurs`,globalTitle:`Fournisseurs d'IA`,globalHint:`Deux types de fournisseurs alimentent chaque projet : les CLI de programmation détectées sur cette machine et les moteurs locaux compatibles OpenAI que vous enregistrez ici. Attribuez-les aux phases du pipeline dans Paramètres du projet ▸ Moteur des agents. Les changements s’appliquent aux nouvelles exécutions.`,label:`Nom affiché (facultatif)`,labelPlaceholder:`ex. Machine LAN`,defaultModel:`Modèle par défaut`,defaultModelNone:`Aucun défaut (premier découvert)`,defaultModelPlaceholder:`ID du modèle ou alias personnalisé`,customModel:`Alias personnalisé…`,discoveredModels:`Modèles découverts`,noModels:`Aucun modèle découvert pour l'instant : testez la connexion.`,rates:`Tarifs (USD par 1M de jetons, facultatif)`,ratesHint:`Les coûts sont affichés comme des estimations ; laissez les deux vides et le coût reste inconnu.`,inputRate:`Entrée par 1M`,outputRate:`Sortie par 1M`,ratesInvalid:`Saisissez les deux tarifs comme nombres non négatifs, ou laissez les deux vides.`,reasoningEffort:`Le service accepte l'effort de raisonnement`,reasoningEffortHint:`Envoie le champ reasoning_effort d'OpenAI : l'effort configuré du rôle à chaque appel, porté à élevé pendant que l'architecte compact rédige le plan. Laissez désactivé sauf si le serveur le prend en charge.`,apiKeyEnvMissing:`{{name}} n'est pas définie dans le processus de l'app. Définissez-la dans l'environnement qui lance l'app.`,test:`Tester la connexion`,testing:`Test en cours…`,testFailed:`Impossible de tester la connexion.`,rename:`Renommer`,renameHint:`Le renommage conserve les affectations de rôles vers cette connexion.`,idLocked:`L'id est verrouillé après l'enregistrement. Utilisez Renommer pour le modifier.`,localBadge:`Moteur local`,cliBadge:`CLI`,notDetected:`Non détecté sur cette machine`,unsaved:`Modifications non enregistrées`,empty:`Aucune connexion pour l'instant. Ajoutez un fournisseur local / API pour commencer.`,fixBeforeSave:`Corrigez les champs signalés avant d'enregistrer.`,status:{probing:`Vérification…`,reachable:`Joignable`,unauthorized:`Non autorisé`,unreachable:`Injoignable`,untested:`Jamais testé`},auth:{authenticated:`Connecté`,unauthenticated:`Non connecté`,unknown:`Connexion inconnue`},agentLoop:`Boucle de l'agent`,agentLoopHint:`comment le pipeline implement pilote ce modèle`,agentLoop_compact:`Compacte`,agentLoop_compactHint:`Micro-étapes pilotées par l'application avec sortie structurée. Recommandé pour les modèles de moins de ~30B.`,agentLoop_free:`Libre`,agentLoop_freeHint:`Une boucle agentique par rôle, comme un fournisseur CLI. Nécessite un modèle puissant.`,contextWindow:`Fenêtre de contexte (tokens)`,contextWindowHint:`Alignez sur la taille de contexte du serveur (n_ctx / num_ctx). Sert à compacter les anciens résultats d'outils avant de remplir la fenêtre. Par défaut 32768.`,maxOutput:`Budget de sortie par tour (tokens)`,maxOutputHint:`max_tokens d'un tour d'outils ; un tour coupé est retenté une fois au double. Compte dans la fenêtre de contexte, donc toujours plafonné à l'espace restant — augmentez-le si le modèle raisonne en privé (le thinking le consomme). Par défaut 8192.`,reasoningEffortRailHint:`Désactivé : le sélecteur d'effort de raisonnement n'apparaît pas dans l'en-tête du rail pour ce moteur.`,presetTitle:`Configuration rapide`,presetSmallModel:`Recommandé pour les petits modèles`,presetSmallModelApplied:`Préréglage petits modèles appliqué`,presetSmallModelHint:`Active la boucle Compacte, transmet l'effort de raisonnement et fixe une fenêtre de contexte de 32k : la combinaison validée avec des modèles de 7–14B. Chaque champ reste modifiable.`,cliGroup:`Outils CLI`,cliGroupHint:`Détectés sur cette machine : ils utilisent leur propre connexion, rien à configurer.`,localGroup:`Moteurs locaux`,localGroupHint:`Points de terminaison compatibles OpenAI (llama.cpp, Ollama, vLLM, LM Studio…) accessibles depuis cette application.`,models_one:`{{count}} modèle`,models_other:`{{count}} modèles`,expand:`Afficher les paramètres`,collapse:`Masquer les paramètres`,overflow:`Plus d'actions`,addLocalHero:`Ajouter un moteur local`,emptyLocalPitch:`Aucun moteur local pour l'instant. Pointez l'application vers un point de terminaison compatible OpenAI pour exécuter le pipeline sur votre propre matériel : le coût reste sous votre contrôle et rien ne quitte votre réseau.`,defaultsGroup:`Valeurs par défaut du fournisseur`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`Architecte`,developer:`Développeur`,reviewer:`Réviseur`,fixer:`Correcteur`,verify:`Vérification`,archive:`Finalisation`},m={title:`Attribution des rôles`,hint:`Chaque rôle peut utiliser un fournisseur et un modèle différents. Connexions : Paramètres généraux → Fournisseurs d'IA. Limite par défaut : {{turns}} tours par agent.`,provider:`Fournisseur`,model:`Modèle`,modelPlaceholder:`ID du modèle ou modèle par défaut du CLI`,maxTurns:`Nombre maximal de tours (par défaut {{turns}})`,defaultModel:`Par défaut ({{model}})`,thinking:`Raisonnement privé`,thinking_off:`Désactivé`,thinking_on:`Activé`,thinkingHint:`Désactivé par défaut : le raisonnement caché consomme le budget de sortie et des minutes par tour dans une boucle pilotée par l'hôte. Activez-le pour un rôle qui profite de la délibération (envoyé comme chat_template_kwargs.enable_thinking ; ignoré par les endpoints qui ne le connaissent pas).`},h={title:`Limites du workflow`,hint:`Les champs vides utilisent les valeurs de Core : {{attempts}} tentatives de correction et {{minutes}} minutes par étape de rôle. Sur les moteurs locaux, le délai s'applique à chaque unité de travail (un groupe de tâches, un artefact, une revue) — 45 minutes par défaut — plus une surveillance d'inactivité de 20 minutes ; une étape qui dépasse son temps bloque l'exécution et peut reprendre au prochain groupe ouvert. Les plafonds de tokens et USD sont facultatifs ; ceux en USD exigent Claude pour tous les rôles.`,maxAttempts:`Tentatives maximales du développeur (par défaut {{attempts}})`,timeoutMinutes:`Délai en minutes (par défaut {{minutes}} ; moteurs locaux 45 par groupe de tâches)`,maxTokens:`Jetons maximum`,maxCostUsd:`Coût maximum (USD)`,unlimited:`Sans limite`},g={title:`Commandes de vérification`,hint:`Facultatif. Elles s’exécutent quand le développeur a terminé et leurs échecs lui reviennent. Liste vide : l’architecte propose les vérifications propres au projet à chaque exécution ; les dépôts sans vérification automatique sont quand même relus.`,detect:`Détecter les vérifications du projet`,detecting:`Détection…`,detected:`Rempli avec les vérifications que ce projet définit déjà.`,nothingDetected:`Aucune commande de test, de vérification de types ou de build trouvée. Ce n’est pas grave : l’architecte propose des vérifications à chaque exécution quand c’est possible.`,detectFailed:`Impossible d’inspecter les dépôts du projet.`,repository:`Dépôt`,command:`Commande`,reason:`Détecté depuis {{reason}}`,remove:`Retirer`,add:`Ajouter une commande`,invalidLine:`Commande de vérification vide ou guillemet non fermé : {{line}}`,label:`Libellé du contrôle (facultatif)`,moveUp:`Monter`,moveDown:`Descendre`},_={title:`Commandes de préparation`,hint:"Commandes idempotentes que Core exécute avant chaque vérification, dans le checkout du dépôt (par exemple `npx playwright install chromium`).",add:`Ajouter une commande de préparation`,invalidLine:`La commande de préparation est vide ou contient un guillemet non fermé : {{line}}`,repository:`Dépôt`,command:`Commande de préparation`,label:`Libellé de préparation (facultatif)`,remove:`Retirer`,moveUp:`Monter la commande de préparation`,moveDown:`Descendre la commande de préparation`,empty:`Aucune commande de préparation. La vérification s'exécute directement dans le checkout.`},v={title:`Exécutions enregistrées`,refresh:`Actualiser`,hint:`Continue dans le worktree d’origine avec le périmètre et les paramètres enregistrés ; la progression apparaît dans le journal de ce job. Ne publie pas et ne relance pas la livraison Desktop. Les exécutions actives s’arrêtent depuis les contrôles du job.`,empty:`Aucune exécution enregistrée.`,loadFailed:`Impossible de charger les exécutions.`,actionFailed:`Impossible de mettre à jour cette exécution.`,phase:`Phase suivante : {{phase}}`,approve:`Approuver la fin`,recover:`Récupérer la phase interrompue`,resume:`Reprendre`,cancel:`Annuler la reprise`,status:{running:`Reprise en cours…`,succeeded:`Réussi`,failed:`Échec`,blocked:`Bloqué`,paused:`En pause`,cancelled:`Annulé`,interrupted:`Interrompu`,unavailable:`Indisponible`,expired:`Expiré`},question:`L'architecte demande :`,answerLabel:`Votre réponse`,answerPlaceholder:`Répondez à la question ; l'architecte poursuit avec elle.`,answer:`Répondre et reprendre`,viewLog:`Voir le journal du job`,implementation:`Implémentation`,preserveProgress:`Reprendre à la phase indiquée en conservant le travail et les paramètres enregistrés.`,reviewDelivery:`Implémentation terminée. Vérifiez le résultat dans le journal avant la livraison ; cette reprise ne l’a pas publié.`,prepareDelivery:`Préparer la livraison`,dismiss:`Ignorer`,selectRecovery:`Sélectionnez les tentatives interrompues à reprendre`},y={architect:`Lit le code et rédige la proposition, la conception, les tâches et la spec. Lecture seule.`,developer:`Implémente les tâches avec des tests. Peut modifier des fichiers et exécuter des commandes dans le bac à sable du CLI.`,reviewer:`Vérifie le résultat par rapport à la spec et aux preuves de vérification. Lecture seule.`},b={title:`Seuil de revue`,hint:`Les champs vides utilisent le seuil de Core. Les valeurs ne peuvent que le relever : score global d'au moins {{score}}, sécurité d'au moins {{security}}, autres aspects d'au moins {{aspect}}.`,minScore:`Score global minimal (par défaut {{score}})`,aspects:{type_correctness:`Exactitude des types (par défaut {{score}})`,pattern_adherence:`Respect des patrons (par défaut {{score}})`,test_coverage:`Couverture de tests (par défaut {{score}})`,security:`Sécurité (par défaut {{score}})`,architectural_alignment:`Alignement architectural (par défaut {{score}})`}},x={title:`Confiance de l'architecte`,hint:`Après une passe d'investigation autonome, une conception encore peu sûre se met en pause avec la question de l'architecte ou continue sur des hypothèses explicites.`,onLowConfidence:`En cas de faible confiance`,ask:`Demander (pause avec la question)`,proceed:`Continuer sur des hypothèses explicites`},S={title:`Consommation et durée`,hint:`Inclut les corrections et les appels échoués. La durée des agents inclut les outils. Les tokens en cache font partie des tokens en entrée.`,unknown:`Indisponible`,duration:`Durée d’exécution`,agentTime:`Durée des agents`,cost:`Coût déclaré`,providerCalls:`Appels aux agents`,toolCalls:`Appels aux outils`,input:`Tokens en entrée`,output:`Tokens en sortie`,uncached:`Entrée sans cache`,cacheRead:`Lectures du cache`,cacheWrite:`Écritures du cache`,partial:`Certains essais ne disposent pas de mesures détaillées.`,phases:`Consommation par phase`,phase:`Phase`,attempts:`Essais`},C={title:`Prompts des rôles des agents`,description:`Consultez et modifiez les instructions de chaque rôle. Elles sont partagées par tous les projets et fournisseurs ; les modifications s’appliquent aux nouveaux travaux. Les travaux repris conservent leurs prompts d’origine.`,definition:`Définition de {{role}}`,default:`Valeur par défaut`,custom:`Personnalisé`,restore:`Rétablir la valeur par défaut`,contracts:`Le contexte de la spec, le workflow OpenSpec et le format de réponse requis sont ajoutés automatiquement et ne sont pas modifiables ici.`,invalid:`Chaque définition doit contenir entre 1 et 20 000 caractères, du texte non vide et aucun octet nul.`,saved:`Prompts des rôles enregistrés`,unsaved:`Modifications non enregistrées`,discard:`Annuler les modifications`,save:`Enregistrer les prompts`,fixerHint:`Utilisé uniquement lors des tours de correction : après une vérification échouée ou une revue rejetée. Tourne sur le moteur du développeur sauf si Réglages ▸ Moteur des agents ▸ Correcteur en désigne un. Un fournisseur CLI qui reprend la session du développeur reçoit le court suivi de correction ; la définition s'applique dès qu'une session neuve démarre (moteurs locaux, moteur correcteur, session perdue).`},w={title:`Efficacité de l’implémentation`,scope:`S’applique aux nouvelles exécutions. Les exécutions enregistrées conservent leur configuration et leur moteur.`,effort:`Effort de raisonnement`,providerDefault:`Valeur du fournisseur`,unconfirmed:`Non confirmé`,unknownSupport:`La prise en charge de ce modèle et de ce transport reste à confirmer.`,escalation:`Autoriser un niveau supérieur avec le même fournisseur`,baseRequired:`Sélectionnez d’abord un modèle de base explicite.`,escalationModel:`Modèle supérieur`,triggers:{architect:`Seule l’investigation approfondie existante peut sélectionner ce niveau.`,developer:`Après deux candidats en échec, la prochaine tentative autorisée peut sélectionner ce niveau.`,reviewer:`Uniquement pour réparer une réponse mal formée, jamais pour un refus du code.`,fixer:`Seul un tour de correction peut atteindre ce palier ; les premiers passages n'exécutent jamais le correcteur.`},contextMode:`Contexte du dépôt`,reviewMode:`Revue des corrections`,planning:`Profondeur de planification`,adaptive:`Adaptatif`,full:`Complet`,developerChecks:`Accepter les contrôles supplémentaires proposés par le développeur`,concurrency:`Contrôles simultanés maximum`,concurrencyHint:`Par défaut : 1. Seuls les contrôles indépendants déclarés par l’hôte dans différents dépôts peuvent s’exécuter ensemble. Aucune réutilisation par défaut.`,checkCapabilities:`Vérifier la compatibilité des modèles`,capabilitiesFailed:`Compatibilité non confirmée. Mettez à jour Core ou conservez les valeurs du fournisseur.`},T={title:`Preuves de vérification`,acceptance:`Acceptation technique`,acceptanceStatus:{pending:`En attente`,validated:`Validé`,"with-exceptions":`Avec exceptions`,blocked:`Bloqué`},calls:`Appels aux agents`,executed:`Contrôles exécutés`,reused:`Contrôles réutilisés`,unknown:`Indisponible`,unavailable:`Preuves indisponibles. Le résultat enregistré ne prouve pas la validité actuelle.`,current:`Candidat et plan actuels`,historical:`Résultat historique`,moreChecks:`Plus de contrôles`,output:`Sortie de vérification`,empty:`Aucune sortie`,truncated:`Page limitée ou capture tronquée.`,nextPage:`Page de sortie suivante`,status:{passed:`Réussi`,failed:`Échec`,cancelled:`Annulé`,interrupted:`Interrompu`},disposition:{executed:`Exécuté`,reused:`Réutilisé`,"not-run":`Non exécuté`},origin:`Origine`,origins:{host:`Hôte`,architect:`Architecte`,developer:`Développeur`,"frozen-runtime-config":`Configuration enregistrée`,"project-role":`Rôle du projet`,default:`Par défaut`,"explicit-launch-override":`Fournisseur choisi pour le lancement`,"loop-role":`Rôle de la boucle`},reuseDisabled:`Réutilisation désactivée pour ce contrôle.`,reuseConfirmed:`Réutilisé après confirmation des entrées et outils identiques.`,inputsChanged:`Entrées modifiées pendant la vérification ; résultat invalidé.`,reuseUnproven:`Aucun résultat actuel avec des entrées identiques prouvées ; contrôle relancé.`,original:`Exécution originale`,requested:`Demandé`,reported:`Rapporté`},E={title:`Rôles de boucle`,hint:`Moteurs des rôles côté boucle lorsqu'un rail est lancé avec le moteur « Rôles ». Les rôles du pipeline ci-dessus (architect, developer, reviewer) proviennent déjà de cette configuration du runtime.`,verifier:`Vérificateur`,verifierHint:`Chaque étape IA de la boucle hors core : verify, fix et étapes IA personnalisées.`,decider:`Décideur`,deciderHint:`Le Loop Decider qui lit le verdict et choisit l'étape suivante — un modèle rapide et peu coûteux est le choix naturel.`,inherit:`Hériter du principal`,model:`Modèle`,effort:`Effort de raisonnement`,disabled:`Le runtime des agents est désactivé : les rails lancés avec le moteur « Rôles » sont refusés tant qu'il n'est pas activé.`,saveFailed:`Impossible d'enregistrer les rôles de boucle.`},D={title:`Pipeline d'implémentation`,explainer:`Ces phases s'exécutent dans cet ordre à chaque implémentation. Quand le moteur du rail est « {{roles}} », chaque phase utilise le moteur configuré ci-dessous : fournisseur, modèle et effort différents par phase. Choisir un moteur précis sur le rail exécute toutes les phases avec ce moteur.`,host:`Hôte`,noCommand:`aucune commande`,inherits:`Hérite du principal`,inheritsDeveloper:`Hérite du développeur`,open:`Ouvrir`,collapse:`Réduire`,groups:{core:{title:`Pipeline principal`,hint:`S'exécute dans chaque implémentation : planifier, construire, vérifier, corriger, relire.`},loop:{title:`Étapes de la boucle`,hint:`Étapes IA de la boucle du rail qui entoure l'exécution (vérifier → décider → corriger) et des boucles personnalisées ; elles héritent du moteur principal sauf réglage.`,chip:`boucle du rail`}},phases:{architect:{name:`Architecte`,purpose:`Lit le code et rédige la proposition, la conception et les tâches.`},developer:{name:`Développeur`,purpose:`Implémente les tâches avec des tests.`},verification:{name:`Vérification`,purpose:`L'hôte exécute vos contrôles ; les échecs reviennent au développeur.`},fixer:{name:`Correcteur`,purpose:`Corrige ce que la vérification ou la revue rejettent ; hérite du développeur s'il n'est pas configuré.`},reviewer:{name:`Relecteur`,purpose:`Confronte le résultat à la spec et aux preuves.`},verifier:{name:`Vérificateur`,purpose:`Étapes IA verify, fix et personnalisées de la boucle.`},decider:{name:`Décideur`,purpose:`Lit le verdict et choisit l'étape suivante de la boucle.`}}},O={title:`Moteur du correcteur`,inherit:`Hériter du développeur`,own:`Moteur dédié`,hint:`Ne s'exécute que lors des tours de correction : après une vérification échouée ou une revue rejetée ; les premiers passages restent sur le développeur. Un modèle plus puissant ou cloud ici est rentable quand le développeur est un modèle local bon marché.`},k={title:`Garde-fous`,intro:`Règles de processus que l'hôte applique autour des modèles locaux pour qu'un petit modèle ne déraille pas. Toutes actives par défaut ; n'en désactivez une que pour ajuster le processus. Les fournisseurs CLI ne sont jamais concernés.`,unsupported:`Cette installation de Core n'expose pas de garde-fous configurables. Mettez Core à jour pour les ajuster ; les règles intégrées s'appliquent toujours.`,active:`{{on}} sur {{total}} actifs`,reset:`Rétablir les valeurs par défaut`,phases:{architect:`Architecte`,developer:`Développeur`,host:`Hôte`},unknown:`Un garde-fou ajouté par un Core plus récent ; cette application n'a pas encore de description pour lui.`,items:{"plan-validation":{title:`Plan de tâches validé`,description:`Rejette les plans qui ciblent openspec/, listent de simples noms de fichiers comme tâches, ont trop peu de tâches/groupes pour la spec ou laissent des critères d'acceptation non couverts ; l'architecte réessaie.`,why:`Un plan vague ou incomplet est la raison nº 1 pour laquelle un petit modèle développeur écrit des stubs.`},"genuine-blocking-question":{title:`Uniquement de vraies questions bloquantes`,description:`L'architecte ne peut mettre l'exécution en pause qu'avec une vraie question terminée par « ? », jamais avec un texte d'exemple copié.`,why:`Les petits modèles répètent les espaces réservés du prompt et bloqueraient chaque exécution.`},"plan-language-hint":{title:`Planifier dans le langage du dépôt`,description:`Indique à l'architecte le langage principal pour que les noms de fichiers des tâches portent la bonne extension.`,why:`Un plan JS sur un dépôt TypeScript rend les tâches impossibles à cocher.`},"frozen-plan-writes":{title:`Les artefacts de planification sont figés`,description:`Le développeur ne peut pas écrire sous openspec/ ; le plan appartient à l'hôte.`,why:`Les modèles « implémentent » en modifiant le plan au lieu du code.`},"primary-language":{title:`Rappel du langage principal`,description:`Chaque groupe de tâches reçoit le langage principal du dépôt ; les nouveaux fichiers doivent l'utiliser.`,why:`Évite une seconde implémentation dans un autre langage.`},"duplicate-sibling":{title:`Pas de modules jumeaux entre langages`,description:`Refuse board.js quand board.ts existe déjà ; étendez plutôt le module existant.`,why:`Les jumeaux compilent tous les deux et les tests importent le mauvais.`},"one-test-per-module":{title:`Un fichier de test par module`,description:`Refuse board.tick.test.ts quand board.test.ts existe ; étendez-le plutôt.`,why:`Sinon chaque passe de correction ajoute une nouvelle suite.`},"empty-write":{title:`Pas d'écrasements vides`,description:`Une écriture vide sur un fichier rempli est refusée ; écrivez le contenu complet ou appliquez un patch.`,why:`Une passe de « nettoyage » a un jour laissé index.ts à 0 ligne.`},"evidence-gated-ticking":{title:`Des preuves avant de cocher une tâche`,description:`Une tâche nommant des fichiers n'est terminée que s'ils existent et ne sont pas des stubs (extensions sœurs acceptées).`,why:`Sans cela, « terminé » n'est qu'une affirmation et la vérification s'exécute sur rien.`},"inventory-retry":{title:`Réessayer avec le vrai inventaire`,description:`Quand le modèle abandonne en prétendant que le dépôt est vide alors qu'il ne l'est pas, réessaie une fois avec la liste des fichiers.`,why:`Une seconde chance peu coûteuse plutôt qu'une étape échouée.`},"synthetic-corrections":{title:`Transformer le retour en tâches`,description:`Quand toutes les tâches sont cochées mais que la revue/vérification a échoué, le retour devient des tâches de correction concrètes.`,why:`Sinon le développeur répond « déjà fait » et rien ne change.`},"silent-group-closure":{title:`Fermer les groupes silencieux, garder leurs fichiers`,description:`Un groupe dont le modèle cesse de répondre est fermé en créditant les fichiers écrits et en laissant ses tâches ouvertes, au lieu de faire échouer l'exécution.`,why:`Un modèle 9B a écrit cinq modules, s'est tu, et toute l'exécution a échoué.`},"environment-repair":{title:`L'hôte répare l'environnement`,description:`Les dépendances ou outils de test manquants (npm install, ts-jest, @types/jest, modules de config Jest) sont installés par l'hôte, puis la vérification est relancée une fois.`,why:`Le modèle ne peut pas réparer l'environnement et gaspille des corrections à essayer.`},"lockfile-repair":{title:`Supprimer les lockfiles écrits à la main`,description:`Un package-lock.json inventé par le modèle (EINTEGRITY/ETARGET) est supprimé et l'installation retentée une fois.`,why:`Des hachages inventés ne s'installent jamais.`},"verify-idle-timeout":{title:`Arrêter les tests bloqués`,description:`Une commande de vérification sans sortie pendant 5 minutes est arrêtée et signalée comme blocage probable (dernière sortie incluse).`,why:`Sinon une boucle while dans un test retient l'exécution jusqu'à la limite de 15 minutes.`},"verify-per-group":{title:`Vérifier après chaque groupe`,description:`Lance la commande de test du dépôt juste après chaque groupe de tâches ; un échec reçoit une correction immédiate tant que le contexte du groupe est frais.`,why:`Cinq suites cassées à la fin sont bien plus dures à corriger qu'une à la fois.`},"test-reachability":{title:`Chaque nouveau test doit vraiment s'exécuter`,description:"Un fichier de test écrit par le developer que la commande de test du dépôt n'exécute jamais (un script `test` énumératif qui omet le nouveau fichier) fait échouer la vérification en nommant le fichier exact, d'abord au niveau du groupe puis à la vérification de l'hôte.",why:`Une suite de 622 lignes avec six cas en échec est passée au vert parce que rien ne l'avait jamais lancée.`},"exit-code-honesty":{title:`Se méfier d'un code de sortie 0 qui signale des échecs`,description:"Une commande de vérification qui sort avec 0 alors que sa sortie affiche des échecs (lignes `FAIL:`, « 3 failed », une AssertionError) est traitée comme ÉCHOUÉE et transmise au correcteur, le harnais étant désigné comme le défaut.",why:`Un lanceur de tests maison qui ne fixait jamais de code de sortie non nul a livré trois tests rouges comme verts.`},"verification-output-adoption":{title:`Adopter la sortie écrite par les vérifications`,description:`Si la vérification réussit mais que ses commandes réécrivent des fichiers suivis (une étape de lint qui régénère un mapping), l'hôte conserve ces fichiers dans le candidat et vérifie une fois de plus ; le reviewer et le fixer ne doivent pas les annuler.`,why:`Une étape de lint qui régénérait un fichier suivi faisait passer chaque exécution verte pour un candidat modifié et consommait des corrections pour un non-défaut.`}}},A=`Modifications non enregistrées`,j={title:`Rôles personnalisés`,hint:`Définissez des instructions réutilisables et des permissions explicites pour les rôles du workflow.`,unsupported:`Mettez Core à jour pour modifier les rôles personnalisés.`,remove:`Supprimer {{id}}`,access:`Accès au code`,read:`Lecture seule`,write:`Lecture et écriture`,artifacts:`Accès aux artefacts OpenSpec`,none:`Aucun`,tasks:`Cases des tâches uniquement`,all:`Tous les artefacts du changement`,skill:`Skill OpenSpec`,noSkill:`Aucun skill associé`,prompt:`Instructions du rôle`,id:`ID du rôle`,add:`Ajouter un rôle`,invalidId:`Utilisez un ID unique en minuscules commençant par une lettre, avec au plus 64 lettres, chiffres ou tirets. Les IDs intégrés sont réservés.`,escalationHint:`Seule une réparation autorisée du protocole peut utiliser le modèle supérieur. Aucun nouvel essai n’est ajouté.`},M={title:`Instructions d’exécution`,hint:`Core conserve ces instructions pour le prochain tour d’agent compatible. Leur envoi ne répond pas aux questions et ne donne aucune approbation.`,label:`Instructions supplémentaires`,send:`Envoyer les instructions`,accepted:`Reçues par Core ; en attente de traitement.`,pending:`En attente d’un tour d’agent`,consumed:`Prises en compte par un agent`,counts:`En attente : {{pending}} · Traitées : {{consumed}}`,failed:`Impossible d’envoyer les instructions. Réessayez pour confirmer le même message.`,unavailable:`Les détails des reçus sont indisponibles.`,unreported:`Cette version de Core ne signale pas la prise en compte.`,truncated:`Seuls les reçus récents et les messages en attente sont affichés.`},N={title:`Valeurs par défaut du rôle Core`,hint:`Ces valeurs du fichier s’appliquent aux nouveaux workflows. Les paramètres explicites du projet sont prioritaires ; les exécutions enregistrées conservent leurs paramètres figés.`,invalid:`Corrigez l’en-tête YAML dans l’éditeur avant de modifier les champs du rôle.`,escalationEffort:`Effort de raisonnement du modèle supérieur`},P={title:`Conservation de l’historique`,description:`Supprimez les historiques expirés et les versions de Core inutilisées. Un historique supprimé ne peut plus être repris ni bifurqué. Les exécutions actives ou récupérables et les livraisons en attente restent protégées ; les journaux et les coûts sont conservés.`,forever:`Conserver indéfiniment`,days:`Jours de conservation`,save:`Enregistrer la conservation`,preview:`Aperçu du nettoyage`,collect:`Supprimer les historiques expirés`,previewSummary:`Éligibles : {{runs}} historiques et {{packages}} versions de Core inutilisées.`,collectedSummary:`Expirés : {{runs}} historiques. Supprimées : {{packages}} versions de Core inutilisées.`,more:`{{count}} exécutions supplémentaires.`,failed:`Impossible de consulter ou modifier la conservation.`,expired:`Cet historique a expiré selon la politique du projet. Le journal et la comptabilité restent disponibles.`,loading:`Chargement de la politique…`,states:{protected:`Conservé`,eligible:`Éligible`,expired:`Expiré`,cleanup_pending:`Nettoyage en attente`,busy:`Utilisé`,error:`Échec de vérification`},reasons:{disabled:`Conservation indéfinie`,recoverable:`Récupération encore possible`,active:`Exécution active`,human_pending:`Réponse humaine attendue`,interrupted_writes:`Écritures interrompues à examiner`,delivery_pending:`Livraison en attente`,fork_pending:`Bifurcation dépendante restante`,unknown_terminal_time:`Date de fin inconnue`,within_retention:`Durée de conservation non dépassée`}},F={title:`Agents de la boucle`,hint:`Ces définitions sont partagées par tous les projets qui utilisent cette boucle. Dupliquez la boucle pour personnaliser un workflow distinct.`,legacy:`Cette boucle enregistrée utilise encore les agents historiques du projet. Importez-les ou activez les agents de la boucle avant de modifier sa configuration.`,enable:`Utiliser les agents de la boucle`,import:`Importer les agents du projet actuel`,restoreDefinition:`Utiliser la définition de Core`,default:`Valeur par défaut du fournisseur`,effort:`Effort de raisonnement`,escalationModel:`Modèle d'escalade`,escalationEffort:`Effort d'escalade`,policy:`Politique du workflow`,maxAttempts:`Tentatives de correction maximales`,maxTokens:`Budget de tokens`,maxCostUsd:`Budget de coût (USD)`,timeoutMs:`Délai d'exécution (ms)`,projectHint:`Configurez ici les vérifications du dépôt. Les définitions d'agents, les modèles et la politique du workflow se configurent dans l'éditeur de boucles. Les agents historiques du projet peuvent être importés dans une boucle dupliquée.`,showUnused:`Afficher aussi les agents non utilisés dans cette boucle`,stepTitle:`Agent et options de l'étape`,stepHint:`Modifiez la définition de l’agent et le moteur de cette étape. Les étapes de cette boucle qui utilisent le même rôle partagent ces réglages.`,inheritProvider:`Hériter du fournisseur de la mission`,inheritDefinition:`Suit la définition de Core : chaque mise à niveau de Core la met à jour automatiquement.`,customizeDefinition:`Personnaliser pour cette boucle`,coreDefinitionUnavailable:`Aperçu indisponible tant qu’aucun runtime Core n’est installé.`,turnLimits:{title:`Limites de tours`,hint:`Chaque appel d'outil d'un agent compte comme un tour. Si une étape s'arrête avec "reached the configured limit of N turns", augmentez sa limite ici, enregistrez et publiez ; les nouveaux lancements l'utiliseront. Vide utilise la valeur par défaut de Core ({{turns}}). Les paramètres du projet ne modifient pas les exécutions de loops.`,role:`Rôle {{role}}`,input:`Nombre maximal de tours pour {{steps}} (rôle {{role}})`,stepHint:`Le rôle {{role}} s'arrête après {{turns}} tours. Les étapes qui partagent ce rôle partagent la limite ; elle s'applique aux nouveaux lancements après publication.`}},I={label:`Suggestion de famille de modèles pour le relecteur`,title:`Exécutez le relecteur avec {{provider}} : une autre famille de modèles repère d'autres erreurs`,body:`Le développeur et le relecteur utilisent actuellement le même fournisseur. Ce n'est qu'une suggestion : rien ne change tant que vous ne l'appliquez pas.`,apply:`Appliquer`,dismiss:`Ignorer`},L={title:`Moteur du triage des specs`,hint:`Le triage lit chaque spec nouvelle ou modifiée et recommande la boucle avec laquelle la lancer. C’est un appel court et structuré par spec. Par défaut, il utilise le fournisseur principal du projet avec son modèle le moins cher.`,provider:`Fournisseur du triage`,inherit:`Fournisseur principal`,model:`Modèle`,cheapestModel:`Modèle le moins cher (par défaut)`,loading:`Chargement du moteur de triage…`,loadFailed:`Impossible de lire le moteur de triage. Le triage continue d’utiliser le fournisseur principal ; rouvrez ces réglages pour réessayer.`,saveFailed:`Le moteur de triage n’a pas été enregistré. Le choix précédent est conservé.`},R={title:e,description:t,loading:n,loadFailed:r,retry:i,unavailable:a,save:o,saving:s,saved:c,saveFailed:l,approvalBeforeArchive:u,providers:d,cliNames:f,roles:p,agents:m,limits:h,verification:g,setup:_,runs:v,roleHints:y,review:b,architect:x,metrics:S,prompts:C,efficiency:w,evidence:T,loopRoles:E,pipeline:D,fixer:O,guardrails:k,unsavedChanges:A,customRoles:j,steering:M,studioRole:N,retention:P,loopAgents:F,reviewerSuggestion:I,triageEngine:L};export{m as agents,u as approvalBeforeArchive,x as architect,f as cliNames,j as customRoles,R as default,t as description,w as efficiency,T as evidence,O as fixer,k as guardrails,h as limits,r as loadFailed,n as loading,F as loopAgents,E as loopRoles,S as metrics,D as pipeline,C as prompts,d as providers,P as retention,i as retry,b as review,I as reviewerSuggestion,y as roleHints,p as roles,v as runs,o as save,l as saveFailed,c as saved,s as saving,_ as setup,M as steering,N as studioRole,e as title,L as triageEngine,a as unavailable,A as unsavedChanges,g as verification};
@@ -0,0 +1 @@
1
+ var e=`Motor de agentes`,t=`Arquitecto, desarrollador y revisor se ejecutan como fases separadas con verificación determinista entre ellas. Elige un proveedor por rol; todo lo demás tiene un valor por defecto que funciona.`,n=`Cargando configuración…`,r=`No se pudo cargar la configuración. Reintenta antes de modificarla.`,i=`Reintentar`,a=`Esta instalación de Core no incluye el motor de agentes. Actualiza Core antes de activarlo; puedes preparar la configuración mientras está desactivado.`,o=`Guardar configuración`,s=`Guardando…`,c=`Configuración guardada`,l=`No se pudo guardar la configuración.`,u=`Pausar para aprobación antes de completar el flujo`,d={title:`Proveedores`,hint:`Los proveedores CLI usan su sesión existente. Los proveedores API solo aceptan el nombre de una variable de entorno, nunca una clave. Los servicios locales pueden dejarlo vacío. Asigna otro proveedor al rol antes de eliminar el actual.`,entry:`Proveedor {{index}}`,id:`ID del proveedor`,kind:`Tipo de conexión`,cli:`CLI de programación instalado`,compatible:`API compatible con OpenAI`,command:`CLI de programación`,baseUrl:`URL base de la API`,apiKeyEnv:`Variable de entorno de la clave (opcional)`,remove:`Eliminar proveedor`,addCli:`Añadir proveedor CLI`,addLocal:`Añadir proveedor local / API`,show:`Mostrar conexiones de proveedores`,hide:`Ocultar conexiones de proveedores`,globalTitle:`Proveedores de IA`,globalHint:`Dos tipos de proveedor impulsan cada proyecto: las CLI de programación detectadas en este equipo y los motores locales compatibles con OpenAI que registres aquí. Asígnalos a las fases del pipeline en Ajustes del proyecto ▸ Motor de agentes. Los cambios se aplican a nuevas ejecuciones.`,label:`Nombre visible (opcional)`,labelPlaceholder:`p. ej. Equipo LAN`,defaultModel:`Modelo por defecto`,defaultModelNone:`Sin valor por defecto (primero descubierto)`,defaultModelPlaceholder:`ID del modelo o alias personalizado`,customModel:`Alias personalizado…`,discoveredModels:`Modelos descubiertos`,noModels:`Aún no se han descubierto modelos: prueba la conexión.`,rates:`Tarifas (USD por 1M de tokens, opcional)`,ratesHint:`Los costes se muestran como estimaciones; deja ambas vacías y el coste seguirá siendo desconocido.`,inputRate:`Entrada por 1M`,outputRate:`Salida por 1M`,ratesInvalid:`Introduce ambas tarifas como números no negativos o deja las dos vacías.`,reasoningEffort:`El servicio acepta esfuerzo de razonamiento`,reasoningEffortHint:`Envía el campo reasoning_effort de OpenAI: el esfuerzo configurado del rol en cada llamada, elevado a alto mientras el arquitecto compacto escribe el plan. Déjalo apagado salvo que el servidor lo respete.`,apiKeyEnvMissing:`{{name}} no está definida en el proceso de la app. Defínela en el entorno desde el que se lanza la app.`,test:`Probar conexión`,testing:`Probando…`,testFailed:`No se pudo probar la conexión.`,rename:`Renombrar`,renameHint:`Al renombrar, las asignaciones de roles siguen apuntando a esta conexión.`,idLocked:`El id queda bloqueado al guardar. Usa Renombrar para cambiarlo.`,localBadge:`Motor local`,cliBadge:`CLI`,notDetected:`No detectado en este equipo`,unsaved:`Cambios sin guardar`,empty:`Aún no hay conexiones. Añade un proveedor local / API para empezar.`,fixBeforeSave:`Corrige los campos marcados antes de guardar.`,status:{probing:`Comprobando…`,reachable:`Accesible`,unauthorized:`No autorizado`,unreachable:`Inaccesible`,untested:`Sin probar`},auth:{authenticated:`Sesión iniciada`,unauthenticated:`Sin sesión`,unknown:`Sesión desconocida`},agentLoop:`Bucle del agente`,agentLoopHint:`cómo dirige el pipeline implement a este modelo`,agentLoop_compact:`Compacto`,agentLoop_compactHint:`Micro-pasos dirigidos por la app con salida estructurada. Recomendado para modelos de menos de ~30B.`,agentLoop_free:`Libre`,agentLoop_freeHint:`Un bucle agéntico por rol, como un proveedor CLI. Requiere un modelo potente.`,contextWindow:`Ventana de contexto (tokens)`,contextWindowHint:`Iguala el tamaño de contexto del servidor (n_ctx / num_ctx). Se usa para compactar resultados de herramientas antiguos antes de llenar la ventana. Por defecto 32768.`,maxOutput:`Presupuesto de salida por turno (tokens)`,maxOutputHint:`max_tokens de un turno de herramientas; un turno cortado se reintenta una vez al doble. Cuenta dentro de la ventana de contexto, así que siempre se limita al espacio restante — súbelo si el modelo razona en privado (el thinking consume este presupuesto). Por defecto 8192.`,reasoningEffortRailHint:`Apagado: el selector de esfuerzo de razonamiento no aparece en la cabecera del rail para este motor.`,presetTitle:`Configuración rápida`,presetSmallModel:`Recomendado para modelos pequeños`,presetSmallModelApplied:`Preajuste para modelos pequeños aplicado`,presetSmallModelHint:`Activa el bucle Compacto, reenvía el esfuerzo de razonamiento y fija una ventana de contexto de 32k: la combinación validada con modelos de 7–14B. Puedes cambiar cada campo después.`,cliGroup:`Herramientas CLI`,cliGroupHint:`Detectadas en este equipo: usan su propio inicio de sesión, no hay nada que configurar.`,localGroup:`Motores locales`,localGroupHint:`Endpoints compatibles con OpenAI (llama.cpp, Ollama, vLLM, LM Studio…) accesibles desde esta app.`,models_one:`{{count}} modelo`,models_other:`{{count}} modelos`,expand:`Mostrar ajustes`,collapse:`Ocultar ajustes`,overflow:`Más acciones`,addLocalHero:`Añadir motor local`,emptyLocalPitch:`Todavía no hay motores locales. Apunta la app a un endpoint compatible con OpenAI para ejecutar el pipeline en tu propio hardware: el coste queda bajo tu control y nada sale de tu red.`,defaultsGroup:`Valores por defecto del proveedor`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`Arquitecto`,developer:`Desarrollador`,reviewer:`Revisor`,fixer:`Corrector`,verify:`Verificación`,archive:`Finalización`},m={title:`Asignación de roles`,hint:`Cada rol puede usar un proveedor y un modelo distintos. Las conexiones se gestionan en Ajustes generales → Proveedores de IA. Límite por defecto: {{turns}} turnos por agente.`,provider:`Proveedor`,model:`Modelo`,modelPlaceholder:`ID del modelo o predeterminado del CLI`,maxTurns:`Máximo de turnos (por defecto {{turns}})`,defaultModel:`Predeterminado ({{model}})`,thinking:`Razonamiento oculto`,thinking_off:`Desactivado`,thinking_on:`Activado`,thinkingHint:`Desactivado por defecto: el razonamiento oculto gasta el presupuesto de salida y minutos por turno en un bucle guiado por el host. Actívalo para un rol que gane con deliberación (se envía como chat_template_kwargs.enable_thinking; los endpoints que no lo conocen lo ignoran).`},h={title:`Límites del flujo`,hint:`Los campos vacíos usan los valores de Core: {{attempts}} intentos de corrección y {{minutes}} minutos por paso de rol. En motores locales el timeout se aplica a cada unidad de trabajo (un grupo de tareas, un artefacto, una revisión) — 45 minutos por defecto — más un watchdog de inactividad de 20 minutos; un paso que agota su tiempo bloquea la ejecución y se puede reanudar desde el siguiente grupo abierto. Los topes de tokens y USD son opcionales; los de USD requieren Claude en todos los roles.`,maxAttempts:`Máximo de intentos del desarrollador (por defecto {{attempts}})`,timeoutMinutes:`Timeout en minutos (por defecto {{minutes}}; motores locales 45 por grupo de tareas)`,maxTokens:`Máximo de tokens`,maxCostUsd:`Coste máximo (USD)`,unlimited:`Sin límite`},g={title:`Comandos de verificación`,hint:`Opcional. Se ejecutan cuando el desarrollador termina y sus fallos vuelven al desarrollador. Si dejas la lista vacía, el arquitecto propone las comprobaciones propias del proyecto en cada ejecución; los repositorios sin comprobación automática se revisan igualmente.`,detect:`Detectar comprobaciones del proyecto`,detecting:`Detectando…`,detected:`Rellenado con las comprobaciones que este proyecto ya define.`,nothingDetected:`No se encontró ningún comando de test, comprobación de tipos o build. No pasa nada: el arquitecto propone comprobaciones en cada ejecución cuando es posible.`,detectFailed:`No se pudieron inspeccionar los repositorios del proyecto.`,repository:`Repositorio`,command:`Comando`,reason:`Detectado en {{reason}}`,remove:`Eliminar`,add:`Añadir comando`,invalidLine:`El comando de verificación está vacío o tiene comillas sin cerrar: {{line}}`,label:`Nombre de la comprobación (opcional)`,moveUp:`Subir`,moveDown:`Bajar`},_={title:`Comandos de preparación`,hint:"Comandos idempotentes que Core ejecuta antes de cada verificación, en el checkout del repositorio (por ejemplo `npx playwright install chromium`).",add:`Añadir comando de preparación`,invalidLine:`El comando de preparación está vacío o tiene una comilla sin cerrar: {{line}}`,repository:`Repositorio`,command:`Comando de preparación`,label:`Etiqueta de preparación (opcional)`,remove:`Quitar`,moveUp:`Subir comando de preparación`,moveDown:`Bajar comando de preparación`,empty:`Sin comandos de preparación. La verificación se ejecuta directamente en el checkout.`},v={title:`Ejecuciones guardadas`,refresh:`Actualizar`,hint:`Continúa en el worktree original con el alcance y la configuración guardados; el progreso aparece en el registro de ese trabajo. No publica ni reinicia la entrega de Desktop. Las ejecuciones activas se detienen desde sus controles de trabajo.`,empty:`No hay ejecuciones guardadas.`,loadFailed:`No se pudieron cargar las ejecuciones.`,actionFailed:`No se pudo actualizar esta ejecución.`,phase:`Siguiente fase: {{phase}}`,approve:`Aprobar finalización`,recover:`Recuperar fase interrumpida`,resume:`Reanudar`,cancel:`Cancelar continuación`,status:{running:`Continuando…`,succeeded:`Completado`,failed:`Fallido`,blocked:`Bloqueado`,paused:`En pausa`,cancelled:`Cancelado`,interrupted:`Interrumpido`,unavailable:`No disponible`,expired:`Caducado`},question:`El arquitecto pregunta:`,answerLabel:`Tu respuesta`,answerPlaceholder:`Responde a la pregunta; el arquitecto continúa con ella.`,answer:`Responder y reanudar`,viewLog:`Ver log del trabajo`,implementation:`Implementación`,preserveProgress:`Continúa desde la fase indicada, conservando el trabajo anterior y la configuración guardada.`,reviewDelivery:`Implementación completada. Revisa el resultado en el log de este trabajo antes de preparar la entrega; esta continuación no lo ha publicado.`,prepareDelivery:`Preparar entrega`,dismiss:`Descartar`,selectRecovery:`Selecciona los intentos interrumpidos que quieres recuperar`},y={architect:`Lee el código y escribe la propuesta, el diseño, las tareas y la spec. Solo lectura.`,developer:`Implementa las tareas con tests. Puede editar archivos y ejecutar comandos dentro del sandbox del CLI.`,reviewer:`Comprueba el resultado contra la spec y la evidencia de verificación. Solo lectura.`},b={title:`Umbral de revisión`,hint:`Los campos vacíos usan el umbral de Core. Los valores solo pueden elevarlo: puntuación global mínima {{score}}, seguridad mínima {{security}}, resto de aspectos mínimo {{aspect}}.`,minScore:`Puntuación global mínima (por defecto {{score}})`,aspects:{type_correctness:`Corrección de tipos (por defecto {{score}})`,pattern_adherence:`Adhesión a patrones (por defecto {{score}})`,test_coverage:`Cobertura de pruebas (por defecto {{score}})`,security:`Seguridad (por defecto {{score}})`,architectural_alignment:`Alineación arquitectónica (por defecto {{score}})`}},x={title:`Confianza del arquitecto`,hint:`Tras una pasada de investigación autónoma, un diseño con confianza aún baja se pausa con la pregunta del arquitecto o continúa con supuestos declarados.`,onLowConfidence:`Con confianza baja`,ask:`Preguntar (pausar con la pregunta)`,proceed:`Continuar con supuestos declarados`},S={title:`Consumo y tiempo`,hint:`Incluye correcciones y llamadas fallidas. El tiempo del agente incluye sus herramientas. Los tokens de caché forman parte de los tokens de entrada.`,unknown:`No disponible`,duration:`Tiempo de ejecución`,agentTime:`Tiempo de agentes`,cost:`Coste informado`,providerCalls:`Llamadas a agentes`,toolCalls:`Llamadas a herramientas`,input:`Tokens de entrada`,output:`Tokens de salida`,uncached:`Entrada sin caché`,cacheRead:`Lecturas de caché`,cacheWrite:`Escrituras de caché`,partial:`Algunos intentos no tienen mediciones detalladas.`,phases:`Consumo por fase`,phase:`Fase`,attempts:`Intentos`},C={title:`Prompts de los agentes`,description:`Consulta y edita las instrucciones de cada rol. Son comunes a todos los proyectos y proveedores; los cambios se aplican a los nuevos trabajos. Los trabajos reanudados conservan sus prompts originales.`,definition:`Definición de {{role}}`,default:`Valor de fábrica`,custom:`Personalizado`,restore:`Restaurar valor de fábrica`,contracts:`El contexto de la spec, el flujo de OpenSpec y el formato de respuesta se añaden automáticamente y no se editan aquí.`,invalid:`Cada definición debe contener entre 1 y 20.000 caracteres, con texto no vacío y sin caracteres nulos.`,saved:`Prompts guardados`,unsaved:`Cambios sin guardar`,discard:`Descartar cambios`,save:`Guardar prompts`,fixerHint:`Solo se usa en rondas de corrección: tras una verificación fallida o una revisión rechazada. Corre en el motor del desarrollador salvo que Ajustes ▸ Motor de agentes ▸ Corrector indique uno propio. Un proveedor CLI que reanuda la sesión del desarrollador recibe el seguimiento breve de corrección; la definición se aplica siempre que arranca una sesión nueva (motores locales, motor corrector, sesión perdida).`},w={title:`Eficiencia de implementación`,scope:`Se aplica a nuevas ejecuciones. Las guardadas conservan su configuración y runtime originales.`,effort:`Esfuerzo de razonamiento`,providerDefault:`Predeterminado del proveedor`,unconfirmed:`Sin confirmar`,unknownSupport:`Compatibilidad sin confirmar para este modelo y transporte. Puedes usar el valor predeterminado del proveedor.`,escalation:`Permitir un nivel superior con el mismo proveedor`,baseRequired:`Selecciona primero un modelo base explícito.`,escalationModel:`Modelo del nivel superior`,triggers:{architect:`Solo puede activarse en la pasada adicional de investigación ya permitida.`,developer:`Tras dos candidatos fallidos, puede activarse en el siguiente intento permitido.`,reviewer:`Solo puede activarse para reparar una respuesta mal formada; rechazar código no lo activa.`,fixer:`Solo una ronda de corrección puede alcanzar este nivel; las primeras pasadas nunca ejecutan el corrector.`},contextMode:`Contexto de repositorios`,reviewMode:`Revisión de correcciones`,planning:`Profundidad del plan`,adaptive:`Adaptativa`,full:`Completa`,developerChecks:`Aceptar checks adicionales propuestos por el developer`,concurrency:`Máximo de checks simultáneos`,concurrencyHint:`Por defecto, 1. Solo se solapan checks declarados independientes por el host en repositorios distintos. La reutilización está desactivada por defecto.`,checkCapabilities:`Comprobar compatibilidad de modelos`,capabilitiesFailed:`No se pudo confirmar la compatibilidad. Actualiza el Core emparejado o conserva los valores predeterminados del proveedor.`},T={title:`Evidencia de verificación`,acceptance:`Aceptación técnica`,acceptanceStatus:{pending:`Pendiente`,validated:`Validada`,"with-exceptions":`Con excepciones`,blocked:`Bloqueada`},calls:`Llamadas de agentes`,executed:`Checks ejecutados`,reused:`Checks reutilizados`,unknown:`No disponible`,unavailable:`La evidencia no está disponible para esta ejecución. El resultado registrado no confirma su validez actual.`,current:`Candidato y plan actuales`,historical:`Resultado histórico`,moreChecks:`Más checks`,output:`Salida de verificación`,empty:`Sin salida`,truncated:`Esta es una página limitada o una captura truncada.`,nextPage:`Siguiente página de salida`,status:{passed:`Correcto`,failed:`Fallido`,cancelled:`Cancelado`,interrupted:`Interrumpido`},disposition:{executed:`Ejecutado`,reused:`Reutilizado`,"not-run":`No ejecutado`},origin:`Origen`,origins:{host:`Host`,architect:`Arquitecto`,developer:`Desarrollador`,"frozen-runtime-config":`Configuración guardada`,"project-role":`Rol del proyecto`,default:`Por defecto`,"explicit-launch-override":`Proveedor elegido para el lanzamiento`,"loop-role":`Rol del loop`},reuseDisabled:`Reutilización desactivada para esta comprobación.`,reuseConfirmed:`Reutilizado tras comprobar entradas y herramientas idénticas.`,inputsChanged:`Las entradas cambiaron durante la verificación; resultado invalidado.`,reuseUnproven:`No hay un resultado vigente con entradas idénticas demostradas; se ejecutó de nuevo.`,original:`Ejecución original`,requested:`Solicitado`,reported:`Reportado`},E={title:`Roles del loop`,hint:`Motores de los roles del loop cuando un rail se lanza con el motor «Roles». Los roles del pipeline de arriba (architect, developer, reviewer) ya salen de esta configuración del runtime.`,verifier:`Verificador`,verifierHint:`Todos los pasos de IA del loop ajenos al core: verify, fix y pasos de IA personalizados.`,decider:`Decisor`,deciderHint:`El Loop Decider que lee el veredicto y decide el siguiente paso: lo natural es un modelo barato y rápido.`,inherit:`Heredar el principal`,model:`Modelo`,effort:`Esfuerzo de razonamiento`,disabled:`El runtime de agentes está desactivado: los rails lanzados con el motor «Roles» se rechazan hasta que se active.`,saveFailed:`No se pudieron guardar los roles del loop.`},D={title:`Pipeline de implementación`,explainer:`Estas fases se ejecutan en este orden en cada implementación. Cuando el motor del rail es «{{roles}}», cada fase usa el motor configurado abajo: un proveedor, modelo y esfuerzo distintos por fase. Si eliges un motor concreto en el rail, todas las fases se ejecutan con ese motor.`,host:`Host`,noCommand:`sin comando`,inherits:`Hereda el principal`,inheritsDeveloper:`Hereda del desarrollador`,open:`Abrir`,collapse:`Contraer`,groups:{core:{title:`Pipeline principal`,hint:`Se ejecuta dentro de cada implementación: planificar, construir, verificar, corregir, revisar.`},loop:{title:`Pasos del loop`,hint:`Pasos de IA del loop del rail que envuelve la ejecución (verificar → decidir → corregir) y de los loops personalizados; heredan el motor principal si no se configuran.`,chip:`loop del rail`}},phases:{architect:{name:`Arquitecto`,purpose:`Lee el código y escribe la propuesta, el diseño y las tareas.`},developer:{name:`Desarrollador`,purpose:`Implementa las tareas con tests.`},verification:{name:`Verificación`,purpose:`El host ejecuta tus comprobaciones; los fallos vuelven al desarrollador.`},fixer:{name:`Corrector`,purpose:`Corrige lo que la verificación o la revisión rechazan; hereda del desarrollador si no se configura.`},reviewer:{name:`Revisor`,purpose:`Contrasta el resultado con la spec y las evidencias.`},verifier:{name:`Verificador`,purpose:`Pasos de IA verify, fix y personalizados del loop.`},decider:{name:`Decisor`,purpose:`Lee el veredicto y decide el siguiente paso del loop.`}}},O={title:`Motor del corrector`,inherit:`Heredar desarrollador`,own:`Motor propio`,hint:`Solo se ejecuta en rondas de corrección: tras una verificación fallida o una revisión rechazada; las primeras pasadas siguen en el desarrollador. Un modelo más potente o en la nube aquí compensa cuando el desarrollador es un modelo local barato.`},k={title:`Barandillas`,intro:`Reglas de proceso que el host aplica alrededor de los modelos locales para que un modelo pequeño no descarrile. Todas activas por defecto; desactiva una solo para ajustar el proceso. Los proveedores CLI nunca se ven afectados.`,unsupported:`Esta instalación de Core no expone barandillas configurables. Actualiza Core para ajustarlas; las reglas integradas siguen aplicándose.`,active:`{{on}} de {{total}} activas`,reset:`Restablecer valores por defecto`,phases:{architect:`Arquitecto`,developer:`Desarrollador`,host:`Host`},unknown:`Una barandilla añadida por un Core más reciente; esta app aún no tiene descripción para ella.`,items:{"plan-validation":{title:`Plan de tareas validado`,description:`Rechaza planes que apuntan a openspec/, listan nombres de archivo sueltos como tareas, tienen muy pocas tareas/grupos para la spec o dejan criterios de aceptación sin cubrir; el arquitecto reintenta.`,why:`Un plan vago o incompleto es la causa nº 1 de que un modelo desarrollador pequeño escriba stubs.`},"genuine-blocking-question":{title:`Solo preguntas bloqueantes reales`,description:`El arquitecto solo puede pausar la ejecución con una pregunta real terminada en '?', nunca con texto de ejemplo copiado.`,why:`Los modelos pequeños repiten los marcadores del prompt y bloquearían todas las ejecuciones.`},"plan-language-hint":{title:`Planificar en el lenguaje del repositorio`,description:`Indica al arquitecto el lenguaje principal para que los nombres de archivo de las tareas lleven la extensión correcta.`,why:`Un plan en JS sobre un repo TypeScript hace imposible marcar las tareas.`},"frozen-plan-writes":{title:`Los artefactos de planificación están congelados`,description:`El desarrollador no puede escribir bajo openspec/; el plan pertenece al host.`,why:`Los modelos 'implementan' editando el plan en vez del código.`},"primary-language":{title:`Recordatorio del lenguaje principal`,description:`A cada grupo de tareas se le indica el lenguaje principal del repositorio; los archivos nuevos deben usarlo.`,why:`Evita una segunda implementación en otro lenguaje.`},"duplicate-sibling":{title:`Sin módulos gemelos entre lenguajes`,description:`Rechaza board.js cuando ya existe board.ts; amplía el módulo existente.`,why:`Los gemelos compilan ambos y los tests importan el equivocado.`},"one-test-per-module":{title:`Un archivo de test por módulo`,description:`Rechaza board.tick.test.ts cuando existe board.test.ts; amplíalo en su lugar.`,why:`Si no, cada pasada de corrección añade una suite nueva.`},"empty-write":{title:`Sin sobrescrituras vacías`,description:`Se rechaza una escritura vacía sobre un archivo con contenido; escribe el contenido completo o parchéalo.`,why:`Una pasada de 'limpieza' dejó una vez index.ts con 0 líneas.`},"evidence-gated-ticking":{title:`Evidencia antes de marcar una tarea`,description:`Una tarea que nombra archivos solo está hecha cuando existen y no son stubs (se aceptan extensiones hermanas).`,why:`Sin esto, 'hecho' es solo una afirmación y verify se ejecuta contra nada.`},"inventory-retry":{title:`Reintentar con el inventario real`,description:`Cuando el modelo abandona afirmando que el repo está vacío sin estarlo, reintenta una vez con la lista de archivos.`,why:`Segunda oportunidad barata en vez de un paso fallido.`},"synthetic-corrections":{title:`Convertir el feedback en tareas`,description:`Cuando todas las tareas están marcadas pero review/verify fallaron, el feedback se convierte en tareas de corrección concretas.`,why:`Si no, el desarrollador informa 'ya está hecho' y nada cambia.`},"silent-group-closure":{title:`Cerrar grupos silenciosos, conservar sus archivos`,description:`Un grupo cuyo modelo deja de responder se cierra acreditando los archivos que escribió y dejando sus tareas abiertas, en vez de fallar la ejecución.`,why:`Un modelo 9B escribió cinco módulos, enmudeció y toda la ejecución falló.`},"environment-repair":{title:`El host repara el entorno`,description:`Las dependencias o herramientas de test que faltan (npm install, ts-jest, @types/jest, módulos de config de Jest) las instala el host y verify se reejecuta una vez.`,why:`El modelo no puede arreglar el entorno y quema correcciones intentándolo.`},"lockfile-repair":{title:`Descartar lockfiles escritos a mano`,description:`Un package-lock.json inventado por el modelo (EINTEGRITY/ETARGET) se elimina y la instalación se reintenta una vez.`,why:`Los hashes inventados nunca se instalan.`},"verify-idle-timeout":{title:`Detener tests colgados`,description:`Un comando de verificación sin salida durante 5 minutos se detiene y se informa como probable cuelgue (con la última salida).`,why:`Si no, un bucle while en un test retiene la ejecución hasta el límite de 15 minutos.`},"verify-per-group":{title:`Verificar tras cada grupo`,description:`Ejecuta el comando de test del repositorio justo después de cada grupo de tareas; un fallo recibe una ronda de corrección inmediata con el contexto del grupo aún fresco.`,why:`Cinco suites rotas al final son mucho más difíciles de arreglar que una cada vez.`},"test-reachability":{title:`Todo test nuevo debe ejecutarse`,description:"Un fichero de test que el developer escribe y que el comando de test del repositorio nunca ejecuta (un script `test` que enumera y omite el fichero nuevo) hace fallar la verificación nombrando el fichero exacto, primero a nivel de grupo y de nuevo en la verificación del host.",why:`Una suite de 622 líneas con seis casos rotos llegó en verde porque nada la ejecutó jamás.`},"exit-code-honesty":{title:`Desconfiar de un exit 0 que reporta fallos`,description:'Un comando de verificación que sale con 0 mientras su salida imprime fallos (líneas `FAIL:`, "3 failed", un AssertionError) se trata como FALLIDO y pasa al corrector con el harness señalado como el defecto.',why:`Un runner de tests casero que nunca ponía exit code distinto de 0 entregó tres tests rojos como verdes.`},"verification-output-adoption":{title:`Adoptar lo que escriben las propias comprobaciones`,description:`Si la verificación pasa pero sus comandos reescriben archivos versionados (un paso de lint que regenera un mapeo), el host conserva esos archivos en el candidato y verifica una vez más; el reviewer y el fixer no deben revertirlos.`,why:`Un paso previo de lint que regeneraba un archivo versionado hacía que cada ejecución en verde pareciera un candidato modificado y gastaba correcciones en algo que no era un defecto.`}}},A=`Cambios sin guardar`,j={title:`Roles personalizados`,hint:`Define instrucciones reutilizables y permisos explícitos para los roles del flujo.`,unsupported:`Actualiza Core para editar roles personalizados.`,remove:`Eliminar {{id}}`,access:`Acceso al código`,read:`Solo lectura`,write:`Lectura y escritura`,artifacts:`Acceso a artefactos OpenSpec`,none:`Ninguno`,tasks:`Solo casillas de tareas`,all:`Todos los artefactos del cambio`,skill:`Skill de OpenSpec`,noSkill:`Sin skill asociado`,prompt:`Instrucciones del rol`,id:`ID del rol`,add:`Añadir rol`,invalidId:`Usa un ID único en minúsculas que empiece por una letra, con hasta 64 letras, números o guiones. Los IDs integrados están reservados.`,escalationHint:`Solo una reparación permitida del protocolo puede usar el modelo de escalado. No se añade ningún reintento.`},M={title:`Instrucciones de ejecución`,hint:`Core guarda estas instrucciones para el siguiente turno de agente compatible. Enviarlas no responde preguntas ni concede aprobaciones.`,label:`Instrucciones adicionales`,send:`Enviar instrucciones`,accepted:`Recibidas por Core; pendientes de consumo.`,pending:`Pendientes de un turno de agente`,consumed:`Consumidas por un agente`,counts:`Pendientes: {{pending}} · Consumidas: {{consumed}}`,failed:`No se pudieron enviar las instrucciones. Reintenta para confirmar el mismo mensaje.`,unavailable:`Los detalles de los recibos no están disponibles.`,unreported:`Esta versión de Core no informa del consumo.`,truncated:`Solo se muestran los recibos más recientes y los mensajes pendientes.`},N={title:`Valores predeterminados del rol de Core`,hint:`Estos valores del archivo se aplican a workflows nuevos. La configuración explícita del proyecto tiene prioridad; las ejecuciones guardadas conservan su configuración congelada.`,invalid:`Corrige el encabezado YAML en el editor antes de cambiar los campos del rol.`,escalationEffort:`Esfuerzo de razonamiento del modelo superior`},P={title:`Conservación del historial`,description:`Elimina historiales caducados y versiones de Core sin uso. Los historiales eliminados no pueden reanudarse ni bifurcarse. Se protegen las ejecuciones activas o recuperables y las entregas pendientes; se conservan los registros de trabajos y costes.`,forever:`Conservar el historial indefinidamente`,days:`Días de conservación`,save:`Guardar conservación`,preview:`Previsualizar limpieza`,collect:`Eliminar historial caducado`,previewSummary:`Elegibles: {{runs}} historiales y {{packages}} versiones de Core sin uso.`,collectedSummary:`Caducados: {{runs}} historiales. Eliminadas: {{packages}} versiones de Core sin uso.`,more:`{{count}} ejecuciones adicionales.`,failed:`No se pudo consultar o actualizar la conservación.`,expired:`El historial de esta ejecución ha caducado según la política del proyecto. Se conservan su registro de trabajo y contabilidad.`,loading:`Cargando política de conservación…`,states:{protected:`Conservado`,eligible:`Elegible`,expired:`Caducado`,cleanup_pending:`Limpieza pendiente`,busy:`En uso`,error:`Error de inspección`},reasons:{disabled:`Conservación indefinida`,recoverable:`Todavía puede recuperarse`,active:`Ejecución activa`,human_pending:`Espera una respuesta humana`,interrupted_writes:`Hay escrituras interrumpidas por revisar`,delivery_pending:`Entrega pendiente`,fork_pending:`Queda una bifurcación dependiente`,unknown_terminal_time:`Se desconoce la fecha de finalización`,within_retention:`Dentro del plazo de conservación`}},F={title:`Agentes del loop`,hint:`Estas definiciones se comparten entre todos los proyectos que usan este loop. Duplica el loop para personalizar otro flujo.`,legacy:`Este loop guardado todavía usa los agentes históricos del proyecto. Impórtalos o activa los agentes del loop para cambiar su configuración.`,enable:`Usar agentes del loop`,import:`Importar agentes del proyecto actual`,restoreDefinition:`Usar la definición de Core`,default:`Predeterminado del proveedor`,effort:`Esfuerzo de razonamiento`,escalationModel:`Modelo de escalado`,escalationEffort:`Esfuerzo de escalado`,policy:`Política del workflow`,maxAttempts:`Máximo de intentos de corrección`,maxTokens:`Presupuesto de tokens`,maxCostUsd:`Presupuesto de coste (USD)`,timeoutMs:`Tiempo límite (ms)`,projectHint:`Configura aquí las comprobaciones del repositorio. Las definiciones, modelos y políticas de los agentes se configuran en el editor de loops. Puedes importar los agentes históricos del proyecto a un loop duplicado.`,showUnused:`Mostrar también agentes no usados en este loop`,stepTitle:`Agente y opciones del paso`,stepHint:`Edita la definición y el motor del agente de este paso. Los pasos del mismo loop que usan este rol comparten estos ajustes.`,inheritProvider:`Heredar proveedor de la misión`,inheritDefinition:`Sigue la definición de Core: cada actualización de Core la renueva automáticamente.`,customizeDefinition:`Personalizar para este loop`,coreDefinitionUnavailable:`Vista previa no disponible hasta instalar un runtime de Core.`,turnLimits:{title:`Límites de turnos`,hint:`Cada llamada a una herramienta del agente cuenta como un turno. Si un paso se detiene con "reached the configured limit of N turns", sube aquí su límite, guarda y publica; los lanzamientos nuevos lo usarán. Vacío usa el valor por defecto de Core ({{turns}}). Los Ajustes del proyecto no cambian las ejecuciones de loops.`,role:`Rol {{role}}`,input:`Máximo de turnos de {{steps}} (rol {{role}})`,stepHint:`El rol {{role}} se detiene tras {{turns}} turnos. Los pasos que comparten este rol comparten el límite; se aplica a los lanzamientos nuevos tras publicar.`}},I={label:`Sugerencia de familia de modelos para el revisor`,title:`Ejecuta el revisor con {{provider}}: una familia de modelos distinta detecta errores distintos`,body:`El desarrollador y el revisor usan ahora el mismo proveedor. Es solo una sugerencia: no cambia nada a menos que la apliques.`,apply:`Aplicar`,dismiss:`Descartar`},L={title:`Motor del triaje de specs`,hint:`El triaje lee cada spec nueva o editada y recomienda el loop con el que lanzarla. Es una llamada breve y estructurada por spec. Por defecto usa el proveedor principal del proyecto con su modelo más barato.`,provider:`Proveedor del triaje`,inherit:`Proveedor principal`,model:`Modelo`,cheapestModel:`Modelo más barato (por defecto)`,loading:`Cargando el motor del triaje…`,loadFailed:`No se pudo leer el motor del triaje. El triaje sigue usando el proveedor principal; vuelve a abrir estos ajustes para reintentarlo.`,saveFailed:`No se guardó el motor del triaje. Se mantiene la elección anterior.`},R={title:e,description:t,loading:n,loadFailed:r,retry:i,unavailable:a,save:o,saving:s,saved:c,saveFailed:l,approvalBeforeArchive:u,providers:d,cliNames:f,roles:p,agents:m,limits:h,verification:g,setup:_,runs:v,roleHints:y,review:b,architect:x,metrics:S,prompts:C,efficiency:w,evidence:T,loopRoles:E,pipeline:D,fixer:O,guardrails:k,unsavedChanges:A,customRoles:j,steering:M,studioRole:N,retention:P,loopAgents:F,reviewerSuggestion:I,triageEngine:L};export{m as agents,u as approvalBeforeArchive,x as architect,f as cliNames,j as customRoles,R as default,t as description,w as efficiency,T as evidence,O as fixer,k as guardrails,h as limits,r as loadFailed,n as loading,F as loopAgents,E as loopRoles,S as metrics,D as pipeline,C as prompts,d as providers,P as retention,i as retry,b as review,I as reviewerSuggestion,y as roleHints,p as roles,v as runs,o as save,l as saveFailed,c as saved,s as saving,_ as setup,M as steering,N as studioRole,e as title,L as triageEngine,a as unavailable,A as unsavedChanges,g as verification};