dominus-sdk-python 2.18.1__tar.gz → 3.0.1__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-2.18.1 → dominus_sdk_python-3.0.1}/PKG-INFO +14 -10
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/README.md +13 -9
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/__init__.py +1 -3
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/core.py +0 -21
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/ai.py +2 -2
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/workflow.py +36 -44
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/PKG-INFO +14 -10
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/SOURCES.txt +1 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/pyproject.toml +1 -1
- dominus_sdk_python-3.0.1/tests/test_public_exports.py +11 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/tests/test_workflow_lifecycle.py +11 -11
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/config/__init__.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/config/endpoints.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/errors.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/__init__.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/auth.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/cache.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/console_capture.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/crypto.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/sse.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/trace.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/__init__.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/admin.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/artifacts.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/auth.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/courier.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/db.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/ddl.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/fastapi.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/files.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/health.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/jobs.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/logs.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/open.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/__init__.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/audio_capture.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/oracle_websocket.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/session.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/types.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/vad_gate.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/portal.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/processor.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/redis.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/secrets.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/secure.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/sync.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/services/__init__.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/start.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/dependency_links.txt +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/requires.txt +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/top_level.txt +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/setup.cfg +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/tests/test_logs.py +0 -0
- {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/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:
|
|
3
|
+
Version: 3.0.1
|
|
4
4
|
Summary: Python SDK for the Dominus Orchestrator Platform
|
|
5
5
|
Author-email: CareBridge Systems <dev@carebridge.io>
|
|
6
6
|
License: Proprietary
|
|
@@ -49,7 +49,7 @@ Async Python SDK for CareBridge Dominus platform services. Routes calls through
|
|
|
49
49
|
- Server-side, asyncio-first Python SDK (3.9+)
|
|
50
50
|
- Namespace API with root-level shortcuts for common operations
|
|
51
51
|
- Targets production Cloudflare Workers (gateway, JWT, logs) and Cloud Run (orchestrator)
|
|
52
|
-
- Version:
|
|
52
|
+
- Version: 3.0.1
|
|
53
53
|
|
|
54
54
|
## Quick Start
|
|
55
55
|
|
|
@@ -97,13 +97,9 @@ execution = await dominus.workflow.ensure(
|
|
|
97
97
|
inputs={"report_snapshot": "ar://carebridge/summit-radiology/production/snapshot/report-1"},
|
|
98
98
|
)
|
|
99
99
|
|
|
100
|
-
#
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
context={"report_ref": {"report_id": "r-1", "accession": "a-1", "session_number": "2"}},
|
|
104
|
-
)
|
|
105
|
-
await dominus.workflow.validate_run(run["run_id"])
|
|
106
|
-
result = await dominus.workflow.start_run(run["run_id"])
|
|
100
|
+
# Inspect the canonical run after ensure
|
|
101
|
+
run_state = await dominus.workflow.get_run_state(execution["run_id"])
|
|
102
|
+
timeline = await dominus.workflow.get_run_timeline(execution["run_id"])
|
|
107
103
|
|
|
108
104
|
# Raw orchestration lifecycle with inline workflow definition
|
|
109
105
|
raw_run = await dominus.ai.workflow.create_run(
|
|
@@ -195,9 +191,17 @@ dominus.release_console() # stop capturing
|
|
|
195
191
|
- [Development](docs/development.md) -- Setup, testing, adding APIs
|
|
196
192
|
- [Workflow hard-cut release notes](docs/workflow-hard-cut-release.md) -- cutover notes and operational checks
|
|
197
193
|
|
|
194
|
+
## Verification (local)
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
pip install -e .
|
|
198
|
+
python -m pytest tests -q
|
|
199
|
+
```
|
|
200
|
+
|
|
198
201
|
## Workflow Surfaces
|
|
199
202
|
|
|
200
|
-
- `dominus.workflow
|
|
203
|
+
- `dominus.workflow.ensure()` is the canonical saved-workflow launch path through Authority.
|
|
204
|
+
- `dominus.workflow.ensure_instance()` / `stream_ensure_instance()` are lower-level instance controls, not the default launch surface.
|
|
201
205
|
- `dominus.ai.workflow.*` is the raw orchestration surface. It requires inline `workflow_definition` data. It does not support saved-workflow IDs directly.
|
|
202
206
|
- `dominus.workflow.execute_pipeline()` runs stored pipelines through workflow-manager's native orchestration-backed runner.
|
|
203
207
|
- `dominus.artifacts.*` now supports addressed V2 artifact refs alongside legacy helpers. Prefer `store_v2()`, `head_v2()`, `compare_v2()`, bookmark helpers, and watcher helpers with canonical `ar://{group}/{owner}/{environment}/{kind}/{artifact_key}` refs for new code; `target_project_id` / `use_shared` remain compatibility-only targeting concepts.
|
|
@@ -7,7 +7,7 @@ Async Python SDK for CareBridge Dominus platform services. Routes calls through
|
|
|
7
7
|
- Server-side, asyncio-first Python SDK (3.9+)
|
|
8
8
|
- Namespace API with root-level shortcuts for common operations
|
|
9
9
|
- Targets production Cloudflare Workers (gateway, JWT, logs) and Cloud Run (orchestrator)
|
|
10
|
-
- Version:
|
|
10
|
+
- Version: 3.0.1
|
|
11
11
|
|
|
12
12
|
## Quick Start
|
|
13
13
|
|
|
@@ -55,13 +55,9 @@ execution = await dominus.workflow.ensure(
|
|
|
55
55
|
inputs={"report_snapshot": "ar://carebridge/summit-radiology/production/snapshot/report-1"},
|
|
56
56
|
)
|
|
57
57
|
|
|
58
|
-
#
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
context={"report_ref": {"report_id": "r-1", "accession": "a-1", "session_number": "2"}},
|
|
62
|
-
)
|
|
63
|
-
await dominus.workflow.validate_run(run["run_id"])
|
|
64
|
-
result = await dominus.workflow.start_run(run["run_id"])
|
|
58
|
+
# Inspect the canonical run after ensure
|
|
59
|
+
run_state = await dominus.workflow.get_run_state(execution["run_id"])
|
|
60
|
+
timeline = await dominus.workflow.get_run_timeline(execution["run_id"])
|
|
65
61
|
|
|
66
62
|
# Raw orchestration lifecycle with inline workflow definition
|
|
67
63
|
raw_run = await dominus.ai.workflow.create_run(
|
|
@@ -153,9 +149,17 @@ dominus.release_console() # stop capturing
|
|
|
153
149
|
- [Development](docs/development.md) -- Setup, testing, adding APIs
|
|
154
150
|
- [Workflow hard-cut release notes](docs/workflow-hard-cut-release.md) -- cutover notes and operational checks
|
|
155
151
|
|
|
152
|
+
## Verification (local)
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
pip install -e .
|
|
156
|
+
python -m pytest tests -q
|
|
157
|
+
```
|
|
158
|
+
|
|
156
159
|
## Workflow Surfaces
|
|
157
160
|
|
|
158
|
-
- `dominus.workflow
|
|
161
|
+
- `dominus.workflow.ensure()` is the canonical saved-workflow launch path through Authority.
|
|
162
|
+
- `dominus.workflow.ensure_instance()` / `stream_ensure_instance()` are lower-level instance controls, not the default launch surface.
|
|
159
163
|
- `dominus.ai.workflow.*` is the raw orchestration surface. It requires inline `workflow_definition` data. It does not support saved-workflow IDs directly.
|
|
160
164
|
- `dominus.workflow.execute_pipeline()` runs stored pipelines through workflow-manager's native orchestration-backed runner.
|
|
161
165
|
- `dominus.artifacts.*` now supports addressed V2 artifact refs alongside legacy helpers. Prefer `store_v2()`, `head_v2()`, `compare_v2()`, bookmark helpers, and watcher helpers with canonical `ar://{group}/{owner}/{environment}/{kind}/{artifact_key}` refs for new code; `target_project_id` / `use_shared` remain compatibility-only targeting concepts.
|
|
@@ -155,7 +155,6 @@ from .helpers.core import (
|
|
|
155
155
|
verify_jwt_locally,
|
|
156
156
|
is_jwt_valid,
|
|
157
157
|
mint_selected_project_jwt,
|
|
158
|
-
delegate_jwt,
|
|
159
158
|
)
|
|
160
159
|
|
|
161
160
|
# Export trace utilities for distributed tracing
|
|
@@ -182,7 +181,7 @@ from .errors import (
|
|
|
182
181
|
TimeoutError as DominusTimeoutError,
|
|
183
182
|
)
|
|
184
183
|
|
|
185
|
-
__version__ = "
|
|
184
|
+
__version__ = "3.0.1"
|
|
186
185
|
__all__ = [
|
|
187
186
|
# Main SDK instance
|
|
188
187
|
"dominus",
|
|
@@ -253,7 +252,6 @@ __all__ = [
|
|
|
253
252
|
"verify_jwt_locally",
|
|
254
253
|
"is_jwt_valid",
|
|
255
254
|
"mint_selected_project_jwt",
|
|
256
|
-
"delegate_jwt",
|
|
257
255
|
# Trace utilities
|
|
258
256
|
"generate_trace_id",
|
|
259
257
|
"get_current_trace_id",
|
|
@@ -600,27 +600,6 @@ async def mint_selected_project_jwt(
|
|
|
600
600
|
raise RuntimeError(f"Selected-project JWT mint failed: {e}") from e
|
|
601
601
|
|
|
602
602
|
|
|
603
|
-
async def delegate_jwt(
|
|
604
|
-
psk_token: str,
|
|
605
|
-
target_project_id: str,
|
|
606
|
-
target_environment: str,
|
|
607
|
-
use_shared: bool = False
|
|
608
|
-
) -> str:
|
|
609
|
-
"""
|
|
610
|
-
Compatibility alias for :func:`mint_selected_project_jwt`.
|
|
611
|
-
|
|
612
|
-
.. deprecated::
|
|
613
|
-
Prefer :func:`mint_selected_project_jwt` for new code; "delegated" naming is
|
|
614
|
-
legacy terminology only.
|
|
615
|
-
"""
|
|
616
|
-
return await mint_selected_project_jwt(
|
|
617
|
-
psk_token=psk_token,
|
|
618
|
-
target_project_id=target_project_id,
|
|
619
|
-
target_environment=target_environment,
|
|
620
|
-
use_shared=use_shared,
|
|
621
|
-
)
|
|
622
|
-
|
|
623
|
-
|
|
624
603
|
def verify_token_format(token: str) -> bool:
|
|
625
604
|
"""
|
|
626
605
|
Verify token format is valid (basic check, not server verification).
|
|
@@ -576,7 +576,7 @@ class WorkflowSubNamespace(GatewayMixin):
|
|
|
576
576
|
if workflow_id:
|
|
577
577
|
raise ValueError(
|
|
578
578
|
f"dominus.ai.workflow.{method_name}() does not support saved workflow IDs. "
|
|
579
|
-
"Pass workflow_definition for raw orchestration or use dominus.workflow.
|
|
579
|
+
"Pass workflow_definition for raw orchestration or use dominus.workflow.ensure() "
|
|
580
580
|
"for saved-workflow execution."
|
|
581
581
|
)
|
|
582
582
|
raise ValueError(
|
|
@@ -624,7 +624,7 @@ class WorkflowSubNamespace(GatewayMixin):
|
|
|
624
624
|
|
|
625
625
|
Args:
|
|
626
626
|
workflow_definition: Inline orchestration workflow definition
|
|
627
|
-
workflow_id: Unsupported for raw orchestration; use dominus.workflow.
|
|
627
|
+
workflow_id: Unsupported for raw orchestration; use dominus.workflow.ensure()
|
|
628
628
|
initial_artifacts: Initial artifact key -> artifact ID mapping
|
|
629
629
|
input: Legacy alias for initial_artifacts
|
|
630
630
|
conversation_id: Optional conversation ID for context
|
|
@@ -63,7 +63,7 @@ class WorkflowNamespace:
|
|
|
63
63
|
def _reject_legacy_runs_facade(self, method: str) -> None:
|
|
64
64
|
raise RuntimeError(
|
|
65
65
|
f"dominus.workflow.{method} was removed: /api/workflow/runs is retired. "
|
|
66
|
-
"Use ensure()
|
|
66
|
+
"Use ensure() through Authority."
|
|
67
67
|
)
|
|
68
68
|
|
|
69
69
|
@staticmethod
|
|
@@ -795,48 +795,29 @@ class WorkflowNamespace:
|
|
|
795
795
|
idempotency_key: Optional[str] = None,
|
|
796
796
|
) -> Dict[str, Any]:
|
|
797
797
|
"""Ensure a workflow instance exists and optionally launch execution."""
|
|
798
|
-
if
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
or workflow_ref is not None
|
|
803
|
-
or target_project_id is not None
|
|
804
|
-
or target_environment is not None
|
|
805
|
-
or initiator_type is not None
|
|
806
|
-
or initiator_id is not None
|
|
807
|
-
or idempotency_key is not None
|
|
808
|
-
or group is None
|
|
809
|
-
or owner is None
|
|
810
|
-
):
|
|
811
|
-
return await self._api(
|
|
812
|
-
endpoint="/api/authority/runs/ensure",
|
|
813
|
-
body=self._build_authority_ensure_body(
|
|
814
|
-
workflow_id,
|
|
815
|
-
workflow_ref=workflow_ref,
|
|
816
|
-
subject=subject,
|
|
817
|
-
company=company,
|
|
818
|
-
inputs=inputs,
|
|
819
|
-
context=context,
|
|
820
|
-
bindings=bindings,
|
|
821
|
-
instance_id=instance_id,
|
|
822
|
-
mode=mode,
|
|
823
|
-
target_project_id=target_project_id,
|
|
824
|
-
target_environment=target_environment,
|
|
825
|
-
initiator_type=initiator_type,
|
|
826
|
-
initiator_id=initiator_id,
|
|
827
|
-
idempotency_key=idempotency_key,
|
|
828
|
-
),
|
|
798
|
+
if mode == "streaming":
|
|
799
|
+
raise ValueError(
|
|
800
|
+
"dominus.workflow.ensure() is Authority-only and supports blocking, async, or ensure_only. "
|
|
801
|
+
"Use execution polling after launch instead of instance streaming on this surface."
|
|
829
802
|
)
|
|
830
|
-
return await self.
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
803
|
+
return await self._api(
|
|
804
|
+
endpoint="/api/authority/runs/ensure",
|
|
805
|
+
body=self._build_authority_ensure_body(
|
|
806
|
+
workflow_id,
|
|
807
|
+
workflow_ref=workflow_ref,
|
|
808
|
+
subject=subject,
|
|
809
|
+
company=company,
|
|
810
|
+
inputs=inputs,
|
|
811
|
+
context=context,
|
|
812
|
+
bindings=bindings,
|
|
813
|
+
instance_id=instance_id,
|
|
814
|
+
mode=mode,
|
|
815
|
+
target_project_id=target_project_id,
|
|
816
|
+
target_environment=target_environment,
|
|
817
|
+
initiator_type=initiator_type,
|
|
818
|
+
initiator_id=initiator_id,
|
|
819
|
+
idempotency_key=idempotency_key,
|
|
820
|
+
),
|
|
840
821
|
)
|
|
841
822
|
|
|
842
823
|
async def ensure_instance(
|
|
@@ -852,7 +833,13 @@ class WorkflowNamespace:
|
|
|
852
833
|
mode: str = "blocking",
|
|
853
834
|
context: Optional[Dict[str, Any]] = None,
|
|
854
835
|
) -> Dict[str, Any]:
|
|
855
|
-
"""
|
|
836
|
+
"""
|
|
837
|
+
Advanced instance-control surface for workflow-manager.
|
|
838
|
+
|
|
839
|
+
This is not the canonical public launch path. Prefer ensure() for
|
|
840
|
+
Authority-backed launch and use instance APIs only when you
|
|
841
|
+
intentionally need lower-level instance reuse or nudge/retry control.
|
|
842
|
+
"""
|
|
856
843
|
if mode == "streaming":
|
|
857
844
|
raise ValueError("Use stream_ensure_instance() for streaming instance execution")
|
|
858
845
|
|
|
@@ -883,7 +870,12 @@ class WorkflowNamespace:
|
|
|
883
870
|
context: Optional[Dict[str, Any]] = None,
|
|
884
871
|
on_chunk: Optional[Any] = None,
|
|
885
872
|
):
|
|
886
|
-
"""
|
|
873
|
+
"""
|
|
874
|
+
Advanced instance-control SSE helper for workflow-manager.
|
|
875
|
+
|
|
876
|
+
This bypasses Authority launch and is retained only for explicit,
|
|
877
|
+
lower-level instance operations.
|
|
878
|
+
"""
|
|
887
879
|
async for chunk in self._client._stream_request(
|
|
888
880
|
endpoint=f"{self._instance_base_endpoint(workflow_id)}/ensure",
|
|
889
881
|
body=self._build_ensure_instance_body(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dominus-sdk-python
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.1
|
|
4
4
|
Summary: Python SDK for the Dominus Orchestrator Platform
|
|
5
5
|
Author-email: CareBridge Systems <dev@carebridge.io>
|
|
6
6
|
License: Proprietary
|
|
@@ -49,7 +49,7 @@ Async Python SDK for CareBridge Dominus platform services. Routes calls through
|
|
|
49
49
|
- Server-side, asyncio-first Python SDK (3.9+)
|
|
50
50
|
- Namespace API with root-level shortcuts for common operations
|
|
51
51
|
- Targets production Cloudflare Workers (gateway, JWT, logs) and Cloud Run (orchestrator)
|
|
52
|
-
- Version:
|
|
52
|
+
- Version: 3.0.1
|
|
53
53
|
|
|
54
54
|
## Quick Start
|
|
55
55
|
|
|
@@ -97,13 +97,9 @@ execution = await dominus.workflow.ensure(
|
|
|
97
97
|
inputs={"report_snapshot": "ar://carebridge/summit-radiology/production/snapshot/report-1"},
|
|
98
98
|
)
|
|
99
99
|
|
|
100
|
-
#
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
context={"report_ref": {"report_id": "r-1", "accession": "a-1", "session_number": "2"}},
|
|
104
|
-
)
|
|
105
|
-
await dominus.workflow.validate_run(run["run_id"])
|
|
106
|
-
result = await dominus.workflow.start_run(run["run_id"])
|
|
100
|
+
# Inspect the canonical run after ensure
|
|
101
|
+
run_state = await dominus.workflow.get_run_state(execution["run_id"])
|
|
102
|
+
timeline = await dominus.workflow.get_run_timeline(execution["run_id"])
|
|
107
103
|
|
|
108
104
|
# Raw orchestration lifecycle with inline workflow definition
|
|
109
105
|
raw_run = await dominus.ai.workflow.create_run(
|
|
@@ -195,9 +191,17 @@ dominus.release_console() # stop capturing
|
|
|
195
191
|
- [Development](docs/development.md) -- Setup, testing, adding APIs
|
|
196
192
|
- [Workflow hard-cut release notes](docs/workflow-hard-cut-release.md) -- cutover notes and operational checks
|
|
197
193
|
|
|
194
|
+
## Verification (local)
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
pip install -e .
|
|
198
|
+
python -m pytest tests -q
|
|
199
|
+
```
|
|
200
|
+
|
|
198
201
|
## Workflow Surfaces
|
|
199
202
|
|
|
200
|
-
- `dominus.workflow
|
|
203
|
+
- `dominus.workflow.ensure()` is the canonical saved-workflow launch path through Authority.
|
|
204
|
+
- `dominus.workflow.ensure_instance()` / `stream_ensure_instance()` are lower-level instance controls, not the default launch surface.
|
|
201
205
|
- `dominus.ai.workflow.*` is the raw orchestration surface. It requires inline `workflow_definition` data. It does not support saved-workflow IDs directly.
|
|
202
206
|
- `dominus.workflow.execute_pipeline()` runs stored pipelines through workflow-manager's native orchestration-backed runner.
|
|
203
207
|
- `dominus.artifacts.*` now supports addressed V2 artifact refs alongside legacy helpers. Prefer `store_v2()`, `head_v2()`, `compare_v2()`, bookmark helpers, and watcher helpers with canonical `ar://{group}/{owner}/{environment}/{kind}/{artifact_key}` refs for new code; `target_project_id` / `use_shared` remain compatibility-only targeting concepts.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from dominus import mint_selected_project_jwt
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def test_top_level_exports_drop_delegate_alias():
|
|
5
|
+
assert callable(mint_selected_project_jwt)
|
|
6
|
+
try:
|
|
7
|
+
from dominus import delegate_jwt # type: ignore[attr-defined]
|
|
8
|
+
except ImportError:
|
|
9
|
+
delegate_jwt = None
|
|
10
|
+
|
|
11
|
+
assert delegate_jwt is None
|
|
@@ -374,26 +374,26 @@ async def test_saved_workflow_instance_ensure_contract_matches_workflow_manager(
|
|
|
374
374
|
|
|
375
375
|
|
|
376
376
|
@pytest.mark.asyncio
|
|
377
|
-
async def
|
|
377
|
+
async def test_saved_workflow_ensure_is_authority_only_and_stream_guard():
|
|
378
378
|
client = FakeClient()
|
|
379
379
|
namespace = WorkflowNamespace(client)
|
|
380
380
|
|
|
381
381
|
await namespace.ensure(
|
|
382
382
|
"wf-instance",
|
|
383
|
-
group="reports",
|
|
384
|
-
owner="company:acme",
|
|
385
383
|
mode="ensure_only",
|
|
386
384
|
)
|
|
387
385
|
|
|
388
386
|
call = client.calls[0]
|
|
389
|
-
assert call["endpoint"] == "/api/
|
|
390
|
-
assert call["body"] ==
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
387
|
+
assert call["endpoint"] == "/api/authority/runs/ensure"
|
|
388
|
+
assert call["body"]["workflow_id"] == "wf-instance"
|
|
389
|
+
assert call["body"]["mode"] == "ensure_only"
|
|
390
|
+
assert isinstance(call["body"]["idempotency_key"], str)
|
|
391
|
+
|
|
392
|
+
with pytest.raises(ValueError, match="Authority-only and supports blocking, async, or ensure_only"):
|
|
393
|
+
await namespace.ensure(
|
|
394
|
+
"wf-instance",
|
|
395
|
+
mode="streaming",
|
|
396
|
+
)
|
|
397
397
|
|
|
398
398
|
with pytest.raises(ValueError, match="Use stream_ensure_instance\\(\\) for streaming instance execution"):
|
|
399
399
|
await namespace.ensure_instance(
|
|
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-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/__init__.py
RENAMED
|
File without changes
|
{dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/audio_capture.py
RENAMED
|
File without changes
|
{dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/oracle_websocket.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/vad_gate.py
RENAMED
|
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-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/requires.txt
RENAMED
|
File without changes
|
{dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|