optimizely-opal.opal-tools-sdk 0.1.37.dev0__tar.gz → 0.1.40.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.40.dev0}/PKG-INFO +1 -1
  2. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.40.dev0}/opal_tools_sdk/proteus.py +171 -6
  3. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.40.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.40.dev0}/pyproject.toml +1 -1
  5. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.40.dev0}/setup.py +1 -1
  6. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.40.dev0}/README.md +0 -0
  7. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.40.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.40.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.40.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.40.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.40.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.40.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.40.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.40.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.40.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.40.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.40.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.40.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.40.dev0}/setup.cfg +0 -0
  20. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.40.dev0}/tests/test_integration.py +0 -0
  21. {optimizely_opal_opal_tools_sdk-0.1.37.dev0 → optimizely_opal_opal_tools_sdk-0.1.40.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.40.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.40.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-10T15:54:02+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -2209,6 +2209,75 @@ class ProteusMap(BaseModel):
2209
2209
  )
2210
2210
 
2211
2211
 
2212
+ class ProteusMarkdown(BaseModel):
2213
+ model_config = ConfigDict(
2214
+ extra="forbid",
2215
+ )
2216
+ field_type: Literal["Markdown"] = Field(default="Markdown", alias="$type")
2217
+ alignItems: SprinklePropAlignItems | None = None
2218
+ alignSelf: SprinklePropAlignSelf | None = None
2219
+ animation: SprinklePropAnimation | None = None
2220
+ backgroundImage: SprinklePropBackgroundImage | None = None
2221
+ bg: SprinklePropBg | None = None
2222
+ border: SprinklePropBorder | None = None
2223
+ borderB: SprinklePropBorderB | None = None
2224
+ borderColor: SprinklePropBorderColor | None = None
2225
+ borderL: SprinklePropBorderL | None = None
2226
+ borderR: SprinklePropBorderR | None = None
2227
+ borderT: SprinklePropBorderT | None = None
2228
+ children: str | ProteusExpression | None = Field(
2229
+ default=None,
2230
+ description="Markdown source string to render (e.g. headings, paragraphs, lists, links, emphasis, code). Can be a literal string or a ProteusExpression that resolves to a string.",
2231
+ )
2232
+ color: SprinklePropColor | None = None
2233
+ cursor: SprinklePropCursor | None = None
2234
+ display: SprinklePropDisplay | None = None
2235
+ flex: SprinklePropFlex | None = None
2236
+ flexDirection: SprinklePropFlexDirection | None = None
2237
+ flexWrap: SprinklePropFlexWrap | None = None
2238
+ fontFamily: SprinklePropFontFamily | None = None
2239
+ fontSize: SprinklePropFontSize | None = None
2240
+ fontWeight: SprinklePropFontWeight | None = None
2241
+ gap: SprinklePropGap | None = None
2242
+ gridAutoRows: SprinklePropGridAutoRows | None = None
2243
+ gridColumn: SprinklePropGridColumn | None = None
2244
+ gridTemplateColumns: SprinklePropGridTemplateColumns | None = None
2245
+ h: SprinklePropH | None = None
2246
+ justifyContent: SprinklePropJustifyContent | None = None
2247
+ justifyItems: SprinklePropJustifyItems | None = None
2248
+ m: SprinklePropM | None = None
2249
+ maxH: SprinklePropMaxH | None = None
2250
+ maxW: SprinklePropMaxW | None = None
2251
+ mb: SprinklePropMb | None = None
2252
+ ml: SprinklePropMl | None = None
2253
+ mr: SprinklePropMr | None = None
2254
+ mt: SprinklePropMt | None = None
2255
+ mx: SprinklePropMx | None = None
2256
+ my: SprinklePropMy | None = None
2257
+ objectFit: SprinklePropObjectFit | None = None
2258
+ overflow: SprinklePropOverflow | None = None
2259
+ overflowX: SprinklePropOverflowX | None = None
2260
+ overflowY: SprinklePropOverflowY | None = None
2261
+ p: SprinklePropP | None = None
2262
+ pb: SprinklePropPb | None = None
2263
+ pl: SprinklePropPl | None = None
2264
+ placeItems: SprinklePropPlaceItems | None = None
2265
+ pointerEvents: SprinklePropPointerEvents | None = None
2266
+ pr: SprinklePropPr | None = None
2267
+ pt: SprinklePropPt | None = None
2268
+ px: SprinklePropPx | None = None
2269
+ py: SprinklePropPy | None = None
2270
+ rounded: SprinklePropRounded | None = None
2271
+ shadow: SprinklePropShadow | None = None
2272
+ size: SprinklePropSize | None = None
2273
+ textAlign: SprinklePropTextAlign | None = None
2274
+ textTransform: SprinklePropTextTransform | None = None
2275
+ transition: SprinklePropTransition | None = None
2276
+ w: SprinklePropW | None = None
2277
+ whiteSpace: SprinklePropWhiteSpace | None = None
2278
+ z: SprinklePropZ | None = None
2279
+
2280
+
2212
2281
  class ProteusPillMenu(BaseModel):
2213
2282
  model_config = ConfigDict(
2214
2283
  extra="forbid",
@@ -2237,6 +2306,10 @@ class ProteusQuestion(BaseModel):
2237
2306
  extra="forbid",
2238
2307
  )
2239
2308
  field_type: Literal["Question"] = Field(default="Question", alias="$type")
2309
+ interaction: str | ProteusExpression | None = Field(
2310
+ default=None,
2311
+ 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.",
2312
+ )
2240
2313
  questions: ProteusExpression = Field(..., description="Array of questions data")
2241
2314
 
2242
2315
 
@@ -2316,6 +2389,81 @@ class ProteusRange(BaseModel):
2316
2389
  z: SprinklePropZ | None = None
2317
2390
 
2318
2391
 
2392
+ class ProteusRichTextEditor(BaseModel):
2393
+ model_config = ConfigDict(
2394
+ extra="forbid",
2395
+ )
2396
+ field_type: Literal["RichTextEditor"] = Field(default="RichTextEditor", alias="$type")
2397
+ alignItems: SprinklePropAlignItems | None = None
2398
+ alignSelf: SprinklePropAlignSelf | None = None
2399
+ animation: SprinklePropAnimation | None = None
2400
+ backgroundImage: SprinklePropBackgroundImage | None = None
2401
+ bg: SprinklePropBg | None = None
2402
+ border: SprinklePropBorder | None = None
2403
+ borderB: SprinklePropBorderB | None = None
2404
+ borderColor: SprinklePropBorderColor | None = None
2405
+ borderL: SprinklePropBorderL | None = None
2406
+ borderR: SprinklePropBorderR | None = None
2407
+ borderT: SprinklePropBorderT | None = None
2408
+ color: SprinklePropColor | None = None
2409
+ cursor: SprinklePropCursor | None = None
2410
+ display: SprinklePropDisplay | None = None
2411
+ flex: SprinklePropFlex | None = None
2412
+ flexDirection: SprinklePropFlexDirection | None = None
2413
+ flexWrap: SprinklePropFlexWrap | None = None
2414
+ fontFamily: SprinklePropFontFamily | None = None
2415
+ fontSize: SprinklePropFontSize | None = None
2416
+ fontWeight: SprinklePropFontWeight | None = None
2417
+ gap: SprinklePropGap | None = None
2418
+ gridAutoRows: SprinklePropGridAutoRows | None = None
2419
+ gridColumn: SprinklePropGridColumn | None = None
2420
+ gridTemplateColumns: SprinklePropGridTemplateColumns | None = None
2421
+ h: SprinklePropH | None = None
2422
+ justifyContent: SprinklePropJustifyContent | None = None
2423
+ justifyItems: SprinklePropJustifyItems | None = None
2424
+ m: SprinklePropM | None = None
2425
+ maxH: SprinklePropMaxH | None = None
2426
+ maxW: SprinklePropMaxW | None = None
2427
+ mb: SprinklePropMb | None = None
2428
+ ml: SprinklePropMl | None = None
2429
+ mr: SprinklePropMr | None = None
2430
+ mt: SprinklePropMt | None = None
2431
+ mx: SprinklePropMx | None = None
2432
+ my: SprinklePropMy | None = None
2433
+ name: str | ProteusExpression | None = Field(
2434
+ default=None,
2435
+ description="Name of the form control element. Used by form-data integrations.",
2436
+ )
2437
+ objectFit: SprinklePropObjectFit | None = None
2438
+ overflow: SprinklePropOverflow | None = None
2439
+ overflowX: SprinklePropOverflowX | None = None
2440
+ overflowY: SprinklePropOverflowY | None = None
2441
+ p: SprinklePropP | None = None
2442
+ pb: SprinklePropPb | None = None
2443
+ pl: SprinklePropPl | None = None
2444
+ placeholder: str | ProteusExpression | None = Field(
2445
+ default=None, description="Placeholder text shown when the editor is empty."
2446
+ )
2447
+ placeItems: SprinklePropPlaceItems | None = None
2448
+ pointerEvents: SprinklePropPointerEvents | None = None
2449
+ pr: SprinklePropPr | None = None
2450
+ pt: SprinklePropPt | None = None
2451
+ px: SprinklePropPx | None = None
2452
+ py: SprinklePropPy | None = None
2453
+ readOnly: bool | ProteusExpression | None = Field(
2454
+ default=None, description="Whether the editor is read-only."
2455
+ )
2456
+ rounded: SprinklePropRounded | None = None
2457
+ shadow: SprinklePropShadow | None = None
2458
+ size: SprinklePropSize | None = None
2459
+ textAlign: SprinklePropTextAlign | None = None
2460
+ textTransform: SprinklePropTextTransform | None = None
2461
+ transition: SprinklePropTransition | None = None
2462
+ w: SprinklePropW | None = None
2463
+ whiteSpace: SprinklePropWhiteSpace | None = None
2464
+ z: SprinklePropZ | None = None
2465
+
2466
+
2319
2467
  class ProteusSelect(BaseModel):
2320
2468
  model_config = ConfigDict(
2321
2469
  extra="forbid",
@@ -2943,9 +3091,11 @@ class ProteusElement(
2943
3091
  | ProteusLink
2944
3092
  | ProteusMap
2945
3093
  | ProteusMapIndex
3094
+ | ProteusMarkdown
2946
3095
  | ProteusPillMenu
2947
3096
  | ProteusQuestion
2948
3097
  | ProteusRange
3098
+ | ProteusRichTextEditor
2949
3099
  | ProteusSelect
2950
3100
  | ProteusSelectContent
2951
3101
  | ProteusSelectTrigger
@@ -2990,9 +3140,11 @@ class ProteusElement(
2990
3140
  | ProteusLink
2991
3141
  | ProteusMap
2992
3142
  | ProteusMapIndex
3143
+ | ProteusMarkdown
2993
3144
  | ProteusPillMenu
2994
3145
  | ProteusQuestion
2995
3146
  | ProteusRange
3147
+ | ProteusRichTextEditor
2996
3148
  | ProteusSelect
2997
3149
  | ProteusSelectContent
2998
3150
  | ProteusSelectTrigger
@@ -3365,7 +3517,10 @@ class SprinklePropFlex(
3365
3517
  ):
3366
3518
  root: (
3367
3519
  Literal["initial"] | Literal["none"] | Literal["auto"] | Literal["1"] | ProteusExpression
3368
- ) = Field(..., description="Set the element's `flex` CSS property")
3520
+ ) = Field(
3521
+ ...,
3522
+ 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`).",
3523
+ )
3369
3524
 
3370
3525
 
3371
3526
  class SprinklePropFlexDirection(
@@ -3491,7 +3646,8 @@ class SprinklePropGap(
3491
3646
 
3492
3647
  class SprinklePropGridAutoRows(RootModel[Literal["fr"] | ProteusExpression]):
3493
3648
  root: Literal["fr"] | ProteusExpression = Field(
3494
- ..., description="Set the element's `grid-auto-rows` CSS property"
3649
+ ...,
3650
+ 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
3651
  )
3496
3652
 
3497
3653
 
@@ -3499,7 +3655,8 @@ class SprinklePropGridColumn(
3499
3655
  RootModel[Literal["2"] | Literal["4"] | Literal["1"] | Literal["3"] | ProteusExpression]
3500
3656
  ):
3501
3657
  root: Literal["2"] | Literal["4"] | Literal["1"] | Literal["3"] | ProteusExpression = Field(
3502
- ..., description="Set the element's size across grid columns"
3658
+ ...,
3659
+ 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
3660
  )
3504
3661
 
3505
3662
 
@@ -3507,7 +3664,8 @@ class SprinklePropGridTemplateColumns(
3507
3664
  RootModel[Literal["2"] | Literal["4"] | Literal["1"] | Literal["3"] | ProteusExpression]
3508
3665
  ):
3509
3666
  root: Literal["2"] | Literal["4"] | Literal["1"] | Literal["3"] | ProteusExpression = Field(
3510
- ..., description="Control number of columns in a grid layout"
3667
+ ...,
3668
+ 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
3669
  )
3512
3670
 
3513
3671
 
@@ -4508,7 +4666,10 @@ class SprinklePropTransition(
4508
4666
  | Literal["none"]
4509
4667
  | Literal["colors"]
4510
4668
  | ProteusExpression
4511
- ) = Field(..., description="Control which CSS properties should transition")
4669
+ ) = Field(
4670
+ ...,
4671
+ 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.",
4672
+ )
4512
4673
 
4513
4674
 
4514
4675
  class SprinklePropW(
@@ -4680,9 +4841,11 @@ ProteusImageCarousel.model_rebuild()
4680
4841
  ProteusInput.model_rebuild()
4681
4842
  ProteusLink.model_rebuild()
4682
4843
  ProteusMap.model_rebuild()
4844
+ ProteusMarkdown.model_rebuild()
4683
4845
  ProteusPillMenu.model_rebuild()
4684
4846
  ProteusQuestion.model_rebuild()
4685
4847
  ProteusRange.model_rebuild()
4848
+ ProteusRichTextEditor.model_rebuild()
4686
4849
  ProteusSelect.model_rebuild()
4687
4850
  ProteusSelectContent.model_rebuild()
4688
4851
  ProteusSelectTrigger.model_rebuild()
@@ -4738,9 +4901,11 @@ class UI:
4738
4901
  Link = ProteusLink
4739
4902
  Map = ProteusMap
4740
4903
  MapIndex = ProteusMapIndex
4904
+ Markdown = ProteusMarkdown
4741
4905
  PillMenu = ProteusPillMenu
4742
4906
  Question = ProteusQuestion
4743
4907
  Range = ProteusRange
4908
+ RichTextEditor = ProteusRichTextEditor
4744
4909
  Select = ProteusSelect
4745
4910
  SelectContent = ProteusSelectContent
4746
4911
  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.40.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.40-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.40-dev",
6
6
  packages=find_packages(),
7
7
  install_requires=[
8
8
  "fastapi>=0.100.0",