wippa-project-manager (Python client)
Project management where an agent can be the assignee, and a task is only done when a run report proves it.
This is the client SDK, not a Python port of the server. The server is Node; porting it would mean two implementations of the completion gate, and the gate is the entire product. This package sends, reports, and decides nothing.
Install
pip install wippa-project-manager
Zero runtime dependencies. Deliberate: this client runs inside agents executing untrusted work, where every dependency is another package somebody has to trust, pin and audit in their own sandbox.
Use
from wippa_project_manager import AgentDescriptor, Capability, Client, obj_schema
client = Client() # http://127.0.0.1:8790
client.register_agent(AgentDescriptor(
id="agent.reviewer",
name="Reviewer",
version="1.0.0",
description="Reviews a diff",
capabilities=(Capability(
name="code.review",
description="Review a diff and return findings",
input_schema=obj_schema(diff=str, repo=str),
output_schema=obj_schema(findings=list, verdict=str),
tags=("review",),
),),
transports=({"kind": "http"},),
))
task = client.create_task(
"Review the auth diff",
requirements=[{
"name": "code.review",
"inputSchema": obj_schema(diff=str, repo=str),
"outputSchema": obj_schema(findings=list, verdict=str),
}],
)
client.claim_task(task["id"], "agent.reviewer")
result = client.run(task["id"])
print(result["task"]["status"], result["report"]["outputHash"])
A claim can be refused, and it says why
from wippa_project_manager import ClaimRefused
try:
client.claim_task(task["id"], "agent.partial")
except ClaimRefused as exc:
print(exc.reason)
# "code.review: output: output is missing 1 field(s): findings"
That is more useful than a boolean: it tells you which shape to change. Refusals are recorded server-side, so they are the log of which task descriptions are unmeetable.
Status codes are not flattened
| Code | Meaning | Exception |
|---|---|---|
202 |
claim accepted, nothing run yet | — |
409 |
claim refused | ClaimRefused |
422 |
a run happened, its report failed the gate | ReportRejected |
Collapsing these into "request failed" would hide the two outcomes worth noticing.
The wire format
AgentDescriptor, Capability and Envelope mirror the published
wippa-uacp JSON Schemas, so a Python agent and a TypeScript agent speak the
same shape. No uacp source is copied.
Server
wippa-studios/wippa-project-manager
npm run demo # the vertical slice, in memory
npm start # API + dashboard on 127.0.0.1:8790
License
MIT
Release files for wippa-project-manager 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 | |
|---|---|---|---|
| wippa_project_manager-0.1.0.tar.gz | 12.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wippa_project_manager-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.5 kB
Release files / wippa_project_manager-0.1.0.tar.gz
| Download URL | wippa_project_manager-0.1.0.tar.gz |
|---|---|
| Size | 12.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2cb386afba6424bbd5200e929a6520329f10a8f4dbe6944dd0a3c024826f3c92
|
|
BLAKE2b-256 checksum How to use checksums |
973166f006545d088678f03d55cb8b1274fd6fb2e2811c551a58653c465c0e7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / wippa_project_manager-0.1.0-py3-none-any.whl
| Download URL | wippa_project_manager-0.1.0-py3-none-any.whl |
|---|---|
| Size | 10.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
23f118fd1f144072e6b6696e110ac1662a5402b8ee013750879fe52cdf6b1ff7
|
|
BLAKE2b-256 checksum How to use checksums |
b302f1b340aa5ed8ee99629f22ee6382c1a414781bef415f9f7e43051ee482f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|