open-index/open-npm huggingface dataset:
npm package: @guhcostan/web-search-mcp
Description: MCP server to search the web and fetch page contents
Latest version: 1.0.5

## Web Search MCP

Minimal MCP server that can search the web and extract readable page content, similar to Cursor's built-in web context.

### Features

- **search_web**: Query the web (DuckDuckGo HTML) and return result URLs and titles
- **fetch_page**: Fetch any URL and extract readable content using Mozilla Readability + JSDOM

### Requirements

- Node.js 20+ (recommended: 20.18.1+)

### Install

```bash
npm install
```

### Run (stdio)

```bash
npm start
```

### Install globally

```bash
npm i -g @guhcostan/web-search-mcp
```

Then reference the binary `web-search-mcp`.

### Integrate with Cursor (MCP)

Add to your Cursor MCP settings:

```json
{
  "mcpServers": {
    "web-search-mcp": { "command": "web-search-mcp" }
  }
}
```

Alternatively, without global install, use npx:

```json
{
  "mcpServers": {
    "web-search-mcp": {
      "command": "npx",
      "args": ["-y", "@guhcostan/web-search-mcp@latest"]
    }
  }
}
```

### Tools

- **search_web**
  - input:
    - `query` (string, required)
    - `limit` (number, optional, 1–10, default 5)
  - output: array of `{ url: string; title?: string; snippet?: string }`

- **fetch_page**
  - input:
    - `url` (string URL, required)
  - output: `{ url: string; title?: string; content: string }`

### Development

Type-check, lint and tests:

```bash
npm run check
```

Run individually:

```bash
npm run build
npm run lint
npm test
```

### Notes

- Web search uses DuckDuckGo HTML; results may vary and are HTML-scraped (no API key required)
- Be mindful of target site terms of use and robots policies when fetching pages

### License

MIT
npm package: @gui-chat-plugin/avatar
Description: 3D Avatar Plugin for GUIChat - VRM avatar with lip-sync
Latest version: 0.0.4

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Favatar.svg)](https://badge.fury.io/js/%40gui-chat-plugin%2Favatar)
# @gui-chat-plugin/avatar

[![npm version](https://badge.fury.io/js/@gui-chat-plugin%2Favatar.svg)](https://www.npmjs.com/package/@gui-chat-plugin/avatar)

A 3D avatar plugin for [MulmoChat](https://github.com/receptron/MulmoChat) - displays a VRM avatar that lip-syncs during voice conversations.

## What this plugin does

- Displays a 3D VRM avatar in the chat interface
- Automatic lip-sync when the AI is speaking
- Body animations (nodding, gestures) during conversation
- Emotion expressions (happy, sad, angry, surprised)
- Action gestures (nod, shake, wave, think, bow)

## Installation

```bash
yarn add @gui-chat-plugin/avatar
```

## Usage

### Vue Implementation (for MulmoChat)

```typescript
// In src/tools/index.ts
import Plugin from "@gui-chat-plugin/avatar/vue";

const pluginList = [
  // ... other plugins
  Plugin,
];

// In src/main.ts
import "@gui-chat-plugin/avatar/style.css";
```

### React Implementation

```typescript
import Plugin from "@gui-chat-plugin/avatar/react";
import "@gui-chat-plugin/avatar/style.css";

// Named exports
import { plugin, View, Preview } from "@gui-chat-plugin/avatar/react";
```

### Core Only (Framework-agnostic)

```typescript
import { pluginCore, TOOL_NAME } from "@gui-chat-plugin/avatar";
// or
import pluginCore from "@gui-chat-plugin/avatar";
```

## Package Exports

| Export | Description |
|--------|-------------|
| `@gui-chat-plugin/avatar` | Core (framework-agnostic) |
| `@gui-chat-plugin/avatar/vue` | Vue implementation with UI components |
| `@gui-chat-plugin/avatar/react` | React implementation with UI components |
| `@gui-chat-plugin/avatar/style.css` | Tailwind CSS styles |

## Development

```bash
# Install dependencies
yarn install

# Start dev server - Vue (http://localhost:5173/)
yarn dev

# Start dev server - React (http://localhost:5173/)
yarn dev:react

# Build
yarn build

# Type check
yarn typecheck

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin:

1. "Display an avatar"
2. "Nod your head"
3. "Show a happy expression"
4. "Wave at me"

## License

MIT
npm package: @gui-chat-plugin/browse
Description: Web browsing plugin for GUI Chat applications
Author: receptron
Latest version: 0.1.1

# @gui-chat-plugin/browse

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fbrowse.svg)](https://www.npmjs.com/package/@gui-chat-plugin/browse)

Web browsing plugin for GUI Chat applications. Browse and extract content from web pages.

## Features

- Extract content from any web page URL
- Twitter/X post embedding support
- Article content parsing (title, byline, excerpt, body)
- Clean, readable content display

## Installation

```bash
yarn add @gui-chat-plugin/browse
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import BrowsePlugin from "@gui-chat-plugin/browse/vue";

const pluginList = [
  // ... other plugins
  BrowsePlugin,
];

// In src/main.ts
import "@gui-chat-plugin/browse/style.css";
```

### Core-only Usage

```typescript
import { executeBrowse, TOOL_DEFINITION } from "@gui-chat-plugin/browse";

// Browse a webpage
const result = await executeBrowse(context, {
  url: "https://example.com/article",
});
```

## API

### BrowseArgs

```typescript
interface BrowseArgs {
  url: string; // The URL of the webpage to browse
}
```

### BrowseToolData

```typescript
interface BrowseToolData {
  url: string;
  twitterEmbedHtml?: string | null;
}
```

### BrowseJsonData

```typescript
interface BrowseJsonData {
  data: {
    title?: string;
    description?: string;
    content?: string;
    textContent?: string;
    text?: string;
    byline?: string;
    excerpt?: string;
  };
}
```

## Development

```bash
# Install dependencies
yarn install

# Run demo
yarn dev

# Build
yarn build

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin:

1. "Browse the Wikipedia page about artificial intelligence and tell me the key points"
2. "Show me what's on the Hacker News homepage"
3. "Read this article and summarize it: https://example.com/article"

## License

MIT
npm package: @gui-chat-plugin/camera
Description: Camera photo capture plugin for GUIChat
Latest version: 0.3.0

# @gui-chat-plugin/camera

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fcamera.svg)](https://www.npmjs.com/package/@gui-chat-plugin/camera)

A camera photo capture plugin for [MulmoChat](https://github.com/receptron/MulmoChat).

## Overview

This plugin allows users to take photos using their device's camera. It opens a camera preview modal where users can select their camera (if multiple are available) and capture a photo.

## Installation

```bash
yarn add @gui-chat-plugin/camera
```

## Usage

### Vue Implementation (for MulmoChat)

```typescript
// In src/tools/index.ts
import CameraPlugin from "@gui-chat-plugin/camera/vue";

const pluginList = [
  // ... other plugins
  CameraPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/camera/style.css";
```

### Core Only (Framework-agnostic)

```typescript
import { TOOL_NAME, TOOL_DEFINITION, SYSTEM_PROMPT } from "@gui-chat-plugin/camera";
```

## Package Exports

| Export | Description |
|--------|-------------|
| `@gui-chat-plugin/camera` | Core (framework-agnostic) |
| `@gui-chat-plugin/camera/vue` | Vue implementation |
| `@gui-chat-plugin/camera/style.css` | Tailwind CSS styles |

## Test Prompts

1. "Take a photo"
2. "Open the camera"
3. "I want to take a selfie"
4. "Capture an image from my camera"

## Development

```bash
yarn install
yarn dev        # Start dev server
yarn build      # Build
yarn typecheck  # Type check
yarn lint       # Lint
```

## License

MIT
npm package: @gui-chat-plugin/canvas
Description: Drawing canvas plugin for GUIChat
Latest version: 0.3.4

# @gui-chat-plugin/canvas

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fcanvas.svg)](https://www.npmjs.com/package/@gui-chat-plugin/canvas)

A drawing canvas plugin for [MulmoChat](https://github.com/receptron/MulmoChat).

## Overview

This plugin provides a drawing canvas where users can create drawings, sketches, or diagrams. The AI can then interpret or transform the drawing into other formats.

## Installation

```bash
yarn add @gui-chat-plugin/canvas
```

## Dependencies

This plugin requires `vue-drawing-canvas`:

```bash
yarn add vue-drawing-canvas
```

## Usage

### Vue Implementation (for MulmoChat)

```typescript
// In src/tools/index.ts
import CanvasPlugin from "@gui-chat-plugin/canvas/vue";

const pluginList = [
  // ... other plugins
  CanvasPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/canvas/style.css";
```

### Core Only (Framework-agnostic)

```typescript
import { pluginCore, TOOL_NAME } from "@gui-chat-plugin/canvas";
```

## Package Exports

| Export | Description |
|--------|-------------|
| `@gui-chat-plugin/canvas` | Core (framework-agnostic) |
| `@gui-chat-plugin/canvas/vue` | Vue implementation |
| `@gui-chat-plugin/canvas/style.css` | Tailwind CSS styles |

## Test Prompts

1. "I want to draw something"
2. "Open the drawing canvas"
3. "Let me sketch an idea"
4. "Open canvas so I can draw a diagram"

## Development

```bash
yarn install
yarn dev        # Start dev server
yarn build      # Build
yarn typecheck  # Type check
yarn lint       # Lint
```

## License

MIT
npm package: @gui-chat-plugin/drawing-game
Description: Drawing game plugin - draw with primitives and let AI guess
Latest version: 0.1.1

# @gui-chat-plugin/drawing-game

Drawing game plugin for GUI Chat applications. Draw pictures using only primitive shapes through voice/chat instructions, then let AI guess what you drew!

## Features

- Draw with primitive shapes: circle, ellipse, rectangle, triangle, line
- Fill patterns: solid, hatched, dotted, striped
- Edit operations: move, undo
- AI guessing: Let the AI guess what you drew

## Installation

```bash
yarn add @gui-chat-plugin/drawing-game
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import DrawingGamePlugin from "@gui-chat-plugin/drawing-game/vue";

const pluginList = [
  // ... other plugins
  DrawingGamePlugin,
];

// In src/main.ts
import "@gui-chat-plugin/drawing-game/style.css";
```

### Core-only Usage

```typescript
import { executeDrawingGame, TOOL_DEFINITION } from "@gui-chat-plugin/drawing-game";

// Start a new game
const result = await executeDrawingGame(context, { action: "start" });

// Draw a circle
const result = await executeDrawingGame(context, {
  action: "circle",
  x: 50,
  y: 50,
  size: 30,
  color: "blue",
});
```

## API

### Actions

| Action | Description |
|--------|-------------|
| `start` | Clear canvas and start new game |
| `circle` | Draw a circle (x, y, size, color, pattern) |
| `ellipse` | Draw an ellipse (x, y, width, height, color, pattern) |
| `rectangle` | Draw a rectangle (x, y, width, height, color, pattern) |
| `triangle` | Draw a triangle (x, y, size, color, pattern) |
| `line` | Draw a line (x1, y1, x2, y2, color, strokeWidth) |
| `fill` | Change default fill color |
| `pattern` | Change default pattern (solid/hatched/dotted/striped) |
| `move` | Move last shape (dx, dy) |
| `undo` | Remove last shape |
| `guess` | AI guesses what the drawing is |

### Position Guide

- **x**: 0=left, 50=center, 100=right
- **y**: 0=top, 50=center, 100=bottom
- **size**: 5=tiny, 15=small, 30=medium, 50=large

### Patterns

- `solid` - Normal fill
- `hatched` - Diagonal lines
- `dotted` - Dots pattern
- `striped` - Horizontal stripes

## Test Prompts

Try these prompts to test the plugin:

1. "Let's play the drawing game"
2. "Draw a big blue circle in the center"
3. "Add a small red triangle on top"
4. "Move it a bit to the right"
5. "Guess what I drew!"

## Development

```bash
# Install dependencies
yarn install

# Run Vue demo
yarn dev

# Build
yarn build

# Lint
yarn lint
```

## License

MIT
npm package: @gui-chat-plugin/edit-html
Description: Edit HTML plugin for GUIChat
Latest version: 0.1.2

# @gui-chat-plugin/edit-html

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fedit-html.svg)](https://www.npmjs.com/package/@gui-chat-plugin/edit-html)

An edit HTML plugin for [MulmoChat](https://github.com/receptron/MulmoChat).

## Overview

This plugin allows users to edit an existing HTML page by describing the desired modifications. It sends the current HTML and modification prompt to an LLM (Claude or Gemini) to generate the updated HTML.

## Installation

```bash
yarn add @gui-chat-plugin/edit-html
```

## Usage

### Vue Implementation (for MulmoChat)

```typescript
// In src/tools/index.ts
import EditHtmlPlugin from "@gui-chat-plugin/edit-html/vue";

const pluginList = [
  // ... other plugins
  EditHtmlPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/edit-html/style.css";
```

### Core Only (Framework-agnostic)

```typescript
import { pluginCore, TOOL_NAME } from "@gui-chat-plugin/edit-html";
```

## Package Exports

| Export | Description |
|--------|-------------|
| `@gui-chat-plugin/edit-html` | Core (framework-agnostic) |
| `@gui-chat-plugin/edit-html/vue` | Vue implementation |
| `@gui-chat-plugin/edit-html/style.css` | Tailwind CSS styles |

## Requirements

This plugin requires an Anthropic API key or Google API key configured in MulmoChat.

## Test Prompts

First generate an HTML page, then:

1. "Change the background color to blue"
2. "Add a navigation menu at the top"
3. "Make the font larger"
4. "Add a footer with contact information"

## Development

```bash
yarn install
yarn dev        # Start dev server
yarn build      # Build
yarn typecheck  # Type check
yarn lint       # Lint
```

## License

MIT
npm package: @gui-chat-plugin/edit-image
Description: Image editing plugin for GUI Chat applications
Latest version: 0.3.0

# @gui-chat-plugin/edit-image

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fedit-image.svg)](https://www.npmjs.com/package/@gui-chat-plugin/edit-image)

Image editing plugin for GUI Chat applications. Edit previously generated images based on text prompts.

## Features

- Edit existing images with natural language prompts
- Support for various editing operations (add objects, change style, modify background)
- Display edited images with original prompt

## Installation

```bash
yarn add @gui-chat-plugin/edit-image
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import EditImagePlugin from "@gui-chat-plugin/edit-image/vue";

const pluginList = [
  // ... other plugins
  EditImagePlugin,
];

// In src/main.ts
import "@gui-chat-plugin/edit-image/style.css";
```

### Core-only Usage

```typescript
import { executeEditImage, TOOL_DEFINITION } from "@gui-chat-plugin/edit-image";

// Edit an image
const result = await executeEditImage(context, {
  prompt: "Add sunglasses to the person",
});
```

## API

### EditImageArgs

```typescript
interface EditImageArgs {
  prompt: string; // Description of edits to make
}
```

### ImageToolData

```typescript
interface ImageToolData {
  imageData: string; // Base64 encoded image data
  prompt: string;    // The edit prompt used
}
```

## Requirements

This plugin requires the host application to provide an `editImage` function via the context:

```typescript
context.app.editImage(prompt: string): Promise<EditImageResult>
```

## Development

```bash
# Install dependencies
yarn install

# Run demo
yarn dev

# Build
yarn build

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin (after generating an image first):

1. "Add a rainbow in the sky of this image"
2. "Change the background to a beach scene"
3. "Make the colors more vibrant and add some butterflies"

## License

MIT
npm package: @gui-chat-plugin/exa
Description: Exa web search plugin for GUI Chat applications
Author: receptron
Latest version: 0.1.3

# @gui-chat-plugin/exa

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fexa.svg)](https://www.npmjs.com/package/@gui-chat-plugin/exa)

Exa web search plugin for GUI Chat applications. Search the web using Exa API for high-quality, relevant results.

## Features

- High-quality web search via Exa API
- Text content and highlights extraction
- Domain filtering (include/exclude)
- Date range filtering
- Result count configuration

## Installation

```bash
yarn add @gui-chat-plugin/exa
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import ExaPlugin from "@gui-chat-plugin/exa/vue";

const pluginList = [
  // ... other plugins
  ExaPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/exa/style.css";
```

### Core-only Usage

```typescript
import { executeExa, TOOL_DEFINITION } from "@gui-chat-plugin/exa";

// Search the web
const result = await executeExa(context, {
  query: "TypeScript best practices 2025",
  numResults: 5,
  includeText: true,
});
```

## API

### ExaArgs

```typescript
interface ExaArgs {
  query: string;
  numResults?: number;         // 1-10, default: 5
  includeText?: boolean;       // Include page content
  fetchHighlights?: boolean;   // Include relevant snippets
  includeDomains?: string[];   // Only search these domains
  excludeDomains?: string[];   // Exclude these domains
  startPublishedDate?: string; // ISO date format
  endPublishedDate?: string;   // ISO date format
}
```

### ExaSearchResult

```typescript
interface ExaSearchResult {
  title: string;
  url: string;
  text?: string;
  highlights?: string[];
  publishedDate?: string;
  author?: string;
  score?: number;
}
```

## Configuration

The plugin requires an Exa API key. Configure it via `hasExaApiKey` in your app's start response.

## Development

```bash
# Install dependencies
yarn install

# Run demo
yarn dev

# Build
yarn build

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin:

1. "Search for the latest developments in quantum computing"
2. "Find articles about TypeScript best practices in 2025"
3. "Search for tutorials on building Vue.js applications"

## License

MIT
npm package: @gui-chat-plugin/generate-html
Description: Generate HTML plugin for GUIChat
Latest version: 0.1.2

# @gui-chat-plugin/generate-html

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fgenerate-html.svg)](https://www.npmjs.com/package/@gui-chat-plugin/generate-html)

A generate HTML plugin for [MulmoChat](https://github.com/receptron/MulmoChat).

## Overview

This plugin generates complete, standalone HTML pages by sending a detailed prompt to an LLM (Claude or Gemini). The generated HTML is self-contained with all styles and scripts inline.

## Installation

```bash
yarn add @gui-chat-plugin/generate-html
```

## Usage

### Vue Implementation (for MulmoChat)

```typescript
// In src/tools/index.ts
import GenerateHtmlPlugin from "@gui-chat-plugin/generate-html/vue";

const pluginList = [
  // ... other plugins
  GenerateHtmlPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/generate-html/style.css";
```

### Core Only (Framework-agnostic)

```typescript
import { pluginCore, TOOL_NAME } from "@gui-chat-plugin/generate-html";
```

## Package Exports

| Export | Description |
|--------|-------------|
| `@gui-chat-plugin/generate-html` | Core (framework-agnostic) |
| `@gui-chat-plugin/generate-html/vue` | Vue implementation |
| `@gui-chat-plugin/generate-html/style.css` | Tailwind CSS styles |

## Requirements

This plugin requires an Anthropic API key or Google API key configured in MulmoChat.

## Test Prompts

1. "Create an HTML page with a login form"
2. "Generate a landing page for a coffee shop"
3. "Make an interactive calculator in HTML"
4. "Create a portfolio page with a dark theme"

## Development

```bash
yarn install
yarn dev        # Start dev server
yarn build      # Build
yarn typecheck  # Type check
yarn lint       # Lint
```

## License

MIT
npm package: @gui-chat-plugin/go
Description: Go (Baduk/Weiqi) game plugin for GUI Chat
Latest version: 0.1.1

# @gui-chat-plugin/go

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fgo.svg)](https://www.npmjs.com/package/@gui-chat-plugin/go)

Go (Baduk/Weiqi) game plugin for GUI Chat applications. Play Go on a 9x9 board against an AI assistant.

## Features

- Full Go game implementation on 9x9 board
- Interactive board with clickable intersections
- Stone capture detection and counting
- Territory calculation for scoring
- Game end detection (two consecutive passes)
- Suicide rule enforcement

## Installation

```bash
yarn add @gui-chat-plugin/go
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import GoPlugin from "@gui-chat-plugin/go/vue";

const pluginList = [
  // ... other plugins
  GoPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/go/style.css";
```

### Core-only Usage

```typescript
import { executeGo, playGo, TOOL_DEFINITION } from "@gui-chat-plugin/go";

// Start a new game
const result = await executeGo(context, {
  action: "new_game",
  firstPlayer: "user",
});

// Use the game logic directly
import { playGo } from "@gui-chat-plugin/go";

const state = playGo({
  action: "new_game",
  playerNames: { B: "user", W: "computer" },
});
```

## API

### GoArgs

```typescript
interface GoArgs {
  action: "new_game" | "move" | "pass";
  col?: number;        // 0-8 for move action
  row?: number;        // 0-8 for move action
  board?: Cell[][];    // Current board state
  currentSide?: Side;  // "B" or "W"
  playerNames?: { B: GoPlayerType; W: GoPlayerType };
  capturedStones?: { B: number; W: number };
  consecutivePasses?: number;
  firstPlayer?: GoPlayerType;  // "user" or "computer"
}
```

### GoState

```typescript
interface GoState {
  board: GoBoard;      // 9x9 grid of ".", "B", or "W"
  currentSide: Side;   // Whose turn is next
  playerNames: { B: string; W: string };
  capturedStones: { B: number; W: number };
  counts: { B: number; W: number; empty: number };
  isTerminal: boolean;
  winner: Side | "draw" | null;
  consecutivePasses: number;
  lastAction: { type: "new_game" | "move" | "pass"; ... };
  error?: string;
}
```

## Development

```bash
# Install dependencies
yarn install

# Run demo
yarn dev

# Build
yarn build

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin:

1. "Let's play Go! I'll take black"
2. "Start a new Go game, you play first"
3. "Place my stone at position E5"

## License

MIT
npm package: @gui-chat-plugin/html
Description: Render HTML plugin for GUIChat
Latest version: 0.1.0

# @gui-chat-plugin/html

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fhtml.svg)](https://www.npmjs.com/package/@gui-chat-plugin/html)

A render HTML plugin for [MulmoChat](https://github.com/receptron/MulmoChat).

## Overview

This plugin renders HTML content in an isolated iframe. It supports various libraries including Tailwind CSS, D3.js, Three.js, p5.js, and Mermaid for diagrams.

## Installation

```bash
yarn add @gui-chat-plugin/html
```

## Usage

### Vue Implementation (for MulmoChat)

```typescript
// In src/tools/index.ts
import HtmlPlugin from "@gui-chat-plugin/html/vue";

const pluginList = [
  // ... other plugins
  HtmlPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/html/style.css";
```

### Core Only (Framework-agnostic)

```typescript
import { pluginCore, TOOL_NAME, HTML_LIBRARIES } from "@gui-chat-plugin/html";
```

## Package Exports

| Export | Description |
|--------|-------------|
| `@gui-chat-plugin/html` | Core (framework-agnostic) |
| `@gui-chat-plugin/html/vue` | Vue implementation |
| `@gui-chat-plugin/html/style.css` | Tailwind CSS styles |

## Supported Libraries

- `tailwind` - Tailwind CSS for utility-first styling
- `d3.js` - D3.js for data-driven visualizations
- `three.js` - Three.js for 3D graphics and WebGL
- `p5.js` - p5.js for creative coding and generative art
- `mermaid` - Mermaid for diagrams and flowcharts

## Test Prompts

1. "Create a bar chart using D3.js"
2. "Make a 3D rotating cube with Three.js"
3. "Draw a flowchart with Mermaid showing a login process"
4. "Create an animated pattern using p5.js"

## Development

```bash
yarn install
yarn dev        # Start dev server
yarn build      # Build
yarn typecheck  # Type check
yarn lint       # Lint
```

## License

MIT
npm package: @gui-chat-plugin/map
Description: Google Map location plugin for GUI Chat applications
Author: receptron
Latest version: 0.1.2

# @gui-chat-plugin/map

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fmap.svg)](https://www.npmjs.com/package/@gui-chat-plugin/map)

Google Map location plugin for GUI Chat applications. Display locations on an interactive map.

## Features

- Show any location by name or address
- Google Maps embed integration
- Fallback link to open in Google Maps
- Support for coordinates (lat/lng)

## Installation

```bash
yarn add @gui-chat-plugin/map
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import MapPlugin from "@gui-chat-plugin/map/vue";

const pluginList = [
  // ... other plugins
  MapPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/map/style.css";
```

### Core-only Usage

```typescript
import { executeMap, TOOL_DEFINITION } from "@gui-chat-plugin/map";

// Show a location
const result = await executeMap(context, {
  location: "Tokyo Tower, Japan",
});
```

## API

### MapArgs

```typescript
interface MapArgs {
  location: string; // Location name, address, or coordinates
}
```

### MapToolData

```typescript
interface MapToolData {
  location: string | { lat: number; lng: number };
}
```

## Configuration

The plugin requires a Google Maps API key to display embedded maps. Pass it via the `googleMapKey` prop to the view component, or configure it in your app's start response.

## Development

```bash
# Install dependencies
yarn install

# Run demo
yarn dev

# Build
yarn build

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin:

1. "Show me the Eiffel Tower on the map"
2. "Where is the Sydney Opera House located?"
3. "Display Tokyo Station on the map"

## License

MIT
npm package: @gui-chat-plugin/markdown
Description: Markdown document display plugin for GUI Chat applications
Latest version: 0.1.0

# @gui-chat-plugin/markdown

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fmarkdown.svg)](https://www.npmjs.com/package/@gui-chat-plugin/markdown)

Markdown document display plugin for GUI Chat applications. Create and display rich documents with markdown formatting and embedded images.

## Features

- Markdown rendering with full syntax support
- Embedded image generation via placeholders
- Download markdown as file
- Edit markdown source inline
- Responsive document layout

## Installation

```bash
yarn add @gui-chat-plugin/markdown
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import MarkdownPlugin from "@gui-chat-plugin/markdown/vue";

const pluginList = [
  // ... other plugins
  MarkdownPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/markdown/style.css";
```

### Core-only Usage

```typescript
import { executeMarkdown, TOOL_DEFINITION } from "@gui-chat-plugin/markdown";

// Create a markdown document
const result = await executeMarkdown(context, {
  title: "My Document",
  markdown: "# Hello World\n\nThis is **bold** text.",
});
```

## API

### MarkdownArgs

```typescript
interface MarkdownArgs {
  title: string;    // Document title
  markdown: string; // Markdown content
}
```

### MarkdownToolData

```typescript
interface MarkdownToolData {
  markdown: string;
  pdfPath?: string;  // Optional PDF path if generated
}
```

### Embedded Images

To include generated images in your markdown, use the placeholder syntax:

```markdown
![Detailed image prompt](__too_be_replaced_image_path__)
```

The plugin will automatically generate images and replace placeholders with actual URLs.

## Development

```bash
# Install dependencies
yarn install

# Run demo
yarn dev

# Build
yarn build

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin:

1. "Create a markdown document explaining the basics of machine learning"
2. "Write a getting started guide for Git in markdown format"
3. "Generate a project documentation template in markdown"

## License

MIT
npm package: @gui-chat-plugin/mindmap
Description: Interactive mind map plugin for visual brainstorming
Latest version: 0.3.1

# @gui-chat-plugin/mindmap

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fmindmap.svg)](https://www.npmjs.com/package/@gui-chat-plugin/mindmap)

Interactive mind map plugin for GUI Chat applications. Create visual mind maps for brainstorming and idea organization.

## Features

- Create mind maps with central idea and branching nodes
- Add, delete, and connect nodes interactively
- Auto-layout with rebalance functionality
- Export to PNG and PDF
- Vue and React support

## Installation

```bash
yarn add @gui-chat-plugin/mindmap
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import MindMapPlugin from "@gui-chat-plugin/mindmap/vue";

const pluginList = [
  // ... other plugins
  MindMapPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/mindmap/style.css";
```

### React Integration

```typescript
import MindMapPlugin from "@gui-chat-plugin/mindmap/react";
import "@gui-chat-plugin/mindmap/style.css";
```

### Core-only Usage

```typescript
import { executeMindMap, TOOL_DEFINITION } from "@gui-chat-plugin/mindmap";

// Create a mind map
const result = await executeMindMap(context, {
  action: "create",
  title: "Project Ideas",
  centralIdea: "New Product",
  ideas: ["Feature A", "Feature B", "Feature C"],
});
```

## API

### MindMapArgs

```typescript
interface MindMapArgs {
  action: "create" | "add_node" | "delete_node" | "connect" | "update" | "rebalance";
  title?: string;           // Title of the mind map
  centralIdea?: string;     // Central idea for new mind map
  ideas?: string[];         // Initial ideas branching from center
  parentNodeId?: string;    // Parent node ID for add_node
  newIdea?: string;         // New idea text for add_node
  nodeIdToDelete?: string;  // Node ID to delete
  fromNodeId?: string;      // Source node for connection
  toNodeId?: string;        // Target node for connection
  connectionLabel?: string; // Label for connection
}
```

### Actions

| Action | Description |
|--------|-------------|
| `create` | Create a new mind map with central idea and branches |
| `add_node` | Add a new node as child of existing node |
| `delete_node` | Delete a node and its children |
| `connect` | Create a connection between two nodes |
| `update` | Update existing mind map |
| `rebalance` | Auto-arrange nodes for better layout |

## Test Prompts

Try these prompts to test the plugin:

1. "Create a mind map about project planning"
2. "Add a new idea about marketing to the mind map"
3. "Connect the design and development nodes"

## Development

```bash
# Install dependencies
yarn install

# Run Vue demo
yarn dev

# Run React demo
yarn dev:react

# Build
yarn build

# Lint
yarn lint
```

## License

MIT
npm package: @gui-chat-plugin/mulmocast
Description: Mulmocast presentation plugin for GUI Chat applications
Latest version: 0.0.3

# @gui-chat-plugin/mulmocast

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fmulmocast.svg)](https://www.npmjs.com/package/@gui-chat-plugin/mulmocast)

Mulmocast presentation plugin for GUI Chat applications. Create presentations with AI-generated images and optional video output.

## Features

- Create presentations from MulmoScript
- AI-powered image generation for each beat
- Video generation support (requires server-side implementation)
- MulmoViewer integration for playback
- Download MulmoScript and generated videos
- Inline script editing

## Installation

```bash
yarn add @gui-chat-plugin/mulmocast
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import MulmocastPlugin from "@gui-chat-plugin/mulmocast/vue";

const pluginList = [
  // ... other plugins
  MulmocastPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/mulmocast/style.css";
```

### Core-only Usage

```typescript
import { executeMulmocast, TOOL_DEFINITION } from "@gui-chat-plugin/mulmocast";

// Create a presentation
const result = await executeMulmocast(context, {
  title: "Introduction to AI",
  lang: "en",
  beats: [
    {
      text: "Welcome to this presentation about artificial intelligence.",
      imagePrompt: "A futuristic AI robot in a modern office",
    },
    {
      text: "Let's explore how AI is transforming our world.",
    },
  ],
});
```

## API

### MulmocastArgs

```typescript
interface MulmocastArgs {
  title: string;
  lang: string;
  beats: MulmocastBeat[];
}

interface MulmocastBeat {
  text: string;         // Text spoken by presenter
  imagePrompt?: string; // Optional image generation prompt
}
```

### MulmocastToolData

```typescript
interface MulmocastToolData {
  mulmoScript: MulmoScript;
  images?: Record<string, string>;
  moviePath?: string;
  viewerJsonPath?: string;
}
```

## Requirements

This plugin requires:

- `mulmocast` npm package for MulmoScript types
- `mulmocast-viewer` npm package for playback
- Host application to provide `generateImageWithBackend` function
- Optional: Server endpoints for video generation (`/api/generate-movie`, `/api/viewer-json`, `/api/download-movie`)

## Development

```bash
# Install dependencies
yarn install

# Run demo
yarn dev

# Build
yarn build

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin:

1. "Create a short presentation about the history of the internet with 3 slides"
2. "Make a presentation explaining how photosynthesis works"
3. "Generate a presentation introducing the solar system to children"

## License

MIT
npm package: @gui-chat-plugin/music
Description: MusicXML sheet music plugin for GUI Chat
Latest version: 1.0.0

# @gui-chat-plugin/music

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fmusic.svg)](https://www.npmjs.com/package/@gui-chat-plugin/music)

MusicXML sheet music plugin for GUI Chat applications. Displays and plays sheet music from MusicXML format.

## Features

- Display sheet music from MusicXML format
- Audio playback with OpenSheetMusicDisplay and osmd-audio-player
- Tempo control
- Cursor following during playback

## Installation

```bash
yarn add @gui-chat-plugin/music
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import MusicPlugin from "@gui-chat-plugin/music/vue";

const pluginList = [
  // ... other plugins
  MusicPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/music/style.css";
```

### Core-only Usage

```typescript
import { executeMusic, TOOL_DEFINITION } from "@gui-chat-plugin/music";

// Show sheet music
const result = await executeMusic(context, {
  musicXML: "<musicxml-content>",
  title: "My Song",
});
```

## API

### MusicArgs

```typescript
interface MusicArgs {
  musicXML: string;  // The music in MusicXML format
  title?: string;    // Optional title for the music piece
}
```

### MusicToolData

```typescript
interface MusicToolData {
  musicXML: string;
}
```

## Dependencies

This plugin requires:
- `opensheetmusicdisplay`: For rendering MusicXML as sheet music
- `osmd-audio-player`: For audio playback

## Development

```bash
# Install dependencies
yarn install

# Run demo
yarn dev

# Build
yarn build

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin:

1. "Create sheet music for a simple C major scale"
2. "Write a short melody in G major"
3. "Generate sheet music for Twinkle Twinkle Little Star"

## License

MIT
npm package: @gui-chat-plugin/othello
Description: Othello/Reversi game plugin for GUI Chat
Latest version: 0.2.2

# @gui-chat-plugin/othello

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fothello.svg)](https://www.npmjs.com/package/@gui-chat-plugin/othello)

Othello/Reversi game plugin for GUI Chat applications. Play Othello against an AI assistant or let it guide you through the game.

## Features

- Full Othello/Reversi game implementation
- Interactive board with clickable moves
- Legal move indicators
- Turn tracking (user vs computer)
- Game end detection and winner announcement

## Installation

```bash
yarn add @gui-chat-plugin/othello
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import OthelloPlugin from "@gui-chat-plugin/othello/vue";

const pluginList = [
  // ... other plugins
  OthelloPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/othello/style.css";
```

### Core-only Usage

```typescript
import { executeOthello, playOthello, TOOL_DEFINITION } from "@gui-chat-plugin/othello";

// Start a new game
const result = await executeOthello(context, {
  action: "new_game",
  firstPlayer: "user",
});

// Use the game logic directly
import { playOthello } from "@gui-chat-plugin/othello";

const state = playOthello({
  action: "new_game",
  playerNames: { B: "user", W: "computer" },
});
```

## API

### OthelloArgs

```typescript
interface OthelloArgs {
  action: "new_game" | "move" | "pass";
  col?: number;        // 0-7 for move action
  row?: number;        // 0-7 for move action
  board?: Cell[][];    // Current board state
  currentSide?: Side;  // "B" or "W"
  playerNames?: { B: OthelloPlayerType; W: OthelloPlayerType };
  firstPlayer?: OthelloPlayerType;  // "user" or "computer"
}
```

### OthelloState

```typescript
interface OthelloState {
  board: OthelloBoard;      // 8x8 grid of ".", "B", or "W"
  currentSide: Side;        // Whose turn is next
  playerNames: { B: string; W: string };
  legalMoves: { row: number; col: number }[];
  counts: { B: number; W: number; empty: number };
  isTerminal: boolean;
  winner: Side | "draw" | null;
  lastAction: { type: "new_game" | "move" | "pass"; ... };
  error?: string;
}
```

## Development

```bash
# Install dependencies
yarn install

# Run demo
yarn dev

# Build
yarn build

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin:

1. "Let's play Othello! I want to go first"
2. "Start a new Othello game, you go first"
3. "Place my piece at position D3"

## License

MIT
npm package: @gui-chat-plugin/present3d
Description: 3D shape presentation plugin using ShapeScript for GUI Chat applications
Latest version: 0.0.3

# @gui-chat-plugin/present3d

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fpresent3d.svg)](https://www.npmjs.com/package/@gui-chat-plugin/present3d)

3D shape presentation plugin using ShapeScript for GUI Chat applications. Create interactive 3D visualizations with a powerful DSL.

![Screenshot](https://raw.githubusercontent.com/receptron/GUIChatPluginPresent3D/main/images/screen.png)

## Features

- Full ShapeScript language support (variables, expressions, control flow)
- Interactive 3D viewport with camera controls
- Wireframe and grid toggle
- CSG operations (union, difference, intersection)
- Built-in math and trigonometric functions
- Inline script editing

## Installation

```bash
yarn add @gui-chat-plugin/present3d
```

## Usage

### Vue Integration

```typescript
// In src/tools/index.ts
import Present3DPlugin from "@gui-chat-plugin/present3d/vue";

const pluginList = [
  // ... other plugins
  Present3DPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/present3d/style.css";
```

### Core-only Usage

```typescript
import { executePresent3D, TOOL_DEFINITION } from "@gui-chat-plugin/present3d";

// Create a 3D visualization
const result = await executePresent3D(context, {
  title: "Circular Pattern",
  script: `
define count 12
for i in 1 to count {
    define angle ((i / count) * 6.283)
    cube {
        position (cos(angle) * 3) 0 (sin(angle) * 3)
        color (i / count) 0.5 (1 - i / count)
        size 0.5
    }
}
  `,
});
```

## API

### Present3DArgs

```typescript
interface Present3DArgs {
  title: string;   // Title for the visualization
  script: string;  // ShapeScript code
}
```

### Present3DToolData

```typescript
interface Present3DToolData {
  script: string;  // The ShapeScript source code
}
```

## ShapeScript Language

### Primitives
- `cube`, `sphere`, `cylinder`, `cone`, `torus`

### Properties
- `position X Y Z` - 3D position
- `rotation X Y Z` - Rotation in half-turns
- `size X Y Z` - Scale
- `color R G B` - RGB color (0-1)
- `opacity` - Transparency (0-1)

### Variables & Expressions
```shapescript
define radius 2
define red (1 0 0)
sphere { size radius color red }
```

### Control Flow
```shapescript
for i in 1 to 5 {
    cube { position (i * 2) 0 0 }
}

if condition {
    sphere
} else {
    cube
}
```

### CSG Operations
```shapescript
difference {
    sphere { size 2 }
    cube { size 1.5 }
}
```

### Built-in Functions
- Math: `round`, `floor`, `ceil`, `abs`, `sqrt`, `pow`, `min`, `max`
- Trig: `sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `atan2`

## Development

```bash
# Install dependencies
yarn install

# Run demo
yarn dev

# Build
yarn build

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin:

1. "Create a 3D visualization of a simple house with a roof"
2. "Show me a 3D spiral staircase"
3. "Generate a 3D model of the solar system with planets orbiting the sun"

## License

MIT
npm package: @gui-chat-plugin/scroll-to-anchor
Description: Scroll to anchor plugin for GUIChat
Latest version: 0.1.2

# @gui-chat-plugin/scroll-to-anchor

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fscroll-to-anchor.svg)](https://www.npmjs.com/package/@gui-chat-plugin/scroll-to-anchor)

A scroll-to-anchor plugin for [MulmoChat](https://github.com/receptron/MulmoChat).

## Overview

This plugin allows the AI to scroll the view to a specific tool result by its anchor ID. Useful for navigating between multiple results in a conversation.

## Installation

```bash
yarn add @gui-chat-plugin/scroll-to-anchor
```

## Usage

### Vue Implementation (for MulmoChat)

```typescript
// In src/tools/index.ts
import ScrollToAnchorPlugin from "@gui-chat-plugin/scroll-to-anchor/vue";

const pluginList = [
  // ... other plugins
  ScrollToAnchorPlugin,
];

// In src/main.ts
import "@gui-chat-plugin/scroll-to-anchor/style.css";
```

### Core Only (Framework-agnostic)

```typescript
import { pluginCore, TOOL_NAME } from "@gui-chat-plugin/scroll-to-anchor";
```

## Package Exports

| Export | Description |
|--------|-------------|
| `@gui-chat-plugin/scroll-to-anchor` | Core (framework-agnostic) |
| `@gui-chat-plugin/scroll-to-anchor/vue` | Vue implementation |
| `@gui-chat-plugin/scroll-to-anchor/style.css` | Tailwind CSS styles |

## Test Prompts

1. "Show me the previous image" (after generating multiple images)
2. "Go back to the first result"
3. "Scroll to the quiz"

## Development

```bash
yarn install
yarn dev        # Start dev server
yarn build      # Build
yarn typecheck  # Type check
yarn lint       # Lint
```

## License

MIT
npm package: @gui-chat-plugin/set-image-style
Description: Set image style modifier plugin for GUIChat
Latest version: 0.1.2

# @gui-chat-plugin/set-image-style

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fset-image-style.svg)](https://www.npmjs.com/package/@gui-chat-plugin/set-image-style)

A set-image-style plugin for [MulmoChat](https://github.com/receptron/MulmoChat).

## Overview

This plugin allows users to configure the image generation style (realistic, anime, cartoon, etc.) that will be used by the image generation plugin.

## Installation

```bash
yarn add @gui-chat-plugin/set-image-style
```

## Usage

### Vue Implementation (for MulmoChat)

```typescript
// In src/tools/index.ts
import SetImageStylePlugin from "@gui-chat-plugin/set-image-style/vue";

const pluginList = [
  // ... other plugins
  SetImageStylePlugin,
];

// In src/main.ts
import "@gui-chat-plugin/set-image-style/style.css";
```

### Core Only (Framework-agnostic)

```typescript
import { pluginCore, TOOL_NAME } from "@gui-chat-plugin/set-image-style";
```

## Package Exports

| Export | Description |
|--------|-------------|
| `@gui-chat-plugin/set-image-style` | Core (framework-agnostic) |
| `@gui-chat-plugin/set-image-style/vue` | Vue implementation |
| `@gui-chat-plugin/set-image-style/style.css` | Tailwind CSS styles |

## Test Prompts

1. "Set the image style to anime"
2. "Change the image generation style to realistic"
3. "I want cartoon-style images"
4. "Use photorealistic style for images"

## Development

```bash
yarn install
yarn dev        # Start dev server
yarn build      # Build
yarn typecheck  # Type check
yarn lint       # Lint
```

## License

MIT
npm package: @gui-chat-plugin/switch-role
Description: Switch role plugin for GUIChat
Latest version: 0.2.2

# @gui-chat-plugin/switch-role

[![npm version](https://badge.fury.io/js/%40gui-chat-plugin%2Fswitch-role.svg)](https://www.npmjs.com/package/@gui-chat-plugin/switch-role)

A switch-role plugin for [MulmoChat](https://github.com/receptron/MulmoChat).

## Overview

This plugin allows users to switch between different AI assistant roles/personas during a conversation. Each role can have different system prompts and available plugins.

## Installation

```bash
yarn add @gui-chat-plugin/switch-role
```

## Usage

### Vue Implementation (for MulmoChat)

```typescript
// In src/tools/index.ts
import SwitchRolePlugin from "@gui-chat-plugin/switch-role/vue";

const pluginList = [
  // ... other plugins
  SwitchRolePlugin,
];

// In src/main.ts
import "@gui-chat-plugin/switch-role/style.css";
```

### Core Only (Framework-agnostic)

```typescript
import { pluginCore, TOOL_NAME, setRoles, getRoles } from "@gui-chat-plugin/switch-role";
```

### Configuring Roles

```typescript
import { setRoles } from "@gui-chat-plugin/switch-role";

setRoles([
  { id: "assistant", name: "General Assistant" },
  { id: "coder", name: "Coding Expert" },
  { id: "writer", name: "Creative Writer" },
]);
```

## Package Exports

| Export | Description |
|--------|-------------|
| `@gui-chat-plugin/switch-role` | Core (framework-agnostic) |
| `@gui-chat-plugin/switch-role/vue` | Vue implementation |
| `@gui-chat-plugin/switch-role/style.css` | Tailwind CSS styles |

## Test Prompts

1. "Switch to the coding assistant role"
2. "Change to the creative writer persona"
3. "What roles are available?"
4. "Switch role to listener"

## Development

```bash
yarn install
yarn dev        # Start dev server
yarn build      # Build
yarn typecheck  # Type check
yarn lint       # Lint
```

## License

MIT
npm package: @gui-chat-plugin/template
Description: GUIChat Plugin Template with Chat Integration Demo
Latest version: 0.1.2

# guichat-plugin-{plugin-name}

[![npm version](https://badge.fury.io/js/guichat-plugin-{plugin-name}.svg)](https://www.npmjs.com/package/guichat-plugin-{plugin-name})

A plugin for [MulmoChat](https://github.com/receptron/MulmoChat) - a multi-modal voice chat application with OpenAI's GPT-4 Realtime API.

## What this plugin does

{plugin-description}

## Installation

```bash
yarn add guichat-plugin-{plugin-name}
```

## Usage

### Vue Implementation (for MulmoChat)

```typescript
// In src/tools/index.ts
import Plugin from "guichat-plugin-{plugin-name}/vue";

const pluginList = [
  // ... other plugins
  Plugin,
];

// In src/main.ts
import "guichat-plugin-{plugin-name}/style.css";
```

### React Implementation

```typescript
import Plugin from "guichat-plugin-{plugin-name}/react";
import "guichat-plugin-{plugin-name}/style.css";

// Named exports
import { plugin, View, Preview } from "guichat-plugin-{plugin-name}/react";
```

### Core Only (Framework-agnostic)

```typescript
import { pluginCore, TOOL_NAME } from "guichat-plugin-{plugin-name}";
// or
import pluginCore from "guichat-plugin-{plugin-name}";
```

## Package Exports

| Export | Description |
|--------|-------------|
| `guichat-plugin-{plugin-name}` | Core (framework-agnostic) |
| `guichat-plugin-{plugin-name}/vue` | Vue implementation with UI components |
| `guichat-plugin-{plugin-name}/react` | React implementation with UI components |
| `guichat-plugin-{plugin-name}/style.css` | Tailwind CSS styles |

## Development

```bash
# Install dependencies
yarn install

# Start dev server - Vue (http://localhost:5173/)
yarn dev

# Start dev server - React (http://localhost:5173/)
yarn dev:react

# Build
yarn build

# Type check
yarn typecheck

# Lint
yarn lint
```

## Test Prompts

Try these prompts to test the plugin:

1. "{test-prompt-1}"
2. "{test-prompt-2}"
3. "{test-prompt-3}"

## License

MIT