@reventlessdev/reventless-infra 3.0.0-alpha.134 → 3.0.0-alpha.136

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,21 @@
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.136 (2026-08-12)
7
+
8
+ **Note:** Version bump only for package @reventlessdev/reventless-infra
9
+
10
+
11
+
12
+
13
+
14
+ # 3.0.0-alpha.135 (2026-08-12)
15
+
16
+ ### Features
17
+
18
+ * **platform:** bake a curated component manifest as a static asset ([4f30265](https://github.com/ReventlessDev/reventless-core/commit/4f30265a51fc2c59e69afd8074cf1b2534c06378))
19
+
20
+
6
21
  # 3.0.0-alpha.134 (2026-08-11)
7
22
 
8
23
  **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.134",
3
+ "version": "3.0.0-alpha.136",
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.18",
21
21
  "@reventlessdev/rescript-uuid": "2.0.0-alpha.0",
22
- "@reventlessdev/reventless-spec": "3.0.0-alpha.108"
22
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.110"
23
23
  },
24
24
  "devDependencies": {
25
25
  "rescript": "12.3.0",
@@ -114,6 +114,34 @@ type capability =
114
114
  // A provisioned geocoding place index, as returned by the framework's geocoding
115
115
  // capability helper. A record rather than a bare name so the handle can grow
116
116
  // (ARN, data source) without moving every call site.
117
+ /** One plugin's slice of the baked manifest. `views` / `commands` unset ⇒
118
+ every public component of that kind; set ⇒ exactly the named ones.
119
+ An include-list rather than an exclude-list, so a component added later
120
+ has to be opted in and cannot silently widen a curated shell's surface.
121
+ A name that matches nothing fails the deploy naming it — a silent no-op
122
+ here produces a missing page no log explains. */
123
+ type bakedManifestSelection = {
124
+ plugin: string,
125
+ views?: array<string>,
126
+ commands?: array<string>,
127
+ }
128
+
129
+ /** Declaration for the baked component manifest — the static JSON a shell
130
+ reads instead of calling the admin-gated `Platform_ComponentDefinitions`.
131
+ The deployment declares WHAT TO INCLUDE, not what to write: the content is
132
+ derived from the registered plugins' structures, which only the framework
133
+ knows.
134
+
135
+ Unset ⇒ no file written ⇒ a shell configured for it 404s and any existing
136
+ deployment is byte-identical to today. This is curation (what exists for
137
+ this deployment's audience), never authorization (what this caller may
138
+ do) — the server-side gate on every query and mutation is untouched. */
139
+ type bakedManifest = {
140
+ components: array<bakedManifestSelection>,
141
+ /** Defaults to `component-manifest.json`, written beside `config.json`. */
142
+ key?: string,
143
+ }
144
+
117
145
  type geocoderIndex = {indexName: Pulumi.Input.t<string>}
118
146
 
119
147
  // Options for the shell's map view mode. Written to config.json flat, beside
@@ -351,6 +379,11 @@ module type T = {
351
379
  // no file written; the shell treats the 404 as "no hints" and boots
352
380
  // unchanged. In-memory platforms ignore this.
353
381
  uiHintsFile?: string,
382
+ // Optional baked component manifest. When set, the curated manifest is
383
+ // written beside `config.json` at deploy time; the shell reads it through
384
+ // its `manifestUrl` config key and never calls the platform's admin API.
385
+ // Unset ⇒ no file written, and the deployment behaves as it does today.
386
+ bakedManifest?: bakedManifest,
354
387
  // Optional geocoding place index. When set, the deploy provisions the
355
388
  // capability's client door — a Cognito-authenticated `Query.geocode` resolver
356
389
  // on the platform API — and exports the index name for the unattended slice
@@ -382,10 +415,14 @@ module type T = {
382
415
  }
383
416
 
384
417
  /** Deploy a complete platform: creates the scheduler, builds each plugin,
385
- creates admin components internally, and wires everything (schema stitching + stack exports). */
418
+ creates admin components internally, and wires everything (schema stitching + stack exports).
419
+ Pass `~hostUiBundle` to declare host-shell assets this path owns — in-memory
420
+ that is where `bakedManifest` is declared, since a local platform has no
421
+ deploy step to hang it off. */
386
422
  let makePlatform: (
387
423
  ~version: string,
388
424
  ~plugins: array<module(PluginMaker)>,
425
+ ~hostUiBundle: hostUiBundleConfig=?,
389
426
  ) => unit
390
427
 
391
428
  /** Deploy only the platform (admin components, scheduler, shared API).