optimizely-opal.opal-tools-sdk 0.1.37.dev0__tar.gz → 0.1.39.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.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/PKG-INFO +1 -1
  2. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/opal_tools_sdk/proteus.py +98 -6
  3. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/optimizely_opal.opal_tools_sdk.egg-info/PKG-INFO +1 -1
  4. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/pyproject.toml +1 -1
  5. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/setup.py +1 -1
  6. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/README.md +0 -0
  7. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/opal_tools_sdk/__init__.py +0 -0
  8. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/opal_tools_sdk/_registry.py +0 -0
  9. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/opal_tools_sdk/auth.py +0 -0
  10. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/opal_tools_sdk/decorators.py +0 -0
  11. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/opal_tools_sdk/logging.py +0 -0
  12. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/opal_tools_sdk/models.py +0 -0
  13. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/opal_tools_sdk/service.py +0 -0
  14. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/opal_tools_sdk/ui.py +0 -0
  15. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/optimizely_opal.opal_tools_sdk.egg-info/SOURCES.txt +0 -0
  16. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/optimizely_opal.opal_tools_sdk.egg-info/dependency_links.txt +0 -0
  17. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/optimizely_opal.opal_tools_sdk.egg-info/requires.txt +0 -0
  18. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/optimizely_opal.opal_tools_sdk.egg-info/top_level.txt +0 -0
  19. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/setup.cfg +0 -0
  20. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/tests/test_integration.py +0 -0
  21. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.dev0}/tests/test_nested_schema.py +0 -0
  22. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.39.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.37.dev0
3
+ Version: 0.1.39.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-06-02T14:09:34+00:00
3
+ # timestamp: 2026-06-05T01:46:03+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -2237,6 +2237,10 @@ class ProteusQuestion(BaseModel):
2237
2237
  extra="forbid",
2238
2238
  )
2239
2239
  field_type: Literal["Question"] = Field(default="Question", alias="$type")
2240
+ interaction: str | ProteusExpression | None = Field(
2241
+ default=None,
2242
+ description="Name of the interaction to fire when the user finishes or cancels. When set, submit and cancel send a structured `{ questions, answers }` payload via the named interaction so a calling tool can read the answers programmatically. When omitted, a human-readable transcript is sent via the `message` event instead.",
2243
+ )
2240
2244
  questions: ProteusExpression = Field(..., description="Array of questions data")
2241
2245
 
2242
2246
 
@@ -2316,6 +2320,81 @@ class ProteusRange(BaseModel):
2316
2320
  z: SprinklePropZ | None = None
2317
2321
 
2318
2322
 
2323
+ class ProteusRichTextEditor(BaseModel):
2324
+ model_config = ConfigDict(
2325
+ extra="forbid",
2326
+ )
2327
+ field_type: Literal["RichTextEditor"] = Field(default="RichTextEditor", alias="$type")
2328
+ alignItems: SprinklePropAlignItems | None = None
2329
+ alignSelf: SprinklePropAlignSelf | None = None
2330
+ animation: SprinklePropAnimation | None = None
2331
+ backgroundImage: SprinklePropBackgroundImage | None = None
2332
+ bg: SprinklePropBg | None = None
2333
+ border: SprinklePropBorder | None = None
2334
+ borderB: SprinklePropBorderB | None = None
2335
+ borderColor: SprinklePropBorderColor | None = None
2336
+ borderL: SprinklePropBorderL | None = None
2337
+ borderR: SprinklePropBorderR | None = None
2338
+ borderT: SprinklePropBorderT | None = None
2339
+ color: SprinklePropColor | None = None
2340
+ cursor: SprinklePropCursor | None = None
2341
+ display: SprinklePropDisplay | None = None
2342
+ flex: SprinklePropFlex | None = None
2343
+ flexDirection: SprinklePropFlexDirection | None = None
2344
+ flexWrap: SprinklePropFlexWrap | None = None
2345
+ fontFamily: SprinklePropFontFamily | None = None
2346
+ fontSize: SprinklePropFontSize | None = None
2347
+ fontWeight: SprinklePropFontWeight | None = None
2348
+ gap: SprinklePropGap | None = None
2349
+ gridAutoRows: SprinklePropGridAutoRows | None = None
2350
+ gridColumn: SprinklePropGridColumn | None = None
2351
+ gridTemplateColumns: SprinklePropGridTemplateColumns | None = None
2352
+ h: SprinklePropH | None = None
2353
+ justifyContent: SprinklePropJustifyContent | None = None
2354
+ justifyItems: SprinklePropJustifyItems | None = None
2355
+ m: SprinklePropM | None = None
2356
+ maxH: SprinklePropMaxH | None = None
2357
+ maxW: SprinklePropMaxW | None = None
2358
+ mb: SprinklePropMb | None = None
2359
+ ml: SprinklePropMl | None = None
2360
+ mr: SprinklePropMr | None = None
2361
+ mt: SprinklePropMt | None = None
2362
+ mx: SprinklePropMx | None = None
2363
+ my: SprinklePropMy | None = None
2364
+ name: str | ProteusExpression | None = Field(
2365
+ default=None,
2366
+ description="Name of the form control element. Used by form-data integrations.",
2367
+ )
2368
+ objectFit: SprinklePropObjectFit | None = None
2369
+ overflow: SprinklePropOverflow | None = None
2370
+ overflowX: SprinklePropOverflowX | None = None
2371
+ overflowY: SprinklePropOverflowY | None = None
2372
+ p: SprinklePropP | None = None
2373
+ pb: SprinklePropPb | None = None
2374
+ pl: SprinklePropPl | None = None
2375
+ placeholder: str | ProteusExpression | None = Field(
2376
+ default=None, description="Placeholder text shown when the editor is empty."
2377
+ )
2378
+ placeItems: SprinklePropPlaceItems | None = None
2379
+ pointerEvents: SprinklePropPointerEvents | None = None
2380
+ pr: SprinklePropPr | None = None
2381
+ pt: SprinklePropPt | None = None
2382
+ px: SprinklePropPx | None = None
2383
+ py: SprinklePropPy | None = None
2384
+ readOnly: bool | ProteusExpression | None = Field(
2385
+ default=None, description="Whether the editor is read-only."
2386
+ )
2387
+ rounded: SprinklePropRounded | None = None
2388
+ shadow: SprinklePropShadow | None = None
2389
+ size: SprinklePropSize | None = None
2390
+ textAlign: SprinklePropTextAlign | None = None
2391
+ textTransform: SprinklePropTextTransform | None = None
2392
+ transition: SprinklePropTransition | None = None
2393
+ w: SprinklePropW | None = None
2394
+ whiteSpace: SprinklePropWhiteSpace | None = None
2395
+ z: SprinklePropZ | None = None
2396
+
2397
+
2319
2398
  class ProteusSelect(BaseModel):
2320
2399
  model_config = ConfigDict(
2321
2400
  extra="forbid",
@@ -2946,6 +3025,7 @@ class ProteusElement(
2946
3025
  | ProteusPillMenu
2947
3026
  | ProteusQuestion
2948
3027
  | ProteusRange
3028
+ | ProteusRichTextEditor
2949
3029
  | ProteusSelect
2950
3030
  | ProteusSelectContent
2951
3031
  | ProteusSelectTrigger
@@ -2993,6 +3073,7 @@ class ProteusElement(
2993
3073
  | ProteusPillMenu
2994
3074
  | ProteusQuestion
2995
3075
  | ProteusRange
3076
+ | ProteusRichTextEditor
2996
3077
  | ProteusSelect
2997
3078
  | ProteusSelectContent
2998
3079
  | ProteusSelectTrigger
@@ -3365,7 +3446,10 @@ class SprinklePropFlex(
3365
3446
  ):
3366
3447
  root: (
3367
3448
  Literal["initial"] | Literal["none"] | Literal["auto"] | Literal["1"] | ProteusExpression
3368
- ) = Field(..., description="Set the element's `flex` CSS property")
3449
+ ) = Field(
3450
+ ...,
3451
+ description="Set the element's `flex` CSS property. `1` grows to fill available\nspace; `auto` grows and shrinks to fit content; `initial` shrinks but\ndoes not grow; `none` neither grows nor shrinks (use this instead of\n`flex-shrink: 0`).",
3452
+ )
3369
3453
 
3370
3454
 
3371
3455
  class SprinklePropFlexDirection(
@@ -3491,7 +3575,8 @@ class SprinklePropGap(
3491
3575
 
3492
3576
  class SprinklePropGridAutoRows(RootModel[Literal["fr"] | ProteusExpression]):
3493
3577
  root: Literal["fr"] | ProteusExpression = Field(
3494
- ..., description="Set the element's `grid-auto-rows` CSS property"
3578
+ ...,
3579
+ description="Set the element's `grid-auto-rows` CSS property. The only value `fr`\nsizes implicit rows to `minmax(0, 1fr)` (equal-height rows that can\nshrink below their content).",
3495
3580
  )
3496
3581
 
3497
3582
 
@@ -3499,7 +3584,8 @@ class SprinklePropGridColumn(
3499
3584
  RootModel[Literal["2"] | Literal["4"] | Literal["1"] | Literal["3"] | ProteusExpression]
3500
3585
  ):
3501
3586
  root: Literal["2"] | Literal["4"] | Literal["1"] | Literal["3"] | ProteusExpression = Field(
3502
- ..., description="Set the element's size across grid columns"
3587
+ ...,
3588
+ description="Set how many columns the element spans in a grid (`grid-column`). The\nvalue is the span count, e.g. `2` spans 2 columns — NOT the column it\nstarts at.",
3503
3589
  )
3504
3590
 
3505
3591
 
@@ -3507,7 +3593,8 @@ class SprinklePropGridTemplateColumns(
3507
3593
  RootModel[Literal["2"] | Literal["4"] | Literal["1"] | Literal["3"] | ProteusExpression]
3508
3594
  ):
3509
3595
  root: Literal["2"] | Literal["4"] | Literal["1"] | Literal["3"] | ProteusExpression = Field(
3510
- ..., description="Control number of columns in a grid layout"
3596
+ ...,
3597
+ description='Control number of columns in a grid layout (`grid-template-columns`).\nThe value is the number of equal columns, e.g. `2` creates two equal\ncolumns (`repeat(2, minmax(0, 1fr))`) — use this instead of a raw\n`style={{ gridTemplateColumns: "1fr 1fr" }}`.',
3511
3598
  )
3512
3599
 
3513
3600
 
@@ -4508,7 +4595,10 @@ class SprinklePropTransition(
4508
4595
  | Literal["none"]
4509
4596
  | Literal["colors"]
4510
4597
  | ProteusExpression
4511
- ) = Field(..., description="Control which CSS properties should transition")
4598
+ ) = Field(
4599
+ ...,
4600
+ description="Control which CSS properties should transition. Each value is a preset:\n`colors` transitions color-related properties (background, border,\ncolor, fill, stroke, text-decoration); `opacity` and `transform`\ntransition just that property; `all` transitions everything; `none`\ndisables transitions.",
4601
+ )
4512
4602
 
4513
4603
 
4514
4604
  class SprinklePropW(
@@ -4683,6 +4773,7 @@ ProteusMap.model_rebuild()
4683
4773
  ProteusPillMenu.model_rebuild()
4684
4774
  ProteusQuestion.model_rebuild()
4685
4775
  ProteusRange.model_rebuild()
4776
+ ProteusRichTextEditor.model_rebuild()
4686
4777
  ProteusSelect.model_rebuild()
4687
4778
  ProteusSelectContent.model_rebuild()
4688
4779
  ProteusSelectTrigger.model_rebuild()
@@ -4741,6 +4832,7 @@ class UI:
4741
4832
  PillMenu = ProteusPillMenu
4742
4833
  Question = ProteusQuestion
4743
4834
  Range = ProteusRange
4835
+ RichTextEditor = ProteusRichTextEditor
4744
4836
  Select = ProteusSelect
4745
4837
  SelectContent = ProteusSelectContent
4746
4838
  SelectTrigger = ProteusSelectTrigger
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: optimizely-opal.opal-tools-sdk
3
- Version: 0.1.37.dev0
3
+ Version: 0.1.39.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.37-dev"
7
+ version = "0.1.39-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.37-dev",
5
+ version="0.1.39-dev",
6
6
  packages=find_packages(),
7
7
  install_requires=[
8
8
  "fastapi>=0.100.0",