feat: live Jupyter session introspection + CRLF/LF install fix#18
Merged
Conversation
Adds aexp.jupyter for live introspection of the connected kernel: - init()/whoami() return a SessionInfo composed of /proc/self/cgroup (SLURM job_id), list_running_servers (Jupyter URL/token/port/root), Jupyter HTTP /api/sessions (attached notebooks), nvidia-smi (GPU residents), and discover_other_servers for sibling Jupyters. - /aexp-jupyter-connect and /aexp-jupyter-discover slash commands. /aexp-jupyter-iterate gains a Step 0 to confirm identity before touching cells. - PostToolUse hook jupyter_connect_postuse fires after every connect_to_jupyter, telling the agent to re-run init() and state the populated fields back to the user before any further execute_code. Registered automatically when --with-jupyter was ever used (sticky bit honored). - MCP tools jupyter_introspect_current + jupyter_parse_introspection use recipe-based dispatch so the aexp MCP and Jupyter MCP stay decoupled. Also fixes a cross-platform install bug where wheels built on Windows with core.autocrlf=true shipped CRLF text files, causing aexp install to forever report skipped_conflict on every text file in any consumer repo whose on-disk copy used a different EOL convention: - .gitattributes forces LF in the working tree for every text type we ship, so future wheels always carry LF bytes regardless of build OS. - _files_identical does EOL-normalized comparison for known text extensions (binary files still compared strict-bytewise). - _copy_file writes LF for text regardless of source EOL, so even a stale CRLF wheel installs LF files on disk. - 7 new install tests cover CRLF<->LF equivalence, binary strictness, end-to-end re-install behavior, and a .gitattributes presence guard. Pyproject bumped 0.2.1 -> 0.3.0. Full suite 428/429 (the one expected fail clears once editable installs are refreshed). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds aexp.jupyter for live introspection of the connected kernel:
Also fixes a cross-platform install bug where wheels built on Windows with core.autocrlf=true shipped CRLF text files, causing aexp install to forever report skipped_conflict on every text file in any consumer repo whose on-disk copy used a different EOL convention:
Pyproject bumped 0.2.1 -> 0.3.0. Full suite 428/429 (the one expected fail clears once editable installs are refreshed).