{
	"name": "simple-ai",
	"homepage": "https://simple-ai.dev",
	"items": [
		{
			"name": "jsx-renderer",
			"type": "registry:ui",
			"title": "JSX Renderer",
			"description": "A component that renders JSX strings with access to tailwind, shadcn components and lucide icons.",
			"dependencies": ["react-jsx-parser", "react-error-boundary"],
			"registryDependencies": ["@simple-ai/jsx-utils"],
			"files": [
				{
					"path": "./src/registry/ui/jsx-renderer.tsx",
					"type": "registry:ui"
				}
			]
		},
		{
			"name": "chat-input",
			"type": "registry:ui",
			"title": "Chat Input",
			"description": "A chat input component with mention support and automatic height adjustment.",
			"dependencies": [
				"@tiptap/core",
				"@tiptap/react",
				"@tiptap/starter-kit",
				"@tiptap/extension-mention",
				"@tiptap/extension-placeholder",
				"@tiptap/suggestion",
				"tippy.js"
			],
			"registryDependencies": ["input-group", "button"],
			"files": [
				{
					"path": "./src/registry/ui/chat-input.tsx",
					"type": "registry:ui"
				}
			]
		},
		{
			"name": "chat-message-area",
			"type": "registry:ui",
			"title": "Chat Message Area",
			"description": "A component that adds auto scrolling functionality to a list of messages.",
			"dependencies": ["use-stick-to-bottom"],
			"registryDependencies": ["button"],
			"files": [
				{
					"path": "./src/registry/ui/chat-message-area.tsx",
					"type": "registry:ui"
				}
			]
		},
		{
			"name": "chat-message",
			"type": "registry:ui",
			"title": "Chat Message",
			"description": "A fully composable component for displaying chat messages with rich features like timestamps, actions, and threading.",
			"registryDependencies": [
				"@simple-ai/markdown-content",
				"avatar",
				"button",
				"card",
				"tooltip"
			],
			"files": [
				{
					"path": "./src/registry/ui/chat-message.tsx",
					"type": "registry:ui"
				}
			]
		},
		{
			"name": "chat-suggestions",
			"type": "registry:ui",
			"title": "Chat Suggestions",
			"description": "A composable component for displaying chat prompt suggestions as clickable buttons.",
			"registryDependencies": ["button"],
			"files": [
				{
					"path": "./src/registry/ui/chat-suggestions.tsx",
					"type": "registry:ui"
				}
			]
		},
		{
			"name": "markdown-content",
			"type": "registry:ui",
			"title": "Markdown Content",
			"description": "A component that renders markdown content.",
			"dependencies": [
				"react-markdown",
				"marked",
				"shiki",
				"remark-gfm",
				"rehype-raw"
			],
			"files": [
				{
					"path": "./src/registry/ui/markdown-content.tsx",
					"type": "registry:ui"
				}
			]
		},
		{
			"name": "tool-invocation",
			"type": "registry:ui",
			"title": "Tool Invocation",
			"description": "A component that displays a tool invocation with a collapsible content.",
			"registryDependencies": ["card", "collapsible"],
			"files": [
				{
					"path": "./src/registry/ui/tool-invocation.tsx",
					"type": "registry:ui"
				},
				{
					"path": "./src/registry/lib/id-to-readable-text.ts",
					"type": "registry:lib"
				}
			]
		},
		{
			"name": "model-selector",
			"type": "registry:ui",
			"title": "Model Selector",
			"description": "A dropdown component for selecting AI models with provider icons.",
			"registryDependencies": ["select"],
			"files": [
				{
					"path": "./src/registry/ui/model-selector.tsx",
					"type": "registry:ui"
				}
			]
		},
		{
			"name": "resizable-node",
			"type": "registry:ui",
			"title": "Resizable Node",
			"description": "A wrapper React Flow node component that adds resizing functionality to other nodes.",
			"dependencies": ["@xyflow/react"],
			"registryDependencies": ["@simple-ai/base-node"],
			"files": [
				{
					"path": "./src/registry/ui/flow/resizable-node.tsx",
					"type": "registry:ui",
					"target": "components/flow/resizable-node.tsx"
				}
			]
		},
		{
			"name": "node-header-status",
			"type": "registry:ui",
			"title": "Node Header Status",
			"description": "A React Flow component that displays status indicators in node headers.",
			"dependencies": ["@xyflow/react"],
			"registryDependencies": ["badge"],
			"files": [
				{
					"path": "./src/registry/ui/flow/node-header-status.tsx",
					"type": "registry:ui",
					"target": "components/flow/node-header-status.tsx"
				}
			]
		},
		{
			"name": "editable-handle",
			"type": "registry:ui",
			"title": "Editable Handle",
			"description": "A React Flow component that allows you to dynamically add, edit, or remove input/output handles on your nodes.",
			"dependencies": ["@xyflow/react"],
			"registryDependencies": [
				"button",
				"input",
				"textarea",
				"popover",
				"@simple-ai/base-handle"
			],
			"files": [
				{
					"path": "./src/registry/ui/flow/editable-handle.tsx",
					"type": "registry:ui",
					"target": "components/flow/editable-handle.tsx"
				}
			]
		},
		{
			"name": "status-edge",
			"type": "registry:ui",
			"title": "Status Edge",
			"description": "A React Flow edge component that provides visual feedback through color-coded states.",
			"dependencies": ["@xyflow/react"],
			"files": [
				{
					"path": "./src/registry/ui/flow/status-edge.tsx",
					"type": "registry:ui",
					"target": "components/flow/status-edge.tsx"
				}
			]
		},
		{
			"name": "generate-text-node",
			"type": "registry:ui",
			"title": "Generate Text Node",
			"description": "A React Flow node component that represents Vercel AI SDK's text generation capabilities, featuring system instructions, prompts, and optional tool outputs.",
			"dependencies": ["@xyflow/react"],
			"registryDependencies": [
				"button",
				"separator",
				"@simple-ai/model-selector",
				"@simple-ai/node-header-status",
				"@simple-ai/editable-handle",
				"@simple-ai/labeled-handle",
				"@simple-ai/base-node",
				"@simple-ai/node-header"
			],
			"files": [
				{
					"path": "./src/registry/ui/flow/generate-text-node.tsx",
					"type": "registry:ui",
					"target": "components/flow/generate-text-node.tsx"
				}
			]
		},
		{
			"name": "prompt-crafter-node",
			"type": "registry:ui",
			"title": "Prompt Crafter Node",
			"description": "A React Flow node component for building dynamic prompts by combining multiple inputs using a template-based approach.",
			"dependencies": [
				"@xyflow/react",
				"@uiw/react-codemirror",
				"@uiw/codemirror-themes",
				"@lezer/highlight",
				"@codemirror/language",
				"@codemirror/view"
			],
			"registryDependencies": [
				"button",
				"separator",
				"popover",
				"command",
				"@simple-ai/node-header-status",
				"@simple-ai/editable-handle",
				"@simple-ai/node-header",
				"@simple-ai/labeled-handle",
				"@simple-ai/base-node"
			],
			"files": [
				{
					"path": "./src/registry/ui/flow/prompt-crafter-node.tsx",
					"type": "registry:ui",
					"target": "components/flow/prompt-crafter-node.tsx"
				}
			]
		},
		{
			"name": "text-input-node",
			"type": "registry:ui",
			"title": "Text Input Node",
			"description": "A React Flow node component that provides a simple text input interface with a resizable textarea and single output.",
			"dependencies": ["@xyflow/react"],
			"registryDependencies": [
				"textarea",
				"separator",
				"@simple-ai/labeled-handle",
				"@simple-ai/node-header",
				"@simple-ai/resizable-node"
			],
			"files": [
				{
					"path": "./src/registry/ui/flow/text-input-node.tsx",
					"type": "registry:ui",
					"target": "components/flow/text-input-node.tsx"
				}
			]
		},
		{
			"name": "visualize-text-node",
			"type": "registry:ui",
			"title": "Visualize Text Node",
			"description": "A React Flow node component for displaying text content with Markdown support and a resizable interface.",
			"dependencies": ["@xyflow/react"],
			"registryDependencies": [
				"separator",
				"@simple-ai/markdown-content",
				"@simple-ai/labeled-handle",
				"@simple-ai/node-header",
				"@simple-ai/resizable-node"
			],
			"files": [
				{
					"path": "./src/registry/ui/flow/visualize-text-node.tsx",
					"type": "registry:ui",
					"target": "components/flow/visualize-text-node.tsx"
				}
			]
		},
		{
			"name": "base-handle",
			"type": "registry:ui",
			"dependencies": ["@xyflow/react"],
			"files": [
				{
					"path": "./src/registry/ui/flow/base-handle.tsx",
					"type": "registry:ui",
					"target": "components/flow/base-handle.tsx"
				}
			]
		},
		{
			"name": "labeled-handle",
			"type": "registry:ui",
			"dependencies": ["@xyflow/react"],
			"files": [
				{
					"path": "./src/registry/ui/flow/labeled-handle.tsx",
					"type": "registry:ui",
					"target": "components/flow/labeled-handle.tsx"
				}
			]
		},
		{
			"name": "base-node",
			"type": "registry:ui",
			"files": [
				{
					"path": "./src/registry/ui/flow/base-node.tsx",
					"type": "registry:ui",
					"target": "components/flow/base-node.tsx"
				}
			]
		},
		{
			"name": "node-header",
			"type": "registry:ui",
			"registryDependencies": ["button", "dropdown-menu"],
			"files": [
				{
					"path": "./src/registry/ui/flow/node-header.tsx",
					"type": "registry:ui",
					"target": "components/flow/node-header.tsx"
				}
			]
		},
		{
			"name": "json-schema-editor",
			"type": "registry:ui",
			"title": "JSON Schema Editor",
			"description": "A visual editor for creating and editing JSON Schema definitions with support for nested objects, arrays, enums, and property descriptions.",
			"dependencies": ["nanoid"],
			"registryDependencies": ["button", "dialog", "input", "select"],
			"files": [
				{
					"path": "./src/registry/ui/json-schema-editor.tsx",
					"type": "registry:ui"
				}
			]
		},
		{
			"name": "json-schema-viewer",
			"type": "registry:ui",
			"title": "JSON Schema Viewer",
			"description": "A read-only component for displaying JSON Schema structures with support for union types, nested objects, arrays, and enums.",
			"files": [
				{
					"path": "./src/registry/ui/json-schema-viewer.tsx",
					"type": "registry:ui"
				}
			]
		},
		{
			"name": "reasoning",
			"type": "registry:ui",
			"title": "Reasoning",
			"description": "A component for displaying AI reasoning content with collapsible sections and streaming support.",
			"dependencies": ["ai"],
			"registryDependencies": [
				"collapsible",
				"@simple-ai/markdown-content"
			],
			"files": [
				{
					"path": "./src/registry/ui/reasoning.tsx",
					"type": "registry:ui"
				}
			]
		},
		{
			"name": "use-textarea-resize",
			"type": "registry:hook",
			"files": [
				{
					"path": "./src/registry/hooks/use-textarea-resize.ts",
					"type": "registry:hook"
				}
			]
		},
		{
			"name": "jsx-utils",
			"type": "registry:lib",
			"description": "A set of utilities for working with JSX.",
			"files": [
				{
					"path": "./src/registry/lib/jsx-utils.ts",
					"type": "registry:lib"
				}
			]
		},
		{
			"name": "id-to-readable-text",
			"type": "registry:lib",
			"description": "A utility for converting an ID to a readable text.",
			"files": [
				{
					"path": "./src/registry/lib/id-to-readable-text.ts",
					"type": "registry:lib"
				}
			]
		},
		{
			"name": "chat-input-demo-mentions",
			"type": "registry:example",
			"registryDependencies": ["@simple-ai/chat-input"],
			"files": [
				{
					"path": "./src/registry/examples/chat-input-demo-mentions.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "chat-input-with-addons",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/chat-input-with-addons.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "chat-input-demo-simple",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/chat-input-demo-simple.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "markdown-content-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/markdown-content-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "markdown-streaming-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/markdown-streaming-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "chat-message-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/chat-message-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "chat-message-demo-simple",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/chat-message-demo-simple.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "chat-message-demo-avatar-image",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/chat-message-demo-avatar-image.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "chat-message-area-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/chat-message-area-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "chat-message-area-demo-alignment",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/chat-message-area-demo-alignment.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "chat-message-area-demo-streaming",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/chat-message-area-demo-streaming.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "jsx-renderer-demo",
			"type": "registry:example",
			"registryDependencies": ["@simple-ai/jsx-renderer"],
			"files": [
				{
					"path": "./src/registry/examples/jsx-renderer-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "jsx-renderer-disabled-demo",
			"type": "registry:example",
			"registryDependencies": ["@simple-ai/jsx-renderer"],
			"files": [
				{
					"path": "./src/registry/examples/jsx-renderer-disabled-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "jsx-renderer-streaming-demo",
			"type": "registry:example",
			"registryDependencies": ["@simple-ai/jsx-renderer"],
			"files": [
				{
					"path": "./src/registry/examples/jsx-renderer-streaming-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "model-selector-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/model-selector-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "model-selector-disabled-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/model-selector-disabled-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "resizable-node-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/resizable-node-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "visualize-text-node-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/visualize-text-node-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "prompt-crafter-node-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/prompt-crafter-node-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "text-input-node-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/text-input-node-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "generate-text-node-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/generate-text-node-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "editable-handle-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/editable-handle-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "status-edge-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/status-edge-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "tool-invocation-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/tool-invocation-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "tool-invocation-demo-loading",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/tool-invocation-demo-loading.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "tool-invocation-demo-error",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/tool-invocation-demo-error.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "chat-suggestions-demo",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/chat-suggestions-demo.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "chat-suggestions-demo-simple",
			"type": "registry:example",
			"files": [
				{
					"path": "./src/registry/examples/chat-suggestions-demo-simple.tsx",
					"type": "registry:example"
				}
			]
		},
		{
			"name": "chat-01",
			"type": "registry:block",
			"description": "A simple chat page.",
			"dependencies": ["ai", "@ai-sdk/react", "@ai-sdk/openai"],
			"registryDependencies": [
				"card",
				"breadcrumb",
				"separator",
				"sidebar",
				"tooltip",
				"button",
				"avatar",
				"dropdown-menu",
				"@simple-ai/chat-input",
				"@simple-ai/chat-message-area",
				"@simple-ai/chat-message",
				"@simple-ai/tool-invocation",
				"@simple-ai/chat-suggestions",
				"@simple-ai/reasoning"
			],
			"files": [
				{
					"path": "./src/registry/blocks/chat-01/page.tsx",
					"type": "registry:page",
					"target": "app/chat/page.tsx"
				},
				{
					"path": "./src/registry/blocks/chat-01/route.ts",
					"type": "registry:page",
					"target": "app/api/ai/chat/route.ts"
				},
				{
					"path": "./src/registry/blocks/chat-01/lib/config.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/blocks/chat-01/lib/tools.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/blocks/chat-01/lib/messages.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/blocks/chat-01/types/ai-messages.ts",
					"type": "registry:lib",
					"target": "types/ai-messages.ts"
				},
				{
					"path": "./src/registry/blocks/chat-01/components/layout/app-layout.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-01/components/layout/app-layout-skeleton.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-01/components/layout/app-header.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-01/components/layout/app-sidebar.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-01/components/layout/app-main-nav.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-01/components/layout/app-secondary-nav.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-01/components/layout/app-user-nav.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-01/components/chat/chat-main.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-01/components/chat/chat-header.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-01/components/chat/chat-content.tsx",
					"type": "registry:component"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": ""
			},
			"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.",
			"categories": ["chat"]
		},
		{
			"name": "chat-04",
			"type": "registry:block",
			"description": "A chat with multiple agents support.",
			"dependencies": ["ai", "@ai-sdk/react", "@ai-sdk/openai"],
			"registryDependencies": [
				"card",
				"badge",
				"breadcrumb",
				"separator",
				"sidebar",
				"tooltip",
				"button",
				"avatar",
				"dropdown-menu",
				"@simple-ai/chat-input",
				"@simple-ai/chat-message-area",
				"@simple-ai/chat-message",
				"@simple-ai/tool-invocation",
				"@simple-ai/chat-suggestions",
				"@simple-ai/reasoning",
				"@simple-ai/messages",
				"@simple-ai/models",
				"@simple-ai/agent-respond",
				"@simple-ai/ai-utils",
				"@simple-ai/agents-tools-registry"
			],
			"files": [
				{
					"path": "./src/registry/blocks/chat-04/page.tsx",
					"type": "registry:page",
					"target": "app/chat/page.tsx"
				},
				{
					"path": "./src/registry/blocks/chat-04/route.ts",
					"type": "registry:page",
					"target": "app/api/ai/agents/route.ts"
				},
				{
					"path": "./src/registry/blocks/chat-04/lib/config.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/blocks/chat-04/components/layout/app-layout.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-04/components/layout/app-layout-skeleton.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-04/components/layout/app-header.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-04/components/layout/app-sidebar.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-04/components/layout/app-main-nav.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-04/components/layout/app-secondary-nav.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-04/components/layout/app-user-nav.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-04/components/chat/chat-main.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-04/components/chat/chat-header.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/chat-04/components/chat/chat-content.tsx",
					"type": "registry:component"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": ""
			},
			"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.",
			"categories": ["chat"]
		},
		{
			"name": "chat-02",
			"type": "registry:block",
			"description": "A chat in a sidebar.",
			"dependencies": ["ai", "@ai-sdk/openai"],
			"registryDependencies": [
				"sidebar",
				"breadcrumb",
				"@simple-ai/chat-input",
				"@simple-ai/chat-message-area",
				"@simple-ai/chat-message"
			],
			"files": [
				{
					"path": "./src/registry/blocks/chat-02/page.tsx",
					"type": "registry:page",
					"target": "app/chat/page.tsx"
				},
				{
					"path": "./src/registry/blocks/chat-02/route.ts",
					"type": "registry:page",
					"target": "app/api/ai/chat/route.ts"
				},
				{
					"path": "./src/registry/blocks/chat-02/components/app-sidebar.tsx",
					"type": "registry:component"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": ""
			},
			"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.",
			"categories": ["chat"]
		},
		{
			"name": "chat-03",
			"type": "registry:block",
			"description": "A chat in a popover.",
			"dependencies": ["ai", "@ai-sdk/openai"],
			"registryDependencies": [
				"popover",
				"button",
				"@simple-ai/chat-input",
				"@simple-ai/chat-message-area",
				"@simple-ai/chat-message"
			],
			"files": [
				{
					"path": "./src/registry/blocks/chat-03/page.tsx",
					"type": "registry:page",
					"target": "app/chat/page.tsx"
				},
				{
					"path": "./src/registry/blocks/chat-03/route.ts",
					"type": "registry:page",
					"target": "app/api/ai/chat/route.ts"
				},
				{
					"path": "./src/registry/blocks/chat-03/components/chat.tsx",
					"type": "registry:component"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": ""
			},
			"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.",
			"categories": ["chat"]
		},
		{
			"name": "app-01",
			"type": "registry:block",
			"description": "A app with generative UI capabilities.",
			"dependencies": [
				"ai",
				"@ai-sdk/openai",
				"@uiw/react-codemirror",
				"@codemirror/lang-javascript",
				"zustand"
			],
			"registryDependencies": [
				"avatar",
				"input",
				"label",
				"tabs",
				"resizable",
				"breadcrumb",
				"button",
				"toggle-group",
				"switch",
				"separator",
				"card",
				"badge",
				"dialog",
				"slider",
				"@simple-ai/chat-input",
				"@simple-ai/chat-message-area",
				"@simple-ai/chat-message",
				"@simple-ai/jsx-renderer",
				"@simple-ai/jsx-utils"
			],
			"files": [
				{
					"path": "./src/registry/blocks/app-01/page.tsx",
					"type": "registry:page",
					"target": "app/generative-ui/page.tsx"
				},
				{
					"path": "./src/registry/blocks/app-01/canvas/page.tsx",
					"type": "registry:page",
					"target": "app/canvas/page.tsx"
				},
				{
					"path": "./src/registry/blocks/app-01/route.ts",
					"type": "registry:page",
					"target": "app/api/ai/generate/route.ts"
				},
				{
					"path": "./src/registry/blocks/app-01/hooks/generation-store.ts",
					"type": "registry:hook"
				},
				{
					"path": "./src/registry/blocks/app-01/components/versions.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/app-01/components/editor-layout.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/app-01/components/editor-toolbar.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/app-01/components/code-editor.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/app-01/components/preview.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/app-01/components/chat-dialog.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/app-01/components/copy-button.tsx",
					"type": "registry:component"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": ""
			},
			"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.",
			"categories": ["app"]
		},
		{
			"name": "app-02",
			"type": "registry:block",
			"description": "A persona generator app with structured outputs.",
			"dependencies": ["ai", "@ai-sdk/openai", "zod"],
			"registryDependencies": [
				"dialog",
				"button",
				"input",
				"textarea",
				"label",
				"scroll-area",
				"form",
				"skeleton",
				"card",
				"avatar"
			],
			"files": [
				{
					"path": "./src/registry/blocks/app-02/page.tsx",
					"type": "registry:page",
					"target": "app/persona/page.tsx"
				},
				{
					"path": "./src/registry/blocks/app-02/route.ts",
					"type": "registry:page",
					"target": "app/api/ai/persona/route.ts"
				},
				{
					"path": "./src/registry/blocks/app-02/components/persona-display.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/app-02/lib/persona.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/blocks/app-02/lib/example-businesses.ts",
					"type": "registry:lib"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": ""
			},
			"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.",
			"categories": ["app"]
		},
		{
			"name": "app-03",
			"type": "registry:block",
			"description": "An X profile bio generator app.",
			"dependencies": ["ai", "@ai-sdk/openai", "zod", "next-themes"],
			"registryDependencies": [
				"button",
				"dialog",
				"input",
				"textarea",
				"form",
				"label",
				"select",
				"skeleton",
				"avatar"
			],
			"files": [
				{
					"path": "./src/registry/blocks/app-03/page.tsx",
					"type": "registry:page",
					"target": "app/x-profile/page.tsx"
				},
				{
					"path": "./src/registry/blocks/app-03/layout.tsx",
					"type": "registry:page",
					"target": "app/x-profile/layout.tsx"
				},
				{
					"path": "./src/registry/blocks/app-03/route.ts",
					"type": "registry:page",
					"target": "app/api/ai/x-profile/route.ts"
				},
				{
					"path": "./src/registry/blocks/app-03/components/profile-generate-dialog.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/app-03/components/x-preview.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/app-03/components/toolbar.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/app-03/components/theme-toggle.tsx",
					"type": "registry:component"
				},
				{
					"path": "./src/registry/blocks/app-03/lib/x.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/blocks/app-03/lib/profile-examples.ts",
					"type": "registry:lib"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": ""
			},
			"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.",
			"categories": ["app"]
		},
		{
			"name": "flow-chain",
			"type": "registry:block",
			"description": "Agentic chain workflow.",
			"dependencies": [
				"@xyflow/react",
				"zustand",
				"zod",
				"ai",
				"nanoid",
				"@ai-sdk/openai",
				"@ai-sdk/groq",
				"@ai-sdk/deepseek"
			],
			"registryDependencies": [
				"button",
				"card",
				"dialog",
				"input",
				"textarea",
				"sonner",
				"@simple-ai/generate-text-node",
				"@simple-ai/prompt-crafter-node",
				"@simple-ai/text-input-node",
				"@simple-ai/visualize-text-node"
			],
			"files": [
				{
					"path": "./src/registry/blocks/flow-chain/page.tsx",
					"type": "registry:page",
					"target": "app/workflow/page.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-chain/route.ts",
					"type": "registry:page",
					"target": "app/api/workflow/execute/route.ts"
				},
				{
					"path": "./src/registry/blocks/flow-chain/components/nodes-panel.tsx",
					"type": "registry:component",
					"target": "components/flow/nodes-panel.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-chain/components/error-indicator.tsx",
					"type": "registry:component",
					"target": "components/error-indicator.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-chain/lib/news-summarization-chain.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/ui/flow/status-edge-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/status-edge-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/status-edge.tsx",
					"type": "registry:component",
					"target": "components/flow/status-edge.tsx"
				},
				{
					"path": "./src/registry/ui/flow/visualize-text-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/visualize-text-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/text-input-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/text-input-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/prompt-crafter-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/prompt-crafter-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/generate-text-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/generate-text-node-controller.tsx"
				},
				{
					"path": "./src/registry/hooks/flow/use-workflow.ts",
					"type": "registry:hook"
				},
				{
					"path": "./src/registry/lib/flow/workflow.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/workflow-execution-engine.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/sse-workflow-execution-client.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/sse-workflow-execution-engine.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/server-node-processors.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/node-factory.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/generate-ai-text.ts",
					"type": "registry:lib"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": "",
				"GROQ_API_KEY": "",
				"DEEPSEEK_API_KEY": ""
			},
			"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.",
			"categories": ["flow"]
		},
		{
			"name": "flow-routing",
			"type": "registry:block",
			"description": "Agentic routing workflow.",
			"dependencies": [
				"@xyflow/react",
				"zustand",
				"zod",
				"ai",
				"nanoid",
				"@ai-sdk/openai",
				"@ai-sdk/groq",
				"@ai-sdk/deepseek"
			],
			"registryDependencies": [
				"button",
				"card",
				"dialog",
				"input",
				"textarea",
				"sonner",
				"@simple-ai/generate-text-node",
				"@simple-ai/prompt-crafter-node",
				"@simple-ai/text-input-node",
				"@simple-ai/visualize-text-node"
			],
			"files": [
				{
					"path": "./src/registry/blocks/flow-routing/page.tsx",
					"type": "registry:page",
					"target": "app/workflow/page.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-routing/route.ts",
					"type": "registry:page",
					"target": "app/api/workflow/execute/route.ts"
				},
				{
					"path": "./src/registry/blocks/flow-routing/components/nodes-panel.tsx",
					"type": "registry:component",
					"target": "components/flow/nodes-panel.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-chain/components/error-indicator.tsx",
					"type": "registry:component",
					"target": "components/error-indicator.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-routing/lib/content-creator-routing.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/ui/flow/status-edge-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/status-edge-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/status-edge.tsx",
					"type": "registry:component",
					"target": "components/flow/status-edge.tsx"
				},
				{
					"path": "./src/registry/ui/flow/visualize-text-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/visualize-text-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/text-input-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/text-input-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/prompt-crafter-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/prompt-crafter-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/generate-text-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/generate-text-node-controller.tsx"
				},
				{
					"path": "./src/registry/hooks/flow/use-workflow.ts",
					"type": "registry:hook"
				},
				{
					"path": "./src/registry/lib/flow/workflow.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/workflow-execution-engine.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/sse-workflow-execution-client.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/sse-workflow-execution-engine.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/server-node-processors.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/node-factory.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/generate-ai-text.ts",
					"type": "registry:lib"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": "",
				"GROQ_API_KEY": "",
				"DEEPSEEK_API_KEY": ""
			},
			"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.",
			"categories": ["flow"]
		},
		{
			"name": "flow-parallelization",
			"type": "registry:block",
			"description": "Agentic parallelization workflow.",
			"dependencies": [
				"@xyflow/react",
				"zustand",
				"zod",
				"ai",
				"nanoid",
				"@ai-sdk/openai",
				"@ai-sdk/groq",
				"@ai-sdk/deepseek"
			],
			"registryDependencies": [
				"button",
				"card",
				"dialog",
				"input",
				"textarea",
				"sonner",
				"@simple-ai/generate-text-node",
				"@simple-ai/prompt-crafter-node",
				"@simple-ai/text-input-node",
				"@simple-ai/visualize-text-node"
			],
			"files": [
				{
					"path": "./src/registry/blocks/flow-parallelization/page.tsx",
					"type": "registry:page",
					"target": "app/workflow/page.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-parallelization/route.ts",
					"type": "registry:page",
					"target": "app/api/workflow/execute/route.ts"
				},
				{
					"path": "./src/registry/blocks/flow-parallelization/components/nodes-panel.tsx",
					"type": "registry:component",
					"target": "components/flow/nodes-panel.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-parallelization/components/error-indicator.tsx",
					"type": "registry:component",
					"target": "components/error-indicator.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-parallelization/lib/exam-creator-parallelization.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/ui/flow/status-edge-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/status-edge-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/status-edge.tsx",
					"type": "registry:component",
					"target": "components/flow/status-edge.tsx"
				},
				{
					"path": "./src/registry/ui/flow/visualize-text-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/visualize-text-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/text-input-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/text-input-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/prompt-crafter-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/prompt-crafter-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/generate-text-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/generate-text-node-controller.tsx"
				},
				{
					"path": "./src/registry/hooks/flow/use-workflow.ts",
					"type": "registry:hook"
				},
				{
					"path": "./src/registry/lib/flow/workflow.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/workflow-execution-engine.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/sse-workflow-execution-client.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/sse-workflow-execution-engine.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/server-node-processors.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/node-factory.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/generate-ai-text.ts",
					"type": "registry:lib"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": "",
				"GROQ_API_KEY": "",
				"DEEPSEEK_API_KEY": ""
			},
			"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.",
			"categories": ["flow"]
		},
		{
			"name": "flow-orchestrator",
			"type": "registry:block",
			"description": "Agentic orchestrator workflow.",
			"dependencies": [
				"@xyflow/react",
				"zustand",
				"zod",
				"ai",
				"nanoid",
				"@ai-sdk/openai",
				"@ai-sdk/groq",
				"@ai-sdk/deepseek"
			],
			"registryDependencies": [
				"button",
				"card",
				"dialog",
				"input",
				"textarea",
				"sonner",
				"@simple-ai/generate-text-node",
				"@simple-ai/prompt-crafter-node",
				"@simple-ai/text-input-node",
				"@simple-ai/visualize-text-node"
			],
			"files": [
				{
					"path": "./src/registry/blocks/flow-orchestrator/page.tsx",
					"type": "registry:page",
					"target": "app/workflow/page.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-orchestrator/route.ts",
					"type": "registry:page",
					"target": "app/api/workflow/execute/route.ts"
				},
				{
					"path": "./src/registry/blocks/flow-orchestrator/components/nodes-panel.tsx",
					"type": "registry:component",
					"target": "components/flow/nodes-panel.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-orchestrator/components/error-indicator.tsx",
					"type": "registry:component",
					"target": "components/error-indicator.tsx"
				},
				{
					"path": "./src/registry/blocks/flow-orchestrator/lib/developer-tasks-orchestrator.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/ui/flow/status-edge-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/status-edge-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/status-edge.tsx",
					"type": "registry:component",
					"target": "components/flow/status-edge.tsx"
				},
				{
					"path": "./src/registry/ui/flow/visualize-text-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/visualize-text-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/text-input-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/text-input-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/prompt-crafter-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/prompt-crafter-node-controller.tsx"
				},
				{
					"path": "./src/registry/ui/flow/generate-text-node-controller.tsx",
					"type": "registry:component",
					"target": "components/flow/generate-text-node-controller.tsx"
				},
				{
					"path": "./src/registry/hooks/flow/use-workflow.ts",
					"type": "registry:hook"
				},
				{
					"path": "./src/registry/lib/flow/workflow.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/workflow-execution-engine.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/sse-workflow-execution-client.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/sse-workflow-execution-engine.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/server-node-processors.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/node-factory.ts",
					"type": "registry:lib"
				},
				{
					"path": "./src/registry/lib/flow/generate-ai-text.ts",
					"type": "registry:lib"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": "",
				"GROQ_API_KEY": "",
				"DEEPSEEK_API_KEY": ""
			},
			"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.",
			"categories": ["flow"]
		},
		{
			"name": "workflow-01",
			"type": "registry:block",
			"description": "Build powerful AI agent workflows",
			"dependencies": [
				"@xyflow/react",
				"zustand",
				"zod",
				"ai",
				"@ai-sdk/react",
				"@ai-sdk/openai",
				"nanoid",
				"@marcbachmann/cel-js",
				"@uiw/react-codemirror",
				"@codemirror/language",
				"@lezer/highlight",
				"lucide-react",
				"next-themes"
			],
			"registryDependencies": [
				"button",
				"card",
				"dialog",
				"input",
				"textarea",
				"sonner",
				"sidebar",
				"badge",
				"checkbox",
				"collapsible",
				"dropdown-menu",
				"popover",
				"select",
				"switch",
				"tooltip",
				"separator",
				"@simple-ai/chat-input",
				"@simple-ai/chat-message-area",
				"@simple-ai/chat-message",
				"@simple-ai/tool-invocation",
				"@simple-ai/chat-suggestions",
				"@simple-ai/reasoning",
				"@simple-ai/json-schema-editor"
			],
			"files": [
				{
					"path": "./src/registry/blocks/workflow-01/page.tsx",
					"type": "registry:page",
					"target": "app/workflow/page.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/route.ts",
					"type": "registry:page",
					"target": "app/api/workflow/route.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/app-header.tsx",
					"type": "registry:component",
					"target": "components/app-header.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/app-layout.tsx",
					"type": "registry:component",
					"target": "components/app-layout.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/chat.tsx",
					"type": "registry:component",
					"target": "components/chat.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/editor/condition-editor.tsx",
					"type": "registry:component",
					"target": "components/editor/condition-editor.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/editor/condition-editor.css",
					"type": "registry:style",
					"target": "components/editor/condition-editor.css"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/node-editor-panel.tsx",
					"type": "registry:component",
					"target": "components/node-editor-panel.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/node-execution.tsx",
					"type": "registry:component",
					"target": "components/node-execution.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/node-selector-panel.tsx",
					"type": "registry:component",
					"target": "components/node-selector-panel.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/template-selector.tsx",
					"type": "registry:component",
					"target": "components/template-selector.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/theme-provider.tsx",
					"type": "registry:component",
					"target": "components/theme-provider.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/theme-toggle.tsx",
					"type": "registry:component",
					"target": "components/theme-toggle.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/validation-status.tsx",
					"type": "registry:component",
					"target": "components/validation-status.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/index.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/index.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.shared.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/agent/agent.shared.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.client.tsx",
					"type": "registry:component",
					"target": "lib/workflow/nodes/agent/agent.client.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/agent.server.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/agent/agent.server.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/agent/index.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/agent/index.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.shared.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/if-else/if-else.shared.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.client.tsx",
					"type": "registry:component",
					"target": "lib/workflow/nodes/if-else/if-else.client.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/if-else.server.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/if-else/if-else.server.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/if-else/index.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/if-else/index.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.shared.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/start/start.shared.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.client.tsx",
					"type": "registry:component",
					"target": "lib/workflow/nodes/start/start.client.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/start/start.server.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/start/start.server.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/start/index.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/start/index.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.shared.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/end/end.shared.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.client.tsx",
					"type": "registry:component",
					"target": "lib/workflow/nodes/end/end.client.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/end/end.server.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/end/end.server.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/end/index.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/end/index.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.shared.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/note/note.shared.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.client.tsx",
					"type": "registry:component",
					"target": "lib/workflow/nodes/note/note.client.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/note/note.server.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/note/note.server.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/note/index.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/note/index.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.shared.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/wait/wait.shared.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.client.tsx",
					"type": "registry:component",
					"target": "lib/workflow/nodes/wait/wait.client.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/wait.server.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/wait/wait.server.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/nodes/wait/index.ts",
					"type": "registry:lib",
					"target": "lib/workflow/nodes/wait/index.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/workflow/primitives/base-handle.tsx",
					"type": "registry:component",
					"target": "components/workflow/primitives/base-handle.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/workflow/primitives/base-node.tsx",
					"type": "registry:component",
					"target": "components/workflow/primitives/base-node.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/workflow/primitives/labeled-handle.tsx",
					"type": "registry:component",
					"target": "components/workflow/primitives/labeled-handle.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/workflow/primitives/node-header.tsx",
					"type": "registry:component",
					"target": "components/workflow/primitives/node-header.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/workflow/primitives/resizable-node.tsx",
					"type": "registry:component",
					"target": "components/workflow/primitives/resizable-node.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/workflow/status-edge.tsx",
					"type": "registry:component",
					"target": "components/workflow/status-edge.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/components/model-selector.tsx",
					"type": "registry:component",
					"target": "components/model-selector.tsx"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/templates/index.ts",
					"type": "registry:lib",
					"target": "lib/templates/index.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/templates/code-analysis-workflow.ts",
					"type": "registry:lib",
					"target": "lib/templates/code-analysis-workflow.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/templates/wikipedia-research-workflow.ts",
					"type": "registry:lib",
					"target": "lib/templates/wikipedia-research-workflow.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/templates/wait-demo-workflow.ts",
					"type": "registry:lib",
					"target": "lib/templates/wait-demo-workflow.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/templates/customer-support-workflow.ts",
					"type": "registry:lib",
					"target": "lib/templates/customer-support-workflow.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/tools/index.ts",
					"type": "registry:lib",
					"target": "lib/tools/index.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/tools/wikipedia-query.ts",
					"type": "registry:lib",
					"target": "lib/tools/wikipedia-query.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/executor.ts",
					"type": "registry:lib",
					"target": "lib/workflow/executor.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/models-external.ts",
					"type": "registry:lib",
					"target": "lib/workflow/models.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/types/messages.ts",
					"type": "registry:lib",
					"target": "types/messages.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/types/workflow.ts",
					"type": "registry:lib",
					"target": "types/workflow.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/validation.ts",
					"type": "registry:lib",
					"target": "lib/workflow/validation.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/context/schema-introspection.ts",
					"type": "registry:lib",
					"target": "lib/workflow/context/schema-introspection.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/lib/workflow/context/variable-resolver.ts",
					"type": "registry:lib",
					"target": "lib/workflow/context/variable-resolver.ts"
				},
				{
					"path": "./src/registry/blocks/workflow-01/hooks/use-workflow.ts",
					"type": "registry:hook",
					"target": "hooks/workflow/use-workflow.ts"
				}
			],
			"envVars": {
				"OPENAI_API_KEY": ""
			},
			"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.",
			"categories": ["workflow"]
		},
		{
			"name": "weather-agent",
			"type": "registry:lib",
			"title": "Weather Agent",
			"description": "A weather agent with tools for getting the weather.",
			"dependencies": ["ai"],
			"registryDependencies": [
				"@simple-ai/models",
				"@simple-ai/get-weather"
			],
			"files": [
				{
					"path": "./src/registry/ai/agents/weather-agent.ts",
					"type": "registry:lib",
					"target": "lib/ai/agents/weather-agent.ts"
				}
			],
			"meta": {
				"icon": "CloudRain",
				"toolIds": ["get-weather"],
				"suggestions": [
					"What's the weather like in New York today?",
					"Will it rain in London tomorrow?",
					"What's the forecast for Tokyo next week?",
					"How's the weather in Paris right now?"
				],
				"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"
			},
			"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",
			"categories": ["agent"]
		},
		{
			"name": "firecrawl-agent",
			"type": "registry:lib",
			"title": "Firecrawl Agent",
			"description": "A web research agent powered by Firecrawl.",
			"dependencies": ["ai"],
			"registryDependencies": [
				"@simple-ai/models",
				"@simple-ai/firecrawl-tool"
			],
			"files": [
				{
					"path": "./src/registry/ai/agents/firecrawl-agent.ts",
					"type": "registry:lib",
					"target": "lib/ai/agents/firecrawl-agent.ts"
				}
			],
			"meta": {
				"icon": "FirecrawlIcon",
				"toolIds": ["firecrawl-tool"],
				"suggestions": [
					"Scrape https://example.com",
					"Search for recent news about AI agents",
					"Find documentation for the Vercel AI SDK",
					"Get content from a specific URL"
				],
				"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."
			},
			"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",
			"categories": ["agent"]
		},
		{
			"name": "exa-agent",
			"type": "registry:lib",
			"title": "Exa Agent",
			"description": "A web research agent powered by Exa.",
			"dependencies": ["ai"],
			"registryDependencies": [
				"@simple-ai/models",
				"@simple-ai/exa-tool"
			],
			"files": [
				{
					"path": "./src/registry/ai/agents/exa-agent.ts",
					"type": "registry:lib",
					"target": "lib/ai/agents/exa-agent.ts"
				}
			],
			"meta": {
				"icon": "ExaIcon",
				"toolIds": ["exa-tool"],
				"suggestions": [
					"Find similar companies to https://exa.ai",
					"Research the latest trends in generative AI",
					"Retrieve content from https://example.com",
					"Find blog posts about Rust programming"
				],
				"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."
			},
			"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",
			"categories": ["agent"]
		},
		{
			"name": "get-weather",
			"type": "registry:lib",
			"description": "A tool for getting the weather.",
			"dependencies": ["ai", "zod"],
			"files": [
				{
					"path": "./src/registry/ai/tools/get-weather.ts",
					"type": "registry:lib",
					"target": "lib/ai/tools/get-weather.ts"
				}
			]
		},
		{
			"name": "firecrawl-tool",
			"type": "registry:lib",
			"description": "A tool for searching and scraping the web using Firecrawl.",
			"dependencies": ["ai", "@mendable/firecrawl-js", "zod"],
			"files": [
				{
					"path": "./src/registry/ai/tools/firecrawl-tool.ts",
					"type": "registry:lib",
					"target": "lib/ai/tools/firecrawl-tool.ts"
				}
			],
			"envVars": {
				"FIRECRAWL_API_KEY": ""
			}
		},
		{
			"name": "exa-tool",
			"type": "registry:lib",
			"description": "A tool for searching and scraping the web using Exa.",
			"dependencies": ["ai", "exa-js", "zod"],
			"files": [
				{
					"path": "./src/registry/ai/tools/exa-tool.ts",
					"type": "registry:lib",
					"target": "lib/ai/tools/exa-tool.ts"
				}
			],
			"envVars": {
				"EXA_API_KEY": ""
			}
		},
		{
			"name": "agents-tools-registry",
			"type": "registry:lib",
			"description": "A set of default agents.",
			"dependencies": ["ai"],
			"registryDependencies": [
				"@simple-ai/models",
				"@simple-ai/weather-agent",
				"@simple-ai/get-weather",
				"@simple-ai/id-to-readable-text"
			],
			"files": [
				{
					"path": "./src/registry/ai/agents/agents-registry.ts",
					"type": "registry:lib",
					"target": "lib/ai/agents/agents-registry.ts"
				},
				{
					"path": "./src/registry/ai/tools/tools-registry.ts",
					"type": "registry:lib",
					"target": "lib/ai/tools/tools-registry.ts"
				}
			]
		},
		{
			"name": "agent-respond",
			"type": "registry:lib",
			"description": "A function to respond to a message with an agent.",
			"dependencies": ["ai"],
			"registryDependencies": ["@simple-ai/id-to-readable-text"],
			"files": [
				{
					"path": "./src/registry/ai/agent-route-respond.ts",
					"type": "registry:lib",
					"target": "lib/ai/agent-route-respond.ts"
				}
			]
		},
		{
			"name": "models",
			"type": "registry:lib",
			"description": "A set of models for the AI SDK.",
			"dependencies": ["ai", "@ai-sdk/openai"],
			"files": [
				{
					"path": "./src/registry/ai/models-external.ts",
					"type": "registry:lib",
					"target": "lib/ai/models.ts"
				}
			]
		},
		{
			"name": "messages",
			"type": "registry:lib",
			"description": "UIMessage types for the AI SDK.",
			"dependencies": ["ai"],
			"files": [
				{
					"path": "./src/registry/ai/messages.ts",
					"type": "registry:lib",
					"target": "lib/ai/messages.ts"
				}
			]
		},
		{
			"name": "ai-utils",
			"type": "registry:lib",
			"description": "A set of utilities for the AI SDK.",
			"dependencies": ["ai"],
			"files": [
				{
					"path": "./src/registry/ai/ai-utils.ts",
					"type": "registry:lib",
					"target": "lib/ai/ai-utils.ts"
				}
			]
		}
	]
}
