open-index/open-npm huggingface dataset:
npm package: @lumiastream/obsbot-sdk
Description: Node.js native module for OBSBOT webcams (forked for Lumia Stream).
Latest version: 0.0.5

# OBSBOT SDK (Lumia Fork)

Node.js native wrapper for OBSBOT cameras used by Lumia plugins.

## Prerequisites

- Node.js `>=22.18.0` (matches `package.json`)
- Build tools for native addons:
  - macOS: Xcode Command Line Tools
  - Windows: Visual Studio Build Tools + Python
  - Linux: `build-essential`, Python, and compiler toolchain

## Build On Each Platform

Run these steps on each target OS/arch machine (for example: `darwin-arm64`, `win32-x64`):

```bash
npm install
npm run build
```

What this does:

- `npm run build` compiles `build/Release/obsbot_native.node` and stages prebuilds
- staging copies platform binaries into:
  - `prebuilds/<platform>-<arch>/obsbot_native.node`
  - and runtime libs (`libdev.dylib`, `libdev.dll`, `w32-pthreads.dll`, or `libdev.so*`) when applicable

If you need to re-stage without rebuilding, run:

```bash
npm run stage-prebuild
```

## Optional Mirror To Another Repo

To mirror staged prebuilds into another directory while staging:

```bash
OBSBOT_PREBUILD_MIRROR=/absolute/path/to/third_party/obsbot-sdk/prebuilds npm run stage-prebuild
```

This writes to `<mirror>/<platform>-<arch>/`.

## Validate The Result

After staging, verify expected files exist:

```bash
ls -la prebuilds/$(node -p "process.platform + '-' + process.arch")
```

Expected at minimum:

- `obsbot_native.node`
- platform runtime library files for that OS

## Using In The OBSBOT Plugin

If the plugin depends on npm package `@lumiastream/obsbot-sdk`, publish/update the package, then update plugin dependency version.

For local testing without publishing:

```bash
npm pack
# then in plugin repo:
# npm install /absolute/path/to/obsbot-sdk/<generated-tarball>.tgz
```
npm package: @lumiastream/plugin-cli
Description: Command-line tools for creating, building, and validating Lumia Stream plugins.
Author: Lumia Stream
Latest version: 0.1.4

# Lumia Stream Plugin CLI

The `@lumiastream/plugin-cli` package bundles the command-line tools for creating, building, and validating Lumia Stream plugins without pulling the full SDK into your runtime dependencies.

## Commands

```
npx @lumiastream/plugin-cli create <directory>
npx @lumiastream/plugin-cli build [--dir <path>] [--out <file>]
npx @lumiastream/plugin-cli validate <plugin-directory>
```

Run any command with `--help` to see detailed options.

## Template

The CLI ships with a showcase template that demonstrates logging, settings, variables, and alert handling. It mirrors the starter plugin available in this repository so the CLI can scaffold it anywhere.

## License

MIT
npm package: @lumiastream/say
Description: TTS (Text To Speech) Module for Node.js
Latest version: 0.1.1

## Installing say.js

```bash
npm install say
```

## Usage

```javascript
// automatically pick platform
const say = require("say");

// or, override the platform
const Say = require("say").Say;
const say = new Say("darwin" || "win32" || "linux");

// Get voices
console.log(
	"await say.getInstalledVoices();: ",
	await say.getInstalledVoices()
);

// Use default system voice and speed
say.speak("Hello!");

// Stop the text currently being spoken
say.stop()(async () => {
	// with a promise
	try {
		await say.speak({ text: "whats up, dog?", voice: "Good News", speed: 1.0 });
		await say.speak({
			text: "How are you today?",
			voice: "Good News",
			speed: 1.0,
		});
	} catch (error) {
		console.log(error);
	}

	console.log("text to speech complete");
})();
```

### Methods

#### Speak:

- Speed: 1 = 100%, 0.5 = 50%, 2 = 200%, etc

```javascript
say.speak(text, voice || null, speed || null, callback || null);
```

#### Stop Speaking:

```javascript
say.stop();
```

#### Get List of Installed Voice(s):

```javascript
const voices = await say.getInstalledVoices();
```
npm package: @lumiastream/tplink-tapo-cove
Description: Unified TP-Link API supporting both Kasa and Tapo devices
Author: Lumiastream
Latest version: 4.2.0

# @lumiastream/tplink-tapo-cove

Unified TP-Link API supporting both Kasa (older TP-Link devices) and Tapo (newer TP-Link devices) smart home products.

## Features

- Single API for both Kasa and Tapo devices
- Automatic protocol detection
- Device discovery (local and cloud)
- Control lights, plugs, and other smart devices
- Support for RGB colors, brightness, and color temperature
- Energy monitoring for compatible devices

## Installation

```bash
npm install @lumiastream/tplink-tapo-cove
```

## Usage

### Basic Example

```typescript
import { UnifiedTpLinkApi } from '@lumiastream/tplink-tapo-cove';

// Initialize the API
const api = new UnifiedTpLinkApi({
  email: 'your-email@example.com',
  password: 'your-password'
});

// Discover all devices
const { allDevices } = await api.discover();

// Control a device
const deviceId = allDevices[0].id;
await api.turnOn(deviceId);
await api.setBrightness(deviceId, 50);
await api.setRgb(deviceId, 255, 0, 0); // Red
```

### Device Discovery

```typescript
// Discover both Kasa and Tapo devices
const { kasaDevices, tapoDevices, allDevices } = await api.discover({
  includeKasa: true,
  includeTapo: true,
  kasaTimeout: 4000
});

// Get devices by protocol
const kasaOnly = api.getDevicesByProtocol(DeviceProtocol.KASA);
const tapoOnly = api.getDevicesByProtocol(DeviceProtocol.TAPO);
```

### Advanced Control

```typescript
// Create custom light states
const tapoState = api.createTapoLightState();
tapoState.on().brightness(75).hsl(180, 100, 50);

const kasaState = api.createKasaLightState();
kasaState.on().brightness(50).rgb(0, 255, 0);

// Apply states to devices
await api.setLightState(deviceId, tapoState.getValues());
```

## API Reference

### UnifiedTpLinkApi

Main class for controlling TP-Link devices.

**Methods:**
- `discover(options)` - Discover all devices
- `getDevice(deviceId)` - Get device by ID
- `getAllDevices()` - Get all discovered devices
- `getDevicesByProtocol(protocol)` - Filter devices by protocol
- `getDevicesByType(type)` - Filter devices by type
- `turnOn(deviceId)` / `turnOff(deviceId)` - Control power
- `setBrightness(deviceId, value)` - Set brightness (0-100)
- `setRgb(deviceId, r, g, b)` - Set RGB color
- `setHsl(deviceId, h, s, l)` - Set HSL color
- `setColorTemperature(deviceId, temp)` - Set color temperature
- `getDeviceInfo(deviceId)` - Get device information
- `getEnergyUsage(deviceId)` - Get energy usage data

### Device Protocols

- `DeviceProtocol.KASA` - Older TP-Link devices (HS, KL, LB series)
- `DeviceProtocol.TAPO` - Newer TP-Link devices (Tapo series)

## License

MIT