zilmate 1.7.8 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/index.js +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Image
|
|
2
|
+
|
|
3
|
+
Displays AI-generated images from the AI SDK.
|
|
4
|
+
|
|
5
|
+
The `Image` component displays AI-generated images from the AI SDK. It accepts a [`Experimental_GeneratedImage`](/docs/reference/ai-sdk-core/generate-image) object from the AI SDK's `generateImage` function and automatically renders it as an image.
|
|
6
|
+
|
|
7
|
+
See `scripts/image.tsx` for this example.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx ai-elements@latest add image
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage with AI SDK
|
|
16
|
+
|
|
17
|
+
Build a simple app allowing a user to generate an image given a prompt.
|
|
18
|
+
|
|
19
|
+
Install the `@ai-sdk/openai` package:
|
|
20
|
+
|
|
21
|
+
```package-install
|
|
22
|
+
npm i @ai-sdk/openai
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Add the following component to your frontend:
|
|
26
|
+
|
|
27
|
+
```tsx title="app/page.tsx"
|
|
28
|
+
"use client";
|
|
29
|
+
|
|
30
|
+
import { Image } from "@/components/ai-elements/image";
|
|
31
|
+
import {
|
|
32
|
+
PromptInput,
|
|
33
|
+
type PromptInputMessage,
|
|
34
|
+
PromptInputTextarea,
|
|
35
|
+
PromptInputSubmit,
|
|
36
|
+
} from "@/components/ai-elements/prompt-input";
|
|
37
|
+
import { useState } from "react";
|
|
38
|
+
import { Spinner } from "@/components/ui/spinner";
|
|
39
|
+
|
|
40
|
+
const ImageDemo = () => {
|
|
41
|
+
const [prompt, setPrompt] = useState("A futuristic cityscape at sunset");
|
|
42
|
+
const [imageData, setImageData] = useState<any>(null);
|
|
43
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
44
|
+
|
|
45
|
+
const handleSubmit = async (message: PromptInputMessage) => {
|
|
46
|
+
if (!message.text.trim()) return;
|
|
47
|
+
setPrompt("");
|
|
48
|
+
|
|
49
|
+
setIsLoading(true);
|
|
50
|
+
try {
|
|
51
|
+
const response = await fetch("/api/image", {
|
|
52
|
+
method: "POST",
|
|
53
|
+
body: JSON.stringify({ prompt: message.text.trim() }),
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
const data = await response.json();
|
|
57
|
+
|
|
58
|
+
setImageData(data);
|
|
59
|
+
} catch (error) {
|
|
60
|
+
console.error("Error generating image:", error);
|
|
61
|
+
} finally {
|
|
62
|
+
setIsLoading(false);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
return (
|
|
67
|
+
<div className="max-w-4xl mx-auto p-6 relative size-full rounded-lg border h-[600px]">
|
|
68
|
+
<div className="flex flex-col h-full">
|
|
69
|
+
<div className="flex-1 overflow-y-auto p-4">
|
|
70
|
+
{imageData && (
|
|
71
|
+
<div className="flex justify-center">
|
|
72
|
+
<Image
|
|
73
|
+
{...imageData}
|
|
74
|
+
alt="Generated image"
|
|
75
|
+
className="h-[300px] aspect-square border rounded-lg"
|
|
76
|
+
/>
|
|
77
|
+
</div>
|
|
78
|
+
)}
|
|
79
|
+
{isLoading && <Spinner />}
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<PromptInput
|
|
83
|
+
onSubmit={handleSubmit}
|
|
84
|
+
className="mt-4 w-full max-w-2xl mx-auto relative"
|
|
85
|
+
>
|
|
86
|
+
<PromptInputTextarea
|
|
87
|
+
value={prompt}
|
|
88
|
+
placeholder="Describe the image you want to generate..."
|
|
89
|
+
onChange={(e) => setPrompt(e.currentTarget.value)}
|
|
90
|
+
className="pr-12"
|
|
91
|
+
/>
|
|
92
|
+
<PromptInputSubmit
|
|
93
|
+
status={isLoading ? "submitted" : "ready"}
|
|
94
|
+
disabled={!prompt.trim()}
|
|
95
|
+
className="absolute bottom-1 right-1"
|
|
96
|
+
/>
|
|
97
|
+
</PromptInput>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
);
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export default ImageDemo;
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Add the following route to your backend:
|
|
107
|
+
|
|
108
|
+
```ts title="app/api/image/route.ts"
|
|
109
|
+
import { openai } from "@ai-sdk/openai";
|
|
110
|
+
import { experimental_generateImage } from "ai";
|
|
111
|
+
|
|
112
|
+
export async function POST(req: Request) {
|
|
113
|
+
const { prompt }: { prompt: string } = await req.json();
|
|
114
|
+
|
|
115
|
+
const { image } = await experimental_generateImage({
|
|
116
|
+
model: openai.image("dall-e-3"),
|
|
117
|
+
prompt: prompt,
|
|
118
|
+
size: "1024x1024",
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
return Response.json({
|
|
122
|
+
base64: image.base64,
|
|
123
|
+
uint8Array: image.uint8Array,
|
|
124
|
+
mediaType: image.mediaType,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Features
|
|
130
|
+
|
|
131
|
+
- Accepts `Experimental_GeneratedImage` objects directly from the AI SDK
|
|
132
|
+
- Automatically creates proper data URLs from base64-encoded image data
|
|
133
|
+
- Supports all standard HTML image attributes
|
|
134
|
+
- Responsive by default with `max-w-full h-auto` styling
|
|
135
|
+
- Customizable with additional CSS classes
|
|
136
|
+
- Includes proper TypeScript types for AI SDK compatibility
|
|
137
|
+
|
|
138
|
+
## Props
|
|
139
|
+
|
|
140
|
+
### `<Image />`
|
|
141
|
+
|
|
142
|
+
| Prop | Type | Default | Description |
|
|
143
|
+
|------|------|---------|-------------|
|
|
144
|
+
| `alt` | `string` | - | Alternative text for the image. |
|
|
145
|
+
| `className` | `string` | - | Additional CSS classes to apply to the image. |
|
|
146
|
+
| `...props` | `Experimental_GeneratedImage` | - | The image data to display, as returned by the AI SDK. |
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# Inline Citation
|
|
2
|
+
|
|
3
|
+
A hoverable citation component that displays source information and quotes inline with text, perfect for AI-generated content with references.
|
|
4
|
+
|
|
5
|
+
The `InlineCitation` component provides a way to display citations inline with text content, similar to academic papers or research documents. It consists of a citation pill that shows detailed source information on hover, making it perfect for AI-generated content that needs to reference sources.
|
|
6
|
+
|
|
7
|
+
See `scripts/inline-citation.tsx` for this example.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx ai-elements@latest add inline-citation
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage with AI SDK
|
|
16
|
+
|
|
17
|
+
Build citations for AI-generated content using [`experimental_generateObject`](/docs/reference/ai-sdk-ui/use-object).
|
|
18
|
+
|
|
19
|
+
Add the following component to your frontend:
|
|
20
|
+
|
|
21
|
+
```tsx title="app/page.tsx"
|
|
22
|
+
"use client";
|
|
23
|
+
|
|
24
|
+
import { experimental_useObject as useObject } from "@ai-sdk/react";
|
|
25
|
+
import {
|
|
26
|
+
InlineCitation,
|
|
27
|
+
InlineCitationText,
|
|
28
|
+
InlineCitationCard,
|
|
29
|
+
InlineCitationCardTrigger,
|
|
30
|
+
InlineCitationCardBody,
|
|
31
|
+
InlineCitationCarousel,
|
|
32
|
+
InlineCitationCarouselContent,
|
|
33
|
+
InlineCitationCarouselItem,
|
|
34
|
+
InlineCitationCarouselHeader,
|
|
35
|
+
InlineCitationCarouselIndex,
|
|
36
|
+
InlineCitationCarouselPrev,
|
|
37
|
+
InlineCitationCarouselNext,
|
|
38
|
+
InlineCitationSource,
|
|
39
|
+
InlineCitationQuote,
|
|
40
|
+
} from "@/components/ai-elements/inline-citation";
|
|
41
|
+
import { Button } from "@/components/ui/button";
|
|
42
|
+
import { citationSchema } from "@/app/api/citation/route";
|
|
43
|
+
|
|
44
|
+
const CitationDemo = () => {
|
|
45
|
+
const { object, submit, isLoading } = useObject({
|
|
46
|
+
api: "/api/citation",
|
|
47
|
+
schema: citationSchema,
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const handleSubmit = (topic: string) => {
|
|
51
|
+
submit({ prompt: topic });
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<div className="max-w-4xl mx-auto p-6 space-y-6">
|
|
56
|
+
<div className="flex gap-2 mb-6">
|
|
57
|
+
<Button
|
|
58
|
+
onClick={() => handleSubmit("artificial intelligence")}
|
|
59
|
+
disabled={isLoading}
|
|
60
|
+
variant="outline"
|
|
61
|
+
>
|
|
62
|
+
Generate AI Content
|
|
63
|
+
</Button>
|
|
64
|
+
<Button
|
|
65
|
+
onClick={() => handleSubmit("climate change")}
|
|
66
|
+
disabled={isLoading}
|
|
67
|
+
variant="outline"
|
|
68
|
+
>
|
|
69
|
+
Generate Climate Content
|
|
70
|
+
</Button>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
{isLoading && !object && (
|
|
74
|
+
<div className="text-muted-foreground">
|
|
75
|
+
Generating content with citations...
|
|
76
|
+
</div>
|
|
77
|
+
)}
|
|
78
|
+
|
|
79
|
+
{object?.content && (
|
|
80
|
+
<div className="prose prose-sm max-w-none">
|
|
81
|
+
<p className="leading-relaxed">
|
|
82
|
+
{object.content.split(/(\[\d+\])/).map((part, index) => {
|
|
83
|
+
const citationMatch = part.match(/\[(\d+)\]/);
|
|
84
|
+
if (citationMatch) {
|
|
85
|
+
const citationNumber = citationMatch[1];
|
|
86
|
+
const citation = object.citations?.find(
|
|
87
|
+
(c: any) => c.number === citationNumber
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
if (citation) {
|
|
91
|
+
return (
|
|
92
|
+
<InlineCitation key={index}>
|
|
93
|
+
<InlineCitationCard>
|
|
94
|
+
<InlineCitationCardTrigger sources={[citation.url]} />
|
|
95
|
+
<InlineCitationCardBody>
|
|
96
|
+
<InlineCitationCarousel>
|
|
97
|
+
<InlineCitationCarouselHeader>
|
|
98
|
+
<InlineCitationCarouselPrev />
|
|
99
|
+
<InlineCitationCarouselNext />
|
|
100
|
+
<InlineCitationCarouselIndex />
|
|
101
|
+
</InlineCitationCarouselHeader>
|
|
102
|
+
<InlineCitationCarouselContent>
|
|
103
|
+
<InlineCitationCarouselItem>
|
|
104
|
+
<InlineCitationSource
|
|
105
|
+
title={citation.title}
|
|
106
|
+
url={citation.url}
|
|
107
|
+
description={citation.description}
|
|
108
|
+
/>
|
|
109
|
+
{citation.quote && (
|
|
110
|
+
<InlineCitationQuote>
|
|
111
|
+
{citation.quote}
|
|
112
|
+
</InlineCitationQuote>
|
|
113
|
+
)}
|
|
114
|
+
</InlineCitationCarouselItem>
|
|
115
|
+
</InlineCitationCarouselContent>
|
|
116
|
+
</InlineCitationCarousel>
|
|
117
|
+
</InlineCitationCardBody>
|
|
118
|
+
</InlineCitationCard>
|
|
119
|
+
</InlineCitation>
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return part;
|
|
124
|
+
})}
|
|
125
|
+
</p>
|
|
126
|
+
</div>
|
|
127
|
+
)}
|
|
128
|
+
</div>
|
|
129
|
+
);
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
export default CitationDemo;
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Add the following route to your backend:
|
|
136
|
+
|
|
137
|
+
```ts title="app/api/citation/route.ts"
|
|
138
|
+
import { streamObject } from "ai";
|
|
139
|
+
import { z } from "zod";
|
|
140
|
+
|
|
141
|
+
export const citationSchema = z.object({
|
|
142
|
+
content: z.string(),
|
|
143
|
+
citations: z.array(
|
|
144
|
+
z.object({
|
|
145
|
+
number: z.string(),
|
|
146
|
+
title: z.string(),
|
|
147
|
+
url: z.string(),
|
|
148
|
+
description: z.string().optional(),
|
|
149
|
+
quote: z.string().optional(),
|
|
150
|
+
})
|
|
151
|
+
),
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
// Allow streaming responses up to 30 seconds
|
|
155
|
+
export const maxDuration = 30;
|
|
156
|
+
|
|
157
|
+
export async function POST(req: Request) {
|
|
158
|
+
const { prompt } = await req.json();
|
|
159
|
+
|
|
160
|
+
const result = streamObject({
|
|
161
|
+
model: "openai/gpt-4o",
|
|
162
|
+
schema: citationSchema,
|
|
163
|
+
prompt: `Generate a well-researched paragraph about ${prompt} with proper citations.
|
|
164
|
+
|
|
165
|
+
Include:
|
|
166
|
+
- A comprehensive paragraph with inline citations marked as [1], [2], etc.
|
|
167
|
+
- 2-3 citations with realistic source information
|
|
168
|
+
- Each citation should have a title, URL, and optional description/quote
|
|
169
|
+
- Make the content informative and the sources credible
|
|
170
|
+
|
|
171
|
+
Format citations as numbered references within the text.`,
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
return result.toTextStreamResponse();
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Features
|
|
179
|
+
|
|
180
|
+
- Hover interaction to reveal detailed citation information
|
|
181
|
+
- **Carousel navigation** for multiple citations with prev/next controls
|
|
182
|
+
- **Live index tracking** showing current slide position (e.g., "1/5")
|
|
183
|
+
- Support for source titles, URLs, and descriptions
|
|
184
|
+
- Optional quote blocks for relevant excerpts
|
|
185
|
+
- Composable architecture for flexible citation formats
|
|
186
|
+
- Accessible design with proper keyboard navigation
|
|
187
|
+
- Seamless integration with AI-generated content
|
|
188
|
+
- Clean visual design that doesn't disrupt reading flow
|
|
189
|
+
- Smart badge display showing source hostname and count
|
|
190
|
+
|
|
191
|
+
## Usage with AI SDK
|
|
192
|
+
|
|
193
|
+
Currently, there is no official support for inline citations with Streamdown or the Response component. This is because:
|
|
194
|
+
|
|
195
|
+
- There isn't any good markdown syntax for inline citations
|
|
196
|
+
- Language models don't naturally respond with inline citation syntax
|
|
197
|
+
- The AI SDK doesn't have built-in support for inline citations
|
|
198
|
+
|
|
199
|
+
### Potential Approaches
|
|
200
|
+
|
|
201
|
+
While these methods are hypothetical and not officially supported, there are two conceptual ways inline citations could work with Streamdown:
|
|
202
|
+
|
|
203
|
+
1. **Footnote conversion**: GitHub Flavored Markdown (GFM) handles footnotes using `[^1]` syntax. You could hypothetically remove the default footnote rendering and convert footnotes to inline citations instead.
|
|
204
|
+
|
|
205
|
+
2. **Custom HTML syntax**: You could add a system prompt instructing the model to use a special HTML syntax like `<citation />` and pass that as a custom component to Streamdown.
|
|
206
|
+
|
|
207
|
+
These approaches require custom implementation and are not currently supported out of the box. We will investigate official support for this use case in the future.
|
|
208
|
+
|
|
209
|
+
For now, the recommended approach is to use `experimental_useObject` (as shown in the usage example above) to generate structured citation data, then manually parse and render inline citations.
|
|
210
|
+
|
|
211
|
+
## Props
|
|
212
|
+
|
|
213
|
+
### `<InlineCitation />`
|
|
214
|
+
|
|
215
|
+
| Prop | Type | Default | Description |
|
|
216
|
+
|------|------|---------|-------------|
|
|
217
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the root span element. |
|
|
218
|
+
|
|
219
|
+
### `<InlineCitationText />`
|
|
220
|
+
|
|
221
|
+
| Prop | Type | Default | Description |
|
|
222
|
+
|------|------|---------|-------------|
|
|
223
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying span element. |
|
|
224
|
+
|
|
225
|
+
### `<InlineCitationCard />`
|
|
226
|
+
|
|
227
|
+
| Prop | Type | Default | Description |
|
|
228
|
+
|------|------|---------|-------------|
|
|
229
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the HoverCard component. |
|
|
230
|
+
|
|
231
|
+
### `<InlineCitationCardTrigger />`
|
|
232
|
+
|
|
233
|
+
| Prop | Type | Default | Description |
|
|
234
|
+
|------|------|---------|-------------|
|
|
235
|
+
| `sources` | `string[]` | - | Array of source URLs. The length determines the number displayed in the badge. |
|
|
236
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying button element. |
|
|
237
|
+
|
|
238
|
+
### `<InlineCitationCardBody />`
|
|
239
|
+
|
|
240
|
+
| Prop | Type | Default | Description |
|
|
241
|
+
|------|------|---------|-------------|
|
|
242
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying div. |
|
|
243
|
+
|
|
244
|
+
### `<InlineCitationCarousel />`
|
|
245
|
+
|
|
246
|
+
| Prop | Type | Default | Description |
|
|
247
|
+
|------|------|---------|-------------|
|
|
248
|
+
| `...props` | `React.ComponentProps<typeof Carousel>` | - | Any other props are spread to the underlying Carousel component. |
|
|
249
|
+
|
|
250
|
+
### `<InlineCitationCarouselContent />`
|
|
251
|
+
|
|
252
|
+
| Prop | Type | Default | Description |
|
|
253
|
+
|------|------|---------|-------------|
|
|
254
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying CarouselContent component. |
|
|
255
|
+
|
|
256
|
+
### `<InlineCitationCarouselItem />`
|
|
257
|
+
|
|
258
|
+
| Prop | Type | Default | Description |
|
|
259
|
+
|------|------|---------|-------------|
|
|
260
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying div. |
|
|
261
|
+
|
|
262
|
+
### `<InlineCitationCarouselHeader />`
|
|
263
|
+
|
|
264
|
+
| Prop | Type | Default | Description |
|
|
265
|
+
|------|------|---------|-------------|
|
|
266
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying div. |
|
|
267
|
+
|
|
268
|
+
### `<InlineCitationCarouselIndex />`
|
|
269
|
+
|
|
270
|
+
| Prop | Type | Default | Description |
|
|
271
|
+
|------|------|---------|-------------|
|
|
272
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying div. Children will override the default index display. |
|
|
273
|
+
|
|
274
|
+
### `<InlineCitationCarouselPrev />`
|
|
275
|
+
|
|
276
|
+
| Prop | Type | Default | Description |
|
|
277
|
+
|------|------|---------|-------------|
|
|
278
|
+
| `...props` | `React.ComponentProps<typeof CarouselPrevious>` | - | Any other props are spread to the underlying CarouselPrevious component. |
|
|
279
|
+
|
|
280
|
+
### `<InlineCitationCarouselNext />`
|
|
281
|
+
|
|
282
|
+
| Prop | Type | Default | Description |
|
|
283
|
+
|------|------|---------|-------------|
|
|
284
|
+
| `...props` | `React.ComponentProps<typeof CarouselNext>` | - | Any other props are spread to the underlying CarouselNext component. |
|
|
285
|
+
|
|
286
|
+
### `<InlineCitationSource />`
|
|
287
|
+
|
|
288
|
+
| Prop | Type | Default | Description |
|
|
289
|
+
|------|------|---------|-------------|
|
|
290
|
+
| `title` | `string` | - | The title of the source. |
|
|
291
|
+
| `url` | `string` | - | The URL of the source. |
|
|
292
|
+
| `description` | `string` | - | A brief description of the source. |
|
|
293
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying div. |
|
|
294
|
+
|
|
295
|
+
### `<InlineCitationQuote />`
|
|
296
|
+
|
|
297
|
+
| Prop | Type | Default | Description |
|
|
298
|
+
|------|------|---------|-------------|
|
|
299
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying blockquote element. |
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# JSX Preview
|
|
2
|
+
|
|
3
|
+
A component that dynamically renders JSX strings with streaming support for AI-generated UI.
|
|
4
|
+
|
|
5
|
+
The `JSXPreview` component renders JSX strings dynamically, supporting streaming scenarios where JSX may be incomplete. It automatically closes unclosed tags during streaming, making it ideal for displaying AI-generated UI components in real-time.
|
|
6
|
+
|
|
7
|
+
See `scripts/jsx-preview.tsx` for this example.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx ai-elements@latest add jsx-preview
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- Renders JSX strings dynamically using `react-jsx-parser`
|
|
18
|
+
- Streaming support with automatic tag completion
|
|
19
|
+
- Custom component injection for rendering your own components
|
|
20
|
+
- Error handling with customizable error display
|
|
21
|
+
- Context-based architecture for flexible composition
|
|
22
|
+
|
|
23
|
+
## Usage with AI SDK
|
|
24
|
+
|
|
25
|
+
The JSXPreview component integrates with the AI SDK to render generated UI in real-time:
|
|
26
|
+
|
|
27
|
+
```tsx title="components/generated-ui.tsx"
|
|
28
|
+
"use client";
|
|
29
|
+
|
|
30
|
+
import {
|
|
31
|
+
JSXPreview,
|
|
32
|
+
JSXPreviewContent,
|
|
33
|
+
JSXPreviewError,
|
|
34
|
+
} from "@/components/ai-elements/jsx-preview";
|
|
35
|
+
|
|
36
|
+
type GeneratedUIProps = {
|
|
37
|
+
jsx: string;
|
|
38
|
+
isStreaming: boolean;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export const GeneratedUI = ({ jsx, isStreaming }: GeneratedUIProps) => (
|
|
42
|
+
<JSXPreview
|
|
43
|
+
jsx={jsx}
|
|
44
|
+
isStreaming={isStreaming}
|
|
45
|
+
onError={(error) => console.error("JSX Parse Error:", error)}
|
|
46
|
+
>
|
|
47
|
+
<JSXPreviewContent />
|
|
48
|
+
<JSXPreviewError />
|
|
49
|
+
</JSXPreview>
|
|
50
|
+
);
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### With Custom Components
|
|
54
|
+
|
|
55
|
+
You can inject custom components to be used within the rendered JSX:
|
|
56
|
+
|
|
57
|
+
```tsx title="components/generated-ui-with-components.tsx"
|
|
58
|
+
"use client";
|
|
59
|
+
|
|
60
|
+
import {
|
|
61
|
+
JSXPreview,
|
|
62
|
+
JSXPreviewContent,
|
|
63
|
+
} from "@/components/ai-elements/jsx-preview";
|
|
64
|
+
import { Button } from "@/components/ui/button";
|
|
65
|
+
import { Card } from "@/components/ui/card";
|
|
66
|
+
|
|
67
|
+
const customComponents = {
|
|
68
|
+
Button,
|
|
69
|
+
Card,
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const GeneratedUIWithComponents = ({ jsx }: { jsx: string }) => (
|
|
73
|
+
<JSXPreview jsx={jsx} components={customComponents}>
|
|
74
|
+
<JSXPreviewContent />
|
|
75
|
+
</JSXPreview>
|
|
76
|
+
);
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Props
|
|
80
|
+
|
|
81
|
+
### `<JSXPreview />`
|
|
82
|
+
|
|
83
|
+
| Prop | Type | Default | Description |
|
|
84
|
+
|------|------|---------|-------------|
|
|
85
|
+
| `jsx` | `string` | Required | The JSX string to render. |
|
|
86
|
+
| `isStreaming` | `boolean` | `false` | When true, automatically completes unclosed tags. |
|
|
87
|
+
| `components` | `Record<string, React.ComponentType>` | - | Custom components available within the rendered JSX. |
|
|
88
|
+
| `bindings` | `Record<string, unknown>` | - | Variables and functions available within the JSX scope. |
|
|
89
|
+
| `onError` | `(error: Error) => void` | - | Callback fired when a parsing or rendering error occurs. |
|
|
90
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying div element. |
|
|
91
|
+
|
|
92
|
+
### `<JSXPreviewContent />`
|
|
93
|
+
|
|
94
|
+
| Prop | Type | Default | Description |
|
|
95
|
+
|------|------|---------|-------------|
|
|
96
|
+
| `renderError` | `JsxParserProps[` | - | Custom error renderer passed to react-jsx-parser. |
|
|
97
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying div element. |
|
|
98
|
+
|
|
99
|
+
### `<JSXPreviewError />`
|
|
100
|
+
|
|
101
|
+
| Prop | Type | Default | Description |
|
|
102
|
+
|------|------|---------|-------------|
|
|
103
|
+
| `children` | `ReactNode | ((error: Error) => ReactNode)` | - | Custom error content or render function receiving the error. |
|
|
104
|
+
| `...props` | `React.ComponentProps<` | - | Any other props are spread to the underlying div element. |
|