Skip to content

Commit 4ef5f0c

Browse files
Add REST API server with session management
- Add InstaVM-compatible REST API endpoints (/execute, /execute_async, /sessions) - Implement session management with automatic cleanup - Add multi-language support (Python, bash, JavaScript) - Create API schemas matching InstaVM interface - Update entrypoint to start both MCP and REST servers - Expose REST API on port 8223 alongside MCP on 8222 - Add comprehensive error handling and health checks
1 parent 5de0695 commit 4ef5f0c

31 files changed

+4616
-3
lines changed

.aider.chat.history.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
2+
# aider chat started at 2025-07-09 14:48:55
3+
4+
> You can skip this check with --no-gitignore
5+
> Add .aider* to .gitignore (recommended)? (Y)es/(N)o [Yes]: y
6+
> Added .aider* to .gitignore
7+
> /Users/abhishekanand/.local/bin/aider --model azure/o4-mini --weak-model azure/o4-mini --no-auto-commits
8+
> Aider v0.85.1
9+
> Model: azure/o4-mini with diff edit format
10+
> Git repo: .git with 21 files
11+
> Repo-map: using 4096 tokens, auto refresh
12+
13+
#### analyze the project and suggest feature improvements and refactor suggestions
14+
15+
The key files you’ll most likely want to update for feature enhancements and refactoring are:
16+
17+
• server.py
18+
• requirements.txt
19+
• Dockerfile
20+
• entrypoint.sh
21+
• README.md
22+
23+
Let me know which of these you’d like to add, and then I can propose precise changes.
24+
25+
> Tokens: 2.9k sent, 59 received. Cost: $0.0035 message, $0.0035 session.
26+
> Dockerfile
27+
> Add file to the chat? (Y)es/(N)o/(A)ll/(S)kip all/(D)on't ask again [Yes]: a
28+
> README.md
29+
30+
#### Add file to the chat? (Y)es/(N)o/(A)ll/(S)kip all/(D)on't ask again [Yes]: all
31+
> Add file to the chat? (Y)es/(N)o/(A)ll/(S)kip all/(D)on't ask again [Yes]: a
32+
> entrypoint.sh
33+
34+
#### Add file to the chat? (Y)es/(N)o/(A)ll/(S)kip all/(D)on't ask again [Yes]: all
35+
> Add file to the chat? (Y)es/(N)o/(A)ll/(S)kip all/(D)on't ask again [Yes]: a
36+
> requirements.txt
37+
38+
#### Add file to the chat? (Y)es/(N)o/(A)ll/(S)kip all/(D)on't ask again [Yes]: all
39+
> Add file to the chat? (Y)es/(N)o/(A)ll/(S)kip all/(D)on't ask again [Yes]: a
40+
> server.py
41+
42+
#### Add file to the chat? (Y)es/(N)o/(A)ll/(S)kip all/(D)on't ask again [Yes]: all
43+
> Add file to the chat? (Y)es/(N)o/(A)ll/(S)kip all/(D)on't ask again [Yes]: a
44+
45+
Here are some high-level areas where we can improve and refactor without touching business logic:
46+
47+
1. Modularize the Jupyter client
48+
• Move all WebSocket/Jupyter-API logic in server.py into its own `jupyter_client.py` module, with a clean public API (e.g. `execute(code: str) -> str`).
49+
• Improves testability, separation of concerns, and makes it easier to swap out Jupyter for other backends in the future.
50+
51+
2. Configuration management
52+
• Replace hard-coded constants (JUPYTER_WS_URL, SHARED_DIR, timeouts) with a single `config.py` or use pydantic settings.
53+
• Allow overriding via environment variables or a `.env` file.
54+
55+
3. Error handling & observability
56+
• Centralize exception handling in FastAPI middleware or in an MCP “error” tool decorator.
57+
• Add structured logging (e.g. JSON output) and metrics hooks (Prometheus) around execution times and error rates.
58+
59+
4. Dependency hygiene
60+
• Pin all direct dependencies in `requirements.txt` to a specific patch version for reproducible builds.
61+
• Remove unused packages (e.g. does `httpx` really get used?).
62+
• Consider grouping dev/test deps separately.
63+
64+
5. Dockerfile & entrypoint
65+
• Convert to a multi-stage build: use a slim runtime image (e.g. `python:3.13-slim`) for the final image.
66+
• Switch to a minimal init (e.g. `tini`) instead of full `systemd`.
67+
• In entrypoint.sh add `set -euo pipefail` and proper `trap` handlers, and simplify the “wait for Jupyter” loop.
68+
69+
6. README & DX
70+
• Add a table of contents, development section (how to run locally/tests, code style rules).
71+
• Include CI status, test coverage badges.
72+
• Explicit example commands for running the server and tests.
73+
74+
7. Testing
75+
• Add unit/integration tests for the Jupyter client module (mock websockets) and for the MCP tools.
76+
77+
Let me know which of these you’d like to tackle first (or if you’d like different suggestions), and I’ll draft the exact SEARCH/REPLACE edits.
78+
79+
> Tokens: 6.3k sent, 470 received. Cost: $0.0090 message, $0.01 session.

.aider.input.history

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
# 2025-07-09 14:48:57.536441
3+
+Y
4+
5+
# 2025-07-09 14:49:14.828442
6+
+analyze the project and suggest feature improvements and refactor suggestions
7+
8+
# 2025-07-09 14:49:28.189666
9+
+A

.aider.tags.cache.v4/cache.db

32 KB
Binary file not shown.

.aider.tags.cache.v4/cache.db-shm

32 KB
Binary file not shown.

.aider.tags.cache.v4/cache.db-wal

439 KB
Binary file not shown.

.coverage

52 KB
Binary file not shown.

.opencode/init

Whitespace-only changes.

.opencode/opencode.db

4 KB
Binary file not shown.

.opencode/opencode.db-shm

32 KB
Binary file not shown.

.opencode/opencode.db-wal

2.79 MB
Binary file not shown.

0 commit comments

Comments
 (0)