@@ -32,6 +32,7 @@ This is `jupyter_ai_router`, a core message routing layer for Jupyter AI. It's a
3232## Development Commands
3333
3434### Initial Setup
35+
3536``` bash
3637# Install development dependencies
3738jlpm
@@ -47,6 +48,7 @@ jupyter server extension enable jupyter_ai_router
4748```
4849
4950### Building
51+
5052``` bash
5153# Build TypeScript and JupyterLab extension (development)
5254jlpm build
@@ -59,6 +61,7 @@ jlpm watch
5961```
6062
6163### Testing
64+
6265``` bash
6366# Run Python tests with coverage
6467pytest -vv -r ap --cov jupyter_ai_router
@@ -71,6 +74,7 @@ cd ui-tests && jlpm test
7174```
7275
7376### Code Quality
77+
7478``` bash
7579# Run all linting and formatting
7680jlpm lint
@@ -85,6 +89,7 @@ jlpm stylelint # Fix CSS issues
8589```
8690
8791### Development Workflow
92+
8893``` bash
8994# Clean build artifacts
9095jlpm clean:all
@@ -99,13 +104,15 @@ jlpm dev:uninstall
99104## Code Style
100105
101106### TypeScript/JavaScript
107+
102108- Single quotes for strings
103109- No trailing commas
104110- Arrow functions preferred
105111- Interface names must start with ` I ` and be PascalCase
106112- 2-space indentation
107113
108114### Python
115+
109116- Follow standard Python conventions
110117- Use type hints where appropriate
111118- Inherit from ` LoggingConfigurable ` for components that need logging
@@ -139,4 +146,4 @@ router.observe_chat_msg(room_id, on_regular_message)
139146
140147- ** Unit tests** : Jest for TypeScript, pytest for Python
141148- ** Integration tests** : Playwright via Galata for full JupyterLab integration
142- - ** Coverage** : Aim for comprehensive test coverage, especially for routing logic
149+ - ** Coverage** : Aim for comprehensive test coverage, especially for routing logic
0 commit comments