dominus-sdk-python 9.0.2__tar.gz → 9.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/PKG-INFO +6 -2
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/README.md +5 -1
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/__init__.py +1 -1
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus_sdk_python.egg-info/PKG-INFO +6 -2
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/pyproject.toml +1 -1
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_readme_quickstart_catalog.py +53 -18
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/config/__init__.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/config/endpoints.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/errors.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/helpers/__init__.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/helpers/auth.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/helpers/cache.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/helpers/console_capture.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/helpers/core.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/helpers/crypto.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/helpers/sse.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/helpers/trace.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/__init__.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/admin.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/ai.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/artifacts.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/auth.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/authority.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/browser.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/coder.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/courier.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/db.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/ddl.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/deployer.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/fastapi.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/files.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/health.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/jobs.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/logs.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/platform.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/portal.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/processor.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/publisher.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/recipes.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/redis.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/secrets.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/secure.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/stash.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/sync.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/warden.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/namespaces/workflow.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/py.typed +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/services/__init__.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus/start.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus_sdk_python.egg-info/SOURCES.txt +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus_sdk_python.egg-info/dependency_links.txt +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus_sdk_python.egg-info/requires.txt +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus_sdk_python.egg-info/top_level.txt +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/setup.cfg +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_auth.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_authority_public_vocabulary.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_browser_namespace.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_control_plane_namespaces.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_errors.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_flat_commands.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_health.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_logs.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_namespace_barrel_exports.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_platform_coder_namespaces.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_provisioning_parity.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_public_exports.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_publisher_namespace.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_recipes_namespace.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_recipes_stash_routing.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_secrets_presence_contract.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_stash_artifact_facade.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_stash_tables_namespace.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_transport_compat.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_workflow_lifecycle.py +0 -0
- {dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_workflow_refs.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dominus-sdk-python
|
|
3
|
-
Version: 9.0.
|
|
3
|
+
Version: 9.0.3
|
|
4
4
|
Summary: Python SDK for the Dominus gateway-first platform
|
|
5
5
|
Author-email: CareBridge Systems <dev@carebridge.io>
|
|
6
6
|
License-Expression: LicenseRef-Proprietary
|
|
@@ -48,7 +48,7 @@ cleanup audit is `docs/janitor/2026-08-04-sdk-python-cleanup-audit.md`.
|
|
|
48
48
|
- Gateway-scoped client mode for MCP and other user-JWT sessions
|
|
49
49
|
- Transport compatibility for wrapped `{success,data}` responses and unwrapped Warden/control-plane success objects
|
|
50
50
|
- Local helpers for JWT verification, trace propagation, retries, and console capture
|
|
51
|
-
- Current package version: `9.0.
|
|
51
|
+
- Current package version: `9.0.3`
|
|
52
52
|
|
|
53
53
|
## Install
|
|
54
54
|
|
|
@@ -79,6 +79,9 @@ from dominus import dominus
|
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
async def main() -> None:
|
|
82
|
+
# Use the stable identifier of the person performing the write.
|
|
83
|
+
actor_context = {"type": "user", "id": "your-actor-id"}
|
|
84
|
+
|
|
82
85
|
run = await dominus.workflow.ensure(
|
|
83
86
|
workflow_recipe_ref="recipe://workflow-recipe-v1/hello@v1",
|
|
84
87
|
)
|
|
@@ -90,6 +93,7 @@ async def main() -> None:
|
|
|
90
93
|
kind="blob",
|
|
91
94
|
artifact_key="hello",
|
|
92
95
|
data=base64.b64encode(b"hello dominus").decode("ascii"),
|
|
96
|
+
actor_context=actor_context,
|
|
93
97
|
)
|
|
94
98
|
artifact = await dominus.artifacts.retrieve_v2(
|
|
95
99
|
group="your-group",
|
|
@@ -15,7 +15,7 @@ cleanup audit is `docs/janitor/2026-08-04-sdk-python-cleanup-audit.md`.
|
|
|
15
15
|
- Gateway-scoped client mode for MCP and other user-JWT sessions
|
|
16
16
|
- Transport compatibility for wrapped `{success,data}` responses and unwrapped Warden/control-plane success objects
|
|
17
17
|
- Local helpers for JWT verification, trace propagation, retries, and console capture
|
|
18
|
-
- Current package version: `9.0.
|
|
18
|
+
- Current package version: `9.0.3`
|
|
19
19
|
|
|
20
20
|
## Install
|
|
21
21
|
|
|
@@ -46,6 +46,9 @@ from dominus import dominus
|
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
async def main() -> None:
|
|
49
|
+
# Use the stable identifier of the person performing the write.
|
|
50
|
+
actor_context = {"type": "user", "id": "your-actor-id"}
|
|
51
|
+
|
|
49
52
|
run = await dominus.workflow.ensure(
|
|
50
53
|
workflow_recipe_ref="recipe://workflow-recipe-v1/hello@v1",
|
|
51
54
|
)
|
|
@@ -57,6 +60,7 @@ async def main() -> None:
|
|
|
57
60
|
kind="blob",
|
|
58
61
|
artifact_key="hello",
|
|
59
62
|
data=base64.b64encode(b"hello dominus").decode("ascii"),
|
|
63
|
+
actor_context=actor_context,
|
|
60
64
|
)
|
|
61
65
|
artifact = await dominus.artifacts.retrieve_v2(
|
|
62
66
|
group="your-group",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dominus-sdk-python
|
|
3
|
-
Version: 9.0.
|
|
3
|
+
Version: 9.0.3
|
|
4
4
|
Summary: Python SDK for the Dominus gateway-first platform
|
|
5
5
|
Author-email: CareBridge Systems <dev@carebridge.io>
|
|
6
6
|
License-Expression: LicenseRef-Proprietary
|
|
@@ -48,7 +48,7 @@ cleanup audit is `docs/janitor/2026-08-04-sdk-python-cleanup-audit.md`.
|
|
|
48
48
|
- Gateway-scoped client mode for MCP and other user-JWT sessions
|
|
49
49
|
- Transport compatibility for wrapped `{success,data}` responses and unwrapped Warden/control-plane success objects
|
|
50
50
|
- Local helpers for JWT verification, trace propagation, retries, and console capture
|
|
51
|
-
- Current package version: `9.0.
|
|
51
|
+
- Current package version: `9.0.3`
|
|
52
52
|
|
|
53
53
|
## Install
|
|
54
54
|
|
|
@@ -79,6 +79,9 @@ from dominus import dominus
|
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
async def main() -> None:
|
|
82
|
+
# Use the stable identifier of the person performing the write.
|
|
83
|
+
actor_context = {"type": "user", "id": "your-actor-id"}
|
|
84
|
+
|
|
82
85
|
run = await dominus.workflow.ensure(
|
|
83
86
|
workflow_recipe_ref="recipe://workflow-recipe-v1/hello@v1",
|
|
84
87
|
)
|
|
@@ -90,6 +93,7 @@ async def main() -> None:
|
|
|
90
93
|
kind="blob",
|
|
91
94
|
artifact_key="hello",
|
|
92
95
|
data=base64.b64encode(b"hello dominus").decode("ascii"),
|
|
96
|
+
actor_context=actor_context,
|
|
93
97
|
)
|
|
94
98
|
artifact = await dominus.artifacts.retrieve_v2(
|
|
95
99
|
group="your-group",
|
{dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_readme_quickstart_catalog.py
RENAMED
|
@@ -64,9 +64,12 @@ def test_quick_start_executes_in_fresh_process_with_live_transport_shapes() -> N
|
|
|
64
64
|
r'''
|
|
65
65
|
import asyncio
|
|
66
66
|
import base64
|
|
67
|
+
import json
|
|
67
68
|
import sys
|
|
68
69
|
from pathlib import Path
|
|
69
70
|
|
|
71
|
+
import httpx
|
|
72
|
+
|
|
70
73
|
readme = Path(sys.argv[1]).read_text(encoding="utf-8")
|
|
71
74
|
section = readme[readme.index("## Quick Start"):]
|
|
72
75
|
marker = "```python\n"
|
|
@@ -74,37 +77,69 @@ def test_quick_start_executes_in_fresh_process_with_live_transport_shapes() -> N
|
|
|
74
77
|
body = section[start:section.index("```", start)]
|
|
75
78
|
|
|
76
79
|
from dominus import dominus
|
|
80
|
+
import dominus.helpers.core as core
|
|
77
81
|
|
|
78
82
|
asyncio.run(dominus._ensure_ready())
|
|
79
83
|
calls = []
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
84
|
+
actors = []
|
|
85
|
+
|
|
86
|
+
async def fake_jwt(*_args, **_kwargs):
|
|
87
|
+
return "header.payload.signature"
|
|
88
|
+
|
|
89
|
+
core._ensure_valid_jwt = fake_jwt
|
|
90
|
+
|
|
91
|
+
def handle(request):
|
|
92
|
+
body = json.loads(base64.b64decode(request.content)) if request.content else {}
|
|
93
|
+
calls.append(
|
|
94
|
+
{
|
|
95
|
+
"endpoint": request.url.path,
|
|
96
|
+
"body": body,
|
|
97
|
+
"headers": dict(request.headers),
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
if request.url.path == "/svc/authority/runs/ensure":
|
|
101
|
+
payload = {"run_id": "run-1"}
|
|
102
|
+
elif request.url.path == "/svc/stash/items/upsert":
|
|
103
|
+
payload = {"item": {"id": "stash-1"}, "scope_origin": "own"}
|
|
104
|
+
elif request.url.path == "/svc/stash/items/get":
|
|
105
|
+
payload = {"item": {"id": "stash-1"}}
|
|
106
|
+
else:
|
|
107
|
+
payload = {}
|
|
108
|
+
return httpx.Response(200, json=payload)
|
|
109
|
+
|
|
110
|
+
transport = httpx.MockTransport(handle)
|
|
111
|
+
real_async_client = httpx.AsyncClient
|
|
112
|
+
|
|
113
|
+
def mock_async_client(*args, **kwargs):
|
|
114
|
+
kwargs["transport"] = transport
|
|
115
|
+
return real_async_client(*args, **kwargs)
|
|
116
|
+
|
|
117
|
+
httpx.AsyncClient = mock_async_client
|
|
118
|
+
real_request = dominus._request
|
|
119
|
+
|
|
120
|
+
async def observed_request(**kwargs):
|
|
121
|
+
actors.append(kwargs.get("actor"))
|
|
122
|
+
return await real_request(**kwargs)
|
|
123
|
+
|
|
124
|
+
dominus._request = observed_request
|
|
93
125
|
exec(compile(body, "README.md#quick-start", "exec"), {"__name__": "__main__"})
|
|
94
126
|
|
|
95
127
|
endpoints = [call["endpoint"] for call in calls]
|
|
96
128
|
assert endpoints == [
|
|
97
|
-
"/
|
|
98
|
-
"/
|
|
99
|
-
"/
|
|
129
|
+
"/svc/authority/runs/ensure",
|
|
130
|
+
"/svc/artifact/v2/store",
|
|
131
|
+
"/svc/artifact/v2/retrieve",
|
|
100
132
|
"/svc/stash/items/upsert",
|
|
101
133
|
"/svc/stash/items/get",
|
|
102
|
-
"/
|
|
103
|
-
"/
|
|
134
|
+
"/svc/authority/runs/run-1/timeline",
|
|
135
|
+
"/svc/authority/runs/run-1/verdict",
|
|
104
136
|
], endpoints
|
|
105
137
|
assert calls[0]["body"]["workflow_recipe_ref"] == "recipe://workflow-recipe-v1/hello@v1"
|
|
106
138
|
assert calls[1]["body"]["data"] == base64.b64encode(b"hello dominus").decode("ascii")
|
|
107
139
|
assert base64.b64decode(calls[1]["body"]["data"], validate=True) == b"hello dominus"
|
|
140
|
+
assert actors[1] == {"type": "user", "id": "your-actor-id"}
|
|
141
|
+
assert calls[1]["headers"]["x-actor-type"] == "user"
|
|
142
|
+
assert calls[1]["headers"]["x-actor-id"] == "your-actor-id"
|
|
108
143
|
assert calls[3]["body"] == {
|
|
109
144
|
"kind": "config",
|
|
110
145
|
"scope": {"env": "production"},
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus_sdk_python.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus_sdk_python.egg-info/requires.txt
RENAMED
|
File without changes
|
{dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/dominus_sdk_python.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_authority_public_vocabulary.py
RENAMED
|
File without changes
|
|
File without changes
|
{dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_control_plane_namespaces.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_namespace_barrel_exports.py
RENAMED
|
File without changes
|
{dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_platform_coder_namespaces.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dominus_sdk_python-9.0.2 → dominus_sdk_python-9.0.3}/tests/test_secrets_presence_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|