Metadata-Version: 2.4
Name: soliplex-plumber
Version: 0.4
Summary: Read and modify the configuration of an existing Soliplex stack.
Project-URL: Homepage, https://soliplex.github.io/soliplex-plumber/
Project-URL: Repository, https://github.com/soliplex/soliplex-plumber
Author: Soliplex
License-Expression: MIT
License-File: LICENSE
Keywords: configuration,installation,rooms,soliplex,stack
Requires-Python: >=3.12
Requires-Dist: pyyaml
Description-Content-Type: text/markdown

# `soliplex-plumber`: tools for modifying a Soliplex stack

Library for reading and modifying the configuration of an
*existing* Soliplex stack. It is the shared dependency for the skill projects
that operate on a generated stack — the `soliplex-template` skill's
`add_room.py` and the `soliplex-concierge` installer — so the stack-wiring
rules live in one place.

The core does pure filesystem work: no Docker, no running backend. The
`soliplex_config` module is the exception — it queries a *running* stack.

## What it provides

- **`rooms`** — generic, template-agnostic logic for adding a room to a stack:
  resolve and validate the stack root, infer its package, and ensure
  `installation.yaml`'s `room_paths` loads the room (editing line-based, so
  comments and layout are preserved).
- **`stack`** — shared plumbing to run `soliplex-cli` against a stack in a
  throwaway `docker compose run --rm` container (validate the stack, build the
  argv, capture or stream output), optionally binding an alternative
  installation tree to dry-run against. Needs Docker.
- **`soliplex_config`** — query a *running* stack's resolved installation
  config via `soliplex-cli config` in a one-off backend container (`show` /
  `get` / `rooms` / `room`); installs the `soliplex-config` console script.
  Builds on `stack`.

```python
from soliplex_plumber import rooms

project = rooms.resolve_project("/path/to/stack")
installed = rooms.install_room(project, "handbook", config_text=cfg)
```

Full documentation: <https://soliplex.github.io/soliplex-plumber/>
