open-index/open-npm huggingface dataset:
npm package: @pinn-ai/mcp
Description: Pinn.ai MCP server — generate images & videos from Claude Desktop, Cursor, and VS Code
Latest version: 1.1.1

# @pinn-ai/mcp

Generate images and videos from AI assistants using [pinn.ai](https://pinn.ai).

Works with Claude Desktop, Cursor, VS Code, and any MCP-compatible client.

## Quick Start

### Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "pinn": {
      "command": "npx",
      "args": ["-y", "@pinn-ai/mcp"]
    }
  }
}
```

This opens a browser for OAuth login on first use.

### With API Key (no browser)

```json
{
  "mcpServers": {
    "pinn": {
      "command": "npx",
      "args": ["-y", "@pinn-ai/mcp"],
      "env": {
        "PINN_API_KEY": "pk_your_key_here"
      }
    }
  }
}
```

Get your API key at [pinn.ai/profile](https://pinn.ai/profile).

### Cursor / VS Code

These support remote MCP directly — just add the URL `https://pinn.ai/mcp` in settings.

## Tools

| Tool | Description |
|------|-------------|
| `text2image` | Generate images from text prompts |
| `image2image` | Edit/transform existing images |
| `text2video` | Generate videos from text prompts |
| `image2video` | Animate images into videos |
| `list_models` | Browse available AI models |

## License

MIT
npm package: @pinnacle0/codemod
Description: Provide codemod by using babel and recast
Author: Pinnacle
Latest version: 1.2.7

# @pinnacle0/codemod

This package provide various codemod to refactor code related to other pinnacle published packages.

Codemod does not guarantee 100% accuracy, please double check your source file after transform.

## Installation

```shell
npm install -g @pinnacle0/codemod
```

or to install locally in order to use JavaScript API provided by use

```shell
pnpm add -D @pinnacle0/codemod
```

## Usages

There to two way to execute the code: using command line and through JavaScript API

### CLI usage

```bash
# list all avaliable codemod
pinnacle-codemod list
# Transform file, add --dry flat to dry-run
pinnacle-codemod transform <codemod> <path> 
# Help for advanced usage
pinnacle-codemod --help
```

 It is recommanded to run transform with `--dry` flag first to make sure there are going to be no error during transform.

### API usage

```typescript
import { run } from '@pinnacle0/codemod'

// eg:
run('select-your-code-mod', './src/**/*.ts' , { dry: true });
```

## Development

use `new-codemod` script to generate new template for creating the new codemod.

use `codgen` script to auto update the codemod list and type.

### Core

`@babel/parser` is used to parse the source code to AST, and use `recast` to travel and transform the tree node. 

The main reason of using `recast` instead of  `@babel/travse` and `@babel/generator`  is the former tries to preserve the style of original code as much as possible where later do not.

## Known issues

- Unable to preserve code style of JSX 

- Parse HTML entities incorrectly

## License

MIT
npm package: @pinnacle0/eslint-plugin
Description: This package provides customized eslint rules for Pinnacle and a baseline config for react/typescript projects.
Latest version: 0.5.5

# @pinnacle0/eslint-plugin

This package provides customized eslint rules for Pinnacle and a baseline config for react/typescript projects.

## Usage

This package includes a config which wraps multiple other eslint plugins and presets.

For our config to work properly, `@pinnacle0/eslint-plugin` has to be installed along with
all these plugins and presets ("peer dependencies").

1.  Install @pinnacle0/eslint-plugin and the required peer dependencies:

    ```sh
    $ pnpm install --dev \
      @pinnacle/eslint-plugin \
      eslint \
      @typescript-eslint/parser \
      @typescript-eslint/eslint-plugin \
      eslint-config-prettier \
      eslint-plugin-react \
      eslint-plugin-react-hooks \
      eslint-plugin-import \
      eslint-plugin-eslint-comments

    ```

2.  Create `.eslintrc.js` at the project root directory:

    ```js
    module.exports = {
        extends: ["plugin:@pinnacle0/baseline"],
    };
    ```

3.  Add `lint` script to `package.json`:

    ```jsonc
    {
        // ...
        "scripts": {
            // ...
            "lint": "eslint --ext .js,.jsx,.ts,.tsx .",
        },
    }
    ```

4.  Run linter:
    ```sh
    $ pnpm lint
    ```

## Upgrading

It is recommended to use the latest version of all packages.

1. To upgrade, run (use arrow keys and space to select packages):

    ```sh
    $ pnpm up -iLr
    ```

2. Commit your changes:

    ```sh
    $ git commit -am "Upgraded dependencies"
    ```

3. Review the changes of `pnpm-lock.yaml` if they make sense, then commit your changes:
    ```sh
    $ git commit -a --amend --no-edit
    ```
npm package: @pinnacle0/pnpm-single-version
Description: Enforce Single version of dependencies on pnpm workspace.
Author: Pinnacle
Latest version: 1.0.9

# pnpm single version

Enforce Single version of dependencies on pnpm workspace.

## Installation

```bash
pnpm add -D pnpm-single-version
```

## Usage

Add following options to `package.json` in project root

```json5
"pnpmSingleVersion": {
    "includes": [
        // Place all the single version dependencies here
        "@babel/core",
        "esbuild",
        // glob is also supported
        "eslint-plugin-*",
        "*-plugin",
    ]
}
```

### Maunal Checking using CLI

You can `pnpm-single-version` in Terminal

```bash
pnpm pnpm-single-version
```

or

```bash
pnpm psv
```

### Automatic resolve (Recommanded)

Apart from manual checking, checking can also be done when `pnpm-lock.yaml` is resolved, where pnpm detected dependencies changes running `pnpm install` , `pnpm update` and `pnpm removed`. This is much effective.

By using `afterAllResolved` hook in `.pnpmfile.cjs`, installation process can be interrupted when non-single version dependencies is detected.

To setup it up,

1. First, install checker via

    ```shell
    pnpm pnpm-single-version install
    ```

    this command will generate a checker file inside `.psv` directory of the root directory of workspace.

2. Then you should create a `.pnpmfile.cjs` and add following code

    ```js
    const hook = require("./.psv/hook");

    module.exports = {
        hooks: {
            afterAllResolved: hook,
        },
    };
    ```

Now, when you call `pnpm install` and `pnpm update`, checking is going to be involve automatically only when have dependenices changes.

**PS: You may need to run `psv install` every time you update `pnpm-single-version`**

More about `.pnpmfile.cjs` at https://pnpm.io/pnpmfile
npm package: @pinnacle0/web-ui
Description: This UI library is mostly based on Ant Design, with enhanced features for Pinnacle group products.
Author: Pinnacle
Latest version: 0.7.12

This UI library is mostly based on Ant Design, with enhanced features for Pinnacle group products.



## Good To Know

- Every component associates with its own CSS, and tree-shakeable.

- Remember to `import "@pinnacle0/web-ui/css/global.less"` at first. 
If you want to use existing library color, `import "@pinnacle0/web-ui/css/varibale.less"` is helpful.

- Remember to wrap `<LocaleProvider>` if not using English.

- Remember to wrap `<BrowserRouter>` when using `@pinnacle0/web-ui/admin/MainLayout`. 

- Do not import anything from `@pinnacle0/web-ui/internal/*`.
npm package: @pinnacleio/react-event
Description: Declarative way to handle events outside / inside of React Component.
Author: rpunkfu
Latest version: 1.2.0

# React Event

#### Declarative way to handle events outside / inside of React Component.

[![Build Status](https://semaphoreci.com/api/v1/rpunkfu/react-event/branches/master/badge.svg)](https://semaphoreci.com/rpunkfu/react-event)
![](https://img.shields.io/badge/license-MIT-blue.svg)

### Example

```js
import enhanceWithEvent from '@pinnacleio/react-event'

class HelloWorld extends Component {
  handleEvent() { /* Do whatever you want :) */ }
  render() { return <div /> }
}

// This component calls `handleEvent` method when `mousedown` is fired anywhere.
const Foo = enhanceWithEvent('mousedown')(HelloWorld)

// This component calls `handleEvent` method when `mousedown` is fired inside it.
const Bar = enhanceWithEvent('mousedown', { inside: true })(HelloWorld)

// This component calls `handleEvent` method when `mousedown` is fired outside of it.
const Baz = enhanceWithEvent('mousedown', { outside: true })(HelloWorld)
```

### API

Our component must define method `handleEvent()` in order for enhancer to work, otherwise nothing will happen.

```js
enhanceWithEvent(
  events: String | Array<String>, 
  options: Object,
): HigherOrderComponent
```

| Parameter | Description | Example | Default Value |
|:-:|:-:|:-:|:-:|
| events | Event type(s) to listen for. | `'mousedown', ['mousedown', 'touchstart']` | Null |
| options | Where event will be accepted. | `{ outside: true }, { inside: true }` | {} |