From 7062f11b40de31f70b682afada894636c2f6feb3 Mon Sep 17 00:00:00 2001 From: Nicolas Brichet Date: Mon, 15 Jun 2026 16:08:03 +0200 Subject: [PATCH 1/4] Install servers dependencies in myBinder --- binder/postBuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/binder/postBuild b/binder/postBuild index 38b3b94..2b5f1ae 100755 --- a/binder/postBuild +++ b/binder/postBuild @@ -30,7 +30,7 @@ def _(*args, **kwargs): _(sys.executable, "-m", "pip", "check") # install the labextension -_(sys.executable, "-m", "pip", "install", "-e", ".") +_(sys.executable, "-m", "pip", "install", "-e", ".[server]") _(sys.executable, "-m", "jupyter", "labextension", "develop", "--overwrite", ".") # verify the environment the extension didn't break anything From 076604cf0814129968384ac3dfd19812f692b431 Mon Sep 17 00:00:00 2001 From: Nicolas Brichet Date: Mon, 15 Jun 2026 16:46:27 +0200 Subject: [PATCH 2/4] Attempt to fix server side handler --- jupyter_ai_tutor/app.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/jupyter_ai_tutor/app.py b/jupyter_ai_tutor/app.py index eafce2a..e474436 100644 --- a/jupyter_ai_tutor/app.py +++ b/jupyter_ai_tutor/app.py @@ -1,7 +1,6 @@ from pathlib import Path from jupyter_server.extension.application import ExtensionApp -from jupyter_server.utils import url_path_join from traitlets import Unicode from .handlers import ExplainHandler @@ -30,10 +29,5 @@ def initialize_settings(self): def initialize_handlers(self): self.handlers = [ - ( - url_path_join( - self.serverapp.base_url, "api/jupyter-ai-tutor/explain" - ), - ExplainHandler, - ) + (r"/api/jupyter-ai-tutor/explain", ExplainHandler), ] From a97f33dcb6c31c782ffb6e255eddbe822601a408 Mon Sep 17 00:00:00 2001 From: Nicolas Brichet Date: Mon, 15 Jun 2026 17:03:18 +0200 Subject: [PATCH 3/4] Improve README --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index da877a4..e240363 100644 --- a/README.md +++ b/README.md @@ -5,16 +5,23 @@ A JupyterLab extension to add an AI-powered tutor assistant to Notebooks. +[demo]('https://github.com/user-attachments/assets/0f7da09e-fa19-4655-9825-09fdca764859') + +It currently relies on [jupyter-ai-jupyternaut](https://github.com/jupyter-ai-contrib/jupyter-ai-jupyternaut) for the agent, it needs to be installed (`pip install jupyter_ai_tutor[server]`). + +Once Jupyterlab started, the model must be configured via the menu `Settings>Jupyternaut settings` (model and API key). + ## Requirements - JupyterLab >= 4.0.0 +- jupyter-ai-jupyternaut (currently the only agent compatible) ## Install To install the extension, execute: ```bash -pip install jupyter_ai_tutor +pip install jupyter_ai_tutor[server] ``` ## Uninstall From 79c01b2c820b5c12f8a65292f250887e51be1d9b Mon Sep 17 00:00:00 2001 From: Nicolas Brichet Date: Mon, 15 Jun 2026 17:08:50 +0200 Subject: [PATCH 4/4] Update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e240363..9a5ca95 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ A JupyterLab extension to add an AI-powered tutor assistant to Notebooks. -[demo]('https://github.com/user-attachments/assets/0f7da09e-fa19-4655-9825-09fdca764859') +[a screencast showing an example with jupyter-ai-tutor]('https://github.com/user-attachments/assets/0f7da09e-fa19-4655-9825-09fdca764859') It currently relies on [jupyter-ai-jupyternaut](https://github.com/jupyter-ai-contrib/jupyter-ai-jupyternaut) for the agent, it needs to be installed (`pip install jupyter_ai_tutor[server]`).