specrails-desktop 2.57.1 → 2.58.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 (335) hide show
  1. package/README.md +1 -1
  2. package/cli/dist/args.js +10 -4
  3. package/cli/dist/help.js +1 -1
  4. package/client/dist/assets/{ActivityFeedPage-DdMNmVBk.js → ActivityFeedPage-BQGppIR0.js} +1 -1
  5. package/client/dist/assets/{AgentBrowserCapture-CeerUf--.js → AgentBrowserCapture-PI-cxyxi.js} +1 -1
  6. package/client/dist/assets/{AgentModeAnalyticsPane-BjGb-8rh.js → AgentModeAnalyticsPane-mQsOqdXx.js} +2 -2
  7. package/client/dist/assets/{AgentModeCodePane-8XRkQEo_.js → AgentModeCodePane-BL-vpmlY.js} +2 -2
  8. package/client/dist/assets/{AgentModeJobsPane-BN3dgJOA.js → AgentModeJobsPane-DR_06oqH.js} +1 -1
  9. package/client/dist/assets/AgentsPage-BKIKjm_1.js +118 -0
  10. package/client/dist/assets/{AnalyticsPage-CyfhYiBn.js → AnalyticsPage-069npRVo.js} +1 -1
  11. package/client/dist/assets/{CodePage-C2Nf-Q5W.js → CodePage-Alitorrv.js} +2 -2
  12. package/client/dist/assets/DesktopAnalyticsPage-qtWAPM47.js +1 -0
  13. package/client/dist/assets/{DocsDialog-Br3bczCp.js → DocsDialog-DwL6rgcT.js} +1 -1
  14. package/client/dist/assets/{DocsPage-BcDr2cBm.js → DocsPage-BA1hiJZ-.js} +1 -1
  15. package/client/dist/assets/{ExportDropdown-BVGKEgkd.js → ExportDropdown-BcMpvV89.js} +1 -1
  16. package/client/dist/assets/InteractiveJobComposer-B3H1YHr6.js +19 -0
  17. package/client/dist/assets/JobDetailModal-XZQ9eAAy.js +1 -0
  18. package/client/dist/assets/{JobDetailPage-vBbNeRuz.js → JobDetailPage-B-SIaq_q.js} +1 -1
  19. package/client/dist/assets/{JobsPage-CJCtPhIz.js → JobsPage-iQXAv2mx.js} +1 -1
  20. package/client/dist/assets/LoopBuilderPage-B_gbFAHn.js +1 -0
  21. package/client/dist/assets/LoopPreviewModal-je5pSCf-.js +1 -0
  22. package/client/dist/assets/LoopsPage-BZwcY5cu.js +2 -0
  23. package/client/dist/assets/{MinimizedChatsContext-D3QzgV0B.js → MinimizedChatsContext-CNx_0bZu.js} +1 -1
  24. package/client/dist/assets/{PluginsPage-DOpTV75p.js → PluginsPage-DFocnoHX.js} +2 -2
  25. package/client/dist/assets/{ProjectSettingsDialog-Dkwrn0z1.js → ProjectSettingsDialog-Bh3S6EBB.js} +1 -1
  26. package/client/dist/assets/{RepositoryDeliveries-Du2UCf1a.js → RepositoryDeliveries-BiwJuS8r.js} +1 -1
  27. package/client/dist/assets/{RepositoryScopeSelector-hPGZNRBm.js → RepositoryScopeSelector-C2mvWBQ6.js} +1 -1
  28. package/client/dist/assets/{ReviewPacketPage-DcOq-UTA.js → ReviewPacketPage-CrAf-WDy.js} +2 -2
  29. package/client/dist/assets/TemplatePreviewModal-C7DordpN.js +1 -0
  30. package/client/dist/assets/{TicketDetailModalContext-DAK-NoK6.js → TicketDetailModalContext-B-DySpKL.js} +1 -1
  31. package/client/dist/assets/{Trans-DEbgkuAY.js → Trans-D3AfDylf.js} +1 -1
  32. package/client/dist/assets/agentRuntime-BeUb3g9g.js +1 -0
  33. package/client/dist/assets/agentRuntime-Bg9tbmqm.js +1 -0
  34. package/client/dist/assets/agentRuntime-D-GJVGkj.js +1 -0
  35. package/client/dist/assets/agentRuntime-D2__CVI_.js +1 -0
  36. package/client/dist/assets/agentRuntime-D35dGVOP.js +1 -0
  37. package/client/dist/assets/agentRuntime-DGz_IqKW.js +1 -0
  38. package/client/dist/assets/agentRuntime-O1liDt6G.js +1 -0
  39. package/client/dist/assets/agentRuntime-hInH9Fzj.js +1 -0
  40. package/client/dist/assets/agentstudio-B2CTtQgZ.js +1 -0
  41. package/client/dist/assets/agentstudio-BWAKeGgB.js +1 -0
  42. package/client/dist/assets/{agentstudio-DR7doNBV.js → agentstudio-Cja8Sjcp.js} +1 -1
  43. package/client/dist/assets/agentstudio-DtfPcr99.js +1 -0
  44. package/client/dist/assets/agentstudio-QdAJIDef.js +1 -0
  45. package/client/dist/assets/agentstudio-X70BKf6u.js +1 -0
  46. package/client/dist/assets/agentstudio-fLXpRGIi.js +1 -0
  47. package/client/dist/assets/agentstudio-qXKqVnWS.js +1 -0
  48. package/client/dist/assets/{analytics-jzCkOec3.js → analytics-B1DIQd4m.js} +1 -1
  49. package/client/dist/assets/{analytics-CoEzWPx4.js → analytics-BAIZ9vE_.js} +1 -1
  50. package/client/dist/assets/{analytics-DjLlE7jS.js → analytics-BTqgmgBd.js} +1 -1
  51. package/client/dist/assets/analytics-BWynXPEm.js +1 -0
  52. package/client/dist/assets/{analytics-nZIjjtCc.js → analytics-DGcUsQ44.js} +1 -1
  53. package/client/dist/assets/{analytics-BNgZ1Nj7.js → analytics-GnSnpJ4W.js} +1 -1
  54. package/client/dist/assets/{analytics-DFh5lSOl.js → analytics-TWgYaoO0.js} +1 -1
  55. package/client/dist/assets/{analytics-DZp-DS2U.js → analytics-kJy6Tuko.js} +1 -1
  56. package/client/dist/assets/builder-C0FyvM83.js +1 -0
  57. package/client/dist/assets/builder-C1neIYGR.js +1 -0
  58. package/client/dist/assets/builder-CvnFm0im.js +1 -0
  59. package/client/dist/assets/builder-CzW5ovyI.js +1 -0
  60. package/client/dist/assets/builder-D06L7iPy.js +1 -0
  61. package/client/dist/assets/builder-DGETbtZj.js +1 -0
  62. package/client/dist/assets/builder-DXEJUlC0.js +1 -0
  63. package/client/dist/assets/builder-DyQperXU.js +1 -0
  64. package/client/dist/assets/common-BCK7c9Pv.js +1 -0
  65. package/client/dist/assets/common-C0BOdeNi.js +1 -0
  66. package/client/dist/assets/common-C4Yvvhp6.js +1 -0
  67. package/client/dist/assets/{common-BrlwEnL7.js → common-DmsclwjP.js} +1 -1
  68. package/client/dist/assets/common-DpLWwgI1.js +1 -0
  69. package/client/dist/assets/common-OCvl3c8t.js +1 -0
  70. package/client/dist/assets/common-c0aujEZC.js +1 -0
  71. package/client/dist/assets/common-od8WThlf.js +1 -0
  72. package/client/dist/assets/dashboard-B1ndRHuC.js +1 -0
  73. package/client/dist/assets/dashboard-BX7KXiqA.js +1 -0
  74. package/client/dist/assets/dashboard-B_BSNxcN.js +1 -0
  75. package/client/dist/assets/dashboard-CCeFN7-V.js +1 -0
  76. package/client/dist/assets/dashboard-CRl0WtFJ.js +1 -0
  77. package/client/dist/assets/dashboard-XGdQ5mjw.js +1 -0
  78. package/client/dist/assets/dashboard-_oltA6Jd.js +1 -0
  79. package/client/dist/assets/dashboard-bAuf5KVk.js +1 -0
  80. package/client/dist/assets/{formatDistanceToNow-Cc2u5FwQ.js → formatDistanceToNow-aBss1Nai.js} +1 -1
  81. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-BHm2U-w1.js → getTimezoneOffsetInMilliseconds-DOGj1Mfz.js} +1 -1
  82. package/client/dist/assets/index-BS7KCWkV.css +2 -0
  83. package/client/dist/assets/{index-Cxb288Rj.js → index-C4Mv6tV6.js} +32 -32
  84. package/client/dist/assets/{jira-api-DrGxiD9p.js → jira-api-BYbEPlkr.js} +1 -1
  85. package/client/dist/assets/{jobs-DSp9DoD_.js → jobs-6_-r75yC.js} +1 -1
  86. package/client/dist/assets/{jobs-C6qmvUAi.js → jobs-B1yqyId5.js} +1 -1
  87. package/client/dist/assets/{jobs-DoFaEl9g.js → jobs-BFuV7ttH.js} +1 -1
  88. package/client/dist/assets/{jobs-DTQO08nJ.js → jobs-BKa8LuwA.js} +1 -1
  89. package/client/dist/assets/{jobs-DrF8Do8s.js → jobs-BKiK-ZWh.js} +1 -1
  90. package/client/dist/assets/{jobs-DLHdDkHc.js → jobs-DmKV7b7d.js} +1 -1
  91. package/client/dist/assets/{jobs-C9j2PuwW.js → jobs-KG4Sn12X.js} +1 -1
  92. package/client/dist/assets/{jobs-Dpw6AEOP.js → jobs-pPv4KWjb.js} +1 -1
  93. package/client/dist/assets/loop-layout-BF8xMiNv.js +7 -0
  94. package/client/dist/assets/loops-B4_D-nbg.js +1 -0
  95. package/client/dist/assets/loops-BJDY9FTh.js +1 -0
  96. package/client/dist/assets/loops-BO3V8244.js +1 -0
  97. package/client/dist/assets/loops-C-hZK8pf.js +1 -0
  98. package/client/dist/assets/loops-CDOWZ0ci.js +1 -0
  99. package/client/dist/assets/loops-Dv849ckF.js +1 -0
  100. package/client/dist/assets/loops-Q9LIgGkq.js +1 -0
  101. package/client/dist/assets/loops-eUnCfLjC.js +1 -0
  102. package/client/dist/assets/{project-repositories-9Wzs0coQ.js → project-repositories-CSnfzUpg.js} +1 -1
  103. package/client/dist/assets/settings-3o4Ntzi5.js +1 -0
  104. package/client/dist/assets/settings-B97jlkwD.js +1 -0
  105. package/client/dist/assets/settings-BTaT_bsS.js +1 -0
  106. package/client/dist/assets/settings-CT8w7WiC.js +1 -0
  107. package/client/dist/assets/settings-Cvr8_tvh.js +1 -0
  108. package/client/dist/assets/settings-Dn1qgAC8.js +1 -0
  109. package/client/dist/assets/settings-EShDdg4J.js +1 -0
  110. package/client/dist/assets/settings-tfLhQZRN.js +1 -0
  111. package/client/dist/assets/{setup-Dwzt5nO1.js → setup-CBMu3tqH.js} +1 -1
  112. package/client/dist/assets/{setup-B5FHuxvB.js → setup-CPh-e6J2.js} +1 -1
  113. package/client/dist/assets/{setup-DpqzaEEA.js → setup-CRKLp_ke.js} +1 -1
  114. package/client/dist/assets/{setup-CROyqD5N.js → setup-Cy302v4J.js} +1 -1
  115. package/client/dist/assets/{setup-C9Fy9PKQ.js → setup-D681vTPf.js} +1 -1
  116. package/client/dist/assets/{setup-BihzXadx.js → setup-DYK0VBkE.js} +1 -1
  117. package/client/dist/assets/{setup-BtC6Hg4K.js → setup-KAuiIiVs.js} +1 -1
  118. package/client/dist/assets/{setup-zLEDnG7N.js → setup-OGX-oCfI.js} +1 -1
  119. package/client/dist/assets/{spending-T5GM7wpn.js → spending-HBSk-6jv.js} +1 -1
  120. package/client/dist/assets/{useDesktop-QogiN0zR.js → useDesktop-0unHDBJJ.js} +1 -1
  121. package/client/dist/assets/useRuntimeRuns-BN1rhyEm.js +1 -0
  122. package/client/dist/assets/{useSharedWebSocket-Dz-HI6De.js → useSharedWebSocket-BZMrX4jr.js} +2 -2
  123. package/client/dist/index.html +25 -25
  124. package/docs/agent-live-steering.md +16 -0
  125. package/docs/cli.md +7 -7
  126. package/docs/codex.md +2 -2
  127. package/docs/customizing.md +1 -1
  128. package/docs/gemini.md +1 -1
  129. package/docs/getting-started.md +1 -1
  130. package/docs/guide/de/integrations/7-local-engines.md +1 -1
  131. package/docs/guide/de/pipeline/1-rails-and-jobs.md +8 -6
  132. package/docs/guide/de/pipeline/2-the-job-detail-view.md +11 -2
  133. package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +2 -2
  134. package/docs/guide/de/pipeline/5-the-loop-builder.md +24 -5
  135. package/docs/guide/en/integrations/7-local-engines.md +1 -1
  136. package/docs/guide/en/pipeline/1-rails-and-jobs.md +8 -6
  137. package/docs/guide/en/pipeline/2-the-job-detail-view.md +11 -2
  138. package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +2 -2
  139. package/docs/guide/en/pipeline/5-the-loop-builder.md +34 -5
  140. package/docs/guide/en/settings/3-pipeline-telemetry-and-diagnostics.md +1 -1
  141. package/docs/guide/es/integrations/7-local-engines.md +1 -1
  142. package/docs/guide/es/pipeline/1-rails-and-jobs.md +8 -6
  143. package/docs/guide/es/pipeline/2-the-job-detail-view.md +11 -2
  144. package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +2 -2
  145. package/docs/guide/es/pipeline/5-the-loop-builder.md +30 -5
  146. package/docs/guide/es/settings/3-pipeline-telemetry-and-diagnostics.md +1 -2
  147. package/docs/guide/fr/integrations/7-local-engines.md +1 -1
  148. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +8 -6
  149. package/docs/guide/fr/pipeline/2-the-job-detail-view.md +11 -2
  150. package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +2 -2
  151. package/docs/guide/fr/pipeline/5-the-loop-builder.md +24 -5
  152. package/docs/guide/it/integrations/7-local-engines.md +1 -1
  153. package/docs/guide/it/pipeline/1-rails-and-jobs.md +8 -6
  154. package/docs/guide/it/pipeline/2-the-job-detail-view.md +11 -2
  155. package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +2 -2
  156. package/docs/guide/it/pipeline/5-the-loop-builder.md +24 -5
  157. package/docs/guide/ja/integrations/7-local-engines.md +1 -1
  158. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +8 -6
  159. package/docs/guide/ja/pipeline/2-the-job-detail-view.md +11 -2
  160. package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +2 -2
  161. package/docs/guide/ja/pipeline/5-the-loop-builder.md +24 -5
  162. package/docs/guide/pt/integrations/7-local-engines.md +1 -1
  163. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +8 -6
  164. package/docs/guide/pt/pipeline/2-the-job-detail-view.md +11 -2
  165. package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +2 -2
  166. package/docs/guide/pt/pipeline/5-the-loop-builder.md +24 -5
  167. package/docs/guide/zh/integrations/7-local-engines.md +1 -1
  168. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +8 -6
  169. package/docs/guide/zh/pipeline/2-the-job-detail-view.md +11 -2
  170. package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +2 -2
  171. package/docs/guide/zh/pipeline/5-the-loop-builder.md +24 -5
  172. package/docs/internals/api-reference.md +2 -2
  173. package/docs/internals/ci-performance.md +71 -0
  174. package/docs/internals/companion-rails-as-loops-contract.md +4 -3
  175. package/docs/internals/configuration.md +3 -3
  176. package/docs/internals/core-runtime-updates.md +3 -2
  177. package/docs/internals/interactive-jobs.md +2 -2
  178. package/docs/internals/loop-step-log-explorer.md +42 -0
  179. package/docs/internals/mission-rail-cards.md +1 -1
  180. package/docs/internals/operations-runbook.md +22 -0
  181. package/docs/internals/programmatic-agent-runtime.md +128 -7
  182. package/docs/internals/project-builder.md +35 -16
  183. package/docs/internals/source-map.md +48 -2
  184. package/docs/kimi.md +2 -2
  185. package/docs/local-providers.md +1 -1
  186. package/docs/running-pipelines.md +26 -18
  187. package/docs/tracking-cost.md +10 -1
  188. package/package.json +2 -1
  189. package/server/dist/core-compat.js +8 -3
  190. package/server/dist/db/migrations.js +101 -0
  191. package/server/dist/desktop-db.js +28 -0
  192. package/server/dist/desktop-router.js +2 -0
  193. package/server/dist/mcp/guide.js +6 -3
  194. package/server/dist/mcp/tools/jobs.js +14 -1
  195. package/server/dist/mcp/tools/loops.js +17 -8
  196. package/server/dist/mcp/tools/rails.js +3 -3
  197. package/server/dist/modules/agent-runtime/runtime/agent-runtime-bridge.js +295 -9
  198. package/server/dist/modules/agent-runtime/runtime/agent-runtime-controls-router.js +34 -1
  199. package/server/dist/modules/agent-runtime/runtime/agent-runtime-controls.js +203 -21
  200. package/server/dist/modules/agent-runtime/runtime/agent-runtime-effective-config.js +46 -1
  201. package/server/dist/modules/agent-runtime/runtime/agent-runtime-engines.js +10 -0
  202. package/server/dist/modules/agent-runtime/runtime/agent-runtime-loader.js +68 -3
  203. package/server/dist/modules/agent-runtime/runtime/agent-runtime-metrics.js +16 -8
  204. package/server/dist/modules/agent-runtime/runtime/agent-runtime-package-gc.js +81 -0
  205. package/server/dist/modules/agent-runtime/runtime/agent-runtime-package-lock.js +37 -0
  206. package/server/dist/modules/agent-runtime/runtime/agent-runtime-package.js +30 -24
  207. package/server/dist/modules/agent-runtime/runtime/agent-runtime-retention-host.js +87 -0
  208. package/server/dist/modules/agent-runtime/runtime/agent-runtime-retention-quarantine.js +231 -0
  209. package/server/dist/modules/agent-runtime/runtime/agent-runtime-retention-records.js +32 -0
  210. package/server/dist/modules/agent-runtime/runtime/agent-runtime-retention.js +102 -0
  211. package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings-router.js +12 -7
  212. package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings.js +57 -13
  213. package/server/dist/modules/agents/runtime/agent-catalog.js +32 -0
  214. package/server/dist/modules/agents/runtime/agent-refine-manager.js +12 -0
  215. package/server/dist/modules/agents/runtime/agent-role-descriptor.js +64 -0
  216. package/server/dist/modules/agents/runtime/profiles-router.js +26 -34
  217. package/server/dist/modules/builder/runtime/milestone-chain.js +121 -73
  218. package/server/dist/modules/delivery/runtime/definition-fork.js +158 -0
  219. package/server/dist/modules/delivery/runtime/delivery-evidence.js +56 -10
  220. package/server/dist/modules/delivery/runtime/isolated-settlement-reconstruction.js +99 -0
  221. package/server/dist/modules/delivery/runtime/isolated-settlement-store.js +53 -0
  222. package/server/dist/modules/delivery/runtime/multi-repo-execution-store.js +3 -1
  223. package/server/dist/modules/delivery/runtime/rail-isolated-launch.js +388 -203
  224. package/server/dist/modules/delivery/runtime/rail-launch-parser.js +3 -2
  225. package/server/dist/modules/delivery/runtime/rail-pr-store.js +6 -1
  226. package/server/dist/modules/delivery/runtime/rails-router.js +66 -10
  227. package/server/dist/modules/execution/runtime/queue-manager.js +11 -2
  228. package/server/dist/modules/loops/runtime/builtin-loops.js +70 -0
  229. package/server/dist/modules/loops/runtime/definition-cancellation.js +31 -0
  230. package/server/dist/modules/loops/runtime/legacy-launch-telemetry.js +78 -0
  231. package/server/dist/modules/loops/runtime/loop-command-catalog.js +13 -12
  232. package/server/dist/modules/loops/runtime/loop-compat.js +219 -0
  233. package/server/dist/modules/loops/runtime/loop-core-factory.js +42 -0
  234. package/server/dist/modules/loops/runtime/loop-definition-controls.js +48 -0
  235. package/server/dist/modules/loops/runtime/loop-definition-events.js +145 -0
  236. package/server/dist/modules/loops/runtime/loop-definition-recovery.js +106 -0
  237. package/server/dist/modules/loops/runtime/loop-definition-run.js +36 -0
  238. package/server/dist/modules/loops/runtime/loop-definition.js +246 -0
  239. package/server/dist/modules/loops/runtime/loop-effect.js +10 -1
  240. package/server/dist/modules/loops/runtime/loop-executors.js +60 -0
  241. package/server/dist/modules/loops/runtime/loop-factory.js +35 -15
  242. package/server/dist/modules/loops/runtime/loop-graph.js +84 -8
  243. package/server/dist/modules/loops/runtime/loop-migration.js +36 -0
  244. package/server/dist/modules/loops/runtime/loop-preview.js +10 -0
  245. package/server/dist/modules/loops/runtime/loop-run-manager.js +206 -13
  246. package/server/dist/modules/loops/runtime/loop-runs-store.js +271 -7
  247. package/server/dist/modules/loops/runtime/loop-templates.js +205 -45
  248. package/server/dist/modules/loops/runtime/loops-router.js +246 -29
  249. package/server/dist/modules/loops/runtime/loops-store.js +140 -20
  250. package/server/dist/modules/missions/runtime/agent-operator-prompt.js +14 -11
  251. package/server/dist/modules/specs/runtime/spec-addenda.js +28 -0
  252. package/server/dist/project-registry.js +85 -51
  253. package/server/dist/project-router-jobs.js +17 -6
  254. package/server/dist/project-router-loop-runs.js +200 -0
  255. package/server/dist/project-router-spending.js +17 -0
  256. package/server/dist/project-router.js +8 -6
  257. package/server/dist/schemas/agent-runtime.schema.json +93 -1
  258. package/server/dist/schemas/workflow-definition.schema.json +312 -0
  259. package/server/dist/vitest-setup.js +22 -0
  260. package/server/dist/worktree-overlay.js +1 -1
  261. package/client/dist/assets/AgentsPage-DfHWgP_x.js +0 -87
  262. package/client/dist/assets/DesktopAnalyticsPage-tc0p4jJW.js +0 -1
  263. package/client/dist/assets/InteractiveJobComposer-DFPpdg2D.js +0 -19
  264. package/client/dist/assets/JobDetailModal-BdOv-l-M.js +0 -1
  265. package/client/dist/assets/LoopBuilderPage-BemvUOxy.js +0 -7
  266. package/client/dist/assets/LoopPreviewModal-C6hNAeYN.js +0 -1
  267. package/client/dist/assets/LoopsPage-BZr0quvh.js +0 -1
  268. package/client/dist/assets/TemplatePreviewModal-Cejcquah.js +0 -1
  269. package/client/dist/assets/agentRuntime-BUimiX__.js +0 -1
  270. package/client/dist/assets/agentRuntime-BcN97sAB.js +0 -1
  271. package/client/dist/assets/agentRuntime-Ckyg-ahT.js +0 -1
  272. package/client/dist/assets/agentRuntime-DJCwyX4t.js +0 -1
  273. package/client/dist/assets/agentRuntime-DVzPJOl0.js +0 -1
  274. package/client/dist/assets/agentRuntime-V9AZTG3c.js +0 -1
  275. package/client/dist/assets/agentRuntime-bAAjw1vw.js +0 -1
  276. package/client/dist/assets/agentRuntime-v4qKAYH-.js +0 -1
  277. package/client/dist/assets/agentstudio-BNUth0uj.js +0 -1
  278. package/client/dist/assets/agentstudio-BNdB5hkr.js +0 -1
  279. package/client/dist/assets/agentstudio-C7-bt8FO.js +0 -1
  280. package/client/dist/assets/agentstudio-C8uNchpV.js +0 -1
  281. package/client/dist/assets/agentstudio-CKabyMlg.js +0 -1
  282. package/client/dist/assets/agentstudio-CN2pokQu.js +0 -1
  283. package/client/dist/assets/agentstudio-y2dVDXeM.js +0 -1
  284. package/client/dist/assets/analytics-BlypLLR6.js +0 -1
  285. package/client/dist/assets/builder-765NeYTp.js +0 -1
  286. package/client/dist/assets/builder-8MG3V6ea.js +0 -1
  287. package/client/dist/assets/builder-B-1UBs5K.js +0 -1
  288. package/client/dist/assets/builder-BTiGnPT0.js +0 -1
  289. package/client/dist/assets/builder-Cx9Rz-7u.js +0 -1
  290. package/client/dist/assets/builder-DKFMELBl.js +0 -1
  291. package/client/dist/assets/builder-OcmKrC0h.js +0 -1
  292. package/client/dist/assets/builder-P9qVBXFZ.js +0 -1
  293. package/client/dist/assets/common-B5AZNYMH.js +0 -1
  294. package/client/dist/assets/common-BFZ0c_vN.js +0 -1
  295. package/client/dist/assets/common-BttQx3z4.js +0 -1
  296. package/client/dist/assets/common-CM65k_-e.js +0 -1
  297. package/client/dist/assets/common-D4mvFFlu.js +0 -1
  298. package/client/dist/assets/common-TZ9Ny96S.js +0 -1
  299. package/client/dist/assets/common-nFpSF4GC.js +0 -1
  300. package/client/dist/assets/dashboard-B9uWNGO2.js +0 -1
  301. package/client/dist/assets/dashboard-BIwmO9wc.js +0 -1
  302. package/client/dist/assets/dashboard-BV4vOZkR.js +0 -1
  303. package/client/dist/assets/dashboard-Bf6MPVsM.js +0 -1
  304. package/client/dist/assets/dashboard-C8klWVvZ.js +0 -1
  305. package/client/dist/assets/dashboard-D1ORhPF0.js +0 -1
  306. package/client/dist/assets/dashboard-DSubvs9x.js +0 -1
  307. package/client/dist/assets/dashboard-px_vlRx_.js +0 -1
  308. package/client/dist/assets/index-C51x61Bz.css +0 -2
  309. package/client/dist/assets/loops-B7YpGizO.js +0 -1
  310. package/client/dist/assets/loops-BomD2J-h.js +0 -1
  311. package/client/dist/assets/loops-BrQHSQw3.js +0 -1
  312. package/client/dist/assets/loops-BvBwvTPA.js +0 -1
  313. package/client/dist/assets/loops-CODk6Slz.js +0 -1
  314. package/client/dist/assets/loops-DC6k-Ym-.js +0 -1
  315. package/client/dist/assets/loops-DSEg8-uY.js +0 -1
  316. package/client/dist/assets/loops-DhCoXD_v.js +0 -1
  317. package/client/dist/assets/settings-BsehKpty.js +0 -1
  318. package/client/dist/assets/settings-CQWob3SB.js +0 -1
  319. package/client/dist/assets/settings-CgCl0hzy.js +0 -1
  320. package/client/dist/assets/settings-DLRLd22L.js +0 -1
  321. package/client/dist/assets/settings-Dn5prAFl.js +0 -1
  322. package/client/dist/assets/settings-HZSu-K4l.js +0 -1
  323. package/client/dist/assets/settings-p4OVIyRh.js +0 -1
  324. package/client/dist/assets/settings-rddaldUp.js +0 -1
  325. package/client/dist/assets/useRuntimeRuns-Dqmz9fS9.js +0 -1
  326. package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +0 -84
  327. package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +0 -126
  328. package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +0 -114
  329. package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +0 -84
  330. package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +0 -84
  331. package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +0 -84
  332. package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +0 -84
  333. package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +0 -84
  334. package/server/dist/modules/loops/runtime/loop-templates-ported.js +0 -675
  335. /package/client/dist/assets/{LoopBuilderPage-DtxX27Jz.css → loop-layout-DtxX27Jz.css} +0 -0
@@ -0,0 +1 @@
1
+ var e=`Motor de agentes`,t=`Arquiteto, programador e revisor correm como fases separadas com verificação determinista entre elas. Escolha um fornecedor por função; tudo o resto tem um valor por defeito que funciona.`,n=`A carregar configurações…`,r=`Não foi possível carregar as configurações. Tente novamente antes de alterar.`,i=`Tentar novamente`,a=`Esta instalação do Core não inclui o motor de agentes. Atualize o Core antes de ativar; pode preparar as configurações enquanto está desativado.`,o=`Guardar configurações`,s=`A guardar…`,c=`Configurações guardadas`,l=`Não foi possível guardar as configurações.`,u=`Pausar para aprovação antes de concluir o fluxo`,d={title:`Fornecedores`,hint:`Os CLI usam a sessão existente. As API aceitam apenas o nome da variável de ambiente, nunca a chave. Em serviços locais, pode ficar vazio. Reatribua as funções antes de remover o fornecedor.`,entry:`Fornecedor {{index}}`,id:`ID do fornecedor`,kind:`Tipo de ligação`,cli:`CLI de programação instalado`,compatible:`Endpoint compatível com OpenAI`,command:`CLI de programação`,baseUrl:`URL base da API`,apiKeyEnv:`Variável de ambiente da chave (opcional)`,remove:`Remover fornecedor`,addCli:`Adicionar fornecedor CLI`,addLocal:`Adicionar fornecedor local / API`,show:`Mostrar ligações a fornecedores`,hide:`Ocultar ligações a fornecedores`,globalTitle:`Provedores de IA`,globalHint:`Dois tipos de provedor alimentam cada projeto: as CLIs de programação detectadas nesta máquina e os motores locais compatíveis com OpenAI que registares aqui. Atribui-os às fases do pipeline em Definições do projeto ▸ Motor de agentes. As alterações aplicam-se a novas execuções.`,label:`Nome de exibição (opcional)`,labelPlaceholder:`ex.: Máquina LAN`,defaultModel:`Modelo padrão`,defaultModelNone:`Sem padrão (primeiro descoberto)`,defaultModelPlaceholder:`ID do modelo ou alias personalizado`,customModel:`Alias personalizado…`,discoveredModels:`Modelos descobertos`,noModels:`Nenhum modelo descoberto ainda — teste a conexão.`,rates:`Tarifas (USD por 1M de tokens, opcional)`,ratesHint:`Os custos são exibidos como estimativas; deixe ambas vazias e o custo permanece desconhecido.`,inputRate:`Entrada por 1M`,outputRate:`Saída por 1M`,ratesInvalid:`Informe ambas as tarifas como números não negativos ou deixe as duas vazias.`,reasoningEffort:`O endpoint aceita esforço de raciocínio`,reasoningEffortHint:`Envia o campo reasoning_effort da OpenAI: o esforço configurado do papel em cada chamada, elevado a alto enquanto o arquiteto compacto escreve o plano. Deixe desligado a menos que o servidor o respeite.`,apiKeyEnvMissing:`{{name}} não está definida no processo do app. Defina-a no ambiente a partir do qual o app é iniciado.`,test:`Testar conexão`,testing:`Testando…`,testFailed:`Não foi possível testar a conexão.`,rename:`Renomear`,renameHint:`Renomear mantém as atribuições de papéis apontando para esta conexão.`,idLocked:`O id fica bloqueado após salvar. Use Renomear para alterá-lo.`,localBadge:`Motor local`,cliBadge:`CLI`,notDetected:`Não detectado nesta máquina`,unsaved:`Alterações não salvas`,empty:`Ainda não há conexões. Adicione um provedor local / API para começar.`,fixBeforeSave:`Corrija os campos destacados antes de salvar.`,status:{probing:`Verificando…`,reachable:`Acessível`,unauthorized:`Não autorizado`,unreachable:`Inacessível`,untested:`Nunca testado`},auth:{authenticated:`Sessão iniciada`,unauthenticated:`Sem sessão`,unknown:`Sessão desconhecida`},agentLoop:`Loop do agente`,agentLoopHint:`como o pipeline implement conduz este modelo`,agentLoop_compact:`Compacto`,agentLoop_compactHint:`Micropassos conduzidos pelo app com saída estruturada. Recomendado para modelos abaixo de ~30B.`,agentLoop_free:`Livre`,agentLoop_freeHint:`Um loop agêntico por papel, como um provedor CLI. Exige um modelo forte.`,contextWindow:`Janela de contexto (tokens)`,contextWindowHint:`Iguale ao tamanho de contexto do servidor (n_ctx / num_ctx). Usado para compactar resultados antigos de ferramentas antes de encher a janela. Padrão 32768.`,maxOutput:`Orçamento de saída por turno (tokens)`,maxOutputHint:`max_tokens de um turno de ferramentas; um turno cortado é repetido uma vez com o dobro. Conta dentro da janela de contexto, por isso é sempre limitado ao espaço restante — aumente-o se o modelo raciocina em privado (o thinking consome-o). Predefinição 8192.`,reasoningEffortRailHint:`Desligado: o seletor de esforço de raciocínio não aparece no cabeçalho do rail para este motor.`,presetTitle:`Configuração rápida`,presetSmallModel:`Recomendado para modelos pequenos`,presetSmallModelApplied:`Predefinição para modelos pequenos aplicada`,presetSmallModelHint:`Ativa o loop Compacto, encaminha o esforço de raciocínio e fixa uma janela de contexto de 32k: a combinação validada com modelos de 7–14B. Cada campo continua editável.`,cliGroup:`Ferramentas CLI`,cliGroupHint:`Detectadas nesta máquina: usam o seu próprio início de sessão, nada a configurar.`,localGroup:`Motores locais`,localGroupHint:`Endpoints compatíveis com OpenAI (llama.cpp, Ollama, vLLM, LM Studio…) acessíveis a partir desta app.`,models_one:`{{count}} modelo`,models_other:`{{count}} modelos`,expand:`Mostrar definições`,collapse:`Ocultar definições`,overflow:`Mais ações`,addLocalHero:`Adicionar motor local`,emptyLocalPitch:`Ainda não há motores locais. Aponta a app para um endpoint compatível com OpenAI para executar o pipeline no teu próprio hardware: o custo fica sob o teu controlo e nada sai da tua rede.`,defaultsGroup:`Predefinições do provedor`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`Arquiteto`,developer:`Desenvolvedor`,reviewer:`Revisor`,fixer:`Corretor`,verify:`Verificação`,archive:`Conclusão`},m={title:`Atribuição de funções`,hint:`Cada papel pode usar um fornecedor e um modelo diferentes. Conexões: Definições gerais → Provedores de IA. Limite padrão: {{turns}} turnos por agente.`,provider:`Fornecedor`,model:`Modelo`,modelPlaceholder:`ID do modelo ou padrão do CLI`,maxTurns:`Máximo de turnos (por defeito {{turns}})`,defaultModel:`Por defeito ({{model}})`,thinking:`Raciocínio oculto`,thinking_off:`Desligado`,thinking_on:`Ligado`,thinkingHint:`Desligado por defeito: o raciocínio oculto gasta o orçamento de saída e minutos por turno num ciclo guiado pelo host. Ligue-o para um papel que beneficie de deliberação (enviado como chat_template_kwargs.enable_thinking; os endpoints que não o conhecem ignoram-no).`},h={title:`Limites do fluxo`,hint:`Os campos vazios usam os valores do Core: {{attempts}} tentativas de correção e {{minutes}} minutos por passo de papel. Em motores locais o timeout aplica-se a cada unidade de trabalho (um grupo de tarefas, um artefacto, uma revisão) — 45 minutos por defeito — mais um watchdog de inatividade de 20 minutos; um passo que esgota o tempo bloqueia a execução e pode ser retomado a partir do próximo grupo aberto. Os limites de tokens e USD são opcionais; os de USD exigem Claude em todos os papéis.`,maxAttempts:`Máximo de tentativas do programador (por defeito {{attempts}})`,timeoutMinutes:`Timeout em minutos (por defeito {{minutes}}; motores locais 45 por grupo de tarefas)`,maxTokens:`Máximo de tokens`,maxCostUsd:`Custo máximo (USD)`,unlimited:`Sem limite`},g={title:`Comandos de verificação`,hint:`Opcional. Correm quando o programador termina e as falhas voltam ao programador. Com a lista vazia, o arquiteto propõe as verificações do próprio projeto em cada execução; os repositórios sem verificação automática são revistos na mesma.`,detect:`Detetar verificações do projeto`,detecting:`A detetar…`,detected:`Preenchido com as verificações que este projeto já define.`,nothingDetected:`Não foi encontrado nenhum comando de teste, verificação de tipos ou build. Não há problema: o arquiteto propõe verificações em cada execução quando possível.`,detectFailed:`Não foi possível inspecionar os repositórios do projeto.`,repository:`Repositório`,command:`Comando`,reason:`Detetado em {{reason}}`,remove:`Remover`,add:`Adicionar comando`,invalidLine:`Comando de verificação vazio ou com aspas por fechar: {{line}}`,label:`Nome da verificação (opcional)`,moveUp:`Subir`,moveDown:`Descer`},_={title:`Execuções guardadas`,refresh:`Atualizar`,hint:`Continua no worktree original com o âmbito e as configurações guardadas; o progresso aparece no registo desse trabalho. Não publica nem reinicia a entrega do Desktop. As execuções ativas param a partir dos controlos do trabalho.`,empty:`Não há execuções guardadas.`,loadFailed:`Não foi possível carregar as execuções.`,actionFailed:`Não foi possível atualizar esta execução.`,phase:`Próxima fase: {{phase}}`,approve:`Aprovar conclusão`,recover:`Recuperar fase interrompida`,resume:`Retomar`,cancel:`Cancelar continuação`,status:{running:`A continuar…`,succeeded:`Concluído`,failed:`Falhou`,blocked:`Bloqueado`,paused:`Em pausa`,cancelled:`Cancelado`,interrupted:`Interrompido`,unavailable:`Indisponível`,expired:`Expirado`},question:`O arquiteto pergunta:`,answerLabel:`A sua resposta`,answerPlaceholder:`Responda à pergunta; o arquiteto continua com ela.`,answer:`Responder e retomar`,viewLog:`Ver log do job`,implementation:`Implementação`,preserveProgress:`Continue a partir da fase indicada, preservando o trabalho e as configurações guardadas.`,reviewDelivery:`Implementação concluída. Reveja o resultado no log antes da entrega; esta continuação não o publicou.`,prepareDelivery:`Preparar entrega`,dismiss:`Descartar`,selectRecovery:`Selecione as tentativas interrompidas a recuperar`},v={architect:`Lê o código e escreve a proposta, o design, as tarefas e a spec. Só leitura.`,developer:`Implementa as tarefas com testes. Pode editar ficheiros e executar comandos na sandbox do CLI.`,reviewer:`Confere o resultado com a spec e a evidência de verificação. Só leitura.`},y={title:`Limite de revisão`,hint:`Campos vazios usam o limite do Core. Os valores só podem elevá-lo: pontuação geral de pelo menos {{score}}, segurança de pelo menos {{security}}, outros aspetos de pelo menos {{aspect}}.`,minScore:`Pontuação geral mínima (padrão {{score}})`,aspects:{type_correctness:`Correção de tipos (padrão {{score}})`,pattern_adherence:`Aderência a padrões (padrão {{score}})`,test_coverage:`Cobertura de testes (padrão {{score}})`,security:`Segurança (padrão {{score}})`,architectural_alignment:`Alinhamento arquitetural (padrão {{score}})`}},b={title:`Confiança do arquiteto`,hint:`Após uma passagem de investigação autónoma, um design ainda com baixa confiança pausa com a pergunta do arquiteto ou prossegue com suposições declaradas.`,onLowConfidence:`Com baixa confiança`,ask:`Perguntar (pausar com a pergunta)`,proceed:`Prosseguir com suposições declaradas`},x={title:`Consumo e tempo`,hint:`Inclui correções e chamadas falhadas. O tempo dos agentes inclui as ferramentas. Os tokens em cache fazem parte dos tokens de entrada.`,unknown:`Indisponível`,duration:`Tempo de execução`,agentTime:`Tempo dos agentes`,cost:`Custo reportado`,providerCalls:`Chamadas a agentes`,toolCalls:`Chamadas a ferramentas`,input:`Tokens de entrada`,output:`Tokens de saída`,uncached:`Entrada sem cache`,cacheRead:`Leituras da cache`,cacheWrite:`Escritas na cache`,partial:`Algumas tentativas não têm medições detalhadas.`,phases:`Consumo por fase`,phase:`Fase`,attempts:`Tentativas`},S={title:`Prompts dos papéis dos agentes`,description:`Veja e edite as instruções de cada papel. São partilhadas por todos os projetos e fornecedores; as alterações aplicam-se a novos trabalhos. Os trabalhos retomados mantêm os prompts originais.`,definition:`Definição de {{role}}`,default:`Predefinição de fábrica`,custom:`Personalizado`,restore:`Restaurar predefinição`,contracts:`O contexto da spec, o fluxo OpenSpec e o formato de resposta obrigatório são adicionados automaticamente e não são editados aqui.`,invalid:`Cada definição deve conter entre 1 e 20.000 caracteres, com texto não vazio e sem bytes nulos.`,saved:`Prompts dos papéis guardados`,unsaved:`Alterações por guardar`,discard:`Descartar alterações`,save:`Guardar prompts`,fixerHint:`Usado apenas em rondas de correção: após uma verificação falhada ou uma revisão rejeitada. Corre no motor do developer salvo se Definições ▸ Motor dos agentes ▸ Corretor indicar um próprio. Um fornecedor CLI que retoma a sessão do developer recebe o seguimento curto de correção; a definição aplica-se sempre que arranca uma sessão nova (motores locais, motor corretor, sessão perdida).`},C={title:`Eficiência da implementação`,scope:`Aplica-se a novas execuções. As execuções guardadas mantêm a configuração e o motor originais.`,effort:`Esforço de raciocínio`,providerDefault:`Padrão do fornecedor`,unconfirmed:`Não confirmado`,unknownSupport:`O suporte deste modelo e transporte não está confirmado.`,escalation:`Permitir um nível superior com o mesmo fornecedor`,baseRequired:`Selecione primeiro um modelo base explícito.`,escalationModel:`Modelo de nível superior`,triggers:{architect:`Apenas a investigação aprofundada existente pode selecionar este nível.`,developer:`Após dois candidatos falhados, a próxima tentativa permitida pode selecionar este nível.`,reviewer:`Apenas para reparar respostas inválidas; rejeitar código não ativa este nível.`,fixer:`Só uma rodada de correção pode alcançar este nível; as primeiras passagens nunca executam o corretor.`},contextMode:`Contexto do repositório`,reviewMode:`Revisão de correções`,planning:`Profundidade do planeamento`,adaptive:`Adaptativo`,full:`Completo`,developerChecks:`Aceitar verificações adicionais propostas pelo programador`,concurrency:`Máximo de verificações simultâneas`,concurrencyHint:`Padrão: 1. Apenas verificações independentes declaradas pelo anfitrião em repositórios diferentes podem executar em conjunto. Sem reutilização por padrão.`,checkCapabilities:`Verificar compatibilidade dos modelos`,capabilitiesFailed:`Compatibilidade não confirmada. Atualize Core ou mantenha os padrões do fornecedor.`},w={title:`Evidências de verificação`,acceptance:`Aceitação técnica`,acceptanceStatus:{pending:`Pendente`,validated:`Validado`,"with-exceptions":`Com exceções`,blocked:`Bloqueado`},calls:`Chamadas aos agentes`,executed:`Verificações executadas`,reused:`Verificações reutilizadas`,unknown:`Indisponível`,unavailable:`Evidência indisponível. O resultado guardado não prova a validade atual.`,current:`Candidato e plano atuais`,historical:`Resultado histórico`,moreChecks:`Mais verificações`,output:`Saída da verificação`,empty:`Sem saída`,truncated:`Página limitada ou captura truncada.`,nextPage:`Página seguinte`,status:{passed:`Aprovado`,failed:`Falhou`,cancelled:`Cancelado`,interrupted:`Interrompido`},disposition:{executed:`Executado`,reused:`Reutilizado`,"not-run":`Não executado`},origin:`Origem`,origins:{host:`Anfitrião`,architect:`Arquiteto`,developer:`Programador`,"frozen-runtime-config":`Configuração guardada`,"project-role":`Papel do projeto`,default:`Padrão`,"explicit-launch-override":`Fornecedor escolhido para esta execução`},reuseDisabled:`Reutilização desativada para esta verificação.`,reuseConfirmed:`Reutilizado após confirmar entradas e ferramentas idênticas.`,inputsChanged:`As entradas mudaram durante a verificação; resultado invalidado.`,reuseUnproven:`Sem resultado atual com entradas idênticas comprovadas; executado novamente.`,original:`Execução original`,requested:`Solicitado`,reported:`Reportado`},T={title:`Papéis do loop`,hint:`Motores dos papéis do loop quando um rail é lançado com o motor «Papéis». Os papéis do pipeline acima (architect, developer, reviewer) já vêm desta configuração do runtime.`,verifier:`Verificador`,verifierHint:`Todos os passos de IA do loop fora do core: verify, fix e passos de IA personalizados.`,decider:`Decisor`,deciderHint:`O Loop Decider que lê o veredicto e escolhe o passo seguinte — um modelo barato e rápido é a escolha natural.`,inherit:`Herdar o principal`,model:`Modelo`,effort:`Esforço de raciocínio`,disabled:`O runtime de agentes está desativado — os rails lançados com o motor «Papéis» são recusados até ser ativado.`,saveFailed:`Não foi possível guardar os papéis do loop.`},E={title:`Pipeline de implementação`,explainer:`Estas fases executam nesta ordem em cada implementação. Quando o motor do rail é "{{roles}}", cada fase usa o motor configurado abaixo — fornecedor, modelo e esforço diferentes por fase. Escolher um motor concreto no rail executa todas as fases nesse motor.`,host:`Host`,noCommand:`sem comando`,inherits:`Herda o principal`,inheritsDeveloper:`Herda do desenvolvedor`,open:`Abrir`,collapse:`Recolher`,groups:{core:{title:`Pipeline principal`,hint:`Executa dentro de cada implementação: planear, construir, verificar, corrigir, rever.`},loop:{title:`Passos do loop`,hint:`Passos de IA do loop do rail que envolve a execução (verificar → decidir → corrigir) e dos loops personalizados; herdam o motor principal se não forem definidos.`,chip:`loop do rail`}},phases:{architect:{name:`Arquiteto`,purpose:`Lê o código e escreve a proposta, o design e as tarefas.`},developer:{name:`Desenvolvedor`,purpose:`Implementa as tarefas com testes.`},verification:{name:`Verificação`,purpose:`O host executa as suas verificações; as falhas voltam ao desenvolvedor.`},fixer:{name:`Corretor`,purpose:`Corrige o que a verificação ou a revisão rejeitam; herda do desenvolvedor se não for configurado.`},reviewer:{name:`Revisor`,purpose:`Confere o resultado com a spec e as evidências.`},verifier:{name:`Verificador`,purpose:`Passos de IA verify, fix e personalizados do loop.`},decider:{name:`Decisor`,purpose:`Lê o veredito e escolhe o próximo passo do loop.`}}},D={title:`Motor do corretor`,inherit:`Herdar desenvolvedor`,own:`Motor próprio`,hint:`Só é executado em rodadas de correção: após uma verificação falha ou uma revisão rejeitada; as primeiras passagens continuam no desenvolvedor. Um modelo mais forte ou na nuvem aqui compensa quando o desenvolvedor é um modelo local barato.`},O={title:`Guarda-corpos`,intro:`Regras de processo que o host aplica em torno dos modelos locais para que um modelo pequeno não descarrile. Todas ativas por padrão; desative uma apenas para ajustar o processo. Provedores CLI nunca são afetados.`,unsupported:`Esta instalação do Core não expõe guarda-corpos configuráveis. Atualize o Core para ajustá-los; as regras integradas continuam a aplicar-se.`,active:`{{on}} de {{total}} ativos`,reset:`Restaurar padrões`,phases:{architect:`Arquiteto`,developer:`Desenvolvedor`,host:`Host`},unknown:`Um guarda-corpo adicionado por um Core mais recente; este app ainda não tem descrição para ele.`,items:{"plan-validation":{title:`Plano de tarefas validado`,description:`Rejeita planos que apontam para openspec/, listam nomes de arquivo soltos como tarefas, têm poucas tarefas/grupos para a spec ou deixam critérios de aceitação descobertos; o arquiteto tenta novamente.`,why:`Um plano vago ou incompleto é a razão nº 1 para um modelo desenvolvedor pequeno escrever stubs.`},"genuine-blocking-question":{title:`Apenas perguntas bloqueantes reais`,description:`O arquiteto só pode pausar a execução com uma pergunta real terminada em '?', nunca com texto de exemplo copiado.`,why:`Modelos pequenos repetem os marcadores do prompt e bloqueariam todas as execuções.`},"plan-language-hint":{title:`Planejar na linguagem do repositório`,description:`Informa ao arquiteto a linguagem principal para que os nomes de arquivo das tarefas tenham a extensão correta.`,why:`Um plano JS num repo TypeScript torna impossível marcar as tarefas.`},"frozen-plan-writes":{title:`Artefatos de planejamento estão congelados`,description:`O desenvolvedor não pode escrever em openspec/; o plano pertence ao host.`,why:`Modelos 'implementam' editando o plano em vez do código.`},"primary-language":{title:`Lembrete da linguagem principal`,description:`Cada grupo de tarefas recebe a linguagem principal do repositório; arquivos novos devem usá-la.`,why:`Evita uma segunda implementação em outra linguagem.`},"duplicate-sibling":{title:`Sem módulos gêmeos entre linguagens`,description:`Recusa board.js quando board.ts já existe; estenda o módulo existente.`,why:`Gêmeos compilam ambos e os testes importam o errado.`},"one-test-per-module":{title:`Um arquivo de teste por módulo`,description:`Recusa board.tick.test.ts quando board.test.ts existe; estenda-o em vez disso.`,why:`Senão cada passada de correção adiciona uma suíte nova.`},"empty-write":{title:`Sem sobrescritas vazias`,description:`Uma escrita vazia sobre um arquivo com conteúdo é recusada; escreva o conteúdo completo ou aplique um patch.`,why:`Uma passada de 'limpeza' certa vez deixou index.ts com 0 linhas.`},"evidence-gated-ticking":{title:`Evidência antes de marcar uma tarefa`,description:`Uma tarefa que nomeia arquivos só está concluída quando eles existem e não são stubs (extensões irmãs aceitas).`,why:`Sem isso, 'concluído' é só uma afirmação e a verificação roda contra nada.`},"inventory-retry":{title:`Tentar de novo com o inventário real`,description:`Quando o modelo desiste alegando que o repo está vazio sem estar, tenta uma vez mais com a lista de arquivos.`,why:`Segunda chance barata em vez de um passo falhado.`},"synthetic-corrections":{title:`Transformar feedback em tarefas`,description:`Quando todas as tarefas estão marcadas mas review/verify falharam, o feedback vira tarefas de correção concretas.`,why:`Senão o desenvolvedor responde 'já está feito' e nada muda.`},"silent-group-closure":{title:`Fechar grupos silenciosos, manter seus arquivos`,description:`Um grupo cujo modelo para de responder é fechado creditando os arquivos que escreveu e deixando suas tarefas abertas, em vez de falhar a execução.`,why:`Um modelo 9B escreveu cinco módulos, silenciou e toda a execução falhou.`},"environment-repair":{title:`O host repara o ambiente`,description:`Dependências ou ferramentas de teste ausentes (npm install, ts-jest, @types/jest, módulos de config do Jest) são instaladas pelo host e a verificação roda de novo uma vez.`,why:`O modelo não consegue consertar o ambiente e gasta correções tentando.`},"lockfile-repair":{title:`Descartar lockfiles escritos à mão`,description:`Um package-lock.json inventado pelo modelo (EINTEGRITY/ETARGET) é removido e a instalação repetida uma vez.`,why:`Hashes inventados nunca instalam.`},"verify-idle-timeout":{title:`Parar testes travados`,description:`Um comando de verificação sem saída por 5 minutos é interrompido e reportado como provável travamento (última saída incluída).`,why:`Senão um laço while num teste segura a execução até o limite de 15 minutos.`},"verify-per-group":{title:`Verificar após cada grupo`,description:`Executa o comando de teste do repositório logo após cada grupo de tarefas; uma falha recebe uma ronda de correção imediata com o contexto do grupo ainda fresco.`,why:`Cinco suites partidas no fim são muito mais difíceis de corrigir do que uma de cada vez.`},"test-reachability":{title:`Todo teste novo tem de correr mesmo`,description:"Um ficheiro de teste escrito pelo developer que o comando de teste do repositório nunca executa (um script `test` enumerativo que omite o ficheiro novo) falha a verificação com o ficheiro exato, primeiro ao nível do grupo e de novo na verificação do host.",why:`Uma suite de 622 linhas com seis casos a falhar chegou verde porque nada a executou.`},"exit-code-honesty":{title:`Desconfiar de um exit 0 que reporta falhas`,description:'Um comando de verificação que sai com 0 enquanto a saída imprime falhas (linhas `FAIL:`, "3 failed", um AssertionError) é tratado como FALHADO e entregue ao corretor com o harness apontado como o defeito.',why:`Um runner de testes caseiro que nunca definia um exit code diferente de zero entregou três testes vermelhos como verdes.`}}},k=`Alterações não guardadas`,A={title:`Funções personalizadas`,hint:`Defina instruções reutilizáveis e permissões explícitas para as funções do fluxo.`,unsupported:`Atualize o Core para editar funções personalizadas.`,remove:`Remover {{id}}`,access:`Acesso ao código`,read:`Somente leitura`,write:`Leitura e escrita`,artifacts:`Acesso aos artefatos OpenSpec`,none:`Nenhum`,tasks:`Somente caixas de tarefas`,all:`Todos os artefatos da alteração`,skill:`Skill do OpenSpec`,noSkill:`Nenhuma skill associada`,prompt:`Instruções da função`,id:`ID da função`,add:`Adicionar função`,invalidId:`Use um ID único em minúsculas que comece com uma letra, com até 64 letras, números ou hífens. Os IDs integrados são reservados.`,escalationHint:`Somente uma correção permitida do protocolo pode usar o modelo de escalonamento. Nenhuma tentativa extra é adicionada.`},j={title:`Instruções de execução`,hint:`O Core guarda estas instruções para o próximo turno de agente compatível. O envio não responde a perguntas nem concede aprovações.`,label:`Instruções adicionais`,send:`Enviar instruções`,accepted:`Recebidas pelo Core; aguardando utilização.`,pending:`Aguardando um turno de agente`,consumed:`Utilizadas por um agente`,counts:`Pendentes: {{pending}} · Utilizadas: {{consumed}}`,failed:`Não foi possível enviar as instruções. Tente novamente para confirmar a mesma mensagem.`,unavailable:`Os detalhes dos recibos estão indisponíveis.`,unreported:`Esta versão do Core não informa a utilização.`,truncated:`São apresentados apenas os recibos recentes e as mensagens pendentes.`},M={title:`Valores padrão do papel do Core`,hint:`Estes valores do arquivo aplicam-se a novos workflows. As configurações explícitas do projeto têm prioridade; as execuções salvas mantêm as configurações fixadas.`,invalid:`Corrija o cabeçalho YAML no editor antes de alterar os campos do papel.`,escalationEffort:`Esforço de raciocínio do modelo superior`},N={title:`Retenção do histórico`,description:`Elimine históricos expirados e versões do Core sem uso. Históricos eliminados não podem ser retomados nem bifurcados. Execuções ativas ou recuperáveis e entregas pendentes ficam protegidas; registos de trabalhos e custos são mantidos.`,forever:`Manter o histórico indefinidamente`,days:`Dias de retenção`,save:`Guardar retenção`,preview:`Pré-visualizar limpeza`,collect:`Eliminar histórico expirado`,previewSummary:`Elegíveis: {{runs}} históricos e {{packages}} versões do Core sem uso.`,collectedSummary:`Expirados: {{runs}} históricos. Removidas: {{packages}} versões do Core sem uso.`,more:`{{count}} execuções adicionais.`,failed:`Não foi possível consultar ou atualizar a retenção.`,expired:`Este histórico expirou segundo a política do projeto. O registo do trabalho e a contabilidade continuam disponíveis.`,loading:`A carregar a política…`,states:{protected:`Mantido`,eligible:`Elegível`,expired:`Expirado`,cleanup_pending:`Limpeza pendente`,busy:`Em uso`,error:`Falha na inspeção`},reasons:{disabled:`Retenção indefinida`,recoverable:`Recuperação ainda disponível`,active:`Execução ativa`,human_pending:`A aguardar resposta humana`,interrupted_writes:`Escritas interrompidas por rever`,delivery_pending:`Entrega pendente`,fork_pending:`Existe uma bifurcação dependente`,unknown_terminal_time:`Data de conclusão desconhecida`,within_retention:`Dentro do período de retenção`}},P={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,customRoles:A,steering:j,studioRole:M,retention:N};export{m as agents,u as approvalBeforeArchive,b as architect,f as cliNames,A as customRoles,P 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,N as retention,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,j as steering,M as studioRole,e as title,a as unavailable,k as unsavedChanges,g as verification};
@@ -0,0 +1 @@
1
+ var e=`Motore degli agenti`,t=`Architetto, sviluppatore e revisore girano come fasi separate con verifica deterministica in mezzo. Scegli un fornitore per ruolo; tutto il resto ha un valore predefinito funzionante.`,n=`Caricamento delle impostazioni…`,r=`Impossibile caricare le impostazioni. Riprova prima di modificarle.`,i=`Riprova`,a=`Questa installazione di Core non include il motore degli agenti. Aggiorna Core prima di attivarlo; puoi preparare le impostazioni mentre è disattivato.`,o=`Salva impostazioni`,s=`Salvataggio…`,c=`Impostazioni salvate`,l=`Impossibile salvare le impostazioni.`,u=`Richiedi approvazione prima di completare il flusso`,d={title:`Fornitori`,hint:`I CLI usano l’accesso esistente. Le API accettano solo il nome di una variabile d’ambiente, mai la chiave. Per servizi locali può restare vuoto. Riassegna i ruoli prima di rimuovere il fornitore.`,entry:`Fornitore {{index}}`,id:`ID del fornitore`,kind:`Tipo di connessione`,cli:`CLI di programmazione installato`,compatible:`Endpoint compatibile con OpenAI`,command:`CLI di programmazione`,baseUrl:`URL base dell’API`,apiKeyEnv:`Variabile d’ambiente della chiave (facoltativa)`,remove:`Rimuovi fornitore`,addCli:`Aggiungi fornitore CLI`,addLocal:`Aggiungi fornitore locale / API`,show:`Mostra connessioni dei fornitori`,hide:`Nascondi connessioni dei fornitori`,globalTitle:`Provider di IA`,globalHint:`Due tipi di provider alimentano ogni progetto: le CLI di programmazione rilevate su questa macchina e i motori locali compatibili con OpenAI che registri qui. Assegnali alle fasi della pipeline in Impostazioni del progetto ▸ Motore degli agenti. Le modifiche si applicano alle nuove esecuzioni.`,label:`Nome visualizzato (facoltativo)`,labelPlaceholder:`es. Macchina LAN`,defaultModel:`Modello predefinito`,defaultModelNone:`Nessun predefinito (primo rilevato)`,defaultModelPlaceholder:`ID del modello o alias personalizzato`,customModel:`Alias personalizzato…`,discoveredModels:`Modelli rilevati`,noModels:`Nessun modello rilevato finora: prova la connessione.`,rates:`Tariffe (USD per 1M di token, facoltativo)`,ratesHint:`I costi sono mostrati come stime; lascia entrambe vuote e il costo resta sconosciuto.`,inputRate:`Input per 1M`,outputRate:`Output per 1M`,ratesInvalid:`Inserisci entrambe le tariffe come numeri non negativi, oppure lasciale entrambe vuote.`,reasoningEffort:`L'endpoint accetta lo sforzo di ragionamento`,reasoningEffortHint:`Invia il campo reasoning_effort di OpenAI: lo sforzo configurato del ruolo a ogni chiamata, alzato ad alto mentre l'architetto compatto scrive il piano. Lascialo disattivo se il server non lo rispetta.`,apiKeyEnvMissing:`{{name}} non è impostata nel processo dell'app. Impostala nell'ambiente da cui viene avviata l'app.`,test:`Prova connessione`,testing:`Prova in corso…`,testFailed:`Impossibile provare la connessione.`,rename:`Rinomina`,renameHint:`Rinominando, le assegnazioni dei ruoli continuano a puntare a questa connessione.`,idLocked:`L'id è bloccato dopo il salvataggio. Usa Rinomina per cambiarlo.`,localBadge:`Motore locale`,cliBadge:`CLI`,notDetected:`Non rilevato su questa macchina`,unsaved:`Modifiche non salvate`,empty:`Nessuna connessione ancora. Aggiungi un provider locale / API per iniziare.`,fixBeforeSave:`Correggi i campi evidenziati prima di salvare.`,status:{probing:`Verifica…`,reachable:`Raggiungibile`,unauthorized:`Non autorizzato`,unreachable:`Non raggiungibile`,untested:`Mai provato`},auth:{authenticated:`Accesso effettuato`,unauthenticated:`Accesso non effettuato`,unknown:`Accesso sconosciuto`},agentLoop:`Loop dell'agente`,agentLoopHint:`come la pipeline implement guida questo modello`,agentLoop_compact:`Compatto`,agentLoop_compactHint:`Micro-passi guidati dall'app con output strutturato. Consigliato per modelli sotto ~30B.`,agentLoop_free:`Libero`,agentLoop_freeHint:`Un loop agentico per ruolo, come un provider CLI. Richiede un modello potente.`,contextWindow:`Finestra di contesto (token)`,contextWindowHint:`Allineala alla dimensione di contesto del server (n_ctx / num_ctx). Serve a compattare i vecchi risultati degli strumenti prima di riempire la finestra. Predefinito 32768.`,maxOutput:`Budget di output per turno (token)`,maxOutputHint:`max_tokens di un turno con strumenti; un turno troncato viene ritentato una volta al doppio. Conta dentro la finestra di contesto, quindi è sempre limitato allo spazio rimanente — alzalo se il modello ragiona in privato (il thinking lo consuma). Predefinito 8192.`,reasoningEffortRailHint:`Disattivo: il selettore dello sforzo di ragionamento non compare nell'intestazione del rail per questo motore.`,presetTitle:`Configurazione rapida`,presetSmallModel:`Consigliato per modelli piccoli`,presetSmallModelApplied:`Preset per modelli piccoli applicato`,presetSmallModelHint:`Imposta il loop Compatto, inoltra lo sforzo di ragionamento e una finestra di contesto di 32k: la combinazione validata con modelli da 7–14B. Ogni campo resta modificabile.`,cliGroup:`Strumenti CLI`,cliGroupHint:`Rilevati su questa macchina: usano il proprio accesso, niente da configurare.`,localGroup:`Motori locali`,localGroupHint:`Endpoint compatibili con OpenAI (llama.cpp, Ollama, vLLM, LM Studio…) raggiungibili da questa app.`,models_one:`{{count}} modello`,models_other:`{{count}} modelli`,expand:`Mostra impostazioni`,collapse:`Nascondi impostazioni`,overflow:`Altre azioni`,addLocalHero:`Aggiungi motore locale`,emptyLocalPitch:`Nessun motore locale per ora. Punta l’app a un endpoint compatibile con OpenAI per eseguire la pipeline sul tuo hardware: il costo resta sotto il tuo controllo e nulla esce dalla tua rete.`,defaultsGroup:`Valori predefiniti del provider`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`Architetto`,developer:`Sviluppatore`,reviewer:`Revisore`,fixer:`Correttore`,verify:`Verifica`,archive:`Completamento`},m={title:`Assegnazione dei ruoli`,hint:`Ogni ruolo può usare un provider e un modello diversi. Connessioni: Impostazioni generali → Provider di IA. Limite predefinito: {{turns}} turni per agente.`,provider:`Fornitore`,model:`Modello`,modelPlaceholder:`ID del modello o predefinito del CLI`,maxTurns:`Numero massimo di turni (predefinito {{turns}})`,defaultModel:`Predefinito ({{model}})`,thinking:`Ragionamento nascosto`,thinking_off:`Disattivato`,thinking_on:`Attivato`,thinkingHint:`Disattivato per impostazione predefinita: il ragionamento nascosto consuma il budget di output e minuti per turno in un ciclo guidato dall'host. Attivalo per un ruolo che trae vantaggio dalla deliberazione (inviato come chat_template_kwargs.enable_thinking; gli endpoint che non lo conoscono lo ignorano).`},h={title:`Limiti del flusso`,hint:`I campi vuoti usano i valori di Core: {{attempts}} tentativi di correzione e {{minutes}} minuti per passo di ruolo. Sui motori locali il timeout si applica a ogni unità di lavoro (un gruppo di attività, un artefatto, una revisione) — 45 minuti per impostazione predefinita — più un watchdog di inattività di 20 minuti; un passo che esaurisce il tempo blocca l'esecuzione e può riprendere dal gruppo aperto successivo. I limiti di token e USD sono facoltativi; quelli in USD richiedono Claude per ogni ruolo.`,maxAttempts:`Tentativi massimi dello sviluppatore (predefinito {{attempts}})`,timeoutMinutes:`Timeout in minuti (predefinito {{minutes}}; motori locali 45 per gruppo di attività)`,maxTokens:`Token massimi`,maxCostUsd:`Costo massimo (USD)`,unlimited:`Nessun limite`},g={title:`Comandi di verifica`,hint:`Facoltativo. Vengono eseguiti quando lo sviluppatore termina e i fallimenti tornano allo sviluppatore. Lista vuota: l’architetto propone i controlli propri del progetto a ogni esecuzione; i repository senza controllo automatico vengono comunque revisionati.`,detect:`Rileva i controlli del progetto`,detecting:`Rilevamento…`,detected:`Compilato con i controlli che questo progetto già definisce.`,nothingDetected:`Nessun comando di test, controllo tipi o build trovato. Va bene: l’architetto propone controlli a ogni esecuzione quando possibile.`,detectFailed:`Impossibile ispezionare i repository del progetto.`,repository:`Repository`,command:`Comando`,reason:`Rilevato da {{reason}}`,remove:`Rimuovi`,add:`Aggiungi comando`,invalidLine:`Comando di verifica vuoto o con virgolette non chiuse: {{line}}`,label:`Nome del controllo (facoltativo)`,moveUp:`Sposta su`,moveDown:`Sposta giù`},_={title:`Esecuzioni salvate`,refresh:`Aggiorna`,hint:`Continua nel worktree originale con ambito e impostazioni salvati; l’avanzamento compare nel log di quel job. Non pubblica né riavvia la consegna Desktop. Le esecuzioni attive si fermano dai controlli del job.`,empty:`Nessuna esecuzione salvata.`,loadFailed:`Impossibile caricare le esecuzioni.`,actionFailed:`Impossibile aggiornare questa esecuzione.`,phase:`Prossima fase: {{phase}}`,approve:`Approva completamento`,recover:`Recupera fase interrotta`,resume:`Riprendi`,cancel:`Annulla continuazione`,status:{running:`Continuazione in corso…`,succeeded:`Riuscito`,failed:`Fallito`,blocked:`Bloccato`,paused:`In pausa`,cancelled:`Annullato`,interrupted:`Interrotto`,unavailable:`Non disponibile`,expired:`Scaduto`},question:`L'architetto chiede:`,answerLabel:`La tua risposta`,answerPlaceholder:`Rispondi alla domanda; l'architetto prosegue con essa.`,answer:`Rispondi e riprendi`,viewLog:`Visualizza log del job`,implementation:`Implementazione`,preserveProgress:`Riprendi dalla fase indicata, conservando il lavoro e le impostazioni salvate.`,reviewDelivery:`Implementazione completata. Controlla il risultato nel log prima della consegna; questa ripresa non lo ha pubblicato.`,prepareDelivery:`Prepara consegna`,dismiss:`Ignora`,selectRecovery:`Seleziona i tentativi interrotti da riprendere`},v={architect:`Legge il codice e scrive proposta, design, attività e spec. Sola lettura.`,developer:`Implementa le attività con i test. Può modificare file ed eseguire comandi nella sandbox del CLI.`,reviewer:`Controlla il risultato rispetto alla spec e alle prove di verifica. Sola lettura.`},y={title:`Soglia di revisione`,hint:`I campi vuoti usano la soglia di Core. I valori possono solo alzarla: punteggio complessivo almeno {{score}}, sicurezza almeno {{security}}, altri aspetti almeno {{aspect}}.`,minScore:`Punteggio complessivo minimo (predefinito {{score}})`,aspects:{type_correctness:`Correttezza dei tipi (predefinito {{score}})`,pattern_adherence:`Aderenza ai pattern (predefinito {{score}})`,test_coverage:`Copertura dei test (predefinito {{score}})`,security:`Sicurezza (predefinito {{score}})`,architectural_alignment:`Allineamento architetturale (predefinito {{score}})`}},b={title:`Confidenza dell'architetto`,hint:`Dopo un passaggio di indagine autonoma, un progetto ancora poco sicuro si mette in pausa con la domanda dell'architetto oppure procede su ipotesi dichiarate.`,onLowConfidence:`Con bassa confidenza`,ask:`Chiedere (pausa con la domanda)`,proceed:`Procedere su ipotesi dichiarate`},x={title:`Consumo e tempo`,hint:`Include correzioni e chiamate non riuscite. Il tempo degli agenti include gli strumenti. I token della cache fanno parte dei token di input.`,unknown:`Non disponibile`,duration:`Tempo di esecuzione`,agentTime:`Tempo degli agenti`,cost:`Costo dichiarato`,providerCalls:`Chiamate agli agenti`,toolCalls:`Chiamate agli strumenti`,input:`Token di input`,output:`Token di output`,uncached:`Input senza cache`,cacheRead:`Letture della cache`,cacheWrite:`Scritture della cache`,partial:`Alcuni tentativi non hanno misurazioni dettagliate.`,phases:`Consumo per fase`,phase:`Fase`,attempts:`Tentativi`},S={title:`Prompt dei ruoli degli agenti`,description:`Visualizza e modifica le istruzioni di ogni ruolo. Sono condivise da tutti i progetti e provider; le modifiche si applicano ai nuovi lavori. I lavori ripresi mantengono i prompt originali.`,definition:`Definizione di {{role}}`,default:`Impostazione predefinita`,custom:`Personalizzato`,restore:`Ripristina predefinito`,contracts:`Il contesto della spec, il workflow OpenSpec e il formato di risposta richiesto vengono aggiunti automaticamente e non sono modificabili qui.`,invalid:`Ogni definizione deve contenere da 1 a 20.000 caratteri, con testo non vuoto e senza byte nulli.`,saved:`Prompt dei ruoli salvati`,unsaved:`Modifiche non salvate`,discard:`Scarta modifiche`,save:`Salva prompt`,fixerHint:`Usato solo nei giri di correzione: dopo una verifica fallita o una revisione respinta. Gira sul motore dello sviluppatore, salvo che Impostazioni ▸ Motore agenti ▸ Correttore ne indichi uno proprio. Un provider CLI che riprende la sessione dello sviluppatore riceve il breve seguito di correzione; la definizione si applica ogni volta che parte una sessione nuova (motori locali, motore correttore, sessione persa).`},C={title:`Efficienza dell’implementazione`,scope:`Si applica alle nuove esecuzioni. Quelle salvate mantengono configurazione e motore originali.`,effort:`Sforzo di ragionamento`,providerDefault:`Predefinito del fornitore`,unconfirmed:`Non confermato`,unknownSupport:`Il supporto per questo modello e trasporto non è confermato.`,escalation:`Consenti un livello superiore con lo stesso fornitore`,baseRequired:`Seleziona prima un modello base esplicito.`,escalationModel:`Modello di livello superiore`,triggers:{architect:`Solo l’approfondimento già previsto può selezionare questo livello.`,developer:`Dopo due candidati falliti, il tentativo successivo consentito può selezionare questo livello.`,reviewer:`Solo per correggere risposte malformate; il rifiuto del codice non lo attiva.`,fixer:`Solo un giro di correzione può raggiungere questo livello; i primi passaggi non eseguono mai il correttore.`},contextMode:`Contesto del repository`,reviewMode:`Revisione delle correzioni`,planning:`Profondità della pianificazione`,adaptive:`Adattivo`,full:`Completo`,developerChecks:`Accetta controlli aggiuntivi proposti dallo sviluppatore`,concurrency:`Controlli simultanei massimi`,concurrencyHint:`Predefinito: 1. Solo controlli indipendenti dichiarati dall’host in repository diversi possono essere simultanei. Nessun riutilizzo predefinito.`,checkCapabilities:`Verifica compatibilità dei modelli`,capabilitiesFailed:`Compatibilità non confermata. Aggiorna Core o mantieni i valori del fornitore.`},w={title:`Evidenze di verifica`,acceptance:`Accettazione tecnica`,acceptanceStatus:{pending:`In attesa`,validated:`Validato`,"with-exceptions":`Con eccezioni`,blocked:`Bloccato`},calls:`Chiamate agli agenti`,executed:`Controlli eseguiti`,reused:`Controlli riutilizzati`,unknown:`Non disponibile`,unavailable:`Evidenza non disponibile. Il risultato registrato non prova la validità attuale.`,current:`Candidato e piano attuali`,historical:`Risultato storico`,moreChecks:`Altri controlli`,output:`Output della verifica`,empty:`Nessun output`,truncated:`Pagina limitata o acquisizione troncata.`,nextPage:`Pagina successiva`,status:{passed:`Superato`,failed:`Fallito`,cancelled:`Annullato`,interrupted:`Interrotto`},disposition:{executed:`Eseguito`,reused:`Riutilizzato`,"not-run":`Non eseguito`},origin:`Origine`,origins:{host:`Host`,architect:`Architetto`,developer:`Sviluppatore`,"frozen-runtime-config":`Configurazione salvata`,"project-role":`Ruolo del progetto`,default:`Predefinito`,"explicit-launch-override":`Provider scelto per questo avvio`},reuseDisabled:`Riutilizzo disabilitato per questo controllo.`,reuseConfirmed:`Riutilizzato dopo la conferma di input e strumenti identici.`,inputsChanged:`Input cambiati durante la verifica; risultato invalidato.`,reuseUnproven:`Nessun risultato attuale con input identici comprovati; controllo rieseguito.`,original:`Esecuzione originale`,requested:`Richiesto`,reported:`Segnalato`},T={title:`Ruoli del loop`,hint:`Motori dei ruoli del loop quando un rail viene lanciato con il motore «Ruoli». I ruoli della pipeline qui sopra (architect, developer, reviewer) provengono già da questa configurazione del runtime.`,verifier:`Verificatore`,verifierHint:`Ogni passo IA del loop esterno al core: verify, fix e passi IA personalizzati.`,decider:`Decisore`,deciderHint:`Il Loop Decider che legge il verdetto e sceglie il passo successivo: un modello economico e veloce è la scelta naturale.`,inherit:`Eredita il principale`,model:`Modello`,effort:`Sforzo di ragionamento`,disabled:`Il runtime degli agenti è disattivato: i rail lanciati con il motore «Ruoli» vengono rifiutati finché non viene attivato.`,saveFailed:`Impossibile salvare i ruoli del loop.`},E={title:`Pipeline di implementazione`,explainer:`Queste fasi vengono eseguite in quest'ordine a ogni implementazione. Quando il motore del rail è "{{roles}}", ogni fase usa il motore configurato qui sotto: provider, modello ed effort diversi per fase. Scegliendo un motore specifico sul rail, tutte le fasi girano su quel motore.`,host:`Host`,noCommand:`nessun comando`,inherits:`Eredita il principale`,inheritsDeveloper:`Eredita dallo sviluppatore`,open:`Apri`,collapse:`Comprimi`,groups:{core:{title:`Pipeline principale`,hint:`Viene eseguita in ogni implementazione: pianificare, costruire, verificare, correggere, revisionare.`},loop:{title:`Passi del loop`,hint:`Passi IA del loop del rail che avvolge l'esecuzione (verificare → decidere → correggere) e dei loop personalizzati; ereditano il motore principale se non impostati.`,chip:`loop del rail`}},phases:{architect:{name:`Architetto`,purpose:`Legge il codice e scrive proposta, design e task.`},developer:{name:`Sviluppatore`,purpose:`Implementa i task con i test.`},verification:{name:`Verifica`,purpose:`L'host esegue i tuoi controlli; i fallimenti tornano allo sviluppatore.`},fixer:{name:`Correttore`,purpose:`Corregge ciò che la verifica o la revisione respingono; eredita dallo sviluppatore se non configurato.`},reviewer:{name:`Revisore`,purpose:`Confronta il risultato con la spec e le evidenze.`},verifier:{name:`Verificatore`,purpose:`Passi IA verify, fix e personalizzati del loop.`},decider:{name:`Decisore`,purpose:`Legge il verdetto e sceglie il prossimo passo del loop.`}}},D={title:`Motore del correttore`,inherit:`Eredita sviluppatore`,own:`Motore proprio`,hint:`Viene eseguito solo nei giri di correzione: dopo una verifica fallita o una revisione respinta; i primi passaggi restano sullo sviluppatore. Un modello più potente o cloud qui conviene quando lo sviluppatore è un modello locale economico.`},O={title:`Guardrail`,intro:`Regole di processo che l'host applica intorno ai modelli locali perché un modello piccolo non deragli. Tutte attive per impostazione predefinita; disattivane una solo per regolare il processo. I provider CLI non sono mai coinvolti.`,unsupported:`Questa installazione di Core non espone guardrail configurabili. Aggiorna Core per regolarli; le regole integrate continuano ad applicarsi.`,active:`{{on}} di {{total}} attivi`,reset:`Ripristina predefiniti`,phases:{architect:`Architetto`,developer:`Sviluppatore`,host:`Host`},unknown:`Un guardrail aggiunto da un Core più recente; questa app non ha ancora una descrizione.`,items:{"plan-validation":{title:`Piano di attività validato`,description:`Rifiuta piani che puntano a openspec/, elencano semplici nomi di file come attività, hanno troppo poche attività/gruppi per la spec o lasciano criteri di accettazione scoperti; l'architetto riprova.`,why:`Un piano vago o incompleto è la causa n. 1 per cui un piccolo modello sviluppatore scrive stub.`},"genuine-blocking-question":{title:`Solo vere domande bloccanti`,description:`L'architetto può mettere in pausa l'esecuzione solo con una vera domanda che termina con '?', mai con testo d'esempio copiato.`,why:`I modelli piccoli ripetono i segnaposto del prompt e bloccherebbero ogni esecuzione.`},"plan-language-hint":{title:`Pianificare nel linguaggio del repository`,description:`Indica all'architetto il linguaggio principale così i nomi dei file delle attività hanno l'estensione giusta.`,why:`Un piano JS su un repo TypeScript rende impossibile spuntare le attività.`},"frozen-plan-writes":{title:`Gli artefatti di pianificazione sono congelati`,description:`Lo sviluppatore non può scrivere sotto openspec/; il piano appartiene all'host.`,why:`I modelli 'implementano' modificando il piano invece del codice.`},"primary-language":{title:`Promemoria del linguaggio principale`,description:`A ogni gruppo di attività viene indicato il linguaggio principale del repository; i nuovi file dovrebbero usarlo.`,why:`Evita una seconda implementazione in un altro linguaggio.`},"duplicate-sibling":{title:`Nessun modulo gemello tra linguaggi`,description:`Rifiuta board.js quando board.ts esiste già; estendi invece il modulo esistente.`,why:`I gemelli compilano entrambi e i test importano quello sbagliato.`},"one-test-per-module":{title:`Un file di test per modulo`,description:`Rifiuta board.tick.test.ts quando esiste board.test.ts; estendilo invece.`,why:`Altrimenti ogni passata di correzione aggiunge una nuova suite.`},"empty-write":{title:`Nessuna sovrascrittura vuota`,description:`Una scrittura vuota su un file con contenuto viene rifiutata; scrivi il contenuto completo o applica una patch.`,why:`Una passata di 'pulizia' una volta lasciò index.ts a 0 righe.`},"evidence-gated-ticking":{title:`Prove prima di spuntare un'attività`,description:`Un'attività che nomina file è completata solo se esistono e non sono stub (estensioni sorelle accettate).`,why:`Senza, 'fatto' è solo un'affermazione e la verifica gira contro il nulla.`},"inventory-retry":{title:`Riprova con l'inventario reale`,description:`Quando il modello rinuncia sostenendo che il repo è vuoto mentre non lo è, riprova una volta con l'elenco dei file.`,why:`Seconda possibilità economica invece di un passo fallito.`},"synthetic-corrections":{title:`Trasformare il feedback in attività`,description:`Quando tutte le attività sono spuntate ma review/verify sono falliti, il feedback diventa attività di correzione concrete.`,why:`Altrimenti lo sviluppatore risponde 'già fatto' e nulla cambia.`},"silent-group-closure":{title:`Chiudere i gruppi silenziosi, conservare i loro file`,description:`Un gruppo il cui modello smette di rispondere viene chiuso accreditando i file scritti e lasciando aperte le sue attività, invece di far fallire l'esecuzione.`,why:`Un modello 9B scrisse cinque moduli, tacque e l'intera esecuzione fallì.`},"environment-repair":{title:`L'host ripara l'ambiente`,description:`Dipendenze o strumenti di test mancanti (npm install, ts-jest, @types/jest, moduli di config Jest) vengono installati dall'host, poi la verifica viene rieseguita una volta.`,why:`Il modello non può sistemare l'ambiente e brucia correzioni provandoci.`},"lockfile-repair":{title:`Scartare i lockfile scritti a mano`,description:`Un package-lock.json inventato dal modello (EINTEGRITY/ETARGET) viene rimosso e l'installazione ritentata una volta.`,why:`Gli hash inventati non si installano mai.`},"verify-idle-timeout":{title:`Fermare i test bloccati`,description:`Un comando di verifica senza output per 5 minuti viene fermato e segnalato come probabile blocco (ultimo output incluso).`,why:`Altrimenti un ciclo while in un test trattiene l'esecuzione fino al limite di 15 minuti.`},"verify-per-group":{title:`Verifica dopo ogni gruppo`,description:`Esegue il comando di test del repository subito dopo ogni gruppo di attività; un errore riceve un giro di correzione immediato finché il contesto del gruppo è fresco.`,why:`Cinque suite rotte alla fine sono molto più difficili da sistemare di una alla volta.`},"test-reachability":{title:`Ogni nuovo test deve essere eseguito davvero`,description:"Un file di test scritto dal developer che il comando di test del repository non esegue mai (uno script `test` che enumera e salta il file nuovo) fa fallire la verifica indicando il file esatto, prima a livello di gruppo e poi di nuovo nella verifica dell'host.",why:`Una suite di 622 righe con sei casi falliti è passata in verde perché nessuno l'aveva mai eseguita.`},"exit-code-honesty":{title:`Diffidare di un exit 0 che segnala fallimenti`,description:`Un comando di verifica che esce con 0 mentre l'output stampa fallimenti (righe \`FAIL:\`, "3 failed", un AssertionError) è trattato come FALLITO e passato al correttore con l'harness indicato come difetto.`,why:`Un runner di test artigianale che non impostava mai un exit code diverso da zero ha consegnato tre test rossi come verdi.`}}},k=`Modifiche non salvate`,A={title:`Ruoli personalizzati`,hint:`Definisci istruzioni riutilizzabili e autorizzazioni esplicite per i ruoli del flusso.`,unsupported:`Aggiorna Core per modificare i ruoli personalizzati.`,remove:`Rimuovi {{id}}`,access:`Accesso al codice`,read:`Sola lettura`,write:`Lettura e scrittura`,artifacts:`Accesso agli artefatti OpenSpec`,none:`Nessuno`,tasks:`Solo caselle delle attività`,all:`Tutti gli artefatti della modifica`,skill:`Skill OpenSpec`,noSkill:`Nessuno skill associato`,prompt:`Istruzioni del ruolo`,id:`ID del ruolo`,add:`Aggiungi ruolo`,invalidId:`Usa un ID univoco in minuscolo che inizi con una lettera, con un massimo di 64 lettere, numeri o trattini. Gli ID integrati sono riservati.`,escalationHint:`Solo una correzione consentita del protocollo può usare il modello superiore. Non viene aggiunto alcun tentativo.`},j={title:`Istruzioni di esecuzione`,hint:`Core conserva queste istruzioni per il prossimo turno di agente compatibile. L’invio non risponde alle domande e non concede approvazioni.`,label:`Istruzioni aggiuntive`,send:`Invia istruzioni`,accepted:`Ricevute da Core; in attesa di utilizzo.`,pending:`In attesa di un turno di agente`,consumed:`Utilizzate da un agente`,counts:`In attesa: {{pending}} · Utilizzate: {{consumed}}`,failed:`Impossibile inviare le istruzioni. Riprova per confermare lo stesso messaggio.`,unavailable:`I dettagli delle ricevute non sono disponibili.`,unreported:`Questa versione di Core non segnala l’utilizzo.`,truncated:`Sono mostrate solo le ricevute recenti e i messaggi in attesa.`},M={title:`Valori predefiniti del ruolo Core`,hint:`Questi valori del file si applicano ai nuovi workflow. Le impostazioni esplicite del progetto hanno la precedenza; le esecuzioni salvate mantengono le impostazioni fissate.`,invalid:`Correggi l’intestazione YAML nell’editor prima di modificare i campi del ruolo.`,escalationEffort:`Sforzo di ragionamento del modello superiore`},N={title:`Conservazione della cronologia`,description:`Elimina le cronologie scadute e le versioni di Core inutilizzate. Le cronologie eliminate non possono essere riprese o biforcate. Le esecuzioni attive o recuperabili e le consegne in sospeso restano protette; i log e i costi vengono conservati.`,forever:`Conserva la cronologia indefinitamente`,days:`Giorni di conservazione`,save:`Salva conservazione`,preview:`Anteprima pulizia`,collect:`Elimina cronologia scaduta`,previewSummary:`Idonei: {{runs}} cronologie e {{packages}} versioni di Core inutilizzate.`,collectedSummary:`Scadute: {{runs}} cronologie. Rimosse: {{packages}} versioni di Core inutilizzate.`,more:`{{count}} esecuzioni aggiuntive.`,failed:`Impossibile consultare o aggiornare la conservazione.`,expired:`Questa cronologia è scaduta secondo la politica del progetto. Il log e la contabilità restano disponibili.`,loading:`Caricamento della politica…`,states:{protected:`Conservato`,eligible:`Idoneo`,expired:`Scaduto`,cleanup_pending:`Pulizia in sospeso`,busy:`In uso`,error:`Verifica non riuscita`},reasons:{disabled:`Conservazione indefinita`,recoverable:`Recupero ancora disponibile`,active:`Esecuzione attiva`,human_pending:`In attesa di risposta umana`,interrupted_writes:`Scritture interrotte da verificare`,delivery_pending:`Consegna in sospeso`,fork_pending:`Resta una biforcazione dipendente`,unknown_terminal_time:`Data di completamento sconosciuta`,within_retention:`Periodo di conservazione non scaduto`}},P={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,customRoles:A,steering:j,studioRole:M,retention:N};export{m as agents,u as approvalBeforeArchive,b as architect,f as cliNames,A as customRoles,P 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,N as retention,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,j as steering,M as studioRole,e as title,a as unavailable,k as unsavedChanges,g as verification};
@@ -0,0 +1 @@
1
+ var e=`代理运行引擎`,t=`架构师、开发者和审阅者作为独立阶段运行,中间进行确定性验证。为每个角色选择提供商即可,其余都有可用的默认值。`,n=`正在加载运行设置…`,r=`无法加载运行设置。请先重试再修改。`,i=`重试`,a=`当前 Core 安装不包含代理运行引擎。启用前请更新 Core;停用时仍可提前配置。`,o=`保存运行设置`,s=`正在保存…`,c=`运行设置已保存`,l=`无法保存运行设置。`,u=`完成工作流前暂停并等待批准`,d={title:`提供商`,hint:`CLI 提供商使用现有登录。API 仅接受环境变量名称,请勿输入密钥。本地端点可留空。删除提供商前,请先重新分配使用它的角色。`,entry:`提供商 {{index}}`,id:`提供商 ID`,kind:`连接类型`,cli:`已安装的编程 CLI`,compatible:`兼容 OpenAI 的端点`,command:`编程 CLI`,baseUrl:`API 基础 URL`,apiKeyEnv:`API 密钥环境变量(可选)`,remove:`移除提供商`,addCli:`添加 CLI 提供商`,addLocal:`添加本地 / API 提供商`,show:`显示提供商连接`,hide:`隐藏提供商连接`,globalTitle:`AI 提供商`,globalHint:`每个项目由两类提供商驱动:本机检测到的编程 CLI,以及你在此注册的本地 OpenAI 兼容引擎。在项目设置 ▸ 代理引擎中将它们分配给流水线各阶段。更改适用于新的执行。`,label:`显示名称(可选)`,labelPlaceholder:`例如:局域网主机`,defaultModel:`默认模型`,defaultModelNone:`无默认(使用首个发现的模型)`,defaultModelPlaceholder:`模型 ID 或自定义别名`,customModel:`自定义别名…`,discoveredModels:`已发现的模型`,noModels:`尚未发现模型,请测试连接。`,rates:`费率(每 100 万 token 的美元,可选)`,ratesHint:`费用按估算显示;两项都留空则费用保持未知。`,inputRate:`输入 / 100 万`,outputRate:`输出 / 100 万`,ratesInvalid:`请将两项费率都填写为非负数,或都留空。`,reasoningEffort:`端点支持推理强度`,reasoningEffortHint:`发送 OpenAI 的 reasoning_effort 字段:每次调用使用该角色配置的推理强度,在紧凑架构师撰写计划时提升为 high。除非服务器支持,否则请保持关闭。`,apiKeyEnvMissing:`应用进程中未设置 {{name}}。请在启动应用的环境中设置它。`,test:`测试连接`,testing:`测试中…`,testFailed:`无法测试连接。`,rename:`重命名`,renameHint:`重命名后,角色分配仍指向此连接。`,idLocked:`保存后 ID 将被锁定。请使用“重命名”修改。`,localBadge:`本地引擎`,cliBadge:`CLI`,notDetected:`本机未检测到`,unsaved:`未保存的更改`,empty:`尚无连接。添加本地 / API 提供商以开始。`,fixBeforeSave:`保存前请修正标出的字段。`,status:{probing:`检测中…`,reachable:`可访问`,unauthorized:`未授权`,unreachable:`无法访问`,untested:`从未测试`},auth:{authenticated:`已登录`,unauthenticated:`未登录`,unknown:`登录状态未知`},agentLoop:`Agent 循环`,agentLoopHint:`implement 流水线如何驱动此模型`,agentLoop_compact:`紧凑`,agentLoop_compactHint:`由应用驱动的微步骤与结构化输出。推荐 ~30B 以下的模型使用。`,agentLoop_free:`自由`,agentLoop_freeHint:`每个角色一个 agent 循环,与 CLI 提供商相同。需要较强的模型。`,contextWindow:`上下文窗口(token)`,contextWindowHint:`与服务器的上下文大小保持一致(n_ctx / num_ctx)。用于在窗口填满前压缩旧的工具结果。默认 32768。`,maxOutput:`每轮输出预算(token)`,maxOutputHint:`单个工具轮次的 max_tokens;被截断的轮次会以两倍预算重试一次。它计入上下文窗口,因此始终受剩余空间限制——若模型会私下思考(thinking 会消耗该预算),请调高。默认 8192。`,reasoningEffortRailHint:`关闭时,此引擎在 rail 标题栏中不会显示推理强度选择器。`,presetTitle:`快速设置`,presetSmallModel:`小模型推荐`,presetSmallModelApplied:`已应用小模型预设`,presetSmallModelHint:`启用紧凑循环、转发推理强度并设置 32k 上下文窗口——这是在 7–14B 模型上验证过的组合。各字段仍可单独修改。`,cliGroup:`CLI 工具`,cliGroupHint:`在本机检测到——使用各自的登录,无需配置。`,localGroup:`本地引擎`,localGroupHint:`本应用可访问的 OpenAI 兼容端点(llama.cpp、Ollama、vLLM、LM Studio 等)。`,models_one:`{{count}} 个模型`,models_other:`{{count}} 个模型`,expand:`显示设置`,collapse:`隐藏设置`,overflow:`更多操作`,addLocalHero:`添加本地引擎`,emptyLocalPitch:`尚无本地引擎。将应用指向一个 OpenAI 兼容端点,即可在自己的硬件上运行流水线:成本由你掌控,数据不离开你的网络。`,defaultsGroup:`提供商默认值`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`架构师`,developer:`开发者`,reviewer:`审查者`,fixer:`修复者`,verify:`验证`,archive:`完成`},m={title:`角色分配`,hint:`每个角色可以使用不同的提供商和模型。在常规设置 → AI 提供商中管理连接。默认每个代理最多{{turns}}轮。`,provider:`提供商`,model:`模型`,modelPlaceholder:`模型 ID 或 CLI 默认值`,maxTurns:`最大轮数(默认 {{turns}})`,defaultModel:`默认({{model}})`,thinking:`隐藏思考`,thinking_off:`关闭`,thinking_on:`开启`,thinkingHint:`默认关闭:在由主机驱动的循环中,隐藏推理会消耗输出预算和每轮的分钟数。对受益于深思的角色可开启(以 chat_template_kwargs.enable_thinking 发送;不识别该字段的端点会忽略)。`},h={title:`工作流限制`,hint:`留空则使用 Core 默认值:{{attempts}} 次修正尝试,每个角色步骤 {{minutes}} 分钟。在本地引擎上,超时按工作单元计算(一个任务组、一个工件、一次审查),默认 45 分钟,另有 20 分钟空闲看门狗;超时的步骤会阻塞运行,并可从下一个未完成的任务组恢复。token 和美元上限为可选;美元上限要求所有 AI 角色使用 Claude。`,maxAttempts:`开发者最大尝试次数(默认 {{attempts}})`,timeoutMinutes:`超时(分钟;默认 {{minutes}},本地引擎每个任务组 45)`,maxTokens:`最大令牌数`,maxCostUsd:`最大成本(USD)`,unlimited:`无限制`},g={title:`验证命令`,hint:`可选。在开发者完成后运行,失败会返回给开发者。留空时,架构师会在每次运行时提出项目自身的检查;没有自动检查的仓库仍会被审阅。`,detect:`检测项目检查`,detecting:`检测中…`,detected:`已根据此项目已定义的检查填写。`,nothingDetected:`未找到测试、类型检查或构建命令。没关系:架构师会在可能时于运行时提出检查。`,detectFailed:`无法检查项目仓库。`,repository:`仓库`,command:`命令`,reason:`检测自 {{reason}}`,remove:`移除`,add:`添加命令`,invalidLine:`验证命令为空或引号未闭合:{{line}}`,label:`检查名称(可选)`,moveUp:`上移`,moveDown:`下移`},_={title:`已保存的执行`,refresh:`刷新`,hint:`在原始工作树中使用冻结的范围和设置继续执行,进度显示在该任务的日志中。此操作不会发布或重启 Desktop 交付。请从任务控件停止活动中的执行。`,empty:`没有已保存的执行。`,loadFailed:`无法加载已保存的执行。`,actionFailed:`无法更新此执行。`,phase:`下一阶段:{{phase}}`,approve:`批准完成`,recover:`恢复中断阶段`,resume:`继续`,cancel:`取消继续执行`,status:{running:`继续中…`,succeeded:`成功`,failed:`失败`,blocked:`已阻止`,paused:`已暂停`,cancelled:`已取消`,interrupted:`已中断`,unavailable:`不可用`,expired:`已过期`},question:`架构师提问:`,answerLabel:`你的回答`,answerPlaceholder:`回答该问题后,架构师将据此继续。`,answer:`回答并继续`,viewLog:`查看任务日志`,implementation:`实现`,preserveProgress:`从所示阶段继续,保留已有工作和保存的设置。`,reviewDelivery:`实现已完成。交付前请在任务日志中检查结果;本次继续执行未发布结果。`,prepareDelivery:`准备交付`,dismiss:`忽略`,selectRecovery:`选择要恢复的中断尝试`},v={architect:`阅读代码并撰写提案、设计、任务和规范。只读。`,developer:`带测试地实现任务。可在 CLI 沙箱内编辑文件并运行命令。`,reviewer:`对照规范和验证证据检查结果。只读。`},y={title:`评审门槛`,hint:`留空则使用 Core 的门槛。数值只能提高门槛:总体分数至少 {{score}},安全性至少 {{security}},其他方面至少 {{aspect}}。`,minScore:`最低总体分数(默认 {{score}})`,aspects:{type_correctness:`类型正确性(默认 {{score}})`,pattern_adherence:`模式遵循(默认 {{score}})`,test_coverage:`测试覆盖率(默认 {{score}})`,security:`安全性(默认 {{score}})`,architectural_alignment:`架构一致性(默认 {{score}})`}},b={title:`架构师置信度`,hint:`经过一轮自主调查后,若设计的置信度仍然较低,则带着架构师的问题暂停,或基于已声明的假设继续。`,onLowConfidence:`置信度低时`,ask:`询问(带问题暂停)`,proceed:`基于已声明的假设继续`},x={title:`用量与时间`,hint:`包含修正和失败的调用。代理时间包含工具执行时间。缓存令牌属于输入令牌的一部分。`,unknown:`不可用`,duration:`执行时间`,agentTime:`代理时间`,cost:`已报告费用`,providerCalls:`代理调用`,toolCalls:`工具调用`,input:`输入令牌`,output:`输出令牌`,uncached:`未缓存输入`,cacheRead:`缓存读取`,cacheWrite:`缓存写入`,partial:`部分尝试没有详细测量数据。`,phases:`各阶段用量`,phase:`阶段`,attempts:`尝试次数`},S={title:`代理角色提示词`,description:`查看和编辑各角色的指令。所有项目和提供商共用这些指令;更改适用于新任务。恢复的任务保留原始提示词。`,definition:`{{role}}定义`,default:`出厂默认值`,custom:`已自定义`,restore:`恢复默认值`,contracts:`Spec 上下文、OpenSpec 工作流程和所需的响应格式会自动添加,无法在此编辑。`,invalid:`每个定义必须包含 1–20,000 个字符,不能仅包含空白字符,也不能包含空字节。`,saved:`角色提示词已保存`,unsaved:`未保存的更改`,discard:`放弃更改`,save:`保存提示词`,fixerHint:`仅在修正轮次使用:验证失败或审查被拒之后。除非“设置 ▸ 代理引擎 ▸ 修复者”指定了独立引擎,否则运行在开发者引擎上。恢复开发者会话的 CLI 提供方收到的是简短的修正跟进;每当启动新会话(本地引擎、修复者引擎、会话丢失)时,本定义生效。`},C={title:`实现效率`,scope:`适用于新运行。已保存的运行保留原始配置和运行时。`,effort:`推理强度`,providerDefault:`提供商默认值`,unconfirmed:`未确认`,unknownSupport:`尚未确认此模型和传输方式的支持情况。`,escalation:`允许使用同一提供商的一个更高等级`,baseRequired:`请先明确选择基础模型。`,escalationModel:`更高等级模型`,triggers:{architect:`仅现有的深入调查步骤可选择此等级。`,developer:`两个候选实现失败后,下一次允许的尝试可选择此等级。`,reviewer:`仅用于修复格式错误的响应;拒绝代码不会触发升级。`,fixer:`只有修正轮次才能进入此层级;首次实现从不运行修复者。`},contextMode:`仓库上下文`,reviewMode:`修正审查`,planning:`规划深度`,adaptive:`自适应`,full:`完整`,developerChecks:`接受开发者提出的额外检查`,concurrency:`最大并发检查数`,concurrencyHint:`默认值为 1。只有主机声明为独立且属于不同仓库的检查才能并发运行。默认不复用检查。`,checkCapabilities:`检查模型兼容性`,capabilitiesFailed:`无法确认兼容性。请更新配套 Core 或保留提供商默认值。`},w={title:`验证证据`,acceptance:`技术验收`,acceptanceStatus:{pending:`待处理`,validated:`已验证`,"with-exceptions":`存在例外`,blocked:`已阻止`},calls:`代理调用`,executed:`已执行检查`,reused:`已复用检查`,unknown:`不可用`,unavailable:`证据不可用。已记录的结果不代表当前仍然有效。`,current:`当前候选实现和计划`,historical:`历史结果`,moreChecks:`更多检查`,output:`验证输出`,empty:`无输出`,truncated:`此页面有长度限制或记录已截断。`,nextPage:`下一页输出`,status:{passed:`通过`,failed:`失败`,cancelled:`已取消`,interrupted:`已中断`},disposition:{executed:`已执行`,reused:`已复用`,"not-run":`未执行`},origin:`来源`,origins:{host:`主机`,architect:`架构师`,developer:`开发者`,"frozen-runtime-config":`已保存配置`,"project-role":`项目角色`,default:`默认`,"explicit-launch-override":`本次运行选择的提供商`},reuseDisabled:`此检查已禁用复用。`,reuseConfirmed:`确认输入和工具链一致后复用。`,inputsChanged:`验证期间输入发生变化;结果已失效。`,reuseUnproven:`没有输入一致且仍然有效的结果;已重新执行检查。`,original:`原始执行`,requested:`请求值`,reported:`报告值`},T={title:`循环角色`,hint:`轨道以“按角色”引擎启动时循环侧角色所用的引擎。上方的流水线角色(architect、developer、reviewer)已来自此运行时配置。`,verifier:`验证者`,verifierHint:`循环中所有非核心的 AI 步骤:verify、fix 和自定义 AI 步骤。`,decider:`决策者`,deciderHint:`读取结论并决定下一步的 Loop Decider——选择便宜快速的模型最合适。`,inherit:`继承主引擎`,model:`模型`,effort:`推理强度`,disabled:`代理运行时已禁用——在启用之前,以“按角色”引擎启动的轨道会被拒绝。`,saveFailed:`无法保存循环角色。`},E={title:`实现流水线`,explainer:`每次实现都按此顺序执行这些阶段。当 rail 的引擎为“{{roles}}”时,每个阶段使用下方配置的引擎——每个阶段可以有不同的提供商、模型和推理强度。若在 rail 上选择具体引擎,则所有阶段都在该引擎上运行。`,host:`主机`,noCommand:`无命令`,inherits:`继承主引擎`,inheritsDeveloper:`继承开发者`,open:`展开`,collapse:`收起`,groups:{core:{title:`核心流水线`,hint:`在每次实现中运行:规划、构建、验证、修复、评审。`},loop:{title:`循环步骤`,hint:`包裹运行的 rail 循环(验证 → 决策 → 修复)以及自定义循环的 AI 步骤;未设置时继承主引擎。`,chip:`rail 循环`}},phases:{architect:{name:`架构师`,purpose:`阅读代码并编写提案、设计与任务。`},developer:{name:`开发者`,purpose:`带测试地实现任务。`},verification:{name:`验证`,purpose:`主机运行你的检查;失败会返回给开发者。`},fixer:{name:`修复者`,purpose:`修正验证或评审驳回的内容;未配置时继承开发者。`},reviewer:{name:`审查者`,purpose:`对照规格与证据检查结果。`},verifier:{name:`校验者`,purpose:`循环中的 verify、fix 与自定义 AI 步骤。`},decider:{name:`决策者`,purpose:`读取裁定并决定循环的下一步。`}}},D={title:`修复者引擎`,inherit:`继承开发者`,own:`独立引擎`,hint:`仅在修正轮次运行:验证失败或评审被驳回之后;首次实现仍由开发者完成。当开发者是廉价的本地模型时,在此使用更强或云端模型更划算。`},O={title:`护栏`,intro:`宿主在本地模型周围施加的流程规则,防止小模型跑偏。默认全部开启;只有在需要微调流程时才关闭某一项。CLI 提供商永不受影响。`,unsupported:`此 Core 安装未提供可配置的护栏。请更新 Core 以进行调整;内置规则仍然生效。`,active:`{{total}} 项中 {{on}} 项已启用`,reset:`恢复默认`,phases:{architect:`架构师`,developer:`开发者`,host:`宿主`},unknown:`由更新版本的 Core 新增的护栏;此应用尚无对应描述。`,items:{"plan-validation":{title:`经过校验的任务计划`,description:`拒绝指向 openspec/、把裸文件名列为任务、任务/分组数量相对规格过少或验收标准未覆盖的计划;架构师会重试。`,why:`含糊或不完整的计划是小型开发者模型写出桩代码的头号原因。`},"genuine-blocking-question":{title:`只允许真正的阻塞问题`,description:`架构师只能用以“?”结尾的真实问题暂停运行,绝不能用复制的示例文本。`,why:`小模型会照搬提示词占位符,导致每次运行都被阻塞。`},"plan-language-hint":{title:`按仓库语言规划`,description:`告知架构师主要语言,使任务文件名带有正确的扩展名。`,why:`在 TypeScript 仓库上生成 JS 计划会让任务无法勾选。`},"frozen-plan-writes":{title:`规划产物已冻结`,description:`开发者不能写入 openspec/;计划归宿主所有。`,why:`模型会通过修改计划而不是代码来“实现”功能。`},"primary-language":{title:`主要语言提醒`,description:`每个任务组都会被告知仓库的主要语言;新文件应使用该语言。`,why:`防止用另一种语言做第二套实现。`},"duplicate-sibling":{title:`跨语言不允许孪生模块`,description:`当 board.ts 已存在时拒绝 board.js;请扩展现有模块。`,why:`孪生模块都会编译,而测试会导入错误的那个。`},"one-test-per-module":{title:`每个模块一个测试文件`,description:`当 board.test.ts 已存在时拒绝 board.tick.test.ts;请扩展它。`,why:`否则每轮修正都会新增一个测试套件。`},"empty-write":{title:`禁止空覆盖`,description:`拒绝用空内容覆盖非空文件;请写入完整内容或打补丁。`,why:`一次“清理”曾把 index.ts 变成 0 行。`},"evidence-gated-ticking":{title:`有证据才勾选任务`,description:`指明文件的任务只有在文件存在且不是桩代码时才算完成(接受同类扩展名)。`,why:`否则“完成”只是一句声明,验证时无物可测。`},"inventory-retry":{title:`用真实清单重试`,description:`当模型声称仓库为空而放弃(实际并非如此)时,带上文件列表重试一次。`,why:`以低成本给第二次机会,而不是失败的步骤。`},"synthetic-corrections":{title:`把反馈变成任务`,description:`当所有任务都已勾选但审查/验证失败时,把反馈转成具体的修正任务。`,why:`否则开发者会回答“已经完成”,什么都不会改变。`},"silent-group-closure":{title:`关闭沉默的分组并保留其文件`,description:`模型停止响应的分组会被关闭,计入其写入的文件并保留任务为未完成,而不是让整个运行失败。`,why:`一个 9B 模型写了五个模块后沉默,导致整个运行失败。`},"environment-repair":{title:`宿主修复环境`,description:`缺失的依赖或测试工具(npm install、ts-jest、@types/jest、Jest 配置模块)由宿主安装,然后重新验证一次。`,why:`模型无法修复环境,只会在尝试中耗尽修正次数。`},"lockfile-repair":{title:`丢弃手写的锁文件`,description:`模型编造的 package-lock.json(EINTEGRITY/ETARGET)会被删除,并重试安装一次。`,why:`编造的哈希永远无法安装。`},"verify-idle-timeout":{title:`终止挂起的测试`,description:`5 分钟无输出的验证命令会被终止,并报告为疑似挂起(附最后输出)。`,why:`否则测试里的 while 循环会把运行拖到 15 分钟上限。`},"verify-per-group":{title:`每组后验证`,description:`在每个任务组完成后立即运行仓库自身的测试命令;失败时趁该组上下文仍新鲜进行一轮就地修复。`,why:`最后一次面对五个损坏的测试套件,比逐个修复难得多。`},"test-reachability":{title:`每个新测试都必须真正运行`,description:"开发者写下、但仓库测试命令从未执行的测试文件(逐个列举文件的 `test` 脚本漏掉了新文件)会使验证失败并指出确切文件——先在任务组层面,再在主机验证时。",why:`一个 622 行、含六个失败用例的测试套件曾因从未被运行而“绿灯”交付。`},"exit-code-honesty":{title:`不信任报告失败却返回 0 的退出码`,description:'验证命令以 0 退出但输出中打印了失败(`FAIL:` 行、"3 failed"、AssertionError)时视为失败,并交给修复者,同时指出测试框架本身是缺陷。',why:`一个从不设置非零退出码的手写测试运行器曾把三个失败测试当作通过交付。`}}},k=`未保存的更改`,A={title:`自定义角色`,hint:`为工作流角色定义可复用的指令和明确的权限。`,unsupported:`更新 Core 后即可编辑自定义角色。`,remove:`删除 {{id}}`,access:`源代码访问权限`,read:`只读`,write:`读写`,artifacts:`OpenSpec 工件访问权限`,none:`无`,tasks:`仅任务复选框`,all:`该变更的所有工件`,skill:`OpenSpec 技能`,noSkill:`不绑定技能`,prompt:`角色指令`,id:`角色 ID`,add:`添加角色`,invalidId:`使用以字母开头的唯一小写 ID,最多包含64个字母、数字或连字符。内置 ID 为保留名称。`,escalationHint:`仅允许的协议修复可以使用升级模型,不会增加重试次数。`},j={title:`运行指令`,hint:`Core 会保存这些指令,供下一个符合条件的代理回合使用。发送指令不会回答问题或授予批准。`,label:`补充指令`,send:`发送指令`,accepted:`Core 已接收,等待代理使用。`,pending:`等待代理回合`,consumed:`代理已使用`,counts:`待处理:{{pending}} · 已使用:{{consumed}}`,failed:`无法发送指令。请重试以确认同一条消息。`,unavailable:`无法获取接收记录详情。`,unreported:`此 Core 版本不报告使用状态。`,truncated:`仅显示最近的接收记录和待处理消息。`},M={title:`Core 角色默认值`,hint:`这些文件默认值适用于新工作流。项目的显式设置优先;已保存的运行保留其固定配置。`,invalid:`更改角色字段前,请先在编辑器中修正 YAML 头部。`,escalationEffort:`更高级模型的推理强度`},N={title:`历史保留`,description:`删除已过期的执行历史和未使用的 Core 版本。已删除的历史无法恢复执行或创建分支。运行中、可恢复的执行和待交付内容仍受保护;任务日志与费用记录会保留。`,forever:`永久保留历史`,days:`保留天数`,save:`保存保留设置`,preview:`预览清理`,collect:`删除过期历史`,previewSummary:`可清理:{{runs}} 条历史和 {{packages}} 个未使用的 Core 版本。`,collectedSummary:`已过期:{{runs}} 条历史。已删除:{{packages}} 个未使用的 Core 版本。`,more:`另有 {{count}} 次执行。`,failed:`无法查看或更新保留设置。`,expired:`此执行历史已根据项目策略过期。任务日志和费用记录仍然可用。`,loading:`正在加载保留策略…`,states:{protected:`已保留`,eligible:`可清理`,expired:`已过期`,cleanup_pending:`等待清理`,busy:`使用中`,error:`检查失败`},reasons:{disabled:`永久保留`,recoverable:`仍可恢复`,active:`执行中`,human_pending:`等待人工回复`,interrupted_writes:`中断的写入需要检查`,delivery_pending:`等待交付`,fork_pending:`仍有依赖分支`,unknown_terminal_time:`完成时间未知`,within_retention:`仍在保留期限内`}},P={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,customRoles:A,steering:j,studioRole:M,retention:N};export{m as agents,u as approvalBeforeArchive,b as architect,f as cliNames,A as customRoles,P 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,N as retention,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,j as steering,M as studioRole,e as title,a as unavailable,k as unsavedChanges,g as verification};
@@ -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`,expired:`Expiré`},question:`L'architecte demande :`,answerLabel:`Votre réponse`,answerPlaceholder:`Répondez à la question ; l'architecte poursuit avec elle.`,answer:`Répondre et reprendre`,viewLog:`Voir le journal du job`,implementation:`Implémentation`,preserveProgress:`Reprendre à la phase indiquée en conservant le travail et les paramètres enregistrés.`,reviewDelivery:`Implémentation terminée. Vérifiez le résultat dans le journal avant la livraison ; cette reprise ne l’a pas publié.`,prepareDelivery:`Préparer la livraison`,dismiss:`Ignorer`,selectRecovery:`Sélectionnez les tentatives interrompues à reprendre`},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:`Rôles personnalisés`,hint:`Définissez des instructions réutilisables et des permissions explicites pour les rôles du workflow.`,unsupported:`Mettez Core à jour pour modifier les rôles personnalisés.`,remove:`Supprimer {{id}}`,access:`Accès au code`,read:`Lecture seule`,write:`Lecture et écriture`,artifacts:`Accès aux artefacts OpenSpec`,none:`Aucun`,tasks:`Cases des tâches uniquement`,all:`Tous les artefacts du changement`,skill:`Skill OpenSpec`,noSkill:`Aucun skill associé`,prompt:`Instructions du rôle`,id:`ID du rôle`,add:`Ajouter un rôle`,invalidId:`Utilisez un ID unique en minuscules commençant par une lettre, avec au plus 64 lettres, chiffres ou tirets. Les IDs intégrés sont réservés.`,escalationHint:`Seule une réparation autorisée du protocole peut utiliser le modèle supérieur. Aucun nouvel essai n’est ajouté.`},j={title:`Instructions d’exécution`,hint:`Core conserve ces instructions pour le prochain tour d’agent compatible. Leur envoi ne répond pas aux questions et ne donne aucune approbation.`,label:`Instructions supplémentaires`,send:`Envoyer les instructions`,accepted:`Reçues par Core ; en attente de traitement.`,pending:`En attente d’un tour d’agent`,consumed:`Prises en compte par un agent`,counts:`En attente : {{pending}} · Traitées : {{consumed}}`,failed:`Impossible d’envoyer les instructions. Réessayez pour confirmer le même message.`,unavailable:`Les détails des reçus sont indisponibles.`,unreported:`Cette version de Core ne signale pas la prise en compte.`,truncated:`Seuls les reçus récents et les messages en attente sont affichés.`},M={title:`Valeurs par défaut du rôle Core`,hint:`Ces valeurs du fichier s’appliquent aux nouveaux workflows. Les paramètres explicites du projet sont prioritaires ; les exécutions enregistrées conservent leurs paramètres figés.`,invalid:`Corrigez l’en-tête YAML dans l’éditeur avant de modifier les champs du rôle.`,escalationEffort:`Effort de raisonnement du modèle supérieur`},N={title:`Conservation de l’historique`,description:`Supprimez les historiques expirés et les versions de Core inutilisées. Un historique supprimé ne peut plus être repris ni bifurqué. Les exécutions actives ou récupérables et les livraisons en attente restent protégées ; les journaux et les coûts sont conservés.`,forever:`Conserver indéfiniment`,days:`Jours de conservation`,save:`Enregistrer la conservation`,preview:`Aperçu du nettoyage`,collect:`Supprimer les historiques expirés`,previewSummary:`Éligibles : {{runs}} historiques et {{packages}} versions de Core inutilisées.`,collectedSummary:`Expirés : {{runs}} historiques. Supprimées : {{packages}} versions de Core inutilisées.`,more:`{{count}} exécutions supplémentaires.`,failed:`Impossible de consulter ou modifier la conservation.`,expired:`Cet historique a expiré selon la politique du projet. Le journal et la comptabilité restent disponibles.`,loading:`Chargement de la politique…`,states:{protected:`Conservé`,eligible:`Éligible`,expired:`Expiré`,cleanup_pending:`Nettoyage en attente`,busy:`Utilisé`,error:`Échec de vérification`},reasons:{disabled:`Conservation indéfinie`,recoverable:`Récupération encore possible`,active:`Exécution active`,human_pending:`Réponse humaine attendue`,interrupted_writes:`Écritures interrompues à examiner`,delivery_pending:`Livraison en attente`,fork_pending:`Bifurcation dépendante restante`,unknown_terminal_time:`Date de fin inconnue`,within_retention:`Durée de conservation non dépassée`}},P={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,customRoles:A,steering:j,studioRole:M,retention:N};export{m as agents,u as approvalBeforeArchive,b as architect,f as cliNames,A as customRoles,P 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,N as retention,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,j as steering,M as studioRole,e as title,a as unavailable,k as unsavedChanges,g as verification};
@@ -0,0 +1 @@
1
+ var e={loadingAgent:`A carregar agente…`,modeCreate:`Novo agente personalizado`,modeEdit:`Editar agente personalizado`,create:`Criar`,unsaved:`● não guardado`,resumeAiEdit:`Retomar AI Edit`,resumeAiEditTitle:`Devolver este rascunho ao overlay de AI Edit`,loadingAiDraft:`a carregar rascunho de IA…`,testButton:`Testar`,testButtonTitle:`Testar este agente com uma tarefa de exemplo`,historyButton:`Histórico`,historyButtonTitle:`Histórico de versões`,deleteConfirm:{title:`Eliminar o agente "{{agentId}}"?`,description:`Isto remove o .md do disco. O histórico de versões mantém-se na BD — use um novo agente personalizado se quiser recuperar o corpo mais tarde.`},errors:{loadDraftFailed:`Falha ao carregar o rascunho: {{status}}`,loadFailed:`Falha ao carregar: {{status}}`,saveFailed:`Falha ao guardar: {{status}}`,deleteFailed:`Falha ao eliminar: {{status}}`,testFailed:`Falha no teste: {{status}}`},toasts:{agentCreated:`Agente criado`,agentSaved:`Agente guardado`,agentDeleted:`Agente eliminado`,createFailed:`Falha ao criar o agente`,saveFailed:`Falha ao guardar o agente`,deleteFailed:`Falha ao eliminar o agente`},validation:{namePattern:`O nome deve começar por <code>custom-</code> e conter apenas letras minúsculas, dígitos e hífenes.`,missingFrontmatter:`Falta o frontmatter YAML (requer <code>---</code> de abertura na primeira linha).`},sampleTasks:{pick:`— escolha uma tarefa de exemplo —`,terraform:`Terraform: bucket S3 público`,sqlInjection:`Revisão de código: injeção de SQL`,accessibility:`Frontend: acessibilidade`,schemaChange:`Dados: alteração de schema`,slowQuery:`Desempenho: query lenta`},testPane:{header:`Testar agente`,sampleTaskLabel:`Tarefa de exemplo`,placeholder:`Descreva o que o agente deve fazer, ou escolha um exemplo acima.`,run:`Executar`,running:`A executar…`,sandboxNote:`Em sandbox; nenhum ficheiro é escrito.`,tokens_one:`<mono>{{count}}</mono> token`,tokens_other:`<mono>{{count}}</mono> tokens`,tokensUnavailable:`Utilização de tokens indisponível`,emptyHint:`Execute uma tarefa de exemplo contra o rascunho atual. O resultado aparece aqui.`},versions:{header:`Histórico de versões`,empty:`Não há versões anteriores registadas para este agente.`,restoreHint:`Clique numa versão para restaurar o respetivo corpo no editor (ainda é preciso Guardar).`}},t={eyebrow:`AI Edit`,headline:`Refine o seu agente`,streamingHeadline:`A refinar o seu agente…`,placeholderInitial:`Descreva como refinar este agente…`,placeholderFollowUp:`Envie um refinamento de seguimento…`,viewCurrentBody:`Ver o corpo atual do agente`,appliedAsVersion:`Aplicado como versão {{version}}.`,openInStudio:`Abrir rascunho no Studio para edição manual`,chips:{tightenTools:`Restringir a lista de ferramentas`,stricterPersonality:`Tornar a personalidade mais rigorosa`,workflowSection:`Adicionar uma secção de protocolo de Workflow`,sharpenDescription:`Encurtar e afinar a descrição`,matchDeveloperStyle:`Alinhar com o estilo do sr-developer`}},n={validation:{missingBaseline:`Falta o agente base obrigatório: {{agent}}`,multipleDefaultRules:`O routing pode ter no máximo uma regra default (encontradas {{found}})`,defaultRuleNotLast:`A regra de routing default tem de ser a última entrada`,unknownRoutingAgent:`O routing referencia um agente que não está na cadeia: {{agent}}`,invalidTags:`A regra de routing {{agent}} tem tags inválidas: {{tags}} (use kebab-case em minúsculas)`},validationSummary_one:`{{count}} problema de validação`,validationSummary_other:`{{count}} problemas de validação`,nameLabel:`Nome`,descriptionLabel:`Descrição`,descriptionPlaceholder:`Para que serve este perfil?`,orchestrator:{heading:`Orquestrador`,description:`Modelo de topo para o comando implement. Cada rail que executa herda a cadeia de agentes deste perfil.`},agentChain:{heading:`Cadeia de agentes ({{n}})`,addTitle:`Adicionar um agente do catálogo`,addDisabledTitle:`Todos os agentes do catálogo já estão na cadeia`,pickFromCatalog:`Escolher do catálogo ({{n}} disponíveis)`,emptyCatalog:`Não há mais agentes no catálogo. Adicione agentes personalizados no separador Catálogo de Agentes.`,kind:{upstream:`upstream`,custom:`personalizado`}},routing:{heading:`Routing ({{n}})`,addDefault:`Adicionar default`,addRule:`Adicionar regra`,needAgentsTitle:`Adicione pelo menos um agente antes de criar regras de routing`,explainer:`Vence a primeira regra correspondente. As regras são editáveis e removíveis, e o catch-all default fica em último quando presente. Se deixar o routing vazio, o pipeline recorre ao primeiro agente de tipo developer na cadeia.`,untargetedTitle:`Agentes sem destino na cadeia`,untargetedDetail:`Nenhuma regra de routing aponta para: <mono>{{agents}}</mono>. Adicione uma regra de tag ou redirecione a regra default se quiser que sejam executados.`},agentRow:{dragTitle:`Arraste para reordenar`,dragHandleAria:`Pega de arrasto`,pinnedFirst:`primeiro`,pinnedFirstTitle:`Fixado na primeira posição — o pipeline começa sempre com o sr-architect`,pinnedLast:`último`,pinnedLastTitle:`Fixado na última posição — a fase de merge é sempre a última a executar`,required:`obrigatório`,requiredRemoveTitle:`Agente base obrigatório — o pipeline depende desta linha`},routingRow:{everythingElse:`tudo o resto`,defaultTargetAria:`Destino de routing default (core, só de leitura)`,defaultTargetTitle:`Fallback core — não editável`,targetAria:`Destino de routing da regra {{ordinal}}`,editTitle:`Editar regra`,editAria:`Editar regra {{ordinal}}`,moveDown:`Mover para baixo`,moveUp:`Mover para cima`,coreDefaultBadge:`core · default`,coreDefaultTitle:`Fallback core — a regra de último recurso do pipeline, fixada no sr-developer`},legacyWorkflowNotice:`As definições do orquestrador e do encaminhamento aplicam-se aos workflows antigos. Os workflows Core usam os papéis selecionados no editor de loops.`},r={coreBadge:`core`,agents:{"sr-architect":{name:`Arquiteto`,description:`Design de arquitetura, specs de alterações, planeamento da implementação`},"sr-developer":{name:`Developer`,description:`Implementação full-stack em todas as camadas`},"sr-reviewer":{name:`Revisor`,description:`Revisão de código geral — o gate de qualidade final`}},coreTeamTitle:`Sua equipe de agentes`,coreTeamNote:`Esses três agentes principais são sempre instalados — nada a escolher. Adicione especialistas depois com perfis e agentes custom-*.`},i={"security-reviewer":{label:`Revisor de Segurança`,blurb:`Encontra bugs de autenticação, injeção e exposição de dados num diff antes do envio.`},"performance-profiler":{label:`Profiler de Desempenho`,blurb:`Encontra hot paths, queries N+1, loops sem limite, bundles inchados.`},"data-engineer":{label:`Engenheiro de Dados`,blurb:`Migrações de schema, pipelines ETL, transformações de dados.`},"ui-ux-polisher":{label:`Polidor de UI / UX`,blurb:`Acessibilidade, espaçamento, estados vazios, tratamento de erros.`},"api-designer":{label:`Designer de API`,blurb:`Versionamento, paginação, formatos de erro, retrocompatibilidade.`},"database-architect":{label:`Arquiteto de Base de Dados`,blurb:`Índices, normalização vs desnormalização, formatos de queries.`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD, observabilidade, preparação para incidentes, runbooks.`},"mobile-engineer":{label:`Engenheiro Mobile`,blurb:`Padrões iOS + Android, offline-first, atenção à bateria.`},"ml-engineer":{label:`Engenheiro de ML`,blurb:`Pipelines, avaliação, reprodutibilidade, monitorização de drift.`},"accessibility-auditor":{label:`Auditor de Acessibilidade`,blurb:`Revisão WCAG 2.2: contraste, foco, ARIA, teclado.`},"qa-test-strategist":{label:`Estratega de Testes QA`,blurb:`Planos de teste: divisão unitários / integração / E2E, lacunas de cobertura.`},"load-tester":{label:`Tester de Carga / Stress`,blurb:`Planeamento de capacidade, cenários k6 / Locust, caça aos gargalos.`},"integration-tester":{label:`Tester de Integração`,blurb:`Contratos entre serviços, fixtures, redução de testes instáveis.`},"regression-hunter":{label:`Caçador de Regressões`,blurb:`Faz bisect, reproduz e escreve primeiro o teste que falha.`},"data-analyst":{label:`Analista de Dados`,blurb:`Transforma perguntas vagas em queries + conclusões legíveis.`},"etl-reviewer":{label:`Revisor de Pipelines ETL`,blurb:`Idempotência, backfills, dados que chegam tarde.`},"dashboard-designer":{label:`Designer de Dashboards`,blurb:`Dashboards de leitura imediata, eixos honestos, uma ação por gráfico.`},"iac-reviewer":{label:`Revisor de IaC / Cloud`,blurb:`Terraform / CloudFormation: IAM, exposição pública, custos.`},"compliance-reviewer":{label:`Revisor de Conformidade`,blurb:`Verificações no âmbito do RGPD / SOC2 / HIPAA sobre fluxos de dados.`},"threat-modeler":{label:`Modelador de Ameaças`,blurb:`STRIDE / LINDDUN sobre diagramas de arquitetura.`},"product-manager":{label:`Product Manager`,blurb:`Enquadramento do problema, PRDs, priorização.`},"ux-researcher":{label:`Investigador de UX`,blurb:`Guiões de entrevista, planos de testes de usabilidade, síntese.`},"technical-writer":{label:`Redator Técnico`,blurb:`Documentação que realmente se lê — tutoriais, referências, changelogs.`},"design-reviewer":{label:`Revisor de Design System`,blurb:`Desvio de tokens, mau uso de componentes, consistência entre fluxos.`},"financial-analyst":{label:`Analista Financeiro`,blurb:`Unit economics, modelos de coortes, análise de cenários.`},"pricing-strategist":{label:`Estratega de Preços`,blurb:`Níveis, empacotamento, estudos de disposição a pagar.`},"market-researcher":{label:`Investigador de Mercado`,blurb:`TAM/SAM/SOM, mapas competitivos, segmentos de clientes.`},"ops-optimizer":{label:`Otimizador de Operações`,blurb:`Tempo de ciclo, deteção de gargalos, candidatos a automação.`},"seo-auditor":{label:`Auditor de SEO`,blurb:`SEO técnico + de conteúdo: indexabilidade, IA, correspondência de intenção.`},"growth-hacker":{label:`Experimentador de Growth`,blurb:`Diagnóstico de funil, experiências de lift, loops de ativação.`},"social-strategist":{label:`Estratega de Redes Sociais`,blurb:`Conteúdo adequado ao canal, calendário editorial, consistência de voz.`},"literature-reviewer":{label:`Revisor de Literatura`,blurb:`Resumos de revisões sistemáticas, grafos de citações, conflitos.`},"experiment-designer":{label:`Designer de Experiências`,blurb:`Hipóteses, controlos, tamanho da amostra, pré-registo.`},"statistical-analyst":{label:`Analista Estatístico`,blurb:`Escolhe o teste certo, reporta tamanhos de efeito, não apenas p-values.`},"scientific-writer":{label:`Redator Científico`,blurb:`Estrutura IMRaD, limites honestos, abstracts legíveis.`},"curriculum-designer":{label:`Designer de Currículos`,blurb:`Objetivos de aprendizagem → atividades → avaliação.`},"assessment-author":{label:`Autor de Avaliações`,blurb:`Itens que medem compreensão, não memorização.`},"tutor-explainer":{label:`Tutor / Explicador`,blurb:`Explicações simples à Feynman com exemplos resolvidos.`},"clinical-guideline-reviewer":{label:`Revisor de Diretrizes Clínicas`,blurb:`Compara a prática com as mais recentes diretrizes baseadas na evidência.`},"medical-summarizer":{label:`Sintetizador de Literatura Médica`,blurb:`Abstracts para clínicos: o que mudou, qualidade da evidência.`},"protocol-designer":{label:`Designer de Protocolos`,blurb:`Protocolos clínicos: endpoints, critérios de inclusão, segurança.`},"contract-reviewer":{label:`Revisor de Contratos`,blurb:`Sinaliza cláusulas de risco; explica o que realmente significam.`},"privacy-counsel":{label:`Consultor de Privacidade`,blurb:`RGPD / CCPA / LGPD aplicados a fluxos concretos.`},"copy-editor":{label:`Editor de Texto`,blurb:`Edições linha a linha: voz, cadência, cortar 30% sem perder o sentido.`},"brand-voice-guardian":{label:`Guardião da Voz da Marca`,blurb:`Aplica as regras de voz; deteta formulações fora da marca.`},"creative-brainstormer":{label:`Brainstormer Criativo`,blurb:`Divergente e depois convergente; mata vacas sagradas com delicadeza.`},"hiring-interviewer":{label:`Entrevistador de Recrutamento`,blurb:`Entrevistas estruturadas, focadas no sinal, conscientes de vieses.`},"strategic-planner":{label:`Planeador Estratégico`,blurb:`Objetivos → apostas → métricas; poda projetos de estimação.`},"coach-1on1":{label:`Coach de 1:1`,blurb:`Ajuda a enquadrar feedback, progressão de carreira, conversas difíceis.`},"meeting-facilitator":{label:`Facilitador de Reuniões`,blurb:`Agendas que produzem decisões, não atualizações.`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({agentSelector:()=>a,default:()=>s,profileEditor:()=>i,refine:()=>r,studio:()=>n,templates:()=>o}),n={loadingAgent:`Loading agent…`,modeCreate:`New custom agent`,modeEdit:`Edit custom agent`,create:`Create`,unsaved:`● unsaved`,resumeAiEdit:`Resume AI Edit`,resumeAiEditTitle:`Hand this draft back to the AI Edit overlay`,loadingAiDraft:`loading AI draft…`,testButton:`Test`,testButtonTitle:`Test this agent against a sample task`,historyButton:`History`,historyButtonTitle:`Version history`,deleteConfirm:{title:`Delete agent "{{agentId}}"?`,description:`This removes the .md from disk. Version history stays in the DB — use a fresh custom agent if you want to recover the body later.`},errors:{loadDraftFailed:`Load draft failed: {{status}}`,loadFailed:`Load failed: {{status}}`,saveFailed:`Save failed: {{status}}`,deleteFailed:`Delete failed: {{status}}`,testFailed:`Test failed: {{status}}`},toasts:{agentCreated:`Agent created`,agentSaved:`Agent saved`,agentDeleted:`Agent deleted`,createFailed:`Failed to create agent`,saveFailed:`Failed to save agent`,deleteFailed:`Failed to delete agent`},validation:{namePattern:`Name must start with <code>custom-</code> and contain only lowercase letters, digits, and hyphens.`,missingFrontmatter:`Missing YAML frontmatter (needs opening <code>---</code> on the first line).`},sampleTasks:{pick:`— pick a sample task —`,terraform:`Terraform: public S3 bucket`,sqlInjection:`Code review: SQL injection`,accessibility:`Frontend: accessibility`,schemaChange:`Data: schema change`,slowQuery:`Performance: slow query`},testPane:{header:`Test agent`,sampleTaskLabel:`Sample task`,placeholder:`Describe what the agent should do, or pick a sample above.`,run:`Run`,running:`Running…`,sandboxNote:`Sandboxed; no files written.`,tokens_one:`<mono>{{count}}</mono> token`,tokens_other:`<mono>{{count}}</mono> tokens`,tokensUnavailable:`Token usage unavailable`,emptyHint:`Run a sample task against the current draft. Output appears here.`},versions:{header:`Version history`,empty:`No prior versions recorded for this agent.`,restoreHint:`Click a version to restore its body into the editor (you still need to Save).`}},r={eyebrow:`AI Edit`,headline:`Refine your agent`,streamingHeadline:`Refining your agent…`,placeholderInitial:`Describe how to refine this agent…`,placeholderFollowUp:`Send a follow-up refinement…`,viewCurrentBody:`View current agent body`,appliedAsVersion:`Applied as version {{version}}.`,openInStudio:`Open draft in Studio for manual editing`,chips:{tightenTools:`Tighten the tool list`,stricterPersonality:`Make the personality stricter`,workflowSection:`Add a Workflow protocol section`,sharpenDescription:`Shorten and sharpen the description`,matchDeveloperStyle:`Match the sr-developer style`}},i={validation:{missingBaseline:`Missing required baseline agent: {{agent}}`,multipleDefaultRules:`Routing may have at most one default rule (found {{found}})`,defaultRuleNotLast:`The default routing rule must be the last entry`,unknownRoutingAgent:`Routing references agent not in the chain: {{agent}}`,invalidTags:`Routing rule {{agent}} has invalid tags: {{tags}} (use lowercase kebab-case)`},validationSummary_one:`{{count}} validation issue`,validationSummary_other:`{{count}} validation issues`,nameLabel:`Name`,descriptionLabel:`Description`,descriptionPlaceholder:`What is this profile for?`,orchestrator:{heading:`Orchestrator`,description:`Top-level model for the implement command. Every rail it runs inherits this profile's agent chain.`},agentChain:{heading:`Agent chain ({{n}})`,addTitle:`Add an agent from the catalog`,addDisabledTitle:`All catalog agents are already in the chain`,pickFromCatalog:`Pick from catalog ({{n}} available)`,emptyCatalog:`No more agents in the catalog. Add custom agents from the Agents Catalog tab.`,kind:{upstream:`upstream`,custom:`custom`}},routing:{heading:`Routing ({{n}})`,addDefault:`Add default`,addRule:`Add rule`,needAgentsTitle:`Add at least one agent before creating routing rules`,explainer:`First matching rule wins. Rules are editable and removable, and the default catch-all stays last when present. If you leave routing empty, the pipeline falls back to the first developer-shaped agent in the chain.`,untargetedTitle:`Untargeted agents in the chain`,untargetedDetail:`No routing rule points to: <mono>{{agents}}</mono>. Add a tag rule or retarget the default rule if you want them to run.`},agentRow:{dragTitle:`Drag to reorder`,dragHandleAria:`Drag handle`,pinnedFirst:`first`,pinnedFirstTitle:`Pinned to first position — pipeline always starts with sr-architect`,pinnedLast:`last`,pinnedLastTitle:`Pinned to last position — merge phase always runs last`,required:`required`,requiredRemoveTitle:`Required baseline agent — the pipeline depends on this row`},routingRow:{everythingElse:`everything else`,defaultTargetAria:`Default routing target (core, read-only)`,defaultTargetTitle:`Core fallback — not editable`,targetAria:`Routing target for rule {{ordinal}}`,editTitle:`Edit rule`,editAria:`Edit rule {{ordinal}}`,moveDown:`Move down`,moveUp:`Move up`,coreDefaultBadge:`core · default`,coreDefaultTitle:`Core fallback — the pipeline's last-resort rule, pinned to sr-developer`},legacyWorkflowNotice:`Orchestrator and routing settings apply to legacy workflows. Core workflows use the roles selected in the Loop Builder.`},a={coreBadge:`core`,agents:{"sr-architect":{name:`Architect`,description:`Architecture design, change specs, implementation planning`},"sr-developer":{name:`Developer`,description:`Full-stack implementation across all layers`},"sr-reviewer":{name:`Reviewer`,description:`General code review — the final quality gate`}},coreTeamTitle:`Your agent team`,coreTeamNote:`These three core agents are always installed — nothing to choose. Add specialists later with profiles and custom-* agents.`},o={"security-reviewer":{label:`Security Reviewer`,blurb:`Finds auth, injection, and data-exposure bugs in a diff before it ships.`},"performance-profiler":{label:`Performance Profiler`,blurb:`Finds hot paths, N+1 queries, unbounded loops, bundle bloat.`},"data-engineer":{label:`Data Engineer`,blurb:`Schema migrations, ETL pipelines, data transformations.`},"ui-ux-polisher":{label:`UI / UX Polisher`,blurb:`Accessibility, spacing, empty states, error handling.`},"api-designer":{label:`API Designer`,blurb:`Versioning, pagination, error shapes, backward compatibility.`},"database-architect":{label:`Database Architect`,blurb:`Indexes, normalization vs denormalization, query shapes.`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD, observability, incident-readiness, runbooks.`},"mobile-engineer":{label:`Mobile Engineer`,blurb:`iOS + Android patterns, offline-first, battery-aware.`},"ml-engineer":{label:`ML Engineer`,blurb:`Pipelines, eval, reproducibility, drift monitoring.`},"accessibility-auditor":{label:`Accessibility Auditor`,blurb:`WCAG 2.2 review: contrast, focus, ARIA, keyboard.`},"qa-test-strategist":{label:`QA Test Strategist`,blurb:`Test plans: unit / integration / E2E split, coverage gaps.`},"load-tester":{label:`Load / Stress Tester`,blurb:`Capacity planning, k6 / Locust scenarios, bottleneck hunting.`},"integration-tester":{label:`Integration Tester`,blurb:`Cross-service contracts, fixtures, flake reduction.`},"regression-hunter":{label:`Regression Hunter`,blurb:`Bisects, repros, writes the failing test first.`},"data-analyst":{label:`Data Analyst`,blurb:`Turns vague questions into queries + readable findings.`},"etl-reviewer":{label:`ETL Pipeline Reviewer`,blurb:`Idempotency, backfills, late-arriving data.`},"dashboard-designer":{label:`Dashboard Designer`,blurb:`One-glance dashboards, honest axes, action-per-chart.`},"iac-reviewer":{label:`IaC / Cloud Reviewer`,blurb:`Terraform / CloudFormation: IAM, public exposure, costs.`},"compliance-reviewer":{label:`Compliance Reviewer`,blurb:`GDPR / SOC2 / HIPAA-adjacent checks on data flows.`},"threat-modeler":{label:`Threat Modeler`,blurb:`STRIDE / LINDDUN over architecture diagrams.`},"product-manager":{label:`Product Manager`,blurb:`Problem framing, PRDs, prioritization.`},"ux-researcher":{label:`UX Researcher`,blurb:`Interview scripts, usability test plans, synthesis.`},"technical-writer":{label:`Technical Writer`,blurb:`Docs that are actually read — tutorials, references, changelogs.`},"design-reviewer":{label:`Design System Reviewer`,blurb:`Token drift, component misuse, consistency across flows.`},"financial-analyst":{label:`Financial Analyst`,blurb:`Unit economics, cohort models, scenario analysis.`},"pricing-strategist":{label:`Pricing Strategist`,blurb:`Tiering, packaging, willingness-to-pay studies.`},"market-researcher":{label:`Market Researcher`,blurb:`TAM/SAM/SOM, competitive maps, customer segments.`},"ops-optimizer":{label:`Operations Optimizer`,blurb:`Cycle-time, bottleneck-finding, automation candidates.`},"seo-auditor":{label:`SEO Auditor`,blurb:`Technical + content SEO: indexability, IA, intent match.`},"growth-hacker":{label:`Growth Experimenter`,blurb:`Funnel diagnosis, lift experiments, activation loops.`},"social-strategist":{label:`Social Media Strategist`,blurb:`Channel-fit content, editorial calendar, voice consistency.`},"literature-reviewer":{label:`Literature Reviewer`,blurb:`Systematic review summaries, citation graphs, conflicts.`},"experiment-designer":{label:`Experiment Designer`,blurb:`Hypotheses, controls, sample size, pre-registration.`},"statistical-analyst":{label:`Statistical Analyst`,blurb:`Chooses the right test, reports effect sizes, not just p-values.`},"scientific-writer":{label:`Scientific Writer`,blurb:`IMRaD structure, honest limits, readable abstracts.`},"curriculum-designer":{label:`Curriculum Designer`,blurb:`Learning outcomes → activities → assessment.`},"assessment-author":{label:`Assessment Author`,blurb:`Items that measure understanding, not recall.`},"tutor-explainer":{label:`Tutor / Explainer`,blurb:`Feynman-style simple explanations with worked examples.`},"clinical-guideline-reviewer":{label:`Clinical Guideline Reviewer`,blurb:`Map practice against latest evidence-based guidelines.`},"medical-summarizer":{label:`Medical Literature Summarizer`,blurb:`Abstracts to clinicians: what changed, evidence quality.`},"protocol-designer":{label:`Protocol Designer`,blurb:`Clinical protocols: endpoints, inclusion criteria, safety.`},"contract-reviewer":{label:`Contract Reviewer`,blurb:`Flags risky clauses; explains what they actually mean.`},"privacy-counsel":{label:`Privacy Counsel`,blurb:`GDPR / CCPA / LGPD applied to concrete flows.`},"copy-editor":{label:`Copy Editor`,blurb:`Line edits: voice, cadence, cut 30% without losing meaning.`},"brand-voice-guardian":{label:`Brand Voice Guardian`,blurb:`Enforces voice rules; catches off-brand phrasing.`},"creative-brainstormer":{label:`Creative Brainstormer`,blurb:`Divergent then convergent; kills sacred cows politely.`},"hiring-interviewer":{label:`Hiring Interviewer`,blurb:`Structured interviews, signal-focused, bias-aware.`},"strategic-planner":{label:`Strategic Planner`,blurb:`Goals → bets → metrics; prunes pet projects.`},"coach-1on1":{label:`1:1 Coach`,blurb:`Helps frame feedback, career growth, difficult conversations.`},"meeting-facilitator":{label:`Meeting Facilitator`,blurb:`Agendas that produce decisions, not updates.`}},s={studio:n,refine:r,profileEditor:i,agentSelector:a,templates:o};export{t};
@@ -1 +1 @@
1
- var e={loadingAgent:`Caricamento agente…`,modeCreate:`Nuovo agente personalizzato`,modeEdit:`Modifica agente personalizzato`,create:`Crea`,unsaved:`● non salvato`,resumeAiEdit:`Riprendi AI Edit`,resumeAiEditTitle:`Riconsegna questa bozza all'overlay AI Edit`,loadingAiDraft:`caricamento bozza AI…`,testButton:`Test`,testButtonTitle:`Testa questo agente su un task di esempio`,historyButton:`Cronologia`,historyButtonTitle:`Cronologia versioni`,deleteConfirm:{title:`Eliminare l'agente "{{agentId}}"?`,description:`Rimuove il file .md dal disco. La cronologia versioni resta nel DB — usa un nuovo agente personalizzato se in seguito vuoi recuperare il corpo.`},errors:{loadDraftFailed:`Caricamento bozza non riuscito: {{status}}`,loadFailed:`Caricamento non riuscito: {{status}}`,saveFailed:`Salvataggio non riuscito: {{status}}`,deleteFailed:`Eliminazione non riuscita: {{status}}`,testFailed:`Test non riuscito: {{status}}`},toasts:{agentCreated:`Agente creato`,agentSaved:`Agente salvato`,agentDeleted:`Agente eliminato`,createFailed:`Creazione dell'agente non riuscita`,saveFailed:`Salvataggio dell'agente non riuscito`,deleteFailed:`Eliminazione dell'agente non riuscita`},validation:{namePattern:`Il nome deve iniziare con <code>custom-</code> e contenere solo lettere minuscole, cifre e trattini.`,missingFrontmatter:`Frontmatter YAML mancante (serve <code>---</code> di apertura sulla prima riga).`},sampleTasks:{pick:`— scegli un task di esempio —`,terraform:`Terraform: bucket S3 pubblico`,sqlInjection:`Code review: SQL injection`,accessibility:`Frontend: accessibilità`,schemaChange:`Dati: modifica dello schema`,slowQuery:`Performance: query lenta`},testPane:{header:`Testa l'agente`,sampleTaskLabel:`Task di esempio`,placeholder:`Descrivi cosa deve fare l'agente, oppure scegli un esempio qui sopra.`,run:`Esegui`,running:`In esecuzione…`,sandboxNote:`In sandbox; nessun file scritto.`,tokens_one:`<mono>{{count}}</mono> token`,tokens_other:`<mono>{{count}}</mono> token`,tokensUnavailable:`Utilizzo dei token non disponibile`,emptyHint:`Esegui un task di esempio sulla bozza corrente. L'output appare qui.`},versions:{header:`Cronologia versioni`,empty:`Nessuna versione precedente registrata per questo agente.`,restoreHint:`Clicca una versione per ripristinarne il corpo nell'editor (devi comunque salvare).`}},t={eyebrow:`AI Edit`,headline:`Rifinisci il tuo agente`,streamingHeadline:`Rifinitura dell'agente in corso…`,placeholderInitial:`Descrivi come rifinire questo agente…`,placeholderFollowUp:`Invia un'ulteriore rifinitura…`,viewCurrentBody:`Vedi il corpo attuale dell'agente`,appliedAsVersion:`Applicato come versione {{version}}.`,openInStudio:`Apri la bozza nello Studio per la modifica manuale`,chips:{tightenTools:`Restringi l'elenco dei tool`,stricterPersonality:`Rendi la personalità più rigorosa`,workflowSection:`Aggiungi una sezione di protocollo Workflow`,sharpenDescription:`Accorcia e affina la descrizione`,matchDeveloperStyle:`Allinea allo stile di sr-developer`}},n={validation:{missingBaseline:`Agente baseline obbligatorio mancante: {{agent}}`,multipleDefaultRules:`Il routing può avere al massimo una regola di default (trovate {{found}})`,defaultRuleNotLast:`La regola di routing di default deve essere l'ultima voce`,unknownRoutingAgent:`Il routing fa riferimento a un agente non presente nella catena: {{agent}}`,invalidTags:`La regola di routing {{agent}} ha tag non validi: {{tags}} (usa kebab-case minuscolo)`},validationSummary_one:`{{count}} problema di validazione`,validationSummary_other:`{{count}} problemi di validazione`,nameLabel:`Nome`,descriptionLabel:`Descrizione`,descriptionPlaceholder:`A cosa serve questo profilo?`,orchestrator:{heading:`Orchestratore`,description:`Modello di primo livello per entrambi i comandi. batch-implement delega a implement per ogni feature, quindi ogni rail che genera eredita la catena di agenti di questo profilo.`},agentChain:{heading:`Catena di agenti ({{n}})`,addTitle:`Aggiungi un agente dal catalogo`,addDisabledTitle:`Tutti gli agenti del catalogo sono già nella catena`,pickFromCatalog:`Scegli dal catalogo ({{n}} disponibili)`,emptyCatalog:`Nessun altro agente nel catalogo. Aggiungi agenti personalizzati dalla scheda Catalogo agenti.`,kind:{upstream:`upstream`,custom:`personalizzato`}},routing:{heading:`Routing ({{n}})`,addDefault:`Aggiungi default`,addRule:`Aggiungi regola`,needAgentsTitle:`Aggiungi almeno un agente prima di creare regole di routing`,explainer:`Vince la prima regola corrispondente. Le regole sono modificabili e rimovibili, e il catch-all di default resta ultimo quando presente. Se lasci il routing vuoto, la pipeline ricade sul primo agente di tipo developer nella catena.`,untargetedTitle:`Agenti senza target nella catena`,untargetedDetail:`Nessuna regola di routing punta a: <mono>{{agents}}</mono>. Aggiungi una regola con tag o cambia il target della regola di default se vuoi che vengano eseguiti.`},agentRow:{dragTitle:`Trascina per riordinare`,dragHandleAria:`Maniglia di trascinamento`,pinnedFirst:`primo`,pinnedFirstTitle:`Bloccato in prima posizione — la pipeline inizia sempre con sr-architect`,pinnedLast:`ultimo`,pinnedLastTitle:`Bloccato in ultima posizione — la fase di merge viene sempre eseguita per ultima`,required:`obbligatorio`,requiredRemoveTitle:`Agente baseline obbligatorio — la pipeline dipende da questa riga`},routingRow:{everythingElse:`tutto il resto`,defaultTargetAria:`Target di routing di default (core, sola lettura)`,defaultTargetTitle:`Fallback core — non modificabile`,targetAria:`Target di routing per la regola {{ordinal}}`,editTitle:`Modifica regola`,editAria:`Modifica regola {{ordinal}}`,moveDown:`Sposta giù`,moveUp:`Sposta su`,coreDefaultBadge:`core · default`,coreDefaultTitle:`Fallback core — la regola di ultima istanza della pipeline, fissata su sr-developer`}},r={coreBadge:`core`,agents:{"sr-architect":{name:`Architetto`,description:`Progettazione dell'architettura, spec di modifica, pianificazione dell'implementazione`},"sr-developer":{name:`Developer`,description:`Implementazione full-stack su tutti i layer`},"sr-reviewer":{name:`Reviewer`,description:`Code review generale — l'ultimo quality gate`}},coreTeamTitle:`Il tuo team di agenti`,coreTeamNote:`Questi tre agenti core vengono sempre installati — niente da scegliere. Aggiungi specialisti in seguito con profili e agenti custom-*.`},i={"security-reviewer":{label:`Security Reviewer`,blurb:`Trova bug di auth, injection ed esposizione di dati in un diff prima della release.`},"performance-profiler":{label:`Performance Profiler`,blurb:`Trova hot path, query N+1, loop senza limiti, bundle gonfiati.`},"data-engineer":{label:`Data Engineer`,blurb:`Migrazioni di schema, pipeline ETL, trasformazioni di dati.`},"ui-ux-polisher":{label:`Rifinitore UI / UX`,blurb:`Accessibilità, spaziature, stati vuoti, gestione degli errori.`},"api-designer":{label:`API Designer`,blurb:`Versioning, paginazione, formati di errore, retrocompatibilità.`},"database-architect":{label:`Architetto Database`,blurb:`Indici, normalizzazione vs denormalizzazione, forma delle query.`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD, observability, preparazione agli incident, runbook.`},"mobile-engineer":{label:`Mobile Engineer`,blurb:`Pattern iOS + Android, offline-first, attenzione alla batteria.`},"ml-engineer":{label:`ML Engineer`,blurb:`Pipeline, eval, riproducibilità, monitoraggio del drift.`},"accessibility-auditor":{label:`Auditor Accessibilità`,blurb:`Review WCAG 2.2: contrasto, focus, ARIA, tastiera.`},"qa-test-strategist":{label:`Stratega Test QA`,blurb:`Piani di test: suddivisione unit / integration / E2E, lacune di copertura.`},"load-tester":{label:`Load / Stress Tester`,blurb:`Capacity planning, scenari k6 / Locust, caccia ai colli di bottiglia.`},"integration-tester":{label:`Tester di Integrazione`,blurb:`Contratti tra servizi, fixture, riduzione dei test flaky.`},"regression-hunter":{label:`Cacciatore di Regressioni`,blurb:`Biseca, riproduce, scrive prima il test che fallisce.`},"data-analyst":{label:`Data Analyst`,blurb:`Trasforma domande vaghe in query + risultati leggibili.`},"etl-reviewer":{label:`Reviewer Pipeline ETL`,blurb:`Idempotenza, backfill, dati che arrivano in ritardo.`},"dashboard-designer":{label:`Dashboard Designer`,blurb:`Dashboard a colpo d'occhio, assi onesti, un'azione per grafico.`},"iac-reviewer":{label:`Reviewer IaC / Cloud`,blurb:`Terraform / CloudFormation: IAM, esposizione pubblica, costi.`},"compliance-reviewer":{label:`Compliance Reviewer`,blurb:`Controlli in ambito GDPR / SOC2 / HIPAA sui flussi di dati.`},"threat-modeler":{label:`Threat Modeler`,blurb:`STRIDE / LINDDUN sui diagrammi di architettura.`},"product-manager":{label:`Product Manager`,blurb:`Inquadramento del problema, PRD, prioritizzazione.`},"ux-researcher":{label:`UX Researcher`,blurb:`Script per interviste, piani di test di usabilità, sintesi.`},"technical-writer":{label:`Technical Writer`,blurb:`Doc che vengono letti davvero — tutorial, riferimenti, changelog.`},"design-reviewer":{label:`Reviewer Design System`,blurb:`Drift dei token, uso improprio dei componenti, coerenza tra i flussi.`},"financial-analyst":{label:`Analista Finanziario`,blurb:`Unit economics, modelli di coorte, analisi di scenario.`},"pricing-strategist":{label:`Stratega di Pricing`,blurb:`Tier, packaging, studi sulla disponibilità a pagare.`},"market-researcher":{label:`Ricercatore di Mercato`,blurb:`TAM/SAM/SOM, mappe competitive, segmenti di clientela.`},"ops-optimizer":{label:`Ottimizzatore di Operations`,blurb:`Tempi di ciclo, individuazione dei colli di bottiglia, candidati all'automazione.`},"seo-auditor":{label:`SEO Auditor`,blurb:`SEO tecnica + di contenuto: indicizzabilità, IA, match con l'intento.`},"growth-hacker":{label:`Sperimentatore di Growth`,blurb:`Diagnosi del funnel, esperimenti di lift, loop di attivazione.`},"social-strategist":{label:`Stratega Social Media`,blurb:`Contenuti adatti al canale, calendario editoriale, coerenza di voce.`},"literature-reviewer":{label:`Revisore di Letteratura`,blurb:`Sintesi di revisioni sistematiche, grafi di citazioni, conflitti.`},"experiment-designer":{label:`Progettista di Esperimenti`,blurb:`Ipotesi, controlli, dimensione del campione, pre-registrazione.`},"statistical-analyst":{label:`Analista Statistico`,blurb:`Sceglie il test giusto, riporta gli effect size, non solo i p-value.`},"scientific-writer":{label:`Redattore Scientifico`,blurb:`Struttura IMRaD, limiti onesti, abstract leggibili.`},"curriculum-designer":{label:`Progettista di Curriculum`,blurb:`Obiettivi di apprendimento → attività → valutazione.`},"assessment-author":{label:`Autore di Valutazioni`,blurb:`Item che misurano la comprensione, non la memoria.`},"tutor-explainer":{label:`Tutor / Divulgatore`,blurb:`Spiegazioni semplici in stile Feynman con esempi svolti.`},"clinical-guideline-reviewer":{label:`Revisore di Linee Guida Cliniche`,blurb:`Confronta la pratica con le ultime linee guida evidence-based.`},"medical-summarizer":{label:`Sintetizzatore di Letteratura Medica`,blurb:`Abstract per i clinici: cosa è cambiato, qualità dell'evidenza.`},"protocol-designer":{label:`Progettista di Protocolli`,blurb:`Protocolli clinici: endpoint, criteri di inclusione, sicurezza.`},"contract-reviewer":{label:`Revisore di Contratti`,blurb:`Segnala le clausole rischiose; spiega cosa significano davvero.`},"privacy-counsel":{label:`Consulente Privacy`,blurb:`GDPR / CCPA / LGPD applicati a flussi concreti.`},"copy-editor":{label:`Copy Editor`,blurb:`Editing riga per riga: voce, ritmo, taglia il 30% senza perdere significato.`},"brand-voice-guardian":{label:`Guardiano della Brand Voice`,blurb:`Fa rispettare le regole di voce; intercetta le frasi off-brand.`},"creative-brainstormer":{label:`Brainstormer Creativo`,blurb:`Prima divergente, poi convergente; abbatte i tabù con garbo.`},"hiring-interviewer":{label:`Intervistatore di Selezione`,blurb:`Colloqui strutturati, focalizzati sul segnale, attenti ai bias.`},"strategic-planner":{label:`Pianificatore Strategico`,blurb:`Obiettivi → scommesse → metriche; sfoltisce i pet project.`},"coach-1on1":{label:`Coach 1:1`,blurb:`Aiuta a impostare feedback, crescita professionale, conversazioni difficili.`},"meeting-facilitator":{label:`Facilitatore di Riunioni`,blurb:`Agende che producono decisioni, non aggiornamenti.`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};
1
+ var e={loadingAgent:`Caricamento agente…`,modeCreate:`Nuovo agente personalizzato`,modeEdit:`Modifica agente personalizzato`,create:`Crea`,unsaved:`● non salvato`,resumeAiEdit:`Riprendi AI Edit`,resumeAiEditTitle:`Riconsegna questa bozza all'overlay AI Edit`,loadingAiDraft:`caricamento bozza AI…`,testButton:`Test`,testButtonTitle:`Testa questo agente su un task di esempio`,historyButton:`Cronologia`,historyButtonTitle:`Cronologia versioni`,deleteConfirm:{title:`Eliminare l'agente "{{agentId}}"?`,description:`Rimuove il file .md dal disco. La cronologia versioni resta nel DB — usa un nuovo agente personalizzato se in seguito vuoi recuperare il corpo.`},errors:{loadDraftFailed:`Caricamento bozza non riuscito: {{status}}`,loadFailed:`Caricamento non riuscito: {{status}}`,saveFailed:`Salvataggio non riuscito: {{status}}`,deleteFailed:`Eliminazione non riuscita: {{status}}`,testFailed:`Test non riuscito: {{status}}`},toasts:{agentCreated:`Agente creato`,agentSaved:`Agente salvato`,agentDeleted:`Agente eliminato`,createFailed:`Creazione dell'agente non riuscita`,saveFailed:`Salvataggio dell'agente non riuscito`,deleteFailed:`Eliminazione dell'agente non riuscita`},validation:{namePattern:`Il nome deve iniziare con <code>custom-</code> e contenere solo lettere minuscole, cifre e trattini.`,missingFrontmatter:`Frontmatter YAML mancante (serve <code>---</code> di apertura sulla prima riga).`},sampleTasks:{pick:`— scegli un task di esempio —`,terraform:`Terraform: bucket S3 pubblico`,sqlInjection:`Code review: SQL injection`,accessibility:`Frontend: accessibilità`,schemaChange:`Dati: modifica dello schema`,slowQuery:`Performance: query lenta`},testPane:{header:`Testa l'agente`,sampleTaskLabel:`Task di esempio`,placeholder:`Descrivi cosa deve fare l'agente, oppure scegli un esempio qui sopra.`,run:`Esegui`,running:`In esecuzione…`,sandboxNote:`In sandbox; nessun file scritto.`,tokens_one:`<mono>{{count}}</mono> token`,tokens_other:`<mono>{{count}}</mono> token`,tokensUnavailable:`Utilizzo dei token non disponibile`,emptyHint:`Esegui un task di esempio sulla bozza corrente. L'output appare qui.`},versions:{header:`Cronologia versioni`,empty:`Nessuna versione precedente registrata per questo agente.`,restoreHint:`Clicca una versione per ripristinarne il corpo nell'editor (devi comunque salvare).`}},t={eyebrow:`AI Edit`,headline:`Rifinisci il tuo agente`,streamingHeadline:`Rifinitura dell'agente in corso…`,placeholderInitial:`Descrivi come rifinire questo agente…`,placeholderFollowUp:`Invia un'ulteriore rifinitura…`,viewCurrentBody:`Vedi il corpo attuale dell'agente`,appliedAsVersion:`Applicato come versione {{version}}.`,openInStudio:`Apri la bozza nello Studio per la modifica manuale`,chips:{tightenTools:`Restringi l'elenco dei tool`,stricterPersonality:`Rendi la personalità più rigorosa`,workflowSection:`Aggiungi una sezione di protocollo Workflow`,sharpenDescription:`Accorcia e affina la descrizione`,matchDeveloperStyle:`Allinea allo stile di sr-developer`}},n={validation:{missingBaseline:`Agente baseline obbligatorio mancante: {{agent}}`,multipleDefaultRules:`Il routing può avere al massimo una regola di default (trovate {{found}})`,defaultRuleNotLast:`La regola di routing di default deve essere l'ultima voce`,unknownRoutingAgent:`Il routing fa riferimento a un agente non presente nella catena: {{agent}}`,invalidTags:`La regola di routing {{agent}} ha tag non validi: {{tags}} (usa kebab-case minuscolo)`},validationSummary_one:`{{count}} problema di validazione`,validationSummary_other:`{{count}} problemi di validazione`,nameLabel:`Nome`,descriptionLabel:`Descrizione`,descriptionPlaceholder:`A cosa serve questo profilo?`,orchestrator:{heading:`Orchestratore`,description:`Modello di primo livello per il comando implement. Ogni rail che esegue eredita la catena di agenti di questo profilo.`},agentChain:{heading:`Catena di agenti ({{n}})`,addTitle:`Aggiungi un agente dal catalogo`,addDisabledTitle:`Tutti gli agenti del catalogo sono già nella catena`,pickFromCatalog:`Scegli dal catalogo ({{n}} disponibili)`,emptyCatalog:`Nessun altro agente nel catalogo. Aggiungi agenti personalizzati dalla scheda Catalogo agenti.`,kind:{upstream:`upstream`,custom:`personalizzato`}},routing:{heading:`Routing ({{n}})`,addDefault:`Aggiungi default`,addRule:`Aggiungi regola`,needAgentsTitle:`Aggiungi almeno un agente prima di creare regole di routing`,explainer:`Vince la prima regola corrispondente. Le regole sono modificabili e rimovibili, e il catch-all di default resta ultimo quando presente. Se lasci il routing vuoto, la pipeline ricade sul primo agente di tipo developer nella catena.`,untargetedTitle:`Agenti senza target nella catena`,untargetedDetail:`Nessuna regola di routing punta a: <mono>{{agents}}</mono>. Aggiungi una regola con tag o cambia il target della regola di default se vuoi che vengano eseguiti.`},agentRow:{dragTitle:`Trascina per riordinare`,dragHandleAria:`Maniglia di trascinamento`,pinnedFirst:`primo`,pinnedFirstTitle:`Bloccato in prima posizione — la pipeline inizia sempre con sr-architect`,pinnedLast:`ultimo`,pinnedLastTitle:`Bloccato in ultima posizione — la fase di merge viene sempre eseguita per ultima`,required:`obbligatorio`,requiredRemoveTitle:`Agente baseline obbligatorio — la pipeline dipende da questa riga`},routingRow:{everythingElse:`tutto il resto`,defaultTargetAria:`Target di routing di default (core, sola lettura)`,defaultTargetTitle:`Fallback core — non modificabile`,targetAria:`Target di routing per la regola {{ordinal}}`,editTitle:`Modifica regola`,editAria:`Modifica regola {{ordinal}}`,moveDown:`Sposta giù`,moveUp:`Sposta su`,coreDefaultBadge:`core · default`,coreDefaultTitle:`Fallback core — la regola di ultima istanza della pipeline, fissata su sr-developer`},legacyWorkflowNotice:`Le impostazioni dell’orchestratore e dell’instradamento si applicano ai workflow precedenti. I workflow Core usano i ruoli selezionati nell’editor dei loop.`},r={coreBadge:`core`,agents:{"sr-architect":{name:`Architetto`,description:`Progettazione dell'architettura, spec di modifica, pianificazione dell'implementazione`},"sr-developer":{name:`Developer`,description:`Implementazione full-stack su tutti i layer`},"sr-reviewer":{name:`Reviewer`,description:`Code review generale — l'ultimo quality gate`}},coreTeamTitle:`Il tuo team di agenti`,coreTeamNote:`Questi tre agenti core vengono sempre installati — niente da scegliere. Aggiungi specialisti in seguito con profili e agenti custom-*.`},i={"security-reviewer":{label:`Security Reviewer`,blurb:`Trova bug di auth, injection ed esposizione di dati in un diff prima della release.`},"performance-profiler":{label:`Performance Profiler`,blurb:`Trova hot path, query N+1, loop senza limiti, bundle gonfiati.`},"data-engineer":{label:`Data Engineer`,blurb:`Migrazioni di schema, pipeline ETL, trasformazioni di dati.`},"ui-ux-polisher":{label:`Rifinitore UI / UX`,blurb:`Accessibilità, spaziature, stati vuoti, gestione degli errori.`},"api-designer":{label:`API Designer`,blurb:`Versioning, paginazione, formati di errore, retrocompatibilità.`},"database-architect":{label:`Architetto Database`,blurb:`Indici, normalizzazione vs denormalizzazione, forma delle query.`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD, observability, preparazione agli incident, runbook.`},"mobile-engineer":{label:`Mobile Engineer`,blurb:`Pattern iOS + Android, offline-first, attenzione alla batteria.`},"ml-engineer":{label:`ML Engineer`,blurb:`Pipeline, eval, riproducibilità, monitoraggio del drift.`},"accessibility-auditor":{label:`Auditor Accessibilità`,blurb:`Review WCAG 2.2: contrasto, focus, ARIA, tastiera.`},"qa-test-strategist":{label:`Stratega Test QA`,blurb:`Piani di test: suddivisione unit / integration / E2E, lacune di copertura.`},"load-tester":{label:`Load / Stress Tester`,blurb:`Capacity planning, scenari k6 / Locust, caccia ai colli di bottiglia.`},"integration-tester":{label:`Tester di Integrazione`,blurb:`Contratti tra servizi, fixture, riduzione dei test flaky.`},"regression-hunter":{label:`Cacciatore di Regressioni`,blurb:`Biseca, riproduce, scrive prima il test che fallisce.`},"data-analyst":{label:`Data Analyst`,blurb:`Trasforma domande vaghe in query + risultati leggibili.`},"etl-reviewer":{label:`Reviewer Pipeline ETL`,blurb:`Idempotenza, backfill, dati che arrivano in ritardo.`},"dashboard-designer":{label:`Dashboard Designer`,blurb:`Dashboard a colpo d'occhio, assi onesti, un'azione per grafico.`},"iac-reviewer":{label:`Reviewer IaC / Cloud`,blurb:`Terraform / CloudFormation: IAM, esposizione pubblica, costi.`},"compliance-reviewer":{label:`Compliance Reviewer`,blurb:`Controlli in ambito GDPR / SOC2 / HIPAA sui flussi di dati.`},"threat-modeler":{label:`Threat Modeler`,blurb:`STRIDE / LINDDUN sui diagrammi di architettura.`},"product-manager":{label:`Product Manager`,blurb:`Inquadramento del problema, PRD, prioritizzazione.`},"ux-researcher":{label:`UX Researcher`,blurb:`Script per interviste, piani di test di usabilità, sintesi.`},"technical-writer":{label:`Technical Writer`,blurb:`Doc che vengono letti davvero — tutorial, riferimenti, changelog.`},"design-reviewer":{label:`Reviewer Design System`,blurb:`Drift dei token, uso improprio dei componenti, coerenza tra i flussi.`},"financial-analyst":{label:`Analista Finanziario`,blurb:`Unit economics, modelli di coorte, analisi di scenario.`},"pricing-strategist":{label:`Stratega di Pricing`,blurb:`Tier, packaging, studi sulla disponibilità a pagare.`},"market-researcher":{label:`Ricercatore di Mercato`,blurb:`TAM/SAM/SOM, mappe competitive, segmenti di clientela.`},"ops-optimizer":{label:`Ottimizzatore di Operations`,blurb:`Tempi di ciclo, individuazione dei colli di bottiglia, candidati all'automazione.`},"seo-auditor":{label:`SEO Auditor`,blurb:`SEO tecnica + di contenuto: indicizzabilità, IA, match con l'intento.`},"growth-hacker":{label:`Sperimentatore di Growth`,blurb:`Diagnosi del funnel, esperimenti di lift, loop di attivazione.`},"social-strategist":{label:`Stratega Social Media`,blurb:`Contenuti adatti al canale, calendario editoriale, coerenza di voce.`},"literature-reviewer":{label:`Revisore di Letteratura`,blurb:`Sintesi di revisioni sistematiche, grafi di citazioni, conflitti.`},"experiment-designer":{label:`Progettista di Esperimenti`,blurb:`Ipotesi, controlli, dimensione del campione, pre-registrazione.`},"statistical-analyst":{label:`Analista Statistico`,blurb:`Sceglie il test giusto, riporta gli effect size, non solo i p-value.`},"scientific-writer":{label:`Redattore Scientifico`,blurb:`Struttura IMRaD, limiti onesti, abstract leggibili.`},"curriculum-designer":{label:`Progettista di Curriculum`,blurb:`Obiettivi di apprendimento → attività → valutazione.`},"assessment-author":{label:`Autore di Valutazioni`,blurb:`Item che misurano la comprensione, non la memoria.`},"tutor-explainer":{label:`Tutor / Divulgatore`,blurb:`Spiegazioni semplici in stile Feynman con esempi svolti.`},"clinical-guideline-reviewer":{label:`Revisore di Linee Guida Cliniche`,blurb:`Confronta la pratica con le ultime linee guida evidence-based.`},"medical-summarizer":{label:`Sintetizzatore di Letteratura Medica`,blurb:`Abstract per i clinici: cosa è cambiato, qualità dell'evidenza.`},"protocol-designer":{label:`Progettista di Protocolli`,blurb:`Protocolli clinici: endpoint, criteri di inclusione, sicurezza.`},"contract-reviewer":{label:`Revisore di Contratti`,blurb:`Segnala le clausole rischiose; spiega cosa significano davvero.`},"privacy-counsel":{label:`Consulente Privacy`,blurb:`GDPR / CCPA / LGPD applicati a flussi concreti.`},"copy-editor":{label:`Copy Editor`,blurb:`Editing riga per riga: voce, ritmo, taglia il 30% senza perdere significato.`},"brand-voice-guardian":{label:`Guardiano della Brand Voice`,blurb:`Fa rispettare le regole di voce; intercetta le frasi off-brand.`},"creative-brainstormer":{label:`Brainstormer Creativo`,blurb:`Prima divergente, poi convergente; abbatte i tabù con garbo.`},"hiring-interviewer":{label:`Intervistatore di Selezione`,blurb:`Colloqui strutturati, focalizzati sul segnale, attenti ai bias.`},"strategic-planner":{label:`Pianificatore Strategico`,blurb:`Obiettivi → scommesse → metriche; sfoltisce i pet project.`},"coach-1on1":{label:`Coach 1:1`,blurb:`Aiuta a impostare feedback, crescita professionale, conversazioni difficili.`},"meeting-facilitator":{label:`Facilitatore di Riunioni`,blurb:`Agende che producono decisioni, non aggiornamenti.`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};
@@ -0,0 +1 @@
1
+ var e={loadingAgent:`Cargando agente…`,modeCreate:`Nuevo agente personalizado`,modeEdit:`Editar agente personalizado`,create:`Crear`,unsaved:`● sin guardar`,resumeAiEdit:`Reanudar AI Edit`,resumeAiEditTitle:`Devolver este borrador al panel de AI Edit`,loadingAiDraft:`cargando borrador de IA…`,testButton:`Probar`,testButtonTitle:`Probar este agente con una tarea de ejemplo`,historyButton:`Historial`,historyButtonTitle:`Historial de versiones`,deleteConfirm:{title:`¿Eliminar el agente "{{agentId}}"?`,description:`Esto elimina el .md del disco. El historial de versiones se conserva en la BD — usa un nuevo agente personalizado si quieres recuperar el cuerpo más adelante.`},errors:{loadDraftFailed:`Error al cargar el borrador: {{status}}`,loadFailed:`Error al cargar: {{status}}`,saveFailed:`Error al guardar: {{status}}`,deleteFailed:`Error al eliminar: {{status}}`,testFailed:`Error en la prueba: {{status}}`},toasts:{agentCreated:`Agente creado`,agentSaved:`Agente guardado`,agentDeleted:`Agente eliminado`,createFailed:`No se pudo crear el agente`,saveFailed:`No se pudo guardar el agente`,deleteFailed:`No se pudo eliminar el agente`},validation:{namePattern:`El nombre debe empezar por <code>custom-</code> y contener solo minúsculas, dígitos y guiones.`,missingFrontmatter:`Falta el frontmatter YAML (necesita un <code>---</code> de apertura en la primera línea).`},sampleTasks:{pick:`— elige una tarea de ejemplo —`,terraform:`Terraform: bucket S3 público`,sqlInjection:`Revisión de código: inyección SQL`,accessibility:`Frontend: accesibilidad`,schemaChange:`Datos: cambio de esquema`,slowQuery:`Rendimiento: consulta lenta`},testPane:{header:`Probar agente`,sampleTaskLabel:`Tarea de ejemplo`,placeholder:`Describe qué debe hacer el agente o elige un ejemplo arriba.`,run:`Ejecutar`,running:`Ejecutando…`,sandboxNote:`En sandbox; no se escriben archivos.`,tokens_one:`<mono>{{count}}</mono> token`,tokens_other:`<mono>{{count}}</mono> tokens`,tokensUnavailable:`Uso de tokens no disponible`,emptyHint:`Ejecuta una tarea de ejemplo contra el borrador actual. El resultado aparece aquí.`},versions:{header:`Historial de versiones`,empty:`No hay versiones anteriores registradas para este agente.`,restoreHint:`Haz clic en una versión para restaurar su cuerpo en el editor (aún tendrás que guardar).`}},t={eyebrow:`AI Edit`,headline:`Refina tu agente`,streamingHeadline:`Refinando tu agente…`,placeholderInitial:`Describe cómo refinar este agente…`,placeholderFollowUp:`Envía un refinamiento adicional…`,viewCurrentBody:`Ver el cuerpo actual del agente`,appliedAsVersion:`Aplicado como versión {{version}}.`,openInStudio:`Abrir el borrador en Studio para editarlo manualmente`,chips:{tightenTools:`Acota la lista de herramientas`,stricterPersonality:`Haz la personalidad más estricta`,workflowSection:`Añade una sección de protocolo de workflow`,sharpenDescription:`Acorta y afina la descripción`,matchDeveloperStyle:`Imita el estilo de sr-developer`}},n={validation:{missingBaseline:`Falta el agente base obligatorio: {{agent}}`,multipleDefaultRules:`El enrutado solo puede tener una regla por defecto (se encontraron {{found}})`,defaultRuleNotLast:`La regla de enrutado por defecto debe ser la última entrada`,unknownRoutingAgent:`El enrutado referencia un agente que no está en la cadena: {{agent}}`,invalidTags:`La regla de enrutado {{agent}} tiene tags no válidos: {{tags}} (usa kebab-case en minúsculas)`},validationSummary_one:`{{count}} problema de validación`,validationSummary_other:`{{count}} problemas de validación`,nameLabel:`Nombre`,descriptionLabel:`Descripción`,descriptionPlaceholder:`¿Para qué sirve este perfil?`,orchestrator:{heading:`Orquestador`,description:`Modelo de nivel superior para el comando implement. Cada rail que ejecuta hereda la cadena de agentes de este perfil.`},agentChain:{heading:`Cadena de agentes ({{n}})`,addTitle:`Añadir un agente del catálogo`,addDisabledTitle:`Todos los agentes del catálogo ya están en la cadena`,pickFromCatalog:`Elegir del catálogo ({{n}} disponibles)`,emptyCatalog:`No quedan agentes en el catálogo. Añade agentes personalizados desde la pestaña Catálogo de agentes.`,kind:{upstream:`upstream`,custom:`personalizado`}},routing:{heading:`Enrutado ({{n}})`,addDefault:`Añadir por defecto`,addRule:`Añadir regla`,needAgentsTitle:`Añade al menos un agente antes de crear reglas de enrutado`,explainer:`Gana la primera regla que coincida. Las reglas se pueden editar y eliminar, y la regla por defecto se mantiene en último lugar cuando existe. Si dejas el enrutado vacío, el pipeline recurre al primer agente de tipo developer de la cadena.`,untargetedTitle:`Agentes de la cadena sin regla`,untargetedDetail:`Ninguna regla de enrutado apunta a: <mono>{{agents}}</mono>. Añade una regla de tags o redirige la regla por defecto si quieres que se ejecuten.`},agentRow:{dragTitle:`Arrastra para reordenar`,dragHandleAria:`Asa de arrastre`,pinnedFirst:`primero`,pinnedFirstTitle:`Fijado en primera posición — el pipeline siempre empieza con sr-architect`,pinnedLast:`último`,pinnedLastTitle:`Fijado en última posición — la fase de merge siempre se ejecuta al final`,required:`obligatorio`,requiredRemoveTitle:`Agente base obligatorio — el pipeline depende de esta fila`},routingRow:{everythingElse:`todo lo demás`,defaultTargetAria:`Destino de enrutado por defecto (core, solo lectura)`,defaultTargetTitle:`Fallback del core — no editable`,targetAria:`Destino de enrutado para la regla {{ordinal}}`,editTitle:`Editar regla`,editAria:`Editar regla {{ordinal}}`,moveDown:`Bajar`,moveUp:`Subir`,coreDefaultBadge:`core · por defecto`,coreDefaultTitle:`Fallback del core — la regla de último recurso del pipeline, fijada a sr-developer`},legacyWorkflowNotice:`Los ajustes del orquestador y del enrutamiento se aplican a los workflows antiguos. Los workflows de Core usan los roles seleccionados en el editor de loops.`},r={coreBadge:`core`,agents:{"sr-architect":{name:`Arquitecto`,description:`Diseño de arquitectura, specs de cambios, planificación de la implementación`},"sr-developer":{name:`Desarrollador`,description:`Implementación full-stack en todas las capas`},"sr-reviewer":{name:`Revisor`,description:`Revisión general de código — el último control de calidad`}},coreTeamTitle:`Tu equipo de agentes`,coreTeamNote:`Estos tres agentes core se instalan siempre — no hay nada que elegir. Añade especialistas más tarde con perfiles y agentes custom-*.`},i={"security-reviewer":{label:`Revisor de seguridad`,blurb:`Encuentra bugs de autenticación, inyección y exposición de datos en un diff antes de publicarlo.`},"performance-profiler":{label:`Perfilador de rendimiento`,blurb:`Encuentra hot paths, consultas N+1, bucles sin límite y bundles hinchados.`},"data-engineer":{label:`Ingeniero de datos`,blurb:`Migraciones de esquema, pipelines ETL, transformaciones de datos.`},"ui-ux-polisher":{label:`Pulidor de UI / UX`,blurb:`Accesibilidad, espaciado, estados vacíos, gestión de errores.`},"api-designer":{label:`Diseñador de APIs`,blurb:`Versionado, paginación, formatos de error, retrocompatibilidad.`},"database-architect":{label:`Arquitecto de bases de datos`,blurb:`Índices, normalización frente a desnormalización, patrones de consulta.`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD, observabilidad, preparación ante incidentes, runbooks.`},"mobile-engineer":{label:`Ingeniero móvil`,blurb:`Patrones de iOS y Android, offline-first, cuidado con la batería.`},"ml-engineer":{label:`Ingeniero de ML`,blurb:`Pipelines, evaluación, reproducibilidad, monitorización de drift.`},"accessibility-auditor":{label:`Auditor de accesibilidad`,blurb:`Revisión WCAG 2.2: contraste, foco, ARIA, teclado.`},"qa-test-strategist":{label:`Estratega de tests QA`,blurb:`Planes de test: reparto unitarios / integración / E2E, huecos de cobertura.`},"load-tester":{label:`Tester de carga / estrés`,blurb:`Planificación de capacidad, escenarios k6 / Locust, caza de cuellos de botella.`},"integration-tester":{label:`Tester de integración`,blurb:`Contratos entre servicios, fixtures, reducción de tests flaky.`},"regression-hunter":{label:`Cazador de regresiones`,blurb:`Biseca, reproduce y escribe primero el test que falla.`},"data-analyst":{label:`Analista de datos`,blurb:`Convierte preguntas vagas en consultas + conclusiones legibles.`},"etl-reviewer":{label:`Revisor de pipelines ETL`,blurb:`Idempotencia, backfills, datos que llegan tarde.`},"dashboard-designer":{label:`Diseñador de dashboards`,blurb:`Dashboards de un vistazo, ejes honestos, una acción por gráfico.`},"iac-reviewer":{label:`Revisor de IaC / cloud`,blurb:`Terraform / CloudFormation: IAM, exposición pública, costes.`},"compliance-reviewer":{label:`Revisor de cumplimiento`,blurb:`Comprobaciones cercanas a RGPD / SOC2 / HIPAA sobre flujos de datos.`},"threat-modeler":{label:`Modelador de amenazas`,blurb:`STRIDE / LINDDUN sobre diagramas de arquitectura.`},"product-manager":{label:`Product Manager`,blurb:`Encuadre de problemas, PRDs, priorización.`},"ux-researcher":{label:`Investigador UX`,blurb:`Guiones de entrevista, planes de test de usabilidad, síntesis.`},"technical-writer":{label:`Redactor técnico`,blurb:`Docs que de verdad se leen — tutoriales, referencias, changelogs.`},"design-reviewer":{label:`Revisor de design system`,blurb:`Deriva de tokens, mal uso de componentes, consistencia entre flujos.`},"financial-analyst":{label:`Analista financiero`,blurb:`Unit economics, modelos de cohortes, análisis de escenarios.`},"pricing-strategist":{label:`Estratega de precios`,blurb:`Niveles, empaquetado, estudios de disposición a pagar.`},"market-researcher":{label:`Investigador de mercado`,blurb:`TAM/SAM/SOM, mapas competitivos, segmentos de clientes.`},"ops-optimizer":{label:`Optimizador de operaciones`,blurb:`Tiempos de ciclo, detección de cuellos de botella, candidatos a automatización.`},"seo-auditor":{label:`Auditor SEO`,blurb:`SEO técnico y de contenido: indexabilidad, arquitectura de la información, ajuste a la intención.`},"growth-hacker":{label:`Experimentador de growth`,blurb:`Diagnóstico de funnels, experimentos de mejora, bucles de activación.`},"social-strategist":{label:`Estratega de redes sociales`,blurb:`Contenido adaptado al canal, calendario editorial, consistencia de voz.`},"literature-reviewer":{label:`Revisor de literatura`,blurb:`Resúmenes de revisión sistemática, grafos de citas, conflictos.`},"experiment-designer":{label:`Diseñador de experimentos`,blurb:`Hipótesis, controles, tamaño muestral, prerregistro.`},"statistical-analyst":{label:`Analista estadístico`,blurb:`Elige el test correcto e informa tamaños de efecto, no solo p-valores.`},"scientific-writer":{label:`Redactor científico`,blurb:`Estructura IMRaD, límites honestos, abstracts legibles.`},"curriculum-designer":{label:`Diseñador curricular`,blurb:`Resultados de aprendizaje → actividades → evaluación.`},"assessment-author":{label:`Autor de evaluaciones`,blurb:`Ítems que miden comprensión, no memorización.`},"tutor-explainer":{label:`Tutor / explicador`,blurb:`Explicaciones sencillas al estilo Feynman con ejemplos resueltos.`},"clinical-guideline-reviewer":{label:`Revisor de guías clínicas`,blurb:`Contrasta la práctica con las últimas guías basadas en la evidencia.`},"medical-summarizer":{label:`Resumidor de literatura médica`,blurb:`Abstracts para clínicos: qué ha cambiado, calidad de la evidencia.`},"protocol-designer":{label:`Diseñador de protocolos`,blurb:`Protocolos clínicos: endpoints, criterios de inclusión, seguridad.`},"contract-reviewer":{label:`Revisor de contratos`,blurb:`Señala cláusulas de riesgo y explica qué significan en realidad.`},"privacy-counsel":{label:`Asesor de privacidad`,blurb:`RGPD / CCPA / LGPD aplicados a flujos concretos.`},"copy-editor":{label:`Editor de estilo`,blurb:`Ediciones línea a línea: voz, cadencia, recortar un 30 % sin perder significado.`},"brand-voice-guardian":{label:`Guardián de la voz de marca`,blurb:`Aplica las reglas de voz; caza frases fuera de marca.`},"creative-brainstormer":{label:`Brainstormer creativo`,blurb:`Diverge y luego converge; mata vacas sagradas con educación.`},"hiring-interviewer":{label:`Entrevistador de contratación`,blurb:`Entrevistas estructuradas, centradas en la señal, conscientes del sesgo.`},"strategic-planner":{label:`Planificador estratégico`,blurb:`Objetivos → apuestas → métricas; poda los proyectos capricho.`},"coach-1on1":{label:`Coach de 1:1`,blurb:`Ayuda a enmarcar el feedback, el crecimiento profesional y las conversaciones difíciles.`},"meeting-facilitator":{label:`Facilitador de reuniones`,blurb:`Agendas que producen decisiones, no actualizaciones.`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};
@@ -0,0 +1 @@
1
+ var e={loadingAgent:`エージェントを読み込み中…`,modeCreate:`新規カスタムエージェント`,modeEdit:`カスタムエージェントを編集`,create:`作成`,unsaved:`● 未保存`,resumeAiEdit:`AI編集を再開`,resumeAiEditTitle:`このドラフトをAI編集オーバーレイに戻す`,loadingAiDraft:`AIドラフトを読み込み中…`,testButton:`テスト`,testButtonTitle:`サンプルタスクでこのエージェントをテスト`,historyButton:`履歴`,historyButtonTitle:`バージョン履歴`,deleteConfirm:{title:`エージェント「{{agentId}}」を削除しますか?`,description:`ディスクから .md を削除します。バージョン履歴は DB に残ります — 後で本文を復元したい場合は新しいカスタムエージェントを作成してください。`},errors:{loadDraftFailed:`ドラフトの読み込みに失敗しました: {{status}}`,loadFailed:`読み込みに失敗しました: {{status}}`,saveFailed:`保存に失敗しました: {{status}}`,deleteFailed:`削除に失敗しました: {{status}}`,testFailed:`テストに失敗しました: {{status}}`},toasts:{agentCreated:`エージェントを作成しました`,agentSaved:`エージェントを保存しました`,agentDeleted:`エージェントを削除しました`,createFailed:`エージェントの作成に失敗しました`,saveFailed:`エージェントの保存に失敗しました`,deleteFailed:`エージェントの削除に失敗しました`},validation:{namePattern:`名前は <code>custom-</code> で始まり、小文字・数字・ハイフンのみ使用できます。`,missingFrontmatter:`YAML フロントマターがありません(1行目に <code>---</code> が必要です)。`},sampleTasks:{pick:`— サンプルタスクを選択 —`,terraform:`Terraform: 公開 S3 バケット`,sqlInjection:`コードレビュー: SQL インジェクション`,accessibility:`フロントエンド: アクセシビリティ`,schemaChange:`データ: スキーマ変更`,slowQuery:`パフォーマンス: 遅いクエリ`},testPane:{header:`エージェントをテスト`,sampleTaskLabel:`サンプルタスク`,placeholder:`エージェントに実行させたい内容を記述するか、上のサンプルを選択してください。`,run:`実行`,running:`実行中…`,sandboxNote:`サンドボックス実行。ファイルへの書き込みはありません。`,tokens_one:`<mono>{{count}}</mono> トークン`,tokens_other:`<mono>{{count}}</mono> トークン`,tokensUnavailable:`トークン使用量は利用できません`,emptyHint:`現在のドラフトに対してサンプルタスクを実行します。出力はここに表示されます。`},versions:{header:`バージョン履歴`,empty:`このエージェントの過去のバージョンはありません。`,restoreHint:`バージョンをクリックすると本文がエディタに復元されます(保存は別途必要です)。`}},t={eyebrow:`AI編集`,headline:`エージェントを改良`,streamingHeadline:`エージェントを改良中…`,placeholderInitial:`このエージェントをどう改良するか記述してください…`,placeholderFollowUp:`追加の改良指示を送信…`,viewCurrentBody:`現在のエージェント本文を表示`,appliedAsVersion:`バージョン {{version}} として適用しました。`,openInStudio:`Studio でドラフトを開いて手動編集`,chips:{tightenTools:`ツールリストを絞り込む`,stricterPersonality:`パーソナリティをより厳格に`,workflowSection:`ワークフロープロトコルのセクションを追加`,sharpenDescription:`説明を短く鋭く`,matchDeveloperStyle:`sr-developer のスタイルに合わせる`}},n={validation:{missingBaseline:`必須のベースラインエージェントがありません: {{agent}}`,multipleDefaultRules:`ルーティングのデフォルトルールは1つまでです({{found}} 件見つかりました)`,defaultRuleNotLast:`デフォルトのルーティングルールは最後に配置する必要があります`,unknownRoutingAgent:`ルーティングがチェーンにないエージェントを参照しています: {{agent}}`,invalidTags:`ルーティングルール {{agent}} に不正なタグがあります: {{tags}}(小文字のケバブケースを使用してください)`},validationSummary_one:`{{count}} 件の検証の問題`,validationSummary_other:`{{count}} 件の検証の問題`,nameLabel:`名前`,descriptionLabel:`説明`,descriptionPlaceholder:`このプロファイルの用途は?`,orchestrator:{heading:`オーケストレーター`,description:`implement コマンドの最上位モデルです。実行されるすべてのレールがこのプロファイルのエージェントチェーンを継承します。`},agentChain:{heading:`エージェントチェーン({{n}})`,addTitle:`カタログからエージェントを追加`,addDisabledTitle:`カタログの全エージェントが既にチェーンに含まれています`,pickFromCatalog:`カタログから選択({{n}} 件利用可能)`,emptyCatalog:`カタログに追加できるエージェントがありません。エージェントカタログタブからカスタムエージェントを追加してください。`,kind:{upstream:`アップストリーム`,custom:`カスタム`}},routing:{heading:`ルーティング({{n}})`,addDefault:`デフォルトを追加`,addRule:`ルールを追加`,needAgentsTitle:`ルーティングルールを作成する前にエージェントを1つ以上追加してください`,explainer:`最初に一致したルールが適用されます。ルールは編集・削除でき、デフォルトのキャッチオールは存在する場合は常に最後に配置されます。ルーティングが空の場合、パイプラインはチェーン内の最初の developer 系エージェントにフォールバックします。`,untargetedTitle:`チェーン内の未割り当てエージェント`,untargetedDetail:`どのルーティングルールも <mono>{{agents}}</mono> を指していません。実行させたい場合はタグルールを追加するか、デフォルトルールのターゲットを変更してください。`},agentRow:{dragTitle:`ドラッグして並べ替え`,dragHandleAria:`ドラッグハンドル`,pinnedFirst:`先頭`,pinnedFirstTitle:`先頭に固定 — パイプラインは常に sr-architect から開始します`,pinnedLast:`末尾`,pinnedLastTitle:`末尾に固定 — マージフェーズは常に最後に実行されます`,required:`必須`,requiredRemoveTitle:`必須のベースラインエージェント — パイプラインはこの行に依存しています`},routingRow:{everythingElse:`その他すべて`,defaultTargetAria:`デフォルトのルーティングターゲット(コア、読み取り専用)`,defaultTargetTitle:`コアのフォールバック — 編集不可`,targetAria:`ルール {{ordinal}} のルーティングターゲット`,editTitle:`ルールを編集`,editAria:`ルール {{ordinal}} を編集`,moveDown:`下へ移動`,moveUp:`上へ移動`,coreDefaultBadge:`コア · デフォルト`,coreDefaultTitle:`コアのフォールバック — パイプラインの最終手段のルールで、sr-developer に固定されています`},legacyWorkflowNotice:`オーケストレーターとルーティングの設定は従来のワークフローに適用されます。Core のワークフローでは Loop Builder で選択したロールを使用します。`},r={coreBadge:`コア`,agents:{"sr-architect":{name:`アーキテクト`,description:`アーキテクチャ設計、変更スペック、実装計画`},"sr-developer":{name:`デベロッパー`,description:`全レイヤーにわたるフルスタック実装`},"sr-reviewer":{name:`レビュアー`,description:`一般的なコードレビュー — 最終品質ゲート`}},coreTeamTitle:`エージェントチーム`,coreTeamNote:`この3つのコアエージェントは常にインストールされます — 選択は不要です。後からプロファイルと custom-* エージェントで専門エージェントを追加できます。`},i={"security-reviewer":{label:`セキュリティレビュアー`,blurb:`リリース前の diff から認証、インジェクション、データ漏洩のバグを発見します。`},"performance-profiler":{label:`パフォーマンスプロファイラー`,blurb:`ホットパス、N+1 クエリ、上限のないループ、バンドル肥大化を発見します。`},"data-engineer":{label:`データエンジニア`,blurb:`スキーママイグレーション、ETL パイプライン、データ変換。`},"ui-ux-polisher":{label:`UI / UX ポリッシャー`,blurb:`アクセシビリティ、スペーシング、空状態、エラーハンドリング。`},"api-designer":{label:`API デザイナー`,blurb:`バージョニング、ページネーション、エラー形式、後方互換性。`},"database-architect":{label:`データベースアーキテクト`,blurb:`インデックス、正規化 vs 非正規化、クエリ形状。`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD、可観測性、インシデント対応準備、ランブック。`},"mobile-engineer":{label:`モバイルエンジニア`,blurb:`iOS + Android のパターン、オフラインファースト、バッテリー配慮。`},"ml-engineer":{label:`ML エンジニア`,blurb:`パイプライン、評価、再現性、ドリフト監視。`},"accessibility-auditor":{label:`アクセシビリティ監査者`,blurb:`WCAG 2.2 レビュー: コントラスト、フォーカス、ARIA、キーボード。`},"qa-test-strategist":{label:`QA テストストラテジスト`,blurb:`テスト計画: ユニット / 統合 / E2E の配分、カバレッジの欠落。`},"load-tester":{label:`負荷 / ストレステスター`,blurb:`キャパシティプランニング、k6 / Locust シナリオ、ボトルネック探索。`},"integration-tester":{label:`統合テスター`,blurb:`サービス間コントラクト、フィクスチャ、フレーキーテストの削減。`},"regression-hunter":{label:`リグレッションハンター`,blurb:`バイセクトと再現を行い、まず失敗するテストを書きます。`},"data-analyst":{label:`データアナリスト`,blurb:`曖昧な質問をクエリと読みやすい知見に変換します。`},"etl-reviewer":{label:`ETL パイプラインレビュアー`,blurb:`冪等性、バックフィル、遅延到着データ。`},"dashboard-designer":{label:`ダッシュボードデザイナー`,blurb:`一目で分かるダッシュボード、正直な軸、チャートごとのアクション。`},"iac-reviewer":{label:`IaC / クラウドレビュアー`,blurb:`Terraform / CloudFormation: IAM、公開露出、コスト。`},"compliance-reviewer":{label:`コンプライアンスレビュアー`,blurb:`データフローに対する GDPR / SOC2 / HIPAA 関連のチェック。`},"threat-modeler":{label:`脅威モデラー`,blurb:`アーキテクチャ図に対する STRIDE / LINDDUN。`},"product-manager":{label:`プロダクトマネージャー`,blurb:`課題設定、PRD、優先順位付け。`},"ux-researcher":{label:`UX リサーチャー`,blurb:`インタビュースクリプト、ユーザビリティテスト計画、結果の統合。`},"technical-writer":{label:`テクニカルライター`,blurb:`実際に読まれるドキュメント — チュートリアル、リファレンス、変更履歴。`},"design-reviewer":{label:`デザインシステムレビュアー`,blurb:`トークンのドリフト、コンポーネントの誤用、フロー間の一貫性。`},"financial-analyst":{label:`ファイナンシャルアナリスト`,blurb:`ユニットエコノミクス、コホートモデル、シナリオ分析。`},"pricing-strategist":{label:`プライシングストラテジスト`,blurb:`ティアリング、パッケージング、支払い意欲調査。`},"market-researcher":{label:`マーケットリサーチャー`,blurb:`TAM/SAM/SOM、競合マップ、顧客セグメント。`},"ops-optimizer":{label:`オペレーション最適化担当`,blurb:`サイクルタイム、ボトルネック発見、自動化候補。`},"seo-auditor":{label:`SEO 監査者`,blurb:`テクニカル + コンテンツ SEO: インデックス可能性、情報設計、検索意図の一致。`},"growth-hacker":{label:`グロース実験担当`,blurb:`ファネル診断、リフト実験、アクティベーションループ。`},"social-strategist":{label:`ソーシャルメディアストラテジスト`,blurb:`チャネルに合ったコンテンツ、編集カレンダー、ボイスの一貫性。`},"literature-reviewer":{label:`文献レビュアー`,blurb:`システマティックレビューの要約、引用グラフ、相反の検出。`},"experiment-designer":{label:`実験デザイナー`,blurb:`仮説、対照群、サンプルサイズ、事前登録。`},"statistical-analyst":{label:`統計アナリスト`,blurb:`適切な検定を選び、p 値だけでなく効果量を報告します。`},"scientific-writer":{label:`サイエンティフィックライター`,blurb:`IMRaD 構成、誠実な限界の記述、読みやすい要旨。`},"curriculum-designer":{label:`カリキュラムデザイナー`,blurb:`学習成果 → アクティビティ → 評価。`},"assessment-author":{label:`評価項目作成者`,blurb:`暗記ではなく理解を測る設問。`},"tutor-explainer":{label:`チューター / 解説者`,blurb:`ファインマン流のシンプルな説明と例題。`},"clinical-guideline-reviewer":{label:`臨床ガイドラインレビュアー`,blurb:`最新のエビデンスに基づくガイドラインと診療を照合します。`},"medical-summarizer":{label:`医学文献要約者`,blurb:`臨床医向けの要約: 何が変わったか、エビデンスの質。`},"protocol-designer":{label:`プロトコルデザイナー`,blurb:`臨床プロトコル: エンドポイント、選択基準、安全性。`},"contract-reviewer":{label:`契約レビュアー`,blurb:`リスクの高い条項にフラグを立て、実際の意味を説明します。`},"privacy-counsel":{label:`プライバシーカウンセル`,blurb:`具体的なフローに適用する GDPR / CCPA / LGPD。`},"copy-editor":{label:`コピーエディター`,blurb:`行単位の編集: ボイス、リズム、意味を保ったまま 30% 削減。`},"brand-voice-guardian":{label:`ブランドボイスガーディアン`,blurb:`ボイスルールを徹底し、ブランドから外れた表現を検出します。`},"creative-brainstormer":{label:`クリエイティブブレインストーマー`,blurb:`発散してから収束。聖域も丁寧に切り捨てます。`},"hiring-interviewer":{label:`採用面接官`,blurb:`構造化面接、シグナル重視、バイアスに配慮。`},"strategic-planner":{label:`戦略プランナー`,blurb:`目標 → 賭け → 指標。お気に入りプロジェクトを剪定します。`},"coach-1on1":{label:`1:1 コーチ`,blurb:`フィードバック、キャリア成長、難しい対話の組み立てを支援します。`},"meeting-facilitator":{label:`ミーティングファシリテーター`,blurb:`報告ではなく意思決定を生むアジェンダ。`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};
@@ -0,0 +1 @@
1
+ var e={loadingAgent:`正在加载 Agent…`,modeCreate:`新建自定义 Agent`,modeEdit:`编辑自定义 Agent`,create:`创建`,unsaved:`● 未保存`,resumeAiEdit:`继续 AI 编辑`,resumeAiEditTitle:`将此草稿交还给 AI 编辑浮层`,loadingAiDraft:`正在加载 AI 草稿…`,testButton:`测试`,testButtonTitle:`用示例任务测试此 Agent`,historyButton:`历史`,historyButtonTitle:`版本历史`,deleteConfirm:{title:`删除 Agent“{{agentId}}”?`,description:`这会从磁盘上删除该 .md 文件。版本历史仍保留在数据库中——若日后需要恢复内容,可新建一个自定义 Agent。`},errors:{loadDraftFailed:`加载草稿失败:{{status}}`,loadFailed:`加载失败:{{status}}`,saveFailed:`保存失败:{{status}}`,deleteFailed:`删除失败:{{status}}`,testFailed:`测试失败:{{status}}`},toasts:{agentCreated:`Agent 已创建`,agentSaved:`Agent 已保存`,agentDeleted:`Agent 已删除`,createFailed:`创建 Agent 失败`,saveFailed:`保存 Agent 失败`,deleteFailed:`删除 Agent 失败`},validation:{namePattern:`名称必须以 <code>custom-</code> 开头,且只能包含小写字母、数字和连字符。`,missingFrontmatter:`缺少 YAML frontmatter(第一行需要起始的 <code>---</code>)。`},sampleTasks:{pick:`—— 选择一个示例任务 ——`,terraform:`Terraform:公开的 S3 存储桶`,sqlInjection:`代码评审:SQL 注入`,accessibility:`前端:无障碍`,schemaChange:`数据:schema 变更`,slowQuery:`性能:慢查询`},testPane:{header:`测试 Agent`,sampleTaskLabel:`示例任务`,placeholder:`描述该 Agent 应该做什么,或在上方选择一个示例。`,run:`运行`,running:`运行中…`,sandboxNote:`沙箱运行;不写入任何文件。`,tokens_one:`<mono>{{count}}</mono> 个 token`,tokens_other:`<mono>{{count}}</mono> 个 token`,tokensUnavailable:`Token 用量不可用`,emptyHint:`针对当前草稿运行一个示例任务,输出会显示在这里。`},versions:{header:`版本历史`,empty:`此 Agent 暂无历史版本记录。`,restoreHint:`点击某个版本可将其内容恢复到编辑器中(仍需手动保存)。`}},t={eyebrow:`AI 编辑`,headline:`优化你的 Agent`,streamingHeadline:`正在优化你的 Agent…`,placeholderInitial:`描述如何优化此 Agent…`,placeholderFollowUp:`发送后续优化指令…`,viewCurrentBody:`查看当前 Agent 正文`,appliedAsVersion:`已应用为版本 {{version}}。`,openInStudio:`在 Studio 中打开草稿进行手动编辑`,chips:{tightenTools:`收紧工具列表`,stricterPersonality:`让人格设定更严格`,workflowSection:`添加 Workflow 协议章节`,sharpenDescription:`精简并锐化描述`,matchDeveloperStyle:`对齐 sr-developer 的风格`}},n={validation:{missingBaseline:`缺少必需的基线 Agent:{{agent}}`,multipleDefaultRules:`路由最多只能有一条默认规则(发现 {{found}} 条)`,defaultRuleNotLast:`默认路由规则必须是最后一条`,unknownRoutingAgent:`路由引用了不在链中的 Agent:{{agent}}`,invalidTags:`路由规则 {{agent}} 包含无效标签:{{tags}}(请使用小写 kebab-case)`},validationSummary_one:`{{count}} 个校验问题`,validationSummary_other:`{{count}} 个校验问题`,nameLabel:`名称`,descriptionLabel:`描述`,descriptionPlaceholder:`这个 Profile 用来做什么?`,orchestrator:{heading:`编排器`,description:`implement 命令的顶层模型。它运行的每条 rail 都会继承此 Profile 的 Agent 链。`},agentChain:{heading:`Agent 链({{n}})`,addTitle:`从目录中添加 Agent`,addDisabledTitle:`目录中的所有 Agent 都已在链中`,pickFromCatalog:`从目录选择({{n}} 个可用)`,emptyCatalog:`目录中没有更多 Agent。请在 Agent 目录标签页中添加自定义 Agent。`,kind:{upstream:`上游`,custom:`自定义`}},routing:{heading:`路由({{n}})`,addDefault:`添加默认规则`,addRule:`添加规则`,needAgentsTitle:`请先添加至少一个 Agent,再创建路由规则`,explainer:`首条匹配的规则生效。规则可编辑、可删除;存在默认兜底规则时它始终位于最后。如果路由留空,流水线会回退到链中第一个开发者类型的 Agent。`,untargetedTitle:`链中存在未被路由指向的 Agent`,untargetedDetail:`没有路由规则指向:<mono>{{agents}}</mono>。如需让它们运行,请添加标签规则或调整默认规则的目标。`},agentRow:{dragTitle:`拖动以重新排序`,dragHandleAria:`拖动手柄`,pinnedFirst:`首位`,pinnedFirstTitle:`固定在首位——流水线始终从 sr-architect 开始`,pinnedLast:`末位`,pinnedLastTitle:`固定在末位——合并阶段始终最后运行`,required:`必需`,requiredRemoveTitle:`必需的基线 Agent——流水线依赖此行`},routingRow:{everythingElse:`其余所有`,defaultTargetAria:`默认路由目标(核心,只读)`,defaultTargetTitle:`核心兜底——不可编辑`,targetAria:`规则 {{ordinal}} 的路由目标`,editTitle:`编辑规则`,editAria:`编辑规则 {{ordinal}}`,moveDown:`下移`,moveUp:`上移`,coreDefaultBadge:`核心 · 默认`,coreDefaultTitle:`核心兜底——流水线的最终兜底规则,固定指向 sr-developer`},legacyWorkflowNotice:`编排器和路由设置适用于旧版工作流。Core 工作流使用在 Loop Builder 中选择的角色。`},r={coreBadge:`核心`,agents:{"sr-architect":{name:`架构师`,description:`架构设计、变更 spec、实现规划`},"sr-developer":{name:`开发者`,description:`覆盖所有层的全栈实现`},"sr-reviewer":{name:`评审员`,description:`通用代码评审——最终质量门禁`}},coreTeamTitle:`你的智能体团队`,coreTeamNote:`这三个核心智能体始终会被安装——无需选择。之后可通过配置档案和 custom-* 智能体添加专家。`},i={"security-reviewer":{label:`安全评审员`,blurb:`在 diff 交付前发现认证、注入与数据泄露问题。`},"performance-profiler":{label:`性能剖析师`,blurb:`发现热点路径、N+1 查询、无界循环、bundle 膨胀。`},"data-engineer":{label:`数据工程师`,blurb:`Schema 迁移、ETL 流水线、数据转换。`},"ui-ux-polisher":{label:`UI / UX 打磨师`,blurb:`无障碍、间距、空状态、错误处理。`},"api-designer":{label:`API 设计师`,blurb:`版本管理、分页、错误结构、向后兼容。`},"database-architect":{label:`数据库架构师`,blurb:`索引、规范化与反规范化、查询模式。`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD、可观测性、事故响应准备、运维手册。`},"mobile-engineer":{label:`移动端工程师`,blurb:`iOS + Android 模式、离线优先、电量友好。`},"ml-engineer":{label:`机器学习工程师`,blurb:`流水线、评估、可复现性、漂移监控。`},"accessibility-auditor":{label:`无障碍审计员`,blurb:`WCAG 2.2 评审:对比度、焦点、ARIA、键盘。`},"qa-test-strategist":{label:`QA 测试策略师`,blurb:`测试计划:单元 / 集成 / E2E 划分、覆盖率缺口。`},"load-tester":{label:`负载 / 压力测试员`,blurb:`容量规划、k6 / Locust 场景、瓶颈排查。`},"integration-tester":{label:`集成测试员`,blurb:`跨服务契约、测试夹具、减少偶发失败。`},"regression-hunter":{label:`回归猎手`,blurb:`二分定位、复现问题、先写出会失败的测试。`},"data-analyst":{label:`数据分析师`,blurb:`把模糊的问题变成查询和可读的结论。`},"etl-reviewer":{label:`ETL 流水线评审`,blurb:`幂等性、数据回填、迟到数据。`},"dashboard-designer":{label:`仪表盘设计师`,blurb:`一眼看懂的仪表盘、诚实的坐标轴、每张图对应一个行动。`},"iac-reviewer":{label:`IaC / 云评审`,blurb:`Terraform / CloudFormation:IAM、公网暴露、成本。`},"compliance-reviewer":{label:`合规评审`,blurb:`针对数据流的 GDPR / SOC2 / HIPAA 相关检查。`},"threat-modeler":{label:`威胁建模师`,blurb:`对架构图进行 STRIDE / LINDDUN 分析。`},"product-manager":{label:`产品经理`,blurb:`问题界定、PRD、优先级排序。`},"ux-researcher":{label:`UX 研究员`,blurb:`访谈脚本、可用性测试计划、结果综合。`},"technical-writer":{label:`技术写作者`,blurb:`真正有人读的文档——教程、参考、更新日志。`},"design-reviewer":{label:`设计系统评审`,blurb:`Token 漂移、组件误用、跨流程一致性。`},"financial-analyst":{label:`财务分析师`,blurb:`单位经济模型、同期群模型、情景分析。`},"pricing-strategist":{label:`定价策略师`,blurb:`分层、打包、支付意愿研究。`},"market-researcher":{label:`市场研究员`,blurb:`TAM/SAM/SOM、竞争格局图、客户细分。`},"ops-optimizer":{label:`运营优化师`,blurb:`周期时间、瓶颈定位、自动化候选项。`},"seo-auditor":{label:`SEO 审计员`,blurb:`技术 + 内容 SEO:可索引性、信息架构、意图匹配。`},"growth-hacker":{label:`增长实验师`,blurb:`漏斗诊断、提升实验、激活闭环。`},"social-strategist":{label:`社交媒体策略师`,blurb:`适配渠道的内容、编辑日历、语调一致性。`},"literature-reviewer":{label:`文献综述员`,blurb:`系统性综述摘要、引用图谱、矛盾发现。`},"experiment-designer":{label:`实验设计师`,blurb:`假设、对照、样本量、预注册。`},"statistical-analyst":{label:`统计分析师`,blurb:`选对检验方法,报告效应量而不只是 p 值。`},"scientific-writer":{label:`科学写作者`,blurb:`IMRaD 结构、坦诚的局限性、可读的摘要。`},"curriculum-designer":{label:`课程设计师`,blurb:`学习目标 → 教学活动 → 评估。`},"assessment-author":{label:`测评编写者`,blurb:`衡量理解而非记忆的题目。`},"tutor-explainer":{label:`导师 / 讲解者`,blurb:`费曼式的简明讲解,配有完整例题。`},"clinical-guideline-reviewer":{label:`临床指南评审`,blurb:`将临床实践与最新循证指南对照。`},"medical-summarizer":{label:`医学文献摘要员`,blurb:`面向临床医生的摘要:变化点与证据质量。`},"protocol-designer":{label:`方案设计师`,blurb:`临床方案:终点指标、入组标准、安全性。`},"contract-reviewer":{label:`合同评审`,blurb:`标记高风险条款,并解释其实际含义。`},"privacy-counsel":{label:`隐私顾问`,blurb:`将 GDPR / CCPA / LGPD 应用到具体流程。`},"copy-editor":{label:`文字编辑`,blurb:`逐行润色:语气、节奏,删减 30% 而不失原意。`},"brand-voice-guardian":{label:`品牌语调守护者`,blurb:`执行语调规则,捕捉偏离品牌的措辞。`},"creative-brainstormer":{label:`创意头脑风暴师`,blurb:`先发散后收敛,礼貌地挑战固有观念。`},"hiring-interviewer":{label:`招聘面试官`,blurb:`结构化面试,聚焦信号,规避偏见。`},"strategic-planner":{label:`战略规划师`,blurb:`目标 → 押注 → 指标;剔除个人偏好项目。`},"coach-1on1":{label:`1:1 教练`,blurb:`帮助组织反馈、规划职业成长、应对艰难对话。`},"meeting-facilitator":{label:`会议主持人`,blurb:`产出决策而非汇报的会议议程。`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};
@@ -0,0 +1 @@
1
+ var e={loadingAgent:`Agent wird geladen…`,modeCreate:`Neuer Custom-Agent`,modeEdit:`Custom-Agent bearbeiten`,create:`Erstellen`,unsaved:`● ungespeichert`,resumeAiEdit:`AI Edit fortsetzen`,resumeAiEditTitle:`Diesen Entwurf zurück an das AI-Edit-Overlay übergeben`,loadingAiDraft:`KI-Entwurf wird geladen…`,testButton:`Testen`,testButtonTitle:`Diesen Agent mit einer Beispielaufgabe testen`,historyButton:`Verlauf`,historyButtonTitle:`Versionsverlauf`,deleteConfirm:{title:`Agent „{{agentId}}“ löschen?`,description:`Entfernt die .md-Datei von der Festplatte. Der Versionsverlauf bleibt in der DB erhalten – verwenden Sie einen neuen Custom-Agent, um den Inhalt später wiederherzustellen.`},errors:{loadDraftFailed:`Entwurf konnte nicht geladen werden: {{status}}`,loadFailed:`Laden fehlgeschlagen: {{status}}`,saveFailed:`Speichern fehlgeschlagen: {{status}}`,deleteFailed:`Löschen fehlgeschlagen: {{status}}`,testFailed:`Test fehlgeschlagen: {{status}}`},toasts:{agentCreated:`Agent erstellt`,agentSaved:`Agent gespeichert`,agentDeleted:`Agent gelöscht`,createFailed:`Agent konnte nicht erstellt werden`,saveFailed:`Agent konnte nicht gespeichert werden`,deleteFailed:`Agent konnte nicht gelöscht werden`},validation:{namePattern:`Der Name muss mit <code>custom-</code> beginnen und darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.`,missingFrontmatter:`YAML-Frontmatter fehlt (benötigt öffnendes <code>---</code> in der ersten Zeile).`},sampleTasks:{pick:`– Beispielaufgabe wählen –`,terraform:`Terraform: öffentlicher S3-Bucket`,sqlInjection:`Code-Review: SQL-Injection`,accessibility:`Frontend: Barrierefreiheit`,schemaChange:`Daten: Schemaänderung`,slowQuery:`Performance: langsame Query`},testPane:{header:`Agent testen`,sampleTaskLabel:`Beispielaufgabe`,placeholder:`Beschreiben Sie, was der Agent tun soll, oder wählen Sie oben ein Beispiel.`,run:`Ausführen`,running:`Läuft…`,sandboxNote:`Sandbox-Modus; es werden keine Dateien geschrieben.`,tokens_one:`<mono>{{count}}</mono> Token`,tokens_other:`<mono>{{count}}</mono> Tokens`,tokensUnavailable:`Token-Nutzung nicht verfügbar`,emptyHint:`Führen Sie eine Beispielaufgabe gegen den aktuellen Entwurf aus. Die Ausgabe erscheint hier.`},versions:{header:`Versionsverlauf`,empty:`Keine früheren Versionen für diesen Agent vorhanden.`,restoreHint:`Klicken Sie auf eine Version, um ihren Inhalt in den Editor zu übernehmen (Speichern ist weiterhin nötig).`}},t={eyebrow:`AI Edit`,headline:`Agent verfeinern`,streamingHeadline:`Agent wird verfeinert…`,placeholderInitial:`Beschreiben Sie, wie dieser Agent verfeinert werden soll…`,placeholderFollowUp:`Weitere Verfeinerung senden…`,viewCurrentBody:`Aktuellen Agent-Inhalt anzeigen`,appliedAsVersion:`Als Version {{version}} übernommen.`,openInStudio:`Entwurf im Studio zur manuellen Bearbeitung öffnen`,chips:{tightenTools:`Tool-Liste straffen`,stricterPersonality:`Persönlichkeit strenger machen`,workflowSection:`Abschnitt mit Workflow-Protokoll hinzufügen`,sharpenDescription:`Beschreibung kürzen und schärfen`,matchDeveloperStyle:`An den sr-developer-Stil angleichen`}},n={validation:{missingBaseline:`Erforderlicher Baseline-Agent fehlt: {{agent}}`,multipleDefaultRules:`Routing darf höchstens eine Standardregel haben ({{found}} gefunden)`,defaultRuleNotLast:`Die Standard-Routing-Regel muss der letzte Eintrag sein`,unknownRoutingAgent:`Routing verweist auf einen Agent, der nicht in der Kette ist: {{agent}}`,invalidTags:`Routing-Regel {{agent}} hat ungültige Tags: {{tags}} (Kleinbuchstaben in kebab-case verwenden)`},validationSummary_one:`{{count}} Validierungsproblem`,validationSummary_other:`{{count}} Validierungsprobleme`,nameLabel:`Name`,descriptionLabel:`Beschreibung`,descriptionPlaceholder:`Wofür ist dieses Profil?`,orchestrator:{heading:`Orchestrator`,description:`Top-Level-Modell für den implement-Befehl. Jede damit gestartete Rail erbt die Agenten-Kette dieses Profils.`},agentChain:{heading:`Agenten-Kette ({{n}})`,addTitle:`Agent aus dem Katalog hinzufügen`,addDisabledTitle:`Alle Katalog-Agenten sind bereits in der Kette`,pickFromCatalog:`Aus Katalog wählen ({{n}} verfügbar)`,emptyCatalog:`Keine weiteren Agenten im Katalog. Fügen Sie Custom-Agenten über den Tab „Agenten-Katalog“ hinzu.`,kind:{upstream:`upstream`,custom:`custom`}},routing:{heading:`Routing ({{n}})`,addDefault:`Standard hinzufügen`,addRule:`Regel hinzufügen`,needAgentsTitle:`Fügen Sie mindestens einen Agent hinzu, bevor Sie Routing-Regeln erstellen`,explainer:`Die erste passende Regel gewinnt. Regeln sind bearbeitbar und entfernbar; die Standard-Catch-all-Regel bleibt am Ende, sofern vorhanden. Bleibt das Routing leer, fällt die Pipeline auf den ersten Developer-artigen Agent in der Kette zurück.`,untargetedTitle:`Nicht angesteuerte Agenten in der Kette`,untargetedDetail:`Keine Routing-Regel zeigt auf: <mono>{{agents}}</mono>. Fügen Sie eine Tag-Regel hinzu oder ändern Sie das Ziel der Standardregel, damit sie ausgeführt werden.`},agentRow:{dragTitle:`Zum Umsortieren ziehen`,dragHandleAria:`Ziehgriff`,pinnedFirst:`Anfang`,pinnedFirstTitle:`An erster Position fixiert – die Pipeline beginnt immer mit sr-architect`,pinnedLast:`Ende`,pinnedLastTitle:`An letzter Position fixiert – die Merge-Phase läuft immer zuletzt`,required:`erforderlich`,requiredRemoveTitle:`Erforderlicher Baseline-Agent – die Pipeline hängt von dieser Zeile ab`},routingRow:{everythingElse:`alles andere`,defaultTargetAria:`Standard-Routing-Ziel (Core, schreibgeschützt)`,defaultTargetTitle:`Core-Fallback – nicht bearbeitbar`,targetAria:`Routing-Ziel für Regel {{ordinal}}`,editTitle:`Regel bearbeiten`,editAria:`Regel {{ordinal}} bearbeiten`,moveDown:`Nach unten`,moveUp:`Nach oben`,coreDefaultBadge:`Core · Standard`,coreDefaultTitle:`Core-Fallback – die letzte Auffangregel der Pipeline, fest auf sr-developer`},legacyWorkflowNotice:`Orchestrator- und Routing-Einstellungen gelten für ältere Workflows. Core-Workflows verwenden die im Loop Builder ausgewählten Rollen.`},r={coreBadge:`core`,agents:{"sr-architect":{name:`Architekt`,description:`Architekturdesign, Change-Specs, Implementierungsplanung`},"sr-developer":{name:`Entwickler`,description:`Full-Stack-Implementierung über alle Schichten`},"sr-reviewer":{name:`Reviewer`,description:`Allgemeines Code-Review – das letzte Quality-Gate`}},coreTeamTitle:`Dein Agenten-Team`,coreTeamNote:`Diese drei Kern-Agenten werden immer installiert — nichts auszuwählen. Füge Spezialisten später über Profile und custom-*-Agenten hinzu.`},i={"security-reviewer":{label:`Security-Reviewer`,blurb:`Findet Auth-, Injection- und Datenleck-Bugs in einem Diff, bevor er ausgeliefert wird.`},"performance-profiler":{label:`Performance-Profiler`,blurb:`Findet Hot Paths, N+1-Queries, unbegrenzte Schleifen, Bundle-Bloat.`},"data-engineer":{label:`Data Engineer`,blurb:`Schema-Migrationen, ETL-Pipelines, Datentransformationen.`},"ui-ux-polisher":{label:`UI-/UX-Polisher`,blurb:`Barrierefreiheit, Abstände, Leerzustände, Fehlerbehandlung.`},"api-designer":{label:`API-Designer`,blurb:`Versionierung, Pagination, Fehlerformate, Abwärtskompatibilität.`},"database-architect":{label:`Datenbank-Architekt`,blurb:`Indizes, Normalisierung vs. Denormalisierung, Query-Formen.`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD, Observability, Incident-Bereitschaft, Runbooks.`},"mobile-engineer":{label:`Mobile Engineer`,blurb:`iOS- und Android-Patterns, Offline-first, akkuschonend.`},"ml-engineer":{label:`ML Engineer`,blurb:`Pipelines, Evaluation, Reproduzierbarkeit, Drift-Monitoring.`},"accessibility-auditor":{label:`Accessibility-Auditor`,blurb:`WCAG-2.2-Review: Kontrast, Fokus, ARIA, Tastatur.`},"qa-test-strategist":{label:`QA-Test-Stratege`,blurb:`Testpläne: Aufteilung Unit / Integration / E2E, Coverage-Lücken.`},"load-tester":{label:`Last-/Stresstester`,blurb:`Kapazitätsplanung, k6-/Locust-Szenarien, Engpasssuche.`},"integration-tester":{label:`Integrationstester`,blurb:`Service-übergreifende Contracts, Fixtures, weniger Flaky-Tests.`},"regression-hunter":{label:`Regressionsjäger`,blurb:`Bisektiert, reproduziert, schreibt zuerst den fehlschlagenden Test.`},"data-analyst":{label:`Data Analyst`,blurb:`Macht aus vagen Fragen Queries und lesbare Erkenntnisse.`},"etl-reviewer":{label:`ETL-Pipeline-Reviewer`,blurb:`Idempotenz, Backfills, verspätet eintreffende Daten.`},"dashboard-designer":{label:`Dashboard-Designer`,blurb:`Dashboards auf einen Blick, ehrliche Achsen, eine Aktion pro Chart.`},"iac-reviewer":{label:`IaC-/Cloud-Reviewer`,blurb:`Terraform / CloudFormation: IAM, öffentliche Exposition, Kosten.`},"compliance-reviewer":{label:`Compliance-Reviewer`,blurb:`DSGVO- / SOC2- / HIPAA-nahe Prüfungen von Datenflüssen.`},"threat-modeler":{label:`Threat Modeler`,blurb:`STRIDE / LINDDUN über Architekturdiagramme.`},"product-manager":{label:`Product Manager`,blurb:`Problem-Framing, PRDs, Priorisierung.`},"ux-researcher":{label:`UX-Researcher`,blurb:`Interviewleitfäden, Usability-Testpläne, Synthese.`},"technical-writer":{label:`Technical Writer`,blurb:`Doku, die wirklich gelesen wird – Tutorials, Referenzen, Changelogs.`},"design-reviewer":{label:`Designsystem-Reviewer`,blurb:`Token-Drift, Komponenten-Fehlgebrauch, Konsistenz über Flows hinweg.`},"financial-analyst":{label:`Finanzanalyst`,blurb:`Unit Economics, Kohortenmodelle, Szenarioanalysen.`},"pricing-strategist":{label:`Pricing-Stratege`,blurb:`Tiering, Packaging, Zahlungsbereitschaftsstudien.`},"market-researcher":{label:`Marktforscher`,blurb:`TAM/SAM/SOM, Wettbewerbskarten, Kundensegmente.`},"ops-optimizer":{label:`Operations-Optimierer`,blurb:`Durchlaufzeiten, Engpasssuche, Automatisierungskandidaten.`},"seo-auditor":{label:`SEO-Auditor`,blurb:`Technisches und Content-SEO: Indexierbarkeit, IA, Suchintention.`},"growth-hacker":{label:`Growth-Experimentierer`,blurb:`Funnel-Diagnose, Lift-Experimente, Aktivierungsschleifen.`},"social-strategist":{label:`Social-Media-Stratege`,blurb:`Kanalgerechter Content, Redaktionskalender, konsistente Stimme.`},"literature-reviewer":{label:`Literatur-Reviewer`,blurb:`Zusammenfassungen systematischer Reviews, Zitationsgraphen, Konflikte.`},"experiment-designer":{label:`Experiment-Designer`,blurb:`Hypothesen, Kontrollgruppen, Stichprobengröße, Präregistrierung.`},"statistical-analyst":{label:`Statistik-Analyst`,blurb:`Wählt den richtigen Test, berichtet Effektstärken statt nur p-Werte.`},"scientific-writer":{label:`Wissenschaftsautor`,blurb:`IMRaD-Struktur, ehrliche Limitationen, lesbare Abstracts.`},"curriculum-designer":{label:`Curriculum-Designer`,blurb:`Lernziele → Aktivitäten → Bewertung.`},"assessment-author":{label:`Prüfungsautor`,blurb:`Aufgaben, die Verständnis messen, nicht Auswendiglernen.`},"tutor-explainer":{label:`Tutor / Erklärer`,blurb:`Einfache Erklärungen im Feynman-Stil mit durchgerechneten Beispielen.`},"clinical-guideline-reviewer":{label:`Reviewer klinischer Leitlinien`,blurb:`Gleicht die Praxis mit den neuesten evidenzbasierten Leitlinien ab.`},"medical-summarizer":{label:`Zusammenfasser medizinischer Literatur`,blurb:`Abstracts für Klinikpersonal: was sich geändert hat, Evidenzqualität.`},"protocol-designer":{label:`Protokoll-Designer`,blurb:`Klinische Protokolle: Endpunkte, Einschlusskriterien, Sicherheit.`},"contract-reviewer":{label:`Vertragsprüfer`,blurb:`Markiert riskante Klauseln und erklärt, was sie wirklich bedeuten.`},"privacy-counsel":{label:`Datenschutzberater`,blurb:`DSGVO / CCPA / LGPD angewendet auf konkrete Datenflüsse.`},"copy-editor":{label:`Lektor`,blurb:`Zeilenlektorat: Stimme, Rhythmus, 30 % kürzen ohne Bedeutungsverlust.`},"brand-voice-guardian":{label:`Markenstimme-Wächter`,blurb:`Setzt Voice-Regeln durch; erkennt markenfremde Formulierungen.`},"creative-brainstormer":{label:`Kreativ-Brainstormer`,blurb:`Erst divergent, dann konvergent; schlachtet heilige Kühe höflich.`},"hiring-interviewer":{label:`Hiring-Interviewer`,blurb:`Strukturierte Interviews, signalfokussiert, bias-bewusst.`},"strategic-planner":{label:`Strategieplaner`,blurb:`Ziele → Wetten → Metriken; streicht Lieblingsprojekte.`},"coach-1on1":{label:`1:1-Coach`,blurb:`Hilft bei Feedback, Karriereentwicklung und schwierigen Gesprächen.`},"meeting-facilitator":{label:`Meeting-Moderator`,blurb:`Agenden, die Entscheidungen liefern statt Status-Updates.`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};
@@ -0,0 +1 @@
1
+ var e={loadingAgent:`Chargement de l'agent…`,modeCreate:`Nouvel agent personnalisé`,modeEdit:`Modifier l'agent personnalisé`,create:`Créer`,unsaved:`● non enregistré`,resumeAiEdit:`Reprendre l'Édition IA`,resumeAiEditTitle:`Renvoyer ce brouillon vers l'overlay Édition IA`,loadingAiDraft:`chargement du brouillon IA…`,testButton:`Tester`,testButtonTitle:`Tester cet agent sur une tâche d'exemple`,historyButton:`Historique`,historyButtonTitle:`Historique des versions`,deleteConfirm:{title:`Supprimer l'agent « {{agentId}} » ?`,description:`Supprime le fichier .md du disque. L'historique des versions reste en base — créez un nouvel agent personnalisé si vous voulez récupérer le corps plus tard.`},errors:{loadDraftFailed:`Échec du chargement du brouillon : {{status}}`,loadFailed:`Échec du chargement : {{status}}`,saveFailed:`Échec de l'enregistrement : {{status}}`,deleteFailed:`Échec de la suppression : {{status}}`,testFailed:`Échec du test : {{status}}`},toasts:{agentCreated:`Agent créé`,agentSaved:`Agent enregistré`,agentDeleted:`Agent supprimé`,createFailed:`Échec de la création de l'agent`,saveFailed:`Échec de l'enregistrement de l'agent`,deleteFailed:`Échec de la suppression de l'agent`},validation:{namePattern:`Le nom doit commencer par <code>custom-</code> et ne contenir que des lettres minuscules, des chiffres et des tirets.`,missingFrontmatter:`Frontmatter YAML manquant (il faut un <code>---</code> d'ouverture sur la première ligne).`},sampleTasks:{pick:`— choisir une tâche d'exemple —`,terraform:`Terraform : bucket S3 public`,sqlInjection:`Revue de code : injection SQL`,accessibility:`Frontend : accessibilité`,schemaChange:`Données : changement de schéma`,slowQuery:`Performance : requête lente`},testPane:{header:`Tester l'agent`,sampleTaskLabel:`Tâche d'exemple`,placeholder:`Décrivez ce que l'agent doit faire, ou choisissez un exemple ci-dessus.`,run:`Exécuter`,running:`Exécution…`,sandboxNote:`Exécution en sandbox ; aucun fichier écrit.`,tokens_one:`<mono>{{count}}</mono> token`,tokens_other:`<mono>{{count}}</mono> tokens`,tokensUnavailable:`Utilisation des tokens indisponible`,emptyHint:`Exécutez une tâche d'exemple sur le brouillon actuel. La sortie s'affiche ici.`},versions:{header:`Historique des versions`,empty:`Aucune version antérieure enregistrée pour cet agent.`,restoreHint:`Cliquez sur une version pour restaurer son corps dans l'éditeur (il faudra ensuite Enregistrer).`}},t={eyebrow:`Édition IA`,headline:`Affinez votre agent`,streamingHeadline:`Affinage de votre agent…`,placeholderInitial:`Décrivez comment affiner cet agent…`,placeholderFollowUp:`Envoyez un affinage complémentaire…`,viewCurrentBody:`Voir le corps actuel de l'agent`,appliedAsVersion:`Appliqué comme version {{version}}.`,openInStudio:`Ouvrir le brouillon dans le Studio pour l'éditer manuellement`,chips:{tightenTools:`Resserrer la liste d'outils`,stricterPersonality:`Rendre la personnalité plus stricte`,workflowSection:`Ajouter une section de protocole Workflow`,sharpenDescription:`Raccourcir et affûter la description`,matchDeveloperStyle:`S'aligner sur le style de sr-developer`}},n={validation:{missingBaseline:`Agent de base requis manquant : {{agent}}`,multipleDefaultRules:`Le routage admet au plus une règle par défaut ({{found}} trouvées)`,defaultRuleNotLast:`La règle de routage par défaut doit être la dernière entrée`,unknownRoutingAgent:`Le routage référence un agent absent de la chaîne : {{agent}}`,invalidTags:`La règle de routage {{agent}} a des tags invalides : {{tags}} (utilisez du kebab-case en minuscules)`},validationSummary_one:`{{count}} problème de validation`,validationSummary_other:`{{count}} problèmes de validation`,nameLabel:`Nom`,descriptionLabel:`Description`,descriptionPlaceholder:`À quoi sert ce profil ?`,orchestrator:{heading:`Orchestrateur`,description:`Modèle de premier niveau pour la commande implement. Chaque rail qu'elle exécute hérite de la chaîne d'agents de ce profil.`},agentChain:{heading:`Chaîne d'agents ({{n}})`,addTitle:`Ajouter un agent depuis le catalogue`,addDisabledTitle:`Tous les agents du catalogue sont déjà dans la chaîne`,pickFromCatalog:`Choisir dans le catalogue ({{n}} disponibles)`,emptyCatalog:`Plus aucun agent dans le catalogue. Ajoutez des agents personnalisés depuis l'onglet Catalogue d'agents.`,kind:{upstream:`upstream`,custom:`personnalisé`}},routing:{heading:`Routage ({{n}})`,addDefault:`Ajouter la règle par défaut`,addRule:`Ajouter une règle`,needAgentsTitle:`Ajoutez au moins un agent avant de créer des règles de routage`,explainer:`La première règle correspondante l'emporte. Les règles sont modifiables et supprimables, et la règle fourre-tout par défaut reste en dernier quand elle existe. Si le routage est vide, le pipeline se rabat sur le premier agent de type développeur de la chaîne.`,untargetedTitle:`Agents non ciblés dans la chaîne`,untargetedDetail:`Aucune règle de routage ne pointe vers : <mono>{{agents}}</mono>. Ajoutez une règle de tag ou reciblez la règle par défaut si vous voulez qu'ils s'exécutent.`},agentRow:{dragTitle:`Glisser pour réordonner`,dragHandleAria:`Poignée de glissement`,pinnedFirst:`premier`,pinnedFirstTitle:`Épinglé en première position — le pipeline commence toujours par sr-architect`,pinnedLast:`dernier`,pinnedLastTitle:`Épinglé en dernière position — la phase de merge s'exécute toujours en dernier`,required:`requis`,requiredRemoveTitle:`Agent de base requis — le pipeline dépend de cette ligne`},routingRow:{everythingElse:`tout le reste`,defaultTargetAria:`Cible de routage par défaut (core, lecture seule)`,defaultTargetTitle:`Repli core — non modifiable`,targetAria:`Cible de routage pour la règle {{ordinal}}`,editTitle:`Modifier la règle`,editAria:`Modifier la règle {{ordinal}}`,moveDown:`Descendre`,moveUp:`Monter`,coreDefaultBadge:`core · défaut`,coreDefaultTitle:`Repli core — la règle de dernier recours du pipeline, épinglée sur sr-developer`},legacyWorkflowNotice:`Les paramètres de l’orchestrateur et du routage s’appliquent aux anciens workflows. Les workflows Core utilisent les rôles sélectionnés dans l’éditeur de loops.`},r={coreBadge:`core`,agents:{"sr-architect":{name:`Architecte`,description:`Conception d'architecture, specs de changement, planification d'implémentation`},"sr-developer":{name:`Développeur`,description:`Implémentation full-stack sur toutes les couches`},"sr-reviewer":{name:`Relecteur`,description:`Revue de code générale — l'ultime contrôle qualité`}},coreTeamTitle:`Votre équipe d'agents`,coreTeamNote:`Ces trois agents de base sont toujours installés — rien à choisir. Ajoutez des spécialistes plus tard via des profils et des agents custom-*.`},i={"security-reviewer":{label:`Relecteur Sécurité`,blurb:`Détecte les bugs d'authentification, d'injection et d'exposition de données dans un diff avant livraison.`},"performance-profiler":{label:`Profileur de performance`,blurb:`Repère les hot paths, les requêtes N+1, les boucles non bornées, le gonflement du bundle.`},"data-engineer":{label:`Data Engineer`,blurb:`Migrations de schéma, pipelines ETL, transformations de données.`},"ui-ux-polisher":{label:`Polisseur UI / UX`,blurb:`Accessibilité, espacement, états vides, gestion des erreurs.`},"api-designer":{label:`Concepteur d'API`,blurb:`Versionnage, pagination, formats d'erreur, rétrocompatibilité.`},"database-architect":{label:`Architecte base de données`,blurb:`Index, normalisation vs dénormalisation, formes de requêtes.`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD, observabilité, préparation aux incidents, runbooks.`},"mobile-engineer":{label:`Ingénieur Mobile`,blurb:`Patterns iOS + Android, offline-first, sobriété batterie.`},"ml-engineer":{label:`Ingénieur ML`,blurb:`Pipelines, éval, reproductibilité, surveillance du drift.`},"accessibility-auditor":{label:`Auditeur Accessibilité`,blurb:`Revue WCAG 2.2 : contraste, focus, ARIA, clavier.`},"qa-test-strategist":{label:`Stratège de tests QA`,blurb:`Plans de test : répartition unitaires / intégration / E2E, lacunes de couverture.`},"load-tester":{label:`Testeur de charge / stress`,blurb:`Planification de capacité, scénarios k6 / Locust, chasse aux goulots d'étranglement.`},"integration-tester":{label:`Testeur d'intégration`,blurb:`Contrats inter-services, fixtures, réduction des tests flaky.`},"regression-hunter":{label:`Chasseur de régressions`,blurb:`Bisecte, reproduit, écrit d'abord le test qui échoue.`},"data-analyst":{label:`Data Analyst`,blurb:`Transforme des questions vagues en requêtes + conclusions lisibles.`},"etl-reviewer":{label:`Relecteur de pipeline ETL`,blurb:`Idempotence, backfills, données tardives.`},"dashboard-designer":{label:`Concepteur de dashboards`,blurb:`Dashboards lisibles d'un coup d'œil, axes honnêtes, une action par graphique.`},"iac-reviewer":{label:`Relecteur IaC / Cloud`,blurb:`Terraform / CloudFormation : IAM, exposition publique, coûts.`},"compliance-reviewer":{label:`Relecteur Conformité`,blurb:`Contrôles type RGPD / SOC2 / HIPAA sur les flux de données.`},"threat-modeler":{label:`Modélisateur de menaces`,blurb:`STRIDE / LINDDUN sur les diagrammes d'architecture.`},"product-manager":{label:`Product Manager`,blurb:`Cadrage du problème, PRD, priorisation.`},"ux-researcher":{label:`Chercheur UX`,blurb:`Scripts d'entretien, plans de tests d'utilisabilité, synthèse.`},"technical-writer":{label:`Rédacteur technique`,blurb:`Des docs qu'on lit vraiment — tutoriels, références, changelogs.`},"design-reviewer":{label:`Relecteur Design System`,blurb:`Dérive des tokens, mauvais usage des composants, cohérence entre les flux.`},"financial-analyst":{label:`Analyste financier`,blurb:`Unit economics, modèles de cohortes, analyse de scénarios.`},"pricing-strategist":{label:`Stratège Pricing`,blurb:`Paliers, packaging, études de disposition à payer.`},"market-researcher":{label:`Chargé d'études de marché`,blurb:`TAM/SAM/SOM, cartographies concurrentielles, segments clients.`},"ops-optimizer":{label:`Optimiseur des opérations`,blurb:`Temps de cycle, détection des goulots, candidats à l'automatisation.`},"seo-auditor":{label:`Auditeur SEO`,blurb:`SEO technique + contenu : indexabilité, architecture de l'information, adéquation à l'intention.`},"growth-hacker":{label:`Expérimentateur Growth`,blurb:`Diagnostic de funnel, expériences d'uplift, boucles d'activation.`},"social-strategist":{label:`Stratège réseaux sociaux`,blurb:`Contenu adapté au canal, calendrier éditorial, cohérence de la voix.`},"literature-reviewer":{label:`Relecteur de littérature`,blurb:`Synthèses de revues systématiques, graphes de citations, conflits.`},"experiment-designer":{label:`Concepteur d'expériences`,blurb:`Hypothèses, contrôles, taille d'échantillon, préenregistrement.`},"statistical-analyst":{label:`Analyste statistique`,blurb:`Choisit le bon test, rapporte les tailles d'effet, pas seulement les p-values.`},"scientific-writer":{label:`Rédacteur scientifique`,blurb:`Structure IMRaD, limites honnêtes, abstracts lisibles.`},"curriculum-designer":{label:`Concepteur de cursus`,blurb:`Objectifs d'apprentissage → activités → évaluation.`},"assessment-author":{label:`Auteur d'évaluations`,blurb:`Des questions qui mesurent la compréhension, pas la mémorisation.`},"tutor-explainer":{label:`Tuteur / Vulgarisateur`,blurb:`Explications simples façon Feynman, avec exemples corrigés.`},"clinical-guideline-reviewer":{label:`Relecteur de recommandations cliniques`,blurb:`Confronte la pratique aux dernières recommandations fondées sur les preuves.`},"medical-summarizer":{label:`Synthétiseur de littérature médicale`,blurb:`Des abstracts pour les cliniciens : ce qui change, qualité des preuves.`},"protocol-designer":{label:`Concepteur de protocoles`,blurb:`Protocoles cliniques : critères de jugement, critères d'inclusion, sécurité.`},"contract-reviewer":{label:`Relecteur de contrats`,blurb:`Signale les clauses à risque ; explique ce qu'elles veulent vraiment dire.`},"privacy-counsel":{label:`Conseil en confidentialité`,blurb:`RGPD / CCPA / LGPD appliqués à des flux concrets.`},"copy-editor":{label:`Réviseur éditorial`,blurb:`Corrections fines : voix, rythme, couper 30 % sans perdre le sens.`},"brand-voice-guardian":{label:`Gardien de la voix de marque`,blurb:`Fait respecter les règles de ton ; repère les formulations hors marque.`},"creative-brainstormer":{label:`Brainstormer créatif`,blurb:`Divergent puis convergent ; tue les vaches sacrées avec tact.`},"hiring-interviewer":{label:`Intervieweur de recrutement`,blurb:`Entretiens structurés, axés sur le signal, attentifs aux biais.`},"strategic-planner":{label:`Planificateur stratégique`,blurb:`Objectifs → paris → métriques ; élague les projets fétiches.`},"coach-1on1":{label:`Coach 1:1`,blurb:`Aide à cadrer le feedback, l'évolution de carrière, les conversations difficiles.`},"meeting-facilitator":{label:`Facilitateur de réunions`,blurb:`Des ordres du jour qui produisent des décisions, pas des points d'étape.`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};