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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file urirun_reasoner-0.1.0.tar.gz.
File metadata
- Download URL: urirun_reasoner-0.1.0.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7cdce7d9166a2c0e48056e6849e26e81433859c648e8bd5178775c375e172e6
|
|
| MD5 |
7a14396dbfe834de2797a31246059de0
|
|
| BLAKE2b-256 |
275c15cfbeb8f69aed85c3c98349517714f1f878611d1cd9bffce83fcb830f57
|
File details
Details for the file urirun_reasoner-0.1.0-py3-none-any.whl.
File metadata
- Download URL: urirun_reasoner-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a90a585f64e536de6ec96a2cdfa47b4e0e0fe2ecaaa8b109e78cd75dbe0a1fe
|
|
| MD5 |
357e3942ab02c2b3cd0cb094f2d66e86
|
|
| BLAKE2b-256 |
13e7aeb3a375406a7c70425ac9c6295b2542231b563b9c4abf63a8aa0311324b
|