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
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-Bjbbp_KS.js";import{a as t}from"./useDesktop-BQVt8lFd.js";var n=e(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]);async function r(e){let t=await e.text(),n=t?JSON.parse(t):{};if(!e.ok)throw Error(n.error||`Request failed (${e.status})`);return n}function i(e){return e??t()}var a=e=>({method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),o={getConnection(e){return fetch(`${i(e)}/jira/connection`).then(e=>r(e))},test(e,t){return fetch(`${i(t)}/jira/test`,a(e)).then(e=>r(e))},discoverProjects(e,t){return fetch(`${i(t)}/jira/discover-projects`,a(e)).then(e=>r(e))},discoverStatuses(e,t){return fetch(`${i(t)}/jira/discover-statuses`,a(e)).then(e=>r(e))},connect(e,t){return fetch(`${i(t)}/jira/connect`,a(e)).then(e=>r(e))},setEnabled(e,t){return fetch(`${i(t)}/jira/connection`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:e})}).then(e=>r(e))},patchConnection(e,t){return fetch(`${i(t)}/jira/connection`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>r(e))},listStatuses(e){return fetch(`${i(e)}/jira/statuses`).then(e=>r(e))},moveSpecToStatus(e,t,n){return fetch(`${i(n)}/jira/specs/${e}/move-to-status`,a({status:t})).then(e=>r(e))},discardSpec(e,t,n){return fetch(`${i(n)}/jira/specs/${e}/discard`,a({comment:t})).then(e=>r(e))},getSpecDetails(e,t){return fetch(`${i(t)}/jira/specs/${e}/details`).then(e=>r(e))},disconnect(e){return fetch(`${i(e)}/jira/connection`,{method:`DELETE`}).then(e=>r(e))},syncNow(e){return fetch(`${i(e)}/jira/sync`,{method:`POST`}).then(e=>r(e))},resume(e){return fetch(`${i(e)}/jira/resume`,{method:`POST`}).then(e=>r(e))},listOutbox(e,t){let n=e?`?state=${e}`:``;return fetch(`${i(t)}/jira/outbox${n}`).then(e=>r(e))},retryOutbox(e,t){return fetch(`${i(t)}/jira/outbox/${e}/retry`,{method:`POST`}).then(e=>r(e))}};export{n,o as t};
1
+ import{t as e}from"./createLucideIcon-Bjbbp_KS.js";import{a as t}from"./useDesktop-RSMTyy7V.js";var n=e(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]);async function r(e){let t=await e.text(),n=t?JSON.parse(t):{};if(!e.ok)throw Error(n.error||`Request failed (${e.status})`);return n}function i(e){return e??t()}var a=e=>({method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),o={getConnection(e){return fetch(`${i(e)}/jira/connection`).then(e=>r(e))},test(e,t){return fetch(`${i(t)}/jira/test`,a(e)).then(e=>r(e))},discoverProjects(e,t){return fetch(`${i(t)}/jira/discover-projects`,a(e)).then(e=>r(e))},discoverStatuses(e,t){return fetch(`${i(t)}/jira/discover-statuses`,a(e)).then(e=>r(e))},connect(e,t){return fetch(`${i(t)}/jira/connect`,a(e)).then(e=>r(e))},setEnabled(e,t){return fetch(`${i(t)}/jira/connection`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:e})}).then(e=>r(e))},patchConnection(e,t){return fetch(`${i(t)}/jira/connection`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>r(e))},listStatuses(e){return fetch(`${i(e)}/jira/statuses`).then(e=>r(e))},moveSpecToStatus(e,t,n){return fetch(`${i(n)}/jira/specs/${e}/move-to-status`,a({status:t})).then(e=>r(e))},discardSpec(e,t,n){return fetch(`${i(n)}/jira/specs/${e}/discard`,a({comment:t})).then(e=>r(e))},getSpecDetails(e,t){return fetch(`${i(t)}/jira/specs/${e}/details`).then(e=>r(e))},disconnect(e){return fetch(`${i(e)}/jira/connection`,{method:`DELETE`}).then(e=>r(e))},syncNow(e){return fetch(`${i(e)}/jira/sync`,{method:`POST`}).then(e=>r(e))},resume(e){return fetch(`${i(e)}/jira/resume`,{method:`POST`}).then(e=>r(e))},listOutbox(e,t){let n=e?`?state=${e}`:``;return fetch(`${i(t)}/jira/outbox${n}`).then(e=>r(e))},retryOutbox(e,t){return fetch(`${i(t)}/jira/outbox/${e}/retry`,{method:`POST`}).then(e=>r(e))}};export{n,o as t};
@@ -1 +1 @@
1
- var e={running:`en cours`,completed:`terminé`,done:`fini`,failed:`échoué`,canceled:`annulé`,queued:`en attente`,zombie:`zombie`,skipped:`ignoré`},t={running:`Le job est en cours d'exécution`,completed:`Le job s'est terminé avec succès`,failed:`Le job s'est terminé avec un code de sortie non nul`,canceled:`Le job a été annulé manuellement`,queued:`Le job attend dans la file`,queuedToRun:`Le job attend de s'exécuter`,zombie:`Le job a été arrêté automatiquement après une inactivité prolongée`,skipped:`Le job a été ignoré car un job parent du pipeline a échoué`},n={running:`en cours`,completed:`terminé`,failed:`échoué`,canceled:`annulé`,zombie_terminated:`zombie`,queued:`en attente`,skipped:`ignoré`},r={title:`Jobs`,exportJobs:`Exporter les jobs`,proposalDeleted:`Proposition supprimée`,proposal:{title:`Proposition`,noContent:`Aucun contenu de proposition pour l'instant.`,githubIssue:`Issue GitHub :`,status:{input:`En attente de saisie`,exploring:`Exploration`,review:`Prête pour révision`,refining:`Affinage`,creatingIssue:`Création du ticket`,created:`Créée`,cancelled:`Annulée`,unknown:`Statut inconnu : {{status}}`}}},i={breadcrumbDashboard:`Tableau de bord`,breadcrumbJob:`Job #{{id}}`,notFound:`Job introuvable`,notFoundDescription:`L'ID de job « {{id}} » n'existe pas`,backToDashboard:`Retour au tableau de bord`,startedAgo:`Démarré {{timeAgo}}`,queuedWaiting:`En file d'attente — en attente de démarrage`,exportDiagnostic:`Exporter le diagnostic`,exportDiagnosticAria:`Exporter le bundle de diagnostic`,exportDiagnosticTooltip:`Télécharger un ZIP avec la télémétrie, les logs et le résumé de ce job`,reExecute:`Réexécuter`,reExecuteTooltip:`Lancer un nouveau job avec la même commande`,cancelJob:`Annuler le job`,cancelJobTooltip:`Envoyer SIGTERM au processus en cours. Le job sera marqué comme annulé.`,cancelInteractive:`Abandonner`,finalizeJob:`Finaliser le job`,finalizing:`Finalisation…`,finalizeJobTooltip:`Terminer cette session interactive et agréger les tokens et le coût de chaque tour dans le total du job.`,interactive:{ready:`Prêt — envoyez un prompt`,working:`L'agent travaille…`,placeholder:`Envoyez un message au job en cours…`,send:`Envoyer`,liveTotals:"{{turns}} tours · ${{cost}}",autoHint:`Ce job suit son plan et se termine tout seul — les messages ne sont qu'un pilotage optionnel.`,wrapUp:`Terminer maintenant`,wrapUpTooltip:`Met fin à la session maintenant — le job se termine avec le travail produit jusqu'ici, les tokens et le coût de chaque tour étant intégrés au total.`,wrapUpStep:`Clore cette étape`,wrapUpStepTooltip:`Met fin à l'étape en cours maintenant — la boucle avance avec ce que l'étape a produit jusqu'ici.`,wrappingUp:`Finalisation…`,queued_one:`{{count}} message en attente`,queued_other:`{{count}} messages en attente`,waitingForStep:`Entre deux étapes — la boucle décide de la suite. Vous pourrez envoyer un message au démarrage de la prochaine étape IA.`,waitingForStepShort:`En attente de la prochaine étape…`,sendDisabledEmpty:`Écrivez d'abord un message`,sendDisabledWaiting:`Aucune session d'étape active pour le moment`},toast:{jobDeleted:`Job supprimé`,cancelSignalSent:`Signal d'annulation envoyé`,cancelSignalSentDescription:`Le job s'arrêtera au prochain point sûr`,failed:`Échec`,networkError:`Erreur réseau`,exportFailed:`Échec de l'export`,exportFailedHttp:`Échec de l'export (HTTP {{status}})`,jobRequeued:`Job remis en file`,spawnFailed:`Échec du lancement du job`,finalizeScheduled:`Finalisation du job interactif…`,finalizeFailed:`Échec de la finalisation du job`,sendFailed:`Échec de l'envoi du message`,wrapUpScheduled:`Finalisation du job…`,wrapUpStepScheduled:`Clôture de l'étape — la boucle avance avec ce qu'elle a produit`}},a={inProgress:`Job en cours`,completed:`Job terminé`,failed:`Job échoué`,duration:`Durée`,cost:`Coût`,turns:`Tours`,tokens:`Tokens`,filesCount_one:`{{count}} fichier`,filesCount_other:`{{count}} fichiers`,pipelineTotal:`Total du pipeline ({{count}} phases)`,totalCost:`Coût total`,totalTokens:`Total des tokens`,filesModified:`Fichiers modifiés`,zoneInProgress:`En cours`,zoneFinal:`Résumé final`,zoneFinalPending:`Résumé final — calculé à la fin`,pendingCaption:`Calculé à la fin`,pendingTooltip:`C'est le chiffre réel du fournisseur ; il apparaît à la fin du job.`,costTooltip:`Le coût réel est facturé par le fournisseur à la clôture du job.`,liveTooltip:`En direct`,explainer:`Le coût, les tours et les tokens sont les chiffres réels du fournisseur et apparaissent à la fin.`,notAvailable:`Non disponible`,steps_one:`{{count}} étape`,steps_other:`{{count}} étapes`,activity:{editing:`Édition de {{arg}}`,writing:`Écriture de {{arg}}`,reading:`Lecture de {{arg}}`,searching:`Recherche de « {{arg}} »`,running:`Exécution : {{arg}}`,thinking:`Réflexion…`,reasoning:`Raisonnement…`,working:`Travail en cours…`,connecting:`Connexion à l'agent…`,starting:`Démarrage…`},pipelinePartial:`≥ affiché — {{count}} phase(s) sans coût enregistré`,pipelinePartialTooltip:`Certaines phases se sont arrêtées avant de rapporter leur coût ; ce total est donc une borne inférieure.`,pipelineCostUnavailable:`La télémétrie de coût est indisponible pour toutes les phases.`,pipelineUsageUnavailable:`La télémétrie des tokens est indisponible pour toutes les phases.`,pipelineUsagePartial:`≥ affiché — phases sans télémétrie des tokens : {{count}}`,pipelineUsageTooltip:`Les fournisseurs peuvent terminer des phases sans exposer la télémétrie des tokens ; seule l'utilisation connue est incluse.`},o={showMore:`+ {{count}} de plus`,showLess:`Voir moins`,deletedTicket:`#{{id}} (supprimé)`,deletedTooltip:`Le ticket n'existe plus`},s={notFound:`Job introuvable`,cancelConfirmTitle:`Annuler le job ?`,cancelConfirmDescription:`Le job s'arrêtera au prochain point sûr. Cette action est irréversible.`,keepRunning:`Laisser tourner`,cancelJob:`Annuler le job`,stopRun:`Arrêter l'exécution`,stopRunConfirmTitle:`Arrêter cette exécution ?`,stopRunConfirmDescription:`L'exécution de la boucle s'arrêtera à la prochaine limite d'étape. Cette action est irréversible.`,toast:{cancelSignalSent:`Signal d'annulation envoyé`,cancelSignalSentDescription:`Le job s'arrêtera au prochain point sûr`,stopSignalSent:`Signal d'arrêt envoyé`,stopSignalSentDescription:`L'exécution s'arrêtera à la prochaine limite d'étape`,cancelFailed:`Échec de l'annulation`,networkError:`Erreur réseau`}},c={title:`Comparaison de jobs`,jobN:`Job {{n}}`,loadFailed:`Échec du chargement de la comparaison : {{error}}`,duration:`Durée`,cost:`Coût`,tokensOut:`Tokens en sortie`,tokensIn:`Tokens en entrée`,cacheRead:`Lecture cache`,model:`Modèle`,phasesDone:`Phases terminées`,betterValueHint:`Les surlignages verts indiquent la meilleure valeur`},l={emptyTitle:`Aucun job pour l'instant`,emptyDescription:`Exécutez une commande ci-dessus pour voir l'historique de vos jobs ici`,loadFailed:`Échec du chargement des jobs`,filterAll:`Tous ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Date de début`,toDate:`Date de fin`,clear:`Effacer`,exitCompareMode:`Quitter le mode comparaison`,compareTwoJobs:`Comparer 2 jobs`,clearJobs:`Effacer les jobs`,selectTwoToCompare:`Sélectionnez 2 jobs à comparer`,selectOneMore:`Sélectionnez 1 job de plus`,readyToCompare:`Prêt — cliquez sur comparer`,compareAction:`Comparer →`,colStatus:`Statut`,colCommand:`Commande`,colDuration:`Durée`,colTokens:`Tokens`,colCost:`Coût`,colStarted:`Démarré`,profileTooltip:`Profil : {{name}}`,pipelinePart:`Fait partie d'un pipeline`,pipelineDependsOn:`(dépend de l'étape précédente)`,deleteProposal:`Supprimer la proposition`,loadMore:`Charger plus ({{count}} restants)`,priority:{critical:`critique`,high:`haute`,normal:`normale`,low:`basse`},clearModal:{title:`Effacer les jobs`,jobsInHistory_one:`{{count}} job dans l'historique`,jobsInHistory_other:`{{count}} jobs dans l'historique`,clearAll_one:`Effacer {{count}} job`,clearAll_other:`Effacer les {{count}} jobs`,orByRange:`Ou effacer par plage de dates :`,fromPlaceholder:`Du`,toPlaceholder:`Au`,clearInRange_one:`Effacer {{count}} job dans la plage`,clearInRange_other:`Effacer {{count}} jobs dans la plage`,clearRange:`Effacer la plage`},deleteProposalConfirm:{title:`Supprimer la proposition ?`,description:`Cela supprimera définitivement 1 proposition. Cette action est irréversible.`},toast:{cleared_one:`{{count}} job effacé`,cleared_other:`{{count}} jobs effacés`,clearFailed:`Échec de l'effacement des jobs`,networkError:`Erreur réseau`}},u={none:`Aucun job actif`,noneHint:`Sélectionnez une commande ci-dessous pour démarrer un job`,exitCode:`exit {{code}}`,cancelTooltip:`Envoyer SIGTERM au processus claude en cours`,viewLogs:`Voir les logs`,toast:{cancelRequested:`Annulation du job demandée`,cancelRequestedDescription:`Envoi de SIGTERM au processus`,cancelFailed:`Échec de l'annulation du job`,networkError:`Erreur réseau lors de l'annulation du job`}},d={setup:`Préparation`,iteration:`Itération {{current}}/{{limit}}`,iterationBadge:`itér. {{count}}`,follow:`Suivi en direct`,resumeFollow:`Reprendre le suivi`,expandAll:`Tout développer`,collapseAll:`Tout réduire`,copyStep:`Copier l'étape`,copied:`Étape copiée dans le presse-papiers`,stepDetail:`Détails de l'étape`,stepDetailTemplate:`Modèle`,stepDetailCommand:`Commande`,copyCommand:`Copier`,interrupted:`Interrompue`,waiting:`En attente de la prochaine étape…`,stepMapAria:`Carte des étapes de la boucle`},f={loading:`Chargement des logs…`,empty:`Aucune sortie de log pour l'instant`,filterPlaceholder:`Filtrer les logs…`,copySuccess:`Log copié dans le presse-papiers`,copyFailed:`Échec de la copie du log`,lineCount:`{{filtered}} / {{total}} lignes`,jumpToBottom:`Aller en bas`,phaseLines_one:`{{count}} ligne`,phaseLines_other:`{{count}} lignes`,noMatchingLines:`Aucune ligne correspondante`,noOutput:`Aucune sortie`,completed:`Terminé`,turns_one:`{{count}} tour`,turns_other:`{{count}} tours`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
1
+ var e={running:`en cours`,completed:`terminé`,done:`fini`,failed:`échoué`,canceled:`annulé`,queued:`en attente`,zombie:`zombie`,skipped:`ignoré`},t={running:`Le job est en cours d'exécution`,completed:`Le job s'est terminé avec succès`,failed:`Le job s'est terminé avec un code de sortie non nul`,canceled:`Le job a été annulé manuellement`,queued:`Le job attend dans la file`,queuedToRun:`Le job attend de s'exécuter`,zombie:`Le job a été arrêté automatiquement après une inactivité prolongée`,skipped:`Le job a été ignoré car un job parent du pipeline a échoué`},n={running:`en cours`,completed:`terminé`,failed:`échoué`,canceled:`annulé`,zombie_terminated:`zombie`,queued:`en attente`,skipped:`ignoré`},r={title:`Jobs`,exportJobs:`Exporter les jobs`,proposalDeleted:`Proposition supprimée`,proposal:{title:`Proposition`,noContent:`Aucun contenu de proposition pour l'instant.`,githubIssue:`Issue GitHub :`,status:{input:`En attente de saisie`,exploring:`Exploration`,review:`Prête pour révision`,refining:`Affinage`,creatingIssue:`Création du ticket`,created:`Créée`,cancelled:`Annulée`,unknown:`Statut inconnu : {{status}}`}}},i={breadcrumbDashboard:`Tableau de bord`,breadcrumbJob:`Job #{{id}}`,notFound:`Job introuvable`,notFoundDescription:`L'ID de job « {{id}} » n'existe pas`,backToDashboard:`Retour au tableau de bord`,startedAgo:`Démarré {{timeAgo}}`,queuedWaiting:`En file d'attente — en attente de démarrage`,exportDiagnostic:`Exporter le diagnostic`,exportDiagnosticAria:`Exporter le bundle de diagnostic`,exportDiagnosticTooltip:`Télécharger un ZIP avec la télémétrie, les logs et le résumé de ce job`,reExecute:`Réexécuter`,reExecuteTooltip:`Lancer un nouveau job avec la même commande`,cancelJob:`Annuler le job`,cancelJobTooltip:`Envoyer SIGTERM au processus en cours. Le job sera marqué comme annulé.`,cancelInteractive:`Abandonner`,finalizeJob:`Finaliser le job`,finalizing:`Finalisation…`,finalizeJobTooltip:`Terminer cette session interactive et agréger les tokens et le coût de chaque tour dans le total du job.`,interactive:{ready:`Prêt — envoyez un prompt`,working:`L'agent travaille…`,placeholder:`Envoyez un message au job en cours…`,send:`Envoyer`,liveTotals:"{{turns}} tours · ${{cost}}",autoHint:`Ce job suit son plan et se termine tout seul — les messages ne sont qu'un pilotage optionnel.`,wrapUp:`Terminer maintenant`,wrapUpTooltip:`Met fin à la session maintenant — le job se termine avec le travail produit jusqu'ici, les tokens et le coût de chaque tour étant intégrés au total.`,wrapUpStep:`Clore cette étape`,wrapUpStepTooltip:`Met fin à l'étape en cours maintenant — la boucle avance avec ce que l'étape a produit jusqu'ici.`,wrappingUp:`Finalisation…`,queued_one:`{{count}} message en attente`,queued_other:`{{count}} messages en attente`,waitingForStep:`Entre deux étapes — la boucle décide de la suite. Vous pourrez envoyer un message au démarrage de la prochaine étape IA.`,waitingForStepShort:`En attente de la prochaine étape…`,sendDisabledEmpty:`Écrivez d'abord un message`,sendDisabledWaiting:`Aucune session d'étape active pour le moment`},toast:{jobDeleted:`Job supprimé`,cancelSignalSent:`Signal d'annulation envoyé`,cancelSignalSentDescription:`Le job s'arrêtera au prochain point sûr`,failed:`Échec`,networkError:`Erreur réseau`,exportFailed:`Échec de l'export`,exportFailedHttp:`Échec de l'export (HTTP {{status}})`,jobRequeued:`Job remis en file`,spawnFailed:`Échec du lancement du job`,finalizeScheduled:`Finalisation du job interactif…`,finalizeFailed:`Échec de la finalisation du job`,sendFailed:`Échec de l'envoi du message`,wrapUpScheduled:`Finalisation du job…`,wrapUpStepScheduled:`Clôture de l'étape — la boucle avance avec ce qu'elle a produit`}},a={inProgress:`Job en cours`,completed:`Job terminé`,failed:`Job échoué`,duration:`Durée`,cost:`Coût`,turns:`Tours`,tokens:`Tokens`,filesCount_one:`{{count}} fichier`,filesCount_other:`{{count}} fichiers`,pipelineTotal:`Total du pipeline ({{count}} phases)`,totalCost:`Coût total`,totalTokens:`Total des tokens`,filesModified:`Fichiers modifiés`,zoneInProgress:`En cours`,zoneFinal:`Résumé final`,zoneFinalPending:`Résumé final — calculé à la fin`,pendingCaption:`Calculé à la fin`,pendingTooltip:`C'est le chiffre réel du fournisseur ; il apparaît à la fin du job.`,costTooltip:`Le coût réel est facturé par le fournisseur à la clôture du job.`,liveTooltip:`En direct`,explainer:`Le coût, les tours et les tokens sont les chiffres réels du fournisseur et apparaissent à la fin.`,notAvailable:`Non disponible`,steps_one:`{{count}} étape`,steps_other:`{{count}} étapes`,activity:{editing:`Édition de {{arg}}`,writing:`Écriture de {{arg}}`,reading:`Lecture de {{arg}}`,searching:`Recherche de « {{arg}} »`,running:`Exécution : {{arg}}`,thinking:`Réflexion…`,reasoning:`Raisonnement…`,working:`Travail en cours…`,connecting:`Connexion à l'agent…`,starting:`Démarrage…`},pipelinePartial:`≥ affiché — {{count}} phase(s) sans coût enregistré`,pipelinePartialTooltip:`Certaines phases se sont arrêtées avant de rapporter leur coût ; ce total est donc une borne inférieure.`,pipelineCostUnavailable:`La télémétrie de coût est indisponible pour toutes les phases.`,pipelineUsageUnavailable:`La télémétrie des tokens est indisponible pour toutes les phases.`,pipelineUsagePartial:`≥ affiché — phases sans télémétrie des tokens : {{count}}`,pipelineUsageTooltip:`Les fournisseurs peuvent terminer des phases sans exposer la télémétrie des tokens ; seule l'utilisation connue est incluse.`},o={showMore:`+ {{count}} de plus`,showLess:`Voir moins`,deletedTicket:`#{{id}} (supprimé)`,deletedTooltip:`Le ticket n'existe plus`},s={notFound:`Job introuvable`,cancelConfirmTitle:`Annuler le job ?`,cancelConfirmDescription:`Le job s'arrêtera au prochain point sûr. Cette action est irréversible.`,keepRunning:`Laisser tourner`,cancelJob:`Annuler le job`,stopRun:`Arrêter l'exécution`,stopRunConfirmTitle:`Arrêter cette exécution ?`,stopRunConfirmDescription:`L'exécution de la boucle s'arrêtera à la prochaine limite d'étape. Cette action est irréversible.`,toast:{cancelSignalSent:`Signal d'annulation envoyé`,cancelSignalSentDescription:`Le job s'arrêtera au prochain point sûr`,stopSignalSent:`Signal d'arrêt envoyé`,stopSignalSentDescription:`L'exécution s'arrêtera à la prochaine limite d'étape`,cancelFailed:`Échec de l'annulation`,networkError:`Erreur réseau`}},c={title:`Comparaison de jobs`,jobN:`Job {{n}}`,loadFailed:`Échec du chargement de la comparaison : {{error}}`,duration:`Durée`,cost:`Coût`,tokensOut:`Tokens en sortie`,tokensIn:`Tokens en entrée`,cacheRead:`Lecture cache`,model:`Modèle`,phasesDone:`Phases terminées`,betterValueHint:`Les surlignages verts indiquent la meilleure valeur`},l={emptyTitle:`Aucun job pour l'instant`,emptyDescription:`Exécutez une commande ci-dessus pour voir l'historique de vos jobs ici`,loadFailed:`Échec du chargement des jobs`,filterAll:`Tous ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Date de début`,toDate:`Date de fin`,clear:`Effacer`,exitCompareMode:`Quitter le mode comparaison`,compareTwoJobs:`Comparer 2 jobs`,clearJobs:`Effacer les jobs`,selectTwoToCompare:`Sélectionnez 2 jobs à comparer`,selectOneMore:`Sélectionnez 1 job de plus`,readyToCompare:`Prêt — cliquez sur comparer`,compareAction:`Comparer →`,colStatus:`Statut`,colCommand:`Commande`,colDuration:`Durée`,colTokens:`Tokens`,colCost:`Coût`,colStarted:`Démarré`,profileTooltip:`Profil : {{name}}`,pipelinePart:`Fait partie d'un pipeline`,pipelineDependsOn:`(dépend de l'étape précédente)`,deleteProposal:`Supprimer la proposition`,loadMore:`Charger plus ({{count}} restants)`,priority:{critical:`critique`,high:`haute`,normal:`normale`,low:`basse`},clearModal:{title:`Effacer les jobs`,jobsInHistory_one:`{{count}} job dans l'historique`,jobsInHistory_other:`{{count}} jobs dans l'historique`,clearAll_one:`Effacer {{count}} job`,clearAll_other:`Effacer les {{count}} jobs`,orByRange:`Ou effacer par plage de dates :`,fromPlaceholder:`Du`,toPlaceholder:`Au`,clearInRange_one:`Effacer {{count}} job dans la plage`,clearInRange_other:`Effacer {{count}} jobs dans la plage`,clearRange:`Effacer la plage`},deleteProposalConfirm:{title:`Supprimer la proposition ?`,description:`Cela supprimera définitivement 1 proposition. Cette action est irréversible.`},toast:{cleared_one:`{{count}} job effacé`,cleared_other:`{{count}} jobs effacés`,clearFailed:`Échec de l'effacement des jobs`,networkError:`Erreur réseau`}},u={none:`Aucun job actif`,noneHint:`Sélectionnez une commande ci-dessous pour démarrer un job`,exitCode:`exit {{code}}`,cancelTooltip:`Envoyer SIGTERM au processus claude en cours`,viewLogs:`Voir les logs`,toast:{cancelRequested:`Annulation du job demandée`,cancelRequestedDescription:`Envoi de SIGTERM au processus`,cancelFailed:`Échec de l'annulation du job`,networkError:`Erreur réseau lors de l'annulation du job`}},d={setup:`Préparation`,iteration:`Itération {{current}}/{{limit}}`,iterationBadge:`itér. {{count}}`,follow:`Suivi en direct`,resumeFollow:`Reprendre le suivi`,expandAll:`Tout développer`,collapseAll:`Tout réduire`,copyStep:`Copier l'étape`,copied:`Étape copiée dans le presse-papiers`,stepDetail:`Détails de l'étape`,stepDetailTemplate:`Modèle`,stepDetailCommand:`Commande`,copyCommand:`Copier`,interrupted:`Interrompue`,waiting:`En attente de la prochaine étape…`,stepMapAria:`Carte des étapes de la boucle`,stalled:`Bloquée`,stalledIdle_one:`Aucune sortie du fournisseur pendant {{count}} minute — l'app a arrêté cette tentative`,stalledIdle_other:`Aucune sortie du fournisseur pendant {{count}} minutes — l'app a arrêté cette tentative`,providerLimit:`Limite du fournisseur`,providerLimitHint:`Le fournisseur a répondu par un avis de limite d'utilisation ; l'app a arrêté l'exécution au lieu de boucler.`},f={loading:`Chargement des logs…`,empty:`Aucune sortie de log pour l'instant`,filterPlaceholder:`Filtrer les logs…`,copySuccess:`Log copié dans le presse-papiers`,copyFailed:`Échec de la copie du log`,lineCount:`{{filtered}} / {{total}} lignes`,jumpToBottom:`Aller en bas`,phaseLines_one:`{{count}} ligne`,phaseLines_other:`{{count}} lignes`,noMatchingLines:`Aucune ligne correspondante`,noOutput:`Aucune sortie`,completed:`Terminé`,turns_one:`{{count}} tour`,turns_other:`{{count}} tours`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
@@ -1 +1 @@
1
- var e={running:`运行中`,completed:`已完成`,done:`完成`,failed:`失败`,canceled:`已取消`,queued:`排队中`,zombie:`僵尸`,skipped:`已跳过`},t={running:`任务正在执行`,completed:`任务已成功完成`,failed:`任务以非零退出码结束`,canceled:`任务已被手动取消`,queued:`任务正在队列中等待`,queuedToRun:`任务正在等待运行`,zombie:`任务因长时间无活动而被自动终止`,skipped:`因流水线中的上游任务失败,此任务被跳过`},n={running:`运行中`,completed:`已完成`,failed:`失败`,canceled:`已取消`,zombie_terminated:`僵尸`,queued:`排队中`,skipped:`已跳过`},r={title:`任务`,exportJobs:`导出任务`,proposalDeleted:`提案已删除`,proposal:{title:`提案`,noContent:`暂无提案内容。`,githubIssue:`GitHub Issue:`,status:{input:`等待输入`,exploring:`探索中`,review:`等待审核`,refining:`优化中`,creatingIssue:`正在创建议题`,created:`已创建`,cancelled:`已取消`,unknown:`未知状态:{{status}}`}}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`任务 #{{id}}`,notFound:`未找到任务`,notFoundDescription:`任务 ID“{{id}}”不存在`,backToDashboard:`返回 Dashboard`,startedAgo:`开始于 {{timeAgo}}`,queuedWaiting:`已排队——等待开始`,exportDiagnostic:`导出诊断`,exportDiagnosticAria:`导出诊断包`,exportDiagnosticTooltip:`下载包含此任务遥测、日志和摘要的 ZIP`,reExecute:`重新执行`,reExecuteTooltip:`用相同命令启动一个新任务`,cancelJob:`取消任务`,cancelJobTooltip:`向运行中的进程发送 SIGTERM。任务将被标记为已取消。`,cancelInteractive:`丢弃`,finalizeJob:`定稿任务`,finalizing:`正在定稿…`,finalizeJobTooltip:`结束此交互会话,并将每一轮的 token 和成本汇总到任务总计中。`,interactive:{ready:`就绪 — 发送提示`,working:`代理处理中…`,placeholder:`向运行中的任务发送消息…`,send:`发送`,liveTotals:"{{turns}} 轮 · ${{cost}}",autoHint:`该任务会按计划自行完成 — 消息只是可选的引导。`,wrapUp:`立即收尾`,wrapUpTooltip:`立即结束会话 — 任务以目前已产出的工作完成,每一轮的 token 与费用都会计入总额。`,wrapUpStep:`结算此步骤`,wrapUpStepTooltip:`立即结束当前步骤 — 循环将带着该步骤目前的产出继续推进。`,wrappingUp:`正在收尾…`,queued_one:`{{count}} 条排队消息`,queued_other:`{{count}} 条排队消息`,waitingForStep:`步骤间隙 — 循环正在决定接下来运行什么。下一个 AI 步骤开始后即可发送消息。`,waitingForStepShort:`等待下一个步骤…`,sendDisabledEmpty:`请先输入消息`,sendDisabledWaiting:`当前没有活跃的步骤会话`},toast:{jobDeleted:`任务已删除`,cancelSignalSent:`已发送取消信号`,cancelSignalSentDescription:`任务将在下一个安全点停止`,failed:`失败`,networkError:`网络错误`,exportFailed:`导出失败`,exportFailedHttp:`导出失败(HTTP {{status}})`,jobRequeued:`任务已重新排队`,spawnFailed:`启动任务失败`,finalizeScheduled:`正在定稿交互任务…`,finalizeFailed:`任务定稿失败`,sendFailed:`发送消息失败`,wrapUpScheduled:`正在收尾任务…`,wrapUpStepScheduled:`正在结算步骤 — 循环将带着已有产出继续`}},a={inProgress:`任务进行中`,completed:`任务已完成`,failed:`任务失败`,duration:`时长`,cost:`成本`,turns:`轮次`,tokens:`Token`,filesCount_one:`{{count}} 个文件`,filesCount_other:`{{count}} 个文件`,pipelineTotal:`流水线合计({{count}} 个阶段)`,totalCost:`总成本`,totalTokens:`总 token 数`,filesModified:`修改的文件`,zoneInProgress:`进行中`,zoneFinal:`最终汇总`,zoneFinalPending:`最终汇总 — 完成后计算`,pendingCaption:`完成后计算`,pendingTooltip:`这是提供方的真实数字;任务完成后显示。`,costTooltip:`真实费用由提供方在任务结束时计费。`,liveTooltip:`实时`,explainer:`费用、轮次和令牌是提供方的真实数字,将在任务完成后显示。`,notAvailable:`不可用`,steps_one:`{{count}} 步`,steps_other:`{{count}} 步`,activity:{editing:`正在编辑 {{arg}}`,writing:`正在写入 {{arg}}`,reading:`正在读取 {{arg}}`,searching:`正在搜索“{{arg}}”`,running:`正在执行:{{arg}}`,thinking:`正在思考…`,reasoning:`正在推理…`,working:`正在处理…`,connecting:`正在连接代理…`,starting:`正在启动…`},pipelinePartial:`≥ 表示部分 — {{count}} 个阶段尚无成本记录`,pipelinePartialTooltip:`部分阶段在报告成本前已结束,因此该总额为下限。`,pipelineCostUnavailable:`所有阶段的成本遥测数据均不可用。`,pipelineUsageUnavailable:`所有阶段的 token 遥测数据均不可用。`,pipelineUsagePartial:`≥ 显示值 — {{count}} 个阶段无 token 遥测数据`,pipelineUsageTooltip:`提供方可能在不提供 token 遥测数据的情况下完成阶段;仅计入已知用量。`},o={showMore:`+ 还有 {{count}} 个`,showLess:`收起`,deletedTicket:`#{{id}}(已删除)`,deletedTooltip:`工单已不存在`},s={notFound:`未找到任务`,cancelConfirmTitle:`取消任务?`,cancelConfirmDescription:`任务将在下一个安全点停止。此操作无法撤销。`,keepRunning:`继续运行`,cancelJob:`取消任务`,stopRun:`停止运行`,stopRunConfirmTitle:`停止此运行?`,stopRunConfirmDescription:`循环运行将在下一个步骤边界停止。此操作无法撤销。`,toast:{cancelSignalSent:`已发送取消信号`,cancelSignalSentDescription:`任务将在下一个安全点停止`,stopSignalSent:`已发送停止信号`,stopSignalSentDescription:`运行将在下一个步骤边界停止`,cancelFailed:`取消失败`,networkError:`网络错误`}},c={title:`任务对比`,jobN:`任务 {{n}}`,loadFailed:`加载对比失败:{{error}}`,duration:`时长`,cost:`成本`,tokensOut:`输出 token`,tokensIn:`输入 token`,cacheRead:`缓存读取`,model:`模型`,phasesDone:`完成阶段数`,betterValueHint:`绿色高亮表示更优值`},l={emptyTitle:`暂无任务`,emptyDescription:`在上方运行命令后,任务历史会显示在这里`,loadFailed:`加载任务失败`,filterAll:`全部({{count}})`,filterStatus:`{{status}}({{count}})`,fromDate:`开始日期`,toDate:`结束日期`,clear:`清除`,exitCompareMode:`退出对比模式`,compareTwoJobs:`对比 2 个任务`,clearJobs:`清空任务`,selectTwoToCompare:`选择 2 个任务进行对比`,selectOneMore:`再选择 1 个任务`,readyToCompare:`就绪——点击对比`,compareAction:`对比 →`,colStatus:`状态`,colCommand:`命令`,colDuration:`时长`,colTokens:`Token`,colCost:`成本`,colStarted:`开始时间`,profileTooltip:`Profile:{{name}}`,pipelinePart:`属于某个流水线`,pipelineDependsOn:`(依赖上一步)`,deleteProposal:`删除提案`,loadMore:`加载更多(剩余 {{count}} 个)`,priority:{critical:`紧急`,high:`高`,normal:`普通`,low:`低`},clearModal:{title:`清空任务`,jobsInHistory_one:`历史中有 {{count}} 个任务`,jobsInHistory_other:`历史中有 {{count}} 个任务`,clearAll_one:`清空全部 {{count}} 个任务`,clearAll_other:`清空全部 {{count}} 个任务`,orByRange:`或按日期范围清除:`,fromPlaceholder:`开始`,toPlaceholder:`结束`,clearInRange_one:`清除范围内 {{count}} 个任务`,clearInRange_other:`清除范围内 {{count}} 个任务`,clearRange:`清除范围`},deleteProposalConfirm:{title:`删除提案?`,description:`将永久删除 1 个提案。此操作无法撤销。`},toast:{cleared_one:`已清除 {{count}} 个任务`,cleared_other:`已清除 {{count}} 个任务`,clearFailed:`清除任务失败`,networkError:`网络错误`}},u={none:`没有进行中的任务`,noneHint:`在下方选择一个命令以启动任务`,exitCode:`退出码 {{code}}`,cancelTooltip:`向运行中的 claude 进程发送 SIGTERM`,viewLogs:`查看日志`,toast:{cancelRequested:`已请求取消任务`,cancelRequestedDescription:`正在向进程发送 SIGTERM`,cancelFailed:`取消任务失败`,networkError:`取消任务时发生网络错误`}},d={setup:`准备`,iteration:`迭代 {{current}}/{{limit}}`,iterationBadge:`迭代 {{count}}`,follow:`实时跟随中`,resumeFollow:`恢复跟随`,expandAll:`全部展开`,collapseAll:`全部折叠`,copyStep:`复制步骤`,copied:`步骤已复制到剪贴板`,stepDetail:`步骤详情`,stepDetailTemplate:`模板`,stepDetailCommand:`命令`,copyCommand:`复制`,interrupted:`已中断`,waiting:`等待下一个步骤…`,stepMapAria:`循环步骤图`},f={loading:`正在加载日志…`,empty:`暂无日志输出`,filterPlaceholder:`筛选日志…`,copySuccess:`日志已复制到剪贴板`,copyFailed:`复制日志失败`,lineCount:`{{filtered}} / {{total}} 行`,jumpToBottom:`跳到底部`,phaseLines_one:`{{count}} 行`,phaseLines_other:`{{count}} 行`,noMatchingLines:`没有匹配的行`,noOutput:`无输出`,completed:`已完成`,turns_one:`{{count}} 轮`,turns_other:`{{count}} 轮`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
1
+ var e={running:`运行中`,completed:`已完成`,done:`完成`,failed:`失败`,canceled:`已取消`,queued:`排队中`,zombie:`僵尸`,skipped:`已跳过`},t={running:`任务正在执行`,completed:`任务已成功完成`,failed:`任务以非零退出码结束`,canceled:`任务已被手动取消`,queued:`任务正在队列中等待`,queuedToRun:`任务正在等待运行`,zombie:`任务因长时间无活动而被自动终止`,skipped:`因流水线中的上游任务失败,此任务被跳过`},n={running:`运行中`,completed:`已完成`,failed:`失败`,canceled:`已取消`,zombie_terminated:`僵尸`,queued:`排队中`,skipped:`已跳过`},r={title:`任务`,exportJobs:`导出任务`,proposalDeleted:`提案已删除`,proposal:{title:`提案`,noContent:`暂无提案内容。`,githubIssue:`GitHub Issue:`,status:{input:`等待输入`,exploring:`探索中`,review:`等待审核`,refining:`优化中`,creatingIssue:`正在创建议题`,created:`已创建`,cancelled:`已取消`,unknown:`未知状态:{{status}}`}}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`任务 #{{id}}`,notFound:`未找到任务`,notFoundDescription:`任务 ID“{{id}}”不存在`,backToDashboard:`返回 Dashboard`,startedAgo:`开始于 {{timeAgo}}`,queuedWaiting:`已排队——等待开始`,exportDiagnostic:`导出诊断`,exportDiagnosticAria:`导出诊断包`,exportDiagnosticTooltip:`下载包含此任务遥测、日志和摘要的 ZIP`,reExecute:`重新执行`,reExecuteTooltip:`用相同命令启动一个新任务`,cancelJob:`取消任务`,cancelJobTooltip:`向运行中的进程发送 SIGTERM。任务将被标记为已取消。`,cancelInteractive:`丢弃`,finalizeJob:`定稿任务`,finalizing:`正在定稿…`,finalizeJobTooltip:`结束此交互会话,并将每一轮的 token 和成本汇总到任务总计中。`,interactive:{ready:`就绪 — 发送提示`,working:`代理处理中…`,placeholder:`向运行中的任务发送消息…`,send:`发送`,liveTotals:"{{turns}} 轮 · ${{cost}}",autoHint:`该任务会按计划自行完成 — 消息只是可选的引导。`,wrapUp:`立即收尾`,wrapUpTooltip:`立即结束会话 — 任务以目前已产出的工作完成,每一轮的 token 与费用都会计入总额。`,wrapUpStep:`结算此步骤`,wrapUpStepTooltip:`立即结束当前步骤 — 循环将带着该步骤目前的产出继续推进。`,wrappingUp:`正在收尾…`,queued_one:`{{count}} 条排队消息`,queued_other:`{{count}} 条排队消息`,waitingForStep:`步骤间隙 — 循环正在决定接下来运行什么。下一个 AI 步骤开始后即可发送消息。`,waitingForStepShort:`等待下一个步骤…`,sendDisabledEmpty:`请先输入消息`,sendDisabledWaiting:`当前没有活跃的步骤会话`},toast:{jobDeleted:`任务已删除`,cancelSignalSent:`已发送取消信号`,cancelSignalSentDescription:`任务将在下一个安全点停止`,failed:`失败`,networkError:`网络错误`,exportFailed:`导出失败`,exportFailedHttp:`导出失败(HTTP {{status}})`,jobRequeued:`任务已重新排队`,spawnFailed:`启动任务失败`,finalizeScheduled:`正在定稿交互任务…`,finalizeFailed:`任务定稿失败`,sendFailed:`发送消息失败`,wrapUpScheduled:`正在收尾任务…`,wrapUpStepScheduled:`正在结算步骤 — 循环将带着已有产出继续`}},a={inProgress:`任务进行中`,completed:`任务已完成`,failed:`任务失败`,duration:`时长`,cost:`成本`,turns:`轮次`,tokens:`Token`,filesCount_one:`{{count}} 个文件`,filesCount_other:`{{count}} 个文件`,pipelineTotal:`流水线合计({{count}} 个阶段)`,totalCost:`总成本`,totalTokens:`总 token 数`,filesModified:`修改的文件`,zoneInProgress:`进行中`,zoneFinal:`最终汇总`,zoneFinalPending:`最终汇总 — 完成后计算`,pendingCaption:`完成后计算`,pendingTooltip:`这是提供方的真实数字;任务完成后显示。`,costTooltip:`真实费用由提供方在任务结束时计费。`,liveTooltip:`实时`,explainer:`费用、轮次和令牌是提供方的真实数字,将在任务完成后显示。`,notAvailable:`不可用`,steps_one:`{{count}} 步`,steps_other:`{{count}} 步`,activity:{editing:`正在编辑 {{arg}}`,writing:`正在写入 {{arg}}`,reading:`正在读取 {{arg}}`,searching:`正在搜索“{{arg}}”`,running:`正在执行:{{arg}}`,thinking:`正在思考…`,reasoning:`正在推理…`,working:`正在处理…`,connecting:`正在连接代理…`,starting:`正在启动…`},pipelinePartial:`≥ 表示部分 — {{count}} 个阶段尚无成本记录`,pipelinePartialTooltip:`部分阶段在报告成本前已结束,因此该总额为下限。`,pipelineCostUnavailable:`所有阶段的成本遥测数据均不可用。`,pipelineUsageUnavailable:`所有阶段的 token 遥测数据均不可用。`,pipelineUsagePartial:`≥ 显示值 — {{count}} 个阶段无 token 遥测数据`,pipelineUsageTooltip:`提供方可能在不提供 token 遥测数据的情况下完成阶段;仅计入已知用量。`},o={showMore:`+ 还有 {{count}} 个`,showLess:`收起`,deletedTicket:`#{{id}}(已删除)`,deletedTooltip:`工单已不存在`},s={notFound:`未找到任务`,cancelConfirmTitle:`取消任务?`,cancelConfirmDescription:`任务将在下一个安全点停止。此操作无法撤销。`,keepRunning:`继续运行`,cancelJob:`取消任务`,stopRun:`停止运行`,stopRunConfirmTitle:`停止此运行?`,stopRunConfirmDescription:`循环运行将在下一个步骤边界停止。此操作无法撤销。`,toast:{cancelSignalSent:`已发送取消信号`,cancelSignalSentDescription:`任务将在下一个安全点停止`,stopSignalSent:`已发送停止信号`,stopSignalSentDescription:`运行将在下一个步骤边界停止`,cancelFailed:`取消失败`,networkError:`网络错误`}},c={title:`任务对比`,jobN:`任务 {{n}}`,loadFailed:`加载对比失败:{{error}}`,duration:`时长`,cost:`成本`,tokensOut:`输出 token`,tokensIn:`输入 token`,cacheRead:`缓存读取`,model:`模型`,phasesDone:`完成阶段数`,betterValueHint:`绿色高亮表示更优值`},l={emptyTitle:`暂无任务`,emptyDescription:`在上方运行命令后,任务历史会显示在这里`,loadFailed:`加载任务失败`,filterAll:`全部({{count}})`,filterStatus:`{{status}}({{count}})`,fromDate:`开始日期`,toDate:`结束日期`,clear:`清除`,exitCompareMode:`退出对比模式`,compareTwoJobs:`对比 2 个任务`,clearJobs:`清空任务`,selectTwoToCompare:`选择 2 个任务进行对比`,selectOneMore:`再选择 1 个任务`,readyToCompare:`就绪——点击对比`,compareAction:`对比 →`,colStatus:`状态`,colCommand:`命令`,colDuration:`时长`,colTokens:`Token`,colCost:`成本`,colStarted:`开始时间`,profileTooltip:`Profile:{{name}}`,pipelinePart:`属于某个流水线`,pipelineDependsOn:`(依赖上一步)`,deleteProposal:`删除提案`,loadMore:`加载更多(剩余 {{count}} 个)`,priority:{critical:`紧急`,high:`高`,normal:`普通`,low:`低`},clearModal:{title:`清空任务`,jobsInHistory_one:`历史中有 {{count}} 个任务`,jobsInHistory_other:`历史中有 {{count}} 个任务`,clearAll_one:`清空全部 {{count}} 个任务`,clearAll_other:`清空全部 {{count}} 个任务`,orByRange:`或按日期范围清除:`,fromPlaceholder:`开始`,toPlaceholder:`结束`,clearInRange_one:`清除范围内 {{count}} 个任务`,clearInRange_other:`清除范围内 {{count}} 个任务`,clearRange:`清除范围`},deleteProposalConfirm:{title:`删除提案?`,description:`将永久删除 1 个提案。此操作无法撤销。`},toast:{cleared_one:`已清除 {{count}} 个任务`,cleared_other:`已清除 {{count}} 个任务`,clearFailed:`清除任务失败`,networkError:`网络错误`}},u={none:`没有进行中的任务`,noneHint:`在下方选择一个命令以启动任务`,exitCode:`退出码 {{code}}`,cancelTooltip:`向运行中的 claude 进程发送 SIGTERM`,viewLogs:`查看日志`,toast:{cancelRequested:`已请求取消任务`,cancelRequestedDescription:`正在向进程发送 SIGTERM`,cancelFailed:`取消任务失败`,networkError:`取消任务时发生网络错误`}},d={setup:`准备`,iteration:`迭代 {{current}}/{{limit}}`,iterationBadge:`迭代 {{count}}`,follow:`实时跟随中`,resumeFollow:`恢复跟随`,expandAll:`全部展开`,collapseAll:`全部折叠`,copyStep:`复制步骤`,copied:`步骤已复制到剪贴板`,stepDetail:`步骤详情`,stepDetailTemplate:`模板`,stepDetailCommand:`命令`,copyCommand:`复制`,interrupted:`已中断`,waiting:`等待下一个步骤…`,stepMapAria:`循环步骤图`,stalled:`已停滞`,stalledIdle_one:`{{count}} 分钟内无提供方输出,应用已停止此次尝试`,stalledIdle_other:`{{count}} 分钟内无提供方输出,应用已停止此次尝试`,providerLimit:`提供商限额`,providerLimitHint:`提供商返回了用量限额提示,应用已停止运行而不是继续循环。`},f={loading:`正在加载日志…`,empty:`暂无日志输出`,filterPlaceholder:`筛选日志…`,copySuccess:`日志已复制到剪贴板`,copyFailed:`复制日志失败`,lineCount:`{{filtered}} / {{total}} 行`,jumpToBottom:`跳到底部`,phaseLines_one:`{{count}} 行`,phaseLines_other:`{{count}} 行`,noMatchingLines:`没有匹配的行`,noOutput:`无输出`,completed:`已完成`,turns_one:`{{count}} 轮`,turns_other:`{{count}} 轮`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
@@ -1 +1 @@
1
- var e={running:`em execução`,completed:`concluído`,done:`feito`,failed:`falhou`,canceled:`cancelado`,queued:`em fila`,zombie:`zombie`,skipped:`ignorado`},t={running:`O job está em execução`,completed:`O job foi concluído com sucesso`,failed:`O job terminou com um código de saída diferente de zero`,canceled:`O job foi cancelado manualmente`,queued:`O job está a aguardar na fila`,queuedToRun:`O job está a aguardar para ser executado`,zombie:`O job foi terminado automaticamente após inatividade prolongada`,skipped:`O job foi ignorado porque um job anterior do pipeline falhou`},n={running:`em execução`,completed:`concluído`,failed:`falhou`,canceled:`cancelado`,zombie_terminated:`zombie`,queued:`em fila`,skipped:`ignorado`},r={title:`Jobs`,exportJobs:`Exportar jobs`,proposalDeleted:`Proposta eliminada`,proposal:{title:`Proposta`,noContent:`Ainda não há conteúdo da proposta.`,githubIssue:`Issue do GitHub:`,status:{input:`A aguardar dados`,exploring:`A explorar`,review:`Pronta para revisão`,refining:`A refinar`,creatingIssue:`A criar issue`,created:`Criada`,cancelled:`Cancelada`,unknown:`Estado desconhecido: {{status}}`}}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job não encontrado`,notFoundDescription:`O ID de job "{{id}}" não existe`,backToDashboard:`Voltar ao Dashboard`,startedAgo:`Iniciado {{timeAgo}}`,queuedWaiting:`Em fila — a aguardar início`,exportDiagnostic:`Exportar diagnóstico`,exportDiagnosticAria:`Exportar pacote de diagnóstico`,exportDiagnosticTooltip:`Transferir um ZIP com telemetria, logs e resumo deste job`,reExecute:`Reexecutar`,reExecuteTooltip:`Lançar um novo job com o mesmo comando`,cancelJob:`Cancelar job`,cancelJobTooltip:`Enviar SIGTERM ao processo em execução. O job será marcado como cancelado.`,cancelInteractive:`Descartar`,finalizeJob:`Finalizar job`,finalizing:`A finalizar…`,finalizeJobTooltip:`Terminar esta sessão interativa e somar os tokens e o custo de cada turno ao total do job.`,interactive:{ready:`Pronto — envie um prompt`,working:`Agente a trabalhar…`,placeholder:`Envie uma mensagem ao job em execução…`,send:`Enviar`,liveTotals:"{{turns}} turnos · ${{cost}}",autoHint:`Este job segue o seu plano e termina sozinho — as mensagens são orientação opcional.`,wrapUp:`Concluir agora`,wrapUpTooltip:`Termina a sessão agora — o job conclui com o trabalho produzido até ao momento, com os tokens e o custo de cada turno somados ao total.`,wrapUpStep:`Fechar este passo`,wrapUpStepTooltip:`Termina o passo atual agora — o loop avança com o que o passo produziu até ao momento.`,wrappingUp:`A concluir…`,queued_one:`{{count}} mensagem em fila`,queued_other:`{{count}} mensagens em fila`,waitingForStep:`Entre passos — o loop está a decidir o que corre a seguir. Poderá enviar uma mensagem quando o próximo passo de IA começar.`,waitingForStepShort:`A aguardar o próximo passo…`,sendDisabledEmpty:`Escreva primeiro uma mensagem`,sendDisabledWaiting:`Não há nenhuma sessão de passo ativa neste momento`},toast:{jobDeleted:`Job eliminado`,cancelSignalSent:`Sinal de cancelamento enviado`,cancelSignalSentDescription:`O job vai parar no próximo ponto seguro`,failed:`Falhou`,networkError:`Erro de rede`,exportFailed:`Falha na exportação`,exportFailedHttp:`Falha na exportação (HTTP {{status}})`,jobRequeued:`Job colocado novamente na fila`,spawnFailed:`Falha ao lançar o job`,finalizeScheduled:`A finalizar o job interativo…`,finalizeFailed:`Falha ao finalizar o job`,sendFailed:`Falha ao enviar a mensagem`,wrapUpScheduled:`A concluir o job…`,wrapUpStepScheduled:`A fechar o passo — o loop avança com o que produziu`}},a={inProgress:`Job em curso`,completed:`Job concluído`,failed:`Job falhou`,duration:`Duração`,cost:`Custo`,turns:`Turnos`,tokens:`Tokens`,filesCount_one:`{{count}} ficheiro`,filesCount_other:`{{count}} ficheiros`,pipelineTotal:`Total do pipeline ({{count}} fases)`,totalCost:`Custo total`,totalTokens:`Total de tokens`,filesModified:`Ficheiros modificados`,zoneInProgress:`Em andamento`,zoneFinal:`Resumo final`,zoneFinalPending:`Resumo final — calculado ao terminar`,pendingCaption:`Calculado ao terminar`,pendingTooltip:`Este é o valor real do provedor; aparece ao terminar o job.`,costTooltip:`O custo real é cobrado pelo provedor ao encerrar o job.`,liveTooltip:`Ao vivo`,explainer:`Custo, turnos e tokens são os valores reais do provedor e aparecem ao terminar.`,notAvailable:`Indisponível`,steps_one:`{{count}} passo`,steps_other:`{{count}} passos`,activity:{editing:`Editando {{arg}}`,writing:`Escrevendo {{arg}}`,reading:`Lendo {{arg}}`,searching:`Buscando “{{arg}}”`,running:`Executando: {{arg}}`,thinking:`Pensando…`,reasoning:`Raciocinando…`,working:`Trabalhando…`,connecting:`Conectando ao agente…`,starting:`Iniciando…`},pipelinePartial:`≥ exibido — {{count}} fase(s) sem custo registrado`,pipelinePartialTooltip:`Algumas fases terminaram antes de reportar o custo, portanto este total é um limite inferior.`,pipelineCostUnavailable:`A telemetria de custo está indisponível em todas as fases.`,pipelineUsageUnavailable:`A telemetria de tokens está indisponível em todas as fases.`,pipelineUsagePartial:`≥ mostrado — fases sem telemetria de tokens: {{count}}`,pipelineUsageTooltip:`Os fornecedores podem concluir fases sem fornecer telemetria de tokens; apenas a utilização conhecida é incluída.`},o={showMore:`+ {{count}} mais`,showLess:`Mostrar menos`,deletedTicket:`#{{id}} (eliminado)`,deletedTooltip:`O ticket já não existe`},s={notFound:`Job não encontrado`,cancelConfirmTitle:`Cancelar o job?`,cancelConfirmDescription:`O job vai parar no próximo ponto seguro. Esta ação não pode ser anulada.`,keepRunning:`Manter em execução`,cancelJob:`Cancelar job`,stopRun:`Parar execução`,stopRunConfirmTitle:`Parar esta execução?`,stopRunConfirmDescription:`A execução do loop será interrompida no próximo limite de etapa. Esta ação não pode ser desfeita.`,toast:{cancelSignalSent:`Sinal de cancelamento enviado`,cancelSignalSentDescription:`O job vai parar no próximo ponto seguro`,stopSignalSent:`Sinal de parada enviado`,stopSignalSentDescription:`A execução será interrompida no próximo limite de etapa`,cancelFailed:`Falha ao cancelar`,networkError:`Erro de rede`}},c={title:`Comparação de jobs`,jobN:`Job {{n}}`,loadFailed:`Falha ao carregar a comparação: {{error}}`,duration:`Duração`,cost:`Custo`,tokensOut:`Tokens de saída`,tokensIn:`Tokens de entrada`,cacheRead:`Leitura de cache`,model:`Modelo`,phasesDone:`Fases concluídas`,betterValueHint:`Os destaques a verde indicam melhor valor`},l={emptyTitle:`Ainda não há jobs`,emptyDescription:`Execute um comando acima para ver aqui o seu histórico de jobs`,loadFailed:`Falha ao carregar os jobs`,filterAll:`Todos ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Data inicial`,toDate:`Data final`,clear:`Limpar`,exitCompareMode:`Sair do modo de comparação`,compareTwoJobs:`Comparar 2 jobs`,clearJobs:`Limpar jobs`,selectTwoToCompare:`Selecione 2 jobs para comparar`,selectOneMore:`Selecione mais 1 job`,readyToCompare:`Pronto — clique em comparar`,compareAction:`Comparar →`,colStatus:`Estado`,colCommand:`Comando`,colDuration:`Duração`,colTokens:`Tokens`,colCost:`Custo`,colStarted:`Início`,profileTooltip:`Perfil: {{name}}`,pipelinePart:`Parte de um pipeline`,pipelineDependsOn:`(depende do passo anterior)`,deleteProposal:`Eliminar proposta`,loadMore:`Carregar mais ({{count}} restantes)`,priority:{critical:`crítica`,high:`alta`,normal:`normal`,low:`baixa`},clearModal:{title:`Limpar jobs`,jobsInHistory_one:`{{count}} job no histórico`,jobsInHistory_other:`{{count}} jobs no histórico`,clearAll_one:`Limpar {{count}} job`,clearAll_other:`Limpar todos os {{count}} jobs`,orByRange:`Ou limpar por intervalo de datas:`,fromPlaceholder:`De`,toPlaceholder:`Até`,clearInRange_one:`Limpar {{count}} job no intervalo`,clearInRange_other:`Limpar {{count}} jobs no intervalo`,clearRange:`Limpar intervalo`},deleteProposalConfirm:{title:`Eliminar a proposta?`,description:`Isto vai eliminar permanentemente 1 proposta. Esta ação não pode ser anulada.`},toast:{cleared_one:`{{count}} job removido`,cleared_other:`{{count}} jobs removidos`,clearFailed:`Falha ao limpar os jobs`,networkError:`Erro de rede`}},u={none:`Nenhum job ativo`,noneHint:`Selecione um comando abaixo para iniciar um job`,exitCode:`exit {{code}}`,cancelTooltip:`Enviar SIGTERM ao processo claude em execução`,viewLogs:`Ver logs`,toast:{cancelRequested:`Cancelamento do job pedido`,cancelRequestedDescription:`A enviar SIGTERM ao processo`,cancelFailed:`Falha ao cancelar o job`,networkError:`Erro de rede ao cancelar o job`}},d={setup:`Preparação`,iteration:`Iteração {{current}}/{{limit}}`,iterationBadge:`iter {{count}}`,follow:`A seguir em direto`,resumeFollow:`Retomar acompanhamento`,expandAll:`Expandir tudo`,collapseAll:`Recolher tudo`,copyStep:`Copiar passo`,copied:`Passo copiado para a área de transferência`,stepDetail:`Detalhes do passo`,stepDetailTemplate:`Modelo`,stepDetailCommand:`Comando`,copyCommand:`Copiar`,interrupted:`Interrompido`,waiting:`A aguardar o próximo passo...`,stepMapAria:`Mapa de passos do loop`},f={loading:`A carregar logs...`,empty:`Ainda sem saída de log`,filterPlaceholder:`Filtrar logs...`,copySuccess:`Log copiado para a área de transferência`,copyFailed:`Falha ao copiar o log`,lineCount:`{{filtered}} / {{total}} linhas`,jumpToBottom:`Ir para o fim`,phaseLines_one:`{{count}} linha`,phaseLines_other:`{{count}} linhas`,noMatchingLines:`Nenhuma linha corresponde`,noOutput:`Sem saída`,completed:`Concluído`,turns_one:`{{count}} turno`,turns_other:`{{count}} turnos`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
1
+ var e={running:`em execução`,completed:`concluído`,done:`feito`,failed:`falhou`,canceled:`cancelado`,queued:`em fila`,zombie:`zombie`,skipped:`ignorado`},t={running:`O job está em execução`,completed:`O job foi concluído com sucesso`,failed:`O job terminou com um código de saída diferente de zero`,canceled:`O job foi cancelado manualmente`,queued:`O job está a aguardar na fila`,queuedToRun:`O job está a aguardar para ser executado`,zombie:`O job foi terminado automaticamente após inatividade prolongada`,skipped:`O job foi ignorado porque um job anterior do pipeline falhou`},n={running:`em execução`,completed:`concluído`,failed:`falhou`,canceled:`cancelado`,zombie_terminated:`zombie`,queued:`em fila`,skipped:`ignorado`},r={title:`Jobs`,exportJobs:`Exportar jobs`,proposalDeleted:`Proposta eliminada`,proposal:{title:`Proposta`,noContent:`Ainda não há conteúdo da proposta.`,githubIssue:`Issue do GitHub:`,status:{input:`A aguardar dados`,exploring:`A explorar`,review:`Pronta para revisão`,refining:`A refinar`,creatingIssue:`A criar issue`,created:`Criada`,cancelled:`Cancelada`,unknown:`Estado desconhecido: {{status}}`}}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job não encontrado`,notFoundDescription:`O ID de job "{{id}}" não existe`,backToDashboard:`Voltar ao Dashboard`,startedAgo:`Iniciado {{timeAgo}}`,queuedWaiting:`Em fila — a aguardar início`,exportDiagnostic:`Exportar diagnóstico`,exportDiagnosticAria:`Exportar pacote de diagnóstico`,exportDiagnosticTooltip:`Transferir um ZIP com telemetria, logs e resumo deste job`,reExecute:`Reexecutar`,reExecuteTooltip:`Lançar um novo job com o mesmo comando`,cancelJob:`Cancelar job`,cancelJobTooltip:`Enviar SIGTERM ao processo em execução. O job será marcado como cancelado.`,cancelInteractive:`Descartar`,finalizeJob:`Finalizar job`,finalizing:`A finalizar…`,finalizeJobTooltip:`Terminar esta sessão interativa e somar os tokens e o custo de cada turno ao total do job.`,interactive:{ready:`Pronto — envie um prompt`,working:`Agente a trabalhar…`,placeholder:`Envie uma mensagem ao job em execução…`,send:`Enviar`,liveTotals:"{{turns}} turnos · ${{cost}}",autoHint:`Este job segue o seu plano e termina sozinho — as mensagens são orientação opcional.`,wrapUp:`Concluir agora`,wrapUpTooltip:`Termina a sessão agora — o job conclui com o trabalho produzido até ao momento, com os tokens e o custo de cada turno somados ao total.`,wrapUpStep:`Fechar este passo`,wrapUpStepTooltip:`Termina o passo atual agora — o loop avança com o que o passo produziu até ao momento.`,wrappingUp:`A concluir…`,queued_one:`{{count}} mensagem em fila`,queued_other:`{{count}} mensagens em fila`,waitingForStep:`Entre passos — o loop está a decidir o que corre a seguir. Poderá enviar uma mensagem quando o próximo passo de IA começar.`,waitingForStepShort:`A aguardar o próximo passo…`,sendDisabledEmpty:`Escreva primeiro uma mensagem`,sendDisabledWaiting:`Não há nenhuma sessão de passo ativa neste momento`},toast:{jobDeleted:`Job eliminado`,cancelSignalSent:`Sinal de cancelamento enviado`,cancelSignalSentDescription:`O job vai parar no próximo ponto seguro`,failed:`Falhou`,networkError:`Erro de rede`,exportFailed:`Falha na exportação`,exportFailedHttp:`Falha na exportação (HTTP {{status}})`,jobRequeued:`Job colocado novamente na fila`,spawnFailed:`Falha ao lançar o job`,finalizeScheduled:`A finalizar o job interativo…`,finalizeFailed:`Falha ao finalizar o job`,sendFailed:`Falha ao enviar a mensagem`,wrapUpScheduled:`A concluir o job…`,wrapUpStepScheduled:`A fechar o passo — o loop avança com o que produziu`}},a={inProgress:`Job em curso`,completed:`Job concluído`,failed:`Job falhou`,duration:`Duração`,cost:`Custo`,turns:`Turnos`,tokens:`Tokens`,filesCount_one:`{{count}} ficheiro`,filesCount_other:`{{count}} ficheiros`,pipelineTotal:`Total do pipeline ({{count}} fases)`,totalCost:`Custo total`,totalTokens:`Total de tokens`,filesModified:`Ficheiros modificados`,zoneInProgress:`Em andamento`,zoneFinal:`Resumo final`,zoneFinalPending:`Resumo final — calculado ao terminar`,pendingCaption:`Calculado ao terminar`,pendingTooltip:`Este é o valor real do provedor; aparece ao terminar o job.`,costTooltip:`O custo real é cobrado pelo provedor ao encerrar o job.`,liveTooltip:`Ao vivo`,explainer:`Custo, turnos e tokens são os valores reais do provedor e aparecem ao terminar.`,notAvailable:`Indisponível`,steps_one:`{{count}} passo`,steps_other:`{{count}} passos`,activity:{editing:`Editando {{arg}}`,writing:`Escrevendo {{arg}}`,reading:`Lendo {{arg}}`,searching:`Buscando “{{arg}}”`,running:`Executando: {{arg}}`,thinking:`Pensando…`,reasoning:`Raciocinando…`,working:`Trabalhando…`,connecting:`Conectando ao agente…`,starting:`Iniciando…`},pipelinePartial:`≥ exibido — {{count}} fase(s) sem custo registrado`,pipelinePartialTooltip:`Algumas fases terminaram antes de reportar o custo, portanto este total é um limite inferior.`,pipelineCostUnavailable:`A telemetria de custo está indisponível em todas as fases.`,pipelineUsageUnavailable:`A telemetria de tokens está indisponível em todas as fases.`,pipelineUsagePartial:`≥ mostrado — fases sem telemetria de tokens: {{count}}`,pipelineUsageTooltip:`Os fornecedores podem concluir fases sem fornecer telemetria de tokens; apenas a utilização conhecida é incluída.`},o={showMore:`+ {{count}} mais`,showLess:`Mostrar menos`,deletedTicket:`#{{id}} (eliminado)`,deletedTooltip:`O ticket já não existe`},s={notFound:`Job não encontrado`,cancelConfirmTitle:`Cancelar o job?`,cancelConfirmDescription:`O job vai parar no próximo ponto seguro. Esta ação não pode ser anulada.`,keepRunning:`Manter em execução`,cancelJob:`Cancelar job`,stopRun:`Parar execução`,stopRunConfirmTitle:`Parar esta execução?`,stopRunConfirmDescription:`A execução do loop será interrompida no próximo limite de etapa. Esta ação não pode ser desfeita.`,toast:{cancelSignalSent:`Sinal de cancelamento enviado`,cancelSignalSentDescription:`O job vai parar no próximo ponto seguro`,stopSignalSent:`Sinal de parada enviado`,stopSignalSentDescription:`A execução será interrompida no próximo limite de etapa`,cancelFailed:`Falha ao cancelar`,networkError:`Erro de rede`}},c={title:`Comparação de jobs`,jobN:`Job {{n}}`,loadFailed:`Falha ao carregar a comparação: {{error}}`,duration:`Duração`,cost:`Custo`,tokensOut:`Tokens de saída`,tokensIn:`Tokens de entrada`,cacheRead:`Leitura de cache`,model:`Modelo`,phasesDone:`Fases concluídas`,betterValueHint:`Os destaques a verde indicam melhor valor`},l={emptyTitle:`Ainda não há jobs`,emptyDescription:`Execute um comando acima para ver aqui o seu histórico de jobs`,loadFailed:`Falha ao carregar os jobs`,filterAll:`Todos ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Data inicial`,toDate:`Data final`,clear:`Limpar`,exitCompareMode:`Sair do modo de comparação`,compareTwoJobs:`Comparar 2 jobs`,clearJobs:`Limpar jobs`,selectTwoToCompare:`Selecione 2 jobs para comparar`,selectOneMore:`Selecione mais 1 job`,readyToCompare:`Pronto — clique em comparar`,compareAction:`Comparar →`,colStatus:`Estado`,colCommand:`Comando`,colDuration:`Duração`,colTokens:`Tokens`,colCost:`Custo`,colStarted:`Início`,profileTooltip:`Perfil: {{name}}`,pipelinePart:`Parte de um pipeline`,pipelineDependsOn:`(depende do passo anterior)`,deleteProposal:`Eliminar proposta`,loadMore:`Carregar mais ({{count}} restantes)`,priority:{critical:`crítica`,high:`alta`,normal:`normal`,low:`baixa`},clearModal:{title:`Limpar jobs`,jobsInHistory_one:`{{count}} job no histórico`,jobsInHistory_other:`{{count}} jobs no histórico`,clearAll_one:`Limpar {{count}} job`,clearAll_other:`Limpar todos os {{count}} jobs`,orByRange:`Ou limpar por intervalo de datas:`,fromPlaceholder:`De`,toPlaceholder:`Até`,clearInRange_one:`Limpar {{count}} job no intervalo`,clearInRange_other:`Limpar {{count}} jobs no intervalo`,clearRange:`Limpar intervalo`},deleteProposalConfirm:{title:`Eliminar a proposta?`,description:`Isto vai eliminar permanentemente 1 proposta. Esta ação não pode ser anulada.`},toast:{cleared_one:`{{count}} job removido`,cleared_other:`{{count}} jobs removidos`,clearFailed:`Falha ao limpar os jobs`,networkError:`Erro de rede`}},u={none:`Nenhum job ativo`,noneHint:`Selecione um comando abaixo para iniciar um job`,exitCode:`exit {{code}}`,cancelTooltip:`Enviar SIGTERM ao processo claude em execução`,viewLogs:`Ver logs`,toast:{cancelRequested:`Cancelamento do job pedido`,cancelRequestedDescription:`A enviar SIGTERM ao processo`,cancelFailed:`Falha ao cancelar o job`,networkError:`Erro de rede ao cancelar o job`}},d={setup:`Preparação`,iteration:`Iteração {{current}}/{{limit}}`,iterationBadge:`iter {{count}}`,follow:`A seguir em direto`,resumeFollow:`Retomar acompanhamento`,expandAll:`Expandir tudo`,collapseAll:`Recolher tudo`,copyStep:`Copiar passo`,copied:`Passo copiado para a área de transferência`,stepDetail:`Detalhes do passo`,stepDetailTemplate:`Modelo`,stepDetailCommand:`Comando`,copyCommand:`Copiar`,interrupted:`Interrompido`,waiting:`A aguardar o próximo passo...`,stepMapAria:`Mapa de passos do loop`,stalled:`Travado`,stalledIdle_one:`Sem saída do fornecedor durante {{count}} minuto — a app parou esta tentativa`,stalledIdle_other:`Sem saída do fornecedor durante {{count}} minutos — a app parou esta tentativa`,providerLimit:`Limite do fornecedor`,providerLimitHint:`O fornecedor respondeu com um aviso de limite de utilização, por isso a app parou a execução em vez de continuar a ciclar.`},f={loading:`A carregar logs...`,empty:`Ainda sem saída de log`,filterPlaceholder:`Filtrar logs...`,copySuccess:`Log copiado para a área de transferência`,copyFailed:`Falha ao copiar o log`,lineCount:`{{filtered}} / {{total}} linhas`,jumpToBottom:`Ir para o fim`,phaseLines_one:`{{count}} linha`,phaseLines_other:`{{count}} linhas`,noMatchingLines:`Nenhuma linha corresponde`,noOutput:`Sem saída`,completed:`Concluído`,turns_one:`{{count}} turno`,turns_other:`{{count}} turnos`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
@@ -1 +1 @@
1
- var e={running:`en ejecución`,completed:`completado`,done:`hecho`,failed:`fallido`,canceled:`cancelado`,queued:`en cola`,zombie:`zombie`,skipped:`omitido`},t={running:`El job se está ejecutando`,completed:`El job se completó correctamente`,failed:`El job terminó con un código de salida distinto de cero`,canceled:`El job se canceló manualmente`,queued:`El job está esperando en la cola`,queuedToRun:`El job está esperando para ejecutarse`,zombie:`El job se terminó automáticamente tras una inactividad prolongada`,skipped:`El job se omitió porque falló un job padre del pipeline`},n={running:`en ejecución`,completed:`completado`,failed:`fallido`,canceled:`cancelado`,zombie_terminated:`zombie`,queued:`en cola`,skipped:`omitido`},r={title:`Jobs`,exportJobs:`Exportar jobs`,proposalDeleted:`Propuesta eliminada`,proposal:{title:`Propuesta`,noContent:`Aún no hay contenido de la propuesta.`,githubIssue:`Issue de GitHub:`,status:{input:`Esperando información`,exploring:`Explorando`,review:`Lista para revisión`,refining:`Refinando`,creatingIssue:`Creando incidencia`,created:`Creada`,cancelled:`Cancelada`,unknown:`Estado desconocido: {{status}}`}}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job no encontrado`,notFoundDescription:`El ID de job «{{id}}» no existe`,backToDashboard:`Volver al Dashboard`,startedAgo:`Iniciado {{timeAgo}}`,queuedWaiting:`En cola — esperando para empezar`,exportDiagnostic:`Exportar diagnóstico`,exportDiagnosticAria:`Exportar paquete de diagnóstico`,exportDiagnosticTooltip:`Descarga un ZIP con la telemetría, los logs y el resumen de este job`,reExecute:`Reejecutar`,reExecuteTooltip:`Lanza un nuevo job con el mismo comando`,cancelJob:`Cancelar job`,cancelJobTooltip:`Envía SIGTERM al proceso en ejecución. El job se marcará como cancelado.`,cancelInteractive:`Descartar`,finalizeJob:`Finalizar job`,finalizing:`Finalizando…`,finalizeJobTooltip:`Termina esta sesión interactiva e incorpora los tokens y el coste de cada turno al total del job.`,interactive:{ready:`Listo — envía un prompt`,working:`El agente está trabajando…`,placeholder:`Envía un mensaje al job en ejecución…`,send:`Enviar`,liveTotals:"{{turns}} turnos · ${{cost}}",autoHint:`Este job sigue su plan y termina solo — los mensajes son orientación opcional.`,wrapUp:`Terminar ahora`,wrapUpTooltip:`Finaliza la sesión ahora — el job se completa con el trabajo producido hasta el momento, con los tokens y el coste de cada turno sumados al total.`,wrapUpStep:`Cerrar este paso`,wrapUpStepTooltip:`Finaliza el paso actual ahora — el loop avanza con lo que el paso ha producido hasta el momento.`,wrappingUp:`Terminando…`,queued_one:`{{count}} mensaje en cola`,queued_other:`{{count}} mensajes en cola`,waitingForStep:`Entre pasos — el loop está decidiendo qué se ejecuta a continuación. Podrás enviar un mensaje cuando empiece el siguiente paso de IA.`,waitingForStepShort:`Esperando el siguiente paso…`,sendDisabledEmpty:`Escribe un mensaje primero`,sendDisabledWaiting:`Ahora mismo no hay ninguna sesión de paso activa`},toast:{jobDeleted:`Job eliminado`,cancelSignalSent:`Señal de cancelación enviada`,cancelSignalSentDescription:`El job se detendrá en el siguiente punto seguro`,failed:`Error`,networkError:`Error de red`,exportFailed:`Error al exportar`,exportFailedHttp:`Error al exportar (HTTP {{status}})`,jobRequeued:`Job reencolado`,spawnFailed:`No se pudo lanzar el job`,finalizeScheduled:`Finalizando job interactivo…`,finalizeFailed:`No se pudo finalizar el job`,sendFailed:`No se pudo enviar el mensaje`,wrapUpScheduled:`Terminando el job…`,wrapUpStepScheduled:`Cerrando el paso — el loop avanza con lo que ha producido`}},a={inProgress:`Job en curso`,completed:`Job completado`,failed:`Job fallido`,duration:`Duración`,cost:`Coste`,turns:`Turnos`,tokens:`Tokens`,filesCount_one:`{{count}} archivo`,filesCount_other:`{{count}} archivos`,pipelineTotal:`Total del pipeline ({{count}} fases)`,totalCost:`Coste total`,totalTokens:`Tokens totales`,filesModified:`Archivos modificados`,zoneInProgress:`En curso`,zoneFinal:`Resumen final`,zoneFinalPending:`Resumen final — se calcula al terminar`,pendingCaption:`Se calcula al terminar`,pendingTooltip:`Esta cifra es la real del proveedor; aparece al terminar el job.`,costTooltip:`El coste real lo factura el proveedor al cerrar el job.`,liveTooltip:`En vivo`,explainer:`Las cifras de coste, turnos y tokens son las reales del proveedor y aparecen al terminar.`,notAvailable:`No disponible`,steps_one:`{{count}} paso`,steps_other:`{{count}} pasos`,activity:{editing:`Editando {{arg}}`,writing:`Escribiendo {{arg}}`,reading:`Leyendo {{arg}}`,searching:`Buscando “{{arg}}”`,running:`Ejecutando: {{arg}}`,thinking:`Pensando…`,reasoning:`Razonando…`,working:`Trabajando…`,connecting:`Conectando con el agente…`,starting:`Iniciando…`},pipelinePartial:`≥ mostrado — {{count}} fase(s) aún sin coste registrado`,pipelinePartialTooltip:`Algunas fases no informaron el coste, por lo que este total es un mínimo.`,pipelineCostUnavailable:`La telemetría de coste no está disponible en ninguna fase.`,pipelineUsageUnavailable:`La telemetría de tokens no está disponible en ninguna fase.`,pipelineUsagePartial:`≥ mostrado — {{count}} fase(s) sin telemetría de tokens`,pipelineUsageTooltip:`Los proveedores pueden completar fases sin exponer telemetría de tokens; solo se incluye el uso conocido.`},o={showMore:`+ {{count}} más`,showLess:`Mostrar menos`,deletedTicket:`#{{id}} (eliminado)`,deletedTooltip:`El ticket ya no existe`},s={notFound:`Job no encontrado`,cancelConfirmTitle:`¿Cancelar el job?`,cancelConfirmDescription:`El job se detendrá en el siguiente punto seguro. Esta acción no se puede deshacer.`,keepRunning:`Seguir ejecutando`,cancelJob:`Cancelar job`,stopRun:`Detener ejecución`,stopRunConfirmTitle:`¿Detener esta ejecución?`,stopRunConfirmDescription:`La ejecución del loop se detendrá en el siguiente límite de paso. Esta acción no se puede deshacer.`,toast:{cancelSignalSent:`Señal de cancelación enviada`,cancelSignalSentDescription:`El job se detendrá en el siguiente punto seguro`,stopSignalSent:`Señal de detención enviada`,stopSignalSentDescription:`La ejecución se detendrá en el siguiente límite de paso`,cancelFailed:`No se pudo cancelar`,networkError:`Error de red`}},c={title:`Comparación de jobs`,jobN:`Job {{n}}`,loadFailed:`No se pudo cargar la comparación: {{error}}`,duration:`Duración`,cost:`Coste`,tokensOut:`Tokens de salida`,tokensIn:`Tokens de entrada`,cacheRead:`Lectura de caché`,model:`Modelo`,phasesDone:`Fases completadas`,betterValueHint:`Los resaltados en verde indican mejor valor`},l={emptyTitle:`Aún no hay jobs`,emptyDescription:`Ejecuta un comando arriba para ver aquí tu historial de jobs`,loadFailed:`No se pudieron cargar los jobs`,filterAll:`Todos ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Fecha de inicio`,toDate:`Fecha de fin`,clear:`Limpiar`,exitCompareMode:`Salir del modo comparación`,compareTwoJobs:`Comparar 2 jobs`,clearJobs:`Limpiar jobs`,selectTwoToCompare:`Selecciona 2 jobs para comparar`,selectOneMore:`Selecciona 1 job más`,readyToCompare:`Listo — haz clic en comparar`,compareAction:`Comparar →`,colStatus:`Estado`,colCommand:`Comando`,colDuration:`Duración`,colTokens:`Tokens`,colCost:`Coste`,colStarted:`Inicio`,profileTooltip:`Perfil: {{name}}`,pipelinePart:`Parte de un pipeline`,pipelineDependsOn:`(depende del paso anterior)`,deleteProposal:`Eliminar propuesta`,loadMore:`Cargar más ({{count}} restantes)`,priority:{critical:`crítica`,high:`alta`,normal:`normal`,low:`baja`},clearModal:{title:`Limpiar jobs`,jobsInHistory_one:`{{count}} job en el historial`,jobsInHistory_other:`{{count}} jobs en el historial`,clearAll_one:`Limpiar {{count}} job`,clearAll_other:`Limpiar los {{count}} jobs`,orByRange:`O limpiar por rango de fechas:`,fromPlaceholder:`Desde`,toPlaceholder:`Hasta`,clearInRange_one:`Limpiar {{count}} job del rango`,clearInRange_other:`Limpiar {{count}} jobs del rango`,clearRange:`Limpiar rango`},deleteProposalConfirm:{title:`¿Eliminar la propuesta?`,description:`Se eliminará permanentemente 1 propuesta. Esta acción no se puede deshacer.`},toast:{cleared_one:`{{count}} job eliminado`,cleared_other:`{{count}} jobs eliminados`,clearFailed:`No se pudieron limpiar los jobs`,networkError:`Error de red`}},u={none:`Ningún job activo`,noneHint:`Selecciona un comando abajo para iniciar un job`,exitCode:`exit {{code}}`,cancelTooltip:`Envía SIGTERM al proceso de claude en ejecución`,viewLogs:`Ver logs`,toast:{cancelRequested:`Cancelación del job solicitada`,cancelRequestedDescription:`Enviando SIGTERM al proceso`,cancelFailed:`No se pudo cancelar el job`,networkError:`Error de red al cancelar el job`}},d={setup:`Preparación`,iteration:`Iteración {{current}}/{{limit}}`,iterationBadge:`iter {{count}}`,follow:`Siguiendo en vivo`,resumeFollow:`Reanudar seguimiento`,expandAll:`Expandir todo`,collapseAll:`Contraer todo`,copyStep:`Copiar paso`,copied:`Paso copiado al portapapeles`,stepDetail:`Detalles del paso`,stepDetailTemplate:`Plantilla`,stepDetailCommand:`Comando`,copyCommand:`Copiar`,interrupted:`Interrumpido`,waiting:`Esperando el siguiente paso...`,stepMapAria:`Mapa de pasos del loop`},f={loading:`Cargando logs...`,empty:`Aún no hay salida de log`,filterPlaceholder:`Filtrar logs...`,copySuccess:`Log copiado al portapapeles`,copyFailed:`No se pudo copiar el log`,lineCount:`{{filtered}} / {{total}} líneas`,jumpToBottom:`Ir al final`,phaseLines_one:`{{count}} línea`,phaseLines_other:`{{count}} líneas`,noMatchingLines:`Ninguna línea coincide`,noOutput:`Sin salida`,completed:`Completado`,turns_one:`{{count}} turno`,turns_other:`{{count}} turnos`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
1
+ var e={running:`en ejecución`,completed:`completado`,done:`hecho`,failed:`fallido`,canceled:`cancelado`,queued:`en cola`,zombie:`zombie`,skipped:`omitido`},t={running:`El job se está ejecutando`,completed:`El job se completó correctamente`,failed:`El job terminó con un código de salida distinto de cero`,canceled:`El job se canceló manualmente`,queued:`El job está esperando en la cola`,queuedToRun:`El job está esperando para ejecutarse`,zombie:`El job se terminó automáticamente tras una inactividad prolongada`,skipped:`El job se omitió porque falló un job padre del pipeline`},n={running:`en ejecución`,completed:`completado`,failed:`fallido`,canceled:`cancelado`,zombie_terminated:`zombie`,queued:`en cola`,skipped:`omitido`},r={title:`Jobs`,exportJobs:`Exportar jobs`,proposalDeleted:`Propuesta eliminada`,proposal:{title:`Propuesta`,noContent:`Aún no hay contenido de la propuesta.`,githubIssue:`Issue de GitHub:`,status:{input:`Esperando información`,exploring:`Explorando`,review:`Lista para revisión`,refining:`Refinando`,creatingIssue:`Creando incidencia`,created:`Creada`,cancelled:`Cancelada`,unknown:`Estado desconocido: {{status}}`}}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job no encontrado`,notFoundDescription:`El ID de job «{{id}}» no existe`,backToDashboard:`Volver al Dashboard`,startedAgo:`Iniciado {{timeAgo}}`,queuedWaiting:`En cola — esperando para empezar`,exportDiagnostic:`Exportar diagnóstico`,exportDiagnosticAria:`Exportar paquete de diagnóstico`,exportDiagnosticTooltip:`Descarga un ZIP con la telemetría, los logs y el resumen de este job`,reExecute:`Reejecutar`,reExecuteTooltip:`Lanza un nuevo job con el mismo comando`,cancelJob:`Cancelar job`,cancelJobTooltip:`Envía SIGTERM al proceso en ejecución. El job se marcará como cancelado.`,cancelInteractive:`Descartar`,finalizeJob:`Finalizar job`,finalizing:`Finalizando…`,finalizeJobTooltip:`Termina esta sesión interactiva e incorpora los tokens y el coste de cada turno al total del job.`,interactive:{ready:`Listo — envía un prompt`,working:`El agente está trabajando…`,placeholder:`Envía un mensaje al job en ejecución…`,send:`Enviar`,liveTotals:"{{turns}} turnos · ${{cost}}",autoHint:`Este job sigue su plan y termina solo — los mensajes son orientación opcional.`,wrapUp:`Terminar ahora`,wrapUpTooltip:`Finaliza la sesión ahora — el job se completa con el trabajo producido hasta el momento, con los tokens y el coste de cada turno sumados al total.`,wrapUpStep:`Cerrar este paso`,wrapUpStepTooltip:`Finaliza el paso actual ahora — el loop avanza con lo que el paso ha producido hasta el momento.`,wrappingUp:`Terminando…`,queued_one:`{{count}} mensaje en cola`,queued_other:`{{count}} mensajes en cola`,waitingForStep:`Entre pasos — el loop está decidiendo qué se ejecuta a continuación. Podrás enviar un mensaje cuando empiece el siguiente paso de IA.`,waitingForStepShort:`Esperando el siguiente paso…`,sendDisabledEmpty:`Escribe un mensaje primero`,sendDisabledWaiting:`Ahora mismo no hay ninguna sesión de paso activa`},toast:{jobDeleted:`Job eliminado`,cancelSignalSent:`Señal de cancelación enviada`,cancelSignalSentDescription:`El job se detendrá en el siguiente punto seguro`,failed:`Error`,networkError:`Error de red`,exportFailed:`Error al exportar`,exportFailedHttp:`Error al exportar (HTTP {{status}})`,jobRequeued:`Job reencolado`,spawnFailed:`No se pudo lanzar el job`,finalizeScheduled:`Finalizando job interactivo…`,finalizeFailed:`No se pudo finalizar el job`,sendFailed:`No se pudo enviar el mensaje`,wrapUpScheduled:`Terminando el job…`,wrapUpStepScheduled:`Cerrando el paso — el loop avanza con lo que ha producido`}},a={inProgress:`Job en curso`,completed:`Job completado`,failed:`Job fallido`,duration:`Duración`,cost:`Coste`,turns:`Turnos`,tokens:`Tokens`,filesCount_one:`{{count}} archivo`,filesCount_other:`{{count}} archivos`,pipelineTotal:`Total del pipeline ({{count}} fases)`,totalCost:`Coste total`,totalTokens:`Tokens totales`,filesModified:`Archivos modificados`,zoneInProgress:`En curso`,zoneFinal:`Resumen final`,zoneFinalPending:`Resumen final — se calcula al terminar`,pendingCaption:`Se calcula al terminar`,pendingTooltip:`Esta cifra es la real del proveedor; aparece al terminar el job.`,costTooltip:`El coste real lo factura el proveedor al cerrar el job.`,liveTooltip:`En vivo`,explainer:`Las cifras de coste, turnos y tokens son las reales del proveedor y aparecen al terminar.`,notAvailable:`No disponible`,steps_one:`{{count}} paso`,steps_other:`{{count}} pasos`,activity:{editing:`Editando {{arg}}`,writing:`Escribiendo {{arg}}`,reading:`Leyendo {{arg}}`,searching:`Buscando “{{arg}}”`,running:`Ejecutando: {{arg}}`,thinking:`Pensando…`,reasoning:`Razonando…`,working:`Trabajando…`,connecting:`Conectando con el agente…`,starting:`Iniciando…`},pipelinePartial:`≥ mostrado — {{count}} fase(s) aún sin coste registrado`,pipelinePartialTooltip:`Algunas fases no informaron el coste, por lo que este total es un mínimo.`,pipelineCostUnavailable:`La telemetría de coste no está disponible en ninguna fase.`,pipelineUsageUnavailable:`La telemetría de tokens no está disponible en ninguna fase.`,pipelineUsagePartial:`≥ mostrado — {{count}} fase(s) sin telemetría de tokens`,pipelineUsageTooltip:`Los proveedores pueden completar fases sin exponer telemetría de tokens; solo se incluye el uso conocido.`},o={showMore:`+ {{count}} más`,showLess:`Mostrar menos`,deletedTicket:`#{{id}} (eliminado)`,deletedTooltip:`El ticket ya no existe`},s={notFound:`Job no encontrado`,cancelConfirmTitle:`¿Cancelar el job?`,cancelConfirmDescription:`El job se detendrá en el siguiente punto seguro. Esta acción no se puede deshacer.`,keepRunning:`Seguir ejecutando`,cancelJob:`Cancelar job`,stopRun:`Detener ejecución`,stopRunConfirmTitle:`¿Detener esta ejecución?`,stopRunConfirmDescription:`La ejecución del loop se detendrá en el siguiente límite de paso. Esta acción no se puede deshacer.`,toast:{cancelSignalSent:`Señal de cancelación enviada`,cancelSignalSentDescription:`El job se detendrá en el siguiente punto seguro`,stopSignalSent:`Señal de detención enviada`,stopSignalSentDescription:`La ejecución se detendrá en el siguiente límite de paso`,cancelFailed:`No se pudo cancelar`,networkError:`Error de red`}},c={title:`Comparación de jobs`,jobN:`Job {{n}}`,loadFailed:`No se pudo cargar la comparación: {{error}}`,duration:`Duración`,cost:`Coste`,tokensOut:`Tokens de salida`,tokensIn:`Tokens de entrada`,cacheRead:`Lectura de caché`,model:`Modelo`,phasesDone:`Fases completadas`,betterValueHint:`Los resaltados en verde indican mejor valor`},l={emptyTitle:`Aún no hay jobs`,emptyDescription:`Ejecuta un comando arriba para ver aquí tu historial de jobs`,loadFailed:`No se pudieron cargar los jobs`,filterAll:`Todos ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Fecha de inicio`,toDate:`Fecha de fin`,clear:`Limpiar`,exitCompareMode:`Salir del modo comparación`,compareTwoJobs:`Comparar 2 jobs`,clearJobs:`Limpiar jobs`,selectTwoToCompare:`Selecciona 2 jobs para comparar`,selectOneMore:`Selecciona 1 job más`,readyToCompare:`Listo — haz clic en comparar`,compareAction:`Comparar →`,colStatus:`Estado`,colCommand:`Comando`,colDuration:`Duración`,colTokens:`Tokens`,colCost:`Coste`,colStarted:`Inicio`,profileTooltip:`Perfil: {{name}}`,pipelinePart:`Parte de un pipeline`,pipelineDependsOn:`(depende del paso anterior)`,deleteProposal:`Eliminar propuesta`,loadMore:`Cargar más ({{count}} restantes)`,priority:{critical:`crítica`,high:`alta`,normal:`normal`,low:`baja`},clearModal:{title:`Limpiar jobs`,jobsInHistory_one:`{{count}} job en el historial`,jobsInHistory_other:`{{count}} jobs en el historial`,clearAll_one:`Limpiar {{count}} job`,clearAll_other:`Limpiar los {{count}} jobs`,orByRange:`O limpiar por rango de fechas:`,fromPlaceholder:`Desde`,toPlaceholder:`Hasta`,clearInRange_one:`Limpiar {{count}} job del rango`,clearInRange_other:`Limpiar {{count}} jobs del rango`,clearRange:`Limpiar rango`},deleteProposalConfirm:{title:`¿Eliminar la propuesta?`,description:`Se eliminará permanentemente 1 propuesta. Esta acción no se puede deshacer.`},toast:{cleared_one:`{{count}} job eliminado`,cleared_other:`{{count}} jobs eliminados`,clearFailed:`No se pudieron limpiar los jobs`,networkError:`Error de red`}},u={none:`Ningún job activo`,noneHint:`Selecciona un comando abajo para iniciar un job`,exitCode:`exit {{code}}`,cancelTooltip:`Envía SIGTERM al proceso de claude en ejecución`,viewLogs:`Ver logs`,toast:{cancelRequested:`Cancelación del job solicitada`,cancelRequestedDescription:`Enviando SIGTERM al proceso`,cancelFailed:`No se pudo cancelar el job`,networkError:`Error de red al cancelar el job`}},d={setup:`Preparación`,iteration:`Iteración {{current}}/{{limit}}`,iterationBadge:`iter {{count}}`,follow:`Siguiendo en vivo`,resumeFollow:`Reanudar seguimiento`,expandAll:`Expandir todo`,collapseAll:`Contraer todo`,copyStep:`Copiar paso`,copied:`Paso copiado al portapapeles`,stepDetail:`Detalles del paso`,stepDetailTemplate:`Plantilla`,stepDetailCommand:`Comando`,copyCommand:`Copiar`,interrupted:`Interrumpido`,waiting:`Esperando el siguiente paso...`,stepMapAria:`Mapa de pasos del loop`,stalled:`Atascado`,stalledIdle_one:`Sin salida del proveedor durante {{count}} minuto: la app detuvo este intento`,stalledIdle_other:`Sin salida del proveedor durante {{count}} minutos: la app detuvo este intento`,providerLimit:`Límite del proveedor`,providerLimitHint:`El proveedor respondió con un aviso de límite de uso, así que la app detuvo el run en vez de seguir iterando.`},f={loading:`Cargando logs...`,empty:`Aún no hay salida de log`,filterPlaceholder:`Filtrar logs...`,copySuccess:`Log copiado al portapapeles`,copyFailed:`No se pudo copiar el log`,lineCount:`{{filtered}} / {{total}} líneas`,jumpToBottom:`Ir al final`,phaseLines_one:`{{count}} línea`,phaseLines_other:`{{count}} líneas`,noMatchingLines:`Ninguna línea coincide`,noOutput:`Sin salida`,completed:`Completado`,turns_one:`{{count}} turno`,turns_other:`{{count}} turnos`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
@@ -1 +1 @@
1
- var e={running:`läuft`,completed:`abgeschlossen`,done:`fertig`,failed:`fehlgeschlagen`,canceled:`abgebrochen`,queued:`in Warteschlange`,zombie:`Zombie`,skipped:`übersprungen`},t={running:`Job wird gerade ausgeführt`,completed:`Job erfolgreich abgeschlossen`,failed:`Job wurde mit einem Exit-Code ungleich null beendet`,canceled:`Job wurde manuell abgebrochen`,queued:`Job wartet in der Warteschlange`,queuedToRun:`Job wartet auf Ausführung`,zombie:`Job wurde nach längerer Inaktivität automatisch beendet`,skipped:`Job wurde übersprungen, weil ein übergeordneter Job in der Pipeline fehlgeschlagen ist`},n={running:`läuft`,completed:`abgeschlossen`,failed:`fehlgeschlagen`,canceled:`abgebrochen`,zombie_terminated:`Zombie`,queued:`in Warteschlange`,skipped:`übersprungen`},r={title:`Jobs`,exportJobs:`Jobs exportieren`,proposalDeleted:`Vorschlag gelöscht`,proposal:{title:`Vorschlag`,noContent:`Noch kein Inhalt für den Vorschlag.`,githubIssue:`GitHub-Issue:`,status:{input:`Wartet auf Eingabe`,exploring:`Wird untersucht`,review:`Bereit zur Prüfung`,refining:`Wird verfeinert`,creatingIssue:`Issue wird erstellt`,created:`Erstellt`,cancelled:`Abgebrochen`,unknown:`Unbekannter Status: {{status}}`}}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job nicht gefunden`,notFoundDescription:`Die Job-ID „{{id}}“ existiert nicht`,backToDashboard:`Zurück zum Dashboard`,startedAgo:`Gestartet {{timeAgo}}`,queuedWaiting:`In Warteschlange – wartet auf Start`,exportDiagnostic:`Diagnose exportieren`,exportDiagnosticAria:`Diagnose-Bundle exportieren`,exportDiagnosticTooltip:`ZIP mit Telemetrie, Logs und Zusammenfassung für diesen Job herunterladen`,reExecute:`Erneut ausführen`,reExecuteTooltip:`Neuen Job mit demselben Befehl starten`,cancelJob:`Job abbrechen`,cancelJobTooltip:`SIGTERM an den laufenden Prozess senden. Der Job wird als abgebrochen markiert.`,cancelInteractive:`Verwerfen`,finalizeJob:`Job abschließen`,finalizing:`Wird abgeschlossen…`,finalizeJobTooltip:`Diese interaktive Sitzung beenden und Tokens sowie Kosten aller Turns in die Job-Gesamtsumme einrechnen.`,interactive:{ready:`Bereit – sende einen Prompt`,working:`Agent arbeitet…`,placeholder:`Sende eine Nachricht an den laufenden Job…`,send:`Senden`,liveTotals:"{{turns}} Turns · ${{cost}}",autoHint:`Dieser Job folgt seinem Plan und endet von selbst — Nachrichten sind optionale Steuerung.`,wrapUp:`Jetzt abschließen`,wrapUpTooltip:`Beendet die Session jetzt — der Job wird mit der bisher erzeugten Arbeit abgeschlossen, Tokens und Kosten jedes Turns fließen in die Summe ein.`,wrapUpStep:`Diesen Schritt abschließen`,wrapUpStepTooltip:`Beendet den aktuellen Schritt jetzt — der Loop geht mit dem weiter, was der Schritt bisher erzeugt hat.`,wrappingUp:`Wird abgeschlossen…`,queued_one:`{{count}} Nachricht in der Warteschlange`,queued_other:`{{count}} Nachrichten in der Warteschlange`,waitingForStep:`Zwischen den Schritten — der Loop entscheidet gerade, was als Nächstes läuft. Du kannst eine Nachricht senden, sobald der nächste KI-Schritt startet.`,waitingForStepShort:`Warten auf den nächsten Schritt…`,sendDisabledEmpty:`Schreibe zuerst eine Nachricht`,sendDisabledWaiting:`Gerade ist keine Schritt-Session aktiv`},toast:{jobDeleted:`Job gelöscht`,cancelSignalSent:`Abbruchsignal gesendet`,cancelSignalSentDescription:`Der Job stoppt am nächsten sicheren Punkt`,failed:`Fehlgeschlagen`,networkError:`Netzwerkfehler`,exportFailed:`Export fehlgeschlagen`,exportFailedHttp:`Export fehlgeschlagen (HTTP {{status}})`,jobRequeued:`Job erneut eingereiht`,spawnFailed:`Job konnte nicht gestartet werden`,finalizeScheduled:`Interaktiver Job wird abgeschlossen…`,finalizeFailed:`Job konnte nicht abgeschlossen werden`,sendFailed:`Nachricht konnte nicht gesendet werden`,wrapUpScheduled:`Job wird abgeschlossen…`,wrapUpStepScheduled:`Schritt wird abgeschlossen — der Loop geht mit dem Erzeugten weiter`}},a={inProgress:`Job läuft`,completed:`Job abgeschlossen`,failed:`Job fehlgeschlagen`,duration:`Dauer`,cost:`Kosten`,turns:`Turns`,tokens:`Tokens`,filesCount_one:`{{count}} Datei`,filesCount_other:`{{count}} Dateien`,pipelineTotal:`Pipeline gesamt ({{count}} Phasen)`,totalCost:`Gesamtkosten`,totalTokens:`Tokens gesamt`,filesModified:`Geänderte Dateien`,zoneInProgress:`Läuft`,zoneFinal:`Endabrechnung`,zoneFinalPending:`Endabrechnung — wird am Ende berechnet`,pendingCaption:`Wird am Ende berechnet`,pendingTooltip:`Dies ist der reale Wert des Anbieters; er erscheint, wenn der Job endet.`,costTooltip:`Die realen Kosten werden vom Anbieter beim Abschluss des Jobs berechnet.`,liveTooltip:`Live`,explainer:`Kosten, Runden und Tokens sind die realen Werte des Anbieters und erscheinen am Ende.`,notAvailable:`Nicht verfügbar`,steps_one:`{{count}} Schritt`,steps_other:`{{count}} Schritte`,activity:{editing:`Bearbeite {{arg}}`,writing:`Schreibe {{arg}}`,reading:`Lese {{arg}}`,searching:`Suche „{{arg}}“`,running:`Führe aus: {{arg}}`,thinking:`Denkt nach…`,reasoning:`Überlegt…`,working:`Arbeitet…`,connecting:`Verbinde mit dem Agenten…`,starting:`Startet…`},pipelinePartial:`≥ angezeigt — {{count}} Phase(n) ohne erfasste Kosten`,pipelinePartialTooltip:`Einige Phasen wurden beendet, bevor ihre Kosten gemeldet wurden – dieser Gesamtwert ist eine Untergrenze.`,pipelineCostUnavailable:`Die Kostentelemetrie ist für alle Phasen nicht verfügbar.`,pipelineUsageUnavailable:`Die Token-Telemetrie ist für alle Phasen nicht verfügbar.`,pipelineUsagePartial:`≥ angezeigt — Phasen ohne Token-Telemetrie: {{count}}`,pipelineUsageTooltip:`Anbieter können Phasen abschließen, ohne Token-Telemetrie bereitzustellen; enthalten ist nur die bekannte Nutzung.`},o={showMore:`+ {{count}} weitere`,showLess:`Weniger anzeigen`,deletedTicket:`#{{id}} (gelöscht)`,deletedTooltip:`Ticket existiert nicht mehr`},s={notFound:`Job nicht gefunden`,cancelConfirmTitle:`Job abbrechen?`,cancelConfirmDescription:`Der Job stoppt am nächsten sicheren Punkt. Diese Aktion kann nicht rückgängig gemacht werden.`,keepRunning:`Weiterlaufen lassen`,cancelJob:`Job abbrechen`,stopRun:`Lauf stoppen`,stopRunConfirmTitle:`Diesen Lauf stoppen?`,stopRunConfirmDescription:`Der Loop-Lauf stoppt an der nächsten Schrittgrenze. Diese Aktion kann nicht rückgängig gemacht werden.`,toast:{cancelSignalSent:`Abbruchsignal gesendet`,cancelSignalSentDescription:`Der Job stoppt am nächsten sicheren Punkt`,stopSignalSent:`Stoppsignal gesendet`,stopSignalSentDescription:`Der Lauf stoppt an der nächsten Schrittgrenze`,cancelFailed:`Abbrechen fehlgeschlagen`,networkError:`Netzwerkfehler`}},c={title:`Job-Vergleich`,jobN:`Job {{n}}`,loadFailed:`Vergleich konnte nicht geladen werden: {{error}}`,duration:`Dauer`,cost:`Kosten`,tokensOut:`Ausgabe-Tokens`,tokensIn:`Eingabe-Tokens`,cacheRead:`Cache-Read`,model:`Modell`,phasesDone:`Abgeschlossene Phasen`,betterValueHint:`Grün hervorgehoben = besserer Wert`},l={emptyTitle:`Noch keine Jobs`,emptyDescription:`Führe oben einen Befehl aus, um hier deinen Job-Verlauf zu sehen`,loadFailed:`Jobs konnten nicht geladen werden`,filterAll:`Alle ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Von`,toDate:`Bis`,clear:`Zurücksetzen`,exitCompareMode:`Vergleichsmodus verlassen`,compareTwoJobs:`2 Jobs vergleichen`,clearJobs:`Jobs löschen`,selectTwoToCompare:`Wähle 2 Jobs zum Vergleichen`,selectOneMore:`Wähle 1 weiteren Job`,readyToCompare:`Bereit – auf Vergleichen klicken`,compareAction:`Vergleichen →`,colStatus:`Status`,colCommand:`Befehl`,colDuration:`Dauer`,colTokens:`Tokens`,colCost:`Kosten`,colStarted:`Gestartet`,profileTooltip:`Profil: {{name}}`,pipelinePart:`Teil einer Pipeline`,pipelineDependsOn:`(hängt vom vorherigen Schritt ab)`,deleteProposal:`Vorschlag löschen`,loadMore:`Mehr laden ({{count}} verbleibend)`,priority:{critical:`kritisch`,high:`hoch`,normal:`normal`,low:`niedrig`},clearModal:{title:`Jobs löschen`,jobsInHistory_one:`{{count}} Job im Verlauf`,jobsInHistory_other:`{{count}} Jobs im Verlauf`,clearAll_one:`{{count}} Job löschen`,clearAll_other:`Alle {{count}} Jobs löschen`,orByRange:`Oder nach Datumsbereich löschen:`,fromPlaceholder:`Von`,toPlaceholder:`Bis`,clearInRange_one:`{{count}} Job im Zeitraum löschen`,clearInRange_other:`{{count}} Jobs im Zeitraum löschen`,clearRange:`Zeitraum löschen`},deleteProposalConfirm:{title:`Vorschlag löschen?`,description:`Dadurch wird 1 Vorschlag dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.`},toast:{cleared_one:`{{count}} Job gelöscht`,cleared_other:`{{count}} Jobs gelöscht`,clearFailed:`Jobs konnten nicht gelöscht werden`,networkError:`Netzwerkfehler`}},u={none:`Kein aktiver Job`,noneHint:`Wähle unten einen Befehl, um einen Job zu starten`,exitCode:`exit {{code}}`,cancelTooltip:`SIGTERM an den laufenden claude-Prozess senden`,viewLogs:`Logs anzeigen`,toast:{cancelRequested:`Job-Abbruch angefordert`,cancelRequestedDescription:`SIGTERM wird an den Prozess gesendet`,cancelFailed:`Job konnte nicht abgebrochen werden`,networkError:`Netzwerkfehler beim Abbrechen des Jobs`}},d={setup:`Vorbereitung`,iteration:`Iteration {{current}}/{{limit}}`,iterationBadge:`Iter. {{count}}`,follow:`Folgt live`,resumeFollow:`Verfolgung fortsetzen`,expandAll:`Alle ausklappen`,collapseAll:`Alle einklappen`,copyStep:`Schritt kopieren`,copied:`Schritt in die Zwischenablage kopiert`,stepDetail:`Schrittdetails`,stepDetailTemplate:`Vorlage`,stepDetailCommand:`Befehl`,copyCommand:`Kopieren`,interrupted:`Unterbrochen`,waiting:`Warte auf den nächsten Schritt…`,stepMapAria:`Loop-Schrittübersicht`},f={loading:`Logs werden geladen…`,empty:`Noch keine Log-Ausgabe`,filterPlaceholder:`Logs filtern…`,copySuccess:`Log in die Zwischenablage kopiert`,copyFailed:`Log konnte nicht kopiert werden`,lineCount:`{{filtered}} / {{total}} Zeilen`,jumpToBottom:`Zum Ende springen`,phaseLines_one:`{{count}} Zeile`,phaseLines_other:`{{count}} Zeilen`,noMatchingLines:`Keine passenden Zeilen`,noOutput:`Keine Ausgabe`,completed:`Abgeschlossen`,turns_one:`{{count}} Turn`,turns_other:`{{count}} Turns`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
1
+ var e={running:`läuft`,completed:`abgeschlossen`,done:`fertig`,failed:`fehlgeschlagen`,canceled:`abgebrochen`,queued:`in Warteschlange`,zombie:`Zombie`,skipped:`übersprungen`},t={running:`Job wird gerade ausgeführt`,completed:`Job erfolgreich abgeschlossen`,failed:`Job wurde mit einem Exit-Code ungleich null beendet`,canceled:`Job wurde manuell abgebrochen`,queued:`Job wartet in der Warteschlange`,queuedToRun:`Job wartet auf Ausführung`,zombie:`Job wurde nach längerer Inaktivität automatisch beendet`,skipped:`Job wurde übersprungen, weil ein übergeordneter Job in der Pipeline fehlgeschlagen ist`},n={running:`läuft`,completed:`abgeschlossen`,failed:`fehlgeschlagen`,canceled:`abgebrochen`,zombie_terminated:`Zombie`,queued:`in Warteschlange`,skipped:`übersprungen`},r={title:`Jobs`,exportJobs:`Jobs exportieren`,proposalDeleted:`Vorschlag gelöscht`,proposal:{title:`Vorschlag`,noContent:`Noch kein Inhalt für den Vorschlag.`,githubIssue:`GitHub-Issue:`,status:{input:`Wartet auf Eingabe`,exploring:`Wird untersucht`,review:`Bereit zur Prüfung`,refining:`Wird verfeinert`,creatingIssue:`Issue wird erstellt`,created:`Erstellt`,cancelled:`Abgebrochen`,unknown:`Unbekannter Status: {{status}}`}}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job nicht gefunden`,notFoundDescription:`Die Job-ID „{{id}}“ existiert nicht`,backToDashboard:`Zurück zum Dashboard`,startedAgo:`Gestartet {{timeAgo}}`,queuedWaiting:`In Warteschlange – wartet auf Start`,exportDiagnostic:`Diagnose exportieren`,exportDiagnosticAria:`Diagnose-Bundle exportieren`,exportDiagnosticTooltip:`ZIP mit Telemetrie, Logs und Zusammenfassung für diesen Job herunterladen`,reExecute:`Erneut ausführen`,reExecuteTooltip:`Neuen Job mit demselben Befehl starten`,cancelJob:`Job abbrechen`,cancelJobTooltip:`SIGTERM an den laufenden Prozess senden. Der Job wird als abgebrochen markiert.`,cancelInteractive:`Verwerfen`,finalizeJob:`Job abschließen`,finalizing:`Wird abgeschlossen…`,finalizeJobTooltip:`Diese interaktive Sitzung beenden und Tokens sowie Kosten aller Turns in die Job-Gesamtsumme einrechnen.`,interactive:{ready:`Bereit – sende einen Prompt`,working:`Agent arbeitet…`,placeholder:`Sende eine Nachricht an den laufenden Job…`,send:`Senden`,liveTotals:"{{turns}} Turns · ${{cost}}",autoHint:`Dieser Job folgt seinem Plan und endet von selbst — Nachrichten sind optionale Steuerung.`,wrapUp:`Jetzt abschließen`,wrapUpTooltip:`Beendet die Session jetzt — der Job wird mit der bisher erzeugten Arbeit abgeschlossen, Tokens und Kosten jedes Turns fließen in die Summe ein.`,wrapUpStep:`Diesen Schritt abschließen`,wrapUpStepTooltip:`Beendet den aktuellen Schritt jetzt — der Loop geht mit dem weiter, was der Schritt bisher erzeugt hat.`,wrappingUp:`Wird abgeschlossen…`,queued_one:`{{count}} Nachricht in der Warteschlange`,queued_other:`{{count}} Nachrichten in der Warteschlange`,waitingForStep:`Zwischen den Schritten — der Loop entscheidet gerade, was als Nächstes läuft. Du kannst eine Nachricht senden, sobald der nächste KI-Schritt startet.`,waitingForStepShort:`Warten auf den nächsten Schritt…`,sendDisabledEmpty:`Schreibe zuerst eine Nachricht`,sendDisabledWaiting:`Gerade ist keine Schritt-Session aktiv`},toast:{jobDeleted:`Job gelöscht`,cancelSignalSent:`Abbruchsignal gesendet`,cancelSignalSentDescription:`Der Job stoppt am nächsten sicheren Punkt`,failed:`Fehlgeschlagen`,networkError:`Netzwerkfehler`,exportFailed:`Export fehlgeschlagen`,exportFailedHttp:`Export fehlgeschlagen (HTTP {{status}})`,jobRequeued:`Job erneut eingereiht`,spawnFailed:`Job konnte nicht gestartet werden`,finalizeScheduled:`Interaktiver Job wird abgeschlossen…`,finalizeFailed:`Job konnte nicht abgeschlossen werden`,sendFailed:`Nachricht konnte nicht gesendet werden`,wrapUpScheduled:`Job wird abgeschlossen…`,wrapUpStepScheduled:`Schritt wird abgeschlossen — der Loop geht mit dem Erzeugten weiter`}},a={inProgress:`Job läuft`,completed:`Job abgeschlossen`,failed:`Job fehlgeschlagen`,duration:`Dauer`,cost:`Kosten`,turns:`Turns`,tokens:`Tokens`,filesCount_one:`{{count}} Datei`,filesCount_other:`{{count}} Dateien`,pipelineTotal:`Pipeline gesamt ({{count}} Phasen)`,totalCost:`Gesamtkosten`,totalTokens:`Tokens gesamt`,filesModified:`Geänderte Dateien`,zoneInProgress:`Läuft`,zoneFinal:`Endabrechnung`,zoneFinalPending:`Endabrechnung — wird am Ende berechnet`,pendingCaption:`Wird am Ende berechnet`,pendingTooltip:`Dies ist der reale Wert des Anbieters; er erscheint, wenn der Job endet.`,costTooltip:`Die realen Kosten werden vom Anbieter beim Abschluss des Jobs berechnet.`,liveTooltip:`Live`,explainer:`Kosten, Runden und Tokens sind die realen Werte des Anbieters und erscheinen am Ende.`,notAvailable:`Nicht verfügbar`,steps_one:`{{count}} Schritt`,steps_other:`{{count}} Schritte`,activity:{editing:`Bearbeite {{arg}}`,writing:`Schreibe {{arg}}`,reading:`Lese {{arg}}`,searching:`Suche „{{arg}}“`,running:`Führe aus: {{arg}}`,thinking:`Denkt nach…`,reasoning:`Überlegt…`,working:`Arbeitet…`,connecting:`Verbinde mit dem Agenten…`,starting:`Startet…`},pipelinePartial:`≥ angezeigt — {{count}} Phase(n) ohne erfasste Kosten`,pipelinePartialTooltip:`Einige Phasen wurden beendet, bevor ihre Kosten gemeldet wurden – dieser Gesamtwert ist eine Untergrenze.`,pipelineCostUnavailable:`Die Kostentelemetrie ist für alle Phasen nicht verfügbar.`,pipelineUsageUnavailable:`Die Token-Telemetrie ist für alle Phasen nicht verfügbar.`,pipelineUsagePartial:`≥ angezeigt — Phasen ohne Token-Telemetrie: {{count}}`,pipelineUsageTooltip:`Anbieter können Phasen abschließen, ohne Token-Telemetrie bereitzustellen; enthalten ist nur die bekannte Nutzung.`},o={showMore:`+ {{count}} weitere`,showLess:`Weniger anzeigen`,deletedTicket:`#{{id}} (gelöscht)`,deletedTooltip:`Ticket existiert nicht mehr`},s={notFound:`Job nicht gefunden`,cancelConfirmTitle:`Job abbrechen?`,cancelConfirmDescription:`Der Job stoppt am nächsten sicheren Punkt. Diese Aktion kann nicht rückgängig gemacht werden.`,keepRunning:`Weiterlaufen lassen`,cancelJob:`Job abbrechen`,stopRun:`Lauf stoppen`,stopRunConfirmTitle:`Diesen Lauf stoppen?`,stopRunConfirmDescription:`Der Loop-Lauf stoppt an der nächsten Schrittgrenze. Diese Aktion kann nicht rückgängig gemacht werden.`,toast:{cancelSignalSent:`Abbruchsignal gesendet`,cancelSignalSentDescription:`Der Job stoppt am nächsten sicheren Punkt`,stopSignalSent:`Stoppsignal gesendet`,stopSignalSentDescription:`Der Lauf stoppt an der nächsten Schrittgrenze`,cancelFailed:`Abbrechen fehlgeschlagen`,networkError:`Netzwerkfehler`}},c={title:`Job-Vergleich`,jobN:`Job {{n}}`,loadFailed:`Vergleich konnte nicht geladen werden: {{error}}`,duration:`Dauer`,cost:`Kosten`,tokensOut:`Ausgabe-Tokens`,tokensIn:`Eingabe-Tokens`,cacheRead:`Cache-Read`,model:`Modell`,phasesDone:`Abgeschlossene Phasen`,betterValueHint:`Grün hervorgehoben = besserer Wert`},l={emptyTitle:`Noch keine Jobs`,emptyDescription:`Führe oben einen Befehl aus, um hier deinen Job-Verlauf zu sehen`,loadFailed:`Jobs konnten nicht geladen werden`,filterAll:`Alle ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Von`,toDate:`Bis`,clear:`Zurücksetzen`,exitCompareMode:`Vergleichsmodus verlassen`,compareTwoJobs:`2 Jobs vergleichen`,clearJobs:`Jobs löschen`,selectTwoToCompare:`Wähle 2 Jobs zum Vergleichen`,selectOneMore:`Wähle 1 weiteren Job`,readyToCompare:`Bereit – auf Vergleichen klicken`,compareAction:`Vergleichen →`,colStatus:`Status`,colCommand:`Befehl`,colDuration:`Dauer`,colTokens:`Tokens`,colCost:`Kosten`,colStarted:`Gestartet`,profileTooltip:`Profil: {{name}}`,pipelinePart:`Teil einer Pipeline`,pipelineDependsOn:`(hängt vom vorherigen Schritt ab)`,deleteProposal:`Vorschlag löschen`,loadMore:`Mehr laden ({{count}} verbleibend)`,priority:{critical:`kritisch`,high:`hoch`,normal:`normal`,low:`niedrig`},clearModal:{title:`Jobs löschen`,jobsInHistory_one:`{{count}} Job im Verlauf`,jobsInHistory_other:`{{count}} Jobs im Verlauf`,clearAll_one:`{{count}} Job löschen`,clearAll_other:`Alle {{count}} Jobs löschen`,orByRange:`Oder nach Datumsbereich löschen:`,fromPlaceholder:`Von`,toPlaceholder:`Bis`,clearInRange_one:`{{count}} Job im Zeitraum löschen`,clearInRange_other:`{{count}} Jobs im Zeitraum löschen`,clearRange:`Zeitraum löschen`},deleteProposalConfirm:{title:`Vorschlag löschen?`,description:`Dadurch wird 1 Vorschlag dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.`},toast:{cleared_one:`{{count}} Job gelöscht`,cleared_other:`{{count}} Jobs gelöscht`,clearFailed:`Jobs konnten nicht gelöscht werden`,networkError:`Netzwerkfehler`}},u={none:`Kein aktiver Job`,noneHint:`Wähle unten einen Befehl, um einen Job zu starten`,exitCode:`exit {{code}}`,cancelTooltip:`SIGTERM an den laufenden claude-Prozess senden`,viewLogs:`Logs anzeigen`,toast:{cancelRequested:`Job-Abbruch angefordert`,cancelRequestedDescription:`SIGTERM wird an den Prozess gesendet`,cancelFailed:`Job konnte nicht abgebrochen werden`,networkError:`Netzwerkfehler beim Abbrechen des Jobs`}},d={setup:`Vorbereitung`,iteration:`Iteration {{current}}/{{limit}}`,iterationBadge:`Iter. {{count}}`,follow:`Folgt live`,resumeFollow:`Verfolgung fortsetzen`,expandAll:`Alle ausklappen`,collapseAll:`Alle einklappen`,copyStep:`Schritt kopieren`,copied:`Schritt in die Zwischenablage kopiert`,stepDetail:`Schrittdetails`,stepDetailTemplate:`Vorlage`,stepDetailCommand:`Befehl`,copyCommand:`Kopieren`,interrupted:`Unterbrochen`,waiting:`Warte auf den nächsten Schritt…`,stepMapAria:`Loop-Schrittübersicht`,stalled:`Hängt`,stalledIdle_one:`{{count}} Minute ohne Provider-Ausgabe – die App hat diesen Versuch beendet`,stalledIdle_other:`{{count}} Minuten ohne Provider-Ausgabe – die App hat diesen Versuch beendet`,providerLimit:`Anbieter-Limit`,providerLimitHint:`Der Anbieter antwortete mit einem Nutzungslimit-Hinweis; die App hat den Lauf gestoppt statt weiterzudrehen.`},f={loading:`Logs werden geladen…`,empty:`Noch keine Log-Ausgabe`,filterPlaceholder:`Logs filtern…`,copySuccess:`Log in die Zwischenablage kopiert`,copyFailed:`Log konnte nicht kopiert werden`,lineCount:`{{filtered}} / {{total}} Zeilen`,jumpToBottom:`Zum Ende springen`,phaseLines_one:`{{count}} Zeile`,phaseLines_other:`{{count}} Zeilen`,noMatchingLines:`Keine passenden Zeilen`,noOutput:`Keine Ausgabe`,completed:`Abgeschlossen`,turns_one:`{{count}} Turn`,turns_other:`{{count}} Turns`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
@@ -1 +1 @@
1
- var e={running:`in esecuzione`,completed:`completato`,done:`concluso`,failed:`fallito`,canceled:`annullato`,queued:`in coda`,zombie:`zombie`,skipped:`saltato`},t={running:`Il job è in esecuzione`,completed:`Job completato con successo`,failed:`Il job è uscito con un codice di uscita diverso da zero`,canceled:`Il job è stato annullato manualmente`,queued:`Il job è in attesa nella coda`,queuedToRun:`Il job è in attesa di essere eseguito`,zombie:`Il job è stato terminato automaticamente dopo un'inattività prolungata`,skipped:`Il job è stato saltato perché un job padre della pipeline è fallito`},n={running:`in esecuzione`,completed:`completato`,failed:`fallito`,canceled:`annullato`,zombie_terminated:`zombie`,queued:`in coda`,skipped:`saltato`},r={title:`Job`,exportJobs:`Esporta job`,proposalDeleted:`Proposta eliminata`,proposal:{title:`Proposta`,noContent:`Ancora nessun contenuto nella proposta.`,githubIssue:`Issue GitHub:`,status:{input:`In attesa di input`,exploring:`Esplorazione`,review:`Pronta per la revisione`,refining:`Perfezionamento`,creatingIssue:`Creazione issue`,created:`Creata`,cancelled:`Annullata`,unknown:`Stato sconosciuto: {{status}}`}}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job non trovato`,notFoundDescription:`L'ID job "{{id}}" non esiste`,backToDashboard:`Torna alla dashboard`,startedAgo:`Avviato {{timeAgo}}`,queuedWaiting:`In coda — in attesa di avvio`,exportDiagnostic:`Esporta diagnostica`,exportDiagnosticAria:`Esporta bundle diagnostico`,exportDiagnosticTooltip:`Scarica uno ZIP con telemetria, log e riepilogo di questo job`,reExecute:`Riesegui`,reExecuteTooltip:`Avvia un nuovo job con lo stesso comando`,cancelJob:`Annulla job`,cancelJobTooltip:`Invia SIGTERM al processo in esecuzione. Il job verrà contrassegnato come annullato.`,cancelInteractive:`Scarta`,finalizeJob:`Finalizza job`,finalizing:`Finalizzazione…`,finalizeJobTooltip:`Termina questa sessione interattiva e somma al totale del job i token e il costo di ogni turno.`,interactive:{ready:`Pronto — invia un prompt`,working:`L'agente sta lavorando…`,placeholder:`Invia un messaggio al job in esecuzione…`,send:`Invia`,liveTotals:"{{turns}} turni · ${{cost}}",autoHint:`Questo job segue il suo piano e termina da solo — i messaggi sono indicazioni opzionali.`,wrapUp:`Concludi ora`,wrapUpTooltip:`Termina la sessione ora — il job si completa con il lavoro prodotto finora, con i token e il costo di ogni turno sommati al totale.`,wrapUpStep:`Chiudi questo passo`,wrapUpStepTooltip:`Termina il passo corrente ora — il loop avanza con quanto il passo ha prodotto finora.`,wrappingUp:`Conclusione in corso…`,queued_one:`{{count}} messaggio in coda`,queued_other:`{{count}} messaggi in coda`,waitingForStep:`Tra un passo e l'altro — il loop sta decidendo cosa eseguire dopo. Potrai inviare un messaggio quando partirà il prossimo passo IA.`,waitingForStepShort:`In attesa del prossimo passo…`,sendDisabledEmpty:`Scrivi prima un messaggio`,sendDisabledWaiting:`Al momento non c'è nessuna sessione di passo attiva`},toast:{jobDeleted:`Job eliminato`,cancelSignalSent:`Segnale di annullamento inviato`,cancelSignalSentDescription:`Il job si fermerà al prossimo punto sicuro`,failed:`Operazione non riuscita`,networkError:`Errore di rete`,exportFailed:`Esportazione non riuscita`,exportFailedHttp:`Esportazione non riuscita (HTTP {{status}})`,jobRequeued:`Job rimesso in coda`,spawnFailed:`Impossibile avviare il job`,finalizeScheduled:`Finalizzazione del job interattivo…`,finalizeFailed:`Impossibile finalizzare il job`,sendFailed:`Impossibile inviare il messaggio`,wrapUpScheduled:`Conclusione del job…`,wrapUpStepScheduled:`Chiusura del passo — il loop avanza con quanto prodotto`}},a={inProgress:`Job in corso`,completed:`Job completato`,failed:`Job fallito`,duration:`Durata`,cost:`Costo`,turns:`Turni`,tokens:`Token`,filesCount_one:`{{count}} file`,filesCount_other:`{{count}} file`,pipelineTotal:`Totale pipeline ({{count}} fasi)`,totalCost:`Costo totale`,totalTokens:`Token totali`,filesModified:`File modificati`,zoneInProgress:`In corso`,zoneFinal:`Riepilogo finale`,zoneFinalPending:`Riepilogo finale — calcolato al termine`,pendingCaption:`Calcolato al termine`,pendingTooltip:`Questa è la cifra reale del provider; appare al termine del job.`,costTooltip:`Il costo reale viene fatturato dal provider alla chiusura del job.`,liveTooltip:`In diretta`,explainer:`Costo, turni e token sono le cifre reali del provider e appaiono al termine.`,notAvailable:`Non disponibile`,steps_one:`{{count}} passo`,steps_other:`{{count}} passi`,activity:{editing:`Modifica di {{arg}}`,writing:`Scrittura di {{arg}}`,reading:`Lettura di {{arg}}`,searching:`Ricerca di «{{arg}}»`,running:`Esecuzione: {{arg}}`,thinking:`Sta pensando…`,reasoning:`Sta ragionando…`,working:`Al lavoro…`,connecting:`Connessione all'agente…`,starting:`Avvio…`},pipelinePartial:`≥ mostrato — {{count}} fase/i senza costo registrato`,pipelinePartialTooltip:`Alcune fasi si sono interrotte prima di riportare il costo, quindi questo totale è un limite inferiore.`,pipelineCostUnavailable:`La telemetria dei costi non è disponibile per nessuna fase.`,pipelineUsageUnavailable:`La telemetria dei token non è disponibile per nessuna fase.`,pipelineUsagePartial:`≥ mostrato — fasi senza telemetria dei token: {{count}}`,pipelineUsageTooltip:`I provider possono completare le fasi senza esporre la telemetria dei token; è incluso solo l'utilizzo noto.`},o={showMore:`+ altri {{count}}`,showLess:`Mostra meno`,deletedTicket:`#{{id}} (eliminato)`,deletedTooltip:`Il ticket non esiste più`},s={notFound:`Job non trovato`,cancelConfirmTitle:`Annullare il job?`,cancelConfirmDescription:`Il job si fermerà al prossimo punto sicuro. Questa azione è irreversibile.`,keepRunning:`Continua l'esecuzione`,cancelJob:`Annulla job`,stopRun:`Ferma esecuzione`,stopRunConfirmTitle:`Fermare questa esecuzione?`,stopRunConfirmDescription:`L'esecuzione del loop si fermerà al prossimo confine di step. Questa azione non può essere annullata.`,toast:{cancelSignalSent:`Segnale di annullamento inviato`,cancelSignalSentDescription:`Il job si fermerà al prossimo punto sicuro`,stopSignalSent:`Segnale di arresto inviato`,stopSignalSentDescription:`L'esecuzione si fermerà al prossimo confine di step`,cancelFailed:`Annullamento non riuscito`,networkError:`Errore di rete`}},c={title:`Confronto job`,jobN:`Job {{n}}`,loadFailed:`Impossibile caricare il confronto: {{error}}`,duration:`Durata`,cost:`Costo`,tokensOut:`Token in uscita`,tokensIn:`Token in ingresso`,cacheRead:`Lettura cache`,model:`Modello`,phasesDone:`Fasi completate`,betterValueHint:`Le evidenziazioni verdi indicano il valore migliore`},l={emptyTitle:`Ancora nessun job`,emptyDescription:`Esegui un comando qui sopra per vedere qui la cronologia dei job`,loadFailed:`Impossibile caricare i job`,filterAll:`Tutti ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Dalla data`,toDate:`Alla data`,clear:`Cancella`,exitCompareMode:`Esci dalla modalità confronto`,compareTwoJobs:`Confronta 2 job`,clearJobs:`Cancella job`,selectTwoToCompare:`Seleziona 2 job da confrontare`,selectOneMore:`Seleziona 1 altro job`,readyToCompare:`Pronto — clicca Confronta`,compareAction:`Confronta →`,colStatus:`Stato`,colCommand:`Comando`,colDuration:`Durata`,colTokens:`Token`,colCost:`Costo`,colStarted:`Avvio`,profileTooltip:`Profilo: {{name}}`,pipelinePart:`Parte di una pipeline`,pipelineDependsOn:`(dipende dal passaggio precedente)`,deleteProposal:`Elimina proposta`,loadMore:`Carica altri ({{count}} rimanenti)`,priority:{critical:`critica`,high:`alta`,normal:`normale`,low:`bassa`},clearModal:{title:`Cancella job`,jobsInHistory_one:`{{count}} job nella cronologia`,jobsInHistory_other:`{{count}} job nella cronologia`,clearAll_one:`Cancella {{count}} job`,clearAll_other:`Cancella tutti i {{count}} job`,orByRange:`Oppure cancella per intervallo di date:`,fromPlaceholder:`Da`,toPlaceholder:`A`,clearInRange_one:`Cancella {{count}} job nell'intervallo`,clearInRange_other:`Cancella {{count}} job nell'intervallo`,clearRange:`Cancella intervallo`},deleteProposalConfirm:{title:`Eliminare la proposta?`,description:`Verrà eliminata definitivamente 1 proposta. Questa azione è irreversibile.`},toast:{cleared_one:`{{count}} job cancellato`,cleared_other:`{{count}} job cancellati`,clearFailed:`Impossibile cancellare i job`,networkError:`Errore di rete`}},u={none:`Nessun job attivo`,noneHint:`Seleziona un comando qui sotto per avviare un job`,exitCode:`exit {{code}}`,cancelTooltip:`Invia SIGTERM al processo claude in esecuzione`,viewLogs:`Vedi log`,toast:{cancelRequested:`Annullamento del job richiesto`,cancelRequestedDescription:`Invio di SIGTERM al processo`,cancelFailed:`Impossibile annullare il job`,networkError:`Errore di rete durante l'annullamento del job`}},d={setup:`Preparazione`,iteration:`Iterazione {{current}}/{{limit}}`,iterationBadge:`iter {{count}}`,follow:`Seguendo in diretta`,resumeFollow:`Riprendi a seguire`,expandAll:`Espandi tutto`,collapseAll:`Comprimi tutto`,copyStep:`Copia passo`,copied:`Passo copiato negli appunti`,stepDetail:`Dettagli del passo`,stepDetailTemplate:`Modello`,stepDetailCommand:`Comando`,copyCommand:`Copia`,interrupted:`Interrotto`,waiting:`In attesa del prossimo passo...`,stepMapAria:`Mappa dei passi del loop`},f={loading:`Caricamento dei log...`,empty:`Ancora nessun output di log`,filterPlaceholder:`Filtra i log...`,copySuccess:`Log copiato negli appunti`,copyFailed:`Impossibile copiare il log`,lineCount:`{{filtered}} / {{total}} righe`,jumpToBottom:`Vai in fondo`,phaseLines_one:`{{count}} riga`,phaseLines_other:`{{count}} righe`,noMatchingLines:`Nessuna riga corrispondente`,noOutput:`Nessun output`,completed:`Completato`,turns_one:`{{count}} turno`,turns_other:`{{count}} turni`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
1
+ var e={running:`in esecuzione`,completed:`completato`,done:`concluso`,failed:`fallito`,canceled:`annullato`,queued:`in coda`,zombie:`zombie`,skipped:`saltato`},t={running:`Il job è in esecuzione`,completed:`Job completato con successo`,failed:`Il job è uscito con un codice di uscita diverso da zero`,canceled:`Il job è stato annullato manualmente`,queued:`Il job è in attesa nella coda`,queuedToRun:`Il job è in attesa di essere eseguito`,zombie:`Il job è stato terminato automaticamente dopo un'inattività prolungata`,skipped:`Il job è stato saltato perché un job padre della pipeline è fallito`},n={running:`in esecuzione`,completed:`completato`,failed:`fallito`,canceled:`annullato`,zombie_terminated:`zombie`,queued:`in coda`,skipped:`saltato`},r={title:`Job`,exportJobs:`Esporta job`,proposalDeleted:`Proposta eliminata`,proposal:{title:`Proposta`,noContent:`Ancora nessun contenuto nella proposta.`,githubIssue:`Issue GitHub:`,status:{input:`In attesa di input`,exploring:`Esplorazione`,review:`Pronta per la revisione`,refining:`Perfezionamento`,creatingIssue:`Creazione issue`,created:`Creata`,cancelled:`Annullata`,unknown:`Stato sconosciuto: {{status}}`}}},i={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job non trovato`,notFoundDescription:`L'ID job "{{id}}" non esiste`,backToDashboard:`Torna alla dashboard`,startedAgo:`Avviato {{timeAgo}}`,queuedWaiting:`In coda — in attesa di avvio`,exportDiagnostic:`Esporta diagnostica`,exportDiagnosticAria:`Esporta bundle diagnostico`,exportDiagnosticTooltip:`Scarica uno ZIP con telemetria, log e riepilogo di questo job`,reExecute:`Riesegui`,reExecuteTooltip:`Avvia un nuovo job con lo stesso comando`,cancelJob:`Annulla job`,cancelJobTooltip:`Invia SIGTERM al processo in esecuzione. Il job verrà contrassegnato come annullato.`,cancelInteractive:`Scarta`,finalizeJob:`Finalizza job`,finalizing:`Finalizzazione…`,finalizeJobTooltip:`Termina questa sessione interattiva e somma al totale del job i token e il costo di ogni turno.`,interactive:{ready:`Pronto — invia un prompt`,working:`L'agente sta lavorando…`,placeholder:`Invia un messaggio al job in esecuzione…`,send:`Invia`,liveTotals:"{{turns}} turni · ${{cost}}",autoHint:`Questo job segue il suo piano e termina da solo — i messaggi sono indicazioni opzionali.`,wrapUp:`Concludi ora`,wrapUpTooltip:`Termina la sessione ora — il job si completa con il lavoro prodotto finora, con i token e il costo di ogni turno sommati al totale.`,wrapUpStep:`Chiudi questo passo`,wrapUpStepTooltip:`Termina il passo corrente ora — il loop avanza con quanto il passo ha prodotto finora.`,wrappingUp:`Conclusione in corso…`,queued_one:`{{count}} messaggio in coda`,queued_other:`{{count}} messaggi in coda`,waitingForStep:`Tra un passo e l'altro — il loop sta decidendo cosa eseguire dopo. Potrai inviare un messaggio quando partirà il prossimo passo IA.`,waitingForStepShort:`In attesa del prossimo passo…`,sendDisabledEmpty:`Scrivi prima un messaggio`,sendDisabledWaiting:`Al momento non c'è nessuna sessione di passo attiva`},toast:{jobDeleted:`Job eliminato`,cancelSignalSent:`Segnale di annullamento inviato`,cancelSignalSentDescription:`Il job si fermerà al prossimo punto sicuro`,failed:`Operazione non riuscita`,networkError:`Errore di rete`,exportFailed:`Esportazione non riuscita`,exportFailedHttp:`Esportazione non riuscita (HTTP {{status}})`,jobRequeued:`Job rimesso in coda`,spawnFailed:`Impossibile avviare il job`,finalizeScheduled:`Finalizzazione del job interattivo…`,finalizeFailed:`Impossibile finalizzare il job`,sendFailed:`Impossibile inviare il messaggio`,wrapUpScheduled:`Conclusione del job…`,wrapUpStepScheduled:`Chiusura del passo — il loop avanza con quanto prodotto`}},a={inProgress:`Job in corso`,completed:`Job completato`,failed:`Job fallito`,duration:`Durata`,cost:`Costo`,turns:`Turni`,tokens:`Token`,filesCount_one:`{{count}} file`,filesCount_other:`{{count}} file`,pipelineTotal:`Totale pipeline ({{count}} fasi)`,totalCost:`Costo totale`,totalTokens:`Token totali`,filesModified:`File modificati`,zoneInProgress:`In corso`,zoneFinal:`Riepilogo finale`,zoneFinalPending:`Riepilogo finale — calcolato al termine`,pendingCaption:`Calcolato al termine`,pendingTooltip:`Questa è la cifra reale del provider; appare al termine del job.`,costTooltip:`Il costo reale viene fatturato dal provider alla chiusura del job.`,liveTooltip:`In diretta`,explainer:`Costo, turni e token sono le cifre reali del provider e appaiono al termine.`,notAvailable:`Non disponibile`,steps_one:`{{count}} passo`,steps_other:`{{count}} passi`,activity:{editing:`Modifica di {{arg}}`,writing:`Scrittura di {{arg}}`,reading:`Lettura di {{arg}}`,searching:`Ricerca di «{{arg}}»`,running:`Esecuzione: {{arg}}`,thinking:`Sta pensando…`,reasoning:`Sta ragionando…`,working:`Al lavoro…`,connecting:`Connessione all'agente…`,starting:`Avvio…`},pipelinePartial:`≥ mostrato — {{count}} fase/i senza costo registrato`,pipelinePartialTooltip:`Alcune fasi si sono interrotte prima di riportare il costo, quindi questo totale è un limite inferiore.`,pipelineCostUnavailable:`La telemetria dei costi non è disponibile per nessuna fase.`,pipelineUsageUnavailable:`La telemetria dei token non è disponibile per nessuna fase.`,pipelineUsagePartial:`≥ mostrato — fasi senza telemetria dei token: {{count}}`,pipelineUsageTooltip:`I provider possono completare le fasi senza esporre la telemetria dei token; è incluso solo l'utilizzo noto.`},o={showMore:`+ altri {{count}}`,showLess:`Mostra meno`,deletedTicket:`#{{id}} (eliminato)`,deletedTooltip:`Il ticket non esiste più`},s={notFound:`Job non trovato`,cancelConfirmTitle:`Annullare il job?`,cancelConfirmDescription:`Il job si fermerà al prossimo punto sicuro. Questa azione è irreversibile.`,keepRunning:`Continua l'esecuzione`,cancelJob:`Annulla job`,stopRun:`Ferma esecuzione`,stopRunConfirmTitle:`Fermare questa esecuzione?`,stopRunConfirmDescription:`L'esecuzione del loop si fermerà al prossimo confine di step. Questa azione non può essere annullata.`,toast:{cancelSignalSent:`Segnale di annullamento inviato`,cancelSignalSentDescription:`Il job si fermerà al prossimo punto sicuro`,stopSignalSent:`Segnale di arresto inviato`,stopSignalSentDescription:`L'esecuzione si fermerà al prossimo confine di step`,cancelFailed:`Annullamento non riuscito`,networkError:`Errore di rete`}},c={title:`Confronto job`,jobN:`Job {{n}}`,loadFailed:`Impossibile caricare il confronto: {{error}}`,duration:`Durata`,cost:`Costo`,tokensOut:`Token in uscita`,tokensIn:`Token in ingresso`,cacheRead:`Lettura cache`,model:`Modello`,phasesDone:`Fasi completate`,betterValueHint:`Le evidenziazioni verdi indicano il valore migliore`},l={emptyTitle:`Ancora nessun job`,emptyDescription:`Esegui un comando qui sopra per vedere qui la cronologia dei job`,loadFailed:`Impossibile caricare i job`,filterAll:`Tutti ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`Dalla data`,toDate:`Alla data`,clear:`Cancella`,exitCompareMode:`Esci dalla modalità confronto`,compareTwoJobs:`Confronta 2 job`,clearJobs:`Cancella job`,selectTwoToCompare:`Seleziona 2 job da confrontare`,selectOneMore:`Seleziona 1 altro job`,readyToCompare:`Pronto — clicca Confronta`,compareAction:`Confronta →`,colStatus:`Stato`,colCommand:`Comando`,colDuration:`Durata`,colTokens:`Token`,colCost:`Costo`,colStarted:`Avvio`,profileTooltip:`Profilo: {{name}}`,pipelinePart:`Parte di una pipeline`,pipelineDependsOn:`(dipende dal passaggio precedente)`,deleteProposal:`Elimina proposta`,loadMore:`Carica altri ({{count}} rimanenti)`,priority:{critical:`critica`,high:`alta`,normal:`normale`,low:`bassa`},clearModal:{title:`Cancella job`,jobsInHistory_one:`{{count}} job nella cronologia`,jobsInHistory_other:`{{count}} job nella cronologia`,clearAll_one:`Cancella {{count}} job`,clearAll_other:`Cancella tutti i {{count}} job`,orByRange:`Oppure cancella per intervallo di date:`,fromPlaceholder:`Da`,toPlaceholder:`A`,clearInRange_one:`Cancella {{count}} job nell'intervallo`,clearInRange_other:`Cancella {{count}} job nell'intervallo`,clearRange:`Cancella intervallo`},deleteProposalConfirm:{title:`Eliminare la proposta?`,description:`Verrà eliminata definitivamente 1 proposta. Questa azione è irreversibile.`},toast:{cleared_one:`{{count}} job cancellato`,cleared_other:`{{count}} job cancellati`,clearFailed:`Impossibile cancellare i job`,networkError:`Errore di rete`}},u={none:`Nessun job attivo`,noneHint:`Seleziona un comando qui sotto per avviare un job`,exitCode:`exit {{code}}`,cancelTooltip:`Invia SIGTERM al processo claude in esecuzione`,viewLogs:`Vedi log`,toast:{cancelRequested:`Annullamento del job richiesto`,cancelRequestedDescription:`Invio di SIGTERM al processo`,cancelFailed:`Impossibile annullare il job`,networkError:`Errore di rete durante l'annullamento del job`}},d={setup:`Preparazione`,iteration:`Iterazione {{current}}/{{limit}}`,iterationBadge:`iter {{count}}`,follow:`Seguendo in diretta`,resumeFollow:`Riprendi a seguire`,expandAll:`Espandi tutto`,collapseAll:`Comprimi tutto`,copyStep:`Copia passo`,copied:`Passo copiato negli appunti`,stepDetail:`Dettagli del passo`,stepDetailTemplate:`Modello`,stepDetailCommand:`Comando`,copyCommand:`Copia`,interrupted:`Interrotto`,waiting:`In attesa del prossimo passo...`,stepMapAria:`Mappa dei passi del loop`,stalled:`Bloccato`,stalledIdle_one:`Nessun output dal provider per {{count}} minuto — l'app ha fermato questo tentativo`,stalledIdle_other:`Nessun output dal provider per {{count}} minuti — l'app ha fermato questo tentativo`,providerLimit:`Limite del provider`,providerLimitHint:`Il provider ha risposto con un avviso di limite d'uso, quindi l'app ha fermato la run invece di continuare a ciclare.`},f={loading:`Caricamento dei log...`,empty:`Ancora nessun output di log`,filterPlaceholder:`Filtra i log...`,copySuccess:`Log copiato negli appunti`,copyFailed:`Impossibile copiare il log`,lineCount:`{{filtered}} / {{total}} righe`,jumpToBottom:`Vai in fondo`,phaseLines_one:`{{count}} riga`,phaseLines_other:`{{count}} righe`,noMatchingLines:`Nessuna riga corrispondente`,noOutput:`Nessun output`,completed:`Completato`,turns_one:`{{count}} turno`,turns_other:`{{count}} turni`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
@@ -1 +1 @@
1
- var e={running:`実行中`,completed:`完了`,done:`完了`,failed:`失敗`,canceled:`キャンセル`,queued:`待機中`,zombie:`ゾンビ`,skipped:`スキップ`},t={running:`ジョブは実行中です`,completed:`ジョブは正常に完了しました`,failed:`ジョブは非ゼロの終了コードで終了しました`,canceled:`ジョブは手動でキャンセルされました`,queued:`ジョブはキュー内で待機しています`,queuedToRun:`ジョブは実行待ちです`,zombie:`長時間アクティビティがなかったため、ジョブは自動終了されました`,skipped:`パイプライン内の親ジョブが失敗したため、ジョブはスキップされました`},n={running:`実行中`,completed:`完了`,failed:`失敗`,canceled:`キャンセル`,zombie_terminated:`ゾンビ`,queued:`待機中`,skipped:`スキップ`},r={title:`ジョブ`,exportJobs:`ジョブをエクスポート`,proposalDeleted:`提案を削除しました`,proposal:{title:`提案`,noContent:`提案の内容はまだありません。`,githubIssue:`GitHub Issue:`,status:{input:`入力待ち`,exploring:`調査中`,review:`レビュー待ち`,refining:`改善中`,creatingIssue:`Issue を作成中`,created:`作成済み`,cancelled:`キャンセル済み`,unknown:`不明なステータス: {{status}}`}}},i={breadcrumbDashboard:`ダッシュボード`,breadcrumbJob:`ジョブ #{{id}}`,notFound:`ジョブが見つかりません`,notFoundDescription:`ジョブ ID「{{id}}」は存在しません`,backToDashboard:`ダッシュボードに戻る`,startedAgo:`{{timeAgo}}に開始`,queuedWaiting:`キュー登録済み — 開始待ち`,exportDiagnostic:`診断をエクスポート`,exportDiagnosticAria:`診断バンドルをエクスポート`,exportDiagnosticTooltip:`このジョブのテレメトリ、ログ、サマリーを含む ZIP をダウンロード`,reExecute:`再実行`,reExecuteTooltip:`同じコマンドで新しいジョブを起動`,cancelJob:`ジョブをキャンセル`,cancelJobTooltip:`実行中のプロセスに SIGTERM を送信します。ジョブはキャンセル済みとしてマークされます。`,cancelInteractive:`破棄`,finalizeJob:`ジョブをファイナライズ`,finalizing:`ファイナライズ中…`,finalizeJobTooltip:`このインタラクティブセッションを終了し、各ターンのトークンとコストをジョブの合計に集計します。`,interactive:{ready:`準備完了 — プロンプトを送信してください`,working:`エージェント作業中…`,placeholder:`実行中のジョブにメッセージを送信…`,send:`送信`,liveTotals:"{{turns}} ターン · ${{cost}}",autoHint:`このジョブは計画に沿って自動で完了します — メッセージは任意の指示です。`,wrapUp:`今すぐ切り上げる`,wrapUpTooltip:`セッションを今すぐ終了します — これまでの成果でジョブが完了し、各ターンのトークンとコストは合計に計上されます。`,wrapUpStep:`このステップを確定`,wrapUpStepTooltip:`現在のステップを今すぐ終了します — ループはこれまでの成果を持って次へ進みます。`,wrappingUp:`切り上げ中…`,queued_one:`{{count}} 件のキュー済みメッセージ`,queued_other:`{{count}} 件のキュー済みメッセージ`,waitingForStep:`ステップの合間です — ループが次に実行する内容を決めています。次の AI ステップが始まるとメッセージを送信できます。`,waitingForStepShort:`次のステップを待機中…`,sendDisabledEmpty:`先にメッセージを入力してください`,sendDisabledWaiting:`現在アクティブなステップセッションはありません`},toast:{jobDeleted:`ジョブを削除しました`,cancelSignalSent:`キャンセルシグナルを送信しました`,cancelSignalSentDescription:`ジョブは次の安全なポイントで停止します`,failed:`失敗しました`,networkError:`ネットワークエラー`,exportFailed:`エクスポートに失敗しました`,exportFailedHttp:`エクスポートに失敗しました (HTTP {{status}})`,jobRequeued:`ジョブを再キューしました`,spawnFailed:`ジョブの起動に失敗しました`,finalizeScheduled:`インタラクティブジョブをファイナライズ中…`,finalizeFailed:`ジョブのファイナライズに失敗しました`,sendFailed:`メッセージの送信に失敗しました`,wrapUpScheduled:`ジョブを切り上げ中…`,wrapUpStepScheduled:`ステップを確定中 — ループは産出済みの成果で先へ進みます`}},a={inProgress:`ジョブ実行中`,completed:`ジョブ完了`,failed:`ジョブ失敗`,duration:`実行時間`,cost:`コスト`,turns:`ターン`,tokens:`トークン`,filesCount_one:`{{count}} ファイル`,filesCount_other:`{{count}} ファイル`,pipelineTotal:`パイプライン合計({{count}} フェーズ)`,totalCost:`合計コスト`,totalTokens:`合計トークン`,filesModified:`変更ファイル`,zoneInProgress:`進行中`,zoneFinal:`最終サマリー`,zoneFinalPending:`最終サマリー — 完了時に計算`,pendingCaption:`完了時に計算`,pendingTooltip:`これはプロバイダーの実際の数値です。ジョブ完了時に表示されます。`,costTooltip:`実際のコストはジョブ終了時にプロバイダーが請求します。`,liveTooltip:`ライブ`,explainer:`コスト・ターン・トークンはプロバイダーの実際の数値で、完了時に表示されます。`,notAvailable:`利用不可`,steps_one:`{{count}} ステップ`,steps_other:`{{count}} ステップ`,activity:{editing:`{{arg}} を編集中`,writing:`{{arg}} を書き込み中`,reading:`{{arg}} を読み込み中`,searching:`「{{arg}}」を検索中`,running:`実行中: {{arg}}`,thinking:`思考中…`,reasoning:`推論中…`,working:`作業中…`,connecting:`エージェントに接続中…`,starting:`起動中…`},pipelinePartial:`≥ は部分値 — {{count}} 個のフェーズにコスト記録がありません`,pipelinePartialTooltip:`一部のフェーズはコストを報告する前に終了したため、この合計は下限値です。`,pipelineCostUnavailable:`すべてのフェーズでコストのテレメトリを利用できません。`,pipelineUsageUnavailable:`すべてのフェーズでトークンのテレメトリを利用できません。`,pipelineUsagePartial:`≥ 表示値 — {{count}} フェーズでトークンのテレメトリなし`,pipelineUsageTooltip:`プロバイダーはトークンのテレメトリを提供せずにフェーズを完了する場合があります。既知の使用量のみが含まれます。`},o={showMore:`+ 他 {{count}} 件`,showLess:`折りたたむ`,deletedTicket:`#{{id}}(削除済み)`,deletedTooltip:`チケットはもう存在しません`},s={notFound:`ジョブが見つかりません`,cancelConfirmTitle:`ジョブをキャンセルしますか?`,cancelConfirmDescription:`ジョブは次の安全なポイントで停止します。この操作は元に戻せません。`,keepRunning:`実行を続ける`,cancelJob:`ジョブをキャンセル`,stopRun:`実行を停止`,stopRunConfirmTitle:`この実行を停止しますか?`,stopRunConfirmDescription:`ループ実行は次のステップ境界で停止します。この操作は取り消せません。`,toast:{cancelSignalSent:`キャンセルシグナルを送信しました`,cancelSignalSentDescription:`ジョブは次の安全なポイントで停止します`,stopSignalSent:`停止シグナルを送信しました`,stopSignalSentDescription:`実行は次のステップ境界で停止します`,cancelFailed:`キャンセルに失敗しました`,networkError:`ネットワークエラー`}},c={title:`ジョブ比較`,jobN:`ジョブ {{n}}`,loadFailed:`比較の読み込みに失敗しました: {{error}}`,duration:`実行時間`,cost:`コスト`,tokensOut:`出力トークン`,tokensIn:`入力トークン`,cacheRead:`キャッシュ読み取り`,model:`モデル`,phasesDone:`完了フェーズ`,betterValueHint:`緑のハイライトはより良い値を示します`},l={emptyTitle:`ジョブはまだありません`,emptyDescription:`上でコマンドを実行すると、ここにジョブ履歴が表示されます`,loadFailed:`ジョブの読み込みに失敗しました`,filterAll:`すべて ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`開始日`,toDate:`終了日`,clear:`クリア`,exitCompareMode:`比較モードを終了`,compareTwoJobs:`ジョブを2件比較`,clearJobs:`ジョブをクリア`,selectTwoToCompare:`比較するジョブを2件選択`,selectOneMore:`あと1件選択してください`,readyToCompare:`準備完了 — 比較をクリック`,compareAction:`比較 →`,colStatus:`ステータス`,colCommand:`コマンド`,colDuration:`実行時間`,colTokens:`トークン`,colCost:`コスト`,colStarted:`開始`,profileTooltip:`プロファイル: {{name}}`,pipelinePart:`パイプラインの一部`,pipelineDependsOn:`(前のステップに依存)`,deleteProposal:`提案を削除`,loadMore:`さらに読み込む(残り {{count}} 件)`,priority:{critical:`クリティカル`,high:`高`,normal:`通常`,low:`低`},clearModal:{title:`ジョブをクリア`,jobsInHistory_one:`履歴に {{count}} 件のジョブ`,jobsInHistory_other:`履歴に {{count}} 件のジョブ`,clearAll_one:`{{count}} 件のジョブをすべてクリア`,clearAll_other:`{{count}} 件のジョブをすべてクリア`,orByRange:`または日付範囲でクリア:`,fromPlaceholder:`開始`,toPlaceholder:`終了`,clearInRange_one:`範囲内の {{count}} 件のジョブをクリア`,clearInRange_other:`範囲内の {{count}} 件のジョブをクリア`,clearRange:`範囲をクリア`},deleteProposalConfirm:{title:`提案を削除しますか?`,description:`1件の提案が完全に削除されます。この操作は元に戻せません。`},toast:{cleared_one:`{{count}} 件のジョブをクリアしました`,cleared_other:`{{count}} 件のジョブをクリアしました`,clearFailed:`ジョブのクリアに失敗しました`,networkError:`ネットワークエラー`}},u={none:`アクティブなジョブはありません`,noneHint:`下のコマンドを選択してジョブを開始`,exitCode:`exit {{code}}`,cancelTooltip:`実行中の claude プロセスに SIGTERM を送信`,viewLogs:`ログを表示`,toast:{cancelRequested:`ジョブのキャンセルをリクエストしました`,cancelRequestedDescription:`プロセスに SIGTERM を送信しています`,cancelFailed:`ジョブのキャンセルに失敗しました`,networkError:`ジョブのキャンセル中にネットワークエラーが発生しました`}},d={setup:`セットアップ`,iteration:`反復 {{current}}/{{limit}}`,iterationBadge:`反復 {{count}}`,follow:`ライブ追従中`,resumeFollow:`追従を再開`,expandAll:`すべて展開`,collapseAll:`すべて折りたたむ`,copyStep:`ステップをコピー`,copied:`ステップをクリップボードにコピーしました`,stepDetail:`ステップの詳細`,stepDetailTemplate:`テンプレート`,stepDetailCommand:`コマンド`,copyCommand:`コピー`,interrupted:`中断`,waiting:`次のステップを待機中...`,stepMapAria:`ループのステップマップ`},f={loading:`ログを読み込み中...`,empty:`ログ出力はまだありません`,filterPlaceholder:`ログをフィルター...`,copySuccess:`ログをクリップボードにコピーしました`,copyFailed:`ログのコピーに失敗しました`,lineCount:`{{filtered}} / {{total}} 行`,jumpToBottom:`最下部へ移動`,phaseLines_one:`{{count}} 行`,phaseLines_other:`{{count}} 行`,noMatchingLines:`一致する行はありません`,noOutput:`出力なし`,completed:`完了`,turns_one:`{{count}} ターン`,turns_other:`{{count}} ターン`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
1
+ var e={running:`実行中`,completed:`完了`,done:`完了`,failed:`失敗`,canceled:`キャンセル`,queued:`待機中`,zombie:`ゾンビ`,skipped:`スキップ`},t={running:`ジョブは実行中です`,completed:`ジョブは正常に完了しました`,failed:`ジョブは非ゼロの終了コードで終了しました`,canceled:`ジョブは手動でキャンセルされました`,queued:`ジョブはキュー内で待機しています`,queuedToRun:`ジョブは実行待ちです`,zombie:`長時間アクティビティがなかったため、ジョブは自動終了されました`,skipped:`パイプライン内の親ジョブが失敗したため、ジョブはスキップされました`},n={running:`実行中`,completed:`完了`,failed:`失敗`,canceled:`キャンセル`,zombie_terminated:`ゾンビ`,queued:`待機中`,skipped:`スキップ`},r={title:`ジョブ`,exportJobs:`ジョブをエクスポート`,proposalDeleted:`提案を削除しました`,proposal:{title:`提案`,noContent:`提案の内容はまだありません。`,githubIssue:`GitHub Issue:`,status:{input:`入力待ち`,exploring:`調査中`,review:`レビュー待ち`,refining:`改善中`,creatingIssue:`Issue を作成中`,created:`作成済み`,cancelled:`キャンセル済み`,unknown:`不明なステータス: {{status}}`}}},i={breadcrumbDashboard:`ダッシュボード`,breadcrumbJob:`ジョブ #{{id}}`,notFound:`ジョブが見つかりません`,notFoundDescription:`ジョブ ID「{{id}}」は存在しません`,backToDashboard:`ダッシュボードに戻る`,startedAgo:`{{timeAgo}}に開始`,queuedWaiting:`キュー登録済み — 開始待ち`,exportDiagnostic:`診断をエクスポート`,exportDiagnosticAria:`診断バンドルをエクスポート`,exportDiagnosticTooltip:`このジョブのテレメトリ、ログ、サマリーを含む ZIP をダウンロード`,reExecute:`再実行`,reExecuteTooltip:`同じコマンドで新しいジョブを起動`,cancelJob:`ジョブをキャンセル`,cancelJobTooltip:`実行中のプロセスに SIGTERM を送信します。ジョブはキャンセル済みとしてマークされます。`,cancelInteractive:`破棄`,finalizeJob:`ジョブをファイナライズ`,finalizing:`ファイナライズ中…`,finalizeJobTooltip:`このインタラクティブセッションを終了し、各ターンのトークンとコストをジョブの合計に集計します。`,interactive:{ready:`準備完了 — プロンプトを送信してください`,working:`エージェント作業中…`,placeholder:`実行中のジョブにメッセージを送信…`,send:`送信`,liveTotals:"{{turns}} ターン · ${{cost}}",autoHint:`このジョブは計画に沿って自動で完了します — メッセージは任意の指示です。`,wrapUp:`今すぐ切り上げる`,wrapUpTooltip:`セッションを今すぐ終了します — これまでの成果でジョブが完了し、各ターンのトークンとコストは合計に計上されます。`,wrapUpStep:`このステップを確定`,wrapUpStepTooltip:`現在のステップを今すぐ終了します — ループはこれまでの成果を持って次へ進みます。`,wrappingUp:`切り上げ中…`,queued_one:`{{count}} 件のキュー済みメッセージ`,queued_other:`{{count}} 件のキュー済みメッセージ`,waitingForStep:`ステップの合間です — ループが次に実行する内容を決めています。次の AI ステップが始まるとメッセージを送信できます。`,waitingForStepShort:`次のステップを待機中…`,sendDisabledEmpty:`先にメッセージを入力してください`,sendDisabledWaiting:`現在アクティブなステップセッションはありません`},toast:{jobDeleted:`ジョブを削除しました`,cancelSignalSent:`キャンセルシグナルを送信しました`,cancelSignalSentDescription:`ジョブは次の安全なポイントで停止します`,failed:`失敗しました`,networkError:`ネットワークエラー`,exportFailed:`エクスポートに失敗しました`,exportFailedHttp:`エクスポートに失敗しました (HTTP {{status}})`,jobRequeued:`ジョブを再キューしました`,spawnFailed:`ジョブの起動に失敗しました`,finalizeScheduled:`インタラクティブジョブをファイナライズ中…`,finalizeFailed:`ジョブのファイナライズに失敗しました`,sendFailed:`メッセージの送信に失敗しました`,wrapUpScheduled:`ジョブを切り上げ中…`,wrapUpStepScheduled:`ステップを確定中 — ループは産出済みの成果で先へ進みます`}},a={inProgress:`ジョブ実行中`,completed:`ジョブ完了`,failed:`ジョブ失敗`,duration:`実行時間`,cost:`コスト`,turns:`ターン`,tokens:`トークン`,filesCount_one:`{{count}} ファイル`,filesCount_other:`{{count}} ファイル`,pipelineTotal:`パイプライン合計({{count}} フェーズ)`,totalCost:`合計コスト`,totalTokens:`合計トークン`,filesModified:`変更ファイル`,zoneInProgress:`進行中`,zoneFinal:`最終サマリー`,zoneFinalPending:`最終サマリー — 完了時に計算`,pendingCaption:`完了時に計算`,pendingTooltip:`これはプロバイダーの実際の数値です。ジョブ完了時に表示されます。`,costTooltip:`実際のコストはジョブ終了時にプロバイダーが請求します。`,liveTooltip:`ライブ`,explainer:`コスト・ターン・トークンはプロバイダーの実際の数値で、完了時に表示されます。`,notAvailable:`利用不可`,steps_one:`{{count}} ステップ`,steps_other:`{{count}} ステップ`,activity:{editing:`{{arg}} を編集中`,writing:`{{arg}} を書き込み中`,reading:`{{arg}} を読み込み中`,searching:`「{{arg}}」を検索中`,running:`実行中: {{arg}}`,thinking:`思考中…`,reasoning:`推論中…`,working:`作業中…`,connecting:`エージェントに接続中…`,starting:`起動中…`},pipelinePartial:`≥ は部分値 — {{count}} 個のフェーズにコスト記録がありません`,pipelinePartialTooltip:`一部のフェーズはコストを報告する前に終了したため、この合計は下限値です。`,pipelineCostUnavailable:`すべてのフェーズでコストのテレメトリを利用できません。`,pipelineUsageUnavailable:`すべてのフェーズでトークンのテレメトリを利用できません。`,pipelineUsagePartial:`≥ 表示値 — {{count}} フェーズでトークンのテレメトリなし`,pipelineUsageTooltip:`プロバイダーはトークンのテレメトリを提供せずにフェーズを完了する場合があります。既知の使用量のみが含まれます。`},o={showMore:`+ 他 {{count}} 件`,showLess:`折りたたむ`,deletedTicket:`#{{id}}(削除済み)`,deletedTooltip:`チケットはもう存在しません`},s={notFound:`ジョブが見つかりません`,cancelConfirmTitle:`ジョブをキャンセルしますか?`,cancelConfirmDescription:`ジョブは次の安全なポイントで停止します。この操作は元に戻せません。`,keepRunning:`実行を続ける`,cancelJob:`ジョブをキャンセル`,stopRun:`実行を停止`,stopRunConfirmTitle:`この実行を停止しますか?`,stopRunConfirmDescription:`ループ実行は次のステップ境界で停止します。この操作は取り消せません。`,toast:{cancelSignalSent:`キャンセルシグナルを送信しました`,cancelSignalSentDescription:`ジョブは次の安全なポイントで停止します`,stopSignalSent:`停止シグナルを送信しました`,stopSignalSentDescription:`実行は次のステップ境界で停止します`,cancelFailed:`キャンセルに失敗しました`,networkError:`ネットワークエラー`}},c={title:`ジョブ比較`,jobN:`ジョブ {{n}}`,loadFailed:`比較の読み込みに失敗しました: {{error}}`,duration:`実行時間`,cost:`コスト`,tokensOut:`出力トークン`,tokensIn:`入力トークン`,cacheRead:`キャッシュ読み取り`,model:`モデル`,phasesDone:`完了フェーズ`,betterValueHint:`緑のハイライトはより良い値を示します`},l={emptyTitle:`ジョブはまだありません`,emptyDescription:`上でコマンドを実行すると、ここにジョブ履歴が表示されます`,loadFailed:`ジョブの読み込みに失敗しました`,filterAll:`すべて ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`開始日`,toDate:`終了日`,clear:`クリア`,exitCompareMode:`比較モードを終了`,compareTwoJobs:`ジョブを2件比較`,clearJobs:`ジョブをクリア`,selectTwoToCompare:`比較するジョブを2件選択`,selectOneMore:`あと1件選択してください`,readyToCompare:`準備完了 — 比較をクリック`,compareAction:`比較 →`,colStatus:`ステータス`,colCommand:`コマンド`,colDuration:`実行時間`,colTokens:`トークン`,colCost:`コスト`,colStarted:`開始`,profileTooltip:`プロファイル: {{name}}`,pipelinePart:`パイプラインの一部`,pipelineDependsOn:`(前のステップに依存)`,deleteProposal:`提案を削除`,loadMore:`さらに読み込む(残り {{count}} 件)`,priority:{critical:`クリティカル`,high:`高`,normal:`通常`,low:`低`},clearModal:{title:`ジョブをクリア`,jobsInHistory_one:`履歴に {{count}} 件のジョブ`,jobsInHistory_other:`履歴に {{count}} 件のジョブ`,clearAll_one:`{{count}} 件のジョブをすべてクリア`,clearAll_other:`{{count}} 件のジョブをすべてクリア`,orByRange:`または日付範囲でクリア:`,fromPlaceholder:`開始`,toPlaceholder:`終了`,clearInRange_one:`範囲内の {{count}} 件のジョブをクリア`,clearInRange_other:`範囲内の {{count}} 件のジョブをクリア`,clearRange:`範囲をクリア`},deleteProposalConfirm:{title:`提案を削除しますか?`,description:`1件の提案が完全に削除されます。この操作は元に戻せません。`},toast:{cleared_one:`{{count}} 件のジョブをクリアしました`,cleared_other:`{{count}} 件のジョブをクリアしました`,clearFailed:`ジョブのクリアに失敗しました`,networkError:`ネットワークエラー`}},u={none:`アクティブなジョブはありません`,noneHint:`下のコマンドを選択してジョブを開始`,exitCode:`exit {{code}}`,cancelTooltip:`実行中の claude プロセスに SIGTERM を送信`,viewLogs:`ログを表示`,toast:{cancelRequested:`ジョブのキャンセルをリクエストしました`,cancelRequestedDescription:`プロセスに SIGTERM を送信しています`,cancelFailed:`ジョブのキャンセルに失敗しました`,networkError:`ジョブのキャンセル中にネットワークエラーが発生しました`}},d={setup:`セットアップ`,iteration:`反復 {{current}}/{{limit}}`,iterationBadge:`反復 {{count}}`,follow:`ライブ追従中`,resumeFollow:`追従を再開`,expandAll:`すべて展開`,collapseAll:`すべて折りたたむ`,copyStep:`ステップをコピー`,copied:`ステップをクリップボードにコピーしました`,stepDetail:`ステップの詳細`,stepDetailTemplate:`テンプレート`,stepDetailCommand:`コマンド`,copyCommand:`コピー`,interrupted:`中断`,waiting:`次のステップを待機中...`,stepMapAria:`ループのステップマップ`,stalled:`停止`,stalledIdle_one:`{{count}} 分間プロバイダーの出力がなく、アプリがこの試行を停止しました`,stalledIdle_other:`{{count}} 分間プロバイダーの出力がなく、アプリがこの試行を停止しました`,providerLimit:`プロバイダー上限`,providerLimitHint:`プロバイダーが利用上限の通知を返したため、アプリはループを続けずに実行を停止しました。`},f={loading:`ログを読み込み中...`,empty:`ログ出力はまだありません`,filterPlaceholder:`ログをフィルター...`,copySuccess:`ログをクリップボードにコピーしました`,copyFailed:`ログのコピーに失敗しました`,lineCount:`{{filtered}} / {{total}} 行`,jumpToBottom:`最下部へ移動`,phaseLines_one:`{{count}} 行`,phaseLines_other:`{{count}} 行`,noMatchingLines:`一致する行はありません`,noOutput:`出力なし`,completed:`完了`,turns_one:`{{count}} ターン`,turns_other:`{{count}} ターン`},p={statusLabel:e,statusTooltip:t,statusName:n,page:r,detail:i,statusPanel:a,ticketHeader:o,modal:s,comparison:c,recent:l,activeJob:u,loopExplorer:d,logViewer:f};export{u as activeJob,c as comparison,p as default,i as detail,f as logViewer,d as loopExplorer,s as modal,r as page,l as recent,e as statusLabel,n as statusName,a as statusPanel,t as statusTooltip,o as ticketHeader};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({activeJob:()=>f,comparison:()=>u,default:()=>h,detail:()=>o,logViewer:()=>m,loopExplorer:()=>p,modal:()=>l,page:()=>a,recent:()=>d,statusLabel:()=>n,statusName:()=>i,statusPanel:()=>s,statusTooltip:()=>r,ticketHeader:()=>c}),n={running:`running`,completed:`completed`,done:`done`,failed:`failed`,canceled:`canceled`,queued:`queued`,zombie:`zombie`,skipped:`skipped`},r={running:`Job is actively executing`,completed:`Job completed successfully`,failed:`Job exited with a non-zero exit code`,canceled:`Job was manually canceled`,queued:`Job is waiting in the queue`,queuedToRun:`Job is waiting to run`,zombie:`Job was auto-terminated after prolonged inactivity`,skipped:`Job was skipped because a parent job in the pipeline failed`},i={running:`running`,completed:`completed`,failed:`failed`,canceled:`canceled`,zombie_terminated:`zombie`,queued:`queued`,skipped:`skipped`},a={title:`Jobs`,exportJobs:`Export Jobs`,proposalDeleted:`Proposal deleted`,proposal:{title:`Proposal`,noContent:`No proposal content yet.`,githubIssue:`GitHub Issue:`,status:{input:`Awaiting input`,exploring:`Exploring`,review:`Ready for review`,refining:`Refining`,creatingIssue:`Creating issue`,created:`Created`,cancelled:`Cancelled`,unknown:`Unknown status: {{status}}`}}},o={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job not found`,notFoundDescription:`The job ID "{{id}}" doesn't exist`,backToDashboard:`Back to Dashboard`,startedAgo:`Started {{timeAgo}}`,queuedWaiting:`Queued — waiting to start`,exportDiagnostic:`Export diagnostic`,exportDiagnosticAria:`Export diagnostic bundle`,exportDiagnosticTooltip:`Download ZIP with telemetry, logs, and summary for this job`,reExecute:`Re-execute`,reExecuteTooltip:`Spawn a new job with the same command`,cancelJob:`Cancel Job`,cancelJobTooltip:`Send SIGTERM to the running process. The job will be marked as canceled.`,cancelInteractive:`Discard`,finalizeJob:`Finalize Job`,finalizing:`Finalizing…`,finalizeJobTooltip:`End this interactive session and roll every turn's tokens and cost into the job total.`,interactive:{ready:`Ready — send a prompt`,working:`Agent working…`,placeholder:`Send a message to the running job…`,send:`Send`,liveTotals:"{{turns}} turns · ${{cost}}",autoHint:`This job follows its plan and finishes on its own — messages are optional steering.`,wrapUp:`Wrap up now`,wrapUpTooltip:`End the session now — the job completes with the work produced so far, every turn's tokens and cost rolled into the total.`,wrapUpStep:`Settle this step`,wrapUpStepTooltip:`End the current step now — the loop advances with what the step has produced so far.`,wrappingUp:`Wrapping up…`,queued_one:`{{count}} queued message`,queued_other:`{{count}} queued messages`,waitingForStep:`Between steps — the loop is deciding what runs next. You can send a message when the next AI step starts.`,waitingForStepShort:`Waiting for the next step…`,sendDisabledEmpty:`Type a message first`,sendDisabledWaiting:`No active step session right now`},toast:{jobDeleted:`Job deleted`,cancelSignalSent:`Cancel signal sent`,cancelSignalSentDescription:`Job will stop at the next safe point`,failed:`Failed`,networkError:`Network error`,exportFailed:`Export failed`,exportFailedHttp:`Export failed (HTTP {{status}})`,jobRequeued:`Job re-queued`,spawnFailed:`Failed to spawn job`,finalizeScheduled:`Finalizing interactive job…`,finalizeFailed:`Failed to finalize job`,sendFailed:`Failed to send message`,wrapUpScheduled:`Wrapping up the job…`,wrapUpStepScheduled:`Settling the step — the loop advances with what it produced`}},s={inProgress:`Job in progress`,completed:`Job completed`,failed:`Job failed`,duration:`Duration`,cost:`Cost`,turns:`Turns`,tokens:`Tokens`,filesCount_one:`{{count}} file`,filesCount_other:`{{count}} files`,pipelineTotal:`Pipeline total ({{count}} phases)`,totalCost:`Total cost`,totalTokens:`Total tokens`,filesModified:`Files modified`,zoneInProgress:`In progress`,zoneFinal:`Final summary`,zoneFinalPending:`Final summary — calculated when finished`,pendingCaption:`Calculated when finished`,pendingTooltip:`This is the provider's real figure; it appears when the job finishes.`,costTooltip:`The real cost is billed by the provider when the job closes.`,liveTooltip:`Live`,explainer:`Cost, turns and tokens are the provider's real figures and appear when the job finishes.`,notAvailable:`Not available`,steps_one:`{{count}} step`,steps_other:`{{count}} steps`,activity:{editing:`Editing {{arg}}`,writing:`Writing {{arg}}`,reading:`Reading {{arg}}`,searching:`Searching “{{arg}}”`,running:`Running: {{arg}}`,thinking:`Thinking…`,reasoning:`Reasoning…`,working:`Working…`,connecting:`Connecting to the agent…`,starting:`Starting…`},pipelinePartial:`≥ shown — {{count}} phase(s) have no recorded cost yet`,pipelinePartialTooltip:`Some phases did not report cost, so this total is a lower bound.`,pipelineCostUnavailable:`Cost telemetry is unavailable for every phase.`,pipelineUsageUnavailable:`Token telemetry is unavailable for every phase.`,pipelineUsagePartial:`≥ shown — {{count}} phase(s) have no token telemetry`,pipelineUsageTooltip:`Providers may complete phases without exposing token telemetry; only known usage is included.`},c={showMore:`+ {{count}} more`,showLess:`Show less`,deletedTicket:`#{{id}} (deleted)`,deletedTooltip:`Ticket no longer exists`},l={notFound:`Job not found`,cancelConfirmTitle:`Cancel job?`,cancelConfirmDescription:`The job will stop at the next safe point. This action cannot be undone.`,keepRunning:`Keep running`,cancelJob:`Cancel job`,stopRun:`Stop run`,stopRunConfirmTitle:`Stop this run?`,stopRunConfirmDescription:`The loop run will stop at the next step boundary. This action cannot be undone.`,toast:{cancelSignalSent:`Cancel signal sent`,cancelSignalSentDescription:`Job will stop at the next safe point`,stopSignalSent:`Stop signal sent`,stopSignalSentDescription:`The run will stop at the next step boundary`,cancelFailed:`Failed to cancel`,networkError:`Network error`}},u={title:`Job Comparison`,jobN:`Job {{n}}`,loadFailed:`Failed to load comparison: {{error}}`,duration:`Duration`,cost:`Cost`,tokensOut:`Tokens out`,tokensIn:`Tokens in`,cacheRead:`Cache read`,model:`Model`,phasesDone:`Phases done`,betterValueHint:`Green highlights indicate better value`},d={emptyTitle:`No jobs yet`,emptyDescription:`Run a command above to see your job history here`,loadFailed:`Failed to load jobs`,filterAll:`All ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`From date`,toDate:`To date`,clear:`Clear`,exitCompareMode:`Exit compare mode`,compareTwoJobs:`Compare 2 jobs`,clearJobs:`Clear jobs`,selectTwoToCompare:`Select 2 jobs to compare`,selectOneMore:`Select 1 more job`,readyToCompare:`Ready — click compare`,compareAction:`Compare →`,colStatus:`Status`,colCommand:`Command`,colDuration:`Duration`,colTokens:`Tokens`,colCost:`Cost`,colStarted:`Started`,profileTooltip:`Profile: {{name}}`,pipelinePart:`Part of a pipeline`,pipelineDependsOn:`(depends on previous step)`,deleteProposal:`Delete proposal`,loadMore:`Load more ({{count}} remaining)`,priority:{critical:`critical`,high:`high`,normal:`normal`,low:`low`},clearModal:{title:`Clear Jobs`,jobsInHistory_one:`{{count}} job in history`,jobsInHistory_other:`{{count}} jobs in history`,clearAll_one:`Clear all {{count}} job`,clearAll_other:`Clear all {{count}} jobs`,orByRange:`Or clear by date range:`,fromPlaceholder:`From`,toPlaceholder:`To`,clearInRange_one:`Clear {{count}} job in range`,clearInRange_other:`Clear {{count}} jobs in range`,clearRange:`Clear range`},deleteProposalConfirm:{title:`Delete proposal?`,description:`This will permanently delete 1 proposal. This action cannot be undone.`},toast:{cleared_one:`Cleared {{count}} job`,cleared_other:`Cleared {{count}} jobs`,clearFailed:`Failed to clear jobs`,networkError:`Network error`}},f={none:`No active job`,noneHint:`Select a command below to start a job`,exitCode:`exit {{code}}`,cancelTooltip:`Send SIGTERM to the running claude process`,viewLogs:`View Logs`,toast:{cancelRequested:`Job cancellation requested`,cancelRequestedDescription:`Sending SIGTERM to the process`,cancelFailed:`Failed to cancel job`,networkError:`Network error canceling job`}},p={setup:`Setup`,iteration:`Iteration {{current}}/{{limit}}`,iterationBadge:`iter {{count}}`,follow:`Following live`,resumeFollow:`Resume follow`,expandAll:`Expand all`,collapseAll:`Collapse all`,copyStep:`Copy step`,copied:`Step copied to clipboard`,stepDetail:`Step details`,stepDetailTemplate:`Template`,stepDetailCommand:`Command`,copyCommand:`Copy`,interrupted:`Interrupted`,waiting:`Waiting for the next step…`,stepMapAria:`Loop step map`},m={loading:`Loading logs...`,empty:`No log output yet`,filterPlaceholder:`Filter logs...`,copySuccess:`Log copied to clipboard`,copyFailed:`Failed to copy log`,lineCount:`{{filtered}} / {{total}} lines`,jumpToBottom:`Jump to bottom`,phaseLines_one:`{{count}} line`,phaseLines_other:`{{count}} lines`,noMatchingLines:`No matching lines`,noOutput:`No output`,completed:`Completed`,turns_one:`{{count}} turn`,turns_other:`{{count}} turns`},h={statusLabel:n,statusTooltip:r,statusName:i,page:a,detail:o,statusPanel:s,ticketHeader:c,modal:l,comparison:u,recent:d,activeJob:f,loopExplorer:p,logViewer:m};export{t};
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({activeJob:()=>f,comparison:()=>u,default:()=>h,detail:()=>o,logViewer:()=>m,loopExplorer:()=>p,modal:()=>l,page:()=>a,recent:()=>d,statusLabel:()=>n,statusName:()=>i,statusPanel:()=>s,statusTooltip:()=>r,ticketHeader:()=>c}),n={running:`running`,completed:`completed`,done:`done`,failed:`failed`,canceled:`canceled`,queued:`queued`,zombie:`zombie`,skipped:`skipped`},r={running:`Job is actively executing`,completed:`Job completed successfully`,failed:`Job exited with a non-zero exit code`,canceled:`Job was manually canceled`,queued:`Job is waiting in the queue`,queuedToRun:`Job is waiting to run`,zombie:`Job was auto-terminated after prolonged inactivity`,skipped:`Job was skipped because a parent job in the pipeline failed`},i={running:`running`,completed:`completed`,failed:`failed`,canceled:`canceled`,zombie_terminated:`zombie`,queued:`queued`,skipped:`skipped`},a={title:`Jobs`,exportJobs:`Export Jobs`,proposalDeleted:`Proposal deleted`,proposal:{title:`Proposal`,noContent:`No proposal content yet.`,githubIssue:`GitHub Issue:`,status:{input:`Awaiting input`,exploring:`Exploring`,review:`Ready for review`,refining:`Refining`,creatingIssue:`Creating issue`,created:`Created`,cancelled:`Cancelled`,unknown:`Unknown status: {{status}}`}}},o={breadcrumbDashboard:`Dashboard`,breadcrumbJob:`Job #{{id}}`,notFound:`Job not found`,notFoundDescription:`The job ID "{{id}}" doesn't exist`,backToDashboard:`Back to Dashboard`,startedAgo:`Started {{timeAgo}}`,queuedWaiting:`Queued — waiting to start`,exportDiagnostic:`Export diagnostic`,exportDiagnosticAria:`Export diagnostic bundle`,exportDiagnosticTooltip:`Download ZIP with telemetry, logs, and summary for this job`,reExecute:`Re-execute`,reExecuteTooltip:`Spawn a new job with the same command`,cancelJob:`Cancel Job`,cancelJobTooltip:`Send SIGTERM to the running process. The job will be marked as canceled.`,cancelInteractive:`Discard`,finalizeJob:`Finalize Job`,finalizing:`Finalizing…`,finalizeJobTooltip:`End this interactive session and roll every turn's tokens and cost into the job total.`,interactive:{ready:`Ready — send a prompt`,working:`Agent working…`,placeholder:`Send a message to the running job…`,send:`Send`,liveTotals:"{{turns}} turns · ${{cost}}",autoHint:`This job follows its plan and finishes on its own — messages are optional steering.`,wrapUp:`Wrap up now`,wrapUpTooltip:`End the session now — the job completes with the work produced so far, every turn's tokens and cost rolled into the total.`,wrapUpStep:`Settle this step`,wrapUpStepTooltip:`End the current step now — the loop advances with what the step has produced so far.`,wrappingUp:`Wrapping up…`,queued_one:`{{count}} queued message`,queued_other:`{{count}} queued messages`,waitingForStep:`Between steps — the loop is deciding what runs next. You can send a message when the next AI step starts.`,waitingForStepShort:`Waiting for the next step…`,sendDisabledEmpty:`Type a message first`,sendDisabledWaiting:`No active step session right now`},toast:{jobDeleted:`Job deleted`,cancelSignalSent:`Cancel signal sent`,cancelSignalSentDescription:`Job will stop at the next safe point`,failed:`Failed`,networkError:`Network error`,exportFailed:`Export failed`,exportFailedHttp:`Export failed (HTTP {{status}})`,jobRequeued:`Job re-queued`,spawnFailed:`Failed to spawn job`,finalizeScheduled:`Finalizing interactive job…`,finalizeFailed:`Failed to finalize job`,sendFailed:`Failed to send message`,wrapUpScheduled:`Wrapping up the job…`,wrapUpStepScheduled:`Settling the step — the loop advances with what it produced`}},s={inProgress:`Job in progress`,completed:`Job completed`,failed:`Job failed`,duration:`Duration`,cost:`Cost`,turns:`Turns`,tokens:`Tokens`,filesCount_one:`{{count}} file`,filesCount_other:`{{count}} files`,pipelineTotal:`Pipeline total ({{count}} phases)`,totalCost:`Total cost`,totalTokens:`Total tokens`,filesModified:`Files modified`,zoneInProgress:`In progress`,zoneFinal:`Final summary`,zoneFinalPending:`Final summary — calculated when finished`,pendingCaption:`Calculated when finished`,pendingTooltip:`This is the provider's real figure; it appears when the job finishes.`,costTooltip:`The real cost is billed by the provider when the job closes.`,liveTooltip:`Live`,explainer:`Cost, turns and tokens are the provider's real figures and appear when the job finishes.`,notAvailable:`Not available`,steps_one:`{{count}} step`,steps_other:`{{count}} steps`,activity:{editing:`Editing {{arg}}`,writing:`Writing {{arg}}`,reading:`Reading {{arg}}`,searching:`Searching “{{arg}}”`,running:`Running: {{arg}}`,thinking:`Thinking…`,reasoning:`Reasoning…`,working:`Working…`,connecting:`Connecting to the agent…`,starting:`Starting…`},pipelinePartial:`≥ shown — {{count}} phase(s) have no recorded cost yet`,pipelinePartialTooltip:`Some phases did not report cost, so this total is a lower bound.`,pipelineCostUnavailable:`Cost telemetry is unavailable for every phase.`,pipelineUsageUnavailable:`Token telemetry is unavailable for every phase.`,pipelineUsagePartial:`≥ shown — {{count}} phase(s) have no token telemetry`,pipelineUsageTooltip:`Providers may complete phases without exposing token telemetry; only known usage is included.`},c={showMore:`+ {{count}} more`,showLess:`Show less`,deletedTicket:`#{{id}} (deleted)`,deletedTooltip:`Ticket no longer exists`},l={notFound:`Job not found`,cancelConfirmTitle:`Cancel job?`,cancelConfirmDescription:`The job will stop at the next safe point. This action cannot be undone.`,keepRunning:`Keep running`,cancelJob:`Cancel job`,stopRun:`Stop run`,stopRunConfirmTitle:`Stop this run?`,stopRunConfirmDescription:`The loop run will stop at the next step boundary. This action cannot be undone.`,toast:{cancelSignalSent:`Cancel signal sent`,cancelSignalSentDescription:`Job will stop at the next safe point`,stopSignalSent:`Stop signal sent`,stopSignalSentDescription:`The run will stop at the next step boundary`,cancelFailed:`Failed to cancel`,networkError:`Network error`}},u={title:`Job Comparison`,jobN:`Job {{n}}`,loadFailed:`Failed to load comparison: {{error}}`,duration:`Duration`,cost:`Cost`,tokensOut:`Tokens out`,tokensIn:`Tokens in`,cacheRead:`Cache read`,model:`Model`,phasesDone:`Phases done`,betterValueHint:`Green highlights indicate better value`},d={emptyTitle:`No jobs yet`,emptyDescription:`Run a command above to see your job history here`,loadFailed:`Failed to load jobs`,filterAll:`All ({{count}})`,filterStatus:`{{status}} ({{count}})`,fromDate:`From date`,toDate:`To date`,clear:`Clear`,exitCompareMode:`Exit compare mode`,compareTwoJobs:`Compare 2 jobs`,clearJobs:`Clear jobs`,selectTwoToCompare:`Select 2 jobs to compare`,selectOneMore:`Select 1 more job`,readyToCompare:`Ready — click compare`,compareAction:`Compare →`,colStatus:`Status`,colCommand:`Command`,colDuration:`Duration`,colTokens:`Tokens`,colCost:`Cost`,colStarted:`Started`,profileTooltip:`Profile: {{name}}`,pipelinePart:`Part of a pipeline`,pipelineDependsOn:`(depends on previous step)`,deleteProposal:`Delete proposal`,loadMore:`Load more ({{count}} remaining)`,priority:{critical:`critical`,high:`high`,normal:`normal`,low:`low`},clearModal:{title:`Clear Jobs`,jobsInHistory_one:`{{count}} job in history`,jobsInHistory_other:`{{count}} jobs in history`,clearAll_one:`Clear all {{count}} job`,clearAll_other:`Clear all {{count}} jobs`,orByRange:`Or clear by date range:`,fromPlaceholder:`From`,toPlaceholder:`To`,clearInRange_one:`Clear {{count}} job in range`,clearInRange_other:`Clear {{count}} jobs in range`,clearRange:`Clear range`},deleteProposalConfirm:{title:`Delete proposal?`,description:`This will permanently delete 1 proposal. This action cannot be undone.`},toast:{cleared_one:`Cleared {{count}} job`,cleared_other:`Cleared {{count}} jobs`,clearFailed:`Failed to clear jobs`,networkError:`Network error`}},f={none:`No active job`,noneHint:`Select a command below to start a job`,exitCode:`exit {{code}}`,cancelTooltip:`Send SIGTERM to the running claude process`,viewLogs:`View Logs`,toast:{cancelRequested:`Job cancellation requested`,cancelRequestedDescription:`Sending SIGTERM to the process`,cancelFailed:`Failed to cancel job`,networkError:`Network error canceling job`}},p={setup:`Setup`,iteration:`Iteration {{current}}/{{limit}}`,iterationBadge:`iter {{count}}`,follow:`Following live`,resumeFollow:`Resume follow`,expandAll:`Expand all`,collapseAll:`Collapse all`,copyStep:`Copy step`,copied:`Step copied to clipboard`,stepDetail:`Step details`,stepDetailTemplate:`Template`,stepDetailCommand:`Command`,copyCommand:`Copy`,interrupted:`Interrupted`,waiting:`Waiting for the next step…`,stepMapAria:`Loop step map`,stalled:`Stalled`,stalledIdle_one:`No provider output for {{count}} minute — the app stopped this attempt`,stalledIdle_other:`No provider output for {{count}} minutes — the app stopped this attempt`,providerLimit:`Provider limit`,providerLimitHint:`The provider answered with a usage or rate-limit notice, so the app stopped the run instead of cycling.`},m={loading:`Loading logs...`,empty:`No log output yet`,filterPlaceholder:`Filter logs...`,copySuccess:`Log copied to clipboard`,copyFailed:`Failed to copy log`,lineCount:`{{filtered}} / {{total}} lines`,jumpToBottom:`Jump to bottom`,phaseLines_one:`{{count}} line`,phaseLines_other:`{{count}} lines`,noMatchingLines:`No matching lines`,noOutput:`No output`,completed:`Completed`,turns_one:`{{count}} turn`,turns_other:`{{count}} turns`},h={statusLabel:n,statusTooltip:r,statusName:i,page:a,detail:o,statusPanel:s,ticketHeader:c,modal:l,comparison:u,recent:d,activeJob:f,loopExplorer:p,logViewer:m};export{t};
@@ -0,0 +1 @@
1
+ var e=`MCP サーバー`,t={what:`MCP(Model Context Protocol)サーバーを使うと、Claude Desktop や Cursor などの外部 AI ツール、あるいは任意の MCP クライアントが Specrails と直接やり取りできます。プロジェクトの閲覧、仕様の読み取り、そして許可すれば作業の起動まで、すべて安全なローカル接続を通じて行えます。`,how:`デフォルトでオンになっています。下のクライアント設定を AI ツールにコピーしてください。Specrails は自分のマシン上でのみ待ち受け、インターネットには何も公開されません。`,grants:`すべての権限ティアはデフォルトでオンです。ティアのチェックを外すと、クライアントができることを 1 つずつ制限できます。`},n={on:`MCP サーバー オン`,off:`MCP サーバー オフ`,running_one:`実行中 · {{count}} 個のツール`,running_other:`実行中 · {{count}} 個のツール`,stopped:`停止中`,activeSessions_one:`{{count}} 件のアクティブセッション`,activeSessions_other:`{{count}} 件のアクティブセッション`,turnOn:`オンにする`,turnOff:`オフにする`,enableFailed:`MCP サーバーを有効にできませんでした: {{message}}`,disableFailed:`MCP サーバーを無効にできませんでした: {{message}}`},r={heading:`権限ティア`,description:`クライアントが使用できる各ティア。読み取りは常にオンで、それ以外はデフォルトでオンです。制限したいティアをオフにしてください。`,read:`読み取り`,readHelp:`プロジェクト、仕様、分析を閲覧します。常に許可されます。`,write:`書き込み`,writeHelp:`仕様とチケットを作成・編集します。`,aiSpawn:`AI 起動`,aiSpawnHelp:`CLI を実行する AI レールとジョブを起動します。`,destructive:`破壊的操作`,destructiveHelp:`仕様、チケット、その他のプロジェクトデータを削除します。`,updateFailed:`権限を更新できませんでした: {{message}}`},i={heading:`クライアント設定`,description:`これを MCP クライアントに貼り付けてください。シークレットは含まれません。トークンは別途コピーします。`,copyConfig:`設定をコピー`,configCopied:`設定をコピーしました`,copyFailed:`コピーに失敗しました`},a={heading:`アクセストークン`,description:`クライアントはこのトークンで認証します。パスワードと同様に扱ってください。`,hint:`{{hint}} で終わるトークン`,copyToken:`トークンをコピー`,tokenCopied:`トークンをコピーしました`,regenerate:`再生成`,regenerateConfirm:`アクセストークンを再生成しますか?古いトークンを使用しているクライアントは、設定を更新するまで動作しなくなります。`,regenerated:`アクセストークンを再生成しました`,regenerateFailed:`トークンを再生成できませんでした: {{message}}`},o={open:`開く`,exit:`終了`,statusOn:`MCP サーバー: オン`,statusOff:`MCP サーバー: オフ`},s={heading:`外部 MCP サーバー`,description:`自分の MCP サーバーをミッションエージェントで使えるようにします。検出されたエントリは AI プロバイダーの設定から取得され、リアルタイムに解決されます。プロバイダーにチェックを入れると、そのミッションでサーバーが有効になります。`,warning:`ミッションのターンはツール承認プロンプトなしで実行され、外部ツールは Specrails の権限ティアの対象外です。信頼できるサーバーのみ有効にしてください。`,sourceDiscovered:`{{provider}} から`,sourceCustom:`カスタム`,orphan:`ソース設定に見つかりません`,codexNative:`codex ネイティブ — 常時有効`,empty:`MCP サーバーが見つかりません。カスタムサーバーを追加するか、AI CLI で登録してください。`,addCustom:`カスタムを追加`,remove:`サーバーを削除`,edit:`サーバーを編集`,updateFailed:`外部 MCP 設定を保存できませんでした`,form:{name:`名前(例: jira-tools)`,command:`コマンド(例: npx)`,args:`引数(スペース区切り)`,env:`環境変数(1 行につき KEY=VALUE)`,cancel:`キャンセル`,save:`保存`,nameLabel:`名前`,commandLabel:`コマンド`,argsLabel:`引数`,envLabel:`環境変数`,enableFor:`有効化対象`,addVar:`変数を追加`,envKey:`キー`,envValue:`値`,nameInvalid:`使用できるのは英数字・ドット・ハイフンのみ — 'specrails' は予約済みです`,nameTaken:`同じ名前のカスタムサーバーが既に存在します`},errors:{reserved_name:`そのサーバー名は予約されています`,duplicate_server_name:`同じプロバイダーで有効な 2 つのサーバーが同名です`,invalid_transport:`カスタムサーバーにはコマンドが必要です`,unknown_provider:`アクティベーションマトリクスに不明なプロバイダーがあります`,invalid_entry:`サーバーエントリの形式が不正です`,invalid_body:`リクエストの形式が不正です`}},c={heading:e,explainer:t,enable:n,tiers:r,config:i,token:a,tray:o,external:s};export{i as config,c as default,n as enable,t as explainer,s as external,e as heading,r as tiers,a as token,o as tray};
@@ -0,0 +1 @@
1
+ var e=`MCP 服务器`,t={what:`MCP(模型上下文协议)服务器让外部 AI 工具——例如 Claude Desktop、Cursor 或任何 MCP 客户端——直接与 Specrails 通信。它们可以浏览你的项目、读取规格,并在你允许的情况下启动任务,全部通过一个安全的本地连接完成。`,how:`默认已开启——把下方的客户端配置复制到你的 AI 工具里即可。Specrails 只在你自己的机器上监听,不会暴露到互联网。`,grants:`所有权限层级默认开启。取消勾选某个层级即可逐项限制客户端能做的事。`},n={on:`MCP 服务器已开启`,off:`MCP 服务器已关闭`,running_one:`运行中 · {{count}} 个工具`,running_other:`运行中 · {{count}} 个工具`,stopped:`未运行`,activeSessions_one:`{{count}} 个活动会话`,activeSessions_other:`{{count}} 个活动会话`,turnOn:`开启`,turnOff:`关闭`,enableFailed:`无法开启 MCP 服务器:{{message}}`,disableFailed:`无法关闭 MCP 服务器:{{message}}`},r={heading:`权限层级`,description:`客户端可使用的每个层级。读取始终开启;其余默认开启——关闭任意层级即可限制客户端。`,read:`读取`,readHelp:`浏览项目、规格和分析。始终允许。`,write:`写入`,writeHelp:`创建和编辑规格与工单。`,aiSpawn:`启动 AI`,aiSpawnHelp:`启动运行 CLI 的 AI rails 和任务。`,destructive:`破坏性操作`,destructiveHelp:`删除规格、工单和其他项目数据。`,updateFailed:`无法更新权限:{{message}}`},i={heading:`客户端配置`,description:`将此内容粘贴到你的 MCP 客户端。它不包含任何密钥——令牌需单独复制。`,copyConfig:`复制配置`,configCopied:`配置已复制`,copyFailed:`复制失败`},a={heading:`访问令牌`,description:`你的客户端使用此令牌进行身份验证。请将其视为密码。`,hint:`以 {{hint}} 结尾的令牌`,copyToken:`复制令牌`,tokenCopied:`令牌已复制`,regenerate:`重新生成`,regenerateConfirm:`重新生成访问令牌?任何使用旧令牌的客户端都将停止工作,直到你更新其配置。`,regenerated:`访问令牌已重新生成`,regenerateFailed:`无法重新生成令牌:{{message}}`},o={open:`打开`,exit:`退出`,statusOn:`MCP 服务器:开启`,statusOff:`MCP 服务器:关闭`},s={heading:`外部 MCP 服务器`,description:`让任务代理可以使用你自己的 MCP 服务器。发现的条目来自你的 AI 提供商配置并实时解析;勾选提供商即可在其任务中启用服务器。`,warning:`任务回合运行时不会弹出工具批准提示,外部工具也不受 Specrails 权限层级约束。请只启用你信任的服务器。`,sourceDiscovered:`来自 {{provider}}`,sourceCustom:`自定义`,orphan:`在源配置中未找到`,codexNative:`codex 原生 — 始终启用`,empty:`未找到 MCP 服务器。请添加自定义服务器,或使用你的 AI CLI 注册一个。`,addCustom:`添加自定义`,remove:`移除服务器`,edit:`编辑服务器`,updateFailed:`无法保存外部 MCP 设置`,form:{name:`名称(如 jira-tools)`,command:`命令(如 npx)`,args:`参数(空格分隔)`,env:`环境变量(每行 KEY=VALUE)`,cancel:`取消`,save:`保存`,nameLabel:`名称`,commandLabel:`命令`,argsLabel:`参数`,envLabel:`环境变量`,enableFor:`启用于`,addVar:`添加变量`,envKey:`键`,envValue:`值`,nameInvalid:`仅限字母、数字、点和连字符 — 且 'specrails' 为保留名称`,nameTaken:`已存在同名的自定义服务器`},errors:{reserved_name:`该服务器名称已被保留`,duplicate_server_name:`两个已启用的服务器在同一提供商下重名`,invalid_transport:`自定义服务器需要一个命令`,unknown_provider:`激活矩阵中存在未知提供商`,invalid_entry:`服务器条目格式错误`,invalid_body:`请求格式错误`}},c={heading:e,explainer:t,enable:n,tiers:r,config:i,token:a,tray:o,external:s};export{i as config,c as default,n as enable,t as explainer,s as external,e as heading,r as tiers,a as token,o as tray};
@@ -0,0 +1 @@
1
+ var e=`MCP-Server`,t={what:`Ein MCP-Server (Model Context Protocol) ermöglicht es externen KI-Tools – wie Claude Desktop, Cursor oder jedem MCP-Client – direkt mit Specrails zu kommunizieren. Sie können Ihre Projekte durchsuchen, Spezifikationen lesen und – wenn Sie es erlauben – Arbeiten starten, alles über eine einzige sichere lokale Verbindung.`,how:`Standardmäßig eingeschaltet – kopieren Sie die Client-Konfiguration unten in Ihr KI-Tool. Specrails lauscht nur auf Ihrem eigenen Rechner – nichts ist im Internet erreichbar.`,grants:`Alle Berechtigungsstufen sind standardmäßig aktiv. Deaktivieren Sie eine Stufe, um einzuschränken, was Clients tun dürfen – eine Fähigkeit nach der anderen.`},n={on:`MCP-Server an`,off:`MCP-Server aus`,running_one:`Läuft · {{count}} Tool`,running_other:`Läuft · {{count}} Tools`,stopped:`Nicht aktiv`,activeSessions_one:`{{count}} aktive Sitzung`,activeSessions_other:`{{count}} aktive Sitzungen`,turnOn:`Einschalten`,turnOff:`Ausschalten`,enableFailed:`MCP-Server konnte nicht aktiviert werden: {{message}}`,disableFailed:`MCP-Server konnte nicht deaktiviert werden: {{message}}`},r={heading:`Berechtigungsstufen`,description:`Jede Stufe, die ein Client verwenden darf. Lesen ist immer aktiv; der Rest ist standardmäßig an – schalten Sie Stufen aus, um Clients einzuschränken.`,read:`Lesen`,readHelp:`Projekte, Spezifikationen und Analysen durchsuchen. Immer erlaubt.`,write:`Schreiben`,writeHelp:`Spezifikationen und Tickets erstellen und bearbeiten.`,aiSpawn:`KI starten`,aiSpawnHelp:`KI-Rails und Jobs starten, die die CLI ausführen.`,destructive:`Destruktiv`,destructiveHelp:`Spezifikationen, Tickets und andere Projektdaten löschen.`,updateFailed:`Berechtigungen konnten nicht aktualisiert werden: {{message}}`},i={heading:`Client-Konfiguration`,description:`Fügen Sie dies in Ihren MCP-Client ein. Sie enthält kein Geheimnis – das Token wird separat kopiert.`,copyConfig:`Konfiguration kopieren`,configCopied:`Konfiguration kopiert`,copyFailed:`Kopieren fehlgeschlagen`},a={heading:`Zugriffstoken`,description:`Ihr Client authentifiziert sich mit diesem Token. Behandeln Sie es wie ein Passwort.`,hint:`Token endet auf {{hint}}`,copyToken:`Token kopieren`,tokenCopied:`Token kopiert`,regenerate:`Neu generieren`,regenerateConfirm:`Zugriffstoken neu generieren? Jeder Client, der das alte Token verwendet, funktioniert nicht mehr, bis Sie seine Konfiguration aktualisieren.`,regenerated:`Zugriffstoken neu generiert`,regenerateFailed:`Token konnte nicht neu generiert werden: {{message}}`},o={open:`Öffnen`,exit:`Beenden`,statusOn:`MCP-Server: an`,statusOff:`MCP-Server: aus`},s={heading:`Externe MCP-Server`,description:`Stelle deine eigenen MCP-Server dem Missions-Agenten zur Verfügung. Entdeckte Einträge stammen aus den Konfigurationen deiner KI-Provider und werden live aufgelöst; hake einen Provider an, um einen Server für dessen Missionen zu aktivieren.`,warning:`Missions-Turns laufen ohne Tool-Freigabe-Abfragen, und externe Tools liegen außerhalb der Specrails-Berechtigungsstufen. Aktiviere nur Server, denen du vertraust.`,sourceDiscovered:`aus {{provider}}`,sourceCustom:`benutzerdefiniert`,orphan:`nicht in der Quellkonfiguration gefunden`,codexNative:`codex-nativ — immer aktiv`,empty:`Keine MCP-Server gefunden. Füge einen benutzerdefinierten Server hinzu oder registriere einen mit deinem KI-CLI.`,addCustom:`Benutzerdefiniert hinzufügen`,remove:`Server entfernen`,edit:`Server bearbeiten`,updateFailed:`Externe MCP-Einstellungen konnten nicht gespeichert werden`,form:{name:`Name (z. B. jira-tools)`,command:`Befehl (z. B. npx)`,args:`Argumente (durch Leerzeichen getrennt)`,env:`Umgebung (KEY=VALUE pro Zeile)`,cancel:`Abbrechen`,save:`Speichern`,nameLabel:`Name`,commandLabel:`Befehl`,argsLabel:`Argumente`,envLabel:`Umgebungsvariablen`,enableFor:`Aktivieren für`,addVar:`Variable hinzufügen`,envKey:`SCHLÜSSEL`,envValue:`Wert`,nameInvalid:`Nur Buchstaben, Ziffern, Punkte und Bindestriche — und 'specrails' ist reserviert`,nameTaken:`Ein benutzerdefinierter Server mit diesem Namen existiert bereits`},errors:{reserved_name:`Dieser Servername ist reserviert`,duplicate_server_name:`Zwei aktive Server teilen denselben Namen für einen Provider`,invalid_transport:`Ein benutzerdefinierter Server benötigt einen Befehl`,unknown_provider:`Unbekannter Provider in der Aktivierungsmatrix`,invalid_entry:`Fehlerhafter Servereintrag`,invalid_body:`Fehlerhafte Anfrage`}},c={heading:e,explainer:t,enable:n,tiers:r,config:i,token:a,tray:o,external:s};export{i as config,c as default,n as enable,t as explainer,s as external,e as heading,r as tiers,a as token,o as tray};
@@ -0,0 +1 @@
1
+ var e=`Server MCP`,t={what:`Un server MCP (Model Context Protocol) consente a strumenti di IA esterni — come Claude Desktop, Cursor o qualsiasi client MCP — di comunicare direttamente con Specrails. Possono esplorare i tuoi progetti, leggere le specifiche e, se lo consenti, avviare lavori, il tutto tramite un'unica connessione locale sicura.`,how:`È attivo per impostazione predefinita: copia la configurazione client qui sotto nel tuo strumento AI. Specrails ascolta solo sulla tua macchina — nulla è esposto a internet.`,grants:`Tutti i livelli di permesso sono attivi per impostazione predefinita. Deseleziona un livello per limitare ciò che i client possono fare, una capacità alla volta.`},n={on:`Server MCP attivo`,off:`Server MCP disattivato`,running_one:`In esecuzione · {{count}} strumento`,running_other:`In esecuzione · {{count}} strumenti`,stopped:`Non in esecuzione`,activeSessions_one:`{{count}} sessione attiva`,activeSessions_other:`{{count}} sessioni attive`,turnOn:`Attiva`,turnOff:`Disattiva`,enableFailed:`Impossibile attivare il server MCP: {{message}}`,disableFailed:`Impossibile disattivare il server MCP: {{message}}`},r={heading:`Livelli di permesso`,description:`Ogni livello che un client può usare. La lettura è sempre attiva; il resto è attivo di default — disattivane uno per limitare i client.`,read:`Lettura`,readHelp:`Esplorare progetti, specifiche e analisi. Sempre consentito.`,write:`Scrittura`,writeHelp:`Creare e modificare specifiche e ticket.`,aiSpawn:`Avvio IA`,aiSpawnHelp:`Avviare rail e lavori di IA che eseguono la CLI.`,destructive:`Distruttivo`,destructiveHelp:`Eliminare specifiche, ticket e altri dati del progetto.`,updateFailed:`Impossibile aggiornare i permessi: {{message}}`},i={heading:`Configurazione del client`,description:`Incolla questo nel tuo client MCP. Non contiene alcun segreto: il token si copia separatamente.`,copyConfig:`Copia configurazione`,configCopied:`Configurazione copiata`,copyFailed:`Copia non riuscita`},a={heading:`Token di accesso`,description:`Il tuo client si autentica con questo token. Trattalo come una password.`,hint:`Token che termina con {{hint}}`,copyToken:`Copia token`,tokenCopied:`Token copiato`,regenerate:`Rigenera`,regenerateConfirm:`Rigenerare il token di accesso? Qualsiasi client che usa il vecchio token smetterà di funzionare finché non ne aggiorni la configurazione.`,regenerated:`Token di accesso rigenerato`,regenerateFailed:`Impossibile rigenerare il token: {{message}}`},o={open:`Apri`,exit:`Esci`,statusOn:`Server MCP: attivo`,statusOff:`Server MCP: disattivato`},s={heading:`Server MCP esterni`,description:`Rendi i tuoi server MCP disponibili all'agente delle missioni. Le voci scoperte provengono dalle configurazioni dei tuoi provider IA e vengono risolte in tempo reale; spunta un provider per attivare un server nelle sue missioni.`,warning:`I turni di missione vengono eseguiti senza conferme degli strumenti, e gli strumenti esterni sono fuori dai livelli di permesso di Specrails. Attiva solo server di cui ti fidi.`,sourceDiscovered:`da {{provider}}`,sourceCustom:`personalizzato`,orphan:`non trovato nella configurazione di origine`,codexNative:`nativo codex — sempre attivo`,empty:`Nessun server MCP trovato. Aggiungi un server personalizzato o registrane uno con la tua CLI IA.`,addCustom:`Aggiungi personalizzato`,remove:`Rimuovi server`,edit:`Modifica server`,updateFailed:`Impossibile salvare le impostazioni MCP esterne`,form:{name:`Nome (es. jira-tools)`,command:`Comando (es. npx)`,args:`Argomenti (separati da spazi)`,env:`Ambiente (KEY=VALUE per riga)`,cancel:`Annulla`,save:`Salva`,nameLabel:`Nome`,commandLabel:`Comando`,argsLabel:`Argomenti`,envLabel:`Variabili d'ambiente`,enableFor:`Attiva per`,addVar:`Aggiungi variabile`,envKey:`CHIAVE`,envValue:`valore`,nameInvalid:`Solo lettere, cifre, punti e trattini — e 'specrails' è riservato`,nameTaken:`Esiste già un server personalizzato con questo nome`},errors:{reserved_name:`Quel nome di server è riservato`,duplicate_server_name:`Due server attivi condividono lo stesso nome per un provider`,invalid_transport:`Un server personalizzato richiede un comando`,unknown_provider:`Provider sconosciuto nella matrice di attivazione`,invalid_entry:`Voce di server malformata`,invalid_body:`Richiesta malformata`}},c={heading:e,explainer:t,enable:n,tiers:r,config:i,token:a,tray:o,external:s};export{i as config,c as default,n as enable,t as explainer,s as external,e as heading,r as tiers,a as token,o as tray};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({config:()=>o,default:()=>u,enable:()=>i,explainer:()=>r,external:()=>l,heading:()=>n,tiers:()=>a,token:()=>s,tray:()=>c}),n=`MCP server`,r={what:`An MCP (Model Context Protocol) server lets external AI tools — like Claude Desktop, Cursor, or any MCP client — talk to Specrails directly. They can browse your projects, read specs, and (if you allow it) launch work, all through one secure local connection.`,how:`It's on by default — copy the client config below into your AI tool. Specrails only listens on your own machine — nothing is exposed to the internet.`,grants:`Every permission tier is on by default. Untick a tier to restrict what clients may do, one capability at a time.`},i={on:`MCP server on`,off:`MCP server off`,running_one:`Running · {{count}} tool`,running_other:`Running · {{count}} tools`,stopped:`Not running`,activeSessions_one:`{{count}} active session`,activeSessions_other:`{{count}} active sessions`,turnOn:`Turn on`,turnOff:`Turn off`,enableFailed:`Could not enable the MCP server: {{message}}`,disableFailed:`Could not disable the MCP server: {{message}}`},a={heading:`Permission tiers`,description:`Each tier a client may use. Read is always on; the rest are on by default — switch any off to restrict clients.`,read:`Read`,readHelp:`Browse projects, specs, and analytics. Always allowed.`,write:`Write`,writeHelp:`Create and edit specs and tickets.`,aiSpawn:`AI spawn`,aiSpawnHelp:`Launch AI rails and jobs that run the CLI.`,destructive:`Destructive`,destructiveHelp:`Delete specs, tickets, and other project data.`,updateFailed:`Could not update permissions: {{message}}`},o={heading:`Client config`,description:`Paste this into your MCP client. It contains no secret — the token is copied separately.`,copyConfig:`Copy config`,configCopied:`Config copied`,copyFailed:`Copy failed`},s={heading:`Access token`,description:`Your client authenticates with this token. Treat it like a password.`,hint:`Token ending in {{hint}}`,copyToken:`Copy token`,tokenCopied:`Token copied`,regenerate:`Regenerate`,regenerateConfirm:`Regenerate the access token? Any client using the old token will stop working until you update its config.`,regenerated:`Access token regenerated`,regenerateFailed:`Could not regenerate the token: {{message}}`},c={open:`Open`,exit:`Exit`,statusOn:`MCP server: on`,statusOff:`MCP server: off`},l={heading:`External MCP servers`,description:`Make your own MCP servers available to the mission agent. Discovered entries come from your AI provider configs and resolve live; tick a provider to enable a server for its missions.`,warning:`Mission turns run without tool-approval prompts, and external tools are outside the Specrails permission tiers. Enable only servers you trust.`,sourceDiscovered:`from {{provider}}`,sourceCustom:`custom`,orphan:`not found in source config`,codexNative:`codex native — always on`,empty:`No MCP servers found. Add a custom server or register one with your AI CLI.`,addCustom:`Add custom`,remove:`Remove server`,edit:`Edit server`,updateFailed:`Could not save external MCP settings`,form:{name:`Name (e.g. jira-tools)`,command:`Command (e.g. npx)`,args:`Arguments (space-separated)`,env:`Environment (KEY=VALUE per line)`,cancel:`Cancel`,save:`Save`,nameLabel:`Name`,commandLabel:`Command`,argsLabel:`Arguments`,envLabel:`Environment variables`,enableFor:`Enable for`,addVar:`Add variable`,envKey:`KEY`,envValue:`value`,nameInvalid:`Letters, digits, dots and dashes only — and 'specrails' is reserved`,nameTaken:`A custom server with this name already exists`},errors:{reserved_name:`That server name is reserved`,duplicate_server_name:`Two enabled servers share the same name for one provider`,invalid_transport:`A custom server needs a command`,unknown_provider:`Unknown provider in the activation matrix`,invalid_entry:`Malformed server entry`,invalid_body:`Malformed request`}},u={heading:n,explainer:r,enable:i,tiers:a,config:o,token:s,tray:c,external:l};export{t};
@@ -0,0 +1 @@
1
+ var e=`Serveur MCP`,t={what:`Un serveur MCP (Model Context Protocol) permet à des outils d'IA externes — comme Claude Desktop, Cursor ou tout client MCP — de communiquer directement avec Specrails. Ils peuvent parcourir vos projets, lire les spécifications et, si vous l'autorisez, lancer des tâches, le tout via une seule connexion locale sécurisée.`,how:`C'est activé par défaut : copiez la configuration client ci-dessous dans votre outil d'IA. Specrails n'écoute que sur votre propre machine — rien n'est exposé à Internet.`,grants:`Tous les niveaux de permission sont activés par défaut. Décochez un niveau pour restreindre ce que les clients peuvent faire, une capacité à la fois.`},n={on:`Serveur MCP activé`,off:`Serveur MCP désactivé`,running_one:`En cours · {{count}} outil`,running_other:`En cours · {{count}} outils`,stopped:`Arrêté`,activeSessions_one:`{{count}} session active`,activeSessions_other:`{{count}} sessions actives`,turnOn:`Activer`,turnOff:`Désactiver`,enableFailed:`Impossible d'activer le serveur MCP : {{message}}`,disableFailed:`Impossible de désactiver le serveur MCP : {{message}}`},r={heading:`Niveaux de permission`,description:`Chaque niveau qu'un client peut utiliser. La lecture est toujours active ; le reste est activé par défaut — désactivez-en pour restreindre les clients.`,read:`Lecture`,readHelp:`Parcourir les projets, les spécifications et les analyses. Toujours autorisé.`,write:`Écriture`,writeHelp:`Créer et modifier des spécifications et des tickets.`,aiSpawn:`Lancer l'IA`,aiSpawnHelp:`Lancer des rails et des tâches d'IA qui exécutent la CLI.`,destructive:`Destructif`,destructiveHelp:`Supprimer des spécifications, des tickets et d'autres données du projet.`,updateFailed:`Impossible de mettre à jour les permissions : {{message}}`},i={heading:`Configuration du client`,description:`Collez ceci dans votre client MCP. Elle ne contient aucun secret : le jeton se copie séparément.`,copyConfig:`Copier la configuration`,configCopied:`Configuration copiée`,copyFailed:`Échec de la copie`},a={heading:`Jeton d'accès`,description:`Votre client s'authentifie avec ce jeton. Traitez-le comme un mot de passe.`,hint:`Jeton se terminant par {{hint}}`,copyToken:`Copier le jeton`,tokenCopied:`Jeton copié`,regenerate:`Régénérer`,regenerateConfirm:`Régénérer le jeton d'accès ? Tout client utilisant l'ancien jeton cessera de fonctionner jusqu'à ce que vous mettiez à jour sa configuration.`,regenerated:`Jeton d'accès régénéré`,regenerateFailed:`Impossible de régénérer le jeton : {{message}}`},o={open:`Ouvrir`,exit:`Quitter`,statusOn:`Serveur MCP : activé`,statusOff:`Serveur MCP : désactivé`},s={heading:`Serveurs MCP externes`,description:`Rendez vos propres serveurs MCP disponibles pour l'agent de missions. Les entrées découvertes proviennent des configurations de vos fournisseurs d'IA et sont résolues en direct ; cochez un fournisseur pour activer un serveur dans ses missions.`,warning:`Les tours de mission s'exécutent sans confirmation d'outils, et les outils externes sont hors des niveaux de permission Specrails. N'activez que des serveurs de confiance.`,sourceDiscovered:`depuis {{provider}}`,sourceCustom:`personnalisé`,orphan:`introuvable dans la configuration source`,codexNative:`natif codex — toujours actif`,empty:`Aucun serveur MCP trouvé. Ajoutez un serveur personnalisé ou enregistrez-en un avec votre CLI d'IA.`,addCustom:`Ajouter personnalisé`,remove:`Supprimer le serveur`,edit:`Modifier le serveur`,updateFailed:`Impossible d'enregistrer les paramètres MCP externes`,form:{name:`Nom (p. ex. jira-tools)`,command:`Commande (p. ex. npx)`,args:`Arguments (séparés par des espaces)`,env:`Environnement (KEY=VALUE par ligne)`,cancel:`Annuler`,save:`Enregistrer`,nameLabel:`Nom`,commandLabel:`Commande`,argsLabel:`Arguments`,envLabel:`Variables d'environnement`,enableFor:`Activer pour`,addVar:`Ajouter une variable`,envKey:`CLÉ`,envValue:`valeur`,nameInvalid:`Lettres, chiffres, points et tirets uniquement — et « specrails » est réservé`,nameTaken:`Un serveur personnalisé porte déjà ce nom`},errors:{reserved_name:`Ce nom de serveur est réservé`,duplicate_server_name:`Deux serveurs actifs partagent le même nom pour un fournisseur`,invalid_transport:`Un serveur personnalisé nécessite une commande`,unknown_provider:`Fournisseur inconnu dans la matrice d'activation`,invalid_entry:`Entrée de serveur malformée`,invalid_body:`Requête malformée`}},c={heading:e,explainer:t,enable:n,tiers:r,config:i,token:a,tray:o,external:s};export{i as config,c as default,n as enable,t as explainer,s as external,e as heading,r as tiers,a as token,o as tray};
@@ -0,0 +1 @@
1
+ var e=`Servidor MCP`,t={what:`Um servidor MCP (Model Context Protocol) permite que ferramentas de IA externas — como o Claude Desktop, o Cursor ou qualquer cliente MCP — comuniquem diretamente com o Specrails. Elas podem explorar os seus projetos, ler especificações e, se você permitir, iniciar trabalhos, tudo através de uma única ligação local segura.`,how:`Está ativado por predefinição: copie a configuração de cliente abaixo para a sua ferramenta de IA. O Specrails só escuta na sua própria máquina — nada fica exposto à internet.`,grants:`Todos os níveis de permissão estão ativos por predefinição. Desmarque um nível para restringir o que os clientes podem fazer, uma capacidade de cada vez.`},n={on:`Servidor MCP ativado`,off:`Servidor MCP desativado`,running_one:`Em execução · {{count}} ferramenta`,running_other:`Em execução · {{count}} ferramentas`,stopped:`Parado`,activeSessions_one:`{{count}} sessão ativa`,activeSessions_other:`{{count}} sessões ativas`,turnOn:`Ativar`,turnOff:`Desativar`,enableFailed:`Não foi possível ativar o servidor MCP: {{message}}`,disableFailed:`Não foi possível desativar o servidor MCP: {{message}}`},r={heading:`Níveis de permissão`,description:`Cada nível que um cliente pode usar. A leitura está sempre ativa; o resto está ativo por predefinição — desligue qualquer um para restringir os clientes.`,read:`Leitura`,readHelp:`Explorar projetos, especificações e análises. Sempre permitido.`,write:`Escrita`,writeHelp:`Criar e editar especificações e tickets.`,aiSpawn:`Iniciar IA`,aiSpawnHelp:`Iniciar rails e trabalhos de IA que executam a CLI.`,destructive:`Destrutivo`,destructiveHelp:`Eliminar especificações, tickets e outros dados do projeto.`,updateFailed:`Não foi possível atualizar as permissões: {{message}}`},i={heading:`Configuração do cliente`,description:`Cole isto no seu cliente MCP. Não contém nenhum segredo: o token é copiado separadamente.`,copyConfig:`Copiar configuração`,configCopied:`Configuração copiada`,copyFailed:`Falha ao copiar`},a={heading:`Token de acesso`,description:`O seu cliente autentica-se com este token. Trate-o como uma palavra-passe.`,hint:`Token terminado em {{hint}}`,copyToken:`Copiar token`,tokenCopied:`Token copiado`,regenerate:`Regenerar`,regenerateConfirm:`Regenerar o token de acesso? Qualquer cliente que use o token antigo deixará de funcionar até você atualizar a sua configuração.`,regenerated:`Token de acesso regenerado`,regenerateFailed:`Não foi possível regenerar o token: {{message}}`},o={open:`Abrir`,exit:`Sair`,statusOn:`Servidor MCP: ativado`,statusOff:`Servidor MCP: desativado`},s={heading:`Servidores MCP externos`,description:`Disponibilize seus próprios servidores MCP para o agente de missões. As entradas descobertas vêm das configurações dos seus provedores de IA e são resolvidas ao vivo; marque um provedor para ativar um servidor nas suas missões.`,warning:`Os turnos de missão executam sem confirmação de ferramentas, e ferramentas externas ficam fora dos níveis de permissão do Specrails. Ative apenas servidores confiáveis.`,sourceDiscovered:`de {{provider}}`,sourceCustom:`personalizado`,orphan:`não encontrado na configuração de origem`,codexNative:`nativo do codex — sempre ativo`,empty:`Nenhum servidor MCP encontrado. Adicione um servidor personalizado ou registre um com seu CLI de IA.`,addCustom:`Adicionar personalizado`,remove:`Remover servidor`,edit:`Editar servidor`,updateFailed:`Não foi possível salvar as configurações de MCP externos`,form:{name:`Nome (p. ex. jira-tools)`,command:`Comando (p. ex. npx)`,args:`Argumentos (separados por espaços)`,env:`Ambiente (KEY=VALUE por linha)`,cancel:`Cancelar`,save:`Salvar`,nameLabel:`Nome`,commandLabel:`Comando`,argsLabel:`Argumentos`,envLabel:`Variáveis de ambiente`,enableFor:`Ativar para`,addVar:`Adicionar variável`,envKey:`CHAVE`,envValue:`valor`,nameInvalid:`Apenas letras, dígitos, pontos e hífens — e 'specrails' é reservado`,nameTaken:`Já existe um servidor personalizado com esse nome`},errors:{reserved_name:`Esse nome de servidor é reservado`,duplicate_server_name:`Dois servidores ativos compartilham o mesmo nome para um provedor`,invalid_transport:`Um servidor personalizado precisa de um comando`,unknown_provider:`Provedor desconhecido na matriz de ativação`,invalid_entry:`Entrada de servidor malformada`,invalid_body:`Requisição malformada`}},c={heading:e,explainer:t,enable:n,tiers:r,config:i,token:a,tray:o,external:s};export{i as config,c as default,n as enable,t as explainer,s as external,e as heading,r as tiers,a as token,o as tray};
@@ -0,0 +1 @@
1
+ var e=`Servidor MCP`,t={what:`Un servidor MCP (Model Context Protocol) permite que herramientas de IA externas —como Claude Desktop, Cursor o cualquier cliente MCP— se comuniquen directamente con Specrails. Pueden explorar tus proyectos, leer especificaciones y, si lo permites, lanzar trabajos, todo a través de una única conexión local segura.`,how:`Está activado por defecto: copia la configuración de cliente de abajo en tu herramienta de IA. Specrails solo escucha en tu propia máquina; nada queda expuesto a internet.`,grants:`Todos los niveles de permiso están activados por defecto. Desmarca un nivel para restringir lo que pueden hacer los clientes, una capacidad cada vez.`},n={on:`Servidor MCP activado`,off:`Servidor MCP desactivado`,running_one:`En ejecución · {{count}} herramienta`,running_other:`En ejecución · {{count}} herramientas`,stopped:`Detenido`,activeSessions_one:`{{count}} sesión activa`,activeSessions_other:`{{count}} sesiones activas`,turnOn:`Activar`,turnOff:`Desactivar`,enableFailed:`No se pudo activar el servidor MCP: {{message}}`,disableFailed:`No se pudo desactivar el servidor MCP: {{message}}`},r={heading:`Niveles de permiso`,description:`Cada nivel que un cliente puede usar. Lectura siempre está activa; el resto están activados por defecto: desactiva cualquiera para restringir a los clientes.`,read:`Lectura`,readHelp:`Explorar proyectos, especificaciones y analíticas. Siempre permitido.`,write:`Escritura`,writeHelp:`Crear y editar especificaciones y tickets.`,aiSpawn:`Lanzar IA`,aiSpawnHelp:`Lanzar rails y trabajos de IA que ejecutan la CLI.`,destructive:`Destructivo`,destructiveHelp:`Eliminar especificaciones, tickets y otros datos del proyecto.`,updateFailed:`No se pudieron actualizar los permisos: {{message}}`},i={heading:`Configuración del cliente`,description:`Pega esto en tu cliente MCP. No contiene ningún secreto: el token se copia por separado.`,copyConfig:`Copiar configuración`,configCopied:`Configuración copiada`,copyFailed:`Error al copiar`},a={heading:`Token de acceso`,description:`Tu cliente se autentica con este token. Trátalo como una contraseña.`,hint:`Token que termina en {{hint}}`,copyToken:`Copiar token`,tokenCopied:`Token copiado`,regenerate:`Regenerar`,regenerateConfirm:`¿Regenerar el token de acceso? Cualquier cliente que use el token antiguo dejará de funcionar hasta que actualices su configuración.`,regenerated:`Token de acceso regenerado`,regenerateFailed:`No se pudo regenerar el token: {{message}}`},o={open:`Abrir`,exit:`Salir`,statusOn:`Servidor MCP: activado`,statusOff:`Servidor MCP: desactivado`},s={heading:`Servidores MCP externos`,description:`Pon tus propios servidores MCP a disposición del agente de misiones. Las entradas descubiertas provienen de las configuraciones de tus proveedores de IA y se resuelven en vivo; marca un proveedor para activar un servidor en sus misiones.`,warning:`Los turnos de misión se ejecutan sin confirmación de herramientas, y las herramientas externas quedan fuera de los niveles de permiso de Specrails. Activa solo servidores de confianza.`,sourceDiscovered:`de {{provider}}`,sourceCustom:`personalizado`,orphan:`no encontrado en la configuración de origen`,codexNative:`nativo de codex — siempre activo`,empty:`No se encontraron servidores MCP. Añade uno personalizado o regístralo con tu CLI de IA.`,addCustom:`Añadir personalizado`,remove:`Eliminar servidor`,edit:`Editar servidor`,updateFailed:`No se pudo guardar la configuración de MCP externos`,form:{name:`Nombre (p. ej. jira-tools)`,command:`Comando (p. ej. npx)`,args:`Argumentos (separados por espacios)`,env:`Entorno (KEY=VALUE por línea)`,cancel:`Cancelar`,save:`Guardar`,nameLabel:`Nombre`,commandLabel:`Comando`,argsLabel:`Argumentos`,envLabel:`Variables de entorno`,enableFor:`Activar para`,addVar:`Añadir variable`,envKey:`CLAVE`,envValue:`valor`,nameInvalid:`Solo letras, dígitos, puntos y guiones — y 'specrails' está reservado`,nameTaken:`Ya existe un servidor personalizado con ese nombre`},errors:{reserved_name:`Ese nombre de servidor está reservado`,duplicate_server_name:`Dos servidores activos comparten nombre para un mismo proveedor`,invalid_transport:`Un servidor personalizado necesita un comando`,unknown_provider:`Proveedor desconocido en la matriz de activación`,invalid_entry:`Entrada de servidor malformada`,invalid_body:`Petición malformada`}},c={heading:e,explainer:t,enable:n,tiers:r,config:i,token:a,tray:o,external:s};export{i as config,c as default,n as enable,t as explainer,s as external,e as heading,r as tiers,a as token,o as tray};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({activity:()=>l,aiNote:()=>o,decision:()=>c,default:()=>d,emptyLive:()=>r,emptySettled:()=>i,modeLog:()=>`Log`,modeNarrated:()=>n,repeats:()=>u,step:()=>s,waiting:()=>a}),n=`Story`,r=`Nothing has happened yet.`,i=`No activity was recorded for this run.`,a={range:`Runs like this have taken {{low}}–{{high}} min (last {{count}})`,elapsed:`Running for {{minutes}} min`},o=`Built from what actually happened during the run.`,s={start:`Step {{step}}: {{title}}`,startRetry:`Step {{step}}: {{title}} — attempt {{iteration}}`,done:`Finished step {{step}}`,doneTimed:`Finished step {{step}} in {{seconds}}s`,failed:`Step {{step}} did not succeed`,interrupted:`Step {{step}} was interrupted before it finished`,doneTimedMin:`Finished step {{step}} in {{minutes}} min`,role:{work:`making the changes`,verify:`checking it works`,decide:`deciding whether it's done`,fix:`fixing what failed`},stalled:`Step {{step}} stalled — no activity for {{idleMinutes}} min, so the app stopped it`,startResume:`Step {{step}}: {{title}} — resuming after a stall`,providerLimit:`Step {{step}} stopped — the provider's usage limit was reached`},c={another:`Not done yet — going round again`,satisfied:`Goal met — moving on`},l={reading:`Reading {{target}}`,readingBare:`Reading the code`,editing:`Changing {{target}}`,editingBare:`Changing the code`,writing:`Writing {{target}}`,writingBare:`Writing new code`,searching:`Searching for {{target}}`,searchingBare:`Searching the code`,running:`Running {{target}}`,runningBare:`Running a command`,working:`Working on {{target}}`,workingBare:`Working`,exploring:`Looking through the code`,exploringBare:`Looking through the code`,testing:`Running the tests`,building:`Building the project`,typechecking:`Checking the types`,linting:`Checking code style`,installing:`Installing dependencies`,savingWork:`Saving the work`,checkingSpec:`Checking the spec`,bookkeeping:`Recording its own notes`,bookkeepingBare:`Recording its own notes`,writingSpec:`Writing the plan`,writingSpecBare:`Writing the plan`,writingFiles:`Writing {{files}} files ({{names}}…)`,readingFiles:`Reading {{files}} files ({{names}}…)`,editingFiles:`Changing {{files}} files ({{names}}…)`,delegating:`Handing off to the {{target}}`,delegatingBare:`Handing off to a specialist`},u=`×{{count}}`,d={modeNarrated:n,modeLog:`Log`,emptyLive:r,emptySettled:i,waiting:a,aiNote:o,step:s,decision:c,activity:l,repeats:u};export{t};
@@ -0,0 +1 @@
1
+ var e=`Récit`,t=`Journal`,n=`Rien ne s'est encore passé.`,r=`Aucune activité enregistrée pour cette exécution.`,i={range:`Les exécutions de ce type ont pris {{low}}–{{high}} min (dernières {{count}})`,elapsed:`En cours depuis {{minutes}} min`},a=`Construit à partir de ce qui s'est réellement passé pendant l'exécution.`,o={start:`Étape {{step}} : {{title}}`,startRetry:`Étape {{step}} : {{title}} — tentative {{iteration}}`,done:`Étape {{step}} terminée`,doneTimed:`Étape {{step}} terminée en {{seconds}} s`,failed:`L'étape {{step}} n'a pas abouti`,interrupted:`L'étape {{step}} a été interrompue avant la fin`,doneTimedMin:`Étape {{step}} terminée en {{minutes}} min`,role:{work:`réalisation des changements`,verify:`vérification du fonctionnement`,decide:`décision : est-ce terminé ?`,fix:`correction de ce qui a échoué`},stalled:`L'étape {{step}} s'est bloquée — aucune activité pendant {{idleMinutes}} min, l'app l'a donc arrêtée`,startResume:`Étape {{step}} : {{title}} — reprise après un blocage`,providerLimit:`Étape {{step}} arrêtée — la limite d'utilisation du fournisseur a été atteinte`},s={another:`Pas encore fini — nouveau tour`,satisfied:`Objectif atteint — on continue`},c={reading:`Lecture de {{target}}`,readingBare:`Lecture du code`,editing:`Modification de {{target}}`,editingBare:`Modification du code`,writing:`Écriture de {{target}}`,writingBare:`Écriture de nouveau code`,searching:`Recherche de {{target}}`,searchingBare:`Recherche dans le code`,running:`Exécution de {{target}}`,runningBare:`Exécution d'une commande`,working:`Travail sur {{target}}`,workingBare:`Travail en cours`,exploring:`Exploration du code`,exploringBare:`Exploration du code`,testing:`Exécution des tests`,building:`Compilation du projet`,typechecking:`Vérification des types`,linting:`Vérification du style`,installing:`Installation des dépendances`,savingWork:`Enregistrement du travail`,checkingSpec:`Vérification de la spec`,bookkeeping:`Prise de ses propres notes`,bookkeepingBare:`Prise de ses propres notes`,writingSpec:`Rédaction du plan`,writingSpecBare:`Rédaction du plan`,writingFiles:`Écriture de {{files}} fichiers ({{names}}…)`,readingFiles:`Lecture de {{files}} fichiers ({{names}}…)`,editingFiles:`Modification de {{files}} fichiers ({{names}}…)`,delegating:`Transmission au {{target}}`,delegatingBare:`Transmission à un spécialiste`},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
@@ -0,0 +1 @@
1
+ var e=`过程`,t=`日志`,n=`还没有发生任何事。`,r=`本次运行没有记录到活动。`,i={range:`同类运行耗时 {{low}}–{{high}} 分钟(最近 {{count}} 次)`,elapsed:`已运行 {{minutes}} 分钟`},a=`根据运行期间真实发生的事情生成。`,o={start:`第 {{step}} 步:{{title}}`,startRetry:`第 {{step}} 步:{{title}} — 第 {{iteration}} 次尝试`,done:`第 {{step}} 步完成`,doneTimed:`第 {{step}} 步用 {{seconds}} 秒完成`,failed:`第 {{step}} 步未成功`,interrupted:`第 {{step}} 步在完成前被中断`,doneTimedMin:`第 {{step}} 步用 {{minutes}} 分钟完成`,role:{work:`进行修改`,verify:`验证是否可用`,decide:`判断是否完成`,fix:`修复失败的部分`},stalled:`第 {{step}} 步停滞:{{idleMinutes}} 分钟无活动,应用已将其停止`,startResume:`第 {{step}} 步:{{title}}——停滞后恢复`,providerLimit:`步骤 {{step}} 已停止 — 已达到提供商用量限额`},s={another:`还没完成 — 再来一轮`,satisfied:`目标达成 — 继续`},c={reading:`正在读取 {{target}}`,readingBare:`正在读取代码`,editing:`正在修改 {{target}}`,editingBare:`正在修改代码`,writing:`正在编写 {{target}}`,writingBare:`正在编写新代码`,searching:`正在搜索 {{target}}`,searchingBare:`正在搜索代码`,running:`正在运行 {{target}}`,runningBare:`正在运行命令`,working:`正在处理 {{target}}`,workingBare:`正在工作`,exploring:`正在查看代码`,exploringBare:`正在查看代码`,testing:`正在运行测试`,building:`正在构建项目`,typechecking:`正在检查类型`,linting:`正在检查代码风格`,installing:`正在安装依赖`,savingWork:`正在保存工作`,checkingSpec:`正在检查规格`,bookkeeping:`正在记录自己的笔记`,bookkeepingBare:`正在记录自己的笔记`,writingSpec:`正在编写计划`,writingSpecBare:`正在编写计划`,writingFiles:`正在写入 {{files}} 个文件({{names}}…)`,readingFiles:`正在读取 {{files}} 个文件({{names}}…)`,editingFiles:`正在修改 {{files}} 个文件({{names}}…)`,delegating:`移交给 {{target}}`,delegatingBare:`移交给专家`},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
@@ -0,0 +1 @@
1
+ var e=`Verlauf`,t=`Protokoll`,n=`Bisher ist nichts passiert.`,r=`Für diesen Lauf wurde keine Aktivität erfasst.`,i={range:`Solche Läufe dauerten {{low}}–{{high}} min (letzte {{count}})`,elapsed:`Läuft seit {{minutes}} min`},a=`Aus dem erstellt, was während des Laufs tatsächlich passiert ist.`,o={start:`Schritt {{step}}: {{title}}`,startRetry:`Schritt {{step}}: {{title}} — Versuch {{iteration}}`,done:`Schritt {{step}} abgeschlossen`,doneTimed:`Schritt {{step}} in {{seconds}} s abgeschlossen`,failed:`Schritt {{step}} war nicht erfolgreich`,interrupted:`Schritt {{step}} wurde vor dem Ende abgebrochen`,doneTimedMin:`Schritt {{step}} in {{minutes}} min abgeschlossen`,role:{work:`nimmt die Änderungen vor`,verify:`prüft, ob es funktioniert`,decide:`entscheidet, ob es fertig ist`,fix:`behebt, was fehlschlug`},stalled:`Schritt {{step}} hing – {{idleMinutes}} Min. ohne Aktivität, daher hat die App ihn beendet`,startResume:`Schritt {{step}}: {{title}} – Fortsetzung nach einem Hänger`,providerLimit:`Schritt {{step}} gestoppt — das Nutzungslimit des Anbieters ist erreicht`},s={another:`Noch nicht fertig — nächste Runde`,satisfied:`Ziel erreicht — weiter`},c={reading:`Liest {{target}}`,readingBare:`Liest den Code`,editing:`Ändert {{target}}`,editingBare:`Ändert den Code`,writing:`Schreibt {{target}}`,writingBare:`Schreibt neuen Code`,searching:`Sucht nach {{target}}`,searchingBare:`Sucht im Code`,running:`Führt {{target}} aus`,runningBare:`Führt einen Befehl aus`,working:`Arbeitet an {{target}}`,workingBare:`Arbeitet`,exploring:`Sieht den Code durch`,exploringBare:`Sieht den Code durch`,testing:`Führt die Tests aus`,building:`Baut das Projekt`,typechecking:`Prüft die Typen`,linting:`Prüft den Codestil`,installing:`Installiert Abhängigkeiten`,savingWork:`Sichert die Arbeit`,checkingSpec:`Prüft die Spec`,bookkeeping:`Notiert eigene Aufzeichnungen`,bookkeepingBare:`Notiert eigene Aufzeichnungen`,writingSpec:`Schreibt den Plan`,writingSpecBare:`Schreibt den Plan`,writingFiles:`Schreibt {{files}} Dateien ({{names}}…)`,readingFiles:`Liest {{files}} Dateien ({{names}}…)`,editingFiles:`Ändert {{files}} Dateien ({{names}}…)`,delegating:`Übergibt an {{target}}`,delegatingBare:`Übergibt an einen Spezialisten`},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
@@ -0,0 +1 @@
1
+ var e=`Relato`,t=`Registo`,n=`Ainda não aconteceu nada.`,r=`Não foi registada atividade nesta execução.`,i={range:`Execuções como esta levaram {{low}}–{{high}} min (últimas {{count}})`,elapsed:`A correr há {{minutes}} min`},a=`Construído a partir do que realmente aconteceu durante a execução.`,o={start:`Passo {{step}}: {{title}}`,startRetry:`Passo {{step}}: {{title}} — tentativa {{iteration}}`,done:`Passo {{step}} concluído`,doneTimed:`Passo {{step}} concluído em {{seconds}} s`,failed:`O passo {{step}} não correu bem`,interrupted:`O passo {{step}} foi interrompido antes de terminar`,doneTimedMin:`Passo {{step}} concluído em {{minutes}} min`,role:{work:`a fazer as alterações`,verify:`a comprovar que funciona`,decide:`a decidir se está terminado`,fix:`a corrigir o que falhou`},stalled:`O passo {{step}} travou — sem atividade durante {{idleMinutes}} min, por isso a app parou-o`,startResume:`Passo {{step}}: {{title}} — a retomar após travar`,providerLimit:`Passo {{step}} parado — o limite de utilização do fornecedor foi atingido`},s={another:`Ainda não está — outra volta`,satisfied:`Objetivo cumprido — a seguir`},c={reading:`A ler {{target}}`,readingBare:`A ler o código`,editing:`A alterar {{target}}`,editingBare:`A alterar o código`,writing:`A escrever {{target}}`,writingBare:`A escrever código novo`,searching:`A procurar {{target}}`,searchingBare:`A procurar no código`,running:`A executar {{target}}`,runningBare:`A executar um comando`,working:`A trabalhar em {{target}}`,workingBare:`A trabalhar`,exploring:`A percorrer o código`,exploringBare:`A percorrer o código`,testing:`A executar os testes`,building:`A compilar o projeto`,typechecking:`A verificar os tipos`,linting:`A verificar o estilo do código`,installing:`A instalar dependências`,savingWork:`A guardar o trabalho`,checkingSpec:`A verificar a spec`,bookkeeping:`A registar as suas notas`,bookkeepingBare:`A registar as suas notas`,writingSpec:`A escrever o plano`,writingSpecBare:`A escrever o plano`,writingFiles:`A escrever {{files}} ficheiros ({{names}}…)`,readingFiles:`A ler {{files}} ficheiros ({{names}}…)`,editingFiles:`A alterar {{files}} ficheiros ({{names}}…)`,delegating:`A passar o trabalho ao {{target}}`,delegatingBare:`A passar o trabalho a um especialista`},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};