npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@hira-core/cli

v1.0.8

Published

CLI to build, obfuscate and package Hira automation flows into .hira format

Readme

@hira-core/cli

CLI for Hira automation developers.

It can:

  • scaffold standalone flow projects with hira init
  • add official reusable plugins with hira add
  • bundle, obfuscate, and package flows into secure .hira files with hira build

Installation

# Install globally (recommended)
npm install -g @hira-core/cli

# Check
hira --version

@hira-core/cli includes the official plugin registry package @hira-core/plugins, so developers can run hira add wallet-utils without configuring a local registry path.


Commands

hira init [name]
hira add [plugin]
hira build [entry]

hira init

Initialize a new standalone Hira flow project.

hira init
# or
hira init my-hira-flow --flow main --pm npm

Generated structure:

my-hira-flow/
├── package.json
├── package-lock.json
├── tsconfig.json
├── README.md
└── src/
    └── flows/
        └── main/
            └── v1.0.0/
                ├── index.ts
                ├── logic.ts
                ├── run.ts
                └── profiles.xlsx

run.ts uses:

  • profiles.xlsx as the input workbook
  • output.xlsx as the output workbook
  • column-letter mappings, for example B: "inputValue"
  • flow.createExcelStorage(..., __dirname) so file paths resolve from the flow version folder

After init

cd my-hira-flow
npm i
cd src/flows/main/v1.0.0
node --import tsx run.ts

To build the .hira file:

cd src/flows/main/v1.0.0
hira build

Generated projects intentionally do not use npm scripts for running flows. Run the dev runner directly with node --import tsx run.ts from the flow version folder.


hira add

Add an official Hira plugin to the current project by copying plugin source into src/plugins.

hira add wallet-utils
hira add extension-utils

Generated structure:

src/
└── plugins/
    ├── wallet-utils/
    │   └── index.ts
    └── extension-utils/
        └── index.ts

Because plugins are copied into the flow project, the project remains independent after installation and hira build bundles plugin code into the final .hira package.

List available plugins

hira add --list

Overwrite an existing plugin

hira add wallet-utils --force

Preview without writing files

hira add wallet-utils --dry-run

Local registry override for development only

hira add wallet-utils --registry packages/hira-plugins/dist

--registry <path> is only for local CLI/plugin development before publishing @hira-core/plugins. Normal developers should use:

hira add wallet-utils

Official plugins

wallet-utils

Shared wallet automation helpers, including OKX wallet support.

import { WalletUtils, OKXWalletAdapter } from "../../../../plugins/wallet-utils";

const wallet = new WalletUtils(utils, logger, new OKXWalletAdapter());
await wallet.unlock(globalInput.walletPassword);
await wallet.approve();

extension-utils

Chrome extension discovery helpers.

import { ExtensionUtils } from "../../../../plugins/extension-utils";

const extUtils = new ExtensionUtils(utils);
const okxId = await extUtils.getExtensionId("OKX");

Import paths depend on where your logic.ts file is located. For the default src/flows/main/v1.0.0/logic.ts layout, use ../../../../plugins/<plugin-name>.


hira build

Bundle, obfuscate, and package a flow into .hira format.

hira build [entry] [options]

Arguments

| Argument | Description | Default | | --- | --- | --- | | entry | Path to entry TypeScript file | ./index.ts in current directory |

Options

| Flag | Description | Default | | --- | --- | --- | | -o, --output <path> | Output .hira file path | <flow-name>.v<version>.hira | | -n, --name <name> | Flow name | Parent folder name | | -v, --ver <version> | Flow version | Current folder name, stripping v prefix | | -d, --desc <text> | Flow description | "" |

Recommended build usage

From a flow version folder:

cd src/flows/main/v1.0.0
hira build

The CLI auto-detects:

  • flow name from the parent folder, for example main
  • version from the current folder, for example v1.0.01.0.0
  • SDK version from installed @hira-core/sdk

Example output:

🚀 Starting build for: /path/to/v1.0.0/index.ts
   Flow: main v1.0.0
   Output: /path/to/v1.0.0/main.v1.0.0.hira

📦 Building flow: ...
   ✅ Found config:
      globalInput: [...]
      profileInput: [...]
🛡️  Obfuscating code...

✅ Build success: main.v1.0.0.hira
   Bundle (minified):    29.44 KB
   Bundle (obfuscated):  43.55 KB
   Bundle (gzip+base64): 16.18 KB
   Checksum (SHA-256):   145e5767e23d05e9...
   Config:               ✅ embedded in meta

Full developer workflow

npm install -g @hira-core/cli

hira init my-hira-flow --flow main --pm npm
cd my-hira-flow
npm i

hira add wallet-utils
hira add extension-utils

cd src/flows/main/v1.0.0
node --import tsx run.ts
hira build

Maintainer workflow

Build plugin registry

pnpm run build:plugins

This generates:

packages/hira-plugins/dist/
├── registry.json
└── plugins/

Build CLI

pnpm run hira-cli build

Publish order

Publish plugins first:

cd packages/hira-plugins
pnpm publish --access public --no-git-checks

Then publish CLI:

cd ../hira-compiler
pnpm publish --access public --no-git-checks

Use pnpm publish so workspace dependencies such as workspace:^ are rewritten to normal semver versions. Do not use raw npm publish while workspace protocol dependencies are present.


Changelog

v1.0.5

  • Added hira add for official Hira plugins.
  • Added bundled official plugin registry via @hira-core/plugins.
  • Added support for wallet-utils and extension-utils plugins.
  • Added --list, --force, --dry-run, and local development --registry options.

v1.0.4

  • Added hira init to scaffold standalone flow projects.
  • Auto-detect SDK version and embed it in .hira metadata.
  • Removed --author flag from hira build.

v1.0.3

  • Initial public release on npm.
  • esbuild bundling + JavaScript Obfuscator.
  • HMAC-SHA256 signing + gzip compression.
  • Auto-extract defineFlowConfig() and embed it in .hira metadata.

Related


License

ISC