open-index/open-npm huggingface dataset:
npm package: @lab3-ai/plugin-polymarket-scanner
Description: Scans Polymarket via Gamma API, uses AI to analyze relevance, saves to Supabase, and triggers notifications
Latest version: 0.1.2

# Polymarket Scanner Plugin

Paperclip plugin that scans Polymarket markets via the Gamma API, uses AI to analyze relevance, saves results to Supabase, and emits events for downstream notifications.

## Prerequisites

- Paperclip instance running
- Supabase project (free tier OK)
- A Paperclip agent with Claude adapter (for AI analysis)

## Installation

```bash
paperclipai plugin install @lab3-ai/plugin-polymarket-scanner
```

## Supabase Setup

Run the SQL in `supabase-schema.sql` in your Supabase Dashboard > SQL Editor.

## Configuration

| Key | Type | Required | Description |
|-----|------|----------|-------------|
| `supabaseUrl` | string | Yes | Supabase project URL |
| `supabaseServiceKey` | secret | Yes | Supabase service role key |
| `companyId` | string | Yes | Paperclip company ID |
| `keywords` | string[] | Yes | Keywords to search (e.g. ["Bitcoin", "AI"]) |
| `agentSlug` | string | Yes | Paperclip agent slug for AI analysis |
| `minVolume` | number | No | Minimum trading volume (default: 1000) |
| `minAiRelevanceScore` | number | No | Minimum AI score to trigger notification (default: 0.6) |
| `scanIntervalMinutes` | number | No | Scan interval in minutes (default: 60) |

## How It Works

1. **Keyword Filter**: Fetches markets from Gamma API matching configured keywords
2. **Volume Filter**: Filters markets below minimum volume
3. **AI Analysis**: Sends markets to a Paperclip agent for relevance scoring (0-1)
4. **Save**: Upserts all discovered markets to Supabase `polymarket_markets` table
5. **Notify**: Emits `new_markets` event for relevant markets not previously notified

## Events

Emits: `plugin.paperclipai.plugin-polymarket-scanner.new_markets`

Install the Telegram Notifier plugin to receive notifications from this event.
npm package: @lab3-ai/plugin-telegram-notifier
Description: Sends Polymarket alerts to a Telegram group via bot
Latest version: 0.1.2

# Telegram Notifier Plugin

Paperclip plugin that sends Polymarket alerts to a Telegram group when the Polymarket Scanner finds relevant markets.

## Prerequisites

- Paperclip instance running
- Telegram bot created via BotFather (with bot token)
- Bot added to the target Telegram group
- Polymarket Scanner plugin installed and configured
- Supabase project (same as Polymarket Scanner)

## Installation

```bash
paperclipai plugin install @lab3-ai/plugin-telegram-notifier
```

## Configuration

| Key | Type | Required | Description |
|-----|------|----------|-------------|
| `botToken` | secret | Yes | Telegram bot token from BotFather |
| `chatId` | string | Yes | Telegram group chat ID |
| `supabaseUrl` | string | Yes | Supabase project URL |
| `supabaseServiceKey` | secret | Yes | Supabase service role key |

## How It Works

- Subscribes to `plugin.paperclipai.plugin-polymarket-scanner.new_markets` event
- When triggered, formats each market as a text message
- Sends messages to the configured Telegram group via Bot API
- Rate limits at 1 message per 3 seconds (Telegram group limit)
- Updates `notified_at` in Supabase after sending
- Retries failed sends up to 3 times with exponential backoff

## Message Format

```
New Polymarket Alert

Q: Will Bitcoin reach $100k by July 2026?
Yes: 72% | No: 28%
AI Score: 0.85

https://polymarket.com/event/btc-100k
```

## Testing

Use the "Send Test Message" button in the plugin settings page to verify your bot token and chat ID are configured correctly.
npm package: @lab3-ai/plugin-x-scanner
Description: Scans X (Twitter) posts from configured members via RapidAPI and saves to Supabase
Latest version: 0.1.2

# X Post Scanner Plugin

Paperclip plugin that scans X (Twitter) posts from configured members via RapidAPI and saves them to Supabase.

## Prerequisites

- Paperclip instance running
- Supabase project (free tier OK)
- RapidAPI account with a Twitter/X API endpoint subscription (e.g. twitter-api45)

## Installation

```bash
paperclipai plugin install @lab3-ai/plugin-x-scanner
```

Or install from local path (development):

```bash
curl -X POST http://127.0.0.1:3100/api/plugins/install \
  -H "Content-Type: application/json" \
  -d '{"packageName":"/absolute/path/to/plugin-x-scanner","isLocalPath":true}'
```

## Supabase Setup

Run the SQL in `supabase-schema.sql` in your Supabase Dashboard > SQL Editor.

## Configuration

Set these values in the plugin configuration panel:

| Key | Type | Required | Description |
|-----|------|----------|-------------|
| `rapidApiKey` | secret | Yes | RapidAPI key (stored as secret reference) |
| `supabaseUrl` | string | Yes | Supabase project URL |
| `supabaseServiceKey` | secret | Yes | Supabase service role key |
| `companyId` | string | Yes | Paperclip company ID |
| `members` | string[] | Yes | Twitter handles to scan (without @) |
| `scanIntervalMinutes` | number | No | Scan interval in minutes (default: 15) |
| `maxPostsPerMember` | number | No | Max posts per member per scan (default: 20) |

## How It Works

- Runs a cron job every 15 minutes (configurable)
- For each configured member, fetches recent posts via RapidAPI
- Filters posts newer than the last scan timestamp
- Upserts new posts to Supabase `x_posts` table (dedup by post_id)
- Logs activity to Paperclip activity log
npm package: @lab34/sql-anonymizer
Description: A tool to anonymize sensitive data in SQL files
Author: Jose Constela
Latest version: 0.9.4

# SQL Anonymizer

A command-line tool to anonymize sensitive data in large SQL files, using streams. This tool works on both Windows and Unix-like systems.

## Features

- Anonymizes specific columns in SQL INSERT statements
- Preserves SQL structure and formatting
- Works with large SQL files
- Cross-platform compatibility (Windows, macOS, Linux)
- Configurable column selection

## Usage

### Command Line

```bash
npx @lab34/sql-anonymizer -i <input-file> -o <output-file> -t <table-name> -c <column-numbers>
```

### Options

- `-i, --input`: Path to the input SQL file (required)
- `-o, --output`: Path to the output anonymized SQL file (required)
- `-t, --table`: Name of the table to target (e.g., public.products or products) (required)
- `-c, --columns`: Comma-separated list of 1-based column numbers to anonymize (required)
- `-h, --help`: Show help information

### Example

```bash
npx @lab34/sql-anonymizer -i data.sql -o anonymized.sql -t users -c 2,3,5
```

This will anonymize columns 2, 3, and 5 in all INSERT statements for the "users" table in data.sql and save the result to anonymized.sql.

## How It Works

1. The tool parses the input SQL file and identifies INSERT statements for the specified table.
2. For each matching INSERT statement, it extracts the values and replaces the specified columns with *random strings*.
3. The anonymized SQL is written to the output file, preserving the original structure.

## Notes for Windows Users

- The tool handles Windows-style line endings (CRLF) correctly
- File paths can use either forward slashes (/) or backslashes (\\)
- Output directories are created automatically if they don't exist

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## License

This project is licensed under the MIT License - see the LICENSE file for details.
npm package: @lab49/ticker
Description: A scrolling ticker component, which will display a horizontaly scrolling list of items on screen, can be used by any javascript based framework
Author: lab49
Latest version: 0.0.1-beta.3

# @lab49/ticker

[![codecov](https://codecov.io/gh/lab49/ticker/branch/main/graph/badge.svg)](https://codecov.io/gh/lab49/ticker) [![.github/workflows/cicd.yml](https://github.com/lab49/ticker/actions/workflows/cicd.yml/badge.svg)](https://github.com/lab49/ticker/actions/workflows/cicd.yml) [![npm version](https://img.shields.io/npm/v/@lab49/ticker?label=version&color=%2354C536&logo=npm)](https://www.npmjs.com/package/@lab49/ticker) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg)](code_of_conduct.md)


<h3>&nbsp;</h3>
<p align="center">
  <img src="https://github.com/lab49/ticker/blob/272a396dbc570df0c460ec0c7f23ce129039745b/.github/ticker.gif?raw=true">
  <p align="center">Render a side-to-side scrolling ticker, just like what you see on the news!</p>
</p>
<h3>&nbsp;</h3>

`@lab49/ticker` is a scrolling ticker component, which will display a horizontaly scrolling list of items on screen.

It is developed in Angular as a Web Component, and can be used inside framework like Angular, React, Vue or even vanilla JavaScript.

While the basic use case of `@lab49/ticker` is to show running price data, there's plenty of other use cases such as a showcase of products for an online store, fun embelishments on marketing pages, or anything else where a sidescrolling list could be a fun addition to a UI!

`@lab49/ticker` tries to be extremely unopinionated about styling, and as such, includes very little actual style rules. There's plenty of examples in the included demo website that show how you can use the rendered class names to create your own beautiful experiences.

## Features

- Written in TypeScript
- Small, simple, configurable, performant
- Maintained by a team of finance industry professionals

## Table of contents

- [Demo](#demo)
- [Installation](#installation)
- [Usage](#usage)
- [License](#License)

## Demo
Hosted demo: [https://develop--6479eded53b43e40e5576bed.chromatic.com/](https://develop--6479eded53b43e40e5576bed.chromatic.com/)

###### [⇡ Top](#table-of-contents)

## Installation

```sh
npm install @lab49/ticker
```

###### [⇡ Top](#table-of-contents)

## Usage

[Angular](https://github.com/lab49/ticker/tree/main/examples/angular)

[React](https://github.com/lab49/ticker/tree/main/examples/react)

[Plain JavaScript](https://github.com/lab49/ticker/tree/main/examples/javascript)
 
 
###### [⇡ Top](#table-of-contents)


## Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

###### [⇡ Top](#table-of-contents)

## License

[MIT](https://choosealicense.com/licenses/mit/)

###### [⇡ Top](#table-of-contents)
npm package: @lab4studio/postcss-px-to-rem
Description: PostCSS plugin to convert px to rem/em with advanced syntax support
Author: Lab4Studio
Latest version: 1.0.8

# postcss-px-to-rem

A lightweight [PostCSS](https://github.com/postcss/postcss) plugin that converts pixel (`px`) units to relative `rem` or `em` units—improving scalability and accessibility in your CSS.

```css
h1 {
    @apply text-[length:rem(32px_16px_3)];
}
```

---

## Installation

Install via npm:

```bash
npm install -D @lab4studio/postcss-px-to-rem
```

Then add the plugin to your `postcss.config.cjs`:

```js
module.exports = {
    plugins: {
        '@lab4studio/postcss-px-to-rem': {
            base: 16,
            precision: 2,
        },
    },
};
```

> **Note:** Both `base` and `precision` options are optional. Defaults are `base: 16` and `precision: 4`.

---

## Why use it?

While pixel units are convenient, they do not scale with user preferences—such as browser-level font size settings. This plugin allows you to retain the simplicity of `px` while outputting responsive and accessible `rem`/`em` values.

---

## Usage

This plugin parses and converts any `rem(...)` or `em(...)` functions inside your CSS values:

```css
h1 {
    @apply text-[length:rem(32px_16px_3)];
}

<div class="px-[em(13_12_2)]">{{ markdown }}</div>
```

> **Note:** You can omit the unit if using the plugin in a compatible utility or expression context.

---

## Input → Output Example

```css
/* Input */
h1 {
    margin: 0 0 rem(16px);
    font-size: rem(20px_10);
    line-height: 1.2;
    letter-spacing: em(1px);
}
```

```css
/* Output */
h1 {
    margin: 0 0 1rem;
    font-size: 2rem;
    line-height: 1.2;
    letter-spacing: 0.0625em;
}
```

---

## Plugin Options

```js
{
    base: 16,       // Base font size to calculate rem/em values
    precision: 5    // Decimal precision for converted values
}
```

- **`base`** (`number`) – The root font size used as a reference for conversion.
- **`precision`** (`number`) – Number of decimal places to retain in the result.

---

## License

MIT License – see [LICENSE-MIT](./LICENSE-MIT) for details.