@voltro/cms 0.85.0 → 0.87.0

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 (244) hide show
  1. package/CHANGELOG.md +5987 -0
  2. package/README.md +138 -0
  3. package/THIRD-PARTY-NOTICES.md +864 -253
  4. package/dist/ContentForm.js +282 -0
  5. package/dist/RichDocumentEditor.js +550 -0
  6. package/dist/RichDocumentView.js +177 -0
  7. package/dist/RichTextSurface.js +135 -0
  8. package/dist/aiCandidates.js +199 -0
  9. package/dist/aiOperations.js +152 -0
  10. package/dist/applicationBuildSnapshotService.js +101 -0
  11. package/dist/assetRenditions.js +102 -0
  12. package/dist/assetRevision.js +46 -0
  13. package/dist/assetUseRights.js +72 -0
  14. package/dist/audiences.js +31 -0
  15. package/dist/availability.js +124 -0
  16. package/dist/blueprint.js +166 -0
  17. package/dist/build.d.ts +3063 -0
  18. package/dist/build.js +37 -0
  19. package/dist/buildApplicationAdmission.js +16 -0
  20. package/dist/buildApplicationCatalog.js +136 -0
  21. package/dist/buildApplicationCatalogTable.js +24 -0
  22. package/dist/buildApplicationRest.js +99 -0
  23. package/dist/buildApplicationUpload.js +111 -0
  24. package/dist/buildSnapshot.js +401 -0
  25. package/dist/buildSnapshotApplicationPin.js +32 -0
  26. package/dist/buildSnapshotRest.js +210 -0
  27. package/dist/buildSnapshotService.js +265 -0
  28. package/dist/buildSnapshotTables.js +25 -0
  29. package/dist/bulk.js +282 -0
  30. package/dist/cacheIdentity.js +152 -0
  31. package/dist/changes.js +307 -0
  32. package/dist/cmsContext.js +229 -0
  33. package/dist/collections.js +224 -0
  34. package/dist/consent.js +29 -0
  35. package/dist/contentLocations.js +53 -0
  36. package/dist/contentProjection.js +83 -0
  37. package/dist/contentRouteIdentity.js +13 -0
  38. package/dist/contentRouteMaterializer.js +97 -0
  39. package/dist/contentRouteTypes.js +39 -0
  40. package/dist/contentSeo.js +189 -0
  41. package/dist/contentTreePath.js +60 -0
  42. package/dist/contentType.js +208 -0
  43. package/dist/contentValues.js +18 -0
  44. package/dist/contentfulImport.js +162 -0
  45. package/dist/copies.js +89 -0
  46. package/dist/cutover.js +202 -0
  47. package/dist/deliveryChecks.js +138 -0
  48. package/dist/domainHost.js +7 -0
  49. package/dist/domains.js +139 -0
  50. package/dist/draftTexts.js +164 -0
  51. package/dist/duplicates.js +78 -0
  52. package/dist/edgePurge.js +69 -0
  53. package/dist/editHistory.js +113 -0
  54. package/dist/effectForm.js +11 -0
  55. package/dist/environmentAliases.js +138 -0
  56. package/dist/environments.js +147 -0
  57. package/dist/errors.js +107 -0
  58. package/dist/experiments.js +528 -0
  59. package/dist/exposure.js +28 -0
  60. package/dist/extensionManifest.js +81 -0
  61. package/dist/extensions.js +314 -0
  62. package/dist/fieldSchema.js +199 -0
  63. package/dist/formStrings.js +74 -0
  64. package/dist/frontendBindings.js +99 -0
  65. package/dist/frontendMedia.js +18 -0
  66. package/dist/glossary.js +73 -0
  67. package/dist/history.js +54 -0
  68. package/dist/htmlImport.js +297 -0
  69. package/dist/index.d.ts +771 -54
  70. package/dist/index.js +89 -6082
  71. package/dist/initializePublicRoutes.js +28 -0
  72. package/dist/liveContentRouteView.js +76 -0
  73. package/dist/media.js +29 -0
  74. package/dist/metrics.js +46 -0
  75. package/dist/migration.js +193 -0
  76. package/dist/migrationStages.js +13 -0
  77. package/dist/nativeOutputDeploymentService.js +205 -0
  78. package/dist/outputActivation.js +234 -0
  79. package/dist/outputActivationOrigin.js +51 -0
  80. package/dist/outputActivationStore.js +411 -0
  81. package/dist/outputActivationTables.js +11 -0
  82. package/dist/outputActivationTarget.js +81 -0
  83. package/dist/outputActivationTargetTable.js +25 -0
  84. package/dist/outputDeployment.js +174 -0
  85. package/dist/outputDeploymentRest.js +168 -0
  86. package/dist/outputDeploymentService.js +241 -0
  87. package/dist/outputRouteGraph.js +177 -0
  88. package/dist/outputSafetyArtifact.js +147 -0
  89. package/dist/outputTargetRest.js +62 -0
  90. package/dist/pathSegmentEncoding.js +4 -0
  91. package/dist/presenceAnchors.js +68 -0
  92. package/dist/preview.js +31 -0
  93. package/dist/privateCmsTransport.js +76 -0
  94. package/dist/privateNativeRouteReservation.js +10 -0
  95. package/dist/promotion.js +116 -0
  96. package/dist/publicBuild.js +90 -0
  97. package/dist/publicBuildRest.js +98 -0
  98. package/dist/publicBuildService.js +63 -0
  99. package/dist/publicOutputHttp.js +129 -0
  100. package/dist/publicOutputService.js +287 -0
  101. package/dist/publicPresentation.js +17 -0
  102. package/dist/publicRouteDispositionAdmission.js +38 -0
  103. package/dist/publicRouteHistoryStore.js +12 -0
  104. package/dist/publicRouteHistoryView.js +34 -0
  105. package/dist/publicRouteIntegrity.js +5 -0
  106. package/dist/publicRouteMutation.js +6 -0
  107. package/dist/publicRouteNamespace.js +134 -0
  108. package/dist/publicRoutePublication.js +36 -0
  109. package/dist/publicRouteRegistry.js +17 -0
  110. package/dist/publicRouteRegistryBinding.js +194 -0
  111. package/dist/publicRouteRegistryDefinition.js +76 -0
  112. package/dist/publicRouteSitePublication.js +40 -0
  113. package/dist/publicRouteTables.js +13 -0
  114. package/dist/publicRouteUrl.js +18 -0
  115. package/dist/publicationSeo.js +52 -0
  116. package/dist/publicationState.js +296 -0
  117. package/dist/quality.js +188 -0
  118. package/dist/reconfigurePublicRoutes.js +41 -0
  119. package/dist/recurrence.js +78 -0
  120. package/dist/redirects.js +130 -0
  121. package/dist/referenceGraph.js +224 -0
  122. package/dist/references.js +173 -0
  123. package/dist/release.js +241 -0
  124. package/dist/renderReadAuthority.js +43 -0
  125. package/dist/renderReadGrant.js +137 -0
  126. package/dist/rest.js +52 -0
  127. package/dist/review.js +160 -0
  128. package/dist/richDocument.js +521 -0
  129. package/dist/richInline.js +100 -0
  130. package/dist/routeDispositionGraph.js +44 -0
  131. package/dist/routeDispositionRest.js +51 -0
  132. package/dist/routeDispositionService.js +73 -0
  133. package/dist/routeDispositionStore.js +289 -0
  134. package/dist/routeDispositionTables.js +5 -0
  135. package/dist/routeDispositions.js +91 -0
  136. package/dist/routeHistoryStorage.js +320 -0
  137. package/dist/routeHistoryStore.js +12 -0
  138. package/dist/schedule.js +80 -0
  139. package/dist/search.js +148 -0
  140. package/dist/selectionIntent.js +164 -0
  141. package/dist/seo.js +31 -0
  142. package/dist/series.js +105 -0
  143. package/dist/share.js +112 -0
  144. package/dist/siteBindings.js +159 -0
  145. package/dist/siteBuildCandidate.js +104 -0
  146. package/dist/siteDelivery.js +115 -0
  147. package/dist/siteState.js +47 -0
  148. package/dist/snapshotAddressGraph.js +55 -0
  149. package/dist/snapshotAddressRead.js +73 -0
  150. package/dist/snapshotAppConsumer.js +71 -0
  151. package/dist/snapshotAppExecution.js +102 -0
  152. package/dist/snapshotApplication.js +75 -0
  153. package/dist/snapshotApprovedRouteDispositions.js +44 -0
  154. package/dist/snapshotAssetAssembly.js +70 -0
  155. package/dist/snapshotAssetAssemblyRest.js +50 -0
  156. package/dist/snapshotBindingRead.js +61 -0
  157. package/dist/snapshotCodeSeo.js +29 -0
  158. package/dist/snapshotComponent.js +34 -0
  159. package/dist/snapshotComponentSource.js +24 -0
  160. package/dist/snapshotConsumer.js +87 -0
  161. package/dist/snapshotContentIdentity.js +10 -0
  162. package/dist/snapshotDefinitions.js +264 -0
  163. package/dist/snapshotDocumentAssembly.js +193 -0
  164. package/dist/snapshotDocumentAssemblyRest.js +84 -0
  165. package/dist/snapshotDocumentProjection.js +202 -0
  166. package/dist/snapshotDocumentTransfer.js +35 -0
  167. package/dist/snapshotDocumentTransferRest.js +80 -0
  168. package/dist/snapshotDomains.js +56 -0
  169. package/dist/snapshotEnvironment.js +31 -0
  170. package/dist/snapshotFieldPlan.js +85 -0
  171. package/dist/snapshotFrontend.js +103 -0
  172. package/dist/snapshotLink.js +8 -0
  173. package/dist/snapshotMedia.js +111 -0
  174. package/dist/snapshotMediaCapture.js +246 -0
  175. package/dist/snapshotMediaFields.js +225 -0
  176. package/dist/snapshotMediaRead.js +185 -0
  177. package/dist/snapshotMediaReader.js +13 -0
  178. package/dist/snapshotObservation.js +16 -0
  179. package/dist/snapshotObservedRouteHistory.js +34 -0
  180. package/dist/snapshotOutputTransfer.js +78 -0
  181. package/dist/snapshotPageLoader.js +7 -0
  182. package/dist/snapshotPageSeo.js +59 -0
  183. package/dist/snapshotPathLocale.js +15 -0
  184. package/dist/snapshotPresentation.js +86 -0
  185. package/dist/snapshotPresentationPolicy.js +12 -0
  186. package/dist/snapshotProjection.js +119 -0
  187. package/dist/snapshotPublicAccess.js +161 -0
  188. package/dist/snapshotPublicRouteHistory.js +40 -0
  189. package/dist/snapshotReadAdmission.js +38 -0
  190. package/dist/snapshotRedirectOutput.js +151 -0
  191. package/dist/snapshotRedirectTargets.js +24 -0
  192. package/dist/snapshotRedirects.js +132 -0
  193. package/dist/snapshotReference.js +8 -0
  194. package/dist/snapshotReferenceAddress.js +10 -0
  195. package/dist/snapshotReferenceGraph.js +79 -0
  196. package/dist/snapshotReferenceRead.js +65 -0
  197. package/dist/snapshotRelease.js +99 -0
  198. package/dist/snapshotRender.js +361 -0
  199. package/dist/snapshotRenderDependencies.js +178 -0
  200. package/dist/snapshotRenditions.js +88 -0
  201. package/dist/snapshotRichDocument.js +62 -0
  202. package/dist/snapshotRoleTransfer.js +106 -0
  203. package/dist/snapshotRoleTransferRest.js +99 -0
  204. package/dist/snapshotRouteAdmission.js +71 -0
  205. package/dist/snapshotRouteDispatch.js +111 -0
  206. package/dist/snapshotRouteDispositionPlan.js +73 -0
  207. package/dist/snapshotRouteRead.js +43 -0
  208. package/dist/snapshotRoutes.js +79 -0
  209. package/dist/snapshotRouting.js +113 -0
  210. package/dist/snapshotSeo.js +179 -0
  211. package/dist/snapshotSeoControls.js +101 -0
  212. package/dist/snapshotSeoDocumentInventory.js +115 -0
  213. package/dist/snapshotSeoDocuments.js +129 -0
  214. package/dist/snapshotSeoMerge.js +85 -0
  215. package/dist/snapshotSeoMetadata.js +137 -0
  216. package/dist/snapshotSeoOutput.js +173 -0
  217. package/dist/snapshotSeoPathSets.js +105 -0
  218. package/dist/snapshotSeoRead.js +88 -0
  219. package/dist/snapshotSite.js +128 -0
  220. package/dist/snapshotSitemapFiles.js +36 -0
  221. package/dist/snapshotTreeDependencies.js +58 -0
  222. package/dist/snapshotTreeLoader.js +10 -0
  223. package/dist/snapshotTreeRead.js +158 -0
  224. package/dist/staticPathSet.js +177 -0
  225. package/dist/staticPathSetRest.js +129 -0
  226. package/dist/staticPathSetService.js +249 -0
  227. package/dist/staticPathSetStore.js +338 -0
  228. package/dist/stewardship.js +146 -0
  229. package/dist/taxonomy.js +36 -0
  230. package/dist/team.js +103 -0
  231. package/dist/templates.js +106 -0
  232. package/dist/trackChanges.js +197 -0
  233. package/dist/translation.js +64 -0
  234. package/dist/tree.js +87 -0
  235. package/dist/usage.js +50 -0
  236. package/dist/validation.js +192 -0
  237. package/dist/visualEditing.js +60 -0
  238. package/dist/web.d.ts +709 -7
  239. package/dist/web.js +50 -2
  240. package/dist/workflow.js +322 -0
  241. package/dist/write.js +419 -0
  242. package/dist/xliff.js +325 -0
  243. package/package.json +20 -6
  244. package/dist/presenceAnchors-4iHAVQB3.js +0 -4367
package/README.md CHANGED
@@ -20,7 +20,145 @@ Installation, guides, the full API reference, and examples all live in the
20
20
  **[Voltro documentation](https://docs.voltro.dev/docs/intro/getting-started)** — the single source of truth. This README is
21
21
  deliberately short so there is nothing here to drift out of date.
22
22
 
23
+ Private build consumers use the server entry `@voltro/cms/build`.
24
+ `copyStaticPathManifest`, `staticPathHash` and `verifyStaticPathPage` reuse the
25
+ framework's captured path-set integrity checks, including the empty first page
26
+ of a zero-route set. The consumer still binds the authenticated response to its
27
+ authorized snapshot/application; these helpers grant no publication authority.
28
+
23
29
  ## License
24
30
 
25
31
  Proprietary. © 2026 Voltro UG. Your use is governed by the
26
32
  [Terms of Service](https://voltro.cloud/legal/terms). See the bundled `LICENSE`.
33
+
34
+ ### Publication stream consistency
35
+
36
+ Register `cmsChangesTable` and `cmsChangeHeadsTable` for every publication,
37
+ including types without `changeFeed: true`. The flag controls event emission;
38
+ all publication transitions share the scoped lock and advance an independent
39
+ generation. Named releases also activate a generation when they have no items.
40
+ Content writes allocate commit-ordered positions in the caller's transaction;
41
+ `readChanges` requires an explicit tenant/site/environment scope. Event IDs
42
+ remain opaque cursors. Unknown cursors and incomplete upgrades fail with
43
+ `ChangeFeedUnavailable` instead of silently returning no changes.
44
+
45
+ Archiving a visible published copy appends one take-down; repeating the archive
46
+ or archiving only a draft adds none. With writers stopped, apply schema and
47
+ initialize positions, then run `reconcileArchivedPublications(tx, types, scope)`
48
+ as an Effect in a maintenance transaction to repair older missing take-downs.
49
+ It uses bounded batches and appends at the current tail, without rewriting old
50
+ cursors or fabricating archival dates. The repair is scoped and repeatable.
51
+ Publication, release, scheduler, environment-copy, promotion, blueprint and duplicate-retirement
52
+ Effects preserve `ChangeFeedUnavailable` as typed; procedure descriptors must
53
+ declare it so a refusal rolls back rather than becoming an undeclared error.
54
+
55
+ For existing history, stop writers, apply schema, then call the Effect
56
+ `initializeChangeFeed(tx, scope)` inside a maintenance transaction for each
57
+ stream. It preserves event IDs and uses bounded batches. Do not reset the
58
+ internal sequence head. See the CMS guide and the shipped 0.86.0 upgrade note.
59
+
60
+ `readChangeCheckpoint` captures the latest committed event ID. Pass it as
61
+ `readChanges(..., { through, settleMs: 0 })` to bound a paginated catch-up scan
62
+ despite later publishes or skewed writer clocks. The event range is pinned,
63
+ not subsequent content reads. `readRecentChanges` supplies bounded history in
64
+ descending commit order within the same explicit scope.
65
+
66
+ ### Atomic environment aliases
67
+
68
+ Register `cmsEnvironmentAliasesTable` and `cmsEnvironmentAliasRevisionsTable`
69
+ to route a stable tenant/site alias to a configured physical environment.
70
+ `swapEnvironmentAlias` compares the observed revision under the caller's
71
+ transaction; `rollbackEnvironmentAlias` appends a new revision targeting a
72
+ previous one. Resolve once per request and retain the physical target. Unknown
73
+ aliases never fall back. Procedure descriptors declare `EnvironmentAliasUnavailable`
74
+ from `@voltro/cms/web`; authorization and the trusted environment registry belong
75
+ to the application. See the CMS guide for the complete transaction contract.
76
+
77
+ ### Shared site delivery definition
78
+
79
+ `defineSiteDelivery` and `compileSiteDelivery` are browser-safe exports from
80
+ `@voltro/cms/web` (also available from the main entry). One frozen, versioned
81
+ plain-data graph separates stable locale IDs, approved language tags and stored
82
+ variant keys. API and frontend derive enabled locales, independent source/default
83
+ locales, fallback chains and URL prefixes from it. Invalid graphs refuse with
84
+ `SiteDeliveryUnavailable`; no tag inference, registry lookup or database write
85
+ occurs. See the CMS guide for the contract and paired-template upgrade. Route
86
+ creation, source migration and editorial locale lifecycle remain application work.
87
+
88
+ ### Explicit site content bindings
89
+
90
+ Register `cmsSiteBindingsTable` and `cmsSiteBindingRevisionsTable` alongside the
91
+ change-stream tables. `siteContentBinding` reads a named document identity in an
92
+ explicit tenant/site/physical-environment scope. `bindSiteContent` compares an
93
+ observed revision and requires a published target; it never chooses by timestamp.
94
+ `siteContentBindingRevision` reads scoped history; `rollbackSiteContentBinding`
95
+ appends a new revision. Changed bindings share the caller's publication transaction,
96
+ advance its generation and clear the active release. Bind before release activation.
97
+ The application owns authorization and delivery cache invalidation; no synthetic
98
+ content event is emitted. Declare `SiteBindingUnavailable` and `ChangeFeedUnavailable`
99
+ from `@voltro/cms/web` in mutation descriptors. Existing API CMS installations must
100
+ explicitly select their published site document for the `chrome` binding before
101
+ switching readers; the starter only binds a site it newly creates.
102
+
103
+ ### Scoped domain changes
104
+
105
+ Register `cmsSiteDomainsTable` and `cmsSiteStateHeadsTable`. All domain functions
106
+ receive `CmsSiteScope` (`tenantId`, `site`); ID-based operations take it before
107
+ the domain ID. Domain writers use the caller transaction and the same site
108
+ barrier, including first-host creation. Concurrent primary changes serialize;
109
+ rollback restores the complete mapping. Unique host claims return `taken` to
110
+ the losing site without exposing its owner's record. Preserve
111
+ `SiteStateUnavailable` in the procedure error schema (`@voltro/cms/web`). Stop
112
+ writers, apply the coordination table and update scoped calls before upgrading.
113
+
114
+ ### Redirect publication boundary
115
+
116
+ `addRedirect` and `removeRedirect` require the trusted tenant as their final
117
+ argument. Register `cmsChangeHeadsTable` with path/redirect tables and use one
118
+ caller transaction. Changed manual redirects and standalone `recordPaths`
119
+ advance publication generation and clear the active release without inventing
120
+ a content-feed event. Same-target adds and absent removals are no-ops. Declare
121
+ `ChangeFeedUnavailable` in caller/import descriptors. Review duplicate stored
122
+ history before upgrade; see the CMS guide and manual 0.87.0/11 checklist.
123
+ Read APIs still require their scoped store or explicit tenant filter. Application
124
+ cache/rebuild coordination and the full Route Registry remain separate work.
125
+
126
+ ### Shared content locations
127
+
128
+ Declare `locations` on a content type with stable mapping IDs and `segments`:
129
+ literal text, `{ field: 'slug' }`, or `{ tree: true }`. Share the detached/frozen
130
+ `defineContentLocations` definition with `resolveContentLocation` in API and
131
+ frontend code; both are browser-safe `/web` exports. Descriptor validation checks
132
+ string fields and tree availability. The resolver takes decoded values, an
133
+ explicit locale prefix and optional tree path, produces bounded encoded paths,
134
+ and refuses invalid inputs with `ContentLocationUnavailable`. It performs no
135
+ route reservation, release-graph validation, authorization or frontend codegen.
136
+ Handle incomplete draft addresses before using public delivery links.
137
+
138
+ Server coordinators can use `createSnapshotDocumentAssembly` from
139
+ `@voltro/cms/build` to retain bounded immutable document-pin batches in their
140
+ private output provider. Each operation freshly admits the signed path sets and
141
+ same build identity. `cmsBuildOutput(directory).composeDocuments` verifies actual
142
+ renderer receipts and bytes; final assembly requires complete routes and public
143
+ consent classes, current media rights and fresh grant admission. Only the two
144
+ journal IDs are durable state; credentials remain private. This grants no
145
+ activation or serving authority. See the build-snapshot documentation for bounds
146
+ and explicit grant coordination.
147
+
148
+ Trusted output providers may implement `readAssets` to verify an existing assets
149
+ role against the original retained app and complete renderer inventory. The CLI
150
+ provider uses its configured archive, checks physical bytes through EOF and
151
+ reconstructs the expected manifest without a stage or build. This filesystem
152
+ port mounts no transport; the CMS caller still owns fresh grant, signed-path
153
+ and current-media-rights admission around each read.
154
+
155
+ `createSnapshotRoleTransfer` and `cmsSnapshotRoleTransferRest` expose private
156
+ manifest/file/chunk/batch reads for `assets`, `deny`, `redirects`, `sitemap` and `robots`.
157
+ Each read reconstructs the exact selected role against the original admitted
158
+ app/documents and current safety, route history or SEO state. The server fixes
159
+ custody, byte bounds and the redirect declaration; fresh authorization brackets
160
+ all physical operations. Chunks and batches are at most 64 KiB. A batch contains
161
+ at most 200 complete files, each independently verified through EOF and SHA-256;
162
+ the complete result is withheld until the final semantic admission succeeds.
163
+ These operations create no
164
+ stage, renew no credential and grant no activation or serving authority.