urirun-reasoner
Intent → need → capability → URI plan, headless-first. Model the GOAL, not the app.
A missing GUI editor is one blocked method in a graph — not the end of the road. Asked to "test office on lenovo", the reasoner does not stop at "no LibreOffice"; it reframes to "produce a document artifact and verify it exists" and resolves it through the cheapest feasible URI path.
The resolution ladder (kernel decides, cheapest/safest first)
- direct — a capability is already served on the node (headless)
- host_fallback — a headless capability runs host-side + sync (no node change)
- install_then_run — a connector provides it and the node can manage (install → rebuild → restart → smoke → use)
- gui — a GUI capability, only as a last resort
- blocked — nothing feasible → honest, with what was tried
GUI is never chosen when a headless path exists; connectors are never installed blindly.
Layers
| module | role |
|---|---|
needs.py |
NeedSpec — the intent contract (goal, required outputs, preferred/acceptable capabilities, requires_gui) + a catalog |
capabilities.py |
CapabilityMap — capability → URI route templates + connectors (the layer between language and URIs) |
intent.py |
prompt → NeedSpec (rules first; LLM only names the intent, never invents URIs) |
planner.py |
the deterministic ladder + resolve(need, ctx) with a postcondition |
Use
from urirun_reasoner import Context, resolve_prompt
ctx = Context(node="lenovo", node_served=[...], host_served=["fs://host/file/command/write"],
installable={"sheet"}, can_manage=True)
plan = resolve_prompt("przetestuj biuro na lenovo", ctx)
# → {"strategy": "host_fallback", "steps": [...], "postcondition": {...}}
Pairs with urirun-fleet (node readiness + execution) and the dispatch _meta provenance
(so the reasoner knows what is actually served). Part of the ifURI solution · Apache-2.0
Metadata
Release files for urirun-reasoner 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| urirun_reasoner-0.1.0.tar.gz | 13.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| urirun_reasoner-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.8 kB
Release files / urirun_reasoner-0.1.0.tar.gz
| Download URL | urirun_reasoner-0.1.0.tar.gz |
|---|---|
| Size | 13.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f7cdce7d9166a2c0e48056e6849e26e81433859c648e8bd5178775c375e172e6
|
|
BLAKE2b-256 checksum How to use checksums |
275c15cfbeb8f69aed85c3c98349517714f1f878611d1cd9bffce83fcb830f57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / urirun_reasoner-0.1.0-py3-none-any.whl
| Download URL | urirun_reasoner-0.1.0-py3-none-any.whl |
|---|---|
| Size | 14.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7a90a585f64e536de6ec96a2cdfa47b4e0e0fe2ecaaa8b109e78cd75dbe0a1fe
|
|
BLAKE2b-256 checksum How to use checksums |
13e7aeb3a375406a7c70425ac9c6295b2542231b563b9c4abf63a8aa0311324b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|