open-index/open-npm huggingface dataset:
npm package: @karmaniverous/async-find
Description: Test values against a cascade of async functions to find the first one that passes all of them.
Author: Jason G. Williscroft
Latest version: 2.1.7

# async-find

To install:

```bash
npm install @karmaniverous/async-find
```

To import:

```js
import { asyncFind } from '@karmaniverous/async-find`;
```

See
[tests](https://github.com/karmaniverous/async-find/blob/main/lib/asyncFind/asyncFind.test.js)
for examples of usage!

# API Documentation

## Functions

<dl>
<dt><a href="#asyncFind">asyncFind(values, predicates)</a> ⇒ <code>Array</code></dt>
<dd><p>Step through a array of input values. Pass each input value through an
array of async predicate functions, passing the output of each predicate
as the input of the next, until either the predicates are exhausted or one
of them returns a falsy result.</p>
</dd>
</dl>

## Typedefs

<dl>
<dt><a href="#Predicate">Predicate</a> ⇒ <code>*</code></dt>
<dd><p>async predicate function callback</p>
</dd>
</dl>

<a name="asyncFind"></a>

## asyncFind(values, predicates) ⇒ <code>Array</code>
Step through a array of input values. Pass each input value through anarray of async predicate functions, passing the output of each predicateas the input of the next, until either the predicates are exhausted or oneof them returns a falsy result.

**Kind**: global function  
**Returns**: <code>Array</code> - An array containing the first input value that survived allpredicates, and its final predicate output.  

| Param | Type | Description |
| --- | --- | --- |
| values | <code>Array</code> | array of values |
| predicates | [<code>Array.&lt;Predicate&gt;</code>](#Predicate) | array of async predicate functions |

<a name="Predicate"></a>

## Predicate ⇒ <code>\*</code>
async predicate function callback

**Kind**: global typedef  
**Returns**: <code>\*</code> - output  

| Param | Type | Description |
| --- | --- | --- |
| [value] | <code>\*</code> | value to be tested |


---

See more great templates and other tools on
[my GitHub Profile](https://github.com/karmaniverous)!
npm package: @karmaniverous/aws-xray-tools
Description: Guarded AWS X-Ray capture utilities for AWS SDK v3 clients.
Author: Jason Williscroft
Latest version: 0.2.0

# AWS X-Ray Tools

[![npm version](https://img.shields.io/npm/v/@karmaniverous/aws-xray-tools.svg)](https://www.npmjs.com/package/@karmaniverous/aws-xray-tools) ![Node Current](https://img.shields.io/node/v/@karmaniverous/aws-xray-tools) [![docs](https://img.shields.io/badge/docs-website-blue)](https://docs.karmanivero.us/aws-xray-tools) [![changelog](https://img.shields.io/badge/changelog-latest-blue.svg)](./CHANGELOG.md) [![license](https://img.shields.io/badge/license-BSD--3--Clause-blue.svg)](./LICENSE)

Small, focused utilities for **guarded AWS X-Ray capture** of **AWS SDK v3** clients.

This package is intended to be imported by other `aws-*-tools` packages so they can offer consistent, optional X-Ray instrumentation without duplicating guarded-import logic.

## Install

```bash
npm i @karmaniverous/aws-xray-tools
```

This package is ESM-only (Node >= 20).

## Public API

```ts
import {
  captureAwsSdkV3Client,
  shouldEnableXray,
  type Logger,
  type XrayMode,
  type XrayState,
} from '@karmaniverous/aws-xray-tools';
```

## Quick start (capture an AWS SDK v3 client)

```ts
import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
import { captureAwsSdkV3Client } from '@karmaniverous/aws-xray-tools';

const base = new SecretsManagerClient({ region: 'us-east-1' });

// Guarded: does nothing unless capture is enabled and daemon is configured.
const client = captureAwsSdkV3Client(base, {
  mode: 'auto',
  daemonAddress: process.env.AWS_XRAY_DAEMON_ADDRESS,
  logger: console,
});
```

## Capture mode semantics

- `mode: 'off'`: never capture.
- `mode: 'auto'` (default): capture only when `AWS_XRAY_DAEMON_ADDRESS` is set.
- `mode: 'on'`: force capture (throws if daemon address is missing).

## aws-xray-sdk (optional peer dependency)

This package loads `aws-xray-sdk` only when capture is enabled.

To enable capture in your app/package, install the optional peer dependency:

```bash
npm i aws-xray-sdk
```

If capture is enabled but `aws-xray-sdk` is not installed, `captureAwsSdkV3Client` throws with a clear error message.

## Documentation

- STAN assistant guide: [`guides/stan-assistant-guide.md`](./guides/stan-assistant-guide.md)
- Generated API reference: https://docs.karmanivero.us/aws-xray-tools

---

Built for you with ❤️ on Bali! Find more great tools & templates on [my GitHub Profile](https://github.com/karmaniverous).
npm package: @karmaniverous/block-refresh
Description: Use as the equalityFn argument to Redux useSelector() when the selected value is an Object.
Author: Jason G. Williscroft
Latest version: 1.1.5

# block-refresh

Use as the equalityFn argument to Redux
[useSelector](https://react-redux.js.org/api/hooks#useselector) when the
selected value is an Object.

To install:

```bash
npm install @karmaniverous/block-refresh
```

To import:

```js
import { blockRefresh } from '@karmaniverous/block-refresh`;
```

See
[tests](https://github.com/karmaniverous/block-refresh/blob/main/lib/blockRefresh/blockRefresh.test.js)
for examples of usage!

# API Documentation

## Functions

<dl>
<dt><a href="#blockRefresh">blockRefresh([a], [b], [options])</a> ⇒ <code>boolean</code></dt>
<dd><p>Use as the equalityFn argument to Redux useSelector() when the selected
value is an Object. <a href="https://react-redux.js.org/api/hooks#useselector">https://react-redux.js.org/api/hooks#useselector</a></p>
</dd>
</dl>

## Typedefs

<dl>
<dt><a href="#EqalityFn">EqalityFn</a> ⇒ <code>boolean</code></dt>
<dd><p>Return true if the two inputs should be considered equal.</p>
</dd>
</dl>

<a name="blockRefresh"></a>

## blockRefresh([a], [b], [options]) ⇒ <code>boolean</code>
Use as the equalityFn argument to Redux useSelector() when the selectedvalue is an Object. https://react-redux.js.org/api/hooks#useselector

**Kind**: global function  
**Returns**: <code>boolean</code> - If true, component will not refresh.  

| Param | Type | Description |
| --- | --- | --- |
| [a] | <code>any</code> | Current useSelector result. |
| [b] | <code>any</code> | Last useSelector result. |
| [options] | <code>Object</code> | Options object. |
| [options.log] | <code>string</code> | If defined, function will console log a & b values with log   value as label when refresh is blocked. |
| [options.path] | <code>string</code> | A Lodash-style path into the selected object. If defined,   the equality test will be restricted to that path. Useful when an object   has an update timestamp. |
| [options.predicate] | [<code>EqalityFn</code>](#EqalityFn) | Returns   true if refresh should be blocked. If predicate is populated, path &   refreshUndefined are ignored. |
| [options.refreshUndefined] | <code>boolean</code> | If true, component will refresh when both   comparison values are undefined. |

**Example**  
```js
// Passed as a function, it will block component refresh if the current &// previous values are defined & pass _.isEqual.const obj = useSelector((state) => state.slice.obj, blockRefresh);
```
**Example**  
```js
// Deploy as an anonymous function to set options.const obj = useSelector(  (state) => state.slice.obj,  (a, b) => blockRefresh(a, b, options));
```
<a name="EqalityFn"></a>

## EqalityFn ⇒ <code>boolean</code>
Return true if the two inputs should be considered equal.

**Kind**: global typedef  

| Param | Type |
| --- | --- |
| [a] | <code>any</code> | 
| [b] | <code>any</code> | 


---

See more great templates and other tools on
[my GitHub Profile](https://github.com/karmaniverous)!
npm package: @karmaniverous/chain-replace
Description: Apply a chain of replacements to a string.
Author: Jason G. Williscroft
Latest version: 0.1.5

# chain-replace

To install:

```bash
npm install @karmaniverous/chain-replace
```

To import:

```js
import { chainReplace } from '@karmaniverous/chain-replace`;
```

See
[tests](https://github.com/karmaniverous/chain-replace/blob/main/lib/chainReplace/chainReplace.test.js)
for examples of usage!

# API Documentation

<a name="chainReplace"></a>

## chainReplace(input, [replacements]) ⇒ <code>string</code>
Apply a chain of replacements to a string.

**Kind**: global function  
**Returns**: <code>string</code> - String result of chained replacements.  

| Param | Type | Description |
| --- | --- | --- |
| input | <code>string</code> | Input string. |
| [replacements] | <code>Array.&lt;Array.&lt;(string\|Object), string&gt;&gt;</code> | Replacements array of [pattern: string\|RegExp, replacement: string]. |


---

See more great templates and other tools on
[my GitHub Profile](https://github.com/karmaniverous)!
npm package: @karmaniverous/dirtree
Description: Parses a directory into a nicely-formatted ASCII tree. Includes a CLI.
Author: Jason G. Williscroft
Latest version: 1.1.3

# dirtree

Parses a directory into a nicely-formatted ASCII tree. Includes a CLI.

To install:

```bash
npm install @karmaniverous/dirtree
```

To import:

```js
import { dirtree } from '@karmaniverous/dirtree`;
```

## An Example

```text
PS C:\> dirtree -d src -a size
└─ src
   ├─ cli
   │  └─ index.mjs: 1344
   └─ export
      ├─ dirtree
      │  ├─ dirtree.mjs: 2045
      │  └─ dirtree.test.mjs: 303
      └─ index.mjs: 73
```

# Command Line Interface

```text
Usage: dirtree [options]

Options:
  -a, --attribute <string>  Decorate files with an fs.Stats attribute. https://nodejs.dev/en/api/v19/fs/#fsstats
  -n, --depth <int>         Limit the tree to this depth. Default is unlimited.
  -d, --dir <string>        Path to starting directory. Defaults to current working directory.
  -e, --exclude <string>    RegExp pattern to exclude paths from tree.
  -h, --help                display help for command
```

# API Documentation

<a name="dirtree"></a>

## dirtree([options]) ⇒ <code>string</code>
Extracts an ascii tree representing the file structure under a directory path.

**Kind**: global function  
**Returns**: <code>string</code> - ASCII tree.  

| Param | Type | Description |
| --- | --- | --- |
| [options] | <code>Object</code> | Options object. |
| [options.attribute] | <code>string</code> | Decorate files with an fs.Stats attribute. https://nodejs.dev/en/api/v19/fs/#fsstats |
| [options.debug] | <code>boolean</code> | Log intermediate steps to console. |
| [options.depth] | <code>number</code> | Limit the tree to this depth. Default is unlimited. |
| [options.dir] | <code>string</code> | Path to starting directory. Defaults to current working directory. |
| [options.exclude] | <code>RegExp</code> | RegExp pattern to exclude paths from tree. |


---

See more great templates and other tools on
[my GitHub Profile](https://github.com/karmaniverous)!
npm package: @karmaniverous/dynamodb-local
Description: dockerode + dynamodb local = <3
Author: Jason Williscroft
Latest version: 0.0.1

<!-- TYPEDOC_EXCLUDE -->

> [API Documentation](https://karmaniverous.github.io/dynamodb-local) • [CHANGELOG](https://github.com/karmaniverous/dynamodb-local/tree/main/CHANGELOG.md)

<!-- /TYPEDOC_EXCLUDE -->

# Docker + DynamoDB Local

---

Built for you with ❤️ on Bali! Find more great tools & templates on [my GitHub Profile](https://github.com/karmaniverous).
npm package: @karmaniverous/entity-client-dynamodb
Description: Entity Manager integrated into a DynamoDB client wrapper.
Author: Jason Williscroft
Latest version: 0.11.5

# entity-client-dynamodb

[![npm version](https://img.shields.io/npm/v/@karmaniverous/entity-client-dynamodb.svg)](https://www.npmjs.com/package/@karmaniverous/entity-client-dynamodb) ![Node Current](https://img.shields.io/node/v/@karmaniverous/entity-client-dynamodb) <!-- TYPEDOC_EXCLUDE --> [![docs](https://img.shields.io/badge/docs-website-blue)](https://docs.karmanivero.us/entity-client-dynamodb) [![changelog](https://img.shields.io/badge/changelog-latest-blue.svg)](https://github.com/karmaniverous/entity-client-dynamodb/tree/main/CHANGELOG.md)<!-- /TYPEDOC_EXCLUDE --> [![license](https://img.shields.io/badge/license-BSD--3--Clause-blue.svg)](https://github.com/karmaniverous/entity-client-dynamodb/tree/main/LICENSE.md)

Type-safe DynamoDB (SDK v3) client for single-table design with powerful querying, great DX, and first-class TypeScript.

Install

```bash
npm i @karmaniverous/entity-client-dynamodb
```

Quick start (tiny)

```ts
import {
  EntityClient,
  generateTableDefinition,
} from '@karmaniverous/entity-client-dynamodb';
import { EntityManager } from '@karmaniverous/entity-manager';

declare const entityManager: EntityManager<any>;

const client = new EntityClient({
  entityManager,
  tableName: 'UserTable',
  region: 'local',
});

// One-time table creation (from EntityManager config)
await client.createTable({
  BillingMode: 'PAY_PER_REQUEST',
  ...generateTableDefinition(entityManager),
});

// Put / Get (storage records; strip keys for domain)
await client.putItem({ hashKey2: 'h', rangeKey: 'r', a: 1 });
const out = await client.getItem('user', { hashKey2: 'h', rangeKey: 'r' });
const item = out.Item && client.entityManager.removeKeys('user', out.Item);
```

Documentation (guides)

- [Getting Started](./guides/getting-started.md) - Install, wire, and make your first calls.
- [EntityClient: CRUD and Batches](./guides/entityclient-and-crud.md) - Record/recordset operations with strong types.
- [Querying with QueryBuilder](./guides/querying-with-querybuilder.md) - Cross-shard, multi-index querying and projections.
- [Tables & Table Definition](./guides/tables-and-definition.md) - Generate AttributeDefinitions/GSIs/KeySchema.
- [Type Inference Mental Model](./guides/type-inference-model.md) - Tokens, projection K, and values‑first config (CF-enabled index inference).
- [AWS X-Ray](./guides/aws-xray.md) - Enable tracing for the DynamoDB SDK client.

CLI Plugin (get-dotenv)

- [CLI Plugin](./guides/cli/index.md) - get-dotenv plugin (subpath export `@karmaniverous/entity-client-dynamodb/get-dotenv`) for versioned table lifecycle, transforms, migration, config overlays, Local DynamoDB, Serverless, and recipes.

API Reference

- [TypeDoc API](https://docs.karmanivero.us/entity-client-dynamodb) - Full API surface generated from the source.

License

BSD-3-Clause

---

Built for you with ❤️ on Bali! Find more great tools & templates on [my GitHub Profile](https://github.com/karmaniverous).
npm package: @karmaniverous/jeeves-meta-openclaw
Description: OpenClaw plugin for jeeves-meta — synthesis tools and virtual rule registration
Author: Jason Williscroft
Latest version: 0.10.6

# @karmaniverous/jeeves-meta-openclaw

OpenClaw plugin for [jeeves-meta](../service/). A thin HTTP client that registers interactive tools and uses [`@karmaniverous/jeeves`](https://github.com/karmaniverous/jeeves) core for managed TOOLS.md content writing and platform maintenance.

## Features

- **Eleven tools** — standard: `meta_status`, `meta_config`, `meta_config_apply`, `meta_service`; custom: `meta_list`, `meta_detail`, `meta_trigger`, `meta_preview`, `meta_seed`, `meta_unlock`, `meta_queue` (list/clear/abort)
- **MetaServiceClient** — typed HTTP client delegating all operations to the running service
- **TOOLS.md injection** — periodic refresh of entity stats via `ComponentWriter` from `@karmaniverous/jeeves` (73-second prime interval)
- **Cleanup escalation** — passes `gatewayUrl` into `ComponentWriter` so managed-content cleanup can request a gateway session when needed
- **Dependency health** — shows warnings when watcher/gateway are degraded
- **Consumer skill** — `SKILL.md` for agent integration

## Plugin Lifecycle

![Plugin Lifecycle](diagrams/assets/plugin-lifecycle.png)

## Install

```bash
npm install @karmaniverous/jeeves-meta-openclaw
```

Then run the CLI installer to register with the OpenClaw gateway:

```bash
npx @karmaniverous/jeeves-meta-openclaw install
```

## Configuration

The plugin resolves settings via a three-step fallback chain: plugin config → environment variable → default.

| Setting | Plugin Config Key | Env Var | Default |
|---------|-------------------|---------|---------|
| Service URL | `apiUrl` | `JEEVES_META_URL` | `http://127.0.0.1:1938` |
| Config Root | `configRoot` | `JEEVES_CONFIG_ROOT` | `j:/config` |

```json
{
  "plugins": {
    "entries": {
      "jeeves-meta-openclaw": {
        "enabled": true,
        "config": {
          "apiUrl": "http://127.0.0.1:1938",
          "configRoot": "j:/config"
        }
      }
    }
  }
}
```

The `configRoot` setting tells `@karmaniverous/jeeves` core where to find the platform config directory. Core derives `{configRoot}/jeeves-meta/` for component-specific configuration.

## Documentation

- **[Plugin Setup](guides/plugin-setup.md)** — installation, config, lifecycle
- **[Tools Reference](guides/tools-reference.md)** — 11 tools: standard (meta_status, meta_config, meta_config_apply, meta_service) + custom (meta_list, meta_detail, meta_trigger, meta_preview, meta_seed, meta_unlock, meta_queue)
- **[Virtual Rules](guides/virtual-rules.md)** — watcher inference rules
- **[TOOLS.md Injection](guides/tools-injection.md)** — dynamic prompt generation

## License

BSD-3-Clause