dominus-sdk-python 4.6.2__py3-none-any.whl → 5.0.0__py3-none-any.whl
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/namespaces/authority.py +64 -61
- dominus/start.py +1 -1
- {dominus_sdk_python-4.6.2.dist-info → dominus_sdk_python-5.0.0.dist-info}/METADATA +2 -2
- {dominus_sdk_python-4.6.2.dist-info → dominus_sdk_python-5.0.0.dist-info}/RECORD +6 -6
- {dominus_sdk_python-4.6.2.dist-info → dominus_sdk_python-5.0.0.dist-info}/WHEEL +0 -0
- {dominus_sdk_python-4.6.2.dist-info → dominus_sdk_python-5.0.0.dist-info}/top_level.txt +0 -0
dominus/namespaces/authority.py
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Authority Namespace - Dominus Authority service surface.
|
|
3
3
|
|
|
4
4
|
Canonical SDK entry point for the dominus-authority service. Mirrors the MCP
|
|
5
|
-
``authority_*`` tool surface so application code can drive runs,
|
|
6
|
-
deploys, managed clients, timelines, dossiers, and Authority context resolution
|
|
5
|
+
``authority_*`` tool surface so application code can drive runs, provisioning
|
|
6
|
+
targets, deploys, managed clients, timelines, dossiers, and Authority context resolution
|
|
7
7
|
without touching workflow-manager / client-worker / deploy-worker routes
|
|
8
8
|
directly.
|
|
9
9
|
|
|
@@ -44,8 +44,8 @@ def _normalize_run_kind_token(raw: Optional[str]) -> str:
|
|
|
44
44
|
return s
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
def
|
|
48
|
-
return _normalize_run_kind_token(run_kind) == "
|
|
47
|
+
def _is_provisioning_bootstrap_run_kind(run_kind: Optional[str]) -> bool:
|
|
48
|
+
return _normalize_run_kind_token(run_kind) == "provisioning_bootstrap"
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
def _query_string(params: Mapping[str, Any]) -> str:
|
|
@@ -62,7 +62,7 @@ class AuthorityNamespace:
|
|
|
62
62
|
Usage::
|
|
63
63
|
|
|
64
64
|
await dominus.authority.ensure_run(workflow_id="...", subject="PCM47474562")
|
|
65
|
-
await dominus.authority.
|
|
65
|
+
await dominus.authority.list_provisioning_targets()
|
|
66
66
|
await dominus.authority.get_run_dossier(run_id)
|
|
67
67
|
"""
|
|
68
68
|
|
|
@@ -170,9 +170,8 @@ class AuthorityNamespace:
|
|
|
170
170
|
workflow_id: Optional[str] = None,
|
|
171
171
|
workflow_ref: Optional[str] = None,
|
|
172
172
|
run_kind: Optional[str] = None,
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
slug: Optional[str] = None,
|
|
173
|
+
bootstrap_profile_ref: Optional[str] = None,
|
|
174
|
+
provisioning_target_slug: Optional[str] = None,
|
|
176
175
|
instance_id: Optional[str] = None,
|
|
177
176
|
instance_key: Optional[str] = None,
|
|
178
177
|
group: Optional[str] = None,
|
|
@@ -209,22 +208,20 @@ class AuthorityNamespace:
|
|
|
209
208
|
|
|
210
209
|
Calls ``POST /api/authority/runs/ensure``.
|
|
211
210
|
|
|
212
|
-
For
|
|
213
|
-
``
|
|
214
|
-
``
|
|
211
|
+
For provisioning bootstrap, pass ``run_kind="provisioning.bootstrap"`` plus
|
|
212
|
+
``provisioning_target_slug``. Optional bootstrap fields mirror
|
|
213
|
+
``bootstrap_provisioning_target`` (``execution_mode``, ``region``, ``bootstrap_profile_ref``, ...).
|
|
215
214
|
"""
|
|
216
|
-
bootstrap =
|
|
215
|
+
bootstrap = _is_provisioning_bootstrap_run_kind(run_kind)
|
|
217
216
|
if not bootstrap and not workflow_id and not workflow_ref:
|
|
218
217
|
raise ValueError(
|
|
219
218
|
"ensure_run requires workflow_id or workflow_ref unless run_kind is "
|
|
220
|
-
"
|
|
219
|
+
"provisioning.bootstrap"
|
|
221
220
|
)
|
|
222
221
|
if bootstrap:
|
|
223
|
-
|
|
224
|
-
if not
|
|
225
|
-
raise ValueError(
|
|
226
|
-
"ensure_run with run_kind company.bootstrap requires company, company_slug, or slug"
|
|
227
|
-
)
|
|
222
|
+
target_slug = (provisioning_target_slug or "").strip()
|
|
223
|
+
if not target_slug:
|
|
224
|
+
raise ValueError("ensure_run with run_kind provisioning.bootstrap requires provisioning_target_slug")
|
|
228
225
|
if mode == "streaming":
|
|
229
226
|
raise ValueError(
|
|
230
227
|
"Authority runs do not support streaming mode; "
|
|
@@ -237,7 +234,8 @@ class AuthorityNamespace:
|
|
|
237
234
|
if bootstrap:
|
|
238
235
|
body = _compact({
|
|
239
236
|
"run_kind": run_kind,
|
|
240
|
-
"
|
|
237
|
+
"bootstrap_profile_ref": bootstrap_profile_ref,
|
|
238
|
+
"provisioning_target_slug": provisioning_target_slug,
|
|
241
239
|
"workflow_id": workflow_id,
|
|
242
240
|
"workflow_ref": workflow_ref,
|
|
243
241
|
"instance_id": instance_id,
|
|
@@ -245,9 +243,6 @@ class AuthorityNamespace:
|
|
|
245
243
|
"group": group,
|
|
246
244
|
"owner": owner,
|
|
247
245
|
"subject": subject,
|
|
248
|
-
"company": company,
|
|
249
|
-
"company_slug": company_slug,
|
|
250
|
-
"slug": slug,
|
|
251
246
|
"bindings": bindings,
|
|
252
247
|
"inputs": inputs,
|
|
253
248
|
"context": context,
|
|
@@ -269,7 +264,6 @@ class AuthorityNamespace:
|
|
|
269
264
|
body = _compact({
|
|
270
265
|
"workflow_id": workflow_id,
|
|
271
266
|
"workflow_ref": workflow_ref,
|
|
272
|
-
"bootstrap_profile": bootstrap_profile,
|
|
273
267
|
"instance_id": instance_id,
|
|
274
268
|
"instance_key": instance_key,
|
|
275
269
|
"group": group,
|
|
@@ -779,13 +773,13 @@ class AuthorityNamespace:
|
|
|
779
773
|
)
|
|
780
774
|
|
|
781
775
|
# ==================================================================
|
|
782
|
-
#
|
|
776
|
+
# Provisioning Targets
|
|
783
777
|
# ==================================================================
|
|
784
778
|
|
|
785
|
-
async def
|
|
779
|
+
async def create_provisioning_target(
|
|
786
780
|
self,
|
|
787
781
|
*,
|
|
788
|
-
|
|
782
|
+
provisioning_target_slug: str,
|
|
789
783
|
display_name: Optional[str] = None,
|
|
790
784
|
description: Optional[str] = None,
|
|
791
785
|
bootstrap_status: Optional[str] = None,
|
|
@@ -794,34 +788,43 @@ class AuthorityNamespace:
|
|
|
794
788
|
app_slug: Optional[str] = None,
|
|
795
789
|
env: Optional[str] = None,
|
|
796
790
|
target_org_id: Optional[str] = None,
|
|
791
|
+
target_app_slug: Optional[str] = None,
|
|
797
792
|
target_env: Optional[str] = None,
|
|
793
|
+
shared_app_slug: Optional[str] = None,
|
|
798
794
|
initiator_type: Optional[str] = None,
|
|
799
795
|
initiator_id: Optional[str] = None,
|
|
800
796
|
idempotency_key: Optional[str] = None,
|
|
801
797
|
timeout: Optional[float] = None,
|
|
802
798
|
) -> Dict[str, Any]:
|
|
803
|
-
"""Create a new
|
|
804
|
-
if not
|
|
805
|
-
raise ValueError("
|
|
799
|
+
"""Create a new provisioning target. ``POST /api/authority/provisioning-targets``."""
|
|
800
|
+
if not provisioning_target_slug:
|
|
801
|
+
raise ValueError("create_provisioning_target requires provisioning_target_slug")
|
|
806
802
|
body = _compact({
|
|
807
|
-
"
|
|
803
|
+
"provisioning_target_slug": provisioning_target_slug,
|
|
808
804
|
"display_name": display_name,
|
|
809
805
|
"description": description,
|
|
810
806
|
"bootstrap_status": bootstrap_status,
|
|
811
807
|
"bootstrap_run_id": bootstrap_run_id,
|
|
812
808
|
"metadata": metadata,
|
|
813
809
|
**self._initiator(initiator_type, initiator_id, idempotency_key),
|
|
814
|
-
**self._scope(
|
|
810
|
+
**self._scope(
|
|
811
|
+
app_slug,
|
|
812
|
+
env,
|
|
813
|
+
target_org_id,
|
|
814
|
+
target_env,
|
|
815
|
+
target_app_slug=target_app_slug,
|
|
816
|
+
shared_app_slug=shared_app_slug,
|
|
817
|
+
),
|
|
815
818
|
})
|
|
816
819
|
return await self._post(
|
|
817
|
-
"/api/authority/
|
|
820
|
+
"/api/authority/provisioning-targets",
|
|
818
821
|
body,
|
|
819
822
|
timeout=self._http_timeout(timeout, 30.0),
|
|
820
823
|
)
|
|
821
824
|
|
|
822
|
-
async def
|
|
825
|
+
async def get_provisioning_target(
|
|
823
826
|
self,
|
|
824
|
-
|
|
827
|
+
provisioning_target_slug: str,
|
|
825
828
|
*,
|
|
826
829
|
app_slug: Optional[str] = None,
|
|
827
830
|
env: Optional[str] = None,
|
|
@@ -829,9 +832,9 @@ class AuthorityNamespace:
|
|
|
829
832
|
target_env: Optional[str] = None,
|
|
830
833
|
timeout: Optional[float] = None,
|
|
831
834
|
) -> Dict[str, Any]:
|
|
832
|
-
"""Get an Authority
|
|
833
|
-
if not
|
|
834
|
-
raise ValueError("
|
|
835
|
+
"""Get an Authority provisioning target. ``GET /api/authority/provisioning-targets/{provisioning_target_slug}``."""
|
|
836
|
+
if not provisioning_target_slug:
|
|
837
|
+
raise ValueError("provisioning_target_slug is required")
|
|
835
838
|
tid, tev = self._target_query_params(target_org_id, target_env)
|
|
836
839
|
qs = _query_string({
|
|
837
840
|
"app_slug": app_slug,
|
|
@@ -840,11 +843,11 @@ class AuthorityNamespace:
|
|
|
840
843
|
"target_env": tev,
|
|
841
844
|
})
|
|
842
845
|
return await self._get(
|
|
843
|
-
f"/api/authority/
|
|
846
|
+
f"/api/authority/provisioning-targets/{quote(provisioning_target_slug, safe='')}{qs}",
|
|
844
847
|
timeout=self._http_timeout(timeout, 30.0),
|
|
845
848
|
)
|
|
846
849
|
|
|
847
|
-
async def
|
|
850
|
+
async def list_provisioning_targets(
|
|
848
851
|
self,
|
|
849
852
|
*,
|
|
850
853
|
status: Optional[str] = None,
|
|
@@ -856,7 +859,7 @@ class AuthorityNamespace:
|
|
|
856
859
|
offset: int = 0,
|
|
857
860
|
timeout: Optional[float] = None,
|
|
858
861
|
) -> Dict[str, Any]:
|
|
859
|
-
"""List Authority
|
|
862
|
+
"""List Authority provisioning targets. ``GET /api/authority/provisioning-targets``."""
|
|
860
863
|
tid, tev = self._target_query_params(target_org_id, target_env)
|
|
861
864
|
qs = _query_string({
|
|
862
865
|
"app_slug": app_slug,
|
|
@@ -868,18 +871,18 @@ class AuthorityNamespace:
|
|
|
868
871
|
"offset": offset,
|
|
869
872
|
})
|
|
870
873
|
return await self._get(
|
|
871
|
-
f"/api/authority/
|
|
874
|
+
f"/api/authority/provisioning-targets{qs}",
|
|
872
875
|
timeout=self._http_timeout(timeout, 30.0),
|
|
873
876
|
)
|
|
874
877
|
|
|
875
|
-
async def
|
|
878
|
+
async def bootstrap_provisioning_target(
|
|
876
879
|
self,
|
|
877
|
-
|
|
880
|
+
provisioning_target_slug: str,
|
|
878
881
|
*,
|
|
879
882
|
action: Optional[str] = None,
|
|
880
883
|
run_id: Optional[str] = None,
|
|
881
884
|
reason: Optional[str] = None,
|
|
882
|
-
|
|
885
|
+
bootstrap_profile_ref: Optional[str] = None,
|
|
883
886
|
shared_app_slug: Optional[str] = None,
|
|
884
887
|
region: Optional[str] = None,
|
|
885
888
|
system: Optional[str] = None,
|
|
@@ -902,14 +905,14 @@ class AuthorityNamespace:
|
|
|
902
905
|
idempotency_key: Optional[str] = None,
|
|
903
906
|
timeout: Optional[float] = None,
|
|
904
907
|
) -> Dict[str, Any]:
|
|
905
|
-
"""Trigger or replay
|
|
906
|
-
if not
|
|
907
|
-
raise ValueError("
|
|
908
|
+
"""Trigger or replay provisioning target bootstrap. ``POST /api/authority/provisioning-targets/{provisioning_target_slug}/bootstrap``."""
|
|
909
|
+
if not provisioning_target_slug:
|
|
910
|
+
raise ValueError("provisioning_target_slug is required")
|
|
908
911
|
body = _compact({
|
|
909
912
|
"action": action,
|
|
910
913
|
"run_id": run_id,
|
|
911
914
|
"reason": reason,
|
|
912
|
-
"
|
|
915
|
+
"bootstrap_profile_ref": bootstrap_profile_ref,
|
|
913
916
|
"shared_app_slug": shared_app_slug,
|
|
914
917
|
"region": region,
|
|
915
918
|
"system": system,
|
|
@@ -933,36 +936,36 @@ class AuthorityNamespace:
|
|
|
933
936
|
),
|
|
934
937
|
})
|
|
935
938
|
return await self._post(
|
|
936
|
-
f"/api/authority/
|
|
939
|
+
f"/api/authority/provisioning-targets/{quote(provisioning_target_slug, safe='')}/bootstrap",
|
|
937
940
|
body,
|
|
938
941
|
timeout=self._http_timeout(timeout, 60.0),
|
|
939
942
|
)
|
|
940
943
|
|
|
941
|
-
async def
|
|
944
|
+
async def get_provisioning_target_bootstrap(
|
|
942
945
|
self,
|
|
943
|
-
|
|
946
|
+
provisioning_target_slug: str,
|
|
944
947
|
*,
|
|
945
948
|
run_id: Optional[str] = None,
|
|
946
949
|
app_slug: Optional[str] = None,
|
|
947
950
|
env: Optional[str] = None,
|
|
948
951
|
timeout: Optional[float] = None,
|
|
949
952
|
) -> Dict[str, Any]:
|
|
950
|
-
"""Get
|
|
951
|
-
if not
|
|
952
|
-
raise ValueError("
|
|
953
|
+
"""Get provisioning target bootstrap state. ``GET /api/authority/provisioning-targets/{provisioning_target_slug}/bootstrap``."""
|
|
954
|
+
if not provisioning_target_slug:
|
|
955
|
+
raise ValueError("provisioning_target_slug is required")
|
|
953
956
|
qs = _query_string({
|
|
954
957
|
"app_slug": app_slug,
|
|
955
958
|
"env": env,
|
|
956
959
|
"run_id": run_id,
|
|
957
960
|
})
|
|
958
961
|
return await self._get(
|
|
959
|
-
f"/api/authority/
|
|
962
|
+
f"/api/authority/provisioning-targets/{quote(provisioning_target_slug, safe='')}/bootstrap{qs}",
|
|
960
963
|
timeout=self._http_timeout(timeout, 30.0),
|
|
961
964
|
)
|
|
962
965
|
|
|
963
|
-
async def
|
|
966
|
+
async def get_provisioning_target_dossier(
|
|
964
967
|
self,
|
|
965
|
-
|
|
968
|
+
provisioning_target_slug: str,
|
|
966
969
|
*,
|
|
967
970
|
app_slug: Optional[str] = None,
|
|
968
971
|
env: Optional[str] = None,
|
|
@@ -974,9 +977,9 @@ class AuthorityNamespace:
|
|
|
974
977
|
limit: Optional[int] = None,
|
|
975
978
|
timeout: Optional[float] = None,
|
|
976
979
|
) -> Dict[str, Any]:
|
|
977
|
-
"""Get full Authority dossier for a
|
|
978
|
-
if not
|
|
979
|
-
raise ValueError("
|
|
980
|
+
"""Get full Authority dossier for a provisioning target. ``GET /api/authority/dossiers/provisioning-target/{provisioning_target_slug}``."""
|
|
981
|
+
if not provisioning_target_slug:
|
|
982
|
+
raise ValueError("provisioning_target_slug is required")
|
|
980
983
|
tid, tev = self._target_query_params(target_org_id, target_env)
|
|
981
984
|
qs = _query_string({
|
|
982
985
|
"app_slug": app_slug,
|
|
@@ -989,7 +992,7 @@ class AuthorityNamespace:
|
|
|
989
992
|
"limit": limit,
|
|
990
993
|
})
|
|
991
994
|
return await self._get(
|
|
992
|
-
f"/api/authority/dossiers/
|
|
995
|
+
f"/api/authority/dossiers/provisioning-target/{quote(provisioning_target_slug, safe='')}{qs}",
|
|
993
996
|
timeout=self._http_timeout(timeout, 30.0),
|
|
994
997
|
)
|
|
995
998
|
|
dominus/start.py
CHANGED
|
@@ -168,7 +168,7 @@ class Dominus:
|
|
|
168
168
|
from .namespaces.sync import SyncNamespace
|
|
169
169
|
self.sync = SyncNamespace(self)
|
|
170
170
|
|
|
171
|
-
# Authority service (runs,
|
|
171
|
+
# Authority service (runs, provisioning targets, deploys, managed clients, dossiers)
|
|
172
172
|
from .namespaces.authority import AuthorityNamespace
|
|
173
173
|
self.authority = AuthorityNamespace(self)
|
|
174
174
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dominus-sdk-python
|
|
3
|
-
Version:
|
|
3
|
+
Version: 5.0.0
|
|
4
4
|
Summary: Python SDK for the Dominus gateway-first platform
|
|
5
5
|
Author-email: CareBridge Systems <dev@carebridge.io>
|
|
6
6
|
License: Proprietary
|
|
@@ -198,7 +198,7 @@ JWT and selected scope headers directly through Gateway.
|
|
|
198
198
|
| `jobs` | Job Worker | Enqueue, poll, dead-letter management |
|
|
199
199
|
| `processor` | Processor | Batch and single-job processing |
|
|
200
200
|
| `sync` | Sync Worker | KV synchronization |
|
|
201
|
-
| `authority` | Dominus Authority | Runs,
|
|
201
|
+
| `authority` | Dominus Authority | Runs, provisioning targets, deploys, managed clients, context |
|
|
202
202
|
| `browser` | Browser Worker | Browser run health, ensure/start/status/result/retry/nudge/cancel/timeline/dossier |
|
|
203
203
|
| `deployer` | Deployer | Thin operator control-plane request surface |
|
|
204
204
|
| `warden` | Warden | Thin operator control-plane request surface |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
dominus/__init__.py,sha256=fXMmrG8nn-vuCCSCbWfUYjZTWuTgPPgSlBERSxiba5s,7070
|
|
2
2
|
dominus/errors.py,sha256=NthcR-o1Q1nQsE3ZSHStcW_RdZ8LQ06mPDSenY1txgM,8547
|
|
3
|
-
dominus/start.py,sha256=
|
|
3
|
+
dominus/start.py,sha256=rZsBQQw5khy-N_Pk_0pEgJfZSrWp_sroYe3pdKpT_fY,49850
|
|
4
4
|
dominus/config/__init__.py,sha256=nvLLNh4dM_MCqcfF3XFS2NnVn44q0RYHEfAPP-2G5To,434
|
|
5
5
|
dominus/config/endpoints.py,sha256=IFioVY3jQ5Mqy65L6rNbEXyPUfYTaXRQkfyGdKv33A8,4140
|
|
6
6
|
dominus/helpers/__init__.py,sha256=cyoBvw1QJugtGt0gYitIz1yxOaMmBa-wMXqbh-fi4PU,61
|
|
@@ -16,7 +16,7 @@ dominus/namespaces/admin.py,sha256=qkGoteAJ6cqdNub4zL1mtyxAQtsM3-nUplRSgw2fMZY,1
|
|
|
16
16
|
dominus/namespaces/ai.py,sha256=Kr_eY-SkEfC-b1fhVVv40pXn_GHkxRzMGD47WoTgu9M,48555
|
|
17
17
|
dominus/namespaces/artifacts.py,sha256=MgjkjSmUP_5XGTAFU2UQ1VU3Vju3kVuvDqxChosP2J0,22246
|
|
18
18
|
dominus/namespaces/auth.py,sha256=YA61WjeRewatrz6BTPhRC95jDgYk3b2QDlH0xdGUceg,67795
|
|
19
|
-
dominus/namespaces/authority.py,sha256=
|
|
19
|
+
dominus/namespaces/authority.py,sha256=11QgW6-EC37qP5Xt-hO_GM7JvX5aaKepgAWnIQDAzlw,77645
|
|
20
20
|
dominus/namespaces/browser.py,sha256=mFxQCvwFy5XmSVIXwwOP2B5WpDnm62U-n-nDlCVn_e8,9042
|
|
21
21
|
dominus/namespaces/courier.py,sha256=7ZuwTWzVGBPTnqPV1VqPdme6PkPyhQOddwaI1wxrlE8,8324
|
|
22
22
|
dominus/namespaces/db.py,sha256=dv4IZACziub7OE8i_4q_Z31uVYJglE12TFkFIbFnYjw,15157
|
|
@@ -38,7 +38,7 @@ dominus/namespaces/sync.py,sha256=mGwMNwc_iWoKgS94n1staPdsKBHNvliMG7omokl7Qmk,21
|
|
|
38
38
|
dominus/namespaces/warden.py,sha256=ebbCeBJJwK9uALEj2aDbvWJ5HTlOXOpXJOwzokH1cso,1139
|
|
39
39
|
dominus/namespaces/workflow.py,sha256=1LMzlYoVImtdpnuenJDtpx7dB2wdNVE3tSBFn-ZAyJA,47204
|
|
40
40
|
dominus/services/__init__.py,sha256=LQl5sx6DHhX1xCN3MRoUgffxqwm3Mfm525hijyFods8,43
|
|
41
|
-
dominus_sdk_python-
|
|
42
|
-
dominus_sdk_python-
|
|
43
|
-
dominus_sdk_python-
|
|
44
|
-
dominus_sdk_python-
|
|
41
|
+
dominus_sdk_python-5.0.0.dist-info/METADATA,sha256=ZHHkFlZzl_ZCPvz-4XfuPU7IsY8uGMdm4CQ3LeYgQyU,8911
|
|
42
|
+
dominus_sdk_python-5.0.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
43
|
+
dominus_sdk_python-5.0.0.dist-info/top_level.txt,sha256=515zxMIbX0DpheRbjvNqKIt_AFqdFjX41jtyp_SqLf4,8
|
|
44
|
+
dominus_sdk_python-5.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|