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

@loopstack/core-ui-module

v0.20.6

Published

A collection of tools for creating specific UI documents for interaction in the loopstack studio

Readme

@loopstack/core-ui-module

A module for the Loopstack AI automation framework.

This module provides tools and document types for creating UI elements that render in Loopstack Studio.

Overview

The Core UI Module enables workflows to create structured documents that display as interactive UI components. It includes the CreateDocument tool along with predefined document types for common use cases.

By using this module, you'll be able to:

  • Create documents that render as UI widgets in Loopstack Studio
  • Display chat-style messages with role and content
  • Show formatted markdown content
  • Present error messages with appropriate styling
  • Output plain text displays

This module is essential for workflows that need to present information to users through the Loopstack Studio interface.

Installation

See SETUP.md for installation and setup instructions.

Usage

Inject the tool and documents in your workflow class:

import { BlockConfig, Document, InjectTool, Workflow } from '@loopstack/common';
import {
  CreateDocument,
  ErrorDocument,
  MarkdownDocument,
  MessageDocument,
  PlainDocument,
} from '@loopstack/core-ui-module';

@Workflow({
  configFile: __dirname + '/my.workflow.yaml',
})
export class MyWorkflow {
  // Tool
  @InjectTool() createDocument: CreateDocument;

  // Documents
  @InjectDocument() messageDocument: MessageDocument;
  @InjectDocument() markdownDocument: MarkdownDocument;
  @InjectDocument() errorDocument: ErrorDocument;
  @InjectDocument() plainDocument: PlainDocument;
}

And use them in your YAML workflow configuration:

# src/my.workflow.yaml
transitions:
  - id: show_response
    from: start
    to: end
    call:
      - tool: createDocument
        args:
          document: messageDocument
          update:
            content:
              role: 'assistant'
              content: 'Hello! How can I help you today?'

Tool Reference

CreateDocument

Creates a document instance that renders as a UI widget in Loopstack Studio.

Arguments

| Argument | Type | Required | Description | | ---------- | ---------------------------------- | -------- | ------------------------------------------------------------------- | | document | string | Yes | Name of the document type to create | | id | string | No | Custom identifier for the document (auto-generated if not provided) | | validate | 'strict' | 'safe' | 'skip' | No | Schema validation mode (default: 'strict') | | update | object | No | Override document configuration, including content |

Validation Modes

  • strict (default): Throws an error if content doesn't match the document schema
  • safe: Validates content but continues with partial data on failure
  • skip: Bypasses schema validation entirely

Document Types

MessageDocument

Displays a chat-style message with role and content. Useful for conversational interfaces.

Schema:

{
  role: string; // e.g., 'assistant', 'user', 'system'
  content: string; // The message text
}

Example:

- tool: createDocument
  args:
    document: messageDocument
    update:
      content:
        role: 'assistant'
        content: 'This is a chat message'

MarkdownDocument

Renders formatted markdown content with full styling support.

Schema:

{
  markdown: string; // Markdown-formatted text
}

Example:

- tool: createDocument
  args:
    document: markdownDocument
    update:
      content:
        markdown: |
          # Heading

          This is **bold** and `code`.

ErrorDocument

Displays an error message with error-specific styling.

Schema:

{
  error: string; // Error message text
}

Example:

- tool: createDocument
  args:
    document: errorDocument
    update:
      content:
        error: 'Something went wrong'

PlainDocument

Displays plain, unformatted text.

Schema:

{
  text: string; // Plain text content
}

Example:

- tool: createDocument
  args:
    document: plainDocument
    update:
      content:
        text: 'Simple text output'

About

Author: Jakob Klippel

License: Apache-2.0

Additional Resources