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.
Files changed (54) hide show
  1. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/PKG-INFO +14 -10
  2. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/README.md +13 -9
  3. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/__init__.py +1 -3
  4. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/core.py +0 -21
  5. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/ai.py +2 -2
  6. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/workflow.py +36 -44
  7. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/PKG-INFO +14 -10
  8. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/SOURCES.txt +1 -0
  9. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/pyproject.toml +1 -1
  10. dominus_sdk_python-3.0.1/tests/test_public_exports.py +11 -0
  11. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/tests/test_workflow_lifecycle.py +11 -11
  12. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/config/__init__.py +0 -0
  13. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/config/endpoints.py +0 -0
  14. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/errors.py +0 -0
  15. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/__init__.py +0 -0
  16. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/auth.py +0 -0
  17. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/cache.py +0 -0
  18. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/console_capture.py +0 -0
  19. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/crypto.py +0 -0
  20. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/sse.py +0 -0
  21. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/helpers/trace.py +0 -0
  22. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/__init__.py +0 -0
  23. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/admin.py +0 -0
  24. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/artifacts.py +0 -0
  25. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/auth.py +0 -0
  26. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/courier.py +0 -0
  27. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/db.py +0 -0
  28. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/ddl.py +0 -0
  29. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/fastapi.py +0 -0
  30. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/files.py +0 -0
  31. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/health.py +0 -0
  32. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/jobs.py +0 -0
  33. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/logs.py +0 -0
  34. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/open.py +0 -0
  35. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/__init__.py +0 -0
  36. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/audio_capture.py +0 -0
  37. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/oracle_websocket.py +0 -0
  38. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/session.py +0 -0
  39. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/types.py +0 -0
  40. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/oracle/vad_gate.py +0 -0
  41. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/portal.py +0 -0
  42. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/processor.py +0 -0
  43. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/redis.py +0 -0
  44. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/secrets.py +0 -0
  45. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/secure.py +0 -0
  46. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/namespaces/sync.py +0 -0
  47. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/services/__init__.py +0 -0
  48. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus/start.py +0 -0
  49. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/dependency_links.txt +0 -0
  50. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/requires.txt +0 -0
  51. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/dominus_sdk_python.egg-info/top_level.txt +0 -0
  52. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/setup.cfg +0 -0
  53. {dominus_sdk_python-2.18.1 → dominus_sdk_python-3.0.1}/tests/test_logs.py +0 -0
  54. {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: 2.18.1
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: 2.18.1
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
- # Saved workflow lifecycle through workflow-manager when you need explicit artifacts
101
- run = await dominus.workflow.create_run(
102
- workflow_id="wf_saved_123",
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.*` is the saved-workflow facade through `dominus-workflow-manager`. Use it for stored workflow IDs and the artifact-aware run lifecycle: `create_run -> register_artifact -> validate_run -> start_run`.
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: 2.18.1
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
- # Saved workflow lifecycle through workflow-manager when you need explicit artifacts
59
- run = await dominus.workflow.create_run(
60
- workflow_id="wf_saved_123",
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.*` is the saved-workflow facade through `dominus-workflow-manager`. Use it for stored workflow IDs and the artifact-aware run lifecycle: `create_run -> register_artifact -> validate_run -> start_run`.
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__ = "2.18.1"
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.create_run() "
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.create_run()
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() with Authority fields (subject, company, inputs, context, ...) or ensure_instance()."
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
- subject is not None
800
- or company is not None
801
- or inputs is not None
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.ensure_instance(
831
- workflow_id,
832
- instance_id=instance_id,
833
- group=group,
834
- owner=owner,
835
- environment=environment,
836
- nudge_policy=nudge_policy,
837
- bindings=bindings,
838
- mode=mode,
839
- context=context,
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
- """Ensure a workflow instance exists and optionally launch execution."""
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
- """Ensure a workflow instance and stream execution events."""
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: 2.18.1
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: 2.18.1
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
- # Saved workflow lifecycle through workflow-manager when you need explicit artifacts
101
- run = await dominus.workflow.create_run(
102
- workflow_id="wf_saved_123",
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.*` is the saved-workflow facade through `dominus-workflow-manager`. Use it for stored workflow IDs and the artifact-aware run lifecycle: `create_run -> register_artifact -> validate_run -> start_run`.
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.
@@ -47,5 +47,6 @@ dominus_sdk_python.egg-info/dependency_links.txt
47
47
  dominus_sdk_python.egg-info/requires.txt
48
48
  dominus_sdk_python.egg-info/top_level.txt
49
49
  tests/test_logs.py
50
+ tests/test_public_exports.py
50
51
  tests/test_workflow_lifecycle.py
51
52
  tests/test_workflow_refs.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dominus-sdk-python"
7
- version = "2.18.1"
7
+ version = "3.0.1"
8
8
  description = "Python SDK for the Dominus Orchestrator Platform"
9
9
  readme = "README.md"
10
10
  license = {text = "Proprietary"}
@@ -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 test_saved_workflow_instance_ensure_alias_and_stream_guard():
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/workflow/workflows/wf-instance/instances/ensure"
390
- assert call["body"] == {
391
- "params": {
392
- "group": "reports",
393
- "owner": "company:acme",
394
- },
395
- "mode": "ensure_only",
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(