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

@stallion-ai/sdk

v0.4.0

Published

SDK for building Stallion workspace plugins

Readme

@stallion-ai/sdk

SDK for building Stallion workspace plugins with consistent UI components and API access.

Installation

npm install @stallion-ai/sdk

UI Components

The SDK provides pre-built, theme-aware components for consistent styling across workspaces.

Button

import { Button } from '@stallion-ai/sdk';

function MyComponent() {
  return (
    <>
      <Button variant="primary" onClick={handleClick}>
        Primary Action
      </Button>
      
      <Button variant="secondary" size="sm">
        Secondary
      </Button>
      
      <Button variant="success" loading={isLoading}>
        Save Changes
      </Button>
      
      <Button variant="ghost" disabled>
        Disabled
      </Button>
    </>
  );
}

Props:

  • variant: 'primary' | 'secondary' | 'success' | 'ghost' (default: 'primary')
  • size: 'sm' | 'md' | 'lg' (default: 'md')
  • loading: boolean - Shows loading state
  • All standard button HTML attributes

Pill

import { Pill } from '@stallion-ai/sdk';

function MyComponent() {
  return (
    <>
      <Pill variant="primary">Active</Pill>
      
      <Pill variant="success">Completed</Pill>
      
      <Pill variant="warning">Pending</Pill>
      
      <Pill variant="error">Failed</Pill>
      
      <Pill 
        variant="default" 
        removable 
        onRemove={() => console.log('removed')}
      >
        Removable Tag
      </Pill>
    </>
  );
}

Props:

  • variant: 'default' | 'primary' | 'success' | 'warning' | 'error' (default: 'default')
  • size: 'sm' | 'md' (default: 'md')
  • removable: boolean - Shows remove button
  • onRemove: () => void - Called when remove button is clicked
  • All standard span HTML attributes

Hooks

Agent Management

import { useAgents, useAgent } from '@stallion-ai/sdk';

const agents = useAgents();
const agent = useAgent('my-agent');

Chat Operations

import { useSendMessage, useCreateChatSession } from '@stallion-ai/sdk';

const sendMessage = useSendMessage();
const createSession = useCreateChatSession();

// Send a message
sendMessage('Hello, agent!');

// Create a new chat session
createSession('my-agent');

Navigation

import { useNavigation, useDockState } from '@stallion-ai/sdk';

const { setDockState } = useNavigation();
const [isDockOpen] = useDockState();

// Open chat dock
setDockState(true);

Notifications

import { useToast, useNotifications } from '@stallion-ai/sdk';

const { showToast } = useToast();
const { notify } = useNotifications();

showToast('Success!', 'success');
notify({ title: 'New message', message: 'You have a new message' });

Tool Invocation

import { transformTool, invokeAgent } from '@stallion-ai/sdk';

// Transform tool output
const result = await transformTool(
  'my-agent',
  'tool-name',
  { param: 'value' },
  '(data) => data.items'
);

// Invoke agent silently
const response = await invokeAgent('my-agent', 'Do something');

Workspace Navigation

import { useWorkspaceNavigation } from '@stallion-ai/sdk';

const { getTabState, setTabState } = useWorkspaceNavigation();

// Save state
setTabState('my-tab', 'key=value&other=data');

// Restore state
const state = getTabState('my-tab');

Theme Variables

All components use CSS variables for theming:

  • --color-primary - Primary brand color
  • --color-success - Success state color
  • --color-warning - Warning state color
  • --color-error - Error state color
  • --color-bg - Background color
  • --color-bg-secondary - Secondary background
  • --color-text - Primary text color
  • --color-text-secondary - Secondary text color
  • --color-border - Border color

Components automatically adapt to light/dark mode.