diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9d4712a --- /dev/null +++ b/.gitignore @@ -0,0 +1,269 @@ +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### macOS template +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Python template +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +.idea/ + +_autosummary +_tmp diff --git a/Makefile b/Makefile index 231f7ee..14322b0 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,9 @@ check: lint types tests: check uv run pytest --cov=contree_cli --cov-report=term-missing +docs-mintlify: + $(MAKE) -C docs mintlify + docs: $(MAKE) -C docs html diff --git a/docs/Makefile b/docs/Makefile index c25a429..17bd382 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -11,5 +11,15 @@ help: html: $(SPHINXBUILD) -b html "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS) +mintlify-build: + $(SPHINXBUILD) -b mintlify "$(SOURCEDIR)" "$(BUILDDIR)/mintlify" $(SPHINXOPTS) + +mintlify-clean: + rm -rf $(BUILDDIR)/mintlify + +mintlify: + $(MAKE) mintlify-clean + $(MAKE) mintlify-build + clean: rm -rf $(BUILDDIR) diff --git a/docs/commands/agent.md b/docs/commands/agent.md index c56f145..a3b7f88 100644 --- a/docs/commands/agent.md +++ b/docs/commands/agent.md @@ -1,3 +1,7 @@ +--- +icon: robot +--- + # agent - Coding-agent manual Display the coding-agent manual — a guide for AI agents and automated diff --git a/docs/commands/auth.md b/docs/commands/auth.md index ee3d539..02aade0 100644 --- a/docs/commands/auth.md +++ b/docs/commands/auth.md @@ -1,3 +1,7 @@ +--- +icon: key +--- + # auth - Configure credentials and profiles Configure authentication tokens and manage profiles. Each profile stores diff --git a/docs/commands/build.md b/docs/commands/build.md index d63820b..9edac44 100644 --- a/docs/commands/build.md +++ b/docs/commands/build.md @@ -1,4 +1,9 @@ +--- +icon: hammer +--- + % build command reference for the Docker-style Dockerfile interpreter + # build - Build an image from a Dockerfile Build an image from a `Dockerfile`. Each directive runs against the diff --git a/docs/commands/cat.md b/docs/commands/cat.md index 5aab885..be5e399 100644 --- a/docs/commands/cat.md +++ b/docs/commands/cat.md @@ -1,3 +1,7 @@ +--- +icon: file-lines +--- + # cat - Show file content from the image Display the contents of a file from the session image. diff --git a/docs/commands/cd.md b/docs/commands/cd.md index fe66be4..541c639 100644 --- a/docs/commands/cd.md +++ b/docs/commands/cd.md @@ -1,3 +1,7 @@ +--- +icon: folder +--- + # cd - Change session working directory Change the working directory for subsequent commands in the current session. diff --git a/docs/commands/cp.md b/docs/commands/cp.md index e02257e..2319e2c 100644 --- a/docs/commands/cp.md +++ b/docs/commands/cp.md @@ -1,3 +1,7 @@ +--- +icon: copy +--- + # cp - Download a file from the image Download a file from the session image to a local path. diff --git a/docs/commands/env.md b/docs/commands/env.md index b841ce4..2142a7e 100644 --- a/docs/commands/env.md +++ b/docs/commands/env.md @@ -1,3 +1,7 @@ +--- +icon: leaf +--- + # env - Manage session environment variables Manage session-level environment variables. Variables set with `env` are diff --git a/docs/commands/file.md b/docs/commands/file.md index 0b63a88..f439c23 100644 --- a/docs/commands/file.md +++ b/docs/commands/file.md @@ -1,3 +1,7 @@ +--- +icon: file +--- + # file - Stage file edits for the next run Stage file changes for the next `contree run`. Pending files are diff --git a/docs/commands/images.md b/docs/commands/images.md index b78c882..4480407 100644 --- a/docs/commands/images.md +++ b/docs/commands/images.md @@ -1,3 +1,7 @@ +--- +icon: layer-group +--- + # images - List and import images List images in the project. Images are the filesystem snapshots that sandboxes diff --git a/docs/commands/index.md b/docs/commands/index.md index 4d92285..60db58d 100644 --- a/docs/commands/index.md +++ b/docs/commands/index.md @@ -1,3 +1,7 @@ +--- +icon: book-open-cover +--- + # Command Reference ```{terminal-shell} contree --help @@ -5,7 +9,6 @@ ```{toctree} :maxdepth: 1 -:caption: Commands auth use diff --git a/docs/commands/kill.md b/docs/commands/kill.md index e466b35..0021674 100644 --- a/docs/commands/kill.md +++ b/docs/commands/kill.md @@ -1,3 +1,7 @@ +--- +icon: circle-xmark +--- + # kill - Cancel operations :::{note} diff --git a/docs/commands/ls.md b/docs/commands/ls.md index 0abbcd7..0c9a4ad 100644 --- a/docs/commands/ls.md +++ b/docs/commands/ls.md @@ -1,3 +1,7 @@ +--- +icon: list-ul +--- + # ls - List files in the image List files and directories in the session image without spawning a sandbox. diff --git a/docs/commands/operation.md b/docs/commands/operation.md index 676abf6..674ca67 100644 --- a/docs/commands/operation.md +++ b/docs/commands/operation.md @@ -1,3 +1,7 @@ +--- +icon: spinner +--- + # operation - Manage operations Manage operations under a single namespace. Aggregates `ps` (list), diff --git a/docs/commands/ps.md b/docs/commands/ps.md index fd59e07..c9e8326 100644 --- a/docs/commands/ps.md +++ b/docs/commands/ps.md @@ -1,3 +1,7 @@ +--- +icon: list +--- + # ps - List activity :::{note} diff --git a/docs/commands/run.md b/docs/commands/run.md index cd0c7b3..d23cf71 100644 --- a/docs/commands/run.md +++ b/docs/commands/run.md @@ -1,3 +1,7 @@ +--- +icon: play +--- + # run - Execute a command in the sandbox Spawn a sandbox instance from the session image and execute a command. diff --git a/docs/commands/session.md b/docs/commands/session.md index c157c71..50f8345 100644 --- a/docs/commands/session.md +++ b/docs/commands/session.md @@ -1,3 +1,7 @@ +--- +icon: clock +--- + # session - Manage sessions, branches, history Manage session branches and history. Sessions track the image state as you diff --git a/docs/commands/shell.md b/docs/commands/shell.md index 8881ddc..97c98ec 100644 --- a/docs/commands/shell.md +++ b/docs/commands/shell.md @@ -1,3 +1,7 @@ +--- +icon: terminal +--- + # shell - Interactive REPL Start an interactive REPL for managing sessions and running sandbox commands. diff --git a/docs/commands/show.md b/docs/commands/show.md index 584a40a..2a44ef2 100644 --- a/docs/commands/show.md +++ b/docs/commands/show.md @@ -1,3 +1,7 @@ +--- +icon: magnifying-glass +--- + # show - Inspect an operation :::{note} diff --git a/docs/commands/skill.md b/docs/commands/skill.md index c0e055d..c747c2a 100644 --- a/docs/commands/skill.md +++ b/docs/commands/skill.md @@ -1,3 +1,7 @@ +--- +icon: wand-magic-sparkles +--- + # skill - Install agent skills Install, remove, or upgrade ConTree agent skills for Codex and Claude Code. diff --git a/docs/commands/tag.md b/docs/commands/tag.md index 96d4fb9..c0db197 100644 --- a/docs/commands/tag.md +++ b/docs/commands/tag.md @@ -1,3 +1,7 @@ +--- +icon: tag +--- + # tag - Tag or untag an image Assign or remove a tag from an image. Tags are human-readable names that diff --git a/docs/commands/use.md b/docs/commands/use.md index 9075bca..24dfba6 100644 --- a/docs/commands/use.md +++ b/docs/commands/use.md @@ -1,3 +1,7 @@ +--- +icon: cube +--- + # use - Choose an image for the session Set the session image or show the current session state. diff --git a/docs/conf.py b/docs/conf.py index 2bcf653..569fdcf 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,6 +17,7 @@ "sphinx_design", "contree_doc_ext", "terminal_ext", + "sphinx_mintlify_output", ] exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] @@ -39,3 +40,12 @@ "navigation_with_keys": True, "sidebar_hide_name": True, } + + +# -- Mintlify output -------------------------------------------------------- + +mintlify_docs_json = { + "name": "ConTree CLI", + "theme": "mint", + "logo": {"light": "_static/logo.svg", "dark": "_static/logo.svg"}, +} diff --git a/docs/index.md b/docs/index.md index bcd1f13..87275ec 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,4 +1,8 @@ -# contree-cli +--- +icon: book-open-lines +--- + +# Overview Command-line client for the [ConTree](https://contree.dev) sandboxing platform. @@ -108,7 +112,7 @@ new instance. :::: ```{toctree} -:maxdepth: 2 +:maxdepth: 1 :hidden: tutorial/index diff --git a/docs/tutorial/build.md b/docs/tutorial/build.md index da6d106..8b96a36 100644 --- a/docs/tutorial/build.md +++ b/docs/tutorial/build.md @@ -1,3 +1,7 @@ +--- +icon: hammer +--- + # Building from a Dockerfile `contree build` turns a familiar `Dockerfile` into a ConTree image. Each diff --git a/docs/tutorial/configuration.md b/docs/tutorial/configuration.md index 57cc6de..47a5dac 100644 --- a/docs/tutorial/configuration.md +++ b/docs/tutorial/configuration.md @@ -1,3 +1,7 @@ +--- +icon: gear +--- + # Configuration & Profiles Profiles let you store credentials for multiple projects or environments diff --git a/docs/tutorial/files.md b/docs/tutorial/files.md index bdaf2fd..13cfd93 100644 --- a/docs/tutorial/files.md +++ b/docs/tutorial/files.md @@ -1,3 +1,7 @@ +--- +icon: folder-open +--- + # Working with Files contree-cli lets you inject local files into sandboxes, edit remote files @@ -8,6 +12,8 @@ in-place, and stage changes that automatically apply on the next run. Use `--file` / `-F` on `contree run` to attach a local file: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree run --file ./app.py python /app.py @@ -27,6 +33,8 @@ By default the file is placed at the same path inside the sandbox. Specify a different destination with a colon: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree run --file ./app.py:/app/main.py python /app/main.py @@ -113,6 +121,8 @@ from a different session or machine, it is reused without re-uploading. ## Edit remote files ::::{tab-set} +:class: no-sync + :::{tab-item} CLI `contree file edit` downloads a file from the session image, opens it in your `$EDITOR`, and stages the changes as a pending file: @@ -153,6 +163,8 @@ you to fill in. You can edit multiple files before running: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree file edit /etc/nginx/nginx.conf @@ -177,6 +189,8 @@ Both edits are staged as pending and applied together on the next run. `contree file cp` copies a local file into the session as a pending file: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree file cp ./config.yaml /etc/app/config.yaml @@ -196,6 +210,8 @@ The file will be included in the next `contree run` automatically. ### Build up a working environment ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree file cp ./app.py /app/app.py diff --git a/docs/tutorial/first-steps.md b/docs/tutorial/first-steps.md index 53e25e4..4ad3fa9 100644 --- a/docs/tutorial/first-steps.md +++ b/docs/tutorial/first-steps.md @@ -1,3 +1,7 @@ +--- +icon: rocket +--- + # Your First Sandbox Now that you're authenticated, let's spin up a sandbox and explore it. @@ -7,6 +11,8 @@ Now that you're authenticated, let's spin up a sandbox and explore it. List available images: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree images --prefix=ubuntu @@ -102,6 +108,8 @@ Without `-S`, the auto-generated session is used (tied to current terminal). ## Run a command ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree run uname -a @@ -140,6 +148,8 @@ Both `contree run uname -a` and `contree run -- uname -a` work the same way. See what image and session you're working with: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree use @@ -160,6 +170,8 @@ Running `contree use` without arguments prints the current session info. Commands chain naturally. Each run advances the session image: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree run apt-get update -qq @@ -201,6 +213,8 @@ contree cd # reset to sandbox default List files and read content without spawning a new sandbox: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree ls /usr/bin @@ -229,6 +243,8 @@ contree run cat /etc/os-release Copy a file from the sandbox to your local machine: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree cp /etc/os-release ./os-release.txt @@ -250,6 +266,8 @@ Use `-D` / `--disposable` when you want to run a command without advancing the session image. Changes are discarded after execution: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree run -D -- rm -rf /important diff --git a/docs/tutorial/images.md b/docs/tutorial/images.md index 9c823ec..7894956 100644 --- a/docs/tutorial/images.md +++ b/docs/tutorial/images.md @@ -1,3 +1,7 @@ +--- +icon: layer-group +--- + # Images & Tags Images are filesystem snapshots. Every non-disposable `contree run` diff --git a/docs/tutorial/index.md b/docs/tutorial/index.md index 5b28a37..6a6ded6 100644 --- a/docs/tutorial/index.md +++ b/docs/tutorial/index.md @@ -1,3 +1,7 @@ +--- +icon: graduation-cap +--- + # Tutorial Learn contree-cli by building a real workflow -- from zero to automated @@ -103,6 +107,8 @@ how profiles affect sessions, and configure environment variables. If you just want to see contree-cli in action before diving in: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash # install diff --git a/docs/tutorial/installation.md b/docs/tutorial/installation.md index cd67bfb..1121f5b 100644 --- a/docs/tutorial/installation.md +++ b/docs/tutorial/installation.md @@ -1,3 +1,7 @@ +--- +icon: download +--- + # Install & Authenticate ## Requirements @@ -8,6 +12,8 @@ ## Install ::::{tab-set} +:class: no-sync + :::{tab-item} uv (recommended) ```bash uv tool install contree-cli diff --git a/docs/tutorial/sessions.md b/docs/tutorial/sessions.md index 824d4f3..5765ffd 100644 --- a/docs/tutorial/sessions.md +++ b/docs/tutorial/sessions.md @@ -1,3 +1,7 @@ +--- +icon: code-branch +--- + # Sessions, Branches & Rollback Sessions track the current image and its history as you run commands. Every @@ -29,6 +33,8 @@ The auto-generated key is a deterministic UUID5 derived from three values: ## Viewing session state ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree session # show current session info @@ -51,6 +57,8 @@ contree session show Create a branch to experiment without affecting the main line: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree session branch experiment @@ -71,6 +79,8 @@ apt-get install -y curl Not happy? Switch back: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree session checkout main @@ -90,6 +100,8 @@ pointer at the current position. Create a branch from another branch: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree session branch hotfix --from main @@ -106,6 +118,8 @@ contree session branch hotfix --from main List branches (`*` marks the active one): ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree session branch @@ -132,6 +146,8 @@ absolute jumps from relative navigation: | `N` (bare positive) | **Absolute** jump to history id `N` | ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree session rollback # back one entry @@ -166,6 +182,8 @@ Because the auto-generated key is deterministic, the same terminal always resumes the same session. Use `--new` (`-N`) to start a fresh session: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash # bash / zsh diff --git a/docs/tutorial/shell.md b/docs/tutorial/shell.md index d1abd6b..9ce71f5 100644 --- a/docs/tutorial/shell.md +++ b/docs/tutorial/shell.md @@ -1,3 +1,7 @@ +--- +icon: terminal +--- + # Interactive Shell `contree shell` starts a REPL that combines management commands and sandbox diff --git a/docs/tutorial/workflows.md b/docs/tutorial/workflows.md index a596008..6e2c927 100644 --- a/docs/tutorial/workflows.md +++ b/docs/tutorial/workflows.md @@ -1,3 +1,7 @@ +--- +icon: gears +--- + # Scripting & Automation contree-cli is designed for scripting. Exit codes propagate, output formats @@ -71,6 +75,8 @@ is a Python script. Without `-S`, the kernel sees a nested shebang The default mode. Each positional argument becomes a separate argv entry: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree run uname -a @@ -89,6 +95,8 @@ uname -a `-s` joins all arguments into a single shell expression: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree run -s -- 'echo hello && ls /' @@ -128,6 +136,8 @@ cat deploy.sh | contree run /bin/sh `-d` spawns the operation and exits immediately, printing the operation UUID: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree run -d -- long-running-task @@ -181,6 +191,8 @@ exits with code 1. Pass environment variables into the sandbox with `-e`: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree run -e DEBUG=1 -e DB_HOST=postgres -- ./app @@ -204,6 +216,8 @@ By default, stdout/stderr is capped at 64 KiB in the API response. Override with `-T`: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree run -T 1048576 -- ./generate-big-output.sh @@ -222,6 +236,8 @@ contree run -T 1048576 -- ./generate-big-output.sh List running and recent operations: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree ps # active operations only @@ -242,6 +258,8 @@ contree ps -q Show the full result of a specific operation: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree show UUID @@ -258,6 +276,8 @@ contree show UUID Cancel an operation: ::::{tab-set} +:class: no-sync + :::{tab-item} CLI ```bash contree kill UUID diff --git a/pyproject.toml b/pyproject.toml index dcdc1c2..33ae52f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,6 +58,7 @@ docs = [ "furo", "sphinx-design", "myst-parser", + "sphinx-mintlify-output", ] [tool.pytest.ini_options] diff --git a/uv.lock b/uv.lock index 4c6498d..aa5cb8b 100644 --- a/uv.lock +++ b/uv.lock @@ -178,6 +178,7 @@ docs = [ { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "sphinx-design", version = "0.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "sphinx-design", version = "0.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "sphinx-mintlify-output" }, ] [package.metadata] @@ -194,6 +195,7 @@ docs = [ { name = "myst-parser" }, { name = "sphinx", specifier = ">=7.0" }, { name = "sphinx-design" }, + { name = "sphinx-mintlify-output" }, ] [[package]] @@ -1066,6 +1068,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/30/cf/45dd359f6ca0c3762ce0490f681da242f0530c49c81050c035c016bfdd3a/sphinx_design-0.7.0-py3-none-any.whl", hash = "sha256:f82bf179951d58f55dca78ab3706aeafa496b741a91b1911d371441127d64282", size = 2220350, upload-time = "2026-01-19T13:12:51.077Z" }, ] +[[package]] +name = "sphinx-mintlify-output" +version = "0.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/9f/7f5cd9a8bf3b205f35cb899355fd9588661bf07c99a1ffa7c5173f796d05/sphinx_mintlify_output-0.1.0.tar.gz", hash = "sha256:1c9d3bc2c9d0b208a2f284ee3796ffc15311bd83e64b780bb3ba1d343a5b70be", size = 40281, upload-time = "2026-06-18T08:17:49.217Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/b5/f8b20789f9648c144258efb15e599709acb2f0e03eb6b5b1392ec631b48a/sphinx_mintlify_output-0.1.0-py3-none-any.whl", hash = "sha256:d290ba358fbf8c48b1f12ea810ebe768cc2dd03e7afead93f9ff4ce6b62305a5", size = 53856, upload-time = "2026-06-18T08:17:50.373Z" }, +] + [[package]] name = "sphinxcontrib-applehelp" version = "2.0.0"