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

jupyterlab_ai_code_assistants_extension

v1.0.29

Published

Jupyterlab extension to replace individual jupyterlab_*_code_extension and integrate into one, that offers joint capability, joint settings page and individual right toolbar panels per code assistant, with the ability in settings to decide which code assi

Readme

jupyterlab_ai_code_assistants_extension

GitHub Actions npm version PyPI version Total PyPI downloads JupyterLab 4 Brought To You By KOLOMOLO Donate PayPal

A full launcher and manager for every AI code assistant in JupyterLab - Claude Code, Codex, Kimi and Gemini. Start, resume, fork, switch, and clean up CLI sessions from a side panel per assistant - one click lands you in the right terminal with the assistant already running, no duplicate tabs, no UUID hunting. One install replaces the separate jupyterlab_claude_code_extension, jupyterlab_codex_extension and jupyterlab_kimi_code_extension packages and migrates their settings and favourites automatically.

Claude Code Sessions panel

Why this extension

One principle: the vendors know best how to build the agent harness; we know best how to make it work in JupyterLab.

Chat-panel extensions re-implement the agent loop and trail the real tool. This one runs the genuine, unmodified CLIs in JupyterLab terminals - skills, subagents, MCP, hooks, plan mode, every release the day it lands. The extension owns the JupyterLab side:

  • Launching - new, resumed, or forked sessions, with or without permission prompts, no wrapper shell, correctly sized before the assistant draws its first frame
  • Finding - every project in one panel per assistant: favourites, search, live activity
  • Reusing - clicking a session focuses its existing terminal, never a duplicate
  • Managing - parallel conversations: switch, fork with a name, delete - no --resume pickers, no raw UUIDs

Features

  • One install, every assistant - Claude Code, Codex, Kimi and Gemini from a single package, each with its own right-side panel wearing its official mark
  • Provider registry - assistant-specific behaviour lives in one module per assistant behind capability flags; no core file names an assistant, and adding one touches no core file
  • Joint settings page - one settings section covering all assistants, with a per-assistant toggle (all on by default); toggling takes effect live, no JupyterLab reload
  • Three-section side panel - Favorites, Recent, and All projects, each scrolling independently
  • One-click resume - click a row to jump back into that session in a terminal; an open terminal for the project is reused instead of duplicated
  • Conversation switcher - a right-click "Switch and Manage Sessions" submenu lists a project's other conversations by name and short id with last-activity time; "Manage Sessions..." opens a searchable popup over the full list with multi-select delete and per-row open and copy-id buttons
  • Branch session - fork the current conversation into a new named session via the right-click menu; each assistant forks its own way (Claude's native --fork-session, Codex's codex fork, server-side copies for Kimi and Gemini) behind the same menu item
  • Launch modes under each assistant's own name - Claude's skip-permissions, Codex's approval bypass, Kimi's --yolo, Gemini's YOLO; unsafe variants carry a shield glyph in the launch menus
  • Coloured terminal tabs - each session's colour tints its terminal tab via the companion jupyterlab_colourful_tab_extension (installed automatically). Claude's own /color supplies its default, Kimi derives a stable colour from the conversation id; Codex and Gemini have no colour of their own until you set one, and a branched session inherits its parent's colour, which it keeps even if the parent's colour later changes or is reset
  • Your own tab colour wins - set a colour on a terminal tab and the extension remembers it for that conversation, overriding whatever the assistant chose. Reset Tab Colour (n) in the session's right-click menu hands back every colour you set by hand on that project's conversations, and appears once there is one to hand back. Use it rather than the tab menu's own Clear, which will not release a stored colour. A Codex or Kimi conversation that has never been resumed cannot be tracked yet, so a colour set on its tab is not kept
  • Favorites - star projects you keep coming back to via the right-click menu; favourites from the standalone extensions are migrated on first run
  • Remove and clean up - drop a project's history or a project's extra parallel sessions from the right-click menu, confirmation dialog first; removed files honour JupyterLab's "move files to trash" setting
  • Activity at a glance - each row shows its last activity in an aligned column; rows active within the last minute light up, rows idle for over a week dim, and rows with parallel conversations show a branch icon with the count
  • Remote control indicator and background agents (Claude) - a green dot marks sessions actively under remote control, and a conversation held by a running background agent shows a bg chip; clicking attaches to the agent instead of copying it
  • Search - fuzzy filter per panel, toggled by the funnel button
  • Presentation modes - label rows by session name or by path relative to the JupyterLab root
  • Conflict-safe upgrade - if a retired standalone extension is still installed, its panel wins and this extension stands down for that assistant instead of showing a duplicate
  • Auto-disabled when absent - an assistant whose CLI is not on PATH does not show a panel

Requirements

  • JupyterLab >= 4.0.0
  • Python >= 3.10
  • At least one assistant CLI on PATH: claude, codex, kimi, or gemini

Install

Developers must install via the project Makefile (which orchestrates clean, build, and pip install of the resulting wheel):

make install

End-users can install the published package from PyPI:

pip install jupyterlab_ai_code_assistants_extension

[!WARNING] package.json pins webpack: 5.106.0 and chalk: 4.1.2 in both resolutions and overrides. Do not remove these. webpack >= 5.106.1 changed its module-federation share identifier format and crashes the unmaintained license-webpack-plugin (split('=')[1].trim()) that @jupyterlab/builder injects into every production build; the duplicate [email protected] pulled by duplicate-package-checker-webpack-plugin crashes on Node 24+ in the build-isolation install. Without the pins, make publish and CI fail on python -m build.

Migrating from the standalone extensions

This package supersedes jupyterlab_claude_code_extension, jupyterlab_codex_extension and jupyterlab_kimi_code_extension. On first run it carries their settings and favourites over automatically; uninstall the standalones once you are ready:

pip uninstall jupyterlab_claude_code_extension jupyterlab_codex_extension jupyterlab_kimi_code_extension

Tab colours stored by versions of THIS extension before 1.0.0 are carried over and keep tinting their tabs, but Reset Tab Colour will not offer them: the store from that version cannot tell a colour you set from one a branch inherited, and offering the wrong one would strip a branch of the colour it was forked with. Set the colour on that tab once more and it becomes yours to reset.

While a standalone extension is still installed, its panel is shown and this extension's panel for that assistant stays out of the way.

Uninstall

pip uninstall jupyterlab_ai_code_assistants_extension