open-index/open-npm huggingface dataset:
npm package: @rpai/wdio-logger
Description: A helper utility for logging of WebdriverIO packages
Author: Christian Bromann
Latest version: 1.0.3

WDIO Logger Utility
===================

> A helper utility for logging of WebdriverIO packages

This package is used across all WebdriverIO packages to log information using the [`loglevel`](https://www.npmjs.com/package/loglevel) package. It can also be used for any other arbitrary Node.js project.

## Install

To install the package just call

```sh
npm install @wdio/logger
```

or when adding it to a WebdriverIO subpackage:

```sh
lerna add @wdio/logger --scope <subpackage>
```

## Usage

The package exposes a logger function that you can use to register an instance for your scoped package:

```js
import logger from '@wdio/logger'

const log = logger('myPackage')
log.info('some logs')
```

For more info see [`loglevel`](https://www.npmjs.com/package/loglevel) package on NPM.

## Custom Log Levels

This package extends the log levels available in [`loglevel`](https://www.npmjs.com/package/loglevel) by introducing a new level called `progress`.

The `progress` level is particularly useful when you need to dynamically update a specific line in the terminal. For example, it can be utilized to display the download progress of browsers or drivers.

Notably, the `progress` level is equivalent to the `info` level. Therefore, if you set the log level to `error` or `silent`, any `progress` logs will be suppressed.

It's important to mention that `progress` writes directly to `process.stdout`, and these logs won't be captured in any log files.

To ensure consistent formatting with subsequent logs while using `progress`, it's essential to clear it at the end. To do so, simply call `progress` with an empty string, which will clear the last line:

```
log.progress('')
```

### Illustrative Usage of Progress

```javascript
import logger from '@wdio/logger';

const log = logger('internal');

const totalSize = 100;
let uploadedSize = 0;

const uploadInterval = setInterval(() => {
	const chunkSize = 10;
	uploadedSize += chunkSize;
	const data = `Progress: ${(uploadedSize * 100) / totalSize}%`;
	log.progress(data);
	if (uploadedSize >= totalSize) {
		clearInterval(uploadInterval);
		log.progress(''); // Called at the end to maintain the alignment of subsequent logs.
		console.log('Upload complete.');
	}
}, 100);
```
npm package: @rpai/wdio-protocols
Description: Utility package providing information about automation protocols
Author: Christian Bromann
Latest version: 1.0.1

WebdriverIO Protocol Helper
===========================

This package stores the definition for various automation protocols such as [WebDriver](https://w3c.github.io/webdriver/) or vendor specific protocol extensions like for [SauceLabs](https://saucelabs.com/). Unless you are interested in generating a WebDriver client there should be no reason why you should need this package. This package holds the definition of the following protocols:

- [WebDriver](https://w3c.github.io/webdriver/)
- [JSON Wire Protocol](https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol)
- [Appium](http://appium.io/)
- [Mobile JSON Wire Protocol](https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md)
- [Sauce Labs](https://saucelabs.com/)
- Chrome (WebDriver extension when running Chromedriver)
- Selenium (when running Selenium Standalone Server)

## Install

To install the package, run:

```sh
npm install @wdio/protocols
```

## Usage

You can get data by importing the package as follows:

```js
import { WebDriverProtocol, MJsonWProtocol, JsonWProtocol, AppiumProtocol, ChromiumProtocol, SauceLabsProtocol, SeleniumProtocol } from '@wdio/protocols'

/**
 * get description of session command
 */
console.log(WebDriverProtocol['/session'].POST.description)
```

## TypeScript Interfaces

The package exposes TypeScript interfaces for all protocols. You can use them for your own project as follows:

```ts
import type { WebDriverCommands } from '@wdio/protocol'

import { WebDriverCommands, WebDriverCommandsAsync } from './src'

const browser = {} as WebDriverCommands
browser.sendAlertText(true)
// fails with "Argument of type 'boolean' is not assignable to parameter of type 'string'.ts(2345)"

const asyncBrowser = {} as WebDriverCommandsAsync
const a = await asyncBrowser.getTitle()
type foo = typeof a // string
```

----

For more information on WebdriverIO see the [homepage](https://webdriver.io).
npm package: @rpai/wdio-types
Description: Utility package providing type information for a variety of WebdriverIO interfaces
Author: Christian Bromann
Latest version: 1.0.1

WebdriverIO Types
=================

This package contains a bunch of TypeScript types for internal WebdriverIO consumption. Feel free however to use them in your TypeScript project too.

## Install

To install this package from NPM run:

```sh
npm i @wdio/types
```

## Example

The package exports the following major type bundles: `Capabilities`, `Clients`, `Options`, `Services`, `Frameworks` and ` Reporters`. A lot of them are very WebdriverIO specific but you can leverage some, e.g.

```js
import type { Capabilities } from '@wdio/types';

const w3cCaps: Capabilities.W3CCapabilities = {
    alwaysMatch: {...},
    firstMatch: [],
    // fails with "Object literal may only specify known properties, and 'invalid' does not exist in type 'W3CCapabilities'.ts(2322)"
    invalid: 42
}
```

For details please take a look into the individual files.

----

For more information on WebdriverIO see the [homepage](https://webdriver.io).
npm package: @rpai/webdriverio
Description: Next-gen browser and mobile automation test framework for Node.js
Author: Christian Bromann
Latest version: 1.0.5

WebdriverIO
===========

> Next-gen browser and mobile automation test framework for Node.js

This package provides an easy-to-manage API and a lot of syntactical sugar on top of the WebDriver specification. You can use WebdriverIO as a standalone package or via a test runner using [`@wdio/cli`](https://webdriver.io/docs/clioptions). WebdriverIO allows you to run tests locally using the WebDriver or Chrome DevTools protocol as well as remote user agents using cloud providers like [Sauce Labs](https://saucelabs.com/).

## Installation

You can install WebdriverIO via NPM:

```sh
npm install webdriverio
```

## Usage

WebdriverIO by default uses Puppeteer to automate a browser like Chrome, Firefox or Chromium Edge. So if you have Chrome installed, the following script should start a browser for you and get the title of the page:

```js
import { remote } from 'webdriverio'

const browser = await remote({
    capabilities: { browserName: 'chrome' }
})

await browser.navigateTo('https://www.google.com/ncr')

const searchInput = await browser.$('#lst-ib')
await searchInput.setValue('WebdriverIO')

const searchBtn = await browser.$('input[value="Google Search"]')
await searchBtn.click()

console.log(await browser.getTitle()) // outputs "WebdriverIO - Google Search"

await browser.deleteSession()
```

See the raw [protocol example](https://www.npmjs.com/package/webdriver#example) using the `webdriver` package to get a glance at the differences.

For more information on [options](https://webdriver.io/docs/options#webdriver-options), [multiremote usage](https://webdriver.io/docs/multiremote) or integration into [cloud services](https://webdriver.io/docs/cloudservices) please check out the [docs](https://webdriver.io/docs/gettingstarted).

---

<center>Package Sponsors:</center>
<p align="center">
    <a href="https://www.browserstack.com/automation-webdriverio">
        <img src="https://webdriver.io/img/sponsors/browserstack_black.svg" alt="BrowserStack" width="300" />
    </a>
    &nbsp;
    <a href="https://saucelabs.com">
        <img src="https://webdriver.io/img/sponsors/saucelabs_black.svg" alt="Sauce Labs" width="300" />
    </a>
</p>
npm package: @rpalegacy/opencode
Description: OpenClaw provider for opencode — exposes Claude (claude-local) models via the OpenClaw proxy
Latest version: 0.1.0

# @rpalegacy/opencode

OpenClaw provider package for [opencode](https://opencode.ai).

Exposes Claude (claude-local) models — Claude Opus 4.6, Claude Sonnet 4.6, and Claude Haiku 4 — via the OpenClaw local proxy at `localhost:3456`.

## Requirements

- [OpenClaw](https://docs.openclaw.ai) running with `openclaw-claude-proxy` active
- `OPENCLAW_API_KEY` environment variable set (get it from your OpenClaw config)
- Node.js >= 18

## Setup

### 1. Install OpenClaw's Claude proxy

```bash
# Install the openclaw-claude-proxy if you haven't already
npm install -g openclaw-claude-proxy
openclaw-claude-proxy
```

The proxy runs at `http://localhost:3456` and handles OAuth with your Claude Pro subscription.

### 2. Configure opencode

Add to your `opencode.json`:

```json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "openclaw": {
      "npm": "@rpalegacy/opencode",
      "env": ["OPENCLAW_API_KEY"]
    }
  }
}
```

Or use the `/connect` command in opencode's TUI and enter:
- **Provider ID**: `openclaw`
- **Base URL**: `http://localhost:3456/v1`
- **API Key**: `OPENCLAW_API_KEY` (or set the env var directly)

### 3. Use it

```bash
# Set your API key
export OPENCLAW_API_KEY="sk-ant-..."

# Run opencode with the OpenClaw provider
opencode --provider openclaw --model claude-opus-4-6

# Or in opencode's TUI
/models   # then select a Claude model
```

## Available Models

| Model | Context | Reasoning | Tool Call | Vision | Cost |
|-------|---------|-----------|-----------|--------|------|
| Claude Opus 4.6 | 200K | ✅ | ✅ | ✅ | Free* |
| Claude Sonnet 4.6 | 200K | ✅ | ✅ | ✅ | Free* |
| Claude Haiku 4 | 200K | ✅ | ✅ | ✅ | Free* |

*Free via your Claude Pro subscription through the local proxy.带宽

## How it works

`@rpalegacy/opencode` wraps the `@ai-sdk/openai-compatible` provider and configures it to point at OpenClaw's local proxy (`localhost:3456`). The proxy handles:

- OAuth authentication with your Claude Pro account
- Model routing (claude-opus-4-6, claude-sonnet-4-6, claude-haiku-4)
- API compatibility (converts between OpenAI-compatible and Anthropic APIs)

## Troubleshooting

**"Model not found" errors**
- Make sure `openclaw-claude-proxy` is running
- Verify `http://localhost:3456` is accessible
- Check that `OPENCLAW_API_KEY` is set correctly

**Authentication errors**
- The proxy uses OAuth with your Claude Pro account
- Make sure your Claude Pro subscription is active
- Try restarting the proxy: `pkill -f openclaw-claude-proxy && openclaw-claude-proxy`

## License

MIT