@thaut/claude-ide 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (559) hide show
  1. package/bin/claude-ide.js +23 -0
  2. package/package.json +75 -4
  3. package/server/add-dirs.ts +126 -0
  4. package/server/auth.test.ts +148 -0
  5. package/server/auth.ts +235 -0
  6. package/server/bang.ts +54 -0
  7. package/server/btw-instructions.ts +19 -0
  8. package/server/btw-policy.ts +17 -0
  9. package/server/btw.ts +143 -0
  10. package/server/child-env.ts +29 -0
  11. package/server/cli-control.ts +255 -0
  12. package/server/cli-files.ts +55 -0
  13. package/server/cli-info.ts +73 -0
  14. package/server/config/account.ts +65 -0
  15. package/server/config/agents.ts +186 -0
  16. package/server/config/mcp.ts +86 -0
  17. package/server/config/memory.ts +193 -0
  18. package/server/config/paths.ts +156 -0
  19. package/server/config/plugins.ts +204 -0
  20. package/server/config/routes.ts +95 -0
  21. package/server/config/settings.ts +246 -0
  22. package/server/config.ts +46 -0
  23. package/server/db.ts +121 -0
  24. package/server/directories.test.ts +180 -0
  25. package/server/directories.ts +87 -0
  26. package/server/dist-version.ts +69 -0
  27. package/server/durable-tasks.ts +61 -0
  28. package/server/file-transfers.ts +79 -0
  29. package/server/files.test.ts +127 -0
  30. package/server/files.ts +386 -0
  31. package/server/fs-queue.ts +14 -0
  32. package/server/fsutil.ts +144 -0
  33. package/server/git.ts +86 -0
  34. package/server/goal-state.test.ts +64 -0
  35. package/server/goal-state.ts +78 -0
  36. package/server/history-pages.test.ts +619 -0
  37. package/server/history-pages.ts +513 -0
  38. package/server/http-channel-manager.ts +468 -0
  39. package/server/http-channel-pull.test.ts +314 -0
  40. package/server/http-channel-push.test.ts +364 -0
  41. package/server/http-channel-registration.test.ts +291 -0
  42. package/server/http-channel-routes.ts +73 -0
  43. package/server/http-channel-store.ts +142 -0
  44. package/server/http-channel-test-fixture.ts +103 -0
  45. package/server/ide-messages-mcp.test.ts +82 -0
  46. package/server/ide-messages-mcp.ts +47 -0
  47. package/server/idecron-mcp.ts +65 -0
  48. package/server/idecron.test.ts +79 -0
  49. package/server/idecron.ts +271 -0
  50. package/server/index.ts +336 -0
  51. package/server/live-session.test.ts +1126 -0
  52. package/server/live-session.ts +1165 -0
  53. package/server/project-routes.ts +46 -0
  54. package/server/projects.test.ts +28 -0
  55. package/server/push.ts +315 -0
  56. package/server/report-cache.ts +28 -0
  57. package/server/session-aliases.test.ts +57 -0
  58. package/server/session-aliases.ts +50 -0
  59. package/server/session-branch.ts +71 -0
  60. package/server/session-dirs.ts +189 -0
  61. package/server/session-file.test.ts +134 -0
  62. package/server/session-file.ts +113 -0
  63. package/server/session-messaging.test.ts +297 -0
  64. package/server/session-messaging.ts +165 -0
  65. package/server/sessions.ts +638 -0
  66. package/server/subagents.test.ts +43 -0
  67. package/server/subagents.ts +58 -0
  68. package/server/tool-images.test.ts +76 -0
  69. package/server/tool-images.ts +45 -0
  70. package/server/turn-changes.ts +308 -0
  71. package/server/worktree-git.ts +87 -0
  72. package/server/worktrees.ts +138 -0
  73. package/server/ws.test.ts +195 -0
  74. package/server/ws.ts +197 -0
  75. package/shared/agent-model.ts +15 -0
  76. package/shared/agent-tasks.ts +12 -0
  77. package/shared/config.ts +175 -0
  78. package/shared/directories.ts +12 -0
  79. package/shared/files.ts +51 -0
  80. package/shared/http-channels.ts +63 -0
  81. package/shared/message-window.ts +189 -0
  82. package/shared/project.ts +77 -0
  83. package/shared/protocol.ts +203 -0
  84. package/shared/task-types.ts +4 -0
  85. package/shared/todos.ts +40 -0
  86. package/shared/write-policy.ts +9 -0
  87. package/web/dist/assets/AgentView-wrTKgcJ3.js +1 -0
  88. package/web/dist/assets/AnnotationSelection-BZmNmwVW.js +7 -0
  89. package/web/dist/assets/ChangesView-G1WTzh4q.js +2 -0
  90. package/web/dist/assets/FilesView-DPgAbYt_.js +6 -0
  91. package/web/dist/assets/Form-BKTwiYyw.js +1 -0
  92. package/web/dist/assets/HomePage-Dq2apjBe.js +1 -0
  93. package/web/dist/assets/Markdown-IwP-xF29.js +67 -0
  94. package/web/dist/assets/MessageList-DD9GypSy.js +15 -0
  95. package/web/dist/assets/Modal-g2rv8I_n.js +1 -0
  96. package/web/dist/assets/NotificationSettings-DpuLO_Bv.js +1 -0
  97. package/web/dist/assets/OverviewPage-Dx6miabE.js +1 -0
  98. package/web/dist/assets/ProjectHome-CousyTLL.js +1 -0
  99. package/web/dist/assets/SessionView-CPVL7_HO.js +2 -0
  100. package/web/dist/assets/SettingsPage-D_oYSnW2.js +7 -0
  101. package/web/dist/assets/WorktreesView-C7e0HV__.js +1 -0
  102. package/web/dist/assets/abap-CLvhMVsD.js +1 -0
  103. package/web/dist/assets/actionscript-3-Cs6JJXT5.js +1 -0
  104. package/web/dist/assets/ada-X3Y2mlq2.js +1 -0
  105. package/web/dist/assets/ahk-DwADkxyd.js +1 -0
  106. package/web/dist/assets/ahk2-_6rzW9BS.js +1 -0
  107. package/web/dist/assets/andromeeda-vGVdxbeo.js +1 -0
  108. package/web/dist/assets/angular-html-Cw29lun8.js +1 -0
  109. package/web/dist/assets/angular-ts-BXz-O3SJ.js +1 -0
  110. package/web/dist/assets/apache-U0d_L8uA.js +1 -0
  111. package/web/dist/assets/apex-KFGFyKwG.js +1 -0
  112. package/web/dist/assets/apl-xBchdRhy.js +1 -0
  113. package/web/dist/assets/applescript-CCn79oCD.js +1 -0
  114. package/web/dist/assets/ara-4CJ0cIlV.js +1 -0
  115. package/web/dist/assets/asciidoc-SCjQUq34.js +1 -0
  116. package/web/dist/assets/asm-Cmm7eHzH.js +1 -0
  117. package/web/dist/assets/astro-1q6DGuN3.js +1 -0
  118. package/web/dist/assets/aurora-x-CDeNXAV0.js +1 -0
  119. package/web/dist/assets/awk-BWXHIvNe.js +1 -0
  120. package/web/dist/assets/ayu-dark-DluEY0Gj.js +1 -0
  121. package/web/dist/assets/ayu-light-C3h-C4tm.js +1 -0
  122. package/web/dist/assets/ayu-mirage-Bqwy1Gya.js +1 -0
  123. package/web/dist/assets/ballerina-B7ZEbQpA.js +1 -0
  124. package/web/dist/assets/bat-qdxAdBWQ.js +1 -0
  125. package/web/dist/assets/beancount-C2IN4Vk8.js +1 -0
  126. package/web/dist/assets/berry-DKpUyyne.js +1 -0
  127. package/web/dist/assets/bibtex-Ci_nEsc7.js +1 -0
  128. package/web/dist/assets/bicep-CUHmPFLl.js +1 -0
  129. package/web/dist/assets/bird2-CYIUgYqB.js +1 -0
  130. package/web/dist/assets/blade-Cqdv4oZN.js +1 -0
  131. package/web/dist/assets/bsl-CVED6lJ1.js +1 -0
  132. package/web/dist/assets/c-D9gIxSfx.js +1 -0
  133. package/web/dist/assets/c3-D0apG41V.js +1 -0
  134. package/web/dist/assets/cadence-CQ2zXKGN.js +1 -0
  135. package/web/dist/assets/cairo-DRAZz75c.js +1 -0
  136. package/web/dist/assets/catppuccin-frappe-C9Q5zVZY.js +1 -0
  137. package/web/dist/assets/catppuccin-latte-CtsyrtPq.js +1 -0
  138. package/web/dist/assets/catppuccin-macchiato-R8nAf1vR.js +1 -0
  139. package/web/dist/assets/catppuccin-mocha-DjuaAJKi.js +1 -0
  140. package/web/dist/assets/chapel-CuseGurG.js +1 -0
  141. package/web/dist/assets/clarity-CtfBBspg.js +1 -0
  142. package/web/dist/assets/clojure-DqKBuwfJ.js +1 -0
  143. package/web/dist/assets/cmake-Bj61d0ZC.js +1 -0
  144. package/web/dist/assets/cobol-Bdpj3Qoh.js +1 -0
  145. package/web/dist/assets/codeowners-C8r90Shi.js +1 -0
  146. package/web/dist/assets/codeql-oeQT6MSM.js +1 -0
  147. package/web/dist/assets/coffee-Sk8pHFjs.js +1 -0
  148. package/web/dist/assets/common-lisp-Cv5bFMCO.js +1 -0
  149. package/web/dist/assets/coq-CGaSfhwR.js +1 -0
  150. package/web/dist/assets/core-BxI4V4-T.js +12 -0
  151. package/web/dist/assets/cpp-BQfBYKx3.js +1 -0
  152. package/web/dist/assets/crystal-B3j7DoOZ.js +1 -0
  153. package/web/dist/assets/csharp-dmMxLVLW.js +1 -0
  154. package/web/dist/assets/css-DpFbYmRh.js +1 -0
  155. package/web/dist/assets/csv-Dx-8-gkx.js +1 -0
  156. package/web/dist/assets/cue-CE9AQfxI.js +1 -0
  157. package/web/dist/assets/cypher-ClKdZ_lG.js +1 -0
  158. package/web/dist/assets/d-qD-0Kul2.js +1 -0
  159. package/web/dist/assets/dark-plus-Cs2F2srj.js +1 -0
  160. package/web/dist/assets/dart-CHZY9Xhz.js +1 -0
  161. package/web/dist/assets/dax-BkyTk9wS.js +1 -0
  162. package/web/dist/assets/desktop-Dlh5hvp9.js +1 -0
  163. package/web/dist/assets/diff-woXpYk--.js +1 -0
  164. package/web/dist/assets/docker-IyjqRm3v.js +1 -0
  165. package/web/dist/assets/dotenv-CuH5my32.js +1 -0
  166. package/web/dist/assets/dracula-BHWKrbxM.js +1 -0
  167. package/web/dist/assets/dracula-soft-5eyTD99u.js +1 -0
  168. package/web/dist/assets/dream-maker-DW3nJb8Q.js +1 -0
  169. package/web/dist/assets/edge-DXQWmXTB.js +1 -0
  170. package/web/dist/assets/elixir-CrDIY2Vo.js +1 -0
  171. package/web/dist/assets/elm-BslFEg8K.js +1 -0
  172. package/web/dist/assets/emacs-lisp-DR2vtWaj.js +1 -0
  173. package/web/dist/assets/engine-javascript-DJg3-Vu2.js +141 -0
  174. package/web/dist/assets/erb-CUYhg0Ws.js +1 -0
  175. package/web/dist/assets/erlang-BXdgHVfi.js +1 -0
  176. package/web/dist/assets/everforest-dark-sB-x3p7T.js +1 -0
  177. package/web/dist/assets/everforest-light-Df2xbC6M.js +1 -0
  178. package/web/dist/assets/fennel-DQxkIbk2.js +1 -0
  179. package/web/dist/assets/fish-BJitypiv.js +1 -0
  180. package/web/dist/assets/fluent-C03EYrpw.js +1 -0
  181. package/web/dist/assets/format-DrBC7w0A.js +1 -0
  182. package/web/dist/assets/fortran-fixed-form-D6mN0kjy.js +1 -0
  183. package/web/dist/assets/fortran-free-form-CYNrtFtB.js +1 -0
  184. package/web/dist/assets/fsharp-CwoEF39o.js +1 -0
  185. package/web/dist/assets/gdresource-CZkFGo3B.js +1 -0
  186. package/web/dist/assets/gdscript-DYvRD3hg.js +1 -0
  187. package/web/dist/assets/gdshader-CBce3t8t.js +1 -0
  188. package/web/dist/assets/genie-CV2tkWYe.js +1 -0
  189. package/web/dist/assets/gherkin-DExj1W_8.js +1 -0
  190. package/web/dist/assets/git-commit-dUGrvm6Q.js +1 -0
  191. package/web/dist/assets/git-rebase-4zCRqF28.js +1 -0
  192. package/web/dist/assets/github-dark-C-LZuMrd.js +1 -0
  193. package/web/dist/assets/github-dark-default-DXG-b-1a.js +1 -0
  194. package/web/dist/assets/github-dark-dimmed-Bx1FflLF.js +1 -0
  195. package/web/dist/assets/github-dark-high-contrast-B_tTalzw.js +1 -0
  196. package/web/dist/assets/github-light-EUqPIrTm.js +1 -0
  197. package/web/dist/assets/github-light-default-BXViO-2h.js +1 -0
  198. package/web/dist/assets/github-light-high-contrast-B68TUdTA.js +1 -0
  199. package/web/dist/assets/gleam-CSRkHgEL.js +1 -0
  200. package/web/dist/assets/glimmer-js-7adTRvH4.js +1 -0
  201. package/web/dist/assets/glimmer-ts-IdSskDYw.js +1 -0
  202. package/web/dist/assets/glsl-Qzy53KDt.js +1 -0
  203. package/web/dist/assets/gn-CAXYAgV-.js +1 -0
  204. package/web/dist/assets/gnuplot-7GGW24-e.js +1 -0
  205. package/web/dist/assets/go-rLFTqkRN.js +1 -0
  206. package/web/dist/assets/graphql-CV_puxbB.js +1 -0
  207. package/web/dist/assets/groovy-CacY0gHj.js +1 -0
  208. package/web/dist/assets/gruvbox-dark-hard-C820rvS2.js +1 -0
  209. package/web/dist/assets/gruvbox-dark-medium-BPjhmG05.js +1 -0
  210. package/web/dist/assets/gruvbox-dark-soft-MrdJrrXF.js +1 -0
  211. package/web/dist/assets/gruvbox-light-hard-BC_s9l72.js +1 -0
  212. package/web/dist/assets/gruvbox-light-medium-BAWPOn9u.js +1 -0
  213. package/web/dist/assets/gruvbox-light-soft-BSMLrYjP.js +1 -0
  214. package/web/dist/assets/hack-C5GPjiLV.js +1 -0
  215. package/web/dist/assets/haml-BQ5YR1DQ.js +1 -0
  216. package/web/dist/assets/handlebars-DnhRK9A1.js +1 -0
  217. package/web/dist/assets/haskell-D8IpX4py.js +1 -0
  218. package/web/dist/assets/haxe-C8oCnwJJ.js +1 -0
  219. package/web/dist/assets/hcl-Dh228itO.js +1 -0
  220. package/web/dist/assets/highlight.worker-CY-ZeDAl.js +1 -0
  221. package/web/dist/assets/hjson-CxZEssPk.js +1 -0
  222. package/web/dist/assets/hlsl-Cvrh5tZx.js +1 -0
  223. package/web/dist/assets/horizon-CE9ld1lL.js +1 -0
  224. package/web/dist/assets/horizon-bright-DSNQnXHK.js +1 -0
  225. package/web/dist/assets/houston-CsvMBhTu.js +1 -0
  226. package/web/dist/assets/html-CmHiEKV9.js +1 -0
  227. package/web/dist/assets/html-derivative-BXE-rYIK.js +1 -0
  228. package/web/dist/assets/http-DPjjqtcL.js +1 -0
  229. package/web/dist/assets/hurl-AMBpSloO.js +1 -0
  230. package/web/dist/assets/hxml-D7Y24wKF.js +1 -0
  231. package/web/dist/assets/hy-CZbG8q4J.js +1 -0
  232. package/web/dist/assets/imba-DsUTQ-LC.js +1 -0
  233. package/web/dist/assets/index-DNPnl4sh.css +2 -0
  234. package/web/dist/assets/index-DQh72lEx.js +14 -0
  235. package/web/dist/assets/ini-B5eOa1yu.js +1 -0
  236. package/web/dist/assets/java-CEM7Tdw_.js +1 -0
  237. package/web/dist/assets/javascript-CU3PLowd.js +1 -0
  238. package/web/dist/assets/jinja-fR0x_9Xy.js +1 -0
  239. package/web/dist/assets/jison-BoKsxs5M.js +1 -0
  240. package/web/dist/assets/json-BM2FWsRB.js +1 -0
  241. package/web/dist/assets/json5-BR5RXkoi.js +1 -0
  242. package/web/dist/assets/jsonc-CYpm1nAK.js +1 -0
  243. package/web/dist/assets/jsonl-CmCQp5Yx.js +1 -0
  244. package/web/dist/assets/jsonnet-CJTPZ8u_.js +1 -0
  245. package/web/dist/assets/jssm-DXw9l8Rf.js +1 -0
  246. package/web/dist/assets/jsx-B5fTecQP.js +1 -0
  247. package/web/dist/assets/julia-DGyDG39_.js +1 -0
  248. package/web/dist/assets/just-B-RyLcSR.js +1 -0
  249. package/web/dist/assets/kanagawa-dragon-Bozd7klA.js +1 -0
  250. package/web/dist/assets/kanagawa-lotus-BmuOG9ZW.js +1 -0
  251. package/web/dist/assets/kanagawa-wave-BML5mF2J.js +1 -0
  252. package/web/dist/assets/kdl-CsD5j6eV.js +1 -0
  253. package/web/dist/assets/kotlin-DhhofPvG.js +1 -0
  254. package/web/dist/assets/kusto-C7mF5XQf.js +1 -0
  255. package/web/dist/assets/langs-CciPKqaF.js +1 -0
  256. package/web/dist/assets/laserwave-C_8bwKvT.js +1 -0
  257. package/web/dist/assets/latex-CV1pQelm.js +1 -0
  258. package/web/dist/assets/lean-CewbzKMR.js +1 -0
  259. package/web/dist/assets/less-DVTAwKKz.js +1 -0
  260. package/web/dist/assets/lib-DlcVMUqT.js +1 -0
  261. package/web/dist/assets/light-plus-DVQuIRkW.js +1 -0
  262. package/web/dist/assets/liquid-9p05RSzQ.js +1 -0
  263. package/web/dist/assets/llvm-DqHOMS-s.js +1 -0
  264. package/web/dist/assets/log-BNLmms1o.js +1 -0
  265. package/web/dist/assets/logo-Cluzi2Zq.js +1 -0
  266. package/web/dist/assets/lua-CIPVh0S-.js +1 -0
  267. package/web/dist/assets/luau-VGWVLoqX.js +1 -0
  268. package/web/dist/assets/make-Dixweg8N.js +1 -0
  269. package/web/dist/assets/markdown-BYOwaDjH.js +1 -0
  270. package/web/dist/assets/marko-h2h6YUMS.js +1 -0
  271. package/web/dist/assets/material-theme-Bm3Qr25_.js +1 -0
  272. package/web/dist/assets/material-theme-darker-2IIEA8gg.js +1 -0
  273. package/web/dist/assets/material-theme-lighter-uhdI0v04.js +1 -0
  274. package/web/dist/assets/material-theme-ocean-CHQ94UKr.js +1 -0
  275. package/web/dist/assets/material-theme-palenight-B5W6OYN7.js +1 -0
  276. package/web/dist/assets/matlab-D7qyCx1q.js +1 -0
  277. package/web/dist/assets/mdc-yAyZMdoC.js +1 -0
  278. package/web/dist/assets/mdx-DQZ5AkYe.js +1 -0
  279. package/web/dist/assets/mermaid-BxpfTIzt.js +1 -0
  280. package/web/dist/assets/message-font-size-DoaZfwkT.js +1 -0
  281. package/web/dist/assets/min-dark-BSWPekZh.js +1 -0
  282. package/web/dist/assets/min-light-DDpmG2fV.js +1 -0
  283. package/web/dist/assets/mipsasm-BMqwQI7S.js +1 -0
  284. package/web/dist/assets/mojo-fg40_ntQ.js +1 -0
  285. package/web/dist/assets/monokai-BscAjiQZ.js +1 -0
  286. package/web/dist/assets/moonbit-D9W784E_.js +1 -0
  287. package/web/dist/assets/move-BYnGhZoM.js +1 -0
  288. package/web/dist/assets/narrat-_X_XdTYD.js +1 -0
  289. package/web/dist/assets/nextflow-BoTnSBQ_.js +1 -0
  290. package/web/dist/assets/nextflow-groovy-D7IRt6Pp.js +1 -0
  291. package/web/dist/assets/nginx-jWINucNT.js +1 -0
  292. package/web/dist/assets/night-owl-DhmEMT88.js +1 -0
  293. package/web/dist/assets/night-owl-light-eJ-hLW7d.js +1 -0
  294. package/web/dist/assets/nim-Dtt9DZ0t.js +1 -0
  295. package/web/dist/assets/nix-Cl_7024t.js +1 -0
  296. package/web/dist/assets/nord-Cb4Vim4T.js +1 -0
  297. package/web/dist/assets/nsis-CjNLYCLg.js +1 -0
  298. package/web/dist/assets/nushell--0fT3PI1.js +1 -0
  299. package/web/dist/assets/objective-c-D1A_Heim.js +1 -0
  300. package/web/dist/assets/objective-cpp-BsSzOQcm.js +1 -0
  301. package/web/dist/assets/ocaml-O90oeIOV.js +1 -0
  302. package/web/dist/assets/odin-B1RWQWA5.js +1 -0
  303. package/web/dist/assets/one-dark-pro-C6YyR8OD.js +1 -0
  304. package/web/dist/assets/one-light-D7Lr4KcI.js +1 -0
  305. package/web/dist/assets/openscad-BUDT5pXO.js +1 -0
  306. package/web/dist/assets/org-ClD5huOa.js +1 -0
  307. package/web/dist/assets/pascal-4ZHwLPI5.js +1 -0
  308. package/web/dist/assets/perl-BFegxyeJ.js +1 -0
  309. package/web/dist/assets/php-B-qOA3Y4.js +1 -0
  310. package/web/dist/assets/pkl-ot-7Btpt.js +1 -0
  311. package/web/dist/assets/plastic-DQwYfKfQ.js +1 -0
  312. package/web/dist/assets/plsql-DGHpHOYJ.js +1 -0
  313. package/web/dist/assets/po-BiJDBrnU.js +1 -0
  314. package/web/dist/assets/poimandres-DRFjx7u4.js +1 -0
  315. package/web/dist/assets/polar-C7UOKdEL.js +1 -0
  316. package/web/dist/assets/postcss-BXeXVLqQ.js +1 -0
  317. package/web/dist/assets/powerquery-DNMTfnFr.js +1 -0
  318. package/web/dist/assets/powershell-QtSnmXcu.js +1 -0
  319. package/web/dist/assets/prisma-DMgNhnYS.js +1 -0
  320. package/web/dist/assets/prolog-iXnhIJG7.js +1 -0
  321. package/web/dist/assets/proto-DB4EqR-F.js +1 -0
  322. package/web/dist/assets/pug-Cq0NBPu-.js +1 -0
  323. package/web/dist/assets/puppet-CDv2pdJW.js +1 -0
  324. package/web/dist/assets/purescript-9MfHhQsQ.js +1 -0
  325. package/web/dist/assets/python-gzcpVVnB.js +1 -0
  326. package/web/dist/assets/qml-CYUsa87k.js +1 -0
  327. package/web/dist/assets/qmldir-DCQb3MpD.js +1 -0
  328. package/web/dist/assets/qss-Fe1Jh2GI.js +1 -0
  329. package/web/dist/assets/r-4xJhgbOf.js +1 -0
  330. package/web/dist/assets/racket-DcIDlBhZ.js +1 -0
  331. package/web/dist/assets/raku-B3gFvitq.js +1 -0
  332. package/web/dist/assets/razor-BlHaOHx8.js +1 -0
  333. package/web/dist/assets/rbs-C0MpOrj4.js +1 -0
  334. package/web/dist/assets/react-B4UGpcWC.js +1 -0
  335. package/web/dist/assets/red-CYlAq2b0.js +1 -0
  336. package/web/dist/assets/reg-CRGYupPL.js +1 -0
  337. package/web/dist/assets/regexp-BUSxjv2o.js +1 -0
  338. package/web/dist/assets/rel-BtDbiS_P.js +1 -0
  339. package/web/dist/assets/riscv-Ckw8ddFX.js +1 -0
  340. package/web/dist/assets/ron-VUp2lXgN.js +1 -0
  341. package/web/dist/assets/rose-pine-aMsaMD1D.js +1 -0
  342. package/web/dist/assets/rose-pine-dawn-8PwUyIlP.js +1 -0
  343. package/web/dist/assets/rose-pine-moon-DO-qXg-I.js +1 -0
  344. package/web/dist/assets/rosmsg-CAekHB0j.js +1 -0
  345. package/web/dist/assets/rst-zjfguEh7.js +1 -0
  346. package/web/dist/assets/ruby-4oR9waBK.js +1 -0
  347. package/web/dist/assets/rust-DpiIf5JO.js +1 -0
  348. package/web/dist/assets/sas-Do4V_2i9.js +1 -0
  349. package/web/dist/assets/sass-DXrisJhu.js +1 -0
  350. package/web/dist/assets/scala-BiFt_7mu.js +1 -0
  351. package/web/dist/assets/scheme-DQCgrYNe.js +1 -0
  352. package/web/dist/assets/scss-CW6JPtag.js +1 -0
  353. package/web/dist/assets/sdbl-bTVj8UrX.js +1 -0
  354. package/web/dist/assets/shaderlab-C4rnI7x0.js +1 -0
  355. package/web/dist/assets/shellscript-zBmOMFJh.js +1 -0
  356. package/web/dist/assets/shellsession-DxGUTWaf.js +1 -0
  357. package/web/dist/assets/slack-dark-DnToyrRv.js +1 -0
  358. package/web/dist/assets/slack-ochin-B2OO5cIa.js +1 -0
  359. package/web/dist/assets/smalltalk-BHpQb5nM.js +1 -0
  360. package/web/dist/assets/smithy-Dgaz7aur.js +1 -0
  361. package/web/dist/assets/snazzy-light-4G7pJPwS.js +1 -0
  362. package/web/dist/assets/solarized-dark-b97czJOk.js +1 -0
  363. package/web/dist/assets/solarized-light-DFPxpIYQ.js +1 -0
  364. package/web/dist/assets/solidity-Bj7E1mRn.js +1 -0
  365. package/web/dist/assets/soy-DVtw20Yn.js +1 -0
  366. package/web/dist/assets/sparql-C0ia5K60.js +1 -0
  367. package/web/dist/assets/splunk-BC2Px7Mm.js +1 -0
  368. package/web/dist/assets/sql-DGCM-jag.js +1 -0
  369. package/web/dist/assets/ssh-config-BgfXC-Er.js +1 -0
  370. package/web/dist/assets/stata-DfuMOXna.js +1 -0
  371. package/web/dist/assets/stylus-B6D30XZt.js +1 -0
  372. package/web/dist/assets/surrealql-CBoRWxfR.js +1 -0
  373. package/web/dist/assets/svelte-g_uCUem5.js +1 -0
  374. package/web/dist/assets/swift-CyEgAFGc.js +1 -0
  375. package/web/dist/assets/synthwave-84-nFMaYfgc.js +1 -0
  376. package/web/dist/assets/system-verilog-Dh5ihWbf.js +1 -0
  377. package/web/dist/assets/systemd-BxMlprV5.js +1 -0
  378. package/web/dist/assets/talonscript-CohzipZa.js +1 -0
  379. package/web/dist/assets/tasl-DMoTqEGO.js +1 -0
  380. package/web/dist/assets/tcl-CZd0xW_V.js +1 -0
  381. package/web/dist/assets/templ-N5C1hJ4Y.js +1 -0
  382. package/web/dist/assets/terraform-DswuEJGm.js +1 -0
  383. package/web/dist/assets/tex-mx6xDwuK.js +1 -0
  384. package/web/dist/assets/themes-CNElGaXw.js +1 -0
  385. package/web/dist/assets/tokyo-night-oM2G3aXe.js +1 -0
  386. package/web/dist/assets/toml-CcmNWLt0.js +1 -0
  387. package/web/dist/assets/ts-tags-C-j71FRb.js +1 -0
  388. package/web/dist/assets/tsv-sltzmVWM.js +1 -0
  389. package/web/dist/assets/tsx-z04y7qR9.js +1 -0
  390. package/web/dist/assets/turtle-ByJddavk.js +1 -0
  391. package/web/dist/assets/twig-Bz57G_nl.js +1 -0
  392. package/web/dist/assets/typescript-RMqVTmzR.js +1 -0
  393. package/web/dist/assets/typespec-BGhR2SqG.js +1 -0
  394. package/web/dist/assets/typst-BgkqA2Pg.js +1 -0
  395. package/web/dist/assets/v-DBj4K9d_.js +1 -0
  396. package/web/dist/assets/vala-zf12oZj6.js +1 -0
  397. package/web/dist/assets/vb-DOwzaHZ0.js +1 -0
  398. package/web/dist/assets/verilog-B2gwz-sJ.js +1 -0
  399. package/web/dist/assets/vesper-DdrHHSXu.js +1 -0
  400. package/web/dist/assets/vhdl-BroJfC0k.js +1 -0
  401. package/web/dist/assets/viml-DvXPmvsu.js +1 -0
  402. package/web/dist/assets/vitesse-black-fwtXNY1n.js +1 -0
  403. package/web/dist/assets/vitesse-dark-BZCL-v6S.js +1 -0
  404. package/web/dist/assets/vitesse-light-VbXTXTou.js +1 -0
  405. package/web/dist/assets/vue-CQgvQytb.js +1 -0
  406. package/web/dist/assets/vue-html-Dhl6fh9l.js +1 -0
  407. package/web/dist/assets/vue-vine-Dw_uU59K.js +1 -0
  408. package/web/dist/assets/vyper-CgoNMtux.js +1 -0
  409. package/web/dist/assets/wasm-ByWQv1Qj.js +1 -0
  410. package/web/dist/assets/wenyan-C8pVoKbM.js +1 -0
  411. package/web/dist/assets/wgsl-BsKzXJz4.js +1 -0
  412. package/web/dist/assets/wikitext-ClFFjSW2.js +1 -0
  413. package/web/dist/assets/wit-DdvCle-K.js +1 -0
  414. package/web/dist/assets/wolfram-DLL8P-h_.js +1 -0
  415. package/web/dist/assets/xml-B49klYQ3.js +1 -0
  416. package/web/dist/assets/xsl-D7tnD3qq.js +1 -0
  417. package/web/dist/assets/yaml-DNQ5_xkL.js +1 -0
  418. package/web/dist/assets/zenscript-BnlCZFoB.js +1 -0
  419. package/web/dist/assets/zig-CMLA9XwU.js +1 -0
  420. package/web/dist/icons/apple-touch-icon.png +0 -0
  421. package/web/dist/icons/badge-96.png +0 -0
  422. package/web/dist/icons/icon-192.png +0 -0
  423. package/web/dist/icons/icon-512.png +0 -0
  424. package/web/dist/icons/icon.svg +4 -0
  425. package/web/dist/icons/maskable-192.png +0 -0
  426. package/web/dist/icons/maskable-512.png +0 -0
  427. package/web/dist/index.html +30 -0
  428. package/web/dist/manifest.webmanifest +20 -0
  429. package/web/dist/sw.js +176 -0
  430. package/web/dist/version.json +1 -0
  431. package/web/src/App.tsx +97 -0
  432. package/web/src/agent-history-flow.test.ts +191 -0
  433. package/web/src/agent-history-flow.ts +58 -0
  434. package/web/src/agent-owners.ts +30 -0
  435. package/web/src/annotation-selection.test.ts +36 -0
  436. package/web/src/annotation-selection.ts +123 -0
  437. package/web/src/annotations.test.ts +279 -0
  438. package/web/src/annotations.ts +191 -0
  439. package/web/src/api.ts +27 -0
  440. package/web/src/auth-events.ts +11 -0
  441. package/web/src/auth-lifecycle.test.ts +105 -0
  442. package/web/src/clipboard.ts +32 -0
  443. package/web/src/components/ActivityNotifier.tsx +22 -0
  444. package/web/src/components/AnnotationEditor.tsx +135 -0
  445. package/web/src/components/AnnotationSelection.tsx +122 -0
  446. package/web/src/components/Automation.tsx +390 -0
  447. package/web/src/components/CodeView.tsx +121 -0
  448. package/web/src/components/Composer.tsx +552 -0
  449. package/web/src/components/ComposerAnnotations.tsx +45 -0
  450. package/web/src/components/Confirmation.tsx +91 -0
  451. package/web/src/components/CopyButton.tsx +23 -0
  452. package/web/src/components/DiffView.tsx +94 -0
  453. package/web/src/components/DirectoryPicker.tsx +230 -0
  454. package/web/src/components/FileCopyMenu.tsx +58 -0
  455. package/web/src/components/FileEntryActions.tsx +95 -0
  456. package/web/src/components/ImagePreview.tsx +68 -0
  457. package/web/src/components/Items.tsx +608 -0
  458. package/web/src/components/Markdown.tsx +73 -0
  459. package/web/src/components/MessageList.tsx +458 -0
  460. package/web/src/components/Modal.tsx +72 -0
  461. package/web/src/components/NotificationEntry.tsx +31 -0
  462. package/web/src/components/NotificationSettings.tsx +226 -0
  463. package/web/src/components/NotificationToasts.tsx +59 -0
  464. package/web/src/components/OpenTabs.tsx +112 -0
  465. package/web/src/components/Pending.tsx +175 -0
  466. package/web/src/components/ProjectExtras.tsx +299 -0
  467. package/web/src/components/ProjectNav.tsx +47 -0
  468. package/web/src/components/SessionActions.tsx +271 -0
  469. package/web/src/components/SessionChannels.tsx +288 -0
  470. package/web/src/components/SessionExtras.tsx +263 -0
  471. package/web/src/components/SettingsLink.tsx +21 -0
  472. package/web/src/components/Shell.tsx +320 -0
  473. package/web/src/components/SvgPreview.tsx +18 -0
  474. package/web/src/components/TodoPanel.tsx +37 -0
  475. package/web/src/components/VersionNotice.tsx +40 -0
  476. package/web/src/components/icons.tsx +43 -0
  477. package/web/src/diff.ts +62 -0
  478. package/web/src/drafts.test.ts +80 -0
  479. package/web/src/drafts.ts +64 -0
  480. package/web/src/format.ts +5 -0
  481. package/web/src/highlight.worker.ts +49 -0
  482. package/web/src/hooks.ts +59 -0
  483. package/web/src/item-view-state.test.ts +51 -0
  484. package/web/src/item-view-state.ts +43 -0
  485. package/web/src/live-history-flow.test.ts +77 -0
  486. package/web/src/live-merge.test.ts +64 -0
  487. package/web/src/live-merge.ts +50 -0
  488. package/web/src/live-message-hydration.test.ts +253 -0
  489. package/web/src/live.ts +404 -0
  490. package/web/src/main.tsx +27 -0
  491. package/web/src/markdown-assets.test.ts +70 -0
  492. package/web/src/markdown-assets.ts +78 -0
  493. package/web/src/markdown-html.test.ts +84 -0
  494. package/web/src/markdown-html.ts +60 -0
  495. package/web/src/markdown-svg.test.ts +37 -0
  496. package/web/src/markdown-svg.ts +42 -0
  497. package/web/src/markdown-tables.test.ts +34 -0
  498. package/web/src/markdown-tables.ts +17 -0
  499. package/web/src/message-bodies.ts +117 -0
  500. package/web/src/message-cache.test.ts +208 -0
  501. package/web/src/message-cache.ts +158 -0
  502. package/web/src/message-font-size.test.ts +41 -0
  503. package/web/src/message-font-size.ts +57 -0
  504. package/web/src/message-time.test.ts +32 -0
  505. package/web/src/message-time.ts +26 -0
  506. package/web/src/notify.ts +132 -0
  507. package/web/src/open-tabs.test.ts +69 -0
  508. package/web/src/open-tabs.ts +110 -0
  509. package/web/src/pages/AgentView.tsx +138 -0
  510. package/web/src/pages/ChangesView.tsx +193 -0
  511. package/web/src/pages/FilesView.tsx +406 -0
  512. package/web/src/pages/HomePage.tsx +96 -0
  513. package/web/src/pages/LoginPage.tsx +56 -0
  514. package/web/src/pages/OverviewPage.tsx +124 -0
  515. package/web/src/pages/ProjectHome.tsx +136 -0
  516. package/web/src/pages/SessionView.tsx +238 -0
  517. package/web/src/pages/WorktreesView.tsx +197 -0
  518. package/web/src/pages/settings/AccountPage.tsx +149 -0
  519. package/web/src/pages/settings/AgentsPage.tsx +182 -0
  520. package/web/src/pages/settings/ConfigPage.tsx +181 -0
  521. package/web/src/pages/settings/GeneralPage.tsx +27 -0
  522. package/web/src/pages/settings/HooksPage.tsx +244 -0
  523. package/web/src/pages/settings/McpPage.tsx +310 -0
  524. package/web/src/pages/settings/MemoryPage.tsx +309 -0
  525. package/web/src/pages/settings/PermissionsPage.tsx +160 -0
  526. package/web/src/pages/settings/PluginsPage.tsx +251 -0
  527. package/web/src/pages/settings/SettingsPage.tsx +141 -0
  528. package/web/src/pages/settings/SkillsPage.tsx +142 -0
  529. package/web/src/pages/settings/ui.tsx +165 -0
  530. package/web/src/preference-document.ts +133 -0
  531. package/web/src/project-actions.ts +18 -0
  532. package/web/src/project-files-state.test.ts +49 -0
  533. package/web/src/project-files-state.ts +64 -0
  534. package/web/src/project-images.ts +13 -0
  535. package/web/src/pwa.ts +33 -0
  536. package/web/src/queryClient.ts +5 -0
  537. package/web/src/reasoning-preference.test.ts +39 -0
  538. package/web/src/reasoning-preference.ts +42 -0
  539. package/web/src/session-confirmations.ts +36 -0
  540. package/web/src/stream-replay.test.ts +163 -0
  541. package/web/src/styles.css +231 -0
  542. package/web/src/tool-result-body.test.ts +115 -0
  543. package/web/src/transcript.test.ts +186 -0
  544. package/web/src/transcript.ts +583 -0
  545. package/web/src/turns.test.ts +338 -0
  546. package/web/src/turns.ts +178 -0
  547. package/web/src/ui/Button.tsx +60 -0
  548. package/web/src/ui/Controls.tsx +227 -0
  549. package/web/src/ui/Form.tsx +203 -0
  550. package/web/src/ui/MenuPopover.tsx +144 -0
  551. package/web/src/ui/Popover.tsx +147 -0
  552. package/web/src/ui/ResizablePane.tsx +110 -0
  553. package/web/src/ui/Select.tsx +150 -0
  554. package/web/src/ui/icons.tsx +270 -0
  555. package/web/src/unsaved.tsx +99 -0
  556. package/web/src/user-text.test.ts +60 -0
  557. package/web/src/user-text.ts +35 -0
  558. package/web/src/uuid.ts +12 -0
  559. package/README.md +0 -3
@@ -0,0 +1,7 @@
1
+ import{$ as e,A as t,D as n,J as r,K as i,N as a,O as o,U as s,W as c,X as l,Y as u,Z as d,_ as f,a as p,at as m,b as h,c as g,ct as _,d as v,et as y,f as b,g as x,ht as S,i as C,it as w,k as ee,l as te,lt as T,m as ne,mt as re,n as E,nt as ie,p as ae,q as D,r as O,s as k,t as A,u as j,ut as M,vt as oe,z as N}from"./Form-BKTwiYyw.js";import{b as se,m as ce,u as le,v as ue}from"./Modal-g2rv8I_n.js";import{I as de,a as P,c as F,f as I,g as fe,m as pe,n as me,s as he,u as ge}from"./lib-DlcVMUqT.js";import{D as L,_ as _e,n as R,r as z,t as ve}from"./index-DQh72lEx.js";import{t as ye}from"./Markdown-IwP-xF29.js";import{a as be,n as xe,o as Se,r as Ce,t as we}from"./message-font-size-DoaZfwkT.js";import{t as B}from"./format-DrBC7w0A.js";var V=oe(S(),1),H={user:`用户`,project:`项目(共享)`,local:`项目(本地)`},U=[`allow`,`deny`,`ask`,`additionalDirectories`],W=re();function G(){let[e]=P();return e.get(`p`)||void 0}function K(e,t,n={}){let r=new URLSearchParams({...t?{project:t}:{},...n}).toString();return`/api/config/${e}${r?`?${r}`:``}`}function q(e,t,n={}){return fe({queryKey:[`cfg`,e,t??``,n.params??{}],queryFn:()=>M(K(e,t,n.params)),enabled:n.enabled??!0,staleTime:5e3})}function J(e,t,n){let r=de();return se({mutationFn:e,onSuccess:(e,i)=>{for(let e of t)r.invalidateQueries({queryKey:[`cfg`,e]});n?.(e,i)}})}var Te=e=>e instanceof T||e instanceof Error?e.message:e?String(e):``;function Y({error:e}){return e?(0,W.jsxs)(`p`,{role:`alert`,className:`my-2 flex items-start gap-2 whitespace-pre-wrap break-words rounded-md border border-danger/30 bg-danger/5 px-3 py-2 text-sm text-danger`,children:[(0,W.jsx)(ae,{className:`mt-0.5 shrink-0`}),(0,W.jsx)(`span`,{className:`min-w-0`,children:Te(e)})]}):null}function X({title:e,desc:t,children:n}){return(0,W.jsxs)(`div`,{className:`mb-5 flex flex-wrap items-end gap-x-4 gap-y-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 basis-64`,children:[(0,W.jsx)(`h2`,{className:`text-2xl`,children:e}),t&&(0,W.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-muted`,children:t})]}),n&&(0,W.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:n})]})}function Z({title:e,sub:t,children:n,actions:r,testId:i,icon:a,count:o,flush:s,className:c}){return(0,W.jsxs)(`section`,{className:_(`mb-4 min-w-0 rounded-xl border border-border bg-surface shadow-sm`,c),"data-testid":i,children:[(e||r)&&(0,W.jsxs)(`header`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1.5 border-b border-border py-2 pl-4 pr-2`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 basis-40`,children:[e&&(0,W.jsxs)(`h3`,{className:`flex items-center gap-2 text-base`,children:[a&&(0,W.jsx)(`span`,{className:`text-muted`,children:a}),(0,W.jsx)(`span`,{className:`min-w-0 truncate`,children:e}),o!==void 0&&(0,W.jsx)(`span`,{className:`rounded-full bg-surface-2 px-1.5 font-sans text-[11px] font-medium tabular-nums text-muted`,children:o})]}),t&&(0,W.jsx)(`p`,{className:`truncate font-mono text-[11px] text-muted`,title:typeof t==`string`?t:void 0,children:t})]}),r&&(0,W.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:r})]}),(0,W.jsx)(`div`,{className:s?``:`px-4 py-3`,children:n})]})}var Ee={user:`neutral`,project:`accent`,local:`warn`};function De({scope:e}){let t=H[e]??e;return(0,W.jsx)(k,{tone:Ee[e]??`neutral`,children:t})}var Oe={user:`~/.claude,所有项目`,project:`.claude/settings.json,随仓库共享`,local:`.claude/settings.local.json,只在本机`};function ke({value:e,onChange:t,scopes:n,label:r=`层级`,className:i}){return(0,W.jsx)(L,{label:r,value:e,onChange:t,className:_(`w-full`,i),options:n.map(e=>({value:e,label:H[e],text:H[e],hint:Oe[e]}))})}function Q({children:e,title:t=`这里还没有内容`,icon:n,action:r}){return(0,W.jsx)(E,{compact:!0,title:t,icon:n,action:r,children:e})}function $({rows:e=3}){return(0,W.jsx)(p,{rows:e})}function Ae(){return(0,W.jsxs)(`p`,{className:`mb-4 flex items-center gap-2 rounded-lg border border-dashed border-border px-3 py-2.5 text-sm text-muted`,children:[(0,W.jsx)(ee,{className:`shrink-0`}),`在页面顶部选择一个项目,即可查看和修改项目级配置。`]})}function je({list:e,detail:t,showDetail:n,listWidth:r=`lg:w-80`}){return(0,W.jsxs)(`div`,{className:`lg:flex lg:items-start lg:gap-5`,children:[(0,W.jsx)(`div`,{className:_(n&&`hidden lg:block`,`min-w-0 lg:shrink-0`,r),children:e}),(0,W.jsx)(`div`,{className:_(!n&&`hidden lg:block`,`min-w-0 lg:sticky lg:top-4 lg:flex-1`),children:t})]})}function Me(){let e=Ce(),t=Se(),n=we.find(t=>t.value===e);return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(X,{title:`通用`}),(0,W.jsxs)(Z,{title:`消息字号`,testId:`message-font-setting`,children:[(0,W.jsx)(C,{label:`消息字号`,value:e,onChange:xe,options:we}),(0,W.jsx)(`p`,{className:`mt-4 rounded-lg border border-border bg-bg p-3 leading-relaxed`,style:{fontSize:`${n.bodyRem}rem`},"data-testid":`message-font-preview`,children:`消息正文预览:Claude 正在帮你处理任务。`}),(0,W.jsx)(`p`,{className:`mt-3 text-xs text-muted`,children:`应用于本浏览器的所有会话,修改后自动保存。`})]}),(0,W.jsxs)(Z,{title:`思考过程`,testId:`reasoning-setting`,children:[(0,W.jsx)(le,{label:`默认展开思考过程`,checked:t,onChange:be,className:`[&>span:first-child]:inline`}),(0,W.jsx)(`p`,{className:`mt-3 text-xs leading-relaxed text-muted`,children:`新显示的思考块按此设置展开或收起,手动调整的状态会保留。设置自动保存到本浏览器。`})]})]})}var Ne=[{kinds:[`user`,`user-rule`],title:`用户级`,desc:`所有项目都会加载`},{kinds:[`project`,`project-rule`],title:`项目级`,desc:`随仓库共享`},{kinds:[`local`],title:`个人(本项目)`,desc:`CLAUDE.local.md,不提交`},{kinds:[`auto`],title:`自动记忆`,desc:`Claude 自己记下的内容`},{kinds:[`other`],title:`其它已加载的文件`,desc:`上级目录或导入的文件`}],Pe={"user-rule":`规则`,"project-rule":`规则`};function Fe(){let e=G(),[t,n]=P(),r=t.get(`f`),i=q(`memory`,e),[a,c]=(0,V.useState)(null),l=e=>{let r=new URLSearchParams(t);e?r.set(`f`,e):r.delete(`f`),n(r)},u=i.data?.files.find(e=>e.path===r),d=i.data?.files.filter(e=>e.exists)??[],p=d.reduce((e,t)=>e+(t.size??0),0),h=i.data&&(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(Ie,{listing:i.data,pid:e}),Ne.map(e=>{let t=i.data.files.filter(t=>e.kinds.includes(t.kind)),n=i.data.dirs.filter(t=>e.kinds.includes(t.kind));return!t.length&&!n.length?null:(0,W.jsxs)(`section`,{className:`rounded-xl border border-border bg-surface shadow-sm`,children:[(0,W.jsxs)(`header`,{className:`flex items-baseline gap-2 border-b border-border px-3.5 py-2`,children:[(0,W.jsx)(`h3`,{className:`text-sm`,children:e.title}),(0,W.jsx)(`span`,{className:`min-w-0 truncate text-xs text-muted`,children:e.desc})]}),(0,W.jsx)(`ul`,{"aria-label":e.title,className:`p-1 empty:hidden`,children:t.map(e=>(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{onClick:()=>l(e.path),"aria-current":e.path===r?`true`:void 0,className:_(`flex w-full items-start gap-2.5 rounded-md px-2.5 py-2.5 text-left transition-colors md:py-2`,e.path===r?`bg-accent/10 text-text`:`hover:bg-surface-2`),"data-path":e.path,title:e.path,children:[(0,W.jsx)(o,{className:_(`mt-0.5 shrink-0`,e.exists?`text-muted`:`text-muted/50`)}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:_(`block break-all font-mono text-xs`,!e.exists&&`text-muted`),children:e.label}),(0,W.jsxs)(`span`,{className:`mt-1 flex flex-wrap items-center gap-1.5 text-[11px] text-muted`,children:[Pe[e.kind]&&(0,W.jsx)(k,{children:Pe[e.kind]}),e.exists?(0,W.jsxs)(W.Fragment,{children:[e.size!==void 0&&(0,W.jsx)(`span`,{children:B(e.size)}),e.mtime!==void 0&&(0,W.jsxs)(`span`,{children:[`· `,ce(e.mtime),`修改`]})]}):(0,W.jsx)(k,{children:`未创建`})]})]})]})},e.path))}),n.length>0&&(0,W.jsx)(`div`,{className:`border-t border-border p-1`,children:n.map(e=>a===e.path?(0,W.jsx)(Le,{dir:e.path,onCancel:()=>c(null),onCreate:e=>(c(null),l(e))},e.path):(0,W.jsx)(m,{variant:`ghost`,size:`sm`,icon:(0,W.jsx)(s,{}),className:`w-full justify-start text-accent hover:text-accent`,onClick:()=>c(e.path),children:(0,W.jsxs)(`span`,{className:`truncate`,children:[`在 `,e.kind===`auto`?`自动记忆`:e.label,` 新建文件`]})},e.path))})]},e.title)})]});return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(X,{title:`记忆与 CLAUDE.md`,desc:`Claude 每次会话都会读取这些说明。修改直接写入 CLI 的文件。`}),i.isPending&&(0,W.jsx)($,{}),(0,W.jsx)(Y,{error:i.error}),i.data&&(0,W.jsx)(je,{showDetail:!!r,listWidth:`lg:w-80`,list:h,detail:r?(0,W.jsx)(Re,{pid:e,path:r,meta:u,onClose:()=>l(null)},r):(0,W.jsxs)(E,{icon:(0,W.jsx)(f,{size:16}),title:`选择左侧的文件查看或编辑`,children:[`已加载 `,d.length,` 个记忆文件,共 `,B(p),`。灰色的条目还没有创建,点开即可新建;规则目录和自动记忆目录里也可以新建文件。`]})})]})}function Ie({listing:e,pid:t}){let n=J(e=>M(K(`memory/auto`,t),{method:`PUT`,json:{enabled:e}}),[`memory`,`settings`]);if(!t)return null;let r=n.isPending?!!n.variables:e.autoMemory.enabled,i=e.autoMemory.scope===`user`?`用户`:e.autoMemory.scope===`project`?`项目共享`:e.autoMemory.scope?`项目本地`:null;return(0,W.jsxs)(`div`,{className:`rounded-xl border border-border bg-surface px-3.5 py-2 shadow-sm`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`text-sm font-medium`,children:`自动记忆`}),(0,W.jsxs)(`div`,{className:`text-xs text-muted`,children:[(0,W.jsx)(`code`,{className:`font-mono`,children:`autoMemoryEnabled`}),i?`,写在${i}设置`:`,未设置(默认)`]})]}),(0,W.jsx)(g,{label:`自动记忆`,checked:r,onChange:e=>n.mutate(e),disabled:n.isPending})]}),(0,W.jsx)(Y,{error:n.error})]})}function Le({dir:e,onCreate:t,onCancel:n}){let[r,i]=(0,V.useState)(``),{discard:a,markSaved:o}=z(!!r,`新文件名`),s=async()=>{await a()&&n()},c=r.trim().replace(/\.md$/i,``),l=/^[A-Za-z0-9一-鿿][\w一-鿿.-]*$/.test(c);return(0,W.jsxs)(`form`,{className:`flex flex-wrap gap-1.5 p-1.5`,onSubmit:n=>{n.preventDefault(),l&&(o(),t(`${e}/${c}.md`))},children:[(0,W.jsx)(`input`,{autoFocus:!0,"aria-label":`新文件名`,placeholder:`文件名.md`,value:r,onChange:e=>i(e.target.value),onKeyDown:e=>e.key===`Escape`&&void s(),className:`${te} flex-1 basis-32`}),(0,W.jsx)(m,{type:`submit`,variant:`primary`,disabled:!l,children:`新建`}),(0,W.jsx)(m,{variant:`ghost`,onClick:s,children:`取消`})]})}function Re({pid:e,path:t,meta:n,onClose:r}){let i=n?n.exists:!1,a=q(`memory/file`,e,{params:{path:t},enabled:i}),[s,c]=(0,V.useState)({kind:`view`}),[l,u]=(0,V.useState)(``),[d,f]=(0,V.useState)(``),[p,h]=(0,V.useState)(!1),{discard:g}=z(s.kind===`edit`&&l!==d,n?.label??t.split(`/`).pop()??t);(0,V.useEffect)(()=>{i||c(e=>e.kind===`edit`?e:{kind:`edit`,create:!0})},[i]);let _=J(()=>M(K(`memory/file`,e),{method:`PUT`,json:{path:t,content:l,create:s.kind===`edit`&&s.create,baseMtime:s.kind===`edit`&&!s.create?a.data?.mtime:void 0}}),[`memory`,`memory/file`],()=>{c({kind:`view`}),h(!1)}),b=J(()=>M(K(`memory/file`,e,{path:t}),{method:`DELETE`}),[`memory`],r),x=s.kind===`edit`,S=async()=>{await g()&&(h(!1),s.kind===`edit`&&s.create?r():c({kind:`view`}))},C=a.data?a.data.content.split(`
2
+ `).length:0;return(0,W.jsxs)(Z,{icon:(0,W.jsx)(o,{}),title:n?.label??t.split(`/`).pop(),sub:t,actions:(0,W.jsxs)(W.Fragment,{children:[!x&&i&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(m,{size:`sm`,icon:(0,W.jsx)(N,{}),onClick:()=>{u(a.data?.content??``),f(a.data?.content??``),c({kind:`edit`,create:!1})},disabled:!a.data,children:`编辑`}),(0,W.jsx)(A,{icon:(0,W.jsx)(y,{}),confirmText:`删除这个文件?`,onConfirm:()=>b.mutate(void 0),disabled:b.isPending,children:`删除`})]}),(0,W.jsxs)(m,{variant:`ghost`,size:`sm`,icon:(0,W.jsx)(ne,{}),onClick:r,"aria-label":`返回列表`,children:[(0,W.jsx)(`span`,{className:`lg:hidden`,children:`返回`}),(0,W.jsx)(`span`,{className:`hidden lg:inline`,children:`关闭`})]})]}),children:[(0,W.jsx)(Y,{error:a.error||b.error}),!x&&i&&a.data&&(0,W.jsxs)(`p`,{className:`-mt-1 mb-3 flex flex-wrap gap-x-3 text-xs text-muted`,children:[(0,W.jsxs)(`span`,{children:[C,` 行`]}),(0,W.jsx)(`span`,{children:B(new Blob([a.data.content]).size)}),(0,W.jsxs)(`span`,{children:[ce(a.data.mtime),`修改`]})]}),!x&&i&&(a.isPending?(0,W.jsx)($,{rows:5}):a.data&&(a.data.content.trim()?(0,W.jsx)(`div`,{"data-testid":`memory-view`,children:(0,W.jsx)(ye,{text:a.data.content})}):(0,W.jsx)(Q,{title:`空文件`,children:`点“编辑”写入内容。`}))),!x&&!i&&(0,W.jsx)(Q,{title:`文件还不存在`}),x&&(0,W.jsxs)(`div`,{className:`space-y-2`,children:[s.create&&(0,W.jsx)(`p`,{className:`text-xs text-muted`,children:`新文件:保存后才会创建。`}),(0,W.jsx)(`textarea`,{"aria-label":`文件内容`,value:l,autoFocus:!0,onChange:e=>{u(e.target.value),h(!1)},onKeyDown:e=>e.key===`Escape`&&S(),rows:16,spellCheck:!1,className:`${v} min-h-64 resize-y`}),(0,W.jsx)(Y,{error:_.error}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[p?(0,W.jsxs)(`span`,{className:`inline-flex flex-wrap items-center gap-2`,role:`group`,"aria-label":`确认保存`,children:[(0,W.jsxs)(`span`,{className:`text-sm text-muted`,children:[s.create?`创建`:`覆盖写入`,`这个文件?`]}),(0,W.jsxs)(m,{variant:`primary`,onClick:()=>_.mutate(void 0),loading:_.isPending,children:[`确认`,s.create?`创建`:`保存`]})]}):(0,W.jsx)(m,{variant:`primary`,onClick:()=>h(!0),children:s.create?`创建`:`保存`}),(0,W.jsx)(m,{variant:`ghost`,onClick:S,children:`取消`}),(0,W.jsxs)(`span`,{className:`ml-auto text-xs text-muted`,children:[l.split(`
3
+ `).length,` 行`]})]})]})]})}var ze={allow:`总是允许`,deny:`总是拒绝`,ask:`总是询问`,additionalDirectories:`额外目录`},Be={allow:`匹配的工具调用直接执行`,deny:`匹配的工具调用一律拦下`,ask:`匹配时在 CLI 里先询问`,additionalDirectories:`项目之外也可读写的目录`},Ve={allow:`ok`,deny:`danger`,ask:`warn`,additionalDirectories:`neutral`},He={allow:`Bash(npm test:*)`,deny:`Read(./.env)`,ask:`Bash(git push:*)`,additionalDirectories:`/path/to/dir`};function Ue(){let e=G(),t=q(`permissions`,e),n=J(t=>M(K(`permissions`,e),{method:`POST`,json:t}),[`permissions`,`settings`]);return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(X,{title:`权限规则`,desc:(0,W.jsxs)(W.Fragment,{children:[`settings 里的 `,(0,W.jsx)(`code`,{className:`font-mono`,children:`permissions`}),`。网页会话以“全部放行”运行,deny 规则在 CLI 和工作区模式中生效。规则写法如`,` `,(0,W.jsx)(`code`,{className:`font-mono`,children:`Bash(npm run:*)`}),`、`,(0,W.jsx)(`code`,{className:`font-mono`,children:`Edit(src/**)`}),`。`]})}),t.isPending&&(0,W.jsx)($,{}),(0,W.jsx)(Y,{error:t.error||n.error}),!e&&(0,W.jsx)(Ae,{}),t.data?.map(e=>{let t=U.reduce((t,n)=>t+e.lists[n].length,0);return(0,W.jsxs)(Z,{icon:(0,W.jsx)(u,{}),title:H[e.scope],count:t,sub:e.path,testId:`perm-layer-${e.scope}`,actions:!e.exists&&(0,W.jsx)(k,{children:`文件未创建`}),children:[t===0?(0,W.jsx)(`p`,{className:`pb-1 text-sm text-muted`,children:`这一层还没有规则。在下面选好类型、写上规则即可添加;文件不存在时会自动创建。`}):(0,W.jsx)(`div`,{className:`grid gap-x-6 gap-y-4 md:grid-cols-2`,children:U.filter(t=>e.lists[t].length).map(t=>(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-2`,children:[(0,W.jsx)(k,{tone:Ve[t],children:ze[t]}),(0,W.jsx)(`span`,{className:`text-xs tabular-nums text-muted`,children:e.lists[t].length}),(0,W.jsxs)(`span`,{className:`hidden truncate text-xs text-muted sm:inline`,children:[`· `,Be[t]]})]}),(0,W.jsx)(`ul`,{className:`divide-y divide-border rounded-lg border border-border`,children:e.lists[t].map(r=>(0,W.jsx)(We,{rule:r,busy:n.isPending,onRemove:()=>n.mutate({scope:e.scope,kind:t,op:`remove`,value:r}),onReplace:i=>n.mutate({scope:e.scope,kind:t,op:`replace`,old:r,value:i})},r))})]},t))}),(0,W.jsx)(Ge,{onAdd:(t,r)=>n.mutateAsync({scope:e.scope,kind:t,op:`add`,value:r}),busy:n.isPending})]},e.scope)})]})}function We({rule:e,onRemove:t,onReplace:n,busy:r}){let[i,a]=(0,V.useState)(null),{discard:o}=z(i!==null&&i!==e,`权限规则`),s=async()=>{await o()&&a(null)};return i===null?(0,W.jsxs)(`li`,{className:`group flex flex-wrap items-center gap-1 py-1 pl-3 pr-1`,"data-rule":e,children:[(0,W.jsx)(`code`,{className:`min-w-0 flex-1 break-all py-1 font-mono text-[13px]`,children:e}),(0,W.jsx)(m,{variant:`ghost`,size:`sm`,icon:(0,W.jsx)(N,{}),onClick:()=>a(e),disabled:r,children:`修改`}),(0,W.jsx)(A,{variant:`ghost`,icon:(0,W.jsx)(y,{}),confirmText:`删除?`,onConfirm:t,disabled:r,label:`删除 ${e}`,children:`删除`})]}):(0,W.jsx)(`li`,{className:`p-1.5`,children:(0,W.jsxs)(`form`,{className:`flex flex-wrap gap-1.5`,onSubmit:t=>{t.preventDefault(),i.trim()&&i.trim()!==e&&n(i.trim()),a(null)},children:[(0,W.jsx)(`input`,{autoFocus:!0,"aria-label":`修改规则`,value:i,onChange:e=>a(e.target.value),onKeyDown:e=>e.key===`Escape`&&void s(),className:`${j} flex-1 basis-48`}),(0,W.jsx)(m,{type:`submit`,variant:`primary`,size:`sm`,className:`h-10 md:h-8`,children:`保存`}),(0,W.jsx)(m,{variant:`ghost`,size:`sm`,className:`h-10 md:h-8`,onClick:s,children:`取消`})]})})}function Ge({onAdd:e,busy:t}){let[n,r]=(0,V.useState)(`allow`),[i,a]=(0,V.useState)(``),{discard:o}=z(!!i,`新权限规则`),c=async()=>{await o()&&a(``)};return(0,W.jsxs)(`form`,{className:`mt-3 flex flex-wrap gap-2 border-t border-border pt-3`,onSubmit:t=>{t.preventDefault(),i.trim()&&e(n,i.trim()).then(()=>a(``),()=>{})},children:[(0,W.jsx)(L,{label:`规则类型`,value:n,onChange:r,className:`w-full sm:w-36`,menuWidth:260,options:U.map(e=>({value:e,label:ze[e],text:ze[e],hint:Be[e]}))}),(0,W.jsx)(`input`,{"aria-label":`新规则`,placeholder:He[n],value:i,onChange:e=>a(e.target.value),onKeyDown:e=>e.key===`Escape`&&void c(),className:`${j} flex-1 basis-48`}),(0,W.jsx)(m,{type:`submit`,variant:`primary`,icon:(0,W.jsx)(s,{}),disabled:!i.trim()||t,children:`添加`})]})}var Ke={connected:{label:`已连接`,tone:`ok`},failed:{label:`连接失败`,tone:`danger`},"needs-auth":{label:`需要登录`,tone:`warn`},pending:{label:`连接中`,tone:`neutral`},disabled:{label:`已停用`,tone:`neutral`}},qe={local:`本地(仅本项目)`,project:`项目(.mcp.json)`,user:`用户`,plugin:`插件`,claudeai:`claude.ai`,dynamic:`动态`};function Je(){let e=R(),t=G(),n=q(`mcp`,t),[a,o]=(0,V.useState)(!1),c=n.data??[],l=e=>c.filter(t=>t.status===e).length;return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(X,{title:`MCP 服务器`,desc:`状态来自 CLI 本身;添加和移除通过 claude mcp 命令完成。`,children:[(0,W.jsx)(m,{size:`sm`,icon:(0,W.jsx)(i,{}),onClick:()=>n.refetch(),loading:n.isFetching,children:n.isFetching?`检查中…`:`刷新状态`}),(0,W.jsx)(m,{size:`sm`,variant:`primary`,icon:(0,W.jsx)(s,{}),onClick:async()=>{(!a||await e())&&o(e=>!e)},"aria-expanded":a,children:`添加服务器`})]}),a&&(0,W.jsx)(tt,{pid:t,onDone:()=>o(!1)}),n.isPending&&(0,W.jsx)($,{}),(0,W.jsx)(Y,{error:n.error}),c.length>0&&(0,W.jsxs)(`p`,{className:`mb-3 flex flex-wrap gap-x-3 gap-y-1 text-xs text-muted`,children:[(0,W.jsxs)(`span`,{children:[`共 `,c.length,` 个`]}),l(`connected`)>0&&(0,W.jsxs)(`span`,{className:`text-ok`,children:[l(`connected`),` 个已连接`]}),l(`failed`)>0&&(0,W.jsxs)(`span`,{className:`text-danger`,children:[l(`failed`),` 个连接失败`]}),l(`needs-auth`)>0&&(0,W.jsxs)(`span`,{className:`text-amber-700 dark:text-amber-400`,children:[l(`needs-auth`),` 个需要登录`]}),l(`disabled`)>0&&(0,W.jsxs)(`span`,{children:[l(`disabled`),` 个已停用`]})]}),n.data&&c.length===0&&!a&&(0,W.jsx)(E,{icon:(0,W.jsx)(r,{size:16}),title:`还没有配置 MCP 服务器`,action:(0,W.jsx)(m,{variant:`primary`,icon:(0,W.jsx)(s,{}),onClick:()=>o(!0),children:`添加服务器`}),children:`MCP 服务器给 Claude 增加工具,例如访问数据库、浏览器或内部系统。可以是本地命令(stdio),也可以是远程地址(HTTP / SSE)。`}),(0,W.jsx)(`ul`,{className:`grid gap-3 xl:grid-cols-2`,children:c.map(e=>(0,W.jsx)(Ze,{s:e,pid:t},`${e.scope}:${e.name}`))})]})}function Ye(e){return typeof e.url==`string`?e.url:typeof e.command==`string`?[e.command,...e.args??[]].join(` `):JSON.stringify(e)}function Xe(e){return typeof e.url==`string`?String(e.type??`http`):typeof e.command==`string`?`stdio`:String(e.type??`—`)}function Ze({s:e,pid:t}){let n=Ke[e.status]??{label:e.status,tone:`neutral`},i=J(n=>M(K(`mcp/toggle`,t),{method:`POST`,json:{name:e.name,enabled:n}}),[`mcp`]),a=J(()=>M(K(`mcp`,t,{name:e.name,scope:e.scope}),{method:`DELETE`}),[`mcp`]),o=J(()=>M(K(`mcp/logout`,t),{method:`POST`,json:{name:e.name}}),[`mcp`]),[s,c]=(0,V.useState)(!1),l=typeof e.config.url==`string`,u=e.status!==`disabled`,d=e.config.env&&typeof e.config.env==`object`?Object.keys(e.config.env).length:0;return(0,W.jsxs)(`li`,{className:`flex min-w-0 flex-col rounded-xl border border-border bg-surface px-4 py-3 shadow-sm`,"data-testid":`mcp-server`,"data-name":e.name,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(r,{className:`shrink-0 text-muted`}),(0,W.jsx)(`span`,{className:`min-w-0 truncate font-medium`,children:e.name}),(0,W.jsx)(`span`,{className:`ml-auto`}),(0,W.jsx)(g,{label:`启用 ${e.name}`,checked:i.isPending?!!i.variables:u,onChange:e=>i.mutate(e),disabled:i.isPending})]}),(0,W.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-1.5`,children:[(0,W.jsx)(k,{tone:n.tone,"data-status":e.status,children:n.label}),(0,W.jsx)(k,{mono:!0,children:Xe(e.config)}),(0,W.jsx)(k,{children:qe[e.scope]??e.scope}),d>0&&(0,W.jsxs)(k,{children:[d,` 个环境变量`]})]}),(0,W.jsx)(`p`,{className:`mt-2 break-all rounded-md bg-surface-2/60 px-2.5 py-1.5 font-mono text-xs text-muted`,children:Ye(e.config)}),e.error&&(0,W.jsx)(`p`,{className:`mt-1.5 line-clamp-3 break-all text-xs text-danger`,children:e.error}),(0,W.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center gap-1.5 pt-2.5`,children:[l&&u&&(0,W.jsx)(m,{size:`sm`,onClick:()=>c(!0),disabled:s,children:e.status===`needs-auth`?`登录`:`重新登录`}),l&&e.status===`connected`&&(0,W.jsx)(A,{danger:!1,confirmText:`清除登录信息?`,onConfirm:()=>o.mutate(void 0),children:`退出登录`}),e.editable?(0,W.jsx)(A,{icon:(0,W.jsx)(y,{}),confirmText:`从${qe[e.scope]??e.scope}配置中移除?`,onConfirm:()=>a.mutate(void 0),disabled:a.isPending,label:`移除 ${e.name}`,children:`移除`}):(0,W.jsxs)(`span`,{className:`text-xs text-muted`,children:[`由`,e.scope===`plugin`?`插件`:e.scope,`提供,不能在这里移除`]})]}),(0,W.jsx)(Y,{error:i.error||a.error||o.error}),s&&(0,W.jsx)(Qe,{pid:t,name:e.name,onClose:()=>c(!1)})]})}function Qe({pid:e,name:t,onClose:r}){let i=J(()=>M(K(`mcp/auth/start`,e),{method:`POST`,json:{name:t}}),[]),[a,o]=(0,V.useState)(``),s=J(()=>M(K(`mcp/auth/submit`,e),{method:`POST`,json:{flowId:i.data?.flowId,url:a}}),[`mcp`],r);return(0,W.jsxs)(`div`,{className:`mt-3 space-y-2 rounded-lg border border-border bg-bg p-3 text-sm`,role:`group`,"aria-label":`登录 ${t}`,children:[!i.data&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`text-muted`,children:`由 CLI 发起 OAuth 授权。授权后浏览器会跳到一个 localhost 地址(可能显示“无法访问”),把那一页的完整网址复制回来即可。`}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(m,{variant:`primary`,size:`sm`,onClick:()=>i.mutate(void 0),loading:i.isPending,children:i.isPending?`正在获取授权地址…`:`开始登录`}),(0,W.jsx)(m,{variant:`ghost`,size:`sm`,onClick:r,children:`取消`})]})]}),i.data&&!i.data.authUrl&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`p`,{className:`flex-1`,children:`这个服务器不需要浏览器授权,已完成。`}),(0,W.jsx)(m,{size:`sm`,onClick:r,children:`完成`})]}),i.data?.authUrl&&(0,W.jsxs)(`form`,{className:`space-y-2`,onSubmit:e=>{e.preventDefault(),s.mutate(void 0)},children:[(0,W.jsxs)(`p`,{children:[`1.`,` `,(0,W.jsxs)(`a`,{href:i.data.authUrl,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-accent underline`,children:[`打开授权页面 `,(0,W.jsx)(n,{size:12})]}),` `,`并完成登录。`]}),(0,W.jsx)(O,{label:`2. 粘贴回调页的完整网址`,hint:i.data.callbackPort?`形如 http://localhost:${i.data.callbackPort}/callback?code=…`:void 0,children:(0,W.jsx)(`input`,{"aria-label":`回调网址`,value:a,onChange:e=>o(e.target.value),placeholder:`http://localhost:…/callback?code=…&state=…`,className:j})}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(m,{type:`submit`,variant:`primary`,size:`sm`,disabled:!a.trim(),loading:s.isPending,children:`完成登录`}),(0,W.jsx)(m,{variant:`ghost`,size:`sm`,onClick:()=>{i.data&&M(K(`mcp/auth/cancel`,e),{method:`POST`,json:{flowId:i.data.flowId}}).catch(()=>{}),r()},children:`取消`})]})]}),(0,W.jsx)(Y,{error:i.error||s.error})]})}var $e=e=>e.split(`
4
+ `).map(e=>e.trim()).filter(Boolean);function et(e,t){let n={};for(let r of $e(e)){let e=r.indexOf(t);e>0&&(n[r.slice(0,e).trim()]=r.slice(e+1).trim())}return n}function tt({pid:e,onDone:t}){let[n,r]=(0,V.useState)({name:``,scope:e?`local`:`user`,transport:`stdio`,command:``,args:``,env:``,url:``,headers:``}),[i]=(0,V.useState)(()=>JSON.stringify(n)),{discard:a}=z(JSON.stringify(n)!==i,`MCP 服务器配置`),o=async()=>{await a()&&t()},c=e=>t=>r({...n,[e]:t.target.value}),l=J(()=>M(K(`mcp`,e),{method:`POST`,json:{name:n.name.trim(),scope:n.scope,transport:n.transport,...n.transport===`stdio`?{command:n.command.trim(),args:$e(n.args),env:et(n.env,`=`)}:{url:n.url.trim(),headers:et(n.headers,`:`)}}}),[`mcp`],t);return(0,W.jsx)(Z,{title:`添加 MCP 服务器`,icon:(0,W.jsx)(s,{}),className:`border-accent/30`,children:(0,W.jsxs)(`form`,{className:`grid gap-3 md:grid-cols-2`,onSubmit:e=>{e.preventDefault(),l.mutate(void 0)},onKeyDown:e=>e.key===`Escape`&&void o(),children:[(0,W.jsx)(O,{label:`名称`,children:(0,W.jsx)(`input`,{autoFocus:!0,"aria-label":`服务器名称`,value:n.name,onChange:c(`name`),className:j,placeholder:`my-server`})}),(0,W.jsx)(O,{group:!0,label:`作用域`,hint:n.scope===`local`?`只对本项目、只对你生效(~/.claude.json)`:n.scope===`project`?`写进项目的 .mcp.json,随仓库共享`:`所有项目都可用`,children:(0,W.jsx)(ke,{label:`作用域`,value:n.scope,onChange:e=>r({...n,scope:e}),scopes:e?[`local`,`project`,`user`]:[`user`]})}),(0,W.jsx)(O,{group:!0,label:`传输方式`,children:(0,W.jsx)(L,{label:`传输方式`,value:n.transport,onChange:e=>r({...n,transport:e}),className:`w-full`,options:[{value:`stdio`,label:`stdio`,text:`stdio(本地命令)`,hint:`在本机启动一个进程,通过标准输入输出通信`},{value:`http`,label:`HTTP`,text:`HTTP`,hint:`远程服务器,可流式 HTTP`},{value:`sse`,label:`SSE`,text:`SSE`,hint:`远程服务器,Server-Sent Events(旧式)`}]})}),n.transport===`stdio`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(O,{label:`命令`,children:(0,W.jsx)(`input`,{"aria-label":`命令`,value:n.command,onChange:c(`command`),className:j,placeholder:`npx`})}),(0,W.jsx)(O,{label:`参数(每行一个)`,children:(0,W.jsx)(`textarea`,{"aria-label":`参数`,value:n.args,onChange:c(`args`),rows:3,className:v,placeholder:`-y
5
+ @modelcontextprotocol/server-filesystem`})}),(0,W.jsx)(O,{label:`环境变量(每行 KEY=VALUE)`,children:(0,W.jsx)(`textarea`,{"aria-label":`环境变量`,value:n.env,onChange:c(`env`),rows:3,className:v,placeholder:`API_KEY=…`})})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(O,{label:`地址`,children:(0,W.jsx)(`input`,{"aria-label":`地址`,value:n.url,onChange:c(`url`),className:j,placeholder:`https://example.com/mcp`})}),(0,W.jsx)(O,{label:`请求头(每行 Name: value)`,children:(0,W.jsx)(`textarea`,{"aria-label":`请求头`,value:n.headers,onChange:c(`headers`),rows:3,className:v,placeholder:`Authorization: Bearer …`})})]}),(0,W.jsx)(`div`,{className:`md:col-span-2`,children:(0,W.jsx)(Y,{error:l.error})}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2 border-t border-border pt-3 md:col-span-2`,children:[(0,W.jsx)(m,{variant:`ghost`,onClick:o,children:`取消`}),(0,W.jsx)(m,{type:`submit`,variant:`primary`,disabled:!n.name.trim()||(n.transport===`stdio`?!n.command.trim():!n.url.trim()),loading:l.isPending,children:l.isPending?`添加中…`:`添加`})]})]})})}async function nt(e,t){let n=await M(K(`plugins`,e),{method:`POST`,json:t});if(!n.ok&&!n.confirm)throw new T(400,n.message);return n}function rt(){let e=G(),t=q(`plugins`,e),n=J(t=>nt(e,t),[`plugins`,`skills`]),r=t.data?.installed??[],a=r.filter(e=>e.enabled).length;return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(X,{title:`插件`,desc:`通过 claude plugin 命令安装、启用、停用和卸载。改动对新会话生效。`}),t.isPending&&(0,W.jsx)($,{}),(0,W.jsx)(Y,{error:t.error}),t.data&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Z,{icon:(0,W.jsx)(c,{}),title:`已安装`,count:r.length,actions:r.length>0&&(0,W.jsxs)(`span`,{className:`text-xs text-muted`,children:[a,` 个启用中`]}),flush:!0,children:[r.length===0&&(0,W.jsx)(`div`,{className:`p-4`,children:(0,W.jsx)(Q,{title:`还没有安装插件`,children:`先在下面添加一个插件市场,再从“安装插件”里挑选。插件可以带来技能、agent、钩子和 MCP 服务器。`})}),(0,W.jsx)(`ul`,{className:`divide-y divide-border`,children:r.map(e=>{let t=n.isPending&&n.variables?.plugin===e.id;return(0,W.jsxs)(`li`,{className:`px-4 py-3`,"data-testid":`plugin`,"data-id":e.id,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`min-w-0 truncate font-medium`,title:e.id,children:e.id}),(0,W.jsx)(`span`,{className:`ml-auto`}),(0,W.jsx)(g,{label:`启用 ${e.id}`,checked:t&&(n.variables.action===`enable`||n.variables.action===`disable`)?n.variables.action===`enable`:e.enabled,onChange:t=>n.mutate({action:t?`enable`:`disable`,plugin:e.id,scope:e.scope}),disabled:n.isPending})]}),(0,W.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-1.5`,children:[(0,W.jsx)(De,{scope:e.scope}),e.version&&(0,W.jsxs)(k,{mono:!0,children:[`v`,e.version]}),(0,W.jsx)(k,{tone:e.enabled?`ok`:`neutral`,children:e.enabled?`已启用`:`已停用`})]}),e.description&&(0,W.jsx)(`p`,{className:`mt-1.5 text-sm text-muted`,children:e.description}),(0,W.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:[(0,W.jsx)(m,{size:`sm`,icon:(0,W.jsx)(i,{}),onClick:()=>n.mutate({action:`update`,plugin:e.id,scope:e.scope}),disabled:n.isPending,loading:t&&n.variables?.action===`update`,children:`更新`}),(0,W.jsx)(A,{icon:(0,W.jsx)(y,{}),confirmText:`卸载这个插件?`,onConfirm:()=>n.mutate({action:`uninstall`,plugin:e.id,scope:e.scope}),disabled:n.isPending,label:`卸载 ${e.id}`,children:`卸载`})]})]},`${e.scope}:${e.id}`)})}),(n.error||n.data?.ok)&&(0,W.jsxs)(`div`,{className:`border-t border-border px-4 py-2`,children:[(0,W.jsx)(Y,{error:n.error}),n.data&&n.data.ok&&(0,W.jsxs)(`p`,{className:`flex items-center gap-1.5 text-sm text-ok`,role:`status`,children:[(0,W.jsx)(h,{}),` `,n.data.message]})]})]}),(0,W.jsx)(it,{pid:e,listing:t.data}),(0,W.jsx)(at,{pid:e,installed:new Set(r.map(e=>e.id)),hasMarkets:t.data.marketplaces.length>0})]})]})}function it({pid:e,listing:t}){let[n,r]=(0,V.useState)(``),a=J(async t=>{let n=await M(K(`marketplaces`,e),{method:`POST`,json:t});if(!n.ok)throw new T(400,n.message);return n},[`plugins`,`plugins/available`],(e,t)=>t.action===`add`&&r(``));return(0,W.jsxs)(Z,{title:`插件市场(marketplace)`,count:t.marketplaces.length,flush:!0,children:[t.marketplaces.length===0&&(0,W.jsx)(`p`,{className:`px-4 pt-3 text-sm text-muted`,children:`还没有添加插件市场。市场是一个列出插件的仓库,填 GitHub 的 owner/repo、git 地址、URL 或本地路径即可添加。`}),(0,W.jsx)(`ul`,{className:`divide-y divide-border`,children:t.marketplaces.map(e=>{let t=e.repo?`GitHub`:e.url?`URL`:e.path?`本地`:e.source;return(0,W.jsxs)(`li`,{className:`flex flex-wrap items-center gap-2 px-4 py-2.5`,"data-testid":`marketplace`,"data-name":e.name,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 basis-48`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`truncate font-medium`,children:e.name}),t&&(0,W.jsx)(k,{children:t})]}),(0,W.jsx)(`div`,{className:`truncate font-mono text-xs text-muted`,title:e.repo??e.url??e.path??e.source,children:e.repo??e.url??e.path??e.source})]}),(0,W.jsx)(m,{size:`sm`,icon:(0,W.jsx)(i,{}),onClick:()=>a.mutate({action:`update`,name:e.name}),disabled:a.isPending,loading:a.isPending&&a.variables?.name===e.name&&a.variables.action===`update`,children:`更新`}),(0,W.jsx)(A,{icon:(0,W.jsx)(y,{}),confirmText:`移除这个市场?`,onConfirm:()=>a.mutate({action:`remove`,name:e.name}),disabled:a.isPending,label:`移除市场 ${e.name}`,children:`移除`})]},e.name)})}),(0,W.jsxs)(`form`,{className:`flex flex-wrap gap-2 border-t border-border px-4 py-3`,onSubmit:e=>{e.preventDefault(),n.trim()&&a.mutate({action:`add`,source:n.trim()})},children:[(0,W.jsx)(`input`,{"aria-label":`市场来源`,placeholder:`owner/repo、git 地址、URL 或本地路径`,value:n,onChange:e=>r(e.target.value),onKeyDown:e=>e.key===`Escape`&&r(``),className:`${j} flex-1 basis-56`}),(0,W.jsx)(m,{type:`submit`,variant:`primary`,icon:(0,W.jsx)(s,{}),disabled:!n.trim(),loading:a.isPending&&a.variables?.action===`add`,children:a.isPending&&a.variables?.action===`add`?`添加中…`:`添加市场`})]}),a.error?(0,W.jsx)(`div`,{className:`px-4 pb-3`,children:(0,W.jsx)(Y,{error:a.error})}):null]})}function at({pid:e,installed:t,hasMarkets:n}){let[r,i]=(0,V.useState)(!1),[a,o]=(0,V.useState)(``),[c,l]=(0,V.useState)(`user`),u=q(`plugins/available`,e,{enabled:r}),[d,f]=(0,V.useState)(null),p=J(t=>nt(e,t),[`plugins`,`skills`],(e,t)=>f(e.confirm?{plugin:t.plugin,result:e}:null)),g=u.data??[],_=g.filter(e=>!a||`${e.name} ${e.description??``}`.toLowerCase().includes(a.toLowerCase())).slice(0,100);return(0,W.jsxs)(Z,{title:`安装插件`,count:r&&u.data?g.length:void 0,actions:r?(0,W.jsx)(m,{variant:`ghost`,size:`sm`,iconOnly:!0,"aria-label":`收起`,title:`收起`,onClick:()=>i(!1),children:(0,W.jsx)(w,{})}):(0,W.jsx)(m,{size:`sm`,icon:(0,W.jsx)(D,{}),onClick:()=>i(!0),children:`浏览`}),children:[!r&&(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:n?`从已添加的市场里查找插件,选择安装到哪一层。`:`先添加一个插件市场,然后在这里浏览它提供的插件。`}),r&&(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-end gap-2`,children:[(0,W.jsx)(O,{label:`搜索`,className:`flex-1 basis-48`,children:(0,W.jsxs)(`span`,{className:`relative block`,children:[(0,W.jsx)(D,{className:`pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-muted`}),(0,W.jsx)(`input`,{autoFocus:!0,"aria-label":`搜索插件`,placeholder:`名称或说明`,value:a,onChange:e=>o(e.target.value),onKeyDown:e=>e.key===`Escape`&&(a?o(``):i(!1)),className:`h-10 md:h-8 w-full min-w-0 rounded-md border border-border bg-surface px-3 text-base md:text-sm text-text outline-none transition-colors placeholder:text-muted/80 hover:border-muted/40 focus:border-accent/60 focus:ring-2 focus:ring-accent/20 disabled:opacity-50 pl-8`})]})}),(0,W.jsx)(O,{group:!0,label:`安装到`,className:`w-full sm:w-48`,children:(0,W.jsx)(ke,{label:`安装到`,value:c,onChange:l,scopes:e?[`user`,`project`,`local`]:[`user`]})})]}),u.isPending&&(0,W.jsx)($,{}),(0,W.jsx)(Y,{error:u.error||p.error}),d?.result.confirm&&(0,W.jsxs)(`div`,{className:`rounded-lg border border-amber-500/50 bg-amber-500/5 p-3 text-sm`,role:`alert`,children:[(0,W.jsxs)(`p`,{className:`font-medium`,children:[d.plugin,` 需要执行插件市场声明的命令:`]}),(0,W.jsx)(`pre`,{className:`mt-2 overflow-x-auto whitespace-pre-wrap break-all rounded bg-surface-2 p-2 font-mono text-xs`,children:typeof d.result.confirm.command==`string`?d.result.confirm.command:JSON.stringify(d.result.confirm.command,null,2)}),(0,W.jsxs)(`p`,{className:`mt-1 break-all text-xs text-muted`,children:[`sha256 `,d.result.confirm.sha256]}),(0,W.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[(0,W.jsx)(m,{variant:`primary`,size:`sm`,onClick:()=>p.mutate({action:`install`,plugin:d.plugin,scope:c,acceptCommand:d.result.confirm.sha256}),children:`确认并安装`}),(0,W.jsx)(m,{variant:`ghost`,size:`sm`,onClick:()=>f(null),children:`取消`})]})]}),u.data&&_.length===0&&(0,W.jsx)(Q,{title:a?`没有找到匹配的插件`:`市场里还没有插件`,children:a?`换个关键词试试。`:`确认市场地址正确,或点市场旁的“更新”。`}),(0,W.jsx)(`ul`,{className:`divide-y divide-border rounded-lg border border-border empty:hidden`,children:_.map(e=>(0,W.jsxs)(`li`,{className:`flex flex-wrap items-start gap-2 px-3 py-2.5`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 basis-48`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 text-sm font-medium`,children:[(0,W.jsx)(`span`,{className:`break-all`,children:e.name}),(0,W.jsxs)(k,{children:[`@`,e.marketplaceName]}),e.installCount!==void 0&&(0,W.jsxs)(`span`,{className:`text-xs font-normal text-muted`,children:[e.installCount,` 次安装`]})]}),e.description&&(0,W.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-xs text-muted`,children:e.description})]}),t.has(e.pluginId)?(0,W.jsx)(k,{tone:`ok`,icon:(0,W.jsx)(h,{size:11}),children:`已安装`}):(0,W.jsx)(m,{size:`sm`,icon:(0,W.jsx)(s,{}),onClick:()=>p.mutate({action:`install`,plugin:e.pluginId,scope:c}),disabled:p.isPending,loading:p.isPending&&p.variables?.plugin===e.pluginId,"aria-label":`安装 ${e.pluginId}`,children:p.isPending&&p.variables?.plugin===e.pluginId?`安装中…`:`安装`})]},e.pluginId))})]})]})}var ot={user:`用户级`,project:`项目级`,plugin:`插件提供`,"user-command":`用户级命令(.claude/commands)`,"project-command":`项目级命令(.claude/commands)`};function st(){let e=G(),t=q(`skills`,e),[n,r]=P(),[i,a]=(0,V.useState)(``),o=n.get(`f`),s=e=>{let t=new URLSearchParams(n);e?t.set(`f`,e):t.delete(`f`),r(t)},c=t.data??[],l=e=>!i||`${e.name} ${e.description}`.toLowerCase().includes(i.toLowerCase()),u=Object.keys(ot).map(e=>({src:e,items:c.filter(t=>t.source===e&&l(t))})),f=c.find(e=>e.path===o),p=(0,W.jsxs)(`div`,{className:`space-y-4`,children:[c.length>6&&(0,W.jsxs)(`span`,{className:`relative block`,children:[(0,W.jsx)(D,{className:`pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-muted`}),(0,W.jsx)(`input`,{"aria-label":`筛选技能`,placeholder:`在 ${c.length} 个技能里筛选`,value:i,onChange:e=>a(e.target.value),onKeyDown:e=>e.key===`Escape`&&a(``),className:`h-10 md:h-8 w-full min-w-0 rounded-md border border-border bg-surface px-3 text-base md:text-sm text-text outline-none transition-colors placeholder:text-muted/80 hover:border-muted/40 focus:border-accent/60 focus:ring-2 focus:ring-accent/20 disabled:opacity-50 pl-8`})]}),u.filter(e=>e.items.length).map(e=>(0,W.jsx)(Z,{title:ot[e.src],count:e.items.length,flush:!0,children:(0,W.jsx)(`ul`,{className:`p-1`,children:e.items.map(e=>(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{className:_(`block w-full rounded-md px-3 py-2.5 text-left transition-colors disabled:cursor-default`,e.path&&e.path===o?`bg-accent/10`:`hover:bg-surface-2`),disabled:!e.path,onClick:()=>e.path&&s(e.path),"aria-current":e.path===o?`true`:void 0,"data-testid":`skill`,"data-name":e.name,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,W.jsxs)(`span`,{className:`font-mono text-sm font-medium`,children:[`/`,e.name]}),e.plugin&&(0,W.jsx)(k,{children:e.plugin}),e.state&&e.state!==`on`&&(0,W.jsx)(k,{tone:`warn`,children:e.state})]}),e.description&&(0,W.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-xs leading-relaxed text-muted`,children:e.description})]})},e.path??e.name))})},e.src)),i&&u.every(e=>!e.items.length)&&(0,W.jsx)(Q,{title:`没有匹配的技能`,children:`换个关键词试试。`})]});return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(X,{title:`技能`,desc:`用户级 ~/.claude/skills、项目级 .claude/skills 和插件带来的技能。在对话里用 / 调用,Claude 也会按说明自动使用。`}),t.isPending&&(0,W.jsx)($,{}),(0,W.jsx)(Y,{error:t.error}),t.data&&(c.length===0?(0,W.jsxs)(E,{icon:(0,W.jsx)(d,{size:16}),title:`还没有技能`,children:[`在 `,(0,W.jsx)(`code`,{className:`font-mono`,children:`~/.claude/skills/名称/SKILL.md`}),` 或项目的 `,(0,W.jsx)(`code`,{className:`font-mono`,children:`.claude/skills/`}),` 下放一个 SKILL.md,或在“插件”页安装带技能的插件。`]}):(0,W.jsx)(je,{showDetail:!!o,listWidth:`lg:w-96`,list:p,detail:o?(0,W.jsx)(ct,{pid:e,path:o,skill:f,onClose:()=>s(null)},o):(0,W.jsxs)(E,{icon:(0,W.jsx)(d,{size:16}),title:`选择一个技能查看 SKILL.md`,children:[`共 `,c.length,` 个技能。`]})}))]})}function ct({pid:e,path:t,skill:n,onClose:r}){let i=q(`skills/file`,e,{params:{path:t}}),a=i.data?.content.replace(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/,``)??``,o=(i.data?.content.match(/^---\r?\n([\s\S]*?)\r?\n---/)?.[1])?.split(`
6
+ `).map(e=>/^([\w-]+):\s*(.*)$/.exec(e)).filter(e=>!!e&&e[1]!==`description`);return(0,W.jsxs)(Z,{icon:(0,W.jsx)(d,{}),title:n?`/${n.name}`:t.split(`/`).slice(-2,-1)[0]??`SKILL.md`,sub:t,actions:(0,W.jsxs)(m,{variant:`ghost`,size:`sm`,icon:(0,W.jsx)(ne,{}),onClick:r,"aria-label":`返回列表`,children:[(0,W.jsx)(`span`,{className:`lg:hidden`,children:`返回`}),(0,W.jsx)(`span`,{className:`hidden lg:inline`,children:`关闭`})]}),children:[i.isPending&&(0,W.jsx)($,{rows:5}),(0,W.jsx)(Y,{error:i.error}),n?.description&&(0,W.jsx)(`p`,{className:`mb-3 text-sm leading-relaxed text-muted`,children:n.description}),o&&o.length>0&&(0,W.jsx)(`dl`,{className:`mb-4 grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 rounded-lg bg-surface-2/60 px-3 py-2 text-xs`,children:o.map(e=>(0,W.jsxs)(`div`,{className:`contents`,children:[(0,W.jsx)(`dt`,{className:`font-mono text-muted`,children:e[1]}),(0,W.jsx)(`dd`,{className:`break-all font-mono`,children:e[2]||`—`})]},e[1]))}),i.data&&(0,W.jsx)(ye,{text:a})]})}function lt(){let e=R(),t=G(),n=q(`hooks`,t),r=J(e=>M(K(`hooks`,t),{method:`POST`,json:e}),[`hooks`,`settings`]),[i,o]=(0,V.useState)(!1),c=n.data?.events??[],l=n.data?.layers.reduce((e,t)=>e+Object.values(t.hooks).reduce((e,t)=>e+t.reduce((e,t)=>e+t.hooks.length,0),0),0)??0;return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(X,{title:`钩子`,desc:`settings 的 hooks:在特定事件发生时由 CLI 执行的命令,例如编辑后自动格式化、提交前跑检查。`,children:(0,W.jsx)(m,{size:`sm`,variant:`primary`,icon:(0,W.jsx)(s,{}),onClick:async()=>{(!i||await e())&&o(e=>!e)},"aria-expanded":i,children:`添加钩子`})}),n.isPending&&(0,W.jsx)($,{}),(0,W.jsx)(Y,{error:n.error||r.error}),!t&&(0,W.jsx)(Ae,{}),i&&n.data&&(0,W.jsx)(Z,{title:`添加钩子`,icon:(0,W.jsx)(s,{}),className:`border-accent/30`,children:(0,W.jsx)(dt,{events:c,scopes:n.data.layers.map(e=>e.scope),busy:r.isPending,onCancel:()=>o(!1),onSubmit:e=>r.mutateAsync({op:`add`,scope:e.scope,event:e.event,matcher:e.matcher,hook:e.hook}).then(()=>o(!1))})}),n.data&&l===0&&!i&&(0,W.jsx)(`div`,{className:`mb-4`,children:(0,W.jsxs)(E,{icon:(0,W.jsx)(a,{size:16}),title:`还没有钩子`,action:(0,W.jsx)(m,{variant:`primary`,icon:(0,W.jsx)(s,{}),onClick:()=>o(!0),children:`添加钩子`}),children:[`比如在 PostToolUse 事件、匹配 `,(0,W.jsx)(`code`,{className:`font-mono`,children:`Edit|Write`}),` 时运行 `,(0,W.jsx)(`code`,{className:`font-mono`,children:`npx prettier --write`}),`,让 Claude 改过的文件自动格式化。`]})}),n.data?.layers.map(e=>{let t=Object.entries(e.hooks),n=t.reduce((e,[,t])=>e+t.reduce((e,t)=>e+t.hooks.length,0),0);return l===0?null:(0,W.jsxs)(Z,{icon:(0,W.jsx)(a,{}),title:H[e.scope],count:n,sub:e.path,testId:`hook-layer-${e.scope}`,actions:(0,W.jsx)(De,{scope:e.scope}),children:[t.length===0&&(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`这一层没有钩子。`}),(0,W.jsx)(`div`,{className:`space-y-4`,children:t.map(([t,n])=>(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-2`,children:[(0,W.jsx)(k,{tone:`accent`,mono:!0,children:t}),(0,W.jsx)(`span`,{className:`truncate text-xs text-muted`,children:c.find(e=>e.name===t)?.summary})]}),(0,W.jsx)(`ul`,{className:`divide-y divide-border rounded-lg border border-border`,children:n.flatMap((n,i)=>n.hooks.map((a,o)=>(0,W.jsx)(ut,{scope:e.scope,event:t,matcher:n.matcher,hook:a,events:c,busy:r.isPending,onRemove:()=>r.mutate({op:`remove`,scope:e.scope,event:t,group:i,index:o}),onReplace:(n,a)=>r.mutateAsync({op:`replace`,scope:e.scope,event:t,group:i,index:o,matcher:n,hook:a})},`${i}:${o}`)))})]},t))})]},e.scope)}),n.data&&n.data.readonly.length>0&&(0,W.jsx)(Z,{title:`其它来源(只读)`,count:n.data.readonly.length,flush:!0,children:(0,W.jsx)(`ul`,{className:`divide-y divide-border`,children:n.data.readonly.map((e,t)=>(0,W.jsxs)(`li`,{className:`px-4 py-2.5 text-sm`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,W.jsx)(k,{tone:`accent`,mono:!0,children:e.event}),e.matcher&&(0,W.jsx)(k,{mono:!0,children:e.matcher}),(0,W.jsx)(k,{children:e.label})]}),(0,W.jsx)(`code`,{className:`mt-1 block break-all font-mono text-xs`,children:e.text})]},t))})})]})}function ut({event:e,matcher:t,hook:n,events:r,busy:i,onRemove:a,onReplace:o}){let[s,c]=(0,V.useState)(!1),l=n.type===`command`;return s?(0,W.jsx)(`li`,{className:`bg-bg p-3`,children:(0,W.jsx)(dt,{events:r,fixedEvent:e,initial:{matcher:t,hook:n},busy:i,onCancel:()=>c(!1),onSubmit:e=>o(e.matcher,e.hook).then(()=>c(!1))})}):(0,W.jsxs)(`li`,{className:`flex flex-wrap items-center gap-1 py-1.5 pl-3 pr-1`,"data-testid":`hook`,"data-command":n.command,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 basis-48 py-0.5`,children:[(0,W.jsx)(`code`,{className:`block break-all font-mono text-[13px]`,children:l?n.command:JSON.stringify(n)}),(0,W.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-1.5`,children:[(0,W.jsx)(k,{mono:!0,title:`matcher`,children:t||`全部工具`}),n.type!==`command`&&(0,W.jsx)(k,{children:n.type}),n.timeout!==void 0&&(0,W.jsxs)(k,{children:[`超时 `,String(n.timeout),`s`]})]})]}),l&&(0,W.jsx)(m,{variant:`ghost`,size:`sm`,icon:(0,W.jsx)(N,{}),onClick:()=>c(!0),disabled:i,children:`修改`}),(0,W.jsx)(A,{variant:`ghost`,icon:(0,W.jsx)(y,{}),confirmText:`删除?`,onConfirm:a,disabled:i,label:`删除钩子 ${n.command??``}`,children:`删除`})]})}function dt({events:e,scopes:t,fixedEvent:n,initial:r,busy:i,onSubmit:a,onCancel:o}){let[s,c]=(0,V.useState)(t?.includes(`local`)?`local`:`user`),[l,u]=(0,V.useState)(n??`PreToolUse`),[d,f]=(0,V.useState)(r?.matcher??``),[p,h]=(0,V.useState)(r?.hook.command??``),[g,_]=(0,V.useState)(r?.hook.timeout===void 0?``:String(r.hook.timeout)),v=JSON.stringify({scope:s,event:l,matcher:d,command:p,timeout:g}),[y]=(0,V.useState)(v),{discard:b}=z(v!==y,`钩子配置`),x=async()=>{await b()&&o()},S=e.find(e=>e.name===l),C=!S||S.supportsMatcher,w=e.length?e:[{name:`PreToolUse`,summary:``,supportsMatcher:!0}];return(0,W.jsxs)(`form`,{className:`grid gap-3 md:grid-cols-2`,onKeyDown:e=>e.key===`Escape`&&void x(),onSubmit:e=>{e.preventDefault(),a({scope:s,event:l,matcher:C&&d.trim()||void 0,hook:{...r?.hook??{},type:`command`,command:p.trim(),...g.trim()?{timeout:Number(g)}:{timeout:void 0}}}).catch(()=>{})},children:[t&&(0,W.jsx)(O,{group:!0,label:`写入`,children:(0,W.jsx)(ke,{label:`写入`,value:s,onChange:c,scopes:t})}),!n&&(0,W.jsx)(O,{group:!0,label:`事件`,hint:S?.summary,children:(0,W.jsx)(L,{label:`事件`,value:l,onChange:u,className:`w-full font-mono`,menuWidth:360,options:w.map(e=>({value:e.name,label:(0,W.jsx)(`span`,{className:`font-mono`,children:e.name}),text:e.name,hint:e.summary||void 0}))})}),C&&(0,W.jsx)(O,{label:`匹配(matcher,可留空)`,hint:`例如 Edit|Write,或工具名的正则;留空表示所有工具`,children:(0,W.jsx)(`input`,{"aria-label":`匹配`,value:d,onChange:e=>f(e.target.value),className:j,placeholder:`Edit|Write`})}),(0,W.jsx)(O,{label:`命令`,children:(0,W.jsx)(`input`,{autoFocus:!!n,"aria-label":`钩子命令`,value:p,onChange:e=>h(e.target.value),className:j,placeholder:`npx prettier --write .`})}),(0,W.jsx)(O,{label:`超时(秒,可留空)`,children:(0,W.jsx)(`input`,{"aria-label":`超时`,inputMode:`numeric`,value:g,onChange:e=>_(e.target.value),className:te,placeholder:`60`})}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-border pt-3 md:col-span-2`,children:[(0,W.jsx)(m,{variant:`ghost`,onClick:x,children:`取消`}),(0,W.jsx)(m,{type:`submit`,variant:`primary`,disabled:!p.trim(),loading:i,children:`保存`})]})]})}var ft=[{value:``,label:`默认`,hint:`继承会话的模型`},{value:`inherit`,label:`inherit`,hint:`显式继承`},{value:`sonnet`,label:`sonnet`},{value:`opus`,label:`opus`},{value:`haiku`,label:`haiku`,hint:`更快、更省额度`}];function pt(){let e=_e(),t=G(),n=q(`agents`,t),[r,i]=(0,V.useState)(null),a=async t=>{r!==t&&(!ve().length||(await e({title:`放弃当前 agent 的修改?`,description:`切换编辑对象后,尚未保存的修改会丢失。`,confirmLabel:`放弃并切换`,cancelLabel:`继续编辑`,danger:!0})).confirmed)&&i(t)},o=J(e=>M(K(`agents`,t,{scope:e.scope,file:e.file}),{method:`DELETE`}),[`agents`]),c=new Set(n.data?.agents.map(e=>e.name));return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(X,{title:`Agents`,desc:`自定义子 agent:~/.claude/agents 与项目 .claude/agents 下的 Markdown 文件。Claude 按说明决定何时把任务交给它们。`,children:(0,W.jsx)(m,{size:`sm`,variant:`primary`,icon:(0,W.jsx)(s,{}),onClick:()=>a(`new`),disabled:r===`new`,children:`新建 agent`})}),n.isPending&&(0,W.jsx)($,{}),(0,W.jsx)(Y,{error:n.error||o.error}),r&&(0,W.jsx)(mt,{pid:t,agent:r===`new`?null:r,onDone:()=>i(null)},r===`new`?`new`:r.path),n.data&&(0,W.jsxs)(W.Fragment,{children:[[`project`,`user`].map(e=>{if(e===`project`&&!t)return null;let r=n.data.agents.filter(t=>t.scope===e);return(0,W.jsxs)(Z,{icon:(0,W.jsx)(x,{}),title:e===`user`?`用户级`:`项目级`,count:r.length,sub:e===`user`?`~/.claude/agents`:`.claude/agents`,flush:!0,children:[r.length===0&&(0,W.jsxs)(`p`,{className:`px-4 py-3 text-sm text-muted`,children:[`没有自定义 agent。`,` `,(0,W.jsx)(`button`,{className:`text-accent hover:underline`,onClick:()=>a(`new`),children:`新建一个`}),`,例如只读的代码审查员或专门写测试的助手。`]}),(0,W.jsx)(`ul`,{className:`divide-y divide-border`,children:r.map(e=>(0,W.jsxs)(`li`,{className:`px-4 py-3`,"data-testid":`agent`,"data-name":e.name,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`mr-1 font-medium`,children:e.name||e.file}),(0,W.jsx)(k,{mono:!0,children:e.model||`默认模型`}),(0,W.jsx)(k,{children:e.tools?`${e.tools.split(`,`).filter(e=>e.trim()).length} 个工具`:`全部工具`}),(0,W.jsxs)(`span`,{className:`text-xs text-muted`,children:[ce(e.mtime),`修改`]}),(0,W.jsx)(`span`,{className:`ml-auto`}),(0,W.jsx)(m,{size:`sm`,variant:`ghost`,icon:(0,W.jsx)(N,{}),onClick:()=>a(e),children:`编辑`}),(0,W.jsx)(A,{variant:`ghost`,icon:(0,W.jsx)(y,{}),confirmText:`删除这个 agent?`,onConfirm:()=>o.mutate(e),disabled:o.isPending,label:`删除 ${e.name}`,children:`删除`})]}),e.description&&(0,W.jsx)(`p`,{className:`mt-1 line-clamp-3 text-sm text-muted`,children:e.description}),e.tools&&(0,W.jsxs)(`p`,{className:`mt-1 break-all font-mono text-xs text-muted`,children:[`工具:`,e.tools]})]},e.path))})]},e)}),(0,W.jsx)(Z,{title:`当前生效的 agent`,count:n.data.effective.length,sub:`内置、插件和文件里的 agent,由 CLI 列出`,children:(0,W.jsx)(`ul`,{className:`grid gap-2 sm:grid-cols-2 xl:grid-cols-3`,children:n.data.effective.map(e=>(0,W.jsxs)(`li`,{className:`min-w-0 rounded-lg border border-border px-3 py-2`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`min-w-0 truncate text-sm font-medium`,children:e.name}),c.has(e.name)&&(0,W.jsx)(k,{tone:`accent`,children:`自定义`}),e.model&&(0,W.jsx)(k,{mono:!0,children:e.model})]}),(0,W.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-xs text-muted`,children:e.description})]},e.name))})})]})]})}function mt({pid:e,agent:t,onDone:n}){let[r,i]=(0,V.useState)(()=>t?{scope:t.scope,file:t.file,name:t.name||t.file,description:t.description,tools:t.tools,model:t.model,prompt:t.prompt}:{scope:e?`project`:`user`,name:``,description:``,tools:``,model:``,prompt:``}),[a]=(0,V.useState)(()=>JSON.stringify(r)),{discard:o}=z(JSON.stringify(r)!==a,`agent ${t?.name||r.name||`新建`}`),c=async()=>{await o()&&n()},l=e=>t=>i({...r,[e]:t.target.value}),u=J(()=>M(K(`agents`,e),{method:`PUT`,json:{...r,baseMtime:t?.mtime}}),[`agents`],n),d=ft.some(e=>e.value===r.model)?ft:[...ft,{value:r.model,label:r.model,hint:void 0}];return(0,W.jsx)(Z,{icon:t?(0,W.jsx)(N,{}):(0,W.jsx)(s,{}),title:t?`编辑 ${t.name||t.file}`:`新建 agent`,sub:t?.path,className:`border-accent/30`,children:(0,W.jsxs)(`form`,{className:`grid gap-3 md:grid-cols-2`,onKeyDown:e=>e.key===`Escape`&&void c(),onSubmit:e=>{e.preventDefault(),u.mutate(void 0)},children:[!t&&(0,W.jsx)(O,{group:!0,label:`位置`,children:(0,W.jsx)(L,{label:`位置`,value:r.scope,onChange:e=>i({...r,scope:e}),className:`w-full`,options:[...e?[{value:`project`,label:`项目级`,text:`项目级`,hint:`.claude/agents,随仓库共享`}]:[],{value:`user`,label:`用户级`,text:`用户级`,hint:`~/.claude/agents,所有项目可用`}]})}),(0,W.jsx)(O,{label:`名称`,hint:`字母、数字、- 和 _`,children:(0,W.jsx)(`input`,{autoFocus:!0,"aria-label":`agent 名称`,value:r.name,onChange:l(`name`),className:j,placeholder:`code-reviewer`})}),(0,W.jsx)(O,{group:!0,label:`模型`,children:(0,W.jsx)(L,{label:`agent 模型`,value:r.model,onChange:e=>i({...r,model:e}),className:`w-full`,options:d.map(e=>({value:e.value,label:e.label,text:e.label,hint:e.hint}))})}),(0,W.jsx)(O,{label:`可用工具(逗号分隔,留空表示全部)`,children:(0,W.jsx)(`input`,{"aria-label":`agent 工具`,value:r.tools,onChange:l(`tools`),className:j,placeholder:`Read, Grep, Glob`})}),(0,W.jsx)(O,{label:`说明`,hint:`Claude 根据这段说明决定何时调用它`,className:`md:col-span-2`,children:(0,W.jsx)(`textarea`,{"aria-label":`agent 说明`,value:r.description,onChange:l(`description`),rows:2,className:b})}),(0,W.jsx)(O,{label:`系统提示词`,className:`md:col-span-2`,children:(0,W.jsx)(`textarea`,{"aria-label":`agent 提示词`,value:r.prompt,onChange:l(`prompt`),rows:10,className:`${v} resize-y`})}),t?.extra&&(0,W.jsxs)(`p`,{className:`text-xs text-muted md:col-span-2`,children:[`其它 frontmatter 会原样保留:`,(0,W.jsxs)(`code`,{className:`break-all font-mono`,children:[t.extra.split(`
7
+ `)[0],`…`]})]}),(0,W.jsx)(`div`,{className:`md:col-span-2`,children:(0,W.jsx)(Y,{error:u.error})}),(0,W.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2 border-t border-border pt-3 md:col-span-2`,children:[(0,W.jsx)(m,{variant:`ghost`,onClick:c,children:`取消`}),(0,W.jsx)(m,{type:`submit`,variant:`primary`,disabled:!r.name.trim()||!r.description.trim(),loading:u.isPending,children:t?`保存`:`创建`})]})]})})}var ht=[{key:`model`,label:`默认模型`,kind:`select`,hint:`新会话默认使用的模型`,options:e=>e.models.map(e=>({value:e.value,label:e.displayName,hint:e.description}))},{key:`effortLevel`,label:`默认思考强度`,kind:`select`,hint:`模型思考的投入程度`,options:()=>[`low`,`medium`,`high`,`xhigh`].map(e=>({value:e,label:e}))},{key:`outputStyle`,label:`输出风格`,kind:`select`,hint:`回复的语气与格式`,options:e=>e.outputStyles.map(e=>({value:e,label:e}))},{key:`alwaysThinkingEnabled`,label:`默认开启扩展思考`,kind:`bool`},{key:`showThinkingSummaries`,label:`显示思考摘要`,kind:`bool`},{key:`includeGitInstructions`,label:`在系统提示中包含 git 说明`,kind:`bool`},{key:`respectGitignore`,label:`文件选择遵守 .gitignore`,kind:`bool`},{key:`language`,label:`回复语言`,kind:`text`,placeholder:`例如 chinese`},{key:`cleanupPeriodDays`,label:`会话记录保留天数`,kind:`number`,placeholder:`30`},{key:`autoUpdatesChannel`,label:`CLI 更新通道`,kind:`select`,options:()=>[`latest`,`stable`,`rc`].map(e=>({value:e,label:e}))}];function gt(){let e=R(),t=G(),n=q(`settings`,t),[r,i]=(0,V.useState)(`user`);(0,V.useEffect)(()=>{t||i(`user`)},[t]);let a=J(e=>M(K(`settings`,t),{method:`PUT`,json:{scope:r,key:e.key,value:e.value}}),[`settings`,`memory`]),o=n.data?.layers.find(e=>e.scope===r),s=o?ht.filter(e=>o.settings[e.key]!==void 0).length:0;return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(X,{title:`设置`,desc:`常用的 settings 键。按层级写入,优先级:项目本地 > 项目共享 > 用户。`}),(0,W.jsxs)(Z,{icon:(0,W.jsx)(u,{}),title:`权限模式`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm`,children:[(0,W.jsx)(k,{tone:`accent`,children:`全部放行`}),(0,W.jsx)(`code`,{className:`font-mono text-xs text-muted`,children:`bypassPermissions`})]}),(0,W.jsx)(`p`,{className:`mt-1.5 text-xs leading-relaxed text-muted`,children:`网页会话默认使用这一模式,不提供逐次审批;需要限制时在会话里切到“工作区”模式,项目目录外的写入和命令会被拦下。`})]}),n.isPending&&(0,W.jsx)($,{}),(0,W.jsx)(Y,{error:n.error||a.error}),n.data&&(0,W.jsxs)(Z,{icon:(0,W.jsx)(l,{}),title:`写入层级`,sub:o?.path,actions:(0,W.jsx)(C,{label:`写入层级`,size:`sm`,value:r,onChange:async t=>{t!==r&&await e()&&i(t)},options:n.data.layers.map(e=>({value:e.scope,label:H[e.scope]}))}),flush:!0,children:[(0,W.jsxs)(`p`,{className:`border-b border-border bg-surface-2/40 px-4 py-2 text-xs text-muted`,children:[s?`这一层设置了 ${s} 项;`:`这一层还没有设置这些键;`,`修改只写入“`,H[r],`”,其它层不变。`]}),(0,W.jsx)(`ul`,{className:`divide-y divide-border`,children:ht.map(e=>(0,W.jsx)(vt,{def:e,info:n.data,value:o?.settings[e.key],effective:n.data.effective[e.key],busy:a.isPending,onSet:t=>a.mutate({key:e.key,value:t})},`${r}:${e.key}`))})]})]})}var _t=e=>e===void 0?`未设置`:typeof e==`boolean`?e?`开`:`关`:String(e);function vt({def:e,info:t,value:n,effective:r,busy:i,onSet:a}){let o=n===void 0?``:String(n),[s,c]=(0,V.useState)(o),{discard:l}=z((e.kind===`text`||e.kind===`number`)&&s!==o,e.label),u=async()=>{await l()&&c(o)};(0,V.useEffect)(()=>c(o),[o]);let d;if(e.kind===`select`){let n=e.options(t),r=o&&!n.some(e=>e.value===o)?[...n,{value:o,label:o}]:n;d=(0,W.jsx)(L,{label:e.label,value:o,onChange:e=>a(e||null),disabled:i,className:`w-full md:w-64`,menuWidth:320,options:[{value:``,label:`未设置`,text:`未设置`,hint:`使用其它层或默认值`},...r.map(e=>({value:e.value,label:e.label,text:e.label,hint:e.hint}))]})}else if(e.kind===`bool`)d=(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-1 md:w-64`,children:[n!==void 0&&(0,W.jsx)(m,{variant:`ghost`,size:`sm`,icon:(0,W.jsx)(w,{}),onClick:()=>a(null),disabled:i,children:`清除`}),(0,W.jsx)(g,{label:e.label,checked:n===!0,onChange:e=>a(e),disabled:i})]});else{let t=s!==o;d=(0,W.jsxs)(`form`,{className:`flex gap-1.5 md:w-64`,onSubmit:t=>{t.preventDefault(),a(s.trim()===``?null:e.kind===`number`?Number(s):s)},children:[(0,W.jsx)(`input`,{"aria-label":e.label,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>e.key===`Escape`&&void u(),inputMode:e.kind===`number`?`numeric`:void 0,placeholder:e.placeholder,className:te}),t&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(m,{variant:`ghost`,iconOnly:!0,"aria-label":`撤销修改`,title:`撤销修改`,onClick:u,children:(0,W.jsx)(w,{})}),(0,W.jsx)(m,{type:`submit`,variant:`primary`,disabled:i,children:`保存`})]})]})}return(0,W.jsxs)(`li`,{className:`flex flex-col gap-2 px-4 py-3 md:flex-row md:items-center md:gap-4`,"data-setting":e.key,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:e.label}),n!==void 0&&(0,W.jsx)(k,{tone:`accent`,children:`本层已设置`})]}),(0,W.jsxs)(`div`,{className:`mt-0.5 text-xs text-muted`,children:[e.hint?`${e.hint} · `:``,(0,W.jsx)(`code`,{className:`font-mono`,children:e.key}),` · 生效值:`,_t(r)]})]}),d]})}function yt(e){if(!e)return``;let t=new Date(e);if(Number.isNaN(t.getTime()))return``;let n=Math.round((t.getTime()-Date.now())/6e4),r=n<60?`${Math.max(n,0)} 分钟后`:n<2880?`${Math.floor(n/60)} 小时 ${n%60} 分钟后`:`${Math.round(n/1440)} 天后`;return`${t.toLocaleString(void 0,{month:`numeric`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})} 重置(${r})`}function bt({label:e,w:t}){let n=t?.utilization??null;return(0,W.jsxs)(`div`,{className:`py-2`,"data-testid":`usage-meter`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 text-sm`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:e}),(0,W.jsx)(`span`,{className:`tabular-nums`,children:n===null?`—`:`${Math.round(n)}%`})]}),(0,W.jsx)(`div`,{className:`mt-1.5 h-2 overflow-hidden rounded-full bg-surface-2`,role:`progressbar`,"aria-label":e,"aria-valuenow":n??void 0,"aria-valuemin":0,"aria-valuemax":100,children:(0,W.jsx)(`div`,{className:`h-full rounded-full ${n!==null&&n>=90?`bg-danger`:`bg-accent`}`,style:{width:`${Math.min(n??0,100)}%`}})}),t?.resetsAt&&(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted`,children:yt(t.resetsAt)})]})}function xt(){let t=G(),n=q(`account`,void 0),r=fe({queryKey:[`cfg`,`doctor`,t??``],queryFn:()=>M(K(`doctor`,t)),enabled:!1}),a=n.data,o=a?.auth?.loggedIn;return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(X,{title:`账号与状态`,desc:`对应 /usage、/status、/doctor。账号只能在终端登录,网页不经手凭据。`,children:(0,W.jsx)(m,{size:`sm`,icon:(0,W.jsx)(i,{}),onClick:()=>n.refetch(),loading:n.isFetching,children:n.isFetching?`刷新中…`:`刷新`})}),n.isPending&&(0,W.jsx)($,{}),(0,W.jsx)(Y,{error:n.error}),a&&(0,W.jsxs)(`div`,{className:`grid gap-x-4 lg:grid-cols-2`,children:[(0,W.jsx)(Z,{icon:(0,W.jsx)(ie,{}),title:`登录状态`,testId:`auth-card`,actions:(0,W.jsx)(k,{tone:o?`ok`:`danger`,children:o?`已登录`:`未登录`}),children:o?(0,W.jsxs)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm`,children:[a.auth?.email&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`dt`,{className:`text-muted`,children:`账号`}),(0,W.jsx)(`dd`,{className:`break-all`,children:a.auth.email})]}),a.auth?.orgName&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`dt`,{className:`text-muted`,children:`组织`}),(0,W.jsx)(`dd`,{className:`break-all`,children:a.auth.orgName})]}),!!(a.auth?.subscriptionType||a.account?.subscriptionType)&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`dt`,{className:`text-muted`,children:`套餐`}),(0,W.jsx)(`dd`,{children:String(a.account?.subscriptionType??a.auth?.subscriptionType)})]}),(0,W.jsx)(`dt`,{className:`text-muted`,children:`方式`}),(0,W.jsx)(`dd`,{children:a.auth?.authMethod})]}):(0,W.jsxs)(`div`,{role:`alert`,className:`space-y-1 text-sm`,children:[(0,W.jsx)(`p`,{className:`font-medium text-danger`,children:`CLI 未登录`}),(0,W.jsxs)(`p`,{children:[`请在这台机器的终端运行 `,(0,W.jsx)(`code`,{className:`rounded bg-surface-2 px-1.5 py-0.5 font-mono`,children:`claude auth login`}),` 登录,然后回到这里刷新。`]}),(0,W.jsxs)(`p`,{className:`text-xs text-muted`,children:[`配置目录:`,a.configDir]})]})}),(0,W.jsx)(Z,{title:`套餐额度`,children:a.usage?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(bt,{label:`5 小时窗口`,w:a.usage.fiveHour}),(0,W.jsx)(bt,{label:`7 天窗口`,w:a.usage.sevenDay}),a.usage.extra.map(e=>(0,W.jsx)(bt,{label:e.label,w:e},e.label))]}):(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:o?`这个账号没有可显示的额度信息。`:`登录后显示。`})}),(0,W.jsxs)(Z,{icon:(0,W.jsx)(e,{}),title:`CLI`,className:`lg:col-span-2`,children:[(0,W.jsxs)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm`,children:[(0,W.jsx)(`dt`,{className:`text-muted`,children:`版本`}),(0,W.jsx)(`dd`,{"data-testid":`cli-version`,children:a.version??`—`}),(0,W.jsx)(`dt`,{className:`text-muted`,children:`当前模型`}),(0,W.jsx)(`dd`,{className:`break-all`,children:a.model??`—`}),(0,W.jsx)(`dt`,{className:`text-muted`,children:`配置目录`}),(0,W.jsx)(`dd`,{className:`break-all font-mono text-xs`,children:a.configDir})]}),a.status.filter(e=>e.title!==`Session`).map(e=>(0,W.jsxs)(`div`,{className:`mt-3`,children:[(0,W.jsx)(`h4`,{className:`text-xs font-medium uppercase tracking-wide text-muted`,children:e.title}),(0,W.jsx)(`dl`,{className:`mt-1 grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm`,children:e.rows.map(e=>(0,W.jsxs)(`div`,{className:`contents`,children:[(0,W.jsx)(`dt`,{className:`text-muted`,children:e.label}),(0,W.jsx)(`dd`,{className:`break-all`,children:e.value})]},e.label))})]},e.title)),a.errors.length>0&&(0,W.jsx)(`p`,{className:`mt-2 text-xs text-muted`,children:a.errors.join(`;`)})]})]}),(0,W.jsxs)(Z,{icon:(0,W.jsx)(h,{}),title:`健康检查(claude doctor)`,actions:(0,W.jsx)(m,{size:`sm`,icon:(0,W.jsx)(h,{}),onClick:()=>r.refetch(),loading:r.isFetching,children:r.isFetching?`检查中…`:r.data?`重新检查`:`运行检查`}),children:[(0,W.jsx)(Y,{error:r.error}),r.data?(0,W.jsx)(`pre`,{className:`max-h-[60vh] overflow-auto whitespace-pre-wrap break-words rounded-lg bg-surface-2/60 p-3 font-mono text-xs leading-relaxed`,"data-testid":`doctor-output`,children:r.data.text}):!r.isFetching&&(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`运行 claude doctor,检查安装、自动更新、配置文件和 MCP 是否正常。需要几秒钟。`})]})]})}var St=[{path:`general`,label:`通用`,cmd:``},{path:`memory`,label:`记忆`,cmd:`/memory`},{path:`permissions`,label:`权限规则`,cmd:`/permissions`},{path:`mcp`,label:`MCP`,cmd:`/mcp`},{path:`plugins`,label:`插件`,cmd:`/plugin`},{path:`skills`,label:`技能`,cmd:`/skills`},{path:`hooks`,label:`钩子`,cmd:`/hooks`},{path:`agents`,label:`Agents`,cmd:`/agents`},{path:`config`,label:`设置`,cmd:`/config`},{path:`account`,label:`账号与状态`,cmd:`/usage /status /doctor`}],Ct={general:(0,W.jsx)(t,{}),memory:(0,W.jsx)(f,{}),permissions:(0,W.jsx)(u,{}),mcp:(0,W.jsx)(r,{}),plugins:(0,W.jsx)(c,{}),skills:(0,W.jsx)(d,{}),hooks:(0,W.jsx)(a,{}),agents:(0,W.jsx)(x,{}),config:(0,W.jsx)(l,{}),account:(0,W.jsx)(ie,{})};function wt(){let[e]=P(),{pathname:t}=I(),n=/^\/settings(?:\/general)?\/?$/.test(t),r=e.get(`p`)??``,i=r?`?p=${encodeURIComponent(r)}`:``;return(0,W.jsx)(`main`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:(0,W.jsxs)(`div`,{className:`mx-auto max-w-6xl px-4 pb-24 pt-5 md:px-8 md:pt-8`,children:[(0,W.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-x-4 gap-y-2 md:mb-6`,children:[(0,W.jsxs)(`div`,{className:`mr-auto min-w-0`,children:[(0,W.jsx)(`h1`,{className:`text-3xl`,children:`设置`}),(0,W.jsx)(`p`,{className:`mt-0.5 text-xs text-muted`,children:n?`界面偏好保存在当前浏览器。`:`直接读写 Claude CLI 的配置文件,改动在 CLI 里同样生效。`})]}),!n&&(0,W.jsx)(Et,{pid:r})]}),(0,W.jsxs)(`div`,{className:`md:flex md:gap-8`,children:[(0,W.jsx)(Tt,{qs:i}),(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,W.jsxs)(ge,{children:[(0,W.jsx)(F,{path:`general`,element:(0,W.jsx)(Me,{})}),(0,W.jsx)(F,{path:`memory`,element:(0,W.jsx)(Fe,{})}),(0,W.jsx)(F,{path:`permissions`,element:(0,W.jsx)(Ue,{})}),(0,W.jsx)(F,{path:`mcp`,element:(0,W.jsx)(Je,{})}),(0,W.jsx)(F,{path:`plugins`,element:(0,W.jsx)(rt,{})}),(0,W.jsx)(F,{path:`skills`,element:(0,W.jsx)(st,{})}),(0,W.jsx)(F,{path:`hooks`,element:(0,W.jsx)(lt,{})}),(0,W.jsx)(F,{path:`agents`,element:(0,W.jsx)(pt,{})}),(0,W.jsx)(F,{path:`config`,element:(0,W.jsx)(gt,{})}),(0,W.jsx)(F,{path:`account`,element:(0,W.jsx)(xt,{})}),(0,W.jsx)(F,{path:`*`,element:(0,W.jsx)(he,{to:`/settings/general${i}`,replace:!0})})]},r)})]})]})})}function Tt({qs:e}){let t=(0,V.useRef)(null),{pathname:n}=I();return(0,V.useEffect)(()=>{t.current?.querySelector(`[aria-current="page"]`)?.scrollIntoView({block:`nearest`,inline:`center`})},[n]),(0,W.jsx)(`nav`,{ref:t,"aria-label":`设置分类`,className:`-mx-4 mb-5 flex gap-1 overflow-x-auto px-4 pb-1 [scrollbar-width:none] md:sticky md:top-0 md:mx-0 md:mb-0 md:w-48 md:shrink-0 md:flex-col md:self-start md:overflow-visible md:px-0 [&::-webkit-scrollbar]:hidden`,children:St.map(t=>(0,W.jsxs)(me,{to:`/settings/${t.path}${e}`,title:t.cmd||void 0,className:({isActive:e})=>_(`flex h-10 shrink-0 items-center gap-2 whitespace-nowrap rounded-md border px-3 text-sm transition-colors md:h-8 md:px-2.5`,e?`border-border bg-surface font-medium text-text shadow-sm`:`border-transparent text-muted hover:bg-surface-2 hover:text-text`),children:[(0,W.jsx)(`span`,{className:`shrink-0`,"aria-hidden":!0,children:Ct[t.path]}),t.label]},t.path))})}function Et({pid:e}){let t=ue(),n=pe(),r=I();return(0,W.jsxs)(`div`,{className:`flex w-full min-w-0 items-center gap-2 text-sm sm:w-auto`,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-xs text-muted`,children:`项目级配置`}),(0,W.jsx)(L,{label:`配置所属项目`,value:e,icon:(0,W.jsx)(ee,{className:`shrink-0 text-muted`}),className:`min-w-0 flex-1 sm:w-64 sm:flex-none`,menuWidth:320,onChange:e=>n(`${r.pathname}${e?`?p=${encodeURIComponent(e)}`:``}`),options:[{value:``,label:`仅用户级`,text:`仅用户级`,hint:`只看 ~/.claude 下的配置`},...(t.data??[]).map(e=>({value:e.id,label:e.name,text:e.name,hint:(0,W.jsx)(`span`,{className:`font-mono`,children:e.path})}))]})]})}export{wt as SettingsPage};
@@ -0,0 +1 @@
1
+ import{K as e,S as t,U as n,a as r,at as i,et as a,ht as o,k as s,lt as c,mt as l,n as u,p as d,s as f,u as p,ut as m,v as h,vt as g,y as _}from"./Form-BKTwiYyw.js";import{b as v,m as y,r as b}from"./Modal-g2rv8I_n.js";import{I as x,g as S,h as C,m as w,t as T}from"./lib-DlcVMUqT.js";import{y as E}from"./index-DQh72lEx.js";var D=g(o(),1),O=l();function k(){let{pid:o}=C(),l=x(),g=w(),b=S({queryKey:[`worktrees`,o],queryFn:()=>m(`/api/projects/${o}/worktrees`)}),[k,j]=(0,D.useState)(``),[M,N]=(0,D.useState)(),P=()=>{l.invalidateQueries({queryKey:[`worktrees`,o]}),l.invalidateQueries({queryKey:[`sessions`,o]})},F=v({mutationFn:()=>m(`/api/projects/${o}/worktrees`,{method:`POST`,json:{name:k,session:!0}}),onSuccess:({sessionId:e})=>{j(``),P(),e&&g(`/p/${o}/s/${e}`)}}),I=v({mutationFn:e=>m(`/api/projects/${o}/worktrees/${encodeURIComponent(e)}/sessions`,{method:`POST`}),onSuccess:({id:e})=>{P(),g(`/p/${o}/s/${e}`)}});return(0,O.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[(0,O.jsx)(E,{projectId:o,children:(0,O.jsx)(i,{variant:`ghost`,size:`sm`,icon:(0,O.jsx)(e,{}),onClick:P,loading:b.isFetching,children:`刷新`})}),(0,O.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:(0,O.jsx)(`div`,{className:`mx-auto max-w-4xl space-y-5 px-4 py-6 md:px-8`,children:b.isPending?(0,O.jsx)(r,{rows:4}):b.isError?(0,O.jsx)(`p`,{className:`text-sm text-danger`,children:b.error.message}):b.data.isRepo?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`section`,{className:`rounded-xl border border-border bg-surface p-4 shadow-sm md:p-5`,children:[(0,O.jsx)(`h2`,{className:`text-xl`,children:`git worktree`}),(0,O.jsxs)(`p`,{className:`mt-1 text-sm leading-relaxed text-muted`,children:[`为一个任务开独立的工作区:在 `,(0,O.jsx)(`span`,{className:`font-mono text-xs`,children:`.claude/worktrees/名称`}),` 检出一份代码(分支 `,(0,O.jsx)(`span`,{className:`font-mono text-xs`,children:`worktree-名称`}),`,从当前`,` `,(0,O.jsx)(`span`,{className:`font-mono text-xs`,children:b.data.branch??`HEAD`}),` 开出,与 CLI 的 `,(0,O.jsx)(`span`,{className:`font-mono text-xs`,children:`--worktree`}),` 相同),在里面开的会话只改这份代码,多个会话可以并行互不干扰。`]}),(0,O.jsxs)(`form`,{className:`mt-4 flex flex-wrap gap-2`,onSubmit:e=>{e.preventDefault(),k.trim()&&F.mutate()},children:[(0,O.jsx)(`input`,{"aria-label":`worktree 名称`,placeholder:`名称,如 fix-login`,value:k,onChange:e=>j(e.target.value),onKeyDown:e=>e.key===`Escape`&&j(``),className:`${p} flex-1 basis-48`}),(0,O.jsx)(i,{type:`submit`,variant:`primary`,icon:(0,O.jsx)(n,{}),disabled:!k.trim(),loading:F.isPending,children:F.isPending?`创建中…`:`创建并开始会话`})]}),F.error&&(0,O.jsxs)(`p`,{role:`alert`,className:`mt-2 flex items-center gap-1.5 text-xs text-danger`,children:[(0,O.jsx)(d,{className:`shrink-0`}),F.error instanceof c?F.error.message:`创建失败`]})]}),(0,O.jsxs)(`section`,{children:[(0,O.jsxs)(`div`,{className:`mb-2 flex items-baseline justify-between`,children:[(0,O.jsx)(`h3`,{className:`text-lg`,children:`已有的 worktree`}),(0,O.jsx)(`span`,{className:`text-xs text-muted`,children:b.data.worktrees.length?`${b.data.worktrees.length} 个`:``})]}),(0,O.jsx)(`ul`,{className:`grid gap-3 lg:grid-cols-2`,"aria-label":`worktree 列表`,children:b.data.worktrees.map(e=>(0,O.jsxs)(`li`,{className:`flex min-w-0 flex-col rounded-xl border border-border bg-surface shadow-sm`,"data-testid":`worktree`,"data-name":e.name,children:[(0,O.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 px-4 pt-3`,children:[(0,O.jsx)(h,{className:`shrink-0 text-muted`}),(0,O.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono font-medium`,children:e.name}),e.exists&&(0,O.jsx)(i,{size:`sm`,icon:(0,O.jsx)(_,{}),onClick:()=>I.mutate(e.name),loading:I.isPending&&I.variables===e.name,children:`新会话`}),(0,O.jsx)(i,{size:`sm`,variant:`ghost`,icon:(0,O.jsx)(a,{}),className:`text-danger hover:text-danger`,onClick:()=>N(e),children:`清理`})]}),(0,O.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-4 pt-1.5`,children:[(0,O.jsx)(f,{mono:!0,children:e.branch??`分离于 ${e.head}`}),(0,O.jsx)(f,{tone:e.exists?e.dirty?`warn`:`ok`:`danger`,"data-testid":`worktree-status`,children:e.exists?e.dirty?`${e.changes} 个未提交的改动`:`没有未提交的改动`:`目录已不存在`}),e.locked&&(0,O.jsx)(f,{children:`已锁定`}),(0,O.jsxs)(f,{children:[e.sessions.length,` 个会话`]})]}),(0,O.jsxs)(`p`,{className:`flex min-w-0 items-center gap-1.5 px-4 pb-3 pt-2 font-mono text-[11px] text-muted`,title:e.path,children:[(0,O.jsx)(s,{size:12,className:`shrink-0`}),(0,O.jsx)(`span`,{className:`truncate`,children:e.path})]}),e.sessions.length>0&&(0,O.jsx)(`ul`,{className:`mt-auto border-t border-border py-1`,children:e.sessions.map(e=>(0,O.jsx)(`li`,{children:(0,O.jsxs)(T,{to:`/p/${o}/s/${e.id}`,className:`flex min-w-0 items-center gap-2 px-4 py-2 text-sm hover:bg-surface-2 md:py-1.5`,"data-testid":`worktree-session`,children:[(0,O.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.title||(e.draft?`新会话`:`未命名会话`)}),(0,O.jsx)(`span`,{className:`shrink-0 text-xs text-muted`,children:y(e.lastModified)}),(0,O.jsx)(t,{size:12,className:`shrink-0 text-muted`})]})},e.id))})]},e.path))}),b.data.worktrees.length===0&&(0,O.jsx)(u,{icon:(0,O.jsx)(h,{size:16}),title:`还没有 worktree`,compact:!0,children:`在上面填一个任务名,就会开出一份独立的代码并直接进入新会话。改完后可以在这里清理,分支会保留。`})]})]}):(0,O.jsxs)(u,{icon:(0,O.jsx)(h,{size:16}),title:`不是 git 仓库`,testId:`not-git`,children:[`这个项目不是 git 仓库,不能创建 worktree。在项目目录里运行 `,(0,O.jsx)(`code`,{className:`font-mono`,children:`git init`}),` 并提交一次后再来。`]})})}),M&&(0,O.jsx)(A,{pid:o,wt:M,onClose:()=>N(void 0),onDone:P})]})}function A({pid:e,wt:t,onClose:n,onDone:r}){let[a,o]=(0,D.useState)(!1),s=v({mutationFn:()=>m(`/api/projects/${e}/worktrees/${encodeURIComponent(t.name)}${t.dirty?`?force=1`:``}`,{method:`DELETE`}),onSuccess:()=>{r(),n()}}),l=t.dirty&&!a;return(0,O.jsxs)(b,{title:`清理 worktree ${t.name}?`,onClose:n,testId:`remove-worktree-dialog`,children:[(0,O.jsxs)(`div`,{className:`space-y-2 text-sm text-muted`,children:[(0,O.jsxs)(`p`,{children:[`会执行 `,(0,O.jsx)(`span`,{className:`font-mono text-xs`,children:`git worktree remove`}),`,删除目录 `,(0,O.jsx)(`span`,{className:`break-all font-mono text-xs`,children:t.path}),`。 分支 `,(0,O.jsx)(`span`,{className:`font-mono text-xs`,children:t.branch}),` 保留,已提交的内容不会丢。`]}),t.sessions.length>0&&(0,O.jsxs)(`p`,{children:[`这里的 `,t.sessions.length,` 个会话会停止并从列表中消失,对话记录仍保存在 ~/.claude 中。`]}),t.dirty&&(0,O.jsxs)(`p`,{className:`flex items-start gap-2 rounded-md border border-danger/30 bg-danger/5 px-3 py-2 text-danger`,"data-testid":`dirty-warning`,children:[(0,O.jsx)(d,{className:`mt-0.5 shrink-0`}),`这个 worktree 里有 `,t.changes,` 个未提交的改动,删除后这些改动会永久丢失。`]})]}),s.error&&(0,O.jsx)(`p`,{role:`alert`,className:`mt-2 text-xs text-danger`,children:s.error instanceof c?s.error.message:`删除失败`}),(0,O.jsxs)(`div`,{className:`mt-5 flex justify-end gap-2`,children:[(0,O.jsx)(i,{variant:`ghost`,onClick:n,children:`取消`}),l?(0,O.jsx)(i,{variant:`danger`,onClick:()=>o(!0),children:`仍然删除…`}):(0,O.jsx)(i,{variant:`danger`,loading:s.isPending,onClick:()=>s.mutate(),children:t.dirty?`确认丢弃改动并删除`:`确认删除`})]})]})}export{k as WorktreesView};
@@ -0,0 +1 @@
1
+ var e=[Object.freeze(JSON.parse(`{"displayName":"ABAP","fileTypes":["abap","ABAP"],"foldingStartMarker":"/\\\\*\\\\*|\\\\{\\\\s*$","foldingStopMarker":"\\\\*\\\\*/|^\\\\s*}","name":"abap","patterns":[{"captures":{"1":{"name":"punctuation.definition.comment.abap"}},"match":"^\\\\*.*\\\\n?","name":"comment.line.full.abap"},{"captures":{"1":{"name":"punctuation.definition.comment.abap"}},"match":"\\".*\\\\n?","name":"comment.line.partial.abap"},{"match":"(?<!\\\\S)##.*?(?=([,.:\\\\s]))","name":"comment.line.pragma.abap"},{"match":"(?i)(?<=[-~\\\\s])(?<=[-=]>)([/_a-z][/-9_a-z]*)(?=\\\\s+(?:|[-*+/]|&&?)=\\\\s+)","name":"variable.other.abap"},{"match":"\\\\b[0-9]+(\\\\b|[,.])","name":"constant.numeric.abap"},{"match":"(?i)(^|\\\\s+)((P(?:UBLIC|RIVATE|ROTECTED))\\\\sSECTION)(?=\\\\s+|[.:])","name":"storage.modifier.class.abap"},{"begin":"(?<!\\\\\\\\)(\\\\|)(.*?)","beginCaptures":{"1":{"name":"constant.character.escape.abap"}},"end":"(?<!\\\\\\\\)(\\\\||(\\\\\\\\\\\\\\\\\\\\|))","endCaptures":{"1":{"name":"constant.character.escape.abap"}},"name":"string.interpolated.abap","patterns":[{"match":"(\\\\{ )|( })","name":"constant.character.escape"},{"match":"\\\\\\\\\\\\|","name":"constant.character.escape.abap"},{"match":"(?i)(?<=\\\\s)(align|alpha|case|country|currency|date|decimals|exponent|number|pad|sign|style|time|timestamp|timezone|width|xsd|zero)(?=\\\\s=)","name":"entity.name.property.stringtemplate.abap"},{"match":"(?i)(?<==\\\\s)(center|engineering|environment|in|iso|left|leftplus|leftspace|lower|no|out|raw|right|rightplus|rightspace|scale_preserving|scale_preserving_scientific|scientific|scientific_with_leading_zero|sign_as_postfix|simple|space|upper|user|yes)(?=\\\\s)","name":"entity.value.property.stringtemplate.abap"}]},{"begin":"'","end":"'","name":"string.quoted.single.abap","patterns":[{"match":"''","name":"constant.character.escape.abap"}]},{"begin":"\`","end":"\`","name":"string.quoted.single.abap","patterns":[{"match":"\`\`","name":"constant.character.escape.abap"}]},{"begin":"(?i)^\\\\s*(class)\\\\s([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.block.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","name":"meta.block.begin.implementation.abap","patterns":[{"match":"(?i)(^|\\\\s+)(definition|implementation|public|inheriting\\\\s+from|final|deferred|abstract|shared\\\\s+memory\\\\s+enabled|(global|local)*\\\\s*friends|(create\\\\s+(p(?:ublic|rotected|rivate)))|for\\\\s+behavior\\\\s+of|for\\\\s+testing|risk\\\\s+level\\\\s+(critical|dangerous|harmless))|duration\\\\s(short|medium|long)(?=\\\\s+|\\\\.)","name":"storage.modifier.class.abap"},{"begin":"(?=[A-Z_a-z][0-9A-Z_a-z]*)","contentName":"entity.name.type.block.abap","end":"(?![0-9A-Z_a-z])","patterns":[{"include":"#generic_names"}]}]},{"begin":"(?i)^\\\\s*(method)\\\\s(?:([/_a-z][/-9_a-z]*)~)?([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"},"3":{"name":"entity.name.function.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(BY(?:\\\\s+DATABASE(\\\\s+PROCEDURE|\\\\s+FUNCTION|\\\\s+GRAPH\\\\s+WORKSPACE)|\\\\s+KERNEL\\\\s+MODULE))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=^|\\\\s)(FOR\\\\s+(HDB|LLANG))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=\\\\s)(OPTIONS\\\\s+(READ-ONLY|DETERMINISTIC|SUPPRESS\\\\s+SYNTAX\\\\s+ERRORS))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=^|\\\\s)(LANGUAGE\\\\s+(SQLSCRIPT|SQL|GRAPH))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"captures":{"1":{"name":"storage.modifier.method.abap"}},"match":"(?i)(?<=\\\\s)(USING)\\\\s+([/_a-z][/-9=>_a-z]*)+(?=\\\\s+|\\\\.)"},{"begin":"(?=[A-Z_a-z][0-9A-Z_a-z]*)","end":"(?![0-9A-Z_a-z])","patterns":[{"include":"#generic_names"}]}]},{"begin":"(?i)^\\\\s*(INTERFACE)\\\\s([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(DEFERRED|PUBLIC)(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"}]},{"begin":"(?i)^\\\\s*(FORM)\\\\s([/_a-z][-/-9?_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(USING|TABLES|CHANGING|RAISING|IMPLEMENTATION|DEFINITION)(?=\\\\s+|\\\\.)","name":"storage.modifier.form.abap"},{"include":"#abaptypes"},{"include":"#keywords_followed_by_braces"}]},{"match":"(?i)(end(?:class|method|form|interface))","name":"storage.type.block.end.abap"},{"match":"(?i)(<[A-Z_a-z][0-9A-Z_a-z]*>)","name":"variable.other.field.symbol.abap"},{"include":"#keywords"},{"include":"#abap_constants"},{"include":"#reserved_names"},{"include":"#operators"},{"include":"#builtin_functions"},{"include":"#abaptypes"},{"include":"#system_fields"},{"include":"#sql_functions"},{"include":"#sql_types"}],"repository":{"abap_constants":{"match":"(?i)(?<=\\\\s)(initial|null|@?space|@?abap_true|@?abap_false|@?abap_undefined|table_line|%_final|%_hints|%_predefined|col_background|col_group|col_heading|col_key|col_negative|col_normal|col_positive|col_total|adabas|as400|db2|db6|hdb|oracle|sybase|mssqlnt|pos_low|pos_high)(?=[,.\\\\s])","name":"constant.language.abap"},"abaptypes":{"patterns":[{"match":"(?i)\\\\s(abap_bool|string|xstring|any|clike|csequence|numeric|xsequence|decfloat|decfloat16|decfloat34|utclong|simple|int8|[cdfinptx])(?=[,.\\\\s])","name":"support.type.abap"},{"match":"(?i)\\\\s(TYPE|REF|TO|LIKE|LINE|OF|STRUCTURE|STANDARD|SORTED|HASHED|INDEX|TABLE|WITH|UNIQUE|NON-UNIQUE|SECONDARY|DEFAULT|KEY)(?=[,.\\\\s])","name":"keyword.control.simple.abap"}]},"arithmetic_operator":{"match":"(?i)(?<=\\\\s)([-*+]|\\\\*\\\\*|[%/]|DIV|MOD|BIT-AND|BIT-OR|BIT-XOR|BIT-NOT)(?=\\\\s)","name":"keyword.control.simple.abap"},"builtin_functions":{"match":"(?i)(?<=\\\\s)(abs|sign|ceil|floor|trunc|frac|acos|asin|atan|cos|sin|tan|cosh|sinh|tanh|exp|log|log10|sqrt|strlen|xstrlen|charlen|lines|numofchar|dbmaxlen|round|rescale|nmax|nmin|cmax|cmin|boolc|boolx|xsdbool|contains|contains_any_of|contains_any_not_of|matches|line_exists|ipow|char_off|count|count_any_of|count_any_not_of|distance|condense|concat_lines_of|escape|find|find_end|find_any_of|find_any_not_of|insert|match|repeat|replace|reverse|segment|shift_left|shift_right|substring|substring_after|substring_from|substring_before|substring_to|to_upper|to_lower|to_mixed|from_mixed|translate|bit-set|line_index)(?=\\\\()","name":"entity.name.function.builtin.abap"},"comparison_operator":{"match":"(?i)(?<=\\\\s)([<>]|<=|>=|=|<>|eq|ne|lt|le|gt|ge|cs|cp|co|cn|ca|na|ns|np|byte-co|byte-cn|byte-ca|byte-na|byte-cs|byte-ns|[moz])(?=\\\\s)","name":"keyword.control.simple.abap"},"control_keywords":{"match":"(?i)(^|\\\\s)(at|case|catch|continue|do|elseif|else|endat|endcase|endcatch|enddo|endif|endloop|endon|endtry|endwhile|if|loop|on|raise|try|while)(?=[.:\\\\s])","name":"keyword.control.flow.abap"},"generic_names":{"match":"[A-Z_a-z][0-9A-Z_a-z]*"},"keywords":{"patterns":[{"include":"#main_keywords"},{"include":"#text_symbols"},{"include":"#control_keywords"},{"include":"#keywords_followed_by_braces"}]},"keywords_followed_by_braces":{"captures":{"1":{"name":"keyword.control.simple.abap"},"2":{"name":"variable.other.abap"}},"match":"(?i)\\\\b(data|value|field-symbol|final|reference|resumable)\\\\((<?[/_a-z][/-9_a-z]*>?)\\\\)"},"logical_operator":{"match":"(?i)(?<=\\\\s)(not|or|and)(?=\\\\s)","name":"keyword.control.simple.abap"},"main_keywords":{"match":"(?i)(?<=^|\\\\s)(abap-source|abstract|accept|accepting|access|according|action|activation|actual|add|add-corresponding|adjacent|after|alias|aliases|all|allocate|amdp|analysis|analyzer|append|appending|application|archive|area|arithmetic|as|ascending|assert|assign|assigned|assigning|association|asynchronous|at|attributes|authority|authority-check|authorization|auto|back|background|backward|badi|base|before|begin|behavior|between|binary|bit|blanks??|blocks??|bound|boundaries|bounds|boxed|break|break-point|buffer|by|bypassing|byte|byte-order|call|calling|cast|casting|cds|centered|change|changing|channels|char-to-hex|character|check|checkbox|cid|circular|class|class-data|class-events|class-methods??|class-pool|cleanup|clear|clients??|clock|clone|close|cnt|code|collect|color|column|comments??|commit|common|communication|comparing|components??|compression|compute|concatenate|cond|condense|condition|connection|constants??|contexts??|controls??|conv|conversion|convert|copy|corresponding|count|country|cover|create|currency|current|cursor|customer-function|data|database|datainfo|dataset|date|daylight|ddl|deallocate|decimals|declarations|deep|default|deferred|define|delete|deleting|demand|descending|describe|destination|detail|determine|dialog|did|directory|discarding|display|display-mode|distance|distinct|divide|divide-corresponding|dummy|duplicates??|duration|during|dynpro|edit|editor-call|empty|enabled|enabling|encoding|end|end-enhancement-section|end-of-definition|end-of-page|end-of-selection|end-test-injection|end-test-seam|endenhancement|endexec|endfunction|endian|ending|endmodule|endprovide|endselect|endwith|enhancement|enhancement-point|enhancement-section|enhancements|entities|entity|entries|entry|enum|equiv|errors|escape|escaping|events??|exact|except|exception|exception-table|exceptions|excluding|exec|execute|exists|exit|exit-command|expanding|explicit|exponent|export|exporting|extended|extension|extract|fail|failed|features|fetch|field|field-groups|field-symbols|fields|file|fill|filters??|final|find|first|first-line|fixed-point|flush|following|for|format|forward|found|frames??|free|from|full|function|function-pool|generate|get|giving|graph|groups??|handler??|hashed|having|headers??|heading|help-id|help-request|hide|hint|hold|hotspot|icon|id|identification|identifier|ignore|ignoring|immediately|implemented|implicit|import|importing|in|inactive|incl|includes??|including|increment|index|index-line|indicators|infotypes|inheriting|init|initial|initialization|inner|input|insert|instances??|intensified|interface|interface-pool|interfaces|internal|intervals|into|inverse|inverted-date|is|job|join|keep|keeping|kernel|keys??|keywords|kind|language|last|late|layout|leading|leave|left|left-justified|legacy|length|let|levels??|like|line|line-count|line-selection|line-size|linefeed|lines|link|list|list-processing|listbox|load|load-of-program|locale??|locks??|log-point|logical|lower|mapped|mapping|margin|mark|mask|match|matchcode|maximum|members|memory|mesh|message|message-id|messages|messaging|methods??|mode|modif|modifier|modify|module|move|move-corresponding|multiply|multiply-corresponding|name|nametab|native|nested|nesting|new|new-line|new-page|new-section|next|no-display|no-extension|no-gaps??|no-grouping|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unicode|non-unique|number|objects??|objmgr|obligatory|occurences??|occurrences??|occurs|of|offset|on|only|open|optional|options??|order|others|out|outer|output|output-length|overflow|overlay|pack|package|padding|page|parameter|parameter-table|parameters|part|partially|pcre|perform|performing|permissions|pf-status|places|pool|position|pragmas|preceding|precompiled|preferred|preserving|primary|print|print-control|private|privileged|procedure|process|program|property|protected|provide|push|pushbutton|put|query|queue-only|queueonly|quickinfo|radiobutton|raising|ranges??|read|read-only|received??|receiving|redefinition|reduce|ref|reference|refresh|regex|reject|renaming|replace|replacement|replacing|report|reported|request|requested|required|reserve|reset|resolution|respecting|response|restore|results??|resumable|resume|retry|return|returning|right|right-justified|rollback|rows|rp-provide-from-last|run|sap|sap-spool|save|saving|scan|screen|scroll|scroll-boundary|scrolling|search|seconds|section|select|select-options|selection|selection-screen|selection-sets??|selection-table|selections|send|separated??|session|set|shared|shift|shortdump|shortdump-id|sign|simple|simulation|single|size|skip|skipping|smart|some|sort|sortable|sorted|source|specified|split|spool|spots|sql|stable|stamp|standard|start-of-selection|starting|state|statements??|statics??|statusinfo|step|step-loop|stop|structures??|style|subkey|submatches|submit|subroutine|subscreen|substring|subtract|subtract-corresponding|suffix|sum|summary|supplied|supply|suppress|switch|symbol|syntax-check|syntax-trace|system-call|system-exceptions|tab|tabbed|tables??|tableview|tabstrip|target|tasks??|test|test-injection|test-seam|testing|text|textpool|then|throw|times??|title|titlebar|to|tokens|top-lines|top-of-page|trace-file|trace-table|trailing|transaction|transfer|transformation|translate|transporting|trmac|truncate|truncation|type|type-pools??|types|uline|unassign|unbounded|under|unicode|union|unique|unit|unix|unpack|until|unwind|up|update|upper|user|user-command|using|utf-8|uuid|valid|validate|value|value-request|values|vary|varying|version|via|visible|wait|when|where|windows??|with|with-heading|with-title|without|word|work|workspace|write|xml|zone)(?=[,.:\\\\s])","name":"keyword.control.simple.abap"},"operators":{"patterns":[{"include":"#other_operator"},{"include":"#arithmetic_operator"},{"include":"#comparison_operator"},{"include":"#logical_operator"}]},"other_operator":{"match":"(?<=\\\\s)(&&?|\\\\?=|\\\\+=|-=|/=|\\\\*=|&&=|&=)(?=\\\\s)","name":"keyword.control.simple.abap"},"reserved_names":{"match":"(?i)(?<=\\\\s)(me|super)(?=[,.\\\\s]|->)","name":"constant.language.abap"},"sql_functions":{"match":"(?i)(?<=\\\\s)(abap_system_timezone|abap_user_timezone|abs|add_days|add_months|allow_precision_loss|as_geo_json|avg|bintohex|cast|ceil|coalesce|concat_with_space|concat|corr_spearman|corr|count|currency_conversion|datn_add_days|datn_add_months|datn_days_between|dats_add_days|dats_add_months|dats_days_between|dats_from_datn|dats_is_valid|dats_tims_to_tstmp|dats_to_datn|dayname|days_between|dense_rank|division|div|extract_day|extract_hour|extract_minute|extract_month|extract_second|extract_year|first_value|floor|grouping|hextobin|initcap|instr|is_valid|lag|last_value|lead|left|length|like_regexpr|locate_regexpr_after|locate_regexpr|locate|lower|lpad|ltrim|max|median|min|mod|monthname|ntile|occurrences_regexpr|over|product|rank|replace_regexpr|replace|rigth|round|row_number|rpad|rtrim|stddev|string_agg|substring_regexpr|substring|sum|tims_from_timn|tims_is_valid|tims_to_timn|to_blob|to_clob|tstmp_add_seconds|tstmp_current_utctimestamp|tstmp_is_valid|tstmp_seconds_between|tstmp_to_dats|tstmp_to_dst|tstmp_to_tims|tstmpl_from_utcl|tstmpl_to_utcl|unit_conversion|upper|utcl_add_seconds|utcl_current|utcl_seconds_between|uuid|var|weekday)(?=\\\\()","name":"entity.name.function.sql.abap"},"sql_types":{"match":"(?i)(?<=\\\\s)(char|clnt|cuky|curr|datn|dats|dec|decfloat16|decfloat34|fltp|int1|int2|int4|int8|lang|numc|quan|raw|sstring|timn|tims|unit|utclong)(?=[()\\\\s])","name":"entity.name.type.sql.abap"},"system_fields":{"captures":{"1":{"name":"variable.language.abap"},"2":{"name":"variable.language.abap"}},"match":"(?i)\\\\b(sy)-(abcde|batch|binpt|calld|callr|colno|cpage|cprog|cucol|curow|datar|datlo|datum|dayst|dbcnt|dbnam|dbsysc|dyngr|dynnr|fdayw|fdpos|host|index|langu|ldbpg|lilli|linct|linno|linsz|lisel|listi|loopc|lsind|macol|mandt|marow|modno|msgid|msgli|msgno|msgty|msgv[1-4]|opsysc|pagno|pfkey|repid|saprl|scols|slset|spono|srows|staco|staro|stepl|subrc|sysid|tabix|tcode|tfill|timlo|title|tleng|tvar[0-9]|tzone|ucomm|uline|uname|uzeit|vline|wtitl|zonlo)(?=[.\\\\s])"},"text_symbols":{"captures":{"1":{"name":"keyword.control.simple.abap"},"2":{"name":"constant.numeric.abap"}},"match":"(?i)(?<=^|\\\\s)(text)-([0-9A-Z]{1,3})(?=[,.:\\\\s])"}},"scopeName":"source.abap"}`))];export{e as default};
@@ -0,0 +1 @@
1
+ var e=[Object.freeze(JSON.parse(`{"displayName":"ActionScript","fileTypes":["as"],"name":"actionscript-3","patterns":[{"include":"#comments"},{"include":"#package"},{"include":"#class"},{"include":"#interface"},{"include":"#namespace_declaration"},{"include":"#import"},{"include":"#mxml"},{"include":"#strings"},{"include":"#regexp"},{"include":"#variable_declaration"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#other_operators"},{"include":"#arithmetic_operators"},{"include":"#logical_operators"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#control_keywords"},{"include":"#other_keywords"},{"include":"#use_namespace"},{"include":"#functions"},{"include":"#primitive_functions"},{"include":"#function_call"}],"repository":{"arithmetic_operators":{"match":"([-%+/]|(?<!:)\\\\*)","name":"keyword.operator.actionscript.3"},"array_access_operators":{"match":"([]\\\\[])","name":"keyword.operator.actionscript.3"},"class":{"begin":"(^|\\\\s+|;)(\\\\b(dynamic|final|abstract)\\\\b\\\\s+)?(\\\\b(internal|public)\\\\b\\\\s+)?(\\\\b(dynamic|final|abstract)\\\\b\\\\s+)?(?=\\\\bclass\\\\b)","beginCaptures":{"3":{"name":"storage.modifier.actionscript.3"},"5":{"name":"storage.modifier.actionscript.3"},"7":{"name":"storage.modifier.actionscript.3"}},"end":"}","name":"meta.class.actionscript.3","patterns":[{"include":"#class_declaration"},{"include":"#declaration_code_block"},{"include":"#metadata"},{"include":"#method"},{"include":"#comments"},{"include":"#strings"},{"include":"#regexp"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#other_operators"},{"include":"#other_keywords"},{"include":"#use_namespace"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#arithmetic_operators"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#variable_declaration"},{"include":"#object_literal"},{"include":"#conditional_compilation"},{"include":"#primitive_functions"},{"include":"#function_call"}]},"class_declaration":{"begin":"\\\\b(class)\\\\b\\\\s+([$.0-9A-Z_a-z]+|\\\\*)","beginCaptures":{"1":{"name":"storage.type.class.actionscript.3"},"2":{"name":"entity.name.class.actionscript.3"}},"end":"\\\\{","name":"meta.class_declaration.actionscript.3","patterns":[{"include":"#extends"},{"include":"#implements"},{"include":"#comments"}]},"comments":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","end":"\\\\*/","name":"comment.block.documentation.actionscript.3","patterns":[{"match":"@(copy|default|eventType|example|exampleText|includeExample|inheritDoc|internal|param|private|return|see|since|throws)\\\\b","name":"keyword.other.documentation.actionscript.3.asdoc"}]},{"begin":"/\\\\*","end":"\\\\*/","name":"comment.block.actionscript.3"},{"match":"//.*","name":"comment.line.actionscript.3"}]},"conditional_compilation":{"captures":{"2":{"name":"constant.other.actionscript.3"},"3":{"name":"constant.other.actionscript.3"}},"match":"(^|\\\\s+|;)\\\\b(\\\\w+)\\\\b::\\\\b(\\\\w+)\\\\b","name":"meta.conditional.actionscript.3"},"control_keywords":{"match":"\\\\b(if|else|do|while|for|each|continue|return|switch|case|default|break|try|catch|finally|throw|with)\\\\b","name":"keyword.control.actionscript.3"},"declaration_code_block":{"begin":"\\\\{","end":"}","name":"meta.code_block.actionscript.3","patterns":[{"include":"#method"},{"include":"#variable_declaration"},{"include":"#comments"},{"include":"#strings"},{"include":"#regexp"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#other_operators"},{"include":"#arithmetic_operators"},{"include":"#logical_operators"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#control_keywords"},{"include":"#other_keywords"},{"include":"#use_namespace"},{"include":"#functions"},{"include":"#import"},{"include":"#primitive_functions"},{"include":"#function_call"}]},"dynamic_type":{"captures":{"1":{"name":"support.type.actionscript.3"}},"match":"(?<=:)\\\\s*(\\\\*)"},"escapes":{"match":"\\\\\\\\(x\\\\h{2}|[012][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)","name":"constant.character.escape.actionscript.3"},"extends":{"captures":{"1":{"name":"keyword.other.actionscript.3"},"2":{"name":"entity.other.inherited-class.actionscript.3"},"3":{"name":"entity.other.inherited-class.actionscript.3"}},"match":"\\\\b(extends)\\\\b\\\\s+([$.0-9A-Z_a-z]+)\\\\s*(?:,\\\\s*([$.0-9A-Z_a-z]+))*\\\\s*","name":"meta.extends.actionscript.3"},"function_arguments":{"begin":"\\\\(","end":"\\\\)","name":"meta.function_arguments.actionscript.3","patterns":[{"include":"#parameters"},{"include":"#comments"}]},"function_call":{"captures":{"1":{"name":"entity.name.function.actionscript.3"}},"match":"\\\\b([$0-9A-Z_a-z]+)(?=\\\\s*\\\\()"},"functions":{"begin":"\\\\b(function)\\\\b(?:\\\\s+\\\\b([gs]et)\\\\b\\\\s+)?\\\\s*([$0-9A-Z_a-z]+\\\\b)?","beginCaptures":{"1":{"name":"storage.type.function.actionscript.3"},"2":{"name":"storage.modifier.actionscript.3"},"3":{"name":"entity.name.function.actionscript.3"}},"end":"($|;|(?=\\\\{))","name":"meta.function.actionscript.3","patterns":[{"include":"#function_arguments"},{"include":"#return_type"},{"include":"#comments"}]},"guess_constant":{"captures":{"1":{"name":"constant.other.actionscript.3"}},"match":"\\\\b([$A-Z][0-9A-Z_]+)\\\\b"},"guess_type":{"captures":{"1":{"name":"support.type.actionscript.3"}},"match":"\\\\b((?:[$0-9A-Z_a-z]+\\\\.)*[A-Z][0-9A-Z]*[a-z]+[$0-9A-Z_a-z]*)\\\\b"},"implements":{"captures":{"1":{"name":"keyword.other.actionscript.3"},"2":{"name":"entity.other.inherited-class.actionscript.3"},"3":{"name":"entity.other.inherited-class.actionscript.3"}},"match":"\\\\b(implements)\\\\b\\\\s+([$.0-9A-Z_a-z]+)\\\\s*(?:,\\\\s*([$.0-9A-Z_a-z]+))*\\\\s*","name":"meta.implements.actionscript.3"},"import":{"captures":{"2":{"name":"keyword.control.import.actionscript.3"},"3":{"name":"support.type.actionscript.3"}},"match":"(^|\\\\s+|;)\\\\b(import)\\\\b\\\\s+([$.0-9A-Z_a-z]+(?:\\\\.\\\\*)?)\\\\s*(?=;|$)","name":"meta.import.actionscript.3"},"interface":{"begin":"(^|\\\\s+|;)(\\\\b(internal|public)\\\\b\\\\s+)?(?=\\\\binterface\\\\b)","beginCaptures":{"3":{"name":"storage.modifier.actionscript.3"}},"end":"}","name":"meta.interface.actionscript.3","patterns":[{"include":"#interface_declaration"},{"include":"#metadata"},{"include":"#functions"},{"include":"#comments"}]},"interface_declaration":{"begin":"\\\\b(interface)\\\\b\\\\s+([$.0-9A-Z_a-z]+)","beginCaptures":{"1":{"name":"storage.type.interface.actionscript.3"},"2":{"name":"entity.name.class.actionscript.3"}},"end":"\\\\{","name":"meta.class_declaration.actionscript.3","patterns":[{"include":"#extends"},{"include":"#comments"}]},"language_constants":{"match":"\\\\b(true|false|null|Infinity|-Infinity|NaN|undefined)\\\\b","name":"constant.language.actionscript.3"},"language_variables":{"match":"\\\\b(super|this|arguments)\\\\b","name":"variable.language.actionscript.3"},"local_code_block":{"begin":"\\\\{","end":"}","name":"meta.code_block.actionscript.3","patterns":[{"include":"#local_code_block"},{"include":"#comments"},{"include":"#strings"},{"include":"#regexp"},{"include":"#variable_declaration"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#other_operators"},{"include":"#arithmetic_operators"},{"include":"#logical_operators"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#control_keywords"},{"include":"#other_keywords"},{"include":"#use_namespace"},{"include":"#functions"},{"include":"#import"},{"include":"#primitive_functions"},{"include":"#function_call"}]},"logical_operators":{"match":"([!\\\\&<>?^|~])","name":"keyword.operator.actionscript.3"},"metadata":{"begin":"(?<=(?:^|[;{}]|\\\\*/)\\\\s*)\\\\[\\\\s*\\\\b([$A-Z_a-z][$0-9A-Z_a-z]+)\\\\b","beginCaptures":{"1":{"name":"keyword.other.actionscript.3"}},"end":"]","name":"meta.metadata_info.actionscript.3","patterns":[{"include":"#metadata_info"}]},"metadata_info":{"begin":"\\\\(","end":"\\\\)","patterns":[{"include":"#strings"},{"captures":{"1":{"name":"variable.parameter.actionscript.3"},"2":{"name":"keyword.operator.actionscript.3"}},"match":"(\\\\w+)\\\\s*(=)"}]},"method":{"begin":"(^|\\\\s+)((\\\\w+)\\\\s+)?((\\\\w+)\\\\s+)?((\\\\w+)\\\\s+)?((\\\\w+)\\\\s+)?(?=\\\\bfunction\\\\b)","beginCaptures":{"3":{"name":"storage.modifier.actionscript.3"},"5":{"name":"storage.modifier.actionscript.3"},"7":{"name":"storage.modifier.actionscript.3"},"8":{"name":"storage.modifier.actionscript.3"}},"end":"(?<=([;}]))","name":"meta.method.actionscript.3","patterns":[{"include":"#functions"},{"include":"#local_code_block"}]},"mxml":{"begin":"<!\\\\[CDATA\\\\[","end":"]]>","name":"meta.cdata.actionscript.3","patterns":[{"include":"#comments"},{"include":"#import"},{"include":"#metadata"},{"include":"#class"},{"include":"#namespace_declaration"},{"include":"#use_namespace"},{"include":"#class_declaration"},{"include":"#method"},{"include":"#comments"},{"include":"#strings"},{"include":"#regexp"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#other_keywords"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#other_operators"},{"include":"#arithmetic_operators"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#variable_declaration"},{"include":"#primitive_functions"},{"include":"#function_call"}]},"namespace_declaration":{"captures":{"2":{"name":"storage.modifier.actionscript.3"},"3":{"name":"storage.modifier.actionscript.3"}},"match":"((\\\\w+)\\\\s+)?(namespace)\\\\s+[$0-9A-Z_a-z]+","name":"meta.namespace_declaration.actionscript.3"},"numbers":{"match":"\\\\b((0([Xx])\\\\h*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))(([Ee])([-+])?[0-9]+)?)([Ll]|UL|ul|[FUfu])?\\\\b","name":"constant.numeric.actionscript.3"},"object_literal":{"begin":"\\\\{","end":"}","name":"meta.object_literal.actionscript.3","patterns":[{"include":"#object_literal"},{"include":"#comments"},{"include":"#strings"},{"include":"#regexp"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#functions"},{"include":"#primitive_functions"},{"include":"#function_call"}]},"other_keywords":{"match":"\\\\b(as|delete|in|instanceof|is|native|new|to|typeof)\\\\b","name":"keyword.other.actionscript.3"},"other_operators":{"match":"([.=])","name":"keyword.operator.actionscript.3"},"package":{"begin":"(^|\\\\s+)(package)\\\\b","beginCaptures":{"2":{"name":"keyword.other.actionscript.3"}},"end":"}","name":"meta.package.actionscript.3","patterns":[{"include":"#package_name"},{"include":"#variable_declaration"},{"include":"#method"},{"include":"#comments"},{"include":"#return_type"},{"include":"#import"},{"include":"#use_namespace"},{"include":"#strings"},{"include":"#numbers"},{"include":"#language_constants"},{"include":"#metadata"},{"include":"#class"},{"include":"#interface"},{"include":"#namespace_declaration"}]},"package_name":{"begin":"(?<=package)\\\\s+([._\\\\w]*)\\\\b","end":"\\\\{","name":"meta.package_name.actionscript.3"},"parameters":{"begin":"(\\\\.\\\\.\\\\.)?\\\\s*([$A-Z_a-z][$0-9A-Z_a-z]*)(?:\\\\s*(:)\\\\s*(?:([$A-Za-z][$0-9A-Z_a-z]+(?:\\\\.[$A-Za-z][$0-9A-Z_a-z]+)*)(?:\\\\.<([$A-Za-z][$0-9A-Z_a-z]+(?:\\\\.[$A-Za-z][$0-9A-Z_a-z]+)*)>)?|(\\\\*)))?(?:\\\\s*(=))?","beginCaptures":{"1":{"name":"keyword.operator.actionscript.3"},"2":{"name":"variable.parameter.actionscript.3"},"3":{"name":"keyword.operator.actionscript.3"},"4":{"name":"support.type.actionscript.3"},"5":{"name":"support.type.actionscript.3"},"6":{"name":"support.type.actionscript.3"},"7":{"name":"keyword.operator.actionscript.3"}},"end":",|(?=\\\\))","patterns":[{"include":"#strings"},{"include":"#numbers"},{"include":"#language_constants"},{"include":"#comments"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#guess_type"},{"include":"#guess_constant"}]},"primitive_error_types":{"captures":{"1":{"name":"support.class.error.actionscript.3"}},"match":"\\\\b((Argument|Definition|Eval|Internal|Range|Reference|Security|Syntax|Type|URI|Verify)?Error)\\\\b"},"primitive_functions":{"captures":{"1":{"name":"support.function.actionscript.3"}},"match":"\\\\b(decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|isFinite|isNaN|isXMLName|parseFloat|parseInt|trace|unescape)(?=\\\\s*\\\\()"},"primitive_types":{"captures":{"1":{"name":"support.class.builtin.actionscript.3"}},"match":"\\\\b(Array|Boolean|Class|Date|Function|int|JSON|Math|Namespace|Number|Object|QName|RegExp|String|uint|Vector|XML|XMLList|\\\\*(?<=a))\\\\b"},"regexp":{"begin":"(?<=[(,:=\\\\[]|^|return|&&|\\\\|\\\\||!)\\\\s*(/)(?![*+/?{}])","end":"$|(/)[gim]*","name":"string.regex.actionscript.3","patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.actionscript.3"},{"match":"\\\\[(\\\\\\\\]|[^]])*]","name":"constant.character.class.actionscript.3"}]},"return_type":{"captures":{"1":{"name":"keyword.operator.actionscript.3"},"2":{"name":"support.type.actionscript.3"},"3":{"name":"support.type.actionscript.3"},"4":{"name":"support.type.actionscript.3"}},"match":"(:)\\\\s*([$A-Za-z][$0-9A-Z_a-z]+(?:\\\\.[$A-Za-z][$0-9A-Z_a-z]+)*)(?:\\\\.<([$A-Za-z][$0-9A-Z_a-z]+(?:\\\\.[$A-Za-z][$0-9A-Z_a-z]+)*)>)?|(\\\\*)"},"strings":{"patterns":[{"begin":"@\\"","end":"\\"","name":"string.quoted.verbatim.actionscript.3"},{"begin":"\\"","end":"\\"","name":"string.quoted.double.actionscript.3","patterns":[{"include":"#escapes"}]},{"begin":"'","end":"'","name":"string.quoted.single.actionscript.3","patterns":[{"include":"#escapes"}]}]},"use_namespace":{"captures":{"2":{"name":"keyword.other.actionscript.3"},"3":{"name":"keyword.other.actionscript.3"},"4":{"name":"storage.modifier.actionscript.3"}},"match":"(^|\\\\s+|;)(use\\\\s+)?(namespace)\\\\s+(\\\\w+)\\\\s*(;|$)"},"variable_declaration":{"captures":{"2":{"name":"storage.modifier.actionscript.3"},"4":{"name":"storage.modifier.actionscript.3"},"6":{"name":"storage.modifier.actionscript.3"},"7":{"name":"storage.modifier.actionscript.3"},"8":{"name":"keyword.operator.actionscript.3"}},"match":"((static)\\\\s+)?((\\\\w+)\\\\s+)?((static)\\\\s+)?(const|var)\\\\s+[$0-9A-Z_a-z]+(?:\\\\s*(:))?","name":"meta.variable_declaration.actionscript.3"},"vector_creation_operators":{"match":"([<>])","name":"keyword.operator.actionscript.3"}},"scopeName":"source.actionscript.3","aliases":["actionscript","as3"]}`))];export{e as default};
@@ -0,0 +1 @@
1
+ var e=[Object.freeze(JSON.parse(`{"displayName":"Ada","name":"ada","patterns":[{"include":"#library_unit"},{"include":"#comment"},{"include":"#use_clause"},{"include":"#with_clause"},{"include":"#pragma"},{"include":"#keyword"}],"repository":{"abort_statement":{"begin":"(?i)\\\\babort\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.statement.abort.ada","patterns":[{"match":",","name":"punctuation.ada"},{"match":"\\\\b([._\\\\w\\\\d])+\\\\b","name":"entity.name.task.ada"}]},"accept_statement":{"begin":"(?i)\\\\b(accept)\\\\s+([._\\\\w\\\\d]+)\\\\b","beginCaptures":{"1":{"name":"keyword.control.ada"},"2":{"name":"entity.name.accept.ada"}},"end":"(?i)(?:\\\\b(end)\\\\s*(\\\\s\\\\2)?\\\\s*)?(;)","endCaptures":{"1":{"name":"keyword.control.ada"},"2":{"name":"entity.name.accept.ada"},"3":{"name":"punctuation.ada"}},"name":"meta.statement.accept.ada","patterns":[{"begin":"(?i)\\\\bdo\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)\\\\b(?=end)\\\\b","patterns":[{"include":"#statement"}]},{"include":"#parameter_profile"}]},"access_definition":{"captures":{"1":{"name":"storage.visibility.ada"},"2":{"name":"storage.visibility.ada"},"3":{"name":"storage.modifier.ada"},"4":{"name":"entity.name.type.ada"}},"match":"(?i)(not\\\\s+null\\\\s+)?(access)\\\\s+(constant\\\\s+)?([._\\\\w\\\\d]+)\\\\b","name":"meta.declaration.access.definition.ada"},"access_type_definition":{"begin":"(?i)\\\\b(not\\\\s+null\\\\s+)?(access)\\\\b","beginCaptures":{"1":{"name":"storage.visibility.ada"},"2":{"name":"storage.visibility.ada"}},"end":"(?i)(?=(with|;))","name":"meta.declaration.type.definition.access.ada","patterns":[{"match":"(?i)\\\\ball\\\\b","name":"storage.visibility.ada"},{"match":"(?i)\\\\bconstant\\\\b","name":"storage.modifier.ada"},{"include":"#subtype_mark"}]},"actual_parameter_part":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.ada"}},"end":"\\\\)","patterns":[{"match":",","name":"punctuation.ada"},{"include":"#parameter_association"}]},"adding_operator":{"match":"([-\\\\&+])","name":"keyword.operator.adding.ada"},"array_aggregate":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.ada"}},"end":"\\\\)","name":"meta.definition.array.aggregate.ada","patterns":[{"match":",","name":"punctuation.ada"},{"include":"#positional_array_aggregate"},{"include":"#array_component_association"}]},"array_component_association":{"captures":{"1":{"name":"variable.name.ada"},"2":{"name":"keyword.other.ada"},"3":{"patterns":[{"match":"<>","name":"keyword.modifier.unknown.ada"},{"include":"#expression"}]}},"match":"(?i)\\\\b([^()=>]*)\\\\s*(=>)\\\\s*([^),]+)","name":"meta.definition.array.aggregate.component.ada"},"array_dimensions":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.ada"}},"end":"\\\\)","name":"meta.declaration.type.definition.array.dimensions.ada","patterns":[{"match":",","name":"punctuation.ada"},{"match":"(?i)\\\\brange\\\\b","name":"storage.modifier.ada"},{"match":"<>","name":"keyword.modifier.unknown.ada"},{"match":"\\\\.\\\\.","name":"keyword.ada"},{"include":"#expression"},{"patterns":[{"include":"#subtype_mark"}]}]},"array_type_definition":{"begin":"(?i)\\\\barray\\\\b","beginCaptures":{"0":{"name":"storage.modifier.ada"}},"end":"(?i)(?=(with|;))","name":"meta.declaration.type.definition.array.ada","patterns":[{"include":"#array_dimensions"},{"match":"(?i)\\\\bof\\\\b","name":"storage.modifier.ada"},{"match":"(?i)\\\\baliased\\\\b","name":"storage.visibility.ada"},{"include":"#access_definition"},{"include":"#subtype_mark"}]},"aspect_clause":{"begin":"(?i)\\\\b(for)\\\\b","beginCaptures":{"1":{"name":"keyword.ada"},"2":{"patterns":[{"include":"#subtype_mark"}]},"3":{"name":"punctuation.ada"},"5":{"name":"keyword.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.aspect.clause.ada","patterns":[{"begin":"(?i)\\\\buse\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?=;)","endCaptures":{"0":{"name":"punctuation.ada"}},"patterns":[{"include":"#record_representation_clause"},{"include":"#array_aggregate"},{"include":"#expression"}]},{"begin":"(?i)(?<=for)","captures":{"0":{"name":"keyword.ada"}},"end":"(?i)(?=use)","patterns":[{"captures":{"1":{"patterns":[{"include":"#subtype_mark"}]},"2":{"patterns":[{"include":"#attribute"}]}},"match":"([_\\\\w\\\\d]+)('([_\\\\w\\\\d]+))?"}]}]},"aspect_definition":{"begin":"=>","beginCaptures":{"0":{"name":"keyword.other.ada"}},"end":"(?i)(?=([,;]|\\\\bis\\\\b))","name":"meta.aspect.definition.ada","patterns":[{"include":"#expression"}]},"aspect_mark":{"captures":{"1":{"name":"keyword.control.directive.ada"},"2":{"name":"punctuation.ada"},"3":{"name":"entity.other.attribute-name.ada"}},"match":"(?i)\\\\b([._\\\\w\\\\d]+)(?:(')(class))?\\\\b","name":"meta.aspect.mark.ada"},"aspect_specification":{"begin":"(?i)\\\\bwith\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)(?=(;|\\\\bis\\\\b))","name":"meta.aspect.specification.ada","patterns":[{"match":",","name":"punctuation.ada"},{"captures":{"1":{"name":"storage.modifier.ada"},"2":{"name":"storage.modifier.ada"}},"match":"(?i)\\\\b(null)\\\\s+(record)\\\\b"},{"begin":"(?i)\\\\brecord\\\\b","beginCaptures":{"0":{"name":"storage.modifier.ada"}},"end":"(?i)\\\\b(end)\\\\s+(record)\\\\b","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"storage.modifier.ada"}},"patterns":[{"include":"#component_item"}]},{"captures":{"0":{"name":"storage.visibility.ada"}},"match":"(?i)\\\\bprivate\\\\b"},{"include":"#aspect_definition"},{"include":"#aspect_mark"},{"include":"#comment"}]},"assignment_statement":{"begin":"\\\\b([\\"'()._\\\\w\\\\d\\\\s]+)\\\\s*(:=)","beginCaptures":{"1":{"patterns":[{"match":"([._\\\\w\\\\d]+)","name":"variable.name.ada"},{"begin":"\\\\(","captures":{"0":{"name":"punctuation.ada"}},"end":"\\\\)","patterns":[{"include":"#expression"}]}]},"2":{"name":"keyword.operator.new.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.statement.assignment.ada","patterns":[{"include":"#expression"},{"include":"#comment"}]},"attribute":{"captures":{"1":{"name":"punctuation.ada"},"2":{"name":"entity.other.attribute-name.ada"}},"match":"(')([_\\\\w\\\\d]+)\\\\b","name":"meta.attribute.ada"},"based_literal":{"captures":{"1":{"name":"constant.numeric.base.ada"},"2":{"name":"punctuation.ada"},"3":{"name":"punctuation.ada"},"4":{"name":"punctuation.radix-point.ada"},"5":{"name":"punctuation.ada"},"6":{"name":"constant.numeric.base.ada"},"7":{"patterns":[{"include":"#exponent_part"}]}},"match":"(?i)(\\\\d(?:(_)?\\\\d)*#)[0-9a-f](?:(_)?[0-9a-f])*(?:(\\\\.)[0-9a-f](?:(_)?[0-9a-f])*)?(#)([Ee][-+]?\\\\d(?:_?\\\\d)*)?","name":"constant.numeric.ada"},"basic_declaration":{"patterns":[{"include":"#type_declaration"},{"include":"#subtype_declaration"},{"include":"#exception_declaration"},{"include":"#object_declaration"},{"include":"#single_protected_declaration"},{"include":"#single_task_declaration"},{"include":"#subprogram_specification"},{"include":"#package_declaration"},{"include":"#pragma"},{"include":"#comment"}]},"basic_declarative_item":{"patterns":[{"include":"#basic_declaration"},{"include":"#aspect_clause"},{"include":"#use_clause"},{"include":"#keyword"}]},"block_statement":{"begin":"(?i)\\\\bdeclare\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\b(end)(\\\\s+[_\\\\w\\\\d]+)?\\\\s*(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.label.ada"},"3":{"name":"punctuation.ada"}},"name":"meta.statement.block.ada","patterns":[{"begin":"(?i)(?<=declare)","end":"(?i)\\\\bbegin\\\\b","endCaptures":{"0":{"name":"keyword.ada"}},"patterns":[{"include":"#body"},{"include":"#basic_declarative_item"}]},{"begin":"(?i)(?<=begin)","end":"(?i)(?=end)","patterns":[{"include":"#statement"}]}]},"body":{"patterns":[{"include":"#subprogram_body"},{"include":"#package_body"},{"include":"#task_body"},{"include":"#protected_body"}]},"case_statement":{"begin":"(?i)\\\\bcase\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)\\\\b(end)\\\\s+(case)\\\\s*(;)","endCaptures":{"1":{"name":"keyword.control.ada"},"2":{"name":"keyword.control.ada"},"3":{"name":"punctuation.ada"}},"name":"meta.statement.case.ada","patterns":[{"begin":"(?i)(?<=case)\\\\b","end":"(?i)\\\\bis\\\\b","endCaptures":{"0":{"name":"keyword.control.ada"}},"patterns":[{"include":"#expression"}]},{"begin":"(?i)\\\\bwhen\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"=>","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.statement.case.alternative.ada","patterns":[{"match":"(?i)\\\\bothers\\\\b","name":"keyword.modifier.unknown.ada"},{"match":"\\\\|","name":"punctuation.ada"},{"include":"#expression"}]},{"include":"#statement"}]},"character_literal":{"captures":{"0":{"patterns":[{"match":"'","name":"punctuation.definition.string.ada"}]}},"match":"'.'","name":"string.quoted.single.ada"},"comment":{"patterns":[{"include":"#preprocessor"},{"include":"#comment-section"},{"include":"#comment-doc"},{"include":"#comment-line"}]},"comment-doc":{"captures":{"1":{"name":"comment.line.double-dash.ada"},"2":{"name":"punctuation.definition.tag.ada"},"3":{"name":"entity.name.tag.ada"},"4":{"name":"comment.line.double-dash.ada"}},"match":"(--)\\\\s*(@)(\\\\w+)\\\\s+(.*)$","name":"comment.block.documentation.ada"},"comment-line":{"match":"--.*$","name":"comment.line.double-dash.ada"},"comment-section":{"captures":{"1":{"name":"entity.name.section.ada"}},"match":"--\\\\s*([^-].*?[^-])\\\\s*--\\\\s*$","name":"comment.line.double-dash.ada"},"component_clause":{"begin":"(?i)\\\\b([_\\\\w\\\\d]+)\\\\b","beginCaptures":{"0":{"name":"variable.name.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.aspect.clause.record.representation.component.ada","patterns":[{"begin":"(?i)\\\\bat\\\\b","beginCaptures":{"0":{"name":"storage.modifier.ada"}},"end":"(?i)\\\\b(?=range)\\\\b","patterns":[{"include":"#expression"}]},{"include":"#range_constraint"}]},"component_declaration":{"begin":"(?i)\\\\b([_\\\\w\\\\d]+(?:\\\\s*,\\\\s*[_\\\\w\\\\d]+)?)\\\\s*(:)","beginCaptures":{"1":{"patterns":[{"match":",","name":"punctuation.ada"},{"match":"\\\\b([_\\\\w\\\\d])+\\\\b","name":"variable.name.ada"}]},"2":{"name":"punctuation.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.declaration.type.definition.record.component.ada","patterns":[{"patterns":[{"match":":=","name":"keyword.operator.new.ada"},{"include":"#expression"}]},{"include":"#component_definition"}]},"component_definition":{"patterns":[{"match":"(?i)\\\\baliased\\\\b","name":"storage.visibility.ada"},{"match":"(?i)\\\\brange\\\\b","name":"storage.modifier.ada"},{"match":"\\\\.\\\\.","name":"keyword.ada"},{"include":"#access_definition"},{"include":"#subtype_mark"}]},"component_item":{"patterns":[{"include":"#component_declaration"},{"include":"#variant_part"},{"include":"#comment"},{"include":"#aspect_clause"},{"captures":{"1":{"name":"keyword.ada"},"2":{"name":"punctuation.ada"}},"match":"(?i)\\\\b(null)\\\\s*(;)"}]},"composite_constraint":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.ada"}},"end":"\\\\)","name":"meta.declaration.constraint.composite.ada","patterns":[{"match":",","name":"punctuation.ada"},{"match":"\\\\.\\\\.","name":"keyword.ada"},{"captures":{"1":{"name":"variable.name.ada"},"2":{"name":"keyword.other.ada"},"3":{"patterns":[{"include":"#expression"}]}},"match":"(?i)\\\\b([_\\\\w\\\\d]+)\\\\s*(=>)\\\\s*([^),])+\\\\b"},{"include":"#expression"}]},"decimal_literal":{"captures":{"1":{"name":"punctuation.ada"},"2":{"name":"punctuation.radix-point.ada"},"3":{"name":"punctuation.ada"},"4":{"patterns":[{"include":"#exponent_part"}]}},"match":"\\\\d(?:(_)?\\\\d)*(?:(\\\\.)\\\\d(?:(_)?\\\\d)*)?([Ee][-+]?\\\\d(?:_?\\\\d)*)?","name":"constant.numeric.ada"},"declarative_item":{"patterns":[{"include":"#body"},{"include":"#basic_declarative_item"}]},"delay_relative_statement":{"begin":"(?i)\\\\b(delay)\\\\b","beginCaptures":{"1":{"name":"keyword.control.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"patterns":[{"include":"#expression"}]},"delay_statement":{"patterns":[{"include":"#delay_until_statement"},{"include":"#delay_relative_statement"}]},"delay_until_statement":{"begin":"(?i)\\\\b(delay)\\\\s+(until)\\\\b","beginCaptures":{"1":{"name":"keyword.control.ada"},"2":{"name":"keyword.control.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.statement.delay.until.ada","patterns":[{"include":"#expression"}]},"derived_type_definition":{"name":"meta.declaration.type.definition.derived.ada","patterns":[{"begin":"(?i)\\\\bnew\\\\b","beginCaptures":{"0":{"name":"storage.modifier.ada"}},"end":"(?i)(?=(\\\\bwith\\\\b|;))","patterns":[{"match":"(?i)\\\\band\\\\b","name":"storage.modifier.ada"},{"include":"#subtype_mark"}]},{"match":"(?i)\\\\b(abstract|and|limited|tagged)\\\\b","name":"storage.modifier.ada"},{"match":"(?i)\\\\bprivate\\\\b","name":"storage.visibility.ada"},{"include":"#subtype_mark"}]},"discriminant_specification":{"begin":"(?i)\\\\b([_\\\\w\\\\d]+(?:\\\\s*,\\\\s*[_\\\\w\\\\d]+)?)\\\\s*(:)","beginCaptures":{"1":{"patterns":[{"match":",","name":"punctuation.ada"},{"match":"\\\\b([_\\\\w\\\\d])+\\\\b","name":"variable.name.ada"}]},"2":{"name":"punctuation.ada"}},"end":"(?=([);]))","patterns":[{"begin":":=","beginCaptures":{"0":{"name":"keyword.operator.new.ada"}},"end":"(?=([);]))","patterns":[{"include":"#expression"}]},{"captures":{"1":{"name":"storage.visibility.ada"},"2":{"patterns":[{"include":"#subtype_mark"}]}},"match":"(?i)(not\\\\s+null\\\\s+)?([._\\\\w\\\\d]+)\\\\b"},{"include":"#access_definition"}]},"entry_body":{"begin":"(?i)\\\\b(entry)\\\\s+([_\\\\w\\\\d]+)\\\\b","beginCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.entry.ada"}},"end":"(?i)\\\\b(end)\\\\s*(\\\\s\\\\2)\\\\s*(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.entry.ada"},"3":{"name":"punctuation.ada"}},"patterns":[{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\b(?=begin)\\\\b","patterns":[{"include":"#declarative_item"}]},{"begin":"(?i)\\\\bbegin\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\b(?=end)\\\\b","patterns":[{"include":"#statement"}]},{"begin":"(?i)\\\\bwhen\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\b(?=is)\\\\b","patterns":[{"include":"#expression"}]},{"include":"#parameter_profile"}]},"entry_declaration":{"begin":"(?i)\\\\b(?:(not)?\\\\s+(overriding)\\\\s+)?(entry)\\\\s+([_\\\\w\\\\d]+)\\\\b","beginCaptures":{"1":{"name":"storage.modifier.ada"},"2":{"name":"storage.modifier.ada"},"3":{"name":"keyword.ada"},"4":{"name":"entity.name.entry.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"patterns":[{"include":"#parameter_profile"}]},"enumeration_type_definition":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.ada"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.declaration.type.definition.enumeration.ada","patterns":[{"match":",","name":"punctuation.ada"},{"match":"\\\\b([_\\\\w\\\\d])+\\\\b","name":"variable.name.ada"},{"include":"#comment"}]},"exception_declaration":{"begin":"(?i)\\\\b([_\\\\w\\\\d]+(?:\\\\s*,\\\\s*[_\\\\w\\\\d]+)?)\\\\s*(:)\\\\s*(exception)","beginCaptures":{"1":{"patterns":[{"match":",","name":"punctuation.ada"},{"match":"\\\\b([_\\\\w\\\\d])+\\\\b","name":"entity.name.exception.ada"}]},"2":{"name":"punctuation.ada"},"3":{"name":"storage.type.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.declaration.exception.ada","patterns":[{"match":"(?i)\\\\b(renames)\\\\s+(([._\\\\w\\\\d])+)","name":"entity.name.exception.ada"}]},"exit_statement":{"begin":"(?i)\\\\bexit\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.statement.exit.ada","patterns":[{"begin":"(?i)\\\\bwhen\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?=;)","patterns":[{"include":"#expression"}]},{"match":"[_\\\\w\\\\d]+","name":"entity.name.label.ada"}]},"exponent_part":{"captures":{"1":{"name":"punctuation.exponent-mark.ada"},"2":{"name":"keyword.operator.unary.ada"},"3":{"name":"punctuation.ada"}},"match":"([Ee])([-+])?\\\\d(?:(_)?\\\\d)*"},"expression":{"name":"meta.expression.ada","patterns":[{"match":"(?i)\\\\bnull\\\\b","name":"constant.language.ada"},{"match":"=>(\\\\+)?","name":"keyword.other.ada"},{"begin":"\\\\(","captures":{"0":{"name":"punctuation.ada"}},"end":"\\\\)","patterns":[{"include":"#expression"}]},{"match":",","name":"punctuation.ada"},{"match":"\\\\.\\\\.","name":"keyword.ada"},{"include":"#value"},{"include":"#attribute"},{"include":"#comment"},{"include":"#operator"},{"match":"(?i)\\\\b(and|or|xor)\\\\b","name":"keyword.ada"},{"match":"(?i)\\\\b(if|then|else|elsif|in|for|(?<!\\\\.)all|some|\\\\.\\\\.|delta|with)\\\\b","name":"keyword.ada"}]},"for_loop_statement":{"begin":"(?i)\\\\bfor\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)\\\\b(end)\\\\s+(loop)(\\\\s+[_\\\\w\\\\d]+)?\\\\s*(;)","endCaptures":{"1":{"name":"keyword.control.ada"},"2":{"name":"keyword.control.ada"},"3":{"name":"entity.name.label.ada"},"4":{"name":"punctuation.ada"}},"name":"meta.statement.loop.for.ada","patterns":[{"begin":"(?i)(?<=for)","end":"(?i)\\\\bloop\\\\b","endCaptures":{"0":{"name":"keyword.control.ada"}},"patterns":[{"captures":{"1":{"name":"variable.name.ada"},"2":{"name":"keyword.control.ada"},"3":{"name":"keyword.control.ada"}},"match":"(?i)\\\\b([_\\\\w\\\\d]+)\\\\s+(in)(\\\\s+reverse)?\\\\b"},{"captures":{"1":{"name":"variable.name.ada"},"2":{"name":"punctuation.ada"},"3":{"patterns":[{"include":"#subtype_mark"}]},"4":{"name":"keyword.control.ada"},"5":{"name":"keyword.control.ada"}},"match":"(?i)\\\\b([_\\\\w\\\\d]+)(?:\\\\s*(:)\\\\s*([._\\\\w\\\\d]+))?\\\\s+(of)(\\\\s+reverse)?\\\\b"},{"include":"#expression"}]},{"include":"#statement"}]},"full_type_declaration":{"patterns":[{"include":"#task_type_declaration"},{"include":"#regular_type_declaration"}]},"function_body":{"begin":"(?i)\\\\b(overriding\\\\s+)?(function)\\\\s+(?:([._\\\\w\\\\d]+)\\\\b|(\\".+\\"))","beginCaptures":{"1":{"name":"storage.visibility.ada"},"2":{"name":"keyword.ada"},"3":{"name":"entity.name.function.ada"},"4":{"patterns":[{"include":"#string_literal"}]}},"end":"(?i)(?:\\\\b(end)\\\\s+(\\\\3|\\\\4)\\\\s*)?(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.function.ada"},"3":{"name":"punctuation.ada"}},"name":"meta.declaration.function.body.ada","patterns":[{"begin":"(?i)\\\\bbegin\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)(?=end)","patterns":[{"include":"#handled_sequence_of_statements"}]},{"include":"#aspect_specification"},{"include":"#result_profile"},{"include":"#subprogram_renaming_declaration"},{"include":"#parameter_profile"},{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)(?=(with|begin|;))","name":"meta.function.body.spec_part.ada","patterns":[{"begin":"(?i)\\\\bnew\\\\b","beginCaptures":{"0":{"name":"keyword.operator.new.ada"}},"end":"(?=;)","name":"meta.declaration.package.generic.ada","patterns":[{"match":"([._\\\\w\\\\d]+)","name":"entity.name.function.ada"},{"include":"#actual_parameter_part"}]},{"captures":{"0":{"name":"storage.modifier.ada"}},"match":"(?i)\\\\babstract\\\\b","name":"meta.declaration.function.abstract.ada"},{"include":"#declarative_item"},{"include":"#subprogram_renaming_declaration"},{"include":"#expression"}]}]},"function_specification":{"patterns":[{"include":"#function_body"}]},"goto_statement":{"begin":"(?i)\\\\bgoto\\\\b","beginCaptures":{"0":{"name":"keyword.control.goto.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.statement.goto.ada","patterns":[{}]},"guard":{"begin":"(?i)\\\\bwhen\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"=>","endCaptures":{"0":{"name":"keyword.other.ada"}},"patterns":[{"include":"#expression"}]},"handled_sequence_of_statements":{"patterns":[{"begin":"(?i)\\\\bexception\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\b(?=end)\\\\b","name":"meta.handler.exception.ada","patterns":[{"begin":"(?i)\\\\bwhen\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"=>","endCaptures":{"0":{"name":"keyword.other.ada"}},"patterns":[{"captures":{"1":{"name":"variable.name.ada"},"2":{"name":"punctuation.ada"}},"match":"\\\\b([._\\\\w\\\\d]+)\\\\s*(:)"},{"match":"\\\\|","name":"punctuation.ada"},{"match":"(?i)\\\\bothers\\\\b","name":"keyword.ada"},{"match":"[._\\\\w\\\\d]+","name":"entity.name.exception.ada"}]},{"include":"#statement"}]},{"include":"#statement"}]},"highest_precedence_operator":{"match":"(?i)(\\\\*\\\\*|\\\\babs\\\\b|\\\\bnot\\\\b)","name":"keyword.operator.highest-precedence.ada"},"if_statement":{"begin":"(?i)\\\\bif\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)\\\\b(end)\\\\s+(if)\\\\s*(;)","endCaptures":{"1":{"name":"keyword.control.ada"},"2":{"name":"keyword.control.ada"},"3":{"name":"punctuation.ada"}},"name":"meta.statement.if.ada","patterns":[{"begin":"(?i)\\\\belsif\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)(?<!\\\\sand)\\\\s+(?=then)","patterns":[{"include":"#expression"}]},{"begin":"(?i)\\\\belse\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)(?=end)","patterns":[{"include":"#statement"}]},{"begin":"(?i)(?<=if)\\\\b","end":"(?i)(?<!\\\\sand)\\\\s+(?=then)","endCaptures":{"0":{"name":"keyword.control.ada"}},"patterns":[{"include":"#expression"}]},{"begin":"(?i)\\\\bthen\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)(?=(e(?:lsif|lse|nd)))","patterns":[{"include":"#statement"}]}]},"integer_type_definition":{"name":"meta.declaration.type.definition.integer.ada","patterns":[{"include":"#signed_integer_type_definition"},{"include":"#modular_type_definition"}]},"interface_type_definition":{"begin":"(?i)\\\\b(?:(limited|task|protected|synchronized)\\\\s+)?(interface)","beginCaptures":{"1":{"name":"storage.modifier.ada"},"2":{"name":"storage.modifier.ada"}},"end":"(?i)(?=(with|;))","name":"meta.declaration.type.definition.interface.ada","patterns":[{"match":"(?i)\\\\band\\\\b","name":"storage.modifier.ada"},{"include":"#subtype_mark"}]},"keyword":{"patterns":[{"match":"(?i)\\\\b(abort|abs|accept|all|and|at|begin|body|declare|delay|end|entry|exception|function|generic|in|is|mod|new|not|null|of|or|others|out|package|pragma|procedure|range|record|rem|renames|requeue|reverse|select|separate|some|subtype|then|type|use|when|with|xor)\\\\b","name":"keyword.ada"},{"match":"(?i)\\\\b(case|do|else|elsif|exit|for|goto|if|loop|raise|return|terminate|until|while)\\\\b","name":"keyword.control.ada"},{"match":"(?i)\\\\b(abstract|access|aliased|array|constant|delta|digits|interface|limited|protected|synchronized|tagged|task)\\\\b","name":"storage.modifier.ada"},{"match":"(?i)\\\\b(private|overriding)\\\\b","name":"storage.visibility.ada"},{"match":"<>","name":"keyword.modifier.unknown.ada"},{"match":"([-*+/])","name":"keyword.operator.arithmetic.ada"},{"match":":=","name":"keyword.operator.assignment.ada"},{"match":"(=|/=|[<>]|<=|>=)","name":"keyword.operator.logic.ada"},{"match":"&","name":"keyword.operator.concatenation.ada"}]},"known_discriminant_part":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.ada"}},"end":"\\\\)","name":"meta.declaration.type.discriminant.ada","patterns":[{"match":";","name":"punctuation.ada"},{"include":"#discriminant_specification"}]},"label":{"captures":{"1":{"name":"punctuation.label.ada"},"2":{"name":"entity.name.label.ada"},"3":{"name":"punctuation.label.ada"}},"match":"(<<)?([_\\\\w\\\\d]+)\\\\s*(:[^=]|>>)","name":"meta.label.ada"},"library_unit":{"name":"meta.library.unit.ada","patterns":[{"include":"#package_body"},{"include":"#package_specification"},{"include":"#subprogram_body"}]},"loop_statement":{"patterns":[{"include":"#simple_loop_statement"},{"include":"#while_loop_statement"},{"include":"#for_loop_statement"}]},"modular_type_definition":{"begin":"(?i)\\\\b(mod)\\\\b","beginCaptures":{"1":{"name":"storage.modifier.ada"}},"end":"(?i)(?=(with|;))","patterns":[{"match":"<>","name":"keyword.modifier.unknown.ada"},{"include":"#expression"}]},"multiplying_operator":{"match":"(?i)([*/]|\\\\bmod\\\\b|\\\\brem\\\\b)","name":"keyword.operator.multiplying.ada"},"null_statement":{"captures":{"1":{"name":"keyword.ada"},"2":{"name":"punctuation.ada"}},"match":"(?i)\\\\b(null)\\\\s*(;)","name":"meta.statement.null.ada"},"object_declaration":{"begin":"(?i)\\\\b([_\\\\w\\\\d]+(?:\\\\s*,\\\\s*[_\\\\w\\\\d]+)*)\\\\s*(:)","beginCaptures":{"1":{"patterns":[{"match":",","name":"punctuation.ada"},{"match":"\\\\b([_\\\\w\\\\d])+\\\\b","name":"variable.name.ada"}]},"2":{"name":"punctuation.ada"}},"end":"(;)","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.declaration.object.ada","patterns":[{"begin":"(?<=:)","end":"(?=;)|(:=)|\\\\b(renames)\\\\b","endCaptures":{"1":{"name":"keyword.operator.new.ada"},"2":{"name":"keyword.ada"}},"patterns":[{"match":"(?i)\\\\bconstant\\\\b","name":"storage.modifier.ada"},{"match":"(?i)\\\\baliased\\\\b","name":"storage.visibility.ada"},{"include":"#aspect_specification"},{"include":"#subtype_mark"}]},{"begin":"(?<=:=)","end":"(?=;)","patterns":[{"include":"#aspect_specification"},{"include":"#expression"}]},{"begin":"(?<=renames)","end":"(?=;)","patterns":[{"include":"#aspect_specification"}]}]},"operator":{"patterns":[{"include":"#highest_precedence_operator"},{"include":"#multiplying_operator"},{"include":"#adding_operator"},{"include":"#relational_operator"},{"include":"#logical_operator"}]},"package_body":{"begin":"(?i)\\\\b(package)\\\\s+(body)\\\\s+([._\\\\w\\\\d]+)\\\\b","beginCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"keyword.ada"},"3":{"patterns":[{"include":"#package_mark"}]}},"end":"(?i)\\\\b(end)\\\\s+(\\\\3)\\\\s*(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"patterns":[{"include":"#package_mark"}]},"3":{"name":"punctuation.ada"}},"name":"meta.declaration.package.body.ada","patterns":[{"begin":"(?i)\\\\bbegin\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\b(?=end)\\\\b","patterns":[{"include":"#handled_sequence_of_statements"}]},{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)(?=\\\\b(begin|end)\\\\b)","patterns":[{"match":"(?i)\\\\bprivate\\\\b","name":"keyword.ada"},{"include":"#declarative_item"},{"include":"#comment"}]},{"include":"#aspect_specification"}]},"package_declaration":{"patterns":[{"include":"#package_specification"}]},"package_mark":{"match":"\\\\b([._\\\\w\\\\d])+\\\\b","name":"entity.name.package.ada"},"package_specification":{"begin":"(?i)\\\\b(package)\\\\s+([._\\\\w\\\\d]+)\\\\b","beginCaptures":{"1":{"name":"keyword.ada"},"2":{"patterns":[{"include":"#package_mark"}]}},"end":"(?i)(?:\\\\b(end)\\\\s+(\\\\2)\\\\s*)?(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"patterns":[{"include":"#package_mark"}]},"3":{"name":"punctuation.ada"}},"name":"meta.declaration.package.specification.ada","patterns":[{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?=(end|;))","patterns":[{"begin":"(?i)\\\\bnew\\\\b","beginCaptures":{"0":{"name":"keyword.operator.new.ada"}},"end":"(?=;)","name":"meta.declaration.package.generic.ada","patterns":[{"include":"#package_mark"},{"include":"#actual_parameter_part"}]},{"match":"(?i)\\\\bprivate\\\\b","name":"keyword.ada"},{"include":"#basic_declarative_item"},{"include":"#comment"}]},{"include":"#aspect_specification"}]},"parameter_association":{"patterns":[{"captures":{"1":{"name":"variable.parameter.ada"},"2":{"name":"keyword.other.ada"}},"match":"([_\\\\w\\\\d]+)\\\\s*(=>)"},{"include":"#expression"}]},"parameter_profile":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.ada"}},"end":"\\\\)","patterns":[{"match":";","name":"punctuation.ada"},{"include":"#parameter_specification"}]},"parameter_specification":{"patterns":[{"begin":":(?!=)","beginCaptures":{"0":{"name":"punctuation.ada"}},"end":"(?=[):;])","name":"meta.type.annotation.ada","patterns":[{"match":"(?i)\\\\b(in|out)\\\\b","name":"keyword.ada"},{"include":"#subtype_mark"}]},{"begin":":=","beginCaptures":{"0":{"name":"keyword.operator.new.ada"}},"end":"(?=[):;])","patterns":[{"include":"#expression"}]},{"match":",","name":"punctuation.ada"},{"match":"\\\\b[._\\\\w\\\\d]+\\\\b","name":"variable.parameter.ada"},{"include":"#comment"}]},"positional_array_aggregate":{"name":"meta.definition.array.aggregate.positional.ada","patterns":[{"captures":{"1":{"name":"keyword.ada"},"2":{"name":"keyword.other.ada"},"3":{"patterns":[{"match":"<>","name":"keyword.modifier.unknown.ada"},{"include":"#expression"}]}},"match":"(?i)\\\\b(others)\\\\s*(=>)\\\\s*([^),]+)"},{"include":"#expression"}]},"pragma":{"begin":"(?i)\\\\b(pragma)\\\\s+([_\\\\w\\\\d]+)\\\\b","beginCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"keyword.control.directive.ada"}},"end":"(;)","endCaptures":{"1":{"name":"punctuation.ada"}},"name":"meta.pragma.ada","patterns":[{"include":"#expression"}]},"preprocessor":{"name":"meta.preprocessor.ada","patterns":[{"captures":{"1":{"name":"punctuation.definition.directive.ada"},"2":{"name":"keyword.control.directive.conditional.ada"},"3":{"patterns":[{"include":"#expression"}]}},"match":"^\\\\s*(#)(if|elsif)\\\\s+(.*)$"},{"captures":{"1":{"name":"punctuation.definition.directive.ada"},"2":{"name":"keyword.control.directive.conditional"},"3":{"name":"punctuation.ada"}},"match":"^\\\\s*(#)(end if)(;)"},{"captures":{"1":{"name":"punctuation.definition.directive.ada"},"2":{"name":"keyword.control.directive.conditional"}},"match":"^\\\\s*(#)(else)"}]},"procedure_body":{"begin":"(?i)\\\\b(overriding\\\\s+)?(procedure)\\\\s+([._\\\\w\\\\d]+)\\\\b","beginCaptures":{"1":{"name":"storage.visibility.ada"},"2":{"name":"keyword.ada"},"3":{"name":"entity.name.function.ada"}},"end":"(?i)(?:\\\\b(end)\\\\s+(\\\\3)\\\\s*)?(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.function.ada"},"3":{"name":"punctuation.ada"}},"name":"meta.declaration.procedure.body.ada","patterns":[{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)(?=(with|begin|;))","patterns":[{"begin":"(?i)\\\\bnew\\\\b","beginCaptures":{"0":{"name":"keyword.operator.new.ada"}},"end":"(?=;)","name":"meta.declaration.package.generic.ada","patterns":[{"match":"([._\\\\w\\\\d]+)","name":"entity.name.function.ada"},{"include":"#actual_parameter_part"}]},{"match":"(?i)\\\\b(null|abstract)\\\\b","name":"storage.modifier.ada"},{"include":"#declarative_item"}]},{"begin":"(?i)\\\\bbegin\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)(?=\\\\bend\\\\b)","patterns":[{"include":"#handled_sequence_of_statements"}]},{"include":"#subprogram_renaming_declaration"},{"include":"#aspect_specification"},{"include":"#parameter_profile"},{"include":"#comment"}]},"procedure_call_statement":{"begin":"(?i)\\\\b([._\\\\w\\\\d]+)\\\\b","beginCaptures":{"1":{"name":"entity.name.function.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.statement.call.ada","patterns":[{"include":"#attribute"},{"include":"#actual_parameter_part"},{"include":"#comment"}]},"procedure_specification":{"patterns":[{"include":"#procedure_body"}]},"protected_body":{"begin":"(?i)\\\\b(protected)\\\\s+(body)\\\\s+([._\\\\w\\\\d]+)\\\\b","beginCaptures":{"1":{"name":"storage.modifier.ada"},"2":{"name":"keyword.ada"},"3":{"name":"entity.name.body.ada"}},"end":"(?i)\\\\b(end)\\\\s*(\\\\s\\\\3)\\\\s*(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.body.ada"},"3":{"name":"punctuation.ada"}},"name":"meta.declaration.procedure.body.ada","patterns":[{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\b(?=end)\\\\b","patterns":[{"include":"#protected_operation_item"}]}]},"protected_element_declaration":{"patterns":[{"include":"#subprogram_specification"},{"include":"#aspect_clause"},{"include":"#entry_declaration"},{"include":"#component_declaration"},{"include":"#pragma"}]},"protected_operation_item":{"patterns":[{"include":"#subprogram_specification"},{"include":"#subprogram_body"},{"include":"#aspect_clause"},{"include":"#entry_body"}]},"raise_expression":{"begin":"(?i)\\\\braise\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?=;)","name":"meta.expression.raise.ada","patterns":[{"begin":"(?i)\\\\bwith\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?=([);]))","patterns":[{"include":"#expression"}]},{"match":"\\\\b([_\\\\w\\\\d])+\\\\b","name":"entity.name.exception.ada"}]},"raise_statement":{"begin":"(?i)\\\\braise\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.statement.raise.ada","patterns":[{"begin":"(?i)\\\\bwith\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?=;)","patterns":[{"include":"#expression"}]},{"match":"\\\\b([._\\\\w\\\\d])+\\\\b","name":"entity.name.exception.ada"}]},"range_constraint":{"begin":"(?i)\\\\brange\\\\b","beginCaptures":{"0":{"name":"storage.modifier.ada"}},"end":"(?=(\\\\bwith\\\\b|;))","patterns":[{"match":"\\\\.\\\\.","name":"keyword.ada"},{"match":"<>","name":"keyword.modifier.unknown.ada"},{"include":"#expression"}]},"real_type_definition":{"name":"meta.declaration.type.definition.real-type.ada","patterns":[{"include":"#scalar_constraint"}]},"record_representation_clause":{"begin":"(?i)\\\\b(record)\\\\b","beginCaptures":{"1":{"name":"storage.modifier.ada"}},"end":"(?i)\\\\b(end)\\\\s+(record)\\\\b","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"storage.modifier.ada"}},"name":"meta.aspect.clause.record.representation.ada","patterns":[{"include":"#component_clause"},{"include":"#comment"}]},"record_type_definition":{"patterns":[{"captures":{"1":{"name":"storage.modifier.ada"},"2":{"name":"storage.modifier.ada"},"3":{"name":"storage.modifier.ada"},"4":{"name":"storage.modifier.ada"},"5":{"name":"storage.modifier.ada"}},"match":"(?i)\\\\b(?:(abstract)\\\\s+)?(?:(tagged)\\\\s+)?(?:(limited)\\\\s+)?(null)\\\\s+(record)\\\\b","name":"meta.declaration.type.definition.record.null.ada","patterns":[{"include":"#component_item"}]},{"begin":"(?i)\\\\b(?:(abstract)\\\\s+)?(?:(tagged)\\\\s+)?(?:(limited)\\\\s+)?(record)\\\\b","beginCaptures":{"1":{"name":"storage.modifier.ada"},"2":{"name":"storage.modifier.ada"},"3":{"name":"storage.modifier.ada"},"4":{"name":"storage.modifier.ada"}},"end":"(?i)\\\\b(end)\\\\s+(record)\\\\b","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"storage.modifier.ada"}},"name":"meta.declaration.type.definition.record.ada","patterns":[{"include":"#component_item"}]}]},"regular_type_declaration":{"begin":"(?i)\\\\b(type)\\\\b","beginCaptures":{"1":{"name":"keyword.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.declaration.type.definition.regular.ada","patterns":[{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)(?=(with(?!\\\\s+(private))|;))","patterns":[{"include":"#type_definition"}]},{"begin":"(?i)\\\\b(?<=type)\\\\b","end":"(?i)(?=(is|;))","patterns":[{"include":"#known_discriminant_part"},{"include":"#subtype_mark"}]},{"include":"#aspect_specification"}]},"relational_operator":{"match":"(=|/=|<=??|>=??)","name":"keyword.operator.relational.ada"},"requeue_statement":{"begin":"(?i)\\\\brequeue\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.statement.requeue.ada","patterns":[{"match":"(?i)\\\\b(with|abort)\\\\b","name":"keyword.control.ada"},{"match":"\\\\b([._\\\\w\\\\d])+\\\\b","name":"entity.name.function.ada"}]},"result_profile":{"begin":"(?i)\\\\breturn\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?=(is|with|renames|;))","patterns":[{"include":"#subtype_mark"}]},"return_statement":{"begin":"(?i)\\\\breturn\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.statement.return.ada","patterns":[{"begin":"(?i)\\\\bdo\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)\\\\b(end)\\\\s+(return)\\\\s*(?=;)","endCaptures":{"1":{"name":"keyword.control.ada"},"2":{"name":"keyword.control.ada"}},"patterns":[{"include":"#label"},{"include":"#statement"}]},{"captures":{"1":{"name":"variable.name.ada"},"2":{"name":"punctuation.ada"},"3":{"name":"entity.name.type.ada"}},"match":"\\\\b([_\\\\w\\\\d]+)\\\\s*(:)\\\\s*([._\\\\w\\\\d]+)\\\\b"},{"match":":=","name":"keyword.operator.new.ada"},{"include":"#expression"}]},"scalar_constraint":{"name":"meta.declaration.constraint.scalar.ada","patterns":[{"begin":"(?i)\\\\b(d(?:igits|elta))\\\\b","beginCaptures":{"1":{"name":"storage.modifier.ada"}},"end":"(?i)(?=\\\\brange\\\\b|\\\\bdigits\\\\b|\\\\bwith\\\\b|;)","patterns":[{"include":"#expression"}]},{"include":"#range_constraint"},{"include":"#expression"}]},"select_alternative":{"patterns":[{"begin":"(?i)\\\\bterminate\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}}},{"include":"#statement"}]},"select_statement":{"begin":"(?i)\\\\bselect\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)\\\\b(end)\\\\s+(select)\\\\b","endCaptures":{"1":{"name":"keyword.control.ada"},"2":{"name":"keyword.control.ada"}},"name":"meta.statement.select.ada","patterns":[{"begin":"(?i)\\\\b(?:(or)|(?<=select))\\\\b","beginCaptures":{"1":{"name":"keyword.control.ada"}},"end":"(?i)\\\\b(?=(or|else|end))\\\\b","patterns":[{"include":"#guard"},{"include":"#select_alternative"}]},{"begin":"(?i)\\\\belse\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)\\\\b(?=end)\\\\b","patterns":[{"include":"#statement"}]}]},"signed_integer_type_definition":{"patterns":[{"include":"#range_constraint"}]},"simple_loop_statement":{"begin":"(?i)\\\\bloop\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)\\\\b(end)\\\\s+(loop)(\\\\s+[_\\\\w\\\\d]+)?\\\\s*(;)","endCaptures":{"1":{"name":"keyword.control.ada"},"2":{"name":"keyword.control.ada"},"3":{"name":"entity.name.label.ada"},"4":{"name":"punctuation.ada"}},"name":"meta.statement.loop.ada","patterns":[{"include":"#statement"}]},"single_protected_declaration":{"begin":"(?i)\\\\b(protected)\\\\s+([_\\\\w\\\\d]+)\\\\b","beginCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.protected.ada"}},"end":"(?i)(?:\\\\b(end)\\\\s*(\\\\s\\\\2)?\\\\s*)?(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.protected.ada"},"3":{"name":"punctuation.ada"}},"name":"meta.declaration.protected.ada","patterns":[{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)(?=(\\\\bend\\\\b|;))","patterns":[{"begin":"(?i)\\\\bnew\\\\b","captures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\bwith\\\\b","patterns":[{"match":"(?i)\\\\band\\\\b","name":"keyword.ada"},{"include":"#subtype_mark"},{"include":"#comment"}]},{"match":"(?i)\\\\bprivate\\\\b","name":"keyword.ada"},{"include":"#protected_element_declaration"},{"include":"#comment"}]},{"include":"#comment"}]},"single_task_declaration":{"begin":"(?i)\\\\b(task)\\\\s+([_\\\\w\\\\d]+)\\\\b","beginCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.task.ada"}},"end":"(?i)(?:\\\\b(end)\\\\s*(\\\\s\\\\2)?\\\\s*)?(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.task.ada"},"3":{"name":"punctuation.ada"}},"patterns":[{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\b(?=end)\\\\b","patterns":[{"begin":"(?i)\\\\bnew\\\\b","captures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\bwith\\\\b","patterns":[{"match":"(?i)\\\\band\\\\b","name":"keyword.ada"},{"include":"#subtype_mark"},{"include":"#comment"}]},{"match":"(?i)\\\\bprivate\\\\b","name":"keyword.ada"},{"include":"#task_item"},{"include":"#comment"}]},{"include":"#comment"}]},"statement":{"patterns":[{"begin":"(?i)\\\\bbegin\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\b(end)\\\\s*(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"punctuation.ada"}},"patterns":[{"include":"#handled_sequence_of_statements"}]},{"include":"#label"},{"include":"#null_statement"},{"include":"#return_statement"},{"include":"#assignment_statement"},{"include":"#exit_statement"},{"include":"#goto_statement"},{"include":"#requeue_statement"},{"include":"#delay_statement"},{"include":"#abort_statement"},{"include":"#raise_statement"},{"include":"#if_statement"},{"include":"#case_statement"},{"include":"#loop_statement"},{"include":"#block_statement"},{"include":"#select_statement"},{"include":"#accept_statement"},{"include":"#pragma"},{"include":"#procedure_call_statement"},{"include":"#comment"}]},"string_literal":{"captures":{"1":{"name":"punctuation.definition.string.ada"},"2":{"name":"punctuation.definition.string.ada"}},"match":"(\\").*?(\\")","name":"string.quoted.double.ada"},"subprogram_body":{"name":"meta.declaration.subprogram.body.ada","patterns":[{"include":"#procedure_body"},{"include":"#function_body"}]},"subprogram_renaming_declaration":{"begin":"(?i)\\\\brenames\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?=(with|;))","patterns":[{"match":"[._\\\\w\\\\d]+","name":"entity.name.function.ada"}]},"subprogram_specification":{"name":"meta.declaration.subprogram.specification.ada","patterns":[{"include":"#procedure_specification"},{"include":"#function_specification"}]},"subtype_declaration":{"begin":"(?i)\\\\bsubtype\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.declaration.subtype.ada","patterns":[{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?=;)","patterns":[{"match":"(?i)\\\\b(not\\\\s+null)\\\\b","name":"storage.modifier.ada"},{"include":"#composite_constraint"},{"include":"#aspect_specification"},{"include":"#subtype_indication"}]},{"begin":"(?i)(?<=subtype)","end":"(?i)\\\\b(?=is)\\\\b","patterns":[{"include":"#subtype_mark"}]}]},"subtype_indication":{"name":"meta.declaration.indication.subtype.ada","patterns":[{"include":"#scalar_constraint"},{"include":"#subtype_mark"}]},"subtype_mark":{"patterns":[{"match":"(?i)\\\\b(access|aliased|not\\\\s+null|constant)\\\\b","name":"storage.visibility.ada"},{"include":"#attribute"},{"include":"#actual_parameter_part"},{"begin":"(?i)\\\\b(procedure|function)\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?=([);]))","patterns":[{"include":"#parameter_profile"},{"begin":"(?i)\\\\breturn\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?=([);]))","patterns":[{"include":"#subtype_mark"}]}]},{"captures":{"0":{"patterns":[{"match":"[._]","name":"punctuation.ada"}]}},"match":"\\\\b[._\\\\w\\\\d]+\\\\b","name":"entity.name.type.ada"},{"include":"#comment"}]},"task_body":{"begin":"(?i)\\\\b(task)\\\\s+(body)\\\\s+(([._\\\\w\\\\d])+)\\\\b","beginCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"keyword.ada"},"3":{"name":"entity.name.task.ada"}},"end":"(?i)(?:\\\\b(end)\\\\s*(?:\\\\s(\\\\3))?\\\\s*)?(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.task.ada"},"3":{"name":"punctuation.ada"}},"name":"meta.declaration.task.body.ada","patterns":[{"begin":"(?i)\\\\bbegin\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)(?=end)","patterns":[{"include":"#handled_sequence_of_statements"}]},{"include":"#aspect_specification"},{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)(?=(with|begin))","patterns":[{"include":"#declarative_item"}]}]},"task_item":{"patterns":[{"include":"#aspect_clause"},{"include":"#entry_declaration"}]},"task_type_declaration":{"begin":"(?i)\\\\b(task)\\\\s+(type)\\\\s+(([._\\\\w\\\\d])+)\\\\b","beginCaptures":{"1":{"name":"storage.modifier.ada"},"2":{"name":"keyword.ada"},"3":{"name":"entity.name.task.ada"}},"end":"(?i)(?:\\\\b(end)\\\\s*(?:\\\\s(\\\\3))?\\\\s*)?(;)","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"entity.name.task.ada"},"3":{"name":"punctuation.ada"}},"name":"meta.declaration.type.task.ada","patterns":[{"include":"#known_discriminant_part"},{"begin":"(?i)\\\\bis\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\b(?=end)\\\\b","patterns":[{"begin":"(?i)\\\\bnew\\\\b","captures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\bwith\\\\b","patterns":[{"match":"(?i)\\\\band\\\\b","name":"keyword.ada"},{"include":"#subtype_mark"},{"include":"#comment"}]},{"match":"(?i)\\\\bprivate\\\\b","name":"keyword.ada"},{"include":"#task_item"},{"include":"#comment"}]},{"include":"#comment"}]},"type_declaration":{"name":"meta.declaration.type.ada","patterns":[{"include":"#full_type_declaration"}]},"type_definition":{"name":"meta.declaration.type.definition.ada","patterns":[{"include":"#enumeration_type_definition"},{"include":"#integer_type_definition"},{"include":"#record_type_definition"},{"include":"#real_type_definition"},{"include":"#array_type_definition"},{"include":"#access_type_definition"},{"include":"#interface_type_definition"},{"include":"#derived_type_definition"}]},"use_clause":{"name":"meta.context.use.ada","patterns":[{"include":"#use_type_clause"},{"include":"#use_package_clause"}]},"use_package_clause":{"begin":"(?i)\\\\buse\\\\b","beginCaptures":{"0":{"name":"keyword.other.using.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.context.use.package.ada","patterns":[{"match":",","name":"punctuation.ada"},{"include":"#package_mark"}]},"use_type_clause":{"begin":"(?i)\\\\b(use)\\\\s+(?:(all)\\\\s+)?(type)\\\\b","beginCaptures":{"1":{"name":"keyword.other.using.ada"},"2":{"name":"keyword.modifier.ada"},"3":{"name":"keyword.modifier.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.context.use.type.ada","patterns":[{"match":",","name":"punctuation.ada"},{"include":"#subtype_mark"}]},"value":{"patterns":[{"include":"#based_literal"},{"include":"#decimal_literal"},{"include":"#character_literal"},{"include":"#string_literal"}]},"variant_part":{"begin":"(?i)\\\\bcase\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"(?i)\\\\b(end)\\\\s+(case);","endCaptures":{"1":{"name":"keyword.ada"},"2":{"name":"keyword.ada"},"3":{"name":"punctuation.ada"}},"name":"meta.declaration.variant.ada","patterns":[{"begin":"(?i)\\\\b(?<=case)\\\\b","end":"(?i)\\\\bis\\\\b","endCaptures":{"0":{"name":"keyword.ada"}},"patterns":[{"match":"[_\\\\w\\\\d]+","name":"variable.name.ada"},{"include":"#comment"}]},{"begin":"(?i)\\\\b(?<=is)\\\\b","end":"(?i)\\\\b(?=end)\\\\b","patterns":[{"begin":"(?i)\\\\bwhen\\\\b","beginCaptures":{"0":{"name":"keyword.ada"}},"end":"=>","endCaptures":{"0":{"name":"keyword.other.ada"}},"patterns":[{"match":"\\\\|","name":"punctuation.ada"},{"match":"(?i)\\\\bothers\\\\b","name":"keyword.ada"},{"include":"#expression"}]},{"include":"#component_item"}]}]},"while_loop_statement":{"begin":"(?i)\\\\bwhile\\\\b","beginCaptures":{"0":{"name":"keyword.control.ada"}},"end":"(?i)\\\\b(end)\\\\s+(loop)(\\\\s+[_\\\\w\\\\d]+)?\\\\s*(;)","endCaptures":{"1":{"name":"keyword.control.ada"},"2":{"name":"keyword.control.ada"},"3":{"name":"entity.name.label.ada"},"4":{"name":"punctuation.ada"}},"name":"meta.statement.loop.while.ada","patterns":[{"begin":"(?i)(?<=while)\\\\b","end":"(?i)\\\\bloop\\\\b","endCaptures":{"0":{"name":"keyword.control.ada"}},"patterns":[{"include":"#expression"}]},{"include":"#statement"}]},"with_clause":{"begin":"(?i)\\\\b(?:(limited)\\\\s+)?(?:(private)\\\\s+)?(with)\\\\b","beginCaptures":{"1":{"name":"keyword.modifier.ada"},"2":{"name":"storage.visibility.ada"},"3":{"name":"keyword.other.using.ada"}},"end":";","endCaptures":{"0":{"name":"punctuation.ada"}},"name":"meta.context.with.ada","patterns":[{"match":",","name":"punctuation.ada"},{"include":"#package_mark"}]}},"scopeName":"source.ada"}`))];export{e as default};
@@ -0,0 +1 @@
1
+ var e=[Object.freeze(JSON.parse(`{"displayName":"AutoHotkey","fileTypes":["ahk"],"name":"ahk","patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#script-block"},{"include":"#function"},{"include":"#function-call"},{"include":"#keyword"},{"include":"#punctuation"},{"include":"#text"}],"repository":{"comment":{"patterns":[{"captures":{"2":{"name":"punctuation.definition.comment.ahk"}},"example":";comment","match":"(^\\\\s*|\\\\s+)(;).*","name":"comment.line.semicolon.ahk"},{"begin":"^\\\\s*/\\\\*","end":"^\\\\s*\\\\*/","example":"/* comment */","name":"comment.block.slashstar.ahk"}]},"function":{"patterns":[{"captures":{"1":{"name":"entity.name.function.ahk"},"2":{"name":"punctuation.bracket.parenthesis.ahk"},"3":{"patterns":[{"include":"#text"}]},"4":{"name":"punctuation.bracket.parenthesis.ahk"},"5":{"name":"punctuation.bracket.curly.ahk"},"6":{"name":"comment.line.semicolon.functionline.ahk"}},"example":"fun(){","match":"(?i:^(\\\\s*\\\\w+)(?<!if|while)(\\\\()(.*)(\\\\))\\\\s*(\\\\{)(\\\\s+;.*)?$)","name":"functionline.ahk"}]},"function-call":{"patterns":[{"captures":{"1":{"patterns":[{"include":"$self"}]},"2":{"name":"comment.line.semicolon.if.ahk"}},"example":"#if [expression]","match":"#\\\\b(?i:if)\\\\b(.*?)(\\\\s+;.*)?$","name":"keyword.control.if.ahk"},{"captures":{"1":{"name":"string.parameter.import.ahk"},"2":{"name":"comment.line.semicolon.import.ahk"}},"example":"#include","match":"#\\\\b(?i:include(?:|again))\\\\b(.*?)(\\\\s+;.*)?$","name":"keyword.control.import.ahk"},{"captures":{"1":{"name":"string.parameter.directives.ahk"},"2":{"name":"comment.line.semicolon.directive.ahk"}},"example":"#persistent","match":"#\\\\b(?i:allowsamelinecomments|clipboardtimeout|commentflag|delimiter|derefchar|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|iftimeout|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|inputlevel|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreads|maxthreadsbuffer|maxthreadsperhotkey|menumaskkey|noenv|notrayicon|persistent|requires|singleinstance|usehook|warn|winactivateforce)\\\\b(.*?)(\\\\s+;.*)?$","name":"keyword.control.directives.ahk"},{"example":"winkill","match":"\\\\b(?i:autotrim|blockinput|click|clipwait|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|envadd|envdiv|envget|envmult|envset|envsub|envupdate|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|fileencoding|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemove|filemovedir|fileread|filereadline|filerecycle|filerecycleempty|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|gosub|goto|groupactivate|groupadd|groupclose|groupdeactivate|gui|guicontrol|guicontrolget|hotkey|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|run|runas|runwait|send|sendevent|sendinput|sendlevel|sendmessage|sendmode|sendplay|sendraw|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setenv|setformat|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|setregview|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundget|soundgetwavevolume|soundplay|soundset|soundsetwavevolume|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringgetpos|stringleft|stringlen|stringlower|stringmid|stringreplace|stringright|stringsplit|stringtrimleft|stringtrimright|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|winactivate|winactivatebottom|winclose|winget|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winhide|winkill|winmaximize|winmenuselectitem|winminimize|winminimizeall|winminimizeallundo|winmove|winrestore|winset|winsettitle|winshow|winwait|winwaitactive|winwaitclose|winwaitnotactive)\\\\b","name":"support.function.ahk"},{"example":".length","match":"\\\\b(?!MsgBox)(?<=\\\\.)(?i:length|ateof|encoding|__handle|name|isbuiltin|isvariadic|minparams|maxparams|position|pos)(?![(.\\\\[])\\\\b","name":"support.function.ahk"},{"example":"A_ScriptDir","match":"\\\\b(?!MsgBox)(?i:a_ahkpath|a_args|a_listlines|a_sendmode|a_sendlevel|a_storecapslockmode|a_coordmodetooltip|a_coordmodepixel|a_coordmodemouse|a_coordmodecaret|a_coordmodemenu|a_timeidlekeyboard|a_timeidlemouse|a_defaultgui|a_defaultlistview|a_defaulttreeview|a_comspec|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_clipboard|a_computername|a_controldelay|a_cursor|a_ddd??|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_fileencoding|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_initialworkingdir|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_is64bitos|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelayplay|a_keydelay|a_keydurationplay|a_keyduration|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfilepath|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mmm??|a_mmmm|a_mon|a_mousedelayplay|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|a_priorkey|a_programfiles|a_programs|a_programscommon|a_ptrsize|a_regview|a_screendpi|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scripthwnd|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel|programfiles|true|false)\\\\b","name":"constant.language.ahk"}]},"keyword":{"patterns":[{"example":"this","match":"\\\\b(?!MsgBox)(?i:this)\\\\b","name":"support.class.ahk"},{"example":"LButton","match":"\\\\b(?!MsgBox)(?i:new|__New|__Delete|__Set|__Get|__Call|shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2|vk\\\\d+|sc\\\\d+)\\\\b(?!\\\\s*\\\\()\\\\b","name":"keyword.keys.ahk"},{"example":"text","match":"\\\\b(?!MsgBox)(?<!\\\\.)(?i:ahk_id|ahk_exe|ahk_pid|ahk_class|ahk_group|not|or|and|static|global|local|byref|error|single|GuiEscape|GuiClose|GuiSize|GuiContextMenu|GuiDropFiles|buttons|lines|blind|raw|all|base)(?![(.\\\\[])\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=::\\\\s*)(AltTab|ShiftAltTab|AltTabMenu|AltTabAndMenu|AltTabMenuDismiss)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\b(AutoTrim|DetectHiddenText|DetectHiddenWindows|ListLines|SetStoreCapsLockMode)\\\\b\\\\s*,?\\\\s*)(O(?:n|ff))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bBlockInput\\\\b\\\\s*,?\\\\s*)(On|Off|Send|Mouse|SendAndMouse|Default|MouseMove|MouseMoveOff)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bControl\\\\b\\\\s*,?\\\\s*)(Check|Uncheck|Enable|Disable|Show|Hide|Style|ExStyle|ShowDropDown|HideDropDown|TabLeft|TabRight|Add|Delete|Choose|ChooseString|EditPaste)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bControlClick\\\\b\\\\s*,?[^,]*,[^,]+,[^,]*,\\\\s*)(L|Left|R|Right|M|Middle|X1|XButton1|X2|XButton2|WheelUp|WU|WheelDown|WD|WheelLeft|WL|WheelRight|WR)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bControlClick\\\\b\\\\s*,?[^,]*,[^,]+,[^,]*,[^,]*,[^,]*,[^,]*)(NA|[DU]|Pos)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bCoordMode\\\\b\\\\s*,?\\\\s*)(ToolTip|Pixel|Mouse|Caret|Menu)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bCoordMode\\\\b\\\\s*,?[^,]+,\\\\s*)(Screen|Relative|Window|Client)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bDrive\\\\b\\\\s*,?\\\\s*)(Label|Lock|Unlock|Eject)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bDriveGet\\\\b\\\\s*,?[^,]+,\\\\s*)(List|Capacity|FS|FileSystem|Label|Serial|Type|Status|StatusCD)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bDriveGet\\\\b\\\\s*,?[^,]+,\\\\s*List\\\\s*,\\\\s*)(CDROM|REMOVABLE|FIXED|NETWORK|RAMDISK|UNKNOWN)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\b(Env(?:Add|Sub))\\\\b\\\\s*,?[^,]+,[^,]+,\\\\s*)(Seconds|Minutes|Hours|Days|[DHMS])\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=([-+])=[^,]+,\\\\s*)(Seconds|Minutes|Hours|Days|[DHMS])\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bFileEncoding\\\\b\\\\s*,?\\\\s*)(UTF-8|UTF-8-RAW|UTF-16|UTF-16-RAW|CP\\\\d{3,5})\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bFor\\\\s+(\\\\w+|%\\\\w+%)\\\\s*(,\\\\s*(\\\\w+|%\\\\w+%))?\\\\s+)(in)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bFormatTime\\\\b\\\\s*,?[^,]+,[^,]*,\\\\s*)(Time|ShortDate|LongDate|YearMonth|YDay0??|WDay|YWeek)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGetKeyState\\\\b\\\\s*,?[^,]+,[^,]+,\\\\s*)([PT])\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?)(New|Add|Show|Submit|Cancel|Hide|Destroy|Font|Color|Margin|Menu|Minimize|Maximize|Restore|Flash|Default|ListView)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*)(Text|Edit|UpDown|Picture|Pic|Button|Checkbox|Radio|DropDownList|DDL|ComboBox|ListBox|ListView|TreeView|Link|Hotkey|DateTime|MonthCal|Slider|Progress|GroupBox|Tab2??|Tab3|StatusBar|ActiveX|Custom)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Show\\\\s*,[^,]*)(Center|xCenter|yCenter|AutoSize|Minimize|Maximize|Restore|NoActivate|NA|Hide)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Submit\\\\s*,\\\\s*)NoHide\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Font\\\\s*,[^,]*)(Bold|Italic|Strike|Underline|Norm|c(Default|Black|Silver|Gray|White|Maroon|Red|Purple|Fuchsia|Green|Lime|Olive|Yellow|Navy|Blue|Teal|Aqua))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Color\\\\s*,\\\\s*)(Default|Black|Silver|Gray|White|Maroon|Red|Purple|Fuchsia|Green|Lime|Olive|Yellow|Navy|Blue|Teal|Aqua)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Flash\\\\s*,\\\\s*)Off\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*(((\\\\w+|%\\\\w+%):\\\\s*)?New\\\\s*,)?[^,]*)(AlwaysOnTop|Border|Caption|Delimiter|Disabled|DPIScale|Hwnd|Label|LastFound|LastFoundExist|MaximizeBox|MinimizeBox|MinSize|MaxSize|OwnDialogs|Owner|Parent|Resize|SysMenu|Theme|ToolWindow)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*(\\\\w+|%\\\\w+%)\\\\s*,[^,]*)(wp|hp|xp|yp|xm|ym|xs|ys)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*(\\\\w+|%\\\\w+%)\\\\s*,[^,]*)(AltSubmit|Choose|Disabled|Hidden|Left|Right|Center|Section|Tabstop|Wrap|VScroll|HScroll|Controls|BackgroundTrans|Background|Border|HwndOutputVar|Theme|c(Default|Black|Silver|Gray|White|Maroon|Red|Purple|Fuchsia|Green|Lime|Olive|Yellow|Navy|Blue|Teal|Aqua))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*Edit\\\\s*,[^,]*)(Limit|Lowercase|Multi|Number|Password|ReadOnly|Uppercase|WantCtrlA|WantReturn|WantTab|Wrap)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*UpDown\\\\s*,[^,]*)(Horz|Left|Range|Wrap|16|0x80)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*(Pic(?:ture|))\\\\s*,[^,]*)(Icon\\\\d+)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*Button\\\\s*,[^,]*)(Default)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*CheckBox\\\\s*,[^,]*)(Check(?:3|ed|edGray))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*Radio\\\\s*,[^,]*)(Group|Checked)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*(D(?:ropDownList|DL))\\\\s*,[^,]*)(Choose|Uppercase|Lowercase|Sort)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*ComboBox\\\\s*,[^,]*)(Limit|Simple)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*ListBox\\\\s*,[^,]*)(Choose|Multi|ReadOnly|Sort|0x100)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*DateTime\\\\s*,[^,]*,[^,]*)(LongDate|Time|Choose|ChooseNone|Range|Right)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*MonthCal\\\\s*,[^,]*)(Multi|Range|Colors|[48]|16)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*Slider\\\\s*,[^,]*)(Buddy1|Buddy2|Center|Invert|Left|Line|NoTicks|Page|Range|Thick|TickInterval|ToolTip|Vertical)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*Progress\\\\s*,[^,]*)(Background|Range|Smooth|Vertical|c(Default|Black|Silver|Gray|White|Maroon|Red|Purple|Fuchsia|Green|Lime|Olive|Yellow|Navy|Blue|Teal|Aqua)|Background(Default|Black|Silver|Gray|White|Maroon|Red|Purple|Fuchsia|Green|Lime|Olive|Yellow|Navy|Blue|Teal|Aqua))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*(Tab[23]??)\\\\s*,[^,]*)(Choose|Background|Buttons|Left|Right|Bottom|Wrap)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*ListView\\\\s*,[^,]*)(AltSubmit|Background|Checked|Count|Grid|Hdr|LV|LV0x10|LV0x20|Multi|NoSortHdr|NoSort|ReadOnly|Sort|SortDesc|WantF2|Icon|Tile|IconSmall|List|Report|c(Default|Black|Silver|Gray|White|Maroon|Red|Purple|Fuchsia|Green|Lime|Olive|Yellow|Navy|Blue|Teal|Aqua))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGui\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?Add\\\\s*,\\\\s*TreeView\\\\s*,[^,]*)(AltSubmit|Background|Buttons|Checked|HScroll|ImageList|Lines|ReadOnly|WantF2|c(Default|Black|Silver|Gray|White|Maroon|Red|Purple|Fuchsia|Green|Lime|Olive|Yellow|Navy|Blue|Teal|Aqua))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGuiControl\\\\b\\\\s*,?\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?)(Text|Move|MoveDraw|Focus|Disable|Enable|Hide|Show|Delete|Choose|ChooseString|Font|Options)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGuiControl\\\\b\\\\s*,?[^,]*([-+]))(g|Redraw|AltSubmit|Choose|Disabled|Hidden|Left|Right|Center|Section|Tabstop|Wrap|VScroll|HScroll|Controls|BackgroundTrans|Background|Border|HwndOutputVar|Theme)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGuiControl\\\\b\\\\s*,?[^,]*([-+]))(Limit|Lowercase|Multi|Number|Password|ReadOnly|Uppercase|WantCtrlA|WantReturn|WantTab|Wrap|Horz|Left|Range|Wrap|16|0x80|Icon|Default|Check3|Checked|CheckedGray|Group|Checked|Choose|Uppercase|Lowercase|Sort|Limit|Simple|Choose|Multi|ReadOnly|Sort|0x100|LongDate|Time|Choose|ChooseNone|Range|Right|Multi|Range|Colors|[48]|16|Buddy1|Buddy2|Center|Invert|Left|Line|NoTicks|Page|Range|Thick|TickInterval|ToolTip|Vertical|Background|Range|Smooth|Vertical|Choose|Background|Buttons|Left|Right|Bottom|Wrap|AltSubmit|Background|Checked|Count|Grid|Hdr|LV|LV0x10|LV0x20|Multi|NoSortHdr|NoSort|ReadOnly|Sort|SortDesc|WantF2|Icon|Tile|IconSmall|List|Report|AltSubmit|Background|Buttons|Checked|HScroll|ImageList|Lines|ReadOnly|WantF2)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bGuiControlGet\\\\b\\\\s*,?[^,]+,\\\\s*((\\\\w+|%\\\\w+%):\\\\s*)?)(Pos|FocusV??|Enabled|Visible|Hwnd|Name)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bIf\\\\s+(\\\\w+|%\\\\w+%)\\\\s+)(is\\\\s+(not\\\\s+)?(Integer|Float|Number|Digit|Xdigit|Alpha|Upper|Lower|Alnum|Space|Time|Date))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bIf\\\\s+(\\\\w+|%\\\\w+%)\\\\s+(not\\\\s+)?)(between|contains|in)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bIfMsgBox\\\\s*,?\\\\s*)(Yes|No|OK|Cancel|Abort|Ignore|Retry|Continue|TryAgain|Timeout)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bInputBox\\\\b\\\\s*,?[^,]+,[^,]+,[^,]+,\\\\s*)(HIDE)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bLoop\\\\b\\\\s*,?\\\\s*)(Files|Parse|Read|Reg)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bLoop\\\\b\\\\s*,?\\\\s*Files\\\\s*,[^,]+,\\\\s*)(DF?R?|DR?F?|FD?R?|FR?D?|RD?F?|RF?D?)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bLoop\\\\b\\\\s*,?\\\\s*Parse\\\\s*,[^,]+,\\\\s*)(CSV)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bLoop\\\\b\\\\s*,?\\\\s*Reg\\\\s*,\\\\s*)(HK(?:EY_LOCAL_MACHINE|EY_USERS|EY_CURRENT_USER|EY_CLASSES_ROOT|EY_CURRENT_CONFIG|LM|U|CU|CR|CC))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bLoop\\\\b\\\\s*,?\\\\s*Reg\\\\s*,[^,]+,\\\\s*)(KV?R?|KR?V?|VK?R?|VR?K?|RK?V?|RV?K?)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bMenu\\\\b\\\\s*,?\\\\s*)Tray\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bMenu\\\\b\\\\b\\\\s*,?[^,]+,\\\\s*)(Add|Insert|Delete|DeleteAll|Rename|Check|Uncheck|ToggleCheck|Enable|Disable|ToggleEnable|Default|NoDefault|Standard|NoStandard|Icon|NoIcon|Tip|Show|Color|Click|MainWindow|NoMainWindow|UseErrorLevel)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bMouseClick(Drag)?\\\\b\\\\s*,?\\\\s*)(L|Left|R|Right|M|Middle|X1|X2)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bPixelGetColor\\\\b\\\\s*,?[^,]+,[^,]+,[^,]+,[^,]*)(Alt|Slow|RGB)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bPixelSearch\\\\b\\\\s*,?[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]*)(Fast|RGB)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bProcess\\\\b\\\\s*,?\\\\s*)(Exist|Close|List|Priority|Wait|WaitClose)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bProcess\\\\b\\\\s*,?\\\\s*Priority\\\\s*,[^,]+,\\\\s*)(L|Low|B|BelowNormal|N|Normal|A|AboveNormal|H|High|R|Realtime)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\b(Progress|SplashImage)\\\\b\\\\s*,?\\\\s*)(Off|Show)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bProgress\\\\b\\\\s*,?[^,]*)(A|([BM])([12])?|T|Hide|(C[BTW])(Default|Black|Silver|Gray|White|Maroon|Red|Purple|Fuchsia|Green|Lime|Olive|Yellow|Navy|Blue|Teal|Aqua))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bRegDelete\\\\b\\\\s*,?\\\\s*)(HK(?:EY_LOCAL_MACHINE|EY_USERS|EY_CURRENT_USER|EY_CLASSES_ROOT|EY_CURRENT_CONFIG|LM|U|CU|CR|CC))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bRegDelete\\\\b\\\\s*,?[^,]+,\\\\s*)(AHK_DEFAULT)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bRegRead\\\\b\\\\s*,?[^,]+,\\\\s*)(HK(?:EY_LOCAL_MACHINE|EY_USERS|EY_CURRENT_USER|EY_CLASSES_ROOT|EY_CURRENT_CONFIG|LM|U|CU|CR|CC))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bRegWrite\\\\b\\\\s*,?\\\\s*)(REG_(?:SZ|EXPAND_SZ|MULTI_SZ|DWORD|BINARY))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bRegWrite\\\\b\\\\s*,?[^,]+,\\\\s*)(HK(?:EY_LOCAL_MACHINE|EY_USERS|EY_CURRENT_USER|EY_CLASSES_ROOT|EY_CURRENT_CONFIG|LM|U|CU|CR|CC))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\b(Run(?:|Wait))\\\\b\\\\s*,?[^,]+,[^,]*,\\\\s*)(Max|Min|Hide|UseErrorLevel)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSendMode\\\\b\\\\s*,?\\\\s*)(Event|Input|InputThenPlay|Play)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\b(Set(?:Caps|Num|Scroll)LockState)\\\\b\\\\s*,?\\\\s*)(On|Off|AlwaysOn|AlwaysOff)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSetFormat\\\\b\\\\s*,?\\\\s*)((?:Integer|Float)(?:|Fast))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSetFormat\\\\b\\\\s*,?\\\\s*(Integer(?:|Fast))\\\\s*,\\\\s*)([DH]|HEX)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSetMouseDelay\\\\b\\\\s*,?[^,]+,\\\\s*)(Play)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSetKeyDelay\\\\b\\\\s*,?[^,]+,[^,]+,\\\\s*)(Play)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSetRegView\\\\b\\\\s*,?\\\\s*)(32|64|Default)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSetTimer\\\\b\\\\s*,?[^,]*,\\\\s*)(On|Off|Delete)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSetTitleMatchMode\\\\b\\\\s*,?\\\\s*)(RegEx|Fast|Slow)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSoundSet\\\\b\\\\s*,?[^,]+,\\\\s*)(MASTER|SPEAKERS|DIGITAL|LINE|MICROPHONE|SYNTH|CD|TELEPHONE|PCSPEAKER|WAVE|AUX|ANALOG|HEADPHONES|N/A)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSoundSet\\\\b\\\\s*,?[^,]+,[^,]*,\\\\s*)(VOLUME|VOL|ONOFF|MUTE|MONO|LOUDNESS|STEREOENH|BASSBOOST|PAN|QSOUNDPAN|BASS|TREBLE|EQUALIZER)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSplashImage\\\\b\\\\s*,?[^,]+,[^,]*)(A|([BM])([12])?|T|Hide|(C[BTW])(Default|Black|Silver|Gray|White|Maroon|Red|Purple|Fuchsia|Green|Lime|Olive|Yellow|Navy|Blue|Teal|Aqua))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bStringCaseSense\\\\b\\\\s*,?\\\\s*)(On|Off|Locale)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bSysGet\\\\b\\\\s*,?[^,]+,\\\\s*)(Monitor(?:Count|Primary||WorkArea|Name))\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bThread\\\\b\\\\s*,?\\\\s*)(NoTimers|Priority|Interrupt)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bTransform\\\\b\\\\s*,?[^,]+,\\\\s*)(Unicode|Deref|HTML|Asc|Chr|Mod|Exp|Sqrt|Log|Ln|Round|Ceil|Floor|Abs|Sin|Cos|Tan|ASin|ACos|ATan|Pow|BitNot|BitAnd|BitOr|BitXOr|BitShiftLeft|BitShiftRight)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bWinGet\\\\b\\\\s*,?[^,]+,\\\\s*)(ID|IDLast|PID|ProcessName|ProcessPath|Count|List|MinMax|ControlList|ControlListHwnd|Transparent|TransColor|Style|ExStyle)\\\\b","name":"keyword.other.ahk"},{"match":"(?i)\\\\b(?<=\\\\bWinSet\\\\b\\\\s*,?\\\\s*)(AlwaysOnTop|Bottom|Top|Disable|Enable|Redraw|Style|ExStyle|Region|Transparent|TransColor)\\\\b","name":"keyword.other.ahk"},{"match":"\\\\b(?!MsgBox)(?<!\\\\.)(?i:if|else|switch|case|return|loop|break|for|while|class|extends|catch|finally|throw|try|until|continue|critical|exit|exitapp)\\\\b","name":"keyword.control.ahk"},{"match":"\\\\b((0([Xx])\\\\h*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))(([Ee])([-+])?[0-9]+)?)\\\\b","name":"constant.numeric.ahk"},{"match":"[-!#\\\\&*+/^|~]","name":"keyword.operator.arithmetic.ahk"},{"match":":=|\\\\.=|=|::","name":"keyword.operator.assignment.ahk"},{"match":"[<>]|<>|[<=>]=|!=","name":"keyword.operator.comparison.ahk"}]},"punctuation":{"patterns":[{"match":"[,:?\`]","name":"punctuation.ahk"},{"match":"[]()\\\\[{}]","name":"punctuation.bracket.ahk"},{"match":"%","name":"punctuation.definition.variable.percent.ahk"}]},"script-block":{"patterns":[{"captures":{"1":{"name":"keyword.class.ahk"},"2":{"name":"support.class.ahk"},"4":{"name":"keyword.class.ahk"},"5":{"name":"support.class.ahk"}},"example":"class A extends B","match":"(?i:\\\\b(class)\\\\b\\\\s*(\\\\w+))\\\\s*((extends)\\\\s+(\\\\w+))?","name":"classline.ahk"},{"captures":{"1":{"name":"entity.name.function.label.ahk"},"2":{"name":"comment.line.semicolon.label.ahk"}},"example":"label:","match":"^\\\\s*(\\\\w+:)(\\\\s+;.*)?$","name":"labelline.ahk"},{"captures":{"1":{"name":"support.function.ahk"},"2":{"name":"entity.name.function.label.ahk"}},"example":"Gosub label","match":"(?i:(Gosub)(?:\\\\s*,\\\\s*|\\\\s+)(\\\\w+))","name":"golabel.ahk"},{"captures":{"1":{"name":"entity.name.function.label.ahk"},"2":{"name":"plaintext"}},"example":"::hot::","match":"(?i: *(:[*0bceiknprsz]{0,2}:.+::)(.+))","name":"hotstring.ahk"},{"captures":{"1":{"name":"entity.name.function.label.ahk"},"2":{"name":"punctuation.definition.equals.colon"}},"example":"^c::","match":"^\\\\s*([^\\"]+)(::)","name":"hotkeyline.ahk"}]},"string":{"patterns":[{"begin":"^\\\\s*\\\\((?!.*\\\\))","end":"^\\\\s*\\\\)","example":"I can't get mean.","name":"string.ahk"}]},"text":{"patterns":[{"match":"\\\\b(?i:autotrim|Exception|blockinput|click|clipwait|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|envadd|envdiv|envget|envmult|envset|envsub|envupdate|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|fileencoding|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemove|filemovedir|fileread|filereadline|filerecycle|filerecycleempty|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|gosub|goto|groupactivate|groupadd|groupclose|groupdeactivate|gui|guicontrol|guicontrolget|hotkey|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|run|runas|runwait|send|sendevent|sendinput|sendlevel|sendmessage|sendmode|sendplay|sendraw|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setenv|setformat|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|setregview|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundget|soundgetwavevolume|soundplay|soundset|soundsetwavevolume|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringgetpos|stringleft|stringlen|stringlower|stringmid|stringreplace|stringright|stringsplit|stringtrimleft|stringtrimright|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|winactivate|winactivatebottom|winclose|winget|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winhide|winkill|winmaximize|winmenuselectitem|winminimize|winminimizeall|winminimizeallundo|winmove|winrestore|winset|winsettitle|winshow|winwait|winwaitactive|winwaitclose|winwaitnotactive)\\\\b","name":"support.function.ahk"},{"match":"\\\\b(?!MsgBox)(?i:abs|Push|length|RemoveAt|Count|InsertAt|ObjGetCapacity|ObjRemoveAt|ObjInsertAt|StrReplace|ObjDelete|acos|asc|asin|atan|ceil|chr|cos|ObjAddRef|ObjRelease|ComObject|comobjcreate|comobjactive|comobjarray|comobjconnect|comobjenwrap|comobjerror|comobjflags|comobjget|comobjmissing|comobjparameter|comobjquery|comobjtype|comobjunwrap|comobjvalue|dllcall|exp|fileexist|fileopen|floor|format|func|getkeyname|getkeyvk|getkeysc|getkeystate|il_add|il_create|il_destroy|instr|isbyref|isfunc|islabel|isobject|ln|log|ltrim|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|regexmatch|regexreplace|registercallback|round|rtrim|sb_seticon|sb_setparts|sb_settext|sin|sqrt|strget|strlen|strput|strsplit|substr|tan|trim|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)(?=\\\\()\\\\b","name":"support.function.ahk"},{"match":"\\\\b(?!MsgBox)(?<=\\\\.)(?i:read|write|readline|writeline|readuint|readint|readint64|readshort|readushort|readchar|readuchar|readdouble|readfloat|writeuint|writeint|writeint64|writeshort|writeushort|writechar|writeuchar|writedouble|writefloat|rawread|rawwrite|seek|tell|close|insert|remove|minindex|maxindex|setcapacity|getcapacity|getaddress|newenum|haskey|clone|isoptional|__new|__call|__get|__set|__delete)(?=\\\\()\\\\b","name":"support.function.ahk"},{"example":"fun(","match":"\\\\b(?!MsgBox)\\\\w+\\\\s*(?=\\\\()","name":"entity.name.function.ahk"},{"begin":"(\\")","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.ahk"}},"end":"(\\")(?!\\")|^","endCaptures":{"1":{"name":"punctuation.definition.string.end.ahk"}},"example":"\\"string\\"","name":"string.quoted.double.ahk","patterns":[{"match":"\\"\\"","name":"constant.character.escape.ahk"}]},{"match":"\\\\w+","name":"variable.def.ahk"}]}},"scopeName":"source.ahk","aliases":["ahk1"]}`))];export{e as default};