specrails-desktop 2.36.0 → 2.42.2

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 (510) hide show
  1. package/README.md +94 -247
  2. package/client/dist/assets/ActivityFeedPage-DoEMumQS.js +1 -0
  3. package/client/dist/assets/AgentBrowserCapture-DIh4K0gh.js +1 -0
  4. package/client/dist/assets/AgentModeAnalyticsPane-mbq4WEoO.js +2 -0
  5. package/client/dist/assets/AgentModeCodePane-CKh7zuA4.js +2 -0
  6. package/client/dist/assets/AgentModeJobsPane-BDokPiLJ.js +1 -0
  7. package/client/dist/assets/AgentsPage-BFVAZbBj.js +87 -0
  8. package/client/dist/assets/AnalyticsPage-3Y9LuWwz.js +1 -0
  9. package/client/dist/assets/CodePage-C9KyuV_C.js +3 -0
  10. package/client/dist/assets/DesktopAnalyticsPage-Bhi54bXQ.js +1 -0
  11. package/client/dist/assets/{DocsDialog-C76VdBJC.js → DocsDialog-Dj6mt4ga.js} +2 -2
  12. package/client/dist/assets/{DocsPage-ziMlj6B6.js → DocsPage-24yWglNI.js} +1 -1
  13. package/client/dist/assets/ExportDropdown-ophapHrT.js +1 -0
  14. package/client/dist/assets/InteractiveJobComposer-C1ucmxQh.js +19 -0
  15. package/client/dist/assets/JobDetailModal-DNWmgVHD.js +1 -0
  16. package/client/dist/assets/JobDetailPage-BcajZyuu.js +1 -0
  17. package/client/dist/assets/JobsPage-B9nTZw6e.js +1 -0
  18. package/client/dist/assets/LoopBuilderPage-Oc48iOFW.js +7 -0
  19. package/client/dist/assets/LoopPreviewModal-ae0Fr6SU.js +1 -0
  20. package/client/dist/assets/LoopsPage-CUEqzUBI.js +1 -0
  21. package/client/dist/assets/MinimizedChatsContext-Deg39peL.js +1 -0
  22. package/client/dist/assets/PluginsPage-C1xtARIx.js +2 -0
  23. package/client/dist/assets/ProjectSettingsDialog-JZzrXFBN.js +1 -0
  24. package/client/dist/assets/RepositoryDeliveries-CSDsiVUz.js +5 -0
  25. package/client/dist/assets/RepositoryScopeSelector-D-RCaknl.js +1 -0
  26. package/client/dist/assets/ReviewPacketPage-x5EfGTiL.js +1 -0
  27. package/client/dist/assets/TemplatePreviewModal-BSyuZxGq.js +1 -0
  28. package/client/dist/assets/TicketDetailModalContext-DqyF0so-.js +14 -0
  29. package/client/dist/assets/Trans-SnMX4MhW.js +1 -0
  30. package/client/dist/assets/agent-BdT0SB1D.js +1 -0
  31. package/client/dist/assets/agent-Bh9K7iEt.js +1 -0
  32. package/client/dist/assets/agent-C4ibdFk9.js +1 -0
  33. package/client/dist/assets/agent-CSFY22Zo.js +1 -0
  34. package/client/dist/assets/agent-DAnqxUn8.js +1 -0
  35. package/client/dist/assets/agent-DTQiu0Mi.js +1 -0
  36. package/client/dist/assets/agent-T54WuR_Y.js +1 -0
  37. package/client/dist/assets/agent-i75WDZOA.js +1 -0
  38. package/client/dist/assets/browser-05vRDg_y.js +1 -0
  39. package/client/dist/assets/browser-Bulb-cB1.js +1 -0
  40. package/client/dist/assets/browser-C7f-Jsg1.js +1 -0
  41. package/client/dist/assets/browser-CG0PE1j_.js +1 -0
  42. package/client/dist/assets/browser-CMzaqAjo.js +1 -0
  43. package/client/dist/assets/browser-DMajYdNX.js +1 -0
  44. package/client/dist/assets/browser-DxcOHrdP.js +1 -0
  45. package/client/dist/assets/browser-ObE7xVo3.js +1 -0
  46. package/client/dist/assets/builder-765NeYTp.js +1 -0
  47. package/client/dist/assets/builder-8MG3V6ea.js +1 -0
  48. package/client/dist/assets/builder-B-1UBs5K.js +1 -0
  49. package/client/dist/assets/builder-BTiGnPT0.js +1 -0
  50. package/client/dist/assets/builder-Cx9Rz-7u.js +1 -0
  51. package/client/dist/assets/builder-DKFMELBl.js +1 -0
  52. package/client/dist/assets/builder-OcmKrC0h.js +1 -0
  53. package/client/dist/assets/builder-P9qVBXFZ.js +1 -0
  54. package/client/dist/assets/{button-CJqFnUOL.js → button-DCBqEaZl.js} +1 -1
  55. package/client/dist/assets/{code-CkUuW4m9.js → code-B37GRg9C.js} +1 -1
  56. package/client/dist/assets/{code-B0O8-p8k.js → code-BBOEZbf9.js} +1 -1
  57. package/client/dist/assets/{code-B1VLZDhS.js → code-BRm-jcyx.js} +1 -1
  58. package/client/dist/assets/{code-Bpj4Ddml.js → code-CF7w62CR.js} +1 -1
  59. package/client/dist/assets/{code-BykBZ5-e.js → code-CLuvJt2r.js} +1 -1
  60. package/client/dist/assets/{code-B86IMAfz.js → code-D0RCm59f.js} +1 -1
  61. package/client/dist/assets/code-DaZ-ZwCT.js +1 -0
  62. package/client/dist/assets/{code-cAqaqMTx.js → code-iIHkGaCL.js} +1 -1
  63. package/client/dist/assets/commands-0XjAftla.js +1 -0
  64. package/client/dist/assets/commands-BAWSYHjQ.js +1 -0
  65. package/client/dist/assets/commands-BBwowgiE.js +1 -0
  66. package/client/dist/assets/commands-BacjIZLN.js +1 -0
  67. package/client/dist/assets/commands-Bs62IAZ3.js +1 -0
  68. package/client/dist/assets/commands-CLPdh-Hh.js +1 -0
  69. package/client/dist/assets/commands-DlbFzgrp.js +1 -0
  70. package/client/dist/assets/commands-LjPSsi5F.js +1 -0
  71. package/client/dist/assets/common-B5AZNYMH.js +1 -0
  72. package/client/dist/assets/common-BFZ0c_vN.js +1 -0
  73. package/client/dist/assets/common-BrlwEnL7.js +1 -0
  74. package/client/dist/assets/common-BttQx3z4.js +1 -0
  75. package/client/dist/assets/common-CM65k_-e.js +1 -0
  76. package/client/dist/assets/common-D4mvFFlu.js +1 -0
  77. package/client/dist/assets/common-TZ9Ny96S.js +1 -0
  78. package/client/dist/assets/common-nFpSF4GC.js +1 -0
  79. package/client/dist/assets/dashboard-B14uYXkG.js +1 -0
  80. package/client/dist/assets/dashboard-BK_mez-z.js +1 -0
  81. package/client/dist/assets/dashboard-BfBir_6o.js +1 -0
  82. package/client/dist/assets/dashboard-Bt0cCzeG.js +1 -0
  83. package/client/dist/assets/dashboard-BwkjxI6H.js +1 -0
  84. package/client/dist/assets/{dashboard-C8WOEiPu.js → dashboard-C3bDKf7s.js} +1 -1
  85. package/client/dist/assets/dashboard-CdvjGfog.js +1 -0
  86. package/client/dist/assets/dashboard-fRrP0Kv0.js +1 -0
  87. package/client/dist/assets/dialog-SRw01_QU.js +45 -0
  88. package/client/dist/assets/dist-js-CJ_2XX1Y.js +1 -0
  89. package/client/dist/assets/formatDistanceToNow-DSj5DprF.js +1 -0
  90. package/client/dist/assets/getTimezoneOffsetInMilliseconds-YhD8rIEs.js +1 -0
  91. package/client/dist/assets/index-DwAmL7m5.css +2 -0
  92. package/client/dist/assets/index-EzrkUb8B.js +76 -0
  93. package/client/dist/assets/{jira-api-B1-MUehg.js → jira-api-CSCqGr-Q.js} +1 -1
  94. package/client/dist/assets/{jobs-CN_zv4Gr.js → jobs-B8rrzfyZ.js} +1 -1
  95. package/client/dist/assets/{jobs-DUlWSYq2.js → jobs-BS6RTurf.js} +1 -1
  96. package/client/dist/assets/{jobs-Bpks6doU.js → jobs-BTT0Bsks.js} +1 -1
  97. package/client/dist/assets/{jobs-Bgq-PZkC.js → jobs-CezU69AE.js} +1 -1
  98. package/client/dist/assets/{jobs-SwYS2M-B.js → jobs-ClFJae0s.js} +1 -1
  99. package/client/dist/assets/{jobs-BAls3bWq.js → jobs-DJSFIFVy.js} +1 -1
  100. package/client/dist/assets/{jobs-DhxKgWFq.js → jobs-DhgGr8vm.js} +1 -1
  101. package/client/dist/assets/{jobs-B_TeSQxb.js → jobs-DzMjUcaN.js} +1 -1
  102. package/client/dist/assets/mcp-6rMoZfEO.js +1 -0
  103. package/client/dist/assets/mcp-BD8sL5mP.js +1 -0
  104. package/client/dist/assets/mcp-BkcA3I5s.js +1 -0
  105. package/client/dist/assets/mcp-CCpSelOh.js +1 -0
  106. package/client/dist/assets/mcp-CUAN6ORK.js +1 -0
  107. package/client/dist/assets/mcp-CqbRxRTE.js +1 -0
  108. package/client/dist/assets/mcp-DP2YfVhO.js +1 -0
  109. package/client/dist/assets/mcp-DUVQamDz.js +1 -0
  110. package/client/dist/assets/narration-B-ynWTpn.js +1 -0
  111. package/client/dist/assets/narration-Bj_laZwg.js +1 -0
  112. package/client/dist/assets/narration-BxHpmMv_.js +1 -0
  113. package/client/dist/assets/narration-C1Px0-0j.js +1 -0
  114. package/client/dist/assets/narration-CAXhGbzM.js +1 -0
  115. package/client/dist/assets/narration-DQ1l_Kq6.js +1 -0
  116. package/client/dist/assets/narration-XISXwqZd.js +1 -0
  117. package/client/dist/assets/narration-kwzfglQo.js +1 -0
  118. package/client/dist/assets/nav-1-Hh2kOz.js +1 -0
  119. package/client/dist/assets/nav-B34QkESm.js +1 -0
  120. package/client/dist/assets/nav-Bap_UXAq.js +1 -0
  121. package/client/dist/assets/{nav-pYuXq7sf.js → nav-BwxXIB24.js} +1 -1
  122. package/client/dist/assets/nav-Ch-zHBG5.js +1 -0
  123. package/client/dist/assets/nav-CygC_WN-.js +1 -0
  124. package/client/dist/assets/{nav-iwjCg5FR.js → nav-KnnLQtOQ.js} +1 -1
  125. package/client/dist/assets/nav-m00uxYUG.js +1 -0
  126. package/client/dist/assets/packet-BQ2tXfJI.js +1 -0
  127. package/client/dist/assets/packet-BdpOJ1Cy.js +1 -0
  128. package/client/dist/assets/packet-C3Ievb9R.js +1 -0
  129. package/client/dist/assets/packet-C4zJIG0Y.js +1 -0
  130. package/client/dist/assets/packet-Cx-zRuWn.js +1 -0
  131. package/client/dist/assets/packet-DUTGX52M.js +1 -0
  132. package/client/dist/assets/packet-DhsKtUPB.js +1 -0
  133. package/client/dist/assets/packet-z3LJ8Zyy.js +1 -0
  134. package/client/dist/assets/project-repositories-DYhTvwQ1.js +1 -0
  135. package/client/dist/assets/provider-capabilities-B-wOHfLP.js +1 -0
  136. package/client/dist/assets/settings-BBt2xtDQ.js +1 -0
  137. package/client/dist/assets/settings-BJB9RKJj.js +1 -0
  138. package/client/dist/assets/settings-CHwQR2rB.js +1 -0
  139. package/client/dist/assets/settings-CrMi3kSi.js +1 -0
  140. package/client/dist/assets/settings-DKyhDGD1.js +1 -0
  141. package/client/dist/assets/settings-Deupji9c.js +1 -0
  142. package/client/dist/assets/settings-DqRMmwAM.js +1 -0
  143. package/client/dist/assets/settings-J4rj6vo-.js +1 -0
  144. package/client/dist/assets/setup-2xGgu4Sk.js +1 -0
  145. package/client/dist/assets/setup-Ba11l2JA.js +1 -0
  146. package/client/dist/assets/setup-BzW4kMok.js +1 -0
  147. package/client/dist/assets/setup-COzwYhkJ.js +1 -0
  148. package/client/dist/assets/setup-CRVULhtF.js +1 -0
  149. package/client/dist/assets/setup-DgvlxwpE.js +1 -0
  150. package/client/dist/assets/setup-Dw_wYeEY.js +1 -0
  151. package/client/dist/assets/setup-ZPtEeJPW.js +1 -0
  152. package/client/dist/assets/spending-BqbdPm_4.js +1 -0
  153. package/client/dist/assets/square-Ci-PFcFe.js +1 -0
  154. package/client/dist/assets/{terminal-BFRZnMPP.js → terminal-BAzpHtpY.js} +1 -1
  155. package/client/dist/assets/{terminal-IahE4LW9.js → terminal-C7dHeR3x.js} +1 -1
  156. package/client/dist/assets/{terminal-tITa81iz.js → terminal-CMla5Qsz.js} +1 -1
  157. package/client/dist/assets/{terminal-BZiIu3rf.js → terminal-CdNXH-n9.js} +1 -1
  158. package/client/dist/assets/{terminal-ScjyXNxQ.js → terminal-Cw5bZsmV.js} +1 -1
  159. package/client/dist/assets/{terminal-C2NAd7BW.js → terminal-DFUP4eNv.js} +1 -1
  160. package/client/dist/assets/{terminal-d7GadXbN.js → terminal-DGqljeK_.js} +1 -1
  161. package/client/dist/assets/{terminal-QpXZU2Bn.js → terminal-cU70NodO.js} +1 -1
  162. package/client/dist/assets/useDesktop-RSMTyy7V.js +1 -0
  163. package/client/dist/assets/useSharedWebSocket-BOdS5_Iz.js +2 -0
  164. package/client/dist/index.html +34 -35
  165. package/docs/README.md +3 -0
  166. package/docs/agent-live-steering.md +57 -0
  167. package/docs/ci-cd.md +57 -0
  168. package/docs/code-explorer.md +48 -0
  169. package/docs/codex.md +12 -1
  170. package/docs/features/detachable-mission-windows.md +59 -0
  171. package/docs/guide/de/integrations/5-mcp-server.md +13 -9
  172. package/docs/guide/de/integrations/6-agent-chat.md +1 -0
  173. package/docs/guide/en/integrations/5-mcp-server.md +13 -9
  174. package/docs/guide/en/integrations/6-agent-chat.md +1 -0
  175. package/docs/guide/es/integrations/5-mcp-server.md +13 -9
  176. package/docs/guide/es/integrations/6-agent-chat.md +1 -0
  177. package/docs/guide/fr/integrations/5-mcp-server.md +13 -9
  178. package/docs/guide/fr/integrations/6-agent-chat.md +1 -0
  179. package/docs/guide/it/integrations/5-mcp-server.md +13 -9
  180. package/docs/guide/it/integrations/6-agent-chat.md +1 -0
  181. package/docs/guide/ja/integrations/5-mcp-server.md +13 -9
  182. package/docs/guide/ja/integrations/6-agent-chat.md +1 -0
  183. package/docs/guide/pt/integrations/5-mcp-server.md +13 -9
  184. package/docs/guide/pt/integrations/6-agent-chat.md +1 -0
  185. package/docs/guide/zh/integrations/5-mcp-server.md +13 -9
  186. package/docs/guide/zh/integrations/6-agent-chat.md +1 -0
  187. package/docs/internals/README.md +1 -0
  188. package/docs/internals/browser-capture-performance.md +55 -3
  189. package/docs/internals/browser-login-popups.md +45 -0
  190. package/docs/internals/browser-native-retina-audit.md +39 -0
  191. package/docs/internals/ci-cd-audit.md +39 -0
  192. package/docs/internals/core-runtime-updates.md +68 -0
  193. package/docs/internals/embedded-browser-native-webview-evaluation.md +2 -0
  194. package/docs/internals/implementation-reliability-audit.md +93 -0
  195. package/docs/internals/interactive-jobs.md +110 -6
  196. package/docs/internals/mcp-mission-audit.md +76 -0
  197. package/docs/internals/project-builder.md +404 -42
  198. package/docs/internals/safe-pr-review-flow.md +52 -10
  199. package/docs/internals/startup-recovery-audit.md +58 -0
  200. package/docs/mcp.md +74 -41
  201. package/docs/mission-processes.md +59 -0
  202. package/docs/multi-repo-projects.md +51 -0
  203. package/docs/platforms/windows-parity.md +70 -0
  204. package/docs/platforms/windows.md +13 -11
  205. package/docs/running-pipelines.md +14 -0
  206. package/mcp-bridge/dist/specrails-mcp.js +7186 -0
  207. package/package.json +9 -4
  208. package/server/dist/agent-chat-manager.js +537 -68
  209. package/server/dist/agent-chat-router.js +87 -6
  210. package/server/dist/agent-context-resolver.js +129 -25
  211. package/server/dist/agent-defaults.js +19 -11
  212. package/server/dist/agent-input-store.js +206 -0
  213. package/server/dist/agent-mcp-config.js +54 -15
  214. package/server/dist/agent-operator-prompt.js +255 -65
  215. package/server/dist/agent-spec-framing.js +202 -0
  216. package/server/dist/agent-steering.js +218 -0
  217. package/server/dist/agent-store.js +153 -0
  218. package/server/dist/api-not-found.js +8 -0
  219. package/server/dist/background-process-control.js +164 -0
  220. package/server/dist/background-process-service.js +61 -0
  221. package/server/dist/background-process-store.js +242 -0
  222. package/server/dist/background-windows-bootstrap.js +238 -0
  223. package/server/dist/blueprint-chat-manager.js +476 -62
  224. package/server/dist/blueprint-commit.js +21 -1
  225. package/server/dist/blueprint-draft-parser.js +122 -17
  226. package/server/dist/blueprint-generation.js +238 -0
  227. package/server/dist/blueprint-operator-prompt.js +91 -63
  228. package/server/dist/blueprint-router.js +55 -3
  229. package/server/dist/blueprint-spec-fixtures.js +85 -0
  230. package/server/dist/blueprint-spec-quality.js +57 -16
  231. package/server/dist/blueprint-store.js +92 -1
  232. package/server/dist/browser-capture-manager.js +86 -30
  233. package/server/dist/browser-playwright.js +168 -45
  234. package/server/dist/browser-viewport.js +26 -0
  235. package/server/dist/chat-manager.js +23 -15
  236. package/server/dist/chromium-archive.cjs +83 -0
  237. package/server/dist/chromium-resolver.js +72 -64
  238. package/server/dist/code-activity.js +145 -0
  239. package/server/dist/code-explorer-router.js +714 -114
  240. package/server/dist/core-compat.js +28 -1
  241. package/server/dist/core-execution.js +111 -0
  242. package/server/dist/core-package.js +4 -16
  243. package/server/dist/core-runtime.js +202 -0
  244. package/server/dist/core-update-manager.js +161 -60
  245. package/server/dist/core-update-state.js +29 -0
  246. package/server/dist/db.js +66 -35
  247. package/server/dist/delivery-evidence.js +142 -39
  248. package/server/dist/desktop-db.js +239 -43
  249. package/server/dist/desktop-router.js +109 -9
  250. package/server/dist/dev-ports.js +8 -3
  251. package/server/dist/file-provenance.js +34 -22
  252. package/server/dist/file-story-manager.js +62 -64
  253. package/server/dist/file-story.js +118 -35
  254. package/server/dist/file-summary-generator.js +46 -5
  255. package/server/dist/file-summary-manager.js +355 -106
  256. package/server/dist/framework-manager.js +98 -110
  257. package/server/dist/framework-reseed.js +76 -10
  258. package/server/dist/git-diagnostics.js +2 -2
  259. package/server/dist/headroom-manager.js +38 -3
  260. package/server/dist/host-control.js +52 -0
  261. package/server/dist/index.js +43 -2
  262. package/server/dist/interactive-job-session.js +149 -16
  263. package/server/dist/internal-api.js +48 -0
  264. package/server/dist/jira/jira-materializer.js +1 -0
  265. package/server/dist/json-tolerant.js +174 -0
  266. package/server/dist/legacy-migration.js +4 -2
  267. package/server/dist/loop-command-catalog.js +83 -21
  268. package/server/dist/loop-constants.js +6 -1
  269. package/server/dist/loop-decider.js +11 -1
  270. package/server/dist/loop-executors.js +194 -45
  271. package/server/dist/loop-factory.js +11 -4
  272. package/server/dist/loop-graph.js +90 -4
  273. package/server/dist/loop-run-manager.js +301 -69
  274. package/server/dist/loop-shell-invocation.js +21 -0
  275. package/server/dist/loop-step-idle.js +55 -0
  276. package/server/dist/loop-templates.js +31 -7
  277. package/server/dist/mcp/agent-capability.js +37 -4
  278. package/server/dist/mcp/guide.js +149 -36
  279. package/server/dist/mcp/mcp-admin-router.js +20 -4
  280. package/server/dist/mcp/mcp-server.js +89 -43
  281. package/server/dist/mcp/mcp-tiers.js +6 -5
  282. package/server/dist/mcp/mcp-token.js +3 -1
  283. package/server/dist/mcp/resources.js +5 -4
  284. package/server/dist/mcp/tools/catalog.js +4 -0
  285. package/server/dist/mcp/tools/code.js +125 -14
  286. package/server/dist/mcp/tools/context.js +153 -0
  287. package/server/dist/mcp/tools/git.js +15 -5
  288. package/server/dist/mcp/tools/jobs.js +84 -71
  289. package/server/dist/mcp/tools/loops.js +17 -6
  290. package/server/dist/mcp/tools/meta.js +74 -27
  291. package/server/dist/mcp/tools/mission.js +29 -0
  292. package/server/dist/mcp/tools/projects.js +22 -6
  293. package/server/dist/mcp/tools/rails.js +48 -11
  294. package/server/dist/mcp/tools/specs.js +86 -14
  295. package/server/dist/mcp/tools/support.js +1 -1
  296. package/server/dist/mcp/tools/types.js +117 -43
  297. package/server/dist/mcp/tools/watch.js +144 -51
  298. package/server/dist/milestone-chain-store.js +164 -0
  299. package/server/dist/milestone-chain.js +487 -0
  300. package/server/dist/milestone-progress.js +348 -0
  301. package/server/dist/mobile/mobile-devices.js +10 -7
  302. package/server/dist/mobile/mobile-gateway.js +2 -0
  303. package/server/dist/mobile/mobile-missions.js +214 -0
  304. package/server/dist/mobile/mobile-redact.js +17 -3
  305. package/server/dist/mobile/mobile-router.js +46 -4
  306. package/server/dist/mobile/mobile-ws.js +49 -4
  307. package/server/dist/multi-repo-bases.js +56 -0
  308. package/server/dist/multi-repo-checkout.js +101 -0
  309. package/server/dist/multi-repo-delivery.js +100 -0
  310. package/server/dist/multi-repo-execution-store.js +65 -0
  311. package/server/dist/multi-repo-execution.js +453 -0
  312. package/server/dist/offline-assemble.js +10 -8
  313. package/server/dist/openspec-runtime-plugin-commands.json +18 -0
  314. package/server/dist/openspec-runtime-plugin.js +120 -0
  315. package/server/dist/plugins/codex-spawn.js +49 -0
  316. package/server/dist/plugins/serena/manifest.js +2 -2
  317. package/server/dist/plugins/serena/templates/instructions.md +16 -0
  318. package/server/dist/pr-publisher.js +1 -1
  319. package/server/dist/profiles-router.js +3 -18
  320. package/server/dist/project-code-discovery.js +142 -0
  321. package/server/dist/project-git.js +19 -21
  322. package/server/dist/project-registry.js +272 -20
  323. package/server/dist/project-repositories.js +157 -0
  324. package/server/dist/project-repository-provenance.js +31 -0
  325. package/server/dist/project-router-background-processes.js +105 -0
  326. package/server/dist/project-router-git.js +75 -16
  327. package/server/dist/project-router-jobs.js +2 -126
  328. package/server/dist/project-router-loop-runs.js +72 -2
  329. package/server/dist/project-router-tickets.js +53 -8
  330. package/server/dist/project-router.js +239 -38
  331. package/server/dist/provider-detection.js +18 -6
  332. package/server/dist/provider-limit.js +64 -0
  333. package/server/dist/providers/claude-adapter.js +26 -1
  334. package/server/dist/providers/claude-background-tasks.js +18 -0
  335. package/server/dist/providers/claude-live-session.js +383 -0
  336. package/server/dist/providers/codex-adapter.js +19 -0
  337. package/server/dist/providers/codex-live-session.js +545 -0
  338. package/server/dist/providers/gemini-adapter.js +1 -0
  339. package/server/dist/providers/live-session-types.js +12 -0
  340. package/server/dist/providers/live-session.js +13 -0
  341. package/server/dist/providers/terminal-result.js +24 -0
  342. package/server/dist/queue-manager.js +2 -0
  343. package/server/dist/rail-isolated-launch.js +141 -16
  344. package/server/dist/rail-pr-decision.js +364 -99
  345. package/server/dist/rail-pr-store.js +24 -10
  346. package/server/dist/rail-worktree-release.js +34 -2
  347. package/server/dist/rail-worktrees-store.js +4 -4
  348. package/server/dist/rails-router.js +249 -55
  349. package/server/dist/repo-lock.js +92 -17
  350. package/server/dist/review-packet.js +23 -13
  351. package/server/dist/schemas/file-summary.v1.json +59 -59
  352. package/server/dist/schemas/profile.v1.json +137 -137
  353. package/server/dist/setup-manager.js +52 -8
  354. package/server/dist/shell-integration/bash-shim.bash +45 -0
  355. package/server/dist/shell-integration/fish-shim.fish +36 -0
  356. package/server/dist/shell-integration/powershell-shim.ps1 +48 -0
  357. package/server/dist/shell-integration/zsh-shim.zsh +47 -0
  358. package/server/dist/smash-runner.js +1 -0
  359. package/server/dist/spawn-lifecycle.js +44 -27
  360. package/server/dist/spec-contract-prompt.js +143 -0
  361. package/server/dist/spec-draft-parser.js +6 -1
  362. package/server/dist/spec-models.js +1 -0
  363. package/server/dist/stuck-run-detector.js +1 -0
  364. package/server/dist/terminal-manager.js +21 -1
  365. package/server/dist/terminal-shell-integration.js +4 -1
  366. package/server/dist/transient-children.js +619 -230
  367. package/server/dist/util/cli-prompt.js +78 -5
  368. package/server/dist/util/sqlite-migrations.js +20 -0
  369. package/server/dist/util/win-spawn.js +18 -3
  370. package/server/dist/util/windows-provider-shell.js +29 -0
  371. package/server/dist/verification-sentinel.js +14 -0
  372. package/server/dist/vitest-setup.js +2 -0
  373. package/server/dist/windows-job-supervisor.js +133 -0
  374. package/server/dist/workspace-manager.js +9 -30
  375. package/server/dist/worktree-manager.js +17 -2
  376. package/server/dist/worktree-overlay.js +3 -1
  377. package/client/dist/assets/ActivityFeedPage-tAQcWs1R.js +0 -1
  378. package/client/dist/assets/AgentBrowserCapture-BX8BNae5.js +0 -1
  379. package/client/dist/assets/AgentModeAnalyticsPane-BVAqCL0K.js +0 -2
  380. package/client/dist/assets/AgentModeCodePane-9XfqQc9c.js +0 -2
  381. package/client/dist/assets/AgentModeJobsPane-BCjLsPhc.js +0 -1
  382. package/client/dist/assets/AgentsPage-C8J_42sm.js +0 -87
  383. package/client/dist/assets/AnalyticsPage-BtQuyfJm.js +0 -1
  384. package/client/dist/assets/CodePage-BZ2MwdCu.js +0 -2
  385. package/client/dist/assets/DesktopAnalyticsPage-Bh_29V4g.js +0 -1
  386. package/client/dist/assets/ExportDropdown-BrtfWzEG.js +0 -1
  387. package/client/dist/assets/InteractiveJobComposer-BCZiSfzc.js +0 -19
  388. package/client/dist/assets/JobDetailModal-NAJmuYIT.js +0 -1
  389. package/client/dist/assets/JobDetailPage-fE0ZycUX.js +0 -1
  390. package/client/dist/assets/JobsPage-z5M_HVJG.js +0 -1
  391. package/client/dist/assets/LoopBuilderPage-j1FQS47c.js +0 -7
  392. package/client/dist/assets/LoopPreviewModal-DhDJjdCe.js +0 -1
  393. package/client/dist/assets/LoopsPage-Ll7zORZb.js +0 -1
  394. package/client/dist/assets/MinimizedChatsContext-Bd3OqR_S.js +0 -1
  395. package/client/dist/assets/PluginsPage-DN4kGvJt.js +0 -2
  396. package/client/dist/assets/ProjectSettingsDialog-OgsgxjzF.js +0 -1
  397. package/client/dist/assets/ReviewPacketPage-DFog4sXn.js +0 -1
  398. package/client/dist/assets/TemplatePreviewModal-L2XxqiOD.js +0 -1
  399. package/client/dist/assets/TicketDetailModal-CsF-AWZX.js +0 -14
  400. package/client/dist/assets/Trans-Bsz9_gyq.js +0 -1
  401. package/client/dist/assets/agent-BQgKv_2F.js +0 -1
  402. package/client/dist/assets/agent-C1NRDJqL.js +0 -1
  403. package/client/dist/assets/agent-CLNleiy6.js +0 -1
  404. package/client/dist/assets/agent-CmceArkQ.js +0 -1
  405. package/client/dist/assets/agent-D3UxQ3SR.js +0 -1
  406. package/client/dist/assets/agent-DB1JeE64.js +0 -1
  407. package/client/dist/assets/agent-DXkHcQ-D.js +0 -1
  408. package/client/dist/assets/agent-DjJJJ2M8.js +0 -1
  409. package/client/dist/assets/auth-D_5bQv5W.js +0 -1
  410. package/client/dist/assets/ban-E4EaZe3a.js +0 -1
  411. package/client/dist/assets/bot-DzuuuC5R.js +0 -1
  412. package/client/dist/assets/browser-BgqHDMXP.js +0 -1
  413. package/client/dist/assets/browser-CsKJtrpv.js +0 -1
  414. package/client/dist/assets/browser-Cu58EpZU.js +0 -1
  415. package/client/dist/assets/browser-CvXOJm-j.js +0 -1
  416. package/client/dist/assets/browser-DOrFh1c7.js +0 -1
  417. package/client/dist/assets/browser-DQv_Jo7x.js +0 -1
  418. package/client/dist/assets/browser-LPgxvJu2.js +0 -1
  419. package/client/dist/assets/browser-eL-3MIEI.js +0 -1
  420. package/client/dist/assets/builder-0IWtosUm.js +0 -1
  421. package/client/dist/assets/builder-Bf2N6XWn.js +0 -1
  422. package/client/dist/assets/builder-BnqaaBkT.js +0 -1
  423. package/client/dist/assets/builder-BxxfGgAO.js +0 -1
  424. package/client/dist/assets/builder-C5IIgWsq.js +0 -1
  425. package/client/dist/assets/builder-CHuahItu.js +0 -1
  426. package/client/dist/assets/builder-CjWosXL_.js +0 -1
  427. package/client/dist/assets/builder-CpCIOoKj.js +0 -1
  428. package/client/dist/assets/code-CHPkOkDS.js +0 -1
  429. package/client/dist/assets/commands-6tYQih5m.js +0 -1
  430. package/client/dist/assets/commands-BK2QinXN.js +0 -1
  431. package/client/dist/assets/commands-C2Nca76h.js +0 -1
  432. package/client/dist/assets/commands-CKdLihNX.js +0 -1
  433. package/client/dist/assets/commands-CYIBTAlc.js +0 -1
  434. package/client/dist/assets/commands-CjUtYJIM.js +0 -1
  435. package/client/dist/assets/commands-Cq_u_8y9.js +0 -1
  436. package/client/dist/assets/commands-D_ZHYQug.js +0 -1
  437. package/client/dist/assets/common-6MLbD-jM.js +0 -1
  438. package/client/dist/assets/common-BKGEu4rm.js +0 -1
  439. package/client/dist/assets/common-BNbnv8cE.js +0 -1
  440. package/client/dist/assets/common-BqGWtDbt.js +0 -1
  441. package/client/dist/assets/common-DBtTzeYm.js +0 -1
  442. package/client/dist/assets/common-DEW3Nr8n.js +0 -1
  443. package/client/dist/assets/common-DHsv9N5d.js +0 -1
  444. package/client/dist/assets/common-mkrEcW-Y.js +0 -1
  445. package/client/dist/assets/dashboard-B9GhC5ku.js +0 -1
  446. package/client/dist/assets/dashboard-CBnv6zOI.js +0 -1
  447. package/client/dist/assets/dashboard-CaP0fU87.js +0 -1
  448. package/client/dist/assets/dashboard-D4ZZ4x84.js +0 -1
  449. package/client/dist/assets/dashboard-DmuTQBX8.js +0 -1
  450. package/client/dist/assets/dashboard-DynLYj3d.js +0 -1
  451. package/client/dist/assets/dashboard-zj4gGFJ1.js +0 -1
  452. package/client/dist/assets/dialog-CdWCb02j.js +0 -45
  453. package/client/dist/assets/dist-bVqfYmby.js +0 -1
  454. package/client/dist/assets/dist-js-CWeUdf5Z.js +0 -1
  455. package/client/dist/assets/formatDistanceToNow-DQCvMgUc.js +0 -1
  456. package/client/dist/assets/getTimezoneOffsetInMilliseconds-C16cxSe1.js +0 -1
  457. package/client/dist/assets/git-refresh-wTW0rO0Z.js +0 -1
  458. package/client/dist/assets/i18n-hnX2DPmo.js +0 -2
  459. package/client/dist/assets/index-DIhMEAVw.js +0 -66
  460. package/client/dist/assets/index-DwygcU7s.css +0 -2
  461. package/client/dist/assets/mcp-B8X8wBLu.js +0 -1
  462. package/client/dist/assets/mcp-C2AojZZN.js +0 -1
  463. package/client/dist/assets/mcp-D8BT78_L.js +0 -1
  464. package/client/dist/assets/mcp-Df5RWBNk.js +0 -1
  465. package/client/dist/assets/mcp-Dj7BgMQW.js +0 -1
  466. package/client/dist/assets/mcp-Q7iT7rcz.js +0 -1
  467. package/client/dist/assets/mcp-YlvNvJbW.js +0 -1
  468. package/client/dist/assets/mcp-mKFpTSRb.js +0 -1
  469. package/client/dist/assets/narration-4Z2VUhZw.js +0 -1
  470. package/client/dist/assets/narration-BGuiEDj3.js +0 -1
  471. package/client/dist/assets/narration-BuSoqRmv.js +0 -1
  472. package/client/dist/assets/narration-CB9t29fy.js +0 -1
  473. package/client/dist/assets/narration-CU3x8FHD.js +0 -1
  474. package/client/dist/assets/narration-CWeXhfP5.js +0 -1
  475. package/client/dist/assets/narration-DRaDnhT5.js +0 -1
  476. package/client/dist/assets/narration-DtEbQgCw.js +0 -1
  477. package/client/dist/assets/nav-ApJVg3xu.js +0 -1
  478. package/client/dist/assets/nav-BKNky1Bg.js +0 -1
  479. package/client/dist/assets/nav-C6vWWKYx.js +0 -1
  480. package/client/dist/assets/nav-CXJ6Aw89.js +0 -1
  481. package/client/dist/assets/nav-CsmFBIDf.js +0 -1
  482. package/client/dist/assets/nav-DjkmQJjd.js +0 -1
  483. package/client/dist/assets/packet-B1IxaL5f.js +0 -1
  484. package/client/dist/assets/packet-Bh5kkbiB.js +0 -1
  485. package/client/dist/assets/packet-By8fqYxW.js +0 -1
  486. package/client/dist/assets/packet-CZdvA44E.js +0 -1
  487. package/client/dist/assets/packet-CrjHRQCP.js +0 -1
  488. package/client/dist/assets/packet-Dwi2pTtx.js +0 -1
  489. package/client/dist/assets/packet-_-ZIa0IR.js +0 -1
  490. package/client/dist/assets/packet-n0W6E1Hn.js +0 -1
  491. package/client/dist/assets/play-DNlrawbS.js +0 -1
  492. package/client/dist/assets/provider-capabilities-Doej9lfa.js +0 -1
  493. package/client/dist/assets/settings-Bd0x4TBa.js +0 -1
  494. package/client/dist/assets/settings-C1-7cXzC.js +0 -1
  495. package/client/dist/assets/settings-CAFaT38b.js +0 -1
  496. package/client/dist/assets/settings-Ct3v1nW2.js +0 -1
  497. package/client/dist/assets/settings-DHh7_IF5.js +0 -1
  498. package/client/dist/assets/settings-DQXAmdcv.js +0 -1
  499. package/client/dist/assets/settings-guzlhpup.js +0 -1
  500. package/client/dist/assets/settings-sZfTPMEH.js +0 -1
  501. package/client/dist/assets/setup-3jWaoVUO.js +0 -1
  502. package/client/dist/assets/setup-BjgRneb2.js +0 -1
  503. package/client/dist/assets/setup-BzFIjv-f.js +0 -1
  504. package/client/dist/assets/setup-C4VfQsxE.js +0 -1
  505. package/client/dist/assets/setup-DfUkpDbN.js +0 -1
  506. package/client/dist/assets/setup-ECe90Pmu.js +0 -1
  507. package/client/dist/assets/setup-dlqC4Jmm.js +0 -1
  508. package/client/dist/assets/setup-jwfLMiM2.js +0 -1
  509. package/client/dist/assets/spending-EC9xqio-.js +0 -1
  510. package/client/dist/assets/useDesktop-BQVt8lFd.js +0 -1
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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 +1 @@
1
- import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./jsx-runtime-zu2_FqZY.js";import{O as r}from"./dialog-CdWCb02j.js";import{t as i}from"./clsx-CjueKrWZ.js";import{t as a}from"./utils-BC4DHlz2.js";var o=e(t(),1),s=n(),c=Symbol.for(`react.lazy`),l=o.use;function u(e){return typeof e==`object`&&!!e&&`then`in e}function d(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===c&&`_payload`in e&&u(e._payload)}function f(e){let t=m(e),n=o.forwardRef((e,n)=>{let{children:r,...i}=e;d(r)&&typeof l==`function`&&(r=l(r._payload));let a=o.Children.toArray(r),c=a.find(g);if(c){let e=c.props.children,r=a.map(t=>t===c?o.Children.count(e)>1?o.Children.only(null):o.isValidElement(e)?e.props.children:null:t);return(0,s.jsx)(t,{...i,ref:n,children:o.isValidElement(e)?o.cloneElement(e,void 0,r):null})}return(0,s.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var p=f(`Slot`);function m(e){let t=o.forwardRef((e,t)=>{let{children:n,...i}=e;if(d(n)&&typeof l==`function`&&(n=l(n._payload)),o.isValidElement(n)){let e=v(n),a=_(i,n.props);return n.type!==o.Fragment&&(a.ref=t?r(t,e):e),o.cloneElement(n,a)}return o.Children.count(n)>1?o.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var h=Symbol(`radix.slottable`);function g(e){return o.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===h}function _(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function v(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var y=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,b=i,x=(e,t)=>n=>{if(t?.variants==null)return b(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=y(t)||y(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return b(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},S=x(`inline-flex items-center justify-center whitespace-nowrap rounded-md text-xs font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-8 px-3 py-1.5`,sm:`h-7 rounded-md px-2`,lg:`h-10 rounded-md px-6`,icon:`h-8 w-8`}},defaultVariants:{variant:`default`,size:`default`}}),C=o.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},o)=>(0,s.jsx)(r?p:`button`,{className:a(S({variant:t,size:n,className:e})),ref:o,...i}));C.displayName=`Button`;export{x as n,C as t};
1
+ import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./jsx-runtime-zu2_FqZY.js";import{k as r}from"./dialog-SRw01_QU.js";import{t as i}from"./clsx-CjueKrWZ.js";import{t as a}from"./utils-BC4DHlz2.js";var o=e(t(),1),s=n(),c=Symbol.for(`react.lazy`),l=o.use;function u(e){return typeof e==`object`&&!!e&&`then`in e}function d(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===c&&`_payload`in e&&u(e._payload)}function f(e){let t=m(e),n=o.forwardRef((e,n)=>{let{children:r,...i}=e;d(r)&&typeof l==`function`&&(r=l(r._payload));let a=o.Children.toArray(r),c=a.find(g);if(c){let e=c.props.children,r=a.map(t=>t===c?o.Children.count(e)>1?o.Children.only(null):o.isValidElement(e)?e.props.children:null:t);return(0,s.jsx)(t,{...i,ref:n,children:o.isValidElement(e)?o.cloneElement(e,void 0,r):null})}return(0,s.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var p=f(`Slot`);function m(e){let t=o.forwardRef((e,t)=>{let{children:n,...i}=e;if(d(n)&&typeof l==`function`&&(n=l(n._payload)),o.isValidElement(n)){let e=v(n),a=_(i,n.props);return n.type!==o.Fragment&&(a.ref=t?r(t,e):e),o.cloneElement(n,a)}return o.Children.count(n)>1?o.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var h=Symbol(`radix.slottable`);function g(e){return o.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===h}function _(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function v(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var y=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,b=i,x=(e,t)=>n=>{if(t?.variants==null)return b(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=y(t)||y(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return b(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},S=x(`inline-flex items-center justify-center whitespace-nowrap rounded-md text-xs font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-8 px-3 py-1.5`,sm:`h-7 rounded-md px-2`,lg:`h-10 rounded-md px-6`,icon:`h-8 w-8`}},defaultVariants:{variant:`default`,size:`default`}}),C=o.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},o)=>(0,s.jsx)(r?p:`button`,{className:a(S({variant:t,size:n,className:e})),ref:o,...i}));C.displayName=`Button`;export{x as n,C as t};
@@ -1 +1 @@
1
- var e={resizeFileTree:`Ridimensiona l'albero dei file`,selectFile:`Seleziona un file per l'anteprima.`},t={hint:`Trascina per ridimensionare. Doppio clic per ripristinare.`},n={scope:`Ambito`,allAi:`Tutta l'AI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copia percorso file`,generateSummary:`Genera riepilogo`,regenerateSummary:`Rigenera riepilogo`,generating:`Generazione…`,regenerating:`Rigenerazione…`,summaryUnavailable:`Riepilogo non disponibile: {{reason}}`,jobContext:`Contesto job`,clear:`Cancella`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} file toccato`,touchedFiles_other:`{{count}} file toccati`,log:`Log`},i={created:`creato`,modified:`modificato`,deleted:`eliminato`},a={added:`aggiunto`,changed:`modificato`,deleted:`eliminato`},o={loadingFile:`Caricamento file…`,showSummary:`Mostra riepilogo`,markdownViewMode:`Modalità di visualizzazione Markdown`,preview:`Anteprima`,raw:`Raw`,missingFile:`Questo file è stato toccato da un job AI ma non esiste più nel working tree.`,binaryFile:`File binario.`,tooLarge:`File troppo grande per l'anteprima ({{size}} MB).`,noContent:`Nessun contenuto disponibile.`,pathCopied:`Percorso copiato`,copyPathFailed:`Impossibile copiare il percorso`,budgetPrompt:`Ignorare il limite di budget?`,edit:`Modifica`,save:`Salva`,saving:`Salvataggio…`,saved:`File salvato`,saveFailed:`Salvataggio non riuscito`},s={generationFailed:`Generazione del riepilogo non riuscita`,skipped:`Riepilogo saltato: {{reason}}`,unavailable:`Riepilogo non disponibile: {{reason}}.`,empty:`Ancora nessun riepilogo per questo file.`,stale:`Obsoleto`,hide:`Nascondi`,reason:{missing:`file mancante`,binary:`file binario`,tooLarge:`file troppo grande`,providerNoPureOutput:`il provider IA selezionato non può imporre una modalità sicura di sola uscita`}},c={title_one:`Storia di costruzione · {{count}} capitolo`,title_other:`Storia di costruzione · {{count}} capitoli`,viewMode:`Modalità di visualizzazione della storia`,modeStory:`Storia`,modeLog:`Registro`,loading:`Caricamento della storia…`,loadFailed:`Impossibile caricare la storia.`,empty:`Nessun intervento dell'IA registrato per questo file finora.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Modifica dell'IA senza spec`,openSpec:`Apri la spec #{{ticketId}}`,kindLabel:{created:`Creato`,modified:`Modificato`,deleted:`Eliminato`},fallback:{created:`Questo file è stato creato durante l'implementazione di questa spec.`,modified:`Questo file è stato modificato durante l'implementazione di questa spec.`,deleted:`Questo file è stato eliminato durante l'implementazione di questa spec.`,createdNoSpec:`Questo file è stato creato da un job di IA.`,modifiedNoSpec:`Questo file è stato modificato da un job di IA.`,deletedNoSpec:`Questo file è stato eliminato da un job di IA.`},explain:`Spiega questa modifica`,explaining:`Spiegazione in corso…`,explainFailed:`Impossibile generare la spiegazione`,explainUnavailable:`La spiegazione IA non è disponibile perché il provider selezionato non può imporre una modalità sicura di sola uscita.`,budgetReached:`Budget IA mensile raggiunto.`,generateAnyway:`Genera comunque`,explainedBy:`Spiegato da {{model}}`,linesAdded:`Righe aggiunte`,linesRemoved:`Righe rimosse`},l={resize:`Ridimensiona cronologia interventi AI`,title_one:`Cronologia interventi AI · {{count}} modifica`,title_other:`Cronologia interventi AI · {{count}} modifiche`,show:`Mostra`,hide:`Nascondi`,unknownJob:`job sconosciuto`,filterByJob:`Filtra Codice per job {{jobId}}`,diff:`Diff`,openSpec:`Apri spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Caricamento diff...`,diffUnavailable:`Diff non disponibile per questo intervento storico. I nuovi job salveranno le patch automaticamente.`,diffTruncated:`[diff troncato]`},u={jobFiles:`File del job`,specFiles:`File della spec`,touchedByAi:`Toccati dall'AI`,allFiles:`Tutti i file`,collapseAll:`Comprimi tutte le cartelle`,expandAll:`Espandi tutte le cartelle`,touchedCount_one:`{{count}} file toccato dall'AI`,touchedCount_other:`{{count}} file toccati dall'AI`,loadingFiles:`Caricamento file…`,emptyTouched:`Ancora nessun file toccato dall'AI. Esegui un job o passa a Tutti i file.`,showAllFiles:`Mostra tutti i file`,noFiles:`Nessun file.`,folderTouched_one:`{{count}} file toccato dall'AI in questa cartella`,folderTouched_other:`{{count}} file toccati dall'AI in questa cartella`,jobTitle:`Job {{jobId}}`,createdBySpec:`Creato durante l'implementazione della spec #{{id}}`,modifiedBySpec:`Modificato durante l'implementazione della spec #{{id}}`,latestTitleCreated:`L'ultimo job AI ha aggiunto questo file`,latestTitleModified:`L'ultimo job AI ha modificato questo file`,latestTitleDeleted:`L'ultimo job AI ha eliminato questo file`},d={loadFailed:`Impossibile caricare il visualizzatore di codice.`,reload:`Ricarica`,loadingEditor:`Caricamento editor…`},f={title:`File toccati da questo ticket`,jobTitle:`Job {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
1
+ var e={resizeFileTree:`Ridimensiona l'albero dei file`,selectFile:`Seleziona un file per l'anteprima.`},t={hint:`Trascina per ridimensionare. Doppio clic per ripristinare.`},n={scope:`Ambito`,allAi:`Tutta l'AI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copia percorso file`,generateSummary:`Genera riepilogo`,regenerateSummary:`Rigenera riepilogo`,generating:`Generazione…`,regenerating:`Rigenerazione…`,summaryUnavailable:`Riepilogo non disponibile: {{reason}}`,jobContext:`Contesto job`,clear:`Cancella`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} file toccato`,touchedFiles_other:`{{count}} file toccati`,log:`Log`},i={created:`creato`,modified:`modificato`,deleted:`eliminato`},a={added:`aggiunto`,changed:`modificato`,deleted:`eliminato`},o={loadingFile:`Caricamento file…`,showSummary:`Mostra riepilogo`,markdownViewMode:`Modalità di visualizzazione Markdown`,preview:`Anteprima`,raw:`Raw`,missingFile:`Questo file è stato toccato da un job AI ma non esiste più nel working tree.`,binaryFile:`File binario.`,tooLarge:`File troppo grande per l'anteprima ({{size}} MB).`,noContent:`Nessun contenuto disponibile.`,pathCopied:`Percorso copiato`,copyPathFailed:`Impossibile copiare il percorso`,budgetPrompt:`Ignorare il limite di budget?`,edit:`Modifica`,save:`Salva`,saving:`Salvataggio…`,saved:`File salvato`,saveFailed:`Salvataggio non riuscito`},s={generationFailed:`Generazione del riepilogo non riuscita`,skipped:`Riepilogo saltato: {{reason}}`,unavailable:`Riepilogo non disponibile: {{reason}}.`,empty:`Ancora nessun riepilogo per questo file.`,stale:`Obsoleto`,hide:`Nascondi`,reason:{missing:`file mancante`,binary:`file binario`,tooLarge:`file troppo grande`,providerNoPureOutput:`il provider IA selezionato non può imporre una modalità sicura di sola uscita`}},c={title_one:`Storia di costruzione · {{count}} capitolo`,title_other:`Storia di costruzione · {{count}} capitoli`,viewMode:`Modalità di visualizzazione della storia`,modeStory:`Storia`,modeLog:`Registro`,loading:`Caricamento della storia…`,loadFailed:`Impossibile caricare la storia.`,empty:`Nessun intervento dell'IA registrato per questo file finora.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Modifica dell'IA senza spec`,openSpec:`Apri la spec #{{ticketId}}`,kindLabel:{created:`Creato`,modified:`Modificato`,deleted:`Eliminato`},fallback:{created:`Questo file è stato creato durante l'implementazione di questa spec.`,modified:`Questo file è stato modificato durante l'implementazione di questa spec.`,deleted:`Questo file è stato eliminato durante l'implementazione di questa spec.`,createdNoSpec:`Questo file è stato creato da un job di IA.`,modifiedNoSpec:`Questo file è stato modificato da un job di IA.`,deletedNoSpec:`Questo file è stato eliminato da un job di IA.`},explain:`Spiega questa modifica`,explaining:`Spiegazione in corso…`,explainFailed:`Impossibile generare la spiegazione`,explainUnavailable:`La spiegazione IA non è disponibile perché il provider selezionato non può imporre una modalità sicura di sola uscita.`,budgetReached:`Budget IA mensile raggiunto.`,generateAnyway:`Genera comunque`,explainedBy:`Spiegato da {{model}}`,linesAdded:`Righe aggiunte`,linesRemoved:`Righe rimosse`},l={resize:`Ridimensiona cronologia interventi AI`,title_one:`Cronologia interventi AI · {{count}} modifica`,title_other:`Cronologia interventi AI · {{count}} modifiche`,show:`Mostra`,hide:`Nascondi`,unknownJob:`job sconosciuto`,filterByJob:`Filtra Codice per job {{jobId}}`,diff:`Diff`,openSpec:`Apri spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Caricamento diff...`,diffUnavailable:`Diff non disponibile per questo intervento storico. I nuovi job salveranno le patch automaticamente.`,diffTruncated:`[diff troncato]`},u={jobFiles:`File del job`,specFiles:`File della spec`,touchedByAi:`Toccati dall'AI`,allFiles:`Tutti i file`,collapseAll:`Comprimi tutte le cartelle`,expandAll:`Espandi tutte le cartelle`,touchedCount_one:`{{count}} file toccato dall'AI`,touchedCount_other:`{{count}} file toccati dall'AI`,loadingFiles:`Caricamento file…`,emptyTouched:`Ancora nessun file toccato dall'AI. Esegui un job o passa a Tutti i file.`,showAllFiles:`Mostra tutti i file`,noFiles:`Nessun file.`,folderTouched_one:`{{count}} file toccato dall'AI in questa cartella`,folderTouched_other:`{{count}} file toccati dall'AI in questa cartella`,jobTitle:`Job {{jobId}}`,createdBySpec:`Creato durante l'implementazione della spec #{{id}}`,modifiedBySpec:`Modificato durante l'implementazione della spec #{{id}}`,latestTitleCreated:`L'ultimo job AI ha aggiunto questo file`,latestTitleModified:`L'ultimo job AI ha modificato questo file`,latestTitleDeleted:`L'ultimo job AI ha eliminato questo file`,loadFailed:`Impossibile caricare l’albero. I file visibili provengono dall’ultimo caricamento riuscito.`,partial:`Albero parziale. Usa Cerca per restringere cartella o nome, oppure aggiorna.`},d={loadFailed:`Impossibile caricare il visualizzatore di codice.`,reload:`Ricarica`,loadingEditor:`Caricamento editor…`},f={title:`File toccati da questo ticket`,jobTitle:`Job {{jobId}}`,loading:`Caricamento file registrati…`,loadFailed:`Impossibile caricare i file registrati.`,retry:`Riprova`,loadMore:`Carica altri file`,partial:`Impossibile verificare alcuni file registrati. Riprova per aggiornare.`},p={files:`File`,search:`Cerca`,activity:`Attività`,back:`Indietro`,forward:`Avanti`,hideNavigation:`Nascondi navigazione`,showNavigation:`Mostra navigazione`,navigation:`Navigazione del codice`,views:`Viste di esplorazione`,breadcrumb:`Posizione del file`,refresh:`Aggiorna`,retry:`Riprova`,welcome:`Comprendi il tuo codice`,description:`Esplora i repository, trova il codice che ti serve e segui le modifiche di Specrails.`,findCode:`Trova codice`,viewActivity:`Esplora modifiche`,sourceHint:`File mostra il contenuto attuale del repository registrato. Attività conserva le modifiche delle esecuzioni, anche non ancora integrate.`},m={find:`Nomi dei file`,search:`Contenuto`,query:`Testo da cercare`,filePlaceholder:`Nome o percorso…`,contentPlaceholder:`Testo esatto nel codice…`,scope:`Ambito di ricerca`,allRepositories:`Tutti i repository`,currentRepository:`Repository attuale`,withinPath:`Cerca in un percorso`,pathPlaceholder:`Cartella o file (facoltativo)`,caseSensitive:`Distingui maiuscole e minuscole`,hint:`Trova un file per nome o cerca testo esatto nel codice. I risultati aprono il repository e la riga corretti.`,loading:`Ricerca…`,failed:`Impossibile completare la ricerca. Verifica la connessione e riprova.`,results:`Risultati: {{count}}`,partial:`Risultati parziali. Restringi testo, cartella o repository per continuare.`,repositoryIncomplete:`La ricerca in {{name}} è incompleta.`,noMatches:`Nessuna corrispondenza nei file esaminati.`,noMatchesPartial:`Nessuna corrispondenza nella parte esaminata. Alcuni file o repository non sono stati cercati.`},h={description:`Modifiche registrate da Specrails, raggruppate per repository ed esecuzione.`,scope:`Ambito dell’attività`,failed:`Impossibile caricare l’attività registrata.`,partial:`Questa cronologia è incompleta. Aggiorna o scegli un repository per vedere altre voci.`,empty:`Nessuna modifica registrata in questo ambito. Le esecuzioni concluse appariranno qui.`,patch:`Patch disponibile`,partialPatch:`Patch parziale`,noPatch:`Nessun patch salvato`,loading:`Caricamento attività…`,loadMore:`Carica altre modifiche`},g={currentFile:`File attuale`,recordedChange:`Modifica registrata`,recordedNotice:`Questo patch documenta un’esecuzione precedente. Può differire dal contenuto attuale del repository.`,diffFailed:`Impossibile caricare la modifica registrata.`,retry:`Riprova`,patchIncomplete:`Il patch salvato è incompleto. Il contenuto mancante non può essere ricostruito da questo record.`,displayLimited:`Anteprima limitata a {{count}} righe o {{chars}} caratteri. Il resto del patch non è mostrato.`,patch:`Patch registrato`,find:`Cerca nel file`,wrap:`A capo automatico`,line:`Numero di riga`,go:`Vai`,loading:`Caricamento del lettore di codice…`,sourceUnavailable:`codice non disponibile`,refresh:`Aggiorna codice`,sourceFailed:`Impossibile aggiornare il file attuale. Il codice visualizzato proviene dall’ultima lettura riuscita.`,summaryPartial:`Generato da una copia parziale del codice. Il riepilogo potrebbe non coprire l’intero file.`,regenerateExplanation:`Aggiorna spiegazione`,noEvidence:`Non è stato salvato un patch come prova di questa modifica.`,excerptEvidence:`Questa spiegazione si basa su un patch incompleto.`,viewPatch:`Vedi modifica registrata`},_={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f,explore:p,search:m,activity:h,reader:g};export{a as action,h as activity,_ as default,p as explore,l as history,i as kind,d as monaco,e as page,r as provenancePanel,g as reader,t as resizer,m as search,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
@@ -1 +1 @@
1
- var e={resizeFileTree:`Redimensionar árbol de archivos`,selectFile:`Selecciona un archivo para previsualizarlo.`},t={hint:`Arrastra para redimensionar. Doble clic para restablecer.`},n={scope:`Ámbito`,allAi:`Toda la IA`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copiar ruta del archivo`,generateSummary:`Generar resumen`,regenerateSummary:`Regenerar resumen`,generating:`Generando…`,regenerating:`Regenerando…`,summaryUnavailable:`Resumen no disponible: {{reason}}`,jobContext:`Contexto del job`,clear:`Limpiar`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} archivo tocado`,touchedFiles_other:`{{count}} archivos tocados`,log:`Log`},i={created:`creado`,modified:`modificado`,deleted:`eliminado`},a={added:`añadido`,changed:`cambiado`,deleted:`eliminado`},o={loadingFile:`Cargando archivo…`,showSummary:`Mostrar resumen`,markdownViewMode:`Modo de vista de Markdown`,preview:`Vista previa`,raw:`Sin formato`,missingFile:`Este archivo fue tocado por un job de IA pero ya no existe en el árbol de trabajo.`,binaryFile:`Archivo binario.`,tooLarge:`Archivo demasiado grande para previsualizar ({{size}} MB).`,noContent:`No hay contenido disponible.`,pathCopied:`Ruta copiada`,copyPathFailed:`No se pudo copiar la ruta`,budgetPrompt:`¿Ignorar el límite de presupuesto?`,edit:`Editar`,save:`Guardar`,saving:`Guardando…`,saved:`Archivo guardado`,saveFailed:`Error al guardar`},s={generationFailed:`Error al generar el resumen`,skipped:`Resumen omitido: {{reason}}`,unavailable:`Resumen no disponible: {{reason}}.`,empty:`Aún no hay resumen para este archivo.`,stale:`Obsoleto`,hide:`Ocultar`,reason:{missing:`archivo no encontrado`,binary:`archivo binario`,tooLarge:`archivo demasiado grande`,providerNoPureOutput:`el proveedor de IA seleccionado no puede imponer un modo seguro de solo salida`}},c={title_one:`Historia de construcción · {{count}} capítulo`,title_other:`Historia de construcción · {{count}} capítulos`,viewMode:`Modo de vista de la historia`,modeStory:`Historia`,modeLog:`Registro`,loading:`Cargando la historia…`,loadFailed:`No se pudo cargar la historia.`,empty:`Aún no hay intervenciones de IA registradas para este archivo.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Cambio de IA sin spec`,openSpec:`Abrir spec #{{ticketId}}`,kindLabel:{created:`Creado`,modified:`Modificado`,deleted:`Eliminado`},fallback:{created:`Este archivo se creó al implementar esta spec.`,modified:`Este archivo se modificó al implementar esta spec.`,deleted:`Este archivo se eliminó al implementar esta spec.`,createdNoSpec:`Este archivo fue creado por un trabajo de IA.`,modifiedNoSpec:`Este archivo fue modificado por un trabajo de IA.`,deletedNoSpec:`Este archivo fue eliminado por un trabajo de IA.`},explain:`Explicar este cambio`,explaining:`Explicando…`,explainFailed:`No se pudo generar la explicación`,explainUnavailable:`La explicación con IA no está disponible porque el proveedor seleccionado no puede imponer un modo seguro de solo salida.`,budgetReached:`Presupuesto mensual de IA alcanzado.`,generateAnyway:`Generar de todos modos`,explainedBy:`Explicado por {{model}}`,linesAdded:`Líneas añadidas`,linesRemoved:`Líneas eliminadas`},l={resize:`Redimensionar historial de cambios de IA`,title_one:`Historial de cambios de IA · {{count}} cambio`,title_other:`Historial de cambios de IA · {{count}} cambios`,show:`Mostrar`,hide:`Ocultar`,unknownJob:`job desconocido`,filterByJob:`Filtrar Código por el job {{jobId}}`,diff:`Diff`,openSpec:`Abrir spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Cargando diff...`,diffUnavailable:`Diff no disponible para este cambio histórico. Los jobs nuevos guardarán los parches automáticamente.`,diffTruncated:`[diff truncado]`},u={jobFiles:`Archivos del job`,specFiles:`Archivos de la spec`,touchedByAi:`Tocado por IA`,allFiles:`Todos los archivos`,collapseAll:`Contraer todas las carpetas`,expandAll:`Expandir todas las carpetas`,touchedCount_one:`{{count}} archivo tocado por IA`,touchedCount_other:`{{count}} archivos tocados por IA`,loadingFiles:`Cargando archivos…`,emptyTouched:`Aún no hay archivos tocados por IA. Ejecuta un job o cambia a Todos los archivos.`,showAllFiles:`Mostrar todos los archivos`,noFiles:`No hay archivos.`,folderTouched_one:`{{count}} archivo tocado por IA dentro de esta carpeta`,folderTouched_other:`{{count}} archivos tocados por IA dentro de esta carpeta`,jobTitle:`Job {{jobId}}`,createdBySpec:`Creado al implementar la spec #{{id}}`,modifiedBySpec:`Modificado al implementar la spec #{{id}}`,latestTitleCreated:`El último job de IA añadió este archivo`,latestTitleModified:`El último job de IA modificó este archivo`,latestTitleDeleted:`El último job de IA eliminó este archivo`},d={loadFailed:`No se pudo cargar el visor de código.`,reload:`Recargar`,loadingEditor:`Cargando editor…`},f={title:`Archivos tocados por este ticket`,jobTitle:`Job {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
1
+ var e={resizeFileTree:`Redimensionar árbol de archivos`,selectFile:`Selecciona un archivo para previsualizarlo.`},t={hint:`Arrastra para redimensionar. Doble clic para restablecer.`},n={scope:`Ámbito`,allAi:`Toda la IA`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copiar ruta del archivo`,generateSummary:`Generar resumen`,regenerateSummary:`Regenerar resumen`,generating:`Generando…`,regenerating:`Regenerando…`,summaryUnavailable:`Resumen no disponible: {{reason}}`,jobContext:`Contexto del job`,clear:`Limpiar`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} archivo tocado`,touchedFiles_other:`{{count}} archivos tocados`,log:`Log`},i={created:`creado`,modified:`modificado`,deleted:`eliminado`},a={added:`añadido`,changed:`cambiado`,deleted:`eliminado`},o={loadingFile:`Cargando archivo…`,showSummary:`Mostrar resumen`,markdownViewMode:`Modo de vista de Markdown`,preview:`Vista previa`,raw:`Sin formato`,missingFile:`Este archivo fue tocado por un job de IA pero ya no existe en el árbol de trabajo.`,binaryFile:`Archivo binario.`,tooLarge:`Archivo demasiado grande para previsualizar ({{size}} MB).`,noContent:`No hay contenido disponible.`,pathCopied:`Ruta copiada`,copyPathFailed:`No se pudo copiar la ruta`,budgetPrompt:`¿Ignorar el límite de presupuesto?`,edit:`Editar`,save:`Guardar`,saving:`Guardando…`,saved:`Archivo guardado`,saveFailed:`Error al guardar`},s={generationFailed:`Error al generar el resumen`,skipped:`Resumen omitido: {{reason}}`,unavailable:`Resumen no disponible: {{reason}}.`,empty:`Aún no hay resumen para este archivo.`,stale:`Obsoleto`,hide:`Ocultar`,reason:{missing:`archivo no encontrado`,binary:`archivo binario`,tooLarge:`archivo demasiado grande`,providerNoPureOutput:`el proveedor de IA seleccionado no puede imponer un modo seguro de solo salida`}},c={title_one:`Historia de construcción · {{count}} capítulo`,title_other:`Historia de construcción · {{count}} capítulos`,viewMode:`Modo de vista de la historia`,modeStory:`Historia`,modeLog:`Registro`,loading:`Cargando la historia…`,loadFailed:`No se pudo cargar la historia.`,empty:`Aún no hay intervenciones de IA registradas para este archivo.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Cambio de IA sin spec`,openSpec:`Abrir spec #{{ticketId}}`,kindLabel:{created:`Creado`,modified:`Modificado`,deleted:`Eliminado`},fallback:{created:`Este archivo se creó al implementar esta spec.`,modified:`Este archivo se modificó al implementar esta spec.`,deleted:`Este archivo se eliminó al implementar esta spec.`,createdNoSpec:`Este archivo fue creado por un trabajo de IA.`,modifiedNoSpec:`Este archivo fue modificado por un trabajo de IA.`,deletedNoSpec:`Este archivo fue eliminado por un trabajo de IA.`},explain:`Explicar este cambio`,explaining:`Explicando…`,explainFailed:`No se pudo generar la explicación`,explainUnavailable:`La explicación con IA no está disponible porque el proveedor seleccionado no puede imponer un modo seguro de solo salida.`,budgetReached:`Presupuesto mensual de IA alcanzado.`,generateAnyway:`Generar de todos modos`,explainedBy:`Explicado por {{model}}`,linesAdded:`Líneas añadidas`,linesRemoved:`Líneas eliminadas`},l={resize:`Redimensionar historial de cambios de IA`,title_one:`Historial de cambios de IA · {{count}} cambio`,title_other:`Historial de cambios de IA · {{count}} cambios`,show:`Mostrar`,hide:`Ocultar`,unknownJob:`job desconocido`,filterByJob:`Filtrar Código por el job {{jobId}}`,diff:`Diff`,openSpec:`Abrir spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Cargando diff...`,diffUnavailable:`Diff no disponible para este cambio histórico. Los jobs nuevos guardarán los parches automáticamente.`,diffTruncated:`[diff truncado]`},u={jobFiles:`Archivos del job`,specFiles:`Archivos de la spec`,touchedByAi:`Tocado por IA`,allFiles:`Todos los archivos`,collapseAll:`Contraer todas las carpetas`,expandAll:`Expandir todas las carpetas`,touchedCount_one:`{{count}} archivo tocado por IA`,touchedCount_other:`{{count}} archivos tocados por IA`,loadingFiles:`Cargando archivos…`,emptyTouched:`Aún no hay archivos tocados por IA. Ejecuta un job o cambia a Todos los archivos.`,showAllFiles:`Mostrar todos los archivos`,noFiles:`No hay archivos.`,folderTouched_one:`{{count}} archivo tocado por IA dentro de esta carpeta`,folderTouched_other:`{{count}} archivos tocados por IA dentro de esta carpeta`,jobTitle:`Job {{jobId}}`,createdBySpec:`Creado al implementar la spec #{{id}}`,modifiedBySpec:`Modificado al implementar la spec #{{id}}`,latestTitleCreated:`El último job de IA añadió este archivo`,latestTitleModified:`El último job de IA modificó este archivo`,latestTitleDeleted:`El último job de IA eliminó este archivo`,loadFailed:`No se pudo cargar el árbol. Los archivos visibles pertenecen a la última carga correcta.`,partial:`Árbol parcial. Usa Buscar para acotar la carpeta o el nombre, o actualiza para volver a examinarlo.`},d={loadFailed:`No se pudo cargar el visor de código.`,reload:`Recargar`,loadingEditor:`Cargando editor…`},f={title:`Archivos tocados por este ticket`,jobTitle:`Job {{jobId}}`,loading:`Cargando archivos registrados…`,loadFailed:`No se pudieron cargar los archivos registrados.`,retry:`Reintentar`,loadMore:`Cargar más archivos`,partial:`No se pudieron comprobar algunos archivos registrados. Reintenta para actualizar.`},p={files:`Archivos`,search:`Buscar`,activity:`Actividad`,back:`Atrás`,forward:`Adelante`,hideNavigation:`Ocultar navegación`,showNavigation:`Mostrar navegación`,navigation:`Navegación de código`,views:`Vistas del explorador`,breadcrumb:`Ubicación del archivo`,refresh:`Actualizar`,retry:`Reintentar`,welcome:`Entiende tu código`,description:`Explora tus repositorios, encuentra el código que necesitas y sigue los cambios que ha hecho Specrails.`,findCode:`Encontrar código`,viewActivity:`Explorar cambios`,sourceHint:`Archivos muestra el contenido actual del repositorio registrado. Actividad conserva los cambios de las ejecuciones, incluido el trabajo todavía sin integrar.`},m={find:`Nombres de archivo`,search:`Contenido`,query:`Texto de búsqueda`,filePlaceholder:`Nombre o ruta…`,contentPlaceholder:`Texto literal en el código…`,scope:`Alcance de búsqueda`,allRepositories:`Todos los repositorios`,currentRepository:`Repositorio actual`,withinPath:`Buscar dentro de una ruta`,pathPlaceholder:`Carpeta o archivo (opcional)`,caseSensitive:`Distinguir mayúsculas`,hint:`Encuentra un archivo por su nombre o busca texto exacto en el código. Los resultados abren su repositorio y línea.`,loading:`Buscando…`,failed:`No se pudo completar la búsqueda. Comprueba la conexión y reintenta.`,results:`Resultados: {{count}}`,partial:`Resultados parciales. Acota el texto, la carpeta o el repositorio para seguir explorando.`,repositoryIncomplete:`No se pudo buscar por completo en {{name}}.`,noMatches:`No se encontraron coincidencias en los archivos examinados.`,noMatchesPartial:`Sin coincidencias en la parte examinada. Quedan archivos o repositorios sin buscar.`},h={description:`Cambios registrados por las ejecuciones de Specrails, agrupados por repositorio y ejecución.`,scope:`Alcance de actividad`,failed:`No se pudo cargar la actividad registrada.`,partial:`Este historial está incompleto. Actualiza o elige un repositorio para explorar más registros.`,empty:`Todavía no hay cambios registrados en este alcance. Aquí aparecerán las ejecuciones terminadas.`,patch:`Parche disponible`,partialPatch:`Parche parcial`,noPatch:`Sin parche guardado`,loading:`Cargando actividad…`,loadMore:`Cargar más cambios`},g={currentFile:`Archivo actual`,recordedChange:`Cambio registrado`,recordedNotice:`Este parche registra una ejecución anterior. Puede diferir del contenido actual del repositorio.`,diffFailed:`No se pudo cargar el cambio registrado.`,retry:`Reintentar`,patchIncomplete:`El parche guardado está incompleto. No se puede reconstruir el contenido que falta a partir de este registro.`,displayLimited:`Vista limitada a {{count}} líneas o {{chars}} caracteres. El resto del parche no se muestra.`,patch:`Parche registrado`,find:`Buscar en el archivo`,wrap:`Ajustar líneas`,line:`Número de línea`,go:`Ir`,loading:`Cargando visor de código…`,sourceUnavailable:`código no disponible`,refresh:`Actualizar código`,sourceFailed:`No se pudo actualizar el archivo actual. El código visible corresponde a la última lectura correcta.`,summaryPartial:`Generado a partir de una captura parcial del código. Este resumen puede no cubrir todo el archivo.`,regenerateExplanation:`Actualizar explicación`,noEvidence:`No se guardó un parche como evidencia de este cambio.`,excerptEvidence:`Esta explicación utiliza evidencia de un parche incompleto.`,viewPatch:`Ver cambio registrado`},_={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f,explore:p,search:m,activity:h,reader:g};export{a as action,h as activity,_ as default,p as explore,l as history,i as kind,d as monaco,e as page,r as provenancePanel,g as reader,t as resizer,m as search,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
@@ -1 +1 @@
1
- var e={resizeFileTree:`Redimensionner l'arborescence de fichiers`,selectFile:`Sélectionnez un fichier pour l'afficher.`},t={hint:`Glissez pour redimensionner. Double-cliquez pour réinitialiser.`},n={scope:`Portée`,allAi:`Toute l'IA`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copier le chemin du fichier`,generateSummary:`Générer le résumé`,regenerateSummary:`Régénérer le résumé`,generating:`Génération…`,regenerating:`Régénération…`,summaryUnavailable:`Résumé indisponible : {{reason}}`,jobContext:`Contexte du job`,clear:`Effacer`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} fichier touché`,touchedFiles_other:`{{count}} fichiers touchés`,log:`Log`},i={created:`créé`,modified:`modifié`,deleted:`supprimé`},a={added:`ajouté`,changed:`modifié`,deleted:`supprimé`},o={loadingFile:`Chargement du fichier…`,showSummary:`Afficher le résumé`,markdownViewMode:`Mode d'affichage Markdown`,preview:`Aperçu`,raw:`Brut`,missingFile:`Ce fichier a été touché par un job IA mais n'existe plus dans l'arbre de travail.`,binaryFile:`Fichier binaire.`,tooLarge:`Fichier trop volumineux pour l'aperçu ({{size}} MB).`,noContent:`Aucun contenu disponible.`,pathCopied:`Chemin copié`,copyPathFailed:`Impossible de copier le chemin`,budgetPrompt:`Outrepasser le plafond de budget ?`,edit:`Modifier`,save:`Enregistrer`,saving:`Enregistrement…`,saved:`Fichier enregistré`,saveFailed:`Échec de l'enregistrement`},s={generationFailed:`Échec de la génération du résumé`,skipped:`Résumé ignoré : {{reason}}`,unavailable:`Résumé indisponible : {{reason}}.`,empty:`Pas encore de résumé pour ce fichier.`,stale:`Obsolète`,hide:`Masquer`,reason:{missing:`fichier manquant`,binary:`fichier binaire`,tooLarge:`fichier trop volumineux`,providerNoPureOutput:`le fournisseur d'IA sélectionné ne peut pas imposer un mode de sortie seule sécurisé`}},c={title_one:`Histoire de construction · {{count}} chapitre`,title_other:`Histoire de construction · {{count}} chapitres`,viewMode:`Mode d'affichage de l'histoire`,modeStory:`Histoire`,modeLog:`Journal`,loading:`Chargement de l'histoire…`,loadFailed:`Impossible de charger l'histoire.`,empty:`Aucune intervention d'IA enregistrée pour ce fichier pour l'instant.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Modification d'IA sans spec`,openSpec:`Ouvrir la spec #{{ticketId}}`,kindLabel:{created:`Créé`,modified:`Modifié`,deleted:`Supprimé`},fallback:{created:`Ce fichier a été créé lors de l'implémentation de cette spec.`,modified:`Ce fichier a été modifié lors de l'implémentation de cette spec.`,deleted:`Ce fichier a été supprimé lors de l'implémentation de cette spec.`,createdNoSpec:`Ce fichier a été créé par un job d'IA.`,modifiedNoSpec:`Ce fichier a été modifié par un job d'IA.`,deletedNoSpec:`Ce fichier a été supprimé par un job d'IA.`},explain:`Expliquer ce changement`,explaining:`Explication en cours…`,explainFailed:`Impossible de générer l'explication`,explainUnavailable:`L'explication par IA est indisponible, car le fournisseur sélectionné ne peut pas imposer un mode de sortie seule sécurisé.`,budgetReached:`Budget IA mensuel atteint.`,generateAnyway:`Générer quand même`,explainedBy:`Expliqué par {{model}}`,linesAdded:`Lignes ajoutées`,linesRemoved:`Lignes supprimées`},l={resize:`Redimensionner l'historique des modifications IA`,title_one:`Historique des modifications IA · {{count}} changement`,title_other:`Historique des modifications IA · {{count}} changements`,show:`Afficher`,hide:`Masquer`,unknownJob:`job inconnu`,filterByJob:`Filtrer Code par le job {{jobId}}`,diff:`Diff`,openSpec:`Ouvrir la spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Chargement du diff...`,diffUnavailable:`Diff indisponible pour cette modification historique. Les nouveaux jobs enregistreront les patchs automatiquement.`,diffTruncated:`[diff tronqué]`},u={jobFiles:`Fichiers du job`,specFiles:`Fichiers de la spec`,touchedByAi:`Touchés par l'IA`,allFiles:`Tous les fichiers`,collapseAll:`Replier tous les dossiers`,expandAll:`Déplier tous les dossiers`,touchedCount_one:`{{count}} fichier touché par l'IA`,touchedCount_other:`{{count}} fichiers touchés par l'IA`,loadingFiles:`Chargement des fichiers…`,emptyTouched:`Aucun fichier touché par l'IA pour l'instant. Lancez un job ou passez à Tous les fichiers.`,showAllFiles:`Afficher tous les fichiers`,noFiles:`Aucun fichier.`,folderTouched_one:`{{count}} fichier touché par l'IA sous ce dossier`,folderTouched_other:`{{count}} fichiers touchés par l'IA sous ce dossier`,jobTitle:`Job {{jobId}}`,createdBySpec:`Créé lors de l'implémentation de la spec #{{id}}`,modifiedBySpec:`Modifié lors de l'implémentation de la spec #{{id}}`,latestTitleCreated:`Le dernier job IA a ajouté ce fichier`,latestTitleModified:`Le dernier job IA a modifié ce fichier`,latestTitleDeleted:`Le dernier job IA a supprimé ce fichier`},d={loadFailed:`Échec du chargement de l'afficheur de code.`,reload:`Recharger`,loadingEditor:`Chargement de l'éditeur…`},f={title:`Fichiers touchés par ce ticket`,jobTitle:`Job {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
1
+ var e={resizeFileTree:`Redimensionner l'arborescence de fichiers`,selectFile:`Sélectionnez un fichier pour l'afficher.`},t={hint:`Glissez pour redimensionner. Double-cliquez pour réinitialiser.`},n={scope:`Portée`,allAi:`Toute l'IA`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copier le chemin du fichier`,generateSummary:`Générer le résumé`,regenerateSummary:`Régénérer le résumé`,generating:`Génération…`,regenerating:`Régénération…`,summaryUnavailable:`Résumé indisponible : {{reason}}`,jobContext:`Contexte du job`,clear:`Effacer`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} fichier touché`,touchedFiles_other:`{{count}} fichiers touchés`,log:`Log`},i={created:`créé`,modified:`modifié`,deleted:`supprimé`},a={added:`ajouté`,changed:`modifié`,deleted:`supprimé`},o={loadingFile:`Chargement du fichier…`,showSummary:`Afficher le résumé`,markdownViewMode:`Mode d'affichage Markdown`,preview:`Aperçu`,raw:`Brut`,missingFile:`Ce fichier a été touché par un job IA mais n'existe plus dans l'arbre de travail.`,binaryFile:`Fichier binaire.`,tooLarge:`Fichier trop volumineux pour l'aperçu ({{size}} MB).`,noContent:`Aucun contenu disponible.`,pathCopied:`Chemin copié`,copyPathFailed:`Impossible de copier le chemin`,budgetPrompt:`Outrepasser le plafond de budget ?`,edit:`Modifier`,save:`Enregistrer`,saving:`Enregistrement…`,saved:`Fichier enregistré`,saveFailed:`Échec de l'enregistrement`},s={generationFailed:`Échec de la génération du résumé`,skipped:`Résumé ignoré : {{reason}}`,unavailable:`Résumé indisponible : {{reason}}.`,empty:`Pas encore de résumé pour ce fichier.`,stale:`Obsolète`,hide:`Masquer`,reason:{missing:`fichier manquant`,binary:`fichier binaire`,tooLarge:`fichier trop volumineux`,providerNoPureOutput:`le fournisseur d'IA sélectionné ne peut pas imposer un mode de sortie seule sécurisé`}},c={title_one:`Histoire de construction · {{count}} chapitre`,title_other:`Histoire de construction · {{count}} chapitres`,viewMode:`Mode d'affichage de l'histoire`,modeStory:`Histoire`,modeLog:`Journal`,loading:`Chargement de l'histoire…`,loadFailed:`Impossible de charger l'histoire.`,empty:`Aucune intervention d'IA enregistrée pour ce fichier pour l'instant.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Modification d'IA sans spec`,openSpec:`Ouvrir la spec #{{ticketId}}`,kindLabel:{created:`Créé`,modified:`Modifié`,deleted:`Supprimé`},fallback:{created:`Ce fichier a été créé lors de l'implémentation de cette spec.`,modified:`Ce fichier a été modifié lors de l'implémentation de cette spec.`,deleted:`Ce fichier a été supprimé lors de l'implémentation de cette spec.`,createdNoSpec:`Ce fichier a été créé par un job d'IA.`,modifiedNoSpec:`Ce fichier a été modifié par un job d'IA.`,deletedNoSpec:`Ce fichier a été supprimé par un job d'IA.`},explain:`Expliquer ce changement`,explaining:`Explication en cours…`,explainFailed:`Impossible de générer l'explication`,explainUnavailable:`L'explication par IA est indisponible, car le fournisseur sélectionné ne peut pas imposer un mode de sortie seule sécurisé.`,budgetReached:`Budget IA mensuel atteint.`,generateAnyway:`Générer quand même`,explainedBy:`Expliqué par {{model}}`,linesAdded:`Lignes ajoutées`,linesRemoved:`Lignes supprimées`},l={resize:`Redimensionner l'historique des modifications IA`,title_one:`Historique des modifications IA · {{count}} changement`,title_other:`Historique des modifications IA · {{count}} changements`,show:`Afficher`,hide:`Masquer`,unknownJob:`job inconnu`,filterByJob:`Filtrer Code par le job {{jobId}}`,diff:`Diff`,openSpec:`Ouvrir la spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Chargement du diff...`,diffUnavailable:`Diff indisponible pour cette modification historique. Les nouveaux jobs enregistreront les patchs automatiquement.`,diffTruncated:`[diff tronqué]`},u={jobFiles:`Fichiers du job`,specFiles:`Fichiers de la spec`,touchedByAi:`Touchés par l'IA`,allFiles:`Tous les fichiers`,collapseAll:`Replier tous les dossiers`,expandAll:`Déplier tous les dossiers`,touchedCount_one:`{{count}} fichier touché par l'IA`,touchedCount_other:`{{count}} fichiers touchés par l'IA`,loadingFiles:`Chargement des fichiers…`,emptyTouched:`Aucun fichier touché par l'IA pour l'instant. Lancez un job ou passez à Tous les fichiers.`,showAllFiles:`Afficher tous les fichiers`,noFiles:`Aucun fichier.`,folderTouched_one:`{{count}} fichier touché par l'IA sous ce dossier`,folderTouched_other:`{{count}} fichiers touchés par l'IA sous ce dossier`,jobTitle:`Job {{jobId}}`,createdBySpec:`Créé lors de l'implémentation de la spec #{{id}}`,modifiedBySpec:`Modifié lors de l'implémentation de la spec #{{id}}`,latestTitleCreated:`Le dernier job IA a ajouté ce fichier`,latestTitleModified:`Le dernier job IA a modifié ce fichier`,latestTitleDeleted:`Le dernier job IA a supprimé ce fichier`,loadFailed:`Impossible de charger l’arborescence. Les fichiers visibles proviennent du dernier chargement réussi.`,partial:`Arborescence partielle. Affinez le dossier ou le nom avec Rechercher, ou actualisez.`},d={loadFailed:`Échec du chargement de l'afficheur de code.`,reload:`Recharger`,loadingEditor:`Chargement de l'éditeur…`},f={title:`Fichiers touchés par ce ticket`,jobTitle:`Job {{jobId}}`,loading:`Chargement des fichiers enregistrés…`,loadFailed:`Impossible de charger les fichiers enregistrés.`,retry:`Réessayer`,loadMore:`Charger plus de fichiers`,partial:`Certains fichiers enregistrés n’ont pas pu être vérifiés. Réessayez pour actualiser.`},p={files:`Fichiers`,search:`Rechercher`,activity:`Activité`,back:`Retour`,forward:`Suivant`,hideNavigation:`Masquer la navigation`,showNavigation:`Afficher la navigation`,navigation:`Navigation du code`,views:`Vues de l’explorateur`,breadcrumb:`Emplacement du fichier`,refresh:`Actualiser`,retry:`Réessayer`,welcome:`Comprenez votre code`,description:`Explorez vos dépôts, trouvez le code recherché et suivez les changements de Specrails.`,findCode:`Trouver du code`,viewActivity:`Explorer les changements`,sourceHint:`Fichiers affiche le contenu actuel du dépôt enregistré. Activité conserve les changements des exécutions, y compris le travail non intégré.`},m={find:`Noms de fichiers`,search:`Contenu`,query:`Texte recherché`,filePlaceholder:`Nom ou chemin…`,contentPlaceholder:`Texte exact dans le code…`,scope:`Portée de recherche`,allRepositories:`Tous les dépôts`,currentRepository:`Dépôt actuel`,withinPath:`Rechercher dans un chemin`,pathPlaceholder:`Dossier ou fichier (facultatif)`,caseSensitive:`Respecter la casse`,hint:`Trouvez un fichier par son nom ou un texte exact dans le code. Les résultats ouvrent le dépôt et la ligne correspondants.`,loading:`Recherche…`,failed:`La recherche a échoué. Vérifiez la connexion et réessayez.`,results:`Résultats : {{count}}`,partial:`Résultats partiels. Affinez le texte, le dossier ou le dépôt pour continuer.`,repositoryIncomplete:`La recherche dans {{name}} est incomplète.`,noMatches:`Aucun résultat dans les fichiers examinés.`,noMatchesPartial:`Aucun résultat dans la partie examinée. Des fichiers ou dépôts restent à parcourir.`},h={description:`Changements enregistrés par Specrails, regroupés par dépôt et exécution.`,scope:`Portée de l’activité`,failed:`Impossible de charger l’activité enregistrée.`,partial:`Cet historique est incomplet. Actualisez ou choisissez un dépôt pour voir plus d’entrées.`,empty:`Aucun changement enregistré dans ce périmètre. Les exécutions terminées apparaîtront ici.`,patch:`Patch disponible`,partialPatch:`Patch partiel`,noPatch:`Aucun patch enregistré`,loading:`Chargement de l’activité…`,loadMore:`Charger plus de changements`},g={currentFile:`Fichier actuel`,recordedChange:`Changement enregistré`,recordedNotice:`Ce patch décrit une exécution passée. Il peut différer du contenu actuel du dépôt enregistré.`,diffFailed:`Impossible de charger le changement enregistré.`,retry:`Réessayer`,patchIncomplete:`Le patch enregistré est incomplet. Le contenu manquant ne peut pas être reconstitué à partir de cet enregistrement.`,displayLimited:`Aperçu limité à {{count}} lignes ou {{chars}} caractères. Le reste du patch n’est pas affiché.`,patch:`Patch enregistré`,find:`Rechercher dans le fichier`,wrap:`Retour à la ligne`,line:`Numéro de ligne`,go:`Aller`,loading:`Chargement du lecteur de code…`,sourceUnavailable:`code indisponible`,refresh:`Actualiser le code`,sourceFailed:`Impossible d’actualiser le fichier actuel. Le code affiché provient de la dernière lecture réussie.`,summaryPartial:`Généré à partir d’un aperçu partiel du code. Ce résumé peut ne pas couvrir tout le fichier.`,regenerateExplanation:`Actualiser l’explication`,noEvidence:`Aucun patch n’a été enregistré comme preuve de ce changement.`,excerptEvidence:`Cette explication repose sur un patch incomplet.`,viewPatch:`Voir le changement enregistré`},_={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f,explore:p,search:m,activity:h,reader:g};export{a as action,h as activity,_ as default,p as explore,l as history,i as kind,d as monaco,e as page,r as provenancePanel,g as reader,t as resizer,m as search,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
@@ -1 +1 @@
1
- var e={resizeFileTree:`调整文件树大小`,selectFile:`选择一个文件进行预览。`},t={hint:`拖动以调整大小。双击重置。`},n={scope:`范围`,allAi:`全部 AI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`复制文件路径`,generateSummary:`生成摘要`,regenerateSummary:`重新生成摘要`,generating:`生成中…`,regenerating:`重新生成中…`,summaryUnavailable:`摘要不可用:{{reason}}`,jobContext:`任务上下文`,clear:`清除`},r={jobTitle:`任务 {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} 个被改动的文件`,touchedFiles_other:`{{count}} 个被改动的文件`,log:`日志`},i={created:`创建`,modified:`修改`,deleted:`删除`},a={added:`新增`,changed:`更改`,deleted:`删除`},o={loadingFile:`正在加载文件…`,showSummary:`显示摘要`,markdownViewMode:`Markdown 查看模式`,preview:`预览`,raw:`原始`,missingFile:`此文件曾被 AI 任务改动,但已不存在于工作区中。`,binaryFile:`二进制文件。`,tooLarge:`文件过大,无法预览({{size}} MB)。`,noContent:`无可用内容。`,pathCopied:`路径已复制`,copyPathFailed:`无法复制路径`,budgetPrompt:`要超出预算上限继续吗?`,edit:`编辑`,save:`保存`,saving:`保存中…`,saved:`文件已保存`,saveFailed:`保存失败`},s={generationFailed:`摘要生成失败`,skipped:`已跳过摘要:{{reason}}`,unavailable:`摘要不可用:{{reason}}。`,empty:`此文件还没有摘要。`,stale:`已过期`,hide:`隐藏`,reason:{missing:`文件缺失`,binary:`二进制文件`,tooLarge:`文件过大`,providerNoPureOutput:`所选 AI 提供商无法强制执行安全的纯输出模式`}},c={title_one:`构建故事 · {{count}} 个章节`,title_other:`构建故事 · {{count}} 个章节`,viewMode:`故事视图模式`,modeStory:`故事`,modeLog:`日志`,loading:`正在加载故事…`,loadFailed:`无法加载故事。`,empty:`此文件尚未记录任何 AI 介入。`,spec:`Spec #{{ticketId}}`,unknownSpec:`无 spec 的 AI 更改`,openSpec:`打开 spec #{{ticketId}}`,kindLabel:{created:`创建`,modified:`修改`,deleted:`删除`},fallback:{created:`此文件是在实现该 spec 时创建的。`,modified:`此文件是在实现该 spec 时修改的。`,deleted:`此文件是在实现该 spec 时删除的。`,createdNoSpec:`此文件由一个 AI 任务创建。`,modifiedNoSpec:`此文件由一个 AI 任务修改。`,deletedNoSpec:`此文件由一个 AI 任务删除。`},explain:`解释此更改`,explaining:`正在解释…`,explainFailed:`无法生成解释`,explainUnavailable:`所选提供商无法强制执行安全的纯输出模式,因此 AI 解释不可用。`,budgetReached:`已达到每月 AI 预算。`,generateAnyway:`仍然生成`,explainedBy:`由 {{model}} 解释`,linesAdded:`新增行`,linesRemoved:`删除行`},l={resize:`调整 AI 改动历史大小`,title_one:`AI 改动历史 · {{count}} 处更改`,title_other:`AI 改动历史 · {{count}} 处更改`,show:`显示`,hide:`隐藏`,unknownJob:`未知任务`,filterByJob:`按任务 {{jobId}} 筛选 Code`,diff:`Diff`,openSpec:`打开 Spec #{{ticketId}}`,specChip:`Spec #{{ticketId}}`,loadingDiff:`正在加载 diff...`,diffUnavailable:`此历史改动没有可用的 diff。新任务会自动保存补丁。`,diffTruncated:`[diff 已截断]`},u={jobFiles:`任务文件`,specFiles:`Spec 文件`,touchedByAi:`AI 改动过`,allFiles:`全部文件`,collapseAll:`折叠所有文件夹`,expandAll:`展开所有文件夹`,touchedCount_one:`{{count}} 个 AI 改动过的文件`,touchedCount_other:`{{count}} 个 AI 改动过的文件`,loadingFiles:`正在加载文件…`,emptyTouched:`还没有 AI 改动过的文件。运行一个任务,或切换到“全部文件”。`,showAllFiles:`显示全部文件`,noFiles:`没有文件。`,folderTouched_one:`此文件夹下有 {{count}} 个 AI 改动过的文件`,folderTouched_other:`此文件夹下有 {{count}} 个 AI 改动过的文件`,jobTitle:`任务 {{jobId}}`,createdBySpec:`在实现 Spec #{{id}} 时创建`,modifiedBySpec:`在实现 Spec #{{id}} 时修改`,latestTitleCreated:`最近的 AI 任务添加了此文件`,latestTitleModified:`最近的 AI 任务更改了此文件`,latestTitleDeleted:`最近的 AI 任务删除了此文件`},d={loadFailed:`代码查看器加载失败。`,reload:`重新加载`,loadingEditor:`正在加载编辑器…`},f={title:`此工单改动的文件`,jobTitle:`任务 {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
1
+ var e={resizeFileTree:`调整文件树大小`,selectFile:`选择一个文件进行预览。`},t={hint:`拖动以调整大小。双击重置。`},n={scope:`范围`,allAi:`全部 AI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`复制文件路径`,generateSummary:`生成摘要`,regenerateSummary:`重新生成摘要`,generating:`生成中…`,regenerating:`重新生成中…`,summaryUnavailable:`摘要不可用:{{reason}}`,jobContext:`任务上下文`,clear:`清除`},r={jobTitle:`任务 {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} 个被改动的文件`,touchedFiles_other:`{{count}} 个被改动的文件`,log:`日志`},i={created:`创建`,modified:`修改`,deleted:`删除`},a={added:`新增`,changed:`更改`,deleted:`删除`},o={loadingFile:`正在加载文件…`,showSummary:`显示摘要`,markdownViewMode:`Markdown 查看模式`,preview:`预览`,raw:`原始`,missingFile:`此文件曾被 AI 任务改动,但已不存在于工作区中。`,binaryFile:`二进制文件。`,tooLarge:`文件过大,无法预览({{size}} MB)。`,noContent:`无可用内容。`,pathCopied:`路径已复制`,copyPathFailed:`无法复制路径`,budgetPrompt:`要超出预算上限继续吗?`,edit:`编辑`,save:`保存`,saving:`保存中…`,saved:`文件已保存`,saveFailed:`保存失败`},s={generationFailed:`摘要生成失败`,skipped:`已跳过摘要:{{reason}}`,unavailable:`摘要不可用:{{reason}}。`,empty:`此文件还没有摘要。`,stale:`已过期`,hide:`隐藏`,reason:{missing:`文件缺失`,binary:`二进制文件`,tooLarge:`文件过大`,providerNoPureOutput:`所选 AI 提供商无法强制执行安全的纯输出模式`}},c={title_one:`构建故事 · {{count}} 个章节`,title_other:`构建故事 · {{count}} 个章节`,viewMode:`故事视图模式`,modeStory:`故事`,modeLog:`日志`,loading:`正在加载故事…`,loadFailed:`无法加载故事。`,empty:`此文件尚未记录任何 AI 介入。`,spec:`Spec #{{ticketId}}`,unknownSpec:`无 spec 的 AI 更改`,openSpec:`打开 spec #{{ticketId}}`,kindLabel:{created:`创建`,modified:`修改`,deleted:`删除`},fallback:{created:`此文件是在实现该 spec 时创建的。`,modified:`此文件是在实现该 spec 时修改的。`,deleted:`此文件是在实现该 spec 时删除的。`,createdNoSpec:`此文件由一个 AI 任务创建。`,modifiedNoSpec:`此文件由一个 AI 任务修改。`,deletedNoSpec:`此文件由一个 AI 任务删除。`},explain:`解释此更改`,explaining:`正在解释…`,explainFailed:`无法生成解释`,explainUnavailable:`所选提供商无法强制执行安全的纯输出模式,因此 AI 解释不可用。`,budgetReached:`已达到每月 AI 预算。`,generateAnyway:`仍然生成`,explainedBy:`由 {{model}} 解释`,linesAdded:`新增行`,linesRemoved:`删除行`},l={resize:`调整 AI 改动历史大小`,title_one:`AI 改动历史 · {{count}} 处更改`,title_other:`AI 改动历史 · {{count}} 处更改`,show:`显示`,hide:`隐藏`,unknownJob:`未知任务`,filterByJob:`按任务 {{jobId}} 筛选 Code`,diff:`Diff`,openSpec:`打开 Spec #{{ticketId}}`,specChip:`Spec #{{ticketId}}`,loadingDiff:`正在加载 diff...`,diffUnavailable:`此历史改动没有可用的 diff。新任务会自动保存补丁。`,diffTruncated:`[diff 已截断]`},u={jobFiles:`任务文件`,specFiles:`Spec 文件`,touchedByAi:`AI 改动过`,allFiles:`全部文件`,collapseAll:`折叠所有文件夹`,expandAll:`展开所有文件夹`,touchedCount_one:`{{count}} 个 AI 改动过的文件`,touchedCount_other:`{{count}} 个 AI 改动过的文件`,loadingFiles:`正在加载文件…`,emptyTouched:`还没有 AI 改动过的文件。运行一个任务,或切换到“全部文件”。`,showAllFiles:`显示全部文件`,noFiles:`没有文件。`,folderTouched_one:`此文件夹下有 {{count}} 个 AI 改动过的文件`,folderTouched_other:`此文件夹下有 {{count}} 个 AI 改动过的文件`,jobTitle:`任务 {{jobId}}`,createdBySpec:`在实现 Spec #{{id}} 时创建`,modifiedBySpec:`在实现 Spec #{{id}} 时修改`,latestTitleCreated:`最近的 AI 任务添加了此文件`,latestTitleModified:`最近的 AI 任务更改了此文件`,latestTitleDeleted:`最近的 AI 任务删除了此文件`,loadFailed:`无法加载文件树。可见文件来自上次成功加载的结果。`,partial:`文件树不完整。请使用搜索缩小文件夹或文件名范围,或刷新后重新扫描。`},d={loadFailed:`代码查看器加载失败。`,reload:`重新加载`,loadingEditor:`正在加载编辑器…`},f={title:`此工单改动的文件`,jobTitle:`任务 {{jobId}}`,loading:`正在加载已记录的文件…`,loadFailed:`无法加载已记录的文件。`,retry:`重试`,loadMore:`加载更多文件`,partial:`无法检查部分已记录的文件。请重试以刷新。`},p={files:`文件`,search:`搜索`,activity:`活动`,back:`后退`,forward:`前进`,hideNavigation:`隐藏导航`,showNavigation:`显示导航`,navigation:`代码导航`,views:`浏览视图`,breadcrumb:`文件位置`,refresh:`刷新`,retry:`重试`,welcome:`理解你的代码`,description:`浏览仓库,查找所需代码,追踪 Specrails 所做的更改。`,findCode:`查找代码`,viewActivity:`浏览更改`,sourceHint:`文件显示已注册仓库的当前内容。活动保留运行中记录的更改,包括尚未整合的工作。`},m={find:`文件名`,search:`内容`,query:`搜索内容`,filePlaceholder:`名称或路径…`,contentPlaceholder:`代码中的文本…`,scope:`搜索范围`,allRepositories:`所有仓库`,currentRepository:`当前仓库`,withinPath:`在路径中搜索`,pathPlaceholder:`文件夹或文件(可选)`,caseSensitive:`区分大小写`,hint:`按名称查找文件,或搜索代码中的文本。结果会打开对应的仓库和行。`,loading:`正在搜索…`,failed:`无法完成搜索。请检查连接后重试。`,results:`结果:{{count}} 条`,partial:`结果不完整。请缩小搜索文本、文件夹或仓库范围。`,repositoryIncomplete:`未能完整搜索 {{name}}。`,noMatches:`在已扫描文件中未找到匹配项。`,noMatchesPartial:`已搜索部分中没有匹配项。仍有文件或仓库未被搜索。`},h={description:`Specrails 运行记录的更改,按仓库和运行分组。`,scope:`活动范围`,failed:`无法加载已记录的活动。`,partial:`此历史记录不完整。请刷新或选择一个仓库以查看更多记录。`,empty:`此范围内尚无更改记录。已完成的运行将显示在这里。`,patch:`补丁可用`,partialPatch:`部分补丁`,noPatch:`没有已保存的补丁`,loading:`正在加载活动…`,loadMore:`加载更多更改`},g={currentFile:`当前文件`,recordedChange:`已记录的更改`,recordedNotice:`此补丁记录了一次过去的运行,可能与已注册仓库的当前内容不同。`,diffFailed:`无法加载已记录的更改。`,retry:`重试`,patchIncomplete:`已保存的补丁不完整。无法根据此记录重建缺失的内容。`,displayLimited:`预览限于 {{count}} 行或 {{chars}} 个字符。补丁的其余部分未显示。`,patch:`已记录的补丁`,find:`在文件中查找`,wrap:`自动换行`,line:`行号`,go:`跳转`,loading:`正在加载代码查看器…`,sourceUnavailable:`代码不可用`,refresh:`刷新代码`,sourceFailed:`无法刷新当前文件。显示的代码来自上次成功读取的内容。`,summaryPartial:`根据部分代码快照生成。此摘要可能未涵盖整个文件。`,regenerateExplanation:`更新解释`,noEvidence:`未保存此更改的补丁证据。`,excerptEvidence:`此解释依据的是不完整的补丁证据。`,viewPatch:`查看已记录的更改`},_={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f,explore:p,search:m,activity:h,reader:g};export{a as action,h as activity,_ as default,p as explore,l as history,i as kind,d as monaco,e as page,r as provenancePanel,g as reader,t as resizer,m as search,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
@@ -1 +1 @@
1
- var e={resizeFileTree:`ファイルツリーのサイズを変更`,selectFile:`プレビューするファイルを選択してください。`},t={hint:`ドラッグでサイズ変更。ダブルクリックでリセット。`},n={scope:`スコープ`,allAi:`すべての AI`,spec:`スペック`,ticketIdPlaceholder:`id`,copyFilePath:`ファイルパスをコピー`,generateSummary:`要約を生成`,regenerateSummary:`要約を再生成`,generating:`生成中…`,regenerating:`再生成中…`,summaryUnavailable:`要約は利用できません: {{reason}}`,jobContext:`ジョブコンテキスト`,clear:`クリア`},r={jobTitle:`ジョブ {{jobId}}`,specTitle:`スペック #{{ticketId}}`,touchedFiles_one:`変更ファイル {{count}} 件`,touchedFiles_other:`変更ファイル {{count}} 件`,log:`ログ`},i={created:`作成`,modified:`変更`,deleted:`削除`},a={added:`追加`,changed:`変更`,deleted:`削除`},o={loadingFile:`ファイルを読み込み中…`,showSummary:`要約を表示`,markdownViewMode:`Markdown 表示モード`,preview:`プレビュー`,raw:`Raw`,missingFile:`このファイルは AI ジョブによって変更されましたが、作業ツリーにはもう存在しません。`,binaryFile:`バイナリファイルです。`,tooLarge:`ファイルが大きすぎてプレビューできません ({{size}} MB)。`,noContent:`表示できる内容がありません。`,pathCopied:`パスをコピーしました`,copyPathFailed:`パスをコピーできませんでした`,budgetPrompt:`予算上限を超過して実行しますか?`,edit:`編集`,save:`保存`,saving:`保存中…`,saved:`ファイルを保存しました`,saveFailed:`保存に失敗しました`},s={generationFailed:`要約の生成に失敗しました`,skipped:`要約をスキップしました: {{reason}}`,unavailable:`要約は利用できません: {{reason}}。`,empty:`このファイルの要約はまだありません。`,stale:`古い`,hide:`非表示`,reason:{missing:`ファイルが存在しません`,binary:`バイナリファイル`,tooLarge:`ファイルが大きすぎます`,providerNoPureOutput:`選択した AI プロバイダーは安全な出力専用モードを強制できません`}},c={title_one:`構築ストーリー · {{count}} 章`,title_other:`構築ストーリー · {{count}} 章`,viewMode:`ストーリー表示モード`,modeStory:`ストーリー`,modeLog:`ログ`,loading:`ストーリーを読み込み中…`,loadFailed:`ストーリーを読み込めませんでした。`,empty:`このファイルにはまだ AI の介入が記録されていません。`,spec:`Spec #{{ticketId}}`,unknownSpec:`spec のない AI 変更`,openSpec:`spec #{{ticketId}} を開く`,kindLabel:{created:`作成`,modified:`変更`,deleted:`削除`},fallback:{created:`このファイルはこの spec の実装中に作成されました。`,modified:`このファイルはこの spec の実装中に変更されました。`,deleted:`このファイルはこの spec の実装中に削除されました。`,createdNoSpec:`このファイルは AI ジョブによって作成されました。`,modifiedNoSpec:`このファイルは AI ジョブによって変更されました。`,deletedNoSpec:`このファイルは AI ジョブによって削除されました。`},explain:`この変更を説明`,explaining:`説明を生成中…`,explainFailed:`説明を生成できませんでした`,explainUnavailable:`選択したプロバイダーが安全な出力専用モードを強制できないため、AI による説明は利用できません。`,budgetReached:`月間 AI 予算に達しました。`,generateAnyway:`それでも生成する`,explainedBy:`{{model}} による説明`,linesAdded:`追加された行`,linesRemoved:`削除された行`},l={resize:`AI 変更履歴のサイズを変更`,title_one:`AI 変更履歴 · {{count}} 件の変更`,title_other:`AI 変更履歴 · {{count}} 件の変更`,show:`表示`,hide:`非表示`,unknownJob:`不明なジョブ`,filterByJob:`ジョブ {{jobId}} でコードを絞り込み`,diff:`差分`,openSpec:`スペック #{{ticketId}} を開く`,specChip:`スペック #{{ticketId}}`,loadingDiff:`差分を読み込み中...`,diffUnavailable:`この過去の変更の差分は利用できません。新しいジョブからはパッチが自動的に保存されます。`,diffTruncated:`[差分は切り捨てられました]`},u={jobFiles:`ジョブのファイル`,specFiles:`スペックのファイル`,touchedByAi:`AI が変更`,allFiles:`すべてのファイル`,collapseAll:`すべてのフォルダを折りたたむ`,expandAll:`すべてのフォルダを展開`,touchedCount_one:`AI が変更したファイル {{count}} 件`,touchedCount_other:`AI が変更したファイル {{count}} 件`,loadingFiles:`ファイルを読み込み中…`,emptyTouched:`AI が変更したファイルはまだありません。ジョブを実行するか、「すべてのファイル」に切り替えてください。`,showAllFiles:`すべてのファイルを表示`,noFiles:`ファイルがありません。`,folderTouched_one:`このフォルダ以下に AI が変更したファイルが {{count}} 件あります`,folderTouched_other:`このフォルダ以下に AI が変更したファイルが {{count}} 件あります`,jobTitle:`ジョブ {{jobId}}`,createdBySpec:`スペック #{{id}} の実装中に作成`,modifiedBySpec:`スペック #{{id}} の実装中に変更`,latestTitleCreated:`最新の AI ジョブがこのファイルを追加しました`,latestTitleModified:`最新の AI ジョブがこのファイルを変更しました`,latestTitleDeleted:`最新の AI ジョブがこのファイルを削除しました`},d={loadFailed:`コードビューアの読み込みに失敗しました。`,reload:`再読み込み`,loadingEditor:`エディタを読み込み中…`},f={title:`このチケットが変更したファイル`,jobTitle:`ジョブ {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
1
+ var e={resizeFileTree:`ファイルツリーのサイズを変更`,selectFile:`プレビューするファイルを選択してください。`},t={hint:`ドラッグでサイズ変更。ダブルクリックでリセット。`},n={scope:`スコープ`,allAi:`すべての AI`,spec:`スペック`,ticketIdPlaceholder:`id`,copyFilePath:`ファイルパスをコピー`,generateSummary:`要約を生成`,regenerateSummary:`要約を再生成`,generating:`生成中…`,regenerating:`再生成中…`,summaryUnavailable:`要約は利用できません: {{reason}}`,jobContext:`ジョブコンテキスト`,clear:`クリア`},r={jobTitle:`ジョブ {{jobId}}`,specTitle:`スペック #{{ticketId}}`,touchedFiles_one:`変更ファイル {{count}} 件`,touchedFiles_other:`変更ファイル {{count}} 件`,log:`ログ`},i={created:`作成`,modified:`変更`,deleted:`削除`},a={added:`追加`,changed:`変更`,deleted:`削除`},o={loadingFile:`ファイルを読み込み中…`,showSummary:`要約を表示`,markdownViewMode:`Markdown 表示モード`,preview:`プレビュー`,raw:`Raw`,missingFile:`このファイルは AI ジョブによって変更されましたが、作業ツリーにはもう存在しません。`,binaryFile:`バイナリファイルです。`,tooLarge:`ファイルが大きすぎてプレビューできません ({{size}} MB)。`,noContent:`表示できる内容がありません。`,pathCopied:`パスをコピーしました`,copyPathFailed:`パスをコピーできませんでした`,budgetPrompt:`予算上限を超過して実行しますか?`,edit:`編集`,save:`保存`,saving:`保存中…`,saved:`ファイルを保存しました`,saveFailed:`保存に失敗しました`},s={generationFailed:`要約の生成に失敗しました`,skipped:`要約をスキップしました: {{reason}}`,unavailable:`要約は利用できません: {{reason}}。`,empty:`このファイルの要約はまだありません。`,stale:`古い`,hide:`非表示`,reason:{missing:`ファイルが存在しません`,binary:`バイナリファイル`,tooLarge:`ファイルが大きすぎます`,providerNoPureOutput:`選択した AI プロバイダーは安全な出力専用モードを強制できません`}},c={title_one:`構築ストーリー · {{count}} 章`,title_other:`構築ストーリー · {{count}} 章`,viewMode:`ストーリー表示モード`,modeStory:`ストーリー`,modeLog:`ログ`,loading:`ストーリーを読み込み中…`,loadFailed:`ストーリーを読み込めませんでした。`,empty:`このファイルにはまだ AI の介入が記録されていません。`,spec:`Spec #{{ticketId}}`,unknownSpec:`spec のない AI 変更`,openSpec:`spec #{{ticketId}} を開く`,kindLabel:{created:`作成`,modified:`変更`,deleted:`削除`},fallback:{created:`このファイルはこの spec の実装中に作成されました。`,modified:`このファイルはこの spec の実装中に変更されました。`,deleted:`このファイルはこの spec の実装中に削除されました。`,createdNoSpec:`このファイルは AI ジョブによって作成されました。`,modifiedNoSpec:`このファイルは AI ジョブによって変更されました。`,deletedNoSpec:`このファイルは AI ジョブによって削除されました。`},explain:`この変更を説明`,explaining:`説明を生成中…`,explainFailed:`説明を生成できませんでした`,explainUnavailable:`選択したプロバイダーが安全な出力専用モードを強制できないため、AI による説明は利用できません。`,budgetReached:`月間 AI 予算に達しました。`,generateAnyway:`それでも生成する`,explainedBy:`{{model}} による説明`,linesAdded:`追加された行`,linesRemoved:`削除された行`},l={resize:`AI 変更履歴のサイズを変更`,title_one:`AI 変更履歴 · {{count}} 件の変更`,title_other:`AI 変更履歴 · {{count}} 件の変更`,show:`表示`,hide:`非表示`,unknownJob:`不明なジョブ`,filterByJob:`ジョブ {{jobId}} でコードを絞り込み`,diff:`差分`,openSpec:`スペック #{{ticketId}} を開く`,specChip:`スペック #{{ticketId}}`,loadingDiff:`差分を読み込み中...`,diffUnavailable:`この過去の変更の差分は利用できません。新しいジョブからはパッチが自動的に保存されます。`,diffTruncated:`[差分は切り捨てられました]`},u={jobFiles:`ジョブのファイル`,specFiles:`スペックのファイル`,touchedByAi:`AI が変更`,allFiles:`すべてのファイル`,collapseAll:`すべてのフォルダを折りたたむ`,expandAll:`すべてのフォルダを展開`,touchedCount_one:`AI が変更したファイル {{count}} 件`,touchedCount_other:`AI が変更したファイル {{count}} 件`,loadingFiles:`ファイルを読み込み中…`,emptyTouched:`AI が変更したファイルはまだありません。ジョブを実行するか、「すべてのファイル」に切り替えてください。`,showAllFiles:`すべてのファイルを表示`,noFiles:`ファイルがありません。`,folderTouched_one:`このフォルダ以下に AI が変更したファイルが {{count}} 件あります`,folderTouched_other:`このフォルダ以下に AI が変更したファイルが {{count}} 件あります`,jobTitle:`ジョブ {{jobId}}`,createdBySpec:`スペック #{{id}} の実装中に作成`,modifiedBySpec:`スペック #{{id}} の実装中に変更`,latestTitleCreated:`最新の AI ジョブがこのファイルを追加しました`,latestTitleModified:`最新の AI ジョブがこのファイルを変更しました`,latestTitleDeleted:`最新の AI ジョブがこのファイルを削除しました`,loadFailed:`ファイルツリーを読み込めませんでした。表示中のファイルは前回正常に読み込まれたものです。`,partial:`ファイルツリーは一部のみです。検索でフォルダーや名前を絞り込むか、更新してください。`},d={loadFailed:`コードビューアの読み込みに失敗しました。`,reload:`再読み込み`,loadingEditor:`エディタを読み込み中…`},f={title:`このチケットが変更したファイル`,jobTitle:`ジョブ {{jobId}}`,loading:`記録されたファイルを読み込み中…`,loadFailed:`記録されたファイルを読み込めませんでした。`,retry:`再試行`,loadMore:`さらにファイルを読み込む`,partial:`一部の記録されたファイルを確認できませんでした。再試行して更新してください。`},p={files:`ファイル`,search:`検索`,activity:`アクティビティ`,back:`戻る`,forward:`進む`,hideNavigation:`ナビゲーションを非表示`,showNavigation:`ナビゲーションを表示`,navigation:`コードナビゲーション`,views:`エクスプローラーの表示`,breadcrumb:`ファイルの場所`,refresh:`更新`,retry:`再試行`,welcome:`コードを理解する`,description:`リポジトリを探索し、必要なコードを見つけ、Specrails による変更を確認できます。`,findCode:`コードを探す`,viewActivity:`変更を調べる`,sourceHint:`ファイルには登録済みチェックアウトの現在の内容を表示します。アクティビティには未統合の作業を含む実行時の変更を保持します。`},m={find:`ファイル名`,search:`内容`,query:`検索語`,filePlaceholder:`名前またはパス…`,contentPlaceholder:`コード内の文字列…`,scope:`検索範囲`,allRepositories:`すべてのリポジトリ`,currentRepository:`現在のリポジトリ`,withinPath:`パス内を検索`,pathPlaceholder:`フォルダーまたはファイル(任意)`,caseSensitive:`大文字・小文字を区別`,hint:`名前でファイルを探すか、コード内の文字列を検索します。結果から該当するリポジトリと行を開けます。`,loading:`検索中…`,failed:`検索を完了できませんでした。接続を確認して再試行してください。`,results:`結果:{{count}}件`,partial:`一部の結果のみ表示しています。検索語、フォルダー、リポジトリを絞り込んでください。`,repositoryIncomplete:`{{name}} の検索を完了できませんでした。`,noMatches:`調べたファイルに一致する結果はありません。`,noMatchesPartial:`検索済みの範囲に一致する結果はありません。未検索のファイルまたはリポジトリがあります。`},h={description:`Specrails の実行で記録された変更を、リポジトリと実行ごとに表示します。`,scope:`アクティビティの範囲`,failed:`記録されたアクティビティを読み込めませんでした。`,partial:`この履歴は不完全です。更新するかリポジトリを選んで追加の記録を確認してください。`,empty:`この範囲にはまだ変更の記録がありません。完了した実行がここに表示されます。`,patch:`パッチあり`,partialPatch:`部分的なパッチ`,noPatch:`保存されたパッチなし`,loading:`アクティビティを読み込み中…`,loadMore:`さらに変更を読み込む`},g={currentFile:`現在のファイル`,recordedChange:`記録された変更`,recordedNotice:`このパッチは過去の実行を記録したもので、登録済みチェックアウトの現在の内容とは異なる場合があります。`,diffFailed:`記録された変更を読み込めませんでした。`,retry:`再試行`,patchIncomplete:`保存されたパッチは不完全です。この記録から不足する内容を復元することはできません。`,displayLimited:`プレビューは {{count}} 行または {{chars}} 文字までです。残りのパッチは表示されません。`,patch:`記録されたパッチ`,find:`ファイル内を検索`,wrap:`折り返し`,line:`行番号`,go:`移動`,loading:`コードビューアーを読み込み中…`,sourceUnavailable:`コードを利用できません`,refresh:`コードを更新`,sourceFailed:`現在のファイルを更新できませんでした。表示されているコードは前回正常に読み込まれたものです。`,summaryPartial:`コードの一部から生成されました。この要約はファイル全体をカバーしていない場合があります。`,regenerateExplanation:`説明を更新`,noEvidence:`この変更の根拠となるパッチは保存されていません。`,excerptEvidence:`この説明は不完全なパッチを根拠としています。`,viewPatch:`記録された変更を見る`},_={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f,explore:p,search:m,activity:h,reader:g};export{a as action,h as activity,_ as default,p as explore,l as history,i as kind,d as monaco,e as page,r as provenancePanel,g as reader,t as resizer,m as search,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
@@ -1 +1 @@
1
- var e={resizeFileTree:`Größe des Dateibaums ändern`,selectFile:`Wähle eine Datei für die Vorschau.`},t={hint:`Zum Ändern der Größe ziehen. Doppelklick zum Zurücksetzen.`},n={scope:`Bereich`,allAi:`Alle KI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Dateipfad kopieren`,generateSummary:`Zusammenfassung generieren`,regenerateSummary:`Zusammenfassung neu generieren`,generating:`Wird generiert…`,regenerating:`Wird neu generiert…`,summaryUnavailable:`Zusammenfassung nicht verfügbar: {{reason}}`,jobContext:`Job-Kontext`,clear:`Zurücksetzen`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} bearbeitete Datei`,touchedFiles_other:`{{count}} bearbeitete Dateien`,log:`Log`},i={created:`erstellt`,modified:`geändert`,deleted:`gelöscht`},a={added:`hinzugefügt`,changed:`geändert`,deleted:`gelöscht`},o={loadingFile:`Datei wird geladen…`,showSummary:`Zusammenfassung anzeigen`,markdownViewMode:`Markdown-Ansichtsmodus`,preview:`Vorschau`,raw:`Quelltext`,missingFile:`Diese Datei wurde von einem KI-Job bearbeitet, existiert aber nicht mehr im Arbeitsverzeichnis.`,binaryFile:`Binärdatei.`,tooLarge:`Datei zu groß für die Vorschau ({{size}} MB).`,noContent:`Kein Inhalt verfügbar.`,pathCopied:`Pfad kopiert`,copyPathFailed:`Pfad konnte nicht kopiert werden`,budgetPrompt:`Budgetgrenze außer Kraft setzen?`,edit:`Bearbeiten`,save:`Speichern`,saving:`Speichern…`,saved:`Datei gespeichert`,saveFailed:`Speichern fehlgeschlagen`},s={generationFailed:`Generierung der Zusammenfassung fehlgeschlagen`,skipped:`Zusammenfassung übersprungen: {{reason}}`,unavailable:`Zusammenfassung nicht verfügbar: {{reason}}.`,empty:`Noch keine Zusammenfassung für diese Datei.`,stale:`Veraltet`,hide:`Ausblenden`,reason:{missing:`Datei fehlt`,binary:`Binärdatei`,tooLarge:`Datei zu groß`,providerNoPureOutput:`der ausgewählte KI-Anbieter kann keinen sicheren Nur-Ausgabe-Modus erzwingen`}},c={title_one:`Baugeschichte · {{count}} Kapitel`,title_other:`Baugeschichte · {{count}} Kapitel`,viewMode:`Ansichtsmodus der Geschichte`,modeStory:`Geschichte`,modeLog:`Protokoll`,loading:`Geschichte wird geladen…`,loadFailed:`Die Geschichte konnte nicht geladen werden.`,empty:`Für diese Datei sind noch keine KI-Eingriffe aufgezeichnet.`,spec:`Spec #{{ticketId}}`,unknownSpec:`KI-Änderung ohne Spec`,openSpec:`Spec #{{ticketId}} öffnen`,kindLabel:{created:`Erstellt`,modified:`Geändert`,deleted:`Gelöscht`},fallback:{created:`Diese Datei wurde bei der Umsetzung dieser Spec erstellt.`,modified:`Diese Datei wurde bei der Umsetzung dieser Spec geändert.`,deleted:`Diese Datei wurde bei der Umsetzung dieser Spec gelöscht.`,createdNoSpec:`Diese Datei wurde von einem KI-Job erstellt.`,modifiedNoSpec:`Diese Datei wurde von einem KI-Job geändert.`,deletedNoSpec:`Diese Datei wurde von einem KI-Job gelöscht.`},explain:`Diese Änderung erklären`,explaining:`Wird erklärt…`,explainFailed:`Die Erklärung konnte nicht erzeugt werden`,explainUnavailable:`Die KI-Erklärung ist nicht verfügbar, weil der ausgewählte Anbieter keinen sicheren Nur-Ausgabe-Modus erzwingen kann.`,budgetReached:`Monatliches KI-Budget erreicht.`,generateAnyway:`Trotzdem erzeugen`,explainedBy:`Erklärt von {{model}}`,linesAdded:`Hinzugefügte Zeilen`,linesRemoved:`Entfernte Zeilen`},l={resize:`Größe des KI-Bearbeitungsverlaufs ändern`,title_one:`KI-Bearbeitungsverlauf · {{count}} Änderung`,title_other:`KI-Bearbeitungsverlauf · {{count}} Änderungen`,show:`Anzeigen`,hide:`Ausblenden`,unknownJob:`unbekannter Job`,filterByJob:`Code nach Job {{jobId}} filtern`,diff:`Diff`,openSpec:`Spec #{{ticketId}} öffnen`,specChip:`Spec #{{ticketId}}`,loadingDiff:`Diff wird geladen...`,diffUnavailable:`Für diese frühere Bearbeitung ist kein Diff verfügbar. Neue Jobs speichern Patches automatisch.`,diffTruncated:`[Diff gekürzt]`},u={jobFiles:`Job-Dateien`,specFiles:`Spec-Dateien`,touchedByAi:`Von KI bearbeitet`,allFiles:`Alle Dateien`,collapseAll:`Alle Ordner einklappen`,expandAll:`Alle Ordner ausklappen`,touchedCount_one:`{{count}} von KI bearbeitete Datei`,touchedCount_other:`{{count}} von KI bearbeitete Dateien`,loadingFiles:`Dateien werden geladen…`,emptyTouched:`Noch keine von KI bearbeiteten Dateien. Starte einen Job oder wechsle zu „Alle Dateien“.`,showAllFiles:`Alle Dateien anzeigen`,noFiles:`Keine Dateien.`,folderTouched_one:`{{count}} von KI bearbeitete Datei unterhalb dieses Ordners`,folderTouched_other:`{{count}} von KI bearbeitete Dateien unterhalb dieses Ordners`,jobTitle:`Job {{jobId}}`,createdBySpec:`Bei der Implementierung von Spec #{{id}} erstellt`,modifiedBySpec:`Bei der Implementierung von Spec #{{id}} geändert`,latestTitleCreated:`Der letzte KI-Job hat diese Datei hinzugefügt`,latestTitleModified:`Der letzte KI-Job hat diese Datei geändert`,latestTitleDeleted:`Der letzte KI-Job hat diese Datei gelöscht`},d={loadFailed:`Code-Viewer konnte nicht geladen werden.`,reload:`Neu laden`,loadingEditor:`Editor wird geladen…`},f={title:`Von diesem Ticket bearbeitete Dateien`,jobTitle:`Job {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
1
+ var e={resizeFileTree:`Größe des Dateibaums ändern`,selectFile:`Wähle eine Datei für die Vorschau.`},t={hint:`Zum Ändern der Größe ziehen. Doppelklick zum Zurücksetzen.`},n={scope:`Bereich`,allAi:`Alle KI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Dateipfad kopieren`,generateSummary:`Zusammenfassung generieren`,regenerateSummary:`Zusammenfassung neu generieren`,generating:`Wird generiert…`,regenerating:`Wird neu generiert…`,summaryUnavailable:`Zusammenfassung nicht verfügbar: {{reason}}`,jobContext:`Job-Kontext`,clear:`Zurücksetzen`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} bearbeitete Datei`,touchedFiles_other:`{{count}} bearbeitete Dateien`,log:`Log`},i={created:`erstellt`,modified:`geändert`,deleted:`gelöscht`},a={added:`hinzugefügt`,changed:`geändert`,deleted:`gelöscht`},o={loadingFile:`Datei wird geladen…`,showSummary:`Zusammenfassung anzeigen`,markdownViewMode:`Markdown-Ansichtsmodus`,preview:`Vorschau`,raw:`Quelltext`,missingFile:`Diese Datei wurde von einem KI-Job bearbeitet, existiert aber nicht mehr im Arbeitsverzeichnis.`,binaryFile:`Binärdatei.`,tooLarge:`Datei zu groß für die Vorschau ({{size}} MB).`,noContent:`Kein Inhalt verfügbar.`,pathCopied:`Pfad kopiert`,copyPathFailed:`Pfad konnte nicht kopiert werden`,budgetPrompt:`Budgetgrenze außer Kraft setzen?`,edit:`Bearbeiten`,save:`Speichern`,saving:`Speichern…`,saved:`Datei gespeichert`,saveFailed:`Speichern fehlgeschlagen`},s={generationFailed:`Generierung der Zusammenfassung fehlgeschlagen`,skipped:`Zusammenfassung übersprungen: {{reason}}`,unavailable:`Zusammenfassung nicht verfügbar: {{reason}}.`,empty:`Noch keine Zusammenfassung für diese Datei.`,stale:`Veraltet`,hide:`Ausblenden`,reason:{missing:`Datei fehlt`,binary:`Binärdatei`,tooLarge:`Datei zu groß`,providerNoPureOutput:`der ausgewählte KI-Anbieter kann keinen sicheren Nur-Ausgabe-Modus erzwingen`}},c={title_one:`Baugeschichte · {{count}} Kapitel`,title_other:`Baugeschichte · {{count}} Kapitel`,viewMode:`Ansichtsmodus der Geschichte`,modeStory:`Geschichte`,modeLog:`Protokoll`,loading:`Geschichte wird geladen…`,loadFailed:`Die Geschichte konnte nicht geladen werden.`,empty:`Für diese Datei sind noch keine KI-Eingriffe aufgezeichnet.`,spec:`Spec #{{ticketId}}`,unknownSpec:`KI-Änderung ohne Spec`,openSpec:`Spec #{{ticketId}} öffnen`,kindLabel:{created:`Erstellt`,modified:`Geändert`,deleted:`Gelöscht`},fallback:{created:`Diese Datei wurde bei der Umsetzung dieser Spec erstellt.`,modified:`Diese Datei wurde bei der Umsetzung dieser Spec geändert.`,deleted:`Diese Datei wurde bei der Umsetzung dieser Spec gelöscht.`,createdNoSpec:`Diese Datei wurde von einem KI-Job erstellt.`,modifiedNoSpec:`Diese Datei wurde von einem KI-Job geändert.`,deletedNoSpec:`Diese Datei wurde von einem KI-Job gelöscht.`},explain:`Diese Änderung erklären`,explaining:`Wird erklärt…`,explainFailed:`Die Erklärung konnte nicht erzeugt werden`,explainUnavailable:`Die KI-Erklärung ist nicht verfügbar, weil der ausgewählte Anbieter keinen sicheren Nur-Ausgabe-Modus erzwingen kann.`,budgetReached:`Monatliches KI-Budget erreicht.`,generateAnyway:`Trotzdem erzeugen`,explainedBy:`Erklärt von {{model}}`,linesAdded:`Hinzugefügte Zeilen`,linesRemoved:`Entfernte Zeilen`},l={resize:`Größe des KI-Bearbeitungsverlaufs ändern`,title_one:`KI-Bearbeitungsverlauf · {{count}} Änderung`,title_other:`KI-Bearbeitungsverlauf · {{count}} Änderungen`,show:`Anzeigen`,hide:`Ausblenden`,unknownJob:`unbekannter Job`,filterByJob:`Code nach Job {{jobId}} filtern`,diff:`Diff`,openSpec:`Spec #{{ticketId}} öffnen`,specChip:`Spec #{{ticketId}}`,loadingDiff:`Diff wird geladen...`,diffUnavailable:`Für diese frühere Bearbeitung ist kein Diff verfügbar. Neue Jobs speichern Patches automatisch.`,diffTruncated:`[Diff gekürzt]`},u={jobFiles:`Job-Dateien`,specFiles:`Spec-Dateien`,touchedByAi:`Von KI bearbeitet`,allFiles:`Alle Dateien`,collapseAll:`Alle Ordner einklappen`,expandAll:`Alle Ordner ausklappen`,touchedCount_one:`{{count}} von KI bearbeitete Datei`,touchedCount_other:`{{count}} von KI bearbeitete Dateien`,loadingFiles:`Dateien werden geladen…`,emptyTouched:`Noch keine von KI bearbeiteten Dateien. Starte einen Job oder wechsle zu „Alle Dateien“.`,showAllFiles:`Alle Dateien anzeigen`,noFiles:`Keine Dateien.`,folderTouched_one:`{{count}} von KI bearbeitete Datei unterhalb dieses Ordners`,folderTouched_other:`{{count}} von KI bearbeitete Dateien unterhalb dieses Ordners`,jobTitle:`Job {{jobId}}`,createdBySpec:`Bei der Implementierung von Spec #{{id}} erstellt`,modifiedBySpec:`Bei der Implementierung von Spec #{{id}} geändert`,latestTitleCreated:`Der letzte KI-Job hat diese Datei hinzugefügt`,latestTitleModified:`Der letzte KI-Job hat diese Datei geändert`,latestTitleDeleted:`Der letzte KI-Job hat diese Datei gelöscht`,loadFailed:`Der Dateibaum konnte nicht geladen werden. Sichtbare Dateien stammen vom letzten erfolgreichen Laden.`,partial:`Unvollständiger Dateibaum. Grenze Ordner oder Namen über die Suche ein oder aktualisiere erneut.`},d={loadFailed:`Code-Viewer konnte nicht geladen werden.`,reload:`Neu laden`,loadingEditor:`Editor wird geladen…`},f={title:`Von diesem Ticket bearbeitete Dateien`,jobTitle:`Job {{jobId}}`,loading:`Aufgezeichnete Dateien werden geladen…`,loadFailed:`Aufgezeichnete Dateien konnten nicht geladen werden.`,retry:`Erneut versuchen`,loadMore:`Weitere Dateien laden`,partial:`Einige aufgezeichnete Dateien konnten nicht geprüft werden. Versuche es erneut.`},p={files:`Dateien`,search:`Suche`,activity:`Aktivität`,back:`Zurück`,forward:`Vorwärts`,hideNavigation:`Navigation ausblenden`,showNavigation:`Navigation anzeigen`,navigation:`Codenavigation`,views:`Explorer-Ansichten`,breadcrumb:`Dateipfad`,refresh:`Aktualisieren`,retry:`Erneut versuchen`,welcome:`Deinen Code verstehen`,description:`Erkunde deine Repositories, finde den gesuchten Code und verfolge Änderungen von Specrails.`,findCode:`Code finden`,viewActivity:`Änderungen erkunden`,sourceHint:`Dateien zeigt den aktuellen registrierten Checkout. Aktivität enthält aufgezeichnete Änderungen, auch noch nicht integrierte Arbeit.`},m={find:`Dateinamen`,search:`Inhalte`,query:`Suchbegriff`,filePlaceholder:`Name oder Pfad…`,contentPlaceholder:`Text im Code…`,scope:`Suchbereich`,allRepositories:`Alle Repositories`,currentRepository:`Aktuelles Repository`,withinPath:`Innerhalb eines Pfads suchen`,pathPlaceholder:`Ordner oder Datei (optional)`,caseSensitive:`Groß-/Kleinschreibung beachten`,hint:`Finde Dateien nach Namen oder suche nach genauem Text. Ergebnisse öffnen das richtige Repository und die Zeile.`,loading:`Suche läuft…`,failed:`Die Suche konnte nicht abgeschlossen werden. Prüfe die Verbindung und versuche es erneut.`,results:`Ergebnisse: {{count}}`,partial:`Unvollständige Ergebnisse. Grenze Suchtext, Ordner oder Repository weiter ein.`,repositoryIncomplete:`{{name}} konnte nicht vollständig durchsucht werden.`,noMatches:`Keine Treffer in den untersuchten Dateien.`,noMatchesPartial:`Keine Treffer im untersuchten Teil. Einige Dateien oder Repositories wurden noch nicht durchsucht.`},h={description:`Von Specrails aufgezeichnete Änderungen, nach Repository und Ausführung gruppiert.`,scope:`Aktivitätsbereich`,failed:`Aufgezeichnete Aktivität konnte nicht geladen werden.`,partial:`Dieser Verlauf ist unvollständig. Aktualisiere oder wähle ein Repository für weitere Einträge.`,empty:`In diesem Bereich gibt es noch keine Änderungen. Abgeschlossene Ausführungen erscheinen hier.`,patch:`Patch verfügbar`,partialPatch:`Teilweiser Patch`,noPatch:`Kein gespeicherter Patch`,loading:`Aktivität wird geladen…`,loadMore:`Weitere Änderungen laden`},g={currentFile:`Aktuelle Datei`,recordedChange:`Aufgezeichnete Änderung`,recordedNotice:`Dieser Patch dokumentiert eine frühere Ausführung. Er kann vom aktuellen registrierten Checkout abweichen.`,diffFailed:`Die aufgezeichnete Änderung konnte nicht geladen werden.`,retry:`Erneut versuchen`,patchIncomplete:`Der gespeicherte Patch ist unvollständig. Fehlender Inhalt lässt sich aus diesem Eintrag nicht rekonstruieren.`,displayLimited:`Vorschau auf {{count}} Zeilen oder {{chars}} Zeichen begrenzt. Der restliche Patch wird nicht angezeigt.`,patch:`Aufgezeichneter Patch`,find:`In Datei suchen`,wrap:`Zeilenumbruch`,line:`Zeilennummer`,go:`Los`,loading:`Codeansicht wird geladen…`,sourceUnavailable:`Code nicht verfügbar`,refresh:`Code aktualisieren`,sourceFailed:`Die aktuelle Datei konnte nicht aktualisiert werden. Sichtbarer Code stammt vom letzten erfolgreichen Lesen.`,summaryPartial:`Aus einem unvollständigen Codeabbild erstellt. Die Zusammenfassung deckt möglicherweise nicht die gesamte Datei ab.`,regenerateExplanation:`Erklärung aktualisieren`,noEvidence:`Für diese Änderung wurde kein Patch als Beleg gespeichert.`,excerptEvidence:`Diese Erklärung basiert auf unvollständigen Patch-Belegen.`,viewPatch:`Aufgezeichnete Änderung ansehen`},_={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f,explore:p,search:m,activity:h,reader:g};export{a as action,h as activity,_ as default,p as explore,l as history,i as kind,d as monaco,e as page,r as provenancePanel,g as reader,t as resizer,m as search,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({action:()=>s,activity:()=>_,default:()=>y,explore:()=>h,history:()=>d,kind:()=>o,monaco:()=>p,page:()=>n,provenancePanel:()=>a,reader:()=>v,resizer:()=>r,search:()=>g,story:()=>u,summary:()=>l,ticketFiles:()=>m,toolbar:()=>i,tree:()=>f,viewer:()=>c}),n={resizeFileTree:`Resize file tree`,selectFile:`Select a file to preview.`},r={hint:`Drag to resize. Double-click to reset.`},i={scope:`Scope`,allAi:`All AI`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copy file path`,generateSummary:`Generate summary`,regenerateSummary:`Regenerate summary`,generating:`Generating…`,regenerating:`Regenerating…`,summaryUnavailable:`Summary unavailable: {{reason}}`,jobContext:`Job context`,clear:`Clear`},a={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} touched file`,touchedFiles_other:`{{count}} touched files`,log:`Log`},o={created:`created`,modified:`modified`,deleted:`deleted`},s={added:`added`,changed:`changed`,deleted:`deleted`},c={loadingFile:`Loading file…`,showSummary:`Show summary`,markdownViewMode:`Markdown view mode`,preview:`Preview`,raw:`Raw`,missingFile:`This file was touched by an AI job but no longer exists in the working tree.`,binaryFile:`Binary file.`,tooLarge:`File too large to preview ({{size}} MB).`,noContent:`No content available.`,pathCopied:`Path copied`,copyPathFailed:`Could not copy path`,budgetPrompt:`Override the budget cap?`,edit:`Edit`,save:`Save`,saving:`Saving…`,saved:`File saved`,saveFailed:`Save failed`},l={generationFailed:`Summary generation failed`,skipped:`Summary skipped: {{reason}}`,unavailable:`Summary unavailable: {{reason}}.`,empty:`No summary for this file yet.`,stale:`Stale`,hide:`Hide`,reason:{missing:`file missing`,binary:`binary file`,tooLarge:`file too large`,providerNoPureOutput:`selected AI provider cannot enforce safe pure-output mode`}},u={title_one:`Construction story · {{count}} chapter`,title_other:`Construction story · {{count}} chapters`,viewMode:`Story view mode`,modeStory:`Story`,modeLog:`Log`,loading:`Loading the story…`,loadFailed:`Could not load the story.`,empty:`No AI interventions recorded for this file yet.`,spec:`Spec #{{ticketId}}`,unknownSpec:`AI change without a spec`,openSpec:`Open spec #{{ticketId}}`,kindLabel:{created:`Created`,modified:`Modified`,deleted:`Deleted`},fallback:{created:`This file was created while implementing this spec.`,modified:`This file was modified while implementing this spec.`,deleted:`This file was deleted while implementing this spec.`,createdNoSpec:`This file was created by an AI job.`,modifiedNoSpec:`This file was modified by an AI job.`,deletedNoSpec:`This file was deleted by an AI job.`},explain:`Explain this change`,explaining:`Explaining…`,explainFailed:`Could not generate the explanation`,explainUnavailable:`AI explanation is unavailable because the selected provider cannot enforce safe pure-output mode.`,budgetReached:`Monthly AI budget reached.`,generateAnyway:`Generate anyway`,explainedBy:`Explained by {{model}}`,linesAdded:`Lines added`,linesRemoved:`Lines removed`},d={resize:`Resize AI touch history`,title_one:`AI touch history · {{count}} change`,title_other:`AI touch history · {{count}} changes`,show:`Show`,hide:`Hide`,unknownJob:`unknown job`,filterByJob:`Filter Code by job {{jobId}}`,diff:`Diff`,openSpec:`Open spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`Loading diff...`,diffUnavailable:`Diff unavailable for this historical touch. New jobs will store patches automatically.`,diffTruncated:`[diff truncated]`},f={jobFiles:`Job files`,specFiles:`Spec files`,touchedByAi:`Touched by AI`,allFiles:`All files`,collapseAll:`Collapse all folders`,expandAll:`Expand all folders`,touchedCount_one:`{{count}} AI-touched file`,touchedCount_other:`{{count}} AI-touched files`,loadingFiles:`Loading files…`,emptyTouched:`No AI-touched files yet. Run a job, or switch to All files.`,showAllFiles:`Show all files`,noFiles:`No files.`,folderTouched_one:`{{count}} AI-touched file below this folder`,folderTouched_other:`{{count}} AI-touched files below this folder`,jobTitle:`Job {{jobId}}`,createdBySpec:`Created while implementing spec #{{id}}`,modifiedBySpec:`Modified while implementing spec #{{id}}`,latestTitleCreated:`Latest AI job added this file`,latestTitleModified:`Latest AI job changed this file`,latestTitleDeleted:`Latest AI job deleted this file`,loadFailed:`Could not load the file tree. Any visible files are from the previous successful load.`,partial:`Partial file tree. Use Search to narrow the folder or filename, or refresh to scan again.`},p={loadFailed:`Failed to load the code viewer.`,reload:`Reload`,loadingEditor:`Loading editor…`},m={title:`Files touched by this ticket`,jobTitle:`Job {{jobId}}`,loading:`Loading recorded files…`,loadFailed:`Could not load recorded files.`,retry:`Retry`,loadMore:`Load more files`,partial:`Some recorded files could not be checked. Retry to refresh.`},h={files:`Files`,search:`Search`,activity:`Activity`,back:`Back`,forward:`Forward`,hideNavigation:`Hide navigation`,showNavigation:`Show navigation`,navigation:`Code navigation`,views:`Explorer views`,breadcrumb:`File location`,refresh:`Refresh`,retry:`Retry`,welcome:`Understand your code`,description:`Explore your repositories, find the code you need and follow the changes made by Specrails.`,findCode:`Find code`,viewActivity:`Explore changes`,sourceHint:`Files show the current registered checkout. Activity preserves the changes recorded by runs, including work that has not been integrated yet.`},g={find:`File names`,search:`Contents`,query:`Search query`,filePlaceholder:`Name or path…`,contentPlaceholder:`Literal text in code…`,scope:`Search scope`,allRepositories:`All repositories`,currentRepository:`Current repository`,withinPath:`Search within path`,pathPlaceholder:`Folder or file (optional)`,caseSensitive:`Match case`,hint:`Find a file by name or search for exact text across your code. Results open in their repository and line.`,loading:`Searching…`,failed:`Search could not be completed. Check the connection and retry.`,results:`Results: {{count}}`,partial:`Partial results. Narrow the query, folder or repository to explore further.`,repositoryIncomplete:`{{name}} could not be fully searched.`,noMatches:`No matches found in the scanned files.`,noMatchesPartial:`No matches in the portion searched. Some files or repositories remain unsearched.`},_={description:`Changes recorded by Specrails runs, grouped by repository and run.`,scope:`Activity scope`,failed:`Could not load recorded activity.`,partial:`This history is incomplete. Refresh or choose a repository to inspect more records.`,empty:`No recorded changes in this scope yet. Completed runs will appear here.`,patch:`Patch available`,partialPatch:`Partial patch`,noPatch:`No stored patch`,loading:`Loading activity…`,loadMore:`Load more changes`},v={currentFile:`Current file`,recordedChange:`Recorded change`,recordedNotice:`This patch records a past run. It may differ from the current registered checkout.`,diffFailed:`Could not load the recorded change.`,retry:`Retry`,patchIncomplete:`The stored patch is incomplete. Missing content cannot be reconstructed from this record.`,displayLimited:`Preview limited to {{count}} lines or {{chars}} characters. The remaining patch is not shown.`,patch:`Recorded patch`,find:`Find in file`,wrap:`Wrap lines`,line:`Line number`,go:`Go`,loading:`Loading source viewer…`,sourceUnavailable:`source unavailable`,refresh:`Refresh source`,sourceFailed:`Could not refresh the current file. Any displayed source is the last successful read.`,summaryPartial:`Generated from a partial source snapshot. This summary may not cover the entire file.`,regenerateExplanation:`Refresh explanation`,noEvidence:`No patch evidence was stored for this change.`,excerptEvidence:`This explanation uses incomplete patch evidence.`,viewPatch:`View recorded change`},y={page:n,resizer:r,toolbar:i,provenancePanel:a,kind:o,action:s,viewer:c,summary:l,story:u,history:d,tree:f,monaco:p,ticketFiles:m,explore:h,search:g,activity:_,reader:v};export{t};
@@ -1 +1 @@
1
- var e={resizeFileTree:`Redimensionar árvore de ficheiros`,selectFile:`Selecione um ficheiro para pré-visualizar.`},t={hint:`Arraste para redimensionar. Duplo clique para repor.`},n={scope:`Âmbito`,allAi:`Toda a IA`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copiar caminho do ficheiro`,generateSummary:`Gerar resumo`,regenerateSummary:`Regenerar resumo`,generating:`A gerar…`,regenerating:`A regenerar…`,summaryUnavailable:`Resumo indisponível: {{reason}}`,jobContext:`Contexto do job`,clear:`Limpar`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} ficheiro alterado`,touchedFiles_other:`{{count}} ficheiros alterados`,log:`Log`},i={created:`criado`,modified:`modificado`,deleted:`eliminado`},a={added:`adicionado`,changed:`alterado`,deleted:`eliminado`},o={loadingFile:`A carregar ficheiro…`,showSummary:`Mostrar resumo`,markdownViewMode:`Modo de visualização de Markdown`,preview:`Pré-visualização`,raw:`Original`,missingFile:`Este ficheiro foi alterado por um job de IA mas já não existe na árvore de trabalho.`,binaryFile:`Ficheiro binário.`,tooLarge:`Ficheiro demasiado grande para pré-visualizar ({{size}} MB).`,noContent:`Sem conteúdo disponível.`,pathCopied:`Caminho copiado`,copyPathFailed:`Não foi possível copiar o caminho`,budgetPrompt:`Freestylepassar o limite de orçamento?`,edit:`Editar`,save:`Salvar`,saving:`Salvando…`,saved:`Arquivo salvo`,saveFailed:`Falha ao salvar`},s={generationFailed:`Falha na geração do resumo`,skipped:`Resumo ignorado: {{reason}}`,unavailable:`Resumo indisponível: {{reason}}.`,empty:`Ainda não há resumo para este ficheiro.`,stale:`Desatualizado`,hide:`Ocultar`,reason:{missing:`ficheiro em falta`,binary:`ficheiro binário`,tooLarge:`ficheiro demasiado grande`,providerNoPureOutput:`o fornecedor de IA selecionado não consegue impor um modo seguro apenas de saída`}},c={title_one:`História de construção · {{count}} capítulo`,title_other:`História de construção · {{count}} capítulos`,viewMode:`Modo de visualização da história`,modeStory:`História`,modeLog:`Registro`,loading:`Carregando a história…`,loadFailed:`Não foi possível carregar a história.`,empty:`Ainda não há intervenções de IA registradas para este arquivo.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Alteração de IA sem spec`,openSpec:`Abrir spec #{{ticketId}}`,kindLabel:{created:`Criado`,modified:`Modificado`,deleted:`Excluído`},fallback:{created:`Este arquivo foi criado ao implementar esta spec.`,modified:`Este arquivo foi modificado ao implementar esta spec.`,deleted:`Este arquivo foi excluído ao implementar esta spec.`,createdNoSpec:`Este arquivo foi criado por um job de IA.`,modifiedNoSpec:`Este arquivo foi modificado por um job de IA.`,deletedNoSpec:`Este arquivo foi excluído por um job de IA.`},explain:`Explicar esta alteração`,explaining:`Explicando…`,explainFailed:`Não foi possível gerar a explicação`,explainUnavailable:`A explicação por IA não está disponível porque o fornecedor selecionado não consegue impor um modo seguro apenas de saída.`,budgetReached:`Orçamento mensal de IA atingido.`,generateAnyway:`Gerar mesmo assim`,explainedBy:`Explicado por {{model}}`,linesAdded:`Linhas adicionadas`,linesRemoved:`Linhas removidas`},l={resize:`Redimensionar histórico de alterações por IA`,title_one:`Histórico de alterações por IA · {{count}} alteração`,title_other:`Histórico de alterações por IA · {{count}} alterações`,show:`Mostrar`,hide:`Ocultar`,unknownJob:`job desconhecido`,filterByJob:`Filtrar Código pelo job {{jobId}}`,diff:`Diff`,openSpec:`Abrir spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`A carregar diff...`,diffUnavailable:`Diff indisponível para esta alteração histórica. Os novos jobs guardarão patches automaticamente.`,diffTruncated:`[diff truncado]`},u={jobFiles:`Ficheiros do job`,specFiles:`Ficheiros da spec`,touchedByAi:`Alterados por IA`,allFiles:`Todos os ficheiros`,collapseAll:`Recolher todas as pastas`,expandAll:`Expandir todas as pastas`,touchedCount_one:`{{count}} ficheiro alterado por IA`,touchedCount_other:`{{count}} ficheiros alterados por IA`,loadingFiles:`A carregar ficheiros…`,emptyTouched:`Ainda não há ficheiros alterados por IA. Execute um job ou mude para Todos os ficheiros.`,showAllFiles:`Mostrar todos os ficheiros`,noFiles:`Sem ficheiros.`,folderTouched_one:`{{count}} ficheiro alterado por IA nesta pasta`,folderTouched_other:`{{count}} ficheiros alterados por IA nesta pasta`,jobTitle:`Job {{jobId}}`,createdBySpec:`Criado durante a implementação da spec #{{id}}`,modifiedBySpec:`Modificado durante a implementação da spec #{{id}}`,latestTitleCreated:`O último job de IA adicionou este ficheiro`,latestTitleModified:`O último job de IA alterou este ficheiro`,latestTitleDeleted:`O último job de IA eliminou este ficheiro`},d={loadFailed:`Falha ao carregar o visualizador de código.`,reload:`Recarregar`,loadingEditor:`A carregar editor…`},f={title:`Ficheiros alterados por este ticket`,jobTitle:`Job {{jobId}}`},p={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f};export{a as action,p as default,l as history,i as kind,d as monaco,e as page,r as provenancePanel,t as resizer,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
1
+ var e={resizeFileTree:`Redimensionar árvore de ficheiros`,selectFile:`Selecione um ficheiro para pré-visualizar.`},t={hint:`Arraste para redimensionar. Duplo clique para repor.`},n={scope:`Âmbito`,allAi:`Toda a IA`,spec:`Spec`,ticketIdPlaceholder:`id`,copyFilePath:`Copiar caminho do ficheiro`,generateSummary:`Gerar resumo`,regenerateSummary:`Regenerar resumo`,generating:`A gerar…`,regenerating:`A regenerar…`,summaryUnavailable:`Resumo indisponível: {{reason}}`,jobContext:`Contexto do job`,clear:`Limpar`},r={jobTitle:`Job {{jobId}}`,specTitle:`Spec #{{ticketId}}`,touchedFiles_one:`{{count}} ficheiro alterado`,touchedFiles_other:`{{count}} ficheiros alterados`,log:`Log`},i={created:`criado`,modified:`modificado`,deleted:`eliminado`},a={added:`adicionado`,changed:`alterado`,deleted:`eliminado`},o={loadingFile:`A carregar ficheiro…`,showSummary:`Mostrar resumo`,markdownViewMode:`Modo de visualização de Markdown`,preview:`Pré-visualização`,raw:`Original`,missingFile:`Este ficheiro foi alterado por um job de IA mas já não existe na árvore de trabalho.`,binaryFile:`Ficheiro binário.`,tooLarge:`Ficheiro demasiado grande para pré-visualizar ({{size}} MB).`,noContent:`Sem conteúdo disponível.`,pathCopied:`Caminho copiado`,copyPathFailed:`Não foi possível copiar o caminho`,budgetPrompt:`Freestylepassar o limite de orçamento?`,edit:`Editar`,save:`Salvar`,saving:`Salvando…`,saved:`Arquivo salvo`,saveFailed:`Falha ao salvar`},s={generationFailed:`Falha na geração do resumo`,skipped:`Resumo ignorado: {{reason}}`,unavailable:`Resumo indisponível: {{reason}}.`,empty:`Ainda não há resumo para este ficheiro.`,stale:`Desatualizado`,hide:`Ocultar`,reason:{missing:`ficheiro em falta`,binary:`ficheiro binário`,tooLarge:`ficheiro demasiado grande`,providerNoPureOutput:`o fornecedor de IA selecionado não consegue impor um modo seguro apenas de saída`}},c={title_one:`História de construção · {{count}} capítulo`,title_other:`História de construção · {{count}} capítulos`,viewMode:`Modo de visualização da história`,modeStory:`História`,modeLog:`Registro`,loading:`Carregando a história…`,loadFailed:`Não foi possível carregar a história.`,empty:`Ainda não há intervenções de IA registradas para este arquivo.`,spec:`Spec #{{ticketId}}`,unknownSpec:`Alteração de IA sem spec`,openSpec:`Abrir spec #{{ticketId}}`,kindLabel:{created:`Criado`,modified:`Modificado`,deleted:`Excluído`},fallback:{created:`Este arquivo foi criado ao implementar esta spec.`,modified:`Este arquivo foi modificado ao implementar esta spec.`,deleted:`Este arquivo foi excluído ao implementar esta spec.`,createdNoSpec:`Este arquivo foi criado por um job de IA.`,modifiedNoSpec:`Este arquivo foi modificado por um job de IA.`,deletedNoSpec:`Este arquivo foi excluído por um job de IA.`},explain:`Explicar esta alteração`,explaining:`Explicando…`,explainFailed:`Não foi possível gerar a explicação`,explainUnavailable:`A explicação por IA não está disponível porque o fornecedor selecionado não consegue impor um modo seguro apenas de saída.`,budgetReached:`Orçamento mensal de IA atingido.`,generateAnyway:`Gerar mesmo assim`,explainedBy:`Explicado por {{model}}`,linesAdded:`Linhas adicionadas`,linesRemoved:`Linhas removidas`},l={resize:`Redimensionar histórico de alterações por IA`,title_one:`Histórico de alterações por IA · {{count}} alteração`,title_other:`Histórico de alterações por IA · {{count}} alterações`,show:`Mostrar`,hide:`Ocultar`,unknownJob:`job desconhecido`,filterByJob:`Filtrar Código pelo job {{jobId}}`,diff:`Diff`,openSpec:`Abrir spec #{{ticketId}}`,specChip:`spec #{{ticketId}}`,loadingDiff:`A carregar diff...`,diffUnavailable:`Diff indisponível para esta alteração histórica. Os novos jobs guardarão patches automaticamente.`,diffTruncated:`[diff truncado]`},u={jobFiles:`Ficheiros do job`,specFiles:`Ficheiros da spec`,touchedByAi:`Alterados por IA`,allFiles:`Todos os ficheiros`,collapseAll:`Recolher todas as pastas`,expandAll:`Expandir todas as pastas`,touchedCount_one:`{{count}} ficheiro alterado por IA`,touchedCount_other:`{{count}} ficheiros alterados por IA`,loadingFiles:`A carregar ficheiros…`,emptyTouched:`Ainda não há ficheiros alterados por IA. Execute um job ou mude para Todos os ficheiros.`,showAllFiles:`Mostrar todos os ficheiros`,noFiles:`Sem ficheiros.`,folderTouched_one:`{{count}} ficheiro alterado por IA nesta pasta`,folderTouched_other:`{{count}} ficheiros alterados por IA nesta pasta`,jobTitle:`Job {{jobId}}`,createdBySpec:`Criado durante a implementação da spec #{{id}}`,modifiedBySpec:`Modificado durante a implementação da spec #{{id}}`,latestTitleCreated:`O último job de IA adicionou este ficheiro`,latestTitleModified:`O último job de IA alterou este ficheiro`,latestTitleDeleted:`O último job de IA eliminou este ficheiro`,loadFailed:`Não foi possível carregar a árvore. Os arquivos visíveis são do último carregamento bem-sucedido.`,partial:`Árvore parcial. Use Buscar para restringir a pasta ou o nome, ou atualize novamente.`},d={loadFailed:`Falha ao carregar o visualizador de código.`,reload:`Recarregar`,loadingEditor:`A carregar editor…`},f={title:`Ficheiros alterados por este ticket`,jobTitle:`Job {{jobId}}`,loading:`Carregando arquivos registrados…`,loadFailed:`Não foi possível carregar os arquivos registrados.`,retry:`Tentar novamente`,loadMore:`Carregar mais arquivos`,partial:`Alguns arquivos registrados não puderam ser verificados. Tente novamente para atualizar.`},p={files:`Arquivos`,search:`Buscar`,activity:`Atividade`,back:`Voltar`,forward:`Avançar`,hideNavigation:`Ocultar navegação`,showNavigation:`Mostrar navegação`,navigation:`Navegação de código`,views:`Visualizações do explorador`,breadcrumb:`Localização do arquivo`,refresh:`Atualizar`,retry:`Tentar novamente`,welcome:`Entenda seu código`,description:`Explore seus repositórios, encontre o código necessário e acompanhe as alterações do Specrails.`,findCode:`Encontrar código`,viewActivity:`Explorar alterações`,sourceHint:`Arquivos mostra o conteúdo atual do repositório registrado. Atividade preserva as alterações das execuções, incluindo trabalho ainda não integrado.`},m={find:`Nomes de arquivos`,search:`Conteúdo`,query:`Texto da busca`,filePlaceholder:`Nome ou caminho…`,contentPlaceholder:`Texto literal no código…`,scope:`Escopo da busca`,allRepositories:`Todos os repositórios`,currentRepository:`Repositório atual`,withinPath:`Buscar em um caminho`,pathPlaceholder:`Pasta ou arquivo (opcional)`,caseSensitive:`Diferenciar maiúsculas`,hint:`Encontre arquivos pelo nome ou busque texto exato no código. Os resultados abrem o repositório e a linha correspondentes.`,loading:`Buscando…`,failed:`Não foi possível concluir a busca. Verifique a conexão e tente novamente.`,results:`Resultados: {{count}}`,partial:`Resultados parciais. Restrinja o texto, a pasta ou o repositório para continuar.`,repositoryIncomplete:`Não foi possível pesquisar {{name}} por completo.`,noMatches:`Nenhum resultado nos arquivos examinados.`,noMatchesPartial:`Nenhum resultado na parte examinada. Alguns arquivos ou repositórios não foram pesquisados.`},h={description:`Alterações registradas pelo Specrails, agrupadas por repositório e execução.`,scope:`Escopo da atividade`,failed:`Não foi possível carregar a atividade registrada.`,partial:`Este histórico está incompleto. Atualize ou escolha um repositório para ver mais registros.`,empty:`Ainda não há alterações registradas neste escopo. As execuções concluídas aparecerão aqui.`,patch:`Patch disponível`,partialPatch:`Patch parcial`,noPatch:`Sem patch salvo`,loading:`Carregando atividade…`,loadMore:`Carregar mais alterações`},g={currentFile:`Arquivo atual`,recordedChange:`Alteração registrada`,recordedNotice:`Este patch registra uma execução anterior. Ele pode diferir do conteúdo atual do repositório registrado.`,diffFailed:`Não foi possível carregar a alteração registrada.`,retry:`Tentar novamente`,patchIncomplete:`O patch salvo está incompleto. Não é possível reconstruir o conteúdo ausente a partir deste registro.`,displayLimited:`Prévia limitada a {{count}} linhas ou {{chars}} caracteres. O restante do patch não é mostrado.`,patch:`Patch registrado`,find:`Buscar no arquivo`,wrap:`Quebrar linhas`,line:`Número da linha`,go:`Ir`,loading:`Carregando visualizador de código…`,sourceUnavailable:`código indisponível`,refresh:`Atualizar código`,sourceFailed:`Não foi possível atualizar o arquivo atual. O código exibido é da última leitura bem-sucedida.`,summaryPartial:`Gerado a partir de uma captura parcial do código. O resumo pode não cobrir o arquivo inteiro.`,regenerateExplanation:`Atualizar explicação`,noEvidence:`Nenhum patch foi salvo como evidência desta alteração.`,excerptEvidence:`Esta explicação utiliza evidências de um patch incompleto.`,viewPatch:`Ver alteração registrada`},_={page:e,resizer:t,toolbar:n,provenancePanel:r,kind:i,action:a,viewer:o,summary:s,story:c,history:l,tree:u,monaco:d,ticketFiles:f,explore:p,search:m,activity:h,reader:g};export{a as action,h as activity,_ as default,p as explore,l as history,i as kind,d as monaco,e as page,r as provenancePanel,g as reader,t as resizer,m as search,c as story,s as summary,f as ticketFiles,n as toolbar,u as tree,o as viewer};
@@ -0,0 +1 @@
1
+ var e={label:`Palette comandi`,searchPlaceholder:`Cerca progetti, comandi, job...`,searchPlaceholderAgent:`Cerca missioni, progetti, job...`,noResults:`Nessun risultato trovato.`,activeBadge:`attivo`,groups:{projects:`Progetti`,missions:`Missioni`,spec:`Spec`,jobs:`Job`,navigation:`Navigazione`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Analytics di Desktop`,projectAnalytics:`Analytics del progetto`,activityFeed:`Feed attività`,desktopSettings:`Impostazioni Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Comprimi barra laterale sinistra (mantieni fissata)`,unpinLeft:`Sblocca barra laterale sinistra`,pinLeftOpen:`Fissa aperta la barra laterale sinistra`,collapseRightKeepPinned:`Comprimi barra laterale destra (mantieni fissata)`,unpinRight:`Sblocca barra laterale destra`,pinRightOpen:`Fissa aperta la barra laterale destra`},footer:{navigate:`naviga`,select:`seleziona`,close:`chiudi`},missions:{home:`Home`}},t={queued:`{{name}} in coda`,queuing:`Accodamento di {{name}}...`},n={spawnFailed:`Impossibile avviare il comando`},r={sections:{discovery:`Discovery`,discoverySubtitle:`Esplora e definisci il tuo prodotto`,delivery:`Delivery`,deliverySubtitle:`Costruisci e rilascia funzionalità`,others:`Altri`},displayNames:{proposeSpec:`Proposta personalizzata`,updateBacklog:`Auto-proposta`,productBacklog:`Auto-selezione spec`},emptyState:{title:`Nessun comando installato`,hint:`Esegui <1>/setup</1> in Claude Code per installare i comandi specrails`},runs_one:`{{count}} esecuzione`,runs_other:`{{count}} esecuzioni`,tooltip:{opensWizard:`Apre la procedura guidata`}},i={title:`Scorciatoie da tastiera`,subtitle:`Premi <1>?</1> ovunque per mostrare o nascondere questo pannello`,categories:{general:`Generale`,navigation:`Navigazione`,actions:`Azioni`},items:{showCheatsheet:`Mostra scorciatoie da tastiera`,closeModal:`Chiudi modale / barra laterale`,toggleRightSidebar:`Mostra/nascondi barra laterale destra`,toggleLeftSidebar:`Mostra/nascondi barra laterale sinistra`,toggleTerminal:`Mostra/nascondi pannello terminale`,toggleAgent:`Mostra/nascondi chat dell'agente`,navigateProjectPageWithAgents:`Vai alla pagina del progetto (Dashboard/Job/Analytics/Agenti/Impostazioni)`,navigateProjectPage:`Vai alla pagina del progetto (Dashboard/Job/Analytics/Impostazioni)`,switchProject:`Passa al progetto per posizione`,goDashboard:`Vai alla Dashboard`,goActivity:`Vai ad Attività / Job`,goAnalytics:`Vai ad Analytics`,goSettings:`Vai alle Impostazioni`,nextItem:`Elemento successivo nell'elenco`,prevItem:`Elemento precedente nell'elenco`}},a={title:{available:`Aggiornamento disponibile`,downloading:`Download dell'aggiornamento`,installing:`Installazione dell'aggiornamento`,ready:`Aggiornamento pronto`,error:`Aggiornamento non riuscito`},desc:{available:`Una nuova versione di Specrails è pronta per l'installazione.`,fetching:`Recupero di {{size}}…`,progress:`{{percent}}% · {{downloaded}} di {{total}}`,installing:`Verifica della firma e completamento…`,ready:`Riavvia per avviare la versione {{version}}.`,errorFallback:`Impossibile completare l'aggiornamento. Riprova.`},pill:{downloading:`Download`,installing:`Installazione`,ready:`Pronto`},actions:{restart:`Riavvia`,later:`Più tardi`,update:`Aggiorna`,installing:`Installazione…`,tryAgain:`Riprova`,dismiss:`Ignora`},mockReady:`Aggiornamento mock pronto — riavvio saltato`,errors:{installFailed:`Impossibile installare l'aggiornamento`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job completato`,jobFailed:`Job non riuscito`,jobStuck:`L'esecuzione sembra bloccata`,jobStuckBody_one:`Nessuna attività da {{count}} minuto — aprila per controllare`,jobStuckBody_other:`Nessuna attività da {{count}} minuti — aprila per controllare`,unknownCommand:`Comando sconosciuto`,jobStuckStop:`Ferma esecuzione`,jobStuckStopped:`Esecuzione fermata`,jobStuckStopFailed:`Impossibile fermare l'esecuzione`,providerLimit:`Limite d'uso del provider raggiunto`,providerLimitBody:`{{provider}} ha rifiutato la richiesta: limite d'uso raggiunto — si azzera {{resetsAt}}. La run si è fermata; rilanciala o usa Recupera e riprova dopo l'azzeramento.`,providerLimitBodyNoReset:`{{provider}} ha rifiutato la richiesta: limite d'uso raggiunto. La run si è fermata; rilanciala dopo l'azzeramento.`},s={emptyState:{title:`Ancora nessun template.`,hint:`Salva sequenze di comandi per eseguirle con un clic.`},createButton:`Crea template`,newButton:`Nuovo template`,steps_one:`{{count}} passaggio`,steps_other:`{{count}} passaggi`,moreCommands_one:`+{{count}} altro`,moreCommands_other:`+{{count}} altri`,run:`Esegui`,queuing:`Accodamento…`,aria:{edit:`Modifica template`,delete:`Elimina template`},confirmDelete:`Eliminare il template "{{name}}"?`,toasts:{queuedJobs_one:`{{count}} job accodato da "{{name}}"`,queuedJobs_other:`{{count}} job accodati da "{{name}}"`,deleted:`Template "{{name}}" eliminato`},errors:{runFailed:`Impossibile eseguire il template`,deleteFailed:`Impossibile eliminare il template`}},c={editTitle:`Modifica template`,newTitle:`Nuovo template`,nameLabel:`Nome`,namePlaceholder:`es. Pipeline completa`,descriptionLabel:`Descrizione (facoltativa)`,descriptionPlaceholder:`Cosa fa questo rail?`,stepsLabel:`Passaggi (comandi o prompt liberi)`,stepPlaceholder:`Seleziona un comando o scrivi un prompt libero...`,aria:{moveUp:`Sposta su`,removeStep:`Rimuovi passaggio`},update:`Aggiorna`,create:`Crea`,errors:{nameRequired:`Il nome è obbligatorio`,stepRequired:`Serve almeno un passaggio`,saveFailed:`Impossibile salvare il template`},toasts:{updated:`Template aggiornato`,created:`Template creato`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({default:()=>d,errors:()=>i,grid:()=>a,notifications:()=>c,palette:()=>n,shortcuts:()=>o,templateDialog:()=>u,templates:()=>l,toasts:()=>r,update:()=>s}),n={label:`Command palette`,searchPlaceholder:`Search projects, commands, jobs...`,searchPlaceholderAgent:`Search missions, projects, jobs...`,noResults:`No results found.`,activeBadge:`active`,groups:{projects:`Projects`,missions:`Missions`,spec:`Spec`,jobs:`Jobs`,navigation:`Navigation`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Desktop Analytics`,projectAnalytics:`Project Analytics`,activityFeed:`Activity Feed`,desktopSettings:`Desktop Settings`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Collapse left sidebar (keep pinned)`,unpinLeft:`Unpin left sidebar`,pinLeftOpen:`Pin left sidebar open`,collapseRightKeepPinned:`Collapse right sidebar (keep pinned)`,unpinRight:`Unpin right sidebar`,pinRightOpen:`Pin right sidebar open`},footer:{navigate:`navigate`,select:`select`,close:`close`},missions:{home:`Home`}},r={queued:`{{name}} queued`,queuing:`Queuing {{name}}...`},i={spawnFailed:`Failed to spawn command`},a={sections:{discovery:`Discovery`,discoverySubtitle:`Explore & define your product`,delivery:`Delivery`,deliverySubtitle:`Build & ship features`,others:`Others`},displayNames:{proposeSpec:`Custom-Propose`,updateBacklog:`Auto-propose`,productBacklog:`Auto-Select Specs`},emptyState:{title:`No commands installed`,hint:`Run <1>/setup</1> in Claude Code to install specrails commands`},runs_one:`{{count}} run`,runs_other:`{{count}} runs`,tooltip:{opensWizard:`Opens guided wizard`}},o={title:`Keyboard Shortcuts`,subtitle:`Press <1>?</1> anywhere to toggle this panel`,categories:{general:`General`,navigation:`Navigation`,actions:`Actions`},items:{showCheatsheet:`Show keyboard shortcuts`,closeModal:`Close modal / sidebar`,toggleRightSidebar:`Toggle right sidebar`,toggleLeftSidebar:`Toggle left sidebar`,toggleTerminal:`Toggle terminal panel`,toggleAgent:`Toggle agent chat`,navigateProjectPageWithAgents:`Navigate to project page (Dashboard/Jobs/Analytics/Agents/Settings)`,navigateProjectPage:`Navigate to project page (Dashboard/Jobs/Analytics/Settings)`,switchProject:`Switch to project by position`,goDashboard:`Go to Dashboard`,goActivity:`Go to Activity / Jobs`,goAnalytics:`Go to Analytics`,goSettings:`Go to Settings`,nextItem:`Next item in list`,prevItem:`Previous item in list`}},s={title:{available:`Update available`,downloading:`Downloading update`,installing:`Installing update`,ready:`Update ready`,error:`Update failed`},desc:{available:`A new version of Specrails is ready to install.`,fetching:`Fetching {{size}}…`,progress:`{{percent}}% · {{downloaded}} of {{total}}`,installing:`Verifying signature and finishing up…`,ready:`Restart to launch version {{version}}.`,errorFallback:`Couldn’t complete the update. Please try again.`},pill:{downloading:`Downloading`,installing:`Installing`,ready:`Ready`},actions:{restart:`Restart`,later:`Later`,update:`Update`,installing:`Installing…`,tryAgain:`Try again`,dismiss:`Dismiss`},mockReady:`Mock update ready — restart skipped`,errors:{installFailed:`Could not install update`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},c={jobCompleted:`Job completed`,jobFailed:`Job failed`,jobStuck:`Run seems stuck`,jobStuckBody_one:`No activity for {{count}} minute — open it to check`,jobStuckBody_other:`No activity for {{count}} minutes — open it to check`,unknownCommand:`Unknown command`,jobStuckStop:`Stop run`,jobStuckStopped:`Run stopped`,jobStuckStopFailed:`Could not stop the run`,providerLimit:`Provider usage limit reached`,providerLimitBody:`{{provider}} refused the request: usage limit reached — resets {{resetsAt}}. The run stopped; relaunch or Recover & retry after the reset.`,providerLimitBodyNoReset:`{{provider}} refused the request: usage limit reached. The run stopped; relaunch after the limit resets.`},l={emptyState:{title:`No templates yet.`,hint:`Save command sequences to run them with one click.`},createButton:`Create template`,newButton:`New template`,steps_one:`{{count}} step`,steps_other:`{{count}} steps`,moreCommands_one:`+{{count}} more`,moreCommands_other:`+{{count}} more`,run:`Run`,queuing:`Queuing…`,aria:{edit:`Edit template`,delete:`Delete template`},confirmDelete:`Delete template "{{name}}"?`,toasts:{queuedJobs_one:`Queued {{count}} job from "{{name}}"`,queuedJobs_other:`Queued {{count}} jobs from "{{name}}"`,deleted:`Template "{{name}}" deleted`},errors:{runFailed:`Failed to run template`,deleteFailed:`Failed to delete template`}},u={editTitle:`Edit Template`,newTitle:`New Template`,nameLabel:`Name`,namePlaceholder:`e.g. Full pipeline`,descriptionLabel:`Description (optional)`,descriptionPlaceholder:`What does this rail do?`,stepsLabel:`Steps (commands or free prompts)`,stepPlaceholder:`Select a command or type a free prompt...`,aria:{moveUp:`Move up`,removeStep:`Remove step`},update:`Update`,create:`Create`,errors:{nameRequired:`Name is required`,stepRequired:`At least one step is required`,saveFailed:`Failed to save template`},toasts:{updated:`Template updated`,created:`Template created`}},d={palette:n,toasts:r,errors:i,grid:a,shortcuts:o,update:s,notifications:c,templates:l,templateDialog:u};export{t};
@@ -0,0 +1 @@
1
+ var e={label:`命令面板`,searchPlaceholder:`搜索项目、命令、任务...`,searchPlaceholderAgent:`搜索任务、项目、作业...`,noResults:`未找到结果。`,activeBadge:`当前`,groups:{projects:`项目`,missions:`任务`,spec:`Spec`,jobs:`任务`,navigation:`导航`},nav:{dashboard:`仪表盘`,desktopAnalytics:`Desktop 分析`,projectAnalytics:`项目分析`,activityFeed:`活动流`,desktopSettings:`Desktop 设置`,docs:`文档`},sidebar:{collapseLeftKeepPinned:`收起左侧边栏(保持固定)`,unpinLeft:`取消固定左侧边栏`,pinLeftOpen:`固定并展开左侧边栏`,collapseRightKeepPinned:`收起右侧边栏(保持固定)`,unpinRight:`取消固定右侧边栏`,pinRightOpen:`固定并展开右侧边栏`},footer:{navigate:`导航`,select:`选择`,close:`关闭`},missions:{home:`主页`}},t={queued:`{{name}} 已加入队列`,queuing:`正在将 {{name}} 加入队列...`},n={spawnFailed:`启动命令失败`},r={sections:{discovery:`探索`,discoverySubtitle:`探索并定义你的产品`,delivery:`交付`,deliverySubtitle:`构建并交付功能`,others:`其他`},displayNames:{proposeSpec:`自定义提案`,updateBacklog:`自动提案`,productBacklog:`自动选择 Spec`},emptyState:{title:`未安装命令`,hint:`在 Claude Code 中运行 <1>/setup</1> 以安装 specrails 命令`},runs_one:`{{count}} 次运行`,runs_other:`{{count}} 次运行`,tooltip:{opensWizard:`打开引导向导`}},i={title:`键盘快捷键`,subtitle:`在任意位置按 <1>?</1> 切换此面板`,categories:{general:`通用`,navigation:`导航`,actions:`操作`},items:{showCheatsheet:`显示键盘快捷键`,closeModal:`关闭弹窗 / 侧边栏`,toggleRightSidebar:`切换右侧边栏`,toggleLeftSidebar:`切换左侧边栏`,toggleTerminal:`切换终端面板`,toggleAgent:`切换智能体聊天`,navigateProjectPageWithAgents:`导航到项目页面(仪表盘/任务/分析/Agent/设置)`,navigateProjectPage:`导航到项目页面(仪表盘/任务/分析/设置)`,switchProject:`按位置切换项目`,goDashboard:`前往仪表盘`,goActivity:`前往活动 / 任务`,goAnalytics:`前往分析`,goSettings:`前往设置`,nextItem:`列表中的下一项`,prevItem:`列表中的上一项`}},a={title:{available:`有可用更新`,downloading:`正在下载更新`,installing:`正在安装更新`,ready:`更新已就绪`,error:`更新失败`},desc:{available:`Specrails 新版本已可安装。`,fetching:`正在获取 {{size}}…`,progress:`{{percent}}% · {{downloaded}} / {{total}}`,installing:`正在验证签名并完成…`,ready:`重启以启动版本 {{version}}。`,errorFallback:`无法完成更新。请重试。`},pill:{downloading:`下载中`,installing:`安装中`,ready:`已就绪`},actions:{restart:`重启`,later:`稍后`,update:`更新`,installing:`安装中…`,tryAgain:`重试`,dismiss:`忽略`},mockReady:`模拟更新已就绪 — 已跳过重启`,errors:{installFailed:`无法安装更新`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`任务已完成`,jobFailed:`任务失败`,jobStuck:`运行似乎卡住了`,jobStuckBody_one:`已有 {{count}} 分钟没有活动 — 打开查看`,jobStuckBody_other:`已有 {{count}} 分钟没有活动 — 打开查看`,unknownCommand:`未知命令`,jobStuckStop:`停止运行`,jobStuckStopped:`已停止运行`,jobStuckStopFailed:`无法停止运行`,providerLimit:`已达到提供商用量限额`,providerLimitBody:`{{provider}} 拒绝了请求:已达到用量限额 — {{resetsAt}} 重置。运行已停止;重置后重新启动或使用“恢复并重试”。`,providerLimitBodyNoReset:`{{provider}} 拒绝了请求:已达到用量限额。运行已停止;限额重置后重新启动。`},s={emptyState:{title:`暂无模板。`,hint:`保存命令序列,一键运行。`},createButton:`创建模板`,newButton:`新建模板`,steps_one:`{{count}} 个步骤`,steps_other:`{{count}} 个步骤`,moreCommands_one:`+{{count}} 更多`,moreCommands_other:`+{{count}} 更多`,run:`运行`,queuing:`加入队列中…`,aria:{edit:`编辑模板`,delete:`删除模板`},confirmDelete:`删除模板“{{name}}”?`,toasts:{queuedJobs_one:`已从“{{name}}”将 {{count}} 个任务加入队列`,queuedJobs_other:`已从“{{name}}”将 {{count}} 个任务加入队列`,deleted:`模板“{{name}}”已删除`},errors:{runFailed:`运行模板失败`,deleteFailed:`删除模板失败`}},c={editTitle:`编辑模板`,newTitle:`新建模板`,nameLabel:`名称`,namePlaceholder:`例如:完整流水线`,descriptionLabel:`描述(可选)`,descriptionPlaceholder:`这个 Rail 做什么?`,stepsLabel:`步骤(命令或自由提示词)`,stepPlaceholder:`选择命令或输入自由提示词...`,aria:{moveUp:`上移`,removeStep:`移除步骤`},update:`更新`,create:`创建`,errors:{nameRequired:`名称为必填项`,stepRequired:`至少需要一个步骤`,saveFailed:`保存模板失败`},toasts:{updated:`模板已更新`,created:`模板已创建`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
@@ -0,0 +1 @@
1
+ var e={label:`コマンドパレット`,searchPlaceholder:`プロジェクト、コマンド、ジョブを検索...`,searchPlaceholderAgent:`ミッション、プロジェクト、ジョブを検索...`,noResults:`結果が見つかりません。`,activeBadge:`アクティブ`,groups:{projects:`プロジェクト`,missions:`ミッション`,spec:`スペック`,jobs:`ジョブ`,navigation:`ナビゲーション`},nav:{dashboard:`ダッシュボード`,desktopAnalytics:`Desktop 分析`,projectAnalytics:`プロジェクト分析`,activityFeed:`アクティビティフィード`,desktopSettings:`Desktop 設定`,docs:`ドキュメント`},sidebar:{collapseLeftKeepPinned:`左サイドバーを折りたたむ (ピン留めは維持)`,unpinLeft:`左サイドバーのピン留めを解除`,pinLeftOpen:`左サイドバーを開いた状態でピン留め`,collapseRightKeepPinned:`右サイドバーを折りたたむ (ピン留めは維持)`,unpinRight:`右サイドバーのピン留めを解除`,pinRightOpen:`右サイドバーを開いた状態でピン留め`},footer:{navigate:`移動`,select:`選択`,close:`閉じる`},missions:{home:`ホーム`}},t={queued:`{{name}} をキューに追加しました`,queuing:`{{name}} をキューに追加中...`},n={spawnFailed:`コマンドの起動に失敗しました`},r={sections:{discovery:`ディスカバリー`,discoverySubtitle:`プロダクトを探索して定義`,delivery:`デリバリー`,deliverySubtitle:`機能を構築してリリース`,others:`その他`},displayNames:{proposeSpec:`カスタム提案`,updateBacklog:`自動提案`,productBacklog:`スペック自動選択`},emptyState:{title:`コマンドがインストールされていません`,hint:`Claude Code で <1>/setup</1> を実行して specrails コマンドをインストールしてください`},runs_one:`{{count}} 回実行`,runs_other:`{{count}} 回実行`,tooltip:{opensWizard:`ガイド付きウィザードを開きます`}},i={title:`キーボードショートカット`,subtitle:`どこでも <1>?</1> を押すとこのパネルを切り替えられます`,categories:{general:`一般`,navigation:`ナビゲーション`,actions:`アクション`},items:{showCheatsheet:`キーボードショートカットを表示`,closeModal:`モーダル / サイドバーを閉じる`,toggleRightSidebar:`右サイドバーの表示を切り替え`,toggleLeftSidebar:`左サイドバーの表示を切り替え`,toggleTerminal:`ターミナルパネルの表示を切り替え`,toggleAgent:`エージェントチャットの切り替え`,navigateProjectPageWithAgents:`プロジェクトページへ移動 (ダッシュボード/ジョブ/分析/エージェント/設定)`,navigateProjectPage:`プロジェクトページへ移動 (ダッシュボード/ジョブ/分析/設定)`,switchProject:`位置でプロジェクトを切り替え`,goDashboard:`ダッシュボードへ移動`,goActivity:`アクティビティ / ジョブへ移動`,goAnalytics:`分析へ移動`,goSettings:`設定へ移動`,nextItem:`リストの次の項目`,prevItem:`リストの前の項目`}},a={title:{available:`アップデートがあります`,downloading:`アップデートをダウンロード中`,installing:`アップデートをインストール中`,ready:`アップデート準備完了`,error:`アップデートに失敗しました`},desc:{available:`Specrails の新しいバージョンをインストールできます。`,fetching:`{{size}} を取得中…`,progress:`{{percent}}% · {{total}} 中 {{downloaded}}`,installing:`署名を検証して仕上げています…`,ready:`再起動するとバージョン {{version}} が起動します。`,errorFallback:`アップデートを完了できませんでした。もう一度お試しください。`},pill:{downloading:`ダウンロード中`,installing:`インストール中`,ready:`準備完了`},actions:{restart:`再起動`,later:`後で`,update:`アップデート`,installing:`インストール中…`,tryAgain:`再試行`,dismiss:`閉じる`},mockReady:`モックアップデート準備完了 — 再起動はスキップされました`,errors:{installFailed:`アップデートをインストールできませんでした`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`ジョブが完了しました`,jobFailed:`ジョブが失敗しました`,jobStuck:`実行が停止しているようです`,jobStuckBody_one:`{{count}} 分間 動きがありません — 開いて確認してください`,jobStuckBody_other:`{{count}} 分間 動きがありません — 開いて確認してください`,unknownCommand:`不明なコマンド`,jobStuckStop:`実行を停止`,jobStuckStopped:`実行を停止しました`,jobStuckStopFailed:`実行を停止できませんでした`,providerLimit:`プロバイダーの利用上限に達しました`,providerLimitBody:`{{provider}} がリクエストを拒否しました:利用上限に達しています — {{resetsAt}} にリセット。実行は停止しました。リセット後に再起動するか「復旧して再試行」してください。`,providerLimitBodyNoReset:`{{provider}} がリクエストを拒否しました:利用上限に達しています。実行は停止しました。上限のリセット後に再起動してください。`},s={emptyState:{title:`テンプレートはまだありません。`,hint:`コマンドの並びを保存してワンクリックで実行できます。`},createButton:`テンプレートを作成`,newButton:`新しいテンプレート`,steps_one:`{{count}} ステップ`,steps_other:`{{count}} ステップ`,moreCommands_one:`+{{count}} 件`,moreCommands_other:`+{{count}} 件`,run:`実行`,queuing:`キューに追加中…`,aria:{edit:`テンプレートを編集`,delete:`テンプレートを削除`},confirmDelete:`テンプレート「{{name}}」を削除しますか?`,toasts:{queuedJobs_one:`「{{name}}」から {{count}} 件のジョブをキューに追加しました`,queuedJobs_other:`「{{name}}」から {{count}} 件のジョブをキューに追加しました`,deleted:`テンプレート「{{name}}」を削除しました`},errors:{runFailed:`テンプレートの実行に失敗しました`,deleteFailed:`テンプレートの削除に失敗しました`}},c={editTitle:`テンプレートを編集`,newTitle:`新しいテンプレート`,nameLabel:`名前`,namePlaceholder:`例: フルパイプライン`,descriptionLabel:`説明 (任意)`,descriptionPlaceholder:`このレールは何をしますか?`,stepsLabel:`ステップ (コマンドまたは自由なプロンプト)`,stepPlaceholder:`コマンドを選択するか、自由なプロンプトを入力...`,aria:{moveUp:`上へ移動`,removeStep:`ステップを削除`},update:`更新`,create:`作成`,errors:{nameRequired:`名前は必須です`,stepRequired:`少なくとも 1 つのステップが必要です`,saveFailed:`テンプレートの保存に失敗しました`},toasts:{updated:`テンプレートを更新しました`,created:`テンプレートを作成しました`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};