@vetala/vetala 0.1.0-beta

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.

Potentially problematic release.


This version of @vetala/vetala might be problematic. Click here for more details.

Files changed (271) hide show
  1. package/CONTRIBUTING.md +77 -0
  2. package/LICENSE +184 -0
  3. package/README.md +136 -0
  4. package/THIRD_PARTY_LICENSES.md +17 -0
  5. package/dist/src/agent.d.ts +30 -0
  6. package/dist/src/agent.js +216 -0
  7. package/dist/src/agent.js.map +1 -0
  8. package/dist/src/approvals.d.ts +18 -0
  9. package/dist/src/approvals.js +81 -0
  10. package/dist/src/approvals.js.map +1 -0
  11. package/dist/src/cli.d.ts +2 -0
  12. package/dist/src/cli.js +87 -0
  13. package/dist/src/cli.js.map +1 -0
  14. package/dist/src/config.d.ts +12 -0
  15. package/dist/src/config.js +183 -0
  16. package/dist/src/config.js.map +1 -0
  17. package/dist/src/context-memory.d.ts +7 -0
  18. package/dist/src/context-memory.js +96 -0
  19. package/dist/src/context-memory.js.map +1 -0
  20. package/dist/src/ink/command-suggestions.d.ts +7 -0
  21. package/dist/src/ink/command-suggestions.js +179 -0
  22. package/dist/src/ink/command-suggestions.js.map +1 -0
  23. package/dist/src/ink/ink-terminal-ui.d.ts +36 -0
  24. package/dist/src/ink/ink-terminal-ui.js +79 -0
  25. package/dist/src/ink/ink-terminal-ui.js.map +1 -0
  26. package/dist/src/ink/repl-app.d.ts +9 -0
  27. package/dist/src/ink/repl-app.js +789 -0
  28. package/dist/src/ink/repl-app.js.map +1 -0
  29. package/dist/src/ink/transcript-cards.d.ts +6 -0
  30. package/dist/src/ink/transcript-cards.js +24 -0
  31. package/dist/src/ink/transcript-cards.js.map +1 -0
  32. package/dist/src/path-policy.d.ts +11 -0
  33. package/dist/src/path-policy.js +67 -0
  34. package/dist/src/path-policy.js.map +1 -0
  35. package/dist/src/process-utils.d.ts +13 -0
  36. package/dist/src/process-utils.js +52 -0
  37. package/dist/src/process-utils.js.map +1 -0
  38. package/dist/src/repl.d.ts +9 -0
  39. package/dist/src/repl.js +13 -0
  40. package/dist/src/repl.js.map +1 -0
  41. package/dist/src/sarvam/client.d.ts +15 -0
  42. package/dist/src/sarvam/client.js +208 -0
  43. package/dist/src/sarvam/client.js.map +1 -0
  44. package/dist/src/sarvam/models.d.ts +2 -0
  45. package/dist/src/sarvam/models.js +7 -0
  46. package/dist/src/sarvam/models.js.map +1 -0
  47. package/dist/src/search-provider.d.ts +6 -0
  48. package/dist/src/search-provider.js +8 -0
  49. package/dist/src/search-provider.js.map +1 -0
  50. package/dist/src/session-store.d.ts +19 -0
  51. package/dist/src/session-store.js +318 -0
  52. package/dist/src/session-store.js.map +1 -0
  53. package/dist/src/skills/runtime.d.ts +26 -0
  54. package/dist/src/skills/runtime.js +317 -0
  55. package/dist/src/skills/runtime.js.map +1 -0
  56. package/dist/src/skills/types.d.ts +25 -0
  57. package/dist/src/skills/types.js +2 -0
  58. package/dist/src/skills/types.js.map +1 -0
  59. package/dist/src/terminal-ui.d.ts +29 -0
  60. package/dist/src/terminal-ui.js +236 -0
  61. package/dist/src/terminal-ui.js.map +1 -0
  62. package/dist/src/tools/filesystem.d.ts +2 -0
  63. package/dist/src/tools/filesystem.js +622 -0
  64. package/dist/src/tools/filesystem.js.map +1 -0
  65. package/dist/src/tools/git.d.ts +2 -0
  66. package/dist/src/tools/git.js +326 -0
  67. package/dist/src/tools/git.js.map +1 -0
  68. package/dist/src/tools/index.d.ts +6 -0
  69. package/dist/src/tools/index.js +21 -0
  70. package/dist/src/tools/index.js.map +1 -0
  71. package/dist/src/tools/registry.d.ts +15 -0
  72. package/dist/src/tools/registry.js +59 -0
  73. package/dist/src/tools/registry.js.map +1 -0
  74. package/dist/src/tools/shell.d.ts +2 -0
  75. package/dist/src/tools/shell.js +97 -0
  76. package/dist/src/tools/shell.js.map +1 -0
  77. package/dist/src/tools/skill.d.ts +3 -0
  78. package/dist/src/tools/skill.js +130 -0
  79. package/dist/src/tools/skill.js.map +1 -0
  80. package/dist/src/tools/web.d.ts +3 -0
  81. package/dist/src/tools/web.js +144 -0
  82. package/dist/src/tools/web.js.map +1 -0
  83. package/dist/src/types.d.ts +236 -0
  84. package/dist/src/types.js +2 -0
  85. package/dist/src/types.js.map +1 -0
  86. package/dist/src/workspace-trust.d.ts +3 -0
  87. package/dist/src/workspace-trust.js +31 -0
  88. package/dist/src/workspace-trust.js.map +1 -0
  89. package/dist/src/xdg.d.ts +9 -0
  90. package/dist/src/xdg.js +77 -0
  91. package/dist/src/xdg.js.map +1 -0
  92. package/package.json +57 -0
  93. package/skill/agents-md-generator/SKILL.md +75 -0
  94. package/skill/agents-md-generator/references/agents_md_template.md +160 -0
  95. package/skill/agents-md-generator/references/loc_measurement.md +67 -0
  96. package/skill/agents-md-generator/references/monorepo_detection.md +78 -0
  97. package/skill/agents-md-generator/references/monorepo_strategy.md +60 -0
  98. package/skill/agents-md-generator/references/read_only_commands.md +151 -0
  99. package/skill/agents-md-generator/references/update_strategy.md +160 -0
  100. package/skill/agents-md-generator/references/working_agreements.md +53 -0
  101. package/skill/biz-opportunity-scout/SKILL.md +53 -0
  102. package/skill/biz-opportunity-scout/references/competitive_analysis.md +84 -0
  103. package/skill/biz-opportunity-scout/references/market_sizing.md +68 -0
  104. package/skill/biz-opportunity-scout/references/pmf_indicators.md +94 -0
  105. package/skill/biz-opportunity-scout/references/report_template.md +243 -0
  106. package/skill/biz-opportunity-scout/references/unit_economics.md +97 -0
  107. package/skill/code-review/SKILL.md +86 -0
  108. package/skill/code-review/references/change_analysis.md +116 -0
  109. package/skill/code-review/references/git_operations.md +115 -0
  110. package/skill/code-review/references/impact_detection.md +149 -0
  111. package/skill/code-review/references/output_format.md +137 -0
  112. package/skill/code-review/references/severity_criteria.md +100 -0
  113. package/skill/code-security-audit/SKILL.md +123 -0
  114. package/skill/code-security-audit/references/audit_process.md +277 -0
  115. package/skill/code-security-audit/references/remediation_patterns.md +599 -0
  116. package/skill/code-security-audit/references/report_format.md +391 -0
  117. package/skill/code-security-audit/references/security_domains.md +830 -0
  118. package/skill/code-security-audit/references/vulnerability_patterns.md +813 -0
  119. package/skill/composition-patterns/SKILL.md +83 -0
  120. package/skill/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  121. package/skill/composition-patterns/rules/architecture-compound-components.md +112 -0
  122. package/skill/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  123. package/skill/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  124. package/skill/composition-patterns/rules/react19-no-forwardref.md +42 -0
  125. package/skill/composition-patterns/rules/state-context-interface.md +191 -0
  126. package/skill/composition-patterns/rules/state-decouple-implementation.md +113 -0
  127. package/skill/composition-patterns/rules/state-lift-state.md +125 -0
  128. package/skill/deploy-to-vercel/SKILL.md +293 -0
  129. package/skill/deploy-to-vercel/resources/deploy-sandbox.sh +301 -0
  130. package/skill/deploy-to-vercel/resources/deploy.sh +301 -0
  131. package/skill/doc/SKILL_GUIDELINES.md +138 -0
  132. package/skill/git-workflow/SKILL.md +94 -0
  133. package/skill/git-workflow/references/advanced-git.md +632 -0
  134. package/skill/git-workflow/references/branching-strategies.md +344 -0
  135. package/skill/git-workflow/references/ci-cd-integration.md +683 -0
  136. package/skill/git-workflow/references/code-quality-tools.md +351 -0
  137. package/skill/git-workflow/references/commit-conventions.md +439 -0
  138. package/skill/git-workflow/references/github-releases.md +288 -0
  139. package/skill/git-workflow/references/pull-request-workflow.md +773 -0
  140. package/skill/git-workflow/scripts/verify-git-workflow.sh +263 -0
  141. package/skill/jetbrains-vmoptions/SKILL.md +51 -0
  142. package/skill/jetbrains-vmoptions/references/common-options.md +357 -0
  143. package/skill/jetbrains-vmoptions/references/gc-options.md +350 -0
  144. package/skill/jetbrains-vmoptions/references/memory-options.md +339 -0
  145. package/skill/jetbrains-vmoptions/references/prerequisite-check.md +65 -0
  146. package/skill/kysely-converter/SKILL.md +62 -0
  147. package/skill/kysely-converter/references/delete.md +323 -0
  148. package/skill/kysely-converter/references/insert.md +386 -0
  149. package/skill/kysely-converter/references/operators.md +331 -0
  150. package/skill/kysely-converter/references/select.md +1000 -0
  151. package/skill/kysely-converter/references/update.md +349 -0
  152. package/skill/kysely-converter/references/window_function.md +537 -0
  153. package/skill/react-best-practices/SKILL.md +131 -0
  154. package/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  155. package/skill/react-best-practices/rules/advanced-init-once.md +42 -0
  156. package/skill/react-best-practices/rules/advanced-use-latest.md +39 -0
  157. package/skill/react-best-practices/rules/async-api-routes.md +38 -0
  158. package/skill/react-best-practices/rules/async-defer-await.md +80 -0
  159. package/skill/react-best-practices/rules/async-dependencies.md +51 -0
  160. package/skill/react-best-practices/rules/async-parallel.md +28 -0
  161. package/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  162. package/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  163. package/skill/react-best-practices/rules/bundle-conditional.md +31 -0
  164. package/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  165. package/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  166. package/skill/react-best-practices/rules/bundle-preload.md +50 -0
  167. package/skill/react-best-practices/rules/client-event-listeners.md +74 -0
  168. package/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
  169. package/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  170. package/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
  171. package/skill/react-best-practices/rules/js-batch-dom-css.md +107 -0
  172. package/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
  173. package/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
  174. package/skill/react-best-practices/rules/js-cache-storage.md +70 -0
  175. package/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
  176. package/skill/react-best-practices/rules/js-early-exit.md +50 -0
  177. package/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
  178. package/skill/react-best-practices/rules/js-index-maps.md +37 -0
  179. package/skill/react-best-practices/rules/js-length-check-first.md +49 -0
  180. package/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
  181. package/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
  182. package/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  183. package/skill/react-best-practices/rules/rendering-activity.md +26 -0
  184. package/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  185. package/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
  186. package/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
  187. package/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  188. package/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  189. package/skill/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  190. package/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
  191. package/skill/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  192. package/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
  193. package/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
  194. package/skill/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  195. package/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
  196. package/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  197. package/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  198. package/skill/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  199. package/skill/react-best-practices/rules/rerender-memo.md +44 -0
  200. package/skill/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  201. package/skill/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  202. package/skill/react-best-practices/rules/rerender-transitions.md +40 -0
  203. package/skill/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  204. package/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
  205. package/skill/react-best-practices/rules/server-auth-actions.md +96 -0
  206. package/skill/react-best-practices/rules/server-cache-lru.md +41 -0
  207. package/skill/react-best-practices/rules/server-cache-react.md +76 -0
  208. package/skill/react-best-practices/rules/server-dedup-props.md +65 -0
  209. package/skill/react-best-practices/rules/server-hoist-static-io.md +142 -0
  210. package/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
  211. package/skill/react-best-practices/rules/server-serialization.md +38 -0
  212. package/skill/react-native-skills/SKILL.md +115 -0
  213. package/skill/react-native-skills/rules/animation-derived-value.md +53 -0
  214. package/skill/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  215. package/skill/react-native-skills/rules/animation-gpu-properties.md +65 -0
  216. package/skill/react-native-skills/rules/design-system-compound-components.md +66 -0
  217. package/skill/react-native-skills/rules/fonts-config-plugin.md +71 -0
  218. package/skill/react-native-skills/rules/imports-design-system-folder.md +68 -0
  219. package/skill/react-native-skills/rules/js-hoist-intl.md +61 -0
  220. package/skill/react-native-skills/rules/list-performance-callbacks.md +44 -0
  221. package/skill/react-native-skills/rules/list-performance-function-references.md +132 -0
  222. package/skill/react-native-skills/rules/list-performance-images.md +53 -0
  223. package/skill/react-native-skills/rules/list-performance-inline-objects.md +97 -0
  224. package/skill/react-native-skills/rules/list-performance-item-expensive.md +94 -0
  225. package/skill/react-native-skills/rules/list-performance-item-memo.md +82 -0
  226. package/skill/react-native-skills/rules/list-performance-item-types.md +104 -0
  227. package/skill/react-native-skills/rules/list-performance-virtualize.md +67 -0
  228. package/skill/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  229. package/skill/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  230. package/skill/react-native-skills/rules/navigation-native-navigators.md +188 -0
  231. package/skill/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  232. package/skill/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  233. package/skill/react-native-skills/rules/react-state-dispatcher.md +91 -0
  234. package/skill/react-native-skills/rules/react-state-fallback.md +56 -0
  235. package/skill/react-native-skills/rules/react-state-minimize.md +65 -0
  236. package/skill/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  237. package/skill/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  238. package/skill/react-native-skills/rules/scroll-position-no-state.md +82 -0
  239. package/skill/react-native-skills/rules/state-ground-truth.md +80 -0
  240. package/skill/react-native-skills/rules/ui-expo-image.md +66 -0
  241. package/skill/react-native-skills/rules/ui-image-gallery.md +104 -0
  242. package/skill/react-native-skills/rules/ui-measure-views.md +78 -0
  243. package/skill/react-native-skills/rules/ui-menus.md +174 -0
  244. package/skill/react-native-skills/rules/ui-native-modals.md +77 -0
  245. package/skill/react-native-skills/rules/ui-pressable.md +61 -0
  246. package/skill/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  247. package/skill/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  248. package/skill/react-native-skills/rules/ui-styling.md +87 -0
  249. package/skill/react-vite-guide/SKILL.md +101 -0
  250. package/skill/react-vite-guide/references/composition-patterns.md +709 -0
  251. package/skill/react-vite-guide/references/performance-optimization.md +1222 -0
  252. package/skill/react-vite-guide/references/vite-specific.md +385 -0
  253. package/skill/react-vite-guide/references/web-interface.md +146 -0
  254. package/skill/skill-maker/SKILL.md +52 -0
  255. package/skill/skill-maker/references/content_spec.md +67 -0
  256. package/skill/skill-maker/references/frontmatter_spec.md +96 -0
  257. package/skill/skill-maker/references/input_validation.md +90 -0
  258. package/skill/skill-maker/references/skill_structure.md +74 -0
  259. package/skill/system-prompt-creator/SKILL.md +50 -0
  260. package/skill/system-prompt-creator/references/data_format_selection.md +135 -0
  261. package/skill/system-prompt-creator/references/multi_prompt_architecture.md +386 -0
  262. package/skill/system-prompt-creator/references/prompt_structure.md +140 -0
  263. package/skill/system-prompt-creator/references/quality_criteria.md +83 -0
  264. package/skill/typst-creator/SKILL.md +51 -0
  265. package/skill/typst-creator/references/layout.md +401 -0
  266. package/skill/typst-creator/references/math.md +297 -0
  267. package/skill/typst-creator/references/scripting.md +237 -0
  268. package/skill/typst-creator/references/styling.md +217 -0
  269. package/skill/typst-creator/references/syntax.md +234 -0
  270. package/skill/web-design-guidelines/SKILL.md +35 -0
  271. package/terminal.png +0 -0
@@ -0,0 +1,65 @@
1
+ # Prerequisite Check Guide
2
+
3
+ This document defines the **mandatory input validation logic** before generating any vmoptions.
4
+
5
+ ## Required Input
6
+
7
+ | Field | Required | Why |
8
+ |-------|----------|-----|
9
+ | **IDE version** | ✅ BLOCKING | Determines JDK version (17 vs 21), available GC options, and compatible flags |
10
+
11
+ ## Optional Input
12
+
13
+ | Field | Why |
14
+ |-------|-----|
15
+ | **System RAM** | Heap size (`-Xmx`) recommendation |
16
+ | **CPU cores** | GC thread count (`-XX:ParallelGCThreads`, `-XX:ConcGCThreads`) tuning |
17
+ | **OS** | Platform-specific optimizations (e.g., large pages support) |
18
+ | **Primary goal** | Filter relevant options (latency vs throughput vs memory) |
19
+ | **GC preference** | Skip GC selection if user already decided |
20
+
21
+ ### IDE Version Format Examples
22
+
23
+ - `IntelliJ IDEA 2024.1` → version 241.x → JDK 21
24
+ - `WebStorm 2023.3` → version 233.x → JDK 17
25
+ - `PyCharm 243.21565` → version 243.x → JDK 21
26
+
27
+ ### Version to JDK Mapping
28
+
29
+ | IDE Version Range | Build Number | JDK |
30
+ |-------------------|--------------|-----|
31
+ | 2022.2 – 2024.2 | 222 – 242 | 17 |
32
+ | 2024.3+ | 243+ | 21 |
33
+
34
+ ## Prompt Templates
35
+
36
+ ### When IDE version is missing
37
+
38
+ ```
39
+ I need your JetBrains IDE version to provide accurate vmoptions.
40
+
41
+ Please tell me:
42
+ - **IDE name and version** (e.g., IntelliJ IDEA 2024.1, WebStorm 2023.3)
43
+
44
+ This is required because different IDE versions use different JDK versions (17 vs 21), which affects available GC options and compatible flags.
45
+ ```
46
+
47
+ ### After collecting IDE version
48
+
49
+ ```
50
+ Got it. [IDE version] uses JDK [17/21].
51
+
52
+ For better recommendations, you can also share:
53
+ - **System info** — RAM size, CPU cores, OS (macOS/Windows/Linux)
54
+ - **Primary goal** — e.g., reduce freezes, faster indexing, large project support
55
+ - **GC preference** — G1GC, ZGC, Generational ZGC, Shenandoah
56
+
57
+ Or I can use sensible defaults. What would you like?
58
+ ```
59
+
60
+ ## Validation Rules
61
+
62
+ 1. **Never assume IDE version** — Always ask if not explicitly provided
63
+ 2. **Never generate vmoptions without IDE version** — This is a blocking requirement
64
+ 3. **Accept partial version info** — If user says "latest IntelliJ", ask for specific version number
65
+ 4. **Version number is sufficient** — "243.21565" alone is enough to determine JDK version
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: kysely-converter
3
+ description: Capable of converting raw SQL queries into type-safe Kysely TypeScript code. Knows how to handle various SQL dialects and complex query structures.
4
+ ---
5
+
6
+ # Kysely Converter Capabilities
7
+
8
+ This agent is capable of transforming SQL queries into idiomatic Kysely TypeScript code. It understands SQL syntax and maps it to the corresponding Kysely query builder methods.
9
+
10
+ ## Core Capabilities
11
+
12
+ - **SQL Parsing**: Understands raw SQL structure including CTEs, subqueries, and complex clauses.
13
+ - **Kysely API Mapping**: Maps SQL keywords and clauses to specific Kysely methods (e.g., `SELECT` -> `.select()`, `WHERE` -> `.where()`).
14
+ - **Type-Safe Construction**: Generates code that utilizes Kysely's type inference capabilities.
15
+ - **Dialect Handling**: Adapts conversion strategies for specific SQL dialects (PostgreSQL, MySQL).
16
+
17
+ ## Supported Query Types
18
+
19
+ ### SELECT Queries
20
+ - **Column Selection**: Capable of selecting specific columns, all columns (`*`), and handling table prefixes.
21
+ - **Aliasing**: Handles column and table aliases using `as` syntax.
22
+ - **Distinct**: Supports `DISTINCT` and PostgreSQL-specific `DISTINCT ON`.
23
+ - **Joins**: Converts `INNER JOIN`, `LEFT JOIN`, `RIGHT JOIN`, and other join types with complex `ON` conditions.
24
+ - **Filtering**:
25
+ - Handles basic comparison operators (`=`, `>`, `<`, etc.).
26
+ - Supports complex boolean logic (`AND`, `OR`) using expression builders.
27
+ - Manages `NULL` checks (`IS NULL`, `IS NOT NULL`).
28
+ - Handles `IN` clauses and pattern matching (`LIKE`).
29
+ - **Aggregation**: Converts `GROUP BY` and `HAVING` clauses with aggregate functions (`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`).
30
+ - **Ordering & Pagination**: Maps `ORDER BY` (asc/desc), `LIMIT`, and `OFFSET`.
31
+
32
+ ### INSERT Operations
33
+ - **Single & Batch Insert**: Can convert single-row and multi-row value insertions.
34
+ - **Return Values**: Handles `RETURNING` clauses for PostgreSQL to return inserted data.
35
+
36
+ ### UPDATE Operations
37
+ - **Set Clauses**: Converts `SET` assignments for simple values and expressions (e.g., incrementing a counter).
38
+ - **Complex Updates**: Supports updates involving subqueries or complex `WHERE` conditions.
39
+
40
+ ### DELETE Operations
41
+ - **Basic Deletion**: Maps standard `DELETE FROM` statements with conditions.
42
+ - **Return Values**: Handles `RETURNING` clauses for deleted rows (PostgreSQL).
43
+
44
+ ## Advanced Features
45
+
46
+ ### Window Functions
47
+ - **Ranking Functions**: `ROW_NUMBER`, `RANK`, `DENSE_RANK`, `NTILE`, `PERCENT_RANK`, `CUME_DIST`.
48
+ - **Value Functions**: `LAG`, `LEAD`, `FIRST_VALUE`, `LAST_VALUE`, `NTH_VALUE`.
49
+ - **Aggregate Windows**: Windowed versions of `AVG`, `COUNT`, `MAX`, `MIN`, `SUM`.
50
+ - **Window Clauses**: Correctly constructs `OVER` clauses with `PARTITION BY`, `ORDER BY`, and frame specifications using the Kysely expression builder (`eb.fn.agg`).
51
+
52
+ ### Expressions & Logic
53
+ - **CASE Statements**: Converts `CASE WHEN ... THEN ... ELSE` logic into Kysely's `eb.case()` chain.
54
+ - **Raw SQL**: Identifies when `sql` template tags are needed for unsupported or complex raw fragments.
55
+
56
+ ## Reference Patterns
57
+ The agent applies specific patterns found in the `references/` directory:
58
+ - `select.md`: Query structure and clause mapping.
59
+ - `insert.md`: Insertion patterns and return value handling.
60
+ - `update.md`: Update logic and assignment expressions.
61
+ - `delete.md`: Deletion mapping.
62
+ - `window_function.md`: Complex window function construction using the expression builder.
@@ -0,0 +1,323 @@
1
+ # Kysely DELETE Reference
2
+
3
+ ## Basic DELETE
4
+ ```sql
5
+ DELETE FROM person WHERE id = 1
6
+ ```
7
+ ```ts
8
+ db.deleteFrom('person')
9
+ .where('id', '=', 1)
10
+ .execute()
11
+ ```
12
+
13
+ ## Delete with Result
14
+ ```sql
15
+ DELETE FROM person WHERE id = 1
16
+ ```
17
+ ```ts
18
+ const result = await db
19
+ .deleteFrom('person')
20
+ .where('id', '=', 1)
21
+ .executeTakeFirst()
22
+
23
+ console.log(result.numDeletedRows)
24
+ ```
25
+
26
+ ## DELETE with RETURNING (PostgreSQL)
27
+ ```sql
28
+ DELETE FROM person WHERE id = 1 RETURNING id, first_name
29
+ ```
30
+ ```ts
31
+ const deleted = await db
32
+ .deleteFrom('person')
33
+ .where('id', '=', 1)
34
+ .returning(['id', 'first_name'])
35
+ .executeTakeFirstOrThrow()
36
+ ```
37
+
38
+ ### RETURNING All Columns
39
+ ```sql
40
+ DELETE FROM person WHERE id = 1 RETURNING *
41
+ ```
42
+ ```ts
43
+ db.deleteFrom('person')
44
+ .where('id', '=', 1)
45
+ .returningAll()
46
+ .executeTakeFirstOrThrow()
47
+ ```
48
+
49
+ ### RETURNING from Specific Table
50
+ ```sql
51
+ DELETE FROM toy USING pet, person
52
+ WHERE toy.pet_id = pet.id AND pet.owner_id = person.id AND person.first_name = 'Bob'
53
+ RETURNING pet.*
54
+ ```
55
+ ```ts
56
+ db.deleteFrom('toy')
57
+ .using(['pet', 'person'])
58
+ .whereRef('toy.pet_id', '=', 'pet.id')
59
+ .whereRef('pet.owner_id', '=', 'person.id')
60
+ .where('person.first_name', '=', 'Bob')
61
+ .returningAll('pet')
62
+ .execute()
63
+ ```
64
+
65
+ ## WHERE Conditions
66
+
67
+ ### Simple Comparison
68
+ ```sql
69
+ DELETE FROM person WHERE status = 'inactive'
70
+ ```
71
+ ```ts
72
+ db.deleteFrom('person')
73
+ .where('status', '=', 'inactive')
74
+ .execute()
75
+ ```
76
+
77
+ ### Multiple Conditions
78
+ ```sql
79
+ DELETE FROM person WHERE status = 'inactive' AND age > 18
80
+ ```
81
+ ```ts
82
+ db.deleteFrom('person')
83
+ .where('status', '=', 'inactive')
84
+ .where('age', '>', 18)
85
+ .execute()
86
+ ```
87
+
88
+ ### IN Operator
89
+ ```sql
90
+ DELETE FROM person WHERE id IN (1, 2, 3)
91
+ ```
92
+ ```ts
93
+ db.deleteFrom('person')
94
+ .where('id', 'in', [1, 2, 3])
95
+ .execute()
96
+ ```
97
+
98
+ ### NOT IN Operator
99
+ ```sql
100
+ DELETE FROM person WHERE id NOT IN (1, 2, 3)
101
+ ```
102
+ ```ts
103
+ db.deleteFrom('person')
104
+ .where('id', 'not in', [1, 2, 3])
105
+ .execute()
106
+ ```
107
+
108
+ ### IS NULL / IS NOT NULL
109
+ ```sql
110
+ DELETE FROM person WHERE deleted_at IS NOT NULL
111
+ ```
112
+ ```ts
113
+ db.deleteFrom('person')
114
+ .where('deleted_at', 'is not', null)
115
+ .execute()
116
+ ```
117
+
118
+ ### LIKE
119
+ ```sql
120
+ DELETE FROM person WHERE name LIKE 'test%'
121
+ ```
122
+ ```ts
123
+ db.deleteFrom('person')
124
+ .where('name', 'like', 'test%')
125
+ .execute()
126
+ ```
127
+
128
+ ### Complex WHERE (OR/AND)
129
+ ```sql
130
+ DELETE FROM person
131
+ WHERE (status = 'deleted' AND type = 'a') OR (status = 'archived' AND type = 'b')
132
+ ```
133
+ ```ts
134
+ db.deleteFrom('person')
135
+ .where((eb) =>
136
+ eb.or([
137
+ eb.and([
138
+ eb('status', '=', 'deleted'),
139
+ eb('type', '=', 'a')
140
+ ]),
141
+ eb.and([
142
+ eb('status', '=', 'archived'),
143
+ eb('type', '=', 'b')
144
+ ])
145
+ ])
146
+ )
147
+ .execute()
148
+ ```
149
+
150
+ ### Column to Column Comparison (whereRef)
151
+ ```sql
152
+ DELETE FROM person WHERE expires_at < created_at
153
+ ```
154
+ ```ts
155
+ db.deleteFrom('person')
156
+ .whereRef('expires_at', '<', 'created_at')
157
+ .execute()
158
+ ```
159
+
160
+ ### Subquery in WHERE
161
+ ```sql
162
+ DELETE FROM person WHERE id IN (SELECT owner_id FROM pet WHERE species = 'cat')
163
+ ```
164
+ ```ts
165
+ db.deleteFrom('person')
166
+ .where('id', 'in', (eb) => eb
167
+ .selectFrom('pet')
168
+ .where('species', '=', 'cat')
169
+ .select('owner_id')
170
+ )
171
+ .execute()
172
+ ```
173
+
174
+ ### EXISTS Subquery
175
+ ```sql
176
+ DELETE FROM person WHERE EXISTS (SELECT 1 FROM pet WHERE pet.owner_id = person.id)
177
+ ```
178
+ ```ts
179
+ db.deleteFrom('person')
180
+ .where((eb) =>
181
+ eb.exists(
182
+ eb.selectFrom('pet')
183
+ .whereRef('pet.owner_id', '=', 'person.id')
184
+ .select(sql.lit(1))
185
+ )
186
+ )
187
+ .execute()
188
+ ```
189
+
190
+ ## DELETE with USING (PostgreSQL)
191
+ ```sql
192
+ DELETE FROM pet USING person
193
+ WHERE pet.owner_id = person.id AND person.first_name = 'Bob'
194
+ ```
195
+ ```ts
196
+ db.deleteFrom('pet')
197
+ .using('person')
198
+ .whereRef('pet.owner_id', '=', 'person.id')
199
+ .where('person.first_name', '=', 'Bob')
200
+ .execute()
201
+ ```
202
+
203
+ ### USING with Multiple Tables
204
+ ```sql
205
+ DELETE FROM toy USING pet, person
206
+ WHERE toy.pet_id = pet.id AND pet.owner_id = person.id AND person.first_name = 'Bob'
207
+ ```
208
+ ```ts
209
+ db.deleteFrom('toy')
210
+ .using(['pet', 'person'])
211
+ .whereRef('toy.pet_id', '=', 'pet.id')
212
+ .whereRef('pet.owner_id', '=', 'person.id')
213
+ .where('person.first_name', '=', 'Bob')
214
+ .execute()
215
+ ```
216
+
217
+ ## DELETE with JOIN (MySQL)
218
+ ```sql
219
+ DELETE FROM pet USING pet
220
+ LEFT JOIN person ON person.id = pet.owner_id
221
+ WHERE person.first_name = 'Bob'
222
+ ```
223
+ ```ts
224
+ db.deleteFrom('pet')
225
+ .using('pet')
226
+ .leftJoin('person', 'person.id', 'pet.owner_id')
227
+ .where('person.first_name', '=', 'Bob')
228
+ .execute()
229
+ ```
230
+
231
+ ### INNER JOIN
232
+ ```ts
233
+ db.deleteFrom('pet')
234
+ .using('pet')
235
+ .innerJoin('person', 'person.id', 'pet.owner_id')
236
+ .where('person.first_name', '=', 'Bob')
237
+ .execute()
238
+ ```
239
+
240
+ ## DELETE with LIMIT (MySQL)
241
+ ```sql
242
+ DELETE FROM person WHERE status = 'inactive' LIMIT 10
243
+ ```
244
+ ```ts
245
+ db.deleteFrom('person')
246
+ .where('status', '=', 'inactive')
247
+ .limit(10)
248
+ .execute()
249
+ ```
250
+
251
+ ## DELETE with ORDER BY + LIMIT (MySQL)
252
+ ```sql
253
+ DELETE FROM person ORDER BY created_at ASC LIMIT 5
254
+ ```
255
+ ```ts
256
+ db.deleteFrom('person')
257
+ .orderBy('created_at', 'asc')
258
+ .limit(5)
259
+ .execute()
260
+ ```
261
+
262
+ ## WITH CTE + DELETE
263
+ ```sql
264
+ WITH old_records AS (
265
+ SELECT id FROM person WHERE created_at < '2020-01-01'
266
+ )
267
+ DELETE FROM person WHERE id IN (SELECT id FROM old_records)
268
+ ```
269
+ ```ts
270
+ db.with('old_records', (db) => db
271
+ .selectFrom('person')
272
+ .where('created_at', '<', '2020-01-01')
273
+ .select('id')
274
+ )
275
+ .deleteFrom('person')
276
+ .where('id', 'in', (eb) => eb.selectFrom('old_records').select('id'))
277
+ .execute()
278
+ ```
279
+
280
+ ## Conditional Delete ($if)
281
+ ```ts
282
+ async function deletePerson(id: number, returnDeleted: boolean) {
283
+ return await db
284
+ .deleteFrom('person')
285
+ .where('id', '=', id)
286
+ .$if(returnDeleted, (qb) => qb.returningAll())
287
+ .execute()
288
+ }
289
+ ```
290
+
291
+ ## Clear WHERE Clause
292
+ ```ts
293
+ db.deleteFrom('person')
294
+ .where('id', '=', 1)
295
+ .clearWhere() // Removes the WHERE clause
296
+ .where('id', '=', 2) // Add new condition
297
+ .execute()
298
+ ```
299
+
300
+ ## Clear LIMIT Clause
301
+ ```ts
302
+ db.deleteFrom('person')
303
+ .where('status', '=', 'inactive')
304
+ .limit(10)
305
+ .clearLimit() // Removes the LIMIT clause
306
+ .execute()
307
+ ```
308
+
309
+
310
+ ## Dialect Differences
311
+
312
+ ### MySQL
313
+ - Uses backticks for identifiers: \`table\`.\`column\`
314
+ - Supports `DELETE ... LIMIT`
315
+ - Supports `DELETE ... ORDER BY ... LIMIT`
316
+ - For JOIN in DELETE, use `USING table` + JOIN clause
317
+ - No `RETURNING` clause - `numDeletedRows` available in result
318
+
319
+ ### PostgreSQL
320
+ - Uses double quotes for identifiers: "table"."column"
321
+ - Supports `DELETE ... USING` for joining tables
322
+ - Supports `DELETE ... RETURNING` clause
323
+ - Does not support `LIMIT` in DELETE