specrails-desktop 2.12.0 → 2.13.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 (401) hide show
  1. package/README.md +3 -2
  2. package/client/dist/assets/ActivityFeedPage-D0-P3PsD.js +1 -0
  3. package/client/dist/assets/AgentsPage-BZa3lhQM.js +86 -0
  4. package/client/dist/assets/AnalyticsPage-CgaEg-lx.js +1 -0
  5. package/client/dist/assets/BarChart-D9vfeilz.js +33 -0
  6. package/client/dist/assets/CodePage-2GUsF_JS.js +2 -0
  7. package/client/dist/assets/DesktopAnalyticsPage-C6Qccm5E.js +1 -0
  8. package/client/dist/assets/DocsDialog-BAmtk9Jc.js +11 -0
  9. package/client/dist/assets/DocsPage-CJwnpB57.js +11 -0
  10. package/client/dist/assets/{ExportDropdown-I_8R48Yq.js → ExportDropdown-DMJ__Yui.js} +1 -1
  11. package/client/dist/assets/IntegrationsPage-CP2VcOpr.js +3 -0
  12. package/client/dist/assets/JobDetailPage-Bk6tQTew.js +16 -0
  13. package/client/dist/assets/JobsPage-BvbeqWjS.js +1 -0
  14. package/client/dist/assets/LoopBuilderPage-BS3enu9N.js +7 -0
  15. package/client/dist/assets/LoopBuilderPage-DtxX27Jz.css +1 -0
  16. package/client/dist/assets/LoopsPage-B0pgvoky.js +2 -0
  17. package/client/dist/assets/analytics-BHApBnUn.js +1 -0
  18. package/client/dist/assets/analytics-BUxrug9J.js +1 -0
  19. package/client/dist/assets/analytics-Cy6DTfO-.js +1 -0
  20. package/client/dist/assets/analytics-DMJxD9FD.js +1 -0
  21. package/client/dist/assets/analytics-DgrBuxla.js +1 -0
  22. package/client/dist/assets/analytics-DwxT1CS8.js +1 -0
  23. package/client/dist/assets/analytics-GrLc-SMr.js +1 -0
  24. package/client/dist/assets/analytics-qvPq4T4h.js +1 -0
  25. package/client/dist/assets/atom-one-dark-DrWoEEbZ.js +1 -0
  26. package/client/dist/assets/auth-Cvsb7-Ek.js +1 -0
  27. package/client/dist/assets/{cssMode-DzNPAYFh.js → cssMode-DSHXamUH.js} +1 -1
  28. package/client/dist/assets/dashboard-8FSyxKGV.js +1 -0
  29. package/client/dist/assets/dashboard-A9XQUfdS.js +1 -0
  30. package/client/dist/assets/dashboard-BFktSDsV.js +1 -0
  31. package/client/dist/assets/dashboard-C1PKCXLs.js +1 -0
  32. package/client/dist/assets/dashboard-DNf0czU-.js +1 -0
  33. package/client/dist/assets/dashboard-DQQCOVfu.js +1 -0
  34. package/client/dist/assets/dashboard-DxFqeHZk.js +1 -0
  35. package/client/dist/assets/dashboard-WvPGhbbi.js +1 -0
  36. package/client/dist/assets/{dist-js-DXfIbU9U.js → dist-js-_oLAsZQ4.js} +1 -1
  37. package/client/dist/assets/{dist-js-CtdZvl0R.js → dist-js-o4iwbCuN.js} +1 -1
  38. package/client/dist/assets/{editor.main-C7Rmw-hR.js → editor.main-Cd8qBRAT.js} +2 -2
  39. package/client/dist/assets/{freemarker2-Cszs4SVo.js → freemarker2-CkEKTBm2.js} +1 -1
  40. package/client/dist/assets/{handlebars-Dp7Lsuym.js → handlebars-BRGx0JpL.js} +1 -1
  41. package/client/dist/assets/{html-BURidrEm.js → html-BfRIaGgN.js} +1 -1
  42. package/client/dist/assets/{htmlMode--k5M7GjZ.js → htmlMode-BTpSnsDE.js} +1 -1
  43. package/client/dist/assets/index-DrFJinsI.css +2 -0
  44. package/client/dist/assets/index-QEeqwz4v.js +143 -0
  45. package/client/dist/assets/{javascript-kJQz__44.js → javascript-DMmE2kKN.js} +1 -1
  46. package/client/dist/assets/{jsonMode-v5JYPpnz.js → jsonMode-hYuaUleY.js} +1 -1
  47. package/client/dist/assets/{lib-BBoUS-5a.js → lib-CVrpo1ac.js} +2 -2
  48. package/client/dist/assets/{liquid-Dl9I6gWt.js → liquid-C-VbuTr7.js} +1 -1
  49. package/client/dist/assets/loops-B1ZQCKEk.js +1 -0
  50. package/client/dist/assets/loops-Bp5yTSic.js +1 -0
  51. package/client/dist/assets/loops-BvoL_LAc.js +1 -0
  52. package/client/dist/assets/loops-BwgehdXY.js +1 -0
  53. package/client/dist/assets/loops-CMLUqUpc.js +1 -0
  54. package/client/dist/assets/loops-CW69VvTI.js +1 -0
  55. package/client/dist/assets/loops-DkV2RhEb.js +1 -0
  56. package/client/dist/assets/loops-arQ602Zm.js +1 -0
  57. package/client/dist/assets/{lspLanguageFeatures-CPlEe0NK.js → lspLanguageFeatures-BALx-vjn.js} +1 -1
  58. package/client/dist/assets/{mdx-Byl7TtzQ.js → mdx-Cs8MNCzn.js} +1 -1
  59. package/client/dist/assets/{monaco.contribution-YMAkHQcQ.js → monaco.contribution-CIvCAJs4.js} +2 -2
  60. package/client/dist/assets/nav-B5W9IMnf.js +1 -0
  61. package/client/dist/assets/nav-CCz4krPP.js +1 -0
  62. package/client/dist/assets/nav-CrG_mYRr.js +1 -0
  63. package/client/dist/assets/nav-Cw3_40fA.js +1 -0
  64. package/client/dist/assets/nav-DNDJ3H-_.js +1 -0
  65. package/client/dist/assets/nav-DVp1nEsi.js +1 -0
  66. package/client/dist/assets/nav-DbAbG5_k.js +1 -0
  67. package/client/dist/assets/nav-_0vAgZ_k.js +1 -0
  68. package/client/dist/assets/{python-jWQwT6j2.js → python-CGShLxuI.js} +1 -1
  69. package/client/dist/assets/{razor-BWS3sP-E.js → razor-CvOBQGd5.js} +1 -1
  70. package/client/dist/assets/{setup-Cpu17hJv.js → setup-BOmQ4vh2.js} +1 -1
  71. package/client/dist/assets/setup-BwO2-kuK.js +1 -0
  72. package/client/dist/assets/{setup-D-1r0uSx.js → setup-CUTNWz-0.js} +1 -1
  73. package/client/dist/assets/{setup-BHroXlke.js → setup-Cf3hjChU.js} +1 -1
  74. package/client/dist/assets/{setup-BIXsWUp1.js → setup-CsuXrbJ2.js} +1 -1
  75. package/client/dist/assets/{setup-B6egeeTM.js → setup-Df4cJOqu.js} +1 -1
  76. package/client/dist/assets/{setup-C0rVGnCy.js → setup-Do0fWx6W.js} +1 -1
  77. package/client/dist/assets/{setup-BJRdg1iE.js → setup-GlkDhBlJ.js} +1 -1
  78. package/client/dist/assets/{tsMode-BbOGOuSV.js → tsMode-04uOpiiP.js} +1 -1
  79. package/client/dist/assets/{typescript-eBtFQJLs.js → typescript-CX0CwyIZ.js} +1 -1
  80. package/client/dist/assets/upload-Dn9N1ESQ.js +1 -0
  81. package/client/dist/assets/value-Bd3Cf9Sr.js +1 -0
  82. package/client/dist/assets/{workers-BvicOoDf.js → workers-yr2u4c3C.js} +1 -1
  83. package/client/dist/assets/{xml-BJepAPyM.js → xml-C0OFlt5X.js} +1 -1
  84. package/client/dist/assets/{yaml-DabgV-eA.js → yaml-DgabaPs5.js} +1 -1
  85. package/client/dist/index.html +28 -26
  86. package/docs/getting-started.md +3 -2
  87. package/docs/guide/de/pipeline/1-rails-and-jobs.md +27 -22
  88. package/docs/guide/de/pipeline/5-the-loop-builder.md +91 -0
  89. package/docs/guide/en/pipeline/1-rails-and-jobs.md +11 -6
  90. package/docs/guide/en/pipeline/5-the-loop-builder.md +91 -0
  91. package/docs/guide/es/pipeline/1-rails-and-jobs.md +11 -6
  92. package/docs/guide/es/pipeline/5-the-loop-builder.md +91 -0
  93. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +40 -35
  94. package/docs/guide/fr/pipeline/5-the-loop-builder.md +91 -0
  95. package/docs/guide/it/pipeline/1-rails-and-jobs.md +11 -6
  96. package/docs/guide/it/pipeline/5-the-loop-builder.md +91 -0
  97. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +11 -6
  98. package/docs/guide/ja/pipeline/5-the-loop-builder.md +91 -0
  99. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +50 -45
  100. package/docs/guide/pt/pipeline/5-the-loop-builder.md +91 -0
  101. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +13 -8
  102. package/docs/guide/zh/pipeline/5-the-loop-builder.md +91 -0
  103. package/docs/internals/companion-rails-as-loops-contract.md +199 -0
  104. package/docs/internals/global-artifacts-alignment-contract.md +2 -0
  105. package/docs/running-pipelines.md +25 -14
  106. package/package.json +1 -1
  107. package/server/dist/ai-invocations.js +5 -3
  108. package/server/dist/db.js +45 -0
  109. package/server/dist/desktop-db.js +48 -0
  110. package/server/dist/desktop-router.js +10 -0
  111. package/server/dist/feature-flags.js +13 -0
  112. package/server/dist/loop-command-catalog.js +145 -0
  113. package/server/dist/loop-constants.js +82 -0
  114. package/server/dist/loop-decider.js +66 -0
  115. package/server/dist/loop-executors.js +193 -0
  116. package/server/dist/loop-factory.js +56 -0
  117. package/server/dist/loop-graph.js +144 -0
  118. package/server/dist/loop-preview.js +69 -0
  119. package/server/dist/loop-run-manager.js +407 -0
  120. package/server/dist/loop-runs-store.js +69 -0
  121. package/server/dist/loop-templates.js +137 -0
  122. package/server/dist/loops-router.js +302 -0
  123. package/server/dist/loops-store.js +137 -0
  124. package/server/dist/mobile/mobile-router.js +22 -0
  125. package/server/dist/mobile/mobile-ws.js +17 -1
  126. package/server/dist/project-registry.js +103 -1
  127. package/server/dist/project-router-jobs.js +11 -1
  128. package/server/dist/project-router-loop-runs.js +102 -0
  129. package/server/dist/project-router.js +2 -0
  130. package/server/dist/providers/claude-adapter.js +4 -0
  131. package/server/dist/providers/codex-adapter.js +21 -0
  132. package/server/dist/providers/gemini-adapter.js +4 -0
  133. package/server/dist/rails-router.js +175 -6
  134. package/server/dist/spending.js +5 -2
  135. package/server/dist/util/cli-prompt.js +6 -3
  136. package/client/dist/assets/ActivityFeedPage-B9-UAGS7.js +0 -1
  137. package/client/dist/assets/AgentsPage-Bz9rophT.js +0 -86
  138. package/client/dist/assets/AnalyticsPage-D3ynQwGd.js +0 -1
  139. package/client/dist/assets/BarChart-Cwp6VuED.js +0 -33
  140. package/client/dist/assets/CodePage-CO_TLOvi.js +0 -2
  141. package/client/dist/assets/DesktopAnalyticsPage-BMDqiAbw.js +0 -1
  142. package/client/dist/assets/DocsDialog-B-chJn-f.js +0 -11
  143. package/client/dist/assets/DocsPage-BcJwYo20.js +0 -11
  144. package/client/dist/assets/IntegrationsPage-Bd4l3L6u.js +0 -3
  145. package/client/dist/assets/JobDetailPage-Dt3jLjS4.js +0 -16
  146. package/client/dist/assets/JobsPage-DcWpJbBc.js +0 -1
  147. package/client/dist/assets/analytics-BeTyviO8.js +0 -1
  148. package/client/dist/assets/analytics-C4eEO260.js +0 -1
  149. package/client/dist/assets/analytics-C67cIA1b.js +0 -1
  150. package/client/dist/assets/analytics-CAguvW28.js +0 -1
  151. package/client/dist/assets/analytics-DBtt8Mgk.js +0 -1
  152. package/client/dist/assets/analytics-DMCto-TF.js +0 -1
  153. package/client/dist/assets/analytics-DUPtODxX.js +0 -1
  154. package/client/dist/assets/analytics-YIpQvPAc.js +0 -1
  155. package/client/dist/assets/dashboard--Ahnvfr3.js +0 -1
  156. package/client/dist/assets/dashboard-BN1C2pEh.js +0 -1
  157. package/client/dist/assets/dashboard-BZs_EzAn.js +0 -1
  158. package/client/dist/assets/dashboard-Bsw44L8_.js +0 -1
  159. package/client/dist/assets/dashboard-Bw3VECgY.js +0 -1
  160. package/client/dist/assets/dashboard-CuOshSHn.js +0 -1
  161. package/client/dist/assets/dashboard-DfouCM3_.js +0 -1
  162. package/client/dist/assets/dashboard-Pp5hwnZB.js +0 -1
  163. package/client/dist/assets/index-BEGU2TCx.js +0 -143
  164. package/client/dist/assets/index-B_Zqeoa5.css +0 -2
  165. package/client/dist/assets/nav-B05EYB0b.js +0 -1
  166. package/client/dist/assets/nav-BNGCq-0y.js +0 -1
  167. package/client/dist/assets/nav-BRInPX8a.js +0 -1
  168. package/client/dist/assets/nav-Bf87DRHD.js +0 -1
  169. package/client/dist/assets/nav-BkVzzFpc.js +0 -1
  170. package/client/dist/assets/nav-BzFLtS1W.js +0 -1
  171. package/client/dist/assets/nav-DBDbQOYn.js +0 -1
  172. package/client/dist/assets/nav-X9sVtUWC.js +0 -1
  173. package/client/dist/assets/setup-Dn2-veYO.js +0 -1
  174. /package/client/dist/assets/{abap-s65oMlhi.js → abap-CK68cr9-.js} +0 -0
  175. /package/client/dist/assets/{activity-Cyy07Tgo.js → activity-B2MvEH54.js} +0 -0
  176. /package/client/dist/assets/{activity-qFTcMyW9.js → activity-BbNkUmW4.js} +0 -0
  177. /package/client/dist/assets/{activity-DlbWCa4y.js → activity-C7VdmeGb.js} +0 -0
  178. /package/client/dist/assets/{activity-Dv6H7wEr.js → activity-Ca2XoBi-.js} +0 -0
  179. /package/client/dist/assets/{activity-C8qqEIoP.js → activity-D4dhNEwO.js} +0 -0
  180. /package/client/dist/assets/{activity-Dwq0heud.js → activity-DHjfmAyT.js} +0 -0
  181. /package/client/dist/assets/{activity-CZVM4nlJ.js → activity-Di2f50_Z.js} +0 -0
  182. /package/client/dist/assets/{activity-BqqwnH_h.js → activity-usnNa7FX.js} +0 -0
  183. /package/client/dist/assets/{addon-image-CpF0L0jM.js → addon-image-biWX2UUm.js} +0 -0
  184. /package/client/dist/assets/{addon-ligatures-hXysGZrA.js → addon-ligatures-D4EiDb5r.js} +0 -0
  185. /package/client/dist/assets/{addon-webgl-Cn1slavz.js → addon-webgl-CDCIZQ03.js} +0 -0
  186. /package/client/dist/assets/{addspec-RuL8Zd7w.js → addspec-1HEtmLv1.js} +0 -0
  187. /package/client/dist/assets/{addspec-DDvvnE6N.js → addspec-BxMn39wn.js} +0 -0
  188. /package/client/dist/assets/{addspec-xjDbYZWL.js → addspec-CNyAUGz_.js} +0 -0
  189. /package/client/dist/assets/{addspec-CIGb34PS.js → addspec-CO1xv6BL.js} +0 -0
  190. /package/client/dist/assets/{addspec-BErjOdNK.js → addspec-DAveBiCE.js} +0 -0
  191. /package/client/dist/assets/{addspec-C_3NBarY.js → addspec-DE_VfIyP.js} +0 -0
  192. /package/client/dist/assets/{addspec-B-BKlvDj.js → addspec-DfuR6EAl.js} +0 -0
  193. /package/client/dist/assets/{addspec-rmhOaH7N.js → addspec-IozoiiGs.js} +0 -0
  194. /package/client/dist/assets/{agents-BDx1RXcl.js → agents-1lhqEcXH.js} +0 -0
  195. /package/client/dist/assets/{agents-BFr3kUhK.js → agents-BYjUOrLD.js} +0 -0
  196. /package/client/dist/assets/{agents-CMxtJMLD.js → agents-CIhRSOna.js} +0 -0
  197. /package/client/dist/assets/{agents-DcxZHzNr.js → agents-CQlu1nOm.js} +0 -0
  198. /package/client/dist/assets/{agents-BlPnx-mz.js → agents-DCX9D3-Q.js} +0 -0
  199. /package/client/dist/assets/{agents-23iPejcA.js → agents-DVYpVGur.js} +0 -0
  200. /package/client/dist/assets/{agents-B_1L9xRg.js → agents-DcoUUFZl.js} +0 -0
  201. /package/client/dist/assets/{agents-G3shOewU.js → agents-Jc-CjBDB.js} +0 -0
  202. /package/client/dist/assets/{agentstudio-kk9RB7Se.js → agentstudio-1E-bag77.js} +0 -0
  203. /package/client/dist/assets/{agentstudio-Bk1eZcv4.js → agentstudio-9NbsoGXk.js} +0 -0
  204. /package/client/dist/assets/{agentstudio-Y3G0ddJ2.js → agentstudio-B-jQgYV-.js} +0 -0
  205. /package/client/dist/assets/{agentstudio-B-CMAQqy.js → agentstudio-B1y0JWY-.js} +0 -0
  206. /package/client/dist/assets/{agentstudio-DpP9caEE.js → agentstudio-Bwa72b1S.js} +0 -0
  207. /package/client/dist/assets/{agentstudio-CxlUllqI.js → agentstudio-DCTpIqOx.js} +0 -0
  208. /package/client/dist/assets/{agentstudio-DNlme601.js → agentstudio-DCyDW8sy.js} +0 -0
  209. /package/client/dist/assets/{agentstudio-ChxNuGAu.js → agentstudio-Q0Sq_jTg.js} +0 -0
  210. /package/client/dist/assets/{aiedit-DrfzQroF.js → aiedit-CGxeml8D.js} +0 -0
  211. /package/client/dist/assets/{aiedit-De0SOH6S.js → aiedit-CfBNanHE.js} +0 -0
  212. /package/client/dist/assets/{aiedit-BBCrOpHq.js → aiedit-CvSspQmE.js} +0 -0
  213. /package/client/dist/assets/{aiedit-fMltW101.js → aiedit-DSLtsYIu.js} +0 -0
  214. /package/client/dist/assets/{aiedit-BMtcGYNE.js → aiedit-DUpe7NxI.js} +0 -0
  215. /package/client/dist/assets/{aiedit-TTwzL1TS.js → aiedit-Dirqf3Bm.js} +0 -0
  216. /package/client/dist/assets/{aiedit-5ETerMK1.js → aiedit-kAU7KADg.js} +0 -0
  217. /package/client/dist/assets/{aiedit-D9ddlgkM.js → aiedit-qTGI_PGs.js} +0 -0
  218. /package/client/dist/assets/{apex-BLUBIldB.js → apex-BHHyAVNb.js} +0 -0
  219. /package/client/dist/assets/{attachments-CHaDUfjB.js → attachments-3CuBBRFu.js} +0 -0
  220. /package/client/dist/assets/{attachments-DazTVJbH.js → attachments-BLqqPGyy.js} +0 -0
  221. /package/client/dist/assets/{attachments-CCWasu-P.js → attachments-BNgH6Tcu.js} +0 -0
  222. /package/client/dist/assets/{attachments-BIsSSnHJ.js → attachments-C2JPppoP.js} +0 -0
  223. /package/client/dist/assets/{attachments-CVSAbGNl.js → attachments-CppM7de8.js} +0 -0
  224. /package/client/dist/assets/{attachments-Chg5poG1.js → attachments-D5fVsMgb.js} +0 -0
  225. /package/client/dist/assets/{attachments-Dn-JImAK.js → attachments-UJtEq892.js} +0 -0
  226. /package/client/dist/assets/{attachments-LDA9kp2X.js → attachments-pW3zm9nu.js} +0 -0
  227. /package/client/dist/assets/{azcli-DuWxh9mO.js → azcli-C56lfIEP.js} +0 -0
  228. /package/client/dist/assets/{bat-UKoTejQm.js → bat-BLamSaf-.js} +0 -0
  229. /package/client/dist/assets/{bicep-4sTT4B3D.js → bicep-lrOcEItS.js} +0 -0
  230. /package/client/dist/assets/{browser-D2Y_UAKA.js → browser-B7i7Ysc8.js} +0 -0
  231. /package/client/dist/assets/{browser-BDd1dbFa.js → browser-BVQgd1_1.js} +0 -0
  232. /package/client/dist/assets/{browser-Dxc_VIRK.js → browser-C91MQBxx.js} +0 -0
  233. /package/client/dist/assets/{browser-DH9SGVfM.js → browser-C__Vz7KR.js} +0 -0
  234. /package/client/dist/assets/{browser-lTQwcDCI.js → browser-DhwTc0ry.js} +0 -0
  235. /package/client/dist/assets/{browser-Qya9cARy.js → browser-Dpo_ug4c.js} +0 -0
  236. /package/client/dist/assets/{browser-BWSgbfdX.js → browser-DwE289IS.js} +0 -0
  237. /package/client/dist/assets/{browser-DWOVYMlg.js → browser-EFmPpkvO.js} +0 -0
  238. /package/client/dist/assets/{cameligo-CAAryRYO.js → cameligo-BK_p0bgU.js} +0 -0
  239. /package/client/dist/assets/{chat-UVVZqA57.js → chat-9RcD5Lcn.js} +0 -0
  240. /package/client/dist/assets/{chat-CUrG1eVg.js → chat-BXVx6rb5.js} +0 -0
  241. /package/client/dist/assets/{chat-CPgmgZOj.js → chat-BnJPyeUK.js} +0 -0
  242. /package/client/dist/assets/{chat-CvOOKB2s.js → chat-C5nJF6L0.js} +0 -0
  243. /package/client/dist/assets/{chat-BO9MvVID.js → chat-CE8bx6Rz.js} +0 -0
  244. /package/client/dist/assets/{chat-DIh3hr6y.js → chat-PVakYp92.js} +0 -0
  245. /package/client/dist/assets/{chat-mPn3UlMl.js → chat-UMl6H55K.js} +0 -0
  246. /package/client/dist/assets/{chat-BsbNGPW9.js → chat-mq1x9cxZ.js} +0 -0
  247. /package/client/dist/assets/{clojure-BlMERO1w.js → clojure-BQ7JOykv.js} +0 -0
  248. /package/client/dist/assets/{clsx-CnH-HMk3.js → clsx-CjLeUJfG.js} +0 -0
  249. /package/client/dist/assets/{code-BwIz8agY.js → code-BPMR8_Vp.js} +0 -0
  250. /package/client/dist/assets/{code-CDFlxUFC.js → code-BsOBm1Fb.js} +0 -0
  251. /package/client/dist/assets/{code-CY85RXZU.js → code-DtIatVES.js} +0 -0
  252. /package/client/dist/assets/{code-DtZBQTi9.js → code-Lg4awa35.js} +0 -0
  253. /package/client/dist/assets/{code-CD7yNSK0.js → code-OoLqhjoI.js} +0 -0
  254. /package/client/dist/assets/{code-D24e1Crx.js → code-aCUqkVN_.js} +0 -0
  255. /package/client/dist/assets/{code-Cp3Fdng-.js → code-eh4vO2-_.js} +0 -0
  256. /package/client/dist/assets/{code-nKa0fkm_.js → code-u9Sg9ohM.js} +0 -0
  257. /package/client/dist/assets/{coffee-Cj8D-Wl1.js → coffee-BD3DiL5s.js} +0 -0
  258. /package/client/dist/assets/{commands-t4frzhB0.js → commands-B9XEyMj-.js} +0 -0
  259. /package/client/dist/assets/{commands-BR1kDkHQ.js → commands-BI1Ta-E7.js} +0 -0
  260. /package/client/dist/assets/{commands-DWgp-8W1.js → commands-BdI0CtOL.js} +0 -0
  261. /package/client/dist/assets/{commands-ddsl1V91.js → commands-C2ewlyXo.js} +0 -0
  262. /package/client/dist/assets/{commands-IXMOKBYt.js → commands-CwypztRT.js} +0 -0
  263. /package/client/dist/assets/{commands-Cb21pDlG.js → commands-DSX3yJyr.js} +0 -0
  264. /package/client/dist/assets/{commands-B-MVT-2F.js → commands-Ic1DJDxm.js} +0 -0
  265. /package/client/dist/assets/{commands-B0yFTp7e.js → commands-yNn4IA4C.js} +0 -0
  266. /package/client/dist/assets/{common-CTEbWVZS.js → common-BhFasU8N.js} +0 -0
  267. /package/client/dist/assets/{common-CALKUpYm.js → common-CnrZ9gCZ.js} +0 -0
  268. /package/client/dist/assets/{common-B4sqsKp7.js → common-CwhHWbTD.js} +0 -0
  269. /package/client/dist/assets/{common-wA36jmj1.js → common-D9GAPxeN.js} +0 -0
  270. /package/client/dist/assets/{common-5ilvMOcH.js → common-DI4jE5y-.js} +0 -0
  271. /package/client/dist/assets/{common-DQiza2Xp.js → common-DS8zKLQT.js} +0 -0
  272. /package/client/dist/assets/{common-BKpVwUIf.js → common-DTHzyfYC.js} +0 -0
  273. /package/client/dist/assets/{common-BzEC3kJU.js → common-DY4nzbWC.js} +0 -0
  274. /package/client/dist/assets/{cpp-BPfKnaj_.js → cpp-splnCwCh.js} +0 -0
  275. /package/client/dist/assets/{csharp-gX-x5uD6.js → csharp-BCpsl-o3.js} +0 -0
  276. /package/client/dist/assets/{csp-DKGVt8SM.js → csp-tkCWrZmb.js} +0 -0
  277. /package/client/dist/assets/{css-CPMdnAVq.js → css-B_xdnReq.js} +0 -0
  278. /package/client/dist/assets/{cypher-ClMDrj9S.js → cypher-OL1zq-y3.js} +0 -0
  279. /package/client/dist/assets/{dart-C4zbzpVv.js → dart-CtTlOkrm.js} +0 -0
  280. /package/client/dist/assets/{dockerfile-D9xw73D1.js → dockerfile-DcQ5CNiW.js} +0 -0
  281. /package/client/dist/assets/{ecl-gqO8tIR9.js → ecl-DZpiDRt6.js} +0 -0
  282. /package/client/dist/assets/{editor.api2-BPnIxMjz.js → editor.api2-Cwla1nvV.js} +0 -0
  283. /package/client/dist/assets/{elixir-DSAhVF3_.js → elixir-Dzj2lqtK.js} +0 -0
  284. /package/client/dist/assets/{explore-8gMBVmkp.js → explore-4SD1DxR0.js} +0 -0
  285. /package/client/dist/assets/{explore-vdBm_Re8.js → explore-B2n8r9Ye.js} +0 -0
  286. /package/client/dist/assets/{explore-BkWTnLi3.js → explore-BxR9q8Hq.js} +0 -0
  287. /package/client/dist/assets/{explore-CQUCw9ci.js → explore-CBYU76JD.js} +0 -0
  288. /package/client/dist/assets/{explore-Dbac0ErD.js → explore-CCcPXrHg.js} +0 -0
  289. /package/client/dist/assets/{explore-DUU36tcH.js → explore-CZt4Ncpa.js} +0 -0
  290. /package/client/dist/assets/{explore-DlKgN7D-.js → explore-DQ0XEjed.js} +0 -0
  291. /package/client/dist/assets/{explore-COaUKI0t.js → explore-xQoaak6e.js} +0 -0
  292. /package/client/dist/assets/{flow9-DeQCSPOd.js → flow9-CFENCHIZ.js} +0 -0
  293. /package/client/dist/assets/{format-command-CZsy-vHq.js → format-command-CMsBTOPN.js} +0 -0
  294. /package/client/dist/assets/{fsharp-CEfaXL-S.js → fsharp-D-4bv7FB.js} +0 -0
  295. /package/client/dist/assets/{go-Xp1OkZCh.js → go-djxbTJq7.js} +0 -0
  296. /package/client/dist/assets/{graphql-BwRXrUwe.js → graphql-DHIFrkZ6.js} +0 -0
  297. /package/client/dist/assets/{hcl-u06DtVFk.js → hcl-CXVoowNb.js} +0 -0
  298. /package/client/dist/assets/{ini-AmeIpFND.js → ini-Crzc5kly.js} +0 -0
  299. /package/client/dist/assets/{integrations-B9CEpNF0.js → integrations-9qxUNhPD.js} +0 -0
  300. /package/client/dist/assets/{integrations-DWz1eU_K.js → integrations-A9f08E0o.js} +0 -0
  301. /package/client/dist/assets/{integrations-BlvAdewo.js → integrations-B17KyA-i.js} +0 -0
  302. /package/client/dist/assets/{integrations-Bw8UM9Xd.js → integrations-B46ac3sf.js} +0 -0
  303. /package/client/dist/assets/{integrations-7YyTBuU9.js → integrations-C7u7SInG.js} +0 -0
  304. /package/client/dist/assets/{integrations-DiPR8Fzp.js → integrations-DkBi-Gsh.js} +0 -0
  305. /package/client/dist/assets/{integrations-C5SxNKnG.js → integrations-DwSVdCpf.js} +0 -0
  306. /package/client/dist/assets/{integrations-CJQKMmdW.js → integrations-jJGaKwff.js} +0 -0
  307. /package/client/dist/assets/{java-CyDbRQjX.js → java-CYLaJrdE.js} +0 -0
  308. /package/client/dist/assets/{jira-DOw8bkIR.js → jira-01H1RfQj.js} +0 -0
  309. /package/client/dist/assets/{jira-DKImM1YH.js → jira-0ldfMByG.js} +0 -0
  310. /package/client/dist/assets/{jira-Fob8EGxN.js → jira-4Fin3fu7.js} +0 -0
  311. /package/client/dist/assets/{jira-xZA2lixb.js → jira-BpnpUFlb.js} +0 -0
  312. /package/client/dist/assets/{jira-C-ATCti0.js → jira-BwACz875.js} +0 -0
  313. /package/client/dist/assets/{jira-DlA-wGp-.js → jira-CBU0200d.js} +0 -0
  314. /package/client/dist/assets/{jira-D7bkKAX8.js → jira-Dht8qNck.js} +0 -0
  315. /package/client/dist/assets/{jira-CmVfRM-b.js → jira-DzIVvNmy.js} +0 -0
  316. /package/client/dist/assets/{jobs-DAF8AGy5.js → jobs-BF9raUkL.js} +0 -0
  317. /package/client/dist/assets/{jobs-D93lG6If.js → jobs-Bw4hqEro.js} +0 -0
  318. /package/client/dist/assets/{jobs-F5PGJwbW.js → jobs-DM9owF1j.js} +0 -0
  319. /package/client/dist/assets/{jobs-Db3xrsp_.js → jobs-DRInW0AE.js} +0 -0
  320. /package/client/dist/assets/{jobs-fYWWxCUV.js → jobs-DcCONARH.js} +0 -0
  321. /package/client/dist/assets/{jobs-Brp44JDd.js → jobs-Oz3UtLQn.js} +0 -0
  322. /package/client/dist/assets/{jobs-Do4Ltqdj.js → jobs-jEQidSIb.js} +0 -0
  323. /package/client/dist/assets/{jobs-BGkI19S_.js → jobs-ym72SIR9.js} +0 -0
  324. /package/client/dist/assets/{julia-BqialFRG.js → julia-BJ7tUU-T.js} +0 -0
  325. /package/client/dist/assets/{kotlin-Dzz8TWAt.js → kotlin-CeWcU3lC.js} +0 -0
  326. /package/client/dist/assets/{less-DHRJD3TR.js → less-CviwWNG4.js} +0 -0
  327. /package/client/dist/assets/{lexon-5Y3QgTmT.js → lexon-Dt28jqDS.js} +0 -0
  328. /package/client/dist/assets/{lua-sKvhfPn5.js → lua-B6AOaJSi.js} +0 -0
  329. /package/client/dist/assets/{m3-DWDVwkFG.js → m3-VnMkHJcy.js} +0 -0
  330. /package/client/dist/assets/{markdown-CD_aSBxW.js → markdown-8vKNdvIM.js} +0 -0
  331. /package/client/dist/assets/{mips-687T03hg.js → mips-DoEcuzan.js} +0 -0
  332. /package/client/dist/assets/{msdax-C1St-dIV.js → msdax-CNzvHyEp.js} +0 -0
  333. /package/client/dist/assets/{mysql-BG7r8oBS.js → mysql-Buk3vUtL.js} +0 -0
  334. /package/client/dist/assets/{objective-c-Ds1-m05L.js → objective-c-DfOmda-5.js} +0 -0
  335. /package/client/dist/assets/{pascal-BKK9FpIi.js → pascal-DoAA2yjy.js} +0 -0
  336. /package/client/dist/assets/{pascaligo-SRS3nwtO.js → pascaligo-C65Vn1fu.js} +0 -0
  337. /package/client/dist/assets/{perl-B2hTOlrF.js → perl-INlfQ_ro.js} +0 -0
  338. /package/client/dist/assets/{pgsql-DIQJYNpL.js → pgsql-DtwRzglx.js} +0 -0
  339. /package/client/dist/assets/{php-BEaVe8X2.js → php-DfHqVNet.js} +0 -0
  340. /package/client/dist/assets/{pla-oPLHpZ-Q.js → pla-D3dNVRYk.js} +0 -0
  341. /package/client/dist/assets/{postiats-D_vzrAzD.js → postiats-UKXD1rM4.js} +0 -0
  342. /package/client/dist/assets/{powerquery-BKG6w-FH.js → powerquery-zE3E3O7s.js} +0 -0
  343. /package/client/dist/assets/{powershell-B3dLhDt4.js → powershell-Df9b3zQl.js} +0 -0
  344. /package/client/dist/assets/{protobuf-DC8SGjcl.js → protobuf-BF0nUVrW.js} +0 -0
  345. /package/client/dist/assets/{pug-D5E-4fI0.js → pug-Bj6Yikv_.js} +0 -0
  346. /package/client/dist/assets/{qsharp-6vJAWv0x.js → qsharp-BI4h-raZ.js} +0 -0
  347. /package/client/dist/assets/{r-CDwsEcbM.js → r-DhpnmaXx.js} +0 -0
  348. /package/client/dist/assets/{redis-CuQbbESS.js → redis-DwYYPr4d.js} +0 -0
  349. /package/client/dist/assets/{redshift-B9e1k-qI.js → redshift-D2f3Bc-4.js} +0 -0
  350. /package/client/dist/assets/{restructuredtext-BiJ5IwaU.js → restructuredtext-Dkiif6fe.js} +0 -0
  351. /package/client/dist/assets/{ruby-B0UAHY9b.js → ruby-C6hLmHy0.js} +0 -0
  352. /package/client/dist/assets/{rust-Dg_spmFr.js → rust-X8WAGtxB.js} +0 -0
  353. /package/client/dist/assets/{sb-DjU66I8Q.js → sb-4M2la0Kr.js} +0 -0
  354. /package/client/dist/assets/{scala-qvStIdfG.js → scala-CaCXz58E.js} +0 -0
  355. /package/client/dist/assets/{scheme-FstEk5Rh.js → scheme-CMdjpmP7.js} +0 -0
  356. /package/client/dist/assets/{scss-w0U3rQLK.js → scss-QopmvPyp.js} +0 -0
  357. /package/client/dist/assets/{settings-CewqtD9V.js → settings-0m2iuTzd.js} +0 -0
  358. /package/client/dist/assets/{settings-Puea5c8v.js → settings-BA1V6KdK.js} +0 -0
  359. /package/client/dist/assets/{settings-Cx97tHs5.js → settings-BN7OusER.js} +0 -0
  360. /package/client/dist/assets/{settings-BwMQ1lx5.js → settings-Bi5FFkIw.js} +0 -0
  361. /package/client/dist/assets/{settings-EMaKBwE0.js → settings-CRJxyTNN.js} +0 -0
  362. /package/client/dist/assets/{settings-DkB9Wh-f.js → settings-DyBxunCh.js} +0 -0
  363. /package/client/dist/assets/{settings-CqCY8gZq.js → settings-fk-WlnUt.js} +0 -0
  364. /package/client/dist/assets/{settings-CyixAx0X.js → settings-iQe5Dim-.js} +0 -0
  365. /package/client/dist/assets/{shell-DJ78wREd.js → shell-CDBchS00.js} +0 -0
  366. /package/client/dist/assets/{solidity-1aGIVsdX.js → solidity-DvBfi5mC.js} +0 -0
  367. /package/client/dist/assets/{sophia-40LqcGjB.js → sophia-HSnXR17u.js} +0 -0
  368. /package/client/dist/assets/{sparql-Cz5dqG_g.js → sparql-DhG_ppup.js} +0 -0
  369. /package/client/dist/assets/{specs-DfwDeADE.js → specs-Bku8SypT.js} +0 -0
  370. /package/client/dist/assets/{specs-B4GuOzuZ.js → specs-BvsFNKTs.js} +0 -0
  371. /package/client/dist/assets/{specs-ghyBMnib.js → specs-C2wW5bq8.js} +0 -0
  372. /package/client/dist/assets/{specs-VK-zXv7x.js → specs-CUE3xSFM.js} +0 -0
  373. /package/client/dist/assets/{specs-D-Sb6dre.js → specs-C_8j4ELZ.js} +0 -0
  374. /package/client/dist/assets/{specs-C62F2CDv.js → specs-CnH7dOiF.js} +0 -0
  375. /package/client/dist/assets/{specs-DFSkAeK8.js → specs-D4ORogcT.js} +0 -0
  376. /package/client/dist/assets/{specs-BVLKe2n5.js → specs-D6Y76Bgi.js} +0 -0
  377. /package/client/dist/assets/{sql-64f62Ni4.js → sql-DHeIS-tf.js} +0 -0
  378. /package/client/dist/assets/{st-gJe2yG8J.js → st-CMWchiRU.js} +0 -0
  379. /package/client/dist/assets/{swift-C6ME22mv.js → swift-CDXvBefj.js} +0 -0
  380. /package/client/dist/assets/{systemverilog-CEWz259w.js → systemverilog-0RTukYUE.js} +0 -0
  381. /package/client/dist/assets/{tcl-CcLVIi3m.js → tcl-CbBF_Ttl.js} +0 -0
  382. /package/client/dist/assets/{terminal-CPpK58RC.js → terminal-BLh00ouM.js} +0 -0
  383. /package/client/dist/assets/{terminal-CdxkpafL.js → terminal-BTanJIt_.js} +0 -0
  384. /package/client/dist/assets/{terminal-DHIkiWcs.js → terminal-CB33IsO1.js} +0 -0
  385. /package/client/dist/assets/{terminal-Ciia0wh2.js → terminal-CR6t-Oey.js} +0 -0
  386. /package/client/dist/assets/{terminal-DY42QANg.js → terminal-CY_sPfdD.js} +0 -0
  387. /package/client/dist/assets/{terminal-C0xx0SjA.js → terminal-Cj4HzP3p.js} +0 -0
  388. /package/client/dist/assets/{terminal-BYtreaaF.js → terminal-Cz_Puz0q.js} +0 -0
  389. /package/client/dist/assets/{terminal-DoxtVdma.js → terminal-DFEH9XTQ.js} +0 -0
  390. /package/client/dist/assets/{tickets-D5MSAPe_.js → tickets-BFrVcXAI.js} +0 -0
  391. /package/client/dist/assets/{tickets-DBV3wgQZ.js → tickets-C3gG--yT.js} +0 -0
  392. /package/client/dist/assets/{tickets-r4-oNV0R.js → tickets-Cfhwbdxj.js} +0 -0
  393. /package/client/dist/assets/{tickets-RZ0LyeQe.js → tickets-DcggvP3k.js} +0 -0
  394. /package/client/dist/assets/{tickets-d1A6EOHa.js → tickets-EnP6m_Ao.js} +0 -0
  395. /package/client/dist/assets/{tickets-Q0_pONEh.js → tickets-IbYhlr-6.js} +0 -0
  396. /package/client/dist/assets/{tickets-CVJQ-vRm.js → tickets-ZS5EsDxn.js} +0 -0
  397. /package/client/dist/assets/{tickets-CG_mo-Bg.js → tickets-lJR7pWNI.js} +0 -0
  398. /package/client/dist/assets/{twig-DvsO-WjW.js → twig-DCcGd8FE.js} +0 -0
  399. /package/client/dist/assets/{typespec-Brkt3IAA.js → typespec-HTphp-Uh.js} +0 -0
  400. /package/client/dist/assets/{vb-r121Uzxt.js → vb-Cb_yUcVd.js} +0 -0
  401. /package/client/dist/assets/{wgsl-BRX8uYh4.js → wgsl-DrKU3YXj.js} +0 -0
@@ -0,0 +1 @@
1
+ var e=`Loops`,t=`Bucles de automatización reutilizables — compartidos entre todos tus proyectos.`,n=`Nuevo loop`,r={drafts:`Borradores`,published:`Publicados`,templates:`Plantillas`,builtIn:`Integrados`},i={draft:`Borrador`,published:`Publicado`,running:`En ejecución`},a={title:`Aún no hay loops`,body:`Crea uno desde cero o empieza a partir de una plantilla.`},o={edit:`Editar`,delete:`Eliminar`,publish:`Publicar`,unpublish:`Despublicar`,duplicate:`Duplicar`,use:`Usar plantilla`,preview:`Vista previa`,fork:`Bifurcar para editar`,run:`Ejecutar`,export:`Exportar`,import:`Importar`,select:`Seleccionar {{name}}`},s={nodes_one:`{{count}} nodo`,nodes_other:`{{count}} nodos`,usedIn:`En uso · {{project}}`},c=`¿Eliminar este loop? Desaparecerá de todos los selectores de rieles.`,l=`Nuevo loop`,u={load:`No se pudieron cargar los loops`,save:`No se pudo guardar el loop`,publishInvalid:`Este loop aún no se puede publicar — corrige los problemas resaltados.`},d={back:`Volver a los loops`,save:`Guardar`,saved:`Loop guardado`,publish:`Publicar`,published:`Loop publicado`,addNode:`Añadir nodo`,deleteNode:`Eliminar nodo`,config:{maxIterations:`Iteraciones máximas`,timeout:`Tiempo límite (min)`,maxIterationsHint:`Tope de iteraciones del Loop Decider — el loop se detiene al alcanzarlo aunque no se cumpla el objetivo. Evita bucles infinitos.`,timeoutHint:`Límite de tiempo real de toda la ejecución, en minutos. Si se supera, la ejecución se detiene y se marca como fallida — una red de seguridad junto a las iteraciones máximas.`,maxCost:`Coste máx ($)`,maxCostHint:`Presupuesto opcional en USD para toda la ejecución. Se comprueba ENTRE pasos (el coste de un paso solo se sabe al terminarlo), así que el loop para antes del siguiente paso cuando el total lo supera — puede pasarse un paso. En proveedores no-Claude el coste es estimado. Vacío = sin tope.`},nodes:{start:`Inicio`,"ai-step":`Paso de IA`,shell:`Shell`,decider:`Decisor del loop`,condition:`Condición`,end:`Fin`},inspector:{selectNode:`Selecciona un nodo para editarlo.`,prompt:`Prompt`,provider:`Proveedor`,model:`Modelo`,effort:`Esfuerzo de razonamiento`,command:`Comando`,goal:`Objetivo / criterio de parada`,join:`Unión`,outcome:`Resultado`,startNote:`El punto de entrada del loop. Conéctalo al primer paso.`,promptHint:`Haz clic o arrastra un token para insertarlo en el prompt.`,tokensSpec:`Campos del spec`,tokensJira:`Jira`,tokensCommands:`Comandos`,label:`Nombre`},branch:{continue:`↻ Continuar`,stop:`✓ Detener`},edgesHelp:{label:`Cómo se conectan los pasos`,body:`Las flechas marcan el ORDEN de ejecución, no los datos: las cajas no tienen puertos de entrada y las conexiones no transportan parámetros. Cada AI Step reanuda automáticamente su sesión (con todo el contexto previo) más un resumen breve de los pasos anteriores; nada se conecta a mano. El Loop Decider tiene dos salidas: ↻ Continuar (objetivo no cumplido → volver al bucle) y ✓ Detener (objetivo cumplido → salir).`},arrange:{label:`Ordenar`,vertical:`Vertical`,horizontal:`Horizontal`,grid:`Cuadrícula`,reset:`Restablecer`},constants:{label:`Constantes`,manage:`Gestionar constantes`,title:`Constantes del loop`,empty:`Aún no hay constantes personalizadas.`,name:`NOMBRE`,value:`valor`,add:`Añadir`,builtinBadge:`Integradas`},paste:{done_one:`{{count}} paso pegado`,done_other:`{{count}} pasos pegados`},problems:{count_one:`{{count}} problema`,count_other:`{{count}} problemas`,NO_START:`Añade un nodo de Inicio.`,MULTIPLE_START:`Solo se permite un nodo de Inicio.`,NO_END:`Añade al menos un nodo de Fin.`,ORPHAN:`Este paso no es alcanzable desde Inicio.`,DECIDER_BRANCHES:`El Decisor necesita una rama Continuar y otra Detener.`,EMPTY_PROMPT:`El Paso de IA tiene el prompt vacío.`,EMPTY_COMMAND:`El paso Shell tiene el comando vacío.`,EMPTY_GOAL:`El Decisor no tiene objetivo.`,DEAD_END:`Este paso no tiene conexión de salida.`},preview:{label:`Previsualizar`,title:`Previsualización (dry-run)`,sampleNote:`Los valores del spec son de ejemplo; comandos y constantes se resuelven tal cual en ejecución.`,empty:`No hay pasos que previsualizar.`,error:`Falló la previsualización`}},f={steps:`Pasos`,limits:`máx. {{iterations}} iteraciones · {{timeout}} min de timeout`},p=`Integrado`,m={title:`Ejecutar {{name}}`,subtitle:`Lanza este loop en un proyecto (sin ticket).`,project:`Proyecto`,provider:`Proveedor`,effort:`Esfuerzo de razonamiento`,execute:`Ejecutar`,noProjects:`No hay proyectos disponibles.`,launched:`Ejecutando {{name}}`},h={"ship-and-green":{name:`Ship & Green`,description:`Totalmente autónomo: implementa la spec, verifica y refina (corrige) cuando falla, encadenando verificar → corregir → verificar hasta que todo esté en verde. Sin intervención humana.`},"verify-pass":{name:`Verificación`,description:`Verifica y corrige de forma autónoma: detecta y ejecuta el build, el lint y los tests del proyecto y luego refina cuando falla, encadenando verificar → corregir → verificar hasta que esté en verde.`},"ci-watch":{name:`Vigilar CI`,description:`Consulta los checks de CI del PR abierto (el agente usa las herramientas de CI del repositorio) hasta que todos los checks estén en verde.`},"lint-and-fix":{name:`Lint y corregir`,description:`El agente detecta y ejecuta el linter del proyecto y corrige cada incidencia, iterando hasta que el código esté limpio.`},"type-safe":{name:`Tipado seguro`,description:`El agente detecta y ejecuta el comprobador de tipos del proyecto y resuelve cada error, iterando hasta que pase sin problemas.`},"coverage-climb":{name:`Subir cobertura`,description:`El agente ejecuta las herramientas de cobertura del proyecto y añade tests específicos hasta superar los umbrales.`},"build-fix":{name:`Arreglar build`,description:`El agente detecta y ejecuta el build de producción del proyecto y corrige los errores de compilación o de empaquetado hasta que esté en verde.`},"deploy-check":{name:`Comprobar deploy`,description:`El agente consulta el estado del deploy y de salud (usando las herramientas de deploy del proyecto) hasta que el servicio se reporte saludable.`},factory_implement:{name:`Implementar`,description:`Totalmente autónomo: implementa la spec, verifica y refina (corrige) cuando falla, encadenando hasta que pasen todos los tests.`},factory_batch:{name:`Implementar en lote`,description:`Implementa de golpe todos los tickets del raíl y luego verifica y refina cuando falla hasta que esté en verde.`},factory_ultracode:{name:`Ultracode`,description:`Implementación autónoma por ticket (sin pipeline) y luego verifica y refina hasta que esté en verde. Solo con Claude.`}},g={title:e,subtitle:t,newLoop:n,sections:r,status:i,empty:a,actions:o,card:s,confirmDelete:c,newLoopName:l,errors:u,builder:d,preview:f,builtInBadge:p,run:m,catalog:h,import:{done_one:`{{count}} loop importado`,done_other:`{{count}} loops importados`,skipped_one:`Omitido {{count}} duplicado: {{names}}`,skipped_other:`Omitidos {{count}} duplicados: {{names}}`,invalid:`Ese archivo no es una exportación de loops válida.`}};export{o as actions,d as builder,p as builtInBadge,s as card,h as catalog,c as confirmDelete,g as default,a as empty,u as errors,n as newLoop,l as newLoopName,f as preview,m as run,r as sections,i as status,t as subtitle,e as title};
@@ -0,0 +1 @@
1
+ var e=`Loops`,t=`Loops de automação reutilizáveis — partilhados entre todos os seus projetos.`,n=`Novo loop`,r={drafts:`Rascunhos`,published:`Publicados`,templates:`Modelos`,builtIn:`Integrados`},i={draft:`Rascunho`,published:`Publicado`,running:`Em execução`},a={title:`Ainda não há loops`,body:`Crie um do zero ou comece a partir de um modelo.`},o={edit:`Editar`,delete:`Eliminar`,publish:`Publicar`,unpublish:`Despublicar`,duplicate:`Duplicar`,use:`Usar modelo`,preview:`Pré-visualização`,fork:`Bifurcar para editar`,run:`Executar`,export:`Exportar`,import:`Importar`,select:`Selecionar {{name}}`},s={nodes_one:`{{count}} nó`,nodes_other:`{{count}} nós`,usedIn:`Em uso · {{project}}`},c=`Eliminar este loop? Desaparecerá de todos os seletores de rail.`,l=`Novo loop`,u={load:`Falha ao carregar os loops`,save:`Falha ao guardar o loop`,publishInvalid:`Este loop ainda não pode ser publicado — corrija os problemas assinalados.`},d={back:`Voltar aos Loops`,save:`Guardar`,saved:`Loop guardado`,publish:`Publicar`,published:`Loop publicado`,addNode:`Adicionar nó`,deleteNode:`Eliminar nó`,config:{maxIterations:`Iterações máximas`,timeout:`Tempo limite (min)`,maxIterationsHint:`Limite de iterações do Loop Decider — o loop para ao atingi-lo mesmo que o objetivo não seja cumprido. Evita loops infinitos.`,timeoutHint:`Limite de tempo real de toda a execução, em minutos. Se excedido, a execução é interrompida e marcada como falha — uma rede de segurança junto com as iterações máximas.`,maxCost:`Custo máx ($)`,maxCostHint:`Orçamento opcional em USD para toda a execução. Verificado ENTRE passos (o custo de um passo só é conhecido ao terminá-lo), o loop para antes do próximo passo quando o total ultrapassa — pode passar um passo. Em provedores não-Claude o custo é estimado. Vazio = sem limite.`},nodes:{start:`Início`,"ai-step":`Passo de IA`,shell:`Shell`,decider:`Decisor do Loop`,condition:`Condição`,end:`Fim`},inspector:{selectNode:`Selecione um nó para o editar.`,prompt:`Prompt`,provider:`Fornecedor`,model:`Modelo`,effort:`Esforço de raciocínio`,command:`Comando`,goal:`Objetivo / critérios de paragem`,join:`Junção`,outcome:`Resultado`,startNote:`O ponto de entrada do loop. Ligue-o ao primeiro passo.`,promptHint:`Clique ou arraste um token para inseri-lo no prompt.`,tokensSpec:`Campos da spec`,tokensJira:`Jira`,tokensCommands:`Comandos`,label:`Nome`},branch:{continue:`↻ Continuar`,stop:`✓ Parar`},edgesHelp:{label:`Como as etapas se conectam`,body:`As setas definem a ORDEM de execução, não os dados — as caixas não têm portas de entrada e as conexões não carregam parâmetros. Cada AI Step retoma automaticamente sua sessão (todo o contexto anterior) mais um breve resumo das etapas anteriores; nada é ligado manualmente. O Loop Decider tem duas saídas: ↻ Continuar (objetivo não atingido → volta ao loop) e ✓ Parar (objetivo atingido → sai).`},arrange:{label:`Organizar`,vertical:`Vertical`,horizontal:`Horizontal`,grid:`Grade`,reset:`Redefinir`},constants:{label:`Constantes`,manage:`Gerenciar constantes`,title:`Constantes do loop`,empty:`Ainda não há constantes personalizadas.`,name:`NOME`,value:`valor`,add:`Adicionar`,builtinBadge:`Integradas`},paste:{done_one:`{{count}} passo colado`,done_other:`{{count}} passos colados`},problems:{count_one:`{{count}} problema`,count_other:`{{count}} problemas`,NO_START:`Adicione um nó de Início.`,MULTIPLE_START:`Só é permitido um nó de Início.`,NO_END:`Adicione pelo menos um nó de Fim.`,ORPHAN:`Este passo não é acessível a partir do Início.`,DECIDER_BRANCHES:`O Loop Decider precisa de uma ramificação Continuar e uma Parar.`,EMPTY_PROMPT:`O AI Step está com o prompt vazio.`,EMPTY_COMMAND:`O passo Shell está com o comando vazio.`,EMPTY_GOAL:`O Loop Decider não tem objetivo.`,DEAD_END:`Este passo não tem conexão de saída.`},preview:{label:`Pré-visualizar`,title:`Pré-visualização (dry-run)`,sampleNote:`Os valores do spec são exemplos; comandos e constantes são resolvidos como em execução.`,empty:`Nenhum passo para pré-visualizar.`,error:`Falha na pré-visualização`}},f={steps:`Passos`,limits:`máx. {{iterations}} iterações · {{timeout}} min de timeout`},p=`Integrado`,m={title:`Executar {{name}}`,subtitle:`Inicia este loop num projeto (sem ticket).`,project:`Projeto`,provider:`Provedor`,effort:`Esforço de raciocínio`,execute:`Executar`,noProjects:`Sem projetos disponíveis.`,launched:`Executando {{name}}`},h={"ship-and-green":{name:`Ship & Green`,description:`Totalmente autônomo: implementa a spec, verifica e refina (corrige) em caso de falha — repetindo verificar → corrigir → verificar até tudo ficar verde. Sem intervenção humana.`},"verify-pass":{name:`Verificação`,description:`Verificação e correção autônomas: detecta e executa o build/lint/testes do projeto e, em caso de falha, refina — verificar → corrigir → verificar até ficar verde.`},"ci-watch":{name:`Monitorar CI`,description:`Consulta as verificações de CI no PR aberto (o agente usa as ferramentas de CI do repositório) até que todas fiquem verdes.`},"lint-and-fix":{name:`Lint & Corrigir`,description:`O agente detecta e executa o lint do projeto e corrige cada problema, iterando até o código ficar limpo.`},"type-safe":{name:`Tipos Seguros`,description:`O agente detecta e executa o verificador de tipos do projeto e resolve cada erro, iterando até passar sem problemas.`},"coverage-climb":{name:`Subir Cobertura`,description:`O agente executa a ferramenta de cobertura do projeto e adiciona testes focados até atingir os limites exigidos.`},"build-fix":{name:`Corrigir Build`,description:`O agente detecta e executa o build de produção do projeto e corrige erros de compilação/empacotamento até ficar verde.`},"deploy-check":{name:`Checar Deploy`,description:`O agente consulta o status de deploy/saúde (usando as ferramentas de deploy do projeto) até o serviço reportar que está saudável.`},factory_implement:{name:`Implementar`,description:`Totalmente autônomo: implementa a spec, verifica e refina (corrige) em caso de falha — repetindo até todos os testes passarem.`},factory_batch:{name:`Implementar em Lote`,description:`Implementa de uma vez todos os tickets do trilho e, em seguida, verifica + refina em caso de falha até ficar verde.`},factory_ultracode:{name:`Ultracode`,description:`Implementação autônoma por ticket (sem pipeline) e, em seguida, verifica + refina até ficar verde. Apenas Claude.`}},g={title:e,subtitle:t,newLoop:n,sections:r,status:i,empty:a,actions:o,card:s,confirmDelete:c,newLoopName:l,errors:u,builder:d,preview:f,builtInBadge:p,run:m,catalog:h,import:{done_one:`{{count}} loop importado`,done_other:`{{count}} loops importados`,skipped_one:`{{count}} duplicado ignorado: {{names}}`,skipped_other:`{{count}} duplicados ignorados: {{names}}`,invalid:`Esse arquivo não é uma exportação de loops válida.`}};export{o as actions,d as builder,p as builtInBadge,s as card,h as catalog,c as confirmDelete,g as default,a as empty,u as errors,n as newLoop,l as newLoopName,f as preview,m as run,r as sections,i as status,t as subtitle,e as title};
@@ -0,0 +1 @@
1
+ var e=`Loops`,t=`Boucles d'automatisation réutilisables — partagées entre tous vos projets.`,n=`Nouvelle boucle`,r={drafts:`Brouillons`,published:`Publiées`,templates:`Modèles`,builtIn:`Intégrés`},i={draft:`Brouillon`,published:`Publiée`,running:`En cours`},a={title:`Aucune boucle pour l'instant`,body:`Créez-en une de zéro ou partez d'un modèle.`},o={edit:`Modifier`,delete:`Supprimer`,publish:`Publier`,unpublish:`Dépublier`,duplicate:`Dupliquer`,use:`Utiliser le modèle`,preview:`Aperçu`,fork:`Dupliquer pour éditer`,run:`Exécuter`,export:`Exporter`,import:`Importer`,select:`Sélectionner {{name}}`},s={nodes_one:`{{count}} nœud`,nodes_other:`{{count}} nœuds`,usedIn:`En cours d'utilisation · {{project}}`},c=`Supprimer cette boucle ? Elle disparaîtra de tous les sélecteurs de rail.`,l=`Nouvelle boucle`,u={load:`Échec du chargement des boucles`,save:`Échec de l'enregistrement de la boucle`,publishInvalid:`Cette boucle ne peut pas encore être publiée — corrigez les problèmes signalés.`},d={back:`Retour aux boucles`,save:`Enregistrer`,saved:`Boucle enregistrée`,publish:`Publier`,published:`Boucle publiée`,addNode:`Ajouter un nœud`,deleteNode:`Supprimer le nœud`,config:{maxIterations:`Itérations max`,timeout:`Délai (min)`,maxIterationsHint:`Plafond d'itérations du Loop Decider — la boucle s'arrête une fois atteint, même si l'objectif n'est pas rempli. Évite les boucles infinies.`,timeoutHint:`Limite de temps réel pour toute l'exécution, en minutes. Si dépassée, l'exécution est arrêtée et marquée échouée — un filet de sécurité avec le nombre max d'itérations.`,maxCost:`Coût max ($)`,maxCostHint:`Budget USD optionnel pour toute l’exécution. Vérifié ENTRE les étapes (le coût d’une étape n’est connu qu’à sa fin), la boucle s’arrête avant l’étape suivante une fois le total dépassé — peut dépasser d’une étape. Pour les fournisseurs non-Claude, le coût est estimé. Vide = aucune limite.`},nodes:{start:`Début`,"ai-step":`Étape IA`,shell:`Shell`,decider:`Décideur de boucle`,condition:`Condition`,end:`Fin`},inspector:{selectNode:`Sélectionnez un nœud pour le modifier.`,prompt:`Invite`,provider:`Fournisseur`,model:`Modèle`,effort:`Effort de raisonnement`,command:`Commande`,goal:`Objectif / critères d'arrêt`,join:`Jointure`,outcome:`Résultat`,startNote:`Le point d'entrée de la boucle. Connectez-le à la première étape.`,promptHint:`Cliquez ou glissez un jeton pour l'insérer dans le prompt.`,tokensSpec:`Champs du spec`,tokensJira:`Jira`,tokensCommands:`Commandes`,label:`Nom`},branch:{continue:`↻ Continuer`,stop:`✓ Arrêter`},edgesHelp:{label:`Comment les étapes se connectent`,body:`Les flèches définissent l'ORDRE d'exécution, pas les données — les boîtes n'ont pas de ports d'entrée et les arêtes ne transportent aucun paramètre. Chaque AI Step reprend automatiquement sa session (tout le contexte précédent) plus un bref résumé des étapes antérieures ; rien n'est câblé à la main. Le Loop Decider a deux sorties : ↻ Continuer (objectif non atteint → retour en boucle) et ✓ Arrêter (objectif atteint → sortie).`},arrange:{label:`Disposer`,vertical:`Vertical`,horizontal:`Horizontal`,grid:`Grille`,reset:`Réinitialiser`},constants:{label:`Constantes`,manage:`Gérer les constantes`,title:`Constantes du loop`,empty:`Aucune constante personnalisée.`,name:`NOM`,value:`valeur`,add:`Ajouter`,builtinBadge:`Intégrées`},paste:{done_one:`{{count}} étape collée`,done_other:`{{count}} étapes collées`},problems:{count_one:`{{count}} problème`,count_other:`{{count}} problèmes`,NO_START:`Ajoutez un nœud de départ.`,MULTIPLE_START:`Un seul nœud de départ est autorisé.`,NO_END:`Ajoutez au moins un nœud de fin.`,ORPHAN:`Cette étape n'est pas accessible depuis le départ.`,DECIDER_BRANCHES:`Le Loop Decider a besoin d'une branche Continuer et d'une branche Arrêter.`,EMPTY_PROMPT:`L'AI Step a un prompt vide.`,EMPTY_COMMAND:`L'étape Shell a une commande vide.`,EMPTY_GOAL:`Le Loop Decider n'a pas d'objectif.`,DEAD_END:`Cette étape n'a aucune connexion sortante.`},preview:{label:`Aperçu`,title:`Aperçu (dry-run)`,sampleNote:`Les valeurs du spec sont des exemples ; commandes et constantes sont résolues telles qu'à l'exécution.`,empty:`Aucune étape à prévisualiser.`,error:`Échec de l'aperçu`}},f={steps:`Étapes`,limits:`{{iterations}} itérations max · {{timeout}} min de délai`},p=`Intégré`,m={title:`Exécuter {{name}}`,subtitle:`Lance ce loop sur un projet (sans ticket).`,project:`Projet`,provider:`Fournisseur`,effort:`Effort de raisonnement`,execute:`Exécuter`,noProjects:`Aucun projet disponible.`,launched:`Exécution de {{name}}`},h={"ship-and-green":{name:`Ship & Green`,description:`Totalement autonome : implémente le spec, vérifie, puis corrige en cas d'échec — en bouclant vérifier → corriger → vérifier jusqu'à ce que tout soit au vert. Aucune intervention humaine.`},"verify-pass":{name:`Passe de vérification`,description:`Vérification et correction autonomes : détecte et lance le build/lint/tests du projet, puis corrige en cas d'échec — vérifier → corriger → vérifier jusqu'au vert.`},"ci-watch":{name:`Surveillance CI`,description:`Interroge les contrôles CI sur la PR ouverte (l'agent utilise l'outillage CI du dépôt) jusqu'à ce que chaque contrôle soit au vert.`},"lint-and-fix":{name:`Lint & correction`,description:`L'agent détecte et lance le linter du projet et corrige chaque problème, en itérant jusqu'à ce que le code soit propre.`},"type-safe":{name:`Types sûrs`,description:`L'agent détecte et lance le vérificateur de types du projet et résout chaque erreur, en itérant jusqu'à ce qu'il passe sans accroc.`},"coverage-climb":{name:`Montée de couverture`,description:`L'agent lance l'outillage de couverture du projet et ajoute des tests ciblés jusqu'à ce que les seuils soient atteints.`},"build-fix":{name:`Correction de build`,description:`L'agent détecte et lance le build de production du projet et corrige les erreurs de compilation/bundle jusqu'à ce qu'il soit au vert.`},"deploy-check":{name:`Contrôle de deploy`,description:`L'agent interroge l'état de deploy/santé (à l'aide de l'outillage de deploy du projet) jusqu'à ce que le service se déclare en bonne santé.`},factory_implement:{name:`Implémenter`,description:`Totalement autonome : implémente le spec, vérifie, puis corrige en cas d'échec — en bouclant jusqu'à ce que tous les tests passent.`},factory_batch:{name:`Implémentation par lots`,description:`Implémente d'un coup tous les tickets du rail, puis vérifie et corrige en cas d'échec jusqu'au vert.`},factory_ultracode:{name:`Ultracode`,description:`Implémentation autonome par ticket (sans pipeline), puis vérification et correction jusqu'au vert. Claude uniquement.`}},g={title:e,subtitle:t,newLoop:n,sections:r,status:i,empty:a,actions:o,card:s,confirmDelete:c,newLoopName:l,errors:u,builder:d,preview:f,builtInBadge:p,run:m,catalog:h,import:{done_one:`{{count}} loop importé`,done_other:`{{count}} loops importés`,skipped_one:`{{count}} doublon ignoré : {{names}}`,skipped_other:`{{count}} doublons ignorés : {{names}}`,invalid:`Ce fichier n'est pas un export de loops valide.`}};export{o as actions,d as builder,p as builtInBadge,s as card,h as catalog,c as confirmDelete,g as default,a as empty,u as errors,n as newLoop,l as newLoopName,f as preview,m as run,r as sections,i as status,t as subtitle,e as title};
@@ -0,0 +1 @@
1
+ var e=`Loops`,t=`可复用的自动化循环——在你所有项目间共享。`,n=`新建循环`,r={drafts:`草稿`,published:`已发布`,templates:`模板`,builtIn:`内置`},i={draft:`草稿`,published:`已发布`,running:`运行中`},a={title:`暂无循环`,body:`从零创建一个,或从模板开始。`},o={edit:`编辑`,delete:`删除`,publish:`发布`,unpublish:`取消发布`,duplicate:`复制`,use:`使用模板`,preview:`预览`,fork:`复刻以编辑`,run:`运行`,export:`导出`,import:`导入`,select:`选择 {{name}}`},s={nodes_one:`{{count}} 个节点`,nodes_other:`{{count}} 个节点`,usedIn:`使用中 · {{project}}`},c=`删除此循环?它将从所有 rail 选择器中消失。`,l=`新建循环`,u={load:`加载循环失败`,save:`保存循环失败`,publishInvalid:`此循环暂时无法发布——请修复高亮显示的问题。`},d={back:`返回循环列表`,save:`保存`,saved:`循环已保存`,publish:`发布`,published:`循环已发布`,addNode:`添加节点`,deleteNode:`删除节点`,config:{maxIterations:`最大迭代次数`,timeout:`超时(分钟)`,maxIterationsHint:`Loop Decider 迭代次数上限——达到后即使目标未达成也会停止循环。防止无限循环。`,timeoutHint:`整个运行的实际时间上限(分钟)。超过后运行将停止并标记为失败——与最大迭代次数一起作为安全网。`,maxCost:`最大费用 ($)`,maxCostHint:`整个运行的可选美元预算。在步骤之间检查(每步费用只有在该步结束后才知道),因此当总额超过时循环会在下一步之前停止——可能超出一步。非 Claude 提供方的费用为估算。留空 = 不限制。`},nodes:{start:`开始`,"ai-step":`AI 步骤`,shell:`Shell`,decider:`循环决策器`,condition:`条件`,end:`结束`},inspector:{selectNode:`选择一个节点进行编辑。`,prompt:`提示词`,provider:`提供方`,model:`模型`,effort:`推理强度`,command:`命令`,goal:`目标 / 停止条件`,join:`合并`,outcome:`结果`,startNote:`循环的入口点。将其连接到第一个步骤。`,promptHint:`点击或拖动令牌将其插入提示词。`,tokensSpec:`Spec 字段`,tokensJira:`Jira`,tokensCommands:`命令`,label:`名称`},branch:{continue:`↻ 继续`,stop:`✓ 停止`},edgesHelp:{label:`步骤如何连接`,body:`箭头设定的是运行顺序,而非数据——节点没有输入端口,连线也不携带任何参数。每个 AI Step 都会自动恢复其会话(完整的先前上下文),并附带前序步骤的简短摘要;无需手动连线。Loop Decider 有两个输出:↻ 继续(目标未达成 → 循环返回)和 ✓ 停止(目标达成 → 退出)。`},arrange:{label:`排列`,vertical:`垂直`,horizontal:`水平`,grid:`网格`,reset:`重置`},constants:{label:`常量`,manage:`管理常量`,title:`循环常量`,empty:`还没有自定义常量。`,name:`名称`,value:`值`,add:`添加`,builtinBadge:`内置`},paste:{done_one:`已粘贴 {{count}} 个步骤`,done_other:`已粘贴 {{count}} 个步骤`},problems:{count_one:`{{count}} 个问题`,count_other:`{{count}} 个问题`,NO_START:`添加一个开始节点。`,MULTIPLE_START:`只允许一个开始节点。`,NO_END:`至少添加一个结束节点。`,ORPHAN:`该步骤无法从开始到达。`,DECIDER_BRANCHES:`Loop Decider 需要一个继续分支和一个停止分支。`,EMPTY_PROMPT:`AI 步骤的提示词为空。`,EMPTY_COMMAND:`Shell 步骤的命令为空。`,EMPTY_GOAL:`Loop Decider 没有目标。`,DEAD_END:`该步骤没有出向连接。`},preview:{label:`预览`,title:`试运行预览`,sampleNote:`Spec 值为示例数据;命令和常量按运行时的实际值解析。`,empty:`没有可预览的步骤。`,error:`预览失败`}},f={steps:`步骤`,limits:`最多 {{iterations}} 次迭代 · {{timeout}} 分钟超时`},p=`内置`,m={title:`运行 {{name}}`,subtitle:`在某个项目上启动此循环(无需工单)。`,project:`项目`,provider:`提供方`,effort:`推理强度`,execute:`执行`,noProjects:`没有可用的项目。`,launched:`正在运行 {{name}}`},h={"ship-and-green":{name:`交付并通过`,description:`全自动:实现 spec、验证,失败时自动修正(fix)——循环执行 验证 → 修复 → 验证,直到全部通过。无需人工干预。`},"verify-pass":{name:`验证通过`,description:`自动验证并修复:检测并运行项目的 build/lint/测试,失败时自动修正——验证 → 修复 → 验证,直到全部通过。`},"ci-watch":{name:`CI 监视`,description:`轮询当前已打开 PR 的 CI 检查(由 agent 使用仓库的 CI 工具),直到每一项检查都通过。`},"lint-and-fix":{name:`Lint 修复`,description:`agent 检测并运行项目的 linter,修复每一个问题,持续迭代直到代码库干净无误。`},"type-safe":{name:`类型安全`,description:`agent 检测并运行项目的类型检查器,解决每一个错误,持续迭代直到顺利通过。`},"coverage-climb":{name:`覆盖率提升`,description:`agent 运行项目的覆盖率工具并补充针对性测试,直到达到阈值。`},"build-fix":{name:`构建修复`,description:`agent 检测并运行项目的生产 build,修复编译/打包错误,直到顺利通过。`},"deploy-check":{name:`部署检查`,description:`agent 轮询部署/健康状态(使用项目的 deploy 工具),直到服务报告健康。`},factory_implement:{name:`实现`,description:`全自动:实现 spec、验证,失败时自动修正(fix)——循环直到所有测试通过。`},factory_batch:{name:`批量实现`,description:`一次性批量实现该 rail 的全部工单,然后验证 + 失败时修正,直到全部通过。`},factory_ultracode:{name:`Ultracode`,description:`按工单自动实现(无流水线),然后验证 + 修正,直到全部通过。仅支持 Claude。`}},g={title:e,subtitle:t,newLoop:n,sections:r,status:i,empty:a,actions:o,card:s,confirmDelete:c,newLoopName:l,errors:u,builder:d,preview:f,builtInBadge:p,run:m,catalog:h,import:{done_one:`已导入 {{count}} 个循环`,done_other:`已导入 {{count}} 个循环`,skipped_one:`已跳过 {{count}} 个重复项:{{names}}`,skipped_other:`已跳过 {{count}} 个重复项:{{names}}`,invalid:`该文件不是有效的循环导出。`}};export{o as actions,d as builder,p as builtInBadge,s as card,h as catalog,c as confirmDelete,g as default,a as empty,u as errors,n as newLoop,l as newLoopName,f as preview,m as run,r as sections,i as status,t as subtitle,e as title};
@@ -1,4 +1,4 @@
1
- import{a as e,c as t,f as n,h as r,p as i}from"./editor.api2-BPnIxMjz.js";var a;(function(e){function t(e){return typeof e==`string`}e.is=t})(a||={});var o;(function(e){function t(e){return typeof e==`string`}e.is=t})(o||={});var s;(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647;function t(t){return typeof t==`number`&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}e.is=t})(s||={});var c;(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647;function t(t){return typeof t==`number`&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}e.is=t})(c||={});var l;(function(e){function t(e,t){return e===Number.MAX_VALUE&&(e=c.MAX_VALUE),t===Number.MAX_VALUE&&(t=c.MAX_VALUE),{line:e,character:t}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&U.uinteger(t.line)&&U.uinteger(t.character)}e.is=n})(l||={});var u;(function(e){function t(e,t,n,r){if(U.uinteger(e)&&U.uinteger(t)&&U.uinteger(n)&&U.uinteger(r))return{start:l.create(e,t),end:l.create(n,r)};if(l.is(e)&&l.is(t))return{start:e,end:t};throw Error(`Range#create called with invalid arguments[${e}, ${t}, ${n}, ${r}]`)}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&l.is(t.start)&&l.is(t.end)}e.is=n})(u||={});var d;(function(e){function t(e,t){return{uri:e,range:t}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&u.is(t.range)&&(U.string(t.uri)||U.undefined(t.uri))}e.is=n})(d||={});var f;(function(e){function t(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&u.is(t.targetRange)&&U.string(t.targetUri)&&u.is(t.targetSelectionRange)&&(u.is(t.originSelectionRange)||U.undefined(t.originSelectionRange))}e.is=n})(f||={});var p;(function(e){function t(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&U.numberRange(t.red,0,1)&&U.numberRange(t.green,0,1)&&U.numberRange(t.blue,0,1)&&U.numberRange(t.alpha,0,1)}e.is=n})(p||={});var ee;(function(e){function t(e,t){return{range:e,color:t}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&u.is(t.range)&&p.is(t.color)}e.is=n})(ee||={});var te;(function(e){function t(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&U.string(t.label)&&(U.undefined(t.textEdit)||y.is(t))&&(U.undefined(t.additionalTextEdits)||U.typedArray(t.additionalTextEdits,y.is))}e.is=n})(te||={});var m;(function(e){e.Comment=`comment`,e.Imports=`imports`,e.Region=`region`})(m||={});var ne;(function(e){function t(e,t,n,r,i,a){let o={startLine:e,endLine:t};return U.defined(n)&&(o.startCharacter=n),U.defined(r)&&(o.endCharacter=r),U.defined(i)&&(o.kind=i),U.defined(a)&&(o.collapsedText=a),o}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&U.uinteger(t.startLine)&&U.uinteger(t.startLine)&&(U.undefined(t.startCharacter)||U.uinteger(t.startCharacter))&&(U.undefined(t.endCharacter)||U.uinteger(t.endCharacter))&&(U.undefined(t.kind)||U.string(t.kind))}e.is=n})(ne||={});var h;(function(e){function t(e,t){return{location:e,message:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&d.is(t.location)&&U.string(t.message)}e.is=n})(h||={});var g;(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(g||={});var re;(function(e){e.Unnecessary=1,e.Deprecated=2})(re||={});var ie;(function(e){function t(e){let t=e;return U.objectLiteral(t)&&U.string(t.href)}e.is=t})(ie||={});var _;(function(e){function t(e,t,n,r,i,a){let o={range:e,message:t};return U.defined(n)&&(o.severity=n),U.defined(r)&&(o.code=r),U.defined(i)&&(o.source=i),U.defined(a)&&(o.relatedInformation=a),o}e.create=t;function n(e){let t=e;return U.defined(t)&&u.is(t.range)&&U.string(t.message)&&(U.number(t.severity)||U.undefined(t.severity))&&(U.integer(t.code)||U.string(t.code)||U.undefined(t.code))&&(U.undefined(t.codeDescription)||U.string(t.codeDescription?.href))&&(U.string(t.source)||U.undefined(t.source))&&(U.undefined(t.relatedInformation)||U.typedArray(t.relatedInformation,h.is))}e.is=n})(_||={});var v;(function(e){function t(e,t,...n){let r={title:e,command:t};return U.defined(n)&&n.length>0&&(r.arguments=n),r}e.create=t;function n(e){let t=e;return U.defined(t)&&U.string(t.title)&&U.string(t.command)}e.is=n})(v||={});var y;(function(e){function t(e,t){return{range:e,newText:t}}e.replace=t;function n(e,t){return{range:{start:e,end:e},newText:t}}e.insert=n;function r(e){return{range:e,newText:``}}e.del=r;function i(e){let t=e;return U.objectLiteral(t)&&U.string(t.newText)&&u.is(t.range)}e.is=i})(y||={});var b;(function(e){function t(e,t,n){let r={label:e};return t!==void 0&&(r.needsConfirmation=t),n!==void 0&&(r.description=n),r}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&U.string(t.label)&&(U.boolean(t.needsConfirmation)||t.needsConfirmation===void 0)&&(U.string(t.description)||t.description===void 0)}e.is=n})(b||={});var x;(function(e){function t(e){let t=e;return U.string(t)}e.is=t})(x||={});var ae;(function(e){function t(e,t,n){return{range:e,newText:t,annotationId:n}}e.replace=t;function n(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}}e.insert=n;function r(e,t){return{range:e,newText:``,annotationId:t}}e.del=r;function i(e){let t=e;return y.is(t)&&(b.is(t.annotationId)||x.is(t.annotationId))}e.is=i})(ae||={});var S;(function(e){function t(e,t){return{textDocument:e,edits:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&k.is(t.textDocument)&&Array.isArray(t.edits)}e.is=n})(S||={});var C;(function(e){function t(e,t,n){let r={kind:`create`,uri:e};return t!==void 0&&(t.overwrite!==void 0||t.ignoreIfExists!==void 0)&&(r.options=t),n!==void 0&&(r.annotationId=n),r}e.create=t;function n(e){let t=e;return t&&t.kind===`create`&&U.string(t.uri)&&(t.options===void 0||(t.options.overwrite===void 0||U.boolean(t.options.overwrite))&&(t.options.ignoreIfExists===void 0||U.boolean(t.options.ignoreIfExists)))&&(t.annotationId===void 0||x.is(t.annotationId))}e.is=n})(C||={});var w;(function(e){function t(e,t,n,r){let i={kind:`rename`,oldUri:e,newUri:t};return n!==void 0&&(n.overwrite!==void 0||n.ignoreIfExists!==void 0)&&(i.options=n),r!==void 0&&(i.annotationId=r),i}e.create=t;function n(e){let t=e;return t&&t.kind===`rename`&&U.string(t.oldUri)&&U.string(t.newUri)&&(t.options===void 0||(t.options.overwrite===void 0||U.boolean(t.options.overwrite))&&(t.options.ignoreIfExists===void 0||U.boolean(t.options.ignoreIfExists)))&&(t.annotationId===void 0||x.is(t.annotationId))}e.is=n})(w||={});var T;(function(e){function t(e,t,n){let r={kind:`delete`,uri:e};return t!==void 0&&(t.recursive!==void 0||t.ignoreIfNotExists!==void 0)&&(r.options=t),n!==void 0&&(r.annotationId=n),r}e.create=t;function n(e){let t=e;return t&&t.kind===`delete`&&U.string(t.uri)&&(t.options===void 0||(t.options.recursive===void 0||U.boolean(t.options.recursive))&&(t.options.ignoreIfNotExists===void 0||U.boolean(t.options.ignoreIfNotExists)))&&(t.annotationId===void 0||x.is(t.annotationId))}e.is=n})(T||={});var E;(function(e){function t(e){let t=e;return t&&(t.changes!==void 0||t.documentChanges!==void 0)&&(t.documentChanges===void 0||t.documentChanges.every(e=>U.string(e.kind)?C.is(e)||w.is(e)||T.is(e):S.is(e)))}e.is=t})(E||={});var D;(function(e){function t(e){return{uri:e}}e.create=t;function n(e){let t=e;return U.defined(t)&&U.string(t.uri)}e.is=n})(D||={});var O;(function(e){function t(e,t){return{uri:e,version:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&U.string(t.uri)&&U.integer(t.version)}e.is=n})(O||={});var k;(function(e){function t(e,t){return{uri:e,version:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&U.string(t.uri)&&(t.version===null||U.integer(t.version))}e.is=n})(k||={});var oe;(function(e){function t(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}}e.create=t;function n(e){let t=e;return U.defined(t)&&U.string(t.uri)&&U.string(t.languageId)&&U.integer(t.version)&&U.string(t.text)}e.is=n})(oe||={});var A;(function(e){e.PlainText=`plaintext`,e.Markdown=`markdown`;function t(t){let n=t;return n===e.PlainText||n===e.Markdown}e.is=t})(A||={});var j;(function(e){function t(e){let t=e;return U.objectLiteral(e)&&A.is(t.kind)&&U.string(t.value)}e.is=t})(j||={});var M;(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(M||={});var N;(function(e){e.PlainText=1,e.Snippet=2})(N||={});var se;(function(e){e.Deprecated=1})(se||={});var ce;(function(e){function t(e,t,n){return{newText:e,insert:t,replace:n}}e.create=t;function n(e){let t=e;return t&&U.string(t.newText)&&u.is(t.insert)&&u.is(t.replace)}e.is=n})(ce||={});var le;(function(e){e.asIs=1,e.adjustIndentation=2})(le||={});var ue;(function(e){function t(e){let t=e;return t&&(U.string(t.detail)||t.detail===void 0)&&(U.string(t.description)||t.description===void 0)}e.is=t})(ue||={});var de;(function(e){function t(e){return{label:e}}e.create=t})(de||={});var fe;(function(e){function t(e,t){return{items:e||[],isIncomplete:!!t}}e.create=t})(fe||={});var P;(function(e){function t(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,`\\$&`)}e.fromPlainText=t;function n(e){let t=e;return U.string(t)||U.objectLiteral(t)&&U.string(t.language)&&U.string(t.value)}e.is=n})(P||={});var pe;(function(e){function t(e){let t=e;return!!t&&U.objectLiteral(t)&&(j.is(t.contents)||P.is(t.contents)||U.typedArray(t.contents,P.is))&&(e.range===void 0||u.is(e.range))}e.is=t})(pe||={});var me;(function(e){function t(e,t){return t?{label:e,documentation:t}:{label:e}}e.create=t})(me||={});var F;(function(e){function t(e,t,...n){let r={label:e};return U.defined(t)&&(r.documentation=t),U.defined(n)?r.parameters=n:r.parameters=[],r}e.create=t})(F||={});var I;(function(e){e.Text=1,e.Read=2,e.Write=3})(I||={});var L;(function(e){function t(e,t){let n={range:e};return U.number(t)&&(n.kind=t),n}e.create=t})(L||={});var R;(function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26})(R||={});var z;(function(e){e.Deprecated=1})(z||={});var he;(function(e){function t(e,t,n,r,i){let a={name:e,kind:t,location:{uri:r,range:n}};return i&&(a.containerName=i),a}e.create=t})(he||={});var ge;(function(e){function t(e,t,n,r){return r===void 0?{name:e,kind:t,location:{uri:n}}:{name:e,kind:t,location:{uri:n,range:r}}}e.create=t})(ge||={});var _e;(function(e){function t(e,t,n,r,i,a){let o={name:e,detail:t,kind:n,range:r,selectionRange:i};return a!==void 0&&(o.children=a),o}e.create=t;function n(e){let t=e;return t&&U.string(t.name)&&U.number(t.kind)&&u.is(t.range)&&u.is(t.selectionRange)&&(t.detail===void 0||U.string(t.detail))&&(t.deprecated===void 0||U.boolean(t.deprecated))&&(t.children===void 0||Array.isArray(t.children))&&(t.tags===void 0||Array.isArray(t.tags))}e.is=n})(_e||={});var ve;(function(e){e.Empty=``,e.QuickFix=`quickfix`,e.Refactor=`refactor`,e.RefactorExtract=`refactor.extract`,e.RefactorInline=`refactor.inline`,e.RefactorRewrite=`refactor.rewrite`,e.Source=`source`,e.SourceOrganizeImports=`source.organizeImports`,e.SourceFixAll=`source.fixAll`})(ve||={});var B;(function(e){e.Invoked=1,e.Automatic=2})(B||={});var ye;(function(e){function t(e,t,n){let r={diagnostics:e};return t!=null&&(r.only=t),n!=null&&(r.triggerKind=n),r}e.create=t;function n(e){let t=e;return U.defined(t)&&U.typedArray(t.diagnostics,_.is)&&(t.only===void 0||U.typedArray(t.only,U.string))&&(t.triggerKind===void 0||t.triggerKind===B.Invoked||t.triggerKind===B.Automatic)}e.is=n})(ye||={});var be;(function(e){function t(e,t,n){let r={title:e},i=!0;return typeof t==`string`?(i=!1,r.kind=t):v.is(t)?r.command=t:r.edit=t,i&&n!==void 0&&(r.kind=n),r}e.create=t;function n(e){let t=e;return t&&U.string(t.title)&&(t.diagnostics===void 0||U.typedArray(t.diagnostics,_.is))&&(t.kind===void 0||U.string(t.kind))&&(t.edit!==void 0||t.command!==void 0)&&(t.command===void 0||v.is(t.command))&&(t.isPreferred===void 0||U.boolean(t.isPreferred))&&(t.edit===void 0||E.is(t.edit))}e.is=n})(be||={});var xe;(function(e){function t(e,t){let n={range:e};return U.defined(t)&&(n.data=t),n}e.create=t;function n(e){let t=e;return U.defined(t)&&u.is(t.range)&&(U.undefined(t.command)||v.is(t.command))}e.is=n})(xe||={});var Se;(function(e){function t(e,t){return{tabSize:e,insertSpaces:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&U.uinteger(t.tabSize)&&U.boolean(t.insertSpaces)}e.is=n})(Se||={});var Ce;(function(e){function t(e,t,n){return{range:e,target:t,data:n}}e.create=t;function n(e){let t=e;return U.defined(t)&&u.is(t.range)&&(U.undefined(t.target)||U.string(t.target))}e.is=n})(Ce||={});var we;(function(e){function t(e,t){return{range:e,parent:t}}e.create=t;function n(t){let n=t;return U.objectLiteral(n)&&u.is(n.range)&&(n.parent===void 0||e.is(n.parent))}e.is=n})(we||={});var Te;(function(e){e.namespace=`namespace`,e.type=`type`,e.class=`class`,e.enum=`enum`,e.interface=`interface`,e.struct=`struct`,e.typeParameter=`typeParameter`,e.parameter=`parameter`,e.variable=`variable`,e.property=`property`,e.enumMember=`enumMember`,e.event=`event`,e.function=`function`,e.method=`method`,e.macro=`macro`,e.keyword=`keyword`,e.modifier=`modifier`,e.comment=`comment`,e.string=`string`,e.number=`number`,e.regexp=`regexp`,e.operator=`operator`,e.decorator=`decorator`})(Te||={});var Ee;(function(e){e.declaration=`declaration`,e.definition=`definition`,e.readonly=`readonly`,e.static=`static`,e.deprecated=`deprecated`,e.abstract=`abstract`,e.async=`async`,e.modification=`modification`,e.documentation=`documentation`,e.defaultLibrary=`defaultLibrary`})(Ee||={});var De;(function(e){function t(e){let t=e;return U.objectLiteral(t)&&(t.resultId===void 0||typeof t.resultId==`string`)&&Array.isArray(t.data)&&(t.data.length===0||typeof t.data[0]==`number`)}e.is=t})(De||={});var Oe;(function(e){function t(e,t){return{range:e,text:t}}e.create=t;function n(e){let t=e;return t!=null&&u.is(t.range)&&U.string(t.text)}e.is=n})(Oe||={});var ke;(function(e){function t(e,t,n){return{range:e,variableName:t,caseSensitiveLookup:n}}e.create=t;function n(e){let t=e;return t!=null&&u.is(t.range)&&U.boolean(t.caseSensitiveLookup)&&(U.string(t.variableName)||t.variableName===void 0)}e.is=n})(ke||={});var Ae;(function(e){function t(e,t){return{range:e,expression:t}}e.create=t;function n(e){let t=e;return t!=null&&u.is(t.range)&&(U.string(t.expression)||t.expression===void 0)}e.is=n})(Ae||={});var je;(function(e){function t(e,t){return{frameId:e,stoppedLocation:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&u.is(e.stoppedLocation)}e.is=n})(je||={});var V;(function(e){e.Type=1,e.Parameter=2;function t(e){return e===1||e===2}e.is=t})(V||={});var H;(function(e){function t(e){return{value:e}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&(t.tooltip===void 0||U.string(t.tooltip)||j.is(t.tooltip))&&(t.location===void 0||d.is(t.location))&&(t.command===void 0||v.is(t.command))}e.is=n})(H||={});var Me;(function(e){function t(e,t,n){let r={position:e,label:t};return n!==void 0&&(r.kind=n),r}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&l.is(t.position)&&(U.string(t.label)||U.typedArray(t.label,H.is))&&(t.kind===void 0||V.is(t.kind))&&t.textEdits===void 0||U.typedArray(t.textEdits,y.is)&&(t.tooltip===void 0||U.string(t.tooltip)||j.is(t.tooltip))&&(t.paddingLeft===void 0||U.boolean(t.paddingLeft))&&(t.paddingRight===void 0||U.boolean(t.paddingRight))}e.is=n})(Me||={});var Ne;(function(e){function t(e){return{kind:`snippet`,value:e}}e.createSnippet=t})(Ne||={});var Pe;(function(e){function t(e,t,n,r){return{insertText:e,filterText:t,range:n,command:r}}e.create=t})(Pe||={});var Fe;(function(e){function t(e){return{items:e}}e.create=t})(Fe||={});var Ie;(function(e){e.Invoked=0,e.Automatic=1})(Ie||={});var Le;(function(e){function t(e,t){return{range:e,text:t}}e.create=t})(Le||={});var Re;(function(e){function t(e,t){return{triggerKind:e,selectedCompletionInfo:t}}e.create=t})(Re||={});var ze;(function(e){function t(e){let t=e;return U.objectLiteral(t)&&o.is(t.uri)&&U.string(t.name)}e.is=t})(ze||={});var Be;(function(e){function t(e,t,n,r){return new Ve(e,t,n,r)}e.create=t;function n(e){let t=e;return!!(U.defined(t)&&U.string(t.uri)&&(U.undefined(t.languageId)||U.string(t.languageId))&&U.uinteger(t.lineCount)&&U.func(t.getText)&&U.func(t.positionAt)&&U.func(t.offsetAt))}e.is=n;function r(e,t){let n=e.getText(),r=i(t,(e,t)=>{let n=e.range.start.line-t.range.start.line;return n===0?e.range.start.character-t.range.start.character:n}),a=n.length;for(let t=r.length-1;t>=0;t--){let i=r[t],o=e.offsetAt(i.range.start),s=e.offsetAt(i.range.end);if(s<=a)n=n.substring(0,o)+i.newText+n.substring(s,n.length);else throw Error(`Overlapping edit`);a=o}return n}e.applyEdits=r;function i(e,t){if(e.length<=1)return e;let n=e.length/2|0,r=e.slice(0,n),a=e.slice(n);i(r,t),i(a,t);let o=0,s=0,c=0;for(;o<r.length&&s<a.length;)t(r[o],a[s])<=0?e[c++]=r[o++]:e[c++]=a[s++];for(;o<r.length;)e[c++]=r[o++];for(;s<a.length;)e[c++]=a[s++];return e}})(Be||={});var Ve=class{constructor(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0}getLineOffsets(){if(this._lineOffsets===void 0){let e=[],t=this._content,n=!0;for(let r=0;r<t.length;r++){n&&=(e.push(r),!1);let i=t.charAt(r);n=i===`\r`||i===`
1
+ import{a as e,c as t,f as n,h as r,p as i}from"./editor.api2-Cwla1nvV.js";var a;(function(e){function t(e){return typeof e==`string`}e.is=t})(a||={});var o;(function(e){function t(e){return typeof e==`string`}e.is=t})(o||={});var s;(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647;function t(t){return typeof t==`number`&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}e.is=t})(s||={});var c;(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647;function t(t){return typeof t==`number`&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}e.is=t})(c||={});var l;(function(e){function t(e,t){return e===Number.MAX_VALUE&&(e=c.MAX_VALUE),t===Number.MAX_VALUE&&(t=c.MAX_VALUE),{line:e,character:t}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&U.uinteger(t.line)&&U.uinteger(t.character)}e.is=n})(l||={});var u;(function(e){function t(e,t,n,r){if(U.uinteger(e)&&U.uinteger(t)&&U.uinteger(n)&&U.uinteger(r))return{start:l.create(e,t),end:l.create(n,r)};if(l.is(e)&&l.is(t))return{start:e,end:t};throw Error(`Range#create called with invalid arguments[${e}, ${t}, ${n}, ${r}]`)}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&l.is(t.start)&&l.is(t.end)}e.is=n})(u||={});var d;(function(e){function t(e,t){return{uri:e,range:t}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&u.is(t.range)&&(U.string(t.uri)||U.undefined(t.uri))}e.is=n})(d||={});var f;(function(e){function t(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&u.is(t.targetRange)&&U.string(t.targetUri)&&u.is(t.targetSelectionRange)&&(u.is(t.originSelectionRange)||U.undefined(t.originSelectionRange))}e.is=n})(f||={});var p;(function(e){function t(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&U.numberRange(t.red,0,1)&&U.numberRange(t.green,0,1)&&U.numberRange(t.blue,0,1)&&U.numberRange(t.alpha,0,1)}e.is=n})(p||={});var ee;(function(e){function t(e,t){return{range:e,color:t}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&u.is(t.range)&&p.is(t.color)}e.is=n})(ee||={});var te;(function(e){function t(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&U.string(t.label)&&(U.undefined(t.textEdit)||y.is(t))&&(U.undefined(t.additionalTextEdits)||U.typedArray(t.additionalTextEdits,y.is))}e.is=n})(te||={});var m;(function(e){e.Comment=`comment`,e.Imports=`imports`,e.Region=`region`})(m||={});var ne;(function(e){function t(e,t,n,r,i,a){let o={startLine:e,endLine:t};return U.defined(n)&&(o.startCharacter=n),U.defined(r)&&(o.endCharacter=r),U.defined(i)&&(o.kind=i),U.defined(a)&&(o.collapsedText=a),o}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&U.uinteger(t.startLine)&&U.uinteger(t.startLine)&&(U.undefined(t.startCharacter)||U.uinteger(t.startCharacter))&&(U.undefined(t.endCharacter)||U.uinteger(t.endCharacter))&&(U.undefined(t.kind)||U.string(t.kind))}e.is=n})(ne||={});var h;(function(e){function t(e,t){return{location:e,message:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&d.is(t.location)&&U.string(t.message)}e.is=n})(h||={});var g;(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(g||={});var re;(function(e){e.Unnecessary=1,e.Deprecated=2})(re||={});var ie;(function(e){function t(e){let t=e;return U.objectLiteral(t)&&U.string(t.href)}e.is=t})(ie||={});var _;(function(e){function t(e,t,n,r,i,a){let o={range:e,message:t};return U.defined(n)&&(o.severity=n),U.defined(r)&&(o.code=r),U.defined(i)&&(o.source=i),U.defined(a)&&(o.relatedInformation=a),o}e.create=t;function n(e){let t=e;return U.defined(t)&&u.is(t.range)&&U.string(t.message)&&(U.number(t.severity)||U.undefined(t.severity))&&(U.integer(t.code)||U.string(t.code)||U.undefined(t.code))&&(U.undefined(t.codeDescription)||U.string(t.codeDescription?.href))&&(U.string(t.source)||U.undefined(t.source))&&(U.undefined(t.relatedInformation)||U.typedArray(t.relatedInformation,h.is))}e.is=n})(_||={});var v;(function(e){function t(e,t,...n){let r={title:e,command:t};return U.defined(n)&&n.length>0&&(r.arguments=n),r}e.create=t;function n(e){let t=e;return U.defined(t)&&U.string(t.title)&&U.string(t.command)}e.is=n})(v||={});var y;(function(e){function t(e,t){return{range:e,newText:t}}e.replace=t;function n(e,t){return{range:{start:e,end:e},newText:t}}e.insert=n;function r(e){return{range:e,newText:``}}e.del=r;function i(e){let t=e;return U.objectLiteral(t)&&U.string(t.newText)&&u.is(t.range)}e.is=i})(y||={});var b;(function(e){function t(e,t,n){let r={label:e};return t!==void 0&&(r.needsConfirmation=t),n!==void 0&&(r.description=n),r}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&U.string(t.label)&&(U.boolean(t.needsConfirmation)||t.needsConfirmation===void 0)&&(U.string(t.description)||t.description===void 0)}e.is=n})(b||={});var x;(function(e){function t(e){let t=e;return U.string(t)}e.is=t})(x||={});var ae;(function(e){function t(e,t,n){return{range:e,newText:t,annotationId:n}}e.replace=t;function n(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}}e.insert=n;function r(e,t){return{range:e,newText:``,annotationId:t}}e.del=r;function i(e){let t=e;return y.is(t)&&(b.is(t.annotationId)||x.is(t.annotationId))}e.is=i})(ae||={});var S;(function(e){function t(e,t){return{textDocument:e,edits:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&k.is(t.textDocument)&&Array.isArray(t.edits)}e.is=n})(S||={});var C;(function(e){function t(e,t,n){let r={kind:`create`,uri:e};return t!==void 0&&(t.overwrite!==void 0||t.ignoreIfExists!==void 0)&&(r.options=t),n!==void 0&&(r.annotationId=n),r}e.create=t;function n(e){let t=e;return t&&t.kind===`create`&&U.string(t.uri)&&(t.options===void 0||(t.options.overwrite===void 0||U.boolean(t.options.overwrite))&&(t.options.ignoreIfExists===void 0||U.boolean(t.options.ignoreIfExists)))&&(t.annotationId===void 0||x.is(t.annotationId))}e.is=n})(C||={});var w;(function(e){function t(e,t,n,r){let i={kind:`rename`,oldUri:e,newUri:t};return n!==void 0&&(n.overwrite!==void 0||n.ignoreIfExists!==void 0)&&(i.options=n),r!==void 0&&(i.annotationId=r),i}e.create=t;function n(e){let t=e;return t&&t.kind===`rename`&&U.string(t.oldUri)&&U.string(t.newUri)&&(t.options===void 0||(t.options.overwrite===void 0||U.boolean(t.options.overwrite))&&(t.options.ignoreIfExists===void 0||U.boolean(t.options.ignoreIfExists)))&&(t.annotationId===void 0||x.is(t.annotationId))}e.is=n})(w||={});var T;(function(e){function t(e,t,n){let r={kind:`delete`,uri:e};return t!==void 0&&(t.recursive!==void 0||t.ignoreIfNotExists!==void 0)&&(r.options=t),n!==void 0&&(r.annotationId=n),r}e.create=t;function n(e){let t=e;return t&&t.kind===`delete`&&U.string(t.uri)&&(t.options===void 0||(t.options.recursive===void 0||U.boolean(t.options.recursive))&&(t.options.ignoreIfNotExists===void 0||U.boolean(t.options.ignoreIfNotExists)))&&(t.annotationId===void 0||x.is(t.annotationId))}e.is=n})(T||={});var E;(function(e){function t(e){let t=e;return t&&(t.changes!==void 0||t.documentChanges!==void 0)&&(t.documentChanges===void 0||t.documentChanges.every(e=>U.string(e.kind)?C.is(e)||w.is(e)||T.is(e):S.is(e)))}e.is=t})(E||={});var D;(function(e){function t(e){return{uri:e}}e.create=t;function n(e){let t=e;return U.defined(t)&&U.string(t.uri)}e.is=n})(D||={});var O;(function(e){function t(e,t){return{uri:e,version:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&U.string(t.uri)&&U.integer(t.version)}e.is=n})(O||={});var k;(function(e){function t(e,t){return{uri:e,version:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&U.string(t.uri)&&(t.version===null||U.integer(t.version))}e.is=n})(k||={});var oe;(function(e){function t(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}}e.create=t;function n(e){let t=e;return U.defined(t)&&U.string(t.uri)&&U.string(t.languageId)&&U.integer(t.version)&&U.string(t.text)}e.is=n})(oe||={});var A;(function(e){e.PlainText=`plaintext`,e.Markdown=`markdown`;function t(t){let n=t;return n===e.PlainText||n===e.Markdown}e.is=t})(A||={});var j;(function(e){function t(e){let t=e;return U.objectLiteral(e)&&A.is(t.kind)&&U.string(t.value)}e.is=t})(j||={});var M;(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(M||={});var N;(function(e){e.PlainText=1,e.Snippet=2})(N||={});var se;(function(e){e.Deprecated=1})(se||={});var ce;(function(e){function t(e,t,n){return{newText:e,insert:t,replace:n}}e.create=t;function n(e){let t=e;return t&&U.string(t.newText)&&u.is(t.insert)&&u.is(t.replace)}e.is=n})(ce||={});var le;(function(e){e.asIs=1,e.adjustIndentation=2})(le||={});var ue;(function(e){function t(e){let t=e;return t&&(U.string(t.detail)||t.detail===void 0)&&(U.string(t.description)||t.description===void 0)}e.is=t})(ue||={});var de;(function(e){function t(e){return{label:e}}e.create=t})(de||={});var fe;(function(e){function t(e,t){return{items:e||[],isIncomplete:!!t}}e.create=t})(fe||={});var P;(function(e){function t(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,`\\$&`)}e.fromPlainText=t;function n(e){let t=e;return U.string(t)||U.objectLiteral(t)&&U.string(t.language)&&U.string(t.value)}e.is=n})(P||={});var pe;(function(e){function t(e){let t=e;return!!t&&U.objectLiteral(t)&&(j.is(t.contents)||P.is(t.contents)||U.typedArray(t.contents,P.is))&&(e.range===void 0||u.is(e.range))}e.is=t})(pe||={});var me;(function(e){function t(e,t){return t?{label:e,documentation:t}:{label:e}}e.create=t})(me||={});var F;(function(e){function t(e,t,...n){let r={label:e};return U.defined(t)&&(r.documentation=t),U.defined(n)?r.parameters=n:r.parameters=[],r}e.create=t})(F||={});var I;(function(e){e.Text=1,e.Read=2,e.Write=3})(I||={});var L;(function(e){function t(e,t){let n={range:e};return U.number(t)&&(n.kind=t),n}e.create=t})(L||={});var R;(function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26})(R||={});var z;(function(e){e.Deprecated=1})(z||={});var he;(function(e){function t(e,t,n,r,i){let a={name:e,kind:t,location:{uri:r,range:n}};return i&&(a.containerName=i),a}e.create=t})(he||={});var ge;(function(e){function t(e,t,n,r){return r===void 0?{name:e,kind:t,location:{uri:n}}:{name:e,kind:t,location:{uri:n,range:r}}}e.create=t})(ge||={});var _e;(function(e){function t(e,t,n,r,i,a){let o={name:e,detail:t,kind:n,range:r,selectionRange:i};return a!==void 0&&(o.children=a),o}e.create=t;function n(e){let t=e;return t&&U.string(t.name)&&U.number(t.kind)&&u.is(t.range)&&u.is(t.selectionRange)&&(t.detail===void 0||U.string(t.detail))&&(t.deprecated===void 0||U.boolean(t.deprecated))&&(t.children===void 0||Array.isArray(t.children))&&(t.tags===void 0||Array.isArray(t.tags))}e.is=n})(_e||={});var ve;(function(e){e.Empty=``,e.QuickFix=`quickfix`,e.Refactor=`refactor`,e.RefactorExtract=`refactor.extract`,e.RefactorInline=`refactor.inline`,e.RefactorRewrite=`refactor.rewrite`,e.Source=`source`,e.SourceOrganizeImports=`source.organizeImports`,e.SourceFixAll=`source.fixAll`})(ve||={});var B;(function(e){e.Invoked=1,e.Automatic=2})(B||={});var ye;(function(e){function t(e,t,n){let r={diagnostics:e};return t!=null&&(r.only=t),n!=null&&(r.triggerKind=n),r}e.create=t;function n(e){let t=e;return U.defined(t)&&U.typedArray(t.diagnostics,_.is)&&(t.only===void 0||U.typedArray(t.only,U.string))&&(t.triggerKind===void 0||t.triggerKind===B.Invoked||t.triggerKind===B.Automatic)}e.is=n})(ye||={});var be;(function(e){function t(e,t,n){let r={title:e},i=!0;return typeof t==`string`?(i=!1,r.kind=t):v.is(t)?r.command=t:r.edit=t,i&&n!==void 0&&(r.kind=n),r}e.create=t;function n(e){let t=e;return t&&U.string(t.title)&&(t.diagnostics===void 0||U.typedArray(t.diagnostics,_.is))&&(t.kind===void 0||U.string(t.kind))&&(t.edit!==void 0||t.command!==void 0)&&(t.command===void 0||v.is(t.command))&&(t.isPreferred===void 0||U.boolean(t.isPreferred))&&(t.edit===void 0||E.is(t.edit))}e.is=n})(be||={});var xe;(function(e){function t(e,t){let n={range:e};return U.defined(t)&&(n.data=t),n}e.create=t;function n(e){let t=e;return U.defined(t)&&u.is(t.range)&&(U.undefined(t.command)||v.is(t.command))}e.is=n})(xe||={});var Se;(function(e){function t(e,t){return{tabSize:e,insertSpaces:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&U.uinteger(t.tabSize)&&U.boolean(t.insertSpaces)}e.is=n})(Se||={});var Ce;(function(e){function t(e,t,n){return{range:e,target:t,data:n}}e.create=t;function n(e){let t=e;return U.defined(t)&&u.is(t.range)&&(U.undefined(t.target)||U.string(t.target))}e.is=n})(Ce||={});var we;(function(e){function t(e,t){return{range:e,parent:t}}e.create=t;function n(t){let n=t;return U.objectLiteral(n)&&u.is(n.range)&&(n.parent===void 0||e.is(n.parent))}e.is=n})(we||={});var Te;(function(e){e.namespace=`namespace`,e.type=`type`,e.class=`class`,e.enum=`enum`,e.interface=`interface`,e.struct=`struct`,e.typeParameter=`typeParameter`,e.parameter=`parameter`,e.variable=`variable`,e.property=`property`,e.enumMember=`enumMember`,e.event=`event`,e.function=`function`,e.method=`method`,e.macro=`macro`,e.keyword=`keyword`,e.modifier=`modifier`,e.comment=`comment`,e.string=`string`,e.number=`number`,e.regexp=`regexp`,e.operator=`operator`,e.decorator=`decorator`})(Te||={});var Ee;(function(e){e.declaration=`declaration`,e.definition=`definition`,e.readonly=`readonly`,e.static=`static`,e.deprecated=`deprecated`,e.abstract=`abstract`,e.async=`async`,e.modification=`modification`,e.documentation=`documentation`,e.defaultLibrary=`defaultLibrary`})(Ee||={});var De;(function(e){function t(e){let t=e;return U.objectLiteral(t)&&(t.resultId===void 0||typeof t.resultId==`string`)&&Array.isArray(t.data)&&(t.data.length===0||typeof t.data[0]==`number`)}e.is=t})(De||={});var Oe;(function(e){function t(e,t){return{range:e,text:t}}e.create=t;function n(e){let t=e;return t!=null&&u.is(t.range)&&U.string(t.text)}e.is=n})(Oe||={});var ke;(function(e){function t(e,t,n){return{range:e,variableName:t,caseSensitiveLookup:n}}e.create=t;function n(e){let t=e;return t!=null&&u.is(t.range)&&U.boolean(t.caseSensitiveLookup)&&(U.string(t.variableName)||t.variableName===void 0)}e.is=n})(ke||={});var Ae;(function(e){function t(e,t){return{range:e,expression:t}}e.create=t;function n(e){let t=e;return t!=null&&u.is(t.range)&&(U.string(t.expression)||t.expression===void 0)}e.is=n})(Ae||={});var je;(function(e){function t(e,t){return{frameId:e,stoppedLocation:t}}e.create=t;function n(e){let t=e;return U.defined(t)&&u.is(e.stoppedLocation)}e.is=n})(je||={});var V;(function(e){e.Type=1,e.Parameter=2;function t(e){return e===1||e===2}e.is=t})(V||={});var H;(function(e){function t(e){return{value:e}}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&(t.tooltip===void 0||U.string(t.tooltip)||j.is(t.tooltip))&&(t.location===void 0||d.is(t.location))&&(t.command===void 0||v.is(t.command))}e.is=n})(H||={});var Me;(function(e){function t(e,t,n){let r={position:e,label:t};return n!==void 0&&(r.kind=n),r}e.create=t;function n(e){let t=e;return U.objectLiteral(t)&&l.is(t.position)&&(U.string(t.label)||U.typedArray(t.label,H.is))&&(t.kind===void 0||V.is(t.kind))&&t.textEdits===void 0||U.typedArray(t.textEdits,y.is)&&(t.tooltip===void 0||U.string(t.tooltip)||j.is(t.tooltip))&&(t.paddingLeft===void 0||U.boolean(t.paddingLeft))&&(t.paddingRight===void 0||U.boolean(t.paddingRight))}e.is=n})(Me||={});var Ne;(function(e){function t(e){return{kind:`snippet`,value:e}}e.createSnippet=t})(Ne||={});var Pe;(function(e){function t(e,t,n,r){return{insertText:e,filterText:t,range:n,command:r}}e.create=t})(Pe||={});var Fe;(function(e){function t(e){return{items:e}}e.create=t})(Fe||={});var Ie;(function(e){e.Invoked=0,e.Automatic=1})(Ie||={});var Le;(function(e){function t(e,t){return{range:e,text:t}}e.create=t})(Le||={});var Re;(function(e){function t(e,t){return{triggerKind:e,selectedCompletionInfo:t}}e.create=t})(Re||={});var ze;(function(e){function t(e){let t=e;return U.objectLiteral(t)&&o.is(t.uri)&&U.string(t.name)}e.is=t})(ze||={});var Be;(function(e){function t(e,t,n,r){return new Ve(e,t,n,r)}e.create=t;function n(e){let t=e;return!!(U.defined(t)&&U.string(t.uri)&&(U.undefined(t.languageId)||U.string(t.languageId))&&U.uinteger(t.lineCount)&&U.func(t.getText)&&U.func(t.positionAt)&&U.func(t.offsetAt))}e.is=n;function r(e,t){let n=e.getText(),r=i(t,(e,t)=>{let n=e.range.start.line-t.range.start.line;return n===0?e.range.start.character-t.range.start.character:n}),a=n.length;for(let t=r.length-1;t>=0;t--){let i=r[t],o=e.offsetAt(i.range.start),s=e.offsetAt(i.range.end);if(s<=a)n=n.substring(0,o)+i.newText+n.substring(s,n.length);else throw Error(`Overlapping edit`);a=o}return n}e.applyEdits=r;function i(e,t){if(e.length<=1)return e;let n=e.length/2|0,r=e.slice(0,n),a=e.slice(n);i(r,t),i(a,t);let o=0,s=0,c=0;for(;o<r.length&&s<a.length;)t(r[o],a[s])<=0?e[c++]=r[o++]:e[c++]=a[s++];for(;o<r.length;)e[c++]=r[o++];for(;s<a.length;)e[c++]=a[s++];return e}})(Be||={});var Ve=class{constructor(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0}getLineOffsets(){if(this._lineOffsets===void 0){let e=[],t=this._content,n=!0;for(let r=0;r<t.length;r++){n&&=(e.push(r),!1);let i=t.charAt(r);n=i===`\r`||i===`
2
2
  `,i===`\r`&&r+1<t.length&&t.charAt(r+1)===`
3
3
  `&&r++}n&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),n=0,r=t.length;if(r===0)return l.create(0,e);for(;n<r;){let i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}let i=n-1;return l.create(i,e-t[i])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)}get lineCount(){return this.getLineOffsets().length}},U;(function(e){let t=Object.prototype.toString;function n(e){return e!==void 0}e.defined=n;function r(e){return e===void 0}e.undefined=r;function i(e){return e===!0||e===!1}e.boolean=i;function a(e){return t.call(e)===`[object String]`}e.string=a;function o(e){return t.call(e)===`[object Number]`}e.number=o;function s(e,n,r){return t.call(e)===`[object Number]`&&n<=e&&e<=r}e.numberRange=s;function c(e){return t.call(e)===`[object Number]`&&-2147483648<=e&&e<=2147483647}e.integer=c;function l(e){return t.call(e)===`[object Number]`&&0<=e&&e<=2147483647}e.uinteger=l;function u(e){return t.call(e)===`[object Function]`}e.func=u;function d(e){return typeof e==`object`&&!!e}e.objectLiteral=d;function f(e,t){return Array.isArray(e)&&e.every(t)}e.typedArray=f})(U||={});var He=class{constructor(e,t,n){this._languageId=e,this._worker=t,this._disposables=[],this._listener=Object.create(null);let r=e=>{let t=e.getLanguageId();if(t!==this._languageId)return;let n;this._listener[e.uri.toString()]=e.onDidChangeContent(()=>{window.clearTimeout(n),n=window.setTimeout(()=>this._doValidate(e.uri,t),500)}),this._doValidate(e.uri,t)},a=e=>{i.setModelMarkers(e,this._languageId,[]);let t=e.uri.toString(),n=this._listener[t];n&&(n.dispose(),delete this._listener[t])};this._disposables.push(i.onDidCreateModel(r)),this._disposables.push(i.onWillDisposeModel(a)),this._disposables.push(i.onDidChangeModelLanguage(e=>{a(e.model),r(e.model)})),this._disposables.push(n(e=>{i.getModels().forEach(e=>{e.getLanguageId()===this._languageId&&(a(e),r(e))})})),this._disposables.push({dispose:()=>{i.getModels().forEach(a);for(let e in this._listener)this._listener[e].dispose()}}),i.getModels().forEach(r)}dispose(){this._disposables.forEach(e=>e&&e.dispose()),this._disposables.length=0}_doValidate(e,t){this._worker(e).then(t=>t.doValidation(e.toString())).then(n=>{let r=n.map(t=>We(e,t)),a=i.getModel(e);a&&a.getLanguageId()===t&&i.setModelMarkers(a,t,r)}).then(void 0,e=>{console.error(e)})}};function Ue(t){switch(t){case g.Error:return e.Error;case g.Warning:return e.Warning;case g.Information:return e.Info;case g.Hint:return e.Hint;default:return e.Info}}function We(e,t){let n=typeof t.code==`number`?String(t.code):t.code;return{severity:Ue(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:n,source:t.source}}var Ge=class{constructor(e,t){this._worker=e,this._triggerCharacters=t}get triggerCharacters(){return this._triggerCharacters}provideCompletionItems(e,n,i,a){let o=e.uri;return this._worker(o).then(e=>e.doComplete(o.toString(),W(n))).then(i=>{if(!i)return;let a=e.getWordUntilPosition(n),o=new t(n.lineNumber,a.startColumn,n.lineNumber,a.endColumn),s=i.items.map(e=>{let t={label:e.label,insertText:e.insertText||e.label,sortText:e.sortText,filterText:e.filterText,documentation:e.documentation,detail:e.detail,command:Je(e.command),range:o,kind:qe(e.kind)};return e.textEdit&&(Ke(e.textEdit)?t.range={insert:K(e.textEdit.insert),replace:K(e.textEdit.replace)}:t.range=K(e.textEdit.range),t.insertText=e.textEdit.newText),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map(q)),e.insertTextFormat===N.Snippet&&(t.insertTextRules=r.CompletionItemInsertTextRule.InsertAsSnippet),t});return{isIncomplete:i.isIncomplete,suggestions:s}})}};function W(e){if(e)return{character:e.column-1,line:e.lineNumber-1}}function G(e){if(e)return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}function K(e){if(e)return new t(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function Ke(e){return e.insert!==void 0&&e.replace!==void 0}function qe(e){let t=r.CompletionItemKind;switch(e){case M.Text:return t.Text;case M.Method:return t.Method;case M.Function:return t.Function;case M.Constructor:return t.Constructor;case M.Field:return t.Field;case M.Variable:return t.Variable;case M.Class:return t.Class;case M.Interface:return t.Interface;case M.Module:return t.Module;case M.Property:return t.Property;case M.Unit:return t.Unit;case M.Value:return t.Value;case M.Enum:return t.Enum;case M.Keyword:return t.Keyword;case M.Snippet:return t.Snippet;case M.Color:return t.Color;case M.File:return t.File;case M.Reference:return t.Reference}return t.Property}function q(e){if(e)return{range:K(e.range),text:e.newText}}function Je(e){return e&&e.command===`editor.action.triggerSuggest`?{id:e.command,title:e.title,arguments:e.arguments}:void 0}var Ye=class{constructor(e){this._worker=e}provideHover(e,t,n){let r=e.uri;return this._worker(r).then(e=>e.doHover(r.toString(),W(t))).then(e=>{if(e)return{range:K(e.range),contents:Ze(e.contents)}})}};function Xe(e){return e&&typeof e==`object`&&typeof e.kind==`string`}function J(e){return typeof e==`string`?{value:e}:Xe(e)?e.kind===`plaintext`?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,`\\$&`)}:{value:e.value}:{value:"```"+e.language+`
4
4
  `+e.value+"\n```\n"}}function Ze(e){if(e)return Array.isArray(e)?e.map(J):[J(e)]}var Qe=class{constructor(e){this._worker=e}provideDocumentHighlights(e,t,n){let r=e.uri;return this._worker(r).then(e=>e.findDocumentHighlights(r.toString(),W(t))).then(e=>{if(e)return e.map(e=>({range:K(e.range),kind:$e(e.kind)}))})}};function $e(e){switch(e){case I.Read:return r.DocumentHighlightKind.Read;case I.Write:return r.DocumentHighlightKind.Write;case I.Text:return r.DocumentHighlightKind.Text}return r.DocumentHighlightKind.Text}var et=class{constructor(e){this._worker=e}provideDefinition(e,t,n){let r=e.uri;return this._worker(r).then(e=>e.findDefinition(r.toString(),W(t))).then(e=>{if(e)return[Y(e)]})}};function Y(e){return{uri:n.parse(e.uri),range:K(e.range)}}var tt=class{constructor(e){this._worker=e}provideReferences(e,t,n,r){let i=e.uri;return this._worker(i).then(e=>e.findReferences(i.toString(),W(t))).then(e=>{if(e)return e.map(Y)})}},nt=class{constructor(e){this._worker=e}provideRenameEdits(e,t,n,r){let i=e.uri;return this._worker(i).then(e=>e.doRename(i.toString(),W(t),n)).then(e=>rt(e))}};function rt(e){if(!e||!e.changes)return;let t=[];for(let r in e.changes){let i=n.parse(r);for(let n of e.changes[r])t.push({resource:i,versionId:void 0,textEdit:{range:K(n.range),text:n.newText}})}return{edits:t}}var it=class{constructor(e){this._worker=e}provideDocumentSymbols(e,t){let n=e.uri;return this._worker(n).then(e=>e.findDocumentSymbols(n.toString())).then(e=>{if(e)return e.map(e=>X(e)?Z(e):{name:e.name,detail:``,containerName:e.containerName,kind:Q(e.kind),range:K(e.location.range),selectionRange:K(e.location.range),tags:[]})})}};function X(e){return`children`in e}function Z(e){return{name:e.name,detail:e.detail??``,kind:Q(e.kind),range:K(e.range),selectionRange:K(e.selectionRange),tags:e.tags??[],children:(e.children??[]).map(e=>Z(e))}}function Q(e){let t=r.SymbolKind;switch(e){case R.File:return t.File;case R.Module:return t.Module;case R.Namespace:return t.Namespace;case R.Package:return t.Package;case R.Class:return t.Class;case R.Method:return t.Method;case R.Property:return t.Property;case R.Field:return t.Field;case R.Constructor:return t.Constructor;case R.Enum:return t.Enum;case R.Interface:return t.Interface;case R.Function:return t.Function;case R.Variable:return t.Variable;case R.Constant:return t.Constant;case R.String:return t.String;case R.Number:return t.Number;case R.Boolean:return t.Boolean;case R.Array:return t.Array}return t.Function}var at=class{constructor(e){this._worker=e}provideLinks(e,t){let n=e.uri;return this._worker(n).then(e=>e.findDocumentLinks(n.toString())).then(e=>{if(e)return{links:e.map(e=>({range:K(e.range),url:e.target}))}})}},ot=class{constructor(e){this._worker=e}provideDocumentFormattingEdits(e,t,n){let r=e.uri;return this._worker(r).then(e=>e.format(r.toString(),null,$(t)).then(e=>{if(!(!e||e.length===0))return e.map(q)}))}},st=class{constructor(e){this._worker=e,this.canFormatMultipleRanges=!1}provideDocumentRangeFormattingEdits(e,t,n,r){let i=e.uri;return this._worker(i).then(e=>e.format(i.toString(),G(t),$(n)).then(e=>{if(!(!e||e.length===0))return e.map(q)}))}};function $(e){return{tabSize:e.tabSize,insertSpaces:e.insertSpaces}}var ct=class{constructor(e){this._worker=e}provideDocumentColors(e,t){let n=e.uri;return this._worker(n).then(e=>e.findDocumentColors(n.toString())).then(e=>{if(e)return e.map(e=>({color:e.color,range:K(e.range)}))})}provideColorPresentations(e,t,n){let r=e.uri;return this._worker(r).then(e=>e.getColorPresentations(r.toString(),t.color,G(t.range))).then(e=>{if(e)return e.map(e=>{let t={label:e.label};return e.textEdit&&(t.textEdit=q(e.textEdit)),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map(q)),t})})}},lt=class{constructor(e){this._worker=e}provideFoldingRanges(e,t,n){let r=e.uri;return this._worker(r).then(e=>e.getFoldingRanges(r.toString(),t)).then(e=>{if(e)return e.map(e=>{let t={start:e.startLine+1,end:e.endLine+1};return e.kind!==void 0&&(t.kind=ut(e.kind)),t})})}};function ut(e){switch(e){case m.Comment:return r.FoldingRangeKind.Comment;case m.Imports:return r.FoldingRangeKind.Imports;case m.Region:return r.FoldingRangeKind.Region}}var dt=class{constructor(e){this._worker=e}provideSelectionRanges(e,t,n){let r=e.uri;return this._worker(r).then(e=>e.getSelectionRanges(r.toString(),t.map(W))).then(e=>{if(e)return e.map(e=>{let t=[];for(;e;)t.push({range:K(e.range)}),e=e.parent;return t})})}};export{K as _,ot as a,st as c,Ye as d,tt as f,G as g,W as h,ct as i,it as l,dt as m,et as n,Qe as o,nt as p,He as r,at as s,Ge as t,lt as u,q as v};
@@ -1 +1 @@
1
- import{h as e}from"./editor.api2-BPnIxMjz.js";var t={comments:{blockComment:[`{/*`,`*/}`]},brackets:[[`{`,`}`]],autoClosingPairs:[{open:`"`,close:`"`},{open:`'`,close:`'`},{open:`“`,close:`”`},{open:`‘`,close:`’`},{open:"`",close:"`"},{open:`{`,close:`}`},{open:`(`,close:`)`},{open:`_`,close:`_`},{open:`**`,close:`**`},{open:`<`,close:`>`}],onEnterRules:[{beforeText:/^\s*- .+/,action:{indentAction:e.IndentAction.None,appendText:`- `}},{beforeText:/^\s*\+ .+/,action:{indentAction:e.IndentAction.None,appendText:`+ `}},{beforeText:/^\s*\* .+/,action:{indentAction:e.IndentAction.None,appendText:`* `}},{beforeText:/^> /,action:{indentAction:e.IndentAction.None,appendText:`> `}},{beforeText:/<\w+/,action:{indentAction:e.IndentAction.Indent}},{beforeText:/\s+>\s*$/,action:{indentAction:e.IndentAction.Indent}},{beforeText:/<\/\w+>/,action:{indentAction:e.IndentAction.Outdent}},...Array.from({length:100},(t,n)=>({beforeText:RegExp(`^${n}\\. .+`),action:{indentAction:e.IndentAction.None,appendText:`${n+1}. `}}))]},n={defaultToken:``,tokenPostfix:`.mdx`,control:/[!#()*+.[\\\]_`{}\-]/,escapes:/\\@control/,tokenizer:{root:[[/^---$/,{token:`meta.content`,next:`@frontmatter`,nextEmbedded:`yaml`}],[/^\s*import/,{token:`keyword`,next:`@import`,nextEmbedded:`js`}],[/^\s*export/,{token:`keyword`,next:`@export`,nextEmbedded:`js`}],[/<\w+/,{token:`type.identifier`,next:`@jsx`}],[/<\/?\w+>/,`type.identifier`],[/^(\s*)(>*\s*)(#{1,6}\s)/,[{token:`white`},{token:`comment`},{token:`keyword`,next:`@header`}]],[/^(\s*)(>*\s*)([*+-])(\s+)/,[`white`,`comment`,`keyword`,`white`]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,[`white`,`comment`,`number`,`white`]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,[`white`,`comment`,`number`,`white`]],[/^(\s*)(>*\s*)(-{3,}|\*{3,}|_{3,})$/,[`white`,`comment`,`keyword`]],[/`{3,}(\s.*)?$/,{token:`string`,next:`@codeblock_backtick`}],[/~{3,}(\s.*)?$/,{token:`string`,next:`@codeblock_tilde`}],[/`{3,}(\S+).*$/,{token:`string`,next:`@codeblock_highlight_backtick`,nextEmbedded:`$1`}],[/~{3,}(\S+).*$/,{token:`string`,next:`@codeblock_highlight_tilde`,nextEmbedded:`$1`}],[/^(\s*)(-{4,})$/,[`white`,`comment`]],[/^(\s*)(>+)/,[`white`,`comment`]],{include:`content`}],content:[[/(\[)(.+)(]\()(.+)(\s+".*")(\))/,[``,`string.link`,``,`type.identifier`,`string.link`,``]],[/(\[)(.+)(]\()(.+)(\))/,[``,`type.identifier`,``,`string.link`,``]],[/(\[)(.+)(]\[)(.+)(])/,[``,`type.identifier`,``,`type.identifier`,``]],[/(\[)(.+)(]:\s+)(\S*)/,[``,`type.identifier`,``,`string.link`]],[/(\[)(.+)(])/,[``,`type.identifier`,``]],[/`.*`/,`variable.source`],[/_/,{token:`emphasis`,next:`@emphasis_underscore`}],[/\*(?!\*)/,{token:`emphasis`,next:`@emphasis_asterisk`}],[/\*\*/,{token:`strong`,next:`@strong`}],[/{/,{token:`delimiter.bracket`,next:`@expression`,nextEmbedded:`js`}]],import:[[/'\s*(;|$)/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}]],expression:[[/{/,{token:`delimiter.bracket`,next:`@expression`}],[/}/,{token:`delimiter.bracket`,next:`@pop`,nextEmbedded:`@pop`}]],export:[[/^\s*$/,{token:`delimiter.bracket`,next:`@pop`,nextEmbedded:`@pop`}]],jsx:[[/\s+/,``],[/(\w+)(=)("(?:[^"\\]|\\.)*")/,[`attribute.name`,`operator`,`string`]],[/(\w+)(=)('(?:[^'\\]|\\.)*')/,[`attribute.name`,`operator`,`string`]],[/(\w+(?=\s|>|={|$))/,[`attribute.name`]],[/={/,{token:`delimiter.bracket`,next:`@expression`,nextEmbedded:`js`}],[/>/,{token:`type.identifier`,next:`@pop`}]],header:[[/.$/,{token:`keyword`,next:`@pop`}],{include:`content`},[/./,{token:`keyword`}]],strong:[[/\*\*/,{token:`strong`,next:`@pop`}],{include:`content`},[/./,{token:`strong`}]],emphasis_underscore:[[/_/,{token:`emphasis`,next:`@pop`}],{include:`content`},[/./,{token:`emphasis`}]],emphasis_asterisk:[[/\*(?!\*)/,{token:`emphasis`,next:`@pop`}],{include:`content`},[/./,{token:`emphasis`}]],frontmatter:[[/^---$/,{token:`meta.content`,nextEmbedded:`@pop`,next:`@pop`}]],codeblock_highlight_backtick:[[/\s*`{3,}\s*$/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}],[/.*$/,`variable.source`]],codeblock_highlight_tilde:[[/\s*~{3,}\s*$/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}],[/.*$/,`variable.source`]],codeblock_backtick:[[/\s*`{3,}\s*$/,{token:`string`,next:`@pop`}],[/.*$/,`variable.source`]],codeblock_tilde:[[/\s*~{3,}\s*$/,{token:`string`,next:`@pop`}],[/.*$/,`variable.source`]]}};export{t as conf,n as language};
1
+ import{h as e}from"./editor.api2-Cwla1nvV.js";var t={comments:{blockComment:[`{/*`,`*/}`]},brackets:[[`{`,`}`]],autoClosingPairs:[{open:`"`,close:`"`},{open:`'`,close:`'`},{open:`“`,close:`”`},{open:`‘`,close:`’`},{open:"`",close:"`"},{open:`{`,close:`}`},{open:`(`,close:`)`},{open:`_`,close:`_`},{open:`**`,close:`**`},{open:`<`,close:`>`}],onEnterRules:[{beforeText:/^\s*- .+/,action:{indentAction:e.IndentAction.None,appendText:`- `}},{beforeText:/^\s*\+ .+/,action:{indentAction:e.IndentAction.None,appendText:`+ `}},{beforeText:/^\s*\* .+/,action:{indentAction:e.IndentAction.None,appendText:`* `}},{beforeText:/^> /,action:{indentAction:e.IndentAction.None,appendText:`> `}},{beforeText:/<\w+/,action:{indentAction:e.IndentAction.Indent}},{beforeText:/\s+>\s*$/,action:{indentAction:e.IndentAction.Indent}},{beforeText:/<\/\w+>/,action:{indentAction:e.IndentAction.Outdent}},...Array.from({length:100},(t,n)=>({beforeText:RegExp(`^${n}\\. .+`),action:{indentAction:e.IndentAction.None,appendText:`${n+1}. `}}))]},n={defaultToken:``,tokenPostfix:`.mdx`,control:/[!#()*+.[\\\]_`{}\-]/,escapes:/\\@control/,tokenizer:{root:[[/^---$/,{token:`meta.content`,next:`@frontmatter`,nextEmbedded:`yaml`}],[/^\s*import/,{token:`keyword`,next:`@import`,nextEmbedded:`js`}],[/^\s*export/,{token:`keyword`,next:`@export`,nextEmbedded:`js`}],[/<\w+/,{token:`type.identifier`,next:`@jsx`}],[/<\/?\w+>/,`type.identifier`],[/^(\s*)(>*\s*)(#{1,6}\s)/,[{token:`white`},{token:`comment`},{token:`keyword`,next:`@header`}]],[/^(\s*)(>*\s*)([*+-])(\s+)/,[`white`,`comment`,`keyword`,`white`]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,[`white`,`comment`,`number`,`white`]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,[`white`,`comment`,`number`,`white`]],[/^(\s*)(>*\s*)(-{3,}|\*{3,}|_{3,})$/,[`white`,`comment`,`keyword`]],[/`{3,}(\s.*)?$/,{token:`string`,next:`@codeblock_backtick`}],[/~{3,}(\s.*)?$/,{token:`string`,next:`@codeblock_tilde`}],[/`{3,}(\S+).*$/,{token:`string`,next:`@codeblock_highlight_backtick`,nextEmbedded:`$1`}],[/~{3,}(\S+).*$/,{token:`string`,next:`@codeblock_highlight_tilde`,nextEmbedded:`$1`}],[/^(\s*)(-{4,})$/,[`white`,`comment`]],[/^(\s*)(>+)/,[`white`,`comment`]],{include:`content`}],content:[[/(\[)(.+)(]\()(.+)(\s+".*")(\))/,[``,`string.link`,``,`type.identifier`,`string.link`,``]],[/(\[)(.+)(]\()(.+)(\))/,[``,`type.identifier`,``,`string.link`,``]],[/(\[)(.+)(]\[)(.+)(])/,[``,`type.identifier`,``,`type.identifier`,``]],[/(\[)(.+)(]:\s+)(\S*)/,[``,`type.identifier`,``,`string.link`]],[/(\[)(.+)(])/,[``,`type.identifier`,``]],[/`.*`/,`variable.source`],[/_/,{token:`emphasis`,next:`@emphasis_underscore`}],[/\*(?!\*)/,{token:`emphasis`,next:`@emphasis_asterisk`}],[/\*\*/,{token:`strong`,next:`@strong`}],[/{/,{token:`delimiter.bracket`,next:`@expression`,nextEmbedded:`js`}]],import:[[/'\s*(;|$)/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}]],expression:[[/{/,{token:`delimiter.bracket`,next:`@expression`}],[/}/,{token:`delimiter.bracket`,next:`@pop`,nextEmbedded:`@pop`}]],export:[[/^\s*$/,{token:`delimiter.bracket`,next:`@pop`,nextEmbedded:`@pop`}]],jsx:[[/\s+/,``],[/(\w+)(=)("(?:[^"\\]|\\.)*")/,[`attribute.name`,`operator`,`string`]],[/(\w+)(=)('(?:[^'\\]|\\.)*')/,[`attribute.name`,`operator`,`string`]],[/(\w+(?=\s|>|={|$))/,[`attribute.name`]],[/={/,{token:`delimiter.bracket`,next:`@expression`,nextEmbedded:`js`}],[/>/,{token:`type.identifier`,next:`@pop`}]],header:[[/.$/,{token:`keyword`,next:`@pop`}],{include:`content`},[/./,{token:`keyword`}]],strong:[[/\*\*/,{token:`strong`,next:`@pop`}],{include:`content`},[/./,{token:`strong`}]],emphasis_underscore:[[/_/,{token:`emphasis`,next:`@pop`}],{include:`content`},[/./,{token:`emphasis`}]],emphasis_asterisk:[[/\*(?!\*)/,{token:`emphasis`,next:`@pop`}],{include:`content`},[/./,{token:`emphasis`}]],frontmatter:[[/^---$/,{token:`meta.content`,nextEmbedded:`@pop`,next:`@pop`}]],codeblock_highlight_backtick:[[/\s*`{3,}\s*$/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}],[/.*$/,`variable.source`]],codeblock_highlight_tilde:[[/\s*~{3,}\s*$/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}],[/.*$/,`variable.source`]],codeblock_backtick:[[/\s*`{3,}\s*$/,{token:`string`,next:`@pop`}],[/.*$/,`variable.source`]],codeblock_tilde:[[/\s*~{3,}\s*$/,{token:`string`,next:`@pop`}],[/.*$/,`variable.source`]]}};export{t as conf,n as language};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tsMode-BbOGOuSV.js","assets/editor.api2-BPnIxMjz.js","assets/chunk-CilyBKbf.js","assets/editor-Br_kD0ds.css","assets/workers-BvicOoDf.js"])))=>i.map(i=>d[i]);
2
- import{n as e}from"./chunk-CilyBKbf.js";import{t}from"./preload-helper-DSXbuxSR.js";import{h as n,n as r}from"./editor.api2-BPnIxMjz.js";var i=`5.9.3`,a=e({JsxEmit:()=>s,ModuleKind:()=>o,ModuleResolutionKind:()=>u,NewLineKind:()=>c,ScriptTarget:()=>l,getJavaScriptWorker:()=>_,getTypeScriptWorker:()=>g,javascriptDefaults:()=>h,typescriptDefaults:()=>m,typescriptVersion:()=>f}),o=(e=>(e[e.None=0]=`None`,e[e.CommonJS=1]=`CommonJS`,e[e.AMD=2]=`AMD`,e[e.UMD=3]=`UMD`,e[e.System=4]=`System`,e[e.ES2015=5]=`ES2015`,e[e.ESNext=99]=`ESNext`,e))(o||{}),s=(e=>(e[e.None=0]=`None`,e[e.Preserve=1]=`Preserve`,e[e.React=2]=`React`,e[e.ReactNative=3]=`ReactNative`,e[e.ReactJSX=4]=`ReactJSX`,e[e.ReactJSXDev=5]=`ReactJSXDev`,e))(s||{}),c=(e=>(e[e.CarriageReturnLineFeed=0]=`CarriageReturnLineFeed`,e[e.LineFeed=1]=`LineFeed`,e))(c||{}),l=(e=>(e[e.ES3=0]=`ES3`,e[e.ES5=1]=`ES5`,e[e.ES2015=2]=`ES2015`,e[e.ES2016=3]=`ES2016`,e[e.ES2017=4]=`ES2017`,e[e.ES2018=5]=`ES2018`,e[e.ES2019=6]=`ES2019`,e[e.ES2020=7]=`ES2020`,e[e.ESNext=99]=`ESNext`,e[e.JSON=100]=`JSON`,e[e.Latest=99]=`Latest`,e))(l||{}),u=(e=>(e[e.Classic=1]=`Classic`,e[e.NodeJs=2]=`NodeJs`,e))(u||{}),d=class{constructor(e,t,n,i,a){this._onDidChange=new r,this._onDidExtraLibsChange=new r,this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(e),this.setDiagnosticsOptions(t),this.setWorkerOptions(n),this.setInlayHintsOptions(i),this.setModeConfiguration(a),this._onDidExtraLibsChangeTimeout=-1}get onDidChange(){return this._onDidChange.event}get onDidExtraLibsChange(){return this._onDidExtraLibsChange.event}get modeConfiguration(){return this._modeConfiguration}get workerOptions(){return this._workerOptions}get inlayHintsOptions(){return this._inlayHintsOptions}getExtraLibs(){return this._extraLibs}addExtraLib(e,t){let n;if(n=t===void 0?`ts:extralib-${Math.random().toString(36).substring(2,15)}`:t,this._extraLibs[n]&&this._extraLibs[n].content===e)return{dispose:()=>{}};let r=1;return this._removedExtraLibs[n]&&(r=this._removedExtraLibs[n]+1),this._extraLibs[n]&&(r=this._extraLibs[n].version+1),this._extraLibs[n]={content:e,version:r},this._fireOnDidExtraLibsChangeSoon(),{dispose:()=>{let e=this._extraLibs[n];e&&e.version===r&&(delete this._extraLibs[n],this._removedExtraLibs[n]=r,this._fireOnDidExtraLibsChangeSoon())}}}setExtraLibs(e){for(let e in this._extraLibs)this._removedExtraLibs[e]=this._extraLibs[e].version;if(this._extraLibs=Object.create(null),e&&e.length>0)for(let t of e){let e=t.filePath||`ts:extralib-${Math.random().toString(36).substring(2,15)}`,n=t.content,r=1;this._removedExtraLibs[e]&&(r=this._removedExtraLibs[e]+1),this._extraLibs[e]={content:n,version:r}}this._fireOnDidExtraLibsChangeSoon()}_fireOnDidExtraLibsChangeSoon(){this._onDidExtraLibsChangeTimeout===-1&&(this._onDidExtraLibsChangeTimeout=window.setTimeout(()=>{this._onDidExtraLibsChangeTimeout=-1,this._onDidExtraLibsChange.fire(void 0)},0))}getCompilerOptions(){return this._compilerOptions}setCompilerOptions(e){this._compilerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}getDiagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setWorkerOptions(e){this._workerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setInlayHintsOptions(e){this._inlayHintsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setMaximumWorkerIdleTime(e){}setEagerModelSync(e){this._eagerModelSync=e}getEagerModelSync(){return this._eagerModelSync}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(void 0)}},f=i,p={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,diagnostics:!0,documentRangeFormattingEdits:!0,signatureHelp:!0,onTypeFormattingEdits:!0,codeActions:!0,inlayHints:!0},m=new d({allowNonTsExtensions:!0,target:99},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{},{},p),h=new d({allowNonTsExtensions:!0,allowJs:!0,target:99},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{},{},p),g=()=>v().then(e=>e.getTypeScriptWorker()),_=()=>v().then(e=>e.getJavaScriptWorker());function v(){return t(()=>import(`./tsMode-BbOGOuSV.js`),__vite__mapDeps([0,1,2,3,4]))}n.onLanguage(`typescript`,()=>v().then(e=>e.setupTypeScript(m))),n.onLanguage(`javascript`,()=>v().then(e=>e.setupJavaScript(h)));export{m as n,a as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tsMode-04uOpiiP.js","assets/editor.api2-Cwla1nvV.js","assets/chunk-CilyBKbf.js","assets/editor-Br_kD0ds.css","assets/workers-yr2u4c3C.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./chunk-CilyBKbf.js";import{t}from"./preload-helper-DSXbuxSR.js";import{h as n,n as r}from"./editor.api2-Cwla1nvV.js";var i=`5.9.3`,a=e({JsxEmit:()=>s,ModuleKind:()=>o,ModuleResolutionKind:()=>u,NewLineKind:()=>c,ScriptTarget:()=>l,getJavaScriptWorker:()=>_,getTypeScriptWorker:()=>g,javascriptDefaults:()=>h,typescriptDefaults:()=>m,typescriptVersion:()=>f}),o=(e=>(e[e.None=0]=`None`,e[e.CommonJS=1]=`CommonJS`,e[e.AMD=2]=`AMD`,e[e.UMD=3]=`UMD`,e[e.System=4]=`System`,e[e.ES2015=5]=`ES2015`,e[e.ESNext=99]=`ESNext`,e))(o||{}),s=(e=>(e[e.None=0]=`None`,e[e.Preserve=1]=`Preserve`,e[e.React=2]=`React`,e[e.ReactNative=3]=`ReactNative`,e[e.ReactJSX=4]=`ReactJSX`,e[e.ReactJSXDev=5]=`ReactJSXDev`,e))(s||{}),c=(e=>(e[e.CarriageReturnLineFeed=0]=`CarriageReturnLineFeed`,e[e.LineFeed=1]=`LineFeed`,e))(c||{}),l=(e=>(e[e.ES3=0]=`ES3`,e[e.ES5=1]=`ES5`,e[e.ES2015=2]=`ES2015`,e[e.ES2016=3]=`ES2016`,e[e.ES2017=4]=`ES2017`,e[e.ES2018=5]=`ES2018`,e[e.ES2019=6]=`ES2019`,e[e.ES2020=7]=`ES2020`,e[e.ESNext=99]=`ESNext`,e[e.JSON=100]=`JSON`,e[e.Latest=99]=`Latest`,e))(l||{}),u=(e=>(e[e.Classic=1]=`Classic`,e[e.NodeJs=2]=`NodeJs`,e))(u||{}),d=class{constructor(e,t,n,i,a){this._onDidChange=new r,this._onDidExtraLibsChange=new r,this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(e),this.setDiagnosticsOptions(t),this.setWorkerOptions(n),this.setInlayHintsOptions(i),this.setModeConfiguration(a),this._onDidExtraLibsChangeTimeout=-1}get onDidChange(){return this._onDidChange.event}get onDidExtraLibsChange(){return this._onDidExtraLibsChange.event}get modeConfiguration(){return this._modeConfiguration}get workerOptions(){return this._workerOptions}get inlayHintsOptions(){return this._inlayHintsOptions}getExtraLibs(){return this._extraLibs}addExtraLib(e,t){let n;if(n=t===void 0?`ts:extralib-${Math.random().toString(36).substring(2,15)}`:t,this._extraLibs[n]&&this._extraLibs[n].content===e)return{dispose:()=>{}};let r=1;return this._removedExtraLibs[n]&&(r=this._removedExtraLibs[n]+1),this._extraLibs[n]&&(r=this._extraLibs[n].version+1),this._extraLibs[n]={content:e,version:r},this._fireOnDidExtraLibsChangeSoon(),{dispose:()=>{let e=this._extraLibs[n];e&&e.version===r&&(delete this._extraLibs[n],this._removedExtraLibs[n]=r,this._fireOnDidExtraLibsChangeSoon())}}}setExtraLibs(e){for(let e in this._extraLibs)this._removedExtraLibs[e]=this._extraLibs[e].version;if(this._extraLibs=Object.create(null),e&&e.length>0)for(let t of e){let e=t.filePath||`ts:extralib-${Math.random().toString(36).substring(2,15)}`,n=t.content,r=1;this._removedExtraLibs[e]&&(r=this._removedExtraLibs[e]+1),this._extraLibs[e]={content:n,version:r}}this._fireOnDidExtraLibsChangeSoon()}_fireOnDidExtraLibsChangeSoon(){this._onDidExtraLibsChangeTimeout===-1&&(this._onDidExtraLibsChangeTimeout=window.setTimeout(()=>{this._onDidExtraLibsChangeTimeout=-1,this._onDidExtraLibsChange.fire(void 0)},0))}getCompilerOptions(){return this._compilerOptions}setCompilerOptions(e){this._compilerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}getDiagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setWorkerOptions(e){this._workerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setInlayHintsOptions(e){this._inlayHintsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setMaximumWorkerIdleTime(e){}setEagerModelSync(e){this._eagerModelSync=e}getEagerModelSync(){return this._eagerModelSync}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(void 0)}},f=i,p={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,diagnostics:!0,documentRangeFormattingEdits:!0,signatureHelp:!0,onTypeFormattingEdits:!0,codeActions:!0,inlayHints:!0},m=new d({allowNonTsExtensions:!0,target:99},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{},{},p),h=new d({allowNonTsExtensions:!0,allowJs:!0,target:99},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{},{},p),g=()=>v().then(e=>e.getTypeScriptWorker()),_=()=>v().then(e=>e.getJavaScriptWorker());function v(){return t(()=>import(`./tsMode-04uOpiiP.js`),__vite__mapDeps([0,1,2,3,4]))}n.onLanguage(`typescript`,()=>v().then(e=>e.setupTypeScript(m))),n.onLanguage(`javascript`,()=>v().then(e=>e.setupJavaScript(h)));export{m as n,a as t};
@@ -0,0 +1 @@
1
+ var e={withShortcut:`{{label}} ({{shortcut}})`,left:{pinnedOpen:`Linke Seitenleiste einklappen (angepinnt lassen)`,pinnedCollapsed:`Linke Seitenleiste lösen`,unpinned:`Linke Seitenleiste offen anpinnen`},right:{pinnedOpen:`Rechte Seitenleiste einklappen (angepinnt lassen)`,pinnedCollapsed:`Rechte Seitenleiste lösen`,unpinned:`Rechte Seitenleiste offen anpinnen`}},t={addProject:`Projekt hinzufügen`,remove:`{{name}} entfernen`,confirmRemove:`Entfernen von {{name}} bestätigen`,confirmShort:`bestätigen?`,added:`Projekt hinzugefügt: {{name}}`,removed:`Projekt entfernt`},n={desktopTitle:`Desktop`,loops:`Loops`,docs:`Doku`,analytics:`Analytics`,settings:`Einstellungen`},r={projectTitle:`Projekt`,dashboard:`Dashboard`,jobs:`Jobs`,analytics:`Analytics`,agents:`Agenten`,code:`Code`,integrations:`Integrationen`,settings:`Einstellungen`},i={home:`Start`,analytics:`Analytics`,docs:`Doku`,settings:`Einstellungen`,noCli:`Keine AI-CLI`,noCliTooltip:`Keine AI-CLI gefunden. Installiere Claude Code oder Codex CLI.`,activeCli:`Aktive CLI: {{label}}`},a={connected:`verbunden`,syncing:`synchronisiere...`,reconnecting:`verbinde neu...`,disconnected:`getrennt`,connectionRestored:`Verbindung wiederhergestellt`},o={searchShortcut:`Suchen (⌘K)`,searchPlaceholder:`Suchen…`,minimizeWindow:`Fenster minimieren`,maximizeWindow:`Fenster maximieren`,closeWindow:`Fenster schließen`},s={costAlertTitle:`Kostenwarnung`,costAlertDescription:"Job-Kosten ${{cost}} – Schwellenwert ist ${{threshold}}",dailyBudgetTitle:`Tagesbudget überschritten`,dailyBudgetDescription:"Heute ${{spent}} von ${{budget}} ausgegeben. Warteschlange pausiert.",desktopBudgetTitle:`Desktop-Tagesbudget überschritten`,desktopBudgetDescription:"Desktop-Gesamtausgaben ${{spent}} von ${{budget}}. Warteschlange pausiert.",bannerMessage:"Tagesbudget überschritten – ${{spent}} von ${{budget}} ausgegeben. Warteschlange ist pausiert.",dismiss:`Schließen`},c={title:`Etwas ist schiefgelaufen`,occurredIn:`In <strong>{{name}}</strong> ist ein Fehler aufgetreten`},l={healthLabel:`Health`,notAvailable:`n. v.`,factorCoverageAvailable:`Coverage verfügbar`,factorCoverageGood:`Coverage ≥ 70 %`,factorPipelineGreen:`Letzte Pipeline grün`,factorActiveWeek:`Diese Woche aktiv`,noJobsYet:`Noch keine Jobs`,recurringFailures:`Wiederkehrende Fehler erkannt`,failurePattern:`<cmd>{{command}}</cmd> ist diese Woche <times>{{count}}×</times> fehlgeschlagen – mögliches Projektproblem.`,coverage:`Coverage`,lines:`Zeilen`,functions:`Funktionen`,branches:`Branches`,lastPipeline:`Letzte Pipeline`,recentCommits:`Letzte Commits`,noGitHistory:`Keine Git-Historie gefunden`,minutesAgo:`vor {{count}}m`,hoursAgo:`vor {{count}}h`,daysAgo:`vor {{count}}d`},u={dragToReorder:`Zum Neuanordnen ziehen`,unpinAria:`Abschnitt lösen (wird standardmäßig eingeklappt)`,pinAria:`Abschnitt anpinnen (bleibt ausgeklappt)`,unpinTooltip:`Lösen (standardmäßig einklappen)`,pinTooltip:`Offen anpinnen (bleibt ausgeklappt)`},d={sidebarPin:e,projects:t,arcSidebar:n,rightSidebar:r,navbar:i,statusBar:a,titleBar:o,costAlerts:s,errorBoundary:c,healthWidget:l,collapsibleSection:u};export{n as arcSidebar,u as collapsibleSection,s as costAlerts,d as default,c as errorBoundary,l as healthWidget,i as navbar,t as projects,r as rightSidebar,e as sidebarPin,a as statusBar,o as titleBar};
@@ -0,0 +1 @@
1
+ import{n as e}from"./chunk-CilyBKbf.js";var t=e({arcSidebar:()=>i,collapsibleSection:()=>f,costAlerts:()=>l,default:()=>p,errorBoundary:()=>u,healthWidget:()=>d,navbar:()=>o,projects:()=>r,rightSidebar:()=>a,sidebarPin:()=>n,statusBar:()=>s,titleBar:()=>c}),n={withShortcut:`{{label}} ({{shortcut}})`,left:{pinnedOpen:`Collapse left sidebar (keep pinned)`,pinnedCollapsed:`Unpin left sidebar`,unpinned:`Pin left sidebar open`},right:{pinnedOpen:`Collapse right sidebar (keep pinned)`,pinnedCollapsed:`Unpin right sidebar`,unpinned:`Pin right sidebar open`}},r={addProject:`Add project`,remove:`Remove {{name}}`,confirmRemove:`Confirm remove {{name}}`,confirmShort:`confirm?`,added:`Project added: {{name}}`,removed:`Project removed`},i={desktopTitle:`Desktop`,loops:`Loops`,docs:`Docs`,analytics:`Analytics`,settings:`Settings`},a={projectTitle:`Project`,dashboard:`Dashboard`,jobs:`Jobs`,analytics:`Analytics`,agents:`Agents`,code:`Code`,integrations:`Integrations`,settings:`Settings`},o={home:`Home`,analytics:`Analytics`,docs:`Docs`,settings:`Settings`,noCli:`No AI CLI`,noCliTooltip:`No AI CLI detected. Install Claude Code or Codex CLI.`,activeCli:`Active CLI: {{label}}`},s={connected:`connected`,syncing:`syncing...`,reconnecting:`reconnecting...`,disconnected:`disconnected`,connectionRestored:`Connection restored`},c={searchShortcut:`Search (⌘K)`,searchPlaceholder:`Search…`,minimizeWindow:`Minimize window`,maximizeWindow:`Maximize window`,closeWindow:`Close window`},l={costAlertTitle:`Cost alert`,costAlertDescription:"Job cost ${{cost}} — threshold is ${{threshold}}",dailyBudgetTitle:`Daily budget exceeded`,dailyBudgetDescription:"Spent ${{spent}} of ${{budget}} today. Queue paused.",desktopBudgetTitle:`Desktop daily budget exceeded`,desktopBudgetDescription:"Total Desktop spend ${{spent}} of ${{budget}}. Queue paused.",bannerMessage:"Daily budget exceeded — spent ${{spent}} of ${{budget}}. Queue is paused.",dismiss:`Dismiss`},u={title:`Something went wrong`,occurredIn:`An error occurred in <strong>{{name}}</strong>`},d={healthLabel:`health`,notAvailable:`n/a`,factorCoverageAvailable:`Coverage available`,factorCoverageGood:`Coverage ≥ 70%`,factorPipelineGreen:`Last pipeline green`,factorActiveWeek:`Active this week`,noJobsYet:`No jobs yet`,recurringFailures:`Recurring failures detected`,failurePattern:`<cmd>{{command}}</cmd> has failed <times>{{count}}×</times> this week — possible project issue.`,coverage:`Coverage`,lines:`Lines`,functions:`Functions`,branches:`Branches`,lastPipeline:`Last pipeline`,recentCommits:`Recent commits`,noGitHistory:`No git history found`,minutesAgo:`{{count}}m ago`,hoursAgo:`{{count}}h ago`,daysAgo:`{{count}}d ago`},f={dragToReorder:`Drag to reorder`,unpinAria:`Unpin section (will collapse by default)`,pinAria:`Pin section (will stay expanded)`,unpinTooltip:`Unpin (collapse by default)`,pinTooltip:`Pin open (stay expanded)`},p={sidebarPin:n,projects:r,arcSidebar:i,rightSidebar:a,navbar:o,statusBar:s,titleBar:c,costAlerts:l,errorBoundary:u,healthWidget:d,collapsibleSection:f};export{t};
@@ -0,0 +1 @@
1
+ var e={withShortcut:`{{label}} ({{shortcut}})`,left:{pinnedOpen:`左サイドバーを折りたたむ (ピン留めは維持)`,pinnedCollapsed:`左サイドバーのピン留めを解除`,unpinned:`左サイドバーを開いた状態でピン留め`},right:{pinnedOpen:`右サイドバーを折りたたむ (ピン留めは維持)`,pinnedCollapsed:`右サイドバーのピン留めを解除`,unpinned:`右サイドバーを開いた状態でピン留め`}},t={addProject:`プロジェクトを追加`,remove:`{{name}} を削除`,confirmRemove:`{{name}} の削除を確認`,confirmShort:`削除しますか?`,added:`プロジェクトを追加しました: {{name}}`,removed:`プロジェクトを削除しました`},n={desktopTitle:`Desktop`,loops:`Loops`,docs:`ドキュメント`,analytics:`分析`,settings:`設定`},r={projectTitle:`プロジェクト`,dashboard:`ダッシュボード`,jobs:`ジョブ`,analytics:`分析`,agents:`エージェント`,code:`コード`,integrations:`インテグレーション`,settings:`設定`},i={home:`ホーム`,analytics:`分析`,docs:`ドキュメント`,settings:`設定`,noCli:`AI CLI なし`,noCliTooltip:`AI CLI が見つかりません。Claude Code または Codex CLI をインストールしてください。`,activeCli:`使用中の CLI: {{label}}`},a={connected:`接続済み`,syncing:`同期中...`,reconnecting:`再接続中...`,disconnected:`切断`,connectionRestored:`接続が回復しました`},o={searchShortcut:`検索 (⌘K)`,searchPlaceholder:`検索…`,minimizeWindow:`ウィンドウを最小化`,maximizeWindow:`ウィンドウを最大化`,closeWindow:`ウィンドウを閉じる`},s={costAlertTitle:`コストアラート`,costAlertDescription:"ジョブのコストが ${{cost}} — しきい値は ${{threshold}} です",dailyBudgetTitle:`1 日の予算を超過しました`,dailyBudgetDescription:"本日 ${{budget}} のうち ${{spent}} を消費しました。キューを一時停止しました。",desktopBudgetTitle:`Desktop の 1 日の予算を超過しました`,desktopBudgetDescription:"Desktop 全体で ${{budget}} のうち ${{spent}} を消費。キューを一時停止しました。",bannerMessage:"1 日の予算を超過しました — ${{budget}} のうち ${{spent}} を消費。キューは一時停止中です。",dismiss:`閉じる`},c={title:`問題が発生しました`,occurredIn:`<strong>{{name}}</strong> でエラーが発生しました`},l={healthLabel:`ヘルス`,notAvailable:`n/a`,factorCoverageAvailable:`カバレッジあり`,factorCoverageGood:`カバレッジ ≥ 70%`,factorPipelineGreen:`直近のパイプラインが成功`,factorActiveWeek:`今週アクティブ`,noJobsYet:`ジョブはまだありません`,recurringFailures:`繰り返し発生する失敗を検出しました`,failurePattern:`<cmd>{{command}}</cmd> が今週 <times>{{count}}×</times> 失敗しました — プロジェクト側の問題の可能性があります。`,coverage:`カバレッジ`,lines:`行`,functions:`関数`,branches:`分岐`,lastPipeline:`直近のパイプライン`,recentCommits:`最近のコミット`,noGitHistory:`git 履歴が見つかりません`,minutesAgo:`{{count}}分前`,hoursAgo:`{{count}}時間前`,daysAgo:`{{count}}日前`},u={dragToReorder:`ドラッグで並べ替え`,unpinAria:`セクションのピン留めを解除 (デフォルトで折りたたみ)`,pinAria:`セクションをピン留め (常に展開)`,unpinTooltip:`ピン留め解除 (デフォルトで折りたたみ)`,pinTooltip:`ピン留めして開く (常に展開)`},d={sidebarPin:e,projects:t,arcSidebar:n,rightSidebar:r,navbar:i,statusBar:a,titleBar:o,costAlerts:s,errorBoundary:c,healthWidget:l,collapsibleSection:u};export{n as arcSidebar,u as collapsibleSection,s as costAlerts,d as default,c as errorBoundary,l as healthWidget,i as navbar,t as projects,r as rightSidebar,e as sidebarPin,a as statusBar,o as titleBar};
@@ -0,0 +1 @@
1
+ var e={withShortcut:`{{label}}({{shortcut}})`,left:{pinnedOpen:`收起左侧边栏(保持固定)`,pinnedCollapsed:`取消固定左侧边栏`,unpinned:`固定并展开左侧边栏`},right:{pinnedOpen:`收起右侧边栏(保持固定)`,pinnedCollapsed:`取消固定右侧边栏`,unpinned:`固定并展开右侧边栏`}},t={addProject:`添加项目`,remove:`移除 {{name}}`,confirmRemove:`确认移除 {{name}}`,confirmShort:`确认?`,added:`已添加项目:{{name}}`,removed:`项目已移除`},n={desktopTitle:`Desktop`,loops:`Loops`,docs:`文档`,analytics:`分析`,settings:`设置`},r={projectTitle:`项目`,dashboard:`仪表盘`,jobs:`任务`,analytics:`分析`,agents:`Agent`,code:`代码`,integrations:`集成`,settings:`设置`},i={home:`首页`,analytics:`分析`,docs:`文档`,settings:`设置`,noCli:`无 AI CLI`,noCliTooltip:`未检测到 AI CLI。请安装 Claude Code 或 Codex CLI。`,activeCli:`当前 CLI:{{label}}`},a={connected:`已连接`,syncing:`同步中...`,reconnecting:`重新连接中...`,disconnected:`已断开`,connectionRestored:`连接已恢复`},o={searchShortcut:`搜索 (⌘K)`,searchPlaceholder:`搜索…`,minimizeWindow:`最小化窗口`,maximizeWindow:`最大化窗口`,closeWindow:`关闭窗口`},s={costAlertTitle:`成本警报`,costAlertDescription:"任务成本 ${{cost}} — 阈值为 ${{threshold}}",dailyBudgetTitle:`已超出每日预算`,dailyBudgetDescription:"今日已花费 ${{spent}},预算 ${{budget}}。队列已暂停。",desktopBudgetTitle:`已超出 Desktop 每日预算`,desktopBudgetDescription:"Desktop 总花费 ${{spent}},预算 ${{budget}}。队列已暂停。",bannerMessage:"已超出每日预算 — 已花费 ${{spent}},预算 ${{budget}}。队列已暂停。",dismiss:`忽略`},c={title:`出错了`,occurredIn:`<strong>{{name}}</strong> 中发生了错误`},l={healthLabel:`健康度`,notAvailable:`无`,factorCoverageAvailable:`有覆盖率数据`,factorCoverageGood:`覆盖率 ≥ 70%`,factorPipelineGreen:`最近一次流水线通过`,factorActiveWeek:`本周活跃`,noJobsYet:`暂无任务`,recurringFailures:`检测到反复失败`,failurePattern:`<cmd>{{command}}</cmd> 本周已失败 <times>{{count}}×</times> — 可能存在项目问题。`,coverage:`覆盖率`,lines:`行`,functions:`函数`,branches:`分支`,lastPipeline:`最近流水线`,recentCommits:`最近提交`,noGitHistory:`未找到 git 历史`,minutesAgo:`{{count}} 分钟前`,hoursAgo:`{{count}} 小时前`,daysAgo:`{{count}} 天前`},u={dragToReorder:`拖动以重新排序`,unpinAria:`取消固定该区块(默认折叠)`,pinAria:`固定该区块(保持展开)`,unpinTooltip:`取消固定(默认折叠)`,pinTooltip:`固定展开(保持展开)`},d={sidebarPin:e,projects:t,arcSidebar:n,rightSidebar:r,navbar:i,statusBar:a,titleBar:o,costAlerts:s,errorBoundary:c,healthWidget:l,collapsibleSection:u};export{n as arcSidebar,u as collapsibleSection,s as costAlerts,d as default,c as errorBoundary,l as healthWidget,i as navbar,t as projects,r as rightSidebar,e as sidebarPin,a as statusBar,o as titleBar};
@@ -0,0 +1 @@
1
+ var e={withShortcut:`{{label}} ({{shortcut}})`,left:{pinnedOpen:`Contraer barra lateral izquierda (mantener anclada)`,pinnedCollapsed:`Desanclar barra lateral izquierda`,unpinned:`Anclar barra lateral izquierda abierta`},right:{pinnedOpen:`Contraer barra lateral derecha (mantener anclada)`,pinnedCollapsed:`Desanclar barra lateral derecha`,unpinned:`Anclar barra lateral derecha abierta`}},t={addProject:`Añadir proyecto`,remove:`Eliminar {{name}}`,confirmRemove:`Confirmar eliminación de {{name}}`,confirmShort:`¿confirmar?`,added:`Proyecto añadido: {{name}}`,removed:`Proyecto eliminado`},n={desktopTitle:`Desktop`,loops:`Loops`,docs:`Docs`,analytics:`Analíticas`,settings:`Ajustes`},r={projectTitle:`Proyecto`,dashboard:`Dashboard`,jobs:`Jobs`,analytics:`Analíticas`,agents:`Agentes`,code:`Código`,integrations:`Integraciones`,settings:`Ajustes`},i={home:`Inicio`,analytics:`Analíticas`,docs:`Docs`,settings:`Ajustes`,noCli:`Sin CLI de IA`,noCliTooltip:`No se ha detectado ningún CLI de IA. Instala Claude Code o Codex CLI.`,activeCli:`CLI activo: {{label}}`},a={connected:`conectado`,syncing:`sincronizando...`,reconnecting:`reconectando...`,disconnected:`desconectado`,connectionRestored:`Conexión restablecida`},o={searchShortcut:`Buscar (⌘K)`,searchPlaceholder:`Buscar…`,minimizeWindow:`Minimizar ventana`,maximizeWindow:`Maximizar ventana`,closeWindow:`Cerrar ventana`},s={costAlertTitle:`Alerta de coste`,costAlertDescription:"El job ha costado ${{cost}} — el umbral es ${{threshold}}",dailyBudgetTitle:`Presupuesto diario superado`,dailyBudgetDescription:"Gastados ${{spent}} de ${{budget}} hoy. Cola pausada.",desktopBudgetTitle:`Presupuesto diario de Desktop superado`,desktopBudgetDescription:"Gasto total de Desktop: ${{spent}} de ${{budget}}. Cola pausada.",bannerMessage:"Presupuesto diario superado — gastados ${{spent}} de ${{budget}}. La cola está pausada.",dismiss:`Descartar`},c={title:`Algo ha salido mal`,occurredIn:`Se ha producido un error en <strong>{{name}}</strong>`},l={healthLabel:`salud`,notAvailable:`n/d`,factorCoverageAvailable:`Cobertura disponible`,factorCoverageGood:`Cobertura ≥ 70%`,factorPipelineGreen:`Último pipeline en verde`,factorActiveWeek:`Activo esta semana`,noJobsYet:`Aún no hay jobs`,recurringFailures:`Fallos recurrentes detectados`,failurePattern:`<cmd>{{command}}</cmd> ha fallado <times>{{count}}×</times> esta semana — posible problema del proyecto.`,coverage:`Cobertura`,lines:`Líneas`,functions:`Funciones`,branches:`Ramas`,lastPipeline:`Último pipeline`,recentCommits:`Commits recientes`,noGitHistory:`No se ha encontrado historial de git`,minutesAgo:`hace {{count}}m`,hoursAgo:`hace {{count}}h`,daysAgo:`hace {{count}}d`},u={dragToReorder:`Arrastra para reordenar`,unpinAria:`Desanclar sección (se contraerá por defecto)`,pinAria:`Anclar sección (permanecerá expandida)`,unpinTooltip:`Desanclar (contraída por defecto)`,pinTooltip:`Anclar abierta (permanece expandida)`},d={sidebarPin:e,projects:t,arcSidebar:n,rightSidebar:r,navbar:i,statusBar:a,titleBar:o,costAlerts:s,errorBoundary:c,healthWidget:l,collapsibleSection:u};export{n as arcSidebar,u as collapsibleSection,s as costAlerts,d as default,c as errorBoundary,l as healthWidget,i as navbar,t as projects,r as rightSidebar,e as sidebarPin,a as statusBar,o as titleBar};
@@ -0,0 +1 @@
1
+ var e={withShortcut:`{{label}} ({{shortcut}})`,left:{pinnedOpen:`Recolher barra lateral esquerda (manter afixada)`,pinnedCollapsed:`Desafixar barra lateral esquerda`,unpinned:`Afixar barra lateral esquerda aberta`},right:{pinnedOpen:`Recolher barra lateral direita (manter afixada)`,pinnedCollapsed:`Desafixar barra lateral direita`,unpinned:`Afixar barra lateral direita aberta`}},t={addProject:`Adicionar projeto`,remove:`Remover {{name}}`,confirmRemove:`Confirmar remoção de {{name}}`,confirmShort:`confirmar?`,added:`Projeto adicionado: {{name}}`,removed:`Projeto removido`},n={desktopTitle:`Desktop`,loops:`Loops`,docs:`Docs`,analytics:`Análises`,settings:`Definições`},r={projectTitle:`Projeto`,dashboard:`Dashboard`,jobs:`Jobs`,analytics:`Análises`,agents:`Agentes`,code:`Código`,integrations:`Integrações`,settings:`Definições`},i={home:`Início`,analytics:`Análises`,docs:`Docs`,settings:`Definições`,noCli:`Sem CLI de IA`,noCliTooltip:`Nenhuma CLI de IA detetada. Instale o Claude Code ou a Codex CLI.`,activeCli:`CLI ativa: {{label}}`},a={connected:`ligado`,syncing:`a sincronizar...`,reconnecting:`a religar...`,disconnected:`desligado`,connectionRestored:`Ligação restaurada`},o={searchShortcut:`Pesquisar (⌘K)`,searchPlaceholder:`Pesquisar…`,minimizeWindow:`Minimizar janela`,maximizeWindow:`Maximizar janela`,closeWindow:`Fechar janela`},s={costAlertTitle:`Alerta de custo`,costAlertDescription:"Custo do job ${{cost}} — o limite é ${{threshold}}",dailyBudgetTitle:`Orçamento diário excedido`,dailyBudgetDescription:"Gastos ${{spent}} de ${{budget}} hoje. Fila em pausa.",desktopBudgetTitle:`Orçamento diário do Desktop excedido`,desktopBudgetDescription:"Gasto total do Desktop ${{spent}} de ${{budget}}. Fila em pausa.",bannerMessage:"Orçamento diário excedido — gastos ${{spent}} de ${{budget}}. A fila está em pausa.",dismiss:`Dispensar`},c={title:`Ocorreu um erro`,occurredIn:`Ocorreu um erro em <strong>{{name}}</strong>`},l={healthLabel:`saúde`,notAvailable:`n/d`,factorCoverageAvailable:`Cobertura disponível`,factorCoverageGood:`Cobertura ≥ 70%`,factorPipelineGreen:`Última pipeline verde`,factorActiveWeek:`Ativo esta semana`,noJobsYet:`Ainda não há jobs`,recurringFailures:`Falhas recorrentes detetadas`,failurePattern:`<cmd>{{command}}</cmd> falhou <times>{{count}}×</times> esta semana — possível problema do projeto.`,coverage:`Cobertura`,lines:`Linhas`,functions:`Funções`,branches:`Ramos`,lastPipeline:`Última pipeline`,recentCommits:`Commits recentes`,noGitHistory:`Sem histórico git`,minutesAgo:`há {{count}}m`,hoursAgo:`há {{count}}h`,daysAgo:`há {{count}}d`},u={dragToReorder:`Arraste para reordenar`,unpinAria:`Desafixar secção (ficará recolhida por predefinição)`,pinAria:`Afixar secção (ficará expandida)`,unpinTooltip:`Desafixar (recolhida por predefinição)`,pinTooltip:`Afixar aberta (manter expandida)`},d={sidebarPin:e,projects:t,arcSidebar:n,rightSidebar:r,navbar:i,statusBar:a,titleBar:o,costAlerts:s,errorBoundary:c,healthWidget:l,collapsibleSection:u};export{n as arcSidebar,u as collapsibleSection,s as costAlerts,d as default,c as errorBoundary,l as healthWidget,i as navbar,t as projects,r as rightSidebar,e as sidebarPin,a as statusBar,o as titleBar};
@@ -0,0 +1 @@
1
+ var e={withShortcut:`{{label}} ({{shortcut}})`,left:{pinnedOpen:`Comprimi barra laterale sinistra (mantieni fissata)`,pinnedCollapsed:`Sblocca barra laterale sinistra`,unpinned:`Fissa aperta la barra laterale sinistra`},right:{pinnedOpen:`Comprimi barra laterale destra (mantieni fissata)`,pinnedCollapsed:`Sblocca barra laterale destra`,unpinned:`Fissa aperta la barra laterale destra`}},t={addProject:`Aggiungi progetto`,remove:`Rimuovi {{name}}`,confirmRemove:`Conferma rimozione di {{name}}`,confirmShort:`confermare?`,added:`Progetto aggiunto: {{name}}`,removed:`Progetto rimosso`},n={desktopTitle:`Desktop`,loops:`Loops`,docs:`Docs`,analytics:`Analytics`,settings:`Impostazioni`},r={projectTitle:`Progetto`,dashboard:`Dashboard`,jobs:`Job`,analytics:`Analytics`,agents:`Agenti`,code:`Codice`,integrations:`Integrazioni`,settings:`Impostazioni`},i={home:`Home`,analytics:`Analytics`,docs:`Docs`,settings:`Impostazioni`,noCli:`Nessuna CLI AI`,noCliTooltip:`Nessuna CLI AI rilevata. Installa Claude Code o Codex CLI.`,activeCli:`CLI attiva: {{label}}`},a={connected:`connesso`,syncing:`sincronizzazione...`,reconnecting:`riconnessione...`,disconnected:`disconnesso`,connectionRestored:`Connessione ripristinata`},o={searchShortcut:`Cerca (⌘K)`,searchPlaceholder:`Cerca…`,minimizeWindow:`Riduci a icona`,maximizeWindow:`Ingrandisci finestra`,closeWindow:`Chiudi finestra`},s={costAlertTitle:`Avviso di costo`,costAlertDescription:"Costo del job ${{cost}} — la soglia è ${{threshold}}",dailyBudgetTitle:`Budget giornaliero superato`,dailyBudgetDescription:"Spesi ${{spent}} su ${{budget}} oggi. Coda in pausa.",desktopBudgetTitle:`Budget giornaliero di Desktop superato`,desktopBudgetDescription:"Spesa totale di Desktop ${{spent}} su ${{budget}}. Coda in pausa.",bannerMessage:"Budget giornaliero superato — spesi ${{spent}} su ${{budget}}. La coda è in pausa.",dismiss:`Ignora`},c={title:`Qualcosa è andato storto`,occurredIn:`Si è verificato un errore in <strong>{{name}}</strong>`},l={healthLabel:`salute`,notAvailable:`n/d`,factorCoverageAvailable:`Copertura disponibile`,factorCoverageGood:`Copertura ≥ 70%`,factorPipelineGreen:`Ultima pipeline verde`,factorActiveWeek:`Attivo questa settimana`,noJobsYet:`Ancora nessun job`,recurringFailures:`Rilevati errori ricorrenti`,failurePattern:`<cmd>{{command}}</cmd> è fallito <times>{{count}}×</times> questa settimana — possibile problema del progetto.`,coverage:`Copertura`,lines:`Righe`,functions:`Funzioni`,branches:`Branch`,lastPipeline:`Ultima pipeline`,recentCommits:`Commit recenti`,noGitHistory:`Nessuna cronologia git trovata`,minutesAgo:`{{count}}m fa`,hoursAgo:`{{count}}h fa`,daysAgo:`{{count}}g fa`},u={dragToReorder:`Trascina per riordinare`,unpinAria:`Sblocca sezione (compressa per impostazione predefinita)`,pinAria:`Fissa sezione (resterà espansa)`,unpinTooltip:`Sblocca (compressa per impostazione predefinita)`,pinTooltip:`Fissa aperta (resta espansa)`},d={sidebarPin:e,projects:t,arcSidebar:n,rightSidebar:r,navbar:i,statusBar:a,titleBar:o,costAlerts:s,errorBoundary:c,healthWidget:l,collapsibleSection:u};export{n as arcSidebar,u as collapsibleSection,s as costAlerts,d as default,c as errorBoundary,l as healthWidget,i as navbar,t as projects,r as rightSidebar,e as sidebarPin,a as statusBar,o as titleBar};
@@ -0,0 +1 @@
1
+ var e={withShortcut:`{{label}} ({{shortcut}})`,left:{pinnedOpen:`Replier la barre latérale gauche (garder épinglée)`,pinnedCollapsed:`Désépingler la barre latérale gauche`,unpinned:`Épingler la barre latérale gauche ouverte`},right:{pinnedOpen:`Replier la barre latérale droite (garder épinglée)`,pinnedCollapsed:`Désépingler la barre latérale droite`,unpinned:`Épingler la barre latérale droite ouverte`}},t={addProject:`Ajouter un projet`,remove:`Supprimer {{name}}`,confirmRemove:`Confirmer la suppression de {{name}}`,confirmShort:`confirmer ?`,added:`Projet ajouté : {{name}}`,removed:`Projet supprimé`},n={desktopTitle:`Desktop`,loops:`Loops`,docs:`Docs`,analytics:`Analytics`,settings:`Paramètres`},r={projectTitle:`Projet`,dashboard:`Tableau de bord`,jobs:`Jobs`,analytics:`Analytics`,agents:`Agents`,code:`Code`,integrations:`Intégrations`,settings:`Paramètres`},i={home:`Accueil`,analytics:`Analytics`,docs:`Docs`,settings:`Paramètres`,noCli:`Aucune CLI IA`,noCliTooltip:`Aucune CLI IA détectée. Installez Claude Code ou Codex CLI.`,activeCli:`CLI active : {{label}}`},a={connected:`connecté`,syncing:`synchronisation...`,reconnecting:`reconnexion...`,disconnected:`déconnecté`,connectionRestored:`Connexion rétablie`},o={searchShortcut:`Rechercher (⌘K)`,searchPlaceholder:`Rechercher…`,minimizeWindow:`Réduire la fenêtre`,maximizeWindow:`Agrandir la fenêtre`,closeWindow:`Fermer la fenêtre`},s={costAlertTitle:`Alerte de coût`,costAlertDescription:`Coût du job : {{cost}} $ — le seuil est de {{threshold}} $`,dailyBudgetTitle:`Budget quotidien dépassé`,dailyBudgetDescription:`{{spent}} $ dépensés sur {{budget}} $ aujourd'hui. File d'attente en pause.`,desktopBudgetTitle:`Budget quotidien de Desktop dépassé`,desktopBudgetDescription:`Dépense totale de Desktop : {{spent}} $ sur {{budget}} $. File d'attente en pause.`,bannerMessage:`Budget quotidien dépassé — {{spent}} $ dépensés sur {{budget}} $. La file d'attente est en pause.`,dismiss:`Ignorer`},c={title:`Une erreur est survenue`,occurredIn:`Une erreur s'est produite dans <strong>{{name}}</strong>`},l={healthLabel:`santé`,notAvailable:`n/d`,factorCoverageAvailable:`Couverture disponible`,factorCoverageGood:`Couverture ≥ 70 %`,factorPipelineGreen:`Dernier pipeline au vert`,factorActiveWeek:`Actif cette semaine`,noJobsYet:`Aucun job pour l'instant`,recurringFailures:`Échecs récurrents détectés`,failurePattern:`<cmd>{{command}}</cmd> a échoué <times>{{count}}×</times> cette semaine — possible problème du projet.`,coverage:`Couverture`,lines:`Lignes`,functions:`Fonctions`,branches:`Branches`,lastPipeline:`Dernier pipeline`,recentCommits:`Commits récents`,noGitHistory:`Aucun historique git trouvé`,minutesAgo:`il y a {{count}} min`,hoursAgo:`il y a {{count}} h`,daysAgo:`il y a {{count}} j`},u={dragToReorder:`Glisser pour réorganiser`,unpinAria:`Désépingler la section (repliée par défaut)`,pinAria:`Épingler la section (restera dépliée)`,unpinTooltip:`Désépingler (repliée par défaut)`,pinTooltip:`Épingler ouverte (rester dépliée)`},d={sidebarPin:e,projects:t,arcSidebar:n,rightSidebar:r,navbar:i,statusBar:a,titleBar:o,costAlerts:s,errorBoundary:c,healthWidget:l,collapsibleSection:u};export{n as arcSidebar,u as collapsibleSection,s as costAlerts,d as default,c as errorBoundary,l as healthWidget,i as navbar,t as projects,r as rightSidebar,e as sidebarPin,a as statusBar,o as titleBar};
@@ -1 +1 @@
1
- import{h as e}from"./editor.api2-BPnIxMjz.js";var t={comments:{lineComment:`#`,blockComment:[`'''`,`'''`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`,notIn:[`string`]},{open:`'`,close:`'`,notIn:[`string`,`comment`]}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],onEnterRules:[{beforeText:RegExp(`^\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async|match|case).*?:\\s*$`),action:{indentAction:e.IndentAction.Indent}}],folding:{offSide:!0,markers:{start:RegExp(`^\\s*#region\\b`),end:RegExp(`^\\s*#endregion\\b`)}}},n={defaultToken:``,tokenPostfix:`.python`,keywords:`False.None.True._.and.as.assert.async.await.break.case.class.continue.def.del.elif.else.except.exec.finally.for.from.global.if.import.in.is.lambda.match.nonlocal.not.or.pass.print.raise.return.try.type.while.with.yield.int.float.long.complex.hex.abs.all.any.apply.basestring.bin.bool.buffer.bytearray.callable.chr.classmethod.cmp.coerce.compile.complex.delattr.dict.dir.divmod.enumerate.eval.execfile.file.filter.format.frozenset.getattr.globals.hasattr.hash.help.id.input.intern.isinstance.issubclass.iter.len.locals.list.map.max.memoryview.min.next.object.oct.open.ord.pow.print.property.reversed.range.raw_input.reduce.reload.repr.reversed.round.self.set.setattr.slice.sorted.staticmethod.str.sum.super.tuple.type.unichr.unicode.vars.xrange.zip.__dict__.__methods__.__members__.__class__.__bases__.__name__.__mro__.__subclasses__.__init__.__import__`.split(`.`),brackets:[{open:`{`,close:`}`,token:`delimiter.curly`},{open:`[`,close:`]`,token:`delimiter.bracket`},{open:`(`,close:`)`,token:`delimiter.parenthesis`}],tokenizer:{root:[{include:`@whitespace`},{include:`@numbers`},{include:`@strings`},[/[,:;]/,`delimiter`],[/[{}\[\]()]/,`@brackets`],[/@[a-zA-Z_]\w*/,`tag`],[/[a-zA-Z_]\w*/,{cases:{"@keywords":`keyword`,"@default":`identifier`}}]],whitespace:[[/\s+/,`white`],[/(^#.*$)/,`comment`],[/'''/,`string`,`@endDocString`],[/"""/,`string`,`@endDblDocString`]],endDocString:[[/[^']+/,`string`],[/\\'/,`string`],[/'''/,`string`,`@popall`],[/'/,`string`]],endDblDocString:[[/[^"]+/,`string`],[/\\"/,`string`],[/"""/,`string`,`@popall`],[/"/,`string`]],numbers:[[/-?0x([abcdef]|[ABCDEF]|\d)+[lL]?/,`number.hex`],[/-?(\d*\.)?\d+([eE][+\-]?\d+)?[jJ]?[lL]?/,`number`]],strings:[[/'$/,`string.escape`,`@popall`],[/f'{1,3}/,`string.escape`,`@fStringBody`],[/'/,`string.escape`,`@stringBody`],[/"$/,`string.escape`,`@popall`],[/f"{1,3}/,`string.escape`,`@fDblStringBody`],[/"/,`string.escape`,`@dblStringBody`]],fStringBody:[[/[^\\'\{\}]+$/,`string`,`@popall`],[/[^\\'\{\}]+/,`string`],[/\{[^\}':!=]+/,`identifier`,`@fStringDetail`],[/\\./,`string`],[/'/,`string.escape`,`@popall`],[/\\$/,`string`]],stringBody:[[/[^\\']+$/,`string`,`@popall`],[/[^\\']+/,`string`],[/\\./,`string`],[/'/,`string.escape`,`@popall`],[/\\$/,`string`]],fDblStringBody:[[/[^\\"\{\}]+$/,`string`,`@popall`],[/[^\\"\{\}]+/,`string`],[/\{[^\}':!=]+/,`identifier`,`@fStringDetail`],[/\\./,`string`],[/"/,`string.escape`,`@popall`],[/\\$/,`string`]],dblStringBody:[[/[^\\"]+$/,`string`,`@popall`],[/[^\\"]+/,`string`],[/\\./,`string`],[/"/,`string.escape`,`@popall`],[/\\$/,`string`]],fStringDetail:[[/[:][^}]+/,`string`],[/[!][ars]/,`string`],[/=/,`string`],[/\}/,`identifier`,`@pop`]]}};export{t as conf,n as language};
1
+ import{h as e}from"./editor.api2-Cwla1nvV.js";var t={comments:{lineComment:`#`,blockComment:[`'''`,`'''`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`,notIn:[`string`]},{open:`'`,close:`'`,notIn:[`string`,`comment`]}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],onEnterRules:[{beforeText:RegExp(`^\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async|match|case).*?:\\s*$`),action:{indentAction:e.IndentAction.Indent}}],folding:{offSide:!0,markers:{start:RegExp(`^\\s*#region\\b`),end:RegExp(`^\\s*#endregion\\b`)}}},n={defaultToken:``,tokenPostfix:`.python`,keywords:`False.None.True._.and.as.assert.async.await.break.case.class.continue.def.del.elif.else.except.exec.finally.for.from.global.if.import.in.is.lambda.match.nonlocal.not.or.pass.print.raise.return.try.type.while.with.yield.int.float.long.complex.hex.abs.all.any.apply.basestring.bin.bool.buffer.bytearray.callable.chr.classmethod.cmp.coerce.compile.complex.delattr.dict.dir.divmod.enumerate.eval.execfile.file.filter.format.frozenset.getattr.globals.hasattr.hash.help.id.input.intern.isinstance.issubclass.iter.len.locals.list.map.max.memoryview.min.next.object.oct.open.ord.pow.print.property.reversed.range.raw_input.reduce.reload.repr.reversed.round.self.set.setattr.slice.sorted.staticmethod.str.sum.super.tuple.type.unichr.unicode.vars.xrange.zip.__dict__.__methods__.__members__.__class__.__bases__.__name__.__mro__.__subclasses__.__init__.__import__`.split(`.`),brackets:[{open:`{`,close:`}`,token:`delimiter.curly`},{open:`[`,close:`]`,token:`delimiter.bracket`},{open:`(`,close:`)`,token:`delimiter.parenthesis`}],tokenizer:{root:[{include:`@whitespace`},{include:`@numbers`},{include:`@strings`},[/[,:;]/,`delimiter`],[/[{}\[\]()]/,`@brackets`],[/@[a-zA-Z_]\w*/,`tag`],[/[a-zA-Z_]\w*/,{cases:{"@keywords":`keyword`,"@default":`identifier`}}]],whitespace:[[/\s+/,`white`],[/(^#.*$)/,`comment`],[/'''/,`string`,`@endDocString`],[/"""/,`string`,`@endDblDocString`]],endDocString:[[/[^']+/,`string`],[/\\'/,`string`],[/'''/,`string`,`@popall`],[/'/,`string`]],endDblDocString:[[/[^"]+/,`string`],[/\\"/,`string`],[/"""/,`string`,`@popall`],[/"/,`string`]],numbers:[[/-?0x([abcdef]|[ABCDEF]|\d)+[lL]?/,`number.hex`],[/-?(\d*\.)?\d+([eE][+\-]?\d+)?[jJ]?[lL]?/,`number`]],strings:[[/'$/,`string.escape`,`@popall`],[/f'{1,3}/,`string.escape`,`@fStringBody`],[/'/,`string.escape`,`@stringBody`],[/"$/,`string.escape`,`@popall`],[/f"{1,3}/,`string.escape`,`@fDblStringBody`],[/"/,`string.escape`,`@dblStringBody`]],fStringBody:[[/[^\\'\{\}]+$/,`string`,`@popall`],[/[^\\'\{\}]+/,`string`],[/\{[^\}':!=]+/,`identifier`,`@fStringDetail`],[/\\./,`string`],[/'/,`string.escape`,`@popall`],[/\\$/,`string`]],stringBody:[[/[^\\']+$/,`string`,`@popall`],[/[^\\']+/,`string`],[/\\./,`string`],[/'/,`string.escape`,`@popall`],[/\\$/,`string`]],fDblStringBody:[[/[^\\"\{\}]+$/,`string`,`@popall`],[/[^\\"\{\}]+/,`string`],[/\{[^\}':!=]+/,`identifier`,`@fStringDetail`],[/\\./,`string`],[/"/,`string.escape`,`@popall`],[/\\$/,`string`]],dblStringBody:[[/[^\\"]+$/,`string`,`@popall`],[/[^\\"]+/,`string`],[/\\./,`string`],[/"/,`string.escape`,`@popall`],[/\\$/,`string`]],fStringDetail:[[/[:][^}]+/,`string`],[/[!][ars]/,`string`],[/=/,`string`],[/\}/,`identifier`,`@pop`]]}};export{t as conf,n as language};
@@ -1 +1 @@
1
- import{h as e}from"./editor.api2-BPnIxMjz.js";var t=[`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`keygen`,`link`,`menuitem`,`meta`,`param`,`source`,`track`,`wbr`],n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:[`<!--`,`-->`]},brackets:[[`<!--`,`-->`],[`<`,`>`],[`{`,`}`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`"`,close:`"`},{open:`'`,close:`'`},{open:`<`,close:`>`}],onEnterRules:[{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:e.IndentAction.IndentOutdent}},{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),action:{indentAction:e.IndentAction.Indent}}]},r={defaultToken:``,tokenPostfix:``,tokenizer:{root:[[/@@@@/],[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.root`}],[/<!DOCTYPE/,`metatag.html`,`@doctype`],[/<!--/,`comment.html`,`@comment`],[/(<)([\w\-]+)(\/>)/,[`delimiter.html`,`tag.html`,`delimiter.html`]],[/(<)(script)/,[`delimiter.html`,{token:`tag.html`,next:`@script`}]],[/(<)(style)/,[`delimiter.html`,{token:`tag.html`,next:`@style`}]],[/(<)([:\w\-]+)/,[`delimiter.html`,{token:`tag.html`,next:`@otherTag`}]],[/(<\/)([\w\-]+)/,[`delimiter.html`,{token:`tag.html`,next:`@otherTag`}]],[/</,`delimiter.html`],[/[ \t\r\n]+/],[/[^<@]+/]],doctype:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.comment`}],[/[^>]+/,`metatag.content.html`],[/>/,`metatag.html`,`@pop`]],comment:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.comment`}],[/-->/,`comment.html`,`@pop`],[/[^-]+/,`comment.content.html`],[/./,`comment.content.html`]],otherTag:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.otherTag`}],[/\/?>/,`delimiter.html`,`@pop`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/]],script:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.script`}],[/type/,`attribute.name`,`@scriptAfterType`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/>/,{token:`delimiter.html`,next:`@scriptEmbedded.text/javascript`,nextEmbedded:`text/javascript`}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,[`delimiter.html`,`tag.html`,{token:`delimiter.html`,next:`@pop`}]]],scriptAfterType:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.scriptAfterType`}],[/=/,`delimiter`,`@scriptAfterTypeEquals`],[/>/,{token:`delimiter.html`,next:`@scriptEmbedded.text/javascript`,nextEmbedded:`text/javascript`}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:`@rematch`,next:`@pop`}]],scriptAfterTypeEquals:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.scriptAfterTypeEquals`}],[/"([^"]*)"/,{token:`attribute.value`,switchTo:`@scriptWithCustomType.$1`}],[/'([^']*)'/,{token:`attribute.value`,switchTo:`@scriptWithCustomType.$1`}],[/>/,{token:`delimiter.html`,next:`@scriptEmbedded.text/javascript`,nextEmbedded:`text/javascript`}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:`@rematch`,next:`@pop`}]],scriptWithCustomType:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.scriptWithCustomType.$S2`}],[/>/,{token:`delimiter.html`,next:`@scriptEmbedded.$S2`,nextEmbedded:`$S2`}],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:`@rematch`,next:`@pop`}]],scriptEmbedded:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInEmbeddedState.scriptEmbedded.$S2`,nextEmbedded:`@pop`}],[/<\/script/,{token:`@rematch`,next:`@pop`,nextEmbedded:`@pop`}]],style:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.style`}],[/type/,`attribute.name`,`@styleAfterType`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/>/,{token:`delimiter.html`,next:`@styleEmbedded.text/css`,nextEmbedded:`text/css`}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,[`delimiter.html`,`tag.html`,{token:`delimiter.html`,next:`@pop`}]]],styleAfterType:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.styleAfterType`}],[/=/,`delimiter`,`@styleAfterTypeEquals`],[/>/,{token:`delimiter.html`,next:`@styleEmbedded.text/css`,nextEmbedded:`text/css`}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:`@rematch`,next:`@pop`}]],styleAfterTypeEquals:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.styleAfterTypeEquals`}],[/"([^"]*)"/,{token:`attribute.value`,switchTo:`@styleWithCustomType.$1`}],[/'([^']*)'/,{token:`attribute.value`,switchTo:`@styleWithCustomType.$1`}],[/>/,{token:`delimiter.html`,next:`@styleEmbedded.text/css`,nextEmbedded:`text/css`}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:`@rematch`,next:`@pop`}]],styleWithCustomType:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.styleWithCustomType.$S2`}],[/>/,{token:`delimiter.html`,next:`@styleEmbedded.$S2`,nextEmbedded:`$S2`}],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:`@rematch`,next:`@pop`}]],styleEmbedded:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInEmbeddedState.styleEmbedded.$S2`,nextEmbedded:`@pop`}],[/<\/style/,{token:`@rematch`,next:`@pop`,nextEmbedded:`@pop`}]],razorInSimpleState:[[/@\*/,`comment.cs`,`@razorBlockCommentTopLevel`],[/@[{(]/,`metatag.cs`,`@razorRootTopLevel`],[/(@)(\s*[\w]+)/,[`metatag.cs`,{token:`identifier.cs`,switchTo:`@$S2.$S3`}]],[/[})]/,{token:`metatag.cs`,switchTo:`@$S2.$S3`}],[/\*@/,{token:`comment.cs`,switchTo:`@$S2.$S3`}]],razorInEmbeddedState:[[/@\*/,`comment.cs`,`@razorBlockCommentTopLevel`],[/@[{(]/,`metatag.cs`,`@razorRootTopLevel`],[/(@)(\s*[\w]+)/,[`metatag.cs`,{token:`identifier.cs`,switchTo:`@$S2.$S3`,nextEmbedded:`$S3`}]],[/[})]/,{token:`metatag.cs`,switchTo:`@$S2.$S3`,nextEmbedded:`$S3`}],[/\*@/,{token:`comment.cs`,switchTo:`@$S2.$S3`,nextEmbedded:`$S3`}]],razorBlockCommentTopLevel:[[/\*@/,`@rematch`,`@pop`],[/[^*]+/,`comment.cs`],[/./,`comment.cs`]],razorBlockComment:[[/\*@/,`comment.cs`,`@pop`],[/[^*]+/,`comment.cs`],[/./,`comment.cs`]],razorRootTopLevel:[[/\{/,`delimiter.bracket.cs`,`@razorRoot`],[/\(/,`delimiter.parenthesis.cs`,`@razorRoot`],[/[})]/,`@rematch`,`@pop`],{include:`razorCommon`}],razorRoot:[[/\{/,`delimiter.bracket.cs`,`@razorRoot`],[/\(/,`delimiter.parenthesis.cs`,`@razorRoot`],[/\}/,`delimiter.bracket.cs`,`@pop`],[/\)/,`delimiter.parenthesis.cs`,`@pop`],{include:`razorCommon`}],razorCommon:[[/[a-zA-Z_]\w*/,{cases:{"@razorKeywords":{token:`keyword.cs`},"@default":`identifier.cs`}}],[/[\[\]]/,`delimiter.array.cs`],[/[ \t\r\n]+/],[/\/\/.*$/,`comment.cs`],[/@\*/,`comment.cs`,`@razorBlockComment`],[/"([^"]*)"/,`string.cs`],[/'([^']*)'/,`string.cs`],[/(<)([\w\-]+)(\/>)/,[`delimiter.html`,`tag.html`,`delimiter.html`]],[/(<)([\w\-]+)(>)/,[`delimiter.html`,`tag.html`,`delimiter.html`]],[/(<\/)([\w\-]+)(>)/,[`delimiter.html`,`tag.html`,`delimiter.html`]],[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,]/,`delimiter.cs`],[/\d*\d+[eE]([\-+]?\d+)?/,`number.float.cs`],[/\d*\.\d+([eE][\-+]?\d+)?/,`number.float.cs`],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,`number.hex.cs`],[/0[0-7']*[0-7]/,`number.octal.cs`],[/0[bB][0-1']*[0-1]/,`number.binary.cs`],[/\d[\d']*/,`number.cs`],[/\d/,`number.cs`]]},razorKeywords:`abstract.as.async.await.base.bool.break.by.byte.case.catch.char.checked.class.const.continue.decimal.default.delegate.do.double.descending.explicit.event.extern.else.enum.false.finally.fixed.float.for.foreach.from.goto.group.if.implicit.in.int.interface.internal.into.is.lock.long.nameof.new.null.namespace.object.operator.out.override.orderby.params.private.protected.public.readonly.ref.return.switch.struct.sbyte.sealed.short.sizeof.stackalloc.static.string.select.this.throw.true.try.typeof.uint.ulong.unchecked.unsafe.ushort.using.var.virtual.volatile.void.when.while.where.yield.model.inject`.split(`.`),escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/};export{n as conf,r as language};
1
+ import{h as e}from"./editor.api2-Cwla1nvV.js";var t=[`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`keygen`,`link`,`menuitem`,`meta`,`param`,`source`,`track`,`wbr`],n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:[`<!--`,`-->`]},brackets:[[`<!--`,`-->`],[`<`,`>`],[`{`,`}`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`"`,close:`"`},{open:`'`,close:`'`},{open:`<`,close:`>`}],onEnterRules:[{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:e.IndentAction.IndentOutdent}},{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),action:{indentAction:e.IndentAction.Indent}}]},r={defaultToken:``,tokenPostfix:``,tokenizer:{root:[[/@@@@/],[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.root`}],[/<!DOCTYPE/,`metatag.html`,`@doctype`],[/<!--/,`comment.html`,`@comment`],[/(<)([\w\-]+)(\/>)/,[`delimiter.html`,`tag.html`,`delimiter.html`]],[/(<)(script)/,[`delimiter.html`,{token:`tag.html`,next:`@script`}]],[/(<)(style)/,[`delimiter.html`,{token:`tag.html`,next:`@style`}]],[/(<)([:\w\-]+)/,[`delimiter.html`,{token:`tag.html`,next:`@otherTag`}]],[/(<\/)([\w\-]+)/,[`delimiter.html`,{token:`tag.html`,next:`@otherTag`}]],[/</,`delimiter.html`],[/[ \t\r\n]+/],[/[^<@]+/]],doctype:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.comment`}],[/[^>]+/,`metatag.content.html`],[/>/,`metatag.html`,`@pop`]],comment:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.comment`}],[/-->/,`comment.html`,`@pop`],[/[^-]+/,`comment.content.html`],[/./,`comment.content.html`]],otherTag:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.otherTag`}],[/\/?>/,`delimiter.html`,`@pop`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/]],script:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.script`}],[/type/,`attribute.name`,`@scriptAfterType`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/>/,{token:`delimiter.html`,next:`@scriptEmbedded.text/javascript`,nextEmbedded:`text/javascript`}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,[`delimiter.html`,`tag.html`,{token:`delimiter.html`,next:`@pop`}]]],scriptAfterType:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.scriptAfterType`}],[/=/,`delimiter`,`@scriptAfterTypeEquals`],[/>/,{token:`delimiter.html`,next:`@scriptEmbedded.text/javascript`,nextEmbedded:`text/javascript`}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:`@rematch`,next:`@pop`}]],scriptAfterTypeEquals:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.scriptAfterTypeEquals`}],[/"([^"]*)"/,{token:`attribute.value`,switchTo:`@scriptWithCustomType.$1`}],[/'([^']*)'/,{token:`attribute.value`,switchTo:`@scriptWithCustomType.$1`}],[/>/,{token:`delimiter.html`,next:`@scriptEmbedded.text/javascript`,nextEmbedded:`text/javascript`}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:`@rematch`,next:`@pop`}]],scriptWithCustomType:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.scriptWithCustomType.$S2`}],[/>/,{token:`delimiter.html`,next:`@scriptEmbedded.$S2`,nextEmbedded:`$S2`}],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:`@rematch`,next:`@pop`}]],scriptEmbedded:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInEmbeddedState.scriptEmbedded.$S2`,nextEmbedded:`@pop`}],[/<\/script/,{token:`@rematch`,next:`@pop`,nextEmbedded:`@pop`}]],style:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.style`}],[/type/,`attribute.name`,`@styleAfterType`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/>/,{token:`delimiter.html`,next:`@styleEmbedded.text/css`,nextEmbedded:`text/css`}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,[`delimiter.html`,`tag.html`,{token:`delimiter.html`,next:`@pop`}]]],styleAfterType:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.styleAfterType`}],[/=/,`delimiter`,`@styleAfterTypeEquals`],[/>/,{token:`delimiter.html`,next:`@styleEmbedded.text/css`,nextEmbedded:`text/css`}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:`@rematch`,next:`@pop`}]],styleAfterTypeEquals:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.styleAfterTypeEquals`}],[/"([^"]*)"/,{token:`attribute.value`,switchTo:`@styleWithCustomType.$1`}],[/'([^']*)'/,{token:`attribute.value`,switchTo:`@styleWithCustomType.$1`}],[/>/,{token:`delimiter.html`,next:`@styleEmbedded.text/css`,nextEmbedded:`text/css`}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:`@rematch`,next:`@pop`}]],styleWithCustomType:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInSimpleState.styleWithCustomType.$S2`}],[/>/,{token:`delimiter.html`,next:`@styleEmbedded.$S2`,nextEmbedded:`$S2`}],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:`@rematch`,next:`@pop`}]],styleEmbedded:[[/@[^@]/,{token:`@rematch`,switchTo:`@razorInEmbeddedState.styleEmbedded.$S2`,nextEmbedded:`@pop`}],[/<\/style/,{token:`@rematch`,next:`@pop`,nextEmbedded:`@pop`}]],razorInSimpleState:[[/@\*/,`comment.cs`,`@razorBlockCommentTopLevel`],[/@[{(]/,`metatag.cs`,`@razorRootTopLevel`],[/(@)(\s*[\w]+)/,[`metatag.cs`,{token:`identifier.cs`,switchTo:`@$S2.$S3`}]],[/[})]/,{token:`metatag.cs`,switchTo:`@$S2.$S3`}],[/\*@/,{token:`comment.cs`,switchTo:`@$S2.$S3`}]],razorInEmbeddedState:[[/@\*/,`comment.cs`,`@razorBlockCommentTopLevel`],[/@[{(]/,`metatag.cs`,`@razorRootTopLevel`],[/(@)(\s*[\w]+)/,[`metatag.cs`,{token:`identifier.cs`,switchTo:`@$S2.$S3`,nextEmbedded:`$S3`}]],[/[})]/,{token:`metatag.cs`,switchTo:`@$S2.$S3`,nextEmbedded:`$S3`}],[/\*@/,{token:`comment.cs`,switchTo:`@$S2.$S3`,nextEmbedded:`$S3`}]],razorBlockCommentTopLevel:[[/\*@/,`@rematch`,`@pop`],[/[^*]+/,`comment.cs`],[/./,`comment.cs`]],razorBlockComment:[[/\*@/,`comment.cs`,`@pop`],[/[^*]+/,`comment.cs`],[/./,`comment.cs`]],razorRootTopLevel:[[/\{/,`delimiter.bracket.cs`,`@razorRoot`],[/\(/,`delimiter.parenthesis.cs`,`@razorRoot`],[/[})]/,`@rematch`,`@pop`],{include:`razorCommon`}],razorRoot:[[/\{/,`delimiter.bracket.cs`,`@razorRoot`],[/\(/,`delimiter.parenthesis.cs`,`@razorRoot`],[/\}/,`delimiter.bracket.cs`,`@pop`],[/\)/,`delimiter.parenthesis.cs`,`@pop`],{include:`razorCommon`}],razorCommon:[[/[a-zA-Z_]\w*/,{cases:{"@razorKeywords":{token:`keyword.cs`},"@default":`identifier.cs`}}],[/[\[\]]/,`delimiter.array.cs`],[/[ \t\r\n]+/],[/\/\/.*$/,`comment.cs`],[/@\*/,`comment.cs`,`@razorBlockComment`],[/"([^"]*)"/,`string.cs`],[/'([^']*)'/,`string.cs`],[/(<)([\w\-]+)(\/>)/,[`delimiter.html`,`tag.html`,`delimiter.html`]],[/(<)([\w\-]+)(>)/,[`delimiter.html`,`tag.html`,`delimiter.html`]],[/(<\/)([\w\-]+)(>)/,[`delimiter.html`,`tag.html`,`delimiter.html`]],[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,]/,`delimiter.cs`],[/\d*\d+[eE]([\-+]?\d+)?/,`number.float.cs`],[/\d*\.\d+([eE][\-+]?\d+)?/,`number.float.cs`],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,`number.hex.cs`],[/0[0-7']*[0-7]/,`number.octal.cs`],[/0[bB][0-1']*[0-1]/,`number.binary.cs`],[/\d[\d']*/,`number.cs`],[/\d/,`number.cs`]]},razorKeywords:`abstract.as.async.await.base.bool.break.by.byte.case.catch.char.checked.class.const.continue.decimal.default.delegate.do.double.descending.explicit.event.extern.else.enum.false.finally.fixed.float.for.foreach.from.goto.group.if.implicit.in.int.interface.internal.into.is.lock.long.nameof.new.null.namespace.object.operator.out.override.orderby.params.private.protected.public.readonly.ref.return.switch.struct.sbyte.sealed.short.sizeof.stackalloc.static.string.select.this.throw.true.try.typeof.uint.ulong.unchecked.unsafe.ushort.using.var.virtual.volatile.void.when.while.where.yield.model.inject`.split(`.`),escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/};export{n as conf,r as language};
@@ -1 +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`,installed:`Installé`,installFailed:`Échec de l'installation`,learnMore:`Apprenez à tirer le meilleur de specrails :`,continueToProject:`Continuer vers le projet`,jira:{title:`Connecter un tableau Jira`,subtitle:`Facultatif — adossez les specs de ce projet à un tableau Jira. Vous pourrez aussi le faire plus tard dans les Paramètres.`,configure:`Configurer Jira`,optional:`facultatif`}},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`,jiraHint:`Connectez chaque projet à son propre tableau Jira — les specs restent synchronisées dans les deux sens.`},s=JSON.parse(`{"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"},"language":{"nav":"Langue","title":"Choisissez votre langue","subtitle":"Specrails parle votre langue","intro":"Choisissez la langue de l'interface. Elle s'applique instantanément — cette visite comprise.","note":"Vous pouvez en changer à tout moment dans Paramètres → Langue."},"theme":{"nav":"Thème","title":"Trouvez votre style","subtitle":"Des thèmes intégrés, appliqués instantanément","intro":"Choisissez l'apparence de Specrails — le thème s'applique dès que vous cliquez.","note":"Vous pouvez en changer à tout moment dans Paramètres → Apparence."},"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}}</mod> <j>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."},"companion":{"nav":"Compagnon mobile","title":"Emportez Specrails avec vous","subtitle":"Specrails Companion — vos pipelines, dans votre poche","intro":"<b>Specrails Companion</b> est une application web disponible sur specrails.dev/companion-app — ouvrez-la sur votre téléphone (ou ajoutez-la à votre écran d'accueil) pour parcourir le tableau des specs, lancer et arrêter des rails, suivre les logs des jobs en direct et jeter un œil aux analytics. Aucune installation, aucun app store.","localLabel":"100 % local, comme tout le reste","localBody":"Votre téléphone se connecte directement à cet ordinateur — en pair-à-pair et chiffré (WebRTC). Pas de relais cloud, pas de compte, et votre code ne quitte jamais vos appareils.","downloadLabel":"Ouvrez-la sur votre téléphone","downloadHint":"Scannez le code avec l'appareil photo de votre téléphone, ou ouvrez specrails.dev/companion-app dans son navigateur.","open":"Ouvrir Specrails Companion","pairLabel":"L'appairage prend dix secondes","pairBody":"Sur votre téléphone, ouvrez specrails.dev/companion-app, puis ici allez dans Paramètres → Compagnon mobile → Appairer le compagnon web et suivez les étapes à l'écran."},"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}}</mod> <m>+</m> <k>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}}</mod> <j>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}}</mod> <bkey>B</bkey>.","projectsLabel":"Barre latérale des projets","projectsBody":"Basculez la barre latérale Arc de gauche avec <alt>{{alt}}</alt> <mod>{{mod}}</mod> <bkey>B</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."},"jira":{"label":"Intégration Jira","body":"Adossez n'importe quel projet à un <b>tableau Jira</b> — chaque spec devient un ticket Jira, synchronisé dans les deux sens : le statut suit le rail et un commentaire est publié à la fin d'un job. Configurez-le par projet lors de l'ajout, ou à tout moment dans 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};
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`,installed:`Installé`,installFailed:`Échec de l'installation`,learnMore:`Apprenez à tirer le meilleur de specrails :`,continueToProject:`Continuer vers le projet`,jira:{title:`Connecter un tableau Jira`,subtitle:`Facultatif — adossez les specs de ce projet à un tableau Jira. Vous pourrez aussi le faire plus tard dans les Paramètres.`,configure:`Configurer Jira`,optional:`facultatif`}},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`,jiraHint:`Connectez chaque projet à son propre tableau Jira — les specs restent synchronisées dans les deux sens.`},s=JSON.parse(`{"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"},"language":{"nav":"Langue","title":"Choisissez votre langue","subtitle":"Specrails parle votre langue","intro":"Choisissez la langue de l'interface. Elle s'applique instantanément — cette visite comprise.","note":"Vous pouvez en changer à tout moment dans Paramètres → Langue."},"theme":{"nav":"Thème","title":"Trouvez votre style","subtitle":"Des thèmes intégrés, appliqués instantanément","intro":"Choisissez l'apparence de Specrails — le thème s'applique dès que vous cliquez.","note":"Vous pouvez en changer à tout moment dans Paramètres → Apparence."},"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 un Loop à exécuter","modeBody":"Chaque rail exécute un <b>Loop</b>. Choisissez-en un intégré — <b>Implement</b> (le pipeline structuré complet), <b>Batch</b> (plusieurs specs à la fois) ou <b>Ultracode</b> (Claude travaille de façon autonome, sans pipeline figé) — ou un que vous avez créé vous-même.","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.","loopsLabel":"Créez vos propres loops","loopsBody":"<b>Loops</b> est un éditeur visuel : enchaînez des étapes IA, des commandes shell et un <b>Loop Decider</b> qui répète jusqu'à ce qu'un objectif soit atteint — p. ex. vérifier → corriger → vérifier jusqu'à ce que tout soit au vert. Publiez un loop et choisissez-le sur n'importe quel rail."},"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}}</mod> <j>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."},"companion":{"nav":"Compagnon mobile","title":"Emportez Specrails avec vous","subtitle":"Specrails Companion — vos pipelines, dans votre poche","intro":"<b>Specrails Companion</b> est une application web disponible sur specrails.dev/companion-app — ouvrez-la sur votre téléphone (ou ajoutez-la à votre écran d'accueil) pour parcourir le tableau des specs, lancer et arrêter des rails, suivre les logs des jobs en direct et jeter un œil aux analytics. Aucune installation, aucun app store.","localLabel":"100 % local, comme tout le reste","localBody":"Votre téléphone se connecte directement à cet ordinateur — en pair-à-pair et chiffré (WebRTC). Pas de relais cloud, pas de compte, et votre code ne quitte jamais vos appareils.","downloadLabel":"Ouvrez-la sur votre téléphone","downloadHint":"Scannez le code avec l'appareil photo de votre téléphone, ou ouvrez specrails.dev/companion-app dans son navigateur.","open":"Ouvrir Specrails Companion","pairLabel":"L'appairage prend dix secondes","pairBody":"Sur votre téléphone, ouvrez specrails.dev/companion-app, puis ici allez dans Paramètres → Compagnon mobile → Appairer le compagnon web et suivez les étapes à l'écran."},"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}}</mod> <m>+</m> <k>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}}</mod> <j>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}}</mod> <bkey>B</bkey>.","projectsLabel":"Barre latérale des projets","projectsBody":"Basculez la barre latérale Arc de gauche avec <alt>{{alt}}</alt> <mod>{{mod}}</mod> <bkey>B</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."},"jira":{"label":"Intégration Jira","body":"Adossez n'importe quel projet à un <b>tableau Jira</b> — chaque spec devient un ticket Jira, synchronisé dans les deux sens : le statut suit le rail et un commentaire est publié à la fin d'un job. Configurez-le par projet lors de l'ajout, ou à tout moment dans 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}} 个引擎安装`,installed:`已安装`,installFailed:`安装失败`,learnMore:`了解如何充分利用 specrails:`,continueToProject:`进入项目`,jira:{title:`连接 Jira 看板`,subtitle:`可选——用 Jira 看板支撑此项目的规格。你也可以稍后在设置中完成。`,configure:`配置 Jira`,optional:`可选`}},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:`添加你的第一个项目`,jiraHint:`将每个项目连接到各自的 Jira 看板——规格在两个方向保持同步。`},s=JSON.parse(`{"productTour":"产品导览","stepCount":"第 {{current}} 步,共 {{total}} 步","goToStep":"前往第 {{step}} 步:{{label}}","stepLabel":"第 {{step}} 步","dontShowAgain":"不再显示","skipTour":"跳过导览","getStarted":"开始使用","flow":{"addSpec":"添加 Spec","dropInRail":"放入 Rail","hitPlay":"点击播放","ship":"交付","architect":"架构师","developer":"开发者","reviewer":"评审员"},"language":{"nav":"语言","title":"选择你的语言","subtitle":"Specrails 支持你的语言","intro":"选择界面使用的语言,即刻生效——包括这个导览。","note":"你随时可以在设置 → 语言中更改。"},"theme":{"nav":"主题","title":"挑选你的外观","subtitle":"内置主题,即点即用","intro":"选择 Specrails 的外观 — 主题在你点击的瞬间生效。","note":"你随时可以在设置 → 外观中更改。"},"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":"选择要运行的 Loop","modeBody":"每个 rail 都运行一个 <b>Loop</b>。可以选择内置的 Loop —— <b>Implement</b>(完整的结构化流水线)、<b>Batch</b>(一次处理多个 spec)或 <b>Ultracode</b>(Claude 自主工作,无固定流水线)—— 也可以选择你自己构建的 Loop。","profilesLabel":"Agent Profile","profilesBody":"项目级的声明式目录,决定运行哪些 Agent 以及各自使用的模型——按 rail 选择、按任务快照,并发工作互不干扰。","jobDetailLabel":"实时任务详情","jobDetailBody":"每个任务都显示工单标识头、实时计时器和持续累计的轮次 / token 数,最终成本在任务结束时确定。","isolationLabel":"多项目,相互隔离","isolationBody":"每个项目都有独立的数据库和任务队列。可以同时运行多个项目,并从左侧边栏切换——每个项目的位置都会被记住。","loopsLabel":"构建你自己的 loop","loopsBody":"<b>Loops</b> 是一个可视化构建器:串联 AI 步骤、shell 命令以及一个 <b>Loop Decider</b>,它会不断重复直到达成目标 —— 例如 验证 → 修复 → 验证,直到全部通过。发布一个 loop,即可在任意 rail 上选用它。"},"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}}</mod> <j>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),它自带服务器与运行时。"},"companion":{"nav":"移动伴侣","title":"随身携带 Specrails","subtitle":"Specrails Companion——你的流水线,尽在掌上","intro":"<b>Specrails Companion</b> 是一款网页应用,地址为 specrails.dev/companion-app——在手机上打开它(或将其添加到主屏幕),即可浏览 Spec 看板、启动或停止 rail、实时跟踪任务日志、随手查看分析数据。无需安装,无需应用商店。","localLabel":"100% 本地,一如这里的一切","localBody":"你的手机直接连接到这台电脑——点对点且加密(WebRTC)。没有云端中转、无需账号,你的代码绝不离开你的设备。","downloadLabel":"在手机上打开","downloadHint":"用手机相机扫码,或在浏览器中打开 specrails.dev/companion-app。","open":"打开 Specrails Companion","pairLabel":"配对只需十秒","pairBody":"在手机上打开 specrails.dev/companion-app,然后在这里前往设置 → 移动伴侣 → 配对网页伴侣,按照屏幕提示操作。"},"moveFast":{"nav":"高效操作","title":"以思维的速度移动","subtitle":"键盘优先,无处不在","paletteLabel":"命令面板","paletteShortcut":"<f>按下</f> <mod>{{mod}}</mod> <m>+</m> <k>K</k> <m>随时随地</m>","paletteBody":"切换项目、运行 spec 命令、跳转任意页面、查找最近任务——全部支持模糊搜索。","terminalLabel":"终端面板","terminalBody":"用 <mod>{{mod}}</mod> <j>J</j> 切换。","shortcutsLabel":"全部快捷键","shortcutsBody":"按 <q>?</q> 查看完整速查表。","chatLabel":"聊天侧边栏","chatBody":"用 <mod>{{mod}}</mod> <bkey>B</bkey> 切换右侧边栏。","projectsLabel":"项目侧边栏","projectsBody":"用 <alt>{{alt}}</alt> <mod>{{mod}}</mod> <bkey>B</bkey> 切换左侧 Arc 侧边栏。","outro":"<b>导览到此结束。</b>从左侧边栏添加一个项目,交付你的第一个 spec。你随时可以在设置中重新打开本导览。"},"jira":{"label":"Jira 集成","body":"用 <b>Jira 看板</b> 支撑任意项目——每条规格都会成为一个 Jira 事务,双向同步:状态跟随 rail,job 结束时会发布一条评论。在添加项目时按项目配置,或随时在设置中配置。"}}`),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};