Metadata-Version: 2.4
Name: jupyter-agent-runner
Version: 0.1.0
Summary: JupyterLab Project Center and Chatroom frontend for Agent Runner
License: BSD 3-Clause License
        
        Copyright (c) 2026, Agent Runner contributors
        All rights reserved.
        
        Redistribution and use in source and binary forms, with or without
        modification, are permitted provided that the following conditions are met:
        
        1. Redistributions of source code must retain the above copyright notice,
           this list of conditions and the following disclaimer.
        2. Redistributions in binary form must reproduce the above copyright notice,
           this list of conditions and the following disclaimer in the documentation
           and/or other materials provided with the distribution.
        3. Neither the name of the copyright holder nor the names of its contributors
           may be used to endorse or promote products derived from this software
           without specific prior written permission.
        
        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
        AND ANY EXPRESS OR IMPLIED WARRANTIES ARE DISCLAIMED.
        
License-File: LICENSE
Classifier: Framework :: Jupyter
Classifier: Framework :: Jupyter :: JupyterLab :: 4
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.11
Requires-Dist: filelock<4,>=3.16
Requires-Dist: jupyter-server<3,>=2.14
Requires-Dist: jupyterlab<5,>=4.4
Requires-Dist: tornado<7,>=6.4
Description-Content-Type: text/markdown

# Agent Runner for JupyterLab

Agent Runner for JupyterLab is a standalone JupyterLab 4 prebuilt extension with an
authenticated Jupyter Server gateway and a bundled Pi coding agent. It exposes the
Agent Runner Project Center and project-bound Chatrooms without requiring the VS Code
extension.

The browser only talks to the same-origin Jupyter Server. The Python extension checks
`~/.agent-runner/chatbox/websocket.json` and reuses a healthy loopback Agent Runner
backend when one already owns the shared state. Otherwise, JupyterLab starts its own
single-owner backend and built-in Pi Manager. Both surfaces use the same project
descriptors and JSONL Chatroom history, while their browser-facing WebSocket routes
remain separate.

A fresh Jupyter-only installation creates Townhall plus a project for the Jupyter
Server root directory. Pi uses the existing OpenAI Codex credentials in
`~/.pi/agent/auth.json`; when credentials are absent, the Chatroom displays a
**Sign in to Pi** device-flow action. The bundled agent requires Node.js 22.19 or
newer.

## Development

All commands run from this directory and use `uv`:

```sh
uv sync --locked --all-groups
uv run jlpm install --immutable
uv run jlpm build
uv run pytest
uv run jupyter labextension develop . --overwrite
uv run jupyter server extension enable --py jupyter_agent_runner --sys-prefix
uv run jupyter lab
```

`Enter` adds a line in the Chatroom composer. `Shift+Enter` sends. The routing selector
is additive with `@agent`, `@manager`, and `@channel` mentions understood by the Agent
Runner backend.

## Build

```sh
uv run jlpm build:prod
uv build
```

The wheel contains the federated frontend assets, server-extension enablement, and
the bundled Pi runtime. The browser never reads `~/.agent-runner` directly.
