@reventlessdev/reventless-infra 3.0.0-alpha.156 → 3.0.0-alpha.158

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,51 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 3.0.0-alpha.158 (2026-09-07)
7
+
8
+ ### Features
9
+
10
+ * **core:** a command's lifecycle edge comes from its scenarios, not its claim ([1879d05](https://github.com/ReventlessDev/reventless-core/commit/1879d0570a981e7fae5bcd3808f8a36e898bd0fd))
11
+ * **ui:** a deployment can name the module that draws its own surfaces ([b43828c](https://github.com/ReventlessDev/reventless-core/commit/b43828ca50cddd31f7aefae016669fcb7c059838))
12
+
13
+
14
+ # 3.0.0-alpha.157 (2026-09-04)
15
+
16
+ * feat(spec)!: one optional encoding on the wire, with no annotation ([320f91d](https://github.com/ReventlessDev/reventless-core/commit/320f91daa8bd90812a6e82069e7a1cb473041930))
17
+
18
+ ### BREAKING CHANGES
19
+
20
+ * the two encodings cannot read each other. Stored
21
+ pluginDefinition / pluginStructure payloads and already-deployed plugins must
22
+ go — wipe the platform scope (SEED_RESET_SCOPE=platform), quiesce, and
23
+ redeploy the fleet from one commit. Domain plugin data is untouched.
24
+
25
+ Two guards had to learn the new shape, both of which defined "optional" as
26
+ has.null and so mistook an omitted key for something to invent:
27
+
28
+ - Message.fillMissingDefaults reached `return undefined` only below two arms
29
+ that fire first — an enum's first const, and an object member filled with
30
+ zeros. Absent option<record> therefore healed to a zero-filled record, not
31
+ None: on the real schema, dcbEventLog became Some({name: "", eventTopicArn:
32
+ ""}), which manageSubscriptions would have read as a peer to subscribe to.
33
+ One line, mirroring the has.null guard, above both arms.
34
+ - PluginDefinitionScalars' walker reported 16 optional fields as newly-added
35
+ bare required scalars. With both encodings understood, the golden list is
36
+ unchanged.
37
+
38
+ The frozen lifecycle corpus holds five real payloads in the old encoding.
39
+ Null-valued keys were stripped mechanically — the rewrite round-trips each
40
+ file unchanged before editing, and a key-by-key diff shows null removals and
41
+ nothing else. The README records it beside the account-id redaction and says
42
+ why it is not a regeneration: no fixture was rebuilt from ReScript types, so
43
+ every generation in its table is still pinned.
44
+
45
+ check:graphql is unchanged, as expected: SchemaType.fromSury collapses Null
46
+ and Undefined to the same Nullable, so the emitted schema never distinguished
47
+ them.
48
+
49
+
50
+
6
51
  # 3.0.0-alpha.156 (2026-09-04)
7
52
 
8
53
  **Note:** Version bump only for package @reventlessdev/reventless-infra
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-infra",
3
- "version": "3.0.0-alpha.156",
3
+ "version": "3.0.0-alpha.158",
4
4
  "description": "Infrastructure types for Reventless framework",
5
5
  "license": "Apache-2.0",
6
6
  "jest": {
@@ -19,7 +19,7 @@
19
19
  "@reventlessdev/rescript-effect": "0.1.0-alpha.32",
20
20
  "@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.19",
21
21
  "@reventlessdev/rescript-uuid": "2.0.0-alpha.0",
22
- "@reventlessdev/reventless-spec": "3.0.0-alpha.128"
22
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.130"
23
23
  },
24
24
  "devDependencies": {
25
25
  "rescript": "12.3.0",
@@ -95,5 +95,6 @@ module type T = {
95
95
  ~extensions: array<module(Extension.Blueprint)>=?,
96
96
  ~extensionPoints: array<module(ExtensionPointMapping.Mapping)>=?,
97
97
  ~componentChapters: dict<string>=?,
98
+ ~lifecycleModel: array<Reventless.Plugin.derivedEdge>=?,
98
99
  ) => Reventless.Plugin.pluginStructure
99
100
  }
@@ -449,9 +449,23 @@ module type T = {
449
449
  bundleVersion?: string,
450
450
  // Optional path to a static AutoUI `ui-hints.json`, read and written
451
451
  // verbatim as a BucketObject beside `config.json` at deploy time. Unset ⇒
452
- // no file written; the shell treats the 404 as "no hints" and boots
453
- // unchanged. In-memory platforms ignore this.
452
+ // no file written and the shell boots unchanged. In-memory platforms serve
453
+ // it too, out of the host-shell package's own dist/, and watch it so an
454
+ // edit is a browser refresh.
454
455
  uiHintsFile?: string,
456
+ // Optional path to an ES module registering AutoUI slot renderers, read and
457
+ // written verbatim beside `config.json` at deploy time. Unset ⇒ no file
458
+ // written and every mode draws its own regions. Served and watched
459
+ // in-memory exactly as `uiHintsFile` is.
460
+ //
461
+ // Absent does not mean 404: the bundle's SPA fallback answers any missing
462
+ // path with index.html under a 200, so a reader of either file has to judge
463
+ // it by content type. Observed on alpha, not hypothetical.
464
+ //
465
+ // Verbatim, and for the same reason: this is a deployment's own source, and
466
+ // a build step over it would make the local watch a lie and put a bundler
467
+ // between an author and their own file.
468
+ uiSlotsFile?: string,
455
469
  // Optional baked component manifest. When set, the curated manifest is
456
470
  // written beside `config.json` at deploy time; the shell reads it through
457
471
  // its `manifestUrl` config key and never calls the platform's admin API.
@@ -111,14 +111,6 @@ let apiTargetSchema = Plugin$Reventless.apiTargetSchema;
111
111
 
112
112
  let apiSchemaFragmentOffloadSchema = Plugin$Reventless.apiSchemaFragmentOffloadSchema;
113
113
 
114
- let dcbEventLogOptionSchema = Plugin$Reventless.dcbEventLogOptionSchema;
115
-
116
- let stringOptionSchema = Plugin$Reventless.stringOptionSchema;
117
-
118
- let stringArrayOptionSchema = Plugin$Reventless.stringArrayOptionSchema;
119
-
120
- let boolOptionSchema = Plugin$Reventless.boolOptionSchema;
121
-
122
114
  let panelManifestEntrySchema = Plugin$Reventless.panelManifestEntrySchema;
123
115
 
124
116
  let menuEntrySchema = Plugin$Reventless.menuEntrySchema;
@@ -151,38 +143,22 @@ let inboundTranslationSliceDefSchema = Plugin$Reventless.inboundTranslationSlice
151
143
 
152
144
  let publishedEventDefSchema = Plugin$Reventless.publishedEventDefSchema;
153
145
 
154
- let publishedEventDefArrayOptionSchema = Plugin$Reventless.publishedEventDefArrayOptionSchema;
155
-
156
146
  let acceptedCommandDefSchema = Plugin$Reventless.acceptedCommandDefSchema;
157
147
 
158
- let acceptedCommandDefArrayOptionSchema = Plugin$Reventless.acceptedCommandDefArrayOptionSchema;
159
-
160
148
  let handledEventDefSchema = Plugin$Reventless.handledEventDefSchema;
161
149
 
162
- let handledEventDefArrayOptionSchema = Plugin$Reventless.handledEventDefArrayOptionSchema;
163
-
164
150
  let issuedCommandDefSchema = Plugin$Reventless.issuedCommandDefSchema;
165
151
 
166
- let issuedCommandDefArrayOptionSchema = Plugin$Reventless.issuedCommandDefArrayOptionSchema;
167
-
168
152
  let extensionDefSchema = Plugin$Reventless.extensionDefSchema;
169
153
 
170
154
  let extensionPointDefSchema = Plugin$Reventless.extensionPointDefSchema;
171
155
 
172
- let extensionPointDefArrayOptionSchema = Plugin$Reventless.extensionPointDefArrayOptionSchema;
173
-
174
156
  let requiredStoreDeclarationSchema = Plugin$Reventless.requiredStoreDeclarationSchema;
175
157
 
176
- let requiredStoreDeclarationArrayOptionSchema = Plugin$Reventless.requiredStoreDeclarationArrayOptionSchema;
177
-
178
158
  let requiredCapabilityDeclarationSchema = Plugin$Reventless.requiredCapabilityDeclarationSchema;
179
159
 
180
- let requiredCapabilityDeclarationArrayOptionSchema = Plugin$Reventless.requiredCapabilityDeclarationArrayOptionSchema;
181
-
182
160
  let traitDeclarationSchema = Plugin$Reventless.traitDeclarationSchema;
183
161
 
184
- let traitDeclarationArrayOptionSchema = Plugin$Reventless.traitDeclarationArrayOptionSchema;
185
-
186
162
  let pluginStructureSchema = Plugin$Reventless.pluginStructureSchema;
187
163
 
188
164
  let pluginStructureOffloadSchema = Plugin$Reventless.pluginStructureOffloadSchema;
@@ -201,10 +177,6 @@ export {
201
177
  apiSchemaFragmentSchema,
202
178
  apiTargetSchema,
203
179
  apiSchemaFragmentOffloadSchema,
204
- dcbEventLogOptionSchema,
205
- stringOptionSchema,
206
- stringArrayOptionSchema,
207
- boolOptionSchema,
208
180
  panelManifestEntrySchema,
209
181
  menuEntrySchema,
210
182
  pageManifestEntrySchema,
@@ -221,22 +193,14 @@ export {
221
193
  outboundTranslationSliceDefSchema,
222
194
  inboundTranslationSliceDefSchema,
223
195
  publishedEventDefSchema,
224
- publishedEventDefArrayOptionSchema,
225
196
  acceptedCommandDefSchema,
226
- acceptedCommandDefArrayOptionSchema,
227
197
  handledEventDefSchema,
228
- handledEventDefArrayOptionSchema,
229
198
  issuedCommandDefSchema,
230
- issuedCommandDefArrayOptionSchema,
231
199
  extensionDefSchema,
232
200
  extensionPointDefSchema,
233
- extensionPointDefArrayOptionSchema,
234
201
  requiredStoreDeclarationSchema,
235
- requiredStoreDeclarationArrayOptionSchema,
236
202
  requiredCapabilityDeclarationSchema,
237
- requiredCapabilityDeclarationArrayOptionSchema,
238
203
  traitDeclarationSchema,
239
- traitDeclarationArrayOptionSchema,
240
204
  pluginStructureSchema,
241
205
  pluginStructureOffloadSchema,
242
206
  pluginDefinitionSchema,