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

@aiderdesk/extensions

v0.14.0

Published

Type definitions and examples for AiderDesk extensions

Downloads

839

Readme

@aiderdesk/extensions

TypeScript type definitions and examples for building AiderDesk extensions.

Installation

npm install @aiderdesk/extensions
# or
yarn add @aiderdesk/extensions
# or
pnpm add @aiderdesk/extensions

Usage

Import both types and runtime values from a single entry point:

import type { Extension, ExtensionContext, ToolDefinition } from '@aiderdesk/extensions';
import { ToolApprovalState } from '@aiderdesk/extensions';
import { z } from 'zod';

export default class MyExtension implements Extension {
  async onLoad(context: ExtensionContext) {
    context.log('Extension loaded!', 'info');
    
    // Runtime values are available too
    const approval = ToolApprovalState.Always;
  }
}

Note: The package provides both TypeScript type definitions and runtime JavaScript values (like enum values) from the same entry point. You can use import type for type-only imports, or regular imports for runtime values.

Example Extensions

This directory contains example extensions demonstrating various capabilities of the AiderDesk extension system.

Documentation

For comprehensive documentation on creating and using extensions, see the Extensions documentation:

Example Extensions

| Extension | Description | Capabilities | |-----------|-------------|--------------| | chunkhound-on-semantic-search-tool/ | Overrides power---semantic_search to use ChunkHound for better semantic understanding | search | | chunkhound-search/ | Provides chunkhound-search tool using ChunkHound for semantic code search | search, tools | | context-autocompletion-words/ | Automatically extracts symbols from context files and adds them to autocompletion | context | | external-rules.ts | Includes rule files from Cursor, Claude Code, and Roo Code configurations | context | | generate-tests.ts | Adds /generate-tests command to generate unit tests for files | commands | | lsp/ | LSP integration for automatic error detection after file edits and code intelligence tools (find references) | tools, code-intelligence | | permission-gate.ts | Prompts for confirmation before running dangerous bash commands (rm -rf, sudo, chmod/chown 777) | security | | pirate.ts | Adds a Pirate agent that speaks like a swashbuckling sea dog | agents, example | | plan-mode.ts | Adds a Plan mode that enforces planning before coding | modes | | plannotator/ | Plan-based development workflow with planning mode and plan review utilizing plannotator.ai | modes, tools, commands, workflow | | programmatic-tool-calls/ | Execute JavaScript code in a sandbox with access to all tools as async functions | tools | | protected-paths.ts | Blocks file operations on protected paths (.env, .git/, node_modules/) | security | | providers-quota-extension/ | Displays API quota information for Synthetic and Z.AI providers in the task status bar | ui | | redact-secrets/ | Redacts secret values from .env* files in file read results | security | | rtk/ | Transparently rewrites shell commands to RTK equivalents, reducing LLM token consumption by 60-90% | optimization, commands | | seek/ | Fast ranked code search using seek (zoekt) — replaces the internal grep tool | tools, search | | sandbox/ | OS-level sandboxing for bash commands using @anthropic-ai/sandbox-runtime | security | | sound-notification.ts | Plays a "Jobs Done" sound when a prompt finishes | notifications | | theme.ts | Adds /theme command to switch AiderDesk themes | commands | | tree-sitter-repo-map/ | Enhanced repository map using tree-sitter parsing with PageRank-based symbol ranking | context, commands | | tps-counter/ | Displays tokens per second for agent responses with UI components in usage info and message bar | metrics, ui | | ultrathink.ts | Detects prompts like "ultrathink" / "think hard" and increases OpenAI/OpenAI-compatible reasoning effort (xhigh for -max models, otherwise high) | optimization | | wakatime.ts | Tracks coding activity by sending heartbeats to WakaTime via wakatime-cli | tracking | | ui-placement-demo.ts | Demonstrates all available UI component placement locations for extension development | ui, example | | multi-model-run/ | Run the same prompt across multiple models simultaneously with a UI selector | ui |

Quick Start

1. Install an Extension

The easiest way to install extensions is using the CLI:

# Interactive selection - choose from all available extensions
npx @aiderdesk/extensions install

# Install a specific extension by ID
npx @aiderdesk/extensions install sound-notification

# Install to global extensions (available to all projects)
npx @aiderdesk/extensions install sound-notification --global

# Install from a URL (e.g., your own repository)
npx @aiderdesk/extensions install https://raw.githubusercontent.com/username/my-extension/main/my-extension.ts

Alternatively, manually copy extension files:

# Global extensions (available to all projects)
cp extensions/sound-notification.ts ~/.aider-desk/extensions/

# Project-specific extensions
cp extensions/sound-notification.ts .aider-desk/extensions/

2. Hot Reload

Extensions are automatically reloaded when files change. No restart needed!