zilmate 1.7.8 → 1.8.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.
- package/.agents/skills/agent-browser/SKILL.md +55 -0
- package/.agents/skills/agentmail/SKILL.md +282 -0
- package/.agents/skills/agentmail/references/webhooks.md +220 -0
- package/.agents/skills/agentmail/references/websockets.md +263 -0
- package/.agents/skills/ai-elements/SKILL.md +160 -0
- package/.agents/skills/ai-elements/references/agent.md +134 -0
- package/.agents/skills/ai-elements/references/artifact.md +84 -0
- package/.agents/skills/ai-elements/references/attachments.md +190 -0
- package/.agents/skills/ai-elements/references/audio-player.md +134 -0
- package/.agents/skills/ai-elements/references/canvas.md +34 -0
- package/.agents/skills/ai-elements/references/chain-of-thought.md +81 -0
- package/.agents/skills/ai-elements/references/checkpoint.md +183 -0
- package/.agents/skills/ai-elements/references/code-block.md +170 -0
- package/.agents/skills/ai-elements/references/commit.md +177 -0
- package/.agents/skills/ai-elements/references/confirmation.md +262 -0
- package/.agents/skills/ai-elements/references/connection.md +34 -0
- package/.agents/skills/ai-elements/references/context.md +126 -0
- package/.agents/skills/ai-elements/references/controls.md +32 -0
- package/.agents/skills/ai-elements/references/conversation.md +224 -0
- package/.agents/skills/ai-elements/references/edge.md +52 -0
- package/.agents/skills/ai-elements/references/environment-variables.md +102 -0
- package/.agents/skills/ai-elements/references/file-tree.md +72 -0
- package/.agents/skills/ai-elements/references/image.md +146 -0
- package/.agents/skills/ai-elements/references/inline-citation.md +299 -0
- package/.agents/skills/ai-elements/references/jsx-preview.md +104 -0
- package/.agents/skills/ai-elements/references/message.md +237 -0
- package/.agents/skills/ai-elements/references/mic-selector.md +189 -0
- package/.agents/skills/ai-elements/references/model-selector.md +112 -0
- package/.agents/skills/ai-elements/references/node.md +73 -0
- package/.agents/skills/ai-elements/references/open-in-chat.md +67 -0
- package/.agents/skills/ai-elements/references/package-info.md +95 -0
- package/.agents/skills/ai-elements/references/panel.md +33 -0
- package/.agents/skills/ai-elements/references/persona.md +166 -0
- package/.agents/skills/ai-elements/references/plan.md +79 -0
- package/.agents/skills/ai-elements/references/prompt-input.md +579 -0
- package/.agents/skills/ai-elements/references/queue.md +172 -0
- package/.agents/skills/ai-elements/references/reasoning.md +238 -0
- package/.agents/skills/ai-elements/references/sandbox.md +129 -0
- package/.agents/skills/ai-elements/references/schema-display.md +102 -0
- package/.agents/skills/ai-elements/references/shimmer.md +48 -0
- package/.agents/skills/ai-elements/references/snippet.md +64 -0
- package/.agents/skills/ai-elements/references/sources.md +209 -0
- package/.agents/skills/ai-elements/references/speech-input.md +163 -0
- package/.agents/skills/ai-elements/references/stack-trace.md +224 -0
- package/.agents/skills/ai-elements/references/suggestion.md +124 -0
- package/.agents/skills/ai-elements/references/task.md +222 -0
- package/.agents/skills/ai-elements/references/terminal.md +103 -0
- package/.agents/skills/ai-elements/references/test-results.md +157 -0
- package/.agents/skills/ai-elements/references/tool.md +285 -0
- package/.agents/skills/ai-elements/references/toolbar.md +32 -0
- package/.agents/skills/ai-elements/references/transcription.md +120 -0
- package/.agents/skills/ai-elements/references/voice-selector.md +241 -0
- package/.agents/skills/ai-elements/references/web-preview.md +200 -0
- package/.agents/skills/ai-elements/scripts/agent.tsx +61 -0
- package/.agents/skills/ai-elements/scripts/artifact.tsx +127 -0
- package/.agents/skills/ai-elements/scripts/attachments-inline.tsx +128 -0
- package/.agents/skills/ai-elements/scripts/attachments-list.tsx +95 -0
- package/.agents/skills/ai-elements/scripts/attachments.tsx +85 -0
- package/.agents/skills/ai-elements/scripts/audio-player-remote.tsx +35 -0
- package/.agents/skills/ai-elements/scripts/audio-player.tsx +68 -0
- package/.agents/skills/ai-elements/scripts/chain-of-thought.tsx +82 -0
- package/.agents/skills/ai-elements/scripts/checkpoint.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/code-block-dark.tsx +46 -0
- package/.agents/skills/ai-elements/scripts/code-block.tsx +120 -0
- package/.agents/skills/ai-elements/scripts/commit.tsx +94 -0
- package/.agents/skills/ai-elements/scripts/confirmation-accepted.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/confirmation-rejected.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/confirmation-request.tsx +54 -0
- package/.agents/skills/ai-elements/scripts/confirmation.tsx +55 -0
- package/.agents/skills/ai-elements/scripts/context.tsx +45 -0
- package/.agents/skills/ai-elements/scripts/conversation.tsx +177 -0
- package/.agents/skills/ai-elements/scripts/environment-variables.tsx +62 -0
- package/.agents/skills/ai-elements/scripts/file-tree-basic.tsx +18 -0
- package/.agents/skills/ai-elements/scripts/file-tree-expanded.tsx +21 -0
- package/.agents/skills/ai-elements/scripts/file-tree-selection.tsx +24 -0
- package/.agents/skills/ai-elements/scripts/file-tree.tsx +42 -0
- package/.agents/skills/ai-elements/scripts/image.tsx +20 -0
- package/.agents/skills/ai-elements/scripts/inline-citation.tsx +97 -0
- package/.agents/skills/ai-elements/scripts/jsx-preview.tsx +104 -0
- package/.agents/skills/ai-elements/scripts/message.tsx +365 -0
- package/.agents/skills/ai-elements/scripts/mic-selector.tsx +49 -0
- package/.agents/skills/ai-elements/scripts/model-selector.tsx +365 -0
- package/.agents/skills/ai-elements/scripts/open-in-chat.tsx +33 -0
- package/.agents/skills/ai-elements/scripts/package-info.tsx +51 -0
- package/.agents/skills/ai-elements/scripts/persona-command.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-glint.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-halo.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-mana.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-obsidian.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-opal.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/plan.tsx +65 -0
- package/.agents/skills/ai-elements/scripts/prompt-input-cursor.tsx +502 -0
- package/.agents/skills/ai-elements/scripts/prompt-input-tooltip.tsx +44 -0
- package/.agents/skills/ai-elements/scripts/prompt-input.tsx +267 -0
- package/.agents/skills/ai-elements/scripts/queue-prompt-input.tsx +394 -0
- package/.agents/skills/ai-elements/scripts/queue.tsx +295 -0
- package/.agents/skills/ai-elements/scripts/reasoning.tsx +71 -0
- package/.agents/skills/ai-elements/scripts/sandbox.tsx +178 -0
- package/.agents/skills/ai-elements/scripts/schema-display-basic.tsx +9 -0
- package/.agents/skills/ai-elements/scripts/schema-display-body.tsx +20 -0
- package/.agents/skills/ai-elements/scripts/schema-display-nested.tsx +23 -0
- package/.agents/skills/ai-elements/scripts/schema-display-params.tsx +16 -0
- package/.agents/skills/ai-elements/scripts/schema-display.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/shimmer-duration.tsx +31 -0
- package/.agents/skills/ai-elements/scripts/shimmer-elements.tsx +43 -0
- package/.agents/skills/ai-elements/scripts/shimmer.tsx +17 -0
- package/.agents/skills/ai-elements/scripts/snippet-plain.tsx +19 -0
- package/.agents/skills/ai-elements/scripts/snippet.tsx +25 -0
- package/.agents/skills/ai-elements/scripts/sources-custom.tsx +39 -0
- package/.agents/skills/ai-elements/scripts/sources.tsx +32 -0
- package/.agents/skills/ai-elements/scripts/speech-input.tsx +84 -0
- package/.agents/skills/ai-elements/scripts/stack-trace-collapsed.tsx +39 -0
- package/.agents/skills/ai-elements/scripts/stack-trace-no-internal.tsx +41 -0
- package/.agents/skills/ai-elements/scripts/stack-trace.tsx +58 -0
- package/.agents/skills/ai-elements/scripts/suggestion-input.tsx +144 -0
- package/.agents/skills/ai-elements/scripts/suggestion.tsx +32 -0
- package/.agents/skills/ai-elements/scripts/task.tsx +59 -0
- package/.agents/skills/ai-elements/scripts/terminal-basic.tsx +7 -0
- package/.agents/skills/ai-elements/scripts/terminal-clear.tsx +19 -0
- package/.agents/skills/ai-elements/scripts/terminal-streaming.tsx +38 -0
- package/.agents/skills/ai-elements/scripts/terminal.tsx +82 -0
- package/.agents/skills/ai-elements/scripts/test-results-basic.tsx +27 -0
- package/.agents/skills/ai-elements/scripts/test-results-errors.tsx +51 -0
- package/.agents/skills/ai-elements/scripts/test-results-suites.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/test-results.tsx +102 -0
- package/.agents/skills/ai-elements/scripts/tool-input-available.tsx +31 -0
- package/.agents/skills/ai-elements/scripts/tool-input-streaming.tsx +30 -0
- package/.agents/skills/ai-elements/scripts/tool-output-available.tsx +80 -0
- package/.agents/skills/ai-elements/scripts/tool-output-error.tsx +44 -0
- package/.agents/skills/ai-elements/scripts/tool.tsx +222 -0
- package/.agents/skills/ai-elements/scripts/transcription.tsx +290 -0
- package/.agents/skills/ai-elements/scripts/voice-selector.tsx +245 -0
- package/.agents/skills/ai-elements/scripts/web-preview.tsx +115 -0
- package/.agents/skills/ai-sdk/SKILL.md +78 -0
- package/.agents/skills/ai-sdk/references/ai-gateway.md +66 -0
- package/.agents/skills/ai-sdk/references/common-errors.md +443 -0
- package/.agents/skills/ai-sdk/references/devtools.md +52 -0
- package/.agents/skills/ai-sdk/references/type-safe-agents.md +204 -0
- package/.agents/skills/chat-sdk/SKILL.md +240 -0
- package/.agents/skills/composio/AGENTS.md +404 -0
- package/.agents/skills/composio/SKILL.md +55 -0
- package/.agents/skills/composio/rules/_template.md +38 -0
- package/.agents/skills/composio/rules/app-auth-configs.md +224 -0
- package/.agents/skills/composio/rules/app-auth-popup-ui.md +143 -0
- package/.agents/skills/composio/rules/app-connected-accounts.md +240 -0
- package/.agents/skills/composio/rules/app-custom-tools.md +220 -0
- package/.agents/skills/composio/rules/app-execute-tools.md +202 -0
- package/.agents/skills/composio/rules/app-fetch-tools.md +292 -0
- package/.agents/skills/composio/rules/app-modifiers.md +148 -0
- package/.agents/skills/composio/rules/app-tool-versions.md +343 -0
- package/.agents/skills/composio/rules/app-toolkits.md +184 -0
- package/.agents/skills/composio/rules/app-user-context.md +222 -0
- package/.agents/skills/composio/rules/building-with-composio.md +134 -0
- package/.agents/skills/composio/rules/composio-cli.md +223 -0
- package/.agents/skills/composio/rules/setup-api-keys.md +230 -0
- package/.agents/skills/composio/rules/tr-auth-auto.md +110 -0
- package/.agents/skills/composio/rules/tr-auth-connections.md +167 -0
- package/.agents/skills/composio/rules/tr-auth-manual.md +161 -0
- package/.agents/skills/composio/rules/tr-building-chat-ui.md +348 -0
- package/.agents/skills/composio/rules/tr-framework-ai-sdk.md +240 -0
- package/.agents/skills/composio/rules/tr-framework-integration.md +818 -0
- package/.agents/skills/composio/rules/tr-framework-mastra.md +185 -0
- package/.agents/skills/composio/rules/tr-mcp-vs-native.md +248 -0
- package/.agents/skills/composio/rules/tr-session-basic.md +82 -0
- package/.agents/skills/composio/rules/tr-session-config.md +172 -0
- package/.agents/skills/composio/rules/tr-session-lifecycle.md +385 -0
- package/.agents/skills/composio/rules/tr-toolkit-query.md +135 -0
- package/.agents/skills/composio/rules/tr-userid-best-practices.md +476 -0
- package/.agents/skills/composio/rules/triggers-create.md +246 -0
- package/.agents/skills/composio/rules/triggers-manage.md +275 -0
- package/.agents/skills/composio/rules/triggers-subscribe.md +173 -0
- package/.agents/skills/composio/rules/triggers-webhook.md +227 -0
- package/.agents/skills/create-auth-skill/SKILL.md +321 -0
- package/.agents/skills/design-md/README.md +34 -0
- package/.agents/skills/design-md/SKILL.md +172 -0
- package/.agents/skills/design-md/examples/DESIGN.md +154 -0
- package/.agents/skills/expo-tailwind-setup/SKILL.md +480 -0
- package/.agents/skills/expo-tailwind-setup/agents/openai.yaml +4 -0
- package/.agents/skills/find-skills/SKILL.md +142 -0
- package/.agents/skills/firecrawl/SKILL.md +321 -0
- package/.agents/skills/firecrawl/rules/install.md +85 -0
- package/.agents/skills/firecrawl/rules/security.md +26 -0
- package/.agents/skills/frontend-design/LICENSE.txt +177 -0
- package/.agents/skills/frontend-design/SKILL.md +55 -0
- package/.agents/skills/linkup-search/SKILL.md +298 -0
- package/.agents/skills/mcp-builder/LICENSE.txt +202 -0
- package/.agents/skills/mcp-builder/SKILL.md +236 -0
- package/.agents/skills/mcp-builder/reference/evaluation.md +602 -0
- package/.agents/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/.agents/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/.agents/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/.agents/skills/mcp-builder/scripts/connections.py +151 -0
- package/.agents/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/.agents/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/.agents/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/.agents/skills/mobile-android-design/SKILL.md +101 -0
- package/.agents/skills/mobile-android-design/references/android-navigation.md +698 -0
- package/.agents/skills/mobile-android-design/references/compose-components.md +796 -0
- package/.agents/skills/mobile-android-design/references/details.md +337 -0
- package/.agents/skills/mobile-android-design/references/material3-theming.md +604 -0
- package/.agents/skills/mobile-ios-design/SKILL.md +259 -0
- package/.agents/skills/mobile-ios-design/references/hig-patterns.md +529 -0
- package/.agents/skills/mobile-ios-design/references/ios-navigation.md +556 -0
- package/.agents/skills/mobile-ios-design/references/swiftui-components.md +575 -0
- package/.agents/skills/neon-drizzle/SKILL.md +81 -0
- package/.agents/skills/neon-drizzle/guides/existing-project.md +398 -0
- package/.agents/skills/neon-drizzle/guides/new-project.md +312 -0
- package/.agents/skills/neon-drizzle/guides/schema-only.md +415 -0
- package/.agents/skills/neon-drizzle/guides/troubleshooting.md +539 -0
- package/.agents/skills/neon-drizzle/references/adapters.md +478 -0
- package/.agents/skills/neon-drizzle/references/migrations.md +652 -0
- package/.agents/skills/neon-drizzle/references/query-patterns.md +761 -0
- package/.agents/skills/neon-drizzle/scripts/generate-schema.ts +77 -0
- package/.agents/skills/neon-drizzle/scripts/run-migration.ts +133 -0
- package/.agents/skills/neon-drizzle/templates/db-http.ts +6 -0
- package/.agents/skills/neon-drizzle/templates/db-websocket.ts +24 -0
- package/.agents/skills/neon-drizzle/templates/drizzle-config.ts +96 -0
- package/.agents/skills/neon-drizzle/templates/schema-example.ts +231 -0
- package/.agents/skills/neon-postgres/SKILL.md +376 -0
- package/.agents/skills/next-best-practices/SKILL.md +152 -0
- package/.agents/skills/next-best-practices/async-patterns.md +87 -0
- package/.agents/skills/next-best-practices/bundling.md +180 -0
- package/.agents/skills/next-best-practices/data-patterns.md +297 -0
- package/.agents/skills/next-best-practices/debug-tricks.md +105 -0
- package/.agents/skills/next-best-practices/directives.md +73 -0
- package/.agents/skills/next-best-practices/error-handling.md +227 -0
- package/.agents/skills/next-best-practices/file-conventions.md +140 -0
- package/.agents/skills/next-best-practices/font.md +245 -0
- package/.agents/skills/next-best-practices/functions.md +108 -0
- package/.agents/skills/next-best-practices/hydration-error.md +91 -0
- package/.agents/skills/next-best-practices/image.md +173 -0
- package/.agents/skills/next-best-practices/metadata.md +301 -0
- package/.agents/skills/next-best-practices/parallel-routes.md +287 -0
- package/.agents/skills/next-best-practices/route-handlers.md +146 -0
- package/.agents/skills/next-best-practices/rsc-boundaries.md +159 -0
- package/.agents/skills/next-best-practices/runtime-selection.md +39 -0
- package/.agents/skills/next-best-practices/scripts.md +141 -0
- package/.agents/skills/next-best-practices/self-hosting.md +371 -0
- package/.agents/skills/next-best-practices/suspense-boundaries.md +67 -0
- package/.agents/skills/playwright-best-practices/SKILL.md +303 -0
- package/.agents/skills/playwright-cli/SKILL.md +404 -0
- package/.agents/skills/playwright-cli/references/element-attributes.md +23 -0
- package/.agents/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/.agents/skills/playwright-cli/references/request-mocking.md +87 -0
- package/.agents/skills/playwright-cli/references/running-code.md +241 -0
- package/.agents/skills/playwright-cli/references/session-management.md +225 -0
- package/.agents/skills/playwright-cli/references/spec-driven-testing.md +305 -0
- package/.agents/skills/playwright-cli/references/storage-state.md +275 -0
- package/.agents/skills/playwright-cli/references/test-generation.md +134 -0
- package/.agents/skills/playwright-cli/references/tracing.md +139 -0
- package/.agents/skills/playwright-cli/references/video-recording.md +143 -0
- package/.agents/skills/prisma-client-api/SKILL.md +216 -0
- package/.agents/skills/prisma-client-api/references/client-methods.md +223 -0
- package/.agents/skills/prisma-client-api/references/constructor.md +208 -0
- package/.agents/skills/prisma-client-api/references/filters.md +256 -0
- package/.agents/skills/prisma-client-api/references/model-queries.md +281 -0
- package/.agents/skills/prisma-client-api/references/query-options.md +276 -0
- package/.agents/skills/prisma-client-api/references/raw-queries.md +194 -0
- package/.agents/skills/prisma-client-api/references/relations.md +308 -0
- package/.agents/skills/prisma-client-api/references/transactions.md +184 -0
- package/.agents/skills/prisma-database-setup/SKILL.md +192 -0
- package/.agents/skills/prisma-database-setup/references/cockroachdb.md +89 -0
- package/.agents/skills/prisma-database-setup/references/mongodb.md +90 -0
- package/.agents/skills/prisma-database-setup/references/mysql.md +126 -0
- package/.agents/skills/prisma-database-setup/references/postgresql.md +92 -0
- package/.agents/skills/prisma-database-setup/references/prisma-client-setup.md +47 -0
- package/.agents/skills/prisma-database-setup/references/prisma-postgres.md +130 -0
- package/.agents/skills/prisma-database-setup/references/sqlite.md +106 -0
- package/.agents/skills/prisma-database-setup/references/sqlserver.md +94 -0
- package/.agents/skills/prisma-postgres/SKILL.md +127 -0
- package/.agents/skills/prisma-postgres/references/console-and-connections.md +67 -0
- package/.agents/skills/prisma-postgres/references/create-db-cli.md +136 -0
- package/.agents/skills/prisma-postgres/references/management-api-sdk.md +56 -0
- package/.agents/skills/prisma-postgres/references/management-api.md +61 -0
- package/.agents/skills/remotion-best-practices/SKILL.md +340 -0
- package/.agents/skills/remotion-best-practices/rules/3d.md +86 -0
- package/.agents/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/.agents/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.agents/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
- package/.agents/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
- package/.agents/skills/remotion-best-practices/rules/audio.md +169 -0
- package/.agents/skills/remotion-best-practices/rules/calculate-metadata.md +134 -0
- package/.agents/skills/remotion-best-practices/rules/compositions.md +133 -0
- package/.agents/skills/remotion-best-practices/rules/display-captions.md +184 -0
- package/.agents/skills/remotion-best-practices/rules/ffmpeg.md +34 -0
- package/.agents/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/.agents/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/.agents/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
- package/.agents/skills/remotion-best-practices/rules/gifs.md +141 -0
- package/.agents/skills/remotion-best-practices/rules/google-fonts.md +72 -0
- package/.agents/skills/remotion-best-practices/rules/html-in-canvas.md +122 -0
- package/.agents/skills/remotion-best-practices/rules/images.md +71 -0
- package/.agents/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
- package/.agents/skills/remotion-best-practices/rules/light-leaks.md +73 -0
- package/.agents/skills/remotion-best-practices/rules/local-fonts.md +65 -0
- package/.agents/skills/remotion-best-practices/rules/lottie.md +70 -0
- package/.agents/skills/remotion-best-practices/rules/maplibre.md +458 -0
- package/.agents/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/.agents/skills/remotion-best-practices/rules/measuring-text.md +140 -0
- package/.agents/skills/remotion-best-practices/rules/parameters.md +109 -0
- package/.agents/skills/remotion-best-practices/rules/sequencing.md +144 -0
- package/.agents/skills/remotion-best-practices/rules/sfx.md +30 -0
- package/.agents/skills/remotion-best-practices/rules/silence-detection.md +71 -0
- package/.agents/skills/remotion-best-practices/rules/subtitles.md +36 -0
- package/.agents/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/.agents/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/.agents/skills/remotion-best-practices/rules/timing.md +136 -0
- package/.agents/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
- package/.agents/skills/remotion-best-practices/rules/transitions.md +197 -0
- package/.agents/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
- package/.agents/skills/remotion-best-practices/rules/trimming.md +51 -0
- package/.agents/skills/remotion-best-practices/rules/videos.md +171 -0
- package/.agents/skills/remotion-best-practices/rules/voiceover.md +99 -0
- package/.agents/skills/remotion-render/SKILL.md +212 -0
- package/.agents/skills/skill-creator/LICENSE.txt +202 -0
- package/.agents/skills/skill-creator/SKILL.md +485 -0
- package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
- package/.agents/skills/skill-creator/agents/comparator.md +202 -0
- package/.agents/skills/skill-creator/agents/grader.md +223 -0
- package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
- package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.agents/skills/skill-creator/references/schemas.md +430 -0
- package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
- package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
- package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
- package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
- package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
- package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
- package/.agents/skills/skill-creator/scripts/utils.py +47 -0
- package/.agents/skills/stripe-best-practices/SKILL.md +54 -0
- package/.agents/skills/stripe-best-practices/references/billing.md +58 -0
- package/.agents/skills/stripe-best-practices/references/connect.md +173 -0
- package/.agents/skills/stripe-best-practices/references/payments.md +79 -0
- package/.agents/skills/stripe-best-practices/references/security.md +109 -0
- package/.agents/skills/stripe-best-practices/references/tax.md +37 -0
- package/.agents/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.agents/skills/stripe-projects/SKILL.md +132 -0
- package/.agents/skills/supabase/CHANGELOG.md +35 -0
- package/.agents/skills/supabase/SKILL.md +135 -0
- package/.agents/skills/supabase/assets/feedback-issue-template.md +17 -0
- package/.agents/skills/supabase/references/skill-feedback.md +17 -0
- package/.agents/skills/supabase-postgres-best-practices/CHANGELOG.md +29 -0
- package/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_template.md +34 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
- package/.agents/skills/supermemory/LICENSE +201 -0
- package/.agents/skills/supermemory/README.md +221 -0
- package/.agents/skills/supermemory/SKILL.md +172 -0
- package/.agents/skills/supermemory/references/api-reference.md +591 -0
- package/.agents/skills/supermemory/references/architecture.md +557 -0
- package/.agents/skills/supermemory/references/quickstart.md +293 -0
- package/.agents/skills/supermemory/references/sdk-guide.md +655 -0
- package/.agents/skills/supermemory/references/use-cases.md +1033 -0
- package/.agents/skills/supermemory-cli/SKILL.md +490 -0
- package/.agents/skills/tdd/SKILL.md +108 -0
- package/.agents/skills/tdd/mocking.md +59 -0
- package/.agents/skills/tdd/refactoring.md +10 -0
- package/.agents/skills/tdd/tests.md +61 -0
- package/.agents/skills/ui-ux-pro-max/SKILL.md +661 -0
- package/.agents/skills/ui-ux-pro-max/data +1 -0
- package/.agents/skills/ui-ux-pro-max/scripts +1 -0
- package/.agents/skills/vercel-react-native-skills/AGENTS.md +2897 -0
- package/.agents/skills/vercel-react-native-skills/README.md +165 -0
- package/.agents/skills/vercel-react-native-skills/SKILL.md +121 -0
- package/.agents/skills/vercel-react-native-skills/metadata.json +16 -0
- package/.agents/skills/vercel-react-native-skills/rules/_sections.md +86 -0
- package/.agents/skills/vercel-react-native-skills/rules/_template.md +28 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-derived-value.md +53 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-gesture-detector-press.md +95 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-gpu-properties.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/design-system-compound-components.md +66 -0
- package/.agents/skills/vercel-react-native-skills/rules/fonts-config-plugin.md +71 -0
- package/.agents/skills/vercel-react-native-skills/rules/imports-design-system-folder.md +68 -0
- package/.agents/skills/vercel-react-native-skills/rules/js-hoist-intl.md +61 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-callbacks.md +44 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-function-references.md +132 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-images.md +53 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-inline-objects.md +97 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-expensive.md +94 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-memo.md +82 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-types.md +104 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-virtualize.md +67 -0
- package/.agents/skills/vercel-react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
- package/.agents/skills/vercel-react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
- package/.agents/skills/vercel-react-native-skills/rules/navigation-native-navigators.md +188 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-dispatcher.md +91 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-fallback.md +56 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-minimize.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/rendering-no-falsy-and.md +74 -0
- package/.agents/skills/vercel-react-native-skills/rules/rendering-text-in-text-component.md +36 -0
- package/.agents/skills/vercel-react-native-skills/rules/scroll-position-no-state.md +82 -0
- package/.agents/skills/vercel-react-native-skills/rules/state-ground-truth.md +80 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-expo-image.md +66 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-image-gallery.md +104 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-measure-views.md +78 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-menus.md +174 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-native-modals.md +77 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-pressable.md +61 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-safe-area-scroll.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-styling.md +87 -0
- package/.agents/skills/web-design-guidelines/SKILL.md +39 -0
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +19 -4
- package/dist/cli/update.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/tools/daytona-browser.tool.js +1 -1
- package/dist/tools/daytona-browser.tool.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
# Adapter Reference Guide
|
|
2
|
+
|
|
3
|
+
Complete guide for choosing between HTTP and WebSocket adapters.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Quick Decision Matrix](#quick-decision-matrix)
|
|
8
|
+
- [HTTP Adapter](#http-adapter-neondatabaseserverless-with-neon-http)
|
|
9
|
+
- [WebSocket Adapter](#websocket-adapter-neondatabaseserverless-with-neon-serverless)
|
|
10
|
+
- [Framework-Specific Recommendations](#framework-specific-recommendations)
|
|
11
|
+
- [Mixed Environments](#mixed-environments)
|
|
12
|
+
- [Feature Comparison Table](#feature-comparison-table)
|
|
13
|
+
- [Performance Considerations](#performance-considerations)
|
|
14
|
+
- [Troubleshooting](#troubleshooting)
|
|
15
|
+
- [Migration Between Adapters](#migration-between-adapters)
|
|
16
|
+
- [Choosing the Right Adapter](#choosing-the-right-adapter)
|
|
17
|
+
- [Related Resources](#related-resources)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Quick Decision Matrix
|
|
22
|
+
|
|
23
|
+
| Environment | Adapter | Reason |
|
|
24
|
+
|-------------|---------|--------|
|
|
25
|
+
| Vercel | HTTP | Edge functions, stateless |
|
|
26
|
+
| Cloudflare Workers | HTTP | Edge runtime, no WebSocket |
|
|
27
|
+
| AWS Lambda | HTTP | Stateless, cold starts |
|
|
28
|
+
| Next.js (Vercel) | HTTP | App Router, Edge Runtime |
|
|
29
|
+
| Express/Fastify | WebSocket | Long-lived connections |
|
|
30
|
+
| Node.js server | WebSocket | Connection pooling |
|
|
31
|
+
| Bun server | WebSocket | Persistent runtime |
|
|
32
|
+
|
|
33
|
+
## HTTP Adapter (@neondatabase/serverless with neon-http)
|
|
34
|
+
|
|
35
|
+
### When to Use
|
|
36
|
+
|
|
37
|
+
✅ **Serverless/Edge environments:**
|
|
38
|
+
- Vercel Edge Functions
|
|
39
|
+
- Cloudflare Workers
|
|
40
|
+
- AWS Lambda
|
|
41
|
+
- Deno Deploy
|
|
42
|
+
- Next.js App Router (default)
|
|
43
|
+
|
|
44
|
+
✅ **Characteristics:**
|
|
45
|
+
- Stateless requests
|
|
46
|
+
- Cold starts
|
|
47
|
+
- Short execution time
|
|
48
|
+
- No persistent connections
|
|
49
|
+
|
|
50
|
+
### Setup
|
|
51
|
+
|
|
52
|
+
**Installation:**
|
|
53
|
+
```bash
|
|
54
|
+
npm add drizzle-orm @neondatabase/serverless
|
|
55
|
+
npm add -D drizzle-kit
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Connection:**
|
|
59
|
+
```typescript
|
|
60
|
+
import { drizzle } from 'drizzle-orm/neon-http';
|
|
61
|
+
import { neon } from '@neondatabase/serverless';
|
|
62
|
+
|
|
63
|
+
const sql = neon(process.env.DATABASE_URL!);
|
|
64
|
+
export const db = drizzle(sql);
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Complete example:** See `templates/db-http.ts`
|
|
68
|
+
|
|
69
|
+
### Pros
|
|
70
|
+
|
|
71
|
+
✅ **Perfect for serverless:**
|
|
72
|
+
- No connection management needed
|
|
73
|
+
- Works in edge environments
|
|
74
|
+
- Fast cold starts
|
|
75
|
+
- Auto-scales
|
|
76
|
+
|
|
77
|
+
✅ **Simple:**
|
|
78
|
+
- Minimal configuration
|
|
79
|
+
- No connection pooling complexity
|
|
80
|
+
- Stateless = predictable
|
|
81
|
+
|
|
82
|
+
### Cons
|
|
83
|
+
|
|
84
|
+
❌ **Limited features:**
|
|
85
|
+
- No transactions
|
|
86
|
+
- No prepared statements
|
|
87
|
+
- No streaming
|
|
88
|
+
- Higher latency per query
|
|
89
|
+
|
|
90
|
+
❌ **Not ideal for:**
|
|
91
|
+
- Batch operations
|
|
92
|
+
- Complex transactions
|
|
93
|
+
- High-frequency queries from same process
|
|
94
|
+
|
|
95
|
+
### Best Practices
|
|
96
|
+
|
|
97
|
+
**1. Use batch for multiple operations:**
|
|
98
|
+
```typescript
|
|
99
|
+
await db.batch([
|
|
100
|
+
db.insert(users).values({ email: 'test@example.com' }),
|
|
101
|
+
db.insert(posts).values({ title: 'Test' }),
|
|
102
|
+
]);
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**2. Cache query results:**
|
|
106
|
+
```typescript
|
|
107
|
+
import { unstable_cache } from 'next/cache';
|
|
108
|
+
|
|
109
|
+
const getUsers = unstable_cache(
|
|
110
|
+
async () => db.select().from(users),
|
|
111
|
+
['users'],
|
|
112
|
+
{ revalidate: 60 }
|
|
113
|
+
);
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**3. Minimize round trips:**
|
|
117
|
+
```typescript
|
|
118
|
+
const usersWithPosts = await db.query.users.findMany({
|
|
119
|
+
with: { posts: true },
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## WebSocket Adapter (@neondatabase/serverless with neon-serverless)
|
|
124
|
+
|
|
125
|
+
### When to Use
|
|
126
|
+
|
|
127
|
+
✅ **Long-lived processes:**
|
|
128
|
+
- Express/Fastify servers
|
|
129
|
+
- Standard Node.js applications
|
|
130
|
+
- Background workers
|
|
131
|
+
- WebSocket servers
|
|
132
|
+
- Bun applications
|
|
133
|
+
|
|
134
|
+
✅ **Characteristics:**
|
|
135
|
+
- Persistent connections
|
|
136
|
+
- Long execution time
|
|
137
|
+
- Connection pooling
|
|
138
|
+
- Complex transactions
|
|
139
|
+
|
|
140
|
+
### Setup
|
|
141
|
+
|
|
142
|
+
**Installation:**
|
|
143
|
+
```bash
|
|
144
|
+
npm add drizzle-orm @neondatabase/serverless ws
|
|
145
|
+
npm add -D drizzle-kit @types/ws
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Connection:**
|
|
149
|
+
```typescript
|
|
150
|
+
import { drizzle } from 'drizzle-orm/neon-serverless';
|
|
151
|
+
import { Pool, neonConfig } from '@neondatabase/serverless';
|
|
152
|
+
import ws from 'ws';
|
|
153
|
+
|
|
154
|
+
neonConfig.webSocketConstructor = ws;
|
|
155
|
+
|
|
156
|
+
const pool = new Pool({
|
|
157
|
+
connectionString: process.env.DATABASE_URL!,
|
|
158
|
+
max: 10,
|
|
159
|
+
idleTimeoutMillis: 30000,
|
|
160
|
+
connectionTimeoutMillis: 5000,
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
export const db = drizzle(pool);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Complete example:** See `templates/db-websocket.ts`
|
|
167
|
+
|
|
168
|
+
### Pros
|
|
169
|
+
|
|
170
|
+
✅ **Full features:**
|
|
171
|
+
- Transactions
|
|
172
|
+
- Prepared statements
|
|
173
|
+
- Streaming
|
|
174
|
+
- Lower latency (persistent connection)
|
|
175
|
+
|
|
176
|
+
✅ **Better for:**
|
|
177
|
+
- Multiple queries per request
|
|
178
|
+
- Complex business logic
|
|
179
|
+
- High-frequency operations
|
|
180
|
+
|
|
181
|
+
### Cons
|
|
182
|
+
|
|
183
|
+
❌ **More complex:**
|
|
184
|
+
- Connection pool management
|
|
185
|
+
- Need to handle connection errors
|
|
186
|
+
- Not available in edge environments
|
|
187
|
+
|
|
188
|
+
❌ **Resource considerations:**
|
|
189
|
+
- Connection limits
|
|
190
|
+
- Memory usage
|
|
191
|
+
- Cold start overhead
|
|
192
|
+
|
|
193
|
+
### Best Practices
|
|
194
|
+
|
|
195
|
+
**1. Configure connection pool:**
|
|
196
|
+
```typescript
|
|
197
|
+
const pool = new Pool({
|
|
198
|
+
connectionString: process.env.DATABASE_URL!,
|
|
199
|
+
max: 10, // Max connections
|
|
200
|
+
idleTimeoutMillis: 30000, // Close idle after 30s
|
|
201
|
+
connectionTimeoutMillis: 5000, // Timeout after 5s
|
|
202
|
+
});
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**2. Graceful shutdown:**
|
|
206
|
+
```typescript
|
|
207
|
+
process.on('SIGTERM', async () => {
|
|
208
|
+
await pool.end();
|
|
209
|
+
process.exit(0);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
process.on('SIGINT', async () => {
|
|
213
|
+
await pool.end();
|
|
214
|
+
process.exit(0);
|
|
215
|
+
});
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**3. Use transactions:**
|
|
219
|
+
```typescript
|
|
220
|
+
await db.transaction(async (tx) => {
|
|
221
|
+
const user = await tx.insert(users)
|
|
222
|
+
.values({ email: 'test@example.com' })
|
|
223
|
+
.returning();
|
|
224
|
+
|
|
225
|
+
await tx.insert(posts)
|
|
226
|
+
.values({ userId: user[0].id, title: 'First post' });
|
|
227
|
+
});
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**4. Handle connection errors:**
|
|
231
|
+
```typescript
|
|
232
|
+
pool.on('error', (err) => {
|
|
233
|
+
console.error('Unexpected pool error:', err);
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
pool.on('connect', () => {
|
|
237
|
+
console.log('Pool connection established');
|
|
238
|
+
});
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Framework-Specific Recommendations
|
|
242
|
+
|
|
243
|
+
### Next.js
|
|
244
|
+
|
|
245
|
+
**App Router (default):**
|
|
246
|
+
- Use HTTP adapter (Edge Runtime)
|
|
247
|
+
- Server Actions → HTTP
|
|
248
|
+
- Route Handlers → HTTP
|
|
249
|
+
|
|
250
|
+
**Pages Router:**
|
|
251
|
+
- API Routes → Either adapter works
|
|
252
|
+
- Recommend HTTP for consistency
|
|
253
|
+
|
|
254
|
+
**Example:**
|
|
255
|
+
```typescript
|
|
256
|
+
// app/actions/users.ts
|
|
257
|
+
'use server';
|
|
258
|
+
|
|
259
|
+
import { db } from '@/db'; // HTTP adapter
|
|
260
|
+
import { users } from '@/db/schema';
|
|
261
|
+
|
|
262
|
+
export async function createUser(email: string) {
|
|
263
|
+
return db.insert(users).values({ email }).returning();
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Express
|
|
268
|
+
|
|
269
|
+
**Standard setup:**
|
|
270
|
+
- Use WebSocket adapter
|
|
271
|
+
- Configure connection pool
|
|
272
|
+
- Implement health checks
|
|
273
|
+
|
|
274
|
+
**Example:**
|
|
275
|
+
```typescript
|
|
276
|
+
import express from 'express';
|
|
277
|
+
import { db } from './db'; // WebSocket adapter
|
|
278
|
+
import { users } from './db/schema';
|
|
279
|
+
|
|
280
|
+
const app = express();
|
|
281
|
+
|
|
282
|
+
app.get('/health', async (req, res) => {
|
|
283
|
+
try {
|
|
284
|
+
await db.select().from(users).limit(1);
|
|
285
|
+
res.json({ status: 'healthy' });
|
|
286
|
+
} catch (err) {
|
|
287
|
+
res.status(500).json({ status: 'unhealthy', error: err.message });
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
app.listen(3000);
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### Vite/React (SPA)
|
|
295
|
+
|
|
296
|
+
**Deployment matters:**
|
|
297
|
+
|
|
298
|
+
**If deploying to Vercel:**
|
|
299
|
+
- API routes → HTTP adapter
|
|
300
|
+
- Static files → No backend needed
|
|
301
|
+
|
|
302
|
+
**If deploying to Node.js server:**
|
|
303
|
+
- Backend API → WebSocket adapter
|
|
304
|
+
- Frontend → Fetch from API
|
|
305
|
+
|
|
306
|
+
### Bun
|
|
307
|
+
|
|
308
|
+
**Recommendation:**
|
|
309
|
+
- Use WebSocket adapter
|
|
310
|
+
- Bun has built-in WebSocket support
|
|
311
|
+
- No need for `ws` package
|
|
312
|
+
|
|
313
|
+
**Setup:**
|
|
314
|
+
```typescript
|
|
315
|
+
import { drizzle } from 'drizzle-orm/neon-serverless';
|
|
316
|
+
import { Pool } from '@neondatabase/serverless';
|
|
317
|
+
|
|
318
|
+
const pool = new Pool({ connectionString: process.env.DATABASE_URL! });
|
|
319
|
+
export const db = drizzle(pool);
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
## Mixed Environments
|
|
323
|
+
|
|
324
|
+
### Using Both Adapters
|
|
325
|
+
|
|
326
|
+
If you have both serverless and long-lived components:
|
|
327
|
+
|
|
328
|
+
**Structure:**
|
|
329
|
+
```
|
|
330
|
+
src/
|
|
331
|
+
├── db/
|
|
332
|
+
│ ├── http.ts # HTTP adapter for serverless
|
|
333
|
+
│ ├── ws.ts # WebSocket for servers
|
|
334
|
+
│ └── schema.ts # Shared schema
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
**HTTP adapter:**
|
|
338
|
+
```typescript
|
|
339
|
+
// src/db/http.ts
|
|
340
|
+
import { drizzle } from 'drizzle-orm/neon-http';
|
|
341
|
+
import { neon } from '@neondatabase/serverless';
|
|
342
|
+
|
|
343
|
+
const sql = neon(process.env.DATABASE_URL!);
|
|
344
|
+
export const httpDb = drizzle(sql);
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
**WebSocket adapter:**
|
|
348
|
+
```typescript
|
|
349
|
+
// src/db/ws.ts
|
|
350
|
+
import { drizzle } from 'drizzle-orm/neon-serverless';
|
|
351
|
+
import { Pool, neonConfig } from '@neondatabase/serverless';
|
|
352
|
+
import ws from 'ws';
|
|
353
|
+
|
|
354
|
+
neonConfig.webSocketConstructor = ws;
|
|
355
|
+
const pool = new Pool({ connectionString: process.env.DATABASE_URL! });
|
|
356
|
+
export const wsDb = drizzle(pool);
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
**Usage:**
|
|
360
|
+
```typescript
|
|
361
|
+
// Vercel Edge Function
|
|
362
|
+
import { httpDb as db } from '@/db/http';
|
|
363
|
+
|
|
364
|
+
// Express route
|
|
365
|
+
import { wsDb as db } from '@/db/ws';
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
## Feature Comparison Table
|
|
369
|
+
|
|
370
|
+
| Feature | HTTP Adapter | WebSocket Adapter |
|
|
371
|
+
|---------|-------------|-------------------|
|
|
372
|
+
| Transactions | ❌ No | ✅ Yes |
|
|
373
|
+
| Prepared statements | ❌ No | ✅ Yes |
|
|
374
|
+
| Streaming results | ❌ No | ✅ Yes |
|
|
375
|
+
| Connection pooling | N/A (stateless) | ✅ Yes |
|
|
376
|
+
| Edge runtime | ✅ Yes | ❌ No |
|
|
377
|
+
| Cold start speed | ✅ Fast | ⚠️ Slower |
|
|
378
|
+
| Latency per query | ⚠️ Higher | ✅ Lower |
|
|
379
|
+
| Batch operations | ✅ Yes | ✅ Yes |
|
|
380
|
+
| Max connection limit | N/A | ⚠️ Applies |
|
|
381
|
+
|
|
382
|
+
## Performance Considerations
|
|
383
|
+
|
|
384
|
+
### HTTP Adapter Performance
|
|
385
|
+
|
|
386
|
+
**Optimize by:**
|
|
387
|
+
- Minimizing round trips
|
|
388
|
+
- Using batch operations
|
|
389
|
+
- Caching query results
|
|
390
|
+
- Pre-fetching related data
|
|
391
|
+
|
|
392
|
+
**Typical latency:**
|
|
393
|
+
- Single query: 50-200ms
|
|
394
|
+
- Batch operation: 100-300ms
|
|
395
|
+
|
|
396
|
+
### WebSocket Adapter Performance
|
|
397
|
+
|
|
398
|
+
**Optimize by:**
|
|
399
|
+
- Configuring pool size correctly
|
|
400
|
+
- Using transactions for related operations
|
|
401
|
+
- Implementing query caching
|
|
402
|
+
- Monitoring connection usage
|
|
403
|
+
|
|
404
|
+
**Typical latency:**
|
|
405
|
+
- First query (connection): 50-100ms
|
|
406
|
+
- Subsequent queries: 10-50ms
|
|
407
|
+
|
|
408
|
+
## Troubleshooting
|
|
409
|
+
|
|
410
|
+
### HTTP Adapter Issues
|
|
411
|
+
|
|
412
|
+
**Problem:** "fetch is not defined"
|
|
413
|
+
- **Solution:** Ensure running in environment with fetch API (Node 18+, edge runtime)
|
|
414
|
+
|
|
415
|
+
**Problem:** Slow queries
|
|
416
|
+
- **Solution:** Use batch operations, reduce round trips
|
|
417
|
+
|
|
418
|
+
### WebSocket Adapter Issues
|
|
419
|
+
|
|
420
|
+
**Problem:** "WebSocket is not defined"
|
|
421
|
+
- **Solution:** Add `neonConfig.webSocketConstructor = ws`
|
|
422
|
+
|
|
423
|
+
**Problem:** "Too many connections"
|
|
424
|
+
- **Solution:** Reduce pool `max` size, ensure connections are closed
|
|
425
|
+
|
|
426
|
+
**Problem:** Connection timeouts
|
|
427
|
+
- **Solution:** Increase `connectionTimeoutMillis`, implement retry logic
|
|
428
|
+
|
|
429
|
+
## Migration Between Adapters
|
|
430
|
+
|
|
431
|
+
### HTTP → WebSocket
|
|
432
|
+
|
|
433
|
+
**When:** Moving from serverless to dedicated server.
|
|
434
|
+
|
|
435
|
+
**Steps:**
|
|
436
|
+
1. Install ws: `npm add ws @types/ws`
|
|
437
|
+
2. Update connection file to WebSocket adapter
|
|
438
|
+
3. Update drizzle.config.ts if needed
|
|
439
|
+
4. Test transactions (now available)
|
|
440
|
+
|
|
441
|
+
### WebSocket → HTTP
|
|
442
|
+
|
|
443
|
+
**When:** Moving to serverless/edge deployment.
|
|
444
|
+
|
|
445
|
+
**Steps:**
|
|
446
|
+
1. Update connection file to HTTP adapter
|
|
447
|
+
2. Remove ws dependency
|
|
448
|
+
3. **Important:** Replace transactions with batch operations
|
|
449
|
+
4. Test thoroughly (feature differences)
|
|
450
|
+
|
|
451
|
+
## Choosing the Right Adapter
|
|
452
|
+
|
|
453
|
+
**Ask yourself:**
|
|
454
|
+
|
|
455
|
+
1. **Where am I deploying?**
|
|
456
|
+
- Edge/Serverless → HTTP
|
|
457
|
+
- Node.js server → WebSocket
|
|
458
|
+
|
|
459
|
+
2. **Do I need transactions?**
|
|
460
|
+
- Yes → WebSocket
|
|
461
|
+
- No → Either works
|
|
462
|
+
|
|
463
|
+
3. **What's my request pattern?**
|
|
464
|
+
- Short, infrequent → HTTP
|
|
465
|
+
- Long, frequent → WebSocket
|
|
466
|
+
|
|
467
|
+
4. **Am I optimizing for?**
|
|
468
|
+
- Cold starts → HTTP
|
|
469
|
+
- Latency → WebSocket
|
|
470
|
+
|
|
471
|
+
**When in doubt:** Start with HTTP (simpler), migrate to WebSocket if needed.
|
|
472
|
+
|
|
473
|
+
## Related Resources
|
|
474
|
+
|
|
475
|
+
- `guides/new-project.md` - Setup guides for both adapters
|
|
476
|
+
- `guides/troubleshooting.md` - Connection error solutions
|
|
477
|
+
- `templates/db-http.ts` - HTTP adapter template
|
|
478
|
+
- `templates/db-websocket.ts` - WebSocket adapter template
|