optimizely-opal.opal-tools-sdk 0.1.30.dev0__tar.gz → 0.1.32.dev0__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 (22) hide show
  1. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/PKG-INFO +1 -1
  2. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/opal_tools_sdk/proteus.py +49 -3
  3. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/optimizely_opal.opal_tools_sdk.egg-info/PKG-INFO +1 -1
  4. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/pyproject.toml +1 -1
  5. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/setup.py +1 -1
  6. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/README.md +0 -0
  7. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/opal_tools_sdk/__init__.py +0 -0
  8. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/opal_tools_sdk/_registry.py +0 -0
  9. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/opal_tools_sdk/auth.py +0 -0
  10. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/opal_tools_sdk/decorators.py +0 -0
  11. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/opal_tools_sdk/logging.py +0 -0
  12. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/opal_tools_sdk/models.py +0 -0
  13. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/opal_tools_sdk/service.py +0 -0
  14. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/opal_tools_sdk/ui.py +0 -0
  15. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/optimizely_opal.opal_tools_sdk.egg-info/SOURCES.txt +0 -0
  16. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/optimizely_opal.opal_tools_sdk.egg-info/dependency_links.txt +0 -0
  17. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/optimizely_opal.opal_tools_sdk.egg-info/requires.txt +0 -0
  18. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/optimizely_opal.opal_tools_sdk.egg-info/top_level.txt +0 -0
  19. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/setup.cfg +0 -0
  20. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/tests/test_integration.py +0 -0
  21. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/tests/test_nested_schema.py +0 -0
  22. {optimizely_opal_opal_tools_sdk-0.1.30.dev0 → optimizely_opal_opal_tools_sdk-0.1.32.dev0}/tests/test_proteus.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: optimizely-opal.opal-tools-sdk
3
- Version: 0.1.30.dev0
3
+ Version: 0.1.32.dev0
4
4
  Summary: SDK for creating Opal-compatible tools services
5
5
  Home-page: https://github.com/optimizely/opal-tools-sdk
6
6
  Author: Optimizely
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: proteus-document-spec.json
3
- # timestamp: 2026-04-30T17:46:41+00:00
3
+ # timestamp: 2026-05-11T14:40:18+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -283,6 +283,14 @@ class ProteusDocument(BaseModel):
283
283
  default=None,
284
284
  description="If true, constrains the body to a max height and makes it scrollable when content overflows.",
285
285
  )
286
+ data: dict[str, Any] | None = Field(
287
+ default=None,
288
+ description="Initial data for the document. Not used by the renderer directly — intended for the outer component managing state to use as the starting data.",
289
+ )
290
+ meta: Any | None = Field(
291
+ default=None,
292
+ description="Additional metadata not directly consumed by Proteus. Use this to pass along any extra data.",
293
+ )
286
294
  subtitle: ProteusNode | None = Field(
287
295
  default=None,
288
296
  description="A brief description or tagline that provides additional context about the Proteus document's purpose.",
@@ -325,6 +333,18 @@ class ProteusEventHandler3(BaseModel):
325
333
  )
326
334
 
327
335
 
336
+ class ProteusEventHandler4(BaseModel):
337
+ """
338
+ Client-side component action - for opening a link in a new tab
339
+ """
340
+
341
+ model_config = ConfigDict(
342
+ extra="forbid",
343
+ )
344
+ action: Literal["openLink"] = Field(default="openLink", description="The action type")
345
+ url: ProteusExpression | str = Field(..., description="URL to open in a new tab")
346
+
347
+
328
348
  class Part(BaseModel):
329
349
  model_config = ConfigDict(
330
350
  extra="forbid",
@@ -967,6 +987,23 @@ class ProteusDataTable(BaseModel):
967
987
  data: list[dict[str, Any]] | ProteusExpression | ProteusZip | None = None
968
988
 
969
989
 
990
+ class ProteusFederated(BaseModel):
991
+ model_config = ConfigDict(
992
+ extra="forbid",
993
+ )
994
+ field_type: Literal["Federated"] = Field(default="Federated", alias="$type")
995
+ entry: str = Field(
996
+ ..., description="URL to the remote application's remoteEntry.js or mf-manifest.json"
997
+ )
998
+ exposeKey: str | None = Field(
999
+ default=".",
1000
+ description="The key from the remote's ModuleFederationPlugin exposes config (e.g. './App'). Defaults to '.' (root export)",
1001
+ )
1002
+ fallback: ProteusNode | None = Field(
1003
+ default=None, description="Content rendered when the federated component fails to load"
1004
+ )
1005
+
1006
+
970
1007
  class ProteusField(BaseModel):
971
1008
  model_config = ConfigDict(
972
1009
  extra="forbid",
@@ -2209,9 +2246,13 @@ class ProteusCondition(
2209
2246
 
2210
2247
 
2211
2248
  class ProteusEventHandler(
2212
- RootModel[ProteusEventHandler1 | ProteusEventHandler2 | ProteusEventHandler3]
2249
+ RootModel[
2250
+ ProteusEventHandler1 | ProteusEventHandler2 | ProteusEventHandler3 | ProteusEventHandler4
2251
+ ]
2213
2252
  ):
2214
- root: ProteusEventHandler1 | ProteusEventHandler2 | ProteusEventHandler3 = Field(
2253
+ root: (
2254
+ ProteusEventHandler1 | ProteusEventHandler2 | ProteusEventHandler3 | ProteusEventHandler4
2255
+ ) = Field(
2215
2256
  ...,
2216
2257
  description="Handler for user interactions - a server-side interaction call, client-side message, or client-side component action",
2217
2258
  )
@@ -2236,6 +2277,7 @@ class ProteusElement(
2236
2277
  | ProteusChart
2237
2278
  | ProteusConcat
2238
2279
  | ProteusDataTable
2280
+ | ProteusFederated
2239
2281
  | ProteusField
2240
2282
  | ProteusFileUpload
2241
2283
  | ProteusGroup
@@ -2273,6 +2315,7 @@ class ProteusElement(
2273
2315
  | ProteusChart
2274
2316
  | ProteusConcat
2275
2317
  | ProteusDataTable
2318
+ | ProteusFederated
2276
2319
  | ProteusField
2277
2320
  | ProteusFileUpload
2278
2321
  | ProteusGroup
@@ -3939,6 +3982,7 @@ ProteusCondition10.model_rebuild()
3939
3982
  ProteusDocument.model_rebuild()
3940
3983
  ProteusEventHandler2.model_rebuild()
3941
3984
  ProteusEventHandler3.model_rebuild()
3985
+ ProteusEventHandler4.model_rebuild()
3942
3986
  Part.model_rebuild()
3943
3987
  ProteusStructuredMessage.model_rebuild()
3944
3988
  ProteusZip.model_rebuild()
@@ -3953,6 +3997,7 @@ ProteusCardLink.model_rebuild()
3953
3997
  ProteusChart.model_rebuild()
3954
3998
  ProteusConcat.model_rebuild()
3955
3999
  ProteusDataTable.model_rebuild()
4000
+ ProteusFederated.model_rebuild()
3956
4001
  ProteusField.model_rebuild()
3957
4002
  ProteusFileUpload.model_rebuild()
3958
4003
  ProteusGroup.model_rebuild()
@@ -4000,6 +4045,7 @@ class UI:
4000
4045
  Concat = ProteusConcat
4001
4046
  DataTable = ProteusDataTable
4002
4047
  Document = ProteusDocument
4048
+ Federated = ProteusFederated
4003
4049
  Field = ProteusField
4004
4050
  FileUpload = ProteusFileUpload
4005
4051
  Group = ProteusGroup
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: optimizely-opal.opal-tools-sdk
3
- Version: 0.1.30.dev0
3
+ Version: 0.1.32.dev0
4
4
  Summary: SDK for creating Opal-compatible tools services
5
5
  Home-page: https://github.com/optimizely/opal-tools-sdk
6
6
  Author: Optimizely
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "optimizely-opal.opal-tools-sdk"
7
- version = "0.1.30-dev"
7
+ version = "0.1.32-dev"
8
8
  description = "SDK for creating Opal-compatible tools services"
9
9
  authors = [{ name = "Optimizely", email = "opal-team@optimizely.com" }]
10
10
  readme = "README.md"
@@ -2,7 +2,7 @@ from setuptools import find_packages, setup
2
2
 
3
3
  setup(
4
4
  name="optimizely-opal.opal-tools-sdk",
5
- version="0.1.30-dev",
5
+ version="0.1.32-dev",
6
6
  packages=find_packages(),
7
7
  install_requires=[
8
8
  "fastapi>=0.100.0",