v0.1.5 #13
Reference in New Issue
Block a user
No description provided.
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The server-side agent runs commands through a nice wrapper that uses "${@}" expansion. Sending the full command string as a single cmd field caused nice to treat it as one executable name. Now Commands.run sends cmd=/bin/sh args=["-c", cmd_string] so "${@}" expands into proper argv.- Rename `wrenn.code_interpreter` → `wrenn.code_runner` (canonical). Keep old path as deprecation alias that emits a FutureWarning on import, mirroring the existing `Sandbox` → `Capsule` pattern. Submodule shims `code_interpreter/{capsule,async_capsule,models}.py` keep direct-submodule imports working. - Fix sync/async ctor-failure-safe `__del__`: initialise `_kernel_id`, `_kernel_name`, `_proxy_client` before calling `super().__init__` so a failed creation no longer crashes the destructor with AttributeError. - Send the kernel name to Jupyter. Previously `POST /api/kernels` had no body, so the server picked an arbitrary default kernelspec. Now sends `{"name": "wrenn"}` (override via `Capsule(kernel=...)`) and reuses an existing kernel only when its `name` matches. - Preserve Jupyter `text/plain` verbatim in `Result.from_bundle`. The previous outer-quote strip was lossy (the string `'2'` became indistinguishable from the int `2`, and strings containing escaped quotes were mangled). `text` is now the `repr()` Jupyter sends. Updated the stale `test_capsule_features` quote-strip test. - Validate `run_code(language=...)`. Anything other than `"python"` now raises `ValueError` instead of being silently ignored. - Async `__del__` no longer touches the event loop; users must call `await close()` or use `async with`. - New unit suite `tests/test_code_runner_unit.py` (46 tests): MIME unpacking, deprecation alias + warning, default template + kernel, custom kernel override, ctor-failure-safe __del__, kernel create/reuse/cache, retry on 5xx, 4xx propagation, request shape, run_code stream/result/error/foreign-parent/idle/unsupported-language, async variants. - New e2e suite `tests/test_code_runner_e2e.py` (44 tests, integration marker): template == `code-runner-beta`, kernel == `wrenn`, stdout /stderr capture, state/import/function/class persistence, exceptions (Value/Name/Syntax), callbacks, multi-line, `text` repr preservation, filesystem round-trip, isolation between capsules, deprecated import path. MIME-type class covers html, markdown, json, latex, svg, javascript, png (matplotlib + seaborn), jpeg, multi-format bundles, and text-round-trip via numpy + requests. - `make test-code-runner` runs unit + e2e together. `make test` extended to include the unit file. - README: "Code Interpreter" section renamed to "Code Runner", all imports updated, `kernel=` documented, removed the incorrect "quotes stripped automatically" claim, replaced with the actual `text/plain` semantics. - CLAUDE.md: appended a "Code Runner Module" section covering module path, defaults, kernel-reuse semantics, lifecycle invariant, and the new test files + make target. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>