@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.
- package/CONTRIBUTING.md +77 -0
- package/LICENSE +184 -0
- package/README.md +136 -0
- package/THIRD_PARTY_LICENSES.md +17 -0
- package/dist/src/agent.d.ts +30 -0
- package/dist/src/agent.js +216 -0
- package/dist/src/agent.js.map +1 -0
- package/dist/src/approvals.d.ts +18 -0
- package/dist/src/approvals.js +81 -0
- package/dist/src/approvals.js.map +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +87 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.d.ts +12 -0
- package/dist/src/config.js +183 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/context-memory.d.ts +7 -0
- package/dist/src/context-memory.js +96 -0
- package/dist/src/context-memory.js.map +1 -0
- package/dist/src/ink/command-suggestions.d.ts +7 -0
- package/dist/src/ink/command-suggestions.js +179 -0
- package/dist/src/ink/command-suggestions.js.map +1 -0
- package/dist/src/ink/ink-terminal-ui.d.ts +36 -0
- package/dist/src/ink/ink-terminal-ui.js +79 -0
- package/dist/src/ink/ink-terminal-ui.js.map +1 -0
- package/dist/src/ink/repl-app.d.ts +9 -0
- package/dist/src/ink/repl-app.js +789 -0
- package/dist/src/ink/repl-app.js.map +1 -0
- package/dist/src/ink/transcript-cards.d.ts +6 -0
- package/dist/src/ink/transcript-cards.js +24 -0
- package/dist/src/ink/transcript-cards.js.map +1 -0
- package/dist/src/path-policy.d.ts +11 -0
- package/dist/src/path-policy.js +67 -0
- package/dist/src/path-policy.js.map +1 -0
- package/dist/src/process-utils.d.ts +13 -0
- package/dist/src/process-utils.js +52 -0
- package/dist/src/process-utils.js.map +1 -0
- package/dist/src/repl.d.ts +9 -0
- package/dist/src/repl.js +13 -0
- package/dist/src/repl.js.map +1 -0
- package/dist/src/sarvam/client.d.ts +15 -0
- package/dist/src/sarvam/client.js +208 -0
- package/dist/src/sarvam/client.js.map +1 -0
- package/dist/src/sarvam/models.d.ts +2 -0
- package/dist/src/sarvam/models.js +7 -0
- package/dist/src/sarvam/models.js.map +1 -0
- package/dist/src/search-provider.d.ts +6 -0
- package/dist/src/search-provider.js +8 -0
- package/dist/src/search-provider.js.map +1 -0
- package/dist/src/session-store.d.ts +19 -0
- package/dist/src/session-store.js +318 -0
- package/dist/src/session-store.js.map +1 -0
- package/dist/src/skills/runtime.d.ts +26 -0
- package/dist/src/skills/runtime.js +317 -0
- package/dist/src/skills/runtime.js.map +1 -0
- package/dist/src/skills/types.d.ts +25 -0
- package/dist/src/skills/types.js +2 -0
- package/dist/src/skills/types.js.map +1 -0
- package/dist/src/terminal-ui.d.ts +29 -0
- package/dist/src/terminal-ui.js +236 -0
- package/dist/src/terminal-ui.js.map +1 -0
- package/dist/src/tools/filesystem.d.ts +2 -0
- package/dist/src/tools/filesystem.js +622 -0
- package/dist/src/tools/filesystem.js.map +1 -0
- package/dist/src/tools/git.d.ts +2 -0
- package/dist/src/tools/git.js +326 -0
- package/dist/src/tools/git.js.map +1 -0
- package/dist/src/tools/index.d.ts +6 -0
- package/dist/src/tools/index.js +21 -0
- package/dist/src/tools/index.js.map +1 -0
- package/dist/src/tools/registry.d.ts +15 -0
- package/dist/src/tools/registry.js +59 -0
- package/dist/src/tools/registry.js.map +1 -0
- package/dist/src/tools/shell.d.ts +2 -0
- package/dist/src/tools/shell.js +97 -0
- package/dist/src/tools/shell.js.map +1 -0
- package/dist/src/tools/skill.d.ts +3 -0
- package/dist/src/tools/skill.js +130 -0
- package/dist/src/tools/skill.js.map +1 -0
- package/dist/src/tools/web.d.ts +3 -0
- package/dist/src/tools/web.js +144 -0
- package/dist/src/tools/web.js.map +1 -0
- package/dist/src/types.d.ts +236 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/workspace-trust.d.ts +3 -0
- package/dist/src/workspace-trust.js +31 -0
- package/dist/src/workspace-trust.js.map +1 -0
- package/dist/src/xdg.d.ts +9 -0
- package/dist/src/xdg.js +77 -0
- package/dist/src/xdg.js.map +1 -0
- package/package.json +57 -0
- package/skill/agents-md-generator/SKILL.md +75 -0
- package/skill/agents-md-generator/references/agents_md_template.md +160 -0
- package/skill/agents-md-generator/references/loc_measurement.md +67 -0
- package/skill/agents-md-generator/references/monorepo_detection.md +78 -0
- package/skill/agents-md-generator/references/monorepo_strategy.md +60 -0
- package/skill/agents-md-generator/references/read_only_commands.md +151 -0
- package/skill/agents-md-generator/references/update_strategy.md +160 -0
- package/skill/agents-md-generator/references/working_agreements.md +53 -0
- package/skill/biz-opportunity-scout/SKILL.md +53 -0
- package/skill/biz-opportunity-scout/references/competitive_analysis.md +84 -0
- package/skill/biz-opportunity-scout/references/market_sizing.md +68 -0
- package/skill/biz-opportunity-scout/references/pmf_indicators.md +94 -0
- package/skill/biz-opportunity-scout/references/report_template.md +243 -0
- package/skill/biz-opportunity-scout/references/unit_economics.md +97 -0
- package/skill/code-review/SKILL.md +86 -0
- package/skill/code-review/references/change_analysis.md +116 -0
- package/skill/code-review/references/git_operations.md +115 -0
- package/skill/code-review/references/impact_detection.md +149 -0
- package/skill/code-review/references/output_format.md +137 -0
- package/skill/code-review/references/severity_criteria.md +100 -0
- package/skill/code-security-audit/SKILL.md +123 -0
- package/skill/code-security-audit/references/audit_process.md +277 -0
- package/skill/code-security-audit/references/remediation_patterns.md +599 -0
- package/skill/code-security-audit/references/report_format.md +391 -0
- package/skill/code-security-audit/references/security_domains.md +830 -0
- package/skill/code-security-audit/references/vulnerability_patterns.md +813 -0
- package/skill/composition-patterns/SKILL.md +83 -0
- package/skill/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/skill/composition-patterns/rules/architecture-compound-components.md +112 -0
- package/skill/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/skill/composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/skill/composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/skill/composition-patterns/rules/state-context-interface.md +191 -0
- package/skill/composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/skill/composition-patterns/rules/state-lift-state.md +125 -0
- package/skill/deploy-to-vercel/SKILL.md +293 -0
- package/skill/deploy-to-vercel/resources/deploy-sandbox.sh +301 -0
- package/skill/deploy-to-vercel/resources/deploy.sh +301 -0
- package/skill/doc/SKILL_GUIDELINES.md +138 -0
- package/skill/git-workflow/SKILL.md +94 -0
- package/skill/git-workflow/references/advanced-git.md +632 -0
- package/skill/git-workflow/references/branching-strategies.md +344 -0
- package/skill/git-workflow/references/ci-cd-integration.md +683 -0
- package/skill/git-workflow/references/code-quality-tools.md +351 -0
- package/skill/git-workflow/references/commit-conventions.md +439 -0
- package/skill/git-workflow/references/github-releases.md +288 -0
- package/skill/git-workflow/references/pull-request-workflow.md +773 -0
- package/skill/git-workflow/scripts/verify-git-workflow.sh +263 -0
- package/skill/jetbrains-vmoptions/SKILL.md +51 -0
- package/skill/jetbrains-vmoptions/references/common-options.md +357 -0
- package/skill/jetbrains-vmoptions/references/gc-options.md +350 -0
- package/skill/jetbrains-vmoptions/references/memory-options.md +339 -0
- package/skill/jetbrains-vmoptions/references/prerequisite-check.md +65 -0
- package/skill/kysely-converter/SKILL.md +62 -0
- package/skill/kysely-converter/references/delete.md +323 -0
- package/skill/kysely-converter/references/insert.md +386 -0
- package/skill/kysely-converter/references/operators.md +331 -0
- package/skill/kysely-converter/references/select.md +1000 -0
- package/skill/kysely-converter/references/update.md +349 -0
- package/skill/kysely-converter/references/window_function.md +537 -0
- package/skill/react-best-practices/SKILL.md +131 -0
- package/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skill/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skill/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skill/react-best-practices/rules/async-api-routes.md +38 -0
- package/skill/react-best-practices/rules/async-defer-await.md +80 -0
- package/skill/react-best-practices/rules/async-dependencies.md +51 -0
- package/skill/react-best-practices/rules/async-parallel.md +28 -0
- package/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skill/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skill/react-best-practices/rules/bundle-preload.md +50 -0
- package/skill/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skill/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skill/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skill/react-best-practices/rules/js-early-exit.md +50 -0
- package/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skill/react-best-practices/rules/js-index-maps.md +37 -0
- package/skill/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skill/react-best-practices/rules/rendering-activity.md +26 -0
- package/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skill/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skill/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skill/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skill/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skill/react-best-practices/rules/rerender-memo.md +44 -0
- package/skill/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skill/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skill/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skill/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skill/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skill/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skill/react-best-practices/rules/server-cache-react.md +76 -0
- package/skill/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skill/react-best-practices/rules/server-hoist-static-io.md +142 -0
- package/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skill/react-best-practices/rules/server-serialization.md +38 -0
- package/skill/react-native-skills/SKILL.md +115 -0
- package/skill/react-native-skills/rules/animation-derived-value.md +53 -0
- package/skill/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
- package/skill/react-native-skills/rules/animation-gpu-properties.md +65 -0
- package/skill/react-native-skills/rules/design-system-compound-components.md +66 -0
- package/skill/react-native-skills/rules/fonts-config-plugin.md +71 -0
- package/skill/react-native-skills/rules/imports-design-system-folder.md +68 -0
- package/skill/react-native-skills/rules/js-hoist-intl.md +61 -0
- package/skill/react-native-skills/rules/list-performance-callbacks.md +44 -0
- package/skill/react-native-skills/rules/list-performance-function-references.md +132 -0
- package/skill/react-native-skills/rules/list-performance-images.md +53 -0
- package/skill/react-native-skills/rules/list-performance-inline-objects.md +97 -0
- package/skill/react-native-skills/rules/list-performance-item-expensive.md +94 -0
- package/skill/react-native-skills/rules/list-performance-item-memo.md +82 -0
- package/skill/react-native-skills/rules/list-performance-item-types.md +104 -0
- package/skill/react-native-skills/rules/list-performance-virtualize.md +67 -0
- package/skill/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
- package/skill/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
- package/skill/react-native-skills/rules/navigation-native-navigators.md +188 -0
- package/skill/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
- package/skill/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
- package/skill/react-native-skills/rules/react-state-dispatcher.md +91 -0
- package/skill/react-native-skills/rules/react-state-fallback.md +56 -0
- package/skill/react-native-skills/rules/react-state-minimize.md +65 -0
- package/skill/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
- package/skill/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
- package/skill/react-native-skills/rules/scroll-position-no-state.md +82 -0
- package/skill/react-native-skills/rules/state-ground-truth.md +80 -0
- package/skill/react-native-skills/rules/ui-expo-image.md +66 -0
- package/skill/react-native-skills/rules/ui-image-gallery.md +104 -0
- package/skill/react-native-skills/rules/ui-measure-views.md +78 -0
- package/skill/react-native-skills/rules/ui-menus.md +174 -0
- package/skill/react-native-skills/rules/ui-native-modals.md +77 -0
- package/skill/react-native-skills/rules/ui-pressable.md +61 -0
- package/skill/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
- package/skill/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
- package/skill/react-native-skills/rules/ui-styling.md +87 -0
- package/skill/react-vite-guide/SKILL.md +101 -0
- package/skill/react-vite-guide/references/composition-patterns.md +709 -0
- package/skill/react-vite-guide/references/performance-optimization.md +1222 -0
- package/skill/react-vite-guide/references/vite-specific.md +385 -0
- package/skill/react-vite-guide/references/web-interface.md +146 -0
- package/skill/skill-maker/SKILL.md +52 -0
- package/skill/skill-maker/references/content_spec.md +67 -0
- package/skill/skill-maker/references/frontmatter_spec.md +96 -0
- package/skill/skill-maker/references/input_validation.md +90 -0
- package/skill/skill-maker/references/skill_structure.md +74 -0
- package/skill/system-prompt-creator/SKILL.md +50 -0
- package/skill/system-prompt-creator/references/data_format_selection.md +135 -0
- package/skill/system-prompt-creator/references/multi_prompt_architecture.md +386 -0
- package/skill/system-prompt-creator/references/prompt_structure.md +140 -0
- package/skill/system-prompt-creator/references/quality_criteria.md +83 -0
- package/skill/typst-creator/SKILL.md +51 -0
- package/skill/typst-creator/references/layout.md +401 -0
- package/skill/typst-creator/references/math.md +297 -0
- package/skill/typst-creator/references/scripting.md +237 -0
- package/skill/typst-creator/references/styling.md +217 -0
- package/skill/typst-creator/references/syntax.md +234 -0
- package/skill/web-design-guidelines/SKILL.md +35 -0
- 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
|