@enjoys/context-engine 1.2.0 → 1.4.1

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 (270) hide show
  1. package/data/codeActions/angular.json +126 -0
  2. package/data/codeActions/css.json +111 -0
  3. package/data/codeActions/nestjs.json +124 -0
  4. package/data/codeActions/nextjs.json +198 -0
  5. package/data/codeActions/react.json +154 -0
  6. package/data/codeActions/shadcn.json +112 -0
  7. package/data/codeActions/shell.json +169 -26
  8. package/data/codeActions/tailwindcss.json +76 -0
  9. package/data/codeLens/angular.json +22 -0
  10. package/data/codeLens/css.json +68 -0
  11. package/data/codeLens/nestjs.json +21 -0
  12. package/data/codeLens/nextjs.json +117 -0
  13. package/data/codeLens/react.json +89 -0
  14. package/data/codeLens/shadcn.json +89 -0
  15. package/data/codeLens/shell.json +59 -17
  16. package/data/codeLens/tailwindcss.json +103 -0
  17. package/data/color/angular.json +21 -0
  18. package/data/color/css.json +124 -0
  19. package/data/color/nestjs.json +18 -0
  20. package/data/color/nextjs.json +22 -0
  21. package/data/color/react.json +93 -0
  22. package/data/color/shadcn.json +66 -0
  23. package/data/color/shell.json +106 -80
  24. package/data/color/tailwindcss.json +53 -0
  25. package/data/commands/angular.json +312 -0
  26. package/data/commands/css.json +41 -0
  27. package/data/commands/manifest.json +734 -727
  28. package/data/commands/nestjs.json +273 -0
  29. package/data/commands/nextjs.json +123 -0
  30. package/data/commands/react.json +210 -0
  31. package/data/commands/shadcn.json +410 -0
  32. package/data/commands/shell.json +571 -41
  33. package/data/commands/tailwindcss.json +53 -0
  34. package/data/completion/angular.json +1490 -0
  35. package/data/completion/css.json +1176 -0
  36. package/data/completion/javascript.json +27 -0
  37. package/data/completion/nestjs.json +1454 -0
  38. package/data/completion/nextjs.json +1373 -0
  39. package/data/completion/react.json +1319 -0
  40. package/data/completion/redis-cli.json +1 -1
  41. package/data/completion/shadcn.json +1202 -0
  42. package/data/completion/shell.json +2446 -510
  43. package/data/completion/tailwindcss.json +284 -0
  44. package/data/completion/typescript.json +27 -0
  45. package/data/declaration/angular.json +46 -0
  46. package/data/declaration/css.json +59 -0
  47. package/data/declaration/nestjs.json +47 -0
  48. package/data/declaration/nextjs.json +274 -0
  49. package/data/declaration/react.json +199 -0
  50. package/data/declaration/shadcn.json +211 -0
  51. package/data/declaration/shell.json +343 -24
  52. package/data/declaration/tailwindcss.json +137 -0
  53. package/data/definition/angular.json +670 -0
  54. package/data/definition/css.json +115 -0
  55. package/data/definition/nestjs.json +684 -0
  56. package/data/definition/nextjs.json +439 -0
  57. package/data/definition/react.json +397 -0
  58. package/data/definition/redis-cli.json +1 -1
  59. package/data/definition/shadcn.json +99 -0
  60. package/data/definition/shell.json +820 -0
  61. package/data/definition/tailwindcss.json +115 -0
  62. package/data/documentHighlight/angular.json +414 -0
  63. package/data/documentHighlight/css.json +125 -0
  64. package/data/documentHighlight/nestjs.json +115 -0
  65. package/data/documentHighlight/nextjs.json +212 -0
  66. package/data/documentHighlight/react.json +119 -0
  67. package/data/documentHighlight/shadcn.json +168 -0
  68. package/data/documentHighlight/shell.json +664 -334
  69. package/data/documentHighlight/tailwindcss.json +160 -0
  70. package/data/documentRangeFormatting/angular.json +45 -0
  71. package/data/documentRangeFormatting/css.json +101 -0
  72. package/data/documentRangeFormatting/nestjs.json +17 -0
  73. package/data/documentRangeFormatting/nextjs.json +17 -0
  74. package/data/documentRangeFormatting/react.json +78 -0
  75. package/data/documentRangeFormatting/shadcn.json +45 -0
  76. package/data/documentRangeFormatting/shell.json +120 -53
  77. package/data/documentRangeFormatting/tailwindcss.json +55 -0
  78. package/data/documentSymbol/angular.json +180 -0
  79. package/data/documentSymbol/css.json +96 -0
  80. package/data/documentSymbol/nestjs.json +152 -0
  81. package/data/documentSymbol/nextjs.json +159 -0
  82. package/data/documentSymbol/react.json +145 -0
  83. package/data/documentSymbol/shadcn.json +131 -0
  84. package/data/documentSymbol/shell.json +166 -26
  85. package/data/documentSymbol/tailwindcss.json +110 -0
  86. package/data/foldingRange/angular.json +99 -0
  87. package/data/foldingRange/css.json +66 -0
  88. package/data/foldingRange/nestjs.json +26 -0
  89. package/data/foldingRange/nextjs.json +26 -0
  90. package/data/foldingRange/react.json +120 -0
  91. package/data/foldingRange/shadcn.json +93 -0
  92. package/data/foldingRange/shell.json +106 -46
  93. package/data/foldingRange/tailwindcss.json +60 -0
  94. package/data/formatting/angular.json +21 -0
  95. package/data/formatting/css.json +73 -0
  96. package/data/formatting/nestjs.json +23 -0
  97. package/data/formatting/nextjs.json +23 -0
  98. package/data/formatting/react.json +71 -0
  99. package/data/formatting/shadcn.json +61 -0
  100. package/data/formatting/shell.json +103 -19
  101. package/data/formatting/tailwindcss.json +48 -0
  102. package/data/hover/angular.json +455 -0
  103. package/data/hover/css.json +300 -0
  104. package/data/hover/nestjs.json +296 -0
  105. package/data/hover/nextjs.json +305 -0
  106. package/data/hover/react.json +173 -0
  107. package/data/hover/redis-cli.json +1 -1
  108. package/data/hover/shadcn.json +450 -0
  109. package/data/hover/shell.json +684 -75
  110. package/data/hover/tailwindcss.json +968 -0
  111. package/data/implementation/angular.json +22 -0
  112. package/data/implementation/css.json +65 -0
  113. package/data/implementation/nestjs.json +24 -0
  114. package/data/implementation/nextjs.json +137 -0
  115. package/data/implementation/react.json +125 -0
  116. package/data/implementation/shadcn.json +89 -0
  117. package/data/implementation/shell.json +59 -3
  118. package/data/implementation/tailwindcss.json +59 -0
  119. package/data/inlayHints/angular.json +24 -0
  120. package/data/inlayHints/css.json +87 -0
  121. package/data/inlayHints/nestjs.json +24 -0
  122. package/data/inlayHints/nextjs.json +143 -0
  123. package/data/inlayHints/react.json +177 -0
  124. package/data/inlayHints/shadcn.json +109 -0
  125. package/data/inlayHints/shell.json +223 -35
  126. package/data/inlayHints/tailwindcss.json +111 -0
  127. package/data/inlineCompletions/angular.json +135 -0
  128. package/data/inlineCompletions/css.json +125 -0
  129. package/data/inlineCompletions/javascript.json +12 -0
  130. package/data/inlineCompletions/nestjs.json +25 -0
  131. package/data/inlineCompletions/nextjs.json +179 -0
  132. package/data/inlineCompletions/react.json +203 -0
  133. package/data/inlineCompletions/shadcn.json +115 -0
  134. package/data/inlineCompletions/shell.json +185 -35
  135. package/data/inlineCompletions/tailwindcss.json +411 -0
  136. package/data/inlineCompletions/typescript.json +12 -0
  137. package/data/linkedEditingRange/angular.json +23 -0
  138. package/data/linkedEditingRange/css.json +40 -0
  139. package/data/linkedEditingRange/nestjs.json +10 -0
  140. package/data/linkedEditingRange/nextjs.json +11 -0
  141. package/data/linkedEditingRange/react.json +75 -0
  142. package/data/linkedEditingRange/shadcn.json +23 -0
  143. package/data/linkedEditingRange/shell.json +25 -25
  144. package/data/linkedEditingRange/tailwindcss.json +30 -0
  145. package/data/links/angular.json +95 -0
  146. package/data/links/css.json +55 -0
  147. package/data/links/nestjs.json +130 -0
  148. package/data/links/nextjs.json +91 -0
  149. package/data/links/react.json +75 -0
  150. package/data/links/shadcn.json +98 -0
  151. package/data/links/shell.json +56 -0
  152. package/data/links/tailwindcss.json +65 -0
  153. package/data/manifest.json +399 -150
  154. package/data/onTypeFormatting/angular.json +14 -0
  155. package/data/onTypeFormatting/css.json +82 -0
  156. package/data/onTypeFormatting/nestjs.json +16 -0
  157. package/data/onTypeFormatting/nextjs.json +17 -0
  158. package/data/onTypeFormatting/react.json +127 -0
  159. package/data/onTypeFormatting/shadcn.json +54 -0
  160. package/data/onTypeFormatting/shell.json +72 -68
  161. package/data/onTypeFormatting/tailwindcss.json +63 -0
  162. package/data/rangeSemanticTokens/angular.json +140 -0
  163. package/data/rangeSemanticTokens/css.json +125 -0
  164. package/data/rangeSemanticTokens/nestjs.json +27 -0
  165. package/data/rangeSemanticTokens/nextjs.json +28 -0
  166. package/data/rangeSemanticTokens/react.json +216 -0
  167. package/data/rangeSemanticTokens/shadcn.json +140 -0
  168. package/data/rangeSemanticTokens/shell.json +247 -69
  169. package/data/rangeSemanticTokens/tailwindcss.json +186 -0
  170. package/data/references/angular.json +26 -0
  171. package/data/references/css.json +65 -0
  172. package/data/references/nestjs.json +24 -0
  173. package/data/references/nextjs.json +178 -0
  174. package/data/references/react.json +192 -0
  175. package/data/references/shadcn.json +101 -0
  176. package/data/references/shell.json +323 -92
  177. package/data/references/tailwindcss.json +125 -0
  178. package/data/rename/angular.json +131 -0
  179. package/data/rename/css.json +91 -0
  180. package/data/rename/nestjs.json +32 -0
  181. package/data/rename/nextjs.json +31 -0
  182. package/data/rename/react.json +88 -0
  183. package/data/rename/shadcn.json +79 -0
  184. package/data/rename/shell.json +101 -31
  185. package/data/rename/tailwindcss.json +58 -0
  186. package/data/selectionRange/angular.json +95 -0
  187. package/data/selectionRange/css.json +55 -0
  188. package/data/selectionRange/nestjs.json +21 -0
  189. package/data/selectionRange/nextjs.json +22 -0
  190. package/data/selectionRange/react.json +87 -0
  191. package/data/selectionRange/shadcn.json +89 -0
  192. package/data/selectionRange/shell.json +65 -35
  193. package/data/selectionRange/tailwindcss.json +35 -0
  194. package/data/semanticTokens/angular.json +198 -0
  195. package/data/semanticTokens/css.json +107 -0
  196. package/data/semanticTokens/nestjs.json +35 -0
  197. package/data/semanticTokens/nextjs.json +38 -0
  198. package/data/semanticTokens/react.json +215 -0
  199. package/data/semanticTokens/shadcn.json +180 -0
  200. package/data/semanticTokens/shell.json +238 -65
  201. package/data/semanticTokens/tailwindcss.json +161 -0
  202. package/data/signatureHelp/angular.json +182 -0
  203. package/data/signatureHelp/css.json +137 -0
  204. package/data/signatureHelp/nestjs.json +128 -0
  205. package/data/signatureHelp/nextjs.json +127 -0
  206. package/data/signatureHelp/react.json +281 -0
  207. package/data/signatureHelp/shadcn.json +237 -0
  208. package/data/signatureHelp/shell.json +797 -104
  209. package/data/signatureHelp/tailwindcss.json +64 -0
  210. package/data/typeDefinition/angular.json +362 -0
  211. package/data/typeDefinition/css.json +53 -0
  212. package/data/typeDefinition/nestjs.json +334 -0
  213. package/data/typeDefinition/nextjs.json +285 -0
  214. package/data/typeDefinition/react.json +236 -0
  215. package/data/typeDefinition/shadcn.json +292 -0
  216. package/data/typeDefinition/shell.json +104 -40
  217. package/data/typeDefinition/tailwindcss.json +47 -0
  218. package/package.json +1 -1
  219. package/data/codeActions/bash.json +0 -169
  220. package/data/codeActions/zsh.json +0 -49
  221. package/data/codeLens/bash.json +0 -75
  222. package/data/codeLens/zsh.json +0 -19
  223. package/data/color/bash.json +0 -100
  224. package/data/color/zsh.json +0 -80
  225. package/data/commands/bash.json +0 -102
  226. package/data/commands/zsh.json +0 -166
  227. package/data/completion/bash.json +0 -1184
  228. package/data/completion/zsh.json +0 -973
  229. package/data/declaration/bash.json +0 -301
  230. package/data/declaration/zsh.json +0 -205
  231. package/data/definition/bash.json +0 -565
  232. package/data/definition/zsh.json +0 -350
  233. package/data/documentHighlight/bash.json +0 -393
  234. package/data/documentHighlight/zsh.json +0 -266
  235. package/data/documentRangeFormatting/bash.json +0 -41
  236. package/data/documentRangeFormatting/zsh.json +0 -59
  237. package/data/documentSymbol/bash.json +0 -124
  238. package/data/documentSymbol/zsh.json +0 -26
  239. package/data/foldingRange/bash.json +0 -76
  240. package/data/foldingRange/zsh.json +0 -46
  241. package/data/formatting/bash.json +0 -88
  242. package/data/formatting/zsh.json +0 -28
  243. package/data/hover/bash.json +0 -579
  244. package/data/hover/zsh.json +0 -96
  245. package/data/implementation/bash.json +0 -44
  246. package/data/implementation/zsh.json +0 -41
  247. package/data/inlayHints/bash.json +0 -207
  248. package/data/inlayHints/zsh.json +0 -43
  249. package/data/inlineCompletions/bash.json +0 -155
  250. package/data/inlineCompletions/zsh.json +0 -17
  251. package/data/linkedEditingRange/bash.json +0 -25
  252. package/data/linkedEditingRange/zsh.json +0 -25
  253. package/data/links/bash.json +0 -56
  254. package/data/links/zsh.json +0 -15
  255. package/data/onTypeFormatting/bash.json +0 -68
  256. package/data/onTypeFormatting/zsh.json +0 -68
  257. package/data/rangeSemanticTokens/bash.json +0 -90
  258. package/data/rangeSemanticTokens/zsh.json +0 -76
  259. package/data/references/bash.json +0 -221
  260. package/data/references/zsh.json +0 -166
  261. package/data/rename/bash.json +0 -37
  262. package/data/rename/zsh.json +0 -31
  263. package/data/selectionRange/bash.json +0 -35
  264. package/data/selectionRange/zsh.json +0 -35
  265. package/data/semanticTokens/bash.json +0 -71
  266. package/data/semanticTokens/zsh.json +0 -71
  267. package/data/signatureHelp/bash.json +0 -111
  268. package/data/signatureHelp/zsh.json +0 -118
  269. package/data/typeDefinition/bash.json +0 -95
  270. package/data/typeDefinition/zsh.json +0 -40
@@ -0,0 +1,154 @@
1
+ {
2
+ "language": "react",
3
+ "codeActions": [
4
+ {
5
+ "title": "Extract JSX to new component",
6
+ "kind": "refactor.extract",
7
+ "description": "Extracts the selected JSX into a new React functional component and replaces the selection with the new component tag",
8
+ "pattern": "<[A-Za-z][^>]*>[\\s\\S]*</[A-Za-z][^>]*>",
9
+ "isPreferred": true
10
+ },
11
+ {
12
+ "title": "Extract custom hook",
13
+ "kind": "refactor.extract",
14
+ "description": "Extracts selected stateful logic (useState, useEffect, etc.) into a new custom hook function prefixed with 'use'",
15
+ "pattern": "const\\s+\\[.*\\]\\s*=\\s*useState|useEffect\\s*\\(",
16
+ "isPreferred": true
17
+ },
18
+ {
19
+ "title": "Wrap with React.memo",
20
+ "kind": "refactor",
21
+ "description": "Wraps the component with React.memo() for performance optimization by preventing unnecessary re-renders when props are unchanged",
22
+ "pattern": "(export\\s+)?(const|function)\\s+[A-Z][a-zA-Z]*",
23
+ "isPreferred": false
24
+ },
25
+ {
26
+ "title": "Wrap with Suspense boundary",
27
+ "kind": "refactor",
28
+ "description": "Wraps selected JSX with a React.Suspense boundary and a fallback loading component",
29
+ "pattern": "<[A-Z][a-zA-Z]*",
30
+ "isPreferred": false
31
+ },
32
+ {
33
+ "title": "Wrap with ErrorBoundary",
34
+ "kind": "refactor",
35
+ "description": "Wraps selected JSX with an ErrorBoundary component to catch rendering errors in the subtree",
36
+ "pattern": "<[A-Z][a-zA-Z]*",
37
+ "isPreferred": false
38
+ },
39
+ {
40
+ "title": "Convert class component to function component",
41
+ "kind": "refactor",
42
+ "description": "Converts a class-based React component to a functional component with hooks (useState for state, useEffect for lifecycle methods)",
43
+ "pattern": "class\\s+\\w+\\s+extends\\s+(React\\.)?Component",
44
+ "isPreferred": true
45
+ },
46
+ {
47
+ "title": "Wrap callback with useCallback",
48
+ "kind": "refactor",
49
+ "description": "Wraps an inline function or arrow function passed as a prop with useCallback to memoize it and prevent unnecessary child re-renders",
50
+ "pattern": "\\w+\\s*=\\s*\\{\\s*(\\(|function)",
51
+ "isPreferred": false
52
+ },
53
+ {
54
+ "title": "Wrap value with useMemo",
55
+ "kind": "refactor",
56
+ "description": "Wraps a computed value with useMemo to memoize the result and avoid expensive recalculations on every render",
57
+ "pattern": "const\\s+\\w+\\s*=\\s*(?!use)",
58
+ "isPreferred": false
59
+ },
60
+ {
61
+ "title": "Organize imports",
62
+ "kind": "source.organizeImports",
63
+ "description": "Sorts and groups React imports: React first, then third-party modules, then local imports, removing any unused imports",
64
+ "pattern": "^import\\s+",
65
+ "isPreferred": true
66
+ },
67
+ {
68
+ "title": "Fix missing key prop in list",
69
+ "kind": "quickfix",
70
+ "description": "Adds a unique key prop to JSX elements rendered inside a .map() call to fix the 'Each child in a list should have a unique key prop' warning",
71
+ "pattern": "\\.map\\s*\\([^)]*\\)\\s*=>\\s*<",
72
+ "isPreferred": true
73
+ },
74
+ {
75
+ "title": "Fix missing dependency in useEffect",
76
+ "kind": "quickfix",
77
+ "description": "Adds missing variables to the useEffect dependency array based on the variables used inside the effect callback",
78
+ "pattern": "useEffect\\s*\\([^,]+,\\s*\\[",
79
+ "isPreferred": true
80
+ },
81
+ {
82
+ "title": "Convert to controlled component",
83
+ "kind": "refactor",
84
+ "description": "Converts an uncontrolled form input to a controlled component by adding value and onChange props bound to state",
85
+ "pattern": "<input|<textarea|<select",
86
+ "isPreferred": false
87
+ },
88
+ {
89
+ "title": "Wrap with forwardRef",
90
+ "kind": "refactor",
91
+ "description": "Wraps the component with React.forwardRef to allow parent components to access a child ref",
92
+ "pattern": "(export\\s+)?(const|function)\\s+[A-Z][a-zA-Z]*",
93
+ "isPreferred": false
94
+ },
95
+ {
96
+ "title": "Add displayName",
97
+ "kind": "quickfix",
98
+ "description": "Adds a displayName static property to the component for better debugging in React DevTools",
99
+ "pattern": "(React\\.memo|React\\.forwardRef|memo|forwardRef)\\s*\\(",
100
+ "isPreferred": false
101
+ },
102
+ {
103
+ "title": "Convert to lazy-loaded component",
104
+ "kind": "refactor",
105
+ "description": "Converts a static import of a component to a dynamic import using React.lazy() for code splitting",
106
+ "pattern": "import\\s+\\w+\\s+from",
107
+ "isPreferred": false
108
+ },
109
+ {
110
+ "title": "Add error boundary wrapper",
111
+ "kind": "quickfix",
112
+ "description": "Adds try-catch pattern in async handlers or wraps components with error boundaries for better error handling",
113
+ "pattern": "async\\s+|await\\s+|throw\\s+",
114
+ "isPreferred": false
115
+ },
116
+ {
117
+ "title": "Fix all auto-fixable issues",
118
+ "kind": "source.fixAll",
119
+ "description": "Applies all automatic fixes including missing keys, unused imports, missing dependencies, and formatting issues",
120
+ "pattern": ".*",
121
+ "isPreferred": false
122
+ },
123
+ {
124
+ "title": "Extract inline styles to object",
125
+ "kind": "refactor.extract",
126
+ "description": "Extracts inline style objects from JSX elements into a named constant for better readability and reusability",
127
+ "pattern": "style\\s*=\\s*\\{\\{",
128
+ "isPreferred": false
129
+ },
130
+ {
131
+ "title": "Convert useState to useReducer",
132
+ "kind": "refactor",
133
+ "description": "Converts multiple related useState calls into a single useReducer with typed actions for complex state management",
134
+ "pattern": "const\\s+\\[\\w+,\\s*set\\w+\\]\\s*=\\s*useState",
135
+ "isPreferred": false
136
+ },
137
+ {
138
+ "title": "Add TypeScript types to component props",
139
+ "kind": "quickfix",
140
+ "description": "Generates a TypeScript interface for the component props based on prop usage within the component",
141
+ "pattern": "(const|function)\\s+[A-Z]\\w*\\s*=?\\s*\\(",
142
+ "isPreferred": false
143
+ }
144
+ ],
145
+ "providedCodeActionKinds": [
146
+ "quickfix",
147
+ "refactor",
148
+ "refactor.extract",
149
+ "refactor.inline",
150
+ "source",
151
+ "source.fixAll",
152
+ "source.organizeImports"
153
+ ]
154
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "language": "shadcn",
3
+ "codeActions": [
4
+ {
5
+ "title": "Add component import from @/components/ui",
6
+ "kind": "quickfix",
7
+ "description": "Add missing import statement for a shadcn/ui component from @/components/ui/*",
8
+ "pattern": "<(Accordion|Alert|Avatar|Badge|Button|Calendar|Card|Carousel|Checkbox|Collapsible|Command|ContextMenu|Dialog|Drawer|DropdownMenu|Form|HoverCard|Input|Label|Menubar|NavigationMenu|Pagination|Popover|Progress|RadioGroup|ScrollArea|Select|Separator|Sheet|Skeleton|Slider|Switch|Table|Tabs|Textarea|Toast|Toaster|Toggle|ToggleGroup|Tooltip)",
9
+ "isPreferred": true
10
+ },
11
+ {
12
+ "title": "Convert className string to cn() utility",
13
+ "kind": "refactor.rewrite",
14
+ "description": "Replace static className string with cn() utility for conditional class merging",
15
+ "pattern": "className=\"[^\"]+\"",
16
+ "isPreferred": false
17
+ },
18
+ {
19
+ "title": "Convert to variant prop",
20
+ "kind": "refactor.rewrite",
21
+ "description": "Extract inline classes to a cva() variant definition",
22
+ "pattern": "className=\\{cn\\(",
23
+ "isPreferred": false
24
+ },
25
+ {
26
+ "title": "Extract to shadcn/ui component",
27
+ "kind": "refactor.extract",
28
+ "description": "Extract selected JSX into a separate reusable shadcn/ui-styled component",
29
+ "pattern": "<(div|section|article)\\s+className=",
30
+ "isPreferred": false
31
+ },
32
+ {
33
+ "title": "Add form validation with zod",
34
+ "kind": "quickfix",
35
+ "description": "Add zod schema validation and react-hook-form integration to a form",
36
+ "pattern": "<form\\s",
37
+ "isPreferred": false
38
+ },
39
+ {
40
+ "title": "Wrap with TooltipProvider",
41
+ "kind": "quickfix",
42
+ "description": "Wrap Tooltip component with required TooltipProvider ancestor",
43
+ "pattern": "<Tooltip[^P]",
44
+ "isPreferred": true
45
+ },
46
+ {
47
+ "title": "Add toast notification",
48
+ "kind": "source.addImport",
49
+ "description": "Import useToast hook and add toast notification call",
50
+ "pattern": "\\btoast\\b|\\buseToast\\b",
51
+ "isPreferred": false
52
+ },
53
+ {
54
+ "title": "Add dark mode support",
55
+ "kind": "refactor.rewrite",
56
+ "description": "Add dark mode CSS variables and class-based dark mode toggle support",
57
+ "pattern": ":root\\s*\\{|@layer\\s+base",
58
+ "isPreferred": false
59
+ },
60
+ {
61
+ "title": "Import from @/components/ui",
62
+ "kind": "source.addImport",
63
+ "description": "Add import statement for shadcn/ui component from the @/components/ui directory",
64
+ "pattern": "\\b(Button|Card|Dialog|Sheet|Form|Input|Select|Table|Tabs|Badge)\\b",
65
+ "isPreferred": false
66
+ },
67
+ {
68
+ "title": "Add missing variant props",
69
+ "kind": "quickfix",
70
+ "description": "Add variant and size props to a shadcn/ui component missing them",
71
+ "pattern": "<(Button|Badge|Alert|Toggle)\\s*(?!.*variant)[^>]*>",
72
+ "isPreferred": false
73
+ },
74
+ {
75
+ "title": "Organize component imports",
76
+ "kind": "source.organizeImports",
77
+ "description": "Sort and group shadcn/ui component imports by module path",
78
+ "pattern": "from\\s+['\"]@/components/ui/",
79
+ "isPreferred": true
80
+ },
81
+ {
82
+ "title": "Convert to controlled component",
83
+ "kind": "refactor.rewrite",
84
+ "description": "Convert uncontrolled component to controlled with React state",
85
+ "pattern": "defaultValue=|defaultChecked=",
86
+ "isPreferred": false
87
+ },
88
+ {
89
+ "title": "Add asChild prop for composition",
90
+ "kind": "quickfix",
91
+ "description": "Add asChild prop to Radix UI trigger component for element composition",
92
+ "pattern": "<(DialogTrigger|AlertDialogTrigger|PopoverTrigger|DropdownMenuTrigger|SheetTrigger|TooltipTrigger)(?!.*asChild)",
93
+ "isPreferred": false
94
+ },
95
+ {
96
+ "title": "Add Toaster to layout",
97
+ "kind": "quickfix",
98
+ "description": "Add <Toaster /> component to the root layout file for toast notifications to work",
99
+ "pattern": "useToast|\\btoast\\(",
100
+ "isPreferred": false
101
+ }
102
+ ],
103
+ "providedCodeActionKinds": [
104
+ "quickfix",
105
+ "refactor",
106
+ "refactor.extract",
107
+ "refactor.rewrite",
108
+ "source",
109
+ "source.addImport",
110
+ "source.organizeImports"
111
+ ]
112
+ }
@@ -1,26 +1,169 @@
1
- {
2
- "language": "shell",
3
- "codeActions": [
4
- {
5
- "title": "Extract to variable",
6
- "kind": "refactor.extract",
7
- "description": "Extract expression into a variable",
8
- "pattern": ".*",
9
- "isPreferred": false
10
- },
11
- {
12
- "title": "Fix all auto-fixable problems",
13
- "kind": "source.fixAll",
14
- "description": "Apply all available quick-fixes",
15
- "pattern": ".*",
16
- "isPreferred": false
17
- }
18
- ],
19
- "providedCodeActionKinds": [
20
- "quickfix",
21
- "refactor",
22
- "refactor.extract",
23
- "source",
24
- "source.fixAll"
25
- ]
26
- }
1
+ {
2
+ "language": "shell",
3
+ "codeActions": [
4
+ {
5
+ "title": "Extract to variable",
6
+ "kind": "refactor.extract",
7
+ "description": "Extract expression into a variable",
8
+ "pattern": ".*",
9
+ "isPreferred": false
10
+ },
11
+ {
12
+ "title": "Fix all auto-fixable problems",
13
+ "kind": "source.fixAll",
14
+ "description": "Apply all available quick-fixes",
15
+ "pattern": ".*",
16
+ "isPreferred": false
17
+ },
18
+ {
19
+ "title": "Add 'set -euo pipefail' header",
20
+ "kind": "source",
21
+ "description": "Add strict mode header (set -euo pipefail) to the beginning of the script for safer execution",
22
+ "pattern": "^#!/",
23
+ "isPreferred": true
24
+ },
25
+ {
26
+ "title": "Add shebang line",
27
+ "kind": "source",
28
+ "description": "Add #!/usr/bin/env bash shebang as the first line of the script",
29
+ "pattern": "^[^#]",
30
+ "isPreferred": true
31
+ },
32
+ {
33
+ "title": "Organize source/import statements",
34
+ "kind": "source.organizeImports",
35
+ "description": "Sort and deduplicate source/. statements at the top of the script",
36
+ "pattern": "\\bsource\\b|^\\s*\\.\\s+",
37
+ "isPreferred": true
38
+ },
39
+ {
40
+ "title": "Inline variable",
41
+ "kind": "refactor.inline",
42
+ "description": "Replace variable with its value at all usage sites",
43
+ "pattern": "\\blocal\\b|^\\s*\\w+=",
44
+ "isPreferred": false
45
+ },
46
+ {
47
+ "title": "Convert to function keyword syntax",
48
+ "kind": "refactor.rewrite",
49
+ "description": "Convert name() { } to function name() { } syntax",
50
+ "pattern": "^\\s*\\w+\\s*\\(\\s*\\)",
51
+ "isPreferred": false
52
+ },
53
+ {
54
+ "title": "Convert to POSIX function syntax",
55
+ "kind": "refactor.rewrite",
56
+ "description": "Convert function name() { } to name() { } (POSIX-compatible) syntax",
57
+ "pattern": "^\\s*function\\s+\\w+",
58
+ "isPreferred": false
59
+ },
60
+ {
61
+ "title": "Convert backticks to $() syntax",
62
+ "kind": "quickfix",
63
+ "description": "Replace legacy backtick command substitution with modern $(command) syntax",
64
+ "pattern": "`[^`]+`",
65
+ "isPreferred": true
66
+ },
67
+ {
68
+ "title": "Convert [ ] to [[ ]]",
69
+ "kind": "quickfix",
70
+ "description": "Replace POSIX test brackets with bash extended test brackets for safer evaluation",
71
+ "pattern": "\\[\\s+.*\\s+\\]",
72
+ "isPreferred": false
73
+ },
74
+ {
75
+ "title": "Quote unquoted variable",
76
+ "kind": "quickfix",
77
+ "description": "Add double quotes around unquoted variable expansion to prevent word splitting and globbing",
78
+ "pattern": "\\$\\w+|\\$\\{\\w+\\}",
79
+ "isPreferred": true
80
+ },
81
+ {
82
+ "title": "Add missing 'local' keyword",
83
+ "kind": "quickfix",
84
+ "description": "Add 'local' keyword to variable assignments inside functions to prevent global scope pollution",
85
+ "pattern": "^\\s*\\w+=(?!.*\\bexport\\b)",
86
+ "isPreferred": false
87
+ },
88
+ {
89
+ "title": "Replace echo with printf",
90
+ "kind": "refactor.rewrite",
91
+ "description": "Replace echo with printf for more portable and predictable output formatting",
92
+ "pattern": "\\becho\\b",
93
+ "isPreferred": false
94
+ },
95
+ {
96
+ "title": "Add error handling to command",
97
+ "kind": "quickfix",
98
+ "description": "Add || { echo 'Error' >&2; exit 1; } error handling to a command",
99
+ "pattern": "^\\s*\\w+",
100
+ "isPreferred": false
101
+ },
102
+ {
103
+ "title": "Convert to here-document",
104
+ "kind": "refactor.rewrite",
105
+ "description": "Convert multiple echo/printf statements into a single here-document (<<EOF)",
106
+ "pattern": "\\becho\\b|\\bprintf\\b",
107
+ "isPreferred": false
108
+ },
109
+ {
110
+ "title": "Wrap in if-check for command existence",
111
+ "kind": "refactor.rewrite",
112
+ "description": "Wrap command in 'if command -v cmd &>/dev/null; then ... fi' to check availability",
113
+ "pattern": "^\\s*\\w+",
114
+ "isPreferred": false
115
+ },
116
+ {
117
+ "title": "Convert arithmetic to (( )) syntax",
118
+ "kind": "quickfix",
119
+ "description": "Replace expr or let with modern (( )) arithmetic syntax",
120
+ "pattern": "\\bexpr\\b|\\blet\\b",
121
+ "isPreferred": true
122
+ },
123
+ {
124
+ "title": "Add trap for cleanup on exit",
125
+ "kind": "source",
126
+ "description": "Add a trap command to clean up temporary files or resources on script exit",
127
+ "pattern": "\\bmktemp\\b|\\btmp\\b",
128
+ "isPreferred": false
129
+ },
130
+ {
131
+ "title": "Convert to array iteration",
132
+ "kind": "refactor.rewrite",
133
+ "description": "Convert whitespace-separated variable to proper array with safe iteration",
134
+ "pattern": "\\bfor\\s+\\w+\\s+in\\s+\\$",
135
+ "isPreferred": false
136
+ },
137
+ {
138
+ "title": "Add input validation",
139
+ "kind": "quickfix",
140
+ "description": "Add parameter count check and usage message at the top of the script or function",
141
+ "pattern": "\\$1|\\$\\{1",
142
+ "isPreferred": false
143
+ },
144
+ {
145
+ "title": "Convert to getopts argument parsing",
146
+ "kind": "refactor.rewrite",
147
+ "description": "Replace manual argument parsing with getopts-based option handling loop",
148
+ "pattern": "\\$1|\\$\\{1|\\bshift\\b",
149
+ "isPreferred": false
150
+ },
151
+ {
152
+ "title": "Organize imports",
153
+ "kind": "source.organizeImports",
154
+ "description": "Sort and clean up source/./autoload/zmodload statements",
155
+ "pattern": "\\\\bsource\\\\b|\\\\b\\.\\\\b|\\\\bautoload\\\\b|\\\\bzmodload\\\\b",
156
+ "isPreferred": true
157
+ }
158
+ ],
159
+ "providedCodeActionKinds": [
160
+ "quickfix",
161
+ "refactor",
162
+ "refactor.extract",
163
+ "source",
164
+ "source.fixAll",
165
+ "refactor.inline",
166
+ "refactor.rewrite",
167
+ "source.organizeImports"
168
+ ]
169
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "language": "tailwindcss",
3
+ "codeActions": [
4
+ {
5
+ "title": "Sort Tailwind CSS classes (Headwind order)",
6
+ "kind": "source.sortTailwindClasses",
7
+ "description": "Reorders Tailwind utility classes following the recommended Headwind/Prettier-plugin-tailwindcss sort order for consistency.",
8
+ "pattern": "class\\s*=\\s*[\"'][^\"']*[\"']",
9
+ "isPreferred": true
10
+ },
11
+ {
12
+ "title": "Extract classes to @apply component",
13
+ "kind": "refactor.extract.apply",
14
+ "description": "Extracts selected Tailwind utility classes into a reusable CSS component using @apply directive.",
15
+ "pattern": "class\\s*=\\s*[\"']([^\"']{20,})[\"']",
16
+ "isPreferred": false
17
+ },
18
+ {
19
+ "title": "Convert arbitrary value to theme config",
20
+ "kind": "refactor.rewrite",
21
+ "description": "Converts an arbitrary value like `bg-[#1da1f2]` or `w-[200px]` to a named theme value in tailwind.config.js.",
22
+ "pattern": "\\w+-\\[[^\\]]+\\]",
23
+ "isPreferred": false
24
+ },
25
+ {
26
+ "title": "Group responsive variants",
27
+ "kind": "refactor.organize",
28
+ "description": "Groups utility classes by responsive breakpoint prefix (sm:, md:, lg:, xl:, 2xl:) for better readability.",
29
+ "pattern": "(?:sm|md|lg|xl|2xl):[\\w-]+",
30
+ "isPreferred": false
31
+ },
32
+ {
33
+ "title": "Remove duplicate Tailwind classes",
34
+ "kind": "quickfix.removeDuplicates",
35
+ "description": "Detects and removes duplicate utility classes within a class attribute.",
36
+ "pattern": "class\\s*=\\s*[\"'][^\"']*[\"']",
37
+ "isPreferred": true
38
+ },
39
+ {
40
+ "title": "Convert @apply to inline utilities",
41
+ "kind": "refactor.inline",
42
+ "description": "Replaces an @apply rule with the individual utility classes inlined directly in the HTML class attribute.",
43
+ "pattern": "@apply\\s+[\\w\\s:-]+;",
44
+ "isPreferred": false
45
+ },
46
+ {
47
+ "title": "Convert inline utilities to @apply",
48
+ "kind": "refactor.extract.apply",
49
+ "description": "Extracts inline Tailwind utility classes from a class attribute into a new CSS rule using @apply.",
50
+ "pattern": "class\\s*=\\s*[\"']([^\"']{30,})[\"']",
51
+ "isPreferred": false
52
+ },
53
+ {
54
+ "title": "Wrap in responsive variant",
55
+ "kind": "refactor.wrap",
56
+ "description": "Wraps selected utility classes with a responsive breakpoint prefix (sm:, md:, lg:, xl:, 2xl:).",
57
+ "pattern": "[\\w-]+",
58
+ "isPreferred": false
59
+ },
60
+ {
61
+ "title": "Add dark mode variant",
62
+ "kind": "refactor.wrap",
63
+ "description": "Adds dark: prefix to selected utility classes for dark mode support.",
64
+ "pattern": "(?:bg|text|border|ring|shadow)-[\\w-]+",
65
+ "isPreferred": false
66
+ },
67
+ {
68
+ "title": "Convert to arbitrary value",
69
+ "kind": "refactor.rewrite",
70
+ "description": "Converts a standard utility value to an arbitrary value notation, e.g. `p-4` to `p-[1rem]`.",
71
+ "pattern": "\\w+-\\d+",
72
+ "isPreferred": false
73
+ }
74
+ ],
75
+ "providedCodeActionKinds": ["quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source"]
76
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "language": "angular",
3
+ "codeLensPatterns": [
4
+ { "pattern": "@Component\\s*\\([^)]*\\)\\s*(?:export\\s+)?class\\s+(\\w+)", "captureGroup": 1, "title": "Component: ${1}", "tooltip": "Angular component class" },
5
+ { "pattern": "@Injectable\\s*\\([^)]*\\)\\s*(?:export\\s+)?class\\s+(\\w+)", "captureGroup": 1, "title": "Service: ${1}", "tooltip": "Angular injectable service" },
6
+ { "pattern": "@NgModule\\s*\\([^)]*\\)\\s*(?:export\\s+)?class\\s+(\\w+)", "captureGroup": 1, "title": "Module: ${1}", "tooltip": "Angular NgModule" },
7
+ { "pattern": "@Directive\\s*\\([^)]*\\)\\s*(?:export\\s+)?class\\s+(\\w+)", "captureGroup": 1, "title": "Directive: ${1}", "tooltip": "Angular directive class" },
8
+ { "pattern": "@Pipe\\s*\\([^)]*\\)\\s*(?:export\\s+)?class\\s+(\\w+)", "captureGroup": 1, "title": "Pipe: ${1}", "tooltip": "Angular pipe class" },
9
+ { "pattern": "(ngOnInit|ngOnDestroy|ngOnChanges|ngAfterViewInit|ngAfterContentInit|ngDoCheck)\\s*\\(", "captureGroup": 1, "title": "Lifecycle: ${1}", "tooltip": "Angular lifecycle hook method" },
10
+ { "pattern": "\\{\\s*path:\\s*['\"]([^'\"]+)['\"].*?component:\\s*(\\w+)", "captureGroup": 1, "title": "Route: /${1}", "tooltip": "Route configuration path" },
11
+ { "pattern": "(?:canActivate|canDeactivate|canMatch)(?:Fn)?.*?=.*?\\(", "captureGroup": 0, "title": "Guard", "tooltip": "Route guard definition" },
12
+ { "pattern": "(?:HttpInterceptorFn|implements\\s+HttpInterceptor).*", "captureGroup": 0, "title": "Interceptor", "tooltip": "HTTP interceptor definition" },
13
+ { "pattern": "describe\\s*\\(\\s*['\"]([^'\"]+)['\"]", "captureGroup": 1, "title": "Test Suite: ${1}", "tooltip": "Test describe block" },
14
+ { "pattern": "\\bit\\s*\\(\\s*['\"]([^'\"]+)['\"]", "captureGroup": 1, "title": "Test: ${1}", "tooltip": "Individual test case" },
15
+ { "pattern": "@Input\\s*\\([^)]*\\)\\s+(\\w+)", "captureGroup": 1, "title": "Input: ${1}", "tooltip": "Component input property" },
16
+ { "pattern": "@Output\\s*\\([^)]*\\)\\s+(\\w+)", "captureGroup": 1, "title": "Output: ${1}", "tooltip": "Component output event" },
17
+ { "pattern": "(\\w+)\\s*=\\s*signal\\s*(?:<[^>]*>)?\\s*\\(", "captureGroup": 1, "title": "Signal: ${1}", "tooltip": "Angular signal declaration" },
18
+ { "pattern": "(\\w+)\\s*=\\s*effect\\s*\\(", "captureGroup": 1, "title": "Effect: ${1}", "tooltip": "Angular effect registration" },
19
+ { "pattern": "(\\w+)\\s*=\\s*computed\\s*\\(", "captureGroup": 1, "title": "Computed: ${1}", "tooltip": "Angular computed signal declaration" },
20
+ { "pattern": "(\\w+)\\s*=\\s*input(?:\\.required)?\\s*(?:<[^>]*>)?\\s*\\(", "captureGroup": 1, "title": "Signal Input: ${1}", "tooltip": "Signal-based input property" }
21
+ ]
22
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "language": "css",
3
+ "codeLensPatterns": [
4
+ {
5
+ "pattern": "^([.#]?[a-zA-Z][a-zA-Z0-9_-]*(?:\\s*[>+~]\\s*[.#]?[a-zA-Z][a-zA-Z0-9_-]*)*(?:\\s*,\\s*[.#]?[a-zA-Z][a-zA-Z0-9_-]*)*)\\s*\\{",
6
+ "captureGroup": 1,
7
+ "commandId": "css.showSelectorInfo",
8
+ "title": "Selector: ${1} — Show specificity & matched elements",
9
+ "description": "Displays specificity calculation, inheritance chain, and approximate element match count for this CSS selector rule."
10
+ },
11
+ {
12
+ "pattern": "@media\\s+([^{]+)\\{",
13
+ "captureGroup": 1,
14
+ "commandId": "css.showMediaQueryInfo",
15
+ "title": "Media: ${1} — Show breakpoint details",
16
+ "description": "Shows the media query condition, applicable viewport ranges, and the number of rules contained within this @media block."
17
+ },
18
+ {
19
+ "pattern": "@keyframes\\s+([a-zA-Z][a-zA-Z0-9_-]*)\\s*\\{",
20
+ "captureGroup": 1,
21
+ "commandId": "css.showKeyframesUsage",
22
+ "title": "Animation: ${1} — Find usages",
23
+ "description": "Shows all elements referencing this @keyframes animation by animation-name property across the stylesheet."
24
+ },
25
+ {
26
+ "pattern": "--([a-zA-Z][a-zA-Z0-9_-]*)\\s*:",
27
+ "captureGroup": 1,
28
+ "commandId": "css.showCustomPropertyUsage",
29
+ "title": "Variable: --${1} — Find references",
30
+ "description": "Counts and lists all var(--${1}) references across stylesheets to show where this custom property is consumed."
31
+ },
32
+ {
33
+ "pattern": "@font-face\\s*\\{[^}]*font-family\\s*:\\s*['\"]?([^'\";}]+)",
34
+ "captureGroup": 1,
35
+ "commandId": "css.showFontFaceUsage",
36
+ "title": "Font: ${1} — Find usages",
37
+ "description": "Lists all elements using this @font-face defined font-family across stylesheets."
38
+ },
39
+ {
40
+ "pattern": "@layer\\s+([a-zA-Z][a-zA-Z0-9_-]*)\\s*[{;]",
41
+ "captureGroup": 1,
42
+ "commandId": "css.showLayerInfo",
43
+ "title": "Layer: ${1} — Show cascade order",
44
+ "description": "Displays cascade layer ordering and the number of rules assigned to this layer across all stylesheets."
45
+ },
46
+ {
47
+ "pattern": "@import\\s+(?:url\\()?['\"]?([^'\"\\)]+)",
48
+ "captureGroup": 1,
49
+ "commandId": "css.openImportedFile",
50
+ "title": "Import: ${1} — Open file",
51
+ "description": "Opens the imported CSS file for viewing or editing."
52
+ },
53
+ {
54
+ "pattern": "@supports\\s+([^{]+)\\{",
55
+ "captureGroup": 1,
56
+ "commandId": "css.showSupportsInfo",
57
+ "title": "Feature Query: ${1} — Show browser support",
58
+ "description": "Displays browser compatibility information for the queried CSS feature."
59
+ },
60
+ {
61
+ "pattern": "@container\\s+(?:([a-zA-Z][a-zA-Z0-9_-]*)\\s+)?\\(",
62
+ "captureGroup": 1,
63
+ "commandId": "css.showContainerInfo",
64
+ "title": "Container Query — Show container details",
65
+ "description": "Shows the container query condition and identifies the matching container element by name or proximity."
66
+ }
67
+ ]
68
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "language": "nestjs",
3
+ "codeLensPatterns": [
4
+ { "pattern": "@Controller\\(['\"]?([^'\"\\)]*)['\"]?\\)", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Controller Routes", "description": "Show all routes in this controller" },
5
+ { "pattern": "@(Get|Post|Put|Patch|Delete|Head|Options|All)\\(['\"]?([^'\"\\)]*)['\"]?\\)", "captureGroup": 0, "commandId": "editor.action.referenceSearch.trigger", "title": "Find References", "description": "Find all references to this endpoint" },
6
+ { "pattern": "@Injectable\\(\\)", "captureGroup": 0, "commandId": "editor.action.referenceSearch.trigger", "title": "Find Injections", "description": "Find where this service is injected" },
7
+ { "pattern": "@Module\\(", "captureGroup": 0, "commandId": "editor.action.referenceSearch.trigger", "title": "Module Dependencies", "description": "Show module dependency graph" },
8
+ { "pattern": "class\\s+(\\w+)\\s+implements\\s+CanActivate", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Guard Usages", "description": "Find where this guard is used" },
9
+ { "pattern": "class\\s+(\\w+)\\s+implements\\s+PipeTransform", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Pipe Usages", "description": "Find where this pipe is used" },
10
+ { "pattern": "class\\s+(\\w+)\\s+implements\\s+NestInterceptor", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Interceptor Usages", "description": "Find interceptor usages" },
11
+ { "pattern": "@Catch\\(([^)]*)\\)", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Filter Usages", "description": "Find exception filter usages" },
12
+ { "pattern": "@WebSocketGateway\\(", "captureGroup": 0, "commandId": "editor.action.referenceSearch.trigger", "title": "Gateway Events", "description": "Show gateway message handlers" },
13
+ { "pattern": "@SubscribeMessage\\(['\"]([^'\"]+)['\"]\\)", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Message Handler", "description": "Find message pattern usages" },
14
+ { "pattern": "describe\\(['\"]([^'\"]+)['\"]", "captureGroup": 1, "commandId": "testing.runAtCursor", "title": "Run Tests", "description": "Run test suite" },
15
+ { "pattern": "it\\(['\"]([^'\"]+)['\"]", "captureGroup": 1, "commandId": "testing.runAtCursor", "title": "Run Test", "description": "Run this test case" },
16
+ { "pattern": "@Cron\\(['\"]([^'\"]+)['\"]\\)", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Scheduled Task", "description": "Cron schedule info" },
17
+ { "pattern": "@Entity\\(['\"]?([^'\"\\)]*)['\"]?\\)", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Entity References", "description": "Find entity usages" },
18
+ { "pattern": "class\\s+(\\w+)\\s+implements\\s+NestMiddleware", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Middleware Usages", "description": "Find middleware registrations" },
19
+ { "pattern": "async\\s+bootstrap\\(\\)", "captureGroup": 0, "commandId": "editor.action.referenceSearch.trigger", "title": "Application Entry", "description": "Main bootstrap function" }
20
+ ]
21
+ }