specrails-desktop 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/.claude/commands/specrails/batch-implement.md +287 -0
  2. package/.claude/commands/specrails/compat-check.md +271 -0
  3. package/.claude/commands/specrails/doctor.md +62 -0
  4. package/.claude/commands/specrails/enrich.md +1635 -0
  5. package/.claude/commands/specrails/explore-spec.md +173 -0
  6. package/.claude/commands/specrails/health-check.md +527 -0
  7. package/.claude/commands/specrails/implement.md +1457 -0
  8. package/.claude/commands/specrails/memory-inspect.md +259 -0
  9. package/.claude/commands/specrails/opsx-diff.md +419 -0
  10. package/.claude/commands/specrails/propose-spec.md +102 -0
  11. package/.claude/commands/specrails/reconfig.md +89 -0
  12. package/.claude/commands/specrails/refactor-recommender.md +212 -0
  13. package/.claude/commands/specrails/retry.md +363 -0
  14. package/.claude/commands/specrails/telemetry.md +552 -0
  15. package/.claude/commands/specrails/why.md +96 -0
  16. package/LICENSE +21 -0
  17. package/README.md +290 -0
  18. package/cli/dist/specrails-desktop.js +1098 -0
  19. package/client/dist/assets/ActivityFeedPage-Gy4x8dBt.js +1 -0
  20. package/client/dist/assets/AgentsPage-CPgu--Fb.js +86 -0
  21. package/client/dist/assets/AnalyticsPage-B5sJEee2.js +1 -0
  22. package/client/dist/assets/BarChart-7IMQ8HY1.js +33 -0
  23. package/client/dist/assets/CodePage-CBdFvbwe.js +2 -0
  24. package/client/dist/assets/DesktopAnalyticsPage-w0rdTq4w.js +1 -0
  25. package/client/dist/assets/DocsDialog-BZUYM7wm.js +11 -0
  26. package/client/dist/assets/DocsPage-9QglWl46.js +11 -0
  27. package/client/dist/assets/ExportDropdown-BLZFXtNi.js +1 -0
  28. package/client/dist/assets/IntegrationsPage-BxBE4y99.js +3 -0
  29. package/client/dist/assets/JobDetailPage-DydWx_5S.js +16 -0
  30. package/client/dist/assets/JobsPage-20ibw0IO.js +1 -0
  31. package/client/dist/assets/abap-Bw6f2wDG.js +1 -0
  32. package/client/dist/assets/activity-BEIp_Y1A.js +1 -0
  33. package/client/dist/assets/activity-BdrPln96.js +1 -0
  34. package/client/dist/assets/activity-CpkRS8Sx.js +1 -0
  35. package/client/dist/assets/activity-DKCpESPt.js +1 -0
  36. package/client/dist/assets/activity-DOUVEjJi.js +1 -0
  37. package/client/dist/assets/activity-DRwkql_y.js +1 -0
  38. package/client/dist/assets/activity-DcDQ7tjw.js +1 -0
  39. package/client/dist/assets/activity-Dv6H7wEr.js +1 -0
  40. package/client/dist/assets/addon-image-3WCl5Vhd.js +1 -0
  41. package/client/dist/assets/addon-ligatures-C5OdliKs.js +2 -0
  42. package/client/dist/assets/addon-webgl-BbX6pSjl.js +44 -0
  43. package/client/dist/assets/addspec-B5yl4Loj.js +1 -0
  44. package/client/dist/assets/addspec-BEeF5-zc.js +1 -0
  45. package/client/dist/assets/addspec-D33ocMxf.js +1 -0
  46. package/client/dist/assets/addspec-DFswZ0jK.js +1 -0
  47. package/client/dist/assets/addspec-DRE-jZv7.js +1 -0
  48. package/client/dist/assets/addspec-DVZ15Jp8.js +1 -0
  49. package/client/dist/assets/addspec-Fkv91Opc.js +1 -0
  50. package/client/dist/assets/addspec-GWm4ffKl.js +1 -0
  51. package/client/dist/assets/agents-1nCDWRmP.js +1 -0
  52. package/client/dist/assets/agents-Bm9rPqnt.js +1 -0
  53. package/client/dist/assets/agents-CMxtJMLD.js +1 -0
  54. package/client/dist/assets/agents-DK-Dlc0i.js +1 -0
  55. package/client/dist/assets/agents-Q6Ldfpxx.js +1 -0
  56. package/client/dist/assets/agents-TeOSy-ax.js +1 -0
  57. package/client/dist/assets/agents-iTqjRajS.js +1 -0
  58. package/client/dist/assets/agents-s87sMGzL.js +1 -0
  59. package/client/dist/assets/agentstudio-B6Wb59E7.js +1 -0
  60. package/client/dist/assets/agentstudio-BADhZ41e.js +1 -0
  61. package/client/dist/assets/agentstudio-BSnWLR63.js +1 -0
  62. package/client/dist/assets/agentstudio-BdidyBzZ.js +1 -0
  63. package/client/dist/assets/agentstudio-CxlUllqI.js +1 -0
  64. package/client/dist/assets/agentstudio-D3I62TLJ.js +1 -0
  65. package/client/dist/assets/agentstudio-DuH9TogZ.js +1 -0
  66. package/client/dist/assets/agentstudio-Kw88_dUF.js +1 -0
  67. package/client/dist/assets/aiedit-BWxHGsYA.js +1 -0
  68. package/client/dist/assets/aiedit-D2ji6Qy0.js +1 -0
  69. package/client/dist/assets/aiedit-DAhZTvtk.js +1 -0
  70. package/client/dist/assets/aiedit-DJMny-D5.js +1 -0
  71. package/client/dist/assets/aiedit-DOcxERkU.js +1 -0
  72. package/client/dist/assets/aiedit-DvrcbwGv.js +1 -0
  73. package/client/dist/assets/aiedit-TTwzL1TS.js +1 -0
  74. package/client/dist/assets/aiedit-WBSjT_C1.js +1 -0
  75. package/client/dist/assets/analytics-BIdr0YfL.js +1 -0
  76. package/client/dist/assets/analytics-C6EzgtdE.js +1 -0
  77. package/client/dist/assets/analytics-C9Zc-rkM.js +1 -0
  78. package/client/dist/assets/analytics-CVx3YOc0.js +1 -0
  79. package/client/dist/assets/analytics-CYj0tfj7.js +1 -0
  80. package/client/dist/assets/analytics-CnY4kNG3.js +1 -0
  81. package/client/dist/assets/analytics-CrPCZRJ-.js +1 -0
  82. package/client/dist/assets/analytics-DMCto-TF.js +1 -0
  83. package/client/dist/assets/apex-Cw8_REBo.js +1 -0
  84. package/client/dist/assets/atom-one-dark-B-oHczHB.css +1 -0
  85. package/client/dist/assets/attachments-BIsSSnHJ.js +1 -0
  86. package/client/dist/assets/attachments-BW4L3l2L.js +1 -0
  87. package/client/dist/assets/attachments-Bcf6BG6V.js +1 -0
  88. package/client/dist/assets/attachments-Bke8sCU4.js +1 -0
  89. package/client/dist/assets/attachments-COcrGRFz.js +1 -0
  90. package/client/dist/assets/attachments-DYHGA2Dj.js +1 -0
  91. package/client/dist/assets/attachments-Dd92KpUH.js +1 -0
  92. package/client/dist/assets/attachments-DzdU6DV6.js +1 -0
  93. package/client/dist/assets/azcli-Cz6HAoOw.js +1 -0
  94. package/client/dist/assets/bat-CcJ-xyqL.js +1 -0
  95. package/client/dist/assets/bicep-z1WDCKYz.js +2 -0
  96. package/client/dist/assets/browser-5ErDlJoR.js +1 -0
  97. package/client/dist/assets/browser-Bc-YdlVg.js +1 -0
  98. package/client/dist/assets/browser-BlYF4OOq.js +1 -0
  99. package/client/dist/assets/browser-CT-ReZGt.js +1 -0
  100. package/client/dist/assets/browser-DGITz3fC.js +1 -0
  101. package/client/dist/assets/browser-JsAIGCEW.js +1 -0
  102. package/client/dist/assets/browser-M5-rbPlw.js +1 -0
  103. package/client/dist/assets/browser-Qya9cARy.js +1 -0
  104. package/client/dist/assets/cameligo-BRewOpfa.js +1 -0
  105. package/client/dist/assets/chat-BEGuC03z.js +1 -0
  106. package/client/dist/assets/chat-BEW60P_u.js +1 -0
  107. package/client/dist/assets/chat-BQNMD0PL.js +1 -0
  108. package/client/dist/assets/chat-BsbNGPW9.js +1 -0
  109. package/client/dist/assets/chat-CboQguCi.js +1 -0
  110. package/client/dist/assets/chat-DRCa9pOt.js +1 -0
  111. package/client/dist/assets/chat-DwUm6W9z.js +1 -0
  112. package/client/dist/assets/chat-yoXwguQu.js +1 -0
  113. package/client/dist/assets/chunk-CilyBKbf.js +1 -0
  114. package/client/dist/assets/clojure-DBjRWN6g.js +1 -0
  115. package/client/dist/assets/clsx-DnqN-uhr.js +1 -0
  116. package/client/dist/assets/code-AL1rVIMb.js +1 -0
  117. package/client/dist/assets/code-C0BKpkht.js +1 -0
  118. package/client/dist/assets/code-C0FTS3ew.js +1 -0
  119. package/client/dist/assets/code-CPcHxzxw.js +1 -0
  120. package/client/dist/assets/code-D3ryDniw.js +1 -0
  121. package/client/dist/assets/code-D3zVVQTj.js +1 -0
  122. package/client/dist/assets/code-PCmfS3dn.js +1 -0
  123. package/client/dist/assets/code-exI0G5Wd.js +1 -0
  124. package/client/dist/assets/codicon-ngg6Pgfi.ttf +0 -0
  125. package/client/dist/assets/coffee-Cfk_XHGR.js +1 -0
  126. package/client/dist/assets/commands-B772IyDa.js +1 -0
  127. package/client/dist/assets/commands-BDDp6xFG.js +1 -0
  128. package/client/dist/assets/commands-CJxCry-o.js +1 -0
  129. package/client/dist/assets/commands-CfgY-_of.js +1 -0
  130. package/client/dist/assets/commands-DLrvnPNg.js +1 -0
  131. package/client/dist/assets/commands-IXMOKBYt.js +1 -0
  132. package/client/dist/assets/commands-UD1NzmwX.js +1 -0
  133. package/client/dist/assets/commands-sqrqsxyE.js +1 -0
  134. package/client/dist/assets/common-DCr6VzJ7.js +1 -0
  135. package/client/dist/assets/common-Dard9UNH.js +1 -0
  136. package/client/dist/assets/common-DeDELLZJ.js +1 -0
  137. package/client/dist/assets/common-DltqHaAe.js +1 -0
  138. package/client/dist/assets/common-Dmm1GhdD.js +1 -0
  139. package/client/dist/assets/common-DnjcgkPH.js +1 -0
  140. package/client/dist/assets/common-GbpxfPG8.js +1 -0
  141. package/client/dist/assets/common-wA36jmj1.js +1 -0
  142. package/client/dist/assets/cpp-BVob6BaP.js +1 -0
  143. package/client/dist/assets/csharp-C4fbRuOu.js +1 -0
  144. package/client/dist/assets/csp-DthFP_vT.js +1 -0
  145. package/client/dist/assets/css-CGMH0hcW.js +3 -0
  146. package/client/dist/assets/css.worker-Wv5dxAWO.js +89 -0
  147. package/client/dist/assets/cssMode-Cc6ozl-J.js +1 -0
  148. package/client/dist/assets/cypher-Pnf68BRV.js +1 -0
  149. package/client/dist/assets/dart-PMMOtxZX.js +1 -0
  150. package/client/dist/assets/dashboard-B4ixDVk8.js +1 -0
  151. package/client/dist/assets/dashboard-BZBADHSj.js +1 -0
  152. package/client/dist/assets/dashboard-C1MfeUHs.js +1 -0
  153. package/client/dist/assets/dashboard-C7SK6xu5.js +1 -0
  154. package/client/dist/assets/dashboard-CB6Le1yN.js +1 -0
  155. package/client/dist/assets/dashboard-CoTpMOBM.js +1 -0
  156. package/client/dist/assets/dashboard-Duo4DDCW.js +1 -0
  157. package/client/dist/assets/dashboard-I19DXBxw.js +1 -0
  158. package/client/dist/assets/dist-js-BY-Fv_fg.js +1 -0
  159. package/client/dist/assets/dist-js-Bakc4uxT.js +1 -0
  160. package/client/dist/assets/dockerfile-di1nsJCc.js +1 -0
  161. package/client/dist/assets/ecl-D_WVcB5M.js +1 -0
  162. package/client/dist/assets/editor-Br_kD0ds.css +1 -0
  163. package/client/dist/assets/editor.api2-XLGzZfbc.js +872 -0
  164. package/client/dist/assets/editor.main-CfXxHimg.js +6 -0
  165. package/client/dist/assets/editor.worker-Bd9IXS8d.js +26 -0
  166. package/client/dist/assets/elixir-OAdJEMOn.js +1 -0
  167. package/client/dist/assets/explore-4mFpnrKU.js +1 -0
  168. package/client/dist/assets/explore-A8Ltoblq.js +1 -0
  169. package/client/dist/assets/explore-B9A3iN2W.js +1 -0
  170. package/client/dist/assets/explore-BV5Xxlsn.js +1 -0
  171. package/client/dist/assets/explore-BrBJvfjP.js +1 -0
  172. package/client/dist/assets/explore-C3FSE42C.js +1 -0
  173. package/client/dist/assets/explore-D2EFgt8J.js +1 -0
  174. package/client/dist/assets/explore-hFc3HFcp.js +1 -0
  175. package/client/dist/assets/flow9-D3QEZjgn.js +1 -0
  176. package/client/dist/assets/format-command-CwGuwzGA.js +1 -0
  177. package/client/dist/assets/freemarker2-DP7J1gG3.js +3 -0
  178. package/client/dist/assets/fsharp-BF0k_8N8.js +1 -0
  179. package/client/dist/assets/go-BAQO5Jsz.js +1 -0
  180. package/client/dist/assets/graphql-hdFVFkiV.js +1 -0
  181. package/client/dist/assets/handlebars-BjRlucw6.js +1 -0
  182. package/client/dist/assets/hcl-DWnl1o-X.js +1 -0
  183. package/client/dist/assets/html-OumBQJ-U.js +1 -0
  184. package/client/dist/assets/html.worker-CQP8QQsS.js +502 -0
  185. package/client/dist/assets/htmlMode-CStc3zXM.js +1 -0
  186. package/client/dist/assets/index-CimDRRi7.css +2 -0
  187. package/client/dist/assets/index-XGZaKl_u.js +142 -0
  188. package/client/dist/assets/ini-CB-6OVu3.js +1 -0
  189. package/client/dist/assets/integrations-C3p12Ms6.js +1 -0
  190. package/client/dist/assets/integrations-Cr6hH7XR.js +1 -0
  191. package/client/dist/assets/integrations-Cublz3m6.js +1 -0
  192. package/client/dist/assets/integrations-D28q1kF6.js +1 -0
  193. package/client/dist/assets/integrations-DRdbki5W.js +1 -0
  194. package/client/dist/assets/integrations-DaC4SzzL.js +1 -0
  195. package/client/dist/assets/integrations-DmQYCUvN.js +1 -0
  196. package/client/dist/assets/integrations-HIlUxXVs.js +1 -0
  197. package/client/dist/assets/java-d1CmfiHX.js +1 -0
  198. package/client/dist/assets/javascript-CMk--e7g.js +1 -0
  199. package/client/dist/assets/jobs-BE1siB0M.js +1 -0
  200. package/client/dist/assets/jobs-BHcQ_Faf.js +1 -0
  201. package/client/dist/assets/jobs-CFfc2dNX.js +1 -0
  202. package/client/dist/assets/jobs-CSi5n8X_.js +1 -0
  203. package/client/dist/assets/jobs-Dc3X86PY.js +1 -0
  204. package/client/dist/assets/jobs-De5tASex.js +1 -0
  205. package/client/dist/assets/jobs-DsoXEdo7.js +1 -0
  206. package/client/dist/assets/jobs-Wl-ApPMb.js +1 -0
  207. package/client/dist/assets/json.worker-DzV-CpCQ.js +58 -0
  208. package/client/dist/assets/jsonMode-C2h3ZcjZ.js +7 -0
  209. package/client/dist/assets/julia-Bgv08lKa.js +1 -0
  210. package/client/dist/assets/kotlin-u98kaVTf.js +1 -0
  211. package/client/dist/assets/less-CjYwpgg5.js +2 -0
  212. package/client/dist/assets/lexon-YTjaAFBB.js +1 -0
  213. package/client/dist/assets/lib-CPxTMOAq.js +7 -0
  214. package/client/dist/assets/liquid-mI3KJrBE.js +1 -0
  215. package/client/dist/assets/lspLanguageFeatures-DU09ggWi.js +4 -0
  216. package/client/dist/assets/lua-BzmkWv27.js +1 -0
  217. package/client/dist/assets/m3-CFwk9fw0.js +1 -0
  218. package/client/dist/assets/markdown-CR5iMpSZ.js +1 -0
  219. package/client/dist/assets/mdx-C41VDTR_.js +1 -0
  220. package/client/dist/assets/mips-CcEalc17.js +1 -0
  221. package/client/dist/assets/monaco.contribution-CPObAXMC.js +2 -0
  222. package/client/dist/assets/msdax-BQbkawnr.js +1 -0
  223. package/client/dist/assets/mysql-GTlaaW_P.js +1 -0
  224. package/client/dist/assets/nav-0fwkrgHt.js +1 -0
  225. package/client/dist/assets/nav-BEL3MTwK.js +1 -0
  226. package/client/dist/assets/nav-B_G-TJDW.js +1 -0
  227. package/client/dist/assets/nav-C2YXcbZS.js +1 -0
  228. package/client/dist/assets/nav-ClzOE4mA.js +1 -0
  229. package/client/dist/assets/nav-CtYwmMgu.js +1 -0
  230. package/client/dist/assets/nav-D2bOGSEg.js +1 -0
  231. package/client/dist/assets/nav-iH1V5j6o.js +1 -0
  232. package/client/dist/assets/objective-c-Byu1T5if.js +1 -0
  233. package/client/dist/assets/pascal-BrfzBfRm.js +1 -0
  234. package/client/dist/assets/pascaligo-BXXKFUeo.js +1 -0
  235. package/client/dist/assets/perl-B3OikKq-.js +1 -0
  236. package/client/dist/assets/pgsql-CTsa0Acc.js +1 -0
  237. package/client/dist/assets/php-DiQh3FUW.js +1 -0
  238. package/client/dist/assets/pla-92uH8Fzm.js +1 -0
  239. package/client/dist/assets/postiats-BbeWkKUr.js +1 -0
  240. package/client/dist/assets/powerquery-DgDMzpsm.js +1 -0
  241. package/client/dist/assets/powershell-BfdUUzaG.js +1 -0
  242. package/client/dist/assets/preload-helper-DSXbuxSR.js +1 -0
  243. package/client/dist/assets/protobuf-BojW2ftW.js +2 -0
  244. package/client/dist/assets/pug-BxqTg3IU.js +1 -0
  245. package/client/dist/assets/python-Y27rKQtk.js +1 -0
  246. package/client/dist/assets/qsharp-BX_A-MW9.js +1 -0
  247. package/client/dist/assets/r-D9BMnxvJ.js +1 -0
  248. package/client/dist/assets/razor-Cd5-q9Bp.js +1 -0
  249. package/client/dist/assets/redis-5cJqEQJJ.js +1 -0
  250. package/client/dist/assets/redshift-d8BBqiwb.js +1 -0
  251. package/client/dist/assets/restructuredtext-C8a6yIcZ.js +1 -0
  252. package/client/dist/assets/ruby-egeh-6KX.js +1 -0
  253. package/client/dist/assets/rust-a3r9IInB.js +1 -0
  254. package/client/dist/assets/sb-y8iRIDei.js +1 -0
  255. package/client/dist/assets/scala-BPDK2AmK.js +1 -0
  256. package/client/dist/assets/scheme-BIWUEoOs.js +1 -0
  257. package/client/dist/assets/scss-CA-PSzwg.js +3 -0
  258. package/client/dist/assets/settings-55oDcbSh.js +1 -0
  259. package/client/dist/assets/settings-Bd4Tq1RB.js +1 -0
  260. package/client/dist/assets/settings-CCSM-Fhn.js +1 -0
  261. package/client/dist/assets/settings-D3e_bDoW.js +1 -0
  262. package/client/dist/assets/settings-DKbTkbn7.js +1 -0
  263. package/client/dist/assets/settings-Dxpo6_w7.js +1 -0
  264. package/client/dist/assets/settings-bt84e3Aa.js +1 -0
  265. package/client/dist/assets/settings-nu68QukM.js +1 -0
  266. package/client/dist/assets/setup-BMqwfbW9.js +1 -0
  267. package/client/dist/assets/setup-Bb5LcG28.js +1 -0
  268. package/client/dist/assets/setup-BeEx2_da.js +1 -0
  269. package/client/dist/assets/setup-CCCrB53Q.js +1 -0
  270. package/client/dist/assets/setup-CJA0ATmd.js +1 -0
  271. package/client/dist/assets/setup-CeiDbZcb.js +1 -0
  272. package/client/dist/assets/setup-Cus7TApA.js +1 -0
  273. package/client/dist/assets/setup-D9qOs2Xo.js +1 -0
  274. package/client/dist/assets/shell--LiT1Bja.js +1 -0
  275. package/client/dist/assets/solidity-DdqZccZg.js +1 -0
  276. package/client/dist/assets/sophia-S6-YxNG_.js +1 -0
  277. package/client/dist/assets/sparql-BSf5kMp2.js +1 -0
  278. package/client/dist/assets/specs-BFfu3u-a.js +1 -0
  279. package/client/dist/assets/specs-B__C8-8a.js +1 -0
  280. package/client/dist/assets/specs-CZ1PsXsC.js +1 -0
  281. package/client/dist/assets/specs-D2FzlLn9.js +1 -0
  282. package/client/dist/assets/specs-DaUTrNF9.js +1 -0
  283. package/client/dist/assets/specs-Dyc5hYeE.js +1 -0
  284. package/client/dist/assets/specs-cKEh2LXt.js +1 -0
  285. package/client/dist/assets/specs-k0PyLDVt.js +1 -0
  286. package/client/dist/assets/sql-D7KgjR8G.js +1 -0
  287. package/client/dist/assets/st-BnoDa-Ml.js +1 -0
  288. package/client/dist/assets/swift-DEUHTkUX.js +1 -0
  289. package/client/dist/assets/systemverilog-Tqb_KPnW.js +1 -0
  290. package/client/dist/assets/tcl-BmBFS2qq.js +1 -0
  291. package/client/dist/assets/terminal-80yDMgMF.js +1 -0
  292. package/client/dist/assets/terminal-Bje4ziIa.js +1 -0
  293. package/client/dist/assets/terminal-C2WYcFHF.js +1 -0
  294. package/client/dist/assets/terminal-CSONJOex.js +1 -0
  295. package/client/dist/assets/terminal-DEqzGtcr.js +1 -0
  296. package/client/dist/assets/terminal-DeWzh6ys.js +1 -0
  297. package/client/dist/assets/terminal-YOlsJCQj.js +1 -0
  298. package/client/dist/assets/terminal-lkZYR4wJ.js +1 -0
  299. package/client/dist/assets/tickets-CB7N30gm.js +1 -0
  300. package/client/dist/assets/tickets-CF2PYelu.js +1 -0
  301. package/client/dist/assets/tickets-DNOANUXr.js +1 -0
  302. package/client/dist/assets/tickets-DU1aqsbr.js +1 -0
  303. package/client/dist/assets/tickets-DYvafSaY.js +1 -0
  304. package/client/dist/assets/tickets-DlpC_iTg.js +1 -0
  305. package/client/dist/assets/tickets-DucYgtdl.js +1 -0
  306. package/client/dist/assets/tickets-clefmXLv.js +1 -0
  307. package/client/dist/assets/ts.worker-METxwbDZ.js +67719 -0
  308. package/client/dist/assets/tsMode-B0y_xEci.js +11 -0
  309. package/client/dist/assets/twig-BQV8igWC.js +1 -0
  310. package/client/dist/assets/typescript-BzK0OgwW.js +1 -0
  311. package/client/dist/assets/typespec-DlFroUGY.js +1 -0
  312. package/client/dist/assets/useProjectCache-DSaiGFjV.js +1 -0
  313. package/client/dist/assets/vb-BlrJpIMX.js +1 -0
  314. package/client/dist/assets/wgsl-BWgIc6FZ.js +298 -0
  315. package/client/dist/assets/workers-rt--R2Qy.js +1 -0
  316. package/client/dist/assets/xml-eX9QXAmI.js +1 -0
  317. package/client/dist/assets/yaml-fcsNkpOt.js +1 -0
  318. package/client/dist/index.html +246 -0
  319. package/docs/README.md +54 -0
  320. package/docs/cli.md +198 -0
  321. package/docs/codex.md +210 -0
  322. package/docs/creating-specs.md +197 -0
  323. package/docs/customizing.md +197 -0
  324. package/docs/getting-started.md +140 -0
  325. package/docs/internals/README.md +25 -0
  326. package/docs/internals/adding-a-provider.md +238 -0
  327. package/docs/internals/api-reference.md +634 -0
  328. package/docs/internals/architecture.md +332 -0
  329. package/docs/internals/configuration.md +172 -0
  330. package/docs/internals/openspec-workflow.md +282 -0
  331. package/docs/internals/operations-runbook.md +198 -0
  332. package/docs/internals/profiles.md +152 -0
  333. package/docs/platforms/macos.md +130 -0
  334. package/docs/platforms/windows.md +81 -0
  335. package/docs/running-pipelines.md +240 -0
  336. package/docs/terminal.md +138 -0
  337. package/docs/tracking-cost.md +155 -0
  338. package/package.json +82 -0
  339. package/server/dist/agent-generator.js +232 -0
  340. package/server/dist/agent-refine-db.js +124 -0
  341. package/server/dist/agent-refine-manager.js +526 -0
  342. package/server/dist/ai-invocations.js +111 -0
  343. package/server/dist/attachment-manager.js +299 -0
  344. package/server/dist/auth.js +207 -0
  345. package/server/dist/binary-probe.js +35 -0
  346. package/server/dist/browser-capture-manager.js +576 -0
  347. package/server/dist/browser-capture-types.js +28 -0
  348. package/server/dist/browser-network.js +149 -0
  349. package/server/dist/browser-playwright.js +888 -0
  350. package/server/dist/build-dirs.js +44 -0
  351. package/server/dist/changes-reader.js +120 -0
  352. package/server/dist/chat-manager.js +1060 -0
  353. package/server/dist/chromium-resolver.js +311 -0
  354. package/server/dist/code-explorer-router.js +788 -0
  355. package/server/dist/codex-otel-bridge.js +235 -0
  356. package/server/dist/command-resolver.js +102 -0
  357. package/server/dist/config.js +306 -0
  358. package/server/dist/context-budget.js +113 -0
  359. package/server/dist/context-scope.js +279 -0
  360. package/server/dist/contract-refine-runner.js +521 -0
  361. package/server/dist/core-compat.js +207 -0
  362. package/server/dist/core-package.js +14 -0
  363. package/server/dist/db.js +1034 -0
  364. package/server/dist/desktop-analytics.js +156 -0
  365. package/server/dist/desktop-db.js +456 -0
  366. package/server/dist/desktop-router.js +735 -0
  367. package/server/dist/docs-router.js +207 -0
  368. package/server/dist/explore-contract-refine.js +421 -0
  369. package/server/dist/explore-cwd-manager.js +242 -0
  370. package/server/dist/explore-draft-title.js +47 -0
  371. package/server/dist/explore-smash.js +450 -0
  372. package/server/dist/feature-flags.js +17 -0
  373. package/server/dist/file-provenance.js +382 -0
  374. package/server/dist/file-summary-generator.js +221 -0
  375. package/server/dist/file-summary-manager.js +689 -0
  376. package/server/dist/hooks.js +102 -0
  377. package/server/dist/ids.js +7 -0
  378. package/server/dist/index.js +586 -0
  379. package/server/dist/metrics.js +136 -0
  380. package/server/dist/mobile/index.js +16 -0
  381. package/server/dist/mobile/mobile-admin-router.js +84 -0
  382. package/server/dist/mobile/mobile-auth.js +67 -0
  383. package/server/dist/mobile/mobile-devices.js +80 -0
  384. package/server/dist/mobile/mobile-event-bus.js +39 -0
  385. package/server/dist/mobile/mobile-gateway.js +285 -0
  386. package/server/dist/mobile/mobile-mdns.js +81 -0
  387. package/server/dist/mobile/mobile-pairing.js +179 -0
  388. package/server/dist/mobile/mobile-redact.js +53 -0
  389. package/server/dist/mobile/mobile-router.js +411 -0
  390. package/server/dist/mobile/mobile-tls.js +86 -0
  391. package/server/dist/mobile/mobile-types.js +9 -0
  392. package/server/dist/mobile/mobile-ws.js +275 -0
  393. package/server/dist/path-resolver.js +298 -0
  394. package/server/dist/plugin-manager.js +617 -0
  395. package/server/dist/plugins/claude-approval.js +179 -0
  396. package/server/dist/plugins/claude-md-mutation.js +146 -0
  397. package/server/dist/plugins/codex-mcp.js +108 -0
  398. package/server/dist/plugins/contributors.js +72 -0
  399. package/server/dist/plugins/drift.js +58 -0
  400. package/server/dist/plugins/index.js +14 -0
  401. package/server/dist/plugins/json-mutation.js +120 -0
  402. package/server/dist/plugins/manager.js +32 -0
  403. package/server/dist/plugins/ownership.js +86 -0
  404. package/server/dist/plugins/paths.js +37 -0
  405. package/server/dist/plugins/prereq-installer.js +104 -0
  406. package/server/dist/plugins/rail-integration.js +79 -0
  407. package/server/dist/plugins/serena/index.js +13 -0
  408. package/server/dist/plugins/serena/install.js +91 -0
  409. package/server/dist/plugins/serena/instructions-content.js +21 -0
  410. package/server/dist/plugins/serena/manifest.js +111 -0
  411. package/server/dist/plugins/serena/verify.js +78 -0
  412. package/server/dist/plugins-router.js +215 -0
  413. package/server/dist/pricing.js +89 -0
  414. package/server/dist/profile-manager.js +310 -0
  415. package/server/dist/profiles-router.js +759 -0
  416. package/server/dist/project-registry.js +443 -0
  417. package/server/dist/project-router.js +4016 -0
  418. package/server/dist/proposal-manager.js +291 -0
  419. package/server/dist/provider-selection.js +69 -0
  420. package/server/dist/providers/claude-adapter.js +281 -0
  421. package/server/dist/providers/codex-adapter.js +264 -0
  422. package/server/dist/providers/index.js +23 -0
  423. package/server/dist/providers/registry.js +37 -0
  424. package/server/dist/providers/types.js +22 -0
  425. package/server/dist/queue-manager.js +1511 -0
  426. package/server/dist/rails-router.js +362 -0
  427. package/server/dist/rails-store.js +116 -0
  428. package/server/dist/result-event.js +106 -0
  429. package/server/dist/schemas/profile.v1.json +151 -0
  430. package/server/dist/setup-manager.js +1165 -0
  431. package/server/dist/setup-prerequisites.js +372 -0
  432. package/server/dist/smash-runner.js +663 -0
  433. package/server/dist/spec-draft-parser.js +133 -0
  434. package/server/dist/spec-launcher-manager.js +174 -0
  435. package/server/dist/spec-models.js +32 -0
  436. package/server/dist/specrails-tech-client.js +82 -0
  437. package/server/dist/spending.js +448 -0
  438. package/server/dist/telemetry-compactor.js +180 -0
  439. package/server/dist/telemetry-export.js +317 -0
  440. package/server/dist/telemetry-receiver.js +224 -0
  441. package/server/dist/terminal-manager.js +633 -0
  442. package/server/dist/terminal-marks-store.js +117 -0
  443. package/server/dist/terminal-osc-parser.js +159 -0
  444. package/server/dist/terminal-settings.js +282 -0
  445. package/server/dist/terminal-shell-integration.js +196 -0
  446. package/server/dist/ticket-broadcast.js +47 -0
  447. package/server/dist/ticket-store.js +397 -0
  448. package/server/dist/ticket-watcher.js +117 -0
  449. package/server/dist/types.js +10 -0
  450. package/server/dist/user-mcp-config.js +117 -0
  451. package/server/dist/util/cli-prompt.js +181 -0
  452. package/server/dist/util/secure-fs.js +50 -0
  453. package/server/dist/util/win-spawn.js +43 -0
  454. package/server/dist/webhook-manager.js +89 -0
  455. package/server/dist/ws-routing.js +47 -0
@@ -0,0 +1 @@
1
+ var e={comments:{lineComment:`--`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}]},t={defaultToken:``,tokenPostfix:`.sql`,ignoreCase:!0,brackets:[{open:`[`,close:`]`,token:`delimiter.square`},{open:`(`,close:`)`,token:`delimiter.parenthesis`}],keywords:`AES128.AES256.ALL.ALLOWOVERWRITE.ANALYSE.ANALYZE.AND.ANY.ARRAY.AS.ASC.AUTHORIZATION.AZ64.BACKUP.BETWEEN.BINARY.BLANKSASNULL.BOTH.BYTEDICT.BZIP2.CASE.CAST.CHECK.COLLATE.COLUMN.CONSTRAINT.CREATE.CREDENTIALS.CROSS.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.CURRENT_USER_ID.DEFAULT.DEFERRABLE.DEFLATE.DEFRAG.DELTA.DELTA32K.DESC.DISABLE.DISTINCT.DO.ELSE.EMPTYASNULL.ENABLE.ENCODE.ENCRYPT.ENCRYPTION.END.EXCEPT.EXPLICIT.FALSE.FOR.FOREIGN.FREEZE.FROM.FULL.GLOBALDICT256.GLOBALDICT64K.GRANT.GROUP.GZIP.HAVING.IDENTITY.IGNORE.ILIKE.IN.INITIALLY.INNER.INTERSECT.INTO.IS.ISNULL.JOIN.LANGUAGE.LEADING.LEFT.LIKE.LIMIT.LOCALTIME.LOCALTIMESTAMP.LUN.LUNS.LZO.LZOP.MINUS.MOSTLY16.MOSTLY32.MOSTLY8.NATURAL.NEW.NOT.NOTNULL.NULL.NULLS.OFF.OFFLINE.OFFSET.OID.OLD.ON.ONLY.OPEN.OR.ORDER.OUTER.OVERLAPS.PARALLEL.PARTITION.PERCENT.PERMISSIONS.PLACING.PRIMARY.RAW.READRATIO.RECOVER.REFERENCES.RESPECT.REJECTLOG.RESORT.RESTORE.RIGHT.SELECT.SESSION_USER.SIMILAR.SNAPSHOT.SOME.SYSDATE.SYSTEM.TABLE.TAG.TDES.TEXT255.TEXT32K.THEN.TIMESTAMP.TO.TOP.TRAILING.TRUE.TRUNCATECOLUMNS.UNION.UNIQUE.USER.USING.VERBOSE.WALLET.WHEN.WHERE.WITH.WITHOUT`.split(`.`),operators:[`AND`,`BETWEEN`,`IN`,`LIKE`,`NOT`,`OR`,`IS`,`NULL`,`INTERSECT`,`UNION`,`INNER`,`JOIN`,`LEFT`,`OUTER`,`RIGHT`],builtinFunctions:`current_schema.current_schemas.has_database_privilege.has_schema_privilege.has_table_privilege.age.current_time.current_timestamp.localtime.isfinite.now.ascii.get_bit.get_byte.set_bit.set_byte.to_ascii.approximate percentile_disc.avg.count.listagg.max.median.min.percentile_cont.stddev_samp.stddev_pop.sum.var_samp.var_pop.bit_and.bit_or.bool_and.bool_or.cume_dist.first_value.lag.last_value.lead.nth_value.ratio_to_report.dense_rank.ntile.percent_rank.rank.row_number.case.coalesce.decode.greatest.least.nvl.nvl2.nullif.add_months.at time zone.convert_timezone.current_date.date_cmp.date_cmp_timestamp.date_cmp_timestamptz.date_part_year.dateadd.datediff.date_part.date_trunc.extract.getdate.interval_cmp.last_day.months_between.next_day.sysdate.timeofday.timestamp_cmp.timestamp_cmp_date.timestamp_cmp_timestamptz.timestamptz_cmp.timestamptz_cmp_date.timestamptz_cmp_timestamp.timezone.to_timestamp.trunc.abs.acos.asin.atan.atan2.cbrt.ceil.ceiling.checksum.cos.cot.degrees.dexp.dlog1.dlog10.exp.floor.ln.log.mod.pi.power.radians.random.round.sin.sign.sqrt.tan.to_hex.bpcharcmp.btrim.bttext_pattern_cmp.char_length.character_length.charindex.chr.concat.crc32.func_sha1.initcap.left and rights.len.length.lower.lpad and rpads.ltrim.md5.octet_length.position.quote_ident.quote_literal.regexp_count.regexp_instr.regexp_replace.regexp_substr.repeat.replace.replicate.reverse.rtrim.split_part.strpos.strtol.substring.textlen.translate.trim.upper.cast.convert.to_char.to_date.to_number.json_array_length.json_extract_array_element_text.json_extract_path_text.current_setting.pg_cancel_backend.pg_terminate_backend.set_config.current_database.current_user.current_user_id.pg_backend_pid.pg_last_copy_count.pg_last_copy_id.pg_last_query_id.pg_last_unload_count.session_user.slice_num.user.version.abbrev.acosd.any.area.array_agg.array_append.array_cat.array_dims.array_fill.array_length.array_lower.array_ndims.array_position.array_positions.array_prepend.array_remove.array_replace.array_to_json.array_to_string.array_to_tsvector.array_upper.asind.atan2d.atand.bit.bit_length.bound_box.box.brin_summarize_new_values.broadcast.cardinality.center.circle.clock_timestamp.col_description.concat_ws.convert_from.convert_to.corr.cosd.cotd.covar_pop.covar_samp.current_catalog.current_query.current_role.currval.cursor_to_xml.diameter.div.encode.enum_first.enum_last.enum_range.every.family.format.format_type.generate_series.generate_subscripts.get_current_ts_config.gin_clean_pending_list.grouping.has_any_column_privilege.has_column_privilege.has_foreign_data_wrapper_privilege.has_function_privilege.has_language_privilege.has_sequence_privilege.has_server_privilege.has_tablespace_privilege.has_type_privilege.height.host.hostmask.inet_client_addr.inet_client_port.inet_merge.inet_same_family.inet_server_addr.inet_server_port.isclosed.isempty.isopen.json_agg.json_object.json_object_agg.json_populate_record.json_populate_recordset.json_to_record.json_to_recordset.jsonb_agg.jsonb_object_agg.justify_days.justify_hours.justify_interval.lastval.left.line.localtimestamp.lower_inc.lower_inf.lpad.lseg.make_date.make_interval.make_time.make_timestamp.make_timestamptz.masklen.mode.netmask.network.nextval.npoints.num_nonnulls.num_nulls.numnode.obj_description.overlay.parse_ident.path.pclose.percentile_disc.pg_advisory_lock.pg_advisory_lock_shared.pg_advisory_unlock.pg_advisory_unlock_all.pg_advisory_unlock_shared.pg_advisory_xact_lock.pg_advisory_xact_lock_shared.pg_backup_start_time.pg_blocking_pids.pg_client_encoding.pg_collation_is_visible.pg_column_size.pg_conf_load_time.pg_control_checkpoint.pg_control_init.pg_control_recovery.pg_control_system.pg_conversion_is_visible.pg_create_logical_replication_slot.pg_create_physical_replication_slot.pg_create_restore_point.pg_current_xlog_flush_location.pg_current_xlog_insert_location.pg_current_xlog_location.pg_database_size.pg_describe_object.pg_drop_replication_slot.pg_export_snapshot.pg_filenode_relation.pg_function_is_visible.pg_get_constraintdef.pg_get_expr.pg_get_function_arguments.pg_get_function_identity_arguments.pg_get_function_result.pg_get_functiondef.pg_get_indexdef.pg_get_keywords.pg_get_object_address.pg_get_owned_sequence.pg_get_ruledef.pg_get_serial_sequence.pg_get_triggerdef.pg_get_userbyid.pg_get_viewdef.pg_has_role.pg_identify_object.pg_identify_object_as_address.pg_index_column_has_property.pg_index_has_property.pg_indexam_has_property.pg_indexes_size.pg_is_in_backup.pg_is_in_recovery.pg_is_other_temp_schema.pg_is_xlog_replay_paused.pg_last_committed_xact.pg_last_xact_replay_timestamp.pg_last_xlog_receive_location.pg_last_xlog_replay_location.pg_listening_channels.pg_logical_emit_message.pg_logical_slot_get_binary_changes.pg_logical_slot_get_changes.pg_logical_slot_peek_binary_changes.pg_logical_slot_peek_changes.pg_ls_dir.pg_my_temp_schema.pg_notification_queue_usage.pg_opclass_is_visible.pg_operator_is_visible.pg_opfamily_is_visible.pg_options_to_table.pg_postmaster_start_time.pg_read_binary_file.pg_read_file.pg_relation_filenode.pg_relation_filepath.pg_relation_size.pg_reload_conf.pg_replication_origin_create.pg_replication_origin_drop.pg_replication_origin_oid.pg_replication_origin_progress.pg_replication_origin_session_is_setup.pg_replication_origin_session_progress.pg_replication_origin_session_reset.pg_replication_origin_session_setup.pg_replication_origin_xact_reset.pg_replication_origin_xact_setup.pg_rotate_logfile.pg_size_bytes.pg_size_pretty.pg_sleep.pg_sleep_for.pg_sleep_until.pg_start_backup.pg_stat_file.pg_stop_backup.pg_switch_xlog.pg_table_is_visible.pg_table_size.pg_tablespace_databases.pg_tablespace_location.pg_tablespace_size.pg_total_relation_size.pg_trigger_depth.pg_try_advisory_lock.pg_try_advisory_lock_shared.pg_try_advisory_xact_lock.pg_try_advisory_xact_lock_shared.pg_ts_config_is_visible.pg_ts_dict_is_visible.pg_ts_parser_is_visible.pg_ts_template_is_visible.pg_type_is_visible.pg_typeof.pg_xact_commit_timestamp.pg_xlog_location_diff.pg_xlog_replay_pause.pg_xlog_replay_resume.pg_xlogfile_name.pg_xlogfile_name_offset.phraseto_tsquery.plainto_tsquery.point.polygon.popen.pqserverversion.query_to_xml.querytree.quote_nullable.radius.range_merge.regexp_matches.regexp_split_to_array.regexp_split_to_table.regr_avgx.regr_avgy.regr_count.regr_intercept.regr_r2.regr_slope.regr_sxx.regr_sxy.regr_syy.right.row_security_active.row_to_json.rpad.scale.set_masklen.setseed.setval.setweight.shobj_description.sind.sprintf.statement_timestamp.stddev.string_agg.string_to_array.strip.substr.table_to_xml.table_to_xml_and_xmlschema.tand.text.to_json.to_regclass.to_regnamespace.to_regoper.to_regoperator.to_regproc.to_regprocedure.to_regrole.to_regtype.to_tsquery.to_tsvector.transaction_timestamp.ts_debug.ts_delete.ts_filter.ts_headline.ts_lexize.ts_parse.ts_rank.ts_rank_cd.ts_rewrite.ts_stat.ts_token_type.tsquery_phrase.tsvector_to_array.tsvector_update_trigger.tsvector_update_trigger_column.txid_current.txid_current_snapshot.txid_snapshot_xip.txid_snapshot_xmax.txid_snapshot_xmin.txid_visible_in_snapshot.unnest.upper_inc.upper_inf.variance.width.width_bucket.xml_is_well_formed.xml_is_well_formed_content.xml_is_well_formed_document.xmlagg.xmlcomment.xmlconcat.xmlelement.xmlexists.xmlforest.xmlparse.xmlpi.xmlroot.xmlserialize.xpath.xpath_exists`.split(`.`),builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:`@comments`},{include:`@whitespace`},{include:`@pseudoColumns`},{include:`@numbers`},{include:`@strings`},{include:`@complexIdentifiers`},{include:`@scopes`},[/[;,.]/,`delimiter`],[/[()]/,`@brackets`],[/[\w@#$]+/,{cases:{"@keywords":`keyword`,"@operators":`operator`,"@builtinVariables":`predefined`,"@builtinFunctions":`predefined`,"@default":`identifier`}}],[/[<>=!%&+\-*/|~^]/,`operator`]],whitespace:[[/\s+/,`white`]],comments:[[/--+.*/,`comment`],[/\/\*/,{token:`comment.quote`,next:`@comment`}]],comment:[[/[^*/]+/,`comment`],[/\*\//,{token:`comment.quote`,next:`@pop`}],[/./,`comment`]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":`predefined`,"@default":`identifier`}}]],numbers:[[/0[xX][0-9a-fA-F]*/,`number`],[/[$][+-]*\d*(\.\d*)?/,`number`],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,`number`]],strings:[[/'/,{token:`string`,next:`@string`}]],string:[[/[^']+/,`string`],[/''/,`string`],[/'/,{token:`string`,next:`@pop`}]],complexIdentifiers:[[/"/,{token:`identifier.quote`,next:`@quotedIdentifier`}]],quotedIdentifier:[[/[^"]+/,`identifier`],[/""/,`identifier`],[/"/,{token:`identifier.quote`,next:`@pop`}]],scopes:[]}};export{e as conf,t as language};
@@ -0,0 +1 @@
1
+ var e={brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`<`,close:`>`,notIn:[`string`]}],surroundingPairs:[{open:`(`,close:`)`},{open:`[`,close:`]`},{open:"`",close:"`"}],folding:{markers:{start:RegExp(`^\\s*<!--\\s*#?region\\b.*-->`),end:RegExp(`^\\s*<!--\\s*#?endregion\\b.*-->`)}}},t={defaultToken:``,tokenPostfix:`.rst`,control:/[\\`*_\[\]{}()#+\-\.!]/,escapes:/\\(?:@control)/,empty:[`area`,`base`,`basefont`,`br`,`col`,`frame`,`hr`,`img`,`input`,`isindex`,`link`,`meta`,`param`],alphanumerics:/[A-Za-z0-9]/,simpleRefNameWithoutBq:/(?:@alphanumerics[-_+:.]*@alphanumerics)+|(?:@alphanumerics+)/,simpleRefName:/(?:`@phrase`|@simpleRefNameWithoutBq)/,phrase:/@simpleRefNameWithoutBq(?:\s@simpleRefNameWithoutBq)*/,citationName:/[A-Za-z][A-Za-z0-9-_.]*/,blockLiteralStart:/(?:[!"#$%&'()*+,-./:;<=>?@\[\]^_`{|}~]|[\s])/,precedingChars:/(?:[ -:/'"<([{])/,followingChars:/(?:[ -.,:;!?/'")\]}>]|$)/,punctuation:/(=|-|~|`|#|"|\^|\+|\*|:|\.|'|_|\+)/,tokenizer:{root:[[/^(@punctuation{3,}$){1,1}?/,`keyword`],[/^\s*([\*\-+‣•]|[a-zA-Z0-9]+\.|\([a-zA-Z0-9]+\)|[a-zA-Z0-9]+\))\s/,`keyword`],[/([ ]::)\s*$/,`keyword`,`@blankLineOfLiteralBlocks`],[/(::)\s*$/,`keyword`,`@blankLineOfLiteralBlocks`],{include:`@tables`},{include:`@explicitMarkupBlocks`},{include:`@inlineMarkup`}],explicitMarkupBlocks:[{include:`@citations`},{include:`@footnotes`},[/^(\.\.\s)(@simpleRefName)(::\s)(.*)$/,[{token:``,next:`subsequentLines`},`keyword`,``,``]],[/^(\.\.)(\s+)(_)(@simpleRefName)(:)(\s+)(.*)/,[{token:``,next:`hyperlinks`},``,``,`string.link`,``,``,`string.link`]],[/^((?:(?:\.\.)(?:\s+))?)(__)(:)(\s+)(.*)/,[{token:``,next:`subsequentLines`},``,``,``,`string.link`]],[/^(__\s+)(.+)/,[``,`string.link`]],[/^(\.\.)( \|)([^| ]+[^|]*[^| ]*)(\| )(@simpleRefName)(:: .*)/,[{token:``,next:`subsequentLines`},``,`string.link`,``,`keyword`,``],`@rawBlocks`],[/(\|)([^| ]+[^|]*[^| ]*)(\|_{0,2})/,[``,`string.link`,``]],[/^(\.\.)([ ].*)$/,[{token:``,next:`@comments`},`comment`]]],inlineMarkup:[{include:`@citationsReference`},{include:`@footnotesReference`},[/(@simpleRefName)(_{1,2})/,[`string.link`,``]],[/(`)([^<`]+\s+)(<)(.*)(>)(`)(_)/,[``,`string.link`,``,`string.link`,``,``,``]],[/\*\*([^\\*]|\*(?!\*))+\*\*/,`strong`],[/\*[^*]+\*/,`emphasis`],[/(``)((?:[^`]|\`(?!`))+)(``)/,[``,`keyword`,``]],[/(__\s+)(.+)/,[``,`keyword`]],[/(:)((?:@simpleRefNameWithoutBq)?)(:`)([^`]+)(`)/,[``,`keyword`,``,``,``]],[/(`)([^`]+)(`:)((?:@simpleRefNameWithoutBq)?)(:)/,[``,``,``,`keyword`,``]],[/(`)([^`]+)(`)/,``],[/(_`)(@phrase)(`)/,[``,`string.link`,``]]],citations:[[/^(\.\.\s+\[)((?:@citationName))(\]\s+)(.*)/,[{token:``,next:`@subsequentLines`},`string.link`,``,``]]],citationsReference:[[/(\[)(@citationName)(\]_)/,[``,`string.link`,``]]],footnotes:[[/^(\.\.\s+\[)((?:[0-9]+))(\]\s+.*)/,[{token:``,next:`@subsequentLines`},`string.link`,``]],[/^(\.\.\s+\[)((?:#@simpleRefName?))(\]\s+)(.*)/,[{token:``,next:`@subsequentLines`},`string.link`,``,``]],[/^(\.\.\s+\[)((?:\*))(\]\s+)(.*)/,[{token:``,next:`@subsequentLines`},`string.link`,``,``]]],footnotesReference:[[/(\[)([0-9]+)(\])(_)/,[``,`string.link`,``,``]],[/(\[)(#@simpleRefName?)(\])(_)/,[``,`string.link`,``,``]],[/(\[)(\*)(\])(_)/,[``,`string.link`,``,``]]],blankLineOfLiteralBlocks:[[/^$/,``,`@subsequentLinesOfLiteralBlocks`],[/^.*$/,``,`@pop`]],subsequentLinesOfLiteralBlocks:[[/(@blockLiteralStart+)(.*)/,[`keyword`,``]],[/^(?!blockLiteralStart)/,``,`@popall`]],subsequentLines:[[/^[\s]+.*/,``],[/^(?!\s)/,``,`@pop`]],hyperlinks:[[/^[\s]+.*/,`string.link`],[/^(?!\s)/,``,`@pop`]],comments:[[/^[\s]+.*/,`comment`],[/^(?!\s)/,``,`@pop`]],tables:[[/\+-[+-]+/,`keyword`],[/\+=[+=]+/,`keyword`]]}};export{e as conf,t as language};
@@ -0,0 +1 @@
1
+ var e={comments:{lineComment:`#`,blockComment:[`=begin`,`=end`]},brackets:[[`(`,`)`],[`{`,`}`],[`[`,`]`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],indentationRules:{increaseIndentPattern:RegExp(`^\\s*((begin|class|(private|protected)\\s+def|def|else|elsif|ensure|for|if|module|rescue|unless|until|when|while|case)|([^#]*\\sdo\\b)|([^#]*=\\s*(case|if|unless)))\\b([^#\\{;]|("|'|/).*\\4)*(#.*)?$`),decreaseIndentPattern:RegExp(`^\\s*([}\\]]([,)]?\\s*(#|$)|\\.[a-zA-Z_]\\w*\\b)|(end|rescue|ensure|else|elsif|when)\\b)`)}},t={tokenPostfix:`.ruby`,keywords:`__LINE__.__ENCODING__.__FILE__.BEGIN.END.alias.and.begin.break.case.class.def.defined?.do.else.elsif.end.ensure.for.false.if.in.module.next.nil.not.or.redo.rescue.retry.return.self.super.then.true.undef.unless.until.when.while.yield`.split(`.`),keywordops:[`::`,`..`,`...`,`?`,`:`,`=>`],builtins:[`require`,`public`,`private`,`include`,`extend`,`attr_reader`,`protected`,`private_class_method`,`protected_class_method`,`new`],declarations:[`module`,`class`,`def`,`case`,`do`,`begin`,`for`,`if`,`while`,`until`,`unless`],linedecls:[`def`,`case`,`do`,`begin`,`for`,`if`,`while`,`until`,`unless`],operators:"^.&.|.<=>.==.===.!~.=~.>.>=.<.<=.<<.>>.+.-.*./.%.**.~.+@.-@.[].[]=.`.+=.-=.*=.**=./=.^=.%=.<<=.>>=.&=.&&=.||=.|=".split(`.`),brackets:[{open:`(`,close:`)`,token:`delimiter.parenthesis`},{open:`{`,close:`}`,token:`delimiter.curly`},{open:`[`,close:`]`,token:`delimiter.square`}],symbols:/[=><!~?:&|+\-*\/\^%\.]+/,escape:/(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,escapes:/\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,decpart:/\d(_?\d)*/,decimal:/0|@decpart/,delim:/[^a-zA-Z0-9\s\n\r]/,heredelim:/(?:\w+|'[^']*'|"[^"]*"|`[^`]*`)/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[AzZbBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})?/,tokenizer:{root:[[/^(\s*)([a-z_]\w*[!?=]?)/,[`white`,{cases:{"for|until|while":{token:`keyword.$2`,next:`@dodecl.$2`},"@declarations":{token:`keyword.$2`,next:`@root.$2`},end:{token:`keyword.$S2`,next:`@pop`},"@keywords":`keyword`,"@builtins":`predefined`,"@default":`identifier`}}]],[/[a-z_]\w*[!?=]?/,{cases:{"if|unless|while|until":{token:`keyword.$0x`,next:`@modifier.$0x`},for:{token:`keyword.$2`,next:`@dodecl.$2`},"@linedecls":{token:`keyword.$0`,next:`@root.$0`},end:{token:`keyword.$S2`,next:`@pop`},"@keywords":`keyword`,"@builtins":`predefined`,"@default":`identifier`}}],[/[A-Z][\w]*[!?=]?/,`constructor.identifier`],[/\$[\w]*/,`global.constant`],[/@[\w]*/,`namespace.instance.identifier`],[/@@@[\w]*/,`namespace.class.identifier`],[/<<[-~](@heredelim).*/,{token:`string.heredoc.delimiter`,next:`@heredoc.$1`}],[/[ \t\r\n]+<<(@heredelim).*/,{token:`string.heredoc.delimiter`,next:`@heredoc.$1`}],[/^<<(@heredelim).*/,{token:`string.heredoc.delimiter`,next:`@heredoc.$1`}],{include:`@whitespace`},[/"/,{token:`string.d.delim`,next:`@dstring.d."`}],[/'/,{token:`string.sq.delim`,next:`@sstring.sq`}],[/%([rsqxwW]|Q?)/,{token:`@rematch`,next:`pstring`}],[/`/,{token:`string.x.delim`,next:"@dstring.x.`"}],[/:(\w|[$@])\w*[!?=]?/,`string.s`],[/:"/,{token:`string.s.delim`,next:`@dstring.s."`}],[/:'/,{token:`string.s.delim`,next:`@sstring.s`}],[/\/(?=(\\\/|[^\/\n])+\/)/,{token:`regexp.delim`,next:`@regexp`}],[/[{}()\[\]]/,`@brackets`],[/@symbols/,{cases:{"@keywordops":`keyword`,"@operators":`operator`,"@default":``}}],[/[;,]/,`delimiter`],[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/,`number.hex`],[/0[_oO][0-7](_?[0-7])*/,`number.octal`],[/0[bB][01](_?[01])*/,`number.binary`],[/0[dD]@decpart/,`number`],[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)/,{cases:{$1:`number.float`,"@default":`number`}}]],dodecl:[[/^/,{token:``,switchTo:`@root.$S2`}],[/[a-z_]\w*[!?=]?/,{cases:{end:{token:`keyword.$S2`,next:`@pop`},do:{token:`keyword`,switchTo:`@root.$S2`},"@linedecls":{token:`@rematch`,switchTo:`@root.$S2`},"@keywords":`keyword`,"@builtins":`predefined`,"@default":`identifier`}}],{include:`@root`}],modifier:[[/^/,``,`@pop`],[/[a-z_]\w*[!?=]?/,{cases:{end:{token:`keyword.$S2`,next:`@pop`},"then|else|elsif|do":{token:`keyword`,switchTo:`@root.$S2`},"@linedecls":{token:`@rematch`,switchTo:`@root.$S2`},"@keywords":`keyword`,"@builtins":`predefined`,"@default":`identifier`}}],{include:`@root`}],sstring:[[/[^\\']+/,`string.$S2`],[/\\\\|\\'|\\$/,`string.$S2.escape`],[/\\./,`string.$S2.invalid`],[/'/,{token:`string.$S2.delim`,next:`@pop`}]],dstring:[[/[^\\`"#]+/,`string.$S2`],[/#/,`string.$S2.escape`,`@interpolated`],[/\\$/,`string.$S2.escape`],[/@escapes/,`string.$S2.escape`],[/\\./,`string.$S2.escape.invalid`],[/[`"]/,{cases:{"$#==$S3":{token:`string.$S2.delim`,next:`@pop`},"@default":`string.$S2`}}]],heredoc:[[/^(\s*)(@heredelim)$/,{cases:{"$2==$S2":[`string.heredoc`,{token:`string.heredoc.delimiter`,next:`@pop`}],"@default":[`string.heredoc`,`string.heredoc`]}}],[/.*/,`string.heredoc`]],interpolated:[[/\$\w*/,`global.constant`,`@pop`],[/@\w*/,`namespace.class.identifier`,`@pop`],[/@@@\w*/,`namespace.instance.identifier`,`@pop`],[/[{]/,{token:`string.escape.curly`,switchTo:`@interpolated_compound`}],[``,``,`@pop`]],interpolated_compound:[[/[}]/,{token:`string.escape.curly`,next:`@pop`}],{include:`@root`}],pregexp:[{include:`@whitespace`},[/[^\(\{\[\\]/,{cases:{"$#==$S3":{token:`regexp.delim`,next:`@pop`},"$#==$S2":{token:`regexp.delim`,next:`@push`},"~[)}\\]]":`@brackets.regexp.escape.control`,"~@regexpctl":`regexp.escape.control`,"@default":`regexp`}}],{include:`@regexcontrol`}],regexp:[{include:`@regexcontrol`},[/[^\\\/]/,`regexp`],[`/[ixmp]*`,{token:`regexp.delim`},`@pop`]],regexcontrol:[[/(\{)(\d+(?:,\d*)?)(\})/,[`@brackets.regexp.escape.control`,`regexp.escape.control`,`@brackets.regexp.escape.control`]],[/(\[)(\^?)/,[`@brackets.regexp.escape.control`,{token:`regexp.escape.control`,next:`@regexrange`}]],[/(\()(\?[:=!])/,[`@brackets.regexp.escape.control`,`regexp.escape.control`]],[/\(\?#/,{token:`regexp.escape.control`,next:`@regexpcomment`}],[/[()]/,`@brackets.regexp.escape.control`],[/@regexpctl/,`regexp.escape.control`],[/\\$/,`regexp.escape`],[/@regexpesc/,`regexp.escape`],[/\\\./,`regexp.invalid`],[/#/,`regexp.escape`,`@interpolated`]],regexrange:[[/-/,`regexp.escape.control`],[/\^/,`regexp.invalid`],[/\\$/,`regexp.escape`],[/@regexpesc/,`regexp.escape`],[/[^\]]/,`regexp`],[/\]/,`@brackets.regexp.escape.control`,`@pop`]],regexpcomment:[[/[^)]+/,`comment`],[/\)/,{token:`regexp.escape.control`,next:`@pop`}]],pstring:[[/%([qws])\(/,{token:`string.$1.delim`,switchTo:`@qstring.$1.(.)`}],[/%([qws])\[/,{token:`string.$1.delim`,switchTo:`@qstring.$1.[.]`}],[/%([qws])\{/,{token:`string.$1.delim`,switchTo:`@qstring.$1.{.}`}],[/%([qws])</,{token:`string.$1.delim`,switchTo:`@qstring.$1.<.>`}],[/%([qws])(@delim)/,{token:`string.$1.delim`,switchTo:`@qstring.$1.$2.$2`}],[/%r\(/,{token:`regexp.delim`,switchTo:`@pregexp.(.)`}],[/%r\[/,{token:`regexp.delim`,switchTo:`@pregexp.[.]`}],[/%r\{/,{token:`regexp.delim`,switchTo:`@pregexp.{.}`}],[/%r</,{token:`regexp.delim`,switchTo:`@pregexp.<.>`}],[/%r(@delim)/,{token:`regexp.delim`,switchTo:`@pregexp.$1.$1`}],[/%(x|W|Q?)\(/,{token:`string.$1.delim`,switchTo:`@qqstring.$1.(.)`}],[/%(x|W|Q?)\[/,{token:`string.$1.delim`,switchTo:`@qqstring.$1.[.]`}],[/%(x|W|Q?)\{/,{token:`string.$1.delim`,switchTo:`@qqstring.$1.{.}`}],[/%(x|W|Q?)</,{token:`string.$1.delim`,switchTo:`@qqstring.$1.<.>`}],[/%(x|W|Q?)(@delim)/,{token:`string.$1.delim`,switchTo:`@qqstring.$1.$2.$2`}],[/%([rqwsxW]|Q?)./,{token:`invalid`,next:`@pop`}],[/./,{token:`invalid`,next:`@pop`}]],qstring:[[/\\$/,`string.$S2.escape`],[/\\./,`string.$S2.escape`],[/./,{cases:{"$#==$S4":{token:`string.$S2.delim`,next:`@pop`},"$#==$S3":{token:`string.$S2.delim`,next:`@push`},"@default":`string.$S2`}}]],qqstring:[[/#/,`string.$S2.escape`,`@interpolated`],{include:`@qstring`}],whitespace:[[/[ \t\r\n]+/,``],[/^\s*=begin\b/,`comment`,`@comment`],[/#.*$/,`comment`]],comment:[[/[^=]+/,`comment`],[/^\s*=begin\b/,`comment.invalid`],[/^\s*=end\b.*/,`comment`,`@pop`],[/[=]/,`comment`]]}};export{e as conf,t as language};
@@ -0,0 +1 @@
1
+ var e={comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`[`,close:`]`},{open:`{`,close:`}`},{open:`(`,close:`)`},{open:`"`,close:`"`,notIn:[`string`]}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],folding:{markers:{start:RegExp(`^\\s*#pragma\\s+region\\b`),end:RegExp(`^\\s*#pragma\\s+endregion\\b`)}}},t={tokenPostfix:`.rust`,defaultToken:`invalid`,keywords:`as.async.await.box.break.const.continue.crate.dyn.else.enum.extern.false.fn.for.if.impl.in.let.loop.match.mod.move.mut.pub.ref.return.self.static.struct.super.trait.true.try.type.unsafe.use.where.while.catch.default.union.static.abstract.alignof.become.do.final.macro.offsetof.override.priv.proc.pure.sizeof.typeof.unsized.virtual.yield`.split(`.`),typeKeywords:`Self.m32.m64.m128.f80.f16.f128.int.uint.float.char.bool.u8.u16.u32.u64.f32.f64.i8.i16.i32.i64.str.Option.Either.c_float.c_double.c_void.FILE.fpos_t.DIR.dirent.c_char.c_schar.c_uchar.c_short.c_ushort.c_int.c_uint.c_long.c_ulong.size_t.ptrdiff_t.clock_t.time_t.c_longlong.c_ulonglong.intptr_t.uintptr_t.off_t.dev_t.ino_t.pid_t.mode_t.ssize_t`.split(`.`),constants:[`true`,`false`,`Some`,`None`,`Left`,`Right`,`Ok`,`Err`],supportConstants:`EXIT_FAILURE.EXIT_SUCCESS.RAND_MAX.EOF.SEEK_SET.SEEK_CUR.SEEK_END._IOFBF._IONBF._IOLBF.BUFSIZ.FOPEN_MAX.FILENAME_MAX.L_tmpnam.TMP_MAX.O_RDONLY.O_WRONLY.O_RDWR.O_APPEND.O_CREAT.O_EXCL.O_TRUNC.S_IFIFO.S_IFCHR.S_IFBLK.S_IFDIR.S_IFREG.S_IFMT.S_IEXEC.S_IWRITE.S_IREAD.S_IRWXU.S_IXUSR.S_IWUSR.S_IRUSR.F_OK.R_OK.W_OK.X_OK.STDIN_FILENO.STDOUT_FILENO.STDERR_FILENO`.split(`.`),supportMacros:[`format!`,`print!`,`println!`,`panic!`,`format_args!`,`unreachable!`,`write!`,`writeln!`],operators:`!,!=,%,%=,&,&=,&&,*,*=,+,+=,-,-=,->,.,..,...,/,/=,:,;,<<,<<=,<,<=,=,==,=>,>,>=,>>,>>=,@,^,^=,|,|=,||,_,?,#`.split(`,`),escapes:/\\([nrt0\"''\\]|x\h{2}|u\{\h{1,6}\})/,delimiters:/[,]/,symbols:/[\#\!\%\&\*\+\-\.\/\:\;\<\=\>\@\^\|_\?]+/,intSuffixes:/[iu](8|16|32|64|128|size)/,floatSuffixes:/f(32|64)/,tokenizer:{root:[[/r(#*)"/,{token:`string.quote`,bracket:`@open`,next:`@stringraw.$1`}],[/[a-zA-Z][a-zA-Z0-9_]*!?|_[a-zA-Z0-9_]+/,{cases:{"@typeKeywords":`keyword.type`,"@keywords":`keyword`,"@supportConstants":`keyword`,"@supportMacros":`keyword`,"@constants":`keyword`,"@default":`identifier`}}],[/\$/,`identifier`],[/'[a-zA-Z_][a-zA-Z0-9_]*(?=[^\'])/,`identifier`],[/'(\S|@escapes)'/,`string.byteliteral`],[/"/,{token:`string.quote`,bracket:`@open`,next:`@string`}],{include:`@numbers`},{include:`@whitespace`},[/@delimiters/,{cases:{"@keywords":`keyword`,"@default":`delimiter`}}],[/[{}()\[\]<>]/,`@brackets`],[/@symbols/,{cases:{"@operators":`operator`,"@default":``}}]],whitespace:[[/[ \t\r\n]+/,`white`],[/\/\*/,`comment`,`@comment`],[/\/\/.*$/,`comment`]],comment:[[/[^\/*]+/,`comment`],[/\/\*/,`comment`,`@push`],[`\\*/`,`comment`,`@pop`],[/[\/*]/,`comment`]],string:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,{token:`string.quote`,bracket:`@close`,next:`@pop`}]],stringraw:[[/[^"#]+/,{token:`string`}],[/"(#*)/,{cases:{"$1==$S2":{token:`string.quote`,bracket:`@close`,next:`@pop`},"@default":{token:`string`}}}],[/["#]/,{token:`string`}]],numbers:[[/(0o[0-7_]+)(@intSuffixes)?/,{token:`number`}],[/(0b[0-1_]+)(@intSuffixes)?/,{token:`number`}],[/[\d][\d_]*(\.[\d][\d_]*)?[eE][+-][\d_]+(@floatSuffixes)?/,{token:`number`}],[/\b(\d\.?[\d_]*)(@floatSuffixes)?\b/,{token:`number`}],[/(0x[\da-fA-F]+)_?(@intSuffixes)?/,{token:`number`}],[/[\d][\d_]*(@intSuffixes?)?/,{token:`number`}]]}};export{e as conf,t as language};
@@ -0,0 +1 @@
1
+ var e={comments:{lineComment:`'`},brackets:[[`(`,`)`],[`[`,`]`],[`If`,`EndIf`],[`While`,`EndWhile`],[`For`,`EndFor`],[`Sub`,`EndSub`]],autoClosingPairs:[{open:`"`,close:`"`,notIn:[`string`,`comment`]},{open:`(`,close:`)`,notIn:[`string`,`comment`]},{open:`[`,close:`]`,notIn:[`string`,`comment`]}]},t={defaultToken:``,tokenPostfix:`.sb`,ignoreCase:!0,brackets:[{token:`delimiter.array`,open:`[`,close:`]`},{token:`delimiter.parenthesis`,open:`(`,close:`)`},{token:`keyword.tag-if`,open:`If`,close:`EndIf`},{token:`keyword.tag-while`,open:`While`,close:`EndWhile`},{token:`keyword.tag-for`,open:`For`,close:`EndFor`},{token:`keyword.tag-sub`,open:`Sub`,close:`EndSub`}],keywords:[`Else`,`ElseIf`,`EndFor`,`EndIf`,`EndSub`,`EndWhile`,`For`,`Goto`,`If`,`Step`,`Sub`,`Then`,`To`,`While`],tagwords:[`If`,`Sub`,`While`,`For`],operators:[`>`,`<`,`<>`,`<=`,`>=`,`And`,`Or`,`+`,`-`,`*`,`/`,`=`],identifier:/[a-zA-Z_][\w]*/,symbols:/[=><:+\-*\/%\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:`@whitespace`},[/(@identifier)(?=[.])/,`type`],[/@identifier/,{cases:{"@keywords":{token:`keyword.$0`},"@operators":`operator`,"@default":`variable.name`}}],[/([.])(@identifier)/,{cases:{$2:[`delimiter`,`type.member`],"@default":``}}],[/\d*\.\d+/,`number.float`],[/\d+/,`number`],[/[()\[\]]/,`@brackets`],[/@symbols/,{cases:{"@operators":`operator`,"@default":`delimiter`}}],[/"([^"\\]|\\.)*$/,`string.invalid`],[/"/,`string`,`@string`]],whitespace:[[/[ \t\r\n]+/,``],[/(\').*$/,`comment`]],string:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"C?/,`string`,`@pop`]]}};export{e as conf,t as language};
@@ -0,0 +1 @@
1
+ var e={wordPattern:/(unary_[@~!#%^&*()\-=+\\|:<>\/?]+)|([a-zA-Z_$][\w$]*?_=)|(`[^`]+`)|([a-zA-Z_$][\w$]*)/g,comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],folding:{markers:{start:RegExp(`^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))`),end:RegExp(`^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))`)}}},t={tokenPostfix:`.scala`,keywords:`asInstanceOf.catch.class.classOf.def.do.else.extends.finally.for.foreach.forSome.if.import.isInstanceOf.macro.match.new.object.package.return.throw.trait.try.type.until.val.var.while.with.yield.given.enum.then`.split(`.`),softKeywords:[`as`,`export`,`extension`,`end`,`derives`,`on`],constants:[`true`,`false`,`null`,`this`,`super`],modifiers:[`abstract`,`final`,`implicit`,`lazy`,`override`,`private`,`protected`,`sealed`],softModifiers:[`inline`,`opaque`,`open`,`transparent`,`using`],name:/(?:[a-z_$][\w$]*|`[^`]+`)/,type:/(?:[A-Z][\w$]*)/,symbols:/[=><!~?:&|+\-*\/^\\%@#]+/,digits:/\d+(_+\d+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,escapes:/\\(?:[btnfr\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,fstring_conv:/[bBhHsScCdoxXeEfgGaAt]|[Tn](?:[HIklMSLNpzZsQ]|[BbhAaCYyjmde]|[RTrDFC])/,tokenizer:{root:[[/\braw"""/,{token:`string.quote`,bracket:`@open`,next:`@rawstringt`}],[/\braw"/,{token:`string.quote`,bracket:`@open`,next:`@rawstring`}],[/\bs"""/,{token:`string.quote`,bracket:`@open`,next:`@sstringt`}],[/\bs"/,{token:`string.quote`,bracket:`@open`,next:`@sstring`}],[/\bf""""/,{token:`string.quote`,bracket:`@open`,next:`@fstringt`}],[/\bf"/,{token:`string.quote`,bracket:`@open`,next:`@fstring`}],[/"""/,{token:`string.quote`,bracket:`@open`,next:`@stringt`}],[/"/,{token:`string.quote`,bracket:`@open`,next:`@string`}],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,`number.float`,`@allowMethod`],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,`number.float`,`@allowMethod`],[/0[xX](@hexdigits)[Ll]?/,`number.hex`,`@allowMethod`],[/(@digits)[fFdD]/,`number.float`,`@allowMethod`],[/(@digits)[lL]?/,`number`,`@allowMethod`],[/\b_\*/,`key`],[/\b(_)\b/,`keyword`,`@allowMethod`],[/\bimport\b/,`keyword`,`@import`],[/\b(case)([ \t]+)(class)\b/,[`keyword.modifier`,`white`,`keyword`]],[/\bcase\b/,`keyword`,`@case`],[/\bva[lr]\b/,`keyword`,`@vardef`],[/\b(def)([ \t]+)((?:unary_)?@symbols|@name(?:_=)|@name)/,[`keyword`,`white`,`identifier`]],[/@name(?=[ \t]*:(?!:))/,`variable`],[/(\.)(@name|@symbols)/,[`operator`,{token:`@rematch`,next:`@allowMethod`}]],[/([{(])(\s*)(@name(?=\s*=>))/,[`@brackets`,`white`,`variable`]],[/@name/,{cases:{"@keywords":`keyword`,"@softKeywords":`keyword`,"@modifiers":`keyword.modifier`,"@softModifiers":`keyword.modifier`,"@constants":{token:`constant`,next:`@allowMethod`},"@default":{token:`identifier`,next:`@allowMethod`}}}],[/@type/,`type`,`@allowMethod`],{include:`@whitespace`},[/@[a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*/,`annotation`],[/[{(]/,`@brackets`],[/[})]/,`@brackets`,`@allowMethod`],[/\[/,`operator.square`],[/](?!\s*(?:va[rl]|def|type)\b)/,`operator.square`,`@allowMethod`],[/]/,`operator.square`],[/([=-]>|<-|>:|<:|:>|<%)(?=[\s\w()[\]{},\."'`])/,`keyword`],[/@symbols/,`operator`],[/[;,\.]/,`delimiter`],[/'[a-zA-Z$][\w$]*(?!')/,`attribute.name`],[/'[^\\']'/,`string`,`@allowMethod`],[/(')(@escapes)(')/,[`string`,`string.escape`,{token:`string`,next:`@allowMethod`}]],[/'/,`string.invalid`]],import:[[/;/,`delimiter`,`@pop`],[/^|$/,``,`@pop`],[/[ \t]+/,`white`],[/[\n\r]+/,`white`,`@pop`],[/\/\*/,`comment`,`@comment`],[/@name|@type/,`type`],[/[(){}]/,`@brackets`],[/[[\]]/,`operator.square`],[/[\.,]/,`delimiter`]],allowMethod:[[/^|$/,``,`@pop`],[/[ \t]+/,`white`],[/[\n\r]+/,`white`,`@pop`],[/\/\*/,`comment`,`@comment`],[/(?==>[\s\w([{])/,`keyword`,`@pop`],[/(@name|@symbols)(?=[ \t]*[[({"'`]|[ \t]+(?:[+-]?\.?\d|\w))/,{cases:{"@keywords":{token:`keyword`,next:`@pop`},"->|<-|>:|<:|<%":{token:`keyword`,next:`@pop`},"@default":{token:`@rematch`,next:`@pop`}}}],[``,``,`@pop`]],comment:[[/[^\/*]+/,`comment`],[/\/\*/,`comment`,`@push`],[/\*\//,`comment`,`@pop`],[/[\/*]/,`comment`]],case:[[/\b_\*/,`key`],[/\b(_|true|false|null|this|super)\b/,`keyword`,`@allowMethod`],[/\bif\b|=>/,`keyword`,`@pop`],[/`[^`]+`/,`identifier`,`@allowMethod`],[/@name/,`variable`,`@allowMethod`],[/:::?|\||@(?![a-z_$])/,`keyword`],{include:`@root`}],vardef:[[/\b_\*/,`key`],[/\b(_|true|false|null|this|super)\b/,`keyword`],[/@name/,`variable`],[/:::?|\||@(?![a-z_$])/,`keyword`],[/=|:(?!:)/,`operator`,`@pop`],[/$/,`white`,`@pop`],{include:`@root`}],string:[[/[^\\"\n\r]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,{token:`string.quote`,bracket:`@close`,switchTo:`@allowMethod`}]],stringt:[[/[^\\"\n\r]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"(?=""")/,`string`],[/"""/,{token:`string.quote`,bracket:`@close`,switchTo:`@allowMethod`}],[/"/,`string`]],fstring:[[/@escapes/,`string.escape`],[/"/,{token:`string.quote`,bracket:`@close`,switchTo:`@allowMethod`}],[/\$\$/,`string`],[/(\$)([a-z_]\w*)/,[`operator`,`identifier`]],[/\$\{/,`operator`,`@interp`],[/%%/,`string`],[/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,[`metatag`,`keyword.modifier`,`number`,`metatag`]],[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,[`metatag`,`number`,`metatag`]],[/(%)([\-#+ 0,(])(@fstring_conv)/,[`metatag`,`keyword.modifier`,`metatag`]],[/(%)(@fstring_conv)/,[`metatag`,`metatag`]],[/./,`string`]],fstringt:[[/@escapes/,`string.escape`],[/"(?=""")/,`string`],[/"""/,{token:`string.quote`,bracket:`@close`,switchTo:`@allowMethod`}],[/\$\$/,`string`],[/(\$)([a-z_]\w*)/,[`operator`,`identifier`]],[/\$\{/,`operator`,`@interp`],[/%%/,`string`],[/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,[`metatag`,`keyword.modifier`,`number`,`metatag`]],[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,[`metatag`,`number`,`metatag`]],[/(%)([\-#+ 0,(])(@fstring_conv)/,[`metatag`,`keyword.modifier`,`metatag`]],[/(%)(@fstring_conv)/,[`metatag`,`metatag`]],[/./,`string`]],sstring:[[/@escapes/,`string.escape`],[/"/,{token:`string.quote`,bracket:`@close`,switchTo:`@allowMethod`}],[/\$\$/,`string`],[/(\$)([a-z_]\w*)/,[`operator`,`identifier`]],[/\$\{/,`operator`,`@interp`],[/./,`string`]],sstringt:[[/@escapes/,`string.escape`],[/"(?=""")/,`string`],[/"""/,{token:`string.quote`,bracket:`@close`,switchTo:`@allowMethod`}],[/\$\$/,`string`],[/(\$)([a-z_]\w*)/,[`operator`,`identifier`]],[/\$\{/,`operator`,`@interp`],[/./,`string`]],interp:[[/{/,`operator`,`@push`],[/}/,`operator`,`@pop`],{include:`@root`}],rawstring:[[/[^"]/,`string`],[/"/,{token:`string.quote`,bracket:`@close`,switchTo:`@allowMethod`}]],rawstringt:[[/[^"]/,`string`],[/"(?=""")/,`string`],[/"""/,{token:`string.quote`,bracket:`@close`,switchTo:`@allowMethod`}],[/"/,`string`]],whitespace:[[/[ \t\r\n]+/,`white`],[/\/\*/,`comment`,`@comment`],[/\/\/.*$/,`comment`]]}};export{e as conf,t as language};
@@ -0,0 +1 @@
1
+ var e={comments:{lineComment:`;`,blockComment:[`#|`,`|#`]},brackets:[[`(`,`)`],[`{`,`}`],[`[`,`]`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`}]},t={defaultToken:``,ignoreCase:!0,tokenPostfix:`.scheme`,brackets:[{open:`(`,close:`)`,token:`delimiter.parenthesis`},{open:`{`,close:`}`,token:`delimiter.curly`},{open:`[`,close:`]`,token:`delimiter.square`}],keywords:[`case`,`do`,`let`,`loop`,`if`,`else`,`when`,`cons`,`car`,`cdr`,`cond`,`lambda`,`lambda*`,`syntax-rules`,`format`,`set!`,`quote`,`eval`,`append`,`list`,`list?`,`member?`,`load`],constants:[`#t`,`#f`],operators:[`eq?`,`eqv?`,`equal?`,`and`,`or`,`not`,`null?`],tokenizer:{root:[[/#[xXoObB][0-9a-fA-F]+/,`number.hex`],[/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/,`number.float`],[/(?:\b(?:(define|define-syntax|define-macro))\b)(\s+)((?:\w|\-|\!|\?)*)/,[`keyword`,`white`,`variable`]],{include:`@whitespace`},{include:`@strings`},[/[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,{cases:{"@keywords":`keyword`,"@constants":`constant`,"@operators":`operators`,"@default":`identifier`}}]],comment:[[/[^\|#]+/,`comment`],[/#\|/,`comment`,`@push`],[/\|#/,`comment`,`@pop`],[/[\|#]/,`comment`]],whitespace:[[/[ \t\r\n]+/,`white`],[/#\|/,`comment`,`@comment`],[/;.*$/,`comment`]],strings:[[/"$/,`string`,`@popall`],[/"(?=.)/,`string`,`@multiLineString`]],multiLineString:[[/[^\\"]+$/,`string`,`@popall`],[/[^\\"]+/,`string`],[/\\./,`string.escape`],[/"/,`string`,`@popall`],[/\\$/,`string`]]}};export{e as conf,t as language};
@@ -0,0 +1,3 @@
1
+ var e={wordPattern:/(#?-?\d*\.\d\w*%?)|([@$#!.:]?[\w-?]+%?)|[@#!.]/g,comments:{blockComment:[`/*`,`*/`],lineComment:`//`},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`,notIn:[`string`,`comment`]},{open:`[`,close:`]`,notIn:[`string`,`comment`]},{open:`(`,close:`)`,notIn:[`string`,`comment`]},{open:`"`,close:`"`,notIn:[`string`,`comment`]},{open:`'`,close:`'`,notIn:[`string`,`comment`]}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],folding:{markers:{start:RegExp(`^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/`),end:RegExp(`^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/`)}}},t={defaultToken:``,tokenPostfix:`.scss`,ws:`[
2
+ \r\f]*`,identifier:`-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*`,brackets:[{open:`{`,close:`}`,token:`delimiter.curly`},{open:`[`,close:`]`,token:`delimiter.bracket`},{open:`(`,close:`)`,token:`delimiter.parenthesis`},{open:`<`,close:`>`,token:`delimiter.angle`}],tokenizer:{root:[{include:`@selector`}],selector:[{include:`@comments`},{include:`@import`},{include:`@variabledeclaration`},{include:`@warndebug`},[`[@](include)`,{token:`keyword`,next:`@includedeclaration`}],[`[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)`,{token:`keyword`,next:`@keyframedeclaration`}],[`[@](page|content|font-face|-moz-document)`,{token:`keyword`}],[`[@](charset|namespace)`,{token:`keyword`,next:`@declarationbody`}],[`[@](function)`,{token:`keyword`,next:`@functiondeclaration`}],[`[@](mixin)`,{token:`keyword`,next:`@mixindeclaration`}],[`url(\\-prefix)?\\(`,{token:`meta`,next:`@urldeclaration`}],{include:`@controlstatement`},{include:`@selectorname`},[`[&\\*]`,`tag`],[`[>\\+,]`,`delimiter`],[`\\[`,{token:`delimiter.bracket`,next:`@selectorattribute`}],[`{`,{token:`delimiter.curly`,next:`@selectorbody`}]],selectorbody:[[`[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))`,`attribute.name`,`@rulevalue`],{include:`@selector`},[`[@](extend)`,{token:`keyword`,next:`@extendbody`}],[`[@](return)`,{token:`keyword`,next:`@declarationbody`}],[`}`,{token:`delimiter.curly`,next:`@pop`}]],selectorname:[[`#{`,{token:`meta`,next:`@variableinterpolation`}],[`(\\.|#(?=[^{])|%|(@identifier)|:)+`,`tag`]],selectorattribute:[{include:`@term`},[`]`,{token:`delimiter.bracket`,next:`@pop`}]],term:[{include:`@comments`},[`url(\\-prefix)?\\(`,{token:`meta`,next:`@urldeclaration`}],{include:`@functioninvocation`},{include:`@numbers`},{include:`@strings`},{include:`@variablereference`},[`(and\\b|or\\b|not\\b)`,`operator`],{include:`@name`},[`([<>=\\+\\-\\*\\/\\^\\|\\~,])`,`operator`],[`,`,`delimiter`],[`!default`,`literal`],[`\\(`,{token:`delimiter.parenthesis`,next:`@parenthizedterm`}]],rulevalue:[{include:`@term`},[`!important`,`literal`],[`;`,`delimiter`,`@pop`],[`{`,{token:`delimiter.curly`,switchTo:`@nestedproperty`}],[`(?=})`,{token:``,next:`@pop`}]],nestedproperty:[[`[*_]?@identifier@ws:`,`attribute.name`,`@rulevalue`],{include:`@comments`},[`}`,{token:`delimiter.curly`,next:`@pop`}]],warndebug:[[`[@](warn|debug)`,{token:`keyword`,next:`@declarationbody`}]],import:[[`[@](import)`,{token:`keyword`,next:`@declarationbody`}]],variabledeclaration:[[`\\$@identifier@ws:`,`variable.decl`,`@declarationbody`]],urldeclaration:[{include:`@strings`},[`[^)\r
3
+ ]+`,`string`],[`\\)`,{token:`meta`,next:`@pop`}]],parenthizedterm:[{include:`@term`},[`\\)`,{token:`delimiter.parenthesis`,next:`@pop`}]],declarationbody:[{include:`@term`},[`;`,`delimiter`,`@pop`],[`(?=})`,{token:``,next:`@pop`}]],extendbody:[{include:`@selectorname`},[`!optional`,`literal`],[`;`,`delimiter`,`@pop`],[`(?=})`,{token:``,next:`@pop`}]],variablereference:[[`\\$@identifier`,`variable.ref`],[`\\.\\.\\.`,`operator`],[`#{`,{token:`meta`,next:`@variableinterpolation`}]],variableinterpolation:[{include:`@variablereference`},[`}`,{token:`meta`,next:`@pop`}]],comments:[[`\\/\\*`,`comment`,`@comment`],[`\\/\\/+.*`,`comment`]],comment:[[`\\*\\/`,`comment`,`@pop`],[`.`,`comment`]],name:[[`@identifier`,`attribute.value`]],numbers:[[`(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?`,{token:`number`,next:`@units`}],[`#[0-9a-fA-F_]+(?!\\w)`,`number.hex`]],units:[[`(em|ex|ch|rem|fr|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?`,`number`,`@pop`]],functiondeclaration:[[`@identifier@ws\\(`,{token:`meta`,next:`@parameterdeclaration`}],[`{`,{token:`delimiter.curly`,switchTo:`@functionbody`}]],mixindeclaration:[[`@identifier@ws\\(`,{token:`meta`,next:`@parameterdeclaration`}],[`@identifier`,`meta`],[`{`,{token:`delimiter.curly`,switchTo:`@selectorbody`}]],parameterdeclaration:[[`\\$@identifier@ws:`,`variable.decl`],[`\\.\\.\\.`,`operator`],[`,`,`delimiter`],{include:`@term`},[`\\)`,{token:`meta`,next:`@pop`}]],includedeclaration:[{include:`@functioninvocation`},[`@identifier`,`meta`],[`;`,`delimiter`,`@pop`],[`(?=})`,{token:``,next:`@pop`}],[`{`,{token:`delimiter.curly`,switchTo:`@selectorbody`}]],keyframedeclaration:[[`@identifier`,`meta`],[`{`,{token:`delimiter.curly`,switchTo:`@keyframebody`}]],keyframebody:[{include:`@term`},[`{`,{token:`delimiter.curly`,next:`@selectorbody`}],[`}`,{token:`delimiter.curly`,next:`@pop`}]],controlstatement:[[`[@](if|else|for|while|each|media)`,{token:`keyword.flow`,next:`@controlstatementdeclaration`}]],controlstatementdeclaration:[[`(in|from|through|if|to)\\b`,{token:`keyword.flow`}],{include:`@term`},[`{`,{token:`delimiter.curly`,switchTo:`@selectorbody`}]],functionbody:[[`[@](return)`,{token:`keyword`}],{include:`@variabledeclaration`},{include:`@term`},{include:`@controlstatement`},[`;`,`delimiter`],[`}`,{token:`delimiter.curly`,next:`@pop`}]],functioninvocation:[[`@identifier\\(`,{token:`meta`,next:`@functionarguments`}]],functionarguments:[[`\\$@identifier@ws:`,`attribute.name`],[`[,]`,`delimiter`],{include:`@term`},[`\\)`,{token:`meta`,next:`@pop`}]],strings:[[`~?"`,{token:`string.delimiter`,next:`@stringenddoublequote`}],[`~?'`,{token:`string.delimiter`,next:`@stringendquote`}]],stringenddoublequote:[[`\\\\.`,`string`],[`"`,{token:`string.delimiter`,next:`@pop`}],[`.`,`string`]],stringendquote:[[`\\\\.`,`string`],[`'`,{token:`string.delimiter`,next:`@pop`}],[`.`,`string`]]}};export{e as conf,t as language};
@@ -0,0 +1 @@
1
+ var e={title:`言語`,description:`Desktop 全体の UI 言語。即座に適用され、再起動は不要です。`,selectLabel:`インターフェース言語`,updateFailed:`言語設定を保存できませんでした`},t={title:`プロジェクト設定`},n={saveFailed:`保存に失敗しました: {{message}}`},r={title:`パイプラインテレメトリ`,description:`診断エクスポート用にトークン使用量、フェーズ時間、サブエージェントの活動を記録します。デフォルトはオフです。`,toggleLabel:`パイプラインテレメトリを有効化`,toggleDescription:`オンにすると、パイプラインジョブの OTEL データがローカルに記録されます。ジョブカードの <mono>診断をエクスポート</mono> ボタンからダウンロードできます。`,enabled:`パイプラインテレメトリを有効にしました`,disabled:`パイプラインテレメトリを無効にしました`,saveFailed:`テレメトリ設定の保存に失敗しました`},i={title:`レールのプレプロンプト`,description:`implement と batch-implement のレールジョブで、チケットコンテキストの後・実行前に追加されるプロジェクト固有の指示です。`,label:`プレプロンプト`,placeholder:`例: 段階的な変更を優先し、マイグレーションの後方互換性を保ち、レールの変更ごとにテストを追加すること。`,helper:`すべてのレール実装の実行に常に添えたい、安定したプロジェクト指針に使用してください。`,saveButton:`プレプロンプトを保存`,cleared:`プレプロンプトをクリアしました`,saved:`プレプロンプトを保存しました`,saveFailed:`プレプロンプトの保存に失敗しました`},a={title:`Ultracode プレプロンプト`,description:`Ultracode(Claude 専用レール)で Claude に送られる指示です。Ultracode は OpenSpec パイプラインをスキップし、このプレプロンプトとスペックテキストを Claude に渡して自律的に実装させます。空欄の場合は組み込みのデフォルトを使用します。`,label:`Ultra プレプロンプト`,placeholder:`空欄の場合はデフォルトの Ultracode 指示を使用します。`,helper:`スペックテキストはこのプレプロンプトの後に自動で追加されます。空欄 = デフォルト。`,saveButton:`Ultra プレプロンプトを保存`,resetToDefault:`Ultra プレプロンプトをデフォルトにリセットしました`,saved:`Ultra プレプロンプトを保存しました`,saveFailed:`Ultra プレプロンプトの保存に失敗しました`},o={title:`予算`,description:`このプロジェクトの1日あたりの支出上限を設定します。上限に達するとキューは自動で一時停止します。`,dailyLabel:`日次予算(USD)`,dailyHelper:`無効にするには空欄のままにします。支出は過去24時間で計算されます。`,dailyPlaceholder:`例: 5.00`,perJobLabel:`ジョブ単位のコストアラート(USD)`,perJobHelper:`このプロジェクトの単一ジョブがこの金額を超えたときにアラートします。`,perJobPlaceholder:`例: 0.50`,invalidNumber:`正の数値を入力するか、無効にするには空欄のままにしてください`,dailyRemoved:`日次予算を削除しました`,dailySet:"日次予算を ${{amount}} に設定しました",perJobAlertDisabled:`ジョブ単位のコストアラートを無効にしました`,alertSet:"${{amount}} を超えるジョブにアラートを設定しました",saveBudgetFailed:`予算の保存に失敗しました`,saveThresholdFailed:`しきい値の保存に失敗しました`},s={title:`Desktop 設定`,description:`登録済みプロジェクトの管理と Desktop 情報の表示。`,registeredProjects:`登録済みプロジェクト`,noProjects:`登録されたプロジェクトはまだありません`,techUrlDescription:`specrails-tech API のベース URL(デフォルト: http://localhost:3000)`,techUrlSaved:`specrails-tech の URL を保存しました`,techUrlSaveFailed:`URL の保存に失敗しました`,budgetAlertsHeading:`予算とアラート`,dailyBudgetLabel:`Desktop 日次予算(USD)`,dailyBudgetHelper:`全プロジェクト共通のグローバルな日次支出上限。超過するとキューは自動で一時停止します。`,dailyBudgetPlaceholder:`例: 10.00`,perJobHelper:`単一ジョブがこの金額を超えたときにアラートします。無効にするには空欄のままにします。`,costAlertsDisabled:`コストアラートを無効にしました`,dailyBudgetRemoved:`Desktop の日次予算を削除しました`,dailyBudgetSet:"Desktop の日次予算を ${{amount}} に設定しました",dailyBudgetSaveFailed:`Desktop の日次予算の保存に失敗しました`,projectRemoved:`プロジェクトを削除しました`,projectRemoveFailed:`プロジェクトの削除に失敗しました`,onboardingHeading:`オンボーディング`,platformTour:`プラットフォームツアー`,platformTourDescription:`ウェルカムウィザードを再生して主要機能を確認します。`,replayTour:`ツアーを再生`,terminalPanelHeading:`ターミナルパネル`,infoHeading:`Desktop 情報`,infoPort:`ポート`,infoProjects:`プロジェクト`,infoDb:`Desktop DB`},c={heading:`OS 通知`,description:`ジョブの完了・失敗時にネイティブのデスクトップ通知を表示します。通知はタブがフォーカスされていないときのみ表示されます。`,enableLabel:`OS 通知を有効化`,notifyOn:`通知の対象:`,filterAll:`すべて(完了と失敗)`,filterCompleted:`完了のみ`,filterFailed:`失敗のみ`,enabledToast:`OS 通知を有効にしました`,disabledToast:`OS 通知を無効にしました`},l={heading:`アウトバウンド Webhook`,description:`Desktop のイベントを外部ツール(Slack、Zapier、CI/CD)に通知します。シークレットが設定されている場合、リクエストは <code>X-Specrails-Signature</code> で署名されます。`,eventJobCompleted:`ジョブ完了`,eventJobFailed:`ジョブ失敗`,eventDailyBudgetExceeded:`日次予算超過`,statusOn:`オン`,statusOff:`オフ`,disable:`無効化`,enable:`有効化`,sendTestPing:`テスト ping を送信`,addHeading:`Webhook を追加`,secretPlaceholder:`署名シークレット(任意)`,addButton:`Webhook を追加`,urlRequired:`URL は必須です`,selectEvent:`イベントを1つ以上選択してください`,added:`Webhook を追加しました`,addFailed:`Webhook の追加に失敗しました`,updateFailed:`Webhook の更新に失敗しました`,removed:`Webhook を削除しました`,removeFailed:`Webhook の削除に失敗しました`,testPingSent:`テスト ping を送信しました`,testPingFailed:`テスト ping の送信に失敗しました`},u={title:`ターミナルパネル`,desktopDescription:`プロジェクト別のオーバーライドがない限り、すべてのプロジェクトに適用される Desktop 全体のデフォルトです。`,projectDescription:`ターミナルパネルのプロジェクト別オーバーライド。Desktop のデフォルトを継承するには、フィールドを変更しないでください。`,fontFamily:`フォントファミリー`,fontSize:`フォントサイズ({{min}}–{{max}})`,renderMode:`レンダリングモード`,copyOnSelect:`選択時にコピー`,shellIntegration:`シェル統合(OSC 133 マーク)`,notifyLongRunning:`長時間実行コマンドの通知`,longCommandThreshold:`長時間コマンドのしきい値(ms)`,imageRendering:`インライン画像レンダリング(Sixel + iTerm2)`,browserShortcutUrl:`ブラウザショートカット URL`,quickScript:`クイックスクリプト(アクティブなターミナルに貼り付け — Enter は手動)`,reset:`リセット`,unsavedChanges:`未保存の変更`,clearOverride:`オーバーライドをクリア`,clear:`クリア`,inheritingDefault:`Desktop のデフォルトを継承中`,nothingToSave:`保存する変更はありません`,saved:`ターミナル設定を保存しました`},d={heading:`Code セクション`,summaryLanguage:`要約の言語`,monthlyBudget:`月次予算(USD)`,budgetHelper:"暦月ごとの `surface=file-summary` 支出の上限。ユーザーが開始した再生成は上限を超えられます。"},f={heading:`外観`,themeGroupLabel:`テーマ`,currentlyActive:`現在アクティブ`,updateFailed:`テーマの更新に失敗しました`},p={heading:`モバイルコンパニオン`,description:`スマートフォンの SpecRails Companion アプリから Specrails を操作します。通信は 100% ローカルネットワーク経由です。デフォルトはオフです。`,accessOn:`モバイルアクセス オン`,accessOff:`モバイルアクセス オフ`,listeningOnPort:`ポート {{port}} で待機中`,notListening:`待機していません`,turnOn:`オンにする`,turnOff:`オフにする`,pairDevice:`デバイスをペアリング`,reset:`リセット`,resetConfirm:`モバイル ID をリセットしますか?ペアリング済みのすべてのデバイスが無効化され、再ペアリングが必要になります。`,identityReset:`モバイル ID をリセットしました`,enableFailed:`モバイルアクセスを有効にできませんでした: {{message}}`,disableFailed:`モバイルアクセスを無効にできませんでした: {{message}}`,windowsFirewall:`初回有効化時に Windows ファイアウォールが SpecRails サーバーの許可を求めます — 「プライベートネットワークで許可」を選択してください。`,pairedDevices:`ペアリング済みデバイス`,noDevices:`ペアリングされたデバイスはまだありません。`,revokeDevice:`{{name}} を無効化`},m={title:`デバイスをペアリング`,description:`スマートフォンで SpecRails Companion を開き、このコードをスキャンしてください。このダイアログが開いている間のみ有効です。`,startFailed:`ペアリングを開始できませんでした: {{error}}`,wantsToPair:`<b>{{name}}</b>({{platform}})がペアリングを要求しています。`,deny:`拒否`,approve:`承認`,paired:`✓ ペアリング済み`,waiting:`デバイスを待機中…({{host}}:{{port}})`,thisDesktop:`このコンピューター`,copyCode:`コードをコピー(「手動で入力」用)`,pairedToast:`デバイスをペアリングしました`,approveFailed:`承認に失敗しました: {{message}}`,codeCopied:`ペアリングコードをコピーしました`},h={language:e,page:t,errors:n,telemetry:r,prePrompt:i,ultraPrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairDevice:m};export{f as appearance,o as budget,d as codeSection,h as default,s as desktop,n as errors,e as language,p as mobile,c as notifications,t as page,m as pairDevice,i as prePrompt,r as telemetry,u as terminal,a as ultraPrePrompt,l as webhooks};
@@ -0,0 +1 @@
1
+ var e={title:`Idioma`,description:`Idioma da UI em todo o Desktop. Aplica-se de imediato — sem reiniciar.`,selectLabel:`Idioma da interface`,updateFailed:`Não foi possível guardar a preferência de idioma`},t={title:`Definições do projeto`},n={saveFailed:`Falha ao guardar: {{message}}`},r={title:`Telemetria do pipeline`,description:`Capture uso de tokens, durações de fases e atividade de subagentes para exportação de diagnóstico. Desativada por omissão.`,toggleLabel:`Ativar telemetria do pipeline`,toggleDescription:`Quando ativa, os dados OTEL dos jobs do pipeline são capturados localmente. Use o botão <mono>Exportar diagnóstico</mono> em qualquer cartão de job para descarregar.`,enabled:`Telemetria do pipeline ativada`,disabled:`Telemetria do pipeline desativada`,saveFailed:`Falha ao guardar a definição de telemetria`},i={title:`Pre-prompt de rail`,description:`Instruções extra específicas do projeto, acrescentadas aos jobs de rail implement e batch-implement depois do contexto do ticket e antes da execução.`,label:`Pre-prompt`,placeholder:`Exemplo: Prefira alterações incrementais, mantenha as migrações retrocompatíveis e adicione testes a cada alteração de rail.`,helper:`Use isto para orientações estáveis do projeto que devem acompanhar cada execução de implementação em rail.`,saveButton:`Guardar pre-prompt`,cleared:`Pre-prompt limpo`,saved:`Pre-prompt guardado`,saveFailed:`Falha ao guardar o pre-prompt`},a={title:`Pre-prompt de Ultracode`,description:`Instrução enviada ao Claude em Ultracode (rails apenas Claude). O Ultracode salta o pipeline OpenSpec — entrega ao Claude este pre-prompt mais o texto da spec e deixa-o implementar de forma autónoma. Deixe em branco para usar o valor predefinido.`,label:`Pre-prompt Ultra`,placeholder:`Deixe em branco para usar a instrução Ultracode predefinida.`,helper:`O texto da spec é acrescentado automaticamente depois deste pre-prompt. Vazio = predefinição.`,saveButton:`Guardar pre-prompt Ultra`,resetToDefault:`Pre-prompt Ultra reposto na predefinição`,saved:`Pre-prompt Ultra guardado`,saveFailed:`Falha ao guardar o pre-prompt Ultra`},o={title:`Orçamento`,description:`Defina um limite de gasto diário para este projeto. A fila pausa automaticamente quando o limite é atingido.`,dailyLabel:`Orçamento diário (USD)`,dailyHelper:`Deixe em branco para desativar. O gasto é calculado sobre as últimas 24 horas.`,dailyPlaceholder:`ex.: 5.00`,perJobLabel:`Alerta de custo por job (USD)`,perJobHelper:`Alertar quando um único job deste projeto excede este valor.`,perJobPlaceholder:`ex.: 0.50`,invalidNumber:`Introduza um número positivo ou deixe em branco para desativar`,dailyRemoved:`Orçamento diário removido`,dailySet:"Orçamento diário definido como ${{amount}}",perJobAlertDisabled:`Alerta de custo por job desativado`,alertSet:"Alerta definido para jobs acima de ${{amount}}",saveBudgetFailed:`Falha ao guardar o orçamento`,saveThresholdFailed:`Falha ao guardar o limiar`},s={title:`Definições do Desktop`,description:`Faça a gestão dos projetos registados e consulte informações do Desktop.`,registeredProjects:`Projetos registados`,noProjects:`Ainda não há projetos registados`,techUrlDescription:`URL base para a API specrails-tech (predefinição: http://localhost:3000)`,techUrlSaved:`URL do specrails-tech guardado`,techUrlSaveFailed:`Falha ao guardar o URL`,budgetAlertsHeading:`Orçamento e alertas`,dailyBudgetLabel:`Orçamento diário do Desktop (USD)`,dailyBudgetHelper:`Limite global de gasto diário em todos os projetos. As filas pausam automaticamente quando é excedido.`,dailyBudgetPlaceholder:`ex.: 10.00`,perJobHelper:`Alertar quando um único job excede este valor. Deixe em branco para desativar.`,costAlertsDisabled:`Alertas de custo desativados`,dailyBudgetRemoved:`Orçamento diário do Desktop removido`,dailyBudgetSet:"Orçamento diário do Desktop definido como ${{amount}}",dailyBudgetSaveFailed:`Falha ao guardar o orçamento diário do Desktop`,projectRemoved:`Projeto removido`,projectRemoveFailed:`Falha ao remover o projeto`,onboardingHeading:`Onboarding`,platformTour:`Tour da plataforma`,platformTourDescription:`Repita o assistente de boas-vindas para rever as funcionalidades principais.`,replayTour:`Repetir tour`,terminalPanelHeading:`Painel de terminal`,infoHeading:`Informações do Desktop`,infoPort:`Porta`,infoProjects:`Projetos`,infoDb:`BD do Desktop`},c={heading:`Notificações do SO`,description:`Mostrar notificações nativas do desktop quando os jobs terminam ou falham. As notificações só aparecem quando o separador não está focado.`,enableLabel:`Ativar notificações do SO`,notifyOn:`Notificar em:`,filterAll:`Tudo (concluídos e falhados)`,filterCompleted:`Apenas concluídos`,filterFailed:`Apenas falhados`,enabledToast:`Notificações do SO ativadas`,disabledToast:`Notificações do SO desativadas`},l={heading:`Webhooks de saída`,description:`Notifique ferramentas externas (Slack, Zapier, CI/CD) sobre eventos do Desktop. Os pedidos são assinados via <code>X-Specrails-Signature</code> quando há um segredo definido.`,eventJobCompleted:`Job concluído`,eventJobFailed:`Job falhado`,eventDailyBudgetExceeded:`Orçamento diário excedido`,statusOn:`ligado`,statusOff:`desligado`,disable:`Desativar`,enable:`Ativar`,sendTestPing:`Enviar ping de teste`,addHeading:`Adicionar webhook`,secretPlaceholder:`Segredo de assinatura (opcional)`,addButton:`Adicionar webhook`,urlRequired:`O URL é obrigatório`,selectEvent:`Selecione pelo menos um evento`,added:`Webhook adicionado`,addFailed:`Falha ao adicionar o webhook`,updateFailed:`Falha ao atualizar o webhook`,removed:`Webhook removido`,removeFailed:`Falha ao remover o webhook`,testPingSent:`Ping de teste enviado`,testPingFailed:`Falha ao enviar o ping de teste`},u={title:`Painel de terminal`,desktopDescription:`Predefinições do Desktop aplicadas a todos os projetos, salvo override por projeto.`,projectDescription:`Overrides por projeto para o painel de terminal. Deixe um campo inalterado para herdar a predefinição do Desktop.`,fontFamily:`Tipo de letra`,fontSize:`Tamanho da letra ({{min}}–{{max}})`,renderMode:`Modo de renderização`,copyOnSelect:`Copiar ao selecionar`,shellIntegration:`Integração com a shell (marcas OSC 133)`,notifyLongRunning:`Notificar comandos de longa duração`,longCommandThreshold:`Limiar de comando longo (ms)`,imageRendering:`Renderização de imagens inline (Sixel + iTerm2)`,browserShortcutUrl:`URL do atalho do browser`,quickScript:`Script rápido (colado no terminal ativo — Enter manualmente)`,reset:`Repor`,unsavedChanges:`Alterações não guardadas`,clearOverride:`Limpar override`,clear:`Limpar`,inheritingDefault:`A herdar a predefinição do Desktop`,nothingToSave:`Nada para guardar`,saved:`Definições do terminal guardadas`},d={heading:`Secção de código`,summaryLanguage:`Idioma dos resumos`,monthlyBudget:`Orçamento mensal (USD)`,budgetHelper:"Limite de gasto em `surface=file-summary` por mês de calendário. Regenerações iniciadas pelo utilizador podem ignorá-lo."},f={heading:`Aspeto`,themeGroupLabel:`Tema`,currentlyActive:`Atualmente ativo`,updateFailed:`Falha ao atualizar o tema`},p={heading:`Companion móvel`,description:`Controle o Specrails a partir da app SpecRails Companion no seu telemóvel, 100% através da sua rede local. Desativado por omissão.`,accessOn:`Acesso móvel ligado`,accessOff:`Acesso móvel desligado`,listeningOnPort:`À escuta na porta {{port}}`,notListening:`Não está à escuta`,turnOn:`Ligar`,turnOff:`Desligar`,pairDevice:`Emparelhar dispositivo`,reset:`Repor`,resetConfirm:`Repor a identidade móvel? Todos os dispositivos emparelhados serão revogados e terão de emparelhar novamente.`,identityReset:`Identidade móvel reposta`,enableFailed:`Não foi possível ativar o acesso móvel: {{message}}`,disableFailed:`Não foi possível desativar o acesso móvel: {{message}}`,windowsFirewall:`A Firewall do Windows pedirá para permitir o servidor SpecRails na primeira ativação — escolha “Permitir em redes privadas”.`,pairedDevices:`Dispositivos emparelhados`,noDevices:`Ainda não há dispositivos emparelhados.`,revokeDevice:`Revogar {{name}}`},m={title:`Emparelhar um dispositivo`,description:`Abra o SpecRails Companion no seu telemóvel e leia este código. Só funciona enquanto este diálogo estiver aberto.`,startFailed:`Não foi possível iniciar o emparelhamento: {{error}}`,wantsToPair:`<b>{{name}}</b> ({{platform}}) quer emparelhar.`,deny:`Recusar`,approve:`Aprovar`,paired:`✓ Emparelhado`,waiting:`À espera de um dispositivo… (em {{host}}:{{port}})`,thisDesktop:`este computador`,copyCode:`Copiar código (para "Introduzir manualmente")`,pairedToast:`Dispositivo emparelhado`,approveFailed:`Falha na aprovação: {{message}}`,codeCopied:`Código de emparelhamento copiado`},h={language:e,page:t,errors:n,telemetry:r,prePrompt:i,ultraPrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairDevice:m};export{f as appearance,o as budget,d as codeSection,h as default,s as desktop,n as errors,e as language,p as mobile,c as notifications,t as page,m as pairDevice,i as prePrompt,r as telemetry,u as terminal,a as ultraPrePrompt,l as webhooks};
@@ -0,0 +1 @@
1
+ var e={title:`语言`,description:`Desktop 全局界面语言。即时生效,无需重启。`,selectLabel:`界面语言`,updateFailed:`无法保存语言偏好`},t={title:`项目设置`},n={saveFailed:`保存失败:{{message}}`},r={title:`流水线遥测`,description:`采集 token 用量、阶段耗时和子 Agent 活动以供诊断导出。默认关闭。`,toggleLabel:`启用流水线遥测`,toggleDescription:`开启后,流水线任务的 OTEL 数据将在本地采集。在任意任务卡片上使用<mono>导出诊断</mono>按钮即可下载。`,enabled:`已启用流水线遥测`,disabled:`已禁用流水线遥测`,saveFailed:`保存遥测设置失败`},i={title:`Rail 前置提示词`,description:`追加到 implement 与 batch-implement rail 任务中的项目专属附加指令,位于工单上下文之后、开始执行之前。`,label:`前置提示词`,placeholder:`示例:优先采用增量修改,保持迁移向后兼容,并为每次 rail 变更添加测试。`,helper:`用于应随每次 rail 实现运行附带的稳定项目指引。`,saveButton:`保存前置提示词`,cleared:`前置提示词已清除`,saved:`前置提示词已保存`,saveFailed:`保存前置提示词失败`},a={title:`Ultracode 前置提示词`,description:`在 Ultracode(仅限 Claude 的 rail)模式下发送给 Claude 的指令。Ultracode 跳过 OpenSpec 流水线——直接把该前置提示词加上 spec 文本交给 Claude,让其自主实现。留空则使用内置默认值。`,label:`Ultra 前置提示词`,placeholder:`留空以使用默认的 Ultracode 指令。`,helper:`spec 文本会自动追加在该前置提示词之后。留空 = 使用默认值。`,saveButton:`保存 Ultra 前置提示词`,resetToDefault:`Ultra 前置提示词已重置为默认值`,saved:`Ultra 前置提示词已保存`,saveFailed:`保存 Ultra 前置提示词失败`},o={title:`预算`,description:`为此项目设置每日支出上限。达到上限时队列自动暂停。`,dailyLabel:`每日预算(USD)`,dailyHelper:`留空表示禁用。支出按最近 24 小时计算。`,dailyPlaceholder:`如 5.00`,perJobLabel:`单任务成本告警(USD)`,perJobHelper:`当此项目中的单个任务超过此金额时告警。`,perJobPlaceholder:`如 0.50`,invalidNumber:`请输入正数,或留空以禁用`,dailyRemoved:`已移除每日预算`,dailySet:"每日预算已设为 ${{amount}}",perJobAlertDisabled:`已禁用单任务成本告警`,alertSet:"已设置任务超过 ${{amount}} 时告警",saveBudgetFailed:`保存预算失败`,saveThresholdFailed:`保存阈值失败`},s={title:`Desktop 设置`,description:`管理已注册的项目并查看 Desktop 信息。`,registeredProjects:`已注册项目`,noProjects:`尚未注册任何项目`,techUrlDescription:`specrails-tech API 的基础 URL(默认:http://localhost:3000)`,techUrlSaved:`specrails-tech URL 已保存`,techUrlSaveFailed:`保存 URL 失败`,budgetAlertsHeading:`预算与告警`,dailyBudgetLabel:`Desktop 每日预算(USD)`,dailyBudgetHelper:`所有项目的全局每日支出上限。超出后队列自动暂停。`,dailyBudgetPlaceholder:`如 10.00`,perJobHelper:`当单个任务超过此金额时告警。留空表示禁用。`,costAlertsDisabled:`已禁用成本告警`,dailyBudgetRemoved:`已移除 Desktop 每日预算`,dailyBudgetSet:"Desktop 每日预算已设为 ${{amount}}",dailyBudgetSaveFailed:`保存 Desktop 每日预算失败`,projectRemoved:`项目已移除`,projectRemoveFailed:`移除项目失败`,onboardingHeading:`新手引导`,platformTour:`平台导览`,platformTourDescription:`重播欢迎向导,回顾核心功能。`,replayTour:`重播导览`,terminalPanelHeading:`终端面板`,infoHeading:`Desktop 信息`,infoPort:`端口`,infoProjects:`项目`,infoDb:`Desktop 数据库`},c={heading:`系统通知`,description:`任务完成或失败时显示原生桌面通知。仅在标签页未聚焦时显示通知。`,enableLabel:`启用系统通知`,notifyOn:`通知时机:`,filterAll:`全部(完成与失败)`,filterCompleted:`仅完成`,filterFailed:`仅失败`,enabledToast:`已启用系统通知`,disabledToast:`已禁用系统通知`},l={heading:`出站 Webhook`,description:`在 Desktop 事件发生时通知外部工具(Slack、Zapier、CI/CD)。设置密钥后,请求会通过 <code>X-Specrails-Signature</code> 进行签名。`,eventJobCompleted:`任务完成`,eventJobFailed:`任务失败`,eventDailyBudgetExceeded:`超出每日预算`,statusOn:`开`,statusOff:`关`,disable:`禁用`,enable:`启用`,sendTestPing:`发送测试 ping`,addHeading:`添加 Webhook`,secretPlaceholder:`签名密钥(可选)`,addButton:`添加 Webhook`,urlRequired:`URL 为必填项`,selectEvent:`请至少选择一个事件`,added:`Webhook 已添加`,addFailed:`添加 Webhook 失败`,updateFailed:`更新 Webhook 失败`,removed:`Webhook 已移除`,removeFailed:`移除 Webhook 失败`,testPingSent:`测试 ping 已发送`,testPingFailed:`发送测试 ping 失败`},u={title:`终端面板`,desktopDescription:`Desktop 全局默认值,应用于所有项目,除非设置了项目级覆盖。`,projectDescription:`终端面板的项目级覆盖。保持字段不变即继承 Desktop 默认值。`,fontFamily:`字体`,fontSize:`字号({{min}}–{{max}})`,renderMode:`渲染模式`,copyOnSelect:`选中即复制`,shellIntegration:`Shell 集成(OSC 133 标记)`,notifyLongRunning:`长耗时命令通知`,longCommandThreshold:`长命令阈值(ms)`,imageRendering:`内联图片渲染(Sixel + iTerm2)`,browserShortcutUrl:`浏览器快捷方式 URL`,quickScript:`快捷脚本(粘贴到活动终端——需手动按 Enter)`,reset:`重置`,unsavedChanges:`有未保存的更改`,clearOverride:`清除覆盖`,clear:`清除`,inheritingDefault:`正在继承 Desktop 默认值`,nothingToSave:`没有可保存的内容`,saved:`终端设置已保存`},d={heading:`代码板块`,summaryLanguage:`摘要语言`,monthlyBudget:`每月预算(USD)`,budgetHelper:"每个自然月 `surface=file-summary` 支出的上限。用户手动发起的重新生成可超出此限制。"},f={heading:`外观`,themeGroupLabel:`主题`,currentlyActive:`当前使用中`,updateFailed:`更新主题失败`},p={heading:`移动伴侣`,description:`通过手机上的 SpecRails Companion 应用控制 Specrails,完全经由本地网络。默认关闭。`,accessOn:`移动访问已开启`,accessOff:`移动访问已关闭`,listeningOnPort:`正在监听端口 {{port}}`,notListening:`未在监听`,turnOn:`开启`,turnOff:`关闭`,pairDevice:`配对设备`,reset:`重置`,resetConfirm:`确定要重置移动身份吗?所有已配对设备都将被吊销,必须重新配对。`,identityReset:`移动身份已重置`,enableFailed:`无法启用移动访问:{{message}}`,disableFailed:`无法禁用移动访问:{{message}}`,windowsFirewall:`首次启用时,Windows 防火墙会询问是否允许 SpecRails 服务器——请选择“允许在专用网络上”。`,pairedDevices:`已配对设备`,noDevices:`尚无已配对设备。`,revokeDevice:`吊销 {{name}}`},m={title:`配对设备`,description:`在手机上打开 SpecRails Companion 并扫描此二维码。仅在本对话框打开期间有效。`,startFailed:`无法开始配对:{{error}}`,wantsToPair:`<b>{{name}}</b>({{platform}})请求配对。`,deny:`拒绝`,approve:`批准`,paired:`✓ 已配对`,waiting:`等待设备中…(位于 {{host}}:{{port}})`,thisDesktop:`此电脑`,copyCode:`复制配对码(用于“手动输入”)`,pairedToast:`设备已配对`,approveFailed:`批准失败:{{message}}`,codeCopied:`配对码已复制`},h={language:e,page:t,errors:n,telemetry:r,prePrompt:i,ultraPrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairDevice:m};export{f as appearance,o as budget,d as codeSection,h as default,s as desktop,n as errors,e as language,p as mobile,c as notifications,t as page,m as pairDevice,i as prePrompt,r as telemetry,u as terminal,a as ultraPrePrompt,l as webhooks};
@@ -0,0 +1 @@
1
+ var e={title:`Idioma`,description:`Idioma de la UI para todo Desktop. Se aplica al instante — no hace falta reiniciar.`,selectLabel:`Idioma de la interfaz`,updateFailed:`No se pudo guardar la preferencia de idioma`},t={title:`Ajustes del proyecto`},n={saveFailed:`Error al guardar: {{message}}`},r={title:`Telemetría del pipeline`,description:`Captura el uso de tokens, la duración de las fases y la actividad de los subagentes para exportar diagnósticos. Desactivada por defecto.`,toggleLabel:`Activar telemetría del pipeline`,toggleDescription:`Cuando está activa, los datos OTEL de los jobs del pipeline se capturan en local. Usa el botón <mono>Exportar diagnóstico</mono> en cualquier tarjeta de job para descargarlos.`,enabled:`Telemetría del pipeline activada`,disabled:`Telemetría del pipeline desactivada`,saveFailed:`No se pudo guardar el ajuste de telemetría`},i={title:`Pre-prompt de rail`,description:`Instrucciones extra específicas del proyecto que se añaden a los jobs de rail implement y batch-implement, después del contexto del ticket y antes de la ejecución.`,label:`Pre-prompt`,placeholder:`Ejemplo: Prefiere cambios incrementales, mantén las migraciones retrocompatibles y añade tests para cada cambio de rail.`,helper:`Úsalo para directrices estables del proyecto que deban acompañar cada ejecución de implementación en rail.`,saveButton:`Guardar pre-prompt`,cleared:`Pre-prompt borrado`,saved:`Pre-prompt guardado`,saveFailed:`No se pudo guardar el pre-prompt`},a={title:`Pre-prompt de Ultracode`,description:`Instrucción enviada a Claude en Ultracode (rails solo de Claude). Ultracode se salta el pipeline de OpenSpec — le entrega a Claude este pre-prompt más el texto de la spec y le deja implementar de forma autónoma. Déjalo en blanco para usar el valor por defecto integrado.`,label:`Pre-prompt Ultra`,placeholder:`Déjalo en blanco para usar la instrucción por defecto de Ultracode.`,helper:`El texto de la spec se añade automáticamente después de este pre-prompt. Vacío = por defecto.`,saveButton:`Guardar pre-prompt Ultra`,resetToDefault:`Pre-prompt Ultra restablecido al valor por defecto`,saved:`Pre-prompt Ultra guardado`,saveFailed:`No se pudo guardar el pre-prompt Ultra`},o={title:`Presupuesto`,description:`Define un límite de gasto diario para este proyecto. La cola se pausa automáticamente al alcanzar el límite.`,dailyLabel:`Presupuesto diario (USD)`,dailyHelper:`Déjalo en blanco para desactivarlo. El gasto se calcula sobre las últimas 24 horas.`,dailyPlaceholder:`p. ej. 5.00`,perJobLabel:`Alerta de coste por job (USD)`,perJobHelper:`Avisa cuando un único job de este proyecto supere este importe.`,perJobPlaceholder:`p. ej. 0.50`,invalidNumber:`Introduce un número positivo o déjalo en blanco para desactivar`,dailyRemoved:`Presupuesto diario eliminado`,dailySet:"Presupuesto diario fijado en ${{amount}}",perJobAlertDisabled:`Alerta de coste por job desactivada`,alertSet:"Alerta configurada para jobs de más de ${{amount}}",saveBudgetFailed:`No se pudo guardar el presupuesto`,saveThresholdFailed:`No se pudo guardar el umbral`},s={title:`Ajustes de Desktop`,description:`Gestiona los proyectos registrados y consulta la información de Desktop.`,registeredProjects:`Proyectos registrados`,noProjects:`Aún no hay proyectos registrados`,techUrlDescription:`URL base de la API de specrails-tech (por defecto: http://localhost:3000)`,techUrlSaved:`URL de specrails-tech guardada`,techUrlSaveFailed:`No se pudo guardar la URL`,budgetAlertsHeading:`Presupuesto y alertas`,dailyBudgetLabel:`Presupuesto diario de Desktop (USD)`,dailyBudgetHelper:`Límite global de gasto diario en todos los proyectos. Las colas se pausan automáticamente al superarlo.`,dailyBudgetPlaceholder:`p. ej. 10.00`,perJobHelper:`Avisa cuando un único job supere este importe. Déjalo en blanco para desactivarlo.`,costAlertsDisabled:`Alertas de coste desactivadas`,dailyBudgetRemoved:`Presupuesto diario de Desktop eliminado`,dailyBudgetSet:"Presupuesto diario de Desktop fijado en ${{amount}}",dailyBudgetSaveFailed:`No se pudo guardar el presupuesto diario de Desktop`,projectRemoved:`Proyecto eliminado`,projectRemoveFailed:`No se pudo eliminar el proyecto`,onboardingHeading:`Onboarding`,platformTour:`Tour de la plataforma`,platformTourDescription:`Vuelve a ver el asistente de bienvenida para repasar las funciones clave.`,replayTour:`Repetir tour`,terminalPanelHeading:`Panel de terminal`,infoHeading:`Información de Desktop`,infoPort:`Puerto`,infoProjects:`Proyectos`,infoDb:`BD de Desktop`},c={heading:`Notificaciones del sistema`,description:`Muestra notificaciones nativas de escritorio cuando los jobs se completan o fallan. Las notificaciones solo aparecen cuando la pestaña no tiene el foco.`,enableLabel:`Activar notificaciones del sistema`,notifyOn:`Notificar en:`,filterAll:`Todos (completados y fallidos)`,filterCompleted:`Solo completados`,filterFailed:`Solo fallidos`,enabledToast:`Notificaciones del sistema activadas`,disabledToast:`Notificaciones del sistema desactivadas`},l={heading:`Webhooks salientes`,description:`Notifica a herramientas externas (Slack, Zapier, CI/CD) los eventos de Desktop. Las peticiones se firman con <code>X-Specrails-Signature</code> cuando hay un secreto configurado.`,eventJobCompleted:`Job completado`,eventJobFailed:`Job fallido`,eventDailyBudgetExceeded:`Presupuesto diario superado`,statusOn:`on`,statusOff:`off`,disable:`Desactivar`,enable:`Activar`,sendTestPing:`Enviar ping de prueba`,addHeading:`Añadir webhook`,secretPlaceholder:`Secreto de firma (opcional)`,addButton:`Añadir webhook`,urlRequired:`La URL es obligatoria`,selectEvent:`Selecciona al menos un evento`,added:`Webhook añadido`,addFailed:`No se pudo añadir el webhook`,updateFailed:`No se pudo actualizar el webhook`,removed:`Webhook eliminado`,removeFailed:`No se pudo eliminar el webhook`,testPingSent:`Ping de prueba enviado`,testPingFailed:`No se pudo enviar el ping de prueba`},u={title:`Panel de terminal`,desktopDescription:`Valores por defecto de Desktop aplicados a todos los proyectos salvo que exista un override por proyecto.`,projectDescription:`Overrides por proyecto para el panel de terminal. Deja un campo sin cambios para heredar el valor por defecto de Desktop.`,fontFamily:`Familia tipográfica`,fontSize:`Tamaño de fuente ({{min}}–{{max}})`,renderMode:`Modo de renderizado`,copyOnSelect:`Copiar al seleccionar`,shellIntegration:`Integración con el shell (marcas OSC 133)`,notifyLongRunning:`Notificar comandos de larga duración`,longCommandThreshold:`Umbral de comando largo (ms)`,imageRendering:`Renderizado de imágenes inline (Sixel + iTerm2)`,browserShortcutUrl:`URL del atajo de navegador`,quickScript:`Script rápido (se pega en el terminal activo — pulsa Enter manualmente)`,reset:`Restablecer`,unsavedChanges:`Cambios sin guardar`,clearOverride:`Quitar override`,clear:`Quitar`,inheritingDefault:`Heredando el valor por defecto de Desktop`,nothingToSave:`Nada que guardar`,saved:`Ajustes del terminal guardados`},d={heading:`Sección de código`,summaryLanguage:`Idioma de los resúmenes`,monthlyBudget:`Presupuesto mensual (USD)`,budgetHelper:"Tope de gasto de `surface=file-summary` por mes natural. Las regeneraciones iniciadas por el usuario pueden sobrepasarlo."},f={heading:`Apariencia`,themeGroupLabel:`Tema`,currentlyActive:`Activo actualmente`,updateFailed:`No se pudo actualizar el tema`},p={heading:`App móvil`,description:`Controla Specrails desde la app SpecRails Companion de tu teléfono, 100 % a través de tu red local. Desactivado por defecto.`,accessOn:`Acceso móvil activado`,accessOff:`Acceso móvil desactivado`,listeningOnPort:`A la escucha en el puerto {{port}}`,notListening:`No está a la escucha`,turnOn:`Activar`,turnOff:`Desactivar`,pairDevice:`Emparejar dispositivo`,reset:`Restablecer`,resetConfirm:`¿Restablecer la identidad móvil? Todos los dispositivos emparejados se revocarán y tendrán que emparejarse de nuevo.`,identityReset:`Identidad móvil restablecida`,enableFailed:`No se pudo activar el acceso móvil: {{message}}`,disableFailed:`No se pudo desactivar el acceso móvil: {{message}}`,windowsFirewall:`El Firewall de Windows pedirá permiso para el servidor de SpecRails la primera vez que lo actives — elige «Permitir en redes privadas».`,pairedDevices:`Dispositivos emparejados`,noDevices:`Aún no hay dispositivos emparejados.`,revokeDevice:`Revocar {{name}}`},m={title:`Emparejar un dispositivo`,description:`Abre SpecRails Companion en tu teléfono y escanea este código. Solo funciona mientras este diálogo esté abierto.`,startFailed:`No se pudo iniciar el emparejamiento: {{error}}`,wantsToPair:`<b>{{name}}</b> ({{platform}}) quiere emparejarse.`,deny:`Rechazar`,approve:`Aprobar`,paired:`✓ Emparejado`,waiting:`Esperando un dispositivo… (en {{host}}:{{port}})`,thisDesktop:`este equipo`,copyCode:`Copiar código (para «Introducir manualmente»)`,pairedToast:`Dispositivo emparejado`,approveFailed:`Error al aprobar: {{message}}`,codeCopied:`Código de emparejamiento copiado`},h={language:e,page:t,errors:n,telemetry:r,prePrompt:i,ultraPrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairDevice:m};export{f as appearance,o as budget,d as codeSection,h as default,s as desktop,n as errors,e as language,p as mobile,c as notifications,t as page,m as pairDevice,i as prePrompt,r as telemetry,u as terminal,a as ultraPrePrompt,l as webhooks};
@@ -0,0 +1 @@
1
+ var e={title:`Langue`,description:`Langue de l'interface pour tout Desktop. S'applique instantanément — aucun redémarrage requis.`,selectLabel:`Langue de l'interface`,updateFailed:`Impossible d'enregistrer la préférence de langue`},t={title:`Paramètres du projet`},n={saveFailed:`Échec de l'enregistrement : {{message}}`},r={title:`Télémétrie du pipeline`,description:`Capture l'usage des tokens, la durée des phases et l'activité des sous-agents pour l'export de diagnostic. Désactivé par défaut.`,toggleLabel:`Activer la télémétrie du pipeline`,toggleDescription:`Quand elle est activée, les données OTEL des jobs du pipeline sont capturées localement. Utilisez le bouton <mono>Exporter le diagnostic</mono> sur n'importe quelle carte de job pour les télécharger.`,enabled:`Télémétrie du pipeline activée`,disabled:`Télémétrie du pipeline désactivée`,saveFailed:`Échec de l'enregistrement du réglage de télémétrie`},i={title:`Pré-prompt de rail`,description:`Instructions supplémentaires propres au projet, ajoutées aux jobs de rail implement et batch-implement après le contexte du ticket et avant l'exécution.`,label:`Pré-prompt`,placeholder:`Exemple : privilégier les changements incrémentaux, garder les migrations rétrocompatibles et ajouter des tests pour chaque changement de rail.`,helper:`À utiliser pour des consignes projet stables qui doivent accompagner chaque exécution d'implémentation sur rail.`,saveButton:`Enregistrer le pré-prompt`,cleared:`Pré-prompt effacé`,saved:`Pré-prompt enregistré`,saveFailed:`Échec de l'enregistrement du pré-prompt`},a={title:`Pré-prompt Ultracode`,description:`Instruction envoyée à Claude en mode Ultracode (rails Claude uniquement). Ultracode saute le pipeline OpenSpec — il transmet à Claude ce pré-prompt plus le texte de la spec et le laisse implémenter en autonomie. Laissez vide pour utiliser la valeur par défaut intégrée.`,label:`Pré-prompt Ultra`,placeholder:`Laissez vide pour utiliser l'instruction Ultracode par défaut.`,helper:`Le texte de la spec est ajouté automatiquement après ce pré-prompt. Vide = défaut.`,saveButton:`Enregistrer le pré-prompt Ultra`,resetToDefault:`Pré-prompt Ultra réinitialisé à la valeur par défaut`,saved:`Pré-prompt Ultra enregistré`,saveFailed:`Échec de l'enregistrement du pré-prompt Ultra`},o={title:`Budget`,description:`Définissez un plafond de dépense quotidien pour ce projet. La file se met automatiquement en pause quand la limite est atteinte.`,dailyLabel:`Budget quotidien (USD)`,dailyHelper:`Laissez vide pour désactiver. La dépense est calculée sur les dernières 24 heures.`,dailyPlaceholder:`ex. 5.00`,perJobLabel:`Alerte de coût par job (USD)`,perJobHelper:`Alerte quand un seul job de ce projet dépasse ce montant.`,perJobPlaceholder:`ex. 0.50`,invalidNumber:`Saisissez un nombre positif ou laissez vide pour désactiver`,dailyRemoved:`Budget quotidien supprimé`,dailySet:`Budget quotidien défini à {{amount}} $`,perJobAlertDisabled:`Alerte de coût par job désactivée`,alertSet:`Alerte définie pour les jobs dépassant {{amount}} $`,saveBudgetFailed:`Échec de l'enregistrement du budget`,saveThresholdFailed:`Échec de l'enregistrement du seuil`},s={title:`Paramètres de Desktop`,description:`Gérez les projets enregistrés et consultez les informations de Desktop.`,registeredProjects:`Projets enregistrés`,noProjects:`Aucun projet enregistré pour l'instant`,techUrlDescription:`URL de base de l'API specrails-tech (par défaut : http://localhost:3000)`,techUrlSaved:`URL specrails-tech enregistrée`,techUrlSaveFailed:`Échec de l'enregistrement de l'URL`,budgetAlertsHeading:`Budget & alertes`,dailyBudgetLabel:`Budget quotidien de Desktop (USD)`,dailyBudgetHelper:`Limite de dépense quotidienne globale pour tous les projets. Les files se mettent automatiquement en pause en cas de dépassement.`,dailyBudgetPlaceholder:`ex. 10.00`,perJobHelper:`Alerte quand un seul job dépasse ce montant. Laissez vide pour désactiver.`,costAlertsDisabled:`Alertes de coût désactivées`,dailyBudgetRemoved:`Budget quotidien de Desktop supprimé`,dailyBudgetSet:`Budget quotidien de Desktop défini à {{amount}} $`,dailyBudgetSaveFailed:`Échec de l'enregistrement du budget quotidien de Desktop`,projectRemoved:`Projet supprimé`,projectRemoveFailed:`Échec de la suppression du projet`,onboardingHeading:`Onboarding`,platformTour:`Visite de la plateforme`,platformTourDescription:`Rejouez l'assistant de bienvenue pour revoir les fonctionnalités clés.`,replayTour:`Rejouer la visite`,terminalPanelHeading:`Panneau de terminal`,infoHeading:`Informations de Desktop`,infoPort:`Port`,infoProjects:`Projets`,infoDb:`BD de Desktop`},c={heading:`Notifications système`,description:`Affiche des notifications de bureau natives quand des jobs se terminent ou échouent. Les notifications n'apparaissent que lorsque l'onglet n'a pas le focus.`,enableLabel:`Activer les notifications système`,notifyOn:`Notifier pour :`,filterAll:`Tout (terminés & échoués)`,filterCompleted:`Terminés uniquement`,filterFailed:`Échoués uniquement`,enabledToast:`Notifications système activées`,disabledToast:`Notifications système désactivées`},l={heading:`Webhooks sortants`,description:`Notifiez des outils externes (Slack, Zapier, CI/CD) lors des événements de Desktop. Les requêtes sont signées via <code>X-Specrails-Signature</code> quand un secret est défini.`,eventJobCompleted:`Job terminé`,eventJobFailed:`Job en échec`,eventDailyBudgetExceeded:`Budget quotidien dépassé`,statusOn:`actif`,statusOff:`inactif`,disable:`Désactiver`,enable:`Activer`,sendTestPing:`Envoyer un ping de test`,addHeading:`Ajouter un webhook`,secretPlaceholder:`Secret de signature (facultatif)`,addButton:`Ajouter le webhook`,urlRequired:`L'URL est requise`,selectEvent:`Sélectionnez au moins un événement`,added:`Webhook ajouté`,addFailed:`Échec de l'ajout du webhook`,updateFailed:`Échec de la mise à jour du webhook`,removed:`Webhook supprimé`,removeFailed:`Échec de la suppression du webhook`,testPingSent:`Ping de test envoyé`,testPingFailed:`Échec de l'envoi du ping de test`},u={title:`Panneau de terminal`,desktopDescription:`Valeurs par défaut de Desktop, appliquées à chaque projet sauf surcharge par projet.`,projectDescription:`Surcharges par projet pour le panneau de terminal. Laissez un champ inchangé pour hériter de la valeur par défaut de Desktop.`,fontFamily:`Police`,fontSize:`Taille de police ({{min}}–{{max}})`,renderMode:`Mode de rendu`,copyOnSelect:`Copier à la sélection`,shellIntegration:`Intégration shell (marques OSC 133)`,notifyLongRunning:`Notifier les commandes de longue durée`,longCommandThreshold:`Seuil de commande longue (ms)`,imageRendering:`Rendu d'images inline (Sixel + iTerm2)`,browserShortcutUrl:`URL du raccourci navigateur`,quickScript:`Script rapide (collé dans le terminal actif — Entrée manuelle)`,reset:`Réinitialiser`,unsavedChanges:`Modifications non enregistrées`,clearOverride:`Effacer la surcharge`,clear:`Effacer`,inheritingDefault:`Hérite de la valeur par défaut de Desktop`,nothingToSave:`Rien à enregistrer`,saved:`Paramètres du terminal enregistrés`},d={heading:`Section Code`,summaryLanguage:`Langue des résumés`,monthlyBudget:`Budget mensuel (USD)`,budgetHelper:"Plafond de dépense `surface=file-summary` par mois calendaire. Les régénérations lancées par l'utilisateur peuvent le dépasser."},f={heading:`Apparence`,themeGroupLabel:`Thème`,currentlyActive:`Actuellement actif`,updateFailed:`Échec de la mise à jour du thème`},p={heading:`Compagnon mobile`,description:`Contrôlez Specrails depuis l'application SpecRails Companion sur votre téléphone, 100 % via votre réseau local. Désactivé par défaut.`,accessOn:`Accès mobile activé`,accessOff:`Accès mobile désactivé`,listeningOnPort:`À l'écoute sur le port {{port}}`,notListening:`Pas à l'écoute`,turnOn:`Activer`,turnOff:`Désactiver`,pairDevice:`Appairer un appareil`,reset:`Réinitialiser`,resetConfirm:`Réinitialiser l'identité mobile ? Tous les appareils appairés seront révoqués et devront s'appairer à nouveau.`,identityReset:`Identité mobile réinitialisée`,enableFailed:`Impossible d'activer l'accès mobile : {{message}}`,disableFailed:`Impossible de désactiver l'accès mobile : {{message}}`,windowsFirewall:`Le Pare-feu Windows demandera d'autoriser le serveur SpecRails à la première activation — choisissez « Autoriser sur les réseaux privés ».`,pairedDevices:`Appareils appairés`,noDevices:`Aucun appareil appairé pour l'instant.`,revokeDevice:`Révoquer {{name}}`},m={title:`Appairer un appareil`,description:`Ouvrez SpecRails Companion sur votre téléphone et scannez ce code. Il ne fonctionne que tant que cette boîte de dialogue est ouverte.`,startFailed:`Impossible de démarrer l'appairage : {{error}}`,wantsToPair:`<b>{{name}}</b> ({{platform}}) souhaite s'appairer.`,deny:`Refuser`,approve:`Approuver`,paired:`✓ Appairé`,waiting:`En attente d'un appareil… (sur {{host}}:{{port}})`,thisDesktop:`cet ordinateur`,copyCode:`Copier le code (pour « Saisir manuellement »)`,pairedToast:`Appareil appairé`,approveFailed:`Échec de l'approbation : {{message}}`,codeCopied:`Code d'appairage copié`},h={language:e,page:t,errors:n,telemetry:r,prePrompt:i,ultraPrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairDevice:m};export{f as appearance,o as budget,d as codeSection,h as default,s as desktop,n as errors,e as language,p as mobile,c as notifications,t as page,m as pairDevice,i as prePrompt,r as telemetry,u as terminal,a as ultraPrePrompt,l as webhooks};
@@ -0,0 +1 @@
1
+ var e={title:`Sprache`,description:`Desktop-weite UI-Sprache. Wird sofort angewendet – kein Neustart nötig.`,selectLabel:`Oberflächensprache`,updateFailed:`Spracheinstellung konnte nicht gespeichert werden`},t={title:`Projekteinstellungen`},n={saveFailed:`Speichern fehlgeschlagen: {{message}}`},r={title:`Pipeline-Telemetrie`,description:`Erfasst Token-Verbrauch, Phasendauern und Subagent-Aktivität für den Diagnose-Export. Standardmäßig aus.`,toggleLabel:`Pipeline-Telemetrie aktivieren`,toggleDescription:`Wenn aktiviert, werden OTEL-Daten aus Pipeline-Jobs lokal erfasst. Verwenden Sie zum Herunterladen die Schaltfläche <mono>Diagnose exportieren</mono> auf einer beliebigen Job-Karte.`,enabled:`Pipeline-Telemetrie aktiviert`,disabled:`Pipeline-Telemetrie deaktiviert`,saveFailed:`Telemetrie-Einstellung konnte nicht gespeichert werden`},i={title:`Rail-Pre-Prompt`,description:`Zusätzliche projektspezifische Anweisungen, die an implement- und batch-implement-Rail-Jobs angehängt werden – nach dem Ticket-Kontext und vor der Ausführung.`,label:`Pre-Prompt`,placeholder:`Beispiel: Bevorzuge inkrementelle Änderungen, halte Migrationen abwärtskompatibel und füge Tests für jede Rail-Änderung hinzu.`,helper:`Für stabile Projektleitlinien, die jeden Rail-Implementierungslauf begleiten sollen.`,saveButton:`Pre-Prompt speichern`,cleared:`Pre-Prompt gelöscht`,saved:`Pre-Prompt gespeichert`,saveFailed:`Pre-Prompt konnte nicht gespeichert werden`},a={title:`Ultracode-Pre-Prompt`,description:`Anweisung, die in Ultracode an Claude gesendet wird (nur Claude-Rails). Ultracode überspringt die OpenSpec-Pipeline – Claude erhält diesen Pre-Prompt plus den Spec-Text und implementiert autonom. Leer lassen, um den eingebauten Standard zu verwenden.`,label:`Ultra-Pre-Prompt`,placeholder:`Leer lassen, um die Standard-Ultracode-Anweisung zu verwenden.`,helper:`Der Spec-Text wird automatisch nach diesem Pre-Prompt angehängt. Leer = Standard.`,saveButton:`Ultra-Pre-Prompt speichern`,resetToDefault:`Ultra-Pre-Prompt auf Standard zurückgesetzt`,saved:`Ultra-Pre-Prompt gespeichert`,saveFailed:`Ultra-Pre-Prompt konnte nicht gespeichert werden`},o={title:`Budget`,description:`Tagesausgabenlimit für dieses Projekt festlegen. Die Queue pausiert automatisch, wenn das Limit erreicht ist.`,dailyLabel:`Tagesbudget (USD)`,dailyHelper:`Leer lassen zum Deaktivieren. Ausgaben werden über die letzten 24 Stunden berechnet.`,dailyPlaceholder:`z. B. 5.00`,perJobLabel:`Kostenalarm pro Job (USD)`,perJobHelper:`Alarm, wenn ein einzelner Job in diesem Projekt diesen Betrag überschreitet.`,perJobPlaceholder:`z. B. 0.50`,invalidNumber:`Positive Zahl eingeben oder leer lassen zum Deaktivieren`,dailyRemoved:`Tagesbudget entfernt`,dailySet:"Tagesbudget auf ${{amount}} gesetzt",perJobAlertDisabled:`Kostenalarm pro Job deaktiviert`,alertSet:"Alarm für Jobs über ${{amount}} gesetzt",saveBudgetFailed:`Budget konnte nicht gespeichert werden`,saveThresholdFailed:`Schwellenwert konnte nicht gespeichert werden`},s={title:`Desktop-Einstellungen`,description:`Registrierte Projekte verwalten und Desktop-Informationen einsehen.`,registeredProjects:`Registrierte Projekte`,noProjects:`Noch keine Projekte registriert`,techUrlDescription:`Basis-URL für die specrails-tech-API (Standard: http://localhost:3000)`,techUrlSaved:`specrails-tech-URL gespeichert`,techUrlSaveFailed:`URL konnte nicht gespeichert werden`,budgetAlertsHeading:`Budget & Alarme`,dailyBudgetLabel:`Desktop-Tagesbudget (USD)`,dailyBudgetHelper:`Globales Tagesausgabenlimit über alle Projekte. Queues pausieren automatisch bei Überschreitung.`,dailyBudgetPlaceholder:`z. B. 10.00`,perJobHelper:`Alarm, wenn ein einzelner Job diesen Betrag überschreitet. Leer lassen zum Deaktivieren.`,costAlertsDisabled:`Kostenalarme deaktiviert`,dailyBudgetRemoved:`Desktop-Tagesbudget entfernt`,dailyBudgetSet:"Desktop-Tagesbudget auf ${{amount}} gesetzt",dailyBudgetSaveFailed:`Desktop-Tagesbudget konnte nicht gespeichert werden`,projectRemoved:`Projekt entfernt`,projectRemoveFailed:`Projekt konnte nicht entfernt werden`,onboardingHeading:`Onboarding`,platformTour:`Plattform-Tour`,platformTourDescription:`Den Willkommensassistenten erneut abspielen, um die wichtigsten Funktionen zu sehen.`,replayTour:`Tour erneut abspielen`,terminalPanelHeading:`Terminal-Panel`,infoHeading:`Desktop-Informationen`,infoPort:`Port`,infoProjects:`Projekte`,infoDb:`Desktop-DB`},c={heading:`OS-Benachrichtigungen`,description:`Native Desktop-Benachrichtigungen anzeigen, wenn Jobs abgeschlossen werden oder fehlschlagen. Benachrichtigungen erscheinen nur, wenn der Tab nicht fokussiert ist.`,enableLabel:`OS-Benachrichtigungen aktivieren`,notifyOn:`Benachrichtigen bei:`,filterAll:`Alle (abgeschlossen & fehlgeschlagen)`,filterCompleted:`Nur abgeschlossen`,filterFailed:`Nur fehlgeschlagen`,enabledToast:`OS-Benachrichtigungen aktiviert`,disabledToast:`OS-Benachrichtigungen deaktiviert`},l={heading:`Ausgehende Webhooks`,description:`Externe Tools (Slack, Zapier, CI/CD) bei Desktop-Ereignissen benachrichtigen. Anfragen werden über <code>X-Specrails-Signature</code> signiert, wenn ein Secret gesetzt ist.`,eventJobCompleted:`Job abgeschlossen`,eventJobFailed:`Job fehlgeschlagen`,eventDailyBudgetExceeded:`Tagesbudget überschritten`,statusOn:`an`,statusOff:`aus`,disable:`Deaktivieren`,enable:`Aktivieren`,sendTestPing:`Test-Ping senden`,addHeading:`Webhook hinzufügen`,secretPlaceholder:`Signatur-Secret (optional)`,addButton:`Webhook hinzufügen`,urlRequired:`URL ist erforderlich`,selectEvent:`Mindestens ein Ereignis auswählen`,added:`Webhook hinzugefügt`,addFailed:`Webhook konnte nicht hinzugefügt werden`,updateFailed:`Webhook konnte nicht aktualisiert werden`,removed:`Webhook entfernt`,removeFailed:`Webhook konnte nicht entfernt werden`,testPingSent:`Test-Ping gesendet`,testPingFailed:`Test-Ping konnte nicht gesendet werden`},u={title:`Terminal-Panel`,desktopDescription:`Desktop-weite Standardwerte für alle Projekte, sofern kein projektspezifischer Override gesetzt ist.`,projectDescription:`Projektspezifische Overrides für das Terminal-Panel. Lassen Sie ein Feld unverändert, um den Desktop-Standard zu erben.`,fontFamily:`Schriftfamilie`,fontSize:`Schriftgröße ({{min}}–{{max}})`,renderMode:`Render-Modus`,copyOnSelect:`Beim Auswählen kopieren`,shellIntegration:`Shell-Integration (OSC-133-Marken)`,notifyLongRunning:`Bei lang laufenden Befehlen benachrichtigen`,longCommandThreshold:`Schwellenwert für lange Befehle (ms)`,imageRendering:`Inline-Bilddarstellung (Sixel + iTerm2)`,browserShortcutUrl:`Browser-Shortcut-URL`,quickScript:`Quick-Skript (wird ins aktive Terminal eingefügt – Enter manuell drücken)`,reset:`Zurücksetzen`,unsavedChanges:`Ungespeicherte Änderungen`,clearOverride:`Override entfernen`,clear:`Entfernen`,inheritingDefault:`Erbt Desktop-Standard`,nothingToSave:`Nichts zu speichern`,saved:`Terminal-Einstellungen gespeichert`},d={heading:`Code-Bereich`,summaryLanguage:`Sprache der Zusammenfassungen`,monthlyBudget:`Monatsbudget (USD)`,budgetHelper:"Obergrenze für `surface=file-summary`-Ausgaben pro Kalendermonat. Von Nutzern angestoßene Neugenerierungen können sie überschreiten."},f={heading:`Erscheinungsbild`,themeGroupLabel:`Theme`,currentlyActive:`Derzeit aktiv`,updateFailed:`Theme konnte nicht aktualisiert werden`},p={heading:`Mobile Companion`,description:`Steuern Sie Specrails über die SpecRails Companion-App auf Ihrem Smartphone – zu 100 % über Ihr lokales Netzwerk. Standardmäßig aus.`,accessOn:`Mobilzugriff an`,accessOff:`Mobilzugriff aus`,listeningOnPort:`Lauscht auf Port {{port}}`,notListening:`Lauscht nicht`,turnOn:`Einschalten`,turnOff:`Ausschalten`,pairDevice:`Gerät koppeln`,reset:`Zurücksetzen`,resetConfirm:`Mobile Identität zurücksetzen? Alle gekoppelten Geräte werden widerrufen und müssen neu gekoppelt werden.`,identityReset:`Mobile Identität zurückgesetzt`,enableFailed:`Mobilzugriff konnte nicht aktiviert werden: {{message}}`,disableFailed:`Mobilzugriff konnte nicht deaktiviert werden: {{message}}`,windowsFirewall:`Die Windows-Firewall fragt beim ersten Aktivieren, ob der SpecRails-Server zugelassen werden soll – wählen Sie „In privaten Netzwerken zulassen“.`,pairedDevices:`Gekoppelte Geräte`,noDevices:`Noch keine Geräte gekoppelt.`,revokeDevice:`{{name}} widerrufen`},m={title:`Gerät koppeln`,description:`Öffnen Sie SpecRails Companion auf Ihrem Smartphone und scannen Sie diesen Code. Er funktioniert nur, solange dieser Dialog geöffnet ist.`,startFailed:`Koppeln konnte nicht gestartet werden: {{error}}`,wantsToPair:`<b>{{name}}</b> ({{platform}}) möchte sich koppeln.`,deny:`Ablehnen`,approve:`Genehmigen`,paired:`✓ Gekoppelt`,waiting:`Warte auf ein Gerät… (auf {{host}}:{{port}})`,thisDesktop:`diesem Computer`,copyCode:`Code kopieren (für „Manuell eingeben“)`,pairedToast:`Gerät gekoppelt`,approveFailed:`Genehmigung fehlgeschlagen: {{message}}`,codeCopied:`Kopplungscode kopiert`},h={language:e,page:t,errors:n,telemetry:r,prePrompt:i,ultraPrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairDevice:m};export{f as appearance,o as budget,d as codeSection,h as default,s as desktop,n as errors,e as language,p as mobile,c as notifications,t as page,m as pairDevice,i as prePrompt,r as telemetry,u as terminal,a as ultraPrePrompt,l as webhooks};
@@ -0,0 +1 @@
1
+ import{n as e}from"./chunk-CilyBKbf.js";var t=e({appearance:()=>m,budget:()=>c,codeSection:()=>p,default:()=>_,desktop:()=>l,errors:()=>i,language:()=>n,mobile:()=>h,notifications:()=>u,page:()=>r,pairDevice:()=>g,prePrompt:()=>o,telemetry:()=>a,terminal:()=>f,ultraPrePrompt:()=>s,webhooks:()=>d}),n={title:`Language`,description:`Desktop-wide UI language. Applies instantly — no restart needed.`,selectLabel:`Interface language`,updateFailed:`Could not save the language preference`},r={title:`Project Settings`},i={saveFailed:`Failed to save: {{message}}`},a={title:`Pipeline Telemetry`,description:`Capture token usage, phase durations, and subagent activity for diagnostic export. Off by default.`,toggleLabel:`Enable pipeline telemetry`,toggleDescription:`When on, OTEL data from pipeline jobs is captured locally. Use the <mono>Export diagnostic</mono> button on any job card to download.`,enabled:`Pipeline telemetry enabled`,disabled:`Pipeline telemetry disabled`,saveFailed:`Failed to save telemetry setting`},o={title:`Rail Pre-prompt`,description:`Extra project-specific instructions appended to implement and batch-implement rail jobs after the ticket context and before execution.`,label:`Pre-prompt`,placeholder:`Example: Prefer incremental changes, keep migrations backward compatible, and add tests for every rail change.`,helper:`Use this for stable project guidance that should accompany every rail implementation run.`,saveButton:`Save pre-prompt`,cleared:`Pre-prompt cleared`,saved:`Pre-prompt saved`,saveFailed:`Failed to save pre-prompt`},s={title:`Ultracode pre-prompt`,description:`Instruction sent to Claude in Ultracode (Claude-only rails). Ultracode skips the OpenSpec pipeline — it hands Claude this pre-prompt plus the spec text and lets it implement autonomously. Leave blank to use the built-in default.`,label:`Ultra pre-prompt`,placeholder:`Leave blank to use the default Ultracode instruction.`,helper:`The spec text is appended automatically after this pre-prompt. Empty = default.`,saveButton:`Save Ultra pre-prompt`,resetToDefault:`Ultra pre-prompt reset to default`,saved:`Ultra pre-prompt saved`,saveFailed:`Failed to save Ultra pre-prompt`},c={title:`Budget`,description:`Set a daily spend cap for this project. The queue auto-pauses when the limit is hit.`,dailyLabel:`Daily budget (USD)`,dailyHelper:`Leave blank to disable. Spend is calculated over the last 24 hours.`,dailyPlaceholder:`e.g. 5.00`,perJobLabel:`Per-job cost alert (USD)`,perJobHelper:`Alert when a single job in this project exceeds this amount.`,perJobPlaceholder:`e.g. 0.50`,invalidNumber:`Enter a positive number or leave blank to disable`,dailyRemoved:`Daily budget removed`,dailySet:"Daily budget set to ${{amount}}",perJobAlertDisabled:`Per-job cost alert disabled`,alertSet:"Alert set for jobs over ${{amount}}",saveBudgetFailed:`Failed to save budget`,saveThresholdFailed:`Failed to save threshold`},l={title:`Desktop Settings`,description:`Manage registered projects and view Desktop information.`,registeredProjects:`Registered Projects`,noProjects:`No projects registered yet`,techUrlDescription:`Base URL for the specrails-tech API (default: http://localhost:3000)`,techUrlSaved:`specrails-tech URL saved`,techUrlSaveFailed:`Failed to save URL`,budgetAlertsHeading:`Budget & Alerts`,dailyBudgetLabel:`Desktop daily budget (USD)`,dailyBudgetHelper:`Global daily spend limit across all projects. Queues auto-pause when exceeded.`,dailyBudgetPlaceholder:`e.g. 10.00`,perJobHelper:`Alert when a single job exceeds this amount. Leave blank to disable.`,costAlertsDisabled:`Cost alerts disabled`,dailyBudgetRemoved:`Desktop daily budget removed`,dailyBudgetSet:"Desktop daily budget set to ${{amount}}",dailyBudgetSaveFailed:`Failed to save Desktop daily budget`,projectRemoved:`Project removed`,projectRemoveFailed:`Failed to remove project`,onboardingHeading:`Onboarding`,platformTour:`Platform Tour`,platformTourDescription:`Replay the welcome wizard to review key features.`,replayTour:`Replay Tour`,terminalPanelHeading:`Terminal Panel`,infoHeading:`Desktop Information`,infoPort:`Port`,infoProjects:`Projects`,infoDb:`Desktop DB`},u={heading:`OS Notifications`,description:`Show native desktop notifications when jobs complete or fail. Notifications only appear when the tab is not focused.`,enableLabel:`Enable OS Notifications`,notifyOn:`Notify on:`,filterAll:`All (completed & failed)`,filterCompleted:`Completed only`,filterFailed:`Failed only`,enabledToast:`OS notifications enabled`,disabledToast:`OS notifications disabled`},d={heading:`Outbound Webhooks`,description:`Notify external tools (Slack, Zapier, CI/CD) on Desktop events. Requests are signed via <code>X-Specrails-Signature</code> when a secret is set.`,eventJobCompleted:`Job completed`,eventJobFailed:`Job failed`,eventDailyBudgetExceeded:`Daily budget exceeded`,statusOn:`on`,statusOff:`off`,disable:`Disable`,enable:`Enable`,sendTestPing:`Send test ping`,addHeading:`Add webhook`,secretPlaceholder:`Signing secret (optional)`,addButton:`Add Webhook`,urlRequired:`URL is required`,selectEvent:`Select at least one event`,added:`Webhook added`,addFailed:`Failed to add webhook`,updateFailed:`Failed to update webhook`,removed:`Webhook removed`,removeFailed:`Failed to remove webhook`,testPingSent:`Test ping sent`,testPingFailed:`Failed to send test ping`},f={title:`Terminal panel`,desktopDescription:`Desktop-wide defaults applied to every project unless a per-project override is set.`,projectDescription:`Per-project overrides for the terminal panel. Leave a field unchanged to inherit the Desktop default.`,fontFamily:`Font family`,fontSize:`Font size ({{min}}–{{max}})`,renderMode:`Render mode`,copyOnSelect:`Copy on select`,shellIntegration:`Shell integration (OSC 133 marks)`,notifyLongRunning:`Notify on long-running commands`,longCommandThreshold:`Long-command threshold (ms)`,imageRendering:`Inline image rendering (Sixel + iTerm2)`,browserShortcutUrl:`Browser shortcut URL`,quickScript:`Quick script (pasted into active terminal — Enter manually)`,reset:`Reset`,unsavedChanges:`Unsaved changes`,clearOverride:`Clear override`,clear:`Clear`,inheritingDefault:`Inheriting Desktop default`,nothingToSave:`Nothing to save`,saved:`Terminal settings saved`},p={heading:`Code section`,summaryLanguage:`Summary language`,monthlyBudget:`Monthly budget (USD)`,budgetHelper:"Cap on `surface=file-summary` spend per calendar month. User-initiated regenerations can override."},m={heading:`Appearance`,themeGroupLabel:`Theme`,currentlyActive:`Currently active`,updateFailed:`Failed to update theme`},h={heading:`Mobile companion`,description:`Control Specrails from the SpecRails Companion app on your phone, 100% over your local network. Off by default.`,accessOn:`Mobile access on`,accessOff:`Mobile access off`,listeningOnPort:`Listening on port {{port}}`,notListening:`Not listening`,turnOn:`Turn on`,turnOff:`Turn off`,pairDevice:`Pair device`,reset:`Reset`,resetConfirm:`Reset the mobile identity? Every paired device will be revoked and must pair again.`,identityReset:`Mobile identity reset`,enableFailed:`Could not enable mobile access: {{message}}`,disableFailed:`Could not disable mobile access: {{message}}`,windowsFirewall:`Windows Firewall will ask to allow the SpecRails server on first enable — choose “Allow on private networks”.`,pairedDevices:`Paired devices`,noDevices:`No devices paired yet.`,revokeDevice:`Revoke {{name}}`},g={title:`Pair a device`,description:`Open SpecRails Companion on your phone and scan this code. It only works while this dialog is open.`,startFailed:`Could not start pairing: {{error}}`,wantsToPair:`<b>{{name}}</b> ({{platform}}) wants to pair.`,deny:`Deny`,approve:`Approve`,paired:`✓ Paired`,waiting:`Waiting for a device… (on {{host}}:{{port}})`,thisDesktop:`this computer`,copyCode:`Copy code (for "Enter manually")`,pairedToast:`Device paired`,approveFailed:`Approve failed: {{message}}`,codeCopied:`Pairing code copied`},_={language:n,page:r,errors:i,telemetry:a,prePrompt:o,ultraPrePrompt:s,budget:c,desktop:l,notifications:u,webhooks:d,terminal:f,codeSection:p,appearance:m,mobile:h,pairDevice:g};export{t};
@@ -0,0 +1 @@
1
+ var e={title:`Lingua`,description:`Lingua della UI per tutto Desktop. Si applica all'istante — nessun riavvio necessario.`,selectLabel:`Lingua dell'interfaccia`,updateFailed:`Impossibile salvare la preferenza di lingua`},t={title:`Impostazioni progetto`},n={saveFailed:`Salvataggio non riuscito: {{message}}`},r={title:`Telemetria della pipeline`,description:`Cattura l'uso dei token, le durate delle fasi e l'attività dei subagent per l'export diagnostico. Disattivata per impostazione predefinita.`,toggleLabel:`Abilita la telemetria della pipeline`,toggleDescription:`Quando attiva, i dati OTEL dei job della pipeline vengono catturati localmente. Usa il pulsante <mono>Esporta diagnostica</mono> su qualsiasi card di job per scaricarli.`,enabled:`Telemetria della pipeline abilitata`,disabled:`Telemetria della pipeline disabilitata`,saveFailed:`Salvataggio dell'impostazione di telemetria non riuscito`},i={title:`Pre-prompt dei rail`,description:`Istruzioni extra specifiche del progetto aggiunte ai job rail di implement e batch-implement dopo il contesto del ticket e prima dell'esecuzione.`,label:`Pre-prompt`,placeholder:`Esempio: preferisci modifiche incrementali, mantieni le migrazioni retrocompatibili e aggiungi test per ogni modifica del rail.`,helper:`Usalo per indicazioni stabili di progetto che devono accompagnare ogni run di implementazione su rail.`,saveButton:`Salva pre-prompt`,cleared:`Pre-prompt rimosso`,saved:`Pre-prompt salvato`,saveFailed:`Salvataggio del pre-prompt non riuscito`},a={title:`Pre-prompt Ultracode`,description:`Istruzione inviata a Claude in Ultracode (rail solo Claude). Ultracode salta la pipeline OpenSpec — consegna a Claude questo pre-prompt più il testo della spec e lo lascia implementare in autonomia. Lascia vuoto per usare il default integrato.`,label:`Pre-prompt Ultra`,placeholder:`Lascia vuoto per usare l'istruzione Ultracode predefinita.`,helper:`Il testo della spec viene aggiunto automaticamente dopo questo pre-prompt. Vuoto = default.`,saveButton:`Salva pre-prompt Ultra`,resetToDefault:`Pre-prompt Ultra ripristinato al default`,saved:`Pre-prompt Ultra salvato`,saveFailed:`Salvataggio del pre-prompt Ultra non riuscito`},o={title:`Budget`,description:`Imposta un tetto di spesa giornaliero per questo progetto. La coda si mette in pausa automaticamente al raggiungimento del limite.`,dailyLabel:`Budget giornaliero (USD)`,dailyHelper:`Lascia vuoto per disabilitare. La spesa è calcolata sulle ultime 24 ore.`,dailyPlaceholder:`es. 5.00`,perJobLabel:`Avviso di costo per job (USD)`,perJobHelper:`Avvisa quando un singolo job di questo progetto supera questo importo.`,perJobPlaceholder:`es. 0.50`,invalidNumber:`Inserisci un numero positivo o lascia vuoto per disabilitare`,dailyRemoved:`Budget giornaliero rimosso`,dailySet:"Budget giornaliero impostato a ${{amount}}",perJobAlertDisabled:`Avviso di costo per job disabilitato`,alertSet:"Avviso impostato per i job oltre ${{amount}}",saveBudgetFailed:`Salvataggio del budget non riuscito`,saveThresholdFailed:`Salvataggio della soglia non riuscito`},s={title:`Impostazioni Desktop`,description:`Gestisci i progetti registrati e visualizza le informazioni di Desktop.`,registeredProjects:`Progetti registrati`,noProjects:`Nessun progetto ancora registrato`,techUrlDescription:`URL base per l'API specrails-tech (default: http://localhost:3000)`,techUrlSaved:`URL di specrails-tech salvato`,techUrlSaveFailed:`Salvataggio dell'URL non riuscito`,budgetAlertsHeading:`Budget e avvisi`,dailyBudgetLabel:`Budget giornaliero di Desktop (USD)`,dailyBudgetHelper:`Limite di spesa giornaliero globale su tutti i progetti. Le code si mettono in pausa automaticamente al superamento.`,dailyBudgetPlaceholder:`es. 10.00`,perJobHelper:`Avvisa quando un singolo job supera questo importo. Lascia vuoto per disabilitare.`,costAlertsDisabled:`Avvisi di costo disabilitati`,dailyBudgetRemoved:`Budget giornaliero di Desktop rimosso`,dailyBudgetSet:"Budget giornaliero di Desktop impostato a ${{amount}}",dailyBudgetSaveFailed:`Salvataggio del budget giornaliero di Desktop non riuscito`,projectRemoved:`Progetto rimosso`,projectRemoveFailed:`Rimozione del progetto non riuscita`,onboardingHeading:`Onboarding`,platformTour:`Tour della piattaforma`,platformTourDescription:`Rivedi il wizard di benvenuto per ripassare le funzionalità principali.`,replayTour:`Rivedi il tour`,terminalPanelHeading:`Pannello terminale`,infoHeading:`Informazioni Desktop`,infoPort:`Porta`,infoProjects:`Progetti`,infoDb:`DB di Desktop`},c={heading:`Notifiche di sistema`,description:`Mostra notifiche desktop native quando i job vengono completati o falliscono. Le notifiche appaiono solo quando la scheda non è in primo piano.`,enableLabel:`Abilita le notifiche di sistema`,notifyOn:`Notifica per:`,filterAll:`Tutti (completati e falliti)`,filterCompleted:`Solo completati`,filterFailed:`Solo falliti`,enabledToast:`Notifiche di sistema abilitate`,disabledToast:`Notifiche di sistema disabilitate`},l={heading:`Webhook in uscita`,description:`Notifica strumenti esterni (Slack, Zapier, CI/CD) sugli eventi di Desktop. Le richieste sono firmate via <code>X-Specrails-Signature</code> quando è impostato un secret.`,eventJobCompleted:`Job completato`,eventJobFailed:`Job fallito`,eventDailyBudgetExceeded:`Budget giornaliero superato`,statusOn:`on`,statusOff:`off`,disable:`Disabilita`,enable:`Abilita`,sendTestPing:`Invia ping di test`,addHeading:`Aggiungi webhook`,secretPlaceholder:`Secret di firma (facoltativo)`,addButton:`Aggiungi webhook`,urlRequired:`L'URL è obbligatorio`,selectEvent:`Seleziona almeno un evento`,added:`Webhook aggiunto`,addFailed:`Aggiunta del webhook non riuscita`,updateFailed:`Aggiornamento del webhook non riuscito`,removed:`Webhook rimosso`,removeFailed:`Rimozione del webhook non riuscita`,testPingSent:`Ping di test inviato`,testPingFailed:`Invio del ping di test non riuscito`},u={title:`Pannello terminale`,desktopDescription:`Default a livello di Desktop applicati a ogni progetto, salvo override per progetto.`,projectDescription:`Override per progetto del pannello terminale. Lascia un campo invariato per ereditare il default di Desktop.`,fontFamily:`Famiglia di font`,fontSize:`Dimensione font ({{min}}–{{max}})`,renderMode:`Modalità di rendering`,copyOnSelect:`Copia alla selezione`,shellIntegration:`Integrazione shell (marcatori OSC 133)`,notifyLongRunning:`Notifica per comandi a lunga esecuzione`,longCommandThreshold:`Soglia comandi lunghi (ms)`,imageRendering:`Rendering immagini inline (Sixel + iTerm2)`,browserShortcutUrl:`URL scorciatoia browser`,quickScript:`Script rapido (incollato nel terminale attivo — premi Invio manualmente)`,reset:`Reimposta`,unsavedChanges:`Modifiche non salvate`,clearOverride:`Rimuovi override`,clear:`Rimuovi`,inheritingDefault:`Eredita il default di Desktop`,nothingToSave:`Niente da salvare`,saved:`Impostazioni del terminale salvate`},d={heading:`Sezione Code`,summaryLanguage:`Lingua dei riassunti`,monthlyBudget:`Budget mensile (USD)`,budgetHelper:"Tetto alla spesa `surface=file-summary` per mese di calendario. Le rigenerazioni avviate dall'utente possono superarlo."},f={heading:`Aspetto`,themeGroupLabel:`Tema`,currentlyActive:`Attualmente attivo`,updateFailed:`Aggiornamento del tema non riuscito`},p={heading:`Companion mobile`,description:`Controlla Specrails dall'app SpecRails Companion sul tuo telefono, 100% sulla tua rete locale. Disattivato per impostazione predefinita.`,accessOn:`Accesso mobile attivo`,accessOff:`Accesso mobile disattivato`,listeningOnPort:`In ascolto sulla porta {{port}}`,notListening:`Non in ascolto`,turnOn:`Attiva`,turnOff:`Disattiva`,pairDevice:`Associa dispositivo`,reset:`Reimposta`,resetConfirm:`Reimpostare l'identità mobile? Ogni dispositivo associato verrà revocato e dovrà associarsi di nuovo.`,identityReset:`Identità mobile reimpostata`,enableFailed:`Impossibile abilitare l'accesso mobile: {{message}}`,disableFailed:`Impossibile disabilitare l'accesso mobile: {{message}}`,windowsFirewall:`Alla prima attivazione Windows Firewall chiederà di consentire il server SpecRails — scegli “Consenti su reti private”.`,pairedDevices:`Dispositivi associati`,noDevices:`Nessun dispositivo ancora associato.`,revokeDevice:`Revoca {{name}}`},m={title:`Associa un dispositivo`,description:`Apri SpecRails Companion sul telefono e scansiona questo codice. Funziona solo finché questa finestra di dialogo è aperta.`,startFailed:`Impossibile avviare l'associazione: {{error}}`,wantsToPair:`<b>{{name}}</b> ({{platform}}) vuole associarsi.`,deny:`Rifiuta`,approve:`Approva`,paired:`✓ Associato`,waiting:`In attesa di un dispositivo… (su {{host}}:{{port}})`,thisDesktop:`questo computer`,copyCode:`Copia il codice (per "Inserisci manualmente")`,pairedToast:`Dispositivo associato`,approveFailed:`Approvazione non riuscita: {{message}}`,codeCopied:`Codice di associazione copiato`},h={language:e,page:t,errors:n,telemetry:r,prePrompt:i,ultraPrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairDevice:m};export{f as appearance,o as budget,d as codeSection,h as default,s as desktop,n as errors,e as language,p as mobile,c as notifications,t as page,m as pairDevice,i as prePrompt,r as telemetry,u as terminal,a as ultraPrePrompt,l as webhooks};
@@ -0,0 +1 @@
1
+ var e={configureAgents:`Configurar agentes de {{provider}}`,configureSubtitle:`Escolha que agentes instalar e como executá-los.`,tabs:{agents:`Agentes`,models:`Modelos`},skipForNow:`Saltar por agora`,install:`Instalar`,nextProvider:`Seguinte: {{provider}}`,installingProvider:`A instalar {{provider}}…`,installingSpecrails:`A instalar o specrails...`,installingFromTemplates:`A instalar agentes a partir de templates`,waitingForOutput:`A aguardar output...`,checkpoints:{baseInstall:`Instalação base`,agentSelection:`Seleção de agentes`,agentGeneration:`Geração de agentes`},steps:{configure:`Configurar`},summary:{agents:`Agentes`,agentSkills:`Skills de agentes`,skills:`Skills`,openspecSkills:`Skills OpenSpec`,legacyRemoved_one:`Removido {{count}} comando legado <code>/specrails:*</code>`,legacyRemoved_other:`Removidos {{count}} comandos legados <code>/specrails:*</code>`},complete:{welcome:`Bem-vindo ao <spec>spec</spec><rails>rails</rails>`,configured:`<strong>{{projectName}}</strong> está agora configurado com fluxos de desenvolvimento assistidos por IA. Os seus agentes e comandos especializados estão prontos a usar.`,installedForEngines_one:`Instalado para {{count}} motor`,installedForEngines_other:`Instalado para {{count}} motores`,learnMore:`Saiba como tirar o máximo partido do specrails:`,continueToProject:`Continuar para o projeto`},error:{title:`Falha na configuração`,skipSetup:`Saltar configuração`,prereqMissing:`A configuração do SpecRails precisa de Node.js, npm, npx e Git disponíveis no PATH antes de poder instalar este projeto.`,prereqRetryHint:`Instale as ferramentas em falta, reinicie o Specrails e tente a configuração novamente.`}},t={title:`Adicionar projeto`,description:`Registe um diretório de projeto para o gerir a partir do Specrails.`,noProviderDetected:`Nenhuma CLI de IA detetada. Instale primeiro o Claude Code ou a Codex CLI.`,pathLabel:`Caminho do projeto`,pathPlaceholder:`/Users/eu/o-meu-projeto`,pathHint:`Caminho absoluto para a raiz do projeto`,browseForFolder:`Procurar pasta`,selectProjectFolder:`Selecionar a pasta do projeto`,nameLabel:`Nome a apresentar`,optional:`(opcional)`,namePlaceholder:`O Meu Projeto`,nameHint:`Por omissão, o nome do diretório`,providersLabel:`Fornecedores de IA`,notFound:`não encontrado`,multiProviderHint:`Ambos os motores serão configurados. O primeiro é o predefinido do projeto. Não pode ser alterado após a criação.`,singleProviderHint:`Não pode ser alterado depois de o projeto ser criado.`,adding:`A adicionar...`,submit:`Adicionar projeto`,toolsRequired_one:`{{tools}} é necessário para adicionar um projeto`,toolsRequired_other:`{{tools}} são necessários para adicionar um projeto`,errors:{pathRequired:`O caminho do projeto é obrigatório`,selectProvider:`Selecione pelo menos um fornecedor de IA`,addFailed:`Falha ao adicionar o projeto`},toasts:{registered:`Projeto "{{name}}" registado`}},n={corruptedBundle:`bundle corrompido — reinstale a app`,notInstalled:`não instalado`,failedToExecute:`encontrado mas falhou ao executar`,failedToExecuteAt:`encontrado em {{path}} mas falhou ao executar`,failedToExecuteWithError:`encontrado mas falhou ao executar ({{error}})`,failedToExecuteAtWithError:`encontrado em {{path}} mas falhou ao executar ({{error}})`,needsMinimum:`{{version}} encontrado — requer {{minVersion}}+`,unknownVersion:`desconhecida`,installedLabel:`instalado`,verifyError:`Não foi possível verificar as ferramentas de desenvolvimento localmente — a instalação validará.`,allDetected:`Todas as ferramentas necessárias detetadas`,bundleCorruptedTitle:`Bundle da app corrompido`,toolsRequired_one:`{{count}} ferramenta de desenvolvimento necessária`,toolsRequired_other:`{{count}} ferramentas de desenvolvimento necessárias`,reinstallHint:`Reinstale a app Specrails para restaurar as ferramentas incluídas.`,installMissingHint:`Instale as ferramentas em falta para continuar.`,moreInfo:`Mais informações`,bundledBadge:`incluído`},r={title:`Instalar ferramentas de desenvolvimento`,description:`O SpecRails precisa de Node.js, npm, npx e Git no PATH. Escolha o snippet para o seu SO, execute-o e clique em "Já instalei, verificar novamente".`,darwin:{intro:`O Homebrew instala ambas as ferramentas numa só linha. Se não tiver o brew, use os downloads oficiais.`,installNodeGit:`Instalar Node.js e Git via Homebrew`},win32:{intro:`O winget vem incluído no Windows 11 e nas versões recentes do Windows 10. Abra o PowerShell ou o Terminal e execute:`,installNode:`Instalar Node.js LTS`,installGit:`Instalar Git`,note:`Após a instalação, reinicie o Specrails para que o Windows atualize o PATH.`},linux:{intro:`Use o gestor de pacotes da sua distribuição:`,debian:`Debian / Ubuntu`,fedora:`Fedora / RHEL`},links:{nodeOfficial:`Node.js (oficial)`,gitOfficial:`Git (oficial)`,gitWindows:`Git para Windows (oficial)`},showOtherPlatforms:`Mostrar outras plataformas`,hideOtherPlatforms:`Ocultar outras plataformas`,recheck:`Já instalei, verificar novamente`,diagnostics:{copy:`Copiar diagnóstico`,copied:`Diagnóstico copiado`,failed:`Falha ao copiar`},corrupted:{title:`Bundle da app corrompido`,description:`Não foi possível verificar uma ou mais ferramentas incluídas (Node.js, Git).`,body:`Esta ferramenta é distribuída com a app Specrails e não pode ser instalada separadamente. Se vir esta mensagem, o bundle da app pode estar corrompido. Reinstale o Specrails.`}},i={title:`Progresso da configuração`,progress:`{{done}} de {{total}} concluídos`,rawLog_one:`Log em bruto ({{count}} linha)`,rawLog_other:`Log em bruto ({{count}} linhas)`},a={title:`Assistente de configuração`,subtitle:`Responda às perguntas para configurar o seu projeto`,settingUp:`A configurar o seu projeto...`,placeholder:`Escreva uma resposta...`,keyboardHint:`Enter para enviar, Shift+Enter para nova linha`},o={title:`Bem-vindo ao <spec>spec</spec><rails>rails</rails>`,description:`O Specrails gere vários projetos a partir de uma única interface. Adicione o seu primeiro projeto para começar.`,addFirstProject:`Adicione o seu primeiro projeto`},s={productTour:`Tour do produto`,stepCount:`Passo {{current}} de {{total}}`,goToStep:`Ir para o passo {{step}}: {{label}}`,stepLabel:`Passo {{step}}`,dontShowAgain:`Não mostrar novamente`,skipTour:`Saltar tour`,getStarted:`Começar`,flow:{addSpec:`Adicionar Spec`,dropInRail:`Largar num Rail`,hitPlay:`Carregar em Play`,ship:`Ship`,architect:`Arquiteto`,developer:`Developer`,reviewer:`Revisor`},welcome:{nav:`Boas-vindas`,title:`Bem-vindo ao Specrails`,subtitle:`O seu cockpit local para entregar software com agentes de IA`,intro:`O Specrails transforma uma ideia em código entregue — e permite-lhe <b>ver, orientar e confiar</b> em cada passo. Esboce uma spec a conversar com uma IA, largue-a num rail de execução e carregue em Play. O pipeline trata da arquitetura, implementação, revisão e do pull request, transmitindo o seu trabalho em direto durante todo o processo.`,coreLoopLabel:`O ciclo central`,flowCaption:`Cada spec flui automaticamente por <b>Arquiteto → Developer → Revisor → Ship</b>.`,localNote:`<b>100% local · um único utilizador · sem contas.</b> Tudo corre na sua máquina. O seu código nunca sai do portátil a menos que <i>você</i> lance um agente sobre ele.`,tourNote:`Este tour rápido percorre tudo o que a aplicação consegue fazer — cerca de um minuto.`},authorSpecs:{nav:`Criar specs`,title:`Transforme ideias em specs`,subtitle:`Seis formas de capturar exatamente o que quer construir`,intro:`Uma <b>spec</b> é uma descrição do trabalho que quer ver feito. Crie-a como for mais conveniente no momento — de uma linha rápida a uma conversa completa com a IA.`,exploreLabel:`Explore — conversar`,exploreBody:`Descreva o que quer num chat; um rascunho em direto é reconstruído a cada turno. Um slider de presets ajusta quanto contexto do projeto a IA vê — desde apenas a sua mensagem até à base de código completa mais os seus servidores MCP.`,quickLabel:`Quick — num só passo`,quickBody:`Já sabe o que quer? Gere uma spec completa num único turno. Opcionalmente, enriqueça-a com uma Contract Layer: nomes exatos, formatos de dados, invariantes e uma lista de ficheiros a tocar, para que os agentes não reinventem nada.`,websiteLabel:`A partir de um website`,websiteBody:`Abre um browser embutido. Selecione um elemento com o cursor ou desenhe um retângulo, e a captura de ecrã, o DOM e o CSS aplicado tornam-se anexos. A versão desktop inclui o seu próprio Chromium, por isso funciona offline.`,smashLabel:`Faça SMASH a um épico grande`,smashBody:`Exploda uma spec grande numa família de sub-specs mais pequenas com um clique — cada filha leva um resumo curto no seu cartão.`,draftsLabel:`Rascunhos e Continuar a Editar`,draftsBody:`Estacione uma exploração em curso como ticket de rascunho e retome-a mais tarde; reabra qualquer spec no Explore para continuar a refiná-la.`,compareLabel:`Comparar lado a lado`,compareBody:`Arraste uma spec até à borda do ecrã e desliza um seletor com as suas outras specs — reveja duas em conjunto, ao estilo tablet.`},rails:{nav:`Executar em rails`,title:`Execute o pipeline em rails`,subtitle:`Organize specs em faixas e depois lance os agentes`,intro:`O lado direito do Dashboard são os seus <b>Rails</b> — faixas de execução. Arraste um cartão de spec para um rail e prima <play>▶ Play</play> para lançar um job de implementação.`,jobLabel:`O que cada job executa`,flowCaption:`Cada fase transmite os seus logs em direto enquanto trabalha.`,modeLabel:`Escolha como um rail corre`,modeBody:`Cada rail escolhe um modo: <b>Implement</b> (o pipeline estruturado completo), <b>Batch</b> (várias specs em sequência) ou <b>Ultracode</b> (o Claude trabalha de forma autónoma, sem pipeline fixo).`,profilesLabel:`Perfis de agentes`,profilesBody:`Um catálogo declarativo por projeto que decide quais agentes correm e que modelo cada um usa — escolhido por rail e congelado por job para que o trabalho concorrente fique isolado.`,jobDetailLabel:`Detalhe do job em direto`,jobDetailBody:`Cada job mostra um cabeçalho com a identidade do ticket, um contador de duração em direto e contagens de turnos/tokens em execução, com o custo definitivo resolvido no fim.`,isolationLabel:`Muitos projetos, isolados`,isolationBody:`Cada projeto tem a sua própria base de dados e fila de jobs. Execute projetos diferentes ao mesmo tempo e alterne entre eles na barra lateral esquerda — a sua posição é memorizada por projeto.`},providers:{nav:`O seu agente`,title:`Traga o seu próprio agente`,subtitle:`Claude Code e Codex, como motores de primeira classe`,intro:`A aplicação trata o <b>Claude Code</b> e a <b>Codex CLI</b> como motores intercambiáveis por trás de um único contrato. Um projeto pode instalar um ou ambos — a escolha é feita na instalação.`,table:{capability:`Capacidade`,streamingResume:`Streaming e retoma de sessão`,native:`Nativo`,costReporting:`Reporte de custos`,providerBilled:`Faturado pelo fornecedor`,estimated:`Estimado (~)`,telemetry:`Telemetria (OTEL)`,synthesized:`Sintetizada`,agentProfiles:`Perfis de agentes`},calloutLabel:`Quando ambos estão instalados`,calloutBody:`Escolha o motor <b>por spec, por rail ou por lançamento de terminal</b>. A aplicação memoriza a sua última escolha por projeto. O custo do Codex é estimado a partir de uma tabela de preços local e sempre sinalizado com um <mono>~</mono>.`},cost:{nav:`Acompanhar custos`,title:`Acompanhe cada cêntimo`,subtitle:`Cada invocação faturável, registada e visualizada`,intro:`Cada invocação de IA — em rails, Quick, Explore, edições de IA, SMASH e resumos de ficheiros — é registada para <b>Claude e Codex</b>. Acabou-se adivinhar quanto custam os agentes.`,analyticsLabel:`Página de Analytics`,analyticsBody:`Um hero de burn-rate, cronologia diária, top tickets, divisão por modelo e um scatter de custo vs. turnos. Filtre por período (7d / 30d / 90d / Tudo) e por superfície.`,perTicketLabel:`Gastos por ticket`,perTicketBody:`O detalhe de cada spec mostra quanto custou e quantos turnos demorou, com deep link para Analytics filtrado para esse ticket.`,honestLabel:`Números honestos`,honestBody:`O custo do Claude é o valor faturado pelo fornecedor; o do Codex é estimado e sinalizado com <mono>~</mono>. Os totais de tokens incluem os níveis de cache, por isso os valores batem mesmo certo.`,budgetsLabel:`Orçamentos e alertas`,budgetsBody:`Defina um orçamento diário e um alerta de custo por job; a aplicação pausa automaticamente a fila quando ultrapassa o limite. Exporte tudo para CSV ou JSON.`},workspace:{nav:`Espaço de trabalho`,title:`Faça dele o seu espaço de trabalho`,subtitle:`Tudo o que precisa sem sair da janela`,terminalLabel:`Painel de terminal`,terminalBody:`Um terminal a sério ao estilo do VS Code na parte inferior (<mod></mod> <j></j>) — renderização WebGL, pesquisa, imagens inline, arrastar e largar caminhos e integração com a shell. Até 10 sessões por projeto.`,codeLabel:`Explorador de código`,codeBody:`Uma árvore de ficheiros só de leitura e um visualizador Monaco com resumos de IA em linguagem simples e chips de proveniência “tocado por IA”, para que qualquer pessoa acompanhe o que mudou e porquê.`,integrationsLabel:`Integrações`,integrationsBody:`Um marketplace por projeto de integrações MCP — a navegação semântica de código Serena vem incluída. As instalações são aditivas: adicionar uma nunca perturba outra.`,themesLabel:`Temas`,themesBody:`Cinco temas incorporados — specrails (predefinido), dracula, aurora-light, obsidian-dark e matrix — aplicados antes de a UI desenhar, por isso não há flash. Mude-os em Definições → Aspeto.`,chatsLabel:`Chats minimizáveis`,chatsBody:`Estacione uma sessão de Explore ou AI Edit num chip da dock e retome-a mais tarde — nunca se perde entre refreshes ou trocas de projeto.`,desktopLabel:`Desktop ou browser`,desktopBody:`Use o Specrails no browser, ou descarregue a app desktop assinada (macOS e Windows) que inclui o seu próprio servidor e runtimes.`},moveFast:{nav:`Avançar depressa`,title:`Avance à velocidade do pensamento`,subtitle:`Primeiro o teclado, em todo o lado`,paletteLabel:`Paleta de comandos`,paletteShortcut:`<f>Prima</f> <mod></mod> <m>+</m> <k></k> <m>em qualquer lado</m>`,paletteBody:`Mude de projeto, execute comandos de spec, salte para qualquer página e encontre jobs recentes — tudo com pesquisa difusa.`,terminalLabel:`Painel de terminal`,terminalBody:`Alterne com <mod></mod> <j></j>.`,shortcutsLabel:`Todos os atalhos`,shortcutsBody:`Prima <q></q> para ver a folha de consulta completa.`,chatLabel:`Barra lateral de chat`,chatBody:`Alterne a barra lateral direita com <mod></mod> <bkey></bkey>.`,projectsLabel:`Barra lateral de projetos`,projectsBody:`Alterne a barra lateral Arc esquerda com <alt></alt> <mod></mod> <bkey></bkey>.`,outro:`<b>E o tour fica por aqui.</b> Adicione um projeto na barra lateral esquerda e entregue a sua primeira spec. Pode reabrir esta apresentação a qualquer momento nas Definições.`}},c={wizard:e,addProject:t,prerequisites:n,instructions:r,checkpoints:i,setupChat:a,welcome:o,onboarding:s};export{t as addProject,i as checkpoints,c as default,r as instructions,s as onboarding,n as prerequisites,a as setupChat,o as welcome,e as wizard};
@@ -0,0 +1 @@
1
+ var e={configureAgents:`Configura gli agenti {{provider}}`,configureSubtitle:`Scegli quali agenti installare e come eseguirli.`,tabs:{agents:`Agenti`,models:`Modelli`},skipForNow:`Salta per ora`,install:`Installa`,nextProvider:`Avanti: {{provider}}`,installingProvider:`Installazione di {{provider}}…`,installingSpecrails:`Installazione di specrails...`,installingFromTemplates:`Installazione degli agenti dai template`,waitingForOutput:`In attesa dell'output...`,checkpoints:{baseInstall:`Installazione di base`,agentSelection:`Selezione degli agenti`,agentGeneration:`Generazione degli agenti`},steps:{configure:`Configura`},summary:{agents:`Agenti`,agentSkills:`Skill degli agenti`,skills:`Skill`,openspecSkills:`Skill OpenSpec`,legacyRemoved_one:`Rimosso {{count}} comando legacy <code>/specrails:*</code>`,legacyRemoved_other:`Rimossi {{count}} comandi legacy <code>/specrails:*</code>`},complete:{welcome:`Benvenuto in <spec>spec</spec><rails>rails</rails>`,configured:`<strong>{{projectName}}</strong> è ora configurato con workflow di sviluppo basati sull'IA. I tuoi agenti specializzati e i comandi sono pronti all'uso.`,installedForEngines_one:`Installato per {{count}} engine`,installedForEngines_other:`Installato per {{count}} engine`,learnMore:`Scopri come ottenere il massimo da specrails:`,continueToProject:`Continua al progetto`},error:{title:`Setup non riuscito`,skipSetup:`Salta il setup`,prereqMissing:`Il setup di SpecRails richiede Node.js, npm, npx e Git disponibili sul PATH prima di poter installare questo progetto.`,prereqRetryHint:`Installa gli strumenti mancanti, riavvia Specrails e poi riprova il setup.`}},t={title:`Aggiungi progetto`,description:`Registra una directory di progetto per gestirla da Specrails.`,noProviderDetected:`Nessuna CLI IA rilevata. Installa prima Claude Code o Codex CLI.`,pathLabel:`Percorso del progetto`,pathPlaceholder:`/Users/me/my-project`,pathHint:`Percorso assoluto alla root del progetto`,browseForFolder:`Sfoglia cartelle`,selectProjectFolder:`Seleziona la cartella del progetto`,nameLabel:`Nome visualizzato`,optional:`(facoltativo)`,namePlaceholder:`Il mio progetto`,nameHint:`Per impostazione predefinita usa il nome della directory`,providersLabel:`Provider IA`,notFound:`non trovato`,multiProviderHint:`Verranno configurati entrambi gli engine. Il primo è il predefinito del progetto. Non modificabile dopo la creazione.`,singleProviderHint:`Non modificabile dopo la creazione del progetto.`,adding:`Aggiunta in corso...`,submit:`Aggiungi progetto`,toolsRequired_one:`{{tools}} è richiesto per aggiungere un progetto`,toolsRequired_other:`{{tools}} sono richiesti per aggiungere un progetto`,errors:{pathRequired:`Il percorso del progetto è obbligatorio`,selectProvider:`Seleziona almeno un provider IA`,addFailed:`Aggiunta del progetto non riuscita`},toasts:{registered:`Progetto "{{name}}" registrato`}},n={corruptedBundle:`bundle corrotto — reinstalla l'app`,notInstalled:`non installato`,failedToExecute:`trovato ma esecuzione non riuscita`,failedToExecuteAt:`trovato in {{path}} ma esecuzione non riuscita`,failedToExecuteWithError:`trovato ma esecuzione non riuscita ({{error}})`,failedToExecuteAtWithError:`trovato in {{path}} ma esecuzione non riuscita ({{error}})`,needsMinimum:`{{version}} trovata — serve {{minVersion}}+`,unknownVersion:`sconosciuta`,installedLabel:`installato`,verifyError:`Impossibile verificare localmente gli strumenti di sviluppo — l'installazione li convaliderà.`,allDetected:`Tutti gli strumenti richiesti rilevati`,bundleCorruptedTitle:`Bundle dell'app corrotto`,toolsRequired_one:`{{count}} strumento di sviluppo richiesto`,toolsRequired_other:`{{count}} strumenti di sviluppo richiesti`,reinstallHint:`Reinstalla l'app Specrails per ripristinare gli strumenti inclusi.`,installMissingHint:`Installa gli strumenti mancanti per continuare.`,moreInfo:`Maggiori informazioni`,bundledBadge:`incluso`},r={title:`Installa gli strumenti di sviluppo`,description:`SpecRails richiede Node.js, npm, npx e Git sul PATH. Scegli lo snippet per il tuo sistema operativo, eseguilo e poi clicca "L'ho installato, ricontrolla".`,darwin:{intro:`Con Homebrew ottieni entrambi gli strumenti in una riga. Se non hai brew, usa i download ufficiali.`,installNodeGit:`Installa Node.js e Git con Homebrew`},win32:{intro:`Winget è incluso in Windows 11 e nelle versioni recenti di Windows 10. Apri PowerShell o il Terminale ed esegui:`,installNode:`Installa Node.js LTS`,installGit:`Installa Git`,note:`Dopo l'installazione, riavvia Specrails così Windows aggiorna il PATH.`},linux:{intro:`Usa il package manager della tua distro:`,debian:`Debian / Ubuntu`,fedora:`Fedora / RHEL`},links:{nodeOfficial:`Node.js (ufficiale)`,gitOfficial:`Git (ufficiale)`,gitWindows:`Git per Windows (ufficiale)`},showOtherPlatforms:`Mostra altre piattaforme`,hideOtherPlatforms:`Nascondi altre piattaforme`,recheck:`L'ho installato, ricontrolla`,diagnostics:{copy:`Copia diagnostica`,copied:`Diagnostica copiata`,failed:`Copia non riuscita`},corrupted:{title:`Bundle dell'app corrotto`,description:`Non è stato possibile verificare uno o più strumenti inclusi (Node.js, Git).`,body:`Questo strumento è incluso nell'app Specrails e non può essere installato separatamente. Se vedi questo messaggio, il bundle dell'app potrebbe essere corrotto. Reinstalla Specrails.`}},i={title:`Avanzamento del setup`,progress:`{{done}} di {{total}} completati`,rawLog_one:`Log grezzo ({{count}} riga)`,rawLog_other:`Log grezzo ({{count}} righe)`},a={title:`Assistente di setup`,subtitle:`Rispondi ai prompt per configurare il progetto`,settingUp:`Configurazione del progetto in corso...`,placeholder:`Scrivi una risposta...`,keyboardHint:`Invio per inviare, Shift+Invio per andare a capo`},o={title:`Benvenuto in <spec>spec</spec><rails>rails</rails>`,description:`Specrails gestisce più progetti da un'unica interfaccia. Aggiungi il tuo primo progetto per iniziare.`,addFirstProject:`Aggiungi il tuo primo progetto`},s={productTour:`Tour del prodotto`,stepCount:`Passo {{current}} di {{total}}`,goToStep:`Vai al passo {{step}}: {{label}}`,stepLabel:`Passo {{step}}`,dontShowAgain:`Non mostrare più`,skipTour:`Salta il tour`,getStarted:`Inizia`,flow:{addSpec:`Aggiungi Spec`,dropInRail:`Trascina su un Rail`,hitPlay:`Premi Play`,ship:`Ship`,architect:`Architetto`,developer:`Developer`,reviewer:`Reviewer`},welcome:{nav:`Benvenuto`,title:`Benvenuto in Specrails`,subtitle:`La tua cabina di pilotaggio locale per rilasciare software con agenti IA`,intro:`Specrails trasforma un'idea in codice rilasciato — e ti permette di <b>vedere, guidare e verificare</b> ogni passo. Abbozza una spec parlando con un'IA, trascinala su un rail di esecuzione e premi Play. La pipeline gestisce architettura, implementazione, review e la pull request, trasmettendo il proprio lavoro in diretta per tutto il tempo.`,coreLoopLabel:`Il ciclo fondamentale`,flowCaption:`Ogni spec passa automaticamente per <b>Architect → Developer → Reviewer → Ship</b>.`,localNote:`<b>100% locale · utente singolo · nessun account.</b> Tutto gira sulla tua macchina. Il tuo codice non lascia mai il laptop a meno che non sia <i>tu</i> a lanciarci sopra un agente.`,tourNote:`Questo breve tour mostra tutto ciò che l'app sa fare — circa un minuto.`},authorSpecs:{nav:`Scrivi le spec`,title:`Trasforma le idee in spec`,subtitle:`Sei modi per catturare esattamente cosa vuoi costruire`,intro:`Una <b>spec</b> è una descrizione del lavoro che vuoi far svolgere. Scrivila come preferisci sul momento — da una riga veloce a una conversazione completa con l'IA.`,exploreLabel:`Explore — conversa`,exploreBody:`Descrivi cosa vuoi in una chat; una bozza live si ricostruisce a ogni turno. Uno slider di preset regola quanto contesto del progetto vede l'IA — dal solo tuo messaggio fino all'intero codebase più i tuoi server MCP.`,quickLabel:`Quick — in un colpo solo`,quickBody:`Sai già cosa vuoi? Genera una spec completa in un solo turno. Facoltativamente arricchiscila con un Contract Layer: nomi esatti, forme dei dati, invarianti e un elenco dei file da toccare, così gli agenti non reinventano nulla.`,websiteLabel:`Da un sito web`,websiteBody:`Apre un browser integrato. Seleziona un elemento al passaggio del mouse o trascina un rettangolo: screenshot, DOM e CSS applicato diventano allegati. La build desktop include il proprio Chromium, quindi funziona offline.`,smashLabel:`SMASH su una grande epic`,smashBody:`Esplodi una spec grande in una famiglia di sotto-spec più piccole con un clic — ogni figlia porta un breve riassunto sulla sua card.`,draftsLabel:`Bozze e ripresa della modifica`,draftsBody:`Parcheggia un'esplorazione in corso come ticket in bozza e riprendila più tardi; riapri qualsiasi spec in Explore per continuare a rifinirla.`,compareLabel:`Confronta fianco a fianco`,compareBody:`Trascina una spec verso il bordo dello schermo e scivola dentro un selettore delle altre spec — esaminane due insieme, in stile tablet.`},rails:{nav:`Esegui sui rail`,title:`Esegui la pipeline sui rail`,subtitle:`Organizza le spec in corsie, poi lancia gli agenti`,intro:`Il lato destro della Dashboard sono i tuoi <b>Rail</b> — corsie di esecuzione. Trascina una card spec su un rail e premi <play>▶ Play</play> per lanciare un job di implementazione.`,jobLabel:`Cosa esegue ogni job`,flowCaption:`Ogni fase trasmette i propri log in diretta mentre lavora.`,modeLabel:`Scegli come gira un rail`,modeBody:`Ogni rail sceglie una modalità: <b>Implement</b> (la pipeline strutturata completa), <b>Batch</b> (più spec in sequenza) o <b>Ultracode</b> (Claude lavora in autonomia, senza pipeline fissa).`,profilesLabel:`Profili agente`,profilesBody:`Un catalogo dichiarativo per progetto che decide quali agenti girano e quale modello usa ciascuno — scelto per rail e congelato per job, così il lavoro concorrente resta isolato.`,jobDetailLabel:`Dettaglio job in diretta`,jobDetailBody:`Ogni job mostra un header con l'identità del ticket, un contatore di durata in tempo reale e conteggi correnti di turni e token, con il costo definitivo risolto alla chiusura.`,isolationLabel:`Tanti progetti, isolati`,isolationBody:`Ogni progetto ha il proprio database e la propria coda di job. Esegui progetti diversi contemporaneamente e passa dall'uno all'altro dalla sidebar sinistra — la tua posizione viene ricordata per progetto.`},providers:{nav:`Il tuo agente`,title:`Porta il tuo agente`,subtitle:`Claude Code e Codex come engine di prima classe`,intro:`L'app tratta <b>Claude Code</b> e <b>Codex CLI</b> come engine intercambiabili dietro un unico contratto. Un progetto può installarne uno o entrambi — la scelta avviene al momento dell'installazione.`,table:{capability:`Capacità`,streamingResume:`Streaming e ripresa della sessione`,native:`Nativo`,costReporting:`Report dei costi`,providerBilled:`Fatturato dal provider`,estimated:`Stimato (~)`,telemetry:`Telemetria (OTEL)`,synthesized:`Sintetizzata`,agentProfiles:`Profili agente`},calloutLabel:`Quando sono installati entrambi`,calloutBody:`Scegli l'engine <b>per spec, per rail o per avvio del terminale</b>. L'app ricorda la tua ultima scelta per progetto. Il costo di Codex è stimato da un tariffario locale e sempre contrassegnato con <mono>~</mono>.`},cost:{nav:`Monitora i costi`,title:`Traccia ogni centesimo`,subtitle:`Ogni invocazione fatturabile, registrata e visualizzata`,intro:`Ogni invocazione IA — su rail, Quick, Explore, modifiche AI, SMASH e riassunti dei file — viene registrata per <b>Claude e Codex</b>. Mai più tirare a indovinare quanto costano gli agenti.`,analyticsLabel:`Pagina Analytics`,analyticsBody:`Un hero con il burn-rate, timeline giornaliera, ticket principali, ripartizione per modello e uno scatter costo-vs-turni. Filtra per periodo (7d / 30d / 90d / Tutto) e per superficie.`,perTicketLabel:`Spesa per ticket`,perTicketBody:`Il dettaglio di ogni spec mostra quanto è costata e quanti turni ha richiesto, con un link diretto ad Analytics filtrato su quel ticket.`,honestLabel:`Numeri onesti`,honestBody:`Il costo di Claude è la cifra fatturata dal provider; quello di Codex è stimato e contrassegnato con <mono>~</mono>. I totali dei token includono i livelli di cache, quindi i conti tornano davvero.`,budgetsLabel:`Budget e avvisi`,budgetsBody:`Imposta un budget giornaliero e un avviso di costo per job; l'app mette in pausa automaticamente la coda quando superi la soglia. Esporta tutto in CSV o JSON.`},workspace:{nav:`Workspace`,title:`Rendilo il tuo workspace`,subtitle:`Tutto ciò che ti serve senza lasciare la finestra`,terminalLabel:`Pannello terminale`,terminalBody:`Un vero terminale in stile VS Code in basso (<mod></mod> <j></j>) — rendering WebGL, ricerca, immagini inline, trascinamento di percorsi e integrazione con la shell. Fino a 10 sessioni per progetto.`,codeLabel:`Esploratore di codice`,codeBody:`Un albero dei file in sola lettura e un visualizzatore Monaco con riassunti IA in linguaggio semplice e chip di provenienza “toccato dall'IA”, così chiunque può seguire cosa è cambiato e perché.`,integrationsLabel:`Integrazioni`,integrationsBody:`Un marketplace per progetto di integrazioni MCP — la navigazione semantica del codice di Serena è inclusa. Le installazioni sono additive: aggiungerne una non disturba mai le altre.`,themesLabel:`Temi`,themesBody:`Cinque temi integrati — specrails (predefinito), dracula, aurora-light, obsidian-dark e matrix — applicati prima che la UI venga disegnata, quindi nessun flash. Cambiali in Impostazioni → Aspetto.`,chatsLabel:`Chat minimizzabili`,chatsBody:`Parcheggia una sessione Explore o AI Edit in una chip del dock e riprendila più tardi — mai persa tra refresh o cambi di progetto.`,desktopLabel:`Desktop o browser`,desktopBody:`Esegui Specrails nel browser, oppure scarica l'app desktop firmata (macOS e Windows) che include il proprio server e i runtime.`},moveFast:{nav:`Vai veloce`,title:`Muoviti alla velocità del pensiero`,subtitle:`Keyboard-first, ovunque`,paletteLabel:`Palette dei comandi`,paletteShortcut:`<f>Premi</f> <mod></mod> <m>+</m> <k></k> <m>ovunque</m>`,paletteBody:`Cambia progetto, esegui comandi spec, salta a qualsiasi pagina e trova i job recenti — tutto con ricerca fuzzy.`,terminalLabel:`Pannello terminale`,terminalBody:`Attiva/disattiva con <mod></mod> <j></j>.`,shortcutsLabel:`Tutte le scorciatoie`,shortcutsBody:`Premi <q></q> per vedere il cheat-sheet completo.`,chatLabel:`Sidebar della chat`,chatBody:`Attiva/disattiva la sidebar destra con <mod></mod> <bkey></bkey>.`,projectsLabel:`Sidebar dei progetti`,projectsBody:`Attiva/disattiva la sidebar Arc sinistra con <alt></alt> <mod></mod> <bkey></bkey>.`,outro:`<b>Il tour finisce qui.</b> Aggiungi un progetto dalla sidebar sinistra e rilascia la tua prima spec. Puoi riaprire questa guida in qualsiasi momento dalle Impostazioni.`}},c={wizard:e,addProject:t,prerequisites:n,instructions:r,checkpoints:i,setupChat:a,welcome:o,onboarding:s};export{t as addProject,i as checkpoints,c as default,r as instructions,s as onboarding,n as prerequisites,a as setupChat,o as welcome,e as wizard};
@@ -0,0 +1 @@
1
+ import{n as e}from"./chunk-CilyBKbf.js";var t=e({addProject:()=>r,checkpoints:()=>o,default:()=>u,instructions:()=>a,onboarding:()=>l,prerequisites:()=>i,setupChat:()=>s,welcome:()=>c,wizard:()=>n}),n={configureAgents:`Configure {{provider}} agents`,configureSubtitle:`Choose which agents to install and how to run them.`,tabs:{agents:`Agents`,models:`Models`},skipForNow:`Skip for now`,install:`Install`,nextProvider:`Next: {{provider}}`,installingProvider:`Installing {{provider}}…`,installingSpecrails:`Installing specrails...`,installingFromTemplates:`Installing agents from templates`,waitingForOutput:`Waiting for output...`,checkpoints:{baseInstall:`Base installation`,agentSelection:`Agent selection`,agentGeneration:`Agent generation`},steps:{configure:`Configure`},summary:{agents:`Agents`,agentSkills:`Agent skills`,skills:`Skills`,openspecSkills:`OpenSpec skills`,legacyRemoved_one:`Removed {{count}} legacy <code>/specrails:*</code> command`,legacyRemoved_other:`Removed {{count}} legacy <code>/specrails:*</code> commands`},complete:{welcome:`Welcome to <spec>spec</spec><rails>rails</rails>`,configured:`<strong>{{projectName}}</strong> is now configured with AI-powered development workflows. Your specialized agents and commands are ready to use.`,installedForEngines_one:`Installed for {{count}} engine`,installedForEngines_other:`Installed for {{count}} engines`,learnMore:`Learn how to get the most out of specrails:`,continueToProject:`Continue to project`},error:{title:`Setup failed`,skipSetup:`Skip setup`,prereqMissing:`SpecRails setup needs Node.js, npm, npx and Git available on PATH before it can install this project.`,prereqRetryHint:`Install the missing tools, restart Specrails, then retry setup.`}},r={title:`Add Project`,description:`Register a project directory to manage it from Specrails.`,noProviderDetected:`No AI CLI detected. Install Claude Code or Codex CLI first.`,pathLabel:`Project path`,pathPlaceholder:`/Users/me/my-project`,pathHint:`Absolute path to the project root`,browseForFolder:`Browse for folder`,selectProjectFolder:`Select project folder`,nameLabel:`Display name`,optional:`(optional)`,namePlaceholder:`My Project`,nameHint:`Defaults to the directory name`,providersLabel:`AI providers`,notFound:`not found`,multiProviderHint:`Both engines will be set up. The first is the project default. Cannot be changed after creation.`,singleProviderHint:`Cannot be changed after the project is created.`,adding:`Adding...`,submit:`Add Project`,toolsRequired_one:`{{tools}} is required to add a project`,toolsRequired_other:`{{tools}} are required to add a project`,errors:{pathRequired:`Project path is required`,selectProvider:`Select at least one AI provider`,addFailed:`Failed to add project`},toasts:{registered:`Project "{{name}}" registered`}},i={corruptedBundle:`bundle corrupted — reinstall app`,notInstalled:`not installed`,failedToExecute:`found but failed to execute`,failedToExecuteAt:`found at {{path}} but failed to execute`,failedToExecuteWithError:`found but failed to execute ({{error}})`,failedToExecuteAtWithError:`found at {{path}} but failed to execute ({{error}})`,needsMinimum:`{{version}} found — needs {{minVersion}}+`,unknownVersion:`unknown`,installedLabel:`installed`,verifyError:`Could not verify developer tools locally — install will validate.`,allDetected:`All required tools detected`,bundleCorruptedTitle:`App bundle corrupted`,toolsRequired_one:`{{count}} developer tool required`,toolsRequired_other:`{{count}} developer tools required`,reinstallHint:`Reinstall the Specrails app to restore bundled tools.`,installMissingHint:`Install the missing tools to continue.`,moreInfo:`More info`,bundledBadge:`bundled`},a={title:`Install developer tools`,description:`SpecRails needs Node.js, npm, npx, and Git on PATH. Pick the snippet for your OS, run it, then click "I installed it, recheck".`,darwin:{intro:`Homebrew gets you both tools in one line. If you do not have brew, use the official downloads.`,installNodeGit:`Install Node.js and Git via Homebrew`},win32:{intro:`Winget ships with Windows 11 and recent Windows 10. Open PowerShell or Terminal and run:`,installNode:`Install Node.js LTS`,installGit:`Install Git`,note:`After install, restart Specrails so Windows refreshes PATH.`},linux:{intro:`Use your distro package manager:`,debian:`Debian / Ubuntu`,fedora:`Fedora / RHEL`},links:{nodeOfficial:`Node.js (official)`,gitOfficial:`Git (official)`,gitWindows:`Git for Windows (official)`},showOtherPlatforms:`Show other platforms`,hideOtherPlatforms:`Hide other platforms`,recheck:`I installed it, recheck`,diagnostics:{copy:`Copy diagnostics`,copied:`Diagnostics copied`,failed:`Copy failed`},corrupted:{title:`App bundle corrupted`,description:`One or more bundled tools (Node.js, Git) could not be verified.`,body:`This tool is bundled with the Specrails app and cannot be installed separately. If you see this message, the app bundle may be corrupted. Please reinstall Specrails.`}},o={title:`Setup progress`,progress:`{{done}} of {{total}} complete`,rawLog_one:`Raw log ({{count}} line)`,rawLog_other:`Raw log ({{count}} lines)`},s={title:`Setup assistant`,subtitle:`Respond to prompts to configure your project`,settingUp:`Setting up your project...`,placeholder:`Type a response...`,keyboardHint:`Enter to send, Shift+Enter for new line`},c={title:`Welcome to <spec>spec</spec><rails>rails</rails>`,description:`Specrails manages multiple projects from a single interface. Add your first project to get started.`,addFirstProject:`Add your first project`},l={productTour:`Product tour`,stepCount:`Step {{current}} of {{total}}`,goToStep:`Go to step {{step}}: {{label}}`,stepLabel:`Step {{step}}`,dontShowAgain:`Don't show this again`,skipTour:`Skip tour`,getStarted:`Get Started`,flow:{addSpec:`Add Spec`,dropInRail:`Drop in a Rail`,hitPlay:`Hit Play`,ship:`Ship`,architect:`Architect`,developer:`Developer`,reviewer:`Reviewer`},welcome:{nav:`Welcome`,title:`Welcome to Specrails`,subtitle:`Your local cockpit for shipping software with AI agents`,intro:`Specrails turns an idea into shipped code — and lets you <b>see, steer, and trust</b> every step. Draft a spec by talking to an AI, drop it on an execution rail, and hit Play. The pipeline handles architecture, implementation, review and the pull request, streaming its work live the whole way.`,coreLoopLabel:`The core loop`,flowCaption:`Each spec flows through <b>Architect → Developer → Reviewer → Ship</b> automatically.`,localNote:`<b>100% local · single user · no accounts.</b> Everything runs on your machine. Your code never leaves the laptop unless <i>you</i> spawn an agent against it.`,tourNote:`This quick tour walks through everything the app can do — about a minute.`},authorSpecs:{nav:`Author specs`,title:`Turn ideas into specs`,subtitle:`Six ways to capture exactly what you want built`,intro:`A <b>spec</b> is a description of work you want done. Author one however suits the moment — from a quick one-liner to a full conversation with the AI.`,exploreLabel:`Explore — converse`,exploreBody:`Describe what you want in a chat; a live draft rebuilds itself every turn. A preset slider tunes how much project context the AI sees — from your message only, up to the full codebase plus your MCP servers.`,quickLabel:`Quick — one shot`,quickBody:`Already know what you want? Generate a complete spec in a single turn. Optionally enrich it with a Contract Layer: exact names, data shapes, invariants and a file-touch list so the agents don't reinvent anything.`,websiteLabel:`From a website`,websiteBody:`Opens an embedded browser. Hover-select an element or drag a rectangle, and the screenshot, DOM and applied CSS become attachments. The desktop build ships its own Chromium, so it works offline.`,smashLabel:`SMASH a big epic`,smashBody:`Explode a large spec into a family of smaller sub-specs in one click — each child carries a short summary on its card.`,draftsLabel:`Drafts & Continue Editing`,draftsBody:`Park an in-progress exploration as a draft ticket and resume it later; reopen any spec back in Explore to keep refining it.`,compareLabel:`Compare side by side`,compareBody:`Drag a spec to the screen edge and a picker of your other specs slides in — review two of them together, tablet-style.`},rails:{nav:`Run on rails`,title:`Run the pipeline on rails`,subtitle:`Organize specs into lanes, then launch the agents`,intro:`The right side of the Dashboard is your <b>Rails</b> — execution lanes. Drag a spec card onto a rail and press <play>▶ Play</play> to launch an implementation job.`,jobLabel:`What each job runs`,flowCaption:`Every phase streams its logs live as it works.`,modeLabel:`Pick how a rail runs`,modeBody:`Each rail chooses a mode: <b>Implement</b> (the full structured pipeline), <b>Batch</b> (several specs in sequence), or <b>Ultracode</b> (Claude works autonomously, no fixed pipeline).`,profilesLabel:`Agent profiles`,profilesBody:`A per-project, declarative catalog that decides which agents run and which model each one uses — picked per rail and snapshotted per job so concurrent work stays isolated.`,jobDetailLabel:`Live job detail`,jobDetailBody:`Every job shows a ticket-identity header, a live duration ticker and running turn/token counts, with the authoritative cost resolved on exit.`,isolationLabel:`Many projects, isolated`,isolationBody:`Each project has its own database and job queue. Run different projects at the same time and switch between them from the left sidebar — your place is remembered per project.`},providers:{nav:`Your agent`,title:`Bring your own agent`,subtitle:`Claude Code and Codex, as first-class engines`,intro:`The app treats <b>Claude Code</b> and <b>Codex CLI</b> as interchangeable engines behind one contract. A project can install one or both — the choice is made at install time.`,table:{capability:`Capability`,streamingResume:`Streaming & session resume`,native:`Native`,costReporting:`Cost reporting`,providerBilled:`Provider-billed`,estimated:`Estimated (~)`,telemetry:`Telemetry (OTEL)`,synthesized:`Synthesized`,agentProfiles:`Agent profiles`},calloutLabel:`When both are installed`,calloutBody:`Pick the engine <b>per spec, per rail, or per terminal launch</b>. The app remembers your last choice per project. Codex cost is estimated from a local rate-card and always flagged with a <mono>~</mono>.`},cost:{nav:`Track cost`,title:`Track every cent`,subtitle:`Every billable invocation, recorded and visualized`,intro:`Every AI invocation — across rails, Quick, Explore, AI edits, SMASH and file summaries — is recorded for <b>both Claude and Codex</b>. No more guessing what the agents cost.`,analyticsLabel:`Analytics page`,analyticsBody:`A burn-rate hero, daily timeline, top tickets, model breakdown and a cost-vs-turns scatter. Filter by period (7d / 30d / 90d / All) and by surface.`,perTicketLabel:`Per-ticket spending`,perTicketBody:`Each spec's detail shows what it cost and how many turns it took, deep-linking into Analytics filtered to that ticket.`,honestLabel:`Honest numbers`,honestBody:`Claude cost is the provider-billed figure; Codex is estimated and flagged with <mono>~</mono>. Token totals include the cache tiers, so the figures actually reconcile.`,budgetsLabel:`Budgets & alerts`,budgetsBody:`Set a daily budget and a per-job cost alert; the app auto-pauses the queue when you cross the line. Export anything to CSV or JSON.`},workspace:{nav:`Workspace`,title:`Make it your workspace`,subtitle:`Everything you need without leaving the window`,terminalLabel:`Terminal panel`,terminalBody:`A real VS-Code-style terminal at the bottom (<mod></mod> <j></j>) — WebGL rendering, search, inline images, drag-drop paths and shell integration. Up to 10 sessions per project.`,codeLabel:`Code explorer`,codeBody:`A read-only file tree and Monaco viewer with plain-language AI summaries and “touched by AI” provenance chips, so anyone can follow what changed and why.`,integrationsLabel:`Integrations`,integrationsBody:`A per-project marketplace of MCP integrations — Serena semantic code-navigation is bundled. Installs are additive: adding one never disturbs another.`,themesLabel:`Themes`,themesBody:`Five built-in themes — specrails (default), dracula, aurora-light, obsidian-dark and matrix — applied before the UI paints, so there's no flash. Change them in Settings → Appearance.`,chatsLabel:`Minimizable chats`,chatsBody:`Park an Explore or AI-Edit session into a dock chip and pick it back up later — never lost across refreshes or project switches.`,desktopLabel:`Desktop or browser`,desktopBody:`Run Specrails in your browser, or grab the signed desktop app (macOS & Windows) that bundles its own server and runtimes.`},moveFast:{nav:`Move fast`,title:`Move at the speed of thought`,subtitle:`Keyboard-first, everywhere`,paletteLabel:`Command palette`,paletteShortcut:`<f>Press</f> <mod></mod> <m>+</m> <k></k> <m>anywhere</m>`,paletteBody:`Switch projects, run spec commands, jump to any page and find recent jobs — all with fuzzy search.`,terminalLabel:`Terminal panel`,terminalBody:`Toggle with <mod></mod> <j></j>.`,shortcutsLabel:`All shortcuts`,shortcutsBody:`Press <q></q> to see the full cheat-sheet.`,chatLabel:`Chat sidebar`,chatBody:`Toggle the right sidebar with <mod></mod> <bkey></bkey>.`,projectsLabel:`Projects sidebar`,projectsBody:`Toggle the left Arc sidebar with <alt></alt> <mod></mod> <bkey></bkey>.`,outro:`<b>That's the tour.</b> Add a project from the left sidebar and ship your first spec. You can reopen this walkthrough anytime from Settings.`}},u={wizard:n,addProject:r,prerequisites:i,instructions:a,checkpoints:o,setupChat:s,welcome:c,onboarding:l};export{t};
@@ -0,0 +1 @@
1
+ var e={configureAgents:`{{provider}}-Agenten konfigurieren`,configureSubtitle:`Wählen Sie, welche Agenten installiert und wie sie ausgeführt werden.`,tabs:{agents:`Agenten`,models:`Modelle`},skipForNow:`Vorerst überspringen`,install:`Installieren`,nextProvider:`Weiter: {{provider}}`,installingProvider:`{{provider}} wird installiert…`,installingSpecrails:`specrails wird installiert…`,installingFromTemplates:`Agenten werden aus Vorlagen installiert`,waitingForOutput:`Warten auf Ausgabe…`,checkpoints:{baseInstall:`Basisinstallation`,agentSelection:`Agentenauswahl`,agentGeneration:`Agentengenerierung`},steps:{configure:`Konfigurieren`},summary:{agents:`Agenten`,agentSkills:`Agenten-Skills`,skills:`Skills`,openspecSkills:`OpenSpec-Skills`,legacyRemoved_one:`{{count}} Legacy-Befehl <code>/specrails:*</code> entfernt`,legacyRemoved_other:`{{count}} Legacy-Befehle <code>/specrails:*</code> entfernt`},complete:{welcome:`Willkommen bei <spec>spec</spec><rails>rails</rails>`,configured:`<strong>{{projectName}}</strong> ist jetzt mit KI-gestützten Entwicklungs-Workflows konfiguriert. Ihre spezialisierten Agenten und Befehle sind einsatzbereit.`,installedForEngines_one:`Für {{count}} Engine installiert`,installedForEngines_other:`Für {{count}} Engines installiert`,learnMore:`Erfahren Sie, wie Sie das Beste aus specrails herausholen:`,continueToProject:`Weiter zum Projekt`},error:{title:`Setup fehlgeschlagen`,skipSetup:`Setup überspringen`,prereqMissing:`Das SpecRails-Setup benötigt Node.js, npm, npx und Git im PATH, bevor dieses Projekt installiert werden kann.`,prereqRetryHint:`Installieren Sie die fehlenden Tools, starten Sie Specrails neu und versuchen Sie das Setup erneut.`}},t={title:`Projekt hinzufügen`,description:`Registrieren Sie ein Projektverzeichnis, um es über Specrails zu verwalten.`,noProviderDetected:`Keine KI-CLI gefunden. Installieren Sie zuerst Claude Code oder Codex CLI.`,pathLabel:`Projektpfad`,pathPlaceholder:`/Users/ich/mein-projekt`,pathHint:`Absoluter Pfad zum Projekt-Root`,browseForFolder:`Ordner auswählen`,selectProjectFolder:`Projektordner auswählen`,nameLabel:`Anzeigename`,optional:`(optional)`,namePlaceholder:`Mein Projekt`,nameHint:`Standard ist der Verzeichnisname`,providersLabel:`KI-Anbieter`,notFound:`nicht gefunden`,multiProviderHint:`Beide Engines werden eingerichtet. Die erste ist der Projektstandard. Kann nach dem Erstellen nicht geändert werden.`,singleProviderHint:`Kann nach dem Erstellen des Projekts nicht geändert werden.`,adding:`Wird hinzugefügt…`,submit:`Projekt hinzufügen`,toolsRequired_one:`{{tools}} wird benötigt, um ein Projekt hinzuzufügen`,toolsRequired_other:`{{tools}} werden benötigt, um ein Projekt hinzuzufügen`,errors:{pathRequired:`Projektpfad ist erforderlich`,selectProvider:`Wählen Sie mindestens einen KI-Anbieter aus`,addFailed:`Projekt konnte nicht hinzugefügt werden`},toasts:{registered:`Projekt „{{name}}“ registriert`}},n={corruptedBundle:`Bundle beschädigt – App neu installieren`,notInstalled:`nicht installiert`,failedToExecute:`gefunden, aber Ausführung fehlgeschlagen`,failedToExecuteAt:`unter {{path}} gefunden, aber Ausführung fehlgeschlagen`,failedToExecuteWithError:`gefunden, aber Ausführung fehlgeschlagen ({{error}})`,failedToExecuteAtWithError:`unter {{path}} gefunden, aber Ausführung fehlgeschlagen ({{error}})`,needsMinimum:`{{version}} gefunden – benötigt {{minVersion}}+`,unknownVersion:`unbekannt`,installedLabel:`installiert`,verifyError:`Entwickler-Tools konnten lokal nicht überprüft werden – die Installation validiert sie.`,allDetected:`Alle erforderlichen Tools erkannt`,bundleCorruptedTitle:`App-Bundle beschädigt`,toolsRequired_one:`{{count}} Entwickler-Tool erforderlich`,toolsRequired_other:`{{count}} Entwickler-Tools erforderlich`,reinstallHint:`Installieren Sie die Specrails-App neu, um die mitgelieferten Tools wiederherzustellen.`,installMissingHint:`Installieren Sie die fehlenden Tools, um fortzufahren.`,moreInfo:`Mehr Infos`,bundledBadge:`mitgeliefert`},r={title:`Entwickler-Tools installieren`,description:`SpecRails benötigt Node.js, npm, npx und Git im PATH. Wählen Sie das Snippet für Ihr Betriebssystem, führen Sie es aus und klicken Sie dann auf „Installiert, erneut prüfen“.`,darwin:{intro:`Mit Homebrew bekommen Sie beide Tools in einer Zeile. Ohne brew nutzen Sie die offiziellen Downloads.`,installNodeGit:`Node.js und Git über Homebrew installieren`},win32:{intro:`Winget ist in Windows 11 und aktuellen Windows-10-Versionen enthalten. Öffnen Sie PowerShell oder Terminal und führen Sie aus:`,installNode:`Node.js LTS installieren`,installGit:`Git installieren`,note:`Starten Sie Specrails nach der Installation neu, damit Windows den PATH aktualisiert.`},linux:{intro:`Verwenden Sie den Paketmanager Ihrer Distribution:`,debian:`Debian / Ubuntu`,fedora:`Fedora / RHEL`},links:{nodeOfficial:`Node.js (offiziell)`,gitOfficial:`Git (offiziell)`,gitWindows:`Git für Windows (offiziell)`},showOtherPlatforms:`Andere Plattformen anzeigen`,hideOtherPlatforms:`Andere Plattformen ausblenden`,recheck:`Installiert, erneut prüfen`,diagnostics:{copy:`Diagnose kopieren`,copied:`Diagnose kopiert`,failed:`Kopieren fehlgeschlagen`},corrupted:{title:`App-Bundle beschädigt`,description:`Mindestens ein mitgeliefertes Tool (Node.js, Git) konnte nicht verifiziert werden.`,body:`Dieses Tool ist in der Specrails-App enthalten und kann nicht separat installiert werden. Wenn Sie diese Meldung sehen, ist das App-Bundle möglicherweise beschädigt. Bitte installieren Sie Specrails neu.`}},i={title:`Setup-Fortschritt`,progress:`{{done}} von {{total}} abgeschlossen`,rawLog_one:`Roh-Log ({{count}} Zeile)`,rawLog_other:`Roh-Log ({{count}} Zeilen)`},a={title:`Setup-Assistent`,subtitle:`Beantworten Sie die Prompts, um Ihr Projekt zu konfigurieren`,settingUp:`Ihr Projekt wird eingerichtet…`,placeholder:`Antwort eingeben…`,keyboardHint:`Enter zum Senden, Shift+Enter für neue Zeile`},o={title:`Willkommen bei <spec>spec</spec><rails>rails</rails>`,description:`Specrails verwaltet mehrere Projekte über eine einzige Oberfläche. Fügen Sie Ihr erstes Projekt hinzu, um loszulegen.`,addFirstProject:`Erstes Projekt hinzufügen`},s={productTour:`Produkttour`,stepCount:`Schritt {{current}} von {{total}}`,goToStep:`Zu Schritt {{step}}: {{label}}`,stepLabel:`Schritt {{step}}`,dontShowAgain:`Nicht mehr anzeigen`,skipTour:`Tour überspringen`,getStarted:`Loslegen`,flow:{addSpec:`Spec hinzufügen`,dropInRail:`Auf eine Rail ziehen`,hitPlay:`Play drücken`,ship:`Ship`,architect:`Architekt`,developer:`Entwickler`,reviewer:`Reviewer`},welcome:{nav:`Willkommen`,title:`Willkommen bei Specrails`,subtitle:`Ihr lokales Cockpit, um Software mit KI-Agenten auszuliefern`,intro:`Specrails verwandelt eine Idee in ausgelieferten Code – und lässt Sie jeden Schritt <b>sehen, steuern und nachvollziehen</b>. Entwerfen Sie eine Spec im Gespräch mit einer KI, ziehen Sie sie auf eine Ausführungs-Rail und drücken Sie Play. Die Pipeline übernimmt Architektur, Implementierung, Review und den Pull Request – und streamt ihre Arbeit dabei live.`,coreLoopLabel:`Der Kern-Loop`,flowCaption:`Jede Spec durchläuft automatisch <b>Architekt → Entwickler → Reviewer → Ship</b>.`,localNote:`<b>100 % lokal · Single-User · keine Konten.</b> Alles läuft auf Ihrem Rechner. Ihr Code verlässt den Laptop nur, wenn <i>Sie</i> einen Agent darauf ansetzen.`,tourNote:`Diese kurze Tour zeigt alles, was die App kann – dauert etwa eine Minute.`},authorSpecs:{nav:`Specs verfassen`,title:`Aus Ideen werden Specs`,subtitle:`Sechs Wege, genau festzuhalten, was gebaut werden soll`,intro:`Eine <b>Spec</b> beschreibt Arbeit, die erledigt werden soll. Verfassen Sie sie, wie es gerade passt – vom schnellen Einzeiler bis zum ausführlichen Gespräch mit der KI.`,exploreLabel:`Explore – im Dialog`,exploreBody:`Beschreiben Sie im Chat, was Sie wollen; ein Live-Entwurf baut sich mit jedem Zug neu auf. Ein Preset-Regler steuert, wie viel Projektkontext die KI sieht – von nur Ihrer Nachricht bis zur kompletten Codebasis samt Ihren MCP-Servern.`,quickLabel:`Quick – in einem Schritt`,quickBody:`Sie wissen schon, was Sie wollen? Generieren Sie eine vollständige Spec in einem einzigen Zug. Optional mit Contract Layer anreichern: exakte Namen, Datenformen, Invarianten und eine Liste der berührten Dateien, damit die Agenten nichts neu erfinden.`,websiteLabel:`Von einer Website`,websiteBody:`Öffnet einen eingebetteten Browser. Wählen Sie per Hover ein Element oder ziehen Sie ein Rechteck – Screenshot, DOM und angewendetes CSS werden zu Anhängen. Die Desktop-Version bringt ein eigenes Chromium mit und funktioniert daher offline.`,smashLabel:`Ein großes Epic SMASHen`,smashBody:`Zerlegen Sie eine große Spec mit einem Klick in eine Familie kleinerer Sub-Specs – jedes Kind trägt eine Kurzzusammenfassung auf seiner Karte.`,draftsLabel:`Entwürfe & Weiterbearbeiten`,draftsBody:`Parken Sie eine laufende Exploration als Entwurfs-Ticket und nehmen Sie sie später wieder auf; öffnen Sie jede Spec erneut in Explore, um weiter zu verfeinern.`,compareLabel:`Seite an Seite vergleichen`,compareBody:`Ziehen Sie eine Spec an den Bildschirmrand, und eine Auswahl Ihrer anderen Specs gleitet herein – prüfen Sie zwei davon gemeinsam, wie auf einem Tablet.`},rails:{nav:`Auf Rails ausführen`,title:`Die Pipeline auf Rails laufen lassen`,subtitle:`Specs in Bahnen organisieren, dann die Agenten starten`,intro:`Die rechte Seite des Dashboards sind Ihre <b>Rails</b> – Ausführungsbahnen. Ziehen Sie eine Spec-Karte auf eine Rail und drücken Sie <play>▶ Play</play>, um einen Implementierungsjob zu starten.`,jobLabel:`Was jeder Job ausführt`,flowCaption:`Jede Phase streamt ihre Logs live, während sie arbeitet.`,modeLabel:`Wählen Sie, wie eine Rail läuft`,modeBody:`Jede Rail wählt einen Modus: <b>Implement</b> (die vollständige strukturierte Pipeline), <b>Batch</b> (mehrere Specs nacheinander) oder <b>Ultracode</b> (Claude arbeitet autonom, ohne feste Pipeline).`,profilesLabel:`Agentenprofile`,profilesBody:`Ein deklarativer Katalog pro Projekt, der bestimmt, welche Agenten laufen und welches Modell jeder nutzt – pro Rail gewählt und pro Job eingefroren, damit parallele Arbeit isoliert bleibt.`,jobDetailLabel:`Live-Jobdetails`,jobDetailBody:`Jeder Job zeigt einen Ticket-Identitäts-Header, eine live tickende Laufzeit und laufende Turn-/Token-Zähler; die verbindlichen Kosten werden beim Beenden ermittelt.`,isolationLabel:`Viele Projekte, isoliert`,isolationBody:`Jedes Projekt hat seine eigene Datenbank und Job-Queue. Lassen Sie verschiedene Projekte gleichzeitig laufen und wechseln Sie über die linke Seitenleiste – Ihre Position wird pro Projekt gemerkt.`},providers:{nav:`Ihr Agent`,title:`Bringen Sie Ihren eigenen Agent mit`,subtitle:`Claude Code und Codex als gleichwertige Engines`,intro:`Die App behandelt <b>Claude Code</b> und <b>Codex CLI</b> als austauschbare Engines hinter einem gemeinsamen Vertrag. Ein Projekt kann eine oder beide installieren – die Wahl fällt bei der Installation.`,table:{capability:`Fähigkeit`,streamingResume:`Streaming & Sitzungsfortsetzung`,native:`Nativ`,costReporting:`Kostenberichte`,providerBilled:`Anbieterseitig abgerechnet`,estimated:`Geschätzt (~)`,telemetry:`Telemetrie (OTEL)`,synthesized:`Synthetisiert`,agentProfiles:`Agentenprofile`},calloutLabel:`Wenn beide installiert sind`,calloutBody:`Wählen Sie die Engine <b>pro Spec, pro Rail oder pro Terminal-Start</b>. Die App merkt sich Ihre letzte Wahl pro Projekt. Codex-Kosten werden anhand einer lokalen Preisliste geschätzt und stets mit <mono>~</mono> markiert.`},cost:{nav:`Kosten verfolgen`,title:`Jeden Cent im Blick`,subtitle:`Jeder kostenpflichtige Aufruf, erfasst und visualisiert`,intro:`Jeder KI-Aufruf – über Rails, Quick, Explore, AI Edits, SMASH und Dateizusammenfassungen – wird für <b>Claude und Codex</b> erfasst. Schluss mit dem Raten, was die Agenten kosten.`,analyticsLabel:`Analytics-Seite`,analyticsBody:`Ein Burn-Rate-Hero, Tages-Timeline, Top-Tickets, Modellaufschlüsselung und ein Kosten-vs.-Turns-Scatter. Filtern nach Zeitraum (7d / 30d / 90d / Alle) und nach Bereich.`,perTicketLabel:`Ausgaben pro Ticket`,perTicketBody:`Die Detailansicht jeder Spec zeigt, was sie gekostet hat und wie viele Turns sie brauchte – mit Deep-Link in die auf dieses Ticket gefilterte Analytics-Ansicht.`,honestLabel:`Ehrliche Zahlen`,honestBody:`Claude-Kosten sind der vom Anbieter abgerechnete Betrag; Codex wird geschätzt und mit <mono>~</mono> markiert. Token-Summen schließen die Cache-Stufen ein, sodass die Zahlen wirklich aufgehen.`,budgetsLabel:`Budgets & Alarme`,budgetsBody:`Legen Sie ein Tagesbudget und einen Kostenalarm pro Job fest; die App pausiert die Queue automatisch, wenn die Grenze überschritten wird. Exportieren Sie alles als CSV oder JSON.`},workspace:{nav:`Arbeitsbereich`,title:`Machen Sie es zu Ihrem Arbeitsbereich`,subtitle:`Alles Nötige, ohne das Fenster zu verlassen`,terminalLabel:`Terminal-Panel`,terminalBody:`Ein echtes Terminal im VS-Code-Stil am unteren Rand (<mod></mod> <j></j>) – WebGL-Rendering, Suche, Inline-Bilder, Drag-and-drop-Pfade und Shell-Integration. Bis zu 10 Sessions pro Projekt.`,codeLabel:`Code-Explorer`,codeBody:`Ein schreibgeschützter Dateibaum und Monaco-Viewer mit verständlichen KI-Zusammenfassungen und „Von KI berührt“-Herkunfts-Chips – so kann jeder nachvollziehen, was sich warum geändert hat.`,integrationsLabel:`Integrationen`,integrationsBody:`Ein Marketplace für MCP-Integrationen pro Projekt – Serena (semantische Code-Navigation) ist bereits enthalten. Installationen sind additiv: Eine neue stört nie eine bestehende.`,themesLabel:`Themes`,themesBody:`Fünf integrierte Themes – specrails (Standard), dracula, aurora-light, obsidian-dark und matrix – werden angewendet, bevor die UI zeichnet, also ohne Aufblitzen. Ändern Sie sie unter Einstellungen → Erscheinungsbild.`,chatsLabel:`Minimierbare Chats`,chatsBody:`Parken Sie eine Explore- oder AI-Edit-Sitzung als Dock-Chip und nehmen Sie sie später wieder auf – sie geht weder beim Neuladen noch beim Projektwechsel verloren.`,desktopLabel:`Desktop oder Browser`,desktopBody:`Nutzen Sie Specrails im Browser oder holen Sie sich die signierte Desktop-App (macOS & Windows) mit eigenem Server und eigenen Runtimes.`},moveFast:{nav:`Schnell arbeiten`,title:`In Gedankengeschwindigkeit arbeiten`,subtitle:`Keyboard-first, überall`,paletteLabel:`Befehlspalette`,paletteShortcut:`<f>Drücken Sie</f> <mod></mod> <m>+</m> <k></k> <m>überall</m>`,paletteBody:`Projekte wechseln, Spec-Befehle ausführen, zu jeder Seite springen und letzte Jobs finden – alles mit Fuzzy-Suche.`,terminalLabel:`Terminal-Panel`,terminalBody:`Umschalten mit <mod></mod> <j></j>.`,shortcutsLabel:`Alle Shortcuts`,shortcutsBody:`Drücken Sie <q></q> für die vollständige Übersicht.`,chatLabel:`Chat-Seitenleiste`,chatBody:`Rechte Seitenleiste umschalten mit <mod></mod> <bkey></bkey>.`,projectsLabel:`Projekt-Seitenleiste`,projectsBody:`Linke Arc-Seitenleiste umschalten mit <alt></alt> <mod></mod> <bkey></bkey>.`,outro:`<b>Das war die Tour.</b> Fügen Sie über die linke Seitenleiste ein Projekt hinzu und liefern Sie Ihre erste Spec aus. Diese Tour lässt sich jederzeit über die Einstellungen erneut öffnen.`}},c={wizard:e,addProject:t,prerequisites:n,instructions:r,checkpoints:i,setupChat:a,welcome:o,onboarding:s};export{t as addProject,i as checkpoints,c as default,r as instructions,s as onboarding,n as prerequisites,a as setupChat,o as welcome,e as wizard};
@@ -0,0 +1 @@
1
+ var e={configureAgents:`Configurer les agents {{provider}}`,configureSubtitle:`Choisissez quels agents installer et comment les exécuter.`,tabs:{agents:`Agents`,models:`Modèles`},skipForNow:`Ignorer pour l'instant`,install:`Installer`,nextProvider:`Suivant : {{provider}}`,installingProvider:`Installation de {{provider}}…`,installingSpecrails:`Installation de specrails...`,installingFromTemplates:`Installation des agents à partir des templates`,waitingForOutput:`En attente de sortie...`,checkpoints:{baseInstall:`Installation de base`,agentSelection:`Sélection des agents`,agentGeneration:`Génération des agents`},steps:{configure:`Configurer`},summary:{agents:`Agents`,agentSkills:`Skills d'agent`,skills:`Skills`,openspecSkills:`Skills OpenSpec`,legacyRemoved_one:`{{count}} commande legacy <code>/specrails:*</code> supprimée`,legacyRemoved_other:`{{count}} commandes legacy <code>/specrails:*</code> supprimées`},complete:{welcome:`Bienvenue dans <spec>spec</spec><rails>rails</rails>`,configured:`<strong>{{projectName}}</strong> est maintenant configuré avec des workflows de développement pilotés par l'IA. Vos agents spécialisés et vos commandes sont prêts à l'emploi.`,installedForEngines_one:`Installé pour {{count}} moteur`,installedForEngines_other:`Installé pour {{count}} moteurs`,learnMore:`Apprenez à tirer le meilleur de specrails :`,continueToProject:`Continuer vers le projet`},error:{title:`Échec de la configuration`,skipSetup:`Ignorer la configuration`,prereqMissing:`La configuration de SpecRails a besoin de Node.js, npm, npx et Git disponibles sur le PATH pour pouvoir installer ce projet.`,prereqRetryHint:`Installez les outils manquants, redémarrez Specrails, puis relancez la configuration.`}},t={title:`Ajouter un projet`,description:`Enregistrez un répertoire de projet pour le gérer depuis Specrails.`,noProviderDetected:`Aucune CLI d'IA détectée. Installez d'abord Claude Code ou Codex CLI.`,pathLabel:`Chemin du projet`,pathPlaceholder:`/Users/moi/mon-projet`,pathHint:`Chemin absolu vers la racine du projet`,browseForFolder:`Parcourir les dossiers`,selectProjectFolder:`Sélectionner le dossier du projet`,nameLabel:`Nom d'affichage`,optional:`(facultatif)`,namePlaceholder:`Mon projet`,nameHint:`Par défaut, le nom du répertoire`,providersLabel:`Fournisseurs d'IA`,notFound:`introuvable`,multiProviderHint:`Les deux moteurs seront configurés. Le premier est le moteur par défaut du projet. Non modifiable après la création.`,singleProviderHint:`Non modifiable après la création du projet.`,adding:`Ajout...`,submit:`Ajouter le projet`,toolsRequired_one:`{{tools}} est requis pour ajouter un projet`,toolsRequired_other:`{{tools}} sont requis pour ajouter un projet`,errors:{pathRequired:`Le chemin du projet est requis`,selectProvider:`Sélectionnez au moins un fournisseur d'IA`,addFailed:`Échec de l'ajout du projet`},toasts:{registered:`Projet « {{name}} » enregistré`}},n={corruptedBundle:`bundle corrompu — réinstallez l'application`,notInstalled:`non installé`,failedToExecute:`trouvé mais impossible à exécuter`,failedToExecuteAt:`trouvé à {{path}} mais impossible à exécuter`,failedToExecuteWithError:`trouvé mais impossible à exécuter ({{error}})`,failedToExecuteAtWithError:`trouvé à {{path}} mais impossible à exécuter ({{error}})`,needsMinimum:`{{version}} trouvé — nécessite {{minVersion}}+`,unknownVersion:`inconnue`,installedLabel:`installé`,verifyError:`Impossible de vérifier les outils de développement en local — l'installation s'en chargera.`,allDetected:`Tous les outils requis sont détectés`,bundleCorruptedTitle:`Bundle de l'application corrompu`,toolsRequired_one:`{{count}} outil de développement requis`,toolsRequired_other:`{{count}} outils de développement requis`,reinstallHint:`Réinstallez l'application Specrails pour restaurer les outils embarqués.`,installMissingHint:`Installez les outils manquants pour continuer.`,moreInfo:`Plus d'infos`,bundledBadge:`embarqué`},r={title:`Installer les outils de développement`,description:`SpecRails a besoin de Node.js, npm, npx et Git sur le PATH. Choisissez le snippet pour votre OS, exécutez-le, puis cliquez sur « Je l'ai installé, revérifier ».`,darwin:{intro:`Homebrew installe les deux outils en une seule ligne. Si vous n'avez pas brew, utilisez les téléchargements officiels.`,installNodeGit:`Installer Node.js et Git via Homebrew`},win32:{intro:`Winget est fourni avec Windows 11 et les versions récentes de Windows 10. Ouvrez PowerShell ou le Terminal et exécutez :`,installNode:`Installer Node.js LTS`,installGit:`Installer Git`,note:`Après l'installation, redémarrez Specrails pour que Windows actualise le PATH.`},linux:{intro:`Utilisez le gestionnaire de paquets de votre distribution :`,debian:`Debian / Ubuntu`,fedora:`Fedora / RHEL`},links:{nodeOfficial:`Node.js (officiel)`,gitOfficial:`Git (officiel)`,gitWindows:`Git pour Windows (officiel)`},showOtherPlatforms:`Afficher les autres plateformes`,hideOtherPlatforms:`Masquer les autres plateformes`,recheck:`Je l'ai installé, revérifier`,diagnostics:{copy:`Copier les diagnostics`,copied:`Diagnostics copiés`,failed:`Échec de la copie`},corrupted:{title:`Bundle de l'application corrompu`,description:`Un ou plusieurs outils embarqués (Node.js, Git) n'ont pas pu être vérifiés.`,body:`Cet outil est embarqué avec l'application Specrails et ne peut pas être installé séparément. Si vous voyez ce message, le bundle de l'application est peut-être corrompu. Veuillez réinstaller Specrails.`}},i={title:`Progression de la configuration`,progress:`{{done}} sur {{total}} terminés`,rawLog_one:`Log brut ({{count}} ligne)`,rawLog_other:`Log brut ({{count}} lignes)`},a={title:`Assistant de configuration`,subtitle:`Répondez aux invites pour configurer votre projet`,settingUp:`Configuration de votre projet...`,placeholder:`Saisissez une réponse...`,keyboardHint:`Entrée pour envoyer, Maj+Entrée pour une nouvelle ligne`},o={title:`Bienvenue dans <spec>spec</spec><rails>rails</rails>`,description:`Specrails gère plusieurs projets depuis une seule interface. Ajoutez votre premier projet pour commencer.`,addFirstProject:`Ajouter votre premier projet`},s={productTour:`Visite guidée`,stepCount:`Étape {{current}} sur {{total}}`,goToStep:`Aller à l'étape {{step}} : {{label}}`,stepLabel:`Étape {{step}}`,dontShowAgain:`Ne plus afficher`,skipTour:`Passer la visite`,getStarted:`Commencer`,flow:{addSpec:`Ajouter une spec`,dropInRail:`Déposer dans un rail`,hitPlay:`Appuyer sur Play`,ship:`Livrer`,architect:`Architecte`,developer:`Développeur`,reviewer:`Relecteur`},welcome:{nav:`Bienvenue`,title:`Bienvenue dans Specrails`,subtitle:`Votre cockpit local pour livrer du logiciel avec des agents IA`,intro:`Specrails transforme une idée en code livré — et vous laisse <b>voir, piloter et vérifier</b> chaque étape. Rédigez une spec en discutant avec une IA, déposez-la sur un rail d'exécution et appuyez sur Play. Le pipeline gère l'architecture, l'implémentation, la revue et la pull request, en streamant son travail en direct du début à la fin.`,coreLoopLabel:`La boucle de base`,flowCaption:`Chaque spec passe automatiquement par <b>Architecte → Développeur → Relecteur → Livraison</b>.`,localNote:`<b>100 % local · mono-utilisateur · sans compte.</b> Tout s'exécute sur votre machine. Votre code ne quitte jamais le laptop, sauf si <i>vous</i> lancez un agent dessus.`,tourNote:`Cette visite rapide passe en revue tout ce que l'application sait faire — environ une minute.`},authorSpecs:{nav:`Rédiger des specs`,title:`Transformez vos idées en specs`,subtitle:`Six façons de capturer exactement ce que vous voulez construire`,intro:`Une <b>spec</b> est une description du travail à réaliser. Rédigez-la comme le moment s'y prête — de la simple phrase à la conversation complète avec l'IA.`,exploreLabel:`Explore — conversez`,exploreBody:`Décrivez ce que vous voulez dans un chat ; un brouillon vivant se reconstruit à chaque tour. Un curseur de presets règle la quantité de contexte projet que voit l'IA — de votre message seul jusqu'au codebase complet plus vos serveurs MCP.`,quickLabel:`Quick — en un coup`,quickBody:`Vous savez déjà ce que vous voulez ? Générez une spec complète en un seul tour. Enrichissez-la éventuellement d'un Contract Layer : noms exacts, formes de données, invariants et liste des fichiers touchés, pour que les agents ne réinventent rien.`,websiteLabel:`Depuis un site web`,websiteBody:`Ouvre un navigateur embarqué. Survolez un élément pour le sélectionner ou tracez un rectangle : la capture d'écran, le DOM et le CSS appliqué deviennent des pièces jointes. La version desktop embarque son propre Chromium, donc ça fonctionne hors ligne.`,smashLabel:`SMASH pour les grosses epics`,smashBody:`Éclatez une grande spec en une famille de sous-specs plus petites en un clic — chaque enfant porte un court résumé sur sa carte.`,draftsLabel:`Brouillons & reprise d'édition`,draftsBody:`Mettez une exploration en cours de côté comme ticket brouillon et reprenez-la plus tard ; rouvrez n'importe quelle spec dans Explore pour continuer à l'affiner.`,compareLabel:`Comparer côte à côte`,compareBody:`Glissez une spec vers le bord de l'écran et un sélecteur de vos autres specs apparaît — passez-en deux en revue ensemble, façon tablette.`},rails:{nav:`Exécuter sur des rails`,title:`Lancez le pipeline sur des rails`,subtitle:`Organisez les specs en couloirs, puis lancez les agents`,intro:`La partie droite du Dashboard, ce sont vos <b>Rails</b> — des couloirs d'exécution. Glissez une carte de spec sur un rail et appuyez sur <play>▶ Play</play> pour lancer un job d'implémentation.`,jobLabel:`Ce que chaque job exécute`,flowCaption:`Chaque phase streame ses logs en direct pendant qu'elle travaille.`,modeLabel:`Choisissez comment un rail s'exécute`,modeBody:`Chaque rail choisit un mode : <b>Implement</b> (le pipeline structuré complet), <b>Batch</b> (plusieurs specs à la suite) ou <b>Ultracode</b> (Claude travaille en autonomie, sans pipeline fixe).`,profilesLabel:`Profils d'agents`,profilesBody:`Un catalogue déclaratif par projet qui décide quels agents s'exécutent et quel modèle chacun utilise — choisi par rail et snapshotté par job pour que les travaux concurrents restent isolés.`,jobDetailLabel:`Détail de job en direct`,jobDetailBody:`Chaque job affiche un en-tête d'identité de ticket, un chrono de durée en direct et des compteurs de tours/tokens, avec le coût définitif résolu à la fin.`,isolationLabel:`Plusieurs projets, isolés`,isolationBody:`Chaque projet a sa propre base de données et sa propre file de jobs. Exécutez plusieurs projets en même temps et passez de l'un à l'autre depuis la barre latérale gauche — votre position est mémorisée par projet.`},providers:{nav:`Votre agent`,title:`Apportez votre propre agent`,subtitle:`Claude Code et Codex, des moteurs de premier rang`,intro:`L'application traite <b>Claude Code</b> et <b>Codex CLI</b> comme des moteurs interchangeables derrière un même contrat. Un projet peut en installer un ou les deux — le choix se fait à l'installation.`,table:{capability:`Capacité`,streamingResume:`Streaming & reprise de session`,native:`Natif`,costReporting:`Suivi des coûts`,providerBilled:`Facturé par le fournisseur`,estimated:`Estimé (~)`,telemetry:`Télémétrie (OTEL)`,synthesized:`Synthétisée`,agentProfiles:`Profils d'agents`},calloutLabel:`Quand les deux sont installés`,calloutBody:`Choisissez le moteur <b>par spec, par rail ou par lancement de terminal</b>. L'application mémorise votre dernier choix par projet. Le coût de Codex est estimé à partir d'une grille tarifaire locale et toujours signalé par un <mono>~</mono>.`},cost:{nav:`Suivre les coûts`,title:`Suivez chaque centime`,subtitle:`Chaque invocation facturable, enregistrée et visualisée`,intro:`Chaque invocation d'IA — rails, Quick, Explore, éditions IA, SMASH et résumés de fichiers — est enregistrée pour <b>Claude comme pour Codex</b>. Fini de deviner ce que coûtent les agents.`,analyticsLabel:`Page Analytics`,analyticsBody:`Un hero de burn-rate, une timeline quotidienne, le top des tickets, la répartition par modèle et un nuage coût vs tours. Filtrez par période (7 j / 30 j / 90 j / Tout) et par surface.`,perTicketLabel:`Dépenses par ticket`,perTicketBody:`Le détail de chaque spec montre ce qu'elle a coûté et combien de tours il a fallu, avec un lien direct vers Analytics filtré sur ce ticket.`,honestLabel:`Des chiffres honnêtes`,honestBody:`Le coût Claude est le montant facturé par le fournisseur ; celui de Codex est estimé et signalé par un <mono>~</mono>. Les totaux de tokens incluent les niveaux de cache, donc les chiffres se recoupent vraiment.`,budgetsLabel:`Budgets & alertes`,budgetsBody:`Définissez un budget quotidien et une alerte de coût par job ; l'application met automatiquement la file en pause quand vous franchissez la limite. Exportez tout en CSV ou JSON.`},workspace:{nav:`Espace de travail`,title:`Faites-en votre espace de travail`,subtitle:`Tout ce qu'il vous faut sans quitter la fenêtre`,terminalLabel:`Panneau de terminal`,terminalBody:`Un vrai terminal façon VS Code en bas (<mod></mod> <j></j>) — rendu WebGL, recherche, images inline, glisser-déposer de chemins et intégration shell. Jusqu'à 10 sessions par projet.`,codeLabel:`Explorateur de code`,codeBody:`Une arborescence de fichiers en lecture seule et un viewer Monaco avec des résumés IA en langage clair et des puces de provenance « touché par l'IA », pour que chacun puisse suivre ce qui a changé et pourquoi.`,integrationsLabel:`Intégrations`,integrationsBody:`Une marketplace d'intégrations MCP par projet — la navigation sémantique de code Serena est incluse. Les installations sont additives : en ajouter une ne perturbe jamais les autres.`,themesLabel:`Thèmes`,themesBody:`Cinq thèmes intégrés — specrails (par défaut), dracula, aurora-light, obsidian-dark et matrix — appliqués avant le rendu de l'UI, donc sans flash. Changez-les dans Paramètres → Apparence.`,chatsLabel:`Chats minimisables`,chatsBody:`Rangez une session Explore ou Édition IA dans une puce du dock et reprenez-la plus tard — jamais perdue, même après un rechargement ou un changement de projet.`,desktopLabel:`Desktop ou navigateur`,desktopBody:`Lancez Specrails dans votre navigateur, ou prenez l'application desktop signée (macOS & Windows) qui embarque son propre serveur et ses runtimes.`},moveFast:{nav:`Aller vite`,title:`Avancez à la vitesse de la pensée`,subtitle:`Le clavier d'abord, partout`,paletteLabel:`Palette de commandes`,paletteShortcut:`<f>Appuyez sur</f> <mod></mod> <m>+</m> <k></k> <m>n'importe où</m>`,paletteBody:`Changez de projet, lancez des commandes de spec, sautez vers n'importe quelle page et retrouvez les jobs récents — le tout en recherche floue.`,terminalLabel:`Panneau de terminal`,terminalBody:`Basculez avec <mod></mod> <j></j>.`,shortcutsLabel:`Tous les raccourcis`,shortcutsBody:`Appuyez sur <q></q> pour voir l'antisèche complète.`,chatLabel:`Barre latérale de chat`,chatBody:`Basculez la barre latérale droite avec <mod></mod> <bkey></bkey>.`,projectsLabel:`Barre latérale des projets`,projectsBody:`Basculez la barre latérale Arc de gauche avec <alt></alt> <mod></mod> <bkey></bkey>.`,outro:`<b>La visite est terminée.</b> Ajoutez un projet depuis la barre latérale gauche et livrez votre première spec. Vous pouvez rouvrir cette visite à tout moment depuis les Paramètres.`}},c={wizard:e,addProject:t,prerequisites:n,instructions:r,checkpoints:i,setupChat:a,welcome:o,onboarding:s};export{t as addProject,i as checkpoints,c as default,r as instructions,s as onboarding,n as prerequisites,a as setupChat,o as welcome,e as wizard};
@@ -0,0 +1 @@
1
+ var e={configureAgents:`配置 {{provider}} Agent`,configureSubtitle:`选择要安装的 Agent 及其运行方式。`,tabs:{agents:`Agent`,models:`模型`},skipForNow:`暂时跳过`,install:`安装`,nextProvider:`下一个:{{provider}}`,installingProvider:`正在安装 {{provider}}…`,installingSpecrails:`正在安装 specrails…`,installingFromTemplates:`正在从模板安装 Agent`,waitingForOutput:`等待输出…`,checkpoints:{baseInstall:`基础安装`,agentSelection:`Agent 选择`,agentGeneration:`Agent 生成`},steps:{configure:`配置`},summary:{agents:`Agent`,agentSkills:`Agent 技能`,skills:`技能`,openspecSkills:`OpenSpec 技能`,legacyRemoved_one:`已移除 {{count}} 个旧版 <code>/specrails:*</code> 命令`,legacyRemoved_other:`已移除 {{count}} 个旧版 <code>/specrails:*</code> 命令`},complete:{welcome:`欢迎使用 <spec>spec</spec><rails>rails</rails>`,configured:`<strong>{{projectName}}</strong> 现已配置好 AI 驱动的开发工作流。你的专属 Agent 和命令已就绪。`,installedForEngines_one:`已为 {{count}} 个引擎安装`,installedForEngines_other:`已为 {{count}} 个引擎安装`,learnMore:`了解如何充分利用 specrails:`,continueToProject:`进入项目`},error:{title:`设置失败`,skipSetup:`跳过设置`,prereqMissing:`SpecRails 设置需要 Node.js、npm、npx 和 Git 在 PATH 上可用后才能安装此项目。`,prereqRetryHint:`安装缺失的工具,重启 Specrails,然后重试设置。`}},t={title:`添加项目`,description:`注册一个项目目录,以便在 Specrails 中管理。`,noProviderDetected:`未检测到 AI CLI。请先安装 Claude Code 或 Codex CLI。`,pathLabel:`项目路径`,pathPlaceholder:`/Users/me/my-project`,pathHint:`项目根目录的绝对路径`,browseForFolder:`浏览文件夹`,selectProjectFolder:`选择项目文件夹`,nameLabel:`显示名称`,optional:`(可选)`,namePlaceholder:`我的项目`,nameHint:`默认为目录名`,providersLabel:`AI 提供商`,notFound:`未找到`,multiProviderHint:`两个引擎都将被安装。第一个为项目默认引擎。创建后不可更改。`,singleProviderHint:`项目创建后不可更改。`,adding:`添加中…`,submit:`添加项目`,toolsRequired_one:`添加项目需要 {{tools}}`,toolsRequired_other:`添加项目需要 {{tools}}`,errors:{pathRequired:`请输入项目路径`,selectProvider:`请至少选择一个 AI 提供商`,addFailed:`添加项目失败`},toasts:{registered:`项目“{{name}}”已注册`}},n={corruptedBundle:`应用包已损坏——请重新安装应用`,notInstalled:`未安装`,failedToExecute:`已找到但无法执行`,failedToExecuteAt:`在 {{path}} 找到但无法执行`,failedToExecuteWithError:`已找到但无法执行({{error}})`,failedToExecuteAtWithError:`在 {{path}} 找到但无法执行({{error}})`,needsMinimum:`已找到 {{version}}——需要 {{minVersion}}+`,unknownVersion:`未知`,installedLabel:`已安装`,verifyError:`无法在本地验证开发工具——安装时将再次校验。`,allDetected:`已检测到全部所需工具`,bundleCorruptedTitle:`应用包已损坏`,toolsRequired_one:`需要 {{count}} 个开发工具`,toolsRequired_other:`需要 {{count}} 个开发工具`,reinstallHint:`请重新安装 Specrails 应用以恢复内置工具。`,installMissingHint:`请安装缺失的工具以继续。`,moreInfo:`更多信息`,bundledBadge:`内置`},r={title:`安装开发工具`,description:`SpecRails 需要 PATH 上的 Node.js、npm、npx 和 Git。选择适合你操作系统的命令片段并运行,然后点击“我已安装,重新检测”。`,darwin:{intro:`用 Homebrew 一行命令即可装好两个工具。如果没有 brew,请使用官方下载。`,installNodeGit:`通过 Homebrew 安装 Node.js 和 Git`},win32:{intro:`Winget 随 Windows 11 及较新的 Windows 10 提供。打开 PowerShell 或终端并运行:`,installNode:`安装 Node.js LTS`,installGit:`安装 Git`,note:`安装后请重启 Specrails,以便 Windows 刷新 PATH。`},linux:{intro:`使用你发行版的包管理器:`,debian:`Debian / Ubuntu`,fedora:`Fedora / RHEL`},links:{nodeOfficial:`Node.js(官方)`,gitOfficial:`Git(官方)`,gitWindows:`Git for Windows(官方)`},showOtherPlatforms:`显示其他平台`,hideOtherPlatforms:`隐藏其他平台`,recheck:`我已安装,重新检测`,diagnostics:{copy:`复制诊断信息`,copied:`诊断信息已复制`,failed:`复制失败`},corrupted:{title:`应用包已损坏`,description:`一个或多个内置工具(Node.js、Git)无法通过验证。`,body:`此工具随 Specrails 应用内置,无法单独安装。如果你看到此消息,说明应用包可能已损坏,请重新安装 Specrails。`}},i={title:`设置进度`,progress:`已完成 {{done}} / {{total}}`,rawLog_one:`原始日志({{count}} 行)`,rawLog_other:`原始日志({{count}} 行)`},a={title:`设置助手`,subtitle:`回应提示以完成项目配置`,settingUp:`正在设置你的项目…`,placeholder:`输入回复…`,keyboardHint:`Enter 发送,Shift+Enter 换行`},o={title:`欢迎使用 <spec>spec</spec><rails>rails</rails>`,description:`Specrails 让你在一个界面中管理多个项目。添加第一个项目即可开始。`,addFirstProject:`添加你的第一个项目`},s={productTour:`产品导览`,stepCount:`第 {{current}} 步,共 {{total}} 步`,goToStep:`前往第 {{step}} 步:{{label}}`,stepLabel:`第 {{step}} 步`,dontShowAgain:`不再显示`,skipTour:`跳过导览`,getStarted:`开始使用`,flow:{addSpec:`添加 Spec`,dropInRail:`放入 Rail`,hitPlay:`点击播放`,ship:`交付`,architect:`架构师`,developer:`开发者`,reviewer:`评审员`},welcome:{nav:`欢迎`,title:`欢迎使用 Specrails`,subtitle:`用 AI Agent 交付软件的本地驾驶舱`,intro:`Specrails 把想法变成已交付的代码——并让你<b>看见、掌控、信任</b>每一步。与 AI 对话起草 spec,把它放到执行 rail 上,点击播放。流水线会自动处理架构、实现、评审与 pull request,全程实时直播它的工作。`,coreLoopLabel:`核心循环`,flowCaption:`每个 spec 都会自动流经<b>架构师 → 开发者 → 评审员 → 交付</b>。`,localNote:`<b>100% 本地 · 单用户 · 无需账号。</b>一切都在你的机器上运行。除非<i>你</i>主动对代码启动 Agent,否则代码绝不离开你的电脑。`,tourNote:`这个快速导览会带你了解应用的全部能力——大约一分钟。`},authorSpecs:{nav:`撰写 spec`,title:`把想法变成 spec`,subtitle:`六种方式,精准描述你想构建的内容`,intro:`<b>spec</b> 是对你想完成的工作的描述。怎么顺手怎么写——从一句话速记到与 AI 的完整对话。`,exploreLabel:`Explore——对话式`,exploreBody:`在聊天中描述你的需求;实时草稿每轮自动重建。预设滑块控制 AI 能看到多少项目上下文——从仅你的消息,到完整代码库加上你的 MCP 服务器。`,quickLabel:`Quick——一步到位`,quickBody:`已经想清楚了?一轮即可生成完整 spec。可选启用 Contract Layer 增强:精确的命名、数据结构、不变量和文件改动清单,让 Agent 不再重复造轮子。`,websiteLabel:`从网站创建`,websiteBody:`打开内嵌浏览器。悬停选中元素或拖出矩形框,截图、DOM 和应用的 CSS 都会成为附件。桌面版自带 Chromium,可离线使用。`,smashLabel:`SMASH 拆解大型 epic`,smashBody:`一键把大型 spec 拆解为一组更小的子 spec——每个子项的卡片上都带有简短摘要。`,draftsLabel:`草稿与继续编辑`,draftsBody:`把进行中的探索保存为草稿工单,稍后继续;任何 spec 都可以在 Explore 中重新打开,继续打磨。`,compareLabel:`并排对比`,compareBody:`把一个 spec 拖到屏幕边缘,其余 spec 的选择器会滑入——像平板一样并排查看两个 spec。`},rails:{nav:`在 rail 上运行`,title:`让流水线在 rail 上运行`,subtitle:`把 spec 整理进泳道,然后启动 Agent`,intro:`Dashboard 右侧是你的 <b>Rails</b>——执行泳道。把 spec 卡片拖到 rail 上,按 <play>▶ 播放</play> 启动一次实现任务。`,jobLabel:`每个任务运行什么`,flowCaption:`每个阶段的日志都会实时流式展示。`,modeLabel:`选择 rail 的运行模式`,modeBody:`每条 rail 可选模式:<b>Implement</b>(完整的结构化流水线)、<b>Batch</b>(顺序执行多个 spec),或 <b>Ultracode</b>(Claude 自主工作,无固定流水线)。`,profilesLabel:`Agent Profile`,profilesBody:`项目级的声明式目录,决定运行哪些 Agent 以及各自使用的模型——按 rail 选择、按任务快照,并发工作互不干扰。`,jobDetailLabel:`实时任务详情`,jobDetailBody:`每个任务都显示工单标识头、实时计时器和持续累计的轮次 / token 数,最终成本在任务结束时确定。`,isolationLabel:`多项目,相互隔离`,isolationBody:`每个项目都有独立的数据库和任务队列。可以同时运行多个项目,并从左侧边栏切换——每个项目的位置都会被记住。`},providers:{nav:`你的 Agent`,title:`自带 Agent`,subtitle:`Claude Code 和 Codex,均为一等公民引擎`,intro:`应用将 <b>Claude Code</b> 和 <b>Codex CLI</b> 视为同一契约下可互换的引擎。项目可以安装其中之一或两者——在安装时选择。`,table:{capability:`能力`,streamingResume:`流式输出与会话恢复`,native:`原生`,costReporting:`成本报告`,providerBilled:`提供商实际计费`,estimated:`估算(~)`,telemetry:`遥测(OTEL)`,synthesized:`合成`,agentProfiles:`Agent Profile`},calloutLabel:`两者都安装时`,calloutBody:`可<b>按 spec、按 rail 或按终端启动</b>选择引擎。应用会记住每个项目的上次选择。Codex 成本基于本地费率表估算,并始终以 <mono>~</mono> 标注。`},cost:{nav:`成本追踪`,title:`每一分钱都有迹可循`,subtitle:`每次计费调用都被记录并可视化`,intro:`每次 AI 调用——包括 rail、Quick、Explore、AI 编辑、SMASH 和文件摘要——<b>Claude 和 Codex</b> 都会被记录。再也不用猜 Agent 花了多少钱。`,analyticsLabel:`分析页面`,analyticsBody:`消耗速率概览、每日时间线、热门工单、模型分布,以及成本-轮次散点图。可按周期(7 天 / 30 天 / 90 天 / 全部)和来源筛选。`,perTicketLabel:`按工单统计支出`,perTicketBody:`每个 spec 的详情会显示其成本和轮次,并可深链到按该工单筛选的分析页面。`,honestLabel:`诚实的数字`,honestBody:`Claude 成本为提供商实际计费;Codex 为估算值并以 <mono>~</mono> 标注。Token 总数包含各缓存层级,数字真正对得上账。`,budgetsLabel:`预算与告警`,budgetsBody:`设置每日预算和单任务成本告警;超限时应用会自动暂停队列。任何数据都可导出为 CSV 或 JSON。`},workspace:{nav:`工作区`,title:`打造你的工作区`,subtitle:`无需离开窗口即可完成一切`,terminalLabel:`终端面板`,terminalBody:`底部一个真正的 VS Code 风格终端(<mod></mod> <j></j>)——WebGL 渲染、搜索、内联图片、拖放路径和 shell 集成。每个项目最多 10 个会话。`,codeLabel:`代码浏览器`,codeBody:`只读文件树和 Monaco 查看器,配有通俗易懂的 AI 摘要和“由 AI 修改”的溯源标签,任何人都能看懂改了什么、为什么改。`,integrationsLabel:`集成`,integrationsBody:`每个项目独立的 MCP 集成市场——内置 Serena 语义代码导航。安装是增量式的:装一个绝不影响另一个。`,themesLabel:`主题`,themesBody:`五个内置主题——specrails(默认)、dracula、aurora-light、obsidian-dark 和 matrix——在 UI 绘制前应用,不会闪屏。可在设置 → 外观中切换。`,chatsLabel:`可最小化的聊天`,chatsBody:`把 Explore 或 AI 编辑会话停靠为底部芯片,稍后继续——刷新或切换项目都不会丢失。`,desktopLabel:`桌面或浏览器`,desktopBody:`在浏览器中运行 Specrails,或下载已签名的桌面应用(macOS 和 Windows),它自带服务器与运行时。`},moveFast:{nav:`高效操作`,title:`以思维的速度移动`,subtitle:`键盘优先,无处不在`,paletteLabel:`命令面板`,paletteShortcut:`<f>按下</f> <mod></mod> <m>+</m> <k></k> <m>随时随地</m>`,paletteBody:`切换项目、运行 spec 命令、跳转任意页面、查找最近任务——全部支持模糊搜索。`,terminalLabel:`终端面板`,terminalBody:`用 <mod></mod> <j></j> 切换。`,shortcutsLabel:`全部快捷键`,shortcutsBody:`按 <q></q> 查看完整速查表。`,chatLabel:`聊天侧边栏`,chatBody:`用 <mod></mod> <bkey></bkey> 切换右侧边栏。`,projectsLabel:`项目侧边栏`,projectsBody:`用 <alt></alt> <mod></mod> <bkey></bkey> 切换左侧 Arc 侧边栏。`,outro:`<b>导览到此结束。</b>从左侧边栏添加一个项目,交付你的第一个 spec。你随时可以在设置中重新打开本导览。`}},c={wizard:e,addProject:t,prerequisites:n,instructions:r,checkpoints:i,setupChat:a,welcome:o,onboarding:s};export{t as addProject,i as checkpoints,c as default,r as instructions,s as onboarding,n as prerequisites,a as setupChat,o as welcome,e as wizard};