Skip to main content

automas-maafw-runtime-pool

Shared, selector-addressed Python environments for MaaFW runner workers.

The plugin instance exposes a Root setting. Leaving it empty preserves the legacy config/maafw_runtime_pool location under the AUTO-MAS working directory. The path is fixed for the service lifetime and configuration changes take effect after restart. Every pool has a persistent UUID in .auto_mas_maafw_runtime_pool.json; legacy version-1 markers are upgraded in place without moving runtimes. Empty roots and the known markerless default layout can be initialized, while unknown non-empty directories, invalid marker kinds, symlinks and Windows reparse-point chains are rejected. storage_info() returns the resolved root, poolId, default-root flag and JSON-friendly rootIdentity.

The plugin provides the JSON-friendly maafw.runtime_pool.v1 service. Runtime Pool 0.2.0 accepts an optional python request with a CPython constraint and supports the CP312 and CP313 minor families. It resolves a configured, host, or pool-local uv-managed interpreter for that ABI; resolve_runtime() never downloads one, while ensure_runtime() may prepare the missing pool-local interpreter. One interpreter family can seed multiple environments, but it is not itself a shared site-packages directory.

Runtime identity is derived from the complete canonical requirement set plus the selected Python ABI, probed patch version, platform and architecture for explicit multi-ABI requests. Projects with the same full identity reuse one environment, while a different dependency selector or Python interpreter identity receives a different venv. Exact constraints such as ==3.13.14 are looked up and installed as that exact uv-managed patch. Host Python uses the same full probed patch identity, so it can reuse an explicit route only when the physical interpreter and complete requirement selector are actually identical.

Each complete canonical requirement set still receives its own isolated venv. When uv is available, Runtime Pool creates a pool-local cache/uv and uses uv pip install --link-mode hardlink for every environment. Different runtime selectors can therefore reuse downloaded wheels and unpacked package files without sharing site-packages or composing PYTHONPATH across environments. The runtime manifest exposes the selected installer, cache scope/path and link mode under installerMetadata.

If uv is unavailable, a full Python distribution that provides both venv and ensurepip retains the legacy stdlib-venv + pip path. Embeddable Python without those modules requires uv; Runtime Pool does not create a mixed PYTHONPATH environment as a fallback.

The selector is not a resolved dependency lock: version ranges remain ranges in the identity. Production installation records pip freeze --all as resolvedRequirements in the runtime manifest for audit. uv-backed installs use uv pip freeze; the legacy pip path uses pip freeze --all. Recreating a deleted runtime can resolve newer packages still allowed by the same selector.

Project agents and project resources are intentionally outside this pool.

The service exposes list_runtimes, resolve_runtime, ensure_runtime, touch, pin, delete, and collect_garbage. Durable project ownership is reconciled with set_references(runtime_id, references); active runner processes use expiring leases instead. GC is dry-run by default and refuses to delete pinned, referenced, or leased runtimes.

Every GC response also contains cachePrune. A dry run records the pool-local uv cache size, file count, uv version, and the exact uv cache prune command without invoking it. A real collection first removes eligible runtime environments and then delegates dangling-entry cleanup to uv itself. The result records before/after statistics, reclaimed bytes/files, exit status, and uv output. Runtime Pool never substitutes a recursive directory delete for uv cache maintenance; a missing uv executable, a symlinked cache path, or a failed command is returned as an explicit unavailable, unsafe, or error status.

Local paths, editable installs, requirement includes, and local archives are rejected because they cannot safely form a cross-project identity. Callers can inject an installer for offline mirrors and deterministic tests.

Release files for automas-maafw-runtime-pool 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for automas-maafw-runtime-pool 0.2.0
File Size Uploaded
automas_maafw_runtime_pool-0.2.0.tar.gz 30.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for automas-maafw-runtime-pool 0.2.0
File Interpreter ABI Platform
automas_maafw_runtime_pool-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 63.5 kB

Release files / automas_maafw_runtime_pool-0.2.0.tar.gz

Download URL automas_maafw_runtime_pool-0.2.0.tar.gz
Size 30.9 kB
Tags Source
SHA-256 checksum
How to use checksums
61f7be1d1d356a6d5feaa2bd5728f119c881be84067766901a366c05ac7353ff
BLAKE2b-256 checksum
How to use checksums
f594b7f0cf12222730ab371face439ec950b8c382025115124621beb8469d7df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.

Transparency log

Release files / automas_maafw_runtime_pool-0.2.0-py3-none-any.whl

Download URL automas_maafw_runtime_pool-0.2.0-py3-none-any.whl
Size 32.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9e0e11e5e84f6d569640a1e4f81c8da9953d689235df188dd1f2191ad69d9fd9
BLAKE2b-256 checksum
How to use checksums
5927a66f59fae6e5cc033ba1e5402abffb3a6bd16108c647e4819b2b7c88d847
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page