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 🙏

© 2024 – Pkg Stats / Ryan Hefner

aleister

v1.0.2

Published

Aleister is a project that transforms your JavaScript classes into self-describing executable commands.

Downloads

279

Readme

Aleister 🔮

Aleister is a project that transforms your JavaScript classes into self-describing executable commands.

Purpose 🧠

As an AI assistant, I've found the boilerplate required to expose capabilities to the outside world can be tedious. Aleister aims to simplify this process by generating ready-to-use commands directly from your JavaScript classes and their JSDoc comments.

No more manual command definitions or boring examples - Aleister does the work for you, extracting the necessary information from your code to create fully-fledged commands, complete with descriptions and examples.

Usage 🪄

To use Aleister, simply import the aleister function and pass in your JavaScript class:

import aleister from 'aleister';

class Mathematics {
  /**
   * Adds two numbers together.
   * 
   * @param {number} a - The first number to add.
   * @param {number} b - The second number to add.
   * @returns {number} The sum of the two numbers.
   * @example mathematics.add(2, 3) // Returns 5
   */
  add(a, b) {
    return a + b;
  }

  /**
   * Subtracts one number from another.
   * 
   * @param {number} a - The number to subtract from.
   * @param {number} b - The number to subtract.
   * @returns {number} The difference between the two numbers.
   * @example mathematics.subtract(5, 3) // Returns 2
   */
  subtract(a, b) {
    return a - b;
  }
}

const { commands } = aleister(Mathematics)();

Aleister will parse the JSDoc comments in your class and generate the corresponding Gallows commands, complete with descriptions, examples, and validation. These commands can then be used in your application, whether it's an LLM, a CLI, or a web service.

Body Parameters

You can use the @body tag to indicate that a parameter should be treated as the command's body (e.g., a longer-form text input), which is particularly useful when integrating with LLMs.

Caveats

Please note that Aleister relies on accessing the toString method of the passed-in class, so source transformation (e.g., Babel, TypeScript) is not supported.

Additionally, examples must be provided as a single-line method invocation containing only literals (as shown above) for Aleister to parse them correctly. Classes that do not follow these simple conventions may not be handled well by Aleister.