feat(environments-client): scalar value types Text, Number, Boolean, Options (ER-5350) - #461
Merged
serge-sedelnikov merged 2 commits intoAug 28, 2026
Conversation
… (ER-5350) Co-authored-by: Claude <noreply@anthropic.com>
Without a changeset the merge publishes nothing, which is what the frontend's pinned 2.19.6-alpha.0 is waiting to be replaced by. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: Claude <noreply@anthropic.com>
serge-sedelnikov
deleted the
ser/ER-5350-environments-client-scalar-types
branch
August 28, 2026 12:38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the scalar environment variable types
Text,Number,BooleanandOptionsto the environments client, regenerated from theenvironments-apiOpenAPI spec.This is the SDK half of ER-5350. It is what lets the portal UI,
journey-apiandconfig-engineall agree on a variable's shape.What changes
EnvironmentValueTypewidens from"String" | "SecretString"to include the four new types, andvaluewidens fromstringtostring | number | boolean | OptionsValue— aNumbervariable holds a JSON number, aBooleana JSON boolean, anOptionsvariable an object of selectable entries.Two new exported types:
EnvironmentValue— the value unionEnvironmentOption— one entry of anOptionslist, carrying either a singlelabelor alabelsmap keyed by languageThe
Text/Number/Boolean/Optionssplit matters to browser-facing consumers: those four may be served to a browser,StringandSecretStringmay not.SecretStringis unchanged — encrypted at rest, value never returned.valuealso becomes genuinely optional rather than merely absent for secrets. A variable created without one — as a blueprint install does, syncing a variable's key and type but never its value — reads back with novalueat all.protectedis now declared on the variable payloads.Breaking-ish
Consumers that exhaustively
switchonEnvironmentValueType, or assignvaluestraight to astring, will need to widen. Anything only readingStringandSecretStringvariables is unaffected at runtime. Henceminoron both the client and@epilot/sdk;@epilot/cliispatchsince it only regenerates its definitions from the client at build time.Files
clients/environments-client/src/openapi.{json,d.ts}are the regenerated client. Thepackages/epilot-sdk-v2/**files are the vendored copies — sdk-v2'sbuildistsuponly and does not re-rungenerate, so those are committed rather than generated at publish.packages/cli/definitions/is deliberately untouched: the CLI regenerates it fromclients/duringprepublishOnly.Related
The rest of ER-5350, all open:
environments-api!28— the API contract and storageconfig-engine!161— carriestypeacross orgs on blueprint installjourney-api!553— serves the browser-safe types to journeysepilot360-environments!19— the portal editorsepilot360-root-config!2335— German translations@epilot/sdk@2.19.6-alpha.0was published from this branch so the portal MFE could be built against it. Merging here releases the real version, and the MFE's pin gets updated to match.🤖 Generated with Claude Code