@nakafa/aksara-contracts 0.27.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 (269) hide show
  1. package/LICENSE +185 -0
  2. package/README.md +73 -0
  3. package/dist/artifact/integrity.d.ts +29 -0
  4. package/dist/artifact/integrity.js +54 -0
  5. package/dist/artifact/limits.d.ts +26 -0
  6. package/dist/artifact/limits.js +46 -0
  7. package/dist/artifact/source.d.ts +21 -0
  8. package/dist/artifact/source.js +24 -0
  9. package/dist/artifact/spec.d.ts +148 -0
  10. package/dist/artifact/spec.js +92 -0
  11. package/dist/artifact/verify.d.ts +26 -0
  12. package/dist/artifact/verify.js +18 -0
  13. package/dist/cache/content.d.ts +52 -0
  14. package/dist/cache/content.js +80 -0
  15. package/dist/content.d.ts +168 -0
  16. package/dist/content.js +107 -0
  17. package/dist/country.d.ts +4 -0
  18. package/dist/country.js +8 -0
  19. package/dist/date.d.ts +24 -0
  20. package/dist/date.js +44 -0
  21. package/dist/decode.d.ts +4 -0
  22. package/dist/decode.js +8 -0
  23. package/dist/delivery.d.ts +4 -0
  24. package/dist/delivery.js +7 -0
  25. package/dist/errors.d.ts +10 -0
  26. package/dist/errors.js +8 -0
  27. package/dist/graph/family.d.ts +45 -0
  28. package/dist/graph/family.js +85 -0
  29. package/dist/graph/identity.d.ts +19 -0
  30. package/dist/graph/identity.js +39 -0
  31. package/dist/graph/spec.d.ts +20 -0
  32. package/dist/graph/spec.js +26 -0
  33. package/dist/hash/text.d.ts +10 -0
  34. package/dist/hash/text.js +20 -0
  35. package/dist/ids.d.ts +27 -0
  36. package/dist/ids.js +63 -0
  37. package/dist/limits.d.ts +10 -0
  38. package/dist/limits.js +10 -0
  39. package/dist/locale.d.ts +37 -0
  40. package/dist/locale.js +53 -0
  41. package/dist/material/domain.d.ts +4 -0
  42. package/dist/material/domain.js +8 -0
  43. package/dist/preview/artifact.d.ts +198 -0
  44. package/dist/preview/artifact.js +20 -0
  45. package/dist/preview/auth.d.ts +71 -0
  46. package/dist/preview/auth.js +49 -0
  47. package/dist/preview/document.d.ts +692 -0
  48. package/dist/preview/document.js +90 -0
  49. package/dist/preview/spec.d.ts +2517 -0
  50. package/dist/preview/spec.js +142 -0
  51. package/dist/preview/target.d.ts +172 -0
  52. package/dist/preview/target.js +70 -0
  53. package/dist/program/curriculum.d.ts +69 -0
  54. package/dist/program/curriculum.js +181 -0
  55. package/dist/program/snapshot/digest.d.ts +26 -0
  56. package/dist/program/snapshot/digest.js +220 -0
  57. package/dist/program/snapshot/hash.d.ts +31 -0
  58. package/dist/program/snapshot/hash.js +40 -0
  59. package/dist/program/snapshot/row-hash.d.ts +155 -0
  60. package/dist/program/snapshot/row-hash.js +34 -0
  61. package/dist/program/snapshot/row.d.ts +139 -0
  62. package/dist/program/snapshot/row.js +28 -0
  63. package/dist/program/snapshot/spec.d.ts +36 -0
  64. package/dist/program/snapshot/spec.js +39 -0
  65. package/dist/program/spec.d.ts +85 -0
  66. package/dist/program/spec.js +197 -0
  67. package/dist/projection/article.d.ts +145 -0
  68. package/dist/projection/article.js +150 -0
  69. package/dist/projection/digest.d.ts +261 -0
  70. package/dist/projection/digest.js +59 -0
  71. package/dist/projection/hash.d.ts +3 -0
  72. package/dist/projection/hash.js +10 -0
  73. package/dist/projection/material.d.ts +109 -0
  74. package/dist/projection/material.js +160 -0
  75. package/dist/projection/page.d.ts +112 -0
  76. package/dist/projection/page.js +106 -0
  77. package/dist/projection/question.d.ts +520 -0
  78. package/dist/projection/question.js +109 -0
  79. package/dist/projection/spec.d.ts +503 -0
  80. package/dist/projection/spec.js +56 -0
  81. package/dist/projection/verify.d.ts +281 -0
  82. package/dist/projection/verify.js +86 -0
  83. package/dist/question/identity.d.ts +175 -0
  84. package/dist/question/identity.js +205 -0
  85. package/dist/question/item.d.ts +453 -0
  86. package/dist/question/item.js +146 -0
  87. package/dist/question/response.d.ts +175 -0
  88. package/dist/question/response.js +150 -0
  89. package/dist/quran/attribution.d.ts +48 -0
  90. package/dist/quran/attribution.js +44 -0
  91. package/dist/quran/identity.d.ts +105 -0
  92. package/dist/quran/identity.js +100 -0
  93. package/dist/quran/notes.d.ts +56 -0
  94. package/dist/quran/notes.js +142 -0
  95. package/dist/quran/provenance.d.ts +257 -0
  96. package/dist/quran/provenance.js +144 -0
  97. package/dist/quran/snapshot/digest.d.ts +33 -0
  98. package/dist/quran/snapshot/digest.js +232 -0
  99. package/dist/quran/snapshot/hash.d.ts +51 -0
  100. package/dist/quran/snapshot/hash.js +50 -0
  101. package/dist/quran/snapshot/row/hash.d.ts +748 -0
  102. package/dist/quran/snapshot/row/hash.js +115 -0
  103. package/dist/quran/snapshot/row.d.ts +354 -0
  104. package/dist/quran/snapshot/row.js +91 -0
  105. package/dist/quran/snapshot/spec.d.ts +50 -0
  106. package/dist/quran/snapshot/spec.js +66 -0
  107. package/dist/quran/source.d.ts +206 -0
  108. package/dist/quran/source.js +153 -0
  109. package/dist/quran/spec.d.ts +47 -0
  110. package/dist/quran/spec.js +41 -0
  111. package/dist/quran/text.d.ts +7 -0
  112. package/dist/quran/text.js +11 -0
  113. package/dist/release/canonical.d.ts +23 -0
  114. package/dist/release/canonical.js +29 -0
  115. package/dist/release/current/evidence.d.ts +424 -0
  116. package/dist/release/current/evidence.js +41 -0
  117. package/dist/release/current/runtime.d.ts +4 -0
  118. package/dist/release/current/runtime.js +15 -0
  119. package/dist/release/current/state.d.ts +567 -0
  120. package/dist/release/current/state.js +91 -0
  121. package/dist/release/digest.d.ts +54 -0
  122. package/dist/release/digest.js +71 -0
  123. package/dist/release/hash.d.ts +72 -0
  124. package/dist/release/hash.js +14 -0
  125. package/dist/release/head.d.ts +206 -0
  126. package/dist/release/head.js +131 -0
  127. package/dist/release/items.d.ts +98 -0
  128. package/dist/release/items.js +114 -0
  129. package/dist/release/lifecycle.d.ts +297 -0
  130. package/dist/release/lifecycle.js +97 -0
  131. package/dist/release/origin.d.ts +30 -0
  132. package/dist/release/origin.js +24 -0
  133. package/dist/release/policy.d.ts +45 -0
  134. package/dist/release/policy.js +124 -0
  135. package/dist/release/result/digest.d.ts +127 -0
  136. package/dist/release/result/digest.js +140 -0
  137. package/dist/release/result/spec.d.ts +4 -0
  138. package/dist/release/result/spec.js +5 -0
  139. package/dist/release/rollback/digest.d.ts +126 -0
  140. package/dist/release/rollback/digest.js +92 -0
  141. package/dist/release/rollback/spec.d.ts +1729 -0
  142. package/dist/release/rollback/spec.js +156 -0
  143. package/dist/release/route/digest.d.ts +45 -0
  144. package/dist/release/route/digest.js +59 -0
  145. package/dist/release/route/page.d.ts +56 -0
  146. package/dist/release/route/page.js +46 -0
  147. package/dist/release/route/spec.d.ts +49 -0
  148. package/dist/release/route/spec.js +40 -0
  149. package/dist/release/route/verify.d.ts +66 -0
  150. package/dist/release/route/verify.js +67 -0
  151. package/dist/release/signing.d.ts +6 -0
  152. package/dist/release/signing.js +38 -0
  153. package/dist/release/snapshot/data.d.ts +475 -0
  154. package/dist/release/snapshot/data.js +74 -0
  155. package/dist/release/snapshot/evidence-requirement.d.ts +22 -0
  156. package/dist/release/snapshot/evidence-requirement.js +21 -0
  157. package/dist/release/snapshot/evidence.d.ts +58 -0
  158. package/dist/release/snapshot/evidence.js +14 -0
  159. package/dist/release/snapshot/program-evidence.d.ts +17 -0
  160. package/dist/release/snapshot/program-evidence.js +39 -0
  161. package/dist/release/snapshot/quran-evidence.d.ts +27 -0
  162. package/dist/release/snapshot/quran-evidence.js +43 -0
  163. package/dist/release/snapshot/scope.d.ts +60 -0
  164. package/dist/release/snapshot/scope.js +102 -0
  165. package/dist/release/snapshot/spec.d.ts +193 -0
  166. package/dist/release/snapshot/spec.js +139 -0
  167. package/dist/release/snapshot/tryout-evidence.d.ts +22 -0
  168. package/dist/release/snapshot/tryout-evidence.js +86 -0
  169. package/dist/release/snapshot/verify.d.ts +710 -0
  170. package/dist/release/snapshot/verify.js +147 -0
  171. package/dist/release/spec.d.ts +491 -0
  172. package/dist/release/spec.js +200 -0
  173. package/dist/release/verify.d.ts +98 -0
  174. package/dist/release/verify.js +70 -0
  175. package/dist/renderer/compatibility.d.ts +35 -0
  176. package/dist/renderer/compatibility.js +48 -0
  177. package/dist/renderer/component.d.ts +99 -0
  178. package/dist/renderer/component.js +102 -0
  179. package/dist/renderer/contract.d.ts +144 -0
  180. package/dist/renderer/contract.js +122 -0
  181. package/dist/renderer/domain.d.ts +6 -0
  182. package/dist/renderer/domain.js +18 -0
  183. package/dist/renderer/manifest.d.ts +86 -0
  184. package/dist/renderer/manifest.js +49 -0
  185. package/dist/renderer/selection.d.ts +39 -0
  186. package/dist/renderer/selection.js +87 -0
  187. package/dist/runtime/error.d.ts +8 -0
  188. package/dist/runtime/error.js +20 -0
  189. package/dist/runtime/protected/limits.d.ts +10 -0
  190. package/dist/runtime/protected/limits.js +15 -0
  191. package/dist/runtime/protected/spec.d.ts +328 -0
  192. package/dist/runtime/protected/spec.js +79 -0
  193. package/dist/runtime/protected/verify.d.ts +97 -0
  194. package/dist/runtime/protected/verify.js +72 -0
  195. package/dist/runtime/result.d.ts +12 -0
  196. package/dist/runtime/result.js +17 -0
  197. package/dist/runtime/spec.d.ts +705 -0
  198. package/dist/runtime/spec.js +61 -0
  199. package/dist/runtime/verify.d.ts +479 -0
  200. package/dist/runtime/verify.js +123 -0
  201. package/dist/signature/spec.d.ts +53 -0
  202. package/dist/signature/spec.js +29 -0
  203. package/dist/signature/trusted.d.ts +19 -0
  204. package/dist/signature/trusted.js +32 -0
  205. package/dist/signature/verify.d.ts +10 -0
  206. package/dist/signature/verify.js +82 -0
  207. package/dist/text/order.d.ts +2 -0
  208. package/dist/text/order.js +10 -0
  209. package/dist/text/syntax.d.ts +6 -0
  210. package/dist/text/syntax.js +15 -0
  211. package/dist/transport/batch.d.ts +971 -0
  212. package/dist/transport/batch.js +101 -0
  213. package/dist/transport/failure.d.ts +168 -0
  214. package/dist/transport/failure.js +194 -0
  215. package/dist/transport/group.d.ts +2946 -0
  216. package/dist/transport/group.js +47 -0
  217. package/dist/transport/limits.d.ts +30 -0
  218. package/dist/transport/limits.js +30 -0
  219. package/dist/transport/request.d.ts +9333 -0
  220. package/dist/transport/request.js +121 -0
  221. package/dist/transport/response.d.ts +6247 -0
  222. package/dist/transport/response.js +181 -0
  223. package/dist/transport/runtime.d.ts +77 -0
  224. package/dist/transport/runtime.js +33 -0
  225. package/dist/transport/snapshot.d.ts +978 -0
  226. package/dist/transport/snapshot.js +70 -0
  227. package/dist/tryout/canonical.d.ts +2 -0
  228. package/dist/tryout/canonical.js +11 -0
  229. package/dist/tryout/catalog-hash.d.ts +134 -0
  230. package/dist/tryout/catalog-hash.js +203 -0
  231. package/dist/tryout/catalog.d.ts +376 -0
  232. package/dist/tryout/catalog.js +147 -0
  233. package/dist/tryout/content-hash.d.ts +89 -0
  234. package/dist/tryout/content-hash.js +72 -0
  235. package/dist/tryout/identity.d.ts +12 -0
  236. package/dist/tryout/identity.js +46 -0
  237. package/dist/tryout/key.d.ts +4 -0
  238. package/dist/tryout/key.js +8 -0
  239. package/dist/tryout/language.d.ts +24 -0
  240. package/dist/tryout/language.js +32 -0
  241. package/dist/tryout/locale-closure.d.ts +20 -0
  242. package/dist/tryout/locale-closure.js +164 -0
  243. package/dist/tryout/placement-closure.d.ts +5 -0
  244. package/dist/tryout/placement-closure.js +30 -0
  245. package/dist/tryout/placement-hash.d.ts +11 -0
  246. package/dist/tryout/placement-hash.js +55 -0
  247. package/dist/tryout/placement.d.ts +280 -0
  248. package/dist/tryout/placement.js +82 -0
  249. package/dist/tryout/row-hash.d.ts +28 -0
  250. package/dist/tryout/row-hash.js +50 -0
  251. package/dist/tryout/runtime/canonical.d.ts +8 -0
  252. package/dist/tryout/runtime/canonical.js +33 -0
  253. package/dist/tryout/runtime/hash.d.ts +32 -0
  254. package/dist/tryout/runtime/hash.js +11 -0
  255. package/dist/tryout/runtime/source.d.ts +42 -0
  256. package/dist/tryout/runtime/source.js +47 -0
  257. package/dist/tryout/runtime/spec.d.ts +58 -0
  258. package/dist/tryout/runtime/spec.js +21 -0
  259. package/dist/tryout/runtime/verify.d.ts +61 -0
  260. package/dist/tryout/runtime/verify.js +69 -0
  261. package/dist/tryout/snapshot/canonical.d.ts +7 -0
  262. package/dist/tryout/snapshot/canonical.js +17 -0
  263. package/dist/tryout/snapshot/hash.d.ts +8 -0
  264. package/dist/tryout/snapshot/hash.js +19 -0
  265. package/dist/tryout/snapshot/spec.d.ts +46 -0
  266. package/dist/tryout/snapshot/spec.js +30 -0
  267. package/dist/tryout/spec.d.ts +13 -0
  268. package/dist/tryout/spec.js +15 -0
  269. package/package.json +506 -0
@@ -0,0 +1,181 @@
1
+ import { Effect, Schema } from "effect";
2
+ import { decodeContract } from "#contracts/decode";
3
+ import { RecoveryLookupSchema } from "#contracts/release/current/evidence";
4
+ import { ContentReleaseCurrentSchema } from "#contracts/release/current/state";
5
+ import { HeadPageSchema } from "#contracts/release/head";
6
+ import { ContentReleaseStatusSchema, ReleaseAbortReceiptSchema, ReleaseCleanupReceiptSchema, } from "#contracts/release/lifecycle";
7
+ import { RollbackPageSchema } from "#contracts/release/rollback/spec";
8
+ import { RoutePageSchema } from "#contracts/release/route/page";
9
+ import { PublicationReceiptSchema, ReleaseVerificationStatusSchema, } from "#contracts/release/spec";
10
+ import { StageBatchReceiptSchema } from "#contracts/transport/batch";
11
+ import { PublicationFailureSchema } from "#contracts/transport/failure";
12
+ import { StageGroupSuccessSchema } from "#contracts/transport/group";
13
+ import { StageTryoutRuntimeBundleReceiptSchema } from "#contracts/transport/runtime";
14
+ import { StageSnapshotBatchReceiptSchema, StageSnapshotReceiptSchema, } from "#contracts/transport/snapshot";
15
+ /** Returns authoritative active, candidate, and recovery identities. */
16
+ export const PublicationCurrentSuccessSchema = Schema.Struct({
17
+ ok: Schema.Literal(true),
18
+ operation: Schema.Literal("current"),
19
+ value: ContentReleaseCurrentSchema,
20
+ });
21
+ /** Returns durable cumulative progress from one release abort page. */
22
+ export const PublicationAbortSuccessSchema = Schema.Struct({
23
+ ok: Schema.Literal(true),
24
+ operation: Schema.Literal("abort"),
25
+ value: ReleaseAbortReceiptSchema,
26
+ });
27
+ /** Returns terminal discard evidence for one exact retained inverse. */
28
+ export const PublicationAcceptSuccessSchema = Schema.Struct({
29
+ ok: Schema.Literal(true),
30
+ operation: Schema.Literal("accept"),
31
+ value: ReleaseAbortReceiptSchema,
32
+ });
33
+ /** Returns one bounded authoritative material-head page. */
34
+ export const PublicationHeadPageSuccessSchema = Schema.Struct({
35
+ ok: Schema.Literal(true),
36
+ operation: Schema.Literal("headPage"),
37
+ value: HeadPageSchema,
38
+ });
39
+ /** Returns exact historical recovery completion or explicit absence. */
40
+ export const PublicationRecoverySuccessSchema = Schema.Struct({
41
+ ok: Schema.Literal(true),
42
+ operation: Schema.Literal("recovery"),
43
+ value: RecoveryLookupSchema,
44
+ });
45
+ /** Durable release status that proves stageRelease found or created a row. */
46
+ export const StagedReleaseStatusSchema = ContentReleaseStatusSchema.pipe(Schema.check(Schema.makeFilter((status) => status.phase !== "missing", {
47
+ message: "Expected stageRelease to return a stored release status.",
48
+ })));
49
+ /** Confirms the exact durable status created or resumed by staging. */
50
+ export const StageReleaseSuccessSchema = Schema.Struct({
51
+ ok: Schema.Literal(true),
52
+ operation: Schema.Literal("stageRelease"),
53
+ value: StagedReleaseStatusSchema,
54
+ });
55
+ /** Confirms the exact durable inverse status created or resumed by staging. */
56
+ export const StageRecoverySuccessSchema = Schema.Struct({
57
+ ok: Schema.Literal(true),
58
+ operation: Schema.Literal("stageRecovery"),
59
+ value: StagedReleaseStatusSchema,
60
+ });
61
+ /** Confirms the idempotent outcome of one structured-family manifest. */
62
+ export const StageSnapshotSuccessSchema = Schema.Struct({
63
+ ok: Schema.Literal(true),
64
+ operation: Schema.Literal("stageSnapshot"),
65
+ value: StageSnapshotReceiptSchema,
66
+ });
67
+ /** Confirms the idempotent outcome of one structured-snapshot row batch. */
68
+ export const StageSnapshotBatchSuccessSchema = Schema.Struct({
69
+ ok: Schema.Literal(true),
70
+ operation: Schema.Literal("stageSnapshotBatch"),
71
+ value: StageSnapshotBatchReceiptSchema,
72
+ });
73
+ /** Confirms the idempotent outcome of one permanent runtime bundle. */
74
+ export const StageTryoutRuntimeBundleSuccessSchema = Schema.Struct({
75
+ ok: Schema.Literal(true),
76
+ operation: Schema.Literal("stageTryoutRuntimeBundle"),
77
+ value: StageTryoutRuntimeBundleReceiptSchema,
78
+ });
79
+ /** Confirms the idempotent outcome of one ordered item batch. */
80
+ export const StageItemBatchSuccessSchema = Schema.Struct({
81
+ ok: Schema.Literal(true),
82
+ operation: Schema.Literal("stageItemBatch"),
83
+ value: StageBatchReceiptSchema,
84
+ });
85
+ /** Confirms the idempotent outcome of one ordered route batch. */
86
+ export const StageRouteBatchSuccessSchema = Schema.Struct({
87
+ ok: Schema.Literal(true),
88
+ operation: Schema.Literal("stageRouteBatch"),
89
+ value: StageBatchReceiptSchema,
90
+ });
91
+ /** Confirms the idempotent outcome of one projection batch. */
92
+ export const StageProjectionBatchSuccessSchema = Schema.Struct({
93
+ ok: Schema.Literal(true),
94
+ operation: Schema.Literal("stageProjectionBatch"),
95
+ value: StageBatchReceiptSchema,
96
+ });
97
+ /** Confirms the idempotent outcome of one immutable artifact batch. */
98
+ export const StageArtifactBatchSuccessSchema = Schema.Struct({
99
+ ok: Schema.Literal(true),
100
+ operation: Schema.Literal("stageArtifactBatch"),
101
+ value: StageBatchReceiptSchema,
102
+ });
103
+ /** Returns the durable phase for the requested exact manifest identity. */
104
+ export const PublicationStatusSuccessSchema = Schema.Struct({
105
+ ok: Schema.Literal(true),
106
+ operation: Schema.Literal("status"),
107
+ value: ContentReleaseStatusSchema,
108
+ });
109
+ /** Returns bounded progress or final evidence for durable verification. */
110
+ export const VerifyReleaseSuccessSchema = Schema.Struct({
111
+ ok: Schema.Literal(true),
112
+ operation: Schema.Literal("verify"),
113
+ value: ReleaseVerificationStatusSchema,
114
+ });
115
+ /** Returns the atomic activation receipt for one verified release. */
116
+ export const ActivateReleaseSuccessSchema = Schema.Struct({
117
+ ok: Schema.Literal(true),
118
+ operation: Schema.Literal("activate"),
119
+ value: PublicationReceiptSchema,
120
+ });
121
+ /** Returns the atomic activation receipt for one retained inverse release. */
122
+ export const ActivateRecoverySuccessSchema = Schema.Struct({
123
+ ok: Schema.Literal(true),
124
+ operation: Schema.Literal("activateRecovery"),
125
+ value: PublicationReceiptSchema,
126
+ });
127
+ /** Returns one exact bounded page used to build a forward rollback. */
128
+ export const PublicationRollbackSuccessSchema = Schema.Struct({
129
+ ok: Schema.Literal(true),
130
+ operation: Schema.Literal("rollbackPage"),
131
+ value: RollbackPageSchema,
132
+ });
133
+ /** Returns one bounded prior-owner page used to reverse signed routes. */
134
+ export const PublicationRoutePageSuccessSchema = Schema.Struct({
135
+ ok: Schema.Literal(true),
136
+ operation: Schema.Literal("routePage"),
137
+ value: RoutePageSchema,
138
+ });
139
+ /** Returns durable cumulative evidence from server-owned cleanup progress. */
140
+ export const PublicationCleanupSuccessSchema = Schema.Struct({
141
+ ok: Schema.Literal(true),
142
+ operation: Schema.Literal("cleanup"),
143
+ value: ReleaseCleanupReceiptSchema,
144
+ });
145
+ /** Complete success vocabulary returned by publication ingress. */
146
+ export const PublicationSuccessSchema = Schema.Union([
147
+ PublicationAcceptSuccessSchema,
148
+ PublicationAbortSuccessSchema,
149
+ PublicationCurrentSuccessSchema,
150
+ PublicationHeadPageSuccessSchema,
151
+ PublicationRecoverySuccessSchema,
152
+ StageReleaseSuccessSchema,
153
+ StageRecoverySuccessSchema,
154
+ StageSnapshotSuccessSchema,
155
+ StageSnapshotBatchSuccessSchema,
156
+ StageTryoutRuntimeBundleSuccessSchema,
157
+ StageGroupSuccessSchema,
158
+ StageItemBatchSuccessSchema,
159
+ StageRouteBatchSuccessSchema,
160
+ StageProjectionBatchSuccessSchema,
161
+ StageArtifactBatchSuccessSchema,
162
+ PublicationStatusSuccessSchema,
163
+ VerifyReleaseSuccessSchema,
164
+ ActivateReleaseSuccessSchema,
165
+ ActivateRecoverySuccessSchema,
166
+ PublicationRollbackSuccessSchema,
167
+ PublicationRoutePageSuccessSchema,
168
+ PublicationCleanupSuccessSchema,
169
+ ]);
170
+ /** Wraps one stable typed failure without exposing implementation messages. */
171
+ export const PublicationFailureResponseSchema = Schema.Struct({
172
+ failure: PublicationFailureSchema,
173
+ ok: Schema.Literal(false),
174
+ });
175
+ /** Complete framework-neutral response vocabulary for publication ingress. */
176
+ export const PublicationResponseSchema = Schema.Union([
177
+ PublicationSuccessSchema,
178
+ PublicationFailureResponseSchema,
179
+ ]);
180
+ /** Strictly decodes one unknown publication response without throwing. */
181
+ export const decodePublicationResponse = Effect.fn("AksaraContracts.decodePublicationResponse")((input) => decodeContract(PublicationResponseSchema, "PublicationResponse", input));
@@ -0,0 +1,77 @@
1
+ import { Schema } from "effect";
2
+ /** Canonical input for staging one permanent signed runtime bundle. */
3
+ export declare const StageTryoutRuntimeBundleInputSchema: Schema.Struct<{
4
+ bundle: Schema.Struct<{
5
+ readonly bundleHash: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
6
+ readonly keyId: Schema.brand<Schema.String, "@NakafaAI/AksaraSigningKeyId">;
7
+ readonly payload: Schema.Struct<{
8
+ readonly format: Schema.Literal<"signed-tryout-runtime-bundle">;
9
+ readonly rendererManifestHash: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
10
+ readonly snapshot: Schema.Struct<{
11
+ readonly activeAppLocales: Schema.NonEmptyArray<Schema.brand<Schema.Literals<readonly ["en", "id", "de"]>, "@NakafaAI/AksaraAppLocale">>;
12
+ readonly catalogDigest: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
13
+ readonly counts: Schema.Struct<{
14
+ readonly country: Schema.Int;
15
+ readonly exam: Schema.Int;
16
+ readonly section: Schema.Int;
17
+ readonly set: Schema.Int;
18
+ readonly track: Schema.Int;
19
+ }>;
20
+ readonly placementCount: Schema.Int;
21
+ readonly placementDigest: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
22
+ readonly routeCount: Schema.Int;
23
+ readonly format: Schema.Literal<"localized-tryout-snapshot">;
24
+ readonly snapshotId: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
25
+ }>;
26
+ readonly sourceGitSha: Schema.brand<Schema.String, "@NakafaAI/AksaraGitCommitSha">;
27
+ readonly sourceManifestHash: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
28
+ readonly sourceReleaseId: Schema.brand<Schema.String, "@NakafaAI/AksaraReleaseId">;
29
+ }>;
30
+ readonly signature: Schema.brand<Schema.String, "@NakafaAI/AksaraEd25519Signature">;
31
+ }>;
32
+ releaseId: Schema.brand<Schema.String, "@NakafaAI/AksaraReleaseId">;
33
+ }>;
34
+ export type StageTryoutRuntimeBundleInput = typeof StageTryoutRuntimeBundleInputSchema.Type;
35
+ /** Stages one permanent signed runtime bundle before release verification. */
36
+ export declare const StageTryoutRuntimeBundleRequestSchema: Schema.Struct<{
37
+ readonly bundle: Schema.Struct<{
38
+ readonly bundleHash: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
39
+ readonly keyId: Schema.brand<Schema.String, "@NakafaAI/AksaraSigningKeyId">;
40
+ readonly payload: Schema.Struct<{
41
+ readonly format: Schema.Literal<"signed-tryout-runtime-bundle">;
42
+ readonly rendererManifestHash: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
43
+ readonly snapshot: Schema.Struct<{
44
+ readonly activeAppLocales: Schema.NonEmptyArray<Schema.brand<Schema.Literals<readonly ["en", "id", "de"]>, "@NakafaAI/AksaraAppLocale">>;
45
+ readonly catalogDigest: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
46
+ readonly counts: Schema.Struct<{
47
+ readonly country: Schema.Int;
48
+ readonly exam: Schema.Int;
49
+ readonly section: Schema.Int;
50
+ readonly set: Schema.Int;
51
+ readonly track: Schema.Int;
52
+ }>;
53
+ readonly placementCount: Schema.Int;
54
+ readonly placementDigest: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
55
+ readonly routeCount: Schema.Int;
56
+ readonly format: Schema.Literal<"localized-tryout-snapshot">;
57
+ readonly snapshotId: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
58
+ }>;
59
+ readonly sourceGitSha: Schema.brand<Schema.String, "@NakafaAI/AksaraGitCommitSha">;
60
+ readonly sourceManifestHash: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
61
+ readonly sourceReleaseId: Schema.brand<Schema.String, "@NakafaAI/AksaraReleaseId">;
62
+ }>;
63
+ readonly signature: Schema.brand<Schema.String, "@NakafaAI/AksaraEd25519Signature">;
64
+ }>;
65
+ readonly releaseId: Schema.brand<Schema.String, "@NakafaAI/AksaraReleaseId">;
66
+ readonly operation: Schema.Literal<"stageTryoutRuntimeBundle">;
67
+ }>;
68
+ export type StageTryoutRuntimeBundleRequest = typeof StageTryoutRuntimeBundleRequestSchema.Type;
69
+ /** Idempotent outcome for one content-addressed runtime bundle. */
70
+ export declare const StageTryoutRuntimeBundleReceiptSchema: Schema.Struct<{
71
+ readonly bundleHash: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
72
+ readonly created: Schema.Literals<readonly [0, 1]>;
73
+ readonly releaseId: Schema.brand<Schema.String, "@NakafaAI/AksaraReleaseId">;
74
+ readonly snapshotId: Schema.brand<Schema.String, "@NakafaAI/AksaraSha256Hash">;
75
+ readonly unchanged: Schema.Literals<readonly [0, 1]>;
76
+ }>;
77
+ export type StageTryoutRuntimeBundleReceipt = typeof StageTryoutRuntimeBundleReceiptSchema.Type;
@@ -0,0 +1,33 @@
1
+ import { Schema } from "effect";
2
+ import { ReleaseIdSchema, Sha256HashSchema } from "#contracts/ids";
3
+ import { SignedTryoutRuntimeBundleSchema } from "#contracts/tryout/runtime/spec";
4
+ const OutcomeCountSchema = Schema.Literals([0, 1]);
5
+ const StageTryoutRuntimeBundleFields = {
6
+ bundle: SignedTryoutRuntimeBundleSchema,
7
+ releaseId: ReleaseIdSchema,
8
+ };
9
+ /** Requires a staged bundle to identify the release that created its source. */
10
+ function hasBoundSourceRelease(input) {
11
+ return input.bundle.payload.sourceReleaseId === input.releaseId;
12
+ }
13
+ /** Canonical input for staging one permanent signed runtime bundle. */
14
+ export const StageTryoutRuntimeBundleInputSchema = Schema.Struct(StageTryoutRuntimeBundleFields).pipe(Schema.check(Schema.makeFilter(hasBoundSourceRelease, {
15
+ message: "Expected the runtime bundle to share its source release.",
16
+ })));
17
+ /** Stages one permanent signed runtime bundle before release verification. */
18
+ export const StageTryoutRuntimeBundleRequestSchema = Schema.Struct({
19
+ ...StageTryoutRuntimeBundleFields,
20
+ operation: Schema.Literal("stageTryoutRuntimeBundle"),
21
+ }).pipe(Schema.check(Schema.makeFilter(hasBoundSourceRelease, {
22
+ message: "Expected the runtime bundle to share its source release.",
23
+ })));
24
+ /** Idempotent outcome for one content-addressed runtime bundle. */
25
+ export const StageTryoutRuntimeBundleReceiptSchema = Schema.Struct({
26
+ bundleHash: Sha256HashSchema,
27
+ created: OutcomeCountSchema,
28
+ releaseId: ReleaseIdSchema,
29
+ snapshotId: Sha256HashSchema,
30
+ unchanged: OutcomeCountSchema,
31
+ }).pipe(Schema.check(Schema.makeFilter(({ created, unchanged }) => created + unchanged === 1, {
32
+ message: "Expected exactly one created or unchanged runtime bundle.",
33
+ })));