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
@@ -1 +0,0 @@
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 beide Befehle. batch-implement delegiert pro Feature an implement, daher erbt jede gestartete Rail 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`}},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};
@@ -1 +0,0 @@
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:`两个命令共用的顶层模型。batch-implement 会按 feature 委派给 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`}},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};
@@ -1 +0,0 @@
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 ambos comandos. batch-implement delega en implement por cada feature, así que cada rail que lanza 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`}},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};
@@ -1 +0,0 @@
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 both commands. batch-implement delegates to implement per feature, so every rail it spawns 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`}},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 +0,0 @@
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 ambos os comandos. O batch-implement delega no implement por feature, pelo que cada rail que lança 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`}},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};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({agentMissions:()=>_,default:()=>v,desktop:()=>h,hero:()=>s,models:()=>d,page:()=>o,periods:()=>r,providerCard:()=>c,quickVsExplore:()=>u,runs_one:()=>i,runs_other:()=>a,scatter:()=>f,surfaces:()=>n,table:()=>m,timeline:()=>l,topTickets:()=>p,windowLabels:()=>g}),n={job:`Jobs`,quickSpec:`Quick`,exploreSpec:`Explore`,aiEdit:`Refine`,smash:`SMASH`,fileSummary:`File summaries`,loop:`Loops`,chatSidebar:`Chat`,specLauncher:`Spec launcher`,proposal:`Proposal`,agentStudio:`Agent Studio`,setup:`Setup`},r={d7:`7d`,d30:`30d`,d90:`90d`,all:`All`,custom:`Custom`,startDate:`Start date`,endDate:`End date`,to:`to`},i=`{{count}} run`,a=`{{count}} runs`,o={title:`Analytics`,all:`All`,engine:`Engine`,ticketChip:`ticket #{{id}} · ✕`,failedToLoad:`Failed to load: {{error}}`,modelChip:`Model: {{model}}`,clearModelFilter:`Clear model filter`,localEngine:`local`},s={spending:`Spending`,vsPrev:`{{pct}}% vs prev`,invocations_one:`{{count}} invocation`,invocations_other:`{{count}} invocations`,tokens:`· {{tokens}} tokens`,tokensTooltip:`Total tokens = fresh input + output + cache-read + cache-create across all invocations in this window.`,usageUnavailable:`· token usage unavailable`,usageUnavailableTooltip:`The provider completed these invocations but did not expose token telemetry.`,usagePartiallyUnavailable:`· {{tokens}} known tokens; {{count}} run(s) unavailable`,usagePartiallyUnavailableTooltip:`Known token subtotal only; some invocations did not expose token telemetry.`,costUnavailable:`cost unavailable`,costUnavailableTooltip:`The provider completed these invocations but did not expose enough telemetry to determine their cost.`,costPartiallyUnavailable:`· known subtotal; {{count}} run(s) without cost`,costPartiallyUnavailableTooltip:`Known cost subtotal only; some invocations did not expose enough telemetry to determine cost.`,includesEstimated:`· includes ~{{amount}} estimated`,includesEstimatedTooltip:`Includes {{amount}} of estimated cost from providers without a native cost field (e.g. codex via the local pricing table).`,trackingStarted:`Tracking started {{date}}`,trackingStartedFallback:`Tracking started on first invocation`,emptyState:`No invocations yet for this filter window.`,segmentTitle:`{{label}}: {{value}}`},c={title:`By provider`,description:`How cost splits across the AI CLIs in this project. The <tilde>~</tilde> prefix marks rows where cost is estimated from the local pricing table (the provider does not report it natively).`,noCost:`No cost recorded yet in this window.`,segmentTitle:`{{label}}: {{value}} ({{count}})`,costUnavailable:`cost unavailable`,costUnavailableTooltip:`This provider ran but did not expose enough telemetry to determine cost.`,costPartiallyUnavailable:`· {{count}} unavailable`,costPartiallyUnavailableTooltip:`Known subtotal only; cost is unavailable for some runs.`},l={title:`Daily timeline`,subtitle:`stacked by surface`,empty:`No spend in this period.`,costUnavailable:`Invocations were recorded, but cost telemetry is unavailable.`,costPartiallyUnavailable:`known costs · {{count}} unavailable`},u={title:`Quick vs Explore`,quick:`Quick`,explore:`Explore`,sparseCta:`Try Explore for richer specs`,runsSoFar_one:`{{count}} run so far`,runsSoFar_other:`{{count}} runs so far`,perSpec:`per spec`,createdRuns:`<strong>{{created}}</strong> created · {{runs}} runs`,avgDuration:`{{duration}} avg`,ratio:`{{ratio}}× more per spec`,estimatedTooltip:`Estimated cost (codex/gemini pricing-table fallback, not provider-billed)`,estimatedFootnote:`~ Includes estimated costs (codex/gemini)`,costUnavailable:`cost unavailable per spec`,costUnavailableTooltip:`A per-spec average cannot be computed because one or more runs did not expose cost telemetry.`},d={title:`Models`,empty:`No models recorded.`,estimatedTooltip:`Estimated from the local pricing table — this provider does not report cost natively.`,others:`Others`,costUnavailableWithRuns:`— · {{count}}`,costUnavailableTooltip:`Cost telemetry is unavailable for every run of this model.`,costPartiallyUnavailable:`· {{count}} unavailable`,costPartiallyUnavailableTooltip:`Known subtotal only; some runs of this model have no cost telemetry.`},f={title:`Cost vs Turns`,empty:`No invocations to plot.`,turnsLabel:`turns`,costLabel:`cost`,truncated:`Showing {{shown}} of {{total}} — the costliest point is kept, but earlier points are hidden`,costUnavailable:`Invocations were recorded, but no cost telemetry is available to plot.`,costPartiallyUnavailable:`Plot includes priced runs only; {{count}} run(s) have unavailable cost.`},p={title:`Top tickets`,empty:`No ticket activity in this period.`,breakdownItem:`{{n}} {{label}}`,unattributed:`Unattributed`,deletedTicket:`deleted ticket #{{id}}`,costUnavailable:`cost unavailable`,costUnavailableTooltip:`None of this ticket's runs exposed cost telemetry.`,costPartiallyUnavailable:`{{count}} unavailable`,costPartiallyUnavailableTooltip:`Known subtotal only; some runs for this ticket have unavailable cost.`},m={title:`All invocations`,statusFilterAria:`Status filter`,minCostFilterAria:`Minimum cost filter`,minCostPlaceholder:`≥ $0.00`,allStatus:`All status`,success:`Success`,failed:`Failed`,aborted:`Aborted`,empty:`No invocations match the current filters.`,colSurface:`Surface`,colTicket:`Ticket`,colCost:`Cost`,colTurns:`Turns`,colTokens:`Tokens`,colModel:`Model`,colStatus:`Status`,colStarted:`Started`,contractLayer:`Contract Layer`,contractLayerRefinement:`Contract Layer refinement`,deleted:`(deleted)`,provisionalTitleTooltip:`Provisional Explore title — not yet committed`,estimatedCostTooltip:`Estimated from local pricing table — this provider does not report cost natively.`,inferred:`inferred`,statusValue:{success:`success`,failed:`failed`,aborted:`aborted`},truncated:`Showing first {{shown}} of {{total}} matching rows.`,colProvider:`Provider`,sortLabel:`Sort`,sortRecency:`Recent`,sortCost:`Cost`,costUnknownLocalTooltip:`Cost unknown (local engine). Add rates to the connection to see an estimate.`},h={title:`Desktop Analytics`,refreshAria:`Refresh analytics`,failedToLoad:`Failed to load analytics: {{error}}`,totalCost:`Total Cost`,costToday:`{{value}} today`,costTodayUnavailable:`cost unavailable today`,totalJobs:`Total Jobs`,jobsToday:`{{n}} today`,successRate:`Success Rate`,acrossAllProjects:`across all projects`,avgCostPerJob:`Avg Cost / Job`,periodAverage:`period average`,averageUnavailable:`average unavailable with incomplete cost telemetry`,costOverTime:`Cross-Project Cost Over Time`,noCostData:`No cost data for this period`,projectComparison:`Project Comparison`,noProjects:`No projects registered.`,jobsCount_one:`{{count}} job`,jobsCount_other:`{{count}} jobs`,successPct:`{{pct}}% success`,costByProject:`Cost by Project`,includesEstimated:`~{{amount}} estimated`,includesEstimatedTooltip:`Includes {{amount}} of rate-card estimated cost (codex/gemini), not provider-billed.`,includesEstimatedShort:`incl. estimated`,timelineEstimatedTooltip:`Some days include rate-card estimated cost (codex/gemini) marked with ~.`,estimatedBadge:`est.`,projectEstimatedTooltip:`{{amount}} of this project's cost is a rate-card estimate (codex/gemini), not provider-billed.`,statusBarEstimatedTooltip:`Includes rate-card estimated cost (codex/gemini), not provider-billed.`,costUnavailable:`Invocations were recorded, but cost telemetry is unavailable.`,costUnavailableShort:`unavailable`,costPartiallyUnavailable:`Known cost subtotal; {{count}} invocation(s) unavailable.`},g={"7d":`Last 7 days`,"30d":`Last 30 days`,"90d":`Last 90 days`,all:`All time`,custom:`Custom range`},_={title:`Agent missions`,subtitle:`Agent Chat turns pinned to this project`,vsPrev:`vs previous period`,turnsAndTokens:`{{turns}} turns · {{tokens}} tokens`,untitled:`Untitled mission`,estimatedNote:`Includes estimated costs`},v={surfaces:n,periods:r,runs_one:i,runs_other:a,page:o,hero:s,providerCard:c,timeline:l,quickVsExplore:u,models:d,scatter:f,topTickets:p,table:m,export:{summaryCsv:`Summary CSV`,rawCsv:`Raw CSV`,summaryJson:`Summary JSON`,rawJson:`Raw JSON`,downloading:`Downloading…`,noData:`No data for current filters`,failed:`Export failed`},desktop:h,windowLabels:g,agentMissions:_};export{t};
@@ -1 +0,0 @@
1
- var e={title:`Projekt-Builder`,subtitle:`Von der Idee zum Meilenstein-1-Backlog`,close:`Builder schließen`,emptyTitle:`Beschreibe deine App-Idee`,emptyHint:`Ein oder zwei Sätze genügen — der Builder interviewt dich kurz und schlägt einen vollständigen Blueprint vor. Du kannst ihn auch alles entscheiden lassen.`,surpriseMe:`Überrasch mich`,inputPlaceholder:`Eine App, die…`,createSpecs:`Specs erstellen`,createSpecsHint:`Verfügbar, sobald die Specs von Meilenstein 1 die Prüfung bestehen`,providerUnavailable:`Der Projekt-Builder benötigt einen nativen Modus ohne Werkzeuge oder mit Lesezugriff. Dieser Anbieter ist hier nicht verfügbar.`},t={title:`Blueprint`,product:`Produkt`,coreFlow:`Kernablauf`,platform:`Plattform`,stack:`Stack`,milestones:`Meilensteine`,milestonesValue:`{{count}} geplant`,assumptions:`Annahmen`,m1Specs:`Meilenstein-1-Specs ({{count}})`,dependsOn:`baut auf #{{index}} auf`,criteriaCount:`{{count}} Akzeptanzkriterien`,laterMilestones:`Spätere Meilensteine`,empty:`Der Blueprint füllt sich während des Gesprächs.`,specsComplete:`Vollständig`,specsInProgress:`In Arbeit`,specWriting:`wird geschrieben…`,specPendingBody:`noch nicht geschrieben`},n={title:`Projekt erstellen`,description:`Nichts berührt die Festplatte, bis du bestätigst. Das Repo bleibt unberührt — Specrails-Artefakte liegen außerhalb.`,nameLabel:`Projektname`,locationLabel:`Speicherort`,locationHint:`Hier wird ein neuer Ordner erstellt (muss leer sein oder fehlen).`,providersLabel:`KI-Anbieter`,githubLabel:`Privates GitHub-Repository erstellen`,githubAuthHint:`Zuerst anmelden: gh auth login`,back:`Zurück`,submit:`Projekt erstellen`,creating:`Wird erstellt…`,errors:{generic:`Der Commit konnte nicht starten. Prüfe die Werte und versuche es erneut.`,invalid_name:`Der Projektname ist erforderlich.`,invalid_location:`Der Speicherort ist erforderlich.`,providers_required:`Wähle mindestens einen Anbieter.`,unknown_provider:`Einer der gewählten Anbieter ist nicht verfügbar.`,invalid_blueprint:`Der Blueprint ist unvollständig — geh zurück und vervollständige ihn mit dem Builder.`,m1_specs_required:`Der Blueprint hat noch keine Meilenstein-1-Specs.`,m1_specs_over_cap:`Meilenstein 1 hat zu viele Specs (max. 10). Bitte den Builder, ihn zu verschlanken.`,m1_spec_quality_invalid:`Die generierten Specs sind noch nicht umsetzungsreif. Kehre zum Builder zurück und verfeinere den angegebenen Punkt.`,bundled_framework_missing:`Das mitgelieferte Framework fehlt — installiere die Specrails-App neu.`,location_not_empty:`Dieser Ordner existiert bereits und ist nicht leer. Wähle einen anderen Ort.`,location_already_registered:`Dieser Ort gehört bereits zu einem registrierten Projekt.`,commit_failed:`Die Projekterstellung ist fehlgeschlagen — der Grund steht in der Schrittliste.`}},r={title:`Dein Projekt wird erstellt…`,steps:{"create-dir":`Projektordner erstellen`,"git-init":`Git-Repository + README initialisieren`,assemble:`Specrails-Workspace zusammenbauen (offline)`,blueprint:`Blueprint schreiben`,tickets:`Meilenstein-1-Specs einfügen`,register:`Projekt registrieren`,github:`GitHub-Repository erstellen`},githubErrors:{gh_not_installed:`GitHub CLI (gh) ist nicht installiert — Repository nicht erstellt`,gh_not_authenticated:`gh ist nicht angemeldet (gh auth login ausführen) — Repository nicht erstellt`,gh_scope:`Dein gh-Token kann keine Repositories erstellen (repo-Scope fehlt)`,gh_repo_exists:`Ein Repository mit diesem Namen existiert bereits in deinem Konto`,gh_network:`Netzwerkfehler mit GitHub — Repository nicht erstellt`,generic:`GitHub-Repository konnte nicht erstellt werden`}},i={title:`Projekt erstellt`,description:`Dein Meilenstein-1-Backlog ist auf dem Board, mit M1 gelabelt.`,launchM1:`Meilenstein 1 starten`,openProject:`Projekt öffnen`,launchToast:`Meilenstein 1 gestartet — {{count}} Specs auf Rails verteilt (max. 3 pro Rail)`,launchPartialToast:`Meilenstein 1 teilweise gestartet — {{count}} Specs gestartet, {{skipped}} ausstehend`,launchFailed:`Meilenstein 1 konnte nicht gestartet werden`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Meilenstein 1 starten`,generateNext:`M{{n}} generieren`,generateHint:`Öffnet eine im Code verankerte Spec-Session, gesät mit dem Blueprint`,generateUnavailable:`Die Meilenstein-Generierung benötigt einen nativen Nur-Lese-Modus`},o={startFailed:`Die Builder-Konversation konnte nicht gestartet werden.`,turnFailed:`Der Builder-Turn ist fehlgeschlagen.`,commitFailed:`Die Projekterstellung ist fehlgeschlagen.`},s={title:`{{label}} generieren`,inputPlaceholder:`Specs verfeinern…`,commit:`{{count}} Specs als {{label}} übernehmen`,commitToast:`{{count}} Specs als {{label}} auf das Board übernommen`,commitFailed:`Der Meilenstein konnte nicht übernommen werden`,providerUnavailable:`Die Meilenstein-Generierung ist nicht verfügbar, da dieser Anbieter keinen nativen Nur-Lese-Modus hat.`},c={title:`Projekt-Builder`,subtitle:`Der Agent baut ein neues Projekt`,exit:`Beenden`,exitConfirmTitle:`Builder verlassen?`,exitConfirmBody:`Der Builder stoppt jetzt. Dein Blueprint bleibt gespeichert – nimm ihn beim nächsten Öffnen des Builders unter „Dort weitermachen, wo du aufgehört hast“ wieder auf.`,exitConfirmCancel:`Weiterbauen`,exitConfirmDiscard:`Verwerfen und beenden`},l={surpriseMe:`Überrasch mich — schlage sinnvolle Werte für alle Blueprint-Dimensionen vor, lasse m1Specs leer und lass mich den Plan vor der Erstellung detaillierter Specs genehmigen.`,milestoneSeed:`Generiere die detaillierten Specs für Meilenstein {{label}} ("{{title}}"). Lies zuerst die echte Codebasis, validiere den vollständigen Satz und gib erst dann ALLE detaillierten Specs des Meilensteins in einer einzigen blueprint-draft-Antwort/einem einzigen Snapshot aus.`,milestoneSeedWithPlanned:`Generiere die detaillierten Specs für Meilenstein {{label}} ("{{title}}"). Geplante Spec-Titel: {{planned}}. Lies zuerst die echte Codebasis, validiere den vollständigen Satz und gib erst dann ALLE detaillierten Specs des Meilensteins in einer einzigen blueprint-draft-Antwort/einem einzigen Snapshot aus.`,repairSnapshot:`Dein letzter blueprint-draft-Block konnte von der App nicht verwendet werden ({{reason}}). Gib den VOLLSTÄNDIGEN Snapshot erneut als streng gültiges JSON aus (Zeilenumbrüche in Strings als \\n escapen, keine abschließenden Kommas, keine verschachtelten Codeblöcke) – nur den Block.`,approve:`Freigegeben — erstelle jetzt das detaillierte Backlog für Meilenstein 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Schließen`,open:`Spec-Details ansehen`,empty:`Noch keine Beschreibung.`,summary:`Zusammenfassung`,priority:`Priorität`,description:`Spec-Beschreibung`,acceptanceCriteria:`Akzeptanzkriterien`,criteriaEmpty:`Noch keine Akzeptanzkriterien.`},d={modeLabel:`Startmodus`,mode:{sequential:`Sequenziell`,parallel:`Parallel`}},f={writing:`Milestone-1-Specs werden geschrieben…`,specCount:`Spec {{n}}`,turn:`Zug {{turn}}/{{total}}`,phase:{outline:`Milestone-1-Specs werden skizziert…`,details:`Specs {{from}}–{{to}} von {{total}} werden ausformuliert…`,audit:`Alle {{total}} Specs werden geprüft…`,repair:`Specs {{from}}–{{to}} werden erneut angefordert…`}},p={title:`Bereit, die Specs zu erstellen?`,steps:{blueprint:`Blueprint freigegeben`,specs:`Specs für Meilenstein 1 generiert`,audit:`Qualitätsprüfung`},details:{blueprint:{done:`{{filled}}/{{total}} Dimensionen`,pending:`{{filled}}/{{total}} Dimensionen`,blocked:`{{filled}}/{{total}} Dimensionen`},specs:{done:`{{count}} Specs · vollständig`,pending:`{{count}} von {{min}}–{{max}}`,blocked:`{{count}} Specs · {{min}}–{{max}} nötig`,writing:`{{written}} von {{count}} geschrieben`},audit:{done:`keine Probleme`,pending:`wartet auf Specs`,blocked:`{{count}} zu beheben`,writing:`sobald die Specs geschrieben sind`}},hints:{blueprint:{pending:`Beende das Interview oder sag „überrasch mich“ – bisher {{filled}}/{{total}} Dimensionen.`,blocked:`Der Blueprint ist unvollständig.`},specs:{pending:`Gib den Blueprint frei, dann generiert der Builder das Backlog für Meilenstein 1.`,blocked:`Meilenstein 1 braucht {{min}}–{{max}} Specs (aktuell {{count}}). Bitte den Builder, das anzupassen.`,writing:`Der Builder schreibt jede Spec vollständig — die Qualitätsprüfung läuft, sobald der Stapel komplett ist.`},audit:{pending:`Wartet auf die Specs.`,blocked:`{{count}} Prüfungsproblem(e) blockieren den Commit – öffne die Liste unten.`,writing:`Die Prüfung läuft, sobald alle Specs geschrieben sind.`}},issuesCount_one:`{{count}} Prüfungsproblem`,issuesCount_other:`{{count}} Prüfungsprobleme`,askFix:`Builder um Korrektur bitten`},m={repairing:{invalid_json:`Snapshot wird repariert (der letzte Block war kein gültiges JSON)…`,truncated:`Snapshot wird erneut angefordert (die Antwort wurde abgeschnitten)…`,quality:`Builder wird gebeten, die Prüfungsprobleme zu beheben…`,automatic:`automatisch`},rejected:{title:`Der letzte Snapshot des Builders konnte nicht verwendet werden`,invalid_json:`Der Blueprint-Block war kein gültiges JSON, daher zeigt das Panel weiterhin den vorherigen Stand.`,missing_version:`Der Block war kein Blueprint-Snapshot (blueprintVersion fehlt).`,truncated:`Die Antwort wurde abgeschnitten, bevor der Block geschlossen wurde – nichts kam an.`,autoRepairFailed:`Eine automatische Reparatur wurde bereits versucht.`,retry:`Snapshot erneut anfordern`},repairedNote:`Snapshot automatisch repariert`,nothingToRepair:`Nichts zu reparieren – sprich einfach weiter mit dem Builder.`,noSession:`Diese Unterhaltung kann mit ihrem Anbieter nicht fortgesetzt werden; sende stattdessen eine neue Nachricht.`,alreadyStreaming:`Der Builder antwortet noch.`,halted:{title:`Die Spec-Generierung wurde vorzeitig gestoppt`,detail:`{{written}} von {{total}} Specs vollständig geschrieben. Der Rest besteht noch aus reinen Gliederungstiteln.`,resume:`Generierung fortsetzen`}},h={title:`Dort weitermachen, wo du aufgehört hast`,untitled:`Unbenannter Blueprint`,specsComplete:`{{count}} Specs bereit`,specsInProgress:`{{count}} Specs in Arbeit`,dimensions:`{{filled}}/{{total}} Dimensionen`,pendingIssue:`Snapshot zu reparieren`,discard:`Verwerfen`,discardConfirm:`Verwerfen bestätigen`,discardCancel:`Behalten`,resumeFailed:`Dieser Blueprint konnte nicht fortgesetzt werden.`,discardFailed:`Dieser Blueprint konnte nicht verworfen werden.`},g={batch_incomplete:`Der Builder hat den Batch noch nicht als vollständig markiert.`,spec_count:`Der Batch braucht {{min}}–{{max}} Specs (aktuell {{count}}).`,invalid_shape:`Spec {{n}} ist kein gültiges Objekt.`,invalid_kind:`Spec {{n}} braucht einen gültigen Typ (scaffold, feature oder verification).`,scaffold_first:`Die erste Spec muss das Projekt-Scaffold sein.`,duplicate_scaffold:`Spec {{n}} darf kein zweites Scaffold sein.`,title_required:`Spec {{n}} braucht einen Titel.`,title_duplicate:`Spec {{n}} wiederholt den Titel von Spec {{other}}.`,summary:`Spec {{n}} braucht eine einzeilige Zusammenfassung unter 240 Zeichen.`,invalid_priority:`Spec {{n}} braucht eine gültige Priorität.`,canonical_sections:`Spec {{n}} fehlen die fünf kanonischen Abschnitte in der richtigen Reihenfolge.`,empty_section:`Der Abschnitt „{{heading}}“ von Spec {{n}} ist leer.`,section_bullets:`Spec {{n}} braucht mindestens {{min}} Punkte unter „{{heading}}“.`,complexity_format:`Spec {{n}} braucht eine Komplexitätsstufe mit Begründung.`,scaffold_readme:`Die Scaffold-Spec muss die vorhandene README erwähnen.`,criteria_count:`Spec {{n}} braucht {{min}}–{{max}} Akzeptanzkriterien (hat {{count}}).`,criterion_quality:`Spec {{n}}, Kriterium {{criterion}}: nicht konkret genug.`,duplicate_criterion:`Spec {{n}} wiederholt Akzeptanzkriterium {{criterion}}.`,milestone_label:`Spec {{n}} braucht das Label {{label}}.`,domain_label:`Spec {{n}} braucht zusätzlich zu {{label}} ein Domänen-Label.`,invalid_dependency:`Spec {{n}} darf nur von einer früheren Spec abhängen.`,scaffold_dependency:`Die Scaffold-Spec darf keine Abhängigkeit deklarieren.`,section_depth:`Spec {{n}} braucht einen ausführlicheren Abschnitt „{{heading}}“ (mindestens {{min}} Zeichen).`},_={state:{planned:`Geplant`,committed:`Startbereit`,running:`Läuft`,delivered:`Geliefert – wartet auf Review`,done:`Fertig`},counts:`{{delivered}} von {{total}} geliefert · {{done}} fertig`,failedNote_one:`{{count}} Spec ist beim letzten Versuch fehlgeschlagen`,failedNote_other:`{{count}} Specs sind beim letzten Versuch fehlgeschlagen`,legend:{done:`Fertig`,onReview:`Im Review`,inProgress:`Läuft`,failed:`Letzter Versuch fehlgeschlagen`,todo:`Ausstehend`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} der Kette`,running:`Läuft · {{elapsed}}`,review:`Prüfen`,open:`Rail öffnen`,noDelivery:`Noch keine Lieferung`},chain:{title:`Sequenzielle Kette`,parallelTitle:`Paralleler Start`,progress:`Rail {{k}} von {{n}}`,waiting:`wartet, bis Rail {{k}} abgeschlossen ist`,stackedOn:`das nächste Rail baut auf {{branch}} auf`,paused:`Pausiert – {{reason}}`,completed:`Alle Rails gestartet`,cancelled:`Kette abgebrochen`,resume:`Fortsetzen`,cancel:`Kette abbrechen`,resumed:`Kette fortgesetzt`,resumeFailed:`Kette konnte nicht fortgesetzt werden`,cancelledToast:`Kette abgebrochen – laufende Rails laufen weiter`,reasons:{chunk_failed:`das letzte Rail ist fehlgeschlagen`,chunk_stalled:`das letzte Rail hing (keine Provider-Ausgabe)`,chunk_stopped:`das letzte Rail wurde gestoppt`,launch_rejected:`das nächste Rail konnte nicht starten ({{detail}})`,head_missing:`der Basis-Branch existiert nicht mehr`,head_discarded:`die Lieferung, auf der das nächste Rail aufbaut, wurde verworfen`,run_lost:`das laufende Rail wurde nach einem Neustart nicht gefunden`,unknown:`pausiert`,provider_limit:`das Nutzungslimit des Anbieters ist erreicht`},checkpoint:`Rail {{k}} von {{n}} geliefert — Rail {{next}} starten?`,launchNext:`Nächstes Rail starten`,nextLaunched:`Nächstes Rail gestartet`,autoAdvance:`Automatisch fortfahren`,autoAdvanceHint:`Startet jedes nächste Rail, sobald das vorherige geliefert ist`,checkpointHint:`Hält nach jedem Rail an und fragt vor dem nächsten Start`,checkpointNote:`hält nach diesem Rail an`,autoOn:`Automatisches Fortfahren an — die nächsten Rails starten von selbst`,autoOff:`Automatisches Fortfahren aus — vor jedem Rail wird gefragt`,autoFailed:`Kette konnte nicht aktualisiert werden`},toast:{launched:`{{milestone}} gestartet – {{count}} Specs auf Rail 1 von {{n}}; die nächsten Rails folgen automatisch`,launchedAll:`{{milestone}} gestartet – {{count}} Specs auf {{n}} Rails`,launchedPartial:`{{milestone}} teilweise gestartet – {{count}} Specs gestartet, {{skipped}} ausstehend`,chainActive:`{{milestone}} wird bereits gestartet – siehe Blueprint-Panel`,chunkLaunched:`{{milestone}} – Rail {{k}} von {{n}} gestartet`,paused:`{{milestone}} pausiert – {{reason}}`,resume:`Fortsetzen`,delivered:`{{milestone}} geliefert – {{count}} Specs warten auf dein Review`,review:`Prüfen`,completed:`{{milestone}} abgeschlossen – alle Specs gemergt`,launchedCheckpoint:`{{milestone}} gestartet — {{count}} Specs auf Rail 1 von {{n}}; vor jedem weiteren Rail wird gefragt`,checkpoint:`{{milestone}} — Rail {{k}} von {{n}} geliefert. Nächstes Rail starten?`,launchNext:`Nächstes Rail starten`,autoContinue:`Automatisch weiter`},sequentialHint:`Jedes Rail baut auf dem Branch des vorherigen Rails auf`,parallelHint:`Unabhängige Rails vom Integrations-Branch (kein Stapeln)`},v={settledLabel:`Entscheidung getroffen`,surprise:{label:`Builder`,hint:`Jede Entscheidung lässt sich danach anpassen`,title:`Überrasch mich`,description:`Lass den Builder Produkt, Kernablauf, Plattform, Stack und Meilensteine festlegen und dir den Blueprint zur Freigabe oder Anpassung vorlegen.`,cta:`Überrasch mich`,settledTitle:`Überrasch mich`,settledDescription:`Du hast den Builder alle Blueprint-Dimensionen festlegen lassen.`},approve:{label:`Blueprint bereit`,hint:`Oder schreib, was du ändern möchtest`,title:`Blueprint freigeben`,description:`Alle Dimensionen sind festgelegt. Gib ihn frei und der Builder schreibt die Specs für Meilenstein 1 vollständig, jeweils zwei auf einmal, und prüft dann den Stapel.`,cta:`Freigeben und Specs erzeugen`,settledTitle:`Blueprint freigegeben`,settledDescription:`Der Builder erzeugt aus diesem Blueprint das Backlog für Meilenstein 1.`}},y={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,sequential:d,generation:f,readiness:p,snapshot:m,recent:h,quality:g,milestoneProgress:_,decisionCard:v};export{n as commit,v as decisionCard,y as default,i as done,o as errors,f as generation,s as milestone,_ as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,g as quality,p as readiness,h as recent,d as sequential,e as shell,a as sidebar,m as snapshot,u as specModal};
@@ -1 +0,0 @@
1
- var e={title:`Construtor de projetos`,subtitle:`Da ideia ao backlog do Marco 1`,close:`Fechar o Construtor`,emptyTitle:`Descreva sua ideia de app`,emptyHint:`Uma ou duas frases bastam — o Construtor fará uma breve entrevista e proporá um blueprint completo. Você também pode deixá-lo decidir tudo.`,surpriseMe:`Surpreenda-me`,inputPlaceholder:`Um app que…`,createSpecs:`Criar specs`,createSpecsHint:`Disponível quando as specs do Marco 1 passarem na auditoria`,providerUnavailable:`O Construtor requer um provedor com modo nativo sem ferramentas ou somente leitura. Este provedor não está disponível aqui.`},t={title:`Blueprint`,product:`Produto`,coreFlow:`Fluxo principal`,platform:`Plataforma`,stack:`Stack`,milestones:`Marcos`,milestonesValue:`{{count}} planejados`,assumptions:`Suposições`,m1Specs:`Specs do Marco 1 ({{count}})`,dependsOn:`depende de #{{index}}`,criteriaCount:`{{count}} critérios de aceitação`,laterMilestones:`Marcos posteriores`,empty:`O blueprint se preenche enquanto você conversa.`,specsComplete:`Completas`,specsInProgress:`Em andamento`,specWriting:`a escrever…`,specPendingBody:`ainda por escrever`},n={title:`Criar o projeto`,description:`Nada toca o disco até você confirmar. O repo fica intocado — os artefatos do Specrails vivem fora dele.`,nameLabel:`Nome do projeto`,locationLabel:`Local`,locationHint:`Uma nova pasta será criada aqui (vazia ou inexistente).`,providersLabel:`Provedores de IA`,githubLabel:`Criar repositório privado no GitHub`,githubAuthHint:`Inicie sessão primeiro: gh auth login`,back:`Voltar`,submit:`Criar projeto`,creating:`Criando…`,errors:{generic:`O commit não pôde iniciar. Verifique os valores e tente de novo.`,invalid_name:`O nome do projeto é obrigatório.`,invalid_location:`O local é obrigatório.`,providers_required:`Selecione pelo menos um provedor.`,unknown_provider:`Um dos provedores selecionados não está disponível.`,invalid_blueprint:`O blueprint está incompleto — volte e termine com o Construtor.`,m1_specs_required:`O blueprint ainda não tem specs do Marco 1.`,m1_specs_over_cap:`O Marco 1 tem specs demais (máx. 10). Peça ao Construtor para enxugá-lo.`,m1_spec_quality_invalid:`As specs geradas ainda não estão prontas para implementação. Volte ao Construtor e refine o item indicado.`,bundled_framework_missing:`O framework embutido está ausente — reinstale o app Specrails.`,location_not_empty:`Essa pasta já existe e não está vazia. Escolha outro local.`,location_already_registered:`Esse local já pertence a um projeto registrado.`,commit_failed:`A criação do projeto falhou — veja a lista de passos para o motivo.`}},r={title:`Criando seu projeto…`,steps:{"create-dir":`Criar a pasta do projeto`,"git-init":`Inicializar o repositório git + README`,assemble:`Montar o workspace do Specrails (offline)`,blueprint:`Gravar o blueprint`,tickets:`Inserir as specs do Marco 1`,register:`Registrar o projeto`,github:`Criar o repositório no GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) não está instalado — repositório não criado`,gh_not_authenticated:`gh sem sessão (execute gh auth login) — repositório não criado`,gh_scope:`Seu token do gh não pode criar repositórios (falta o scope repo)`,gh_repo_exists:`Já existe um repositório com esse nome na sua conta`,gh_network:`Erro de rede com o GitHub — repositório não criado`,generic:`Falha ao criar o repositório do GitHub`}},i={title:`Projeto criado`,description:`Seu backlog do Marco 1 está no quadro, com a etiqueta M1.`,launchM1:`Lançar o Marco 1`,openProject:`Abrir o projeto`,launchToast:`Marco 1 lançado — {{count}} specs distribuídas em trilhos (máx. 3 por trilho)`,launchPartialToast:`Marco 1 lançado parcialmente — {{count}} specs lançadas, {{skipped}} pendentes`,launchFailed:`Não foi possível lançar o Marco 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lançar o Marco 1`,generateNext:`Gerar M{{n}}`,generateHint:`Abre uma sessão de specs ancorada no código, semeada com o blueprint`,generateUnavailable:`A geração de marcos requer um modo nativo somente leitura`},o={startFailed:`Não foi possível iniciar a conversa do Construtor.`,turnFailed:`O turno do Construtor falhou.`,commitFailed:`A criação do projeto falhou.`},s={title:`Gerar {{label}}`,inputPlaceholder:`Refine as specs…`,commit:`Confirmar {{count}} specs como {{label}}`,commitToast:`{{count}} specs adicionadas ao quadro como {{label}}`,commitFailed:`Não foi possível confirmar o marco`,providerUnavailable:`A geração de marcos não está disponível porque este provedor não tem modo nativo somente leitura.`},c={title:`Construtor de projetos`,subtitle:`O agente está construindo um projeto novo`,exit:`Sair`,exitConfirmTitle:`Sair do Construtor?`,exitConfirmBody:`O Construtor para agora. Seu blueprint fica salvo — retome-o em “Continue de onde parou” na próxima vez que abrir o Construtor.`,exitConfirmCancel:`Continuar construindo`,exitConfirmDiscard:`Descartar e sair`},l={surpriseMe:`Surpreenda-me — proponha valores sensatos para todas as dimensões do blueprint, mantenha m1Specs vazio e deixe-me aprovar o plano antes de gerar as specs detalhadas.`,milestoneSeed:`Gere as specs detalhadas do marco {{label}} ("{{title}}"). Leia primeiro o código real, valide o lote completo e só então emita TODAS as specs detalhadas do marco em uma única resposta/snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Gere as specs detalhadas do marco {{label}} ("{{title}}"). Títulos de specs planejadas: {{planned}}. Leia primeiro o código real, valide o lote completo e só então emita TODAS as specs detalhadas do marco em uma única resposta/snapshot blueprint-draft.`,repairSnapshot:`Seu último bloco blueprint-draft não pôde ser usado pelo app ({{reason}}). Reemita o snapshot COMPLETO como JSON estritamente válido (quebras de linha dentro de strings escapadas como \\n, sem vírgulas finais, sem blocos de código aninhados) — apenas o bloco.`,approve:`Aprovado — gera agora o backlog detalhado do Marco 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Fechar`,open:`Ver detalhe da spec`,empty:`Ainda sem descrição.`,summary:`Resumo`,priority:`Prioridade`,description:`Descrição da spec`,acceptanceCriteria:`Critérios de aceitação`,criteriaEmpty:`Ainda não há critérios de aceitação.`},d={modeLabel:`Modo de lançamento`,mode:{sequential:`Sequencial`,parallel:`Paralelo`}},f={writing:`A escrever as specs do Milestone 1…`,specCount:`spec {{n}}`,turn:`turno {{turn}}/{{total}}`,phase:{outline:`A esboçar as specs do Milestone 1…`,details:`A escrever em detalhe as specs {{from}}–{{to}} de {{total}}…`,audit:`A auditar as {{total}} specs…`,repair:`A pedir de novo as specs {{from}}–{{to}}…`}},p={title:`Pronto para criar as specs?`,steps:{blueprint:`Blueprint aprovado`,specs:`Specs do Marco 1 geradas`,audit:`Auditoria de qualidade`},details:{blueprint:{done:`{{filled}}/{{total}} dimensões`,pending:`{{filled}}/{{total}} dimensões`,blocked:`{{filled}}/{{total}} dimensões`},specs:{done:`{{count}} specs · completas`,pending:`{{count}} de {{min}}–{{max}}`,blocked:`{{count}} specs · precisa de {{min}}–{{max}}`,writing:`{{written}} de {{count}} escritas`},audit:{done:`sem problemas`,pending:`aguardando as specs`,blocked:`{{count}} a corrigir`,writing:`quando as specs estiverem escritas`}},hints:{blueprint:{pending:`Termine a entrevista ou diga “surpreenda-me” — {{filled}}/{{total}} dimensões até agora.`,blocked:`O blueprint está incompleto.`},specs:{pending:`Aprove o blueprint e o Construtor gerará o backlog do Marco 1.`,blocked:`O Marco 1 precisa de {{min}}–{{max}} specs (agora {{count}}). Peça ao Construtor para ajustar.`,writing:`O Construtor está a escrever cada spec por completo — a auditoria de qualidade corre quando o lote estiver completo.`},audit:{pending:`Aguardando as specs.`,blocked:`{{count}} problema(s) de auditoria bloqueiam o commit — abra a lista abaixo.`,writing:`A auditoria corre quando todas as specs estiverem escritas.`}},issuesCount_one:`{{count}} problema de auditoria`,issuesCount_other:`{{count}} problemas de auditoria`,askFix:`Pedir ao Construtor para corrigir`},m={repairing:{invalid_json:`Reparando o snapshot (o último bloco não era JSON válido)…`,truncated:`Solicitando o snapshot novamente (a resposta foi cortada)…`,quality:`Pedindo ao Construtor para corrigir os problemas de auditoria…`,automatic:`automático`},rejected:{title:`O último snapshot do Construtor não pôde ser usado`,invalid_json:`O bloco do blueprint não era JSON válido, então o painel ainda mostra o estado anterior.`,missing_version:`O bloco não era um snapshot de blueprint (blueprintVersion ausente).`,truncated:`A resposta foi cortada antes de fechar o bloco, então nada foi recebido.`,autoRepairFailed:`Uma reparação automática já foi tentada.`,retry:`Pedir o snapshot novamente`},repairedNote:`Snapshot reparado automaticamente`,nothingToRepair:`Não há nada para reparar — continue conversando com o Construtor.`,noSession:`Esta conversa não pode ser retomada com seu provedor; envie uma nova mensagem.`,alreadyStreaming:`O Construtor ainda está respondendo.`,halted:{title:`A geração de specs parou cedo demais`,detail:`{{written}} de {{total}} specs escritas por completo. As restantes ainda são só títulos do esboço.`,resume:`Continuar a gerar`}},h={title:`Continue de onde parou`,untitled:`Blueprint sem título`,specsComplete:`{{count}} specs prontas`,specsInProgress:`{{count}} specs em andamento`,dimensions:`{{filled}}/{{total}} dimensões`,pendingIssue:`snapshot a reparar`,discard:`Descartar`,discardConfirm:`Confirmar descarte`,discardCancel:`Manter`,resumeFailed:`Não foi possível retomar esse blueprint.`,discardFailed:`Não foi possível descartar esse blueprint.`},g={batch_incomplete:`O Construtor ainda não marcou o lote como completo.`,spec_count:`O lote precisa de {{min}}–{{max}} specs (agora {{count}}).`,invalid_shape:`A spec {{n}} não é um objeto válido.`,invalid_kind:`A spec {{n}} precisa de um tipo válido (scaffold, feature ou verification).`,scaffold_first:`A primeira spec deve ser o scaffold do projeto.`,duplicate_scaffold:`A spec {{n}} não pode ser um segundo scaffold.`,title_required:`A spec {{n}} precisa de um título.`,title_duplicate:`A spec {{n}} repete o título da spec {{other}}.`,summary:`A spec {{n}} precisa de um resumo de uma linha com menos de 240 caracteres.`,invalid_priority:`A spec {{n}} precisa de uma prioridade válida.`,canonical_sections:`Faltam à spec {{n}} as cinco seções canônicas em ordem.`,empty_section:`A spec {{n}} tem a seção “{{heading}}” vazia.`,section_bullets:`A spec {{n}} precisa de pelo menos {{min}} marcadores em "{{heading}}".`,complexity_format:`A spec {{n}} precisa de um nível de complexidade com justificativa.`,scaffold_readme:`A spec de scaffold deve mencionar o README existente.`,criteria_count:`A spec {{n}} precisa de {{min}}–{{max}} critérios de aceitação (tem {{count}}).`,criterion_quality:`Spec {{n}}, critério {{criterion}}: não é concreto o suficiente.`,duplicate_criterion:`A spec {{n}} repete o critério de aceitação {{criterion}}.`,milestone_label:`A spec {{n}} precisa do rótulo {{label}}.`,domain_label:`A spec {{n}} precisa de um rótulo de domínio além de {{label}}.`,invalid_dependency:`A spec {{n}} só pode depender de uma spec anterior.`,scaffold_dependency:`A spec de scaffold não pode declarar dependência.`,section_depth:`A spec {{n}} precisa de um "{{heading}}" mais completo (pelo menos {{min}} caracteres).`},_={state:{planned:`Planeado`,committed:`Pronto a lançar`,running:`Em curso`,delivered:`Entregue — a aguardar revisão`,done:`Concluído`},counts:`{{delivered}} de {{total}} entregues · {{done}} concluídas`,failedNote_one:`{{count}} spec falhou na última tentativa`,failedNote_other:`{{count}} specs falharam na última tentativa`,legend:{done:`Concluídas`,onReview:`Em revisão`,inProgress:`Em curso`,failed:`Falharam na última tentativa`,todo:`Pendentes`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} da cadeia`,running:`A correr · {{elapsed}}`,review:`Rever`,open:`Abrir o rail`,noDelivery:`Ainda sem entrega`},chain:{title:`Cadeia sequencial`,parallelTitle:`Lançamento paralelo`,progress:`rail {{k}} de {{n}}`,waiting:`à espera que o rail {{k}} termine`,stackedOn:`o próximo rail parte de {{branch}}`,paused:`Em pausa — {{reason}}`,completed:`Todos os rails lançados`,cancelled:`Cadeia cancelada`,resume:`Retomar`,cancel:`Cancelar cadeia`,resumed:`Cadeia retomada`,resumeFailed:`Não foi possível retomar a cadeia`,cancelledToast:`Cadeia cancelada — os rails em curso continuam`,reasons:{chunk_failed:`o último rail falhou`,chunk_stalled:`o último rail travou (sem saída do fornecedor)`,chunk_stopped:`o último rail foi parado`,launch_rejected:`o próximo rail não pôde ser lançado ({{detail}})`,head_missing:`o ramo de base já não existe`,head_discarded:`a entrega de que o próximo rail parte foi descartada`,run_lost:`o rail em execução não foi encontrado após um reinício`,unknown:`em pausa`,provider_limit:`o limite de utilização do fornecedor foi atingido`},checkpoint:`Rail {{k}} de {{n}} entregue — lançar o rail {{next}}?`,launchNext:`Lançar o próximo rail`,nextLaunched:`Próximo rail lançado`,autoAdvance:`Continuar automaticamente`,autoAdvanceHint:`Lança cada rail seguinte assim que o anterior é entregue`,checkpointHint:`Para após cada rail e pergunta antes de lançar o próximo`,checkpointNote:`para após este rail`,autoOn:`Continuação automática ligada — os próximos rails são lançados sozinhos`,autoOff:`Continuação automática desligada — será perguntado antes de cada rail`,autoFailed:`Não foi possível atualizar a cadeia`},toast:{launched:`{{milestone}} lançado — {{count}} specs no rail 1 de {{n}}; os próximos rails seguem automaticamente`,launchedAll:`{{milestone}} lançado — {{count}} specs em {{n}} rails`,launchedPartial:`{{milestone}} parcialmente lançado — {{count}} specs lançadas, {{skipped}} pendentes`,chainActive:`{{milestone}} já está a ser lançado — veja o painel Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} de {{n}} lançado`,paused:`{{milestone}} em pausa — {{reason}}`,resume:`Retomar`,delivered:`{{milestone}} entregue — {{count}} specs aguardam a sua revisão`,review:`Rever`,completed:`{{milestone}} concluído — todas as specs integradas`,launchedCheckpoint:`{{milestone}} lançado — {{count}} specs no rail 1 de {{n}}; será perguntado antes de cada rail seguinte`,checkpoint:`{{milestone}} — rail {{k}} de {{n}} entregue. Lançar o próximo rail?`,launchNext:`Lançar o próximo rail`,autoContinue:`Continuar auto`},sequentialHint:`Cada rail parte do ramo do rail anterior`,parallelHint:`Rails independentes a partir do ramo de integração (sem empilhar)`},v={settledLabel:`Decisão tomada`,surprise:{label:`Construtor`,hint:`Poderás ajustar qualquer decisão depois`,title:`Surpreende-me`,description:`Deixa o Construtor decidir produto, fluxo principal, plataforma, stack e marcos, e apresentar-te o blueprint para aprovares ou afinares.`,cta:`Surpreende-me`,settledTitle:`Surpreende-me`,settledDescription:`Deixaste o Construtor decidir todas as dimensões do blueprint.`},approve:{label:`Blueprint pronto`,hint:`Ou escreve o que queres mudar`,title:`Aprovar o blueprint`,description:`Todas as dimensões estão decididas. Aprova-o e o Construtor escreve as specs do Marco 1 por completo, duas de cada vez, e depois audita o lote.`,cta:`Aprovar e gerar specs`,settledTitle:`Blueprint aprovado`,settledDescription:`O Construtor está a gerar o backlog do Marco 1 a partir deste blueprint.`}},y={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,sequential:d,generation:f,readiness:p,snapshot:m,recent:h,quality:g,milestoneProgress:_,decisionCard:v};export{n as commit,v as decisionCard,y as default,i as done,o as errors,f as generation,s as milestone,_ as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,g as quality,p as readiness,h as recent,d as sequential,e as shell,a as sidebar,m as snapshot,u as specModal};
@@ -1 +0,0 @@
1
- var e={title:`Costruttore di progetti`,subtitle:`Dall'idea al backlog della Milestone 1`,close:`Chiudi il Costruttore`,emptyTitle:`Descrivi la tua idea di app`,emptyHint:`Bastano una o due frasi — il Costruttore ti intervisterà brevemente e proporrà un blueprint completo. Puoi anche lasciargli decidere tutto.`,surpriseMe:`Sorprendimi`,inputPlaceholder:`Un'app che…`,createSpecs:`Crea le spec`,createSpecsHint:`Disponibile quando le spec della Milestone 1 superano l’audit`,providerUnavailable:`Il Costruttore richiede un provider con modalità nativa senza strumenti o di sola lettura. Questo provider non è disponibile qui.`},t={title:`Blueprint`,product:`Prodotto`,coreFlow:`Flusso principale`,platform:`Piattaforma`,stack:`Stack`,milestones:`Milestone`,milestonesValue:`{{count}} pianificate`,assumptions:`Assunzioni`,m1Specs:`Spec della Milestone 1 ({{count}})`,dependsOn:`dipende da #{{index}}`,criteriaCount:`{{count}} criteri di accettazione`,laterMilestones:`Milestone successive`,empty:`Il blueprint si riempie mentre conversi.`,specsComplete:`Complete`,specsInProgress:`In corso`,specWriting:`in scrittura…`,specPendingBody:`non ancora scritta`},n={title:`Crea il progetto`,description:`Nulla tocca il disco finché non confermi. Il repo resta intatto — gli artefatti Specrails vivono altrove.`,nameLabel:`Nome del progetto`,locationLabel:`Percorso`,locationHint:`Qui verrà creata una nuova cartella (vuota o inesistente).`,providersLabel:`Provider IA`,githubLabel:`Crea repository GitHub privato`,githubAuthHint:`Accedi prima: gh auth login`,back:`Indietro`,submit:`Crea progetto`,creating:`Creazione…`,errors:{generic:`Il commit non è potuto partire. Controlla i valori e riprova.`,invalid_name:`Il nome del progetto è obbligatorio.`,invalid_location:`Il percorso è obbligatorio.`,providers_required:`Seleziona almeno un provider.`,unknown_provider:`Uno dei provider selezionati non è disponibile.`,invalid_blueprint:`Il blueprint è incompleto — torna indietro e completalo col Costruttore.`,m1_specs_required:`Il blueprint non ha ancora spec della Milestone 1.`,m1_specs_over_cap:`La Milestone 1 ha troppe spec (max 10). Chiedi al Costruttore di snellirla.`,m1_spec_quality_invalid:`Le spec generate non sono ancora pronte per l'implementazione. Torna al Costruttore e perfeziona l'elemento indicato.`,bundled_framework_missing:`Manca il framework integrato — reinstalla l'app Specrails.`,location_not_empty:`Quella cartella esiste già e non è vuota. Scegli un altro percorso.`,location_already_registered:`Quel percorso appartiene già a un progetto registrato.`,commit_failed:`La creazione del progetto è fallita — vedi l'elenco dei passi per il motivo.`}},r={title:`Creazione del progetto…`,steps:{"create-dir":`Crea la cartella del progetto`,"git-init":`Inizializza il repository git + README`,assemble:`Assembla il workspace Specrails (offline)`,blueprint:`Scrivi il blueprint`,tickets:`Inserisci le spec della Milestone 1`,register:`Registra il progetto`,github:`Crea il repository GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) non è installato — repository non creato`,gh_not_authenticated:`gh non è autenticato (esegui gh auth login) — repository non creato`,gh_scope:`Il tuo token gh non può creare repository (manca lo scope repo)`,gh_repo_exists:`Esiste già un repository con questo nome nel tuo account`,gh_network:`Errore di rete con GitHub — repository non creato`,generic:`Creazione del repository GitHub non riuscita`}},i={title:`Progetto creato`,description:`Il backlog della Milestone 1 è sulla board, etichettato M1.`,launchM1:`Lancia la Milestone 1`,openProject:`Apri il progetto`,launchToast:`Milestone 1 lanciata — {{count}} spec distribuite sui binari (max 3 per binario)`,launchPartialToast:`Milestone 1 lanciata parzialmente — {{count}} spec lanciate, {{skipped}} in attesa`,launchFailed:`Impossibile lanciare la Milestone 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lancia la Milestone 1`,generateNext:`Genera M{{n}}`,generateHint:`Apre una sessione di spec ancorata al codice, seminata col blueprint`,generateUnavailable:`La generazione delle milestone richiede una modalità nativa di sola lettura`},o={startFailed:`Impossibile avviare la conversazione del Costruttore.`,turnFailed:`Il turno del Costruttore è fallito.`,commitFailed:`La creazione del progetto è fallita.`},s={title:`Genera {{label}}`,inputPlaceholder:`Rifinisci le spec…`,commit:`Conferma {{count}} spec come {{label}}`,commitToast:`{{count}} spec aggiunte alla board come {{label}}`,commitFailed:`Impossibile confermare la milestone`,providerUnavailable:`La generazione delle milestone non è disponibile perché questo provider non ha una modalità nativa di sola lettura.`},c={title:`Costruttore di progetti`,subtitle:`L'agente sta costruendo un nuovo progetto`,exit:`Esci`,exitConfirmTitle:`Uscire dal Costruttore?`,exitConfirmBody:`Il Builder si ferma ora. Il tuo blueprint resta salvato: riprendilo da «Continua da dove eri rimasto» alla prossima apertura del Builder.`,exitConfirmCancel:`Continua a costruire`,exitConfirmDiscard:`Scarta ed esci`},l={surpriseMe:`Sorprendimi — proponi valori sensati per tutte le dimensioni del blueprint, lascia m1Specs vuoto e fammi approvare il piano prima di generare le spec dettagliate.`,milestoneSeed:`Genera le spec dettagliate della milestone {{label}} ("{{title}}"). Leggi prima il codice reale, valida il lotto completo e solo allora emetti TUTTE le spec dettagliate della milestone in un'unica risposta/snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Genera le spec dettagliate della milestone {{label}} ("{{title}}"). Titoli di spec pianificate: {{planned}}. Leggi prima il codice reale, valida il lotto completo e solo allora emetti TUTTE le spec dettagliate della milestone in un'unica risposta/snapshot blueprint-draft.`,repairSnapshot:`Il tuo ultimo blocco blueprint-draft non è stato utilizzabile dall’app ({{reason}}). Riemetti lo snapshot COMPLETO come JSON strettamente valido (a capo nelle stringhe come \\n, niente virgole finali, niente blocchi di codice annidati) — solo il blocco.`,approve:`Approvato — genera ora il backlog dettagliato della Milestone 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Chiudi`,open:`Vedi dettaglio della spec`,empty:`Ancora nessuna descrizione.`,summary:`Riepilogo`,priority:`Priorità`,description:`Descrizione della spec`,acceptanceCriteria:`Criteri di accettazione`,criteriaEmpty:`Ancora nessun criterio di accettazione.`},d={modeLabel:`Modalità di lancio`,mode:{sequential:`Sequenziale`,parallel:`Parallelo`}},f={writing:`Scrittura delle spec della Milestone 1…`,specCount:`spec {{n}}`,turn:`turno {{turn}}/{{total}}`,phase:{outline:`Bozza delle spec della Milestone 1…`,details:`Scrittura dettagliata delle spec {{from}}–{{to}} di {{total}}…`,audit:`Verifica di tutte le {{total}} spec…`,repair:`Nuova richiesta delle spec {{from}}–{{to}}…`}},p={title:`Pronto a creare le spec?`,steps:{blueprint:`Blueprint approvato`,specs:`Spec della Milestone 1 generate`,audit:`Audit di qualità`},details:{blueprint:{done:`{{filled}}/{{total}} dimensioni`,pending:`{{filled}}/{{total}} dimensioni`,blocked:`{{filled}}/{{total}} dimensioni`},specs:{done:`{{count}} spec · complete`,pending:`{{count}} di {{min}}–{{max}}`,blocked:`{{count}} spec · servono {{min}}–{{max}}`,writing:`{{written}} di {{count}} scritte`},audit:{done:`nessun problema`,pending:`in attesa delle spec`,blocked:`{{count}} da correggere`,writing:`quando le spec saranno scritte`}},hints:{blueprint:{pending:`Completa l’intervista o di’ «sorprendimi» — finora {{filled}}/{{total}} dimensioni.`,blocked:`Il blueprint è incompleto.`},specs:{pending:`Approva il blueprint e il Builder genererà il backlog della Milestone 1.`,blocked:`La Milestone 1 richiede {{min}}–{{max}} spec (ora {{count}}). Chiedi al Builder di ridimensionarla.`,writing:`Il Builder sta scrivendo ogni spec per intero — l'audit di qualità parte quando il lotto è completo.`},audit:{pending:`In attesa delle spec.`,blocked:`{{count}} problema/i di audit bloccano il commit — apri l’elenco qui sotto.`,writing:`L'audit parte quando tutte le spec sono scritte.`}},issuesCount_one:`{{count}} problema di audit`,issuesCount_other:`{{count}} problemi di audit`,askFix:`Chiedi al Builder di correggerli`},m={repairing:{invalid_json:`Riparazione dello snapshot (l’ultimo blocco non era JSON valido)…`,truncated:`Nuova richiesta dello snapshot (la risposta è stata troncata)…`,quality:`Richiesta al Builder di correggere i problemi di audit…`,automatic:`automatica`},rejected:{title:`L’ultimo snapshot del Builder non è stato utilizzabile`,invalid_json:`Il blocco del blueprint non era JSON valido, quindi il pannello mostra ancora lo stato precedente.`,missing_version:`Il blocco non era uno snapshot di blueprint (manca blueprintVersion).`,truncated:`La risposta è stata troncata prima della chiusura del blocco: non è arrivato nulla.`,autoRepairFailed:`Una riparazione automatica è già stata tentata.`,retry:`Richiedi di nuovo lo snapshot`},repairedNote:`Snapshot riparato automaticamente`,nothingToRepair:`Non c’è nulla da riparare — continua a parlare con il Builder.`,noSession:`Questa conversazione non può essere ripresa con il suo provider; invia invece un nuovo messaggio.`,alreadyStreaming:`Il Builder sta ancora rispondendo.`,halted:{title:`La generazione delle spec si è fermata in anticipo`,detail:`{{written}} spec su {{total}} scritte per intero. Le altre sono ancora solo titoli della bozza.`,resume:`Continua a generare`}},h={title:`Continua da dove eri rimasto`,untitled:`Blueprint senza titolo`,specsComplete:`{{count}} spec pronte`,specsInProgress:`{{count}} spec in corso`,dimensions:`{{filled}}/{{total}} dimensioni`,pendingIssue:`snapshot da riparare`,discard:`Scarta`,discardConfirm:`Conferma eliminazione`,discardCancel:`Mantieni`,resumeFailed:`Impossibile riprendere questo blueprint.`,discardFailed:`Impossibile scartare questo blueprint.`},g={batch_incomplete:`Il Builder non ha ancora segnato il batch come completo.`,spec_count:`Il batch richiede {{min}}–{{max}} spec (ora {{count}}).`,invalid_shape:`La spec {{n}} non è un oggetto valido.`,invalid_kind:`La spec {{n}} richiede un tipo valido (scaffold, feature o verification).`,scaffold_first:`La prima spec deve essere lo scaffold del progetto.`,duplicate_scaffold:`La spec {{n}} non può essere un secondo scaffold.`,title_required:`La spec {{n}} richiede un titolo.`,title_duplicate:`La spec {{n}} ripete il titolo della spec {{other}}.`,summary:`La spec {{n}} richiede un riassunto di una riga sotto i 240 caratteri.`,invalid_priority:`La spec {{n}} richiede una priorità valida.`,canonical_sections:`Alla spec {{n}} mancano le cinque sezioni canoniche in ordine.`,empty_section:`La sezione «{{heading}}» della spec {{n}} è vuota.`,section_bullets:`La spec {{n}} richiede almeno {{min}} punti sotto "{{heading}}".`,complexity_format:`La spec {{n}} richiede un livello di complessità motivato.`,scaffold_readme:`La spec di scaffold deve citare il README esistente.`,criteria_count:`La spec {{n}} richiede {{min}}–{{max}} criteri di accettazione (ne ha {{count}}).`,criterion_quality:`Spec {{n}}, criterio {{criterion}}: non abbastanza concreto.`,duplicate_criterion:`La spec {{n}} ripete il criterio di accettazione {{criterion}}.`,milestone_label:`La spec {{n}} richiede l’etichetta {{label}}.`,domain_label:`La spec {{n}} richiede un’etichetta di dominio oltre a {{label}}.`,invalid_dependency:`La spec {{n}} può dipendere solo da una spec precedente.`,scaffold_dependency:`La spec di scaffold non può dichiarare dipendenze.`,section_depth:`La spec {{n}} richiede una sezione "{{heading}}" più completa (almeno {{min}} caratteri).`},_={state:{planned:`Pianificato`,committed:`Pronto al lancio`,running:`In corso`,delivered:`Consegnato — in attesa di revisione`,done:`Fatto`},counts:`{{delivered}} di {{total}} consegnate · {{done}} fatte`,failedNote_one:`{{count}} spec è fallita all'ultimo tentativo`,failedNote_other:`{{count}} spec sono fallite all'ultimo tentativo`,legend:{done:`Fatte`,onReview:`In revisione`,inProgress:`In corso`,failed:`Fallite all'ultimo tentativo`,todo:`In attesa`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} della catena`,running:`In esecuzione · {{elapsed}}`,review:`Rivedi`,open:`Apri il rail`,noDelivery:`Nessuna consegna ancora`},chain:{title:`Catena sequenziale`,parallelTitle:`Lancio parallelo`,progress:`rail {{k}} di {{n}}`,waiting:`in attesa che il rail {{k}} termini`,stackedOn:`il rail successivo parte da {{branch}}`,paused:`In pausa — {{reason}}`,completed:`Tutti i rail lanciati`,cancelled:`Catena annullata`,resume:`Riprendi`,cancel:`Annulla catena`,resumed:`Catena ripresa`,resumeFailed:`Impossibile riprendere la catena`,cancelledToast:`Catena annullata — i rail in corso continuano`,reasons:{chunk_failed:`l'ultimo rail è fallito`,chunk_stalled:`l'ultimo rail si è bloccato (nessun output dal provider)`,chunk_stopped:`l'ultimo rail è stato fermato`,launch_rejected:`il rail successivo non è partito ({{detail}})`,head_missing:`il branch di base non esiste più`,head_discarded:`la consegna su cui parte il rail successivo è stata scartata`,run_lost:`il rail in esecuzione non è stato trovato dopo un riavvio`,unknown:`in pausa`,provider_limit:`raggiunto il limite d'uso del provider`},checkpoint:`Rail {{k}} di {{n}} consegnato — avviare il rail {{next}}?`,launchNext:`Avvia il prossimo rail`,nextLaunched:`Prossimo rail avviato`,autoAdvance:`Continua automaticamente`,autoAdvanceHint:`Avvia ogni rail successivo appena il precedente è consegnato`,checkpointHint:`Si ferma dopo ogni rail e chiede prima di avviare il successivo`,checkpointNote:`si ferma dopo questo rail`,autoOn:`Continuazione automatica attiva — i prossimi rail partono da soli`,autoOff:`Continuazione automatica disattivata — ti verrà chiesto prima di ogni rail`,autoFailed:`Impossibile aggiornare la catena`},toast:{launched:`{{milestone}} lanciato — {{count}} spec sul rail 1 di {{n}}; i rail successivi seguono automaticamente`,launchedAll:`{{milestone}} lanciato — {{count}} spec su {{n}} rail`,launchedPartial:`{{milestone}} lanciato parzialmente — {{count}} spec lanciate, {{skipped}} in attesa`,chainActive:`{{milestone}} è già in lancio — vedi il pannello Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} di {{n}} lanciato`,paused:`{{milestone}} in pausa — {{reason}}`,resume:`Riprendi`,delivered:`{{milestone}} consegnato — {{count}} spec attendono la tua revisione`,review:`Rivedi`,completed:`{{milestone}} completato — tutte le spec integrate`,launchedCheckpoint:`{{milestone}} avviato — {{count}} spec sul rail 1 di {{n}}; ti verrà chiesto prima di ogni rail successivo`,checkpoint:`{{milestone}} — rail {{k}} di {{n}} consegnato. Avviare il prossimo rail?`,launchNext:`Avvia il prossimo rail`,autoContinue:`Continua auto`},sequentialHint:`Ogni rail parte dal branch del rail precedente`,parallelHint:`Rail indipendenti dal branch di integrazione (senza impilare)`},v={settledLabel:`Decisione presa`,surprise:{label:`Builder`,hint:`Potrai ritoccare ogni decisione dopo`,title:`Sorprendimi`,description:`Lascia che il Builder decida prodotto, flusso principale, piattaforma, stack e milestone, e ti presenti il blueprint da approvare o ritoccare.`,cta:`Sorprendimi`,settledTitle:`Sorprendimi`,settledDescription:`Hai lasciato che il Builder decidesse tutte le dimensioni del blueprint.`},approve:{label:`Blueprint pronto`,hint:`Oppure scrivi cosa vuoi cambiare`,title:`Approva il blueprint`,description:`Tutte le dimensioni sono decise. Approvalo e il Builder scrive le spec della Milestone 1 per intero, due alla volta, poi verifica il lotto.`,cta:`Approva e genera le spec`,settledTitle:`Blueprint approvato`,settledDescription:`Il Builder sta generando il backlog della Milestone 1 da questo blueprint.`}},y={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,sequential:d,generation:f,readiness:p,snapshot:m,recent:h,quality:g,milestoneProgress:_,decisionCard:v};export{n as commit,v as decisionCard,y as default,i as done,o as errors,f as generation,s as milestone,_ as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,g as quality,p as readiness,h as recent,d as sequential,e as shell,a as sidebar,m as snapshot,u as specModal};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({commit:()=>i,decisionCard:()=>b,default:()=>x,done:()=>o,errors:()=>c,generation:()=>m,milestone:()=>l,milestoneProgress:()=>y,mode:()=>u,panel:()=>r,progress:()=>a,prompts:()=>d,quality:()=>v,readiness:()=>h,recent:()=>_,sequential:()=>p,shell:()=>n,sidebar:()=>s,snapshot:()=>g,specModal:()=>f}),n={title:`Project Builder`,subtitle:`From idea to Milestone-1 backlog`,close:`Close the Builder`,emptyTitle:`Describe your app idea`,emptyHint:`One or two sentences are enough — the Builder will interview you briefly and propose a full blueprint. You can also ask it to decide everything for you.`,surpriseMe:`Surprise me`,inputPlaceholder:`An app that…`,createSpecs:`Create specs`,createSpecsHint:`Available once the Milestone-1 specs pass the audit`,providerUnavailable:`Project Builder requires a provider with a native no-tools or read-only mode. This provider is unavailable here.`},r={title:`Blueprint`,product:`Product`,coreFlow:`Core flow`,platform:`Platform`,stack:`Stack`,milestones:`Milestones`,milestonesValue:`{{count}} planned`,assumptions:`Assumptions`,m1Specs:`Milestone 1 specs ({{count}})`,dependsOn:`builds on #{{index}}`,criteriaCount:`{{count}} acceptance criteria`,laterMilestones:`Later milestones`,empty:`The blueprint fills in as you talk.`,specsComplete:`Complete`,specsInProgress:`In progress`,specWriting:`writing…`,specPendingBody:`not written yet`},i={title:`Create the project`,description:`Nothing touches disk until you confirm. The repo stays pristine — Specrails artifacts live outside it.`,nameLabel:`Project name`,locationLabel:`Location`,locationHint:`A new folder will be created here (must be empty or absent).`,providersLabel:`AI providers`,githubLabel:`Create private GitHub repository`,githubAuthHint:`Sign in first: gh auth login`,back:`Back`,submit:`Create project`,creating:`Creating…`,errors:{generic:`The commit could not start. Check the values and try again.`,invalid_name:`The project name is required.`,invalid_location:`The location is required.`,providers_required:`Select at least one provider.`,unknown_provider:`One of the selected providers is not available.`,invalid_blueprint:`The blueprint is incomplete — go back and finish it with the Builder.`,m1_specs_required:`The blueprint has no Milestone-1 specs yet.`,m1_specs_over_cap:`Milestone 1 has too many specs (max 10). Ask the Builder to slim it down.`,m1_spec_quality_invalid:`The generated specs are not implementation-ready yet. Return to the Builder and refine the indicated item.`,bundled_framework_missing:`The bundled framework is missing — reinstall the Specrails app.`,location_not_empty:`That folder already exists and is not empty. Pick another location.`,location_already_registered:`That location already belongs to a registered project.`,commit_failed:`The project creation failed — see the step list for the reason.`}},a={title:`Creating your project…`,steps:{"create-dir":`Create project folder`,"git-init":`Initialize git repository + README`,assemble:`Assemble the Specrails workspace (offline)`,blueprint:`Write the blueprint`,tickets:`Insert Milestone-1 specs`,register:`Register the project`,github:`Create GitHub repository`},githubErrors:{gh_not_installed:`GitHub CLI (gh) is not installed — repository not created`,gh_not_authenticated:`gh is not signed in (run gh auth login) — repository not created`,gh_scope:`Your gh token cannot create repositories (missing repo scope)`,gh_repo_exists:`A repository with that name already exists on your account`,gh_network:`Network error talking to GitHub — repository not created`,generic:`GitHub repository creation failed`}},o={title:`Project created`,description:`Your Milestone-1 backlog is on the board, labeled M1.`,launchM1:`Launch Milestone 1`,openProject:`Open the project`,launchToast:`Milestone 1 launched — {{count}} specs across rails (max 3 per rail)`,launchPartialToast:`Milestone 1 partially launched — {{count}} specs launched, {{skipped}} pending`,launchFailed:`Could not launch Milestone 1`},s={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Launch Milestone 1`,generateNext:`Generate M{{n}}`,generateHint:`Opens a grounded spec session seeded with the blueprint`,generateUnavailable:`Milestone generation requires a provider with native read-only mode`},c={startFailed:`Could not start the Builder conversation.`,turnFailed:`The Builder turn failed.`,commitFailed:`Project creation failed.`},l={title:`Generate {{label}}`,inputPlaceholder:`Refine the specs…`,commit:`Commit {{count}} specs as {{label}}`,commitToast:`{{count}} specs committed to the board as {{label}}`,commitFailed:`Could not commit the milestone`,providerUnavailable:`Milestone generation is unavailable because this provider has no native read-only mode.`},u={title:`Project Builder`,subtitle:`The agent is building a new project`,exit:`Exit`,exitConfirmTitle:`Leave the Builder?`,exitConfirmBody:`The Builder stops now. Your blueprint is saved — pick it up again from "Continue where you left off" the next time you open the Builder.`,exitConfirmCancel:`Keep building`,exitConfirmDiscard:`Discard and exit`},d={surpriseMe:`Surprise me — propose sensible defaults for every blueprint dimension, keep m1Specs empty, and let me approve the plan before generating detailed specs.`,milestoneSeed:`Generate the detailed specs for milestone {{label}} ("{{title}}"). Read the real codebase first, validate the complete batch, then emit ALL detailed milestone specs in one blueprint-draft response/snapshot.`,milestoneSeedWithPlanned:`Generate the detailed specs for milestone {{label}} ("{{title}}"). Planned spec titles: {{planned}}. Read the real codebase first, validate the complete batch, then emit ALL detailed milestone specs in one blueprint-draft response/snapshot.`,repairSnapshot:`Your last blueprint-draft block could not be used by the app ({{reason}}). Re-emit the COMPLETE snapshot as strictly valid JSON (newlines inside strings escaped as \\n, no trailing commas, no nested code fences) — only the block.`,approve:`Approved — generate the detailed Milestone-1 backlog now.`},f={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Close`,open:`View spec detail`,empty:`No description yet.`,summary:`Summary`,priority:`Priority`,description:`Spec description`,acceptanceCriteria:`Acceptance criteria`,criteriaEmpty:`No acceptance criteria yet.`},p={modeLabel:`Launch mode`,mode:{sequential:`Sequential`,parallel:`Parallel`}},m={writing:`Writing the Milestone-1 specs…`,specCount:`spec {{n}}`,turn:`turn {{turn}}/{{total}}`,phase:{outline:`Outlining the Milestone-1 specs…`,details:`Writing specs {{from}}–{{to}} of {{total}} in full…`,audit:`Auditing all {{total}} specs…`,repair:`Re-asking for specs {{from}}–{{to}}…`}},h={title:`Ready to create specs?`,steps:{blueprint:`Blueprint approved`,specs:`Milestone-1 specs generated`,audit:`Quality audit`},details:{blueprint:{done:`{{filled}}/{{total}} dimensions`,pending:`{{filled}}/{{total}} dimensions`,blocked:`{{filled}}/{{total}} dimensions`},specs:{done:`{{count}} specs · complete`,pending:`{{count}} of {{min}}–{{max}}`,blocked:`{{count}} specs · needs {{min}}–{{max}}`,writing:`{{written}} of {{count}} written`},audit:{done:`no issues`,pending:`waiting for specs`,blocked:`{{count}} to fix`,writing:`after the specs are written`}},hints:{blueprint:{pending:`Finish the interview or say "surprise me" — {{filled}}/{{total}} dimensions so far.`,blocked:`The blueprint is incomplete.`},specs:{pending:`Approve the blueprint and the Builder will generate the Milestone-1 backlog.`,blocked:`Milestone 1 needs {{min}}–{{max}} specs (currently {{count}}). Ask the Builder to resize it.`,writing:`The Builder is writing every spec in full — the quality audit runs once the batch is complete.`},audit:{pending:`Waiting for the specs.`,blocked:`{{count}} audit issue(s) block the commit — open the list below.`,writing:`The audit runs once every spec is written.`}},issuesCount_one:`{{count}} audit issue`,issuesCount_other:`{{count}} audit issues`,askFix:`Ask the Builder to fix these`},g={repairing:{invalid_json:`Repairing the snapshot (the last block was not valid JSON)…`,truncated:`Re-requesting the snapshot (the reply was cut off)…`,quality:`Asking the Builder to fix the audit issues…`,automatic:`automatic`},rejected:{title:`The Builder's last snapshot could not be used`,invalid_json:`The blueprint block was not valid JSON, so the panel still shows the previous state.`,missing_version:`The block was not a blueprint snapshot (missing blueprintVersion).`,truncated:`The reply was cut off before the block closed, so nothing was received.`,autoRepairFailed:`An automatic repair was already attempted.`,retry:`Ask for the snapshot again`},repairedNote:`Snapshot repaired automatically`,nothingToRepair:`There is nothing to repair — keep talking with the Builder.`,noSession:`This conversation cannot be resumed with its provider; send a new message instead.`,alreadyStreaming:`The Builder is still answering.`,halted:{title:`Spec generation stopped early`,detail:`{{written}} of {{total}} specs written in full. The rest are still outline titles.`,resume:`Continue generating`}},_={title:`Continue where you left off`,untitled:`Untitled blueprint`,specsComplete:`{{count}} specs ready`,specsInProgress:`{{count}} specs in progress`,dimensions:`{{filled}}/{{total}} dimensions`,pendingIssue:`snapshot to repair`,discard:`Discard`,discardConfirm:`Confirm discard`,discardCancel:`Keep`,resumeFailed:`Could not resume that blueprint.`,discardFailed:`Could not discard that blueprint.`},v={batch_incomplete:`The Builder has not marked the batch as complete yet.`,spec_count:`The batch needs {{min}}–{{max}} specs (currently {{count}}).`,invalid_shape:`Spec {{n}} is not a valid object.`,invalid_kind:`Spec {{n}} needs a valid kind (scaffold, feature or verification).`,scaffold_first:`The first spec must be the project scaffold.`,duplicate_scaffold:`Spec {{n}} cannot be a second scaffold.`,title_required:`Spec {{n}} needs a title.`,title_duplicate:`Spec {{n}} repeats the title of spec {{other}}.`,summary:`Spec {{n}} needs a one-line summary under 240 characters.`,invalid_priority:`Spec {{n}} needs a valid priority.`,canonical_sections:`Spec {{n}} is missing the five canonical sections in order.`,empty_section:`Spec {{n}} has an empty "{{heading}}" section.`,section_bullets:`Spec {{n}} needs at least {{min}} bullets under "{{heading}}".`,complexity_format:`Spec {{n}} needs a complexity level with a justification.`,scaffold_readme:`The scaffold spec must mention the existing README.`,criteria_count:`Spec {{n}} needs {{min}}–{{max}} acceptance criteria (has {{count}}).`,criterion_quality:`Spec {{n}}, criterion {{criterion}} is not concrete enough.`,duplicate_criterion:`Spec {{n}} repeats acceptance criterion {{criterion}}.`,milestone_label:`Spec {{n}} needs the {{label}} label.`,domain_label:`Spec {{n}} needs a domain label besides {{label}}.`,invalid_dependency:`Spec {{n}} may only depend on an earlier spec.`,scaffold_dependency:`The scaffold spec cannot declare a dependency.`,section_depth:`Spec {{n}} needs a fuller "{{heading}}" (at least {{min}} characters).`},y={state:{planned:`Planned`,committed:`Ready to launch`,running:`In progress`,delivered:`Delivered — awaiting review`,done:`Done`},counts:`{{delivered}} of {{total}} delivered · {{done}} done`,failedNote_one:`{{count}} spec failed its last attempt`,failedNote_other:`{{count}} specs failed their last attempt`,legend:{done:`Done`,onReview:`In review`,inProgress:`In progress`,failed:`Failed last attempt`,todo:`Pending`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} of the chain`,running:`Running · {{elapsed}}`,review:`Review`,open:`Open the rail`,noDelivery:`No delivery yet`},chain:{title:`Sequential chain`,parallelTitle:`Parallel launch`,progress:`rail {{k}} of {{n}}`,waiting:`waiting for rail {{k}} to settle`,stackedOn:`next rail builds on {{branch}}`,paused:`Paused — {{reason}}`,completed:`All rails launched`,cancelled:`Chain cancelled`,resume:`Resume`,cancel:`Cancel chain`,resumed:`Chain resumed`,resumeFailed:`Could not resume the chain`,cancelledToast:`Chain cancelled — running rails keep going`,reasons:{chunk_failed:`the last rail failed`,chunk_stalled:`the last rail stalled (no provider output)`,chunk_stopped:`the last rail was stopped`,launch_rejected:`the next rail could not launch ({{detail}})`,head_missing:`the branch to build on no longer exists`,head_discarded:`the delivery the next rail builds on was discarded`,run_lost:`the running rail could not be found after a restart`,unknown:`paused`,provider_limit:`the provider's usage limit was reached`},checkpoint:`Rail {{k}} of {{n}} delivered — launch rail {{next}}?`,launchNext:`Launch next rail`,nextLaunched:`Next rail launched`,autoAdvance:`Continue automatically`,autoAdvanceHint:`Launch each next rail as soon as the previous one is delivered`,checkpointHint:`Stop after each rail and ask before launching the next`,checkpointNote:`stops after this rail`,autoOn:`Auto-continue on — the next rails launch on their own`,autoOff:`Auto-continue off — you'll be asked before each next rail`,autoFailed:`Could not update the chain`},toast:{launched:`{{milestone}} launched — {{count}} specs on rail 1 of {{n}}; the next rails follow automatically`,launchedAll:`{{milestone}} launched — {{count}} specs across {{n}} rails`,launchedPartial:`{{milestone}} partially launched — {{count}} specs launched, {{skipped}} pending`,chainActive:`{{milestone}} is already launching — see the Blueprint panel`,chunkLaunched:`{{milestone}} — rail {{k}} of {{n}} launched`,paused:`{{milestone}} paused — {{reason}}`,resume:`Resume`,delivered:`{{milestone}} delivered — {{count}} specs waiting for your review`,review:`Review`,completed:`{{milestone}} complete — every spec merged`,launchedCheckpoint:`{{milestone}} launched — {{count}} specs on rail 1 of {{n}}; you'll be asked before each next rail`,checkpoint:`{{milestone}} — rail {{k}} of {{n}} delivered. Launch the next rail?`,launchNext:`Launch next rail`,autoContinue:`Auto-continue`},sequentialHint:`Each rail builds on the previous rail's branch`,parallelHint:`Independent rails from the integration branch (no stacking)`},b={settledLabel:`Decision taken`,surprise:{label:`Builder`,hint:`You can adjust any decision afterwards`,title:`Surprise me`,description:`Let the Builder decide the product, core flow, platform, stack and milestones, then present the blueprint for you to approve or tweak.`,cta:`Surprise me`,settledTitle:`Surprise me`,settledDescription:`You let the Builder decide every blueprint dimension.`},approve:{label:`Blueprint ready`,hint:`Or type what you want to change`,title:`Approve the blueprint`,description:`Every dimension is decided. Approve it and the Builder writes the Milestone-1 specs in full, two at a time, then audits the batch.`,cta:`Approve & generate specs`,settledTitle:`Blueprint approved`,settledDescription:`The Builder is generating the Milestone-1 backlog from this blueprint.`}},x={shell:n,panel:r,commit:i,progress:a,done:o,sidebar:s,errors:c,milestone:l,mode:u,prompts:d,specModal:f,sequential:p,generation:m,readiness:h,snapshot:g,recent:_,quality:v,milestoneProgress:y,decisionCard:b};export{t};
@@ -1 +0,0 @@
1
- var e={title:`Constructeur de projets`,subtitle:`De l'idée au backlog du Jalon 1`,close:`Fermer le Constructeur`,emptyTitle:`Décrivez votre idée d'app`,emptyHint:`Une ou deux phrases suffisent — le Constructeur vous interviewera brièvement et proposera un blueprint complet. Vous pouvez aussi le laisser tout décider.`,surpriseMe:`Surprenez-moi`,inputPlaceholder:`Une app qui…`,createSpecs:`Créer les specs`,createSpecsHint:`Disponible dès que les specs du Jalon 1 passent l’audit`,providerUnavailable:`Le Constructeur nécessite un fournisseur avec un mode natif sans outils ou en lecture seule. Ce fournisseur n’est pas disponible ici.`},t={title:`Blueprint`,product:`Produit`,coreFlow:`Flux principal`,platform:`Plateforme`,stack:`Stack`,milestones:`Jalons`,milestonesValue:`{{count}} planifiés`,assumptions:`Hypothèses`,m1Specs:`Specs du Jalon 1 ({{count}})`,dependsOn:`dépend de #{{index}}`,criteriaCount:`{{count}} critères d'acceptation`,laterMilestones:`Jalons suivants`,empty:`Le blueprint se remplit au fil de la conversation.`,specsComplete:`Complètes`,specsInProgress:`En cours`,specWriting:`rédaction…`,specPendingBody:`pas encore rédigée`},n={title:`Créer le projet`,description:`Rien ne touche le disque avant votre confirmation. Le dépôt reste vierge — les artefacts Specrails vivent ailleurs.`,nameLabel:`Nom du projet`,locationLabel:`Emplacement`,locationHint:`Un nouveau dossier sera créé ici (vide ou inexistant).`,providersLabel:`Fournisseurs d'IA`,githubLabel:`Créer un dépôt GitHub privé`,githubAuthHint:`Connectez-vous d’abord : gh auth login`,back:`Retour`,submit:`Créer le projet`,creating:`Création…`,errors:{generic:`Le commit n'a pas pu démarrer. Vérifiez les valeurs et réessayez.`,invalid_name:`Le nom du projet est requis.`,invalid_location:`L'emplacement est requis.`,providers_required:`Sélectionnez au moins un fournisseur.`,unknown_provider:`Un des fournisseurs sélectionnés n'est pas disponible.`,invalid_blueprint:`Le blueprint est incomplet — revenez le terminer avec le Constructeur.`,m1_specs_required:`Le blueprint n'a pas encore de specs du Jalon 1.`,m1_specs_over_cap:`Le Jalon 1 a trop de specs (max. 10). Demandez au Constructeur de l'alléger.`,m1_spec_quality_invalid:`Les specs générées ne sont pas encore prêtes à être implémentées. Revenez au Constructeur et affinez l'élément indiqué.`,bundled_framework_missing:`Le framework embarqué est absent — réinstallez l'app Specrails.`,location_not_empty:`Ce dossier existe déjà et n'est pas vide. Choisissez un autre emplacement.`,location_already_registered:`Cet emplacement appartient déjà à un projet enregistré.`,commit_failed:`La création du projet a échoué — voyez la liste des étapes pour la raison.`}},r={title:`Création de votre projet…`,steps:{"create-dir":`Créer le dossier du projet`,"git-init":`Initialiser le dépôt git + README`,assemble:`Assembler le workspace Specrails (hors ligne)`,blueprint:`Écrire le blueprint`,tickets:`Insérer les specs du Jalon 1`,register:`Enregistrer le projet`,github:`Créer le dépôt GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) n’est pas installé — dépôt non créé`,gh_not_authenticated:`gh n’est pas connecté (exécutez gh auth login) — dépôt non créé`,gh_scope:`Votre jeton gh ne peut pas créer de dépôts (scope repo manquant)`,gh_repo_exists:`Un dépôt portant ce nom existe déjà sur votre compte`,gh_network:`Erreur réseau avec GitHub — dépôt non créé`,generic:`La création du dépôt GitHub a échoué`}},i={title:`Projet créé`,description:`Votre backlog du Jalon 1 est sur le tableau, étiqueté M1.`,launchM1:`Lancer le Jalon 1`,openProject:`Ouvrir le projet`,launchToast:`Jalon 1 lancé — {{count}} specs réparties sur des rails (max 3 par rail)`,launchPartialToast:`Jalon 1 partiellement lancé — {{count}} specs lancées, {{skipped}} en attente`,launchFailed:`Impossible de lancer le Jalon 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lancer le Jalon 1`,generateNext:`Générer M{{n}}`,generateHint:`Ouvre une session de specs ancrée dans le code, semée avec le blueprint`,generateUnavailable:`La génération de jalons nécessite un mode natif en lecture seule`},o={startFailed:`Impossible de démarrer la conversation du Constructeur.`,turnFailed:`Le tour du Constructeur a échoué.`,commitFailed:`La création du projet a échoué.`},s={title:`Générer {{label}}`,inputPlaceholder:`Affinez les specs…`,commit:`Valider {{count}} specs comme {{label}}`,commitToast:`{{count}} specs ajoutées au tableau comme {{label}}`,commitFailed:`Impossible de valider le jalon`,providerUnavailable:`La génération de jalons est indisponible car ce fournisseur n’a pas de mode natif en lecture seule.`},c={title:`Constructeur de projets`,subtitle:`L'agent construit un nouveau projet`,exit:`Quitter`,exitConfirmTitle:`Quitter le Constructeur ?`,exitConfirmBody:`Le Constructeur s’arrête maintenant. Votre blueprint est enregistré : reprenez-le depuis « Reprendre où vous en étiez » à la prochaine ouverture du Constructeur.`,exitConfirmCancel:`Continuer`,exitConfirmDiscard:`Abandonner et quitter`},l={surpriseMe:`Surprends-moi — propose des valeurs cohérentes pour toutes les dimensions du blueprint, garde m1Specs vide et laisse-moi approuver le plan avant de générer les specs détaillées.`,milestoneSeed:`Génère les specs détaillées du jalon {{label}} ("{{title}}"). Lis d'abord le vrai code, valide le lot complet, puis émets TOUTES les specs détaillées du jalon dans une seule réponse/un seul snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Génère les specs détaillées du jalon {{label}} ("{{title}}"). Titres de specs prévus : {{planned}}. Lis d'abord le vrai code, valide le lot complet, puis émets TOUTES les specs détaillées du jalon dans une seule réponse/un seul snapshot blueprint-draft.`,repairSnapshot:`Votre dernier bloc blueprint-draft n’a pas pu être utilisé par l’app ({{reason}}). Réémettez le snapshot COMPLET en JSON strictement valide (retours à la ligne dans les chaînes échappés en \\n, pas de virgule finale, pas de bloc de code imbriqué) — uniquement le bloc.`,approve:`Approuvé — génère maintenant le backlog détaillé du Jalon 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Fermer`,open:`Voir le détail de la spec`,empty:`Pas encore de description.`,summary:`Résumé`,priority:`Priorité`,description:`Description de la spec`,acceptanceCriteria:`Critères d'acceptation`,criteriaEmpty:`Aucun critère d'acceptation pour le moment.`},d={modeLabel:`Mode de lancement`,mode:{sequential:`Séquentiel`,parallel:`Parallèle`}},f={writing:`Rédaction des specs du jalon 1…`,specCount:`spec {{n}}`,turn:`tour {{turn}}/{{total}}`,phase:{outline:`Esquisse des specs du jalon 1…`,details:`Rédaction détaillée des specs {{from}}–{{to}} sur {{total}}…`,audit:`Audit des {{total}} specs…`,repair:`Nouvelle demande des specs {{from}}–{{to}}…`}},p={title:`Prêt à créer les specs ?`,steps:{blueprint:`Blueprint approuvé`,specs:`Specs du Jalon 1 générées`,audit:`Audit qualité`},details:{blueprint:{done:`{{filled}}/{{total}} dimensions`,pending:`{{filled}}/{{total}} dimensions`,blocked:`{{filled}}/{{total}} dimensions`},specs:{done:`{{count}} specs · complètes`,pending:`{{count}} sur {{min}}–{{max}}`,blocked:`{{count}} specs · {{min}}–{{max}} requises`,writing:`{{written}} sur {{count}} rédigées`},audit:{done:`aucun problème`,pending:`en attente des specs`,blocked:`{{count}} à corriger`,writing:`une fois les specs rédigées`}},hints:{blueprint:{pending:`Terminez l’entretien ou dites « surprenez-moi » — {{filled}}/{{total}} dimensions pour l’instant.`,blocked:`Le blueprint est incomplet.`},specs:{pending:`Approuvez le blueprint et le Constructeur générera le backlog du Jalon 1.`,blocked:`Le Jalon 1 a besoin de {{min}}–{{max}} specs (actuellement {{count}}). Demandez au Constructeur de l’ajuster.`,writing:`Le Constructeur rédige chaque spec en entier — l'audit qualité s'exécute une fois le lot complet.`},audit:{pending:`En attente des specs.`,blocked:`{{count}} problème(s) d’audit bloquent le commit — ouvrez la liste ci-dessous.`,writing:`L'audit s'exécute une fois toutes les specs rédigées.`}},issuesCount_one:`{{count}} problème d’audit`,issuesCount_other:`{{count}} problèmes d’audit`,askFix:`Demander au Constructeur de corriger`},m={repairing:{invalid_json:`Réparation du snapshot (le dernier bloc n’était pas du JSON valide)…`,truncated:`Nouvelle demande du snapshot (la réponse a été tronquée)…`,quality:`Demande au Constructeur de corriger les problèmes d’audit…`,automatic:`automatique`},rejected:{title:`Le dernier snapshot du Constructeur n’a pas pu être utilisé`,invalid_json:`Le bloc blueprint n’était pas du JSON valide ; le panneau affiche donc toujours l’état précédent.`,missing_version:`Le bloc n’était pas un snapshot de blueprint (blueprintVersion manquant).`,truncated:`La réponse a été tronquée avant la fermeture du bloc ; rien n’a été reçu.`,autoRepairFailed:`Une réparation automatique a déjà été tentée.`,retry:`Redemander le snapshot`},repairedNote:`Snapshot réparé automatiquement`,nothingToRepair:`Rien à réparer — continuez la conversation avec le Constructeur.`,noSession:`Cette conversation ne peut pas être reprise avec son fournisseur ; envoyez plutôt un nouveau message.`,alreadyStreaming:`Le Constructeur est encore en train de répondre.`,halted:{title:`La génération des specs s'est arrêtée trop tôt`,detail:`{{written}} specs sur {{total}} rédigées en entier. Les autres ne sont encore que des titres du plan.`,resume:`Continuer la génération`}},h={title:`Reprendre où vous en étiez`,untitled:`Blueprint sans titre`,specsComplete:`{{count}} specs prêtes`,specsInProgress:`{{count}} specs en cours`,dimensions:`{{filled}}/{{total}} dimensions`,pendingIssue:`snapshot à réparer`,discard:`Supprimer`,discardConfirm:`Confirmer la suppression`,discardCancel:`Conserver`,resumeFailed:`Impossible de reprendre ce blueprint.`,discardFailed:`Impossible de supprimer ce blueprint.`},g={batch_incomplete:`Le Constructeur n’a pas encore marqué le lot comme complet.`,spec_count:`Le lot a besoin de {{min}}–{{max}} specs (actuellement {{count}}).`,invalid_shape:`La spec {{n}} n’est pas un objet valide.`,invalid_kind:`La spec {{n}} a besoin d’un type valide (scaffold, feature ou verification).`,scaffold_first:`La première spec doit être le scaffold du projet.`,duplicate_scaffold:`La spec {{n}} ne peut pas être un second scaffold.`,title_required:`La spec {{n}} a besoin d’un titre.`,title_duplicate:`La spec {{n}} répète le titre de la spec {{other}}.`,summary:`La spec {{n}} a besoin d’un résumé d’une ligne de moins de 240 caractères.`,invalid_priority:`La spec {{n}} a besoin d’une priorité valide.`,canonical_sections:`Il manque à la spec {{n}} les cinq sections canoniques dans l’ordre.`,empty_section:`La section « {{heading}} » de la spec {{n}} est vide.`,section_bullets:`La spec {{n}} a besoin d'au moins {{min}} puces sous « {{heading}} ».`,complexity_format:`La spec {{n}} a besoin d’un niveau de complexité justifié.`,scaffold_readme:`La spec de scaffold doit mentionner le README existant.`,criteria_count:`La spec {{n}} a besoin de {{min}}–{{max}} critères d'acceptation (elle en a {{count}}).`,criterion_quality:`Spec {{n}}, critère {{criterion}} : pas assez concret.`,duplicate_criterion:`La spec {{n}} répète le critère d’acceptation {{criterion}}.`,milestone_label:`La spec {{n}} a besoin du label {{label}}.`,domain_label:`La spec {{n}} a besoin d’un label de domaine en plus de {{label}}.`,invalid_dependency:`La spec {{n}} ne peut dépendre que d’une spec antérieure.`,scaffold_dependency:`La spec de scaffold ne peut pas déclarer de dépendance.`,section_depth:`La spec {{n}} a besoin d'une section « {{heading}} » plus complète (au moins {{min}} caractères).`},_={state:{planned:`Planifié`,committed:`Prêt à lancer`,running:`En cours`,delivered:`Livré — en attente de revue`,done:`Terminé`},counts:`{{delivered}} sur {{total}} livrées · {{done}} terminées`,failedNote_one:`{{count}} spec a échoué à sa dernière tentative`,failedNote_other:`{{count}} specs ont échoué à leur dernière tentative`,legend:{done:`Terminées`,onReview:`En revue`,inProgress:`En cours`,failed:`Échec à la dernière tentative`,todo:`En attente`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} de la chaîne`,running:`En exécution · {{elapsed}}`,review:`Revoir`,open:`Ouvrir le rail`,noDelivery:`Pas encore de livraison`},chain:{title:`Chaîne séquentielle`,parallelTitle:`Lancement parallèle`,progress:`rail {{k}} sur {{n}}`,waiting:`en attente de la fin du rail {{k}}`,stackedOn:`le rail suivant part de {{branch}}`,paused:`En pause — {{reason}}`,completed:`Tous les rails lancés`,cancelled:`Chaîne annulée`,resume:`Reprendre`,cancel:`Annuler la chaîne`,resumed:`Chaîne reprise`,resumeFailed:`Impossible de reprendre la chaîne`,cancelledToast:`Chaîne annulée — les rails en cours continuent`,reasons:{chunk_failed:`le dernier rail a échoué`,chunk_stalled:`le dernier rail s'est bloqué (aucune sortie du fournisseur)`,chunk_stopped:`le dernier rail a été arrêté`,launch_rejected:`le rail suivant n'a pas pu être lancé ({{detail}})`,head_missing:`la branche de base n'existe plus`,head_discarded:`la livraison sur laquelle repose le rail suivant a été abandonnée`,run_lost:`le rail en cours est introuvable après un redémarrage`,unknown:`en pause`,provider_limit:`la limite d'utilisation du fournisseur a été atteinte`},checkpoint:`Rail {{k}} sur {{n}} livré — lancer le rail {{next}} ?`,launchNext:`Lancer le rail suivant`,nextLaunched:`Rail suivant lancé`,autoAdvance:`Continuer automatiquement`,autoAdvanceHint:`Lance chaque rail suivant dès que le précédent est livré`,checkpointHint:`S'arrête après chaque rail et demande avant de lancer le suivant`,checkpointNote:`s'arrête après ce rail`,autoOn:`Continuation automatique activée — les rails suivants se lancent seuls`,autoOff:`Continuation automatique désactivée — on vous demandera avant chaque rail`,autoFailed:`Impossible de mettre à jour la chaîne`},toast:{launched:`{{milestone}} lancé — {{count}} specs sur le rail 1 sur {{n}} ; les rails suivants s'enchaînent automatiquement`,launchedAll:`{{milestone}} lancé — {{count}} specs sur {{n}} rails`,launchedPartial:`{{milestone}} partiellement lancé — {{count}} specs lancées, {{skipped}} en attente`,chainActive:`{{milestone}} est déjà en cours de lancement — voir le panneau Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} sur {{n}} lancé`,paused:`{{milestone}} en pause — {{reason}}`,resume:`Reprendre`,delivered:`{{milestone}} livré — {{count}} specs attendent votre revue`,review:`Revoir`,completed:`{{milestone}} terminé — toutes les specs fusionnées`,launchedCheckpoint:`{{milestone}} lancé — {{count}} specs sur le rail 1 sur {{n}} ; on vous demandera avant chaque rail suivant`,checkpoint:`{{milestone}} — rail {{k}} sur {{n}} livré. Lancer le rail suivant ?`,launchNext:`Lancer le rail suivant`,autoContinue:`Continuer auto`},sequentialHint:`Chaque rail part de la branche du rail précédent`,parallelHint:`Rails indépendants depuis la branche d'intégration (sans empilement)`},v={settledLabel:`Décision prise`,surprise:{label:`Constructeur`,hint:`Vous pourrez ajuster chaque décision ensuite`,title:`Surprenez-moi`,description:`Laissez le Constructeur décider du produit, du flux principal, de la plateforme, de la stack et des jalons, puis vous présenter le blueprint à approuver ou ajuster.`,cta:`Surprenez-moi`,settledTitle:`Surprenez-moi`,settledDescription:`Vous avez laissé le Constructeur décider de toutes les dimensions du blueprint.`},approve:{label:`Blueprint prêt`,hint:`Ou écrivez ce que vous voulez changer`,title:`Approuver le blueprint`,description:`Toutes les dimensions sont décidées. Approuvez-le et le Constructeur rédige les specs du Jalon 1 en entier, deux par deux, puis audite le lot.`,cta:`Approuver et générer les specs`,settledTitle:`Blueprint approuvé`,settledDescription:`Le Constructeur génère le backlog du Jalon 1 à partir de ce blueprint.`}},y={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,sequential:d,generation:f,readiness:p,snapshot:m,recent:h,quality:g,milestoneProgress:_,decisionCard:v};export{n as commit,v as decisionCard,y as default,i as done,o as errors,f as generation,s as milestone,_ as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,g as quality,p as readiness,h as recent,d as sequential,e as shell,a as sidebar,m as snapshot,u as specModal};
@@ -1 +0,0 @@
1
- var e={title:`项目构建器`,subtitle:`从想法到里程碑 1 的待办清单`,close:`关闭构建器`,emptyTitle:`描述你的应用想法`,emptyHint:`一两句话就够了——构建器会简短地采访你并提出完整的蓝图。你也可以让它替你决定一切。`,surpriseMe:`给我惊喜`,inputPlaceholder:`一个能……的应用`,createSpecs:`创建规格`,createSpecsHint:`里程碑 1 的规格通过审核后可用`,providerUnavailable:`项目构建器需要具备原生无工具或只读模式的提供商。此提供商在这里不可用。`},t={title:`蓝图`,product:`产品`,coreFlow:`核心流程`,platform:`平台`,stack:`技术栈`,milestones:`里程碑`,milestonesValue:`已规划 {{count}} 个`,assumptions:`假设`,m1Specs:`里程碑 1 规格({{count}})`,dependsOn:`依赖 #{{index}}`,criteriaCount:`{{count}} 条验收标准`,laterMilestones:`后续里程碑`,empty:`蓝图会在对话中逐步填充。`,specsComplete:`已完成`,specsInProgress:`进行中`,specWriting:`撰写中…`,specPendingBody:`尚未撰写`},n={title:`创建项目`,description:`确认之前不会写入磁盘。仓库保持纯净——Specrails 的产物存放在仓库之外。`,nameLabel:`项目名称`,locationLabel:`位置`,locationHint:`将在此创建一个新文件夹(必须为空或不存在)。`,providersLabel:`AI 提供商`,githubLabel:`创建私有 GitHub 仓库`,githubAuthHint:`请先登录:gh auth login`,back:`返回`,submit:`创建项目`,creating:`创建中…`,errors:{generic:`无法启动提交。请检查数值后重试。`,invalid_name:`项目名称为必填项。`,invalid_location:`位置为必填项。`,providers_required:`请至少选择一个提供商。`,unknown_provider:`所选提供商之一不可用。`,invalid_blueprint:`蓝图不完整——请返回并与构建器一起完成它。`,m1_specs_required:`蓝图还没有里程碑 1 的规格。`,m1_specs_over_cap:`里程碑 1 的规格太多(最多 10 个)。请让构建器精简。`,m1_spec_quality_invalid:`生成的规格尚未达到可实施质量。请返回构建器并完善所指出的项目。`,bundled_framework_missing:`缺少内置框架——请重新安装 Specrails 应用。`,location_not_empty:`该文件夹已存在且非空。请选择其他位置。`,location_already_registered:`该位置已属于一个已注册的项目。`,commit_failed:`项目创建失败——原因见步骤列表。`}},r={title:`正在创建你的项目…`,steps:{"create-dir":`创建项目文件夹`,"git-init":`初始化 git 仓库 + README`,assemble:`组装 Specrails 工作区(离线)`,blueprint:`写入蓝图`,tickets:`插入里程碑 1 规格`,register:`注册项目`,github:`创建 GitHub 仓库`},githubErrors:{gh_not_installed:`未安装 GitHub CLI(gh)— 未创建仓库`,gh_not_authenticated:`gh 未登录(请运行 gh auth login)— 未创建仓库`,gh_scope:`你的 gh 令牌无权创建仓库(缺少 repo 权限)`,gh_repo_exists:`你的账户中已存在同名仓库`,gh_network:`与 GitHub 通信时网络出错 — 未创建仓库`,generic:`创建 GitHub 仓库失败`}},i={title:`项目已创建`,description:`里程碑 1 的待办清单已在看板上,标签为 M1。`,launchM1:`启动里程碑 1`,openProject:`打开项目`,launchToast:`里程碑 1 已启动——{{count}} 个规格分布在多条轨道上(每条轨道最多 3 个)`,launchPartialToast:`里程碑 1 部分启动——已启动 {{count}} 个规格,{{skipped}} 个待处理`,launchFailed:`无法启动里程碑 1`},a={title:`蓝图`,milestone:`M{{n}}`,launchM1:`启动里程碑 1`,generateNext:`生成 M{{n}}`,generateHint:`打开以蓝图为种子、扎根真实代码的规格会话`,generateUnavailable:`里程碑生成需要原生只读模式`},o={startFailed:`无法启动构建器对话。`,turnFailed:`构建器回合失败。`,commitFailed:`项目创建失败。`},s={title:`生成 {{label}}`,inputPlaceholder:`完善规格…`,commit:`将 {{count}} 个规格提交为 {{label}}`,commitToast:`{{count}} 个规格已作为 {{label}} 加入看板`,commitFailed:`无法提交里程碑`,providerUnavailable:`此提供商没有原生只读模式,因此无法生成里程碑。`},c={title:`项目构建器`,subtitle:`智能体正在构建新项目`,exit:`退出`,exitConfirmTitle:`退出构建器?`,exitConfirmBody:`构建器现在停止。你的蓝图已保存——下次打开构建器时可在“从上次离开的地方继续”中恢复。`,exitConfirmCancel:`继续构建`,exitConfirmDiscard:`丢弃并退出`},l={surpriseMe:`给我惊喜——为蓝图的所有维度提出合理方案,保持 m1Specs 为空,并在生成详细规格前让我先批准计划。`,milestoneSeed:`为里程碑 {{label}}("{{title}}")生成详细规格。先阅读真实代码并验证完整批次,然后在一次 blueprint-draft 回复/快照中输出该里程碑的全部详细规格。`,milestoneSeedWithPlanned:`为里程碑 {{label}}("{{title}}")生成详细规格。计划的规格标题:{{planned}}。先阅读真实代码并验证完整批次,然后在一次 blueprint-draft 回复/快照中输出该里程碑的全部详细规格。`,repairSnapshot:`应用无法使用你上一个 blueprint-draft 块({{reason}})。请重新输出完整的快照,且必须是严格有效的 JSON(字符串内换行转义为 \\n,无尾随逗号,无嵌套代码块)——只输出该块。`,approve:`已批准 — 现在生成里程碑 1 的详细待办。`},u={eyebrow:`{{milestone}} · 规格 {{index}}`,close:`关闭`,open:`查看规格详情`,empty:`尚无描述。`,summary:`摘要`,priority:`优先级`,description:`规格描述`,acceptanceCriteria:`验收标准`,criteriaEmpty:`尚无验收标准。`},d={modeLabel:`启动模式`,mode:{sequential:`顺序`,parallel:`并行`}},f={writing:`正在编写里程碑 1 的规格…`,specCount:`规格 {{n}}`,turn:`第 {{turn}}/{{total}} 轮`,phase:{outline:`正在勾勒里程碑 1 的规格…`,details:`正在详细编写第 {{from}}–{{to}} 个规格(共 {{total}} 个)…`,audit:`正在审核全部 {{total}} 个规格…`,repair:`正在重新请求第 {{from}}–{{to}} 个规格…`}},p={title:`准备好创建规格了吗?`,steps:{blueprint:`蓝图已批准`,specs:`已生成里程碑 1 的规格`,audit:`质量审核`},details:{blueprint:{done:`{{filled}}/{{total}} 个维度`,pending:`{{filled}}/{{total}} 个维度`,blocked:`{{filled}}/{{total}} 个维度`},specs:{done:`{{count}} 条规格 · 已完成`,pending:`{{count}} / {{min}}–{{max}}`,blocked:`{{count}} 条规格 · 需要 {{min}}–{{max}} 条`,writing:`已写出 {{written}}/{{count}}`},audit:{done:`没有问题`,pending:`等待规格`,blocked:`{{count}} 项待修正`,writing:`规格写完后进行`}},hints:{blueprint:{pending:`完成访谈或说“给我惊喜”——目前 {{filled}}/{{total}} 个维度。`,blocked:`蓝图不完整。`},specs:{pending:`批准蓝图后,构建器将生成里程碑 1 的待办清单。`,blocked:`里程碑 1 需要 {{min}}–{{max}} 条规格(当前 {{count}} 条)。请让构建器调整。`,writing:`构建器正在完整撰写每条规格,批次完成后再运行质量审核。`},audit:{pending:`等待规格。`,blocked:`{{count}} 个审核问题阻止提交——请展开下方列表。`,writing:`所有规格写完后运行审核。`}},issuesCount_one:`{{count}} 个审核问题`,issuesCount_other:`{{count}} 个审核问题`,askFix:`让构建器修正这些问题`},m={repairing:{invalid_json:`正在修复快照(上一个块不是有效的 JSON)…`,truncated:`正在重新请求快照(回复被截断)…`,quality:`正在让构建器修正审核问题…`,automatic:`自动`},rejected:{title:`构建器的上一个快照无法使用`,invalid_json:`蓝图块不是有效的 JSON,面板仍显示之前的状态。`,missing_version:`该块不是蓝图快照(缺少 blueprintVersion)。`,truncated:`回复在块闭合前被截断,未收到任何内容。`,autoRepairFailed:`已尝试过一次自动修复。`,retry:`再次请求快照`},repairedNote:`快照已自动修复`,nothingToRepair:`没有需要修复的内容——继续与构建器对话即可。`,noSession:`此对话无法在其提供商上恢复;请改为发送新消息。`,alreadyStreaming:`构建器仍在回复。`,halted:{title:`规格生成提前中止`,detail:`已完整写出 {{written}}/{{total}} 条规格,其余仍只是大纲标题。`,resume:`继续生成`}},h={title:`从上次离开的地方继续`,untitled:`未命名蓝图`,specsComplete:`{{count}} 条规格已就绪`,specsInProgress:`{{count}} 条规格进行中`,dimensions:`{{filled}}/{{total}} 个维度`,pendingIssue:`快照待修复`,discard:`丢弃`,discardConfirm:`确认丢弃`,discardCancel:`保留`,resumeFailed:`无法恢复该蓝图。`,discardFailed:`无法丢弃该蓝图。`},g={batch_incomplete:`构建器尚未将该批次标记为完成。`,spec_count:`该批次需要 {{min}}–{{max}} 条规格(当前 {{count}} 条)。`,invalid_shape:`规格 {{n}} 不是有效对象。`,invalid_kind:`规格 {{n}} 需要有效的类型(scaffold、feature 或 verification)。`,scaffold_first:`第一条规格必须是项目脚手架。`,duplicate_scaffold:`规格 {{n}} 不能是第二个脚手架。`,title_required:`规格 {{n}} 需要标题。`,title_duplicate:`规格 {{n}} 与规格 {{other}} 的标题重复。`,summary:`规格 {{n}} 需要一行 240 字符以内的摘要。`,invalid_priority:`规格 {{n}} 需要有效的优先级。`,canonical_sections:`规格 {{n}} 缺少按顺序排列的五个规范章节。`,empty_section:`规格 {{n}} 的“{{heading}}”章节为空。`,section_bullets:`规格 {{n}} 的“{{heading}}”下至少需要 {{min}} 个要点。`,complexity_format:`规格 {{n}} 需要带理由的复杂度等级。`,scaffold_readme:`脚手架规格必须提及现有的 README。`,criteria_count:`规格 {{n}} 需要 {{min}}–{{max}} 条验收标准(当前 {{count}} 条)。`,criterion_quality:`规格 {{n}} 的第 {{criterion}} 条标准不够具体。`,duplicate_criterion:`规格 {{n}} 重复了第 {{criterion}} 条验收标准。`,milestone_label:`规格 {{n}} 需要 {{label}} 标签。`,domain_label:`规格 {{n}} 除 {{label}} 外还需要一个领域标签。`,invalid_dependency:`规格 {{n}} 只能依赖更早的规格。`,scaffold_dependency:`脚手架规格不能声明依赖。`,section_depth:`规格 {{n}} 的“{{heading}}”需要更充实(至少 {{min}} 个字符)。`},_={state:{planned:`已规划`,committed:`可启动`,running:`进行中`,delivered:`已交付 — 等待审阅`,done:`已完成`},counts:`已交付 {{delivered}}/{{total}} · 已完成 {{done}}`,failedNote_one:`{{count}} 个规格上次尝试失败`,failedNote_other:`{{count}} 个规格上次尝试失败`,legend:{done:`已完成`,onReview:`审阅中`,inProgress:`进行中`,failed:`上次尝试失败`,todo:`待处理`},rail:{fallbackName:`轨道 {{n}}`,chunk:`链中的第 {{k}} 条轨道`,running:`运行中 · {{elapsed}}`,review:`审阅`,open:`打开轨道`,noDelivery:`尚无交付`},chain:{title:`顺序链`,parallelTitle:`并行启动`,progress:`第 {{k}}/{{n}} 条轨道`,waiting:`等待第 {{k}} 条轨道结束`,stackedOn:`下一条轨道基于 {{branch}}`,paused:`已暂停 — {{reason}}`,completed:`所有轨道已启动`,cancelled:`链已取消`,resume:`恢复`,cancel:`取消链`,resumed:`链已恢复`,resumeFailed:`无法恢复链`,cancelledToast:`链已取消 — 运行中的轨道继续`,reasons:{chunk_failed:`上一条轨道失败`,chunk_stalled:`上一条轨道停滞(无提供方输出)`,chunk_stopped:`上一条轨道已被停止`,launch_rejected:`下一条轨道无法启动({{detail}})`,head_missing:`用于构建的分支已不存在`,head_discarded:`下一条轨道所基于的交付已被丢弃`,run_lost:`重启后找不到运行中的轨道`,unknown:`已暂停`,provider_limit:`已达到提供商用量限额`},checkpoint:`第 {{k}}/{{n}} 条轨道已交付 — 启动第 {{next}} 条?`,launchNext:`启动下一条轨道`,nextLaunched:`下一条轨道已启动`,autoAdvance:`自动继续`,autoAdvanceHint:`上一条轨道交付后立即启动下一条`,checkpointHint:`每条轨道结束后暂停,启动下一条前先询问`,checkpointNote:`本轨道结束后暂停`,autoOn:`已开启自动继续 — 后续轨道将自动启动`,autoOff:`已关闭自动继续 — 每条轨道启动前都会询问`,autoFailed:`无法更新链`},toast:{launched:`{{milestone}} 已启动 — 第 1/{{n}} 条轨道上有 {{count}} 个规格;后续轨道将自动跟进`,launchedAll:`{{milestone}} 已启动 — {{count}} 个规格分布在 {{n}} 条轨道`,launchedPartial:`{{milestone}} 部分启动 — 已启动 {{count}} 个规格,{{skipped}} 个待处理`,chainActive:`{{milestone}} 正在启动 — 请查看蓝图面板`,chunkLaunched:`{{milestone}} — 第 {{k}}/{{n}} 条轨道已启动`,paused:`{{milestone}} 已暂停 — {{reason}}`,resume:`恢复`,delivered:`{{milestone}} 已交付 — {{count}} 个规格等待您的审阅`,review:`审阅`,completed:`{{milestone}} 已完成 — 所有规格均已合并`,launchedCheckpoint:`{{milestone}} 已启动 — {{count}} 条规格在第 1/{{n}} 条轨道上;每条后续轨道启动前都会询问`,checkpoint:`{{milestone}} — 第 {{k}}/{{n}} 条轨道已交付。启动下一条?`,launchNext:`启动下一条轨道`,autoContinue:`自动继续`},sequentialHint:`每条轨道基于上一条轨道的分支`,parallelHint:`从集成分支独立启动各轨道(不堆叠)`},v={settledLabel:`已做决定`,surprise:{label:`构建器`,hint:`之后可以调整任何决定`,title:`给我惊喜`,description:`让构建器决定产品、核心流程、平台、技术栈和里程碑,然后把蓝图交给你审批或微调。`,cta:`给我惊喜`,settledTitle:`给我惊喜`,settledDescription:`你让构建器决定了蓝图的全部维度。`},approve:{label:`蓝图就绪`,hint:`或者输入你想修改的内容`,title:`批准蓝图`,description:`所有维度已确定。批准后构建器会完整撰写里程碑 1 的规格,每次两条,然后审核整批。`,cta:`批准并生成规格`,settledTitle:`蓝图已批准`,settledDescription:`构建器正根据此蓝图生成里程碑 1 的待办。`}},y={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,sequential:d,generation:f,readiness:p,snapshot:m,recent:h,quality:g,milestoneProgress:_,decisionCard:v};export{n as commit,v as decisionCard,y as default,i as done,o as errors,f as generation,s as milestone,_ as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,g as quality,p as readiness,h as recent,d as sequential,e as shell,a as sidebar,m as snapshot,u as specModal};
@@ -1 +0,0 @@
1
- var e={title:`Constructor de proyectos`,subtitle:`De la idea al backlog del Hito 1`,close:`Cerrar el Constructor`,emptyTitle:`Describe tu idea de app`,emptyHint:`Con una o dos frases basta — el Constructor te entrevistará brevemente y propondrá un blueprint completo. También puedes pedirle que lo decida todo por ti.`,surpriseMe:`Sorpréndeme`,inputPlaceholder:`Una app que…`,createSpecs:`Crear specs`,createSpecsHint:`Disponible cuando las specs del Hito 1 pasen la auditoría`,providerUnavailable:`El Constructor requiere un proveedor con modo nativo sin herramientas o de solo lectura. Este proveedor no está disponible aquí.`},t={title:`Blueprint`,product:`Producto`,coreFlow:`Flujo principal`,platform:`Plataforma`,stack:`Stack`,milestones:`Hitos`,milestonesValue:`{{count}} planificados`,assumptions:`Suposiciones`,m1Specs:`Specs del Hito 1 ({{count}})`,dependsOn:`depende de #{{index}}`,criteriaCount:`{{count}} criterios de aceptación`,laterMilestones:`Hitos posteriores`,empty:`El blueprint se completa mientras conversas.`,specsComplete:`Completas`,specsInProgress:`En curso`,specWriting:`escribiendo…`,specPendingBody:`aún sin escribir`},n={title:`Crear el proyecto`,description:`Nada toca el disco hasta que confirmes. El repo queda prístino — los artefactos de Specrails viven fuera.`,nameLabel:`Nombre del proyecto`,locationLabel:`Ubicación`,locationHint:`Se creará una carpeta nueva aquí (debe estar vacía o no existir).`,providersLabel:`Proveedores de IA`,githubLabel:`Crear repositorio privado en GitHub`,githubAuthHint:`Inicia sesión primero: gh auth login`,back:`Atrás`,submit:`Crear proyecto`,creating:`Creando…`,errors:{generic:`No se pudo iniciar el commit. Revisa los valores e inténtalo de nuevo.`,invalid_name:`El nombre del proyecto es obligatorio.`,invalid_location:`La ubicación es obligatoria.`,providers_required:`Selecciona al menos un proveedor.`,unknown_provider:`Uno de los proveedores seleccionados no está disponible.`,invalid_blueprint:`El blueprint está incompleto — vuelve atrás y termínalo con el Constructor.`,m1_specs_required:`El blueprint aún no tiene specs del Hito 1.`,m1_specs_over_cap:`El Hito 1 tiene demasiadas specs (máx. 10). Pide al Constructor que lo reduzca.`,m1_spec_quality_invalid:`Las specs generadas todavía no están listas para implementar. Vuelve al Constructor y refina el elemento indicado.`,bundled_framework_missing:`Falta el framework incluido — reinstala la app de Specrails.`,location_not_empty:`Esa carpeta ya existe y no está vacía. Elige otra ubicación.`,location_already_registered:`Esa ubicación ya pertenece a un proyecto registrado.`,commit_failed:`La creación del proyecto falló — mira la lista de pasos para ver el motivo.`}},r={title:`Creando tu proyecto…`,steps:{"create-dir":`Crear la carpeta del proyecto`,"git-init":`Inicializar el repositorio git + README`,assemble:`Ensamblar el workspace de Specrails (offline)`,blueprint:`Escribir el blueprint`,tickets:`Insertar las specs del Hito 1`,register:`Registrar el proyecto`,github:`Crear el repositorio en GitHub`},githubErrors:{gh_not_installed:`GitHub CLI (gh) no está instalado — repositorio no creado`,gh_not_authenticated:`gh no tiene sesión (ejecuta gh auth login) — repositorio no creado`,gh_scope:`Tu token de gh no puede crear repositorios (falta el scope repo)`,gh_repo_exists:`Ya existe un repositorio con ese nombre en tu cuenta`,gh_network:`Error de red con GitHub — repositorio no creado`,generic:`No se pudo crear el repositorio de GitHub`}},i={title:`Proyecto creado`,description:`Tu backlog del Hito 1 está en el tablero, etiquetado M1.`,launchM1:`Lanzar el Hito 1`,openProject:`Abrir el proyecto`,launchToast:`Hito 1 lanzado — {{count}} specs repartidas en raíles (máx. 3 por raíl)`,launchPartialToast:`Hito 1 lanzado parcialmente — {{count}} specs lanzadas, {{skipped}} pendientes`,launchFailed:`No se pudo lanzar el Hito 1`},a={title:`Blueprint`,milestone:`M{{n}}`,launchM1:`Lanzar el Hito 1`,generateNext:`Generar M{{n}}`,generateHint:`Abre una sesión de specs con contexto real sembrada con el blueprint`,generateUnavailable:`La generación de hitos requiere un modo nativo de solo lectura`},o={startFailed:`No se pudo iniciar la conversación del Constructor.`,turnFailed:`El turno del Constructor falló.`,commitFailed:`La creación del proyecto falló.`},s={title:`Generar {{label}}`,inputPlaceholder:`Refina las specs…`,commit:`Confirmar {{count}} specs como {{label}}`,commitToast:`{{count}} specs añadidas al tablero como {{label}}`,commitFailed:`No se pudo confirmar el hito`,providerUnavailable:`La generación de hitos no está disponible porque este proveedor no tiene modo nativo de solo lectura.`},c={title:`Constructor de proyectos`,subtitle:`El agente está construyendo un proyecto nuevo`,exit:`Salir`,exitConfirmTitle:`¿Salir del Constructor?`,exitConfirmBody:`El Constructor se detiene ahora. Tu blueprint queda guardado: retómalo desde «Continúa donde lo dejaste» la próxima vez que abras el Constructor.`,exitConfirmCancel:`Seguir construyendo`,exitConfirmDiscard:`Descartar y salir`},l={surpriseMe:`Sorpréndeme — propón valores sensatos para todas las dimensiones del blueprint, deja m1Specs vacío y permíteme aprobar el plan antes de generar las specs detalladas.`,milestoneSeed:`Genera las specs detalladas del hito {{label}} ("{{title}}"). Lee primero el código real, valida el lote completo y, solo entonces, emite TODAS las specs detalladas del hito en una única respuesta/snapshot blueprint-draft.`,milestoneSeedWithPlanned:`Genera las specs detalladas del hito {{label}} ("{{title}}"). Títulos de specs planificadas: {{planned}}. Lee primero el código real, valida el lote completo y, solo entonces, emite TODAS las specs detalladas del hito en una única respuesta/snapshot blueprint-draft.`,repairSnapshot:`Tu último bloque blueprint-draft no pudo usarse en la app ({{reason}}). Vuelve a emitir el snapshot COMPLETO como JSON estrictamente válido (saltos de línea dentro de cadenas escapados como \\n, sin comas finales, sin bloques de código anidados): solo el bloque.`,approve:`Aprobado — genera ahora el backlog detallado del Hito 1.`},u={eyebrow:`{{milestone}} · Spec {{index}}`,close:`Cerrar`,open:`Ver detalle de la spec`,empty:`Aún sin descripción.`,summary:`Resumen`,priority:`Prioridad`,description:`Descripción de la spec`,acceptanceCriteria:`Criterios de aceptación`,criteriaEmpty:`Aún no hay criterios de aceptación.`},d={modeLabel:`Modo de lanzamiento`,mode:{sequential:`Secuencial`,parallel:`Paralelo`}},f={writing:`Escribiendo las specs del Milestone 1…`,specCount:`spec {{n}}`,turn:`turno {{turn}}/{{total}}`,phase:{outline:`Esbozando las specs del Milestone 1…`,details:`Escribiendo al detalle las specs {{from}}–{{to}} de {{total}}…`,audit:`Auditando las {{total}} specs…`,repair:`Volviendo a pedir las specs {{from}}–{{to}}…`}},p={title:`¿Listo para crear las specs?`,steps:{blueprint:`Blueprint aprobado`,specs:`Specs del Hito 1 generadas`,audit:`Auditoría de calidad`},details:{blueprint:{done:`{{filled}}/{{total}} dimensiones`,pending:`{{filled}}/{{total}} dimensiones`,blocked:`{{filled}}/{{total}} dimensiones`},specs:{done:`{{count}} specs · completas`,pending:`{{count}} de {{min}}–{{max}}`,blocked:`{{count}} specs · requiere {{min}}–{{max}}`,writing:`{{written}} de {{count}} escritas`},audit:{done:`sin problemas`,pending:`a la espera de las specs`,blocked:`{{count}} por corregir`,writing:`cuando las specs estén escritas`}},hints:{blueprint:{pending:`Termina la entrevista o di «sorpréndeme»: {{filled}}/{{total}} dimensiones por ahora.`,blocked:`El blueprint está incompleto.`},specs:{pending:`Aprueba el blueprint y el Constructor generará el backlog del Hito 1.`,blocked:`El Hito 1 necesita {{min}}–{{max}} specs (ahora {{count}}). Pide al Constructor que lo ajuste.`,writing:`El Constructor está escribiendo cada spec al detalle — la auditoría de calidad se ejecuta cuando el lote esté completo.`},audit:{pending:`A la espera de las specs.`,blocked:`{{count}} problema(s) de auditoría bloquean el commit: abre la lista de abajo.`,writing:`La auditoría se ejecuta cuando todas las specs estén escritas.`}},issuesCount_one:`{{count}} problema de auditoría`,issuesCount_other:`{{count}} problemas de auditoría`,askFix:`Pedir al Constructor que lo corrija`},m={repairing:{invalid_json:`Reparando el snapshot (el último bloque no era JSON válido)…`,truncated:`Volviendo a pedir el snapshot (la respuesta se cortó)…`,quality:`Pidiendo al Constructor que corrija los problemas de auditoría…`,automatic:`automático`},rejected:{title:`El último snapshot del Constructor no pudo usarse`,invalid_json:`El bloque del blueprint no era JSON válido, así que el panel sigue mostrando el estado anterior.`,missing_version:`El bloque no era un snapshot de blueprint (falta blueprintVersion).`,truncated:`La respuesta se cortó antes de cerrar el bloque, así que no se recibió nada.`,autoRepairFailed:`Ya se intentó una reparación automática.`,retry:`Volver a pedir el snapshot`},repairedNote:`Snapshot reparado automáticamente`,nothingToRepair:`No hay nada que reparar: sigue conversando con el Constructor.`,noSession:`Esta conversación no puede reanudarse con su proveedor; envía un mensaje nuevo.`,alreadyStreaming:`El Constructor todavía está respondiendo.`,halted:{title:`La generación de specs se detuvo antes de tiempo`,detail:`{{written}} de {{total}} specs escritas por completo. El resto siguen siendo solo títulos del esquema.`,resume:`Continuar generando`}},h={title:`Continúa donde lo dejaste`,untitled:`Blueprint sin título`,specsComplete:`{{count}} specs listas`,specsInProgress:`{{count}} specs en curso`,dimensions:`{{filled}}/{{total}} dimensiones`,pendingIssue:`snapshot por reparar`,discard:`Descartar`,discardConfirm:`Confirmar descarte`,discardCancel:`Conservar`,resumeFailed:`No se pudo reanudar ese blueprint.`,discardFailed:`No se pudo descartar ese blueprint.`},g={batch_incomplete:`El Constructor aún no ha marcado el lote como completo.`,spec_count:`El lote necesita {{min}}–{{max}} specs (ahora {{count}}).`,invalid_shape:`La spec {{n}} no es un objeto válido.`,invalid_kind:`La spec {{n}} necesita un tipo válido (scaffold, feature o verification).`,scaffold_first:`La primera spec debe ser el scaffold del proyecto.`,duplicate_scaffold:`La spec {{n}} no puede ser un segundo scaffold.`,title_required:`La spec {{n}} necesita un título.`,title_duplicate:`La spec {{n}} repite el título de la spec {{other}}.`,summary:`La spec {{n}} necesita un resumen de una línea de menos de 240 caracteres.`,invalid_priority:`La spec {{n}} necesita una prioridad válida.`,canonical_sections:`A la spec {{n}} le faltan las cinco secciones canónicas en orden.`,empty_section:`La spec {{n}} tiene vacía la sección «{{heading}}».`,section_bullets:`La spec {{n}} necesita al menos {{min}} viñetas en "{{heading}}".`,complexity_format:`La spec {{n}} necesita un nivel de complejidad con justificación.`,scaffold_readme:`La spec de scaffold debe mencionar el README existente.`,criteria_count:`La spec {{n}} necesita {{min}}–{{max}} criterios de aceptación (tiene {{count}}).`,criterion_quality:`Spec {{n}}, criterio {{criterion}}: no es lo bastante concreto.`,duplicate_criterion:`La spec {{n}} repite el criterio de aceptación {{criterion}}.`,milestone_label:`La spec {{n}} necesita la etiqueta {{label}}.`,domain_label:`La spec {{n}} necesita una etiqueta de dominio además de {{label}}.`,invalid_dependency:`La spec {{n}} solo puede depender de una spec anterior.`,scaffold_dependency:`La spec de scaffold no puede declarar una dependencia.`,section_depth:`La spec {{n}} necesita un "{{heading}}" más completo (al menos {{min}} caracteres).`},_={state:{planned:`Planificado`,committed:`Listo para lanzar`,running:`En curso`,delivered:`Entregado — pendiente de revisión`,done:`Hecho`},counts:`{{delivered}} de {{total}} entregadas · {{done}} hechas`,failedNote_one:`{{count}} spec falló en su último intento`,failedNote_other:`{{count}} specs fallaron en su último intento`,legend:{done:`Hechas`,onReview:`En revisión`,inProgress:`En curso`,failed:`Fallaron el último intento`,todo:`Pendientes`},rail:{fallbackName:`Rail {{n}}`,chunk:`Rail {{k}} de la cadena`,running:`En ejecución · {{elapsed}}`,review:`Revisar`,open:`Abrir el rail`,noDelivery:`Sin entrega aún`},chain:{title:`Cadena secuencial`,parallelTitle:`Lanzamiento paralelo`,progress:`rail {{k}} de {{n}}`,waiting:`esperando a que asiente el rail {{k}}`,stackedOn:`el siguiente rail parte de {{branch}}`,paused:`En pausa — {{reason}}`,completed:`Todos los rails lanzados`,cancelled:`Cadena cancelada`,resume:`Reanudar`,cancel:`Cancelar cadena`,resumed:`Cadena reanudada`,resumeFailed:`No se pudo reanudar la cadena`,cancelledToast:`Cadena cancelada — los rails en curso continúan`,reasons:{chunk_failed:`el último rail falló`,chunk_stalled:`el último rail se atascó (sin salida del proveedor)`,chunk_stopped:`el último rail fue detenido`,launch_rejected:`el siguiente rail no pudo lanzarse ({{detail}})`,head_missing:`la rama sobre la que construir ya no existe`,head_discarded:`se descartó la entrega sobre la que parte el siguiente rail`,run_lost:`no se encontró el rail en ejecución tras un reinicio`,unknown:`en pausa`,provider_limit:`se alcanzó el límite de uso del proveedor`},checkpoint:`Rail {{k}} de {{n}} entregado — ¿lanzar el rail {{next}}?`,launchNext:`Lanzar siguiente rail`,nextLaunched:`Siguiente rail lanzado`,autoAdvance:`Continuar automáticamente`,autoAdvanceHint:`Lanza cada rail siguiente en cuanto se entrega el anterior`,checkpointHint:`Se detiene tras cada rail y pregunta antes de lanzar el siguiente`,checkpointNote:`se detiene tras este rail`,autoOn:`Continuación automática activada — los siguientes rails se lanzan solos`,autoOff:`Continuación automática desactivada — se te preguntará antes de cada rail`,autoFailed:`No se pudo actualizar la cadena`},toast:{launched:`{{milestone}} lanzado — {{count}} specs en el rail 1 de {{n}}; los siguientes rails siguen automáticamente`,launchedAll:`{{milestone}} lanzado — {{count}} specs en {{n}} rails`,launchedPartial:`{{milestone}} lanzado parcialmente — {{count}} specs lanzadas, {{skipped}} pendientes`,chainActive:`{{milestone}} ya se está lanzando — mira el panel Blueprint`,chunkLaunched:`{{milestone}} — rail {{k}} de {{n}} lanzado`,paused:`{{milestone}} en pausa — {{reason}}`,resume:`Reanudar`,delivered:`{{milestone}} entregado — {{count}} specs esperan tu revisión`,review:`Revisar`,completed:`{{milestone}} completado — todas las specs integradas`,launchedCheckpoint:`{{milestone}} lanzado — {{count}} specs en el rail 1 de {{n}}; se te preguntará antes de cada rail siguiente`,checkpoint:`{{milestone}} — rail {{k}} de {{n}} entregado. ¿Lanzar el siguiente rail?`,launchNext:`Lanzar siguiente rail`,autoContinue:`Continuar automáticamente`},sequentialHint:`Cada rail parte de la rama del rail anterior`,parallelHint:`Rails independientes desde la rama de integración (sin apilar)`},v={settledLabel:`Decisión tomada`,surprise:{label:`Constructor`,hint:`Podrás ajustar cualquier decisión después`,title:`Sorpréndeme`,description:`Deja que el Constructor decida producto, flujo principal, plataforma, stack e hitos, y te presente el blueprint para aprobarlo o retocarlo.`,cta:`Sorpréndeme`,settledTitle:`Sorpréndeme`,settledDescription:`Dejaste que el Constructor decidiera todas las dimensiones del blueprint.`},approve:{label:`Blueprint listo`,hint:`O escribe qué quieres cambiar`,title:`Aprobar el blueprint`,description:`Todas las dimensiones están decididas. Apruébalo y el Constructor escribe las specs del Hito 1 al detalle, de dos en dos, y después audita el lote.`,cta:`Aprobar y generar specs`,settledTitle:`Blueprint aprobado`,settledDescription:`El Constructor está generando el backlog del Hito 1 a partir de este blueprint.`}},y={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,sequential:d,generation:f,readiness:p,snapshot:m,recent:h,quality:g,milestoneProgress:_,decisionCard:v};export{n as commit,v as decisionCard,y as default,i as done,o as errors,f as generation,s as milestone,_ as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,g as quality,p as readiness,h as recent,d as sequential,e as shell,a as sidebar,m as snapshot,u as specModal};
@@ -1 +0,0 @@
1
- var e={title:`プロジェクトビルダー`,subtitle:`アイデアからマイルストーン1のバックログへ`,close:`ビルダーを閉じる`,emptyTitle:`アプリのアイデアを教えてください`,emptyHint:`1〜2文で十分です。ビルダーが短くインタビューし、完全なブループリントを提案します。すべて任せることもできます。`,surpriseMe:`おまかせ`,inputPlaceholder:`〜ができるアプリ`,createSpecs:`スペックを作成`,createSpecsHint:`マイルストーン 1 のスペックが監査を通過すると利用できます`,providerUnavailable:`プロジェクトビルダーには、ツールなしまたは読み取り専用のネイティブモードを持つプロバイダーが必要です。このプロバイダーは利用できません。`},t={title:`ブループリント`,product:`プロダクト`,coreFlow:`コアフロー`,platform:`プラットフォーム`,stack:`スタック`,milestones:`マイルストーン`,milestonesValue:`{{count}} 件計画済み`,assumptions:`前提`,m1Specs:`マイルストーン1のスペック({{count}})`,dependsOn:`#{{index}} に依存`,criteriaCount:`受け入れ基準 {{count}} 件`,laterMilestones:`以降のマイルストーン`,empty:`会話に合わせてブループリントが埋まっていきます。`,specsComplete:`完了`,specsInProgress:`進行中`,specWriting:`作成中…`,specPendingBody:`未作成`},n={title:`プロジェクトを作成`,description:`確認するまでディスクには何も書き込みません。リポジトリはクリーンなまま — Specrails の成果物は外部に置かれます。`,nameLabel:`プロジェクト名`,locationLabel:`場所`,locationHint:`ここに新しいフォルダを作成します(空か存在しないこと)。`,providersLabel:`AI プロバイダー`,githubLabel:`プライベート GitHub リポジトリを作成`,githubAuthHint:`先にサインイン: gh auth login`,back:`戻る`,submit:`プロジェクトを作成`,creating:`作成中…`,errors:{generic:`コミットを開始できませんでした。値を確認して再試行してください。`,invalid_name:`プロジェクト名は必須です。`,invalid_location:`場所は必須です。`,providers_required:`少なくとも1つのプロバイダーを選択してください。`,unknown_provider:`選択したプロバイダーの1つが利用できません。`,invalid_blueprint:`ブループリントが不完全です。戻ってビルダーで完成させてください。`,m1_specs_required:`ブループリントにマイルストーン1のスペックがまだありません。`,m1_specs_over_cap:`マイルストーン1のスペックが多すぎます(最大10)。ビルダーに絞り込みを頼んでください。`,m1_spec_quality_invalid:`生成されたスペックはまだ実装可能な品質ではありません。ビルダーに戻り、示された項目を改善してください。`,bundled_framework_missing:`同梱フレームワークがありません。Specrails アプリを再インストールしてください。`,location_not_empty:`そのフォルダは既に存在し、空ではありません。別の場所を選んでください。`,location_already_registered:`その場所は既に登録済みプロジェクトのものです。`,commit_failed:`プロジェクト作成に失敗しました。理由はステップ一覧をご覧ください。`}},r={title:`プロジェクトを作成中…`,steps:{"create-dir":`プロジェクトフォルダを作成`,"git-init":`git リポジトリ + README を初期化`,assemble:`Specrails ワークスペースを組み立て(オフライン)`,blueprint:`ブループリントを書き込み`,tickets:`マイルストーン1のスペックを挿入`,register:`プロジェクトを登録`,github:`GitHub リポジトリを作成`},githubErrors:{gh_not_installed:`GitHub CLI (gh) がインストールされていません — リポジトリは作成されませんでした`,gh_not_authenticated:`gh が未ログインです(gh auth login を実行)— リポジトリは作成されませんでした`,gh_scope:`gh のトークンにリポジトリ作成権限がありません(repo スコープ不足)`,gh_repo_exists:`同名のリポジトリが既にアカウントに存在します`,gh_network:`GitHub とのネットワークエラー — リポジトリは作成されませんでした`,generic:`GitHub リポジトリの作成に失敗しました`}},i={title:`プロジェクトを作成しました`,description:`マイルストーン1のバックログが M1 ラベル付きでボードにあります。`,launchM1:`マイルストーン1を起動`,openProject:`プロジェクトを開く`,launchToast:`マイルストーン1を起動 — {{count}} 件のスペックをレールに分配(1レール最大3件)`,launchPartialToast:`マイルストーン1を部分的に起動 — {{count}} 件を起動、{{skipped}} 件が保留`,launchFailed:`マイルストーン1を起動できませんでした`},a={title:`ブループリント`,milestone:`M{{n}}`,launchM1:`マイルストーン1を起動`,generateNext:`M{{n}} を生成`,generateHint:`ブループリントを種にした、実コードに根ざすスペックセッションを開きます`,generateUnavailable:`マイルストーン生成にはネイティブの読み取り専用モードが必要です`},o={startFailed:`ビルダーの会話を開始できませんでした。`,turnFailed:`ビルダーのターンが失敗しました。`,commitFailed:`プロジェクト作成に失敗しました。`},s={title:`{{label}} を生成`,inputPlaceholder:`スペックを磨き込む…`,commit:`{{count}} 件のスペックを {{label}} としてコミット`,commitToast:`{{count}} 件のスペックが {{label}} としてボードに追加されました`,commitFailed:`マイルストーンをコミットできませんでした`,providerUnavailable:`このプロバイダーにはネイティブの読み取り専用モードがないため、マイルストーン生成は利用できません。`},c={title:`プロジェクトビルダー`,subtitle:`エージェントが新しいプロジェクトを作成中`,exit:`終了`,exitConfirmTitle:`ビルダーを終了しますか?`,exitConfirmBody:`ビルダーはここで停止します。ブループリントは保存済みです。次回ビルダーを開いたときに「前回の続きから」で再開できます。`,exitConfirmCancel:`作成を続ける`,exitConfirmDiscard:`破棄して終了`},l={surpriseMe:`おまかせで——ブループリントの全項目に妥当な値を提案し、m1Specs は空のまま、詳細スペックを生成する前に計画を承認させてください。`,milestoneSeed:`マイルストーン {{label}}("{{title}}")の詳細スペックを生成してください。まず実際のコードを読み、完全な一括セットを検証してから、マイルストーンの詳細スペックをすべて単一の blueprint-draft レスポンス/スナップショットで出力してください。`,milestoneSeedWithPlanned:`マイルストーン {{label}}("{{title}}")の詳細スペックを生成してください。計画中のスペックタイトル:{{planned}}。まず実際のコードを読み、完全な一括セットを検証してから、マイルストーンの詳細スペックをすべて単一の blueprint-draft レスポンス/スナップショットで出力してください。`,repairSnapshot:`直前の blueprint-draft ブロックはアプリで使用できませんでした({{reason}})。完全なスナップショットを厳密に有効な JSON で再出力してください(文字列内の改行は \\n にエスケープ、末尾カンマなし、ネストしたコードブロックなし)。ブロックのみを出力してください。`,approve:`承認 — マイルストーン1の詳細バックログを今すぐ生成してください。`},u={eyebrow:`{{milestone}} · スペック {{index}}`,close:`閉じる`,open:`スペックの詳細を見る`,empty:`まだ説明がありません。`,summary:`概要`,priority:`優先度`,description:`スペックの説明`,acceptanceCriteria:`受け入れ基準`,criteriaEmpty:`受け入れ基準はまだありません。`},d={modeLabel:`起動モード`,mode:{sequential:`順次`,parallel:`並列`}},f={writing:`マイルストーン 1 のスペックを作成中…`,specCount:`スペック {{n}}`,turn:`ターン {{turn}}/{{total}}`,phase:{outline:`マイルストーン 1 のスペックの概要を作成中…`,details:`スペック {{from}}〜{{to}}(全 {{total}} 件)を詳細に作成中…`,audit:`{{total}} 件すべてのスペックを監査中…`,repair:`スペック {{from}}〜{{to}} を再依頼中…`}},p={title:`スペックを作成する準備はできましたか?`,steps:{blueprint:`ブループリント承認済み`,specs:`マイルストーン 1 のスペック生成済み`,audit:`品質監査`},details:{blueprint:{done:`{{filled}}/{{total}} 項目`,pending:`{{filled}}/{{total}} 項目`,blocked:`{{filled}}/{{total}} 項目`},specs:{done:`{{count}} 件 · 完了`,pending:`{{count}} / {{min}}–{{max}} 件`,blocked:`{{count}} 件 · {{min}}–{{max}} 件が必要`,writing:`{{count}} 件中 {{written}} 件作成済み`},audit:{done:`問題なし`,pending:`スペック待ち`,blocked:`{{count}} 件の修正が必要`,writing:`スペック作成後に実行`}},hints:{blueprint:{pending:`インタビューを終えるか「おまかせ」と伝えてください。現在 {{filled}}/{{total}} 項目です。`,blocked:`ブループリントが不完全です。`},specs:{pending:`ブループリントを承認すると、ビルダーがマイルストーン 1 のバックログを生成します。`,blocked:`マイルストーン 1 には {{min}}–{{max}} 件のスペックが必要です(現在 {{count}} 件)。ビルダーに調整を依頼してください。`,writing:`ビルダーが各スペックを完全に作成中です。バッチ完了後に品質監査を実行します。`},audit:{pending:`スペックを待っています。`,blocked:`{{count}} 件の監査問題がコミットを妨げています。下のリストを開いてください。`,writing:`すべてのスペック作成後に監査を実行します。`}},issuesCount_one:`監査問題 {{count}} 件`,issuesCount_other:`監査問題 {{count}} 件`,askFix:`ビルダーに修正を依頼`},m={repairing:{invalid_json:`スナップショットを修復中(直前のブロックが有効な JSON ではありませんでした)…`,truncated:`スナップショットを再要求中(応答が途中で切れました)…`,quality:`ビルダーに監査問題の修正を依頼中…`,automatic:`自動`},rejected:{title:`ビルダーの直前のスナップショットを使用できませんでした`,invalid_json:`ブループリントのブロックが有効な JSON ではなかったため、パネルは以前の状態のままです。`,missing_version:`ブロックはブループリントのスナップショットではありませんでした(blueprintVersion がありません)。`,truncated:`ブロックが閉じる前に応答が切れたため、何も受信できませんでした。`,autoRepairFailed:`自動修復はすでに試行済みです。`,retry:`スナップショットを再要求`},repairedNote:`スナップショットを自動修復しました`,nothingToRepair:`修復するものはありません。ビルダーとの会話を続けてください。`,noSession:`この会話はプロバイダーで再開できません。代わりに新しいメッセージを送ってください。`,alreadyStreaming:`ビルダーはまだ応答中です。`,halted:{title:`スペック生成が途中で停止しました`,detail:`{{total}} 件中 {{written}} 件のスペックを完全に作成済み。残りはまだアウトラインのタイトルのみです。`,resume:`生成を続行`}},h={title:`前回の続きから`,untitled:`無題のブループリント`,specsComplete:`スペック {{count}} 件 準備完了`,specsInProgress:`スペック {{count}} 件 進行中`,dimensions:`{{filled}}/{{total}} 項目`,pendingIssue:`要修復のスナップショット`,discard:`破棄`,discardConfirm:`破棄を確定`,discardCancel:`保持`,resumeFailed:`そのブループリントを再開できませんでした。`,discardFailed:`そのブループリントを破棄できませんでした。`},g={batch_incomplete:`ビルダーはまだこのバッチを完了とマークしていません。`,spec_count:`バッチには {{min}}–{{max}} 件のスペックが必要です(現在 {{count}} 件)。`,invalid_shape:`スペック {{n}} は有効なオブジェクトではありません。`,invalid_kind:`スペック {{n}} には有効な種類(scaffold、feature、verification)が必要です。`,scaffold_first:`最初のスペックはプロジェクトのスキャフォールドである必要があります。`,duplicate_scaffold:`スペック {{n}} を 2 つ目のスキャフォールドにはできません。`,title_required:`スペック {{n}} にはタイトルが必要です。`,title_duplicate:`スペック {{n}} はスペック {{other}} とタイトルが重複しています。`,summary:`スペック {{n}} には 240 文字未満の 1 行要約が必要です。`,invalid_priority:`スペック {{n}} には有効な優先度が必要です。`,canonical_sections:`スペック {{n}} には順序どおりの 5 つの標準セクションが不足しています。`,empty_section:`スペック {{n}} の「{{heading}}」セクションが空です。`,section_bullets:`スペック {{n}} の「{{heading}}」には少なくとも {{min}} 個の箇条書きが必要です。`,complexity_format:`スペック {{n}} には根拠付きの複雑度レベルが必要です。`,scaffold_readme:`スキャフォールドのスペックは既存の README に言及する必要があります。`,criteria_count:`スペック {{n}} には {{min}}〜{{max}} 個の受け入れ基準が必要です(現在 {{count}} 個)。`,criterion_quality:`スペック {{n}} の基準 {{criterion}} は具体性が足りません。`,duplicate_criterion:`スペック {{n}} は受け入れ基準 {{criterion}} を繰り返しています。`,milestone_label:`スペック {{n}} には {{label}} ラベルが必要です。`,domain_label:`スペック {{n}} には {{label}} に加えてドメインラベルが必要です。`,invalid_dependency:`スペック {{n}} は先行するスペックにのみ依存できます。`,scaffold_dependency:`スキャフォールドのスペックは依存関係を宣言できません。`,section_depth:`スペック {{n}} の「{{heading}}」をもっと充実させてください({{min}} 文字以上)。`},_={state:{planned:`計画済み`,committed:`起動可能`,running:`進行中`,delivered:`納品済み — レビュー待ち`,done:`完了`},counts:`{{total}} 件中 {{delivered}} 件納品 · {{done}} 件完了`,failedNote_one:`{{count}} 件のスペックが前回の試行で失敗しました`,failedNote_other:`{{count}} 件のスペックが前回の試行で失敗しました`,legend:{done:`完了`,onReview:`レビュー中`,inProgress:`進行中`,failed:`前回の試行で失敗`,todo:`未着手`},rail:{fallbackName:`レール {{n}}`,chunk:`チェーンのレール {{k}}`,running:`実行中 · {{elapsed}}`,review:`レビュー`,open:`レールを開く`,noDelivery:`まだ納品なし`},chain:{title:`順次チェーン`,parallelTitle:`並列起動`,progress:`レール {{k}}/{{n}}`,waiting:`レール {{k}} の完了を待機中`,stackedOn:`次のレールは {{branch}} を基に構築`,paused:`一時停止 — {{reason}}`,completed:`すべてのレールを起動済み`,cancelled:`チェーンはキャンセルされました`,resume:`再開`,cancel:`チェーンをキャンセル`,resumed:`チェーンを再開しました`,resumeFailed:`チェーンを再開できませんでした`,cancelledToast:`チェーンをキャンセルしました — 実行中のレールは継続します`,reasons:{chunk_failed:`前のレールが失敗しました`,chunk_stalled:`前のレールが停止しました(プロバイダーの出力なし)`,chunk_stopped:`前のレールが停止されました`,launch_rejected:`次のレールを起動できませんでした({{detail}})`,head_missing:`基にするブランチが存在しません`,head_discarded:`次のレールの基になる納品が破棄されました`,run_lost:`再起動後に実行中のレールが見つかりません`,unknown:`一時停止`,provider_limit:`プロバイダーの利用上限に達しました`},checkpoint:`レール {{k}}/{{n}} を納品 — レール {{next}} を起動しますか?`,launchNext:`次のレールを起動`,nextLaunched:`次のレールを起動しました`,autoAdvance:`自動で続行`,autoAdvanceHint:`前のレールが納品され次第、次のレールを起動します`,checkpointHint:`各レールの後で停止し、次を起動する前に確認します`,checkpointNote:`このレールの後で停止`,autoOn:`自動続行オン — 次のレールは自動で起動します`,autoOff:`自動続行オフ — 各レールの前に確認します`,autoFailed:`チェーンを更新できませんでした`},toast:{launched:`{{milestone}} を起動 — レール 1/{{n}} に {{count}} 件のスペック。以降のレールは自動で続きます`,launchedAll:`{{milestone}} を起動 — {{n}} 本のレールに {{count}} 件のスペック`,launchedPartial:`{{milestone}} を一部起動 — {{count}} 件を起動、{{skipped}} 件が保留`,chainActive:`{{milestone}} はすでに起動中です — ブループリントパネルを確認`,chunkLaunched:`{{milestone}} — レール {{k}}/{{n}} を起動`,paused:`{{milestone}} を一時停止 — {{reason}}`,resume:`再開`,delivered:`{{milestone}} を納品 — {{count}} 件のスペックがレビュー待ちです`,review:`レビュー`,completed:`{{milestone}} 完了 — すべてのスペックをマージ済み`,launchedCheckpoint:`{{milestone}} を起動 — レール 1/{{n}} に {{count}} 件のスペック。次のレールごとに確認します`,checkpoint:`{{milestone}} — レール {{k}}/{{n}} を納品。次のレールを起動しますか?`,launchNext:`次のレールを起動`,autoContinue:`自動続行`},sequentialHint:`各レールは前のレールのブランチを基に構築します`,parallelHint:`統合ブランチから独立したレール(積み重ねなし)`},v={settledLabel:`決定済み`,surprise:{label:`ビルダー`,hint:`どの決定も後から調整できます`,title:`おまかせ`,description:`製品・コアフロー・プラットフォーム・スタック・マイルストーンをビルダーに決めさせ、ブループリントを承認または調整できる形で提示します。`,cta:`おまかせ`,settledTitle:`おまかせ`,settledDescription:`ブループリントの全項目をビルダーに決めさせました。`},approve:{label:`ブループリント準備完了`,hint:`または変更したい点を入力`,title:`ブループリントを承認`,description:`すべての項目が決まりました。承認するとビルダーがマイルストーン1のスペックを2件ずつ完全に作成し、バッチを監査します。`,cta:`承認してスペックを生成`,settledTitle:`ブループリント承認済み`,settledDescription:`ビルダーがこのブループリントからマイルストーン1のバックログを生成中です。`}},y={shell:e,panel:t,commit:n,progress:r,done:i,sidebar:a,errors:o,milestone:s,mode:c,prompts:l,specModal:u,sequential:d,generation:f,readiness:p,snapshot:m,recent:h,quality:g,milestoneProgress:_,decisionCard:v};export{n as commit,v as decisionCard,y as default,i as done,o as errors,f as generation,s as milestone,_ as milestoneProgress,c as mode,t as panel,r as progress,l as prompts,g as quality,p as readiness,h as recent,d as sequential,e as shell,a as sidebar,m as snapshot,u as specModal};
@@ -1 +0,0 @@
1
- var e={htmlResponse:`L’API a renvoyé une page web au lieu de JSON. Vérifiez que le serveur Specrails fonctionne et que le port de l’API est correct.`,invalidResponse:`L’API Specrails a renvoyé une réponse non valide.`,endpointUnavailable:`Ce point d’accès API est indisponible. Vérifiez que les versions du client et du serveur Specrails correspondent.`,httpError:`L’API Specrails a renvoyé HTTP {{status}}.`,requestFailed:`Impossible de joindre le serveur Specrails.`,deliveryUnconfirmed:`La réception du message n’a pas pu être confirmée. Votre brouillon est conservé et ne sera pas renvoyé automatiquement.`},t={save:`Enregistrer`,cancel:`Annuler`,close:`Fermer`,delete:`Supprimer`,confirm:`Confirmer`,retry:`Réessayer`,search:`Rechercher`,copy:`Copier`,copied:`Copié`,back:`Retour`,next:`Suivant`,done:`Terminé`,open:`Ouvrir`,add:`Ajouter`,remove:`Retirer`,edit:`Modifier`,rename:`Renommer`,duplicate:`Dupliquer`,refresh:`Actualiser`,export:`Exporter`,discard:`Abandonner`,minimize:`Réduire`,expand:`Déplier`,collapse:`Replier`,viewAll:`Tout voir`,learnMore:`En savoir plus`},n={loading:`Chargement…`,saving:`Enregistrement…`,error:`Erreur`,empty:`Aucune donnée`,none:`Aucun`,unknown:`Inconnu`,yes:`Oui`,no:`Non`,on:`Activé`,off:`Désactivé`,enabled:`Activé`,disabled:`Désactivé`},r={queued:`En attente`,running:`En cours`,completed:`Terminé`,failed:`Échec`,canceled:`Annulé`,draft:`Brouillon`,onReview:`En révision`},i={implementation_running:`Implémentation en cours`,implementation_failed:`Échec de l’implémentation`,ready_for_review:`Prête pour la revue`,partial_success:`Implémentation partielle`,partial_delivery:`Livraison partielle prête`,existing_pr_updated:`PR existante mise à jour`,no_changes:`Aucune modification nécessaire`,commit_failed:`Échec de l’étape de commit`,branch_verification_failed:`Échec de la vérification de la branche`,push_failed:`Échec du push`,settlement_interrupted:`Préparation de la livraison interrompue`,recovery_unavailable:`Aucun résultat récupérable unique n’a pu être démontré sur cet ordinateur`,operation_interrupted:`Action de livraison précédente interrompue`,delivery_failed:`Échec de la livraison`,pr_draft_ready:`Brouillon de PR prêt`,pr_ready:`PR prête`,pr_closed:`PR fermée sans fusion`,merged:`Fusionnée`,discarded:`Supprimée`,superseded:`Remplacée par une exécution plus récente`,cleanup_incomplete:`Nettoyage incomplet`,status_failed:`Échec de la vérification de l’état du worktree`,ref_mismatch:`La référence de branche ne correspond pas`},a={inProgress:`La récupération du projet est toujours en cours. Votre livraison est en sécurité ; réessayez dans un instant.`,interrupted:`Une action de livraison précédente a été interrompue lors du redémarrage. Votre travail a été préservé ; vérifiez l’état actuel et réessayez quand vous êtes prêt.`},o={resize:{nw:`Redimensionner — coin supérieur gauche`,n:`Redimensionner — bord supérieur`,ne:`Redimensionner — coin supérieur droit`,e:`Redimensionner — bord droit`,se:`Redimensionner — coin inférieur droit`,s:`Redimensionner — bord inférieur`,sw:`Redimensionner — coin inférieur gauche`,w:`Redimensionner — bord gauche`},resetPosition:`Réinitialiser la position`},s={title:`Dépôts et dossiers`,additional:`Dossiers supplémentaires`,sharedBacklog:`Un projet, un backlog partagé. Chaque spec peut cibler un ou plusieurs dépôts.`,folderNumber:`Dossier {{number}}`,removeFolder:`Retirer le dossier`,addFolder:`Ajouter un dossier`,primary:`Principal`,contextOnly:`Contexte uniquement`,unavailable:`Indisponible`,detach:`Dissocier`,detachHint:`La dissociation retire uniquement le lien. Les fichiers restent sur le disque. Les specs et les livraisons inachevées doivent d’abord libérer leurs références.`,name:`Nom`,path:`Chemin du dossier`,browse:`Choisir un dossier`,integrationBranch:`Branche d’intégration`,branchDefault:`Utiliser la branche par défaut du dépôt`,specScope:`Dépôts de cette spec`,scopeHint:`Sélectionnez les dépôts que cette spec peut modifier. Les autres dossiers restent disponibles comme contexte.`,invalidSelection:`Un dépôt sélectionné n’est plus enregistré. Mettez à jour la sélection avant d’enregistrer.`,shellTarget:`Dépôt de cette commande`,shellDefault:`Dépôt d’exécution (exécutions avec un seul dépôt)`,shellHint:`Obligatoire lorsqu’une exécution concerne plusieurs dépôts.`,select:`Dépôt`,all:`Tous les dépôts`},c={building:`Implémentation en cours`,on_review:`Prête pour la revue`,no_changes:`Aucune modification`,pr_draft:`Brouillon de PR`,pr_ready:`PR prête`,pr_closed:`PR fermée`,completed:`Terminée`,merged:`Intégrée`,discarded:`Abandonnée`,superseded:`Remplacée`,implementation_failed:`Échec de l’implémentation`,pr_failed:`Échec de la livraison`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
@@ -1 +0,0 @@
1
- var e={htmlResponse:`Die API hat eine Webseite statt JSON zurückgegeben. Prüfe, ob der Specrails-Server läuft und der API-Port stimmt.`,invalidResponse:`Die Specrails-API hat eine ungültige Antwort zurückgegeben.`,endpointUnavailable:`Dieser API-Endpunkt ist nicht verfügbar. Prüfe, ob die Versionen von Specrails-Client und -Server übereinstimmen.`,httpError:`Die Specrails-API hat HTTP {{status}} zurückgegeben.`,requestFailed:`Der Specrails-Server konnte nicht erreicht werden.`,deliveryUnconfirmed:`Die Zustellung der Nachricht konnte nicht bestätigt werden. Dein Entwurf bleibt erhalten und wird nicht automatisch erneut gesendet.`},t={save:`Speichern`,cancel:`Abbrechen`,close:`Schließen`,delete:`Löschen`,confirm:`Bestätigen`,retry:`Wiederholen`,search:`Suchen`,copy:`Kopieren`,copied:`Kopiert`,back:`Zurück`,next:`Weiter`,done:`Fertig`,open:`Öffnen`,add:`Hinzufügen`,remove:`Entfernen`,edit:`Bearbeiten`,rename:`Umbenennen`,duplicate:`Duplizieren`,refresh:`Aktualisieren`,export:`Exportieren`,discard:`Verwerfen`,minimize:`Minimieren`,expand:`Ausklappen`,collapse:`Einklappen`,viewAll:`Alle anzeigen`,learnMore:`Mehr erfahren`},n={loading:`Wird geladen…`,saving:`Wird gespeichert…`,error:`Fehler`,empty:`Keine Daten`,none:`Keine`,unknown:`Unbekannt`,yes:`Ja`,no:`Nein`,on:`Ein`,off:`Aus`,enabled:`Aktiviert`,disabled:`Deaktiviert`},r={queued:`In Warteschlange`,running:`Läuft`,completed:`Abgeschlossen`,failed:`Fehlgeschlagen`,canceled:`Abgebrochen`,draft:`Entwurf`,onReview:`In Prüfung`},i={implementation_running:`Implementierung läuft`,implementation_failed:`Implementierung fehlgeschlagen`,ready_for_review:`Bereit zur Prüfung`,partial_success:`Teilweise implementiert`,partial_delivery:`Teillieferung bereit`,existing_pr_updated:`Bestehender PR aktualisiert`,no_changes:`Keine Änderungen erforderlich`,commit_failed:`Commit-Schritt fehlgeschlagen`,branch_verification_failed:`Branch-Prüfung fehlgeschlagen`,push_failed:`Push fehlgeschlagen`,settlement_interrupted:`Vorbereitung der Lieferung unterbrochen`,recovery_unavailable:`Auf diesem Computer konnte kein eindeutiges wiederherstellbares Ergebnis nachgewiesen werden`,operation_interrupted:`Vorherige Lieferaktion unterbrochen`,delivery_failed:`Lieferung fehlgeschlagen`,pr_draft_ready:`PR-Entwurf bereit`,pr_ready:`PR bereit`,pr_closed:`PR ohne Merge geschlossen`,merged:`Zusammengeführt`,discarded:`Verworfen`,superseded:`Durch einen neueren Lauf ersetzt`,cleanup_incomplete:`Bereinigung unvollständig`,status_failed:`Worktree-Statusprüfung fehlgeschlagen`,ref_mismatch:`Branch-Referenz stimmt nicht überein`},a={inProgress:`Die Projektwiederherstellung läuft noch. Deine Lieferung ist sicher – versuche es gleich noch einmal.`,interrupted:`Eine frühere Lieferaktion wurde beim Neustart unterbrochen. Deine Arbeit wurde erhalten; prüfe den aktuellen Stand und versuche es erneut, wenn du bereit bist.`},o={resize:{nw:`Größe ändern — obere linke Ecke`,n:`Größe ändern — obere Kante`,ne:`Größe ändern — obere rechte Ecke`,e:`Größe ändern — rechte Kante`,se:`Größe ändern — untere rechte Ecke`,s:`Größe ändern — untere Kante`,sw:`Größe ändern — untere linke Ecke`,w:`Größe ändern — linke Kante`},resetPosition:`Position zurücksetzen`},s={title:`Repositorys und Ordner`,additional:`Zusätzliche Ordner`,sharedBacklog:`Ein Projekt, ein gemeinsames Backlog. Specs können ein oder mehrere Repositorys auswählen.`,folderNumber:`Ordner {{number}}`,removeFolder:`Ordner entfernen`,addFolder:`Ordner hinzufügen`,primary:`Primär`,contextOnly:`Nur Kontext`,unavailable:`Nicht verfügbar`,detach:`Verknüpfung lösen`,detachHint:`Es wird nur die Verknüpfung entfernt. Die Dateien bleiben auf dem Datenträger. Referenzen von Specs und noch offenen Lieferungen müssen zuerst entfernt werden.`,name:`Name`,path:`Ordnerpfad`,browse:`Ordner auswählen`,integrationBranch:`Integrationsbranch`,branchDefault:`Standardbranch des Repositorys verwenden`,specScope:`Repositorys für diese Spec`,scopeHint:`Wähle die Repositorys aus, die diese Spec ändern darf. Nicht ausgewählte Ordner bleiben als Kontext verfügbar.`,invalidSelection:`Ein ausgewähltes Repository ist nicht mehr registriert. Aktualisiere die Auswahl vor dem Speichern.`,shellTarget:`Repository für diesen Befehl`,shellDefault:`Ausführungsrepository (Ausführungen mit einem Repository)`,shellHint:`Erforderlich, wenn eine Ausführung mehrere Repositorys betrifft.`,select:`Repository`,all:`Alle Repositorys`},c={building:`Implementierung läuft`,on_review:`Bereit zur Überprüfung`,no_changes:`Keine Änderungen`,pr_draft:`PR-Entwurf`,pr_ready:`PR bereit`,pr_closed:`PR geschlossen`,completed:`Abgeschlossen`,merged:`Integriert`,discarded:`Verworfen`,superseded:`Ersetzt`,implementation_failed:`Implementierung fehlgeschlagen`,pr_failed:`Lieferung fehlgeschlagen`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
@@ -1 +0,0 @@
1
- var e={htmlResponse:`La API devolvió una página web en lugar de JSON. Comprueba que el servidor de Specrails esté activo y que el puerto de la API sea correcto.`,invalidResponse:`La API de Specrails devolvió una respuesta no válida.`,endpointUnavailable:`Este endpoint de la API no está disponible. Comprueba que las versiones del cliente y del servidor de Specrails coincidan.`,httpError:`La API de Specrails devolvió HTTP {{status}}.`,requestFailed:`No se ha podido conectar con el servidor de Specrails.`,deliveryUnconfirmed:`No se ha podido confirmar la entrega del mensaje. El borrador se conserva y no se reenviará automáticamente.`},t={save:`Guardar`,cancel:`Cancelar`,close:`Cerrar`,delete:`Eliminar`,confirm:`Confirmar`,retry:`Reintentar`,search:`Buscar`,copy:`Copiar`,copied:`Copiado`,back:`Atrás`,next:`Siguiente`,done:`Hecho`,open:`Abrir`,add:`Añadir`,remove:`Quitar`,edit:`Editar`,rename:`Renombrar`,duplicate:`Duplicar`,refresh:`Actualizar`,export:`Exportar`,discard:`Descartar`,minimize:`Minimizar`,expand:`Expandir`,collapse:`Contraer`,viewAll:`Ver todo`,learnMore:`Más información`},n={loading:`Cargando…`,saving:`Guardando…`,error:`Error`,empty:`Sin datos`,none:`Ninguno`,unknown:`Desconocido`,yes:`Sí`,no:`No`,on:`Activado`,off:`Desactivado`,enabled:`Habilitado`,disabled:`Deshabilitado`},r={queued:`En cola`,running:`En ejecución`,completed:`Completado`,failed:`Fallido`,canceled:`Cancelado`,draft:`Borrador`,onReview:`En revisión`},i={implementation_running:`Implementación en curso`,implementation_failed:`Implementación fallida`,ready_for_review:`Lista para revisión`,partial_success:`Implementación parcial`,partial_delivery:`Entrega parcial lista`,existing_pr_updated:`PR existente actualizada`,no_changes:`No se requieren cambios`,commit_failed:`Falló la etapa de commit`,branch_verification_failed:`Falló la verificación de la rama`,push_failed:`Falló el push`,settlement_interrupted:`Se interrumpió la preparación de la entrega`,recovery_unavailable:`No se ha podido demostrar un único resultado recuperable en este equipo`,operation_interrupted:`Acción de entrega anterior interrumpida`,delivery_failed:`La entrega falló`,pr_draft_ready:`PR en borrador lista`,pr_ready:`PR lista`,pr_closed:`PR cerrada sin merge`,merged:`Merge completado`,discarded:`Descartada`,superseded:`Sustituida por una ejecución más reciente`,cleanup_incomplete:`Limpieza incompleta`,status_failed:`Falló la comprobación del estado del worktree`,ref_mismatch:`La referencia de la rama no coincide`},a={inProgress:`La recuperación del proyecto sigue en curso. Tu entrega está a salvo; vuelve a intentarlo en unos instantes.`,interrupted:`Una acción de entrega anterior se interrumpió durante el reinicio. Tu trabajo se conservó; revisa el estado actual y vuelve a intentarlo cuando quieras.`},o={resize:{nw:`Redimensionar — esquina superior izquierda`,n:`Redimensionar — borde superior`,ne:`Redimensionar — esquina superior derecha`,e:`Redimensionar — borde derecho`,se:`Redimensionar — esquina inferior derecha`,s:`Redimensionar — borde inferior`,sw:`Redimensionar — esquina inferior izquierda`,w:`Redimensionar — borde izquierdo`},resetPosition:`Restablecer posición`},s={title:`Repositorios y carpetas`,additional:`Carpetas adicionales`,sharedBacklog:`Un proyecto, un backlog común. Cada spec puede seleccionar uno o varios repositorios.`,folderNumber:`Carpeta {{number}}`,removeFolder:`Quitar carpeta`,addFolder:`Añadir carpeta`,primary:`Principal`,contextOnly:`Solo contexto`,unavailable:`No disponible`,detach:`Desvincular`,detachHint:`Desvincular elimina la asociación; los archivos permanecen en disco. Primero deben liberarse las referencias de specs y entregas pendientes.`,name:`Nombre`,path:`Ruta de la carpeta`,browse:`Seleccionar carpeta`,integrationBranch:`Rama de integración`,branchDefault:`Usar la predeterminada del repositorio`,specScope:`Repositorios de esta spec`,scopeHint:`Selecciona los repositorios que puede modificar esta spec. Las demás carpetas siguen disponibles como contexto.`,invalidSelection:`Un repositorio seleccionado ya no está registrado. Actualiza la selección antes de guardar.`,shellTarget:`Repositorio de este comando`,shellDefault:`Repositorio de ejecución (ejecuciones con un único repo)`,shellHint:`Obligatorio cuando la ejecución afecta a varios repositorios.`,select:`Repositorio`,all:`Todos los repositorios`},c={building:`Implementando`,on_review:`Listo para revisar`,no_changes:`Sin cambios`,pr_draft:`PR en borrador`,pr_ready:`PR lista`,pr_closed:`PR cerrada`,completed:`Completado`,merged:`Integrado`,discarded:`Descartado`,superseded:`Sustituido`,implementation_failed:`Implementación fallida`,pr_failed:`Entrega fallida`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
@@ -1 +0,0 @@
1
- var e={htmlResponse:`API が JSON ではなくウェブページを返しました。Specrails バックエンドが起動していることと、API ポートが正しいことを確認してください。`,invalidResponse:`Specrails API が無効な応答を返しました。`,endpointUnavailable:`この API エンドポイントは利用できません。Specrails のフロントエンドとバックエンドのバージョンが一致しているか確認してください。`,httpError:`Specrails API が HTTP {{status}} を返しました。`,requestFailed:`Specrails バックエンドに接続できませんでした。`,deliveryUnconfirmed:`メッセージの受信を確認できませんでした。下書きは保持され、自動的に再送信されることはありません。`},t={save:`保存`,cancel:`キャンセル`,close:`閉じる`,delete:`削除`,confirm:`確認`,retry:`再試行`,search:`検索`,copy:`コピー`,copied:`コピーしました`,back:`戻る`,next:`次へ`,done:`完了`,open:`開く`,add:`追加`,remove:`削除`,edit:`編集`,rename:`名前を変更`,duplicate:`複製`,refresh:`更新`,export:`エクスポート`,discard:`破棄`,minimize:`最小化`,expand:`展開`,collapse:`折りたたむ`,viewAll:`すべて表示`,learnMore:`詳細`},n={loading:`読み込み中…`,saving:`保存中…`,error:`エラー`,empty:`データなし`,none:`なし`,unknown:`不明`,yes:`はい`,no:`いいえ`,on:`オン`,off:`オフ`,enabled:`有効`,disabled:`無効`},r={queued:`キュー待ち`,running:`実行中`,completed:`完了`,failed:`失敗`,canceled:`キャンセル済み`,draft:`下書き`,onReview:`レビュー中`},i={implementation_running:`実装を実行中`,implementation_failed:`実装に失敗`,ready_for_review:`レビュー準備完了`,partial_success:`一部を実装済み`,partial_delivery:`部分配信の準備完了`,existing_pr_updated:`既存の PR を更新済み`,no_changes:`変更不要`,commit_failed:`コミット段階に失敗`,branch_verification_failed:`ブランチ検証に失敗`,push_failed:`プッシュに失敗`,settlement_interrupted:`配信準備が中断されました`,recovery_unavailable:`このコンピューターでは復旧可能な結果を 1 つに特定できませんでした`,operation_interrupted:`以前の配信操作が中断されました`,delivery_failed:`配信に失敗`,pr_draft_ready:`PR 下書きの準備完了`,pr_ready:`PR の準備完了`,pr_closed:`PR はマージされずにクローズ`,merged:`マージ済み`,discarded:`破棄済み`,superseded:`新しい実行に置換済み`,cleanup_incomplete:`クリーンアップが不完全`,status_failed:`worktree の状態確認に失敗`,ref_mismatch:`ブランチ参照が一致しません`},a={inProgress:`プロジェクトの復旧が進行中です。配信内容は安全に保たれています。しばらくしてから再試行してください。`,interrupted:`再起動中に以前の配信操作が中断されました。作業内容は保持されています。現在の状態を確認し、準備ができたら再試行してください。`},o={resize:{nw:`サイズ変更 — 左上隅`,n:`サイズ変更 — 上端`,ne:`サイズ変更 — 右上隅`,e:`サイズ変更 — 右端`,se:`サイズ変更 — 右下隅`,s:`サイズ変更 — 下端`,sw:`サイズ変更 — 左下隅`,w:`サイズ変更 — 左端`},resetPosition:`位置をリセット`},s={title:`リポジトリとフォルダー`,additional:`追加のフォルダー`,sharedBacklog:`プロジェクト全体で1つのバックログを共有します。各specで1つ以上のリポジトリを選択できます。`,folderNumber:`フォルダー {{number}}`,removeFolder:`フォルダーを削除`,addFolder:`フォルダーを追加`,primary:`プライマリ`,contextOnly:`コンテキスト専用`,unavailable:`利用不可`,detach:`関連付けを解除`,detachHint:`解除されるのは関連付けのみで、ファイルはディスク上に残ります。先にspecと未完了の成果物からの参照を解除する必要があります。`,name:`名前`,path:`フォルダーのパス`,browse:`フォルダーを選択`,integrationBranch:`統合ブランチ`,branchDefault:`リポジトリのデフォルトを使用`,specScope:`このspecのリポジトリ`,scopeHint:`このspecが変更できるリポジトリを選択してください。選択されていないフォルダーは引き続きコンテキストとして利用できます。`,invalidSelection:`選択されたリポジトリは登録が解除されています。保存する前に選択を更新してください。`,shellTarget:`このコマンドのリポジトリ`,shellDefault:`実行対象のリポジトリ(単一リポジトリでの実行)`,shellHint:`複数のリポジトリを対象に実行する場合は必須です。`,select:`リポジトリ`,all:`すべてのリポジトリ`},c={building:`実装中`,on_review:`レビュー待ち`,no_changes:`変更なし`,pr_draft:`ドラフトPR`,pr_ready:`PR準備完了`,pr_closed:`PRクローズ済み`,completed:`完了`,merged:`統合済み`,discarded:`破棄済み`,superseded:`置き換え済み`,implementation_failed:`実装失敗`,pr_failed:`成果物の準備に失敗`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};
@@ -1 +0,0 @@
1
- var e={htmlResponse:`API 返回了网页,而非 JSON。请确认 Specrails 后端正在运行,且 API 端口正确。`,invalidResponse:`Specrails API 返回了无效响应。`,endpointUnavailable:`此 API 端点不可用。请确认 Specrails 前端与后端版本一致。`,httpError:`Specrails API 返回了 HTTP {{status}}。`,requestFailed:`无法连接 Specrails 后端。`,deliveryUnconfirmed:`无法确认消息是否送达。草稿已保留,不会自动重新发送。`},t={save:`保存`,cancel:`取消`,close:`关闭`,delete:`删除`,confirm:`确认`,retry:`重试`,search:`搜索`,copy:`复制`,copied:`已复制`,back:`返回`,next:`下一步`,done:`完成`,open:`打开`,add:`添加`,remove:`移除`,edit:`编辑`,rename:`重命名`,duplicate:`创建副本`,refresh:`刷新`,export:`导出`,discard:`丢弃`,minimize:`最小化`,expand:`展开`,collapse:`收起`,viewAll:`查看全部`,learnMore:`了解更多`},n={loading:`加载中…`,saving:`保存中…`,error:`错误`,empty:`暂无数据`,none:`无`,unknown:`未知`,yes:`是`,no:`否`,on:`开`,off:`关`,enabled:`已启用`,disabled:`已禁用`},r={queued:`已排队`,running:`运行中`,completed:`已完成`,failed:`失败`,canceled:`已取消`,draft:`草稿`,onReview:`评审中`},i={implementation_running:`实现进行中`,implementation_failed:`实现失败`,ready_for_review:`已可审查`,partial_success:`部分实现完成`,partial_delivery:`部分交付已就绪`,existing_pr_updated:`现有 PR 已更新`,no_changes:`无需更改`,commit_failed:`提交阶段失败`,branch_verification_failed:`分支验证失败`,push_failed:`推送失败`,settlement_interrupted:`交付准备被中断`,recovery_unavailable:`无法在此计算机上证明唯一的可恢复结果`,operation_interrupted:`上一次交付操作已中断`,delivery_failed:`交付失败`,pr_draft_ready:`PR 草稿已就绪`,pr_ready:`PR 已就绪`,pr_closed:`PR 已关闭但未合并`,merged:`已合并`,discarded:`已丢弃`,superseded:`已被较新的运行取代`,cleanup_incomplete:`清理未完成`,status_failed:`worktree 状态检查失败`,ref_mismatch:`分支引用不匹配`},a={inProgress:`项目恢复仍在进行中。你的交付内容是安全的,请稍后重试。`,interrupted:`上一次交付操作在重启期间被中断。你的工作已保留;请检查当前状态,并在准备好后重试。`},o={resize:{nw:`调整大小 — 左上角`,n:`调整大小 — 顶边`,ne:`调整大小 — 右上角`,e:`调整大小 — 右边`,se:`调整大小 — 右下角`,s:`调整大小 — 底边`,sw:`调整大小 — 左下角`,w:`调整大小 — 左边`},resetPosition:`重置位置`},s={title:`仓库和文件夹`,additional:`附加文件夹`,sharedBacklog:`一个项目,共享一个待办列表。每个 spec 可以选择一个或多个仓库。`,folderNumber:`文件夹 {{number}}`,removeFolder:`移除文件夹`,addFolder:`添加文件夹`,primary:`主仓库`,contextOnly:`仅供上下文使用`,unavailable:`不可用`,detach:`解除关联`,detachHint:`解除关联仅移除关联关系,文件仍保留在磁盘上。必须先移除 spec 和未完成交付对该仓库的引用。`,name:`名称`,path:`文件夹路径`,browse:`选择文件夹`,integrationBranch:`集成分支`,branchDefault:`使用仓库默认分支`,specScope:`此 spec 的仓库`,scopeHint:`选择此 spec 可以修改的仓库。未选中的文件夹仍可作为上下文使用。`,invalidSelection:`所选仓库已取消注册。请更新选择后再保存。`,shellTarget:`此命令的仓库`,shellDefault:`运行仓库(仅涉及一个仓库的运行)`,shellHint:`运行涉及多个仓库时为必填项。`,select:`仓库`,all:`所有仓库`},c={building:`实现中`,on_review:`待审查`,no_changes:`无更改`,pr_draft:`PR 草稿`,pr_ready:`PR 已就绪`,pr_closed:`PR 已关闭`,completed:`已完成`,merged:`已集成`,discarded:`已丢弃`,superseded:`已取代`,implementation_failed:`实现失败`,pr_failed:`交付失败`},l={network:e,actions:t,states:n,status:r,prDeliveryStatus:i,prRecovery:a,modal:o,repositories:s,repositoryDelivery:c};export{t as actions,l as default,o as modal,e as network,i as prDeliveryStatus,a as prRecovery,s as repositories,c as repositoryDelivery,n as states,r as status};