specrails-desktop 2.46.0 → 2.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/README.md +2 -0
  2. package/client/dist/assets/{ActivityFeedPage-CsHQPpvl.js → ActivityFeedPage-CGq6QhP5.js} +1 -1
  3. package/client/dist/assets/AgentBrowserCapture-C4GZ-kdf.js +1 -0
  4. package/client/dist/assets/AgentModeAnalyticsPane-_IPmL0ZS.js +2 -0
  5. package/client/dist/assets/AgentModeCodePane-B5WG5DOP.js +2 -0
  6. package/client/dist/assets/{AgentModeJobsPane-rnD-EPMd.js → AgentModeJobsPane-w1N_HIXh.js} +1 -1
  7. package/client/dist/assets/AgentsPage-CmwnnT46.js +87 -0
  8. package/client/dist/assets/AnalyticsPage-BUMsKtsJ.js +1 -0
  9. package/client/dist/assets/CodePage-PjgywJPS.js +3 -0
  10. package/client/dist/assets/DesktopAnalyticsPage-BXY1pH4y.js +1 -0
  11. package/client/dist/assets/DocsDialog-ccQETHKB.js +11 -0
  12. package/client/dist/assets/DocsPage-DzEgplB3.js +11 -0
  13. package/client/dist/assets/{ExportDropdown-pWZGYCv3.js → ExportDropdown-B8bBGopr.js} +1 -1
  14. package/client/dist/assets/InteractiveJobComposer-CEwGkJ8F.js +19 -0
  15. package/client/dist/assets/JobDetailModal-BYXmuTDe.js +1 -0
  16. package/client/dist/assets/JobDetailPage-CWp6MwJj.js +1 -0
  17. package/client/dist/assets/JobsPage-D1O1uyG8.js +1 -0
  18. package/client/dist/assets/{LoopBuilderPage-CtmOE4-b.js → LoopBuilderPage-DQE-7Vby.js} +2 -2
  19. package/client/dist/assets/{LoopPreviewModal-BYeLjQbr.js → LoopPreviewModal-Bk7zIXD5.js} +1 -1
  20. package/client/dist/assets/LoopsPage-CqG7mx56.js +1 -0
  21. package/client/dist/assets/MinimizedChatsContext-UpnqccPx.js +1 -0
  22. package/client/dist/assets/PluginsPage-CjgVvmpW.js +2 -0
  23. package/client/dist/assets/{ProjectSettingsDialog-DsCRIc4v.js → ProjectSettingsDialog-D6vBCoay.js} +1 -1
  24. package/client/dist/assets/{RepositoryDeliveries-BQm_3TO8.js → RepositoryDeliveries-C36ipKp_.js} +1 -1
  25. package/client/dist/assets/{RepositoryScopeSelector-DnAFtjTz.js → RepositoryScopeSelector-0Gz_fR1E.js} +1 -1
  26. package/client/dist/assets/ReviewPacketPage-Dr9RYs7q.js +1 -0
  27. package/client/dist/assets/TemplatePreviewModal-sCMHYFJo.js +1 -0
  28. package/client/dist/assets/TicketDetailModalContext-C5GgJlEt.js +14 -0
  29. package/client/dist/assets/{Trans-BwLgX6n7.js → Trans-9pHTy2fH.js} +1 -1
  30. package/client/dist/assets/{addspec-D2YIQ0GU.js → addspec-BOvgmcgk.js} +1 -1
  31. package/client/dist/assets/{addspec-B_TPJt-R.js → addspec-Clmyfn_R.js} +1 -1
  32. package/client/dist/assets/{addspec-A1lDQa4M.js → addspec-CsNaBpHp.js} +1 -1
  33. package/client/dist/assets/{addspec-CQBjzt24.js → addspec-D2tvWmmV.js} +1 -1
  34. package/client/dist/assets/{addspec-CLYLvaVP.js → addspec-D3nFwvD0.js} +1 -1
  35. package/client/dist/assets/{addspec-BPpZ_olp.js → addspec-DVLEhK3w.js} +1 -1
  36. package/client/dist/assets/{addspec-iFdQ6D99.js → addspec-DXbK-tb0.js} +1 -1
  37. package/client/dist/assets/{addspec-BHZd0N5F.js → addspec-OHG8DFEn.js} +1 -1
  38. package/client/dist/assets/agentRuntime-BUimiX__.js +1 -0
  39. package/client/dist/assets/agentRuntime-BcN97sAB.js +1 -0
  40. package/client/dist/assets/agentRuntime-Ckyg-ahT.js +1 -0
  41. package/client/dist/assets/agentRuntime-DJCwyX4t.js +1 -0
  42. package/client/dist/assets/agentRuntime-DVzPJOl0.js +1 -0
  43. package/client/dist/assets/agentRuntime-V9AZTG3c.js +1 -0
  44. package/client/dist/assets/agentRuntime-bAAjw1vw.js +1 -0
  45. package/client/dist/assets/agentRuntime-v4qKAYH-.js +1 -0
  46. package/client/dist/assets/{agents-45GbINfh.js → agents-CA5eT1d0.js} +1 -1
  47. package/client/dist/assets/{agents-DMKFStHL.js → agents-CAgy-5uS.js} +1 -1
  48. package/client/dist/assets/{agents-IUOgqT5t.js → agents-CNm6Qzlv.js} +1 -1
  49. package/client/dist/assets/{agents-ms7TwG16.js → agents-CTwbx-fb.js} +1 -1
  50. package/client/dist/assets/{agents-DaYcxAr1.js → agents-DEGV1Vao.js} +1 -1
  51. package/client/dist/assets/{agents-BHp0_FQt.js → agents-HsDF1aQU.js} +1 -1
  52. package/client/dist/assets/{agents-Bvyi3y6R.js → agents-IQjdA-z9.js} +1 -1
  53. package/client/dist/assets/{agents-rzPnqoBR.js → agents-RkGoteXh.js} +1 -1
  54. package/client/dist/assets/analytics-BNgZ1Nj7.js +1 -0
  55. package/client/dist/assets/analytics-BlypLLR6.js +1 -0
  56. package/client/dist/assets/analytics-CoEzWPx4.js +1 -0
  57. package/client/dist/assets/analytics-DFh5lSOl.js +1 -0
  58. package/client/dist/assets/analytics-DZp-DS2U.js +1 -0
  59. package/client/dist/assets/analytics-DjLlE7jS.js +1 -0
  60. package/client/dist/assets/analytics-jzCkOec3.js +1 -0
  61. package/client/dist/assets/analytics-nZIjjtCc.js +1 -0
  62. package/client/dist/assets/{dashboard-BK_mez-z.js → dashboard-C29Qwa-L.js} +1 -1
  63. package/client/dist/assets/{dashboard-BwkjxI6H.js → dashboard-CSJzf5OT.js} +1 -1
  64. package/client/dist/assets/{dashboard-C3bDKf7s.js → dashboard-CTfEtkqX.js} +1 -1
  65. package/client/dist/assets/{dashboard-Bt0cCzeG.js → dashboard-Cr4D8oMn.js} +1 -1
  66. package/client/dist/assets/{dashboard-fRrP0Kv0.js → dashboard-Csf1yGSN.js} +1 -1
  67. package/client/dist/assets/{dashboard-CdvjGfog.js → dashboard-D40HP2ks.js} +1 -1
  68. package/client/dist/assets/dashboard-DBAP2_SQ.js +1 -0
  69. package/client/dist/assets/{dashboard-B14uYXkG.js → dashboard-DMklepmz.js} +1 -1
  70. package/client/dist/assets/file-text-CFT-xXKN.js +1 -0
  71. package/client/dist/assets/{formatDistanceToNow-CeZv93iR.js → formatDistanceToNow-w_2U5pm0.js} +1 -1
  72. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-DxAkjvJb.js → getTimezoneOffsetInMilliseconds-BRymg1Kk.js} +1 -1
  73. package/client/dist/assets/index-D0ScFZvR.css +2 -0
  74. package/client/dist/assets/index-DORCrgbI.js +77 -0
  75. package/client/dist/assets/jira-api-BqHbSdxK.js +1 -0
  76. package/client/dist/assets/jobs-C6qmvUAi.js +1 -0
  77. package/client/dist/assets/jobs-C9j2PuwW.js +1 -0
  78. package/client/dist/assets/jobs-DLHdDkHc.js +1 -0
  79. package/client/dist/assets/jobs-DSp9DoD_.js +1 -0
  80. package/client/dist/assets/jobs-DTQO08nJ.js +1 -0
  81. package/client/dist/assets/jobs-DoFaEl9g.js +1 -0
  82. package/client/dist/assets/jobs-Dpw6AEOP.js +1 -0
  83. package/client/dist/assets/jobs-DrF8Do8s.js +1 -0
  84. package/client/dist/assets/{narration-BSldQfjd.js → narration--hUhjM5v.js} +1 -1
  85. package/client/dist/assets/{narration-DKLjXIFI.js → narration-CHI06czm.js} +1 -1
  86. package/client/dist/assets/{narration-4OSg0b5-.js → narration-DjKB3pQZ.js} +1 -1
  87. package/client/dist/assets/{narration-BPMOQPFe.js → narration-DtCYvRLM.js} +1 -1
  88. package/client/dist/assets/{narration-D-e9ssxA.js → narration-DvLQBW9U.js} +1 -1
  89. package/client/dist/assets/{narration-DnrKC3mF.js → narration-eSx3gR0W.js} +1 -1
  90. package/client/dist/assets/{narration-Dypjxeel.js → narration-n3hOA7LY.js} +1 -1
  91. package/client/dist/assets/{narration-CvQdWdR5.js → narration-thJOeT2-.js} +1 -1
  92. package/client/dist/assets/packet-BNW8ODQw.js +1 -0
  93. package/client/dist/assets/packet-CXYvfdjy.js +1 -0
  94. package/client/dist/assets/packet-CtIlB8YE.js +1 -0
  95. package/client/dist/assets/packet-DA1SJkMH.js +1 -0
  96. package/client/dist/assets/packet-DYcWfBip.js +1 -0
  97. package/client/dist/assets/packet-DseX9yKC.js +1 -0
  98. package/client/dist/assets/packet-_m5aOy_d.js +1 -0
  99. package/client/dist/assets/packet-qOemUAm3.js +1 -0
  100. package/client/dist/assets/{project-repositories-BvBj9XH9.js → project-repositories-BsCs1PPA.js} +1 -1
  101. package/client/dist/assets/provider-capabilities-Vi1ZGvAK.js +1 -0
  102. package/client/dist/assets/settings-BsehKpty.js +1 -0
  103. package/client/dist/assets/settings-CQWob3SB.js +1 -0
  104. package/client/dist/assets/settings-CgCl0hzy.js +1 -0
  105. package/client/dist/assets/settings-DLRLd22L.js +1 -0
  106. package/client/dist/assets/settings-Dn5prAFl.js +1 -0
  107. package/client/dist/assets/settings-HZSu-K4l.js +1 -0
  108. package/client/dist/assets/{settings-DEgcA0jd.js → settings-p4OVIyRh.js} +1 -1
  109. package/client/dist/assets/settings-rddaldUp.js +1 -0
  110. package/client/dist/assets/setup-B5FHuxvB.js +1 -0
  111. package/client/dist/assets/setup-BihzXadx.js +1 -0
  112. package/client/dist/assets/setup-BtC6Hg4K.js +1 -0
  113. package/client/dist/assets/setup-C9Fy9PKQ.js +1 -0
  114. package/client/dist/assets/setup-CROyqD5N.js +1 -0
  115. package/client/dist/assets/setup-DpqzaEEA.js +1 -0
  116. package/client/dist/assets/setup-Dwzt5nO1.js +1 -0
  117. package/client/dist/assets/setup-zLEDnG7N.js +1 -0
  118. package/client/dist/assets/{spending-DNM6NAoA.js → spending-hcgxHP4O.js} +1 -1
  119. package/client/dist/assets/{useDesktop-mxHVQOdx.js → useDesktop-CAisjKWC.js} +1 -1
  120. package/client/dist/assets/{useSharedWebSocket-DnxHj8jP.js → useSharedWebSocket-BHIfW4QT.js} +2 -2
  121. package/client/dist/assets/wrench-BfmNO9Vw.js +1 -0
  122. package/client/dist/index.html +27 -26
  123. package/docs/guide/de/integrations/7-local-engines.md +37 -0
  124. package/docs/guide/en/integrations/7-local-engines.md +37 -0
  125. package/docs/guide/es/integrations/7-local-engines.md +37 -0
  126. package/docs/guide/fr/integrations/7-local-engines.md +37 -0
  127. package/docs/guide/it/integrations/7-local-engines.md +37 -0
  128. package/docs/guide/ja/integrations/7-local-engines.md +37 -0
  129. package/docs/guide/pt/integrations/7-local-engines.md +37 -0
  130. package/docs/guide/zh/integrations/7-local-engines.md +37 -0
  131. package/docs/internals/adding-a-provider.md +12 -0
  132. package/docs/internals/local-agent-runner.md +153 -0
  133. package/docs/internals/review-packet.md +8 -0
  134. package/docs/local-providers.md +215 -0
  135. package/docs/plans/implementation-efficiency-artifact.json +18 -0
  136. package/docs/plans/implementation-efficiency-evaluation.json +1817 -0
  137. package/docs/plans/implementation-efficiency-evaluation.md +41 -0
  138. package/docs/plans/implementation-efficiency-progress.md +48 -0
  139. package/docs/plans/implementation-efficiency-release.md +41 -0
  140. package/docs/plans/implementation-efficiency.md +124 -0
  141. package/local-runner/dist/specrails-local-runner.js +15815 -0
  142. package/package.json +7 -5
  143. package/server/dist/agent-chat-manager.js +8 -1
  144. package/server/dist/agent-chat-router.js +5 -2
  145. package/server/dist/agent-fence-promotion.js +53 -0
  146. package/server/dist/agent-mcp-config.js +4 -1
  147. package/server/dist/agent-runtime-bridge.js +35 -26
  148. package/server/dist/agent-runtime-controls-router.js +20 -1
  149. package/server/dist/agent-runtime-controls.js +94 -12
  150. package/server/dist/agent-runtime-effective-config.js +53 -0
  151. package/server/dist/agent-runtime-events.js +46 -0
  152. package/server/dist/agent-runtime-history.js +47 -0
  153. package/server/dist/agent-runtime-loader.js +84 -5
  154. package/server/dist/agent-runtime-metrics.js +77 -1
  155. package/server/dist/agent-runtime-package.js +205 -0
  156. package/server/dist/agent-runtime-settings-router.js +96 -5
  157. package/server/dist/agent-runtime-settings.js +163 -7
  158. package/server/dist/agent-spec-framing.js +10 -4
  159. package/server/dist/binary-probe.js +12 -0
  160. package/server/dist/blueprint-router.js +3 -2
  161. package/server/dist/chat-manager.js +5 -1
  162. package/server/dist/desktop-router.js +87 -4
  163. package/server/dist/index.js +13 -0
  164. package/server/dist/interactive-job-session.js +3 -1
  165. package/server/dist/local-engine-detection.js +118 -0
  166. package/server/dist/loop-executors.js +4 -3
  167. package/server/dist/loop-role-engines.js +129 -0
  168. package/server/dist/loop-run-manager.js +14 -6
  169. package/server/dist/mcp/tools/app-settings.js +30 -4
  170. package/server/dist/mcp/tools/rails.js +2 -1
  171. package/server/dist/pr-body.js +11 -2
  172. package/server/dist/pricing.js +15 -0
  173. package/server/dist/provider-detection.js +63 -1
  174. package/server/dist/provider-selection.js +26 -1
  175. package/server/dist/providers/index.js +4 -1
  176. package/server/dist/providers/local-adapter-registry.js +56 -0
  177. package/server/dist/providers/local-adapter.js +426 -0
  178. package/server/dist/providers/registry.js +39 -4
  179. package/server/dist/rail-isolated-launch.js +4 -3
  180. package/server/dist/rails-router.js +90 -8
  181. package/server/dist/result-event.js +17 -0
  182. package/server/dist/review-packet.js +1 -0
  183. package/server/dist/schemas/agent-runtime.schema.json +28 -3
  184. package/server/dist/schemas/fixtures/runtime-efficiency-summary.v1.json +790 -0
  185. package/server/dist/setup-manager.js +5 -1
  186. package/server/dist/spec-models.js +14 -2
  187. package/server/dist/worktree-node-modules.js +97 -65
  188. package/client/dist/assets/AgentBrowserCapture-BVcCK7x0.js +0 -1
  189. package/client/dist/assets/AgentModeAnalyticsPane-C5F3m29G.js +0 -2
  190. package/client/dist/assets/AgentModeCodePane-C5QuKsu0.js +0 -2
  191. package/client/dist/assets/AgentsPage-DiyJWZcU.js +0 -87
  192. package/client/dist/assets/AnalyticsPage-Dkmb0dnd.js +0 -1
  193. package/client/dist/assets/CodePage-C0dH99-t.js +0 -3
  194. package/client/dist/assets/DesktopAnalyticsPage-DuTjr2n8.js +0 -1
  195. package/client/dist/assets/DocsDialog-BVZJZHVR.js +0 -11
  196. package/client/dist/assets/DocsPage-D6KHTv8V.js +0 -11
  197. package/client/dist/assets/InteractiveJobComposer-Ck3PQxjN.js +0 -19
  198. package/client/dist/assets/JobDetailModal-DkoMH3ie.js +0 -1
  199. package/client/dist/assets/JobDetailPage-CBVivcl2.js +0 -1
  200. package/client/dist/assets/JobsPage-CzxEeca9.js +0 -1
  201. package/client/dist/assets/LoopsPage-6iW7g25k.js +0 -1
  202. package/client/dist/assets/MinimizedChatsContext-B6wVevPq.js +0 -1
  203. package/client/dist/assets/PluginsPage-Bf1z3WPF.js +0 -2
  204. package/client/dist/assets/ReviewPacketPage-CaXAwtR7.js +0 -1
  205. package/client/dist/assets/TemplatePreviewModal-9aRFpJ_J.js +0 -1
  206. package/client/dist/assets/TicketDetailModalContext-B1X5glzV.js +0 -14
  207. package/client/dist/assets/agentRuntime-BUagD2I_.js +0 -1
  208. package/client/dist/assets/agentRuntime-BkL70WtX.js +0 -1
  209. package/client/dist/assets/agentRuntime-CWXVqgqE.js +0 -1
  210. package/client/dist/assets/agentRuntime-CvNBdUAe.js +0 -1
  211. package/client/dist/assets/agentRuntime-D4RmeuNY.js +0 -1
  212. package/client/dist/assets/agentRuntime-DTidBWKg.js +0 -1
  213. package/client/dist/assets/agentRuntime-DhKYfyaU.js +0 -1
  214. package/client/dist/assets/agentRuntime-LL8_GLx9.js +0 -1
  215. package/client/dist/assets/analytics-47pYygtV.js +0 -1
  216. package/client/dist/assets/analytics-B0vt1g5U.js +0 -1
  217. package/client/dist/assets/analytics-BMzCvrCU.js +0 -1
  218. package/client/dist/assets/analytics-BlFN3Zwx.js +0 -1
  219. package/client/dist/assets/analytics-CZYzL-nR.js +0 -1
  220. package/client/dist/assets/analytics-DAsb9MJ8.js +0 -1
  221. package/client/dist/assets/analytics-FXQlQ2Yt.js +0 -1
  222. package/client/dist/assets/analytics-RnFCNkah.js +0 -1
  223. package/client/dist/assets/dashboard-BfBir_6o.js +0 -1
  224. package/client/dist/assets/file-text-BcLCfcWZ.js +0 -1
  225. package/client/dist/assets/index-Cfh9aaep.css +0 -2
  226. package/client/dist/assets/index-DYoyDWim.js +0 -76
  227. package/client/dist/assets/jira-api-ChjVGJx_.js +0 -1
  228. package/client/dist/assets/jobs-5PQJbdOf.js +0 -1
  229. package/client/dist/assets/jobs-B2B08Oy9.js +0 -1
  230. package/client/dist/assets/jobs-BJZtBbwb.js +0 -1
  231. package/client/dist/assets/jobs-BlWEsQb7.js +0 -1
  232. package/client/dist/assets/jobs-ConfD8xD.js +0 -1
  233. package/client/dist/assets/jobs-DMPU64ms.js +0 -1
  234. package/client/dist/assets/jobs-DojASiTp.js +0 -1
  235. package/client/dist/assets/jobs-kVHkNpB-.js +0 -1
  236. package/client/dist/assets/packet-BQ2tXfJI.js +0 -1
  237. package/client/dist/assets/packet-BdpOJ1Cy.js +0 -1
  238. package/client/dist/assets/packet-C3Ievb9R.js +0 -1
  239. package/client/dist/assets/packet-C4zJIG0Y.js +0 -1
  240. package/client/dist/assets/packet-Cx-zRuWn.js +0 -1
  241. package/client/dist/assets/packet-DUTGX52M.js +0 -1
  242. package/client/dist/assets/packet-DhsKtUPB.js +0 -1
  243. package/client/dist/assets/packet-z3LJ8Zyy.js +0 -1
  244. package/client/dist/assets/provider-capabilities-CXipwrXJ.js +0 -1
  245. package/client/dist/assets/settings-B3rWEwOx.js +0 -1
  246. package/client/dist/assets/settings-BcVoiMyw.js +0 -1
  247. package/client/dist/assets/settings-BlYvaQ7w.js +0 -1
  248. package/client/dist/assets/settings-CD5uEBiL.js +0 -1
  249. package/client/dist/assets/settings-CyhS0DLJ.js +0 -1
  250. package/client/dist/assets/settings-DCMFUGDs.js +0 -1
  251. package/client/dist/assets/settings-DmbYKyMJ.js +0 -1
  252. package/client/dist/assets/setup-2xGgu4Sk.js +0 -1
  253. package/client/dist/assets/setup-Ba11l2JA.js +0 -1
  254. package/client/dist/assets/setup-BzW4kMok.js +0 -1
  255. package/client/dist/assets/setup-COzwYhkJ.js +0 -1
  256. package/client/dist/assets/setup-CRVULhtF.js +0 -1
  257. package/client/dist/assets/setup-DgvlxwpE.js +0 -1
  258. package/client/dist/assets/setup-Dw_wYeEY.js +0 -1
  259. package/client/dist/assets/setup-ZPtEeJPW.js +0 -1
@@ -0,0 +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:`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`},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`},v={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.`},y={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}})`}},b={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`},x={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`},S={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).`},C={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.`},w={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`},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é`},T={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.`},E={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.`}}},D={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é.`},O={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.`}}},k=`Modifications non enregistrées`,A={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,runs:_,roleHints:v,review:y,architect:b,metrics:x,prompts:S,efficiency:C,evidence:w,loopRoles:T,pipeline:E,fixer:D,guardrails:O,unsavedChanges:k};export{m as agents,u as approvalBeforeArchive,b as architect,f as cliNames,A as default,t as description,C as efficiency,w as evidence,D as fixer,O as guardrails,h as limits,r as loadFailed,n as loading,T as loopRoles,x as metrics,E as pipeline,S as prompts,d as providers,i as retry,y as review,v as roleHints,p as roles,_ as runs,o as save,l as saveFailed,c as saved,s as saving,e as title,a as unavailable,k as unsavedChanges,g as verification};
@@ -1 +1 @@
1
- var e={title:`Agents`,subtitle:`Agent-Profile und den Katalog (Upstream + Custom) für dieses Projekt verwalten.`,tabs:{profiles:`Profile`,usage:`Nutzung`,catalog:`Katalog`},banner:{title:`Profilgestützte Pipeline erfordert specrails-core {{required}}+`,body:`Dieses Projekt hat <code>{{version}}</code>. Führe <code>{{command}}</code> im Projekt aus, um den Profilmodus freizuschalten. Hier erstellte Profile werden trotzdem gespeichert; sie wirken sich nur erst nach dem Core-Update auf die Pipeline aus.`,unknownVersion:`unbekannt`}},t={loading:`Katalog wird geladen…`,aiEditChipLabel:`AI Edit · {{agentId}}`,errors:{loadFailed:`Katalog konnte nicht geladen werden: {{status}}`,bodyLoadFailed:`Agent-Inhalt konnte nicht geladen werden: {{status}}`,generateFailed:`Generierung fehlgeschlagen: {{status}}`,agentLoadFailed:`Laden fehlgeschlagen: {{status}}`},templates:{title:`Agent-Vorlagenbibliothek`,countOf:`{{shown}} von {{total}}`,description:`Starte mit einer kuratierten Vorlage aus Engineering, Produkt, Wissenschaft, Gesundheit, Recht und mehr. Wähle eine aus und öffne sie im Studio, um sie vor dem Speichern zu prüfen und zu bearbeiten.`,searchPlaceholder:`Nach Name, Beschreibung, Tag oder Kategorie suchen…`,allCategories:`Alle`,tagFilter:`Tag-Filter:`,noMatch:`Keine Vorlagen entsprechen deinen Filtern.`,clearFilters:`Filter zurücksetzen`,openInStudio:`Im Studio öffnen →`,tip:`Tipp: Klicke auf einen Tag-Chip auf einer Karte, um nach diesem Tag zu filtern.`},generate:{title:`Custom-Agent generieren`,agentIdLabel:`Agent-ID`,agentIdHint:`Muss mit <code>custom-</code> beginnen.`,descriptionLabel:`Beschreibe, was dieser Agent tun soll`,descriptionPlaceholder:`z. B. Terraform-/IaC-Änderungen reviewen und Sicherheits-Fehlkonfigurationen, übermäßige IAM-Berechtigungen und öffentliche S3-Buckets vor dem Merge markieren. Konservativ und knapp.`,note:`Claude entwirft einen vollständigen <code>.md</code>-Inhalt. Du prüfst ihn im Studio und kannst ihn vor dem Speichern bearbeiten. Dabei wird ein einmaliger claude-Aufruf gestartet, der bis zu 90 Sekunden dauern kann.`,generating:`Wird generiert…`,generateButton:`Generieren`},empty:{title:`Keine Agents installiert`,body:`Führe <code>{{command}}</code> in diesem Projekt aus, um die Upstream-Agents zu installieren, oder erstelle jetzt einen Custom-Agent.`},actions:{template:`Vorlage`,templateTitle:`Mit einer Vorlage starten`,generate:`Generieren`,generateWithClaude:`Mit Claude generieren`,generateWithAi:`Mit KI generieren`,blank:`Leer`,blankTitle:`Mit einer leeren Vorlage starten`},sidebar:{title:`Katalog`,createLabel:`Custom-Agent erstellen:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Wird von specrails-core mitgeliefert; schreibgeschützt.`,custom:`Custom ({{count}})`,customDescription:`Die custom-*.md-Dateien deines Projekts. Nutze Vorlage / Generieren / Leer oben, um einen zu erstellen.`,noCustomAgents:`Noch keine Custom-Agents.`},detail:{defaultModel:`Standardmodell: {{model}}`,aiEdit:`AI Edit`,aiEditTitle:`Diesen Agent iterativ mit KI verfeinern`,readOnly:`schreibgeschützt`,editableHint:`bearbeitbar – nutze Bearbeiten oben`},kind:{upstream:`upstream`,custom:`custom`}},n={providerLabel:`Profilanbieter`,loading:`Profile werden geladen…`,selectPrompt:`Wähle ein Profil zum Bearbeiten`,errors:{listFailed:`Auflisten fehlgeschlagen: {{status}}`,loadFailed:`Laden fehlgeschlagen: {{status}}`,migrationFailed:`Migration fehlgeschlagen: {{status}}`,createFailed:`Erstellen fehlgeschlagen: {{status}}`,duplicateFailed:`Duplizieren fehlgeschlagen: {{status}}`,deleteFailed:`Löschen fehlgeschlagen: {{status}}`,saveFailed:`Speichern fehlgeschlagen: {{status}}`},toasts:{migrated:`Profil migriert`,migratedDescription:`default-Profil aus deinen aktuellen Agents erstellt`,migrationFailed:`Migration fehlgeschlagen`,created:`Profil erstellt`,createFailed:`Profil konnte nicht erstellt werden`,duplicated:`Profil dupliziert`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Profil konnte nicht dupliziert werden`,deleted:`Profil gelöscht`,deleteFailed:`Profil konnte nicht gelöscht werden`,saved:`Profil gespeichert`,saveFailed:`Profil konnte nicht gespeichert werden`,savedWithUntargeted:`Profil mit nicht angesteuerten Agents gespeichert`,savedWithUntargetedDescription:`Keine Routing-Regel zeigt auf: {{agents}}. Füge eine Tag-Regel hinzu oder ändere das Ziel der Default-Regel, wenn sie laufen sollen.`},createDialog:{title:`Neues Profil`,description:`Wähle einen Namen in Kleinbuchstaben im kebab-case (Buchstaben, Ziffern und Bindestriche).`,confirmLabel:`Erstellen`,invalidHint:`Muss mit einem Buchstaben oder einer Ziffer beginnen und darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.`},duplicateDialog:{title:`„{{name}}“ duplizieren`,description:`Name für das neue Profil.`,invalidHint:`Nur Kleinbuchstaben im kebab-case.`},deleteDialog:{title:`Profil „{{name}}“ löschen?`,description:`Dies kann nicht rückgängig gemacht werden. Bereits mit diesem Profil gestartete Jobs behalten ihren Snapshot; künftige Starts fallen auf die Auflösungsreihenfolge zurück.`},empty:{title:`Noch keine Profile`,body:`Mit Profilen speicherst du Kombinationen aus Orchestrator + Agents + Routing und wählst pro Rail eines aus.`,migrateButton:`Aus aktuellen Agents migrieren`,blankButton:`Leeres Profil`,migrateExplainer:`„Migrieren“ liest die Frontmatter-Modelle deiner bestehenden <code>.claude/agents/</code>-Dateien und erstellt ein <code>default</code>-Profil, das das heutige Verhalten verlustfrei abbildet.`},sidebar:{title:`Profile`,teamDefault:`(Team-Standard)`},editorFooter:{fixValidationIssues:`Behebe Validierungsprobleme vor dem Speichern`,issuesToResolve_one:`{{count}} Problem zu beheben`,issuesToResolve_other:`{{count}} Probleme zu beheben`}},r={title:`Profilnutzung`,windowLabel:`{{days}}d`,subtitleEmpty:`Gestartete Jobs pro Profil im gewählten Zeitraum.`,subtitle:`Gestartete Jobs pro Profil in den letzten {{count}} Tagen.`,empty:`Noch keine profilgebundenen Jobs.`,jobsTooltip:`Jobs`,jobsLabel_one:`Job`,jobsLabel_other:`Jobs`,successRateTooltip:`Erfolgsquote`,okSuffix:`ok`,avgDurationTooltip:`Ø Dauer`,avgTokensTooltip:`Ø Tokens`,tokensSuffix:`tok`},i={addTitle:`Routing-Regel hinzufügen`,editTitle:`Routing-Regel bearbeiten`,addDescription:`Füge eine Tag-basierte Routing-Regel mit kebab-case-Tags in Kleinbuchstaben hinzu.`,editDescription:`Aktualisiere die Tags oder den Ziel-Agent dieser Regel.`,tagsLabel:`Tags`,tagsHint:`Kommagetrennt. Verwende kebab-case in Kleinbuchstaben wie <code>frontend</code> oder <code>api-design</code>.`,invalidTags_one:`Ungültiger Tag: {{tags}}. Tags dürfen nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.`,invalidTags_other:`Ungültige Tags: {{tags}}. Tags dürfen nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.`,routeToLabel:`Weiterleiten an`,routeToHint:`Nur Agents in der Kette dieses Profils können Routing-Ziele sein.`,addRule:`Regel hinzufügen`,saveChanges:`Änderungen speichern`},a={profileTitle:`Agent-Profil für diese Rail`,noProfile:`Kein Profil`,modelTitle:`Modell für diese Freestyle-Rail`,loopModelTitle:`Modell für diesen Loop`,engineTitle:`KI-Engine für diese Rail`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
1
+ var e={title:`Agents`,subtitle:`Agent-Profile und den Katalog (Upstream + Custom) für dieses Projekt verwalten.`,tabs:{profiles:`Profile`,usage:`Nutzung`,catalog:`Katalog`},banner:{title:`Profilgestützte Pipeline erfordert specrails-core {{required}}+`,body:`Dieses Projekt hat <code>{{version}}</code>. Führe <code>{{command}}</code> im Projekt aus, um den Profilmodus freizuschalten. Hier erstellte Profile werden trotzdem gespeichert; sie wirken sich nur erst nach dem Core-Update auf die Pipeline aus.`,unknownVersion:`unbekannt`}},t={loading:`Katalog wird geladen…`,aiEditChipLabel:`AI Edit · {{agentId}}`,errors:{loadFailed:`Katalog konnte nicht geladen werden: {{status}}`,bodyLoadFailed:`Agent-Inhalt konnte nicht geladen werden: {{status}}`,generateFailed:`Generierung fehlgeschlagen: {{status}}`,agentLoadFailed:`Laden fehlgeschlagen: {{status}}`},templates:{title:`Agent-Vorlagenbibliothek`,countOf:`{{shown}} von {{total}}`,description:`Starte mit einer kuratierten Vorlage aus Engineering, Produkt, Wissenschaft, Gesundheit, Recht und mehr. Wähle eine aus und öffne sie im Studio, um sie vor dem Speichern zu prüfen und zu bearbeiten.`,searchPlaceholder:`Nach Name, Beschreibung, Tag oder Kategorie suchen…`,allCategories:`Alle`,tagFilter:`Tag-Filter:`,noMatch:`Keine Vorlagen entsprechen deinen Filtern.`,clearFilters:`Filter zurücksetzen`,openInStudio:`Im Studio öffnen →`,tip:`Tipp: Klicke auf einen Tag-Chip auf einer Karte, um nach diesem Tag zu filtern.`},generate:{title:`Custom-Agent generieren`,agentIdLabel:`Agent-ID`,agentIdHint:`Muss mit <code>custom-</code> beginnen.`,descriptionLabel:`Beschreibe, was dieser Agent tun soll`,descriptionPlaceholder:`z. B. Terraform-/IaC-Änderungen reviewen und Sicherheits-Fehlkonfigurationen, übermäßige IAM-Berechtigungen und öffentliche S3-Buckets vor dem Merge markieren. Konservativ und knapp.`,note:`Claude entwirft einen vollständigen <code>.md</code>-Inhalt. Du prüfst ihn im Studio und kannst ihn vor dem Speichern bearbeiten. Dabei wird ein einmaliger claude-Aufruf gestartet, der bis zu 90 Sekunden dauern kann.`,generating:`Wird generiert…`,generateButton:`Generieren`},empty:{title:`Keine Agents installiert`,body:`Führe <code>{{command}}</code> in diesem Projekt aus, um die Upstream-Agents zu installieren, oder erstelle jetzt einen Custom-Agent.`},actions:{template:`Vorlage`,templateTitle:`Mit einer Vorlage starten`,generate:`Generieren`,generateWithClaude:`Mit Claude generieren`,generateWithAi:`Mit KI generieren`,blank:`Leer`,blankTitle:`Mit einer leeren Vorlage starten`},sidebar:{title:`Katalog`,createLabel:`Custom-Agent erstellen:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Wird von specrails-core mitgeliefert; schreibgeschützt.`,custom:`Custom ({{count}})`,customDescription:`Die custom-*.md-Dateien deines Projekts. Nutze Vorlage / Generieren / Leer oben, um einen zu erstellen.`,noCustomAgents:`Noch keine Custom-Agents.`},detail:{defaultModel:`Standardmodell: {{model}}`,aiEdit:`AI Edit`,aiEditTitle:`Diesen Agent iterativ mit KI verfeinern`,readOnly:`schreibgeschützt`,editableHint:`bearbeitbar – nutze Bearbeiten oben`},kind:{upstream:`upstream`,custom:`custom`}},n={providerLabel:`Profilanbieter`,loading:`Profile werden geladen…`,selectPrompt:`Wähle ein Profil zum Bearbeiten`,errors:{listFailed:`Auflisten fehlgeschlagen: {{status}}`,loadFailed:`Laden fehlgeschlagen: {{status}}`,migrationFailed:`Migration fehlgeschlagen: {{status}}`,createFailed:`Erstellen fehlgeschlagen: {{status}}`,duplicateFailed:`Duplizieren fehlgeschlagen: {{status}}`,deleteFailed:`Löschen fehlgeschlagen: {{status}}`,saveFailed:`Speichern fehlgeschlagen: {{status}}`},toasts:{migrated:`Profil migriert`,migratedDescription:`default-Profil aus deinen aktuellen Agents erstellt`,migrationFailed:`Migration fehlgeschlagen`,created:`Profil erstellt`,createFailed:`Profil konnte nicht erstellt werden`,duplicated:`Profil dupliziert`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Profil konnte nicht dupliziert werden`,deleted:`Profil gelöscht`,deleteFailed:`Profil konnte nicht gelöscht werden`,saved:`Profil gespeichert`,saveFailed:`Profil konnte nicht gespeichert werden`,savedWithUntargeted:`Profil mit nicht angesteuerten Agents gespeichert`,savedWithUntargetedDescription:`Keine Routing-Regel zeigt auf: {{agents}}. Füge eine Tag-Regel hinzu oder ändere das Ziel der Default-Regel, wenn sie laufen sollen.`},createDialog:{title:`Neues Profil`,description:`Wähle einen Namen in Kleinbuchstaben im kebab-case (Buchstaben, Ziffern und Bindestriche).`,confirmLabel:`Erstellen`,invalidHint:`Muss mit einem Buchstaben oder einer Ziffer beginnen und darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.`},duplicateDialog:{title:`„{{name}}“ duplizieren`,description:`Name für das neue Profil.`,invalidHint:`Nur Kleinbuchstaben im kebab-case.`},deleteDialog:{title:`Profil „{{name}}“ löschen?`,description:`Dies kann nicht rückgängig gemacht werden. Bereits mit diesem Profil gestartete Jobs behalten ihren Snapshot; künftige Starts fallen auf die Auflösungsreihenfolge zurück.`},empty:{title:`Noch keine Profile`,body:`Mit Profilen speicherst du Kombinationen aus Orchestrator + Agents + Routing und wählst pro Rail eines aus.`,migrateButton:`Aus aktuellen Agents migrieren`,blankButton:`Leeres Profil`,migrateExplainer:`„Migrieren“ liest die Frontmatter-Modelle deiner bestehenden <code>.claude/agents/</code>-Dateien und erstellt ein <code>default</code>-Profil, das das heutige Verhalten verlustfrei abbildet.`},sidebar:{title:`Profile`,teamDefault:`(Team-Standard)`},editorFooter:{fixValidationIssues:`Behebe Validierungsprobleme vor dem Speichern`,issuesToResolve_one:`{{count}} Problem zu beheben`,issuesToResolve_other:`{{count}} Probleme zu beheben`}},r={title:`Profilnutzung`,windowLabel:`{{days}}d`,subtitleEmpty:`Gestartete Jobs pro Profil im gewählten Zeitraum.`,subtitle:`Gestartete Jobs pro Profil in den letzten {{count}} Tagen.`,empty:`Noch keine profilgebundenen Jobs.`,jobsTooltip:`Jobs`,jobsLabel_one:`Job`,jobsLabel_other:`Jobs`,successRateTooltip:`Erfolgsquote`,okSuffix:`ok`,avgDurationTooltip:`Ø Dauer`,avgTokensTooltip:`Ø Tokens`,tokensSuffix:`tok`},i={addTitle:`Routing-Regel hinzufügen`,editTitle:`Routing-Regel bearbeiten`,addDescription:`Füge eine Tag-basierte Routing-Regel mit kebab-case-Tags in Kleinbuchstaben hinzu.`,editDescription:`Aktualisiere die Tags oder den Ziel-Agent dieser Regel.`,tagsLabel:`Tags`,tagsHint:`Kommagetrennt. Verwende kebab-case in Kleinbuchstaben wie <code>frontend</code> oder <code>api-design</code>.`,invalidTags_one:`Ungültiger Tag: {{tags}}. Tags dürfen nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.`,invalidTags_other:`Ungültige Tags: {{tags}}. Tags dürfen nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.`,routeToLabel:`Weiterleiten an`,routeToHint:`Nur Agents in der Kette dieses Profils können Routing-Ziele sein.`,addRule:`Regel hinzufügen`,saveChanges:`Änderungen speichern`},a={profileTitle:`Agent-Profil für diese Rail`,noProfile:`Kein Profil`,modelTitle:`Modell für diese Freestyle-Rail`,loopModelTitle:`Modell für diesen Loop`,engineTitle:`KI-Anbieter für alle Rollen dieses Starts: Architekt, Entwickler und Reviewer`,localEngine:`Lokale Engine`,rolesEngine:`Rollen`,rolesEngineTitle:`Hybride Engines pro Rolle: Architect, Developer und Reviewer nutzen die Runtime-Konfiguration; Verifier und Decider nutzen die Loop-Rollen (Einstellungen ▸ Specrails-Agenten)`,rolesChip:`Engines pro Rolle`,rolesChipTitle:`Engines pro Rolle konfiguriert in Einstellungen ▸ Specrails-Agenten: Architect, Developer und Reviewer aus der Runtime-Konfiguration; Verifier und Decider aus den Loop-Rollen. Modell, Aufwand und Profil werden hier nicht gewählt.`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
@@ -1 +1 @@
1
- var e={title:`Agents`,subtitle:`管理此项目的 Agent Profile 和目录(上游 + 自定义)。`,tabs:{profiles:`Profile`,usage:`用量`,catalog:`目录`},banner:{title:`Profile 感知流水线需要 specrails-core {{required}}+`,body:`此项目当前为 <code>{{version}}</code>。在项目内运行 <code>{{command}}</code> 以解锁 Profile 模式。在此创建的 Profile 仍会保存,只是在 core 更新前不会影响流水线。`,unknownVersion:`未知`}},t={loading:`正在加载目录…`,aiEditChipLabel:`AI 编辑 · {{agentId}}`,errors:{loadFailed:`目录加载失败:{{status}}`,bodyLoadFailed:`Agent 正文加载失败:{{status}}`,generateFailed:`生成失败:{{status}}`,agentLoadFailed:`加载失败:{{status}}`},templates:{title:`Agent 模板库`,countOf:`{{shown}} / {{total}}`,description:`从精选模板开始,覆盖工程、产品、科学、健康、法律等领域。挑选一个并在 Studio 中打开,审阅和编辑后再保存。`,searchPlaceholder:`按名称、描述、标签或分类搜索…`,allCategories:`全部`,tagFilter:`标签筛选:`,noMatch:`没有符合筛选条件的模板。`,clearFilters:`清除筛选`,openInStudio:`在 Studio 中打开 →`,tip:`提示:点击任意卡片上的标签即可按该标签筛选。`},generate:{title:`生成自定义 Agent`,agentIdLabel:`Agent ID`,agentIdHint:`必须以 <code>custom-</code> 开头。`,descriptionLabel:`描述此 Agent 的职责`,descriptionPlaceholder:`例如:审查 Terraform/IaC 变更,在合并前标记安全配置错误、过度的 IAM 权限和公开的 S3 存储桶。风格保守、简洁。`,note:`Claude 会起草完整的 <code>.md</code> 正文。你将在 Studio 中审阅,并可在保存前编辑。此操作会启动一次性的 claude 调用,最长可能需要 90 秒。`,generating:`正在生成…`,generateButton:`生成`},empty:{title:`尚未安装任何 Agent`,body:`在此项目中运行 <code>{{command}}</code> 安装上游 Agent,或立即创建一个自定义 Agent。`},actions:{template:`模板`,templateTitle:`从模板开始`,generate:`生成`,generateWithClaude:`用 Claude 生成`,generateWithAi:`用 AI 生成`,blank:`空白`,blankTitle:`从空白模板开始`},sidebar:{title:`目录`,createLabel:`创建自定义 Agent:`},sections:{upstream:`上游({{count}})`,upstreamDescription:`由 specrails-core 提供;只读。`,custom:`自定义({{count}})`,customDescription:`项目中的 custom-*.md 文件。使用上方的模板 / 生成 / 空白来创建。`,noCustomAgents:`暂无自定义 Agent。`},detail:{defaultModel:`默认模型:{{model}}`,aiEdit:`AI 编辑`,aiEditTitle:`用 AI 迭代优化此 Agent`,readOnly:`只读`,editableHint:`可编辑——使用上方的“编辑”`},kind:{upstream:`上游`,custom:`自定义`}},n={providerLabel:`Profile 提供方`,loading:`正在加载 Profile…`,selectPrompt:`选择要编辑的 Profile`,errors:{listFailed:`列表加载失败:{{status}}`,loadFailed:`加载失败:{{status}}`,migrationFailed:`迁移失败:{{status}}`,createFailed:`创建失败:{{status}}`,duplicateFailed:`复制失败:{{status}}`,deleteFailed:`删除失败:{{status}}`,saveFailed:`保存失败:{{status}}`},toasts:{migrated:`Profile 已迁移`,migratedDescription:`已根据当前 Agent 创建 default Profile`,migrationFailed:`迁移失败`,created:`Profile 已创建`,createFailed:`创建 Profile 失败`,duplicated:`Profile 已复制`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`复制 Profile 失败`,deleted:`Profile 已删除`,deleteFailed:`删除 Profile 失败`,saved:`Profile 已保存`,saveFailed:`保存 Profile 失败`,savedWithUntargeted:`Profile 已保存,但存在未被路由的 Agent`,savedWithUntargetedDescription:`没有路由规则指向:{{agents}}。如需让它们运行,请添加标签规则或调整默认规则的目标。`},createDialog:{title:`新建 Profile`,description:`请使用小写 kebab-case 名称(字母、数字和连字符)。`,confirmLabel:`创建`,invalidHint:`必须以字母或数字开头,且只能包含小写字母、数字和连字符。`},duplicateDialog:{title:`复制“{{name}}”`,description:`新 Profile 的名称。`,invalidHint:`仅限小写 kebab-case。`},deleteDialog:{title:`删除 Profile“{{name}}”?`,description:`此操作无法撤销。已使用此 Profile 启动的任务会保留其快照;之后的启动将回退到解析顺序。`},empty:{title:`暂无 Profile`,body:`Profile 可保存编排器 + Agent + 路由的组合,并为每条 rail 单独选用。`,migrateButton:`从当前 Agent 迁移`,blankButton:`空白 Profile`,migrateExplainer:`“迁移”会读取现有 <code>.claude/agents/</code> frontmatter 中的模型,并创建一个 <code>default</code> Profile,完整复刻当前行为——零损失。`},sidebar:{title:`Profile`,teamDefault:`(团队默认)`},editorFooter:{fixValidationIssues:`保存前请先修复校验问题`,issuesToResolve_one:`{{count}} 个待解决问题`,issuesToResolve_other:`{{count}} 个待解决问题`}},r={title:`Profile 用量`,windowLabel:`{{days}}天`,subtitleEmpty:`所选时间窗口内各 Profile 启动的任务数。`,subtitle:`最近 {{count}} 天内各 Profile 启动的任务数。`,empty:`暂无使用 Profile 的任务。`,jobsTooltip:`任务`,jobsLabel_one:`个任务`,jobsLabel_other:`个任务`,successRateTooltip:`成功率`,okSuffix:`成功`,avgDurationTooltip:`平均时长`,avgTokensTooltip:`平均 token 数`,tokensSuffix:`tok`},i={addTitle:`添加路由规则`,editTitle:`编辑路由规则`,addDescription:`添加按标签匹配的路由规则,标签使用小写 kebab-case。`,editDescription:`更新此规则的标签或目标 Agent。`,tagsLabel:`标签`,tagsHint:`以逗号分隔。使用小写 kebab-case,如 <code>frontend</code> 或 <code>api-design</code>。`,invalidTags_one:`无效标签:{{tags}}。标签只能使用小写字母、数字和连字符。`,invalidTags_other:`无效标签:{{tags}}。标签只能使用小写字母、数字和连字符。`,routeToLabel:`路由到`,routeToHint:`只有此 Profile 链中的 Agent 才能作为路由目标。`,addRule:`添加规则`,saveChanges:`保存更改`},a={profileTitle:`此 rail 使用的 Agent Profile`,noProfile:`无 Profile`,modelTitle:`此 Freestyle rail 使用的模型`,loopModelTitle:`此 Loop 使用的模型`,engineTitle:`此 rail 使用的 AI 引擎`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
1
+ var e={title:`Agents`,subtitle:`管理此项目的 Agent Profile 和目录(上游 + 自定义)。`,tabs:{profiles:`Profile`,usage:`用量`,catalog:`目录`},banner:{title:`Profile 感知流水线需要 specrails-core {{required}}+`,body:`此项目当前为 <code>{{version}}</code>。在项目内运行 <code>{{command}}</code> 以解锁 Profile 模式。在此创建的 Profile 仍会保存,只是在 core 更新前不会影响流水线。`,unknownVersion:`未知`}},t={loading:`正在加载目录…`,aiEditChipLabel:`AI 编辑 · {{agentId}}`,errors:{loadFailed:`目录加载失败:{{status}}`,bodyLoadFailed:`Agent 正文加载失败:{{status}}`,generateFailed:`生成失败:{{status}}`,agentLoadFailed:`加载失败:{{status}}`},templates:{title:`Agent 模板库`,countOf:`{{shown}} / {{total}}`,description:`从精选模板开始,覆盖工程、产品、科学、健康、法律等领域。挑选一个并在 Studio 中打开,审阅和编辑后再保存。`,searchPlaceholder:`按名称、描述、标签或分类搜索…`,allCategories:`全部`,tagFilter:`标签筛选:`,noMatch:`没有符合筛选条件的模板。`,clearFilters:`清除筛选`,openInStudio:`在 Studio 中打开 →`,tip:`提示:点击任意卡片上的标签即可按该标签筛选。`},generate:{title:`生成自定义 Agent`,agentIdLabel:`Agent ID`,agentIdHint:`必须以 <code>custom-</code> 开头。`,descriptionLabel:`描述此 Agent 的职责`,descriptionPlaceholder:`例如:审查 Terraform/IaC 变更,在合并前标记安全配置错误、过度的 IAM 权限和公开的 S3 存储桶。风格保守、简洁。`,note:`Claude 会起草完整的 <code>.md</code> 正文。你将在 Studio 中审阅,并可在保存前编辑。此操作会启动一次性的 claude 调用,最长可能需要 90 秒。`,generating:`正在生成…`,generateButton:`生成`},empty:{title:`尚未安装任何 Agent`,body:`在此项目中运行 <code>{{command}}</code> 安装上游 Agent,或立即创建一个自定义 Agent。`},actions:{template:`模板`,templateTitle:`从模板开始`,generate:`生成`,generateWithClaude:`用 Claude 生成`,generateWithAi:`用 AI 生成`,blank:`空白`,blankTitle:`从空白模板开始`},sidebar:{title:`目录`,createLabel:`创建自定义 Agent:`},sections:{upstream:`上游({{count}})`,upstreamDescription:`由 specrails-core 提供;只读。`,custom:`自定义({{count}})`,customDescription:`项目中的 custom-*.md 文件。使用上方的模板 / 生成 / 空白来创建。`,noCustomAgents:`暂无自定义 Agent。`},detail:{defaultModel:`默认模型:{{model}}`,aiEdit:`AI 编辑`,aiEditTitle:`用 AI 迭代优化此 Agent`,readOnly:`只读`,editableHint:`可编辑——使用上方的“编辑”`},kind:{upstream:`上游`,custom:`自定义`}},n={providerLabel:`Profile 提供方`,loading:`正在加载 Profile…`,selectPrompt:`选择要编辑的 Profile`,errors:{listFailed:`列表加载失败:{{status}}`,loadFailed:`加载失败:{{status}}`,migrationFailed:`迁移失败:{{status}}`,createFailed:`创建失败:{{status}}`,duplicateFailed:`复制失败:{{status}}`,deleteFailed:`删除失败:{{status}}`,saveFailed:`保存失败:{{status}}`},toasts:{migrated:`Profile 已迁移`,migratedDescription:`已根据当前 Agent 创建 default Profile`,migrationFailed:`迁移失败`,created:`Profile 已创建`,createFailed:`创建 Profile 失败`,duplicated:`Profile 已复制`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`复制 Profile 失败`,deleted:`Profile 已删除`,deleteFailed:`删除 Profile 失败`,saved:`Profile 已保存`,saveFailed:`保存 Profile 失败`,savedWithUntargeted:`Profile 已保存,但存在未被路由的 Agent`,savedWithUntargetedDescription:`没有路由规则指向:{{agents}}。如需让它们运行,请添加标签规则或调整默认规则的目标。`},createDialog:{title:`新建 Profile`,description:`请使用小写 kebab-case 名称(字母、数字和连字符)。`,confirmLabel:`创建`,invalidHint:`必须以字母或数字开头,且只能包含小写字母、数字和连字符。`},duplicateDialog:{title:`复制“{{name}}”`,description:`新 Profile 的名称。`,invalidHint:`仅限小写 kebab-case。`},deleteDialog:{title:`删除 Profile“{{name}}”?`,description:`此操作无法撤销。已使用此 Profile 启动的任务会保留其快照;之后的启动将回退到解析顺序。`},empty:{title:`暂无 Profile`,body:`Profile 可保存编排器 + Agent + 路由的组合,并为每条 rail 单独选用。`,migrateButton:`从当前 Agent 迁移`,blankButton:`空白 Profile`,migrateExplainer:`“迁移”会读取现有 <code>.claude/agents/</code> frontmatter 中的模型,并创建一个 <code>default</code> Profile,完整复刻当前行为——零损失。`},sidebar:{title:`Profile`,teamDefault:`(团队默认)`},editorFooter:{fixValidationIssues:`保存前请先修复校验问题`,issuesToResolve_one:`{{count}} 个待解决问题`,issuesToResolve_other:`{{count}} 个待解决问题`}},r={title:`Profile 用量`,windowLabel:`{{days}}天`,subtitleEmpty:`所选时间窗口内各 Profile 启动的任务数。`,subtitle:`最近 {{count}} 天内各 Profile 启动的任务数。`,empty:`暂无使用 Profile 的任务。`,jobsTooltip:`任务`,jobsLabel_one:`个任务`,jobsLabel_other:`个任务`,successRateTooltip:`成功率`,okSuffix:`成功`,avgDurationTooltip:`平均时长`,avgTokensTooltip:`平均 token 数`,tokensSuffix:`tok`},i={addTitle:`添加路由规则`,editTitle:`编辑路由规则`,addDescription:`添加按标签匹配的路由规则,标签使用小写 kebab-case。`,editDescription:`更新此规则的标签或目标 Agent。`,tagsLabel:`标签`,tagsHint:`以逗号分隔。使用小写 kebab-case,如 <code>frontend</code> 或 <code>api-design</code>。`,invalidTags_one:`无效标签:{{tags}}。标签只能使用小写字母、数字和连字符。`,invalidTags_other:`无效标签:{{tags}}。标签只能使用小写字母、数字和连字符。`,routeToLabel:`路由到`,routeToHint:`只有此 Profile 链中的 Agent 才能作为路由目标。`,addRule:`添加规则`,saveChanges:`保存更改`},a={profileTitle:`此 rail 使用的 Agent Profile`,noProfile:`无 Profile`,modelTitle:`此 Freestyle rail 使用的模型`,loopModelTitle:`此 Loop 使用的模型`,engineTitle:`本次运行所有角色使用的 AI 提供商:架构师、开发者和审查者`,localEngine:`本地引擎`,rolesEngine:`按角色`,rolesEngineTitle:`按角色的混合引擎:architect、developer 和 reviewer 使用运行时配置;verifier 和 decider 使用循环角色(设置 ▸ Specrails 代理)`,rolesChip:`按角色引擎`,rolesChipTitle:`引擎已在“设置 ▸ Specrails 代理”中按角色配置:architect、developer 和 reviewer 来自运行时配置;verifier 和 decider 来自循环角色。此处不选择模型、推理强度或配置文件。`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
@@ -1 +1 @@
1
- var e={title:`エージェント`,subtitle:`このプロジェクトのエージェントプロファイルとカタログ(アップストリーム + カスタム)を管理します。`,tabs:{profiles:`プロファイル`,usage:`使用状況`,catalog:`カタログ`},banner:{title:`プロファイル対応パイプラインには specrails-core {{required}}+ が必要です`,body:`このプロジェクトのバージョンは <code>{{version}}</code> です。プロジェクト内で <code>{{command}}</code> を実行するとプロファイルモードが有効になります。ここで作成したプロファイルは保存されますが、core を更新するまでパイプラインには影響しません。`,unknownVersion:`不明`}},t={loading:`カタログを読み込み中…`,aiEditChipLabel:`AI編集 · {{agentId}}`,errors:{loadFailed:`カタログの読み込みに失敗しました: {{status}}`,bodyLoadFailed:`エージェント本文の読み込みに失敗しました: {{status}}`,generateFailed:`生成に失敗しました: {{status}}`,agentLoadFailed:`読み込みに失敗しました: {{status}}`},templates:{title:`エージェントテンプレートライブラリ`,countOf:`{{shown}} / {{total}}`,description:`エンジニアリング、プロダクト、科学、医療、法務など、厳選されたテンプレートから始められます。1つ選んで Studio で開き、確認・編集してから保存してください。`,searchPlaceholder:`名前、説明、タグ、カテゴリで検索…`,allCategories:`すべて`,tagFilter:`タグフィルター:`,noMatch:`フィルターに一致するテンプレートはありません。`,clearFilters:`フィルターをクリア`,openInStudio:`Studio で開く →`,tip:`ヒント: カードのタグをクリックすると、そのタグで絞り込めます。`},generate:{title:`カスタムエージェントを生成`,agentIdLabel:`エージェント ID`,agentIdHint:`<code>custom-</code> で始まる必要があります。`,descriptionLabel:`このエージェントの役割を記述してください`,descriptionPlaceholder:`例: Terraform/IaC の変更をレビューし、マージ前にセキュリティ設定ミス、過剰な IAM 権限、公開 S3 バケットを指摘する。保守的かつ簡潔に。`,note:`Claude が完全な <code>.md</code> 本文をドラフトします。Studio で確認し、保存前に編集できます。ワンショットの claude 呼び出しが起動され、最大 90 秒かかることがあります。`,generating:`生成中…`,generateButton:`生成`},empty:{title:`エージェントがインストールされていません`,body:`このプロジェクトで <code>{{command}}</code> を実行してアップストリームのエージェントをインストールするか、今すぐカスタムエージェントを作成してください。`},actions:{template:`テンプレート`,templateTitle:`テンプレートから始める`,generate:`生成`,generateWithClaude:`Claude で生成`,generateWithAi:`AI で生成`,blank:`ブランク`,blankTitle:`空のテンプレートから始める`},sidebar:{title:`カタログ`,createLabel:`カスタムエージェントを作成:`},sections:{upstream:`アップストリーム ({{count}})`,upstreamDescription:`specrails-core 付属。読み取り専用です。`,custom:`カスタム ({{count}})`,customDescription:`このプロジェクトの custom-*.md ファイルです。上のテンプレート / 生成 / ブランクから作成できます。`,noCustomAgents:`カスタムエージェントはまだありません。`},detail:{defaultModel:`デフォルトモデル: {{model}}`,aiEdit:`AI編集`,aiEditTitle:`AI でこのエージェントを反復的に改良`,readOnly:`読み取り専用`,editableHint:`編集可能 — 上の「編集」を使用`},kind:{upstream:`アップストリーム`,custom:`カスタム`}},n={providerLabel:`プロファイルのプロバイダー`,loading:`プロファイルを読み込み中…`,selectPrompt:`編集するプロファイルを選択してください`,errors:{listFailed:`一覧の取得に失敗しました: {{status}}`,loadFailed:`読み込みに失敗しました: {{status}}`,migrationFailed:`移行に失敗しました: {{status}}`,createFailed:`作成に失敗しました: {{status}}`,duplicateFailed:`複製に失敗しました: {{status}}`,deleteFailed:`削除に失敗しました: {{status}}`,saveFailed:`保存に失敗しました: {{status}}`},toasts:{migrated:`プロファイルを移行しました`,migratedDescription:`現在のエージェントから default プロファイルを作成しました`,migrationFailed:`移行に失敗しました`,created:`プロファイルを作成しました`,createFailed:`プロファイルの作成に失敗しました`,duplicated:`プロファイルを複製しました`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`プロファイルの複製に失敗しました`,deleted:`プロファイルを削除しました`,deleteFailed:`プロファイルの削除に失敗しました`,saved:`プロファイルを保存しました`,saveFailed:`プロファイルの保存に失敗しました`,savedWithUntargeted:`未ターゲットのエージェントを含むプロファイルを保存しました`,savedWithUntargetedDescription:`ルーティングルールが次のエージェントを指していません: {{agents}}。実行させたい場合は、タグルールを追加するか default ルールのターゲットを変更してください。`},createDialog:{title:`新規プロファイル`,description:`小文字のケバブケース名(英小文字、数字、ハイフン)を指定してください。`,confirmLabel:`作成`,invalidHint:`先頭は英小文字または数字で、英小文字・数字・ハイフンのみ使用できます。`},duplicateDialog:{title:`「{{name}}」を複製`,description:`新しいプロファイルの名前。`,invalidHint:`小文字のケバブケースのみ。`},deleteDialog:{title:`プロファイル「{{name}}」を削除しますか?`,description:`この操作は元に戻せません。このプロファイルで起動済みのジョブはスナップショットを保持します。今後の起動は解決順序にフォールバックします。`},empty:{title:`プロファイルはまだありません`,body:`プロファイルを使うと、オーケストレーター + エージェント + ルーティングの組み合わせを保存し、レールごとに選択できます。`,migrateButton:`現在のエージェントから移行`,blankButton:`空のプロファイル`,migrateExplainer:`「移行」は既存の <code>.claude/agents/</code> フロントマターのモデルを読み取り、現在の動作をそのまま再現する <code>default</code> プロファイルを作成します — 損失ゼロです。`},sidebar:{title:`プロファイル`,teamDefault:`(チームデフォルト)`},editorFooter:{fixValidationIssues:`保存する前に検証エラーを修正してください`,issuesToResolve_one:`未解決の問題が {{count}} 件`,issuesToResolve_other:`未解決の問題が {{count}} 件`}},r={title:`プロファイル使用状況`,windowLabel:`{{days}}日`,subtitleEmpty:`選択した期間にプロファイルごとに起動されたジョブ数。`,subtitle:`過去 {{count}} 日間にプロファイルごとに起動されたジョブ数。`,empty:`プロファイル指定のジョブはまだありません。`,jobsTooltip:`ジョブ`,jobsLabel_one:`ジョブ`,jobsLabel_other:`ジョブ`,successRateTooltip:`成功率`,okSuffix:`ok`,avgDurationTooltip:`平均実行時間`,avgTokensTooltip:`平均トークン数`,tokensSuffix:`tok`},i={addTitle:`ルーティングルールを追加`,editTitle:`ルーティングルールを編集`,addDescription:`小文字ケバブケースのタグでマッチするルーティングルールを追加します。`,editDescription:`このルールのタグまたはターゲットエージェントを更新します。`,tagsLabel:`タグ`,tagsHint:`カンマ区切り。<code>frontend</code> や <code>api-design</code> のような小文字ケバブケースを使用してください。`,invalidTags_one:`無効なタグ: {{tags}}。タグには英小文字・数字・ハイフンのみ使用できます。`,invalidTags_other:`無効なタグ: {{tags}}。タグには英小文字・数字・ハイフンのみ使用できます。`,routeToLabel:`ルーティング先`,routeToHint:`このプロファイルのチェーンに含まれるエージェントのみルーティング先に指定できます。`,addRule:`ルールを追加`,saveChanges:`変更を保存`},a={profileTitle:`このレールのエージェントプロファイル`,noProfile:`プロファイルなし`,modelTitle:`この Freestyle レールのモデル`,loopModelTitle:`このループのモデル`,engineTitle:`このレールの AI エンジン`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
1
+ var e={title:`エージェント`,subtitle:`このプロジェクトのエージェントプロファイルとカタログ(アップストリーム + カスタム)を管理します。`,tabs:{profiles:`プロファイル`,usage:`使用状況`,catalog:`カタログ`},banner:{title:`プロファイル対応パイプラインには specrails-core {{required}}+ が必要です`,body:`このプロジェクトのバージョンは <code>{{version}}</code> です。プロジェクト内で <code>{{command}}</code> を実行するとプロファイルモードが有効になります。ここで作成したプロファイルは保存されますが、core を更新するまでパイプラインには影響しません。`,unknownVersion:`不明`}},t={loading:`カタログを読み込み中…`,aiEditChipLabel:`AI編集 · {{agentId}}`,errors:{loadFailed:`カタログの読み込みに失敗しました: {{status}}`,bodyLoadFailed:`エージェント本文の読み込みに失敗しました: {{status}}`,generateFailed:`生成に失敗しました: {{status}}`,agentLoadFailed:`読み込みに失敗しました: {{status}}`},templates:{title:`エージェントテンプレートライブラリ`,countOf:`{{shown}} / {{total}}`,description:`エンジニアリング、プロダクト、科学、医療、法務など、厳選されたテンプレートから始められます。1つ選んで Studio で開き、確認・編集してから保存してください。`,searchPlaceholder:`名前、説明、タグ、カテゴリで検索…`,allCategories:`すべて`,tagFilter:`タグフィルター:`,noMatch:`フィルターに一致するテンプレートはありません。`,clearFilters:`フィルターをクリア`,openInStudio:`Studio で開く →`,tip:`ヒント: カードのタグをクリックすると、そのタグで絞り込めます。`},generate:{title:`カスタムエージェントを生成`,agentIdLabel:`エージェント ID`,agentIdHint:`<code>custom-</code> で始まる必要があります。`,descriptionLabel:`このエージェントの役割を記述してください`,descriptionPlaceholder:`例: Terraform/IaC の変更をレビューし、マージ前にセキュリティ設定ミス、過剰な IAM 権限、公開 S3 バケットを指摘する。保守的かつ簡潔に。`,note:`Claude が完全な <code>.md</code> 本文をドラフトします。Studio で確認し、保存前に編集できます。ワンショットの claude 呼び出しが起動され、最大 90 秒かかることがあります。`,generating:`生成中…`,generateButton:`生成`},empty:{title:`エージェントがインストールされていません`,body:`このプロジェクトで <code>{{command}}</code> を実行してアップストリームのエージェントをインストールするか、今すぐカスタムエージェントを作成してください。`},actions:{template:`テンプレート`,templateTitle:`テンプレートから始める`,generate:`生成`,generateWithClaude:`Claude で生成`,generateWithAi:`AI で生成`,blank:`ブランク`,blankTitle:`空のテンプレートから始める`},sidebar:{title:`カタログ`,createLabel:`カスタムエージェントを作成:`},sections:{upstream:`アップストリーム ({{count}})`,upstreamDescription:`specrails-core 付属。読み取り専用です。`,custom:`カスタム ({{count}})`,customDescription:`このプロジェクトの custom-*.md ファイルです。上のテンプレート / 生成 / ブランクから作成できます。`,noCustomAgents:`カスタムエージェントはまだありません。`},detail:{defaultModel:`デフォルトモデル: {{model}}`,aiEdit:`AI編集`,aiEditTitle:`AI でこのエージェントを反復的に改良`,readOnly:`読み取り専用`,editableHint:`編集可能 — 上の「編集」を使用`},kind:{upstream:`アップストリーム`,custom:`カスタム`}},n={providerLabel:`プロファイルのプロバイダー`,loading:`プロファイルを読み込み中…`,selectPrompt:`編集するプロファイルを選択してください`,errors:{listFailed:`一覧の取得に失敗しました: {{status}}`,loadFailed:`読み込みに失敗しました: {{status}}`,migrationFailed:`移行に失敗しました: {{status}}`,createFailed:`作成に失敗しました: {{status}}`,duplicateFailed:`複製に失敗しました: {{status}}`,deleteFailed:`削除に失敗しました: {{status}}`,saveFailed:`保存に失敗しました: {{status}}`},toasts:{migrated:`プロファイルを移行しました`,migratedDescription:`現在のエージェントから default プロファイルを作成しました`,migrationFailed:`移行に失敗しました`,created:`プロファイルを作成しました`,createFailed:`プロファイルの作成に失敗しました`,duplicated:`プロファイルを複製しました`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`プロファイルの複製に失敗しました`,deleted:`プロファイルを削除しました`,deleteFailed:`プロファイルの削除に失敗しました`,saved:`プロファイルを保存しました`,saveFailed:`プロファイルの保存に失敗しました`,savedWithUntargeted:`未ターゲットのエージェントを含むプロファイルを保存しました`,savedWithUntargetedDescription:`ルーティングルールが次のエージェントを指していません: {{agents}}。実行させたい場合は、タグルールを追加するか default ルールのターゲットを変更してください。`},createDialog:{title:`新規プロファイル`,description:`小文字のケバブケース名(英小文字、数字、ハイフン)を指定してください。`,confirmLabel:`作成`,invalidHint:`先頭は英小文字または数字で、英小文字・数字・ハイフンのみ使用できます。`},duplicateDialog:{title:`「{{name}}」を複製`,description:`新しいプロファイルの名前。`,invalidHint:`小文字のケバブケースのみ。`},deleteDialog:{title:`プロファイル「{{name}}」を削除しますか?`,description:`この操作は元に戻せません。このプロファイルで起動済みのジョブはスナップショットを保持します。今後の起動は解決順序にフォールバックします。`},empty:{title:`プロファイルはまだありません`,body:`プロファイルを使うと、オーケストレーター + エージェント + ルーティングの組み合わせを保存し、レールごとに選択できます。`,migrateButton:`現在のエージェントから移行`,blankButton:`空のプロファイル`,migrateExplainer:`「移行」は既存の <code>.claude/agents/</code> フロントマターのモデルを読み取り、現在の動作をそのまま再現する <code>default</code> プロファイルを作成します — 損失ゼロです。`},sidebar:{title:`プロファイル`,teamDefault:`(チームデフォルト)`},editorFooter:{fixValidationIssues:`保存する前に検証エラーを修正してください`,issuesToResolve_one:`未解決の問題が {{count}} 件`,issuesToResolve_other:`未解決の問題が {{count}} 件`}},r={title:`プロファイル使用状況`,windowLabel:`{{days}}日`,subtitleEmpty:`選択した期間にプロファイルごとに起動されたジョブ数。`,subtitle:`過去 {{count}} 日間にプロファイルごとに起動されたジョブ数。`,empty:`プロファイル指定のジョブはまだありません。`,jobsTooltip:`ジョブ`,jobsLabel_one:`ジョブ`,jobsLabel_other:`ジョブ`,successRateTooltip:`成功率`,okSuffix:`ok`,avgDurationTooltip:`平均実行時間`,avgTokensTooltip:`平均トークン数`,tokensSuffix:`tok`},i={addTitle:`ルーティングルールを追加`,editTitle:`ルーティングルールを編集`,addDescription:`小文字ケバブケースのタグでマッチするルーティングルールを追加します。`,editDescription:`このルールのタグまたはターゲットエージェントを更新します。`,tagsLabel:`タグ`,tagsHint:`カンマ区切り。<code>frontend</code> や <code>api-design</code> のような小文字ケバブケースを使用してください。`,invalidTags_one:`無効なタグ: {{tags}}。タグには英小文字・数字・ハイフンのみ使用できます。`,invalidTags_other:`無効なタグ: {{tags}}。タグには英小文字・数字・ハイフンのみ使用できます。`,routeToLabel:`ルーティング先`,routeToHint:`このプロファイルのチェーンに含まれるエージェントのみルーティング先に指定できます。`,addRule:`ルールを追加`,saveChanges:`変更を保存`},a={profileTitle:`このレールのエージェントプロファイル`,noProfile:`プロファイルなし`,modelTitle:`この Freestyle レールのモデル`,loopModelTitle:`このループのモデル`,engineTitle:`この実行のすべてのロール(設計、開発、レビュー)で使う AI プロバイダー`,localEngine:`ローカルエンジン`,rolesEngine:`ロール別`,rolesEngineTitle:`ロール別のハイブリッドエンジン:architect・developer・reviewer はランタイム設定を、verifier・decider はループロールを使用します(設定 ▸ Specrails エージェント)`,rolesChip:`ロール別エンジン`,rolesChipTitle:`エンジンは「設定 ▸ Specrails エージェント」でロールごとに設定済みです:architect・developer・reviewer はランタイム設定から、verifier・decider はループロールから。モデル・推論の深さ・プロファイルはここでは選びません。`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({catalog:()=>r,default:()=>c,page:()=>n,profiles:()=>i,railSelectors:()=>s,routingRule:()=>o,usage:()=>a}),n={title:`Agents`,subtitle:`Manage agent profiles and the catalog (upstream + custom) for this project.`,tabs:{profiles:`Profiles`,usage:`Usage`,catalog:`Catalog`},banner:{title:`Profile-aware pipeline requires specrails-core {{required}}+`,body:`This project has <code>{{version}}</code>. Run <code>{{command}}</code> inside the project to unlock profile mode. Profiles you create here will still save; they just won't affect the pipeline until core is updated.`,unknownVersion:`unknown`}},r={loading:`Loading catalog…`,aiEditChipLabel:`AI Edit · {{agentId}}`,errors:{loadFailed:`Catalog load failed: {{status}}`,bodyLoadFailed:`Agent body load failed: {{status}}`,generateFailed:`Generate failed: {{status}}`,agentLoadFailed:`Load failed: {{status}}`},templates:{title:`Agent template library`,countOf:`{{shown}} of {{total}}`,description:`Start from a curated template across engineering, product, science, health, legal, and more. Pick one and open it in the Studio for review and editing before saving.`,searchPlaceholder:`Search by name, description, tag, or category…`,allCategories:`All`,tagFilter:`Tag filter:`,noMatch:`No templates match your filters.`,clearFilters:`Clear filters`,openInStudio:`Open in Studio →`,tip:`Tip: click a tag pill on any card to filter by that tag.`},generate:{title:`Generate a custom agent`,agentIdLabel:`Agent id`,agentIdHint:`Must start with <code>custom-</code>.`,descriptionLabel:`Describe what this agent should do`,descriptionPlaceholder:`e.g. Review Terraform/IaC changes and flag security misconfigurations, excessive IAM permissions, and public S3 buckets before merging. Conservative and terse.`,note:`Claude will draft a full <code>.md</code> body. You'll review it in the Studio and can edit before saving. This spawns a one-shot claude invocation and can take up to 90 seconds.`,generating:`Generating…`,generateButton:`Generate`},empty:{title:`No agents installed`,body:`Run <code>{{command}}</code> in this project to install the upstream agents, or create a custom agent now.`},actions:{template:`Template`,templateTitle:`Start from a template`,generate:`Generate`,generateWithClaude:`Generate with Claude`,generateWithAi:`Generate with AI`,blank:`Blank`,blankTitle:`Start from a blank template`},sidebar:{title:`Catalog`,createLabel:`Create a custom agent:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Shipped by specrails-core; read-only.`,custom:`Custom ({{count}})`,customDescription:`Your project's custom-*.md files. Use Template / Generate / Blank above to create one.`,noCustomAgents:`No custom agents yet.`},detail:{defaultModel:`default model: {{model}}`,aiEdit:`AI Edit`,aiEditTitle:`Iteratively refine this agent with AI`,readOnly:`read-only`,editableHint:`editable — use Edit above`},kind:{upstream:`upstream`,custom:`custom`}},i={providerLabel:`Profile provider`,loading:`Loading profiles…`,selectPrompt:`Select a profile to edit`,errors:{listFailed:`List failed: {{status}}`,loadFailed:`Load failed: {{status}}`,migrationFailed:`Migration failed: {{status}}`,createFailed:`Create failed: {{status}}`,duplicateFailed:`Duplicate failed: {{status}}`,deleteFailed:`Delete failed: {{status}}`,saveFailed:`Save failed: {{status}}`},toasts:{migrated:`Profile migrated`,migratedDescription:`default profile created from your current agents`,migrationFailed:`Migration failed`,created:`Profile created`,createFailed:`Failed to create profile`,duplicated:`Profile duplicated`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Failed to duplicate profile`,deleted:`Profile deleted`,deleteFailed:`Failed to delete profile`,saved:`Profile saved`,saveFailed:`Failed to save profile`,savedWithUntargeted:`Profile saved with untargeted agents`,savedWithUntargetedDescription:`No routing rule points to: {{agents}}. Add a tag rule or retarget the default rule if you want them to run.`},createDialog:{title:`New profile`,description:`Pick a lowercase kebab-case name (letters, digits, and hyphens).`,confirmLabel:`Create`,invalidHint:`Must start with a letter or digit and contain only lowercase letters, digits, and hyphens.`},duplicateDialog:{title:`Duplicate "{{name}}"`,description:`Name for the new profile.`,invalidHint:`Lowercase kebab-case only.`},deleteDialog:{title:`Delete profile "{{name}}"?`,description:`This cannot be undone. Jobs already launched with this profile keep their snapshot; future launches will fall back to the resolution order.`},empty:{title:`No profiles yet`,body:`Profiles let you save orchestrator + agent + routing combinations and pick one per rail.`,migrateButton:`Migrate from current agents`,blankButton:`Blank profile`,migrateExplainer:`"Migrate" reads your existing <code>.claude/agents/</code> frontmatter models and creates a <code>default</code> profile mirroring today's behavior — zero-loss.`},sidebar:{title:`Profiles`,teamDefault:`(team default)`},editorFooter:{fixValidationIssues:`Fix validation issues before saving`,issuesToResolve_one:`{{count}} issue to resolve`,issuesToResolve_other:`{{count}} issues to resolve`}},a={title:`Profile usage`,windowLabel:`{{days}}d`,subtitleEmpty:`Jobs launched per profile in the selected window.`,subtitle:`Jobs launched per profile in the last {{count}} days.`,empty:`No profile-scoped jobs yet.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`success rate`,okSuffix:`ok`,avgDurationTooltip:`avg duration`,avgTokensTooltip:`avg tokens`,tokensSuffix:`tok`},o={addTitle:`Add routing rule`,editTitle:`Edit routing rule`,addDescription:`Add a tag-matched routing rule using lowercase kebab-case tags.`,editDescription:`Update the tags or target agent for this rule.`,tagsLabel:`Tags`,tagsHint:`Comma-separated. Use lowercase kebab-case like <code>frontend</code> or <code>api-design</code>.`,invalidTags_one:`Invalid tag: {{tags}}. Tags must use lowercase letters, digits, and hyphens only.`,invalidTags_other:`Invalid tags: {{tags}}. Tags must use lowercase letters, digits, and hyphens only.`,routeToLabel:`Route to`,routeToHint:`Only agents in this profile's chain can be routing targets.`,addRule:`Add rule`,saveChanges:`Save changes`},s={profileTitle:`Agent profile for this rail`,noProfile:`No profile`,modelTitle:`Model for this Freestyle rail`,loopModelTitle:`Model for this loop`,engineTitle:`AI engine for this rail`},c={page:n,catalog:r,profiles:i,usage:a,routingRule:o,railSelectors:s};export{t};
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({catalog:()=>r,default:()=>c,page:()=>n,profiles:()=>i,railSelectors:()=>s,routingRule:()=>o,usage:()=>a}),n={title:`Agents`,subtitle:`Manage agent profiles and the catalog (upstream + custom) for this project.`,tabs:{profiles:`Profiles`,usage:`Usage`,catalog:`Catalog`},banner:{title:`Profile-aware pipeline requires specrails-core {{required}}+`,body:`This project has <code>{{version}}</code>. Run <code>{{command}}</code> inside the project to unlock profile mode. Profiles you create here will still save; they just won't affect the pipeline until core is updated.`,unknownVersion:`unknown`}},r={loading:`Loading catalog…`,aiEditChipLabel:`AI Edit · {{agentId}}`,errors:{loadFailed:`Catalog load failed: {{status}}`,bodyLoadFailed:`Agent body load failed: {{status}}`,generateFailed:`Generate failed: {{status}}`,agentLoadFailed:`Load failed: {{status}}`},templates:{title:`Agent template library`,countOf:`{{shown}} of {{total}}`,description:`Start from a curated template across engineering, product, science, health, legal, and more. Pick one and open it in the Studio for review and editing before saving.`,searchPlaceholder:`Search by name, description, tag, or category…`,allCategories:`All`,tagFilter:`Tag filter:`,noMatch:`No templates match your filters.`,clearFilters:`Clear filters`,openInStudio:`Open in Studio →`,tip:`Tip: click a tag pill on any card to filter by that tag.`},generate:{title:`Generate a custom agent`,agentIdLabel:`Agent id`,agentIdHint:`Must start with <code>custom-</code>.`,descriptionLabel:`Describe what this agent should do`,descriptionPlaceholder:`e.g. Review Terraform/IaC changes and flag security misconfigurations, excessive IAM permissions, and public S3 buckets before merging. Conservative and terse.`,note:`Claude will draft a full <code>.md</code> body. You'll review it in the Studio and can edit before saving. This spawns a one-shot claude invocation and can take up to 90 seconds.`,generating:`Generating…`,generateButton:`Generate`},empty:{title:`No agents installed`,body:`Run <code>{{command}}</code> in this project to install the upstream agents, or create a custom agent now.`},actions:{template:`Template`,templateTitle:`Start from a template`,generate:`Generate`,generateWithClaude:`Generate with Claude`,generateWithAi:`Generate with AI`,blank:`Blank`,blankTitle:`Start from a blank template`},sidebar:{title:`Catalog`,createLabel:`Create a custom agent:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Shipped by specrails-core; read-only.`,custom:`Custom ({{count}})`,customDescription:`Your project's custom-*.md files. Use Template / Generate / Blank above to create one.`,noCustomAgents:`No custom agents yet.`},detail:{defaultModel:`default model: {{model}}`,aiEdit:`AI Edit`,aiEditTitle:`Iteratively refine this agent with AI`,readOnly:`read-only`,editableHint:`editable — use Edit above`},kind:{upstream:`upstream`,custom:`custom`}},i={providerLabel:`Profile provider`,loading:`Loading profiles…`,selectPrompt:`Select a profile to edit`,errors:{listFailed:`List failed: {{status}}`,loadFailed:`Load failed: {{status}}`,migrationFailed:`Migration failed: {{status}}`,createFailed:`Create failed: {{status}}`,duplicateFailed:`Duplicate failed: {{status}}`,deleteFailed:`Delete failed: {{status}}`,saveFailed:`Save failed: {{status}}`},toasts:{migrated:`Profile migrated`,migratedDescription:`default profile created from your current agents`,migrationFailed:`Migration failed`,created:`Profile created`,createFailed:`Failed to create profile`,duplicated:`Profile duplicated`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Failed to duplicate profile`,deleted:`Profile deleted`,deleteFailed:`Failed to delete profile`,saved:`Profile saved`,saveFailed:`Failed to save profile`,savedWithUntargeted:`Profile saved with untargeted agents`,savedWithUntargetedDescription:`No routing rule points to: {{agents}}. Add a tag rule or retarget the default rule if you want them to run.`},createDialog:{title:`New profile`,description:`Pick a lowercase kebab-case name (letters, digits, and hyphens).`,confirmLabel:`Create`,invalidHint:`Must start with a letter or digit and contain only lowercase letters, digits, and hyphens.`},duplicateDialog:{title:`Duplicate "{{name}}"`,description:`Name for the new profile.`,invalidHint:`Lowercase kebab-case only.`},deleteDialog:{title:`Delete profile "{{name}}"?`,description:`This cannot be undone. Jobs already launched with this profile keep their snapshot; future launches will fall back to the resolution order.`},empty:{title:`No profiles yet`,body:`Profiles let you save orchestrator + agent + routing combinations and pick one per rail.`,migrateButton:`Migrate from current agents`,blankButton:`Blank profile`,migrateExplainer:`"Migrate" reads your existing <code>.claude/agents/</code> frontmatter models and creates a <code>default</code> profile mirroring today's behavior — zero-loss.`},sidebar:{title:`Profiles`,teamDefault:`(team default)`},editorFooter:{fixValidationIssues:`Fix validation issues before saving`,issuesToResolve_one:`{{count}} issue to resolve`,issuesToResolve_other:`{{count}} issues to resolve`}},a={title:`Profile usage`,windowLabel:`{{days}}d`,subtitleEmpty:`Jobs launched per profile in the selected window.`,subtitle:`Jobs launched per profile in the last {{count}} days.`,empty:`No profile-scoped jobs yet.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`success rate`,okSuffix:`ok`,avgDurationTooltip:`avg duration`,avgTokensTooltip:`avg tokens`,tokensSuffix:`tok`},o={addTitle:`Add routing rule`,editTitle:`Edit routing rule`,addDescription:`Add a tag-matched routing rule using lowercase kebab-case tags.`,editDescription:`Update the tags or target agent for this rule.`,tagsLabel:`Tags`,tagsHint:`Comma-separated. Use lowercase kebab-case like <code>frontend</code> or <code>api-design</code>.`,invalidTags_one:`Invalid tag: {{tags}}. Tags must use lowercase letters, digits, and hyphens only.`,invalidTags_other:`Invalid tags: {{tags}}. Tags must use lowercase letters, digits, and hyphens only.`,routeToLabel:`Route to`,routeToHint:`Only agents in this profile's chain can be routing targets.`,addRule:`Add rule`,saveChanges:`Save changes`},s={profileTitle:`Agent profile for this rail`,noProfile:`No profile`,modelTitle:`Model for this Freestyle rail`,loopModelTitle:`Model for this loop`,engineTitle:`AI provider for all roles in this launch: architect, developer and reviewer`,localEngine:`Local engine`,rolesEngine:`Roles`,rolesEngineTitle:`Hybrid engines per role: architect, developer and reviewer use the runtime configuration; verifier and decider use the loop roles (Settings ▸ AI providers)`,rolesChip:`Per-role engines`,rolesChipTitle:`Engines configured per role in Settings ▸ AI providers: architect, developer and reviewer from the runtime configuration; verifier and decider from the loop roles. Model, effort and profile are not chosen here.`},c={page:n,catalog:r,profiles:i,usage:a,routingRule:o,railSelectors:s};export{t};
@@ -1 +1 @@
1
- var e={title:`Agenti`,subtitle:`Gestisci i profili agente e il catalogo (upstream + custom) di questo progetto.`,tabs:{profiles:`Profili`,usage:`Utilizzo`,catalog:`Catalogo`},banner:{title:`La pipeline con profili richiede specrails-core {{required}}+`,body:`Questo progetto ha <code>{{version}}</code>. Esegui <code>{{command}}</code> nel progetto per sbloccare la modalità profili. I profili creati qui verranno comunque salvati; semplicemente non influiranno sulla pipeline finché core non viene aggiornato.`,unknownVersion:`sconosciuta`}},t={loading:`Caricamento del catalogo…`,aiEditChipLabel:`Modifica AI · {{agentId}}`,errors:{loadFailed:`Caricamento del catalogo non riuscito: {{status}}`,bodyLoadFailed:`Caricamento del corpo dell'agente non riuscito: {{status}}`,generateFailed:`Generazione non riuscita: {{status}}`,agentLoadFailed:`Caricamento non riuscito: {{status}}`},templates:{title:`Libreria di template agente`,countOf:`{{shown}} di {{total}}`,description:`Parti da un template curato tra engineering, prodotto, scienza, salute, legale e altro. Scegline uno e aprilo nello Studio per revisionarlo e modificarlo prima di salvare.`,searchPlaceholder:`Cerca per nome, descrizione, tag o categoria…`,allCategories:`Tutte`,tagFilter:`Filtro tag:`,noMatch:`Nessun template corrisponde ai filtri.`,clearFilters:`Cancella filtri`,openInStudio:`Apri nello Studio →`,tip:`Suggerimento: clicca un tag su una card per filtrare per quel tag.`},generate:{title:`Genera un agente custom`,agentIdLabel:`ID agente`,agentIdHint:`Deve iniziare con <code>custom-</code>.`,descriptionLabel:`Descrivi cosa deve fare questo agente`,descriptionPlaceholder:`es. Revisiona le modifiche Terraform/IaC e segnala configurazioni di sicurezza errate, permessi IAM eccessivi e bucket S3 pubblici prima del merge. Conservativo e conciso.`,note:`Claude redigerà un corpo <code>.md</code> completo. Lo revisionerai nello Studio e potrai modificarlo prima di salvare. Questo avvia un'invocazione claude one-shot e può richiedere fino a 90 secondi.`,generating:`Generazione…`,generateButton:`Genera`},empty:{title:`Nessun agente installato`,body:`Esegui <code>{{command}}</code> in questo progetto per installare gli agenti upstream, oppure crea subito un agente custom.`},actions:{template:`Template`,templateTitle:`Parti da un template`,generate:`Genera`,generateWithClaude:`Genera con Claude`,generateWithAi:`Genera con IA`,blank:`Vuoto`,blankTitle:`Parti da un template vuoto`},sidebar:{title:`Catalogo`,createLabel:`Crea un agente custom:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Forniti da specrails-core; sola lettura.`,custom:`Custom ({{count}})`,customDescription:`I file custom-*.md del tuo progetto. Usa Template / Genera / Vuoto qui sopra per crearne uno.`,noCustomAgents:`Ancora nessun agente custom.`},detail:{defaultModel:`modello predefinito: {{model}}`,aiEdit:`Modifica AI`,aiEditTitle:`Raffina iterativamente questo agente con l'AI`,readOnly:`sola lettura`,editableHint:`modificabile — usa Modifica qui sopra`},kind:{upstream:`upstream`,custom:`custom`}},n={providerLabel:`Provider del profilo`,loading:`Caricamento dei profili…`,selectPrompt:`Seleziona un profilo da modificare`,errors:{listFailed:`Caricamento dell'elenco non riuscito: {{status}}`,loadFailed:`Caricamento non riuscito: {{status}}`,migrationFailed:`Migrazione non riuscita: {{status}}`,createFailed:`Creazione non riuscita: {{status}}`,duplicateFailed:`Duplicazione non riuscita: {{status}}`,deleteFailed:`Eliminazione non riuscita: {{status}}`,saveFailed:`Salvataggio non riuscito: {{status}}`},toasts:{migrated:`Profilo migrato`,migratedDescription:`profilo default creato dagli agenti attuali`,migrationFailed:`Migrazione non riuscita`,created:`Profilo creato`,createFailed:`Impossibile creare il profilo`,duplicated:`Profilo duplicato`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Impossibile duplicare il profilo`,deleted:`Profilo eliminato`,deleteFailed:`Impossibile eliminare il profilo`,saved:`Profilo salvato`,saveFailed:`Impossibile salvare il profilo`,savedWithUntargeted:`Profilo salvato con agenti senza routing`,savedWithUntargetedDescription:`Nessuna regola di routing punta a: {{agents}}. Aggiungi una regola per tag o ridefinisci la regola default se vuoi che vengano eseguiti.`},createDialog:{title:`Nuovo profilo`,description:`Scegli un nome in kebab-case minuscolo (lettere, cifre e trattini).`,confirmLabel:`Crea`,invalidHint:`Deve iniziare con una lettera o una cifra e contenere solo lettere minuscole, cifre e trattini.`},duplicateDialog:{title:`Duplica "{{name}}"`,description:`Nome del nuovo profilo.`,invalidHint:`Solo kebab-case minuscolo.`},deleteDialog:{title:`Eliminare il profilo "{{name}}"?`,description:`Questa azione è irreversibile. I job già avviati con questo profilo mantengono il loro snapshot; i prossimi avvii ricadranno sull'ordine di risoluzione.`},empty:{title:`Ancora nessun profilo`,body:`I profili permettono di salvare combinazioni di orchestratore + agenti + routing e sceglierne una per rail.`,migrateButton:`Migra dagli agenti attuali`,blankButton:`Profilo vuoto`,migrateExplainer:`"Migra" legge i modelli dal frontmatter dei tuoi <code>.claude/agents/</code> esistenti e crea un profilo <code>default</code> che rispecchia il comportamento attuale — senza perdite.`},sidebar:{title:`Profili`,teamDefault:`(default del team)`},editorFooter:{fixValidationIssues:`Correggi i problemi di validazione prima di salvare`,issuesToResolve_one:`{{count}} problema da risolvere`,issuesToResolve_other:`{{count}} problemi da risolvere`}},r={title:`Utilizzo dei profili`,windowLabel:`{{days}}d`,subtitleEmpty:`Job avviati per profilo nella finestra selezionata.`,subtitle:`Job avviati per profilo negli ultimi {{count}} giorni.`,empty:`Ancora nessun job con profilo.`,jobsTooltip:`job`,jobsLabel_one:`job`,jobsLabel_other:`job`,successRateTooltip:`tasso di successo`,okSuffix:`ok`,avgDurationTooltip:`durata media`,avgTokensTooltip:`token medi`,tokensSuffix:`tok`},i={addTitle:`Aggiungi regola di routing`,editTitle:`Modifica regola di routing`,addDescription:`Aggiungi una regola di routing per tag usando tag in kebab-case minuscolo.`,editDescription:`Aggiorna i tag o l'agente di destinazione per questa regola.`,tagsLabel:`Tag`,tagsHint:`Separati da virgola. Usa kebab-case minuscolo come <code>frontend</code> o <code>api-design</code>.`,invalidTags_one:`Tag non valido: {{tags}}. I tag possono contenere solo lettere minuscole, cifre e trattini.`,invalidTags_other:`Tag non validi: {{tags}}. I tag possono contenere solo lettere minuscole, cifre e trattini.`,routeToLabel:`Instrada verso`,routeToHint:`Solo gli agenti nella catena di questo profilo possono essere destinazioni di routing.`,addRule:`Aggiungi regola`,saveChanges:`Salva modifiche`},a={profileTitle:`Profilo agente per questo rail`,noProfile:`Nessun profilo`,modelTitle:`Modello per questo rail Freestyle`,loopModelTitle:`Modello per questo loop`,engineTitle:`Engine AI per questo rail`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
1
+ var e={title:`Agenti`,subtitle:`Gestisci i profili agente e il catalogo (upstream + custom) di questo progetto.`,tabs:{profiles:`Profili`,usage:`Utilizzo`,catalog:`Catalogo`},banner:{title:`La pipeline con profili richiede specrails-core {{required}}+`,body:`Questo progetto ha <code>{{version}}</code>. Esegui <code>{{command}}</code> nel progetto per sbloccare la modalità profili. I profili creati qui verranno comunque salvati; semplicemente non influiranno sulla pipeline finché core non viene aggiornato.`,unknownVersion:`sconosciuta`}},t={loading:`Caricamento del catalogo…`,aiEditChipLabel:`Modifica AI · {{agentId}}`,errors:{loadFailed:`Caricamento del catalogo non riuscito: {{status}}`,bodyLoadFailed:`Caricamento del corpo dell'agente non riuscito: {{status}}`,generateFailed:`Generazione non riuscita: {{status}}`,agentLoadFailed:`Caricamento non riuscito: {{status}}`},templates:{title:`Libreria di template agente`,countOf:`{{shown}} di {{total}}`,description:`Parti da un template curato tra engineering, prodotto, scienza, salute, legale e altro. Scegline uno e aprilo nello Studio per revisionarlo e modificarlo prima di salvare.`,searchPlaceholder:`Cerca per nome, descrizione, tag o categoria…`,allCategories:`Tutte`,tagFilter:`Filtro tag:`,noMatch:`Nessun template corrisponde ai filtri.`,clearFilters:`Cancella filtri`,openInStudio:`Apri nello Studio →`,tip:`Suggerimento: clicca un tag su una card per filtrare per quel tag.`},generate:{title:`Genera un agente custom`,agentIdLabel:`ID agente`,agentIdHint:`Deve iniziare con <code>custom-</code>.`,descriptionLabel:`Descrivi cosa deve fare questo agente`,descriptionPlaceholder:`es. Revisiona le modifiche Terraform/IaC e segnala configurazioni di sicurezza errate, permessi IAM eccessivi e bucket S3 pubblici prima del merge. Conservativo e conciso.`,note:`Claude redigerà un corpo <code>.md</code> completo. Lo revisionerai nello Studio e potrai modificarlo prima di salvare. Questo avvia un'invocazione claude one-shot e può richiedere fino a 90 secondi.`,generating:`Generazione…`,generateButton:`Genera`},empty:{title:`Nessun agente installato`,body:`Esegui <code>{{command}}</code> in questo progetto per installare gli agenti upstream, oppure crea subito un agente custom.`},actions:{template:`Template`,templateTitle:`Parti da un template`,generate:`Genera`,generateWithClaude:`Genera con Claude`,generateWithAi:`Genera con IA`,blank:`Vuoto`,blankTitle:`Parti da un template vuoto`},sidebar:{title:`Catalogo`,createLabel:`Crea un agente custom:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Forniti da specrails-core; sola lettura.`,custom:`Custom ({{count}})`,customDescription:`I file custom-*.md del tuo progetto. Usa Template / Genera / Vuoto qui sopra per crearne uno.`,noCustomAgents:`Ancora nessun agente custom.`},detail:{defaultModel:`modello predefinito: {{model}}`,aiEdit:`Modifica AI`,aiEditTitle:`Raffina iterativamente questo agente con l'AI`,readOnly:`sola lettura`,editableHint:`modificabile — usa Modifica qui sopra`},kind:{upstream:`upstream`,custom:`custom`}},n={providerLabel:`Provider del profilo`,loading:`Caricamento dei profili…`,selectPrompt:`Seleziona un profilo da modificare`,errors:{listFailed:`Caricamento dell'elenco non riuscito: {{status}}`,loadFailed:`Caricamento non riuscito: {{status}}`,migrationFailed:`Migrazione non riuscita: {{status}}`,createFailed:`Creazione non riuscita: {{status}}`,duplicateFailed:`Duplicazione non riuscita: {{status}}`,deleteFailed:`Eliminazione non riuscita: {{status}}`,saveFailed:`Salvataggio non riuscito: {{status}}`},toasts:{migrated:`Profilo migrato`,migratedDescription:`profilo default creato dagli agenti attuali`,migrationFailed:`Migrazione non riuscita`,created:`Profilo creato`,createFailed:`Impossibile creare il profilo`,duplicated:`Profilo duplicato`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Impossibile duplicare il profilo`,deleted:`Profilo eliminato`,deleteFailed:`Impossibile eliminare il profilo`,saved:`Profilo salvato`,saveFailed:`Impossibile salvare il profilo`,savedWithUntargeted:`Profilo salvato con agenti senza routing`,savedWithUntargetedDescription:`Nessuna regola di routing punta a: {{agents}}. Aggiungi una regola per tag o ridefinisci la regola default se vuoi che vengano eseguiti.`},createDialog:{title:`Nuovo profilo`,description:`Scegli un nome in kebab-case minuscolo (lettere, cifre e trattini).`,confirmLabel:`Crea`,invalidHint:`Deve iniziare con una lettera o una cifra e contenere solo lettere minuscole, cifre e trattini.`},duplicateDialog:{title:`Duplica "{{name}}"`,description:`Nome del nuovo profilo.`,invalidHint:`Solo kebab-case minuscolo.`},deleteDialog:{title:`Eliminare il profilo "{{name}}"?`,description:`Questa azione è irreversibile. I job già avviati con questo profilo mantengono il loro snapshot; i prossimi avvii ricadranno sull'ordine di risoluzione.`},empty:{title:`Ancora nessun profilo`,body:`I profili permettono di salvare combinazioni di orchestratore + agenti + routing e sceglierne una per rail.`,migrateButton:`Migra dagli agenti attuali`,blankButton:`Profilo vuoto`,migrateExplainer:`"Migra" legge i modelli dal frontmatter dei tuoi <code>.claude/agents/</code> esistenti e crea un profilo <code>default</code> che rispecchia il comportamento attuale — senza perdite.`},sidebar:{title:`Profili`,teamDefault:`(default del team)`},editorFooter:{fixValidationIssues:`Correggi i problemi di validazione prima di salvare`,issuesToResolve_one:`{{count}} problema da risolvere`,issuesToResolve_other:`{{count}} problemi da risolvere`}},r={title:`Utilizzo dei profili`,windowLabel:`{{days}}d`,subtitleEmpty:`Job avviati per profilo nella finestra selezionata.`,subtitle:`Job avviati per profilo negli ultimi {{count}} giorni.`,empty:`Ancora nessun job con profilo.`,jobsTooltip:`job`,jobsLabel_one:`job`,jobsLabel_other:`job`,successRateTooltip:`tasso di successo`,okSuffix:`ok`,avgDurationTooltip:`durata media`,avgTokensTooltip:`token medi`,tokensSuffix:`tok`},i={addTitle:`Aggiungi regola di routing`,editTitle:`Modifica regola di routing`,addDescription:`Aggiungi una regola di routing per tag usando tag in kebab-case minuscolo.`,editDescription:`Aggiorna i tag o l'agente di destinazione per questa regola.`,tagsLabel:`Tag`,tagsHint:`Separati da virgola. Usa kebab-case minuscolo come <code>frontend</code> o <code>api-design</code>.`,invalidTags_one:`Tag non valido: {{tags}}. I tag possono contenere solo lettere minuscole, cifre e trattini.`,invalidTags_other:`Tag non validi: {{tags}}. I tag possono contenere solo lettere minuscole, cifre e trattini.`,routeToLabel:`Instrada verso`,routeToHint:`Solo gli agenti nella catena di questo profilo possono essere destinazioni di routing.`,addRule:`Aggiungi regola`,saveChanges:`Salva modifiche`},a={profileTitle:`Profilo agente per questo rail`,noProfile:`Nessun profilo`,modelTitle:`Modello per questo rail Freestyle`,loopModelTitle:`Modello per questo loop`,engineTitle:`Provider IA per tutti i ruoli di questo avvio: architetto, sviluppatore e revisore`,localEngine:`Motore locale`,rolesEngine:`Ruoli`,rolesEngineTitle:`Motori ibridi per ruolo: architect, developer e reviewer usano la configurazione del runtime; verifier e decider usano i ruoli del loop (Impostazioni ▸ Agenti Specrails)`,rolesChip:`Motori per ruolo`,rolesChipTitle:`Motori configurati per ruolo in Impostazioni ▸ Agenti Specrails: architect, developer e reviewer dalla configurazione del runtime; verifier e decider dai ruoli del loop. Modello, sforzo e profilo non si scelgono qui.`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
@@ -1 +1 @@
1
- var e={title:`Agentes`,subtitle:`Gestiona los perfiles de agentes y el catálogo (upstream + personalizados) de este proyecto.`,tabs:{profiles:`Perfiles`,usage:`Uso`,catalog:`Catálogo`},banner:{title:`El pipeline con perfiles requiere specrails-core {{required}}+`,body:`Este proyecto tiene <code>{{version}}</code>. Ejecuta <code>{{command}}</code> dentro del proyecto para activar el modo perfiles. Los perfiles que crees aquí se guardarán igualmente; simplemente no afectarán al pipeline hasta que actualices core.`,unknownVersion:`desconocida`}},t={loading:`Cargando catálogo…`,aiEditChipLabel:`Edición IA · {{agentId}}`,errors:{loadFailed:`Error al cargar el catálogo: {{status}}`,bodyLoadFailed:`Error al cargar el cuerpo del agente: {{status}}`,generateFailed:`Error al generar: {{status}}`,agentLoadFailed:`Error al cargar: {{status}}`},templates:{title:`Biblioteca de plantillas de agentes`,countOf:`{{shown}} de {{total}}`,description:`Empieza desde una plantilla seleccionada de ingeniería, producto, ciencia, salud, legal y más. Elige una y ábrela en el Studio para revisarla y editarla antes de guardar.`,searchPlaceholder:`Buscar por nombre, descripción, etiqueta o categoría…`,allCategories:`Todas`,tagFilter:`Filtro de etiquetas:`,noMatch:`Ninguna plantilla coincide con tus filtros.`,clearFilters:`Limpiar filtros`,openInStudio:`Abrir en el Studio →`,tip:`Consejo: haz clic en una etiqueta de cualquier tarjeta para filtrar por ella.`},generate:{title:`Generar un agente personalizado`,agentIdLabel:`Id del agente`,agentIdHint:`Debe empezar por <code>custom-</code>.`,descriptionLabel:`Describe qué debe hacer este agente`,descriptionPlaceholder:`p. ej. Revisar cambios de Terraform/IaC y señalar errores de configuración de seguridad, permisos IAM excesivos y buckets S3 públicos antes del merge. Conservador y conciso.`,note:`Claude redactará un cuerpo <code>.md</code> completo. Lo revisarás en el Studio y podrás editarlo antes de guardar. Esto lanza una invocación puntual de claude y puede tardar hasta 90 segundos.`,generating:`Generando…`,generateButton:`Generar`},empty:{title:`No hay agentes instalados`,body:`Ejecuta <code>{{command}}</code> en este proyecto para instalar los agentes upstream, o crea ahora un agente personalizado.`},actions:{template:`Plantilla`,templateTitle:`Empezar desde una plantilla`,generate:`Generar`,generateWithClaude:`Generar con Claude`,generateWithAi:`Generar con IA`,blank:`En blanco`,blankTitle:`Empezar desde una plantilla en blanco`},sidebar:{title:`Catálogo`,createLabel:`Crear un agente personalizado:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Incluidos con specrails-core; solo lectura.`,custom:`Personalizados ({{count}})`,customDescription:`Los archivos custom-*.md de tu proyecto. Usa Plantilla / Generar / En blanco arriba para crear uno.`,noCustomAgents:`Aún no hay agentes personalizados.`},detail:{defaultModel:`modelo por defecto: {{model}}`,aiEdit:`Edición IA`,aiEditTitle:`Refina este agente iterativamente con IA`,readOnly:`solo lectura`,editableHint:`editable — usa Editar arriba`},kind:{upstream:`upstream`,custom:`personalizado`}},n={providerLabel:`Proveedor del perfil`,loading:`Cargando perfiles…`,selectPrompt:`Selecciona un perfil para editarlo`,errors:{listFailed:`Error al listar: {{status}}`,loadFailed:`Error al cargar: {{status}}`,migrationFailed:`Error en la migración: {{status}}`,createFailed:`Error al crear: {{status}}`,duplicateFailed:`Error al duplicar: {{status}}`,deleteFailed:`Error al eliminar: {{status}}`,saveFailed:`Error al guardar: {{status}}`},toasts:{migrated:`Perfil migrado`,migratedDescription:`perfil default creado a partir de tus agentes actuales`,migrationFailed:`Error en la migración`,created:`Perfil creado`,createFailed:`No se pudo crear el perfil`,duplicated:`Perfil duplicado`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`No se pudo duplicar el perfil`,deleted:`Perfil eliminado`,deleteFailed:`No se pudo eliminar el perfil`,saved:`Perfil guardado`,saveFailed:`No se pudo guardar el perfil`,savedWithUntargeted:`Perfil guardado con agentes sin asignar`,savedWithUntargetedDescription:`Ninguna regla de enrutado apunta a: {{agents}}. Añade una regla por etiquetas o reorienta la regla por defecto si quieres que se ejecuten.`},createDialog:{title:`Nuevo perfil`,description:`Elige un nombre en minúsculas y kebab-case (letras, dígitos y guiones).`,confirmLabel:`Crear`,invalidHint:`Debe empezar por una letra o un dígito y contener solo letras minúsculas, dígitos y guiones.`},duplicateDialog:{title:`Duplicar «{{name}}»`,description:`Nombre para el nuevo perfil.`,invalidHint:`Solo minúsculas en kebab-case.`},deleteDialog:{title:`¿Eliminar el perfil «{{name}}»?`,description:`Esta acción no se puede deshacer. Los jobs ya lanzados con este perfil conservan su snapshot; los próximos lanzamientos usarán el orden de resolución.`},empty:{title:`Aún no hay perfiles`,body:`Los perfiles te permiten guardar combinaciones de orquestador + agentes + enrutado y elegir una por rail.`,migrateButton:`Migrar desde los agentes actuales`,blankButton:`Perfil en blanco`,migrateExplainer:`«Migrar» lee los modelos del frontmatter de tu <code>.claude/agents/</code> actual y crea un perfil <code>default</code> que replica el comportamiento de hoy — sin pérdidas.`},sidebar:{title:`Perfiles`,teamDefault:`(por defecto del equipo)`},editorFooter:{fixValidationIssues:`Corrige los problemas de validación antes de guardar`,issuesToResolve_one:`{{count}} problema por resolver`,issuesToResolve_other:`{{count}} problemas por resolver`}},r={title:`Uso de perfiles`,windowLabel:`{{days}}d`,subtitleEmpty:`Jobs lanzados por perfil en la ventana seleccionada.`,subtitle:`Jobs lanzados por perfil en los últimos {{count}} días.`,empty:`Aún no hay jobs con perfil.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`tasa de éxito`,okSuffix:`ok`,avgDurationTooltip:`duración media`,avgTokensTooltip:`media de tokens`,tokensSuffix:`tok`},i={addTitle:`Añadir regla de enrutado`,editTitle:`Editar regla de enrutado`,addDescription:`Añade una regla de enrutado por etiquetas usando etiquetas en minúsculas y kebab-case.`,editDescription:`Actualiza las etiquetas o el agente de destino de esta regla.`,tagsLabel:`Etiquetas`,tagsHint:`Separadas por comas. Usa minúsculas en kebab-case, como <code>frontend</code> o <code>api-design</code>.`,invalidTags_one:`Etiqueta no válida: {{tags}}. Las etiquetas solo pueden contener letras minúsculas, dígitos y guiones.`,invalidTags_other:`Etiquetas no válidas: {{tags}}. Las etiquetas solo pueden contener letras minúsculas, dígitos y guiones.`,routeToLabel:`Enrutar a`,routeToHint:`Solo los agentes de la cadena de este perfil pueden ser destinos de enrutado.`,addRule:`Añadir regla`,saveChanges:`Guardar cambios`},a={profileTitle:`Perfil de agentes para este rail`,noProfile:`Sin perfil`,modelTitle:`Modelo para este rail Freestyle`,loopModelTitle:`Modelo para este loop`,engineTitle:`Motor de IA para este rail`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
1
+ var e={title:`Agentes`,subtitle:`Gestiona los perfiles de agentes y el catálogo (upstream + personalizados) de este proyecto.`,tabs:{profiles:`Perfiles`,usage:`Uso`,catalog:`Catálogo`},banner:{title:`El pipeline con perfiles requiere specrails-core {{required}}+`,body:`Este proyecto tiene <code>{{version}}</code>. Ejecuta <code>{{command}}</code> dentro del proyecto para activar el modo perfiles. Los perfiles que crees aquí se guardarán igualmente; simplemente no afectarán al pipeline hasta que actualices core.`,unknownVersion:`desconocida`}},t={loading:`Cargando catálogo…`,aiEditChipLabel:`Edición IA · {{agentId}}`,errors:{loadFailed:`Error al cargar el catálogo: {{status}}`,bodyLoadFailed:`Error al cargar el cuerpo del agente: {{status}}`,generateFailed:`Error al generar: {{status}}`,agentLoadFailed:`Error al cargar: {{status}}`},templates:{title:`Biblioteca de plantillas de agentes`,countOf:`{{shown}} de {{total}}`,description:`Empieza desde una plantilla seleccionada de ingeniería, producto, ciencia, salud, legal y más. Elige una y ábrela en el Studio para revisarla y editarla antes de guardar.`,searchPlaceholder:`Buscar por nombre, descripción, etiqueta o categoría…`,allCategories:`Todas`,tagFilter:`Filtro de etiquetas:`,noMatch:`Ninguna plantilla coincide con tus filtros.`,clearFilters:`Limpiar filtros`,openInStudio:`Abrir en el Studio →`,tip:`Consejo: haz clic en una etiqueta de cualquier tarjeta para filtrar por ella.`},generate:{title:`Generar un agente personalizado`,agentIdLabel:`Id del agente`,agentIdHint:`Debe empezar por <code>custom-</code>.`,descriptionLabel:`Describe qué debe hacer este agente`,descriptionPlaceholder:`p. ej. Revisar cambios de Terraform/IaC y señalar errores de configuración de seguridad, permisos IAM excesivos y buckets S3 públicos antes del merge. Conservador y conciso.`,note:`Claude redactará un cuerpo <code>.md</code> completo. Lo revisarás en el Studio y podrás editarlo antes de guardar. Esto lanza una invocación puntual de claude y puede tardar hasta 90 segundos.`,generating:`Generando…`,generateButton:`Generar`},empty:{title:`No hay agentes instalados`,body:`Ejecuta <code>{{command}}</code> en este proyecto para instalar los agentes upstream, o crea ahora un agente personalizado.`},actions:{template:`Plantilla`,templateTitle:`Empezar desde una plantilla`,generate:`Generar`,generateWithClaude:`Generar con Claude`,generateWithAi:`Generar con IA`,blank:`En blanco`,blankTitle:`Empezar desde una plantilla en blanco`},sidebar:{title:`Catálogo`,createLabel:`Crear un agente personalizado:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Incluidos con specrails-core; solo lectura.`,custom:`Personalizados ({{count}})`,customDescription:`Los archivos custom-*.md de tu proyecto. Usa Plantilla / Generar / En blanco arriba para crear uno.`,noCustomAgents:`Aún no hay agentes personalizados.`},detail:{defaultModel:`modelo por defecto: {{model}}`,aiEdit:`Edición IA`,aiEditTitle:`Refina este agente iterativamente con IA`,readOnly:`solo lectura`,editableHint:`editable — usa Editar arriba`},kind:{upstream:`upstream`,custom:`personalizado`}},n={providerLabel:`Proveedor del perfil`,loading:`Cargando perfiles…`,selectPrompt:`Selecciona un perfil para editarlo`,errors:{listFailed:`Error al listar: {{status}}`,loadFailed:`Error al cargar: {{status}}`,migrationFailed:`Error en la migración: {{status}}`,createFailed:`Error al crear: {{status}}`,duplicateFailed:`Error al duplicar: {{status}}`,deleteFailed:`Error al eliminar: {{status}}`,saveFailed:`Error al guardar: {{status}}`},toasts:{migrated:`Perfil migrado`,migratedDescription:`perfil default creado a partir de tus agentes actuales`,migrationFailed:`Error en la migración`,created:`Perfil creado`,createFailed:`No se pudo crear el perfil`,duplicated:`Perfil duplicado`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`No se pudo duplicar el perfil`,deleted:`Perfil eliminado`,deleteFailed:`No se pudo eliminar el perfil`,saved:`Perfil guardado`,saveFailed:`No se pudo guardar el perfil`,savedWithUntargeted:`Perfil guardado con agentes sin asignar`,savedWithUntargetedDescription:`Ninguna regla de enrutado apunta a: {{agents}}. Añade una regla por etiquetas o reorienta la regla por defecto si quieres que se ejecuten.`},createDialog:{title:`Nuevo perfil`,description:`Elige un nombre en minúsculas y kebab-case (letras, dígitos y guiones).`,confirmLabel:`Crear`,invalidHint:`Debe empezar por una letra o un dígito y contener solo letras minúsculas, dígitos y guiones.`},duplicateDialog:{title:`Duplicar «{{name}}»`,description:`Nombre para el nuevo perfil.`,invalidHint:`Solo minúsculas en kebab-case.`},deleteDialog:{title:`¿Eliminar el perfil «{{name}}»?`,description:`Esta acción no se puede deshacer. Los jobs ya lanzados con este perfil conservan su snapshot; los próximos lanzamientos usarán el orden de resolución.`},empty:{title:`Aún no hay perfiles`,body:`Los perfiles te permiten guardar combinaciones de orquestador + agentes + enrutado y elegir una por rail.`,migrateButton:`Migrar desde los agentes actuales`,blankButton:`Perfil en blanco`,migrateExplainer:`«Migrar» lee los modelos del frontmatter de tu <code>.claude/agents/</code> actual y crea un perfil <code>default</code> que replica el comportamiento de hoy — sin pérdidas.`},sidebar:{title:`Perfiles`,teamDefault:`(por defecto del equipo)`},editorFooter:{fixValidationIssues:`Corrige los problemas de validación antes de guardar`,issuesToResolve_one:`{{count}} problema por resolver`,issuesToResolve_other:`{{count}} problemas por resolver`}},r={title:`Uso de perfiles`,windowLabel:`{{days}}d`,subtitleEmpty:`Jobs lanzados por perfil en la ventana seleccionada.`,subtitle:`Jobs lanzados por perfil en los últimos {{count}} días.`,empty:`Aún no hay jobs con perfil.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`tasa de éxito`,okSuffix:`ok`,avgDurationTooltip:`duración media`,avgTokensTooltip:`media de tokens`,tokensSuffix:`tok`},i={addTitle:`Añadir regla de enrutado`,editTitle:`Editar regla de enrutado`,addDescription:`Añade una regla de enrutado por etiquetas usando etiquetas en minúsculas y kebab-case.`,editDescription:`Actualiza las etiquetas o el agente de destino de esta regla.`,tagsLabel:`Etiquetas`,tagsHint:`Separadas por comas. Usa minúsculas en kebab-case, como <code>frontend</code> o <code>api-design</code>.`,invalidTags_one:`Etiqueta no válida: {{tags}}. Las etiquetas solo pueden contener letras minúsculas, dígitos y guiones.`,invalidTags_other:`Etiquetas no válidas: {{tags}}. Las etiquetas solo pueden contener letras minúsculas, dígitos y guiones.`,routeToLabel:`Enrutar a`,routeToHint:`Solo los agentes de la cadena de este perfil pueden ser destinos de enrutado.`,addRule:`Añadir regla`,saveChanges:`Guardar cambios`},a={profileTitle:`Perfil de agentes para este rail`,noProfile:`Sin perfil`,modelTitle:`Modelo para este rail Freestyle`,loopModelTitle:`Modelo para este loop`,engineTitle:`Proveedor de IA para todos los roles de este lanzamiento: arquitecto, desarrollador y revisor`,localEngine:`Motor local`,rolesEngine:`Roles`,rolesEngineTitle:`Motores híbridos por rol: architect, developer y reviewer usan la configuración del runtime; verifier y decider usan los roles del loop (Ajustes ▸ Agentes Specrails)`,rolesChip:`Motores por rol`,rolesChipTitle:`Motores configurados por rol en Ajustes ▸ Agentes Specrails: architect, developer y reviewer desde la configuración del runtime; verifier y decider desde los roles del loop. Aquí no se elige modelo, esfuerzo ni perfil.`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
@@ -1 +1 @@
1
- var e={title:`Agents`,subtitle:`Gérez les profils d'agents et le catalogue (upstream + personnalisés) de ce projet.`,tabs:{profiles:`Profils`,usage:`Utilisation`,catalog:`Catalogue`},banner:{title:`Le pipeline avec profils nécessite specrails-core {{required}}+`,body:`Ce projet utilise <code>{{version}}</code>. Exécutez <code>{{command}}</code> dans le projet pour débloquer le mode profil. Les profils créés ici seront tout de même enregistrés ; ils n'affecteront simplement pas le pipeline tant que core n'est pas mis à jour.`,unknownVersion:`inconnue`}},t={loading:`Chargement du catalogue…`,aiEditChipLabel:`Édition IA · {{agentId}}`,errors:{loadFailed:`Échec du chargement du catalogue : {{status}}`,bodyLoadFailed:`Échec du chargement du corps de l'agent : {{status}}`,generateFailed:`Échec de la génération : {{status}}`,agentLoadFailed:`Échec du chargement : {{status}}`},templates:{title:`Bibliothèque de templates d'agents`,countOf:`{{shown}} sur {{total}}`,description:`Partez d'un template sélectionné dans l'ingénierie, le produit, la science, la santé, le juridique et plus encore. Choisissez-en un et ouvrez-le dans le Studio pour le relire et le modifier avant d'enregistrer.`,searchPlaceholder:`Rechercher par nom, description, tag ou catégorie…`,allCategories:`Toutes`,tagFilter:`Filtre de tags :`,noMatch:`Aucun template ne correspond à vos filtres.`,clearFilters:`Effacer les filtres`,openInStudio:`Ouvrir dans le Studio →`,tip:`Astuce : cliquez sur la pastille d'un tag sur une carte pour filtrer sur ce tag.`},generate:{title:`Générer un agent personnalisé`,agentIdLabel:`ID de l'agent`,agentIdHint:`Doit commencer par <code>custom-</code>.`,descriptionLabel:`Décrivez ce que cet agent doit faire`,descriptionPlaceholder:`ex. Relire les modifications Terraform/IaC et signaler les erreurs de configuration de sécurité, les permissions IAM excessives et les buckets S3 publics avant le merge. Conservateur et concis.`,note:`Claude rédigera un corps <code>.md</code> complet. Vous le relirez dans le Studio et pourrez le modifier avant d'enregistrer. Cela lance une invocation claude unique et peut prendre jusqu'à 90 secondes.`,generating:`Génération…`,generateButton:`Générer`},empty:{title:`Aucun agent installé`,body:`Exécutez <code>{{command}}</code> dans ce projet pour installer les agents upstream, ou créez un agent personnalisé dès maintenant.`},actions:{template:`Template`,templateTitle:`Partir d'un template`,generate:`Générer`,generateWithClaude:`Générer avec Claude`,generateWithAi:`Générer avec l’IA`,blank:`Vierge`,blankTitle:`Partir d'un template vierge`},sidebar:{title:`Catalogue`,createLabel:`Créer un agent personnalisé :`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Fournis par specrails-core ; lecture seule.`,custom:`Personnalisés ({{count}})`,customDescription:`Les fichiers custom-*.md de votre projet. Utilisez Template / Générer / Vierge ci-dessus pour en créer un.`,noCustomAgents:`Aucun agent personnalisé pour l'instant.`},detail:{defaultModel:`modèle par défaut : {{model}}`,aiEdit:`Édition IA`,aiEditTitle:`Affiner cet agent de manière itérative avec l'IA`,readOnly:`lecture seule`,editableHint:`modifiable — utilisez Modifier ci-dessus`},kind:{upstream:`upstream`,custom:`personnalisé`}},n={providerLabel:`Fournisseur du profil`,loading:`Chargement des profils…`,selectPrompt:`Sélectionnez un profil à modifier`,errors:{listFailed:`Échec du listage : {{status}}`,loadFailed:`Échec du chargement : {{status}}`,migrationFailed:`Échec de la migration : {{status}}`,createFailed:`Échec de la création : {{status}}`,duplicateFailed:`Échec de la duplication : {{status}}`,deleteFailed:`Échec de la suppression : {{status}}`,saveFailed:`Échec de l'enregistrement : {{status}}`},toasts:{migrated:`Profil migré`,migratedDescription:`profil default créé à partir de vos agents actuels`,migrationFailed:`Échec de la migration`,created:`Profil créé`,createFailed:`Échec de la création du profil`,duplicated:`Profil dupliqué`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Échec de la duplication du profil`,deleted:`Profil supprimé`,deleteFailed:`Échec de la suppression du profil`,saved:`Profil enregistré`,saveFailed:`Échec de l'enregistrement du profil`,savedWithUntargeted:`Profil enregistré avec des agents non ciblés`,savedWithUntargetedDescription:`Aucune règle de routage ne pointe vers : {{agents}}. Ajoutez une règle de tag ou reciblez la règle par défaut si vous voulez qu'ils s'exécutent.`},createDialog:{title:`Nouveau profil`,description:`Choisissez un nom en kebab-case minuscule (lettres, chiffres et tirets).`,confirmLabel:`Créer`,invalidHint:`Doit commencer par une lettre ou un chiffre et ne contenir que des lettres minuscules, des chiffres et des tirets.`},duplicateDialog:{title:`Dupliquer « {{name}} »`,description:`Nom du nouveau profil.`,invalidHint:`Kebab-case minuscule uniquement.`},deleteDialog:{title:`Supprimer le profil « {{name}} » ?`,description:`Cette action est irréversible. Les jobs déjà lancés avec ce profil conservent leur snapshot ; les prochains lancements reviendront à l'ordre de résolution.`},empty:{title:`Aucun profil pour l'instant`,body:`Les profils vous permettent d'enregistrer des combinaisons orchestrateur + agents + routage et d'en choisir une par rail.`,migrateButton:`Migrer depuis les agents actuels`,blankButton:`Profil vierge`,migrateExplainer:`« Migrer » lit les modèles du frontmatter de vos <code>.claude/agents/</code> existants et crée un profil <code>default</code> reproduisant le comportement actuel — sans aucune perte.`},sidebar:{title:`Profils`,teamDefault:`(défaut de l'équipe)`},editorFooter:{fixValidationIssues:`Corrigez les problèmes de validation avant d'enregistrer`,issuesToResolve_one:`{{count}} problème à résoudre`,issuesToResolve_other:`{{count}} problèmes à résoudre`}},r={title:`Utilisation des profils`,windowLabel:`{{days}}j`,subtitleEmpty:`Jobs lancés par profil sur la période sélectionnée.`,subtitle:`Jobs lancés par profil au cours des {{count}} derniers jours.`,empty:`Aucun job lié à un profil pour l'instant.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`taux de réussite`,okSuffix:`ok`,avgDurationTooltip:`durée moyenne`,avgTokensTooltip:`tokens en moyenne`,tokensSuffix:`tok`},i={addTitle:`Ajouter une règle de routage`,editTitle:`Modifier la règle de routage`,addDescription:`Ajoutez une règle de routage par tags en kebab-case minuscule.`,editDescription:`Mettez à jour les tags ou l'agent cible de cette règle.`,tagsLabel:`Tags`,tagsHint:`Séparés par des virgules. Utilisez le kebab-case minuscule, comme <code>frontend</code> ou <code>api-design</code>.`,invalidTags_one:`Tag invalide : {{tags}}. Les tags ne peuvent contenir que des lettres minuscules, des chiffres et des tirets.`,invalidTags_other:`Tags invalides : {{tags}}. Les tags ne peuvent contenir que des lettres minuscules, des chiffres et des tirets.`,routeToLabel:`Router vers`,routeToHint:`Seuls les agents de la chaîne de ce profil peuvent être des cibles de routage.`,addRule:`Ajouter la règle`,saveChanges:`Enregistrer les modifications`},a={profileTitle:`Profil d'agents pour ce rail`,noProfile:`Aucun profil`,modelTitle:`Modèle pour ce rail Freestyle`,loopModelTitle:`Modèle pour ce loop`,engineTitle:`Moteur IA pour ce rail`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
1
+ var e={title:`Agents`,subtitle:`Gérez les profils d'agents et le catalogue (upstream + personnalisés) de ce projet.`,tabs:{profiles:`Profils`,usage:`Utilisation`,catalog:`Catalogue`},banner:{title:`Le pipeline avec profils nécessite specrails-core {{required}}+`,body:`Ce projet utilise <code>{{version}}</code>. Exécutez <code>{{command}}</code> dans le projet pour débloquer le mode profil. Les profils créés ici seront tout de même enregistrés ; ils n'affecteront simplement pas le pipeline tant que core n'est pas mis à jour.`,unknownVersion:`inconnue`}},t={loading:`Chargement du catalogue…`,aiEditChipLabel:`Édition IA · {{agentId}}`,errors:{loadFailed:`Échec du chargement du catalogue : {{status}}`,bodyLoadFailed:`Échec du chargement du corps de l'agent : {{status}}`,generateFailed:`Échec de la génération : {{status}}`,agentLoadFailed:`Échec du chargement : {{status}}`},templates:{title:`Bibliothèque de templates d'agents`,countOf:`{{shown}} sur {{total}}`,description:`Partez d'un template sélectionné dans l'ingénierie, le produit, la science, la santé, le juridique et plus encore. Choisissez-en un et ouvrez-le dans le Studio pour le relire et le modifier avant d'enregistrer.`,searchPlaceholder:`Rechercher par nom, description, tag ou catégorie…`,allCategories:`Toutes`,tagFilter:`Filtre de tags :`,noMatch:`Aucun template ne correspond à vos filtres.`,clearFilters:`Effacer les filtres`,openInStudio:`Ouvrir dans le Studio →`,tip:`Astuce : cliquez sur la pastille d'un tag sur une carte pour filtrer sur ce tag.`},generate:{title:`Générer un agent personnalisé`,agentIdLabel:`ID de l'agent`,agentIdHint:`Doit commencer par <code>custom-</code>.`,descriptionLabel:`Décrivez ce que cet agent doit faire`,descriptionPlaceholder:`ex. Relire les modifications Terraform/IaC et signaler les erreurs de configuration de sécurité, les permissions IAM excessives et les buckets S3 publics avant le merge. Conservateur et concis.`,note:`Claude rédigera un corps <code>.md</code> complet. Vous le relirez dans le Studio et pourrez le modifier avant d'enregistrer. Cela lance une invocation claude unique et peut prendre jusqu'à 90 secondes.`,generating:`Génération…`,generateButton:`Générer`},empty:{title:`Aucun agent installé`,body:`Exécutez <code>{{command}}</code> dans ce projet pour installer les agents upstream, ou créez un agent personnalisé dès maintenant.`},actions:{template:`Template`,templateTitle:`Partir d'un template`,generate:`Générer`,generateWithClaude:`Générer avec Claude`,generateWithAi:`Générer avec l’IA`,blank:`Vierge`,blankTitle:`Partir d'un template vierge`},sidebar:{title:`Catalogue`,createLabel:`Créer un agent personnalisé :`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Fournis par specrails-core ; lecture seule.`,custom:`Personnalisés ({{count}})`,customDescription:`Les fichiers custom-*.md de votre projet. Utilisez Template / Générer / Vierge ci-dessus pour en créer un.`,noCustomAgents:`Aucun agent personnalisé pour l'instant.`},detail:{defaultModel:`modèle par défaut : {{model}}`,aiEdit:`Édition IA`,aiEditTitle:`Affiner cet agent de manière itérative avec l'IA`,readOnly:`lecture seule`,editableHint:`modifiable — utilisez Modifier ci-dessus`},kind:{upstream:`upstream`,custom:`personnalisé`}},n={providerLabel:`Fournisseur du profil`,loading:`Chargement des profils…`,selectPrompt:`Sélectionnez un profil à modifier`,errors:{listFailed:`Échec du listage : {{status}}`,loadFailed:`Échec du chargement : {{status}}`,migrationFailed:`Échec de la migration : {{status}}`,createFailed:`Échec de la création : {{status}}`,duplicateFailed:`Échec de la duplication : {{status}}`,deleteFailed:`Échec de la suppression : {{status}}`,saveFailed:`Échec de l'enregistrement : {{status}}`},toasts:{migrated:`Profil migré`,migratedDescription:`profil default créé à partir de vos agents actuels`,migrationFailed:`Échec de la migration`,created:`Profil créé`,createFailed:`Échec de la création du profil`,duplicated:`Profil dupliqué`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Échec de la duplication du profil`,deleted:`Profil supprimé`,deleteFailed:`Échec de la suppression du profil`,saved:`Profil enregistré`,saveFailed:`Échec de l'enregistrement du profil`,savedWithUntargeted:`Profil enregistré avec des agents non ciblés`,savedWithUntargetedDescription:`Aucune règle de routage ne pointe vers : {{agents}}. Ajoutez une règle de tag ou reciblez la règle par défaut si vous voulez qu'ils s'exécutent.`},createDialog:{title:`Nouveau profil`,description:`Choisissez un nom en kebab-case minuscule (lettres, chiffres et tirets).`,confirmLabel:`Créer`,invalidHint:`Doit commencer par une lettre ou un chiffre et ne contenir que des lettres minuscules, des chiffres et des tirets.`},duplicateDialog:{title:`Dupliquer « {{name}} »`,description:`Nom du nouveau profil.`,invalidHint:`Kebab-case minuscule uniquement.`},deleteDialog:{title:`Supprimer le profil « {{name}} » ?`,description:`Cette action est irréversible. Les jobs déjà lancés avec ce profil conservent leur snapshot ; les prochains lancements reviendront à l'ordre de résolution.`},empty:{title:`Aucun profil pour l'instant`,body:`Les profils vous permettent d'enregistrer des combinaisons orchestrateur + agents + routage et d'en choisir une par rail.`,migrateButton:`Migrer depuis les agents actuels`,blankButton:`Profil vierge`,migrateExplainer:`« Migrer » lit les modèles du frontmatter de vos <code>.claude/agents/</code> existants et crée un profil <code>default</code> reproduisant le comportement actuel — sans aucune perte.`},sidebar:{title:`Profils`,teamDefault:`(défaut de l'équipe)`},editorFooter:{fixValidationIssues:`Corrigez les problèmes de validation avant d'enregistrer`,issuesToResolve_one:`{{count}} problème à résoudre`,issuesToResolve_other:`{{count}} problèmes à résoudre`}},r={title:`Utilisation des profils`,windowLabel:`{{days}}j`,subtitleEmpty:`Jobs lancés par profil sur la période sélectionnée.`,subtitle:`Jobs lancés par profil au cours des {{count}} derniers jours.`,empty:`Aucun job lié à un profil pour l'instant.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`taux de réussite`,okSuffix:`ok`,avgDurationTooltip:`durée moyenne`,avgTokensTooltip:`tokens en moyenne`,tokensSuffix:`tok`},i={addTitle:`Ajouter une règle de routage`,editTitle:`Modifier la règle de routage`,addDescription:`Ajoutez une règle de routage par tags en kebab-case minuscule.`,editDescription:`Mettez à jour les tags ou l'agent cible de cette règle.`,tagsLabel:`Tags`,tagsHint:`Séparés par des virgules. Utilisez le kebab-case minuscule, comme <code>frontend</code> ou <code>api-design</code>.`,invalidTags_one:`Tag invalide : {{tags}}. Les tags ne peuvent contenir que des lettres minuscules, des chiffres et des tirets.`,invalidTags_other:`Tags invalides : {{tags}}. Les tags ne peuvent contenir que des lettres minuscules, des chiffres et des tirets.`,routeToLabel:`Router vers`,routeToHint:`Seuls les agents de la chaîne de ce profil peuvent être des cibles de routage.`,addRule:`Ajouter la règle`,saveChanges:`Enregistrer les modifications`},a={profileTitle:`Profil d'agents pour ce rail`,noProfile:`Aucun profil`,modelTitle:`Modèle pour ce rail Freestyle`,loopModelTitle:`Modèle pour ce loop`,engineTitle:`Fournisseur IA pour tous les rôles de ce lancement : architecte, développeur et réviseur`,localEngine:`Moteur local`,rolesEngine:`Rôles`,rolesEngineTitle:`Moteurs hybrides par rôle : architect, developer et reviewer utilisent la configuration du runtime ; verifier et decider utilisent les rôles de boucle (Réglages ▸ Agents Specrails)`,rolesChip:`Moteurs par rôle`,rolesChipTitle:`Moteurs configurés par rôle dans Réglages ▸ Agents Specrails : architect, developer et reviewer depuis la configuration du runtime ; verifier et decider depuis les rôles de boucle. Le modèle, l'effort et le profil ne se choisissent pas ici.`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
@@ -1 +1 @@
1
- var e={title:`Agentes`,subtitle:`Faça a gestão dos perfis de agentes e do catálogo (upstream + personalizados) deste projeto.`,tabs:{profiles:`Perfis`,usage:`Utilização`,catalog:`Catálogo`},banner:{title:`O pipeline com suporte de perfis requer specrails-core {{required}}+`,body:`Este projeto tem <code>{{version}}</code>. Execute <code>{{command}}</code> dentro do projeto para desbloquear o modo de perfis. Os perfis que criar aqui continuam a ser guardados; simplesmente não afetam o pipeline até o core ser atualizado.`,unknownVersion:`desconhecida`}},t={loading:`A carregar o catálogo…`,aiEditChipLabel:`Edição com IA · {{agentId}}`,errors:{loadFailed:`Falha ao carregar o catálogo: {{status}}`,bodyLoadFailed:`Falha ao carregar o corpo do agente: {{status}}`,generateFailed:`Falha ao gerar: {{status}}`,agentLoadFailed:`Falha ao carregar: {{status}}`},templates:{title:`Biblioteca de templates de agentes`,countOf:`{{shown}} de {{total}}`,description:`Comece a partir de um template selecionado nas áreas de engenharia, produto, ciência, saúde, jurídico e mais. Escolha um e abra-o no Studio para rever e editar antes de guardar.`,searchPlaceholder:`Pesquisar por nome, descrição, tag ou categoria…`,allCategories:`Todas`,tagFilter:`Filtro de tags:`,noMatch:`Nenhum template corresponde aos seus filtros.`,clearFilters:`Limpar filtros`,openInStudio:`Abrir no Studio →`,tip:`Dica: clique numa tag em qualquer cartão para filtrar por essa tag.`},generate:{title:`Gerar um agente personalizado`,agentIdLabel:`ID do agente`,agentIdHint:`Tem de começar por <code>custom-</code>.`,descriptionLabel:`Descreva o que este agente deve fazer`,descriptionPlaceholder:`p. ex. Rever alterações de Terraform/IaC e assinalar configurações de segurança incorretas, permissões IAM excessivas e buckets S3 públicos antes do merge. Conservador e conciso.`,note:`O Claude vai redigir um corpo <code>.md</code> completo. Poderá revê-lo no Studio e editá-lo antes de guardar. Isto lança uma invocação única do claude e pode demorar até 90 segundos.`,generating:`A gerar…`,generateButton:`Gerar`},empty:{title:`Nenhum agente instalado`,body:`Execute <code>{{command}}</code> neste projeto para instalar os agentes upstream, ou crie já um agente personalizado.`},actions:{template:`Template`,templateTitle:`Começar a partir de um template`,generate:`Gerar`,generateWithClaude:`Gerar com o Claude`,generateWithAi:`Gerar com IA`,blank:`Em branco`,blankTitle:`Começar a partir de um template em branco`},sidebar:{title:`Catálogo`,createLabel:`Criar um agente personalizado:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Distribuídos pelo specrails-core; apenas de leitura.`,custom:`Personalizados ({{count}})`,customDescription:`Os ficheiros custom-*.md do seu projeto. Use Template / Gerar / Em branco acima para criar um.`,noCustomAgents:`Ainda não há agentes personalizados.`},detail:{defaultModel:`modelo predefinido: {{model}}`,aiEdit:`Edição com IA`,aiEditTitle:`Refinar este agente iterativamente com IA`,readOnly:`apenas leitura`,editableHint:`editável — use Editar acima`},kind:{upstream:`upstream`,custom:`personalizado`}},n={providerLabel:`Fornecedor do perfil`,loading:`A carregar perfis…`,selectPrompt:`Selecione um perfil para editar`,errors:{listFailed:`Falha ao listar: {{status}}`,loadFailed:`Falha ao carregar: {{status}}`,migrationFailed:`Falha na migração: {{status}}`,createFailed:`Falha ao criar: {{status}}`,duplicateFailed:`Falha ao duplicar: {{status}}`,deleteFailed:`Falha ao eliminar: {{status}}`,saveFailed:`Falha ao guardar: {{status}}`},toasts:{migrated:`Perfil migrado`,migratedDescription:`perfil default criado a partir dos seus agentes atuais`,migrationFailed:`Falha na migração`,created:`Perfil criado`,createFailed:`Falha ao criar o perfil`,duplicated:`Perfil duplicado`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Falha ao duplicar o perfil`,deleted:`Perfil eliminado`,deleteFailed:`Falha ao eliminar o perfil`,saved:`Perfil guardado`,saveFailed:`Falha ao guardar o perfil`,savedWithUntargeted:`Perfil guardado com agentes sem destino`,savedWithUntargetedDescription:`Nenhuma regra de encaminhamento aponta para: {{agents}}. Adicione uma regra de tags ou redirecione a regra predefinida se quiser que sejam executados.`},createDialog:{title:`Novo perfil`,description:`Escolha um nome em kebab-case minúsculo (letras, dígitos e hífenes).`,confirmLabel:`Criar`,invalidHint:`Tem de começar por uma letra ou dígito e conter apenas letras minúsculas, dígitos e hífenes.`},duplicateDialog:{title:`Duplicar "{{name}}"`,description:`Nome para o novo perfil.`,invalidHint:`Apenas kebab-case minúsculo.`},deleteDialog:{title:`Eliminar o perfil "{{name}}"?`,description:`Esta ação não pode ser anulada. Os jobs já lançados com este perfil mantêm o seu snapshot; os próximos lançamentos recorrem à ordem de resolução.`},empty:{title:`Ainda não há perfis`,body:`Os perfis permitem guardar combinações de orquestrador + agentes + encaminhamento e escolher uma por rail.`,migrateButton:`Migrar a partir dos agentes atuais`,blankButton:`Perfil em branco`,migrateExplainer:`"Migrar" lê os modelos do frontmatter existente em <code>.claude/agents/</code> e cria um perfil <code>default</code> que reflete o comportamento atual — sem perdas.`},sidebar:{title:`Perfis`,teamDefault:`(predefinição da equipa)`},editorFooter:{fixValidationIssues:`Corrija os problemas de validação antes de guardar`,issuesToResolve_one:`{{count}} problema por resolver`,issuesToResolve_other:`{{count}} problemas por resolver`}},r={title:`Utilização de perfis`,windowLabel:`{{days}}d`,subtitleEmpty:`Jobs lançados por perfil na janela selecionada.`,subtitle:`Jobs lançados por perfil nos últimos {{count}} dias.`,empty:`Ainda não há jobs associados a perfis.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`taxa de sucesso`,okSuffix:`ok`,avgDurationTooltip:`duração média`,avgTokensTooltip:`média de tokens`,tokensSuffix:`tok`},i={addTitle:`Adicionar regra de encaminhamento`,editTitle:`Editar regra de encaminhamento`,addDescription:`Adicione uma regra de encaminhamento por tags usando tags em kebab-case minúsculo.`,editDescription:`Atualize as tags ou o agente de destino desta regra.`,tagsLabel:`Tags`,tagsHint:`Separadas por vírgulas. Use kebab-case minúsculo como <code>frontend</code> ou <code>api-design</code>.`,invalidTags_one:`Tag inválida: {{tags}}. As tags só podem usar letras minúsculas, dígitos e hífenes.`,invalidTags_other:`Tags inválidas: {{tags}}. As tags só podem usar letras minúsculas, dígitos e hífenes.`,routeToLabel:`Encaminhar para`,routeToHint:`Apenas os agentes da cadeia deste perfil podem ser destinos de encaminhamento.`,addRule:`Adicionar regra`,saveChanges:`Guardar alterações`},a={profileTitle:`Perfil de agentes para este rail`,noProfile:`Sem perfil`,modelTitle:`Modelo para este rail Freestyle`,loopModelTitle:`Modelo para este loop`,engineTitle:`Motor de IA para este rail`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
1
+ var e={title:`Agentes`,subtitle:`Faça a gestão dos perfis de agentes e do catálogo (upstream + personalizados) deste projeto.`,tabs:{profiles:`Perfis`,usage:`Utilização`,catalog:`Catálogo`},banner:{title:`O pipeline com suporte de perfis requer specrails-core {{required}}+`,body:`Este projeto tem <code>{{version}}</code>. Execute <code>{{command}}</code> dentro do projeto para desbloquear o modo de perfis. Os perfis que criar aqui continuam a ser guardados; simplesmente não afetam o pipeline até o core ser atualizado.`,unknownVersion:`desconhecida`}},t={loading:`A carregar o catálogo…`,aiEditChipLabel:`Edição com IA · {{agentId}}`,errors:{loadFailed:`Falha ao carregar o catálogo: {{status}}`,bodyLoadFailed:`Falha ao carregar o corpo do agente: {{status}}`,generateFailed:`Falha ao gerar: {{status}}`,agentLoadFailed:`Falha ao carregar: {{status}}`},templates:{title:`Biblioteca de templates de agentes`,countOf:`{{shown}} de {{total}}`,description:`Comece a partir de um template selecionado nas áreas de engenharia, produto, ciência, saúde, jurídico e mais. Escolha um e abra-o no Studio para rever e editar antes de guardar.`,searchPlaceholder:`Pesquisar por nome, descrição, tag ou categoria…`,allCategories:`Todas`,tagFilter:`Filtro de tags:`,noMatch:`Nenhum template corresponde aos seus filtros.`,clearFilters:`Limpar filtros`,openInStudio:`Abrir no Studio →`,tip:`Dica: clique numa tag em qualquer cartão para filtrar por essa tag.`},generate:{title:`Gerar um agente personalizado`,agentIdLabel:`ID do agente`,agentIdHint:`Tem de começar por <code>custom-</code>.`,descriptionLabel:`Descreva o que este agente deve fazer`,descriptionPlaceholder:`p. ex. Rever alterações de Terraform/IaC e assinalar configurações de segurança incorretas, permissões IAM excessivas e buckets S3 públicos antes do merge. Conservador e conciso.`,note:`O Claude vai redigir um corpo <code>.md</code> completo. Poderá revê-lo no Studio e editá-lo antes de guardar. Isto lança uma invocação única do claude e pode demorar até 90 segundos.`,generating:`A gerar…`,generateButton:`Gerar`},empty:{title:`Nenhum agente instalado`,body:`Execute <code>{{command}}</code> neste projeto para instalar os agentes upstream, ou crie já um agente personalizado.`},actions:{template:`Template`,templateTitle:`Começar a partir de um template`,generate:`Gerar`,generateWithClaude:`Gerar com o Claude`,generateWithAi:`Gerar com IA`,blank:`Em branco`,blankTitle:`Começar a partir de um template em branco`},sidebar:{title:`Catálogo`,createLabel:`Criar um agente personalizado:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Distribuídos pelo specrails-core; apenas de leitura.`,custom:`Personalizados ({{count}})`,customDescription:`Os ficheiros custom-*.md do seu projeto. Use Template / Gerar / Em branco acima para criar um.`,noCustomAgents:`Ainda não há agentes personalizados.`},detail:{defaultModel:`modelo predefinido: {{model}}`,aiEdit:`Edição com IA`,aiEditTitle:`Refinar este agente iterativamente com IA`,readOnly:`apenas leitura`,editableHint:`editável — use Editar acima`},kind:{upstream:`upstream`,custom:`personalizado`}},n={providerLabel:`Fornecedor do perfil`,loading:`A carregar perfis…`,selectPrompt:`Selecione um perfil para editar`,errors:{listFailed:`Falha ao listar: {{status}}`,loadFailed:`Falha ao carregar: {{status}}`,migrationFailed:`Falha na migração: {{status}}`,createFailed:`Falha ao criar: {{status}}`,duplicateFailed:`Falha ao duplicar: {{status}}`,deleteFailed:`Falha ao eliminar: {{status}}`,saveFailed:`Falha ao guardar: {{status}}`},toasts:{migrated:`Perfil migrado`,migratedDescription:`perfil default criado a partir dos seus agentes atuais`,migrationFailed:`Falha na migração`,created:`Perfil criado`,createFailed:`Falha ao criar o perfil`,duplicated:`Perfil duplicado`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Falha ao duplicar o perfil`,deleted:`Perfil eliminado`,deleteFailed:`Falha ao eliminar o perfil`,saved:`Perfil guardado`,saveFailed:`Falha ao guardar o perfil`,savedWithUntargeted:`Perfil guardado com agentes sem destino`,savedWithUntargetedDescription:`Nenhuma regra de encaminhamento aponta para: {{agents}}. Adicione uma regra de tags ou redirecione a regra predefinida se quiser que sejam executados.`},createDialog:{title:`Novo perfil`,description:`Escolha um nome em kebab-case minúsculo (letras, dígitos e hífenes).`,confirmLabel:`Criar`,invalidHint:`Tem de começar por uma letra ou dígito e conter apenas letras minúsculas, dígitos e hífenes.`},duplicateDialog:{title:`Duplicar "{{name}}"`,description:`Nome para o novo perfil.`,invalidHint:`Apenas kebab-case minúsculo.`},deleteDialog:{title:`Eliminar o perfil "{{name}}"?`,description:`Esta ação não pode ser anulada. Os jobs já lançados com este perfil mantêm o seu snapshot; os próximos lançamentos recorrem à ordem de resolução.`},empty:{title:`Ainda não há perfis`,body:`Os perfis permitem guardar combinações de orquestrador + agentes + encaminhamento e escolher uma por rail.`,migrateButton:`Migrar a partir dos agentes atuais`,blankButton:`Perfil em branco`,migrateExplainer:`"Migrar" lê os modelos do frontmatter existente em <code>.claude/agents/</code> e cria um perfil <code>default</code> que reflete o comportamento atual — sem perdas.`},sidebar:{title:`Perfis`,teamDefault:`(predefinição da equipa)`},editorFooter:{fixValidationIssues:`Corrija os problemas de validação antes de guardar`,issuesToResolve_one:`{{count}} problema por resolver`,issuesToResolve_other:`{{count}} problemas por resolver`}},r={title:`Utilização de perfis`,windowLabel:`{{days}}d`,subtitleEmpty:`Jobs lançados por perfil na janela selecionada.`,subtitle:`Jobs lançados por perfil nos últimos {{count}} dias.`,empty:`Ainda não há jobs associados a perfis.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`taxa de sucesso`,okSuffix:`ok`,avgDurationTooltip:`duração média`,avgTokensTooltip:`média de tokens`,tokensSuffix:`tok`},i={addTitle:`Adicionar regra de encaminhamento`,editTitle:`Editar regra de encaminhamento`,addDescription:`Adicione uma regra de encaminhamento por tags usando tags em kebab-case minúsculo.`,editDescription:`Atualize as tags ou o agente de destino desta regra.`,tagsLabel:`Tags`,tagsHint:`Separadas por vírgulas. Use kebab-case minúsculo como <code>frontend</code> ou <code>api-design</code>.`,invalidTags_one:`Tag inválida: {{tags}}. As tags só podem usar letras minúsculas, dígitos e hífenes.`,invalidTags_other:`Tags inválidas: {{tags}}. As tags só podem usar letras minúsculas, dígitos e hífenes.`,routeToLabel:`Encaminhar para`,routeToHint:`Apenas os agentes da cadeia deste perfil podem ser destinos de encaminhamento.`,addRule:`Adicionar regra`,saveChanges:`Guardar alterações`},a={profileTitle:`Perfil de agentes para este rail`,noProfile:`Sem perfil`,modelTitle:`Modelo para este rail Freestyle`,loopModelTitle:`Modelo para este loop`,engineTitle:`Fornecedor de IA para todos os papéis desta execução: arquiteto, programador e revisor`,localEngine:`Motor local`,rolesEngine:`Papéis`,rolesEngineTitle:`Motores híbridos por papel: architect, developer e reviewer usam a configuração do runtime; verifier e decider usam os papéis do loop (Definições ▸ Agentes Specrails)`,rolesChip:`Motores por papel`,rolesChipTitle:`Motores configurados por papel em Definições ▸ Agentes Specrails: architect, developer e reviewer a partir da configuração do runtime; verifier e decider a partir dos papéis do loop. Modelo, esforço e perfil não se escolhem aqui.`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
@@ -0,0 +1 @@
1
+ var e={job:`Jobs`,quickSpec:`Quick`,exploreSpec:`Explore`,aiEdit:`Refinamento`,smash:`SMASH`,fileSummary:`Resumos de ficheiros`,loop:`Loops`,chatSidebar:`Chat`,specLauncher:`Lançador de specs`,proposal:`Proposta`,agentStudio:`Agent Studio`,setup:`Configuração`},t={d7:`7d`,d30:`30d`,d90:`90d`,all:`Tudo`,custom:`Personalizado`,startDate:`Data de início`,endDate:`Data de fim`,to:`até`},n=`{{count}} execução`,r=`{{count}} execuções`,i={title:`Analytics`,all:`Tudo`,engine:`Motor`,ticketChip:`ticket #{{id}} · ✕`,failedToLoad:`Falha ao carregar: {{error}}`,modelChip:`Modelo: {{model}}`,clearModelFilter:`Limpar filtro de modelo`,localEngine:`local`},a={spending:`Gastos`,vsPrev:`{{pct}}% vs anterior`,invocations_one:`{{count}} invocação`,invocations_other:`{{count}} invocações`,tokens:`· {{tokens}} tokens`,tokensTooltip:`Total de tokens = input novo + output + leitura de cache + criação de cache em todas as invocações desta janela.`,usageUnavailable:`· utilização de tokens indisponível`,usageUnavailableTooltip:`O fornecedor concluiu estas invocações, mas não forneceu telemetria de tokens.`,usagePartiallyUnavailable:`· {{tokens}} tokens conhecidos; sem dados: {{count}}`,usagePartiallyUnavailableTooltip:`Apenas o subtotal conhecido de tokens; algumas invocações não forneceram telemetria de tokens.`,costUnavailable:`custo indisponível`,costUnavailableTooltip:`O fornecedor concluiu estas invocações, mas não forneceu telemetria suficiente para determinar o custo.`,costPartiallyUnavailable:`· subtotal conhecido; sem custo: {{count}}`,costPartiallyUnavailableTooltip:`Apenas o subtotal conhecido de custo; algumas invocações não forneceram telemetria suficiente para determinar o custo.`,includesEstimated:`· inclui ~{{amount}} estimado`,includesEstimatedTooltip:`Inclui {{amount}} de custo estimado de fornecedores sem campo de custo nativo (p. ex. codex através da tabela de preços local).`,trackingStarted:`Registo iniciado em {{date}}`,trackingStartedFallback:`O registo começa na primeira invocação`,emptyState:`Ainda não há invocações para esta janela de filtros.`,segmentTitle:`{{label}}: {{value}}`},o={title:`Por fornecedor`,description:`Como o custo se divide entre as CLIs de IA deste projeto. O prefixo <tilde>~</tilde> assinala as linhas em que o custo é estimado a partir da tabela de preços local (o fornecedor não o reporta nativamente).`,noCost:`Ainda não há custo registado nesta janela.`,segmentTitle:`{{label}}: {{value}} ({{count}})`,costUnavailable:`custo indisponível`,costUnavailableTooltip:`Este fornecedor foi executado, mas não forneceu telemetria suficiente para determinar o custo.`,costPartiallyUnavailable:`· indisponíveis: {{count}}`,costPartiallyUnavailableTooltip:`Apenas o subtotal conhecido; o custo de algumas execuções está indisponível.`},s={title:`Cronologia diária`,subtitle:`empilhada por superfície`,empty:`Sem gastos neste período.`,costUnavailable:`Foram registadas invocações, mas a telemetria de custo está indisponível.`,costPartiallyUnavailable:`custos conhecidos · indisponíveis: {{count}}`},c={title:`Quick vs Explore`,quick:`Quick`,explore:`Explore`,sparseCta:`Experimente o Explore para specs mais ricas`,runsSoFar_one:`{{count}} execução até agora`,runsSoFar_other:`{{count}} execuções até agora`,perSpec:`por spec`,createdRuns:`<strong>{{created}}</strong> criadas · {{runs}} execuções`,avgDuration:`{{duration}} em média`,ratio:`{{ratio}}× mais por spec`,estimatedTooltip:`Custo estimado (estimativa pela tabela de preços para codex/gemini, não faturado pelo provedor)`,estimatedFootnote:`~ Inclui custos estimados (codex/gemini)`,costUnavailable:`custo por spec indisponível`,costUnavailableTooltip:`Não é possível calcular a média por spec porque uma ou mais execuções não forneceram telemetria de custo.`},l={title:`Modelos`,empty:`Nenhum modelo registado.`,estimatedTooltip:`Estimado a partir da tabela de preços local — este provedor não informa o custo nativamente.`,others:`Outros`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`A telemetria de custo está indisponível para todas as execuções deste modelo.`,costPartiallyUnavailable:`· indisponíveis: {{count}}`,costPartiallyUnavailableTooltip:`Apenas o subtotal conhecido; algumas execuções deste modelo não têm telemetria de custo.`},u={title:`Custo vs Turnos`,empty:`Sem invocações para representar.`,turnsLabel:`turnos`,costLabel:`custo`,truncated:`Mostrando {{shown}} de {{total}} — o ponto mais caro é mantido, mas os pontos anteriores ficam ocultos`,costUnavailable:`Foram registadas invocações, mas não existe telemetria de custo disponível para representar.`,costPartiallyUnavailable:`O gráfico inclui apenas execuções com custo; custo indisponível: {{count}}.`},d={title:`Top tickets`,empty:`Sem atividade de tickets neste período.`,breakdownItem:`{{n}} {{label}}`,unattributed:`Sem atribuição`,deletedTicket:`ticket eliminado #{{id}}`,costUnavailable:`custo indisponível`,costUnavailableTooltip:`Nenhuma execução deste ticket forneceu telemetria de custo.`,costPartiallyUnavailable:`indisponíveis: {{count}}`,costPartiallyUnavailableTooltip:`Apenas o subtotal conhecido; algumas execuções deste ticket têm custo indisponível.`},f={title:`Todas as invocações`,statusFilterAria:`Filtro de estado`,minCostFilterAria:`Filtro de custo mínimo`,minCostPlaceholder:`≥ $0.00`,allStatus:`Todos os estados`,success:`Sucesso`,failed:`Falhadas`,aborted:`Abortadas`,empty:`Nenhuma invocação corresponde aos filtros atuais.`,colSurface:`Superfície`,colTicket:`Ticket`,colCost:`Custo`,colTurns:`Turnos`,colTokens:`Tokens`,colModel:`Modelo`,colStatus:`Estado`,colStarted:`Início`,contractLayer:`Contract Layer`,contractLayerRefinement:`Refinamento do Contract Layer`,deleted:`(eliminado)`,provisionalTitleTooltip:`Título provisório do Explore — ainda não confirmado`,estimatedCostTooltip:`Estimado a partir da tabela de preços local — este fornecedor não reporta o custo nativamente.`,inferred:`inferido`,statusValue:{success:`sucesso`,failed:`falhada`,aborted:`abortada`},truncated:`A mostrar as primeiras {{shown}} de {{total}} linhas correspondentes.`,colProvider:`Provedor`,sortLabel:`Ordenar`,sortRecency:`Recente`,sortCost:`Custo`,costUnknownLocalTooltip:`Custo desconhecido (motor local). Adicione tarifas à conexão para ver uma estimativa.`},p={title:`Analytics do Desktop`,refreshAria:`Atualizar analytics`,failedToLoad:`Falha ao carregar as analytics: {{error}}`,totalCost:`Custo total`,costToday:`{{value}} hoje`,costTodayUnavailable:`custo indisponível hoje`,totalJobs:`Total de jobs`,jobsToday:`{{n}} hoje`,successRate:`Taxa de sucesso`,acrossAllProjects:`em todos os projetos`,avgCostPerJob:`Custo médio / job`,periodAverage:`média do período`,averageUnavailable:`média indisponível com telemetria de custo incompleta`,costOverTime:`Custo entre projetos ao longo do tempo`,noCostData:`Sem dados de custo para este período`,projectComparison:`Comparação de projetos`,noProjects:`Nenhum projeto registado.`,jobsCount_one:`{{count}} job`,jobsCount_other:`{{count}} jobs`,successPct:`{{pct}}% de sucesso`,costByProject:`Custo por projeto`,includesEstimated:`~{{amount}} estimado`,includesEstimatedTooltip:`Inclui {{amount}} de custo estimado pela tabela de preços (codex/gemini), não faturado pelo provedor.`,includesEstimatedShort:`incl. estimado`,timelineEstimatedTooltip:`Alguns dias incluem custo estimado pela tabela de preços (codex/gemini) marcado com ~.`,estimatedBadge:`est.`,projectEstimatedTooltip:`{{amount}} do custo deste projeto é uma estimativa pela tabela de preços (codex/gemini), não faturado pelo provedor.`,statusBarEstimatedTooltip:`Inclui custo estimado pela tabela de preços (codex/gemini), não faturado pelo provedor.`,costUnavailable:`Foram registadas invocações, mas a telemetria de custo está indisponível.`,costUnavailableShort:`indisponível`,costPartiallyUnavailable:`Subtotal de custo conhecido; invocações sem custo: {{count}}.`},m={"7d":`Últimos 7 dias`,"30d":`Últimos 30 dias`,"90d":`Últimos 90 dias`,all:`Todo o período`,custom:`Intervalo personalizado`},h={title:`Missões do agente`,subtitle:`Turnos do Agent Chat afixados a este projeto`,vsPrev:`vs período anterior`,turnsAndTokens:`{{turns}} turnos · {{tokens}} tokens`,untitled:`Missão sem título`,estimatedNote:`Inclui custos estimados`},g={surfaces:e,periods:t,runs_one:n,runs_other:r,page:i,hero:a,providerCard:o,timeline:s,quickVsExplore:c,models:l,scatter:u,topTickets:d,table:f,export:{summaryCsv:`CSV de resumo`,rawCsv:`CSV em bruto`,summaryJson:`JSON de resumo`,rawJson:`JSON em bruto`,downloading:`A transferir…`,noData:`Sem dados para os filtros atuais`,failed:`Falha na exportação`},desktop:p,windowLabels:m,agentMissions:h};export{h as agentMissions,g as default,p as desktop,a as hero,l as models,i as page,t as periods,o as providerCard,c as quickVsExplore,n as runs_one,r as runs_other,u as scatter,e as surfaces,f as table,s as timeline,d as topTickets,m as windowLabels};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({agentMissions:()=>_,default:()=>v,desktop:()=>h,hero:()=>s,models:()=>d,page:()=>o,periods:()=>r,providerCard:()=>c,quickVsExplore:()=>u,runs_one:()=>i,runs_other:()=>a,scatter:()=>f,surfaces:()=>n,table:()=>m,timeline:()=>l,topTickets:()=>p,windowLabels:()=>g}),n={job:`Jobs`,quickSpec:`Quick`,exploreSpec:`Explore`,aiEdit:`Refine`,smash:`SMASH`,fileSummary:`File summaries`,loop:`Loops`,chatSidebar:`Chat`,specLauncher:`Spec launcher`,proposal:`Proposal`,agentStudio:`Agent Studio`,setup:`Setup`},r={d7:`7d`,d30:`30d`,d90:`90d`,all:`All`,custom:`Custom`,startDate:`Start date`,endDate:`End date`,to:`to`},i=`{{count}} run`,a=`{{count}} runs`,o={title:`Analytics`,all:`All`,engine:`Engine`,ticketChip:`ticket #{{id}} · ✕`,failedToLoad:`Failed to load: {{error}}`,modelChip:`Model: {{model}}`,clearModelFilter:`Clear model filter`,localEngine:`local`},s={spending:`Spending`,vsPrev:`{{pct}}% vs prev`,invocations_one:`{{count}} invocation`,invocations_other:`{{count}} invocations`,tokens:`· {{tokens}} tokens`,tokensTooltip:`Total tokens = fresh input + output + cache-read + cache-create across all invocations in this window.`,usageUnavailable:`· token usage unavailable`,usageUnavailableTooltip:`The provider completed these invocations but did not expose token telemetry.`,usagePartiallyUnavailable:`· {{tokens}} known tokens; {{count}} run(s) unavailable`,usagePartiallyUnavailableTooltip:`Known token subtotal only; some invocations did not expose token telemetry.`,costUnavailable:`cost unavailable`,costUnavailableTooltip:`The provider completed these invocations but did not expose enough telemetry to determine their cost.`,costPartiallyUnavailable:`· known subtotal; {{count}} run(s) without cost`,costPartiallyUnavailableTooltip:`Known cost subtotal only; some invocations did not expose enough telemetry to determine cost.`,includesEstimated:`· includes ~{{amount}} estimated`,includesEstimatedTooltip:`Includes {{amount}} of estimated cost from providers without a native cost field (e.g. codex via the local pricing table).`,trackingStarted:`Tracking started {{date}}`,trackingStartedFallback:`Tracking started on first invocation`,emptyState:`No invocations yet for this filter window.`,segmentTitle:`{{label}}: {{value}}`},c={title:`By provider`,description:`How cost splits across the AI CLIs in this project. The <tilde>~</tilde> prefix marks rows where cost is estimated from the local pricing table (the provider does not report it natively).`,noCost:`No cost recorded yet in this window.`,segmentTitle:`{{label}}: {{value}} ({{count}})`,costUnavailable:`cost unavailable`,costUnavailableTooltip:`This provider ran but did not expose enough telemetry to determine cost.`,costPartiallyUnavailable:`· {{count}} unavailable`,costPartiallyUnavailableTooltip:`Known subtotal only; cost is unavailable for some runs.`},l={title:`Daily timeline`,subtitle:`stacked by surface`,empty:`No spend in this period.`,costUnavailable:`Invocations were recorded, but cost telemetry is unavailable.`,costPartiallyUnavailable:`known costs · {{count}} unavailable`},u={title:`Quick vs Explore`,quick:`Quick`,explore:`Explore`,sparseCta:`Try Explore for richer specs`,runsSoFar_one:`{{count}} run so far`,runsSoFar_other:`{{count}} runs so far`,perSpec:`per spec`,createdRuns:`<strong>{{created}}</strong> created · {{runs}} runs`,avgDuration:`{{duration}} avg`,ratio:`{{ratio}}× more per spec`,estimatedTooltip:`Estimated cost (codex/gemini pricing-table fallback, not provider-billed)`,estimatedFootnote:`~ Includes estimated costs (codex/gemini)`,costUnavailable:`cost unavailable per spec`,costUnavailableTooltip:`A per-spec average cannot be computed because one or more runs did not expose cost telemetry.`},d={title:`Models`,empty:`No models recorded.`,estimatedTooltip:`Estimated from the local pricing table — this provider does not report cost natively.`,others:`Others`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`Cost telemetry is unavailable for every run of this model.`,costPartiallyUnavailable:`· {{count}} unavailable`,costPartiallyUnavailableTooltip:`Known subtotal only; some runs of this model have no cost telemetry.`},f={title:`Cost vs Turns`,empty:`No invocations to plot.`,turnsLabel:`turns`,costLabel:`cost`,truncated:`Showing {{shown}} of {{total}} — the costliest point is kept, but earlier points are hidden`,costUnavailable:`Invocations were recorded, but no cost telemetry is available to plot.`,costPartiallyUnavailable:`Plot includes priced runs only; {{count}} run(s) have unavailable cost.`},p={title:`Top tickets`,empty:`No ticket activity in this period.`,breakdownItem:`{{n}} {{label}}`,unattributed:`Unattributed`,deletedTicket:`deleted ticket #{{id}}`,costUnavailable:`cost unavailable`,costUnavailableTooltip:`None of this ticket's runs exposed cost telemetry.`,costPartiallyUnavailable:`{{count}} unavailable`,costPartiallyUnavailableTooltip:`Known subtotal only; some runs for this ticket have unavailable cost.`},m={title:`All invocations`,statusFilterAria:`Status filter`,minCostFilterAria:`Minimum cost filter`,minCostPlaceholder:`≥ $0.00`,allStatus:`All status`,success:`Success`,failed:`Failed`,aborted:`Aborted`,empty:`No invocations match the current filters.`,colSurface:`Surface`,colTicket:`Ticket`,colCost:`Cost`,colTurns:`Turns`,colTokens:`Tokens`,colModel:`Model`,colStatus:`Status`,colStarted:`Started`,contractLayer:`Contract Layer`,contractLayerRefinement:`Contract Layer refinement`,deleted:`(deleted)`,provisionalTitleTooltip:`Provisional Explore title — not yet committed`,estimatedCostTooltip:`Estimated from local pricing table — this provider does not report cost natively.`,inferred:`inferred`,statusValue:{success:`success`,failed:`failed`,aborted:`aborted`},truncated:`Showing first {{shown}} of {{total}} matching rows.`,colProvider:`Provider`,sortLabel:`Sort`,sortRecency:`Recent`,sortCost:`Cost`,costUnknownLocalTooltip:`Cost unknown (local engine). Add rates to the connection to see an estimate.`},h={title:`Desktop Analytics`,refreshAria:`Refresh analytics`,failedToLoad:`Failed to load analytics: {{error}}`,totalCost:`Total Cost`,costToday:`{{value}} today`,costTodayUnavailable:`cost unavailable today`,totalJobs:`Total Jobs`,jobsToday:`{{n}} today`,successRate:`Success Rate`,acrossAllProjects:`across all projects`,avgCostPerJob:`Avg Cost / Job`,periodAverage:`period average`,averageUnavailable:`average unavailable with incomplete cost telemetry`,costOverTime:`Cross-Project Cost Over Time`,noCostData:`No cost data for this period`,projectComparison:`Project Comparison`,noProjects:`No projects registered.`,jobsCount_one:`{{count}} job`,jobsCount_other:`{{count}} jobs`,successPct:`{{pct}}% success`,costByProject:`Cost by Project`,includesEstimated:`~{{amount}} estimated`,includesEstimatedTooltip:`Includes {{amount}} of rate-card estimated cost (codex/gemini), not provider-billed.`,includesEstimatedShort:`incl. estimated`,timelineEstimatedTooltip:`Some days include rate-card estimated cost (codex/gemini) marked with ~.`,estimatedBadge:`est.`,projectEstimatedTooltip:`{{amount}} of this project's cost is a rate-card estimate (codex/gemini), not provider-billed.`,statusBarEstimatedTooltip:`Includes rate-card estimated cost (codex/gemini), not provider-billed.`,costUnavailable:`Invocations were recorded, but cost telemetry is unavailable.`,costUnavailableShort:`unavailable`,costPartiallyUnavailable:`Known cost subtotal; {{count}} invocation(s) unavailable.`},g={"7d":`Last 7 days`,"30d":`Last 30 days`,"90d":`Last 90 days`,all:`All time`,custom:`Custom range`},_={title:`Agent missions`,subtitle:`Agent Chat turns pinned to this project`,vsPrev:`vs previous period`,turnsAndTokens:`{{turns}} turns · {{tokens}} tokens`,untitled:`Untitled mission`,estimatedNote:`Includes estimated costs`},v={surfaces:n,periods:r,runs_one:i,runs_other:a,page:o,hero:s,providerCard:c,timeline:l,quickVsExplore:u,models:d,scatter:f,topTickets:p,table:m,export:{summaryCsv:`Summary CSV`,rawCsv:`Raw CSV`,summaryJson:`Summary JSON`,rawJson:`Raw JSON`,downloading:`Downloading…`,noData:`No data for current filters`,failed:`Export failed`},desktop:h,windowLabels:g,agentMissions:_};export{t};
@@ -0,0 +1 @@
1
+ var e={job:`Job`,quickSpec:`Quick`,exploreSpec:`Explore`,aiEdit:`Raffinamento`,smash:`SMASH`,fileSummary:`Riepiloghi file`,loop:`Loops`,chatSidebar:`Chat`,specLauncher:`Avvio spec`,proposal:`Proposta`,agentStudio:`Agent Studio`,setup:`Configurazione`},t={d7:`7d`,d30:`30d`,d90:`90d`,all:`Tutto`,custom:`Personalizzato`,startDate:`Data di inizio`,endDate:`Data di fine`,to:`a`},n=`{{count}} esecuzione`,r=`{{count}} esecuzioni`,i={title:`Analytics`,all:`Tutti`,engine:`Engine`,ticketChip:`ticket #{{id}} · ✕`,failedToLoad:`Caricamento non riuscito: {{error}}`,modelChip:`Modello: {{model}}`,clearModelFilter:`Rimuovi filtro modello`,localEngine:`locale`},a={spending:`Spesa`,vsPrev:`{{pct}}% vs prec.`,invocations_one:`{{count}} invocazione`,invocations_other:`{{count}} invocazioni`,tokens:`· {{tokens}} token`,tokensTooltip:`Token totali = input nuovo + output + lettura cache + creazione cache su tutte le invocazioni in questa finestra.`,usageUnavailable:`· utilizzo dei token non disponibile`,usageUnavailableTooltip:`Il provider ha completato queste invocazioni senza esporre la telemetria dei token.`,usagePartiallyUnavailable:`· {{tokens}} token noti; senza dati: {{count}}`,usagePartiallyUnavailableTooltip:`Solo subtotale noto; alcune invocazioni non espongono la telemetria dei token.`,costUnavailable:`costo non disponibile`,costUnavailableTooltip:`Il provider ha completato queste invocazioni senza esporre telemetria sufficiente per determinarne il costo.`,costPartiallyUnavailable:`· subtotale noto; senza costo: {{count}}`,costPartiallyUnavailableTooltip:`Solo subtotale noto; alcune invocazioni non espongono telemetria sufficiente per determinarne il costo.`,includesEstimated:`· include ~{{amount}} stimati`,includesEstimatedTooltip:`Include {{amount}} di costo stimato da provider senza un campo di costo nativo (es. codex tramite la tabella prezzi locale).`,trackingStarted:`Tracciamento iniziato il {{date}}`,trackingStartedFallback:`Il tracciamento inizia alla prima invocazione`,emptyState:`Ancora nessuna invocazione per questa finestra di filtri.`,segmentTitle:`{{label}}: {{value}}`},o={title:`Per provider`,description:`Come si ripartisce il costo tra le CLI AI di questo progetto. Il prefisso <tilde>~</tilde> indica le righe in cui il costo è stimato dalla tabella prezzi locale (il provider non lo riporta nativamente).`,noCost:`Ancora nessun costo registrato in questa finestra.`,segmentTitle:`{{label}}: {{value}} ({{count}})`,costUnavailable:`costo non disponibile`,costUnavailableTooltip:`Questo provider è stato eseguito ma il suo modello non è nella tabella prezzi, quindi non è stato possibile calcolare alcun costo.`,costPartiallyUnavailable:`· non disponibili: {{count}}`,costPartiallyUnavailableTooltip:`Solo subtotale noto; il costo di alcune esecuzioni non è disponibile.`},s={title:`Timeline giornaliera`,subtitle:`impilata per origine`,empty:`Nessuna spesa in questo periodo.`,costUnavailable:`Sono state registrate invocazioni, ma la telemetria dei costi non è disponibile.`,costPartiallyUnavailable:`costi noti · non disponibili: {{count}}`},c={title:`Quick vs Explore`,quick:`Quick`,explore:`Explore`,sparseCta:`Prova Explore per spec più ricche`,runsSoFar_one:`{{count}} esecuzione finora`,runsSoFar_other:`{{count}} esecuzioni finora`,perSpec:`per spec`,createdRuns:`<strong>{{created}}</strong> create · {{runs}} esecuzioni`,avgDuration:`{{duration}} in media`,ratio:`{{ratio}}× in più per spec`,estimatedTooltip:`Costo stimato (stima da tabella prezzi per codex/gemini, non fatturato dal provider)`,estimatedFootnote:`~ Include costi stimati (codex/gemini)`,costUnavailable:`costo per spec non disponibile`,costUnavailableTooltip:`Non è possibile calcolare la media per spec perché una o più esecuzioni non espongono il costo.`},l={title:`Modelli`,empty:`Nessun modello registrato.`,estimatedTooltip:`Stimato dalla tabella prezzi locale — questo provider non riporta il costo in modo nativo.`,others:`Altri`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`La telemetria dei costi non è disponibile per tutte le esecuzioni di questo modello.`,costPartiallyUnavailable:`· non disponibili: {{count}}`,costPartiallyUnavailableTooltip:`Solo subtotale noto; alcune esecuzioni di questo modello non hanno telemetria dei costi.`},u={title:`Costo vs Turni`,empty:`Nessuna invocazione da rappresentare.`,turnsLabel:`turni`,costLabel:`costo`,truncated:`Visualizzati {{shown}} di {{total}} — il punto più costoso viene mantenuto, ma i punti precedenti sono nascosti`,costUnavailable:`Sono state registrate invocazioni, ma non sono disponibili dati di costo da rappresentare.`,costPartiallyUnavailable:`Il grafico include solo le esecuzioni con costo; costo non disponibile: {{count}}.`},d={title:`Top ticket`,empty:`Nessuna attività sui ticket in questo periodo.`,breakdownItem:`{{n}} {{label}}`,unattributed:`Non attribuito`,deletedTicket:`ticket eliminato #{{id}}`,costUnavailable:`costo non disponibile`,costUnavailableTooltip:`Nessuna esecuzione di questo ticket ha esposto telemetria dei costi.`,costPartiallyUnavailable:`non disponibili: {{count}}`,costPartiallyUnavailableTooltip:`Solo subtotale noto; alcune esecuzioni di questo ticket non hanno un costo disponibile.`},f={title:`Tutte le invocazioni`,statusFilterAria:`Filtro stato`,minCostFilterAria:`Filtro costo minimo`,minCostPlaceholder:`≥ $0.00`,allStatus:`Tutti gli stati`,success:`Riuscita`,failed:`Fallita`,aborted:`Interrotta`,empty:`Nessuna invocazione corrisponde ai filtri attuali.`,colSurface:`Origine`,colTicket:`Ticket`,colCost:`Costo`,colTurns:`Turni`,colTokens:`Token`,colModel:`Modello`,colStatus:`Stato`,colStarted:`Avvio`,contractLayer:`Contract Layer`,contractLayerRefinement:`Raffinamento Contract Layer`,deleted:`(eliminato)`,provisionalTitleTooltip:`Titolo Explore provvisorio — non ancora confermato`,estimatedCostTooltip:`Stimato dalla tabella prezzi locale — questo provider non riporta il costo nativamente.`,inferred:`dedotto`,statusValue:{success:`riuscita`,failed:`fallita`,aborted:`interrotta`},truncated:`Mostrate le prime {{shown}} di {{total}} righe corrispondenti.`,colProvider:`Provider`,sortLabel:`Ordina`,sortRecency:`Recenti`,sortCost:`Costo`,costUnknownLocalTooltip:`Costo sconosciuto (motore locale). Aggiungi tariffe alla connessione per vedere una stima.`},p={title:`Analytics di Desktop`,refreshAria:`Aggiorna le analytics`,failedToLoad:`Impossibile caricare le analytics: {{error}}`,totalCost:`Costo totale`,costToday:`{{value}} oggi`,costTodayUnavailable:`costo non disponibile oggi`,totalJobs:`Job totali`,jobsToday:`{{n}} oggi`,successRate:`Tasso di successo`,acrossAllProjects:`su tutti i progetti`,avgCostPerJob:`Costo medio / job`,periodAverage:`media del periodo`,averageUnavailable:`media non disponibile con telemetria dei costi incompleta`,costOverTime:`Costo nel tempo tra i progetti`,noCostData:`Nessun dato di costo per questo periodo`,projectComparison:`Confronto progetti`,noProjects:`Nessun progetto registrato.`,jobsCount_one:`{{count}} job`,jobsCount_other:`{{count}} job`,successPct:`{{pct}}% di successo`,costByProject:`Costo per progetto`,includesEstimated:`~{{amount}} stimato`,includesEstimatedTooltip:`Include {{amount}} di costo stimato da tabella prezzi (codex/gemini), non fatturato dal provider.`,includesEstimatedShort:`incl. stimato`,timelineEstimatedTooltip:`Alcuni giorni includono un costo stimato da tabella prezzi (codex/gemini) contrassegnato con ~.`,estimatedBadge:`stim.`,projectEstimatedTooltip:`{{amount}} del costo di questo progetto è una stima da tabella prezzi (codex/gemini), non fatturato dal provider.`,statusBarEstimatedTooltip:`Include un costo stimato da tabella prezzi (codex/gemini), non fatturato dal provider.`,costUnavailable:`Sono state registrate invocazioni, ma la telemetria dei costi non è disponibile.`,costUnavailableShort:`non disponibile`,costPartiallyUnavailable:`Subtotale dei costi noti; invocazioni senza costo: {{count}}.`},m={"7d":`Ultimi 7 giorni`,"30d":`Ultimi 30 giorni`,"90d":`Ultimi 90 giorni`,all:`Sempre`,custom:`Intervallo personalizzato`},h={title:`Missioni dell’agente`,subtitle:`Turni di Agent Chat fissati a questo progetto`,vsPrev:`vs periodo precedente`,turnsAndTokens:`{{turns}} turni · {{tokens}} token`,untitled:`Missione senza titolo`,estimatedNote:`Include costi stimati`},g={surfaces:e,periods:t,runs_one:n,runs_other:r,page:i,hero:a,providerCard:o,timeline:s,quickVsExplore:c,models:l,scatter:u,topTickets:d,table:f,export:{summaryCsv:`CSV riepilogo`,rawCsv:`CSV raw`,summaryJson:`JSON riepilogo`,rawJson:`JSON raw`,downloading:`Download in corso…`,noData:`Nessun dato per i filtri attuali`,failed:`Esportazione non riuscita`},desktop:p,windowLabels:m,agentMissions:h};export{h as agentMissions,g as default,p as desktop,a as hero,l as models,i as page,t as periods,o as providerCard,c as quickVsExplore,n as runs_one,r as runs_other,u as scatter,e as surfaces,f as table,s as timeline,d as topTickets,m as windowLabels};
@@ -0,0 +1 @@
1
+ var e={job:`ジョブ`,quickSpec:`クイック`,exploreSpec:`Explore`,aiEdit:`リファイン`,smash:`SMASH`,fileSummary:`ファイル要約`,loop:`Loops`,chatSidebar:`チャット`,specLauncher:`スペックランチャー`,proposal:`提案`,agentStudio:`エージェントスタジオ`,setup:`セットアップ`},t={d7:`7日`,d30:`30日`,d90:`90日`,all:`すべて`,custom:`カスタム`,startDate:`開始日`,endDate:`終了日`,to:`〜`},n=`{{count}} 回の実行`,r=`{{count}} 回の実行`,i={title:`アナリティクス`,all:`すべて`,engine:`エンジン`,ticketChip:`チケット #{{id}} · ✕`,failedToLoad:`読み込みに失敗しました: {{error}}`,modelChip:`モデル:{{model}}`,clearModelFilter:`モデルフィルターをクリア`,localEngine:`ローカル`},a={spending:`支出`,vsPrev:`前期間比 {{pct}}%`,invocations_one:`{{count}} 回の呼び出し`,invocations_other:`{{count}} 回の呼び出し`,tokens:`· {{tokens}} トークン`,tokensTooltip:`合計トークン = この期間の全呼び出しにおける新規入力 + 出力 + キャッシュ読み取り + キャッシュ作成の合計。`,usageUnavailable:`· トークン使用量は利用できません`,usageUnavailableTooltip:`プロバイダーはこれらの呼び出しを完了しましたが、トークンのテレメトリを提供しませんでした。`,usagePartiallyUnavailable:`· 既知のトークン {{tokens}};{{count}} 件はデータなし`,usagePartiallyUnavailableTooltip:`既知のトークン小計のみです。一部の呼び出しではトークンのテレメトリが提供されませんでした。`,costUnavailable:`コスト利用不可`,costUnavailableTooltip:`プロバイダーはこれらの呼び出しを完了しましたが、コストを特定するための十分なテレメトリを提供しませんでした。`,costPartiallyUnavailable:`· 既知の小計;{{count}} 件はコスト不明`,costPartiallyUnavailableTooltip:`既知のコスト小計のみです。一部の呼び出しではコストを特定するための十分なテレメトリが提供されませんでした。`,includesEstimated:`· 約 {{amount}} の推定値を含む`,includesEstimatedTooltip:`ネイティブのコストフィールドを持たないプロバイダーからの推定コスト {{amount}} を含みます(例: ローカル料金表で算出する codex)。`,trackingStarted:`トラッキング開始: {{date}}`,trackingStartedFallback:`最初の呼び出しからトラッキングを開始`,emptyState:`このフィルター期間の呼び出しはまだありません。`,segmentTitle:`{{label}}: {{value}}`},o={title:`プロバイダー別`,description:`このプロジェクトの AI CLI 間でのコストの内訳。<tilde>~</tilde> プレフィックスは、コストがローカル料金表からの推定値である行を示します(プロバイダーがネイティブに報告しない場合)。`,noCost:`この期間に記録されたコストはまだありません。`,segmentTitle:`{{label}}: {{value}} ({{count}})`,costUnavailable:`コスト利用不可`,costUnavailableTooltip:`このプロバイダーは実行されましたが、コストを特定するための十分なテレメトリを提供しませんでした。`,costPartiallyUnavailable:`· {{count}} 件は利用不可`,costPartiallyUnavailableTooltip:`既知の小計のみです。一部の実行ではコストを利用できません。`},s={title:`日次タイムライン`,subtitle:`サーフェス別の積み上げ`,empty:`この期間の支出はありません。`,costUnavailable:`呼び出しは記録されていますが、コストのテレメトリは利用できません。`,costPartiallyUnavailable:`既知のコスト · {{count}} 件は利用不可`},c={title:`クイック vs Explore`,quick:`クイック`,explore:`Explore`,sparseCta:`より充実したスペックには Explore をお試しください`,runsSoFar_one:`これまで {{count}} 回実行`,runsSoFar_other:`これまで {{count}} 回実行`,perSpec:`スペックあたり`,createdRuns:`<strong>{{created}}</strong> 件作成 · {{runs}} 回実行`,avgDuration:`平均 {{duration}}`,ratio:`スペックあたり {{ratio}}× 多い`,estimatedTooltip:`推定コスト(codex/gemini の料金表フォールバック、プロバイダー請求ではありません)`,estimatedFootnote:`~ 推定コストを含みます(codex/gemini)`,costUnavailable:`spec あたりのコストは利用不可`,costUnavailableTooltip:`1 件以上の実行でコストのテレメトリが提供されなかったため、spec あたりの平均を計算できません。`},l={title:`モデル`,empty:`記録されたモデルはありません。`,estimatedTooltip:`ローカルの料金表からの推定値 — このプロバイダーはコストをネイティブに報告しません。`,others:`その他`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`このモデルのすべての実行でコストのテレメトリを利用できません。`,costPartiallyUnavailable:`· {{count}} 件は利用不可`,costPartiallyUnavailableTooltip:`既知の小計のみです。このモデルの一部の実行ではコストのテレメトリがありません。`},u={title:`コスト vs ターン`,empty:`プロットする呼び出しがありません。`,turnsLabel:`ターン`,costLabel:`コスト`,truncated:`{{total}} 件中 {{shown}} 件を表示 — 最もコストの高いポイントは保持されますが、それ以前のポイントは非表示になります`,costUnavailable:`呼び出しは記録されていますが、プロットできるコストのテレメトリがありません。`,costPartiallyUnavailable:`プロットにはコストが判明している実行のみ含まれます。{{count}} 件はコストを利用できません。`},d={title:`上位チケット`,empty:`この期間のチケットアクティビティはありません。`,breakdownItem:`{{n}} {{label}}`,unattributed:`未割り当て`,deletedTicket:`削除済みチケット #{{id}}`,costUnavailable:`コスト利用不可`,costUnavailableTooltip:`このチケットの実行ではコストのテレメトリが提供されませんでした。`,costPartiallyUnavailable:`{{count}} 件は利用不可`,costPartiallyUnavailableTooltip:`既知の小計のみです。このチケットの一部の実行ではコストを利用できません。`},f={title:`すべての呼び出し`,statusFilterAria:`ステータスフィルター`,minCostFilterAria:`最小コストフィルター`,minCostPlaceholder:`≥ $0.00`,allStatus:`すべてのステータス`,success:`成功`,failed:`失敗`,aborted:`中断`,empty:`現在のフィルターに一致する呼び出しはありません。`,colSurface:`サーフェス`,colTicket:`チケット`,colCost:`コスト`,colTurns:`ターン`,colTokens:`トークン`,colModel:`モデル`,colStatus:`ステータス`,colStarted:`開始`,contractLayer:`Contract Layer`,contractLayerRefinement:`Contract Layer の改良`,deleted:`(削除済み)`,provisionalTitleTooltip:`暫定の Explore タイトル — まだコミットされていません`,estimatedCostTooltip:`ローカル料金表からの推定値 — このプロバイダーはコストをネイティブに報告しません。`,inferred:`推定`,statusValue:{success:`成功`,failed:`失敗`,aborted:`中断`},truncated:`一致する {{total}} 行のうち最初の {{shown}} 行を表示しています。`,colProvider:`プロバイダー`,sortLabel:`並べ替え`,sortRecency:`最近`,sortCost:`コスト`,costUnknownLocalTooltip:`コスト不明(ローカルエンジン)。接続に料金を追加すると概算が表示されます。`},p={title:`Desktop アナリティクス`,refreshAria:`アナリティクスを更新`,failedToLoad:`アナリティクスの読み込みに失敗しました: {{error}}`,totalCost:`合計コスト`,costToday:`本日 {{value}}`,costTodayUnavailable:`本日のコストは利用不可`,totalJobs:`合計ジョブ数`,jobsToday:`本日 {{n}} 件`,successRate:`成功率`,acrossAllProjects:`全プロジェクト`,avgCostPerJob:`ジョブあたり平均コスト`,periodAverage:`期間平均`,averageUnavailable:`コストのテレメトリが不完全なため平均は利用不可`,costOverTime:`プロジェクト横断のコスト推移`,noCostData:`この期間のコストデータはありません`,projectComparison:`プロジェクト比較`,noProjects:`登録されたプロジェクトはありません。`,jobsCount_one:`{{count}} 件のジョブ`,jobsCount_other:`{{count}} 件のジョブ`,successPct:`成功率 {{pct}}%`,costByProject:`プロジェクト別コスト`,includesEstimated:`~{{amount}} 推定`,includesEstimatedTooltip:`料金表による推定コスト {{amount}} を含みます(codex/gemini)。プロバイダー請求ではありません。`,includesEstimatedShort:`推定含む`,timelineEstimatedTooltip:`一部の日には ~ で示された料金表による推定コスト(codex/gemini)が含まれます。`,estimatedBadge:`推定`,projectEstimatedTooltip:`このプロジェクトのコストのうち {{amount}} は料金表による推定値です(codex/gemini)。プロバイダー請求ではありません。`,statusBarEstimatedTooltip:`料金表による推定コスト(codex/gemini)を含みます。プロバイダー請求ではありません。`,costUnavailable:`呼び出しは記録されていますが、コストのテレメトリは利用できません。`,costUnavailableShort:`利用不可`,costPartiallyUnavailable:`既知のコスト小計;{{count}} 件の呼び出しは利用不可。`},m={"7d":`過去 7 日間`,"30d":`過去 30 日間`,"90d":`過去 90 日間`,all:`全期間`,custom:`カスタム範囲`},h={title:`エージェントミッション`,subtitle:`このプロジェクトにピン留めされた Agent Chat ターン`,vsPrev:`前期間比`,turnsAndTokens:`{{turns}} ターン · {{tokens}} トークン`,untitled:`無題のミッション`,estimatedNote:`推定コストを含む`},g={surfaces:e,periods:t,runs_one:n,runs_other:r,page:i,hero:a,providerCard:o,timeline:s,quickVsExplore:c,models:l,scatter:u,topTickets:d,table:f,export:{summaryCsv:`サマリー CSV`,rawCsv:`生データ CSV`,summaryJson:`サマリー JSON`,rawJson:`生データ JSON`,downloading:`ダウンロード中…`,noData:`現在のフィルターにデータがありません`,failed:`エクスポートに失敗しました`},desktop:p,windowLabels:m,agentMissions:h};export{h as agentMissions,g as default,p as desktop,a as hero,l as models,i as page,t as periods,o as providerCard,c as quickVsExplore,n as runs_one,r as runs_other,u as scatter,e as surfaces,f as table,s as timeline,d as topTickets,m as windowLabels};
@@ -0,0 +1 @@
1
+ var e={job:`Jobs`,quickSpec:`Quick`,exploreSpec:`Explore`,aiEdit:`Verfeinern`,smash:`SMASH`,fileSummary:`Dateizusammenfassungen`,loop:`Loops`,chatSidebar:`Chat`,specLauncher:`Spec-Starter`,proposal:`Vorschlag`,agentStudio:`Agent Studio`,setup:`Einrichtung`},t={d7:`7d`,d30:`30d`,d90:`90d`,all:`Alle`,custom:`Benutzerdefiniert`,startDate:`Startdatum`,endDate:`Enddatum`,to:`bis`},n=`{{count}} Lauf`,r=`{{count}} Läufe`,i={title:`Analytics`,all:`Alle`,engine:`Engine`,ticketChip:`Ticket #{{id}} · ✕`,failedToLoad:`Laden fehlgeschlagen: {{error}}`,modelChip:`Modell: {{model}}`,clearModelFilter:`Modellfilter zurücksetzen`,localEngine:`lokal`},a={spending:`Ausgaben`,vsPrev:`{{pct}} % ggü. Vorperiode`,invocations_one:`{{count}} Aufruf`,invocations_other:`{{count}} Aufrufe`,tokens:`· {{tokens}} Tokens`,tokensTooltip:`Tokens gesamt = neue Eingabe + Ausgabe + Cache-Read + Cache-Create über alle Aufrufe in diesem Zeitraum.`,usageUnavailable:`· Token-Nutzung nicht verfügbar`,usageUnavailableTooltip:`Der Anbieter hat diese Aufrufe abgeschlossen, aber keine Token-Telemetrie bereitgestellt.`,usagePartiallyUnavailable:`· {{tokens}} bekannte Tokens; ohne Daten: {{count}}`,usagePartiallyUnavailableTooltip:`Nur bekannte Token-Zwischensumme; einige Aufrufe haben keine Token-Telemetrie bereitgestellt.`,costUnavailable:`Kosten nicht verfügbar`,costUnavailableTooltip:`Der Anbieter hat diese Aufrufe abgeschlossen, aber nicht genügend Telemetrie zur Kostenermittlung bereitgestellt.`,costPartiallyUnavailable:`· bekannte Zwischensumme; ohne Kosten: {{count}}`,costPartiallyUnavailableTooltip:`Nur bekannte Kosten-Zwischensumme; einige Aufrufe haben nicht genügend Telemetrie zur Kostenermittlung bereitgestellt.`,includesEstimated:`· enthält ~{{amount}} geschätzt`,includesEstimatedTooltip:`Enthält {{amount}} geschätzte Kosten von Providern ohne natives Kostenfeld (z. B. codex über die lokale Preistabelle).`,trackingStarted:`Tracking gestartet am {{date}}`,trackingStartedFallback:`Tracking beginnt mit dem ersten Aufruf`,emptyState:`Noch keine Aufrufe für diesen Filterzeitraum.`,segmentTitle:`{{label}}: {{value}}`},o={title:`Nach Provider`,description:`So verteilen sich die Kosten auf die KI-CLIs in diesem Projekt. Das Präfix <tilde>~</tilde> markiert Zeilen, deren Kosten über die lokale Preistabelle geschätzt sind (der Provider meldet sie nicht nativ).`,noCost:`Noch keine Kosten in diesem Zeitraum erfasst.`,segmentTitle:`{{label}}: {{value}} ({{count}})`,costUnavailable:`Kosten nicht verfügbar`,costUnavailableTooltip:`Dieser Anbieter lief, aber sein Modell ist nicht in der Preistabelle, daher konnten keine Kosten berechnet werden.`,costPartiallyUnavailable:`· nicht verfügbar: {{count}}`,costPartiallyUnavailableTooltip:`Nur bekannte Zwischensumme; für einige Aufrufe sind keine Kosten verfügbar.`},s={title:`Täglicher Verlauf`,subtitle:`gestapelt nach Surface`,empty:`Keine Ausgaben in diesem Zeitraum.`,costUnavailable:`Aufrufe wurden erfasst, aber die Kostentelemetrie ist nicht verfügbar.`,costPartiallyUnavailable:`bekannte Kosten · nicht verfügbar: {{count}}`},c={title:`Quick vs. Explore`,quick:`Quick`,explore:`Explore`,sparseCta:`Probiere Explore für reichhaltigere Specs`,runsSoFar_one:`bisher {{count}} Lauf`,runsSoFar_other:`bisher {{count}} Läufe`,perSpec:`pro Spec`,createdRuns:`<strong>{{created}}</strong> erstellt · {{runs}} Läufe`,avgDuration:`Ø {{duration}}`,ratio:`{{ratio}}× mehr pro Spec`,estimatedTooltip:`Geschätzte Kosten (Rückgriff auf Preistabelle für codex/gemini, nicht vom Anbieter abgerechnet)`,estimatedFootnote:`~ Enthält geschätzte Kosten (codex/gemini)`,costUnavailable:`Kosten pro Spec nicht verfügbar`,costUnavailableTooltip:`Ein Durchschnitt pro Spec kann nicht berechnet werden, da für mindestens einen Aufruf die Kostentelemetrie fehlt.`},l={title:`Modelle`,empty:`Keine Modelle erfasst.`,estimatedTooltip:`Geschätzt aus der lokalen Preistabelle — dieser Anbieter meldet die Kosten nicht nativ.`,others:`Andere`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`Für alle Aufrufe dieses Modells fehlt die Kostentelemetrie.`,costPartiallyUnavailable:`· nicht verfügbar: {{count}}`,costPartiallyUnavailableTooltip:`Nur bekannte Zwischensumme; für einige Aufrufe dieses Modells fehlen Kostendaten.`},u={title:`Kosten vs. Turns`,empty:`Keine Aufrufe zum Darstellen.`,turnsLabel:`Turns`,costLabel:`Kosten`,truncated:`Zeige {{shown}} von {{total}} — der teuerste Punkt bleibt erhalten, frühere Punkte werden ausgeblendet`,costUnavailable:`Aufrufe wurden erfasst, aber es sind keine Kostendaten zum Darstellen verfügbar.`,costPartiallyUnavailable:`Das Diagramm enthält nur Aufrufe mit Kosten; Kosten nicht verfügbar: {{count}}.`},d={title:`Top-Tickets`,empty:`Keine Ticket-Aktivität in diesem Zeitraum.`,breakdownItem:`{{n}} {{label}}`,unattributed:`Nicht zugeordnet`,deletedTicket:`gelöschtes Ticket #{{id}}`,costUnavailable:`Kosten nicht verfügbar`,costUnavailableTooltip:`Keiner der Aufrufe dieses Tickets hat Kostentelemetrie bereitgestellt.`,costPartiallyUnavailable:`nicht verfügbar: {{count}}`,costPartiallyUnavailableTooltip:`Nur bekannte Zwischensumme; für einige Aufrufe dieses Tickets sind keine Kosten verfügbar.`},f={title:`Alle Aufrufe`,statusFilterAria:`Statusfilter`,minCostFilterAria:`Mindestkosten-Filter`,minCostPlaceholder:`≥ $0.00`,allStatus:`Alle Status`,success:`Erfolgreich`,failed:`Fehlgeschlagen`,aborted:`Abgebrochen`,empty:`Keine Aufrufe entsprechen den aktuellen Filtern.`,colSurface:`Surface`,colTicket:`Ticket`,colCost:`Kosten`,colTurns:`Turns`,colTokens:`Tokens`,colModel:`Modell`,colStatus:`Status`,colStarted:`Gestartet`,contractLayer:`Contract Layer`,contractLayerRefinement:`Contract-Layer-Verfeinerung`,deleted:`(gelöscht)`,provisionalTitleTooltip:`Vorläufiger Explore-Titel – noch nicht committet`,estimatedCostTooltip:`Geschätzt anhand der lokalen Preistabelle – dieser Provider meldet Kosten nicht nativ.`,inferred:`abgeleitet`,statusValue:{success:`erfolgreich`,failed:`fehlgeschlagen`,aborted:`abgebrochen`},truncated:`Zeige die ersten {{shown}} von {{total}} passenden Zeilen.`,colProvider:`Anbieter`,sortLabel:`Sortieren`,sortRecency:`Neueste`,sortCost:`Kosten`,costUnknownLocalTooltip:`Kosten unbekannt (lokale Engine). Tarife in der Verbindung hinterlegen, um eine Schätzung zu sehen.`},p={title:`Desktop-Analytics`,refreshAria:`Analytics aktualisieren`,failedToLoad:`Analytics konnten nicht geladen werden: {{error}}`,totalCost:`Gesamtkosten`,costToday:`{{value}} heute`,costTodayUnavailable:`Kosten heute nicht verfügbar`,totalJobs:`Jobs gesamt`,jobsToday:`{{n}} heute`,successRate:`Erfolgsquote`,acrossAllProjects:`über alle Projekte`,avgCostPerJob:`Ø Kosten / Job`,periodAverage:`Durchschnitt im Zeitraum`,averageUnavailable:`Durchschnitt bei unvollständiger Kostentelemetrie nicht verfügbar`,costOverTime:`Projektübergreifende Kosten im Zeitverlauf`,noCostData:`Keine Kostendaten für diesen Zeitraum`,projectComparison:`Projektvergleich`,noProjects:`Keine Projekte registriert.`,jobsCount_one:`{{count}} Job`,jobsCount_other:`{{count}} Jobs`,successPct:`{{pct}} % Erfolg`,costByProject:`Kosten nach Projekt`,includesEstimated:`~{{amount}} geschätzt`,includesEstimatedTooltip:`Enthält {{amount}} geschätzte Kosten aus der Preistabelle (codex/gemini), nicht vom Anbieter abgerechnet.`,includesEstimatedShort:`inkl. geschätzt`,timelineEstimatedTooltip:`Einige Tage enthalten geschätzte Kosten aus der Preistabelle (codex/gemini), markiert mit ~.`,estimatedBadge:`gesch.`,projectEstimatedTooltip:`{{amount}} der Kosten dieses Projekts sind eine Schätzung aus der Preistabelle (codex/gemini), nicht vom Anbieter abgerechnet.`,statusBarEstimatedTooltip:`Enthält geschätzte Kosten aus der Preistabelle (codex/gemini), nicht vom Anbieter abgerechnet.`,costUnavailable:`Aufrufe wurden erfasst, aber die Kostentelemetrie ist nicht verfügbar.`,costUnavailableShort:`nicht verfügbar`,costPartiallyUnavailable:`Bekannte Kosten-Zwischensumme; Aufrufe ohne Kosten: {{count}}.`},m={"7d":`Letzte 7 Tage`,"30d":`Letzte 30 Tage`,"90d":`Letzte 90 Tage`,all:`Gesamter Zeitraum`,custom:`Benutzerdefiniert`},h={title:`Agent-Missionen`,subtitle:`An dieses Projekt angeheftete Agent-Chat-Züge`,vsPrev:`ggü. Vorperiode`,turnsAndTokens:`{{turns}} Züge · {{tokens}} Tokens`,untitled:`Unbenannte Mission`,estimatedNote:`Enthält geschätzte Kosten`},g={surfaces:e,periods:t,runs_one:n,runs_other:r,page:i,hero:a,providerCard:o,timeline:s,quickVsExplore:c,models:l,scatter:u,topTickets:d,table:f,export:{summaryCsv:`Zusammenfassung (CSV)`,rawCsv:`Rohdaten (CSV)`,summaryJson:`Zusammenfassung (JSON)`,rawJson:`Rohdaten (JSON)`,downloading:`Wird heruntergeladen…`,noData:`Keine Daten für aktuelle Filter`,failed:`Export fehlgeschlagen`},desktop:p,windowLabels:m,agentMissions:h};export{h as agentMissions,g as default,p as desktop,a as hero,l as models,i as page,t as periods,o as providerCard,c as quickVsExplore,n as runs_one,r as runs_other,u as scatter,e as surfaces,f as table,s as timeline,d as topTickets,m as windowLabels};
@@ -0,0 +1 @@
1
+ var e={job:`Jobs`,quickSpec:`Quick`,exploreSpec:`Explore`,aiEdit:`Refinado`,smash:`SMASH`,fileSummary:`Resúmenes de archivo`,loop:`Loops`,chatSidebar:`Chat`,specLauncher:`Lanzador de specs`,proposal:`Propuesta`,agentStudio:`Agent Studio`,setup:`Configuración`},t={d7:`7d`,d30:`30d`,d90:`90d`,all:`Todo`,custom:`Personalizado`,startDate:`Fecha de inicio`,endDate:`Fecha de fin`,to:`a`},n=`{{count}} ejecución`,r=`{{count}} ejecuciones`,i={title:`Analíticas`,all:`Todo`,engine:`Motor`,ticketChip:`ticket #{{id}} · ✕`,failedToLoad:`Error al cargar: {{error}}`,modelChip:`Modelo: {{model}}`,clearModelFilter:`Quitar filtro de modelo`,localEngine:`local`},a={spending:`Gasto`,vsPrev:`{{pct}}% vs anterior`,invocations_one:`{{count}} invocación`,invocations_other:`{{count}} invocaciones`,tokens:`· {{tokens}} tokens`,tokensTooltip:`Tokens totales = entrada nueva + salida + lectura de caché + creación de caché en todas las invocaciones de esta ventana.`,usageUnavailable:`· uso de tokens no disponible`,usageUnavailableTooltip:`El proveedor completó estas invocaciones pero no expuso telemetría de tokens.`,usagePartiallyUnavailable:`· {{tokens}} tokens conocidos; {{count}} ejecución(es) sin datos`,usagePartiallyUnavailableTooltip:`Solo subtotal de tokens conocido; algunas invocaciones no expusieron telemetría.`,costUnavailable:`coste no disponible`,costUnavailableTooltip:`El proveedor completó estas invocaciones pero no expuso telemetría suficiente para determinar su coste.`,costPartiallyUnavailable:`· subtotal conocido; {{count}} ejecución(es) sin coste`,costPartiallyUnavailableTooltip:`Solo subtotal de coste conocido; algunas invocaciones no expusieron telemetría suficiente.`,includesEstimated:`· incluye ~{{amount}} estimado`,includesEstimatedTooltip:`Incluye {{amount}} de coste estimado de proveedores sin campo de coste nativo (p. ej. codex mediante la tabla de precios local).`,trackingStarted:`Seguimiento iniciado el {{date}}`,trackingStartedFallback:`El seguimiento empieza con la primera invocación`,emptyState:`Aún no hay invocaciones para esta ventana de filtros.`,segmentTitle:`{{label}}: {{value}}`},o={title:`Por proveedor`,description:`Cómo se reparte el coste entre las CLI de IA de este proyecto. El prefijo <tilde>~</tilde> marca las filas cuyo coste se estima con la tabla de precios local (el proveedor no lo informa de forma nativa).`,noCost:`Aún no hay coste registrado en esta ventana.`,segmentTitle:`{{label}}: {{value}} ({{count}})`,costUnavailable:`coste no disponible`,costUnavailableTooltip:`Este proveedor se ejecutó pero no expuso telemetría suficiente para determinar el coste.`,costPartiallyUnavailable:`· {{count}} no disponible(s)`,costPartiallyUnavailableTooltip:`Solo subtotal conocido; algunas ejecuciones no tienen coste disponible.`},s={title:`Cronología diaria`,subtitle:`apilada por superficie`,empty:`Sin gasto en este periodo.`,costUnavailable:`Hay invocaciones registradas, pero la telemetría de coste no está disponible.`,costPartiallyUnavailable:`costes conocidos · {{count}} no disponible(s)`},c={title:`Quick vs Explore`,quick:`Quick`,explore:`Explore`,sparseCta:`Prueba Explore para conseguir specs más completas`,runsSoFar_one:`{{count}} ejecución hasta ahora`,runsSoFar_other:`{{count}} ejecuciones hasta ahora`,perSpec:`por spec`,createdRuns:`<strong>{{created}}</strong> creadas · {{runs}} ejecuciones`,avgDuration:`{{duration}} de media`,ratio:`{{ratio}}× más por spec`,estimatedTooltip:`Coste estimado (estimación con tabla de precios para codex/gemini, no facturado por el proveedor)`,estimatedFootnote:`~ Incluye costes estimados (codex/gemini)`,costUnavailable:`coste por spec no disponible`,costUnavailableTooltip:`No se puede calcular la media por spec porque una o más ejecuciones no expusieron telemetría de coste.`},l={title:`Modelos`,empty:`No hay modelos registrados.`,estimatedTooltip:`Estimado a partir de la tabla de precios local — este proveedor no informa el coste de forma nativa.`,others:`Otros`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`El coste no está disponible para ninguna ejecución de este modelo.`,costPartiallyUnavailable:`· {{count}} no disponible(s)`,costPartiallyUnavailableTooltip:`Solo subtotal conocido; algunas ejecuciones de este modelo no tienen telemetría de coste.`},u={title:`Coste vs turnos`,empty:`No hay invocaciones que representar.`,turnsLabel:`turnos`,costLabel:`coste`,truncated:`Mostrando {{shown}} de {{total}} — se conserva el punto más costoso, pero se ocultan los anteriores`,costUnavailable:`Hay invocaciones registradas, pero no existe telemetría de coste para representarlas.`,costPartiallyUnavailable:`La gráfica solo incluye ejecuciones con precio; {{count}} no tienen coste disponible.`},d={title:`Tickets principales`,empty:`Sin actividad de tickets en este periodo.`,breakdownItem:`{{n}} {{label}}`,unattributed:`Sin atribuir`,deletedTicket:`ticket eliminado #{{id}}`,costUnavailable:`coste no disponible`,costUnavailableTooltip:`Ninguna ejecución de este ticket expuso telemetría de coste.`,costPartiallyUnavailable:`{{count}} no disponible(s)`,costPartiallyUnavailableTooltip:`Solo subtotal conocido; algunas ejecuciones de este ticket no tienen coste disponible.`},f={title:`Todas las invocaciones`,statusFilterAria:`Filtro de estado`,minCostFilterAria:`Filtro de coste mínimo`,minCostPlaceholder:`≥ $0.00`,allStatus:`Todos los estados`,success:`Éxito`,failed:`Fallido`,aborted:`Abortado`,empty:`Ninguna invocación coincide con los filtros actuales.`,colSurface:`Superficie`,colTicket:`Ticket`,colCost:`Coste`,colTurns:`Turnos`,colTokens:`Tokens`,colModel:`Modelo`,colStatus:`Estado`,colStarted:`Inicio`,contractLayer:`Contract Layer`,contractLayerRefinement:`Refinamiento de Contract Layer`,deleted:`(eliminado)`,provisionalTitleTooltip:`Título provisional de Explore — aún sin confirmar`,estimatedCostTooltip:`Estimado con la tabla de precios local — este proveedor no informa el coste de forma nativa.`,inferred:`inferido`,statusValue:{success:`éxito`,failed:`fallido`,aborted:`abortado`},truncated:`Mostrando las primeras {{shown}} de {{total}} filas coincidentes.`,colProvider:`Proveedor`,sortLabel:`Ordenar`,sortRecency:`Reciente`,sortCost:`Coste`,costUnknownLocalTooltip:`Coste desconocido (motor local). Añade tarifas a la conexión para ver una estimación.`},p={title:`Analíticas de Desktop`,refreshAria:`Actualizar analíticas`,failedToLoad:`No se pudieron cargar las analíticas: {{error}}`,totalCost:`Coste total`,costToday:`{{value}} hoy`,costTodayUnavailable:`coste no disponible hoy`,totalJobs:`Jobs totales`,jobsToday:`{{n}} hoy`,successRate:`Tasa de éxito`,acrossAllProjects:`en todos los proyectos`,avgCostPerJob:`Coste medio / job`,periodAverage:`media del periodo`,averageUnavailable:`media no disponible con telemetría de coste incompleta`,costOverTime:`Coste entre proyectos a lo largo del tiempo`,noCostData:`Sin datos de coste para este periodo`,projectComparison:`Comparación de proyectos`,noProjects:`No hay proyectos registrados.`,jobsCount_one:`{{count}} job`,jobsCount_other:`{{count}} jobs`,successPct:`{{pct}}% de éxito`,costByProject:`Coste por proyecto`,includesEstimated:`~{{amount}} estimado`,includesEstimatedTooltip:`Incluye {{amount}} de coste estimado por tabla de precios (codex/gemini), no facturado por el proveedor.`,includesEstimatedShort:`incl. estimado`,timelineEstimatedTooltip:`Algunos días incluyen coste estimado por tabla de precios (codex/gemini) marcado con ~.`,estimatedBadge:`est.`,projectEstimatedTooltip:`{{amount}} del coste de este proyecto es una estimación por tabla de precios (codex/gemini), no facturado por el proveedor.`,statusBarEstimatedTooltip:`Incluye coste estimado por tabla de precios (codex/gemini), no facturado por el proveedor.`,costUnavailable:`Hay invocaciones registradas, pero la telemetría de coste no está disponible.`,costUnavailableShort:`no disponible`,costPartiallyUnavailable:`Subtotal de coste conocido; {{count}} invocación(es) sin datos.`},m={"7d":`Últimos 7 días`,"30d":`Últimos 30 días`,"90d":`Últimos 90 días`,all:`Todo el tiempo`,custom:`Rango personalizado`},h={title:`Misiones del agente`,subtitle:`Turnos de Agent Chat anclados a este proyecto`,vsPrev:`vs periodo anterior`,turnsAndTokens:`{{turns}} turnos · {{tokens}} tokens`,untitled:`Misión sin título`,estimatedNote:`Incluye costes estimados`},g={surfaces:e,periods:t,runs_one:n,runs_other:r,page:i,hero:a,providerCard:o,timeline:s,quickVsExplore:c,models:l,scatter:u,topTickets:d,table:f,export:{summaryCsv:`CSV resumen`,rawCsv:`CSV en bruto`,summaryJson:`JSON resumen`,rawJson:`JSON en bruto`,downloading:`Descargando…`,noData:`Sin datos para los filtros actuales`,failed:`Error al exportar`},desktop:p,windowLabels:m,agentMissions:h};export{h as agentMissions,g as default,p as desktop,a as hero,l as models,i as page,t as periods,o as providerCard,c as quickVsExplore,n as runs_one,r as runs_other,u as scatter,e as surfaces,f as table,s as timeline,d as topTickets,m as windowLabels};
@@ -0,0 +1 @@
1
+ var e={job:`Jobs`,quickSpec:`Quick`,exploreSpec:`Explore`,aiEdit:`Affinage`,smash:`SMASH`,fileSummary:`Résumés de fichiers`,loop:`Loops`,chatSidebar:`Chat`,specLauncher:`Lanceur de spec`,proposal:`Proposition`,agentStudio:`Agent Studio`,setup:`Configuration`},t={d7:`7j`,d30:`30j`,d90:`90j`,all:`Tout`,custom:`Personnalisé`,startDate:`Date de début`,endDate:`Date de fin`,to:`au`},n=`{{count}} exécution`,r=`{{count}} exécutions`,i={title:`Analytics`,all:`Tout`,engine:`Moteur`,ticketChip:`ticket #{{id}} · ✕`,failedToLoad:`Échec du chargement : {{error}}`,modelChip:`Modèle : {{model}}`,clearModelFilter:`Effacer le filtre de modèle`,localEngine:`local`},a={spending:`Dépenses`,vsPrev:`{{pct}} % vs préc.`,invocations_one:`{{count}} invocation`,invocations_other:`{{count}} invocations`,tokens:`· {{tokens}} tokens`,tokensTooltip:`Total des tokens = entrée fraîche + sortie + lecture cache + création cache, sur toutes les invocations de cette période.`,usageUnavailable:`· utilisation des tokens indisponible`,usageUnavailableTooltip:`Le fournisseur a terminé ces invocations sans exposer de télémétrie des tokens.`,usagePartiallyUnavailable:`· {{tokens}} tokens connus ; sans données : {{count}}`,usagePartiallyUnavailableTooltip:`Sous-total connu uniquement ; certaines invocations n'exposent pas de télémétrie des tokens.`,costUnavailable:`coût indisponible`,costUnavailableTooltip:`Le fournisseur a terminé ces invocations sans exposer assez de télémétrie pour déterminer leur coût.`,costPartiallyUnavailable:`· sous-total connu ; sans coût : {{count}}`,costPartiallyUnavailableTooltip:`Sous-total connu uniquement ; certaines invocations n'exposent pas assez de télémétrie pour déterminer leur coût.`,includesEstimated:`· inclut ~{{amount}} estimés`,includesEstimatedTooltip:`Inclut {{amount}} de coût estimé pour les fournisseurs sans champ de coût natif (ex. codex via la table de tarifs locale).`,trackingStarted:`Suivi démarré le {{date}}`,trackingStartedFallback:`Le suivi démarre à la première invocation`,emptyState:`Aucune invocation pour cette période de filtrage.`,segmentTitle:`{{label}} : {{value}}`},o={title:`Par fournisseur`,description:`Répartition du coût entre les CLI IA de ce projet. Le préfixe <tilde>~</tilde> marque les lignes dont le coût est estimé à partir de la table de tarifs locale (le fournisseur ne le rapporte pas nativement).`,noCost:`Aucun coût enregistré sur cette période.`,segmentTitle:`{{label}} : {{value}} ({{count}})`,costUnavailable:`coût indisponible`,costUnavailableTooltip:`Ce fournisseur s'est exécuté mais son modèle n'est pas dans la table de tarifs, donc aucun coût n'a pu être calculé.`,costPartiallyUnavailable:`· indisponibles : {{count}}`,costPartiallyUnavailableTooltip:`Sous-total connu uniquement ; le coût de certaines exécutions est indisponible.`},s={title:`Chronologie quotidienne`,subtitle:`empilée par surface`,empty:`Aucune dépense sur cette période.`,costUnavailable:`Des invocations ont été enregistrées, mais la télémétrie de coût est indisponible.`,costPartiallyUnavailable:`coûts connus · indisponibles : {{count}}`},c={title:`Quick vs Explore`,quick:`Quick`,explore:`Explore`,sparseCta:`Essayez Explore pour des specs plus riches`,runsSoFar_one:`{{count}} exécution pour l'instant`,runsSoFar_other:`{{count}} exécutions pour l'instant`,perSpec:`par spec`,createdRuns:`<strong>{{created}}</strong> créées · {{runs}} exécutions`,avgDuration:`{{duration}} en moyenne`,ratio:`{{ratio}}× de plus par spec`,estimatedTooltip:`Coût estimé (repli sur la table de tarifs codex/gemini, non facturé par le fournisseur)`,estimatedFootnote:`~ Inclut des coûts estimés (codex/gemini)`,costUnavailable:`coût par spec indisponible`,costUnavailableTooltip:`La moyenne par spec ne peut pas être calculée car une ou plusieurs exécutions n'exposent pas leur coût.`},l={title:`Modèles`,empty:`Aucun modèle enregistré.`,estimatedTooltip:`Estimé à partir de la table de tarifs locale — ce fournisseur ne signale pas le coût de manière native.`,others:`Autres`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`La télémétrie de coût est indisponible pour toutes les exécutions de ce modèle.`,costPartiallyUnavailable:`· indisponibles : {{count}}`,costPartiallyUnavailableTooltip:`Sous-total connu uniquement ; certaines exécutions de ce modèle n'ont pas de télémétrie de coût.`},u={title:`Coût vs tours`,empty:`Aucune invocation à tracer.`,turnsLabel:`tours`,costLabel:`coût`,truncated:`Affichage de {{shown}} sur {{total}} — le point le plus coûteux est conservé, mais les points précédents sont masqués`,costUnavailable:`Des invocations ont été enregistrées, mais aucune télémétrie de coût n'est disponible pour le graphique.`,costPartiallyUnavailable:`Le graphique ne contient que les exécutions tarifées ; coûts indisponibles : {{count}}.`},d={title:`Top tickets`,empty:`Aucune activité de ticket sur cette période.`,breakdownItem:`{{n}} {{label}}`,unattributed:`Non attribué`,deletedTicket:`ticket supprimé #{{id}}`,costUnavailable:`coût indisponible`,costUnavailableTooltip:`Aucune exécution de ce ticket n'a exposé de télémétrie de coût.`,costPartiallyUnavailable:`indisponibles : {{count}}`,costPartiallyUnavailableTooltip:`Sous-total connu uniquement ; certaines exécutions de ce ticket ont un coût indisponible.`},f={title:`Toutes les invocations`,statusFilterAria:`Filtre de statut`,minCostFilterAria:`Filtre de coût minimum`,minCostPlaceholder:`≥ $0.00`,allStatus:`Tous les statuts`,success:`Succès`,failed:`Échec`,aborted:`Interrompu`,empty:`Aucune invocation ne correspond aux filtres actuels.`,colSurface:`Surface`,colTicket:`Ticket`,colCost:`Coût`,colTurns:`Tours`,colTokens:`Tokens`,colModel:`Modèle`,colStatus:`Statut`,colStarted:`Démarré`,contractLayer:`Contract Layer`,contractLayerRefinement:`Affinage Contract Layer`,deleted:`(supprimé)`,provisionalTitleTooltip:`Titre Explore provisoire — pas encore validé`,estimatedCostTooltip:`Estimé à partir de la table de tarifs locale — ce fournisseur ne rapporte pas le coût nativement.`,inferred:`inféré`,statusValue:{success:`succès`,failed:`échec`,aborted:`interrompu`},truncated:`Affichage des {{shown}} premières lignes sur {{total}} correspondantes.`,colProvider:`Fournisseur`,sortLabel:`Trier`,sortRecency:`Récent`,sortCost:`Coût`,costUnknownLocalTooltip:`Coût inconnu (moteur local). Ajoutez des tarifs à la connexion pour voir une estimation.`},p={title:`Analytics de Desktop`,refreshAria:`Actualiser les analytics`,failedToLoad:`Échec du chargement des analytics : {{error}}`,totalCost:`Coût total`,costToday:`{{value}} aujourd'hui`,costTodayUnavailable:`coût indisponible aujourd'hui`,totalJobs:`Total des jobs`,jobsToday:`{{n}} aujourd'hui`,successRate:`Taux de réussite`,acrossAllProjects:`sur tous les projets`,avgCostPerJob:`Coût moyen / job`,periodAverage:`moyenne de la période`,averageUnavailable:`moyenne indisponible avec une télémétrie de coût incomplète`,costOverTime:`Coût inter-projets dans le temps`,noCostData:`Aucune donnée de coût pour cette période`,projectComparison:`Comparaison des projets`,noProjects:`Aucun projet enregistré.`,jobsCount_one:`{{count}} job`,jobsCount_other:`{{count}} jobs`,successPct:`{{pct}} % de réussite`,costByProject:`Coût par projet`,includesEstimated:`~{{amount}} estimé`,includesEstimatedTooltip:`Inclut {{amount}} de coût estimé par la table de tarifs (codex/gemini), non facturé par le fournisseur.`,includesEstimatedShort:`incl. estimé`,timelineEstimatedTooltip:`Certains jours incluent un coût estimé par la table de tarifs (codex/gemini) marqué d'un ~.`,estimatedBadge:`est.`,projectEstimatedTooltip:`{{amount}} du coût de ce projet est une estimation par table de tarifs (codex/gemini), non facturé par le fournisseur.`,statusBarEstimatedTooltip:`Inclut un coût estimé par la table de tarifs (codex/gemini), non facturé par le fournisseur.`,costUnavailable:`Des invocations ont été enregistrées, mais la télémétrie de coût est indisponible.`,costUnavailableShort:`indisponible`,costPartiallyUnavailable:`Sous-total des coûts connus ; invocations sans coût : {{count}}.`},m={"7d":`7 derniers jours`,"30d":`30 derniers jours`,"90d":`90 derniers jours`,all:`Tout l'historique`,custom:`Plage personnalisée`},h={title:`Missions de l’agent`,subtitle:`Tours d’Agent Chat épinglés à ce projet`,vsPrev:`vs période précédente`,turnsAndTokens:`{{turns}} tours · {{tokens}} tokens`,untitled:`Mission sans titre`,estimatedNote:`Inclut des coûts estimés`},g={surfaces:e,periods:t,runs_one:n,runs_other:r,page:i,hero:a,providerCard:o,timeline:s,quickVsExplore:c,models:l,scatter:u,topTickets:d,table:f,export:{summaryCsv:`CSV résumé`,rawCsv:`CSV brut`,summaryJson:`JSON résumé`,rawJson:`JSON brut`,downloading:`Téléchargement…`,noData:`Aucune donnée pour les filtres actuels`,failed:`Échec de l'export`},desktop:p,windowLabels:m,agentMissions:h};export{h as agentMissions,g as default,p as desktop,a as hero,l as models,i as page,t as periods,o as providerCard,c as quickVsExplore,n as runs_one,r as runs_other,u as scatter,e as surfaces,f as table,s as timeline,d as topTickets,m as windowLabels};
@@ -0,0 +1 @@
1
+ var e={job:`任务`,quickSpec:`Quick`,exploreSpec:`Explore`,aiEdit:`AI 编辑`,smash:`SMASH`,fileSummary:`文件摘要`,loop:`Loops`,chatSidebar:`对话`,specLauncher:`规格启动器`,proposal:`提案`,agentStudio:`Agent Studio`,setup:`设置`},t={d7:`7天`,d30:`30天`,d90:`90天`,all:`全部`,custom:`自定义`,startDate:`开始日期`,endDate:`结束日期`,to:`至`},n=`{{count}} 次运行`,r=`{{count}} 次运行`,i={title:`分析`,all:`全部`,engine:`引擎`,ticketChip:`工单 #{{id}} · ✕`,failedToLoad:`加载失败:{{error}}`,modelChip:`模型:{{model}}`,clearModelFilter:`清除模型筛选`,localEngine:`本地`},a={spending:`支出`,vsPrev:`较上期 {{pct}}%`,invocations_one:`{{count}} 次调用`,invocations_other:`{{count}} 次调用`,tokens:`· {{tokens}} token`,tokensTooltip:`总 token 数 = 此时间窗口内所有调用的新输入 + 输出 + 缓存读取 + 缓存创建之和。`,usageUnavailable:`· token 使用量不可用`,usageUnavailableTooltip:`提供方已完成这些调用,但未提供 token 遥测数据。`,usagePartiallyUnavailable:`· 已知 {{tokens}} 个 token;{{count}} 次调用无数据`,usagePartiallyUnavailableTooltip:`仅显示已知 token 小计;部分调用未提供 token 遥测数据。`,costUnavailable:`成本不可用`,costUnavailableTooltip:`提供方已完成这些调用,但未提供足以确定成本的遥测数据。`,costPartiallyUnavailable:`· 已知小计;{{count}} 次调用无成本数据`,costPartiallyUnavailableTooltip:`仅显示已知成本小计;部分调用未提供足以确定成本的遥测数据。`,includesEstimated:`· 含约 {{amount}} 估算值`,includesEstimatedTooltip:`包含 {{amount}} 的估算成本,来自不原生上报成本的提供方(例如 codex,按本地价格表估算)。`,trackingStarted:`追踪始于 {{date}}`,trackingStartedFallback:`首次调用后开始追踪`,emptyState:`当前筛选窗口内暂无调用。`,segmentTitle:`{{label}}:{{value}}`},o={title:`按提供方`,description:`此项目中各 AI CLI 的成本分布。<tilde>~</tilde> 前缀表示该行成本由本地价格表估算(提供方不原生上报)。`,noCost:`此时间窗口内暂无成本记录。`,segmentTitle:`{{label}}:{{value}}({{count}})`,costUnavailable:`成本不可用`,costUnavailableTooltip:`此提供方已运行,但未提供足以确定成本的遥测数据。`,costPartiallyUnavailable:`· {{count}} 次不可用`,costPartiallyUnavailableTooltip:`仅显示已知小计;部分运行的成本不可用。`},s={title:`每日时间线`,subtitle:`按来源堆叠`,empty:`此期间没有支出。`,costUnavailable:`已记录调用,但成本遥测数据不可用。`,costPartiallyUnavailable:`已知成本 · {{count}} 次不可用`},c={title:`Quick vs Explore`,quick:`Quick`,explore:`Explore`,sparseCta:`试试 Explore,获得更丰富的 spec`,runsSoFar_one:`目前 {{count}} 次运行`,runsSoFar_other:`目前 {{count}} 次运行`,perSpec:`每个 spec`,createdRuns:`已创建 <strong>{{created}}</strong> · {{runs}} 次运行`,avgDuration:`平均 {{duration}}`,ratio:`每个 spec 多 {{ratio}}×`,estimatedTooltip:`估算成本(codex/gemini 价格表回退,非提供商计费)`,estimatedFootnote:`~ 包含估算成本(codex/gemini)`,costUnavailable:`每个 spec 的成本不可用`,costUnavailableTooltip:`由于一次或多次运行未提供成本遥测数据,无法计算每个 spec 的平均成本。`},l={title:`模型`,empty:`暂无模型记录。`,estimatedTooltip:`根据本地价格表估算 — 此提供商不原生报告成本。`,others:`其他`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`此模型的所有运行均无成本遥测数据。`,costPartiallyUnavailable:`· {{count}} 次不可用`,costPartiallyUnavailableTooltip:`仅显示已知小计;此模型的部分运行无成本遥测数据。`},u={title:`成本 vs 轮次`,empty:`暂无可绘制的调用。`,turnsLabel:`轮次`,costLabel:`成本`,truncated:`显示 {{total}} 中的 {{shown}} 个 — 保留成本最高的点,但隐藏较早的点`,costUnavailable:`已记录调用,但没有可供绘图的成本遥测数据。`,costPartiallyUnavailable:`图表仅包含有成本数据的运行;{{count}} 次运行的成本不可用。`},d={title:`热门工单`,empty:`此期间没有工单活动。`,breakdownItem:`{{n}} {{label}}`,unattributed:`未归属`,deletedTicket:`已删除工单 #{{id}}`,costUnavailable:`成本不可用`,costUnavailableTooltip:`此工单的所有运行均未提供成本遥测数据。`,costPartiallyUnavailable:`{{count}} 次不可用`,costPartiallyUnavailableTooltip:`仅显示已知小计;此工单的部分运行成本不可用。`},f={title:`全部调用`,statusFilterAria:`状态筛选`,minCostFilterAria:`最低成本筛选`,minCostPlaceholder:`≥ $0.00`,allStatus:`全部状态`,success:`成功`,failed:`失败`,aborted:`已中止`,empty:`没有符合当前筛选条件的调用。`,colSurface:`来源`,colTicket:`工单`,colCost:`成本`,colTurns:`轮次`,colTokens:`Token`,colModel:`模型`,colStatus:`状态`,colStarted:`开始时间`,contractLayer:`Contract Layer`,contractLayerRefinement:`Contract Layer 增强`,deleted:`(已删除)`,provisionalTitleTooltip:`Explore 临时标题——尚未提交`,estimatedCostTooltip:`按本地价格表估算——此提供方不原生上报成本。`,inferred:`推断`,statusValue:{success:`成功`,failed:`失败`,aborted:`已中止`},truncated:`显示前 {{shown}} 条,共 {{total}} 条匹配记录。`,colProvider:`提供商`,sortLabel:`排序`,sortRecency:`最近`,sortCost:`成本`,costUnknownLocalTooltip:`费用未知(本地引擎)。为连接添加费率以查看估算。`},p={title:`Desktop 分析`,refreshAria:`刷新分析数据`,failedToLoad:`加载分析数据失败:{{error}}`,totalCost:`总成本`,costToday:`今日 {{value}}`,costTodayUnavailable:`今日成本不可用`,totalJobs:`任务总数`,jobsToday:`今日 {{n}} 个`,successRate:`成功率`,acrossAllProjects:`所有项目汇总`,avgCostPerJob:`平均成本 / 任务`,periodAverage:`期间平均`,averageUnavailable:`成本遥测数据不完整,平均值不可用`,costOverTime:`跨项目成本走势`,noCostData:`此期间无成本数据`,projectComparison:`项目对比`,noProjects:`尚未注册任何项目。`,jobsCount_one:`{{count}} 个任务`,jobsCount_other:`{{count}} 个任务`,successPct:`成功率 {{pct}}%`,costByProject:`按项目统计成本`,includesEstimated:`~{{amount}} 估算`,includesEstimatedTooltip:`包含 {{amount}} 的价格表估算成本(codex/gemini),非提供商计费。`,includesEstimatedShort:`含估算`,timelineEstimatedTooltip:`某些天包含以 ~ 标记的价格表估算成本(codex/gemini)。`,estimatedBadge:`估算`,projectEstimatedTooltip:`此项目成本中的 {{amount}} 为价格表估算(codex/gemini),非提供商计费。`,statusBarEstimatedTooltip:`包含价格表估算成本(codex/gemini),非提供商计费。`,costUnavailable:`已记录调用,但成本遥测数据不可用。`,costUnavailableShort:`不可用`,costPartiallyUnavailable:`已知成本小计;{{count}} 次调用不可用。`},m={"7d":`最近 7 天`,"30d":`最近 30 天`,"90d":`最近 90 天`,all:`全部时间`,custom:`自定义范围`},h={title:`代理任务`,subtitle:`固定到此项目的 Agent Chat 轮次`,vsPrev:`对比上一周期`,turnsAndTokens:`{{turns}} 轮 · {{tokens}} tokens`,untitled:`未命名任务`,estimatedNote:`包含估算成本`},g={surfaces:e,periods:t,runs_one:n,runs_other:r,page:i,hero:a,providerCard:o,timeline:s,quickVsExplore:c,models:l,scatter:u,topTickets:d,table:f,export:{summaryCsv:`摘要 CSV`,rawCsv:`原始 CSV`,summaryJson:`摘要 JSON`,rawJson:`原始 JSON`,downloading:`正在下载…`,noData:`当前筛选条件下无数据`,failed:`导出失败`},desktop:p,windowLabels:m,agentMissions:h};export{h as agentMissions,g as default,p as desktop,a as hero,l as models,i as page,t as periods,o as providerCard,c as quickVsExplore,n as runs_one,r as runs_other,u as scatter,e as surfaces,f as table,s as timeline,d as topTickets,m as windowLabels};