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

aidebug

v1.0.3

Published

Automatically debug code from your terminal.

Downloads

306

Readme

Always-On Debugger

Automatically debug code from your terminal.

Overview

Always-On Debugger is a tool that enhances your terminal experience by automatically detecting errors and providing debugging assistance using AI. It acts as a wrapper around your existing terminal, intercepting commands and their outputs to offer real-time debugging support.

At present, we only support using Anthropic's Claude API. Let us know if you need OpenAI support.

https://github.com/user-attachments/assets/2a8a6d49-8b98-4319-a8de-16ef6ea23210

Loom Demo

Features

  • Mimics the terminal for every command
  • Automatically detects errors in command outputs
  • Captures context and sends it to an AI language model for analysis
  • Provides AI-generated debugging suggestions directly in the terminal

Installation

There are two ways to setup Always-On Debugger.

Option 1: Using npm

Step 1: Install the package

npm install -g aidebug

Step 2: Setup the API key for Anthropic

export ANTHROPIC_API_KEY=<PASTE_YOUR_OWN_API_KEY>

Step 3: Now you can use the debug command to debug your commands.

debug python average.py

Option 2: Manual Setup

Step 1: Clone the repo

cd ~
git clone [email protected]:samarthaggarwal/always-on-debugger.git

Step 2: Update ~/.bashrc Add the following to your ~/.bashrc or ~/.zshrc

alias debug="python ~/always-on-debugger/terminal.py"
export ANTHROPIC_API_KEY=<PASTE_YOUR_OWN_API_KEY>

Step 3: Source ~/.bashrc or ~/.zshrc . Alternatively, open a new terminal.

source ~/.bashrc

Usage

Just prefix any terminal command with debug. That's it, the debugger will automatically kick in when an error is detected and prints the error along with the suggested course of action. Here's an example:

Normally, the deverlop would only see the error.

[14:57:19] ➜  demo git:(main) ✗ python average.py
The average is: 3.0
Traceback (most recent call last):
  File "/Users/samarthaggarwal/personal/always-on-debugger/demo/average.py", line 15, in <module>
    average_of_empty = calculate_average(empty_list)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/samarthaggarwal/personal/always-on-debugger/demo/average.py", line 7, in calculate_average
    return total / count
           ~~~~~~^~~~~~~
ZeroDivisionError: division by zero

Prefixing the same command with debug prints the error along with diagnosis and recommendations.

[14:57:21] ➜  demo git:(main) ✗ debug python average.py
Traceback (most recent call last):
  File "/Users/samarthaggarwal/personal/always-on-debugger/demo/average.py", line 15, in <module>
    average_of_empty = calculate_average(empty_list)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/samarthaggarwal/personal/always-on-debugger/demo/average.py", line 7, in calculate_average
    return total / count
           ~~~~~~^~~~~~~
ZeroDivisionError: division by zero

---------------------------------------------------------------------
Debugging...

---------------------------------------------------------------------
To fix this error and improve the calculate_average function, follow these steps:

1. Modify the calculate_average function to handle empty lists:
   def calculate_average(numbers):
       if not numbers:  # Check if the list is empty
           return 0  # or you could return None, or raise a custom exception
       total = sum(numbers)
       count = len(numbers)
       return total / count

2. This modification checks if the input list is empty before performing any calculations. If it is empty, it returns 0 (or you could choose to return None or raise a custom exception, depending on how you want to handle this case).

3. Test the function with both non-empty and empty lists to ensure it works correctly in all cases.

4. If you want to keep the original loop structure, you can modify it like this:
   def calculate_average(numbers):
       total = 0
       count = 0
       for num in numbers:
           total += num
           count += 1
       if count == 0:
           return 0  # or None, or raise an exception
       return total / count

5. Choose the implementation that best fits your needs and coding style.


By implementing one of these solutions, you will prevent the ZeroDivisionError and handle empty lists gracefully.

How it works?

  1. Prefix your terminal commands with debug.
  2. If an error occurs, Always-On Debugger automatically captures the context.
  3. The error context is sent to an AI language model for analysis.
  4. Debugging suggestions are printed directly to your terminal.

Project Structure

  • debugger.py: Core Python script that orchestrates the debugging flow
  • llm.py: Handles LLM interaction (prompt generation and response parsing)
  • (Additional files for terminal wrapping and packaging)

License

MIT License