Skip to content

Add root-isolated online notebook environment - #740

Open
Namelessh8te wants to merge 4 commits into
Z4nzu:masterfrom
Namelessh8te:online-notebooks
Open

Add root-isolated online notebook environment#740
Namelessh8te wants to merge 4 commits into
Z4nzu:masterfrom
Namelessh8te:online-notebooks

Conversation

@Namelessh8te

@Namelessh8te Namelessh8te commented Jul 26, 2026

Copy link
Copy Markdown

Type of Change

  • New tool addition
  • Bug fix
  • Improvement / refactor
  • Documentation update

For New Tool Additions — Required Fields

Field Value
Tool name
GitHub URL
Category
Supported OS Linux / macOS / Both
Install method pip / go install / apt / git clone

Why should it be added?

Is the tool actively maintained?


Checklist

  • Title follows the format above
  • New tool class added to the correct tools/*.py file
  • TITLE, DESCRIPTION, INSTALL_COMMANDS, RUN_COMMANDS, PROJECT_URL all set
  • SUPPORTED_OS set correctly (["linux"] / ["linux", "macos"])
  • Tool added to the TOOLS list in the collection class at the bottom of the file
  • No new dependencies added to requirements.txt without discussion
  • Tested locally — install and run commands work

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a GitHub Codespaces / devcontainer setup plus two Jupyter notebooks to support running the hackingtool project in an isolated, root-capable container environment, with accompanying documentation.

Changes:

  • Add a root-run devcontainer configuration for Codespaces, including JupyterLab dependencies and port forwarding.
  • Add two notebooks: an interactive CLI launcher notebook and an environment/package helper notebook.
  • Add ONLINE_NOTEBOOK.md documentation describing how to use Codespaces and the notebooks.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
ONLINE_NOTEBOOK.md Documents how to run the notebooks in Codespaces and clarifies the isolation boundary.
Interactive-1.ipynb Provides repo-root discovery, safe command runner, and an on-demand launcher for the project CLI.
contents for hackertools.ipynb Adds OS/package-manager detection plus explicit system package installation helper.
.devcontainer/requirements.txt Declares Python dependencies needed in the devcontainer for notebook usage.
.devcontainer/devcontainer.json Defines the Codespaces/devcontainer image, root user, post-create install, and port forwarding.
Suppressed comments (2)

Interactive-1.ipynb:64

  • launch_hackingtool() tries to execute hackingtool.py, which doesn’t exist in this repo (CLI entrypoint is hackingtool.cli:main). This call will fail even after fixing repo-root detection.
    "def launch_hackingtool() -> subprocess.CompletedProcess[str]:\n",
    "    \"\"\"Launch the interactive CLI on demand; this is not called by Run All.\"\"\"\n",
    "    return run_command([sys.executable, REPO_ROOT / \"hackingtool.py\"], check=False)"

Interactive-1.ipynb:78

  • The Run-All readiness check asserts the presence of hackingtool.py, constants.py, and requirements.txt at the repo root, but this project has pyproject.toml and src/hackingtool/constants.py instead. As written, Run All will always fail in this repository.
    "required_files = [\n",
    "    REPO_ROOT / \"hackingtool.py\",\n",
    "    REPO_ROOT / \"constants.py\",\n",
    "    REPO_ROOT / \"requirements.txt\",\n",
    "]\n",

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .devcontainer/devcontainer.json Outdated
Comment thread Interactive-1.ipynb Outdated
Comment on lines +27 to +33
"def find_repo_root(start: Path | None = None) -> Path:\n",
" \"\"\"Find the repository without depending on the notebook launch directory.\"\"\"\n",
" current = (start or Path.cwd()).resolve()\n",
" for candidate in (current, *current.parents):\n",
" if (candidate / \"hackingtool.py\").is_file():\n",
" return candidate\n",
" raise FileNotFoundError(\"Could not find hackingtool.py from the current directory\")\n",
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants