Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/alwurts_simple-ai.json
T

1 line
1.5 MiB
Plaintext

{"repo": "alwurts/simple-ai", "files": {"packages/docs/registry.json": {"d6fec2c1bdd089ba2e57b3f3a8e5d2cef9747542": {"t": 1785674047.2387366, "n": 64439, "h": "965d8b42da599841", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-04\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat with multiple agents support.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\",\n\t\t\t\t\"@simple-ai/agents-tools-registry\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/agents/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Firecrawl Agent\",\n\t\t\t\"description\": \"A web research agent powered by Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/firecrawl-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/firecrawl-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/firecrawl-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"FirecrawlIcon\",\n\t\t\t\t\"toolIds\": [\"firecrawl-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Scrape https://example.com\",\n\t\t\t\t\t\"Search for recent news about AI agents\",\n\t\t\t\t\t\"Find documentation for the Vercel AI SDK\",\n\t\t\t\t\t\"Get content from a specific URL\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a web research assistant powered by Firecrawl.\\nYour goal is to find accurate information from the web efficiently.\\n\\nInstructions:\\n- If the user provides a specific URL, use the 'scrape' mode to get the content.\\n- If the user asks a general question, use the 'search' mode to find relevant pages.\\n- The tool returns Markdown content. Summarize this content clearly for the user.\\n- Cite the URLs you found information from.\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Exa Agent\",\n\t\t\t\"description\": \"A web research agent powered by Exa.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/exa-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/exa-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/exa-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"ExaIcon\",\n\t\t\t\t\"toolIds\": [\"exa-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Find similar companies to https://exa.ai\",\n\t\t\t\t\t\"Research the latest trends in generative AI\",\n\t\t\t\t\t\"Retrieve content from https://example.com\",\n\t\t\t\t\t\"Find blog posts about Rust programming\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a highly capable web research assistant powered by Exa.\\nYour goal is to find, verify, and synthesize information from the web.\\n\\nInstructions:\\n- Use 'search' mode for general queries to find relevant pages and their content.\\n- Use 'retrieve' mode if the user provides a specific URL that needs to be read.\\n- Use 'find-similar' mode if the user wants to find websites related to a specific URL.\\n- Exa provides clean Markdown content. Use this to summarize answers effectively.\\n- Always cite the source URLs provided in the search results.\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/get-weather.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\", \"@mendable/firecrawl-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/firecrawl-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/firecrawl-tool.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"FIRECRAWL_API_KEY\": \"\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Exa.\",\n\t\t\t\"dependencies\": [\"ai\", \"exa-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/exa-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/exa-tool.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"EXA_API_KEY\": \"\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents-tools-registry\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/get-weather\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents-registry.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/agents-registry.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools-registry.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/tools-registry.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agent-route-respond.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/models.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/messages.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/ai-utils.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "2a2c17576285c094fe59c4b6b132ad37225779ed": {"t": 1785749466.8333688, "n": 64439, "h": "965d8b42da599841", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-04\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat with multiple agents support.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\",\n\t\t\t\t\"@simple-ai/agents-tools-registry\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/agents/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Firecrawl Agent\",\n\t\t\t\"description\": \"A web research agent powered by Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/firecrawl-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/firecrawl-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/firecrawl-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"FirecrawlIcon\",\n\t\t\t\t\"toolIds\": [\"firecrawl-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Scrape https://example.com\",\n\t\t\t\t\t\"Search for recent news about AI agents\",\n\t\t\t\t\t\"Find documentation for the Vercel AI SDK\",\n\t\t\t\t\t\"Get content from a specific URL\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a web research assistant powered by Firecrawl.\\nYour goal is to find accurate information from the web efficiently.\\n\\nInstructions:\\n- If the user provides a specific URL, use the 'scrape' mode to get the content.\\n- If the user asks a general question, use the 'search' mode to find relevant pages.\\n- The tool returns Markdown content. Summarize this content clearly for the user.\\n- Cite the URLs you found information from.\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Exa Agent\",\n\t\t\t\"description\": \"A web research agent powered by Exa.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/exa-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/exa-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/exa-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"ExaIcon\",\n\t\t\t\t\"toolIds\": [\"exa-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Find similar companies to https://exa.ai\",\n\t\t\t\t\t\"Research the latest trends in generative AI\",\n\t\t\t\t\t\"Retrieve content from https://example.com\",\n\t\t\t\t\t\"Find blog posts about Rust programming\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a highly capable web research assistant powered by Exa.\\nYour goal is to find, verify, and synthesize information from the web.\\n\\nInstructions:\\n- Use 'search' mode for general queries to find relevant pages and their content.\\n- Use 'retrieve' mode if the user provides a specific URL that needs to be read.\\n- Use 'find-similar' mode if the user wants to find websites related to a specific URL.\\n- Exa provides clean Markdown content. Use this to summarize answers effectively.\\n- Always cite the source URLs provided in the search results.\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/get-weather.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\", \"@mendable/firecrawl-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/firecrawl-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/firecrawl-tool.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"FIRECRAWL_API_KEY\": \"\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Exa.\",\n\t\t\t\"dependencies\": [\"ai\", \"exa-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/exa-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/exa-tool.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"EXA_API_KEY\": \"\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents-tools-registry\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/get-weather\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents-registry.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/agents-registry.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools-registry.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/tools-registry.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agent-route-respond.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/models.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/messages.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/ai-utils.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "343b32724cf9afe925e0a59e6c7daa074d7bc490": {"t": 1785749468.2064812, "n": 63806, "h": "58df4ed63cebafde", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-04\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat with multiple agents support.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/exa-agent\",\n\t\t\t\t\"@simple-ai/firecrawl-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Firecrawl Agent\",\n\t\t\t\"description\": \"A web research agent powered by Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/firecrawl-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/firecrawl-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/firecrawl-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"FirecrawlIcon\",\n\t\t\t\t\"toolIds\": [\"firecrawl-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Scrape https://example.com\",\n\t\t\t\t\t\"Search for recent news about AI agents\",\n\t\t\t\t\t\"Find documentation for the Vercel AI SDK\",\n\t\t\t\t\t\"Get content from a specific URL\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a web research assistant powered by Firecrawl.\\nYour goal is to find accurate information from the web efficiently.\\n\\nInstructions:\\n- If the user provides a specific URL, use the 'scrape' mode to get the content.\\n- If the user asks a general question, use the 'search' mode to find relevant pages.\\n- The tool returns Markdown content. Summarize this content clearly for the user.\\n- Cite the URLs you found information from.\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Exa Agent\",\n\t\t\t\"description\": \"A web research agent powered by Exa.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/exa-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/exa-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/exa-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"ExaIcon\",\n\t\t\t\t\"toolIds\": [\"exa-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Find similar companies to https://exa.ai\",\n\t\t\t\t\t\"Research the latest trends in generative AI\",\n\t\t\t\t\t\"Retrieve content from https://example.com\",\n\t\t\t\t\t\"Find blog posts about Rust programming\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a highly capable web research assistant powered by Exa.\\nYour goal is to find, verify, and synthesize information from the web.\\n\\nInstructions:\\n- Use 'search' mode for general queries to find relevant pages and their content.\\n- Use 'retrieve' mode if the user provides a specific URL that needs to be read.\\n- Use 'find-similar' mode if the user wants to find websites related to a specific URL.\\n- Exa provides clean Markdown content. Use this to summarize answers effectively.\\n- Always cite the source URLs provided in the search results.\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/exa-tool\",\n\t\t\t\t\"@simple-ai/firecrawl-tool\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\", \"@mendable/firecrawl-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/firecrawl-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Exa.\",\n\t\t\t\"dependencies\": [\"ai\", \"exa-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/exa-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "5ee24e87850a233f88cef640e8ca07c4a3523c48": {"t": 1785749469.5663977, "n": 62196, "h": "a2da12d78905d8d9", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-04\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat with multiple agents support.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/firecrawl-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Firecrawl Agent\",\n\t\t\t\"description\": \"A web research agent powered by Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/firecrawl-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/firecrawl-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/firecrawl-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"FirecrawlIcon\",\n\t\t\t\t\"toolIds\": [\"firecrawl\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Scrape https://example.com\",\n\t\t\t\t\t\"Search for recent news about AI agents\",\n\t\t\t\t\t\"Find documentation for the Vercel AI SDK\",\n\t\t\t\t\t\"Get content from a specific URL\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a web research assistant powered by Firecrawl.\\nYour goal is to find accurate information from the web efficiently.\\n\\nInstructions:\\n- If the user provides a specific URL, use the 'scrape' mode to get the content.\\n- If the user asks a general question, use the 'search' mode to find relevant pages.\\n- The tool returns Markdown content. Summarize this content clearly for the user.\\n- Cite the URLs you found information from.\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/firecrawl-tool\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\", \"@mendable/firecrawl-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/firecrawl.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"FIRECRAWL_API_KEY\": \"\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "877578428002459902f6c9b0accfea2abdb765ae": {"t": 1785749470.9226792, "n": 62005, "h": "f2d820abe7e458f6", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-04\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat with multiple agents support.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/search-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"search-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Search Agent\",\n\t\t\t\"description\": \"A search agent with tools for web searching.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/web-search\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/search-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/search-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"Search\",\n\t\t\t\t\"toolIds\": [\"web-search\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Search for the latest AI news\",\n\t\t\t\t\t\"Find information about React hooks\",\n\t\t\t\t\t\"What are the current trends in web development?\",\n\t\t\t\t\t\"Search for recipes for chocolate chip cookies\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful search assistant. Your role is to find and provide accurate information from the web.\\n\\nWhen users ask questions or need information:\\n- Use the web-search tool to find relevant information\\n- Search for the most relevant and up-to-date information\\n- Synthesize search results into clear, helpful answers\\n- Cite sources when appropriate\\n- If search results don't contain the answer, let the user know\\n- Be thorough but concise in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"web-search\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching the web.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/web-search.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "833824d4ec02df1de13b6572afd519293edc017c": {"t": 1785749472.2544246, "n": 59152, "h": "9a5b5278177a49c4", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/search-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"search-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Search Agent\",\n\t\t\t\"description\": \"A search agent with tools for web searching.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/web-search\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/search-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/search-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"Search\",\n\t\t\t\t\"toolIds\": [\"web-search\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Search for the latest AI news\",\n\t\t\t\t\t\"Find information about React hooks\",\n\t\t\t\t\t\"What are the current trends in web development?\",\n\t\t\t\t\t\"Search for recipes for chocolate chip cookies\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful search assistant. Your role is to find and provide accurate information from the web.\\n\\nWhen users ask questions or need information:\\n- Use the web-search tool to find relevant information\\n- Search for the most relevant and up-to-date information\\n- Synthesize search results into clear, helpful answers\\n- Cite sources when appropriate\\n- If search results don't contain the answer, let the user know\\n- Be thorough but concise in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"web-search\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching the web.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/web-search.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "65dd1cbbb11ba94f411ffdc9284df41c9bf27671": {"t": 1785749473.6082857, "n": 59128, "h": "89cf7e291b078570", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows with React Flow components integrated with Vercel AI SDK.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/search-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like today?\",\n\t\t\t\t\t\"Will it rain tomorrow?\",\n\t\t\t\t\t\"What's the forecast for next week?\",\n\t\t\t\t\t\"How's the weather in New York?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"search-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Search Agent\",\n\t\t\t\"description\": \"A search agent with tools for web searching.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/web-search\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/search-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/search-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"toolIds\": [\"web-search\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Search for the latest AI news\",\n\t\t\t\t\t\"Find information about React hooks\",\n\t\t\t\t\t\"What are the current trends in web development?\",\n\t\t\t\t\t\"Search for recipes for chocolate chip cookies\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful search assistant. Your role is to find and provide accurate information from the web.\\n\\nWhen users ask questions or need information:\\n- Use the web-search tool to find relevant information\\n- Search for the most relevant and up-to-date information\\n- Synthesize search results into clear, helpful answers\\n- Cite sources when appropriate\\n- If search results don't contain the answer, let the user know\\n- Be thorough but concise in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"web-search\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching the web.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/web-search.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "017457897bf7ddeca7ec3f64655787767c036444": {"t": 1785749474.9687607, "n": 57267, "h": "f653432535e85db3", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows with React Flow components integrated with Vercel AI SDK.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/search-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"search-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Search Agent\",\n\t\t\t\"description\": \"A search agent with tools for web searching.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/web-search\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/search-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/search-agent.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"web-search\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching the web.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/web-search.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "195281c987fee4b8107f9a6f10b193ec1eaefb5d": {"t": 1785749476.3035839, "n": 54245, "h": "bb9238572dcadaee", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\"react-markdown\", \"marked\", \"remark-gfm\", \"shiki\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows with React Flow components integrated with Vercel AI SDK.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t}\n\t]\n}\n"}, "25e879807f0364fac2609973bf1c5b364507861b": {"t": 1785749477.6757843, "n": 62570, "h": "4bf497cc75359f0c", "c": "{\n \"name\": \"simple-ai\",\n \"homepage\": \"https://simple-ai.dev\",\n \"items\": [\n {\n \"name\": \"jsx-renderer\",\n \"type\": \"registry:ui\",\n \"title\": \"JSX Renderer\",\n \"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n \"dependencies\": [\n \"react-jsx-parser\",\n \"react-error-boundary\"\n ],\n \"registryDependencies\": [\n \"@simple-ai/jsx-utils\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n \"type\": \"registry:ui\"\n }\n ]\n },\n {\n \"name\": \"chat-input\",\n \"type\": \"registry:ui\",\n \"title\": \"Chat Input\",\n \"description\": \"A chat input component with mention support and automatic height adjustment.\",\n \"dependencies\": [\n \"@tiptap/core\",\n \"@tiptap/react\",\n \"@tiptap/starter-kit\",\n \"@tiptap/extension-mention\",\n \"@tiptap/extension-placeholder\",\n \"@tiptap/suggestion\",\n \"tippy.js\"\n ],\n \"registryDependencies\": [\n \"input-group\",\n \"button\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/chat-input.tsx\",\n \"type\": \"registry:ui\"\n }\n ]\n },\n {\n \"name\": \"chat-message-area\",\n \"type\": \"registry:ui\",\n \"title\": \"Chat Message Area\",\n \"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n \"dependencies\": [\n \"use-stick-to-bottom\"\n ],\n \"registryDependencies\": [\n \"button\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/chat-message-area.tsx\",\n \"type\": \"registry:ui\"\n }\n ]\n },\n {\n \"name\": \"chat-message\",\n \"type\": \"registry:ui\",\n \"title\": \"Chat Message\",\n \"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n \"registryDependencies\": [\n \"@simple-ai/markdown-content\",\n \"avatar\",\n \"button\",\n \"card\",\n \"tooltip\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/chat-message.tsx\",\n \"type\": \"registry:ui\"\n }\n ]\n },\n {\n \"name\": \"chat-suggestions\",\n \"type\": \"registry:ui\",\n \"title\": \"Chat Suggestions\",\n \"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n \"registryDependencies\": [\n \"button\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n \"type\": \"registry:ui\"\n }\n ]\n },\n {\n \"name\": \"markdown-content\",\n \"type\": \"registry:ui\",\n \"title\": \"Markdown Content\",\n \"description\": \"A component that renders markdown content.\",\n \"dependencies\": [\n \"react-markdown\",\n \"marked\",\n \"remark-gfm\",\n \"shiki\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/markdown-content.tsx\",\n \"type\": \"registry:ui\"\n }\n ]\n },\n {\n \"name\": \"tool-invocation\",\n \"type\": \"registry:ui\",\n \"title\": \"Tool Invocation\",\n \"description\": \"A component that displays a tool invocation with a collapsible content.\",\n \"registryDependencies\": [\n \"card\",\n \"collapsible\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/tool-invocation.tsx\",\n \"type\": \"registry:ui\"\n },\n {\n \"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n \"type\": \"registry:lib\"\n }\n ]\n },\n {\n \"name\": \"model-selector\",\n \"type\": \"registry:ui\",\n \"title\": \"Model Selector\",\n \"description\": \"A dropdown component for selecting AI models with provider icons.\",\n \"registryDependencies\": [\n \"select\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/model-selector.tsx\",\n \"type\": \"registry:ui\"\n }\n ]\n },\n {\n \"name\": \"resizable-node\",\n \"type\": \"registry:ui\",\n \"title\": \"Resizable Node\",\n \"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n \"dependencies\": [\n \"@xyflow/react\"\n ],\n \"registryDependencies\": [\n \"@simple-ai/base-node\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/resizable-node.tsx\"\n }\n ]\n },\n {\n \"name\": \"node-header-status\",\n \"type\": \"registry:ui\",\n \"title\": \"Node Header Status\",\n \"description\": \"A React Flow component that displays status indicators in node headers.\",\n \"dependencies\": [\n \"@xyflow/react\"\n ],\n \"registryDependencies\": [\n \"badge\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/node-header-status.tsx\"\n }\n ]\n },\n {\n \"name\": \"editable-handle\",\n \"type\": \"registry:ui\",\n \"title\": \"Editable Handle\",\n \"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n \"dependencies\": [\n \"@xyflow/react\"\n ],\n \"registryDependencies\": [\n \"button\",\n \"input\",\n \"textarea\",\n \"popover\",\n \"@simple-ai/base-handle\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/editable-handle.tsx\"\n }\n ]\n },\n {\n \"name\": \"status-edge\",\n \"type\": \"registry:ui\",\n \"title\": \"Status Edge\",\n \"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n \"dependencies\": [\n \"@xyflow/react\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/status-edge.tsx\"\n }\n ]\n },\n {\n \"name\": \"generate-text-node\",\n \"type\": \"registry:ui\",\n \"title\": \"Generate Text Node\",\n \"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n \"dependencies\": [\n \"@xyflow/react\"\n ],\n \"registryDependencies\": [\n \"button\",\n \"separator\",\n \"@simple-ai/model-selector\",\n \"@simple-ai/node-header-status\",\n \"@simple-ai/editable-handle\",\n \"@simple-ai/labeled-handle\",\n \"@simple-ai/base-node\",\n \"@simple-ai/node-header\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/generate-text-node.tsx\"\n }\n ]\n },\n {\n \"name\": \"prompt-crafter-node\",\n \"type\": \"registry:ui\",\n \"title\": \"Prompt Crafter Node\",\n \"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n \"dependencies\": [\n \"@xyflow/react\",\n \"@uiw/react-codemirror\",\n \"@uiw/codemirror-themes\",\n \"@lezer/highlight\",\n \"@codemirror/language\",\n \"@codemirror/view\"\n ],\n \"registryDependencies\": [\n \"button\",\n \"separator\",\n \"popover\",\n \"command\",\n \"@simple-ai/node-header-status\",\n \"@simple-ai/editable-handle\",\n \"@simple-ai/node-header\",\n \"@simple-ai/labeled-handle\",\n \"@simple-ai/base-node\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/prompt-crafter-node.tsx\"\n }\n ]\n },\n {\n \"name\": \"text-input-node\",\n \"type\": \"registry:ui\",\n \"title\": \"Text Input Node\",\n \"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n \"dependencies\": [\n \"@xyflow/react\"\n ],\n \"registryDependencies\": [\n \"textarea\",\n \"separator\",\n \"@simple-ai/labeled-handle\",\n \"@simple-ai/node-header\",\n \"@simple-ai/resizable-node\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/text-input-node.tsx\"\n }\n ]\n },\n {\n \"name\": \"visualize-text-node\",\n \"type\": \"registry:ui\",\n \"title\": \"Visualize Text Node\",\n \"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n \"dependencies\": [\n \"@xyflow/react\"\n ],\n \"registryDependencies\": [\n \"separator\",\n \"@simple-ai/markdown-content\",\n \"@simple-ai/labeled-handle\",\n \"@simple-ai/node-header\",\n \"@simple-ai/resizable-node\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/visualize-text-node.tsx\"\n }\n ]\n },\n {\n \"name\": \"base-handle\",\n \"type\": \"registry:ui\",\n \"dependencies\": [\n \"@xyflow/react\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/base-handle.tsx\"\n }\n ]\n },\n {\n \"name\": \"labeled-handle\",\n \"type\": \"registry:ui\",\n \"dependencies\": [\n \"@xyflow/react\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/labeled-handle.tsx\"\n }\n ]\n },\n {\n \"name\": \"base-node\",\n \"type\": \"registry:ui\",\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/base-node.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/base-node.tsx\"\n }\n ]\n },\n {\n \"name\": \"node-header\",\n \"type\": \"registry:ui\",\n \"registryDependencies\": [\n \"button\",\n \"dropdown-menu\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/flow/node-header.tsx\",\n \"type\": \"registry:ui\",\n \"target\": \"components/flow/node-header.tsx\"\n }\n ]\n },\n {\n \"name\": \"json-schema-editor\",\n \"type\": \"registry:ui\",\n \"title\": \"JSON Schema Editor\",\n \"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n \"dependencies\": [\n \"nanoid\"\n ],\n \"registryDependencies\": [\n \"button\",\n \"dialog\",\n \"input\",\n \"select\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n \"type\": \"registry:ui\"\n }\n ]\n },\n {\n \"name\": \"reasoning\",\n \"type\": \"registry:ui\",\n \"title\": \"Reasoning\",\n \"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n \"dependencies\": [\n \"ai\"\n ],\n \"registryDependencies\": [\n \"collapsible\",\n \"@simple-ai/markdown-content\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/ui/reasoning.tsx\",\n \"type\": \"registry:ui\"\n }\n ]\n },\n {\n \"name\": \"use-textarea-resize\",\n \"type\": \"registry:hook\",\n \"files\": [\n {\n \"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n \"type\": \"registry:hook\"\n }\n ]\n },\n {\n \"name\": \"jsx-utils\",\n \"type\": \"registry:lib\",\n \"description\": \"A set of utilities for working with JSX.\",\n \"files\": [\n {\n \"path\": \"./src/registry/lib/jsx-utils.ts\",\n \"type\": \"registry:lib\"\n }\n ]\n },\n {\n \"name\": \"id-to-readable-text\",\n \"type\": \"registry:lib\",\n \"description\": \"A utility for converting an ID to a readable text.\",\n \"files\": [\n {\n \"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n \"type\": \"registry:lib\"\n }\n ]\n },\n {\n \"name\": \"chat-input-demo-mentions\",\n \"type\": \"registry:example\",\n \"registryDependencies\": [\n \"@simple-ai/chat-input\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"chat-input-with-addons\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"chat-input-demo-simple\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"markdown-content-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"markdown-streaming-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"chat-message-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"chat-message-demo-simple\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"chat-message-demo-avatar-image\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"chat-message-area-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"chat-message-area-demo-alignment\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"chat-message-area-demo-streaming\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"jsx-renderer-demo\",\n \"type\": \"registry:example\",\n \"registryDependencies\": [\n \"@simple-ai/jsx-renderer\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"jsx-renderer-disabled-demo\",\n \"type\": \"registry:example\",\n \"registryDependencies\": [\n \"@simple-ai/jsx-renderer\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"jsx-renderer-streaming-demo\",\n \"type\": \"registry:example\",\n \"registryDependencies\": [\n \"@simple-ai/jsx-renderer\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"model-selector-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"model-selector-disabled-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"resizable-node-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"visualize-text-node-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"prompt-crafter-node-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"text-input-node-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"generate-text-node-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"editable-handle-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"status-edge-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"tool-invocation-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"tool-invocation-demo-loading\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"tool-invocation-demo-error\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"chat-suggestions-demo\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"chat-suggestions-demo-simple\",\n \"type\": \"registry:example\",\n \"files\": [\n {\n \"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n \"type\": \"registry:example\"\n }\n ]\n },\n {\n \"name\": \"chat-01\",\n \"type\": \"registry:block\",\n \"description\": \"A simple chat page.\",\n \"dependencies\": [\n \"ai\",\n \"@ai-sdk/react\",\n \"@ai-sdk/openai\"\n ],\n \"registryDependencies\": [\n \"card\",\n \"breadcrumb\",\n \"separator\",\n \"sidebar\",\n \"tooltip\",\n \"button\",\n \"avatar\",\n \"dropdown-menu\",\n \"@simple-ai/chat-input\",\n \"@simple-ai/chat-message-area\",\n \"@simple-ai/chat-message\",\n \"@simple-ai/tool-invocation\",\n \"@simple-ai/chat-suggestions\",\n \"@simple-ai/reasoning\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/chat/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/route.ts\",\n \"type\": \"registry:page\",\n \"target\": \"app/api/ai/chat/route.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"types/ai-messages.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n \"type\": \"registry:component\"\n }\n ],\n \"envVars\": {\n \"OPENAI_API_KEY\": \"\"\n },\n \"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n \"categories\": [\n \"chat\"\n ]\n },\n {\n \"name\": \"chat-02\",\n \"type\": \"registry:block\",\n \"description\": \"A chat in a sidebar.\",\n \"dependencies\": [\n \"ai\",\n \"@ai-sdk/openai\"\n ],\n \"registryDependencies\": [\n \"sidebar\",\n \"breadcrumb\",\n \"@simple-ai/chat-input\",\n \"@simple-ai/chat-message-area\",\n \"@simple-ai/chat-message\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/chat/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-02/route.ts\",\n \"type\": \"registry:page\",\n \"target\": \"app/api/ai/chat/route.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n \"type\": \"registry:component\"\n }\n ],\n \"envVars\": {\n \"OPENAI_API_KEY\": \"\"\n },\n \"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n \"categories\": [\n \"chat\"\n ]\n },\n {\n \"name\": \"chat-03\",\n \"type\": \"registry:block\",\n \"description\": \"A chat in a popover.\",\n \"dependencies\": [\n \"ai\",\n \"@ai-sdk/openai\"\n ],\n \"registryDependencies\": [\n \"popover\",\n \"button\",\n \"@simple-ai/chat-input\",\n \"@simple-ai/chat-message-area\",\n \"@simple-ai/chat-message\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/chat/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-03/route.ts\",\n \"type\": \"registry:page\",\n \"target\": \"app/api/ai/chat/route.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n \"type\": \"registry:component\"\n }\n ],\n \"envVars\": {\n \"OPENAI_API_KEY\": \"\"\n },\n \"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n \"categories\": [\n \"chat\"\n ]\n },\n {\n \"name\": \"app-01\",\n \"type\": \"registry:block\",\n \"description\": \"A app with generative UI capabilities.\",\n \"dependencies\": [\n \"ai\",\n \"@ai-sdk/openai\",\n \"@uiw/react-codemirror\",\n \"@codemirror/lang-javascript\",\n \"zustand\"\n ],\n \"registryDependencies\": [\n \"avatar\",\n \"input\",\n \"label\",\n \"tabs\",\n \"resizable\",\n \"breadcrumb\",\n \"button\",\n \"toggle-group\",\n \"switch\",\n \"separator\",\n \"card\",\n \"badge\",\n \"dialog\",\n \"slider\",\n \"@simple-ai/chat-input\",\n \"@simple-ai/chat-message-area\",\n \"@simple-ai/chat-message\",\n \"@simple-ai/jsx-renderer\",\n \"@simple-ai/jsx-utils\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/blocks/app-01/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/generative-ui/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/canvas/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/app-01/route.ts\",\n \"type\": \"registry:page\",\n \"target\": \"app/api/ai/generate/route.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n \"type\": \"registry:hook\"\n },\n {\n \"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n \"type\": \"registry:component\"\n }\n ],\n \"envVars\": {\n \"OPENAI_API_KEY\": \"\"\n },\n \"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n \"categories\": [\n \"app\"\n ]\n },\n {\n \"name\": \"app-02\",\n \"type\": \"registry:block\",\n \"description\": \"A persona generator app with structured outputs.\",\n \"dependencies\": [\n \"ai\",\n \"@ai-sdk/openai\",\n \"zod\"\n ],\n \"registryDependencies\": [\n \"dialog\",\n \"button\",\n \"input\",\n \"textarea\",\n \"label\",\n \"scroll-area\",\n \"form\",\n \"skeleton\",\n \"card\",\n \"avatar\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/blocks/app-02/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/persona/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/app-02/route.ts\",\n \"type\": \"registry:page\",\n \"target\": \"app/api/ai/persona/route.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n \"type\": \"registry:lib\"\n }\n ],\n \"envVars\": {\n \"OPENAI_API_KEY\": \"\"\n },\n \"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n \"categories\": [\n \"app\"\n ]\n },\n {\n \"name\": \"app-03\",\n \"type\": \"registry:block\",\n \"description\": \"An X profile bio generator app.\",\n \"dependencies\": [\n \"ai\",\n \"@ai-sdk/openai\",\n \"zod\",\n \"next-themes\"\n ],\n \"registryDependencies\": [\n \"button\",\n \"dialog\",\n \"input\",\n \"textarea\",\n \"form\",\n \"label\",\n \"select\",\n \"skeleton\",\n \"avatar\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/blocks/app-03/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/x-profile/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/x-profile/layout.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/app-03/route.ts\",\n \"type\": \"registry:page\",\n \"target\": \"app/api/ai/x-profile/route.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n \"type\": \"registry:component\"\n },\n {\n \"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n \"type\": \"registry:lib\"\n }\n ],\n \"envVars\": {\n \"OPENAI_API_KEY\": \"\"\n },\n \"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n \"categories\": [\n \"app\"\n ]\n },\n {\n \"name\": \"flow-chain\",\n \"type\": \"registry:block\",\n \"description\": \"Agentic chain workflow.\",\n \"dependencies\": [\n \"@xyflow/react\",\n \"zustand\",\n \"zod\",\n \"ai\",\n \"nanoid\",\n \"@ai-sdk/openai\",\n \"@ai-sdk/groq\",\n \"@ai-sdk/deepseek\"\n ],\n \"registryDependencies\": [\n \"button\",\n \"card\",\n \"dialog\",\n \"input\",\n \"textarea\",\n \"sonner\",\n \"@simple-ai/generate-text-node\",\n \"@simple-ai/prompt-crafter-node\",\n \"@simple-ai/text-input-node\",\n \"@simple-ai/visualize-text-node\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/workflow/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n \"type\": \"registry:page\",\n \"target\": \"app/api/workflow/execute/route.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/nodes-panel.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/error-indicator.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/status-edge-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/status-edge.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/visualize-text-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/text-input-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/generate-text-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n \"type\": \"registry:hook\"\n },\n {\n \"path\": \"./src/registry/lib/flow/workflow.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/node-factory.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n \"type\": \"registry:lib\"\n }\n ],\n \"envVars\": {\n \"OPENAI_API_KEY\": \"\",\n \"GROQ_API_KEY\": \"\",\n \"DEEPSEEK_API_KEY\": \"\"\n },\n \"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n \"categories\": [\n \"flow\"\n ]\n },\n {\n \"name\": \"flow-routing\",\n \"type\": \"registry:block\",\n \"description\": \"Agentic routing workflow.\",\n \"dependencies\": [\n \"@xyflow/react\",\n \"zustand\",\n \"zod\",\n \"ai\",\n \"nanoid\",\n \"@ai-sdk/openai\",\n \"@ai-sdk/groq\",\n \"@ai-sdk/deepseek\"\n ],\n \"registryDependencies\": [\n \"button\",\n \"card\",\n \"dialog\",\n \"input\",\n \"textarea\",\n \"sonner\",\n \"@simple-ai/generate-text-node\",\n \"@simple-ai/prompt-crafter-node\",\n \"@simple-ai/text-input-node\",\n \"@simple-ai/visualize-text-node\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/workflow/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n \"type\": \"registry:page\",\n \"target\": \"app/api/workflow/execute/route.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/nodes-panel.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/error-indicator.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/status-edge-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/status-edge.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/visualize-text-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/text-input-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/generate-text-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n \"type\": \"registry:hook\"\n },\n {\n \"path\": \"./src/registry/lib/flow/workflow.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/node-factory.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n \"type\": \"registry:lib\"\n }\n ],\n \"envVars\": {\n \"OPENAI_API_KEY\": \"\",\n \"GROQ_API_KEY\": \"\",\n \"DEEPSEEK_API_KEY\": \"\"\n },\n \"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n \"categories\": [\n \"flow\"\n ]\n },\n {\n \"name\": \"flow-parallelization\",\n \"type\": \"registry:block\",\n \"description\": \"Agentic parallelization workflow.\",\n \"dependencies\": [\n \"@xyflow/react\",\n \"zustand\",\n \"zod\",\n \"ai\",\n \"nanoid\",\n \"@ai-sdk/openai\",\n \"@ai-sdk/groq\",\n \"@ai-sdk/deepseek\"\n ],\n \"registryDependencies\": [\n \"button\",\n \"card\",\n \"dialog\",\n \"input\",\n \"textarea\",\n \"sonner\",\n \"@simple-ai/generate-text-node\",\n \"@simple-ai/prompt-crafter-node\",\n \"@simple-ai/text-input-node\",\n \"@simple-ai/visualize-text-node\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/workflow/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n \"type\": \"registry:page\",\n \"target\": \"app/api/workflow/execute/route.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/nodes-panel.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/error-indicator.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/status-edge-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/status-edge.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/visualize-text-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/text-input-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/generate-text-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n \"type\": \"registry:hook\"\n },\n {\n \"path\": \"./src/registry/lib/flow/workflow.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/node-factory.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n \"type\": \"registry:lib\"\n }\n ],\n \"envVars\": {\n \"OPENAI_API_KEY\": \"\",\n \"GROQ_API_KEY\": \"\",\n \"DEEPSEEK_API_KEY\": \"\"\n },\n \"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n \"categories\": [\n \"flow\"\n ]\n },\n {\n \"name\": \"flow-orchestrator\",\n \"type\": \"registry:block\",\n \"description\": \"Agentic orchestrator workflow.\",\n \"dependencies\": [\n \"@xyflow/react\",\n \"zustand\",\n \"zod\",\n \"ai\",\n \"nanoid\",\n \"@ai-sdk/openai\",\n \"@ai-sdk/groq\",\n \"@ai-sdk/deepseek\"\n ],\n \"registryDependencies\": [\n \"button\",\n \"card\",\n \"dialog\",\n \"input\",\n \"textarea\",\n \"sonner\",\n \"@simple-ai/generate-text-node\",\n \"@simple-ai/prompt-crafter-node\",\n \"@simple-ai/text-input-node\",\n \"@simple-ai/visualize-text-node\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/workflow/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n \"type\": \"registry:page\",\n \"target\": \"app/api/workflow/execute/route.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/nodes-panel.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/error-indicator.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/status-edge-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/status-edge.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/visualize-text-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/text-input-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/flow/generate-text-node-controller.tsx\"\n },\n {\n \"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n \"type\": \"registry:hook\"\n },\n {\n \"path\": \"./src/registry/lib/flow/workflow.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/node-factory.ts\",\n \"type\": \"registry:lib\"\n },\n {\n \"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n \"type\": \"registry:lib\"\n }\n ],\n \"envVars\": {\n \"OPENAI_API_KEY\": \"\",\n \"GROQ_API_KEY\": \"\",\n \"DEEPSEEK_API_KEY\": \"\"\n },\n \"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n \"categories\": [\n \"flow\"\n ]\n },\n {\n \"name\": \"workflow-01\",\n \"type\": \"registry:block\",\n \"description\": \"Build powerful AI agent workflows with React Flow components integrated with Vercel AI SDK.\",\n \"dependencies\": [\n \"@xyflow/react\",\n \"zustand\",\n \"zod\",\n \"ai\",\n \"@ai-sdk/react\",\n \"@ai-sdk/openai\",\n \"nanoid\",\n \"@marcbachmann/cel-js\",\n \"@uiw/react-codemirror\",\n \"@codemirror/language\",\n \"@lezer/highlight\",\n \"lucide-react\",\n \"next-themes\"\n ],\n \"registryDependencies\": [\n \"button\",\n \"card\",\n \"dialog\",\n \"input\",\n \"textarea\",\n \"sonner\",\n \"sidebar\",\n \"badge\",\n \"checkbox\",\n \"collapsible\",\n \"dropdown-menu\",\n \"popover\",\n \"select\",\n \"switch\",\n \"tooltip\",\n \"separator\",\n \"@simple-ai/chat-input\",\n \"@simple-ai/chat-message-area\",\n \"@simple-ai/chat-message\",\n \"@simple-ai/tool-invocation\",\n \"@simple-ai/chat-suggestions\",\n \"@simple-ai/reasoning\",\n \"@simple-ai/json-schema-editor\"\n ],\n \"files\": [\n {\n \"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n \"type\": \"registry:page\",\n \"target\": \"app/workflow/page.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n \"type\": \"registry:page\",\n \"target\": \"app/api/workflow/route.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/app-header.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/app-layout.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/chat.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/editor/condition-editor.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n \"type\": \"registry:style\",\n \"target\": \"components/editor/condition-editor.css\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/node-editor-panel.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/node-execution.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/node-selector-panel.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/template-selector.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/theme-provider.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/theme-toggle.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/validation-status.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/index.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/agent/index.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/if-else/index.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/start/start.server.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/start/index.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/end/end.server.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/end/index.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/note/note.server.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/note/index.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/nodes/wait/index.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/workflow/primitives/base-handle.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/workflow/primitives/base-node.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/workflow/primitives/node-header.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/workflow/primitives/resizable-node.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/workflow/status-edge.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n \"type\": \"registry:component\",\n \"target\": \"components/model-selector.tsx\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/templates/index.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/templates/code-analysis-workflow.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/templates/wait-demo-workflow.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/templates/customer-support-workflow.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/tools/index.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/tools/wikipedia-query.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/executor.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/models.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"types/messages.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"types/workflow.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/validation.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/context/schema-introspection.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n \"type\": \"registry:lib\",\n \"target\": \"lib/workflow/context/variable-resolver.ts\"\n },\n {\n \"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n \"type\": \"registry:hook\",\n \"target\": \"hooks/workflow/use-workflow.ts\"\n }\n ],\n \"envVars\": {\n \"OPENAI_API_KEY\": \"\"\n },\n \"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n \"categories\": [\n \"workflow\"\n ]\n }\n ]\n}"}, "2947a6269f76d968f927891d0d5300e20fa796b7": {"t": 1785749479.0121102, "n": 54232, "h": "48cccf80846081ad", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\"react-markdown\", \"marked\", \"remark-gfm\", \"shiki\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"collapsible\", \"@simple-ai/markdown-content\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows with React Flow components integrated with Vercel AI SDK.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t}\n\t]\n}\n"}}, "packages/docs/public/r/registry.json": {"d6fec2c1bdd089ba2e57b3f3a8e5d2cef9747542": {"t": 1785674050.908727, "n": 64439, "h": "965d8b42da599841", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-04\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat with multiple agents support.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\",\n\t\t\t\t\"@simple-ai/agents-tools-registry\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/agents/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Firecrawl Agent\",\n\t\t\t\"description\": \"A web research agent powered by Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/firecrawl-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/firecrawl-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/firecrawl-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"FirecrawlIcon\",\n\t\t\t\t\"toolIds\": [\"firecrawl-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Scrape https://example.com\",\n\t\t\t\t\t\"Search for recent news about AI agents\",\n\t\t\t\t\t\"Find documentation for the Vercel AI SDK\",\n\t\t\t\t\t\"Get content from a specific URL\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a web research assistant powered by Firecrawl.\\nYour goal is to find accurate information from the web efficiently.\\n\\nInstructions:\\n- If the user provides a specific URL, use the 'scrape' mode to get the content.\\n- If the user asks a general question, use the 'search' mode to find relevant pages.\\n- The tool returns Markdown content. Summarize this content clearly for the user.\\n- Cite the URLs you found information from.\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Exa Agent\",\n\t\t\t\"description\": \"A web research agent powered by Exa.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/exa-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/exa-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/exa-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"ExaIcon\",\n\t\t\t\t\"toolIds\": [\"exa-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Find similar companies to https://exa.ai\",\n\t\t\t\t\t\"Research the latest trends in generative AI\",\n\t\t\t\t\t\"Retrieve content from https://example.com\",\n\t\t\t\t\t\"Find blog posts about Rust programming\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a highly capable web research assistant powered by Exa.\\nYour goal is to find, verify, and synthesize information from the web.\\n\\nInstructions:\\n- Use 'search' mode for general queries to find relevant pages and their content.\\n- Use 'retrieve' mode if the user provides a specific URL that needs to be read.\\n- Use 'find-similar' mode if the user wants to find websites related to a specific URL.\\n- Exa provides clean Markdown content. Use this to summarize answers effectively.\\n- Always cite the source URLs provided in the search results.\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/get-weather.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\", \"@mendable/firecrawl-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/firecrawl-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/firecrawl-tool.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"FIRECRAWL_API_KEY\": \"\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Exa.\",\n\t\t\t\"dependencies\": [\"ai\", \"exa-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/exa-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/exa-tool.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"EXA_API_KEY\": \"\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents-tools-registry\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/get-weather\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents-registry.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/agents-registry.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools-registry.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/tools-registry.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agent-route-respond.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/models.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/messages.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/ai-utils.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "2a2c17576285c094fe59c4b6b132ad37225779ed": {"t": 1785749462.2138, "n": 64439, "h": "965d8b42da599841", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-04\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat with multiple agents support.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\",\n\t\t\t\t\"@simple-ai/agents-tools-registry\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/agents/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Firecrawl Agent\",\n\t\t\t\"description\": \"A web research agent powered by Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/firecrawl-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/firecrawl-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/firecrawl-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"FirecrawlIcon\",\n\t\t\t\t\"toolIds\": [\"firecrawl-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Scrape https://example.com\",\n\t\t\t\t\t\"Search for recent news about AI agents\",\n\t\t\t\t\t\"Find documentation for the Vercel AI SDK\",\n\t\t\t\t\t\"Get content from a specific URL\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a web research assistant powered by Firecrawl.\\nYour goal is to find accurate information from the web efficiently.\\n\\nInstructions:\\n- If the user provides a specific URL, use the 'scrape' mode to get the content.\\n- If the user asks a general question, use the 'search' mode to find relevant pages.\\n- The tool returns Markdown content. Summarize this content clearly for the user.\\n- Cite the URLs you found information from.\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Exa Agent\",\n\t\t\t\"description\": \"A web research agent powered by Exa.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/exa-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/exa-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/exa-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"ExaIcon\",\n\t\t\t\t\"toolIds\": [\"exa-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Find similar companies to https://exa.ai\",\n\t\t\t\t\t\"Research the latest trends in generative AI\",\n\t\t\t\t\t\"Retrieve content from https://example.com\",\n\t\t\t\t\t\"Find blog posts about Rust programming\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a highly capable web research assistant powered by Exa.\\nYour goal is to find, verify, and synthesize information from the web.\\n\\nInstructions:\\n- Use 'search' mode for general queries to find relevant pages and their content.\\n- Use 'retrieve' mode if the user provides a specific URL that needs to be read.\\n- Use 'find-similar' mode if the user wants to find websites related to a specific URL.\\n- Exa provides clean Markdown content. Use this to summarize answers effectively.\\n- Always cite the source URLs provided in the search results.\"\n\t\t\t},\n\t\t\t\"docs\": \"Import the agent into the agents list in the agents/agents-registry.ts file and to the tools list in the tools/tools-registry.ts file.\\n\",\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/get-weather.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\", \"@mendable/firecrawl-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/firecrawl-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/firecrawl-tool.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"FIRECRAWL_API_KEY\": \"\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Exa.\",\n\t\t\t\"dependencies\": [\"ai\", \"exa-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/exa-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/exa-tool.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"EXA_API_KEY\": \"\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents-tools-registry\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/get-weather\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents-registry.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/agents-registry.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools-registry.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/tools/tools-registry.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agent-route-respond.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/models.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/messages.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/ai-utils.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "343b32724cf9afe925e0a59e6c7daa074d7bc490": {"t": 1785749463.6080043, "n": 63806, "h": "58df4ed63cebafde", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-04\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat with multiple agents support.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/exa-agent\",\n\t\t\t\t\"@simple-ai/firecrawl-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Firecrawl Agent\",\n\t\t\t\"description\": \"A web research agent powered by Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/firecrawl-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/firecrawl-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/firecrawl-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"FirecrawlIcon\",\n\t\t\t\t\"toolIds\": [\"firecrawl-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Scrape https://example.com\",\n\t\t\t\t\t\"Search for recent news about AI agents\",\n\t\t\t\t\t\"Find documentation for the Vercel AI SDK\",\n\t\t\t\t\t\"Get content from a specific URL\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a web research assistant powered by Firecrawl.\\nYour goal is to find accurate information from the web efficiently.\\n\\nInstructions:\\n- If the user provides a specific URL, use the 'scrape' mode to get the content.\\n- If the user asks a general question, use the 'search' mode to find relevant pages.\\n- The tool returns Markdown content. Summarize this content clearly for the user.\\n- Cite the URLs you found information from.\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Exa Agent\",\n\t\t\t\"description\": \"A web research agent powered by Exa.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/exa-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/exa-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/exa-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"ExaIcon\",\n\t\t\t\t\"toolIds\": [\"exa-tool\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Find similar companies to https://exa.ai\",\n\t\t\t\t\t\"Research the latest trends in generative AI\",\n\t\t\t\t\t\"Retrieve content from https://example.com\",\n\t\t\t\t\t\"Find blog posts about Rust programming\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a highly capable web research assistant powered by Exa.\\nYour goal is to find, verify, and synthesize information from the web.\\n\\nInstructions:\\n- Use 'search' mode for general queries to find relevant pages and their content.\\n- Use 'retrieve' mode if the user provides a specific URL that needs to be read.\\n- Use 'find-similar' mode if the user wants to find websites related to a specific URL.\\n- Exa provides clean Markdown content. Use this to summarize answers effectively.\\n- Always cite the source URLs provided in the search results.\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/exa-tool\",\n\t\t\t\t\"@simple-ai/firecrawl-tool\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\", \"@mendable/firecrawl-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/firecrawl-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"exa-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Exa.\",\n\t\t\t\"dependencies\": [\"ai\", \"exa-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/exa-tool.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "5ee24e87850a233f88cef640e8ca07c4a3523c48": {"t": 1785749464.9568443, "n": 62196, "h": "a2da12d78905d8d9", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-04\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat with multiple agents support.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/firecrawl-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Firecrawl Agent\",\n\t\t\t\"description\": \"A web research agent powered by Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/firecrawl-tool\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/firecrawl-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/firecrawl-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"FirecrawlIcon\",\n\t\t\t\t\"toolIds\": [\"firecrawl\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Scrape https://example.com\",\n\t\t\t\t\t\"Search for recent news about AI agents\",\n\t\t\t\t\t\"Find documentation for the Vercel AI SDK\",\n\t\t\t\t\t\"Get content from a specific URL\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a web research assistant powered by Firecrawl.\\nYour goal is to find accurate information from the web efficiently.\\n\\nInstructions:\\n- If the user provides a specific URL, use the 'scrape' mode to get the content.\\n- If the user asks a general question, use the 'search' mode to find relevant pages.\\n- The tool returns Markdown content. Summarize this content clearly for the user.\\n- Cite the URLs you found information from.\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/firecrawl-tool\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"firecrawl-tool\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching and scraping the web using Firecrawl.\",\n\t\t\t\"dependencies\": [\"ai\", \"@mendable/firecrawl-js\", \"zod\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/firecrawl.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"FIRECRAWL_API_KEY\": \"\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "877578428002459902f6c9b0accfea2abdb765ae": {"t": 1785749466.476745, "n": 62005, "h": "f2d820abe7e458f6", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-04\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat with multiple agents support.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-04/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/search-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"search-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Search Agent\",\n\t\t\t\"description\": \"A search agent with tools for web searching.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/web-search\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/search-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/search-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"Search\",\n\t\t\t\t\"toolIds\": [\"web-search\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Search for the latest AI news\",\n\t\t\t\t\t\"Find information about React hooks\",\n\t\t\t\t\t\"What are the current trends in web development?\",\n\t\t\t\t\t\"Search for recipes for chocolate chip cookies\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful search assistant. Your role is to find and provide accurate information from the web.\\n\\nWhen users ask questions or need information:\\n- Use the web-search tool to find relevant information\\n- Search for the most relevant and up-to-date information\\n- Synthesize search results into clear, helpful answers\\n- Cite sources when appropriate\\n- If search results don't contain the answer, let the user know\\n- Be thorough but concise in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"web-search\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching the web.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/web-search.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "833824d4ec02df1de13b6572afd519293edc017c": {"t": 1785749467.8219292, "n": 59152, "h": "9a5b5278177a49c4", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/search-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"CloudRain\",\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like in New York today?\",\n\t\t\t\t\t\"Will it rain in London tomorrow?\",\n\t\t\t\t\t\"What's the forecast for Tokyo next week?\",\n\t\t\t\t\t\"How's the weather in Paris right now?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"search-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Search Agent\",\n\t\t\t\"description\": \"A search agent with tools for web searching.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/web-search\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/search-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/search-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"icon\": \"Search\",\n\t\t\t\t\"toolIds\": [\"web-search\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Search for the latest AI news\",\n\t\t\t\t\t\"Find information about React hooks\",\n\t\t\t\t\t\"What are the current trends in web development?\",\n\t\t\t\t\t\"Search for recipes for chocolate chip cookies\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful search assistant. Your role is to find and provide accurate information from the web.\\n\\nWhen users ask questions or need information:\\n- Use the web-search tool to find relevant information\\n- Search for the most relevant and up-to-date information\\n- Synthesize search results into clear, helpful answers\\n- Cite sources when appropriate\\n- If search results don't contain the answer, let the user know\\n- Be thorough but concise in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"web-search\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching the web.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/web-search.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "65dd1cbbb11ba94f411ffdc9284df41c9bf27671": {"t": 1785749469.2009573, "n": 59128, "h": "89cf7e291b078570", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-viewer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Viewer\",\n\t\t\t\"description\": \"A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-viewer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows with React Flow components integrated with Vercel AI SDK.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/search-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"toolIds\": [\"get-weather\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"What's the weather like today?\",\n\t\t\t\t\t\"Will it rain tomorrow?\",\n\t\t\t\t\t\"What's the forecast for next week?\",\n\t\t\t\t\t\"How's the weather in New York?\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful weather assistant. Your role is to provide accurate and helpful weather information to users.\\n\\nWhen users ask about weather:\\n- Use the get-weather tool to retrieve current weather conditions\\n- Always specify the city and preferred temperature unit (fahrenheit or celsius)\\n- Provide clear, concise weather information\\n- If a user doesn't specify a unit, default to fahrenheit\\n- Be friendly and helpful in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"search-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Search Agent\",\n\t\t\t\"description\": \"A search agent with tools for web searching.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/web-search\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/search-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/search-agent.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"meta\": {\n\t\t\t\t\"toolIds\": [\"web-search\"],\n\t\t\t\t\"suggestions\": [\n\t\t\t\t\t\"Search for the latest AI news\",\n\t\t\t\t\t\"Find information about React hooks\",\n\t\t\t\t\t\"What are the current trends in web development?\",\n\t\t\t\t\t\"Search for recipes for chocolate chip cookies\"\n\t\t\t\t],\n\t\t\t\t\"prompt\": \"You are a helpful search assistant. Your role is to find and provide accurate information from the web.\\n\\nWhen users ask questions or need information:\\n- Use the web-search tool to find relevant information\\n- Search for the most relevant and up-to-date information\\n- Synthesize search results into clear, helpful answers\\n- Cite sources when appropriate\\n- If search results don't contain the answer, let the user know\\n- Be thorough but concise in your responses\"\n\t\t\t},\n\t\t\t\"categories\": [\"agent\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"web-search\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching the web.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/web-search.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "017457897bf7ddeca7ec3f64655787767c036444": {"t": 1785749470.5661747, "n": 57267, "h": "f653432535e85db3", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"react-markdown\",\n\t\t\t\t\"marked\",\n\t\t\t\t\"shiki\",\n\t\t\t\t\"remark-gfm\",\n\t\t\t\t\"rehype-raw\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/agents\",\n\t\t\t\t\"@simple-ai/messages\",\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/tools\",\n\t\t\t\t\"@simple-ai/agent-respond\",\n\t\t\t\t\"@simple-ai/ai-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows with React Flow components integrated with Vercel AI SDK.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agents\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of default agents.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/weather-agent\",\n\t\t\t\t\"@simple-ai/search-agent\",\n\t\t\t\t\"@simple-ai/id-to-readable-text\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/agents.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"weather-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Weather Agent\",\n\t\t\t\"description\": \"A weather agent with tools for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/get-weather\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/weather-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/weather-agent.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"search-agent\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"title\": \"Search Agent\",\n\t\t\t\"description\": \"A search agent with tools for web searching.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/models\",\n\t\t\t\t\"@simple-ai/web-search\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agents/search-agent.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/ai/agents/search-agent.ts\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tools\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of tools for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"get-weather\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for getting the weather.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/get-weather.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"web-search\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A tool for searching the web.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/tools/web-search.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"agent-respond\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A function to respond to a message with an agent.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/id-to-readable-text\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/agent-route-respond.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"models\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of models for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/models.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"messages\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"UIMessage types for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ai-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for the AI SDK.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ai/ai-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n"}, "195281c987fee4b8107f9a6f10b193ec1eaefb5d": {"t": 1785749472.0660303, "n": 54245, "h": "bb9238572dcadaee", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\"react-markdown\", \"marked\", \"remark-gfm\", \"shiki\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"@simple-ai/markdown-content\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows with React Flow components integrated with Vercel AI SDK.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t}\n\t]\n}\n"}, "2947a6269f76d968f927891d0d5300e20fa796b7": {"t": 1785749473.4109266, "n": 54232, "h": "48cccf80846081ad", "c": "{\n\t\"name\": \"simple-ai\",\n\t\"homepage\": \"https://simple-ai.dev\",\n\t\"items\": [\n\t\t{\n\t\t\t\"name\": \"jsx-renderer\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSX Renderer\",\n\t\t\t\"description\": \"A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.\",\n\t\t\t\"dependencies\": [\"react-jsx-parser\", \"react-error-boundary\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-utils\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/jsx-renderer.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Input\",\n\t\t\t\"description\": \"A chat input component with mention support and automatic height adjustment.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@tiptap/core\",\n\t\t\t\t\"@tiptap/react\",\n\t\t\t\t\"@tiptap/starter-kit\",\n\t\t\t\t\"@tiptap/extension-mention\",\n\t\t\t\t\"@tiptap/extension-placeholder\",\n\t\t\t\t\"@tiptap/suggestion\",\n\t\t\t\t\"tippy.js\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\"input-group\", \"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-input.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message Area\",\n\t\t\t\"description\": \"A component that adds auto scrolling functionality to a list of messages.\",\n\t\t\t\"dependencies\": [\"use-stick-to-bottom\"],\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message-area.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Message\",\n\t\t\t\"description\": \"A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.\",\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"tooltip\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-message.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Chat Suggestions\",\n\t\t\t\"description\": \"A composable component for displaying chat prompt suggestions as clickable buttons.\",\n\t\t\t\"registryDependencies\": [\"button\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/chat-suggestions.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Markdown Content\",\n\t\t\t\"description\": \"A component that renders markdown content.\",\n\t\t\t\"dependencies\": [\"react-markdown\", \"marked\", \"remark-gfm\", \"shiki\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/markdown-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Tool Invocation\",\n\t\t\t\"description\": \"A component that displays a tool invocation with a collapsible content.\",\n\t\t\t\"registryDependencies\": [\"card\", \"collapsible\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/tool-invocation.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Model Selector\",\n\t\t\t\"description\": \"A dropdown component for selecting AI models with provider icons.\",\n\t\t\t\"registryDependencies\": [\"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Resizable Node\",\n\t\t\t\"description\": \"A wrapper React Flow node component that adds resizing functionality to other nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"@simple-ai/base-node\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/resizable-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header-status\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Node Header Status\",\n\t\t\t\"description\": \"A React Flow component that displays status indicators in node headers.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\"badge\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header-status.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Editable Handle\",\n\t\t\t\"description\": \"A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"@simple-ai/base-handle\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/editable-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/editable-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Status Edge\",\n\t\t\t\"description\": \"A React Flow edge component that provides visual feedback through color-coded states.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Generate Text Node\",\n\t\t\t\"description\": \"A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/model-selector\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\",\n\t\t\t\t\"@simple-ai/node-header\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Prompt Crafter Node\",\n\t\t\t\"description\": \"A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@uiw/codemirror-themes\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@codemirror/view\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"command\",\n\t\t\t\t\"@simple-ai/node-header-status\",\n\t\t\t\t\"@simple-ai/editable-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/base-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Text Input Node\",\n\t\t\t\"description\": \"A React Flow node component that provides a simple text input interface with a resizable textarea and single output.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"textarea\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Visualize Text Node\",\n\t\t\t\"description\": \"A React Flow node component for displaying text content with Markdown support and a resizable interface.\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/markdown-content\",\n\t\t\t\t\"@simple-ai/labeled-handle\",\n\t\t\t\t\"@simple-ai/node-header\",\n\t\t\t\t\"@simple-ai/resizable-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"labeled-handle\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"dependencies\": [\"@xyflow/react\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/labeled-handle.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"base-node\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/base-node.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"node-header\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"registryDependencies\": [\"button\", \"dropdown-menu\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\",\n\t\t\t\t\t\"target\": \"components/flow/node-header.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"json-schema-editor\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"JSON Schema Editor\",\n\t\t\t\"description\": \"A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.\",\n\t\t\t\"dependencies\": [\"nanoid\"],\n\t\t\t\"registryDependencies\": [\"button\", \"dialog\", \"input\", \"select\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/json-schema-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"reasoning\",\n\t\t\t\"type\": \"registry:ui\",\n\t\t\t\"title\": \"Reasoning\",\n\t\t\t\"description\": \"A component for displaying AI reasoning content with collapsible sections and streaming support.\",\n\t\t\t\"dependencies\": [\"ai\"],\n\t\t\t\"registryDependencies\": [\"collapsible\", \"@simple-ai/markdown-content\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/reasoning.tsx\",\n\t\t\t\t\t\"type\": \"registry:ui\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"use-textarea-resize\",\n\t\t\t\"type\": \"registry:hook\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/use-textarea-resize.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-utils\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A set of utilities for working with JSX.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/jsx-utils.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"id-to-readable-text\",\n\t\t\t\"type\": \"registry:lib\",\n\t\t\t\"description\": \"A utility for converting an ID to a readable text.\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/id-to-readable-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-mentions\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/chat-input\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-mentions.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-with-addons\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-with-addons.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-input-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-input-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-content-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-content-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"markdown-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/markdown-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-demo-avatar-image\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-demo-avatar-image.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-alignment\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-alignment.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-message-area-demo-streaming\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-message-area-demo-streaming.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"jsx-renderer-streaming-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"registryDependencies\": [\"@simple-ai/jsx-renderer\"],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/jsx-renderer-streaming-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"model-selector-disabled-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/model-selector-disabled-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"resizable-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/resizable-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"visualize-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/visualize-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"prompt-crafter-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/prompt-crafter-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"text-input-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/text-input-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"generate-text-node-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/generate-text-node-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"editable-handle-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/editable-handle-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"status-edge-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/status-edge-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-loading\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-loading.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"tool-invocation-demo-error\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/tool-invocation-demo-error.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-suggestions-demo-simple\",\n\t\t\t\"type\": \"registry:example\",\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/examples/chat-suggestions-demo-simple.tsx\",\n\t\t\t\t\t\"type\": \"registry:example\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A simple chat page.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/react\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"card\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"button\",\n\t\t\t\t\"avatar\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/config.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/tools.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/lib/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/types/ai-messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/ai-messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-main.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-01/components/chat/chat-content.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a sidebar.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-02/components/app-sidebar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"chat-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A chat in a popover.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"popover\",\n\t\t\t\t\"button\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/chat/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/chat/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/chat-03/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"chat\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A app with generative UI capabilities.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/lang-javascript\",\n\t\t\t\t\"zustand\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"avatar\",\n\t\t\t\t\"input\",\n\t\t\t\t\"label\",\n\t\t\t\t\"tabs\",\n\t\t\t\t\"resizable\",\n\t\t\t\t\"breadcrumb\",\n\t\t\t\t\"button\",\n\t\t\t\t\"toggle-group\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"card\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/jsx-renderer\",\n\t\t\t\t\"@simple-ai/jsx-utils\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/generative-ui/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/canvas/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/canvas/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/generate/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/hooks/generation-store.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/versions.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/editor-toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/code-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/chat-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-01/components/copy-button.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-02\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"A persona generator app with structured outputs.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"dialog\",\n\t\t\t\t\"button\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"label\",\n\t\t\t\t\"scroll-area\",\n\t\t\t\t\"form\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"card\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/persona/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/persona/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/components/persona-display.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/persona.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-02/lib/example-businesses.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"app-03\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"An X profile bio generator app.\",\n\t\t\t\"dependencies\": [\"ai\", \"@ai-sdk/openai\", \"zod\", \"next-themes\"],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"form\",\n\t\t\t\t\"label\",\n\t\t\t\t\"select\",\n\t\t\t\t\"skeleton\",\n\t\t\t\t\"avatar\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/x-profile/layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/ai/x-profile/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/profile-generate-dialog.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/x-preview.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/toolbar.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/x.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/app-03/lib/profile-examples.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"app\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-chain\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic chain workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-routing\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic routing workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-chain/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-routing/lib/content-creator-routing.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-parallelization\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic parallelization workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flow-orchestrator\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Agentic orchestrator workflow.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"@ai-sdk/groq\",\n\t\t\t\t\"@ai-sdk/deepseek\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"@simple-ai/generate-text-node\",\n\t\t\t\t\"@simple-ai/prompt-crafter-node\",\n\t\t\t\t\"@simple-ai/text-input-node\",\n\t\t\t\t\"@simple-ai/visualize-text-node\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/execute/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/nodes-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/error-indicator.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/visualize-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/visualize-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/text-input-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/text-input-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/prompt-crafter-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/prompt-crafter-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/ui/flow/generate-text-node-controller.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/flow/generate-text-node-controller.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/hooks/flow/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-client.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/sse-workflow-execution-engine.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/server-node-processors.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/node-factory.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/lib/flow/generate-ai-text.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\",\n\t\t\t\t\"GROQ_API_KEY\": \"\",\n\t\t\t\t\"DEEPSEEK_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get API keys from OpenAI (https://platform.openai.com/), Groq (https://console.groq.com/), and DeepSeek (https://platform.deepseek.com/) and add them to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"flow\"]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"workflow-01\",\n\t\t\t\"type\": \"registry:block\",\n\t\t\t\"description\": \"Build powerful AI agent workflows with React Flow components integrated with Vercel AI SDK.\",\n\t\t\t\"dependencies\": [\n\t\t\t\t\"@xyflow/react\",\n\t\t\t\t\"zustand\",\n\t\t\t\t\"zod\",\n\t\t\t\t\"ai\",\n\t\t\t\t\"@ai-sdk/react\",\n\t\t\t\t\"@ai-sdk/openai\",\n\t\t\t\t\"nanoid\",\n\t\t\t\t\"@marcbachmann/cel-js\",\n\t\t\t\t\"@uiw/react-codemirror\",\n\t\t\t\t\"@codemirror/language\",\n\t\t\t\t\"@lezer/highlight\",\n\t\t\t\t\"lucide-react\",\n\t\t\t\t\"next-themes\"\n\t\t\t],\n\t\t\t\"registryDependencies\": [\n\t\t\t\t\"button\",\n\t\t\t\t\"card\",\n\t\t\t\t\"dialog\",\n\t\t\t\t\"input\",\n\t\t\t\t\"textarea\",\n\t\t\t\t\"sonner\",\n\t\t\t\t\"sidebar\",\n\t\t\t\t\"badge\",\n\t\t\t\t\"checkbox\",\n\t\t\t\t\"collapsible\",\n\t\t\t\t\"dropdown-menu\",\n\t\t\t\t\"popover\",\n\t\t\t\t\"select\",\n\t\t\t\t\"switch\",\n\t\t\t\t\"tooltip\",\n\t\t\t\t\"separator\",\n\t\t\t\t\"@simple-ai/chat-input\",\n\t\t\t\t\"@simple-ai/chat-message-area\",\n\t\t\t\t\"@simple-ai/chat-message\",\n\t\t\t\t\"@simple-ai/tool-invocation\",\n\t\t\t\t\"@simple-ai/chat-suggestions\",\n\t\t\t\t\"@simple-ai/reasoning\",\n\t\t\t\t\"@simple-ai/json-schema-editor\"\n\t\t\t],\n\t\t\t\"files\": [\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/page.tsx\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/workflow/page.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/route.ts\",\n\t\t\t\t\t\"type\": \"registry:page\",\n\t\t\t\t\t\"target\": \"app/api/workflow/route.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/app-layout.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/app-layout.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/chat.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/chat.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/editor/condition-editor.css\",\n\t\t\t\t\t\"type\": \"registry:style\",\n\t\t\t\t\t\"target\": \"components/editor/condition-editor.css\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-editor-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-editor-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-execution.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-execution.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/node-selector-panel.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/node-selector-panel.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/template-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/template-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-provider.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-provider.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/theme-toggle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/theme-toggle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/validation-status.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/validation-status.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/agent.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/agent/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/if-else.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/if-else/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/start.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/start/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/end.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/end/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/note.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/note/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.shared.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.client.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/wait.server.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/nodes/wait/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/base-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/labeled-handle.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/node-header.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/primitives/resizable-node.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/workflow/status-edge.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/components/model-selector.tsx\",\n\t\t\t\t\t\"type\": \"registry:component\",\n\t\t\t\t\t\"target\": \"components/model-selector.tsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/code-analysis-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wikipedia-research-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/wait-demo-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/templates/customer-support-workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/index.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/index.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/tools/wikipedia-query.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/executor.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/executor.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/models-external.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/models.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/messages.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/messages.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/types/workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"types/workflow.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/validation.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/validation.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/schema-introspection.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts\",\n\t\t\t\t\t\"type\": \"registry:lib\",\n\t\t\t\t\t\"target\": \"lib/workflow/context/variable-resolver.ts\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"path\": \"./src/registry/blocks/workflow-01/hooks/use-workflow.ts\",\n\t\t\t\t\t\"type\": \"registry:hook\",\n\t\t\t\t\t\"target\": \"hooks/workflow/use-workflow.ts\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"envVars\": {\n\t\t\t\t\"OPENAI_API_KEY\": \"\"\n\t\t\t},\n\t\t\t\"docs\": \"Get an OpenAI API key from https://platform.openai.com/ and add it to the environment variables file and run the dev server. \\n\\nLearn more about how to use the Vercel AI SDK https://ai-sdk.dev/docs/introduction.\",\n\t\t\t\"categories\": [\"workflow\"]\n\t\t}\n\t]\n}\n"}}}}