@astrale-os/kernel-protocol 0.5.0-beta.7 → 0.5.0-beta.70

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 (556) hide show
  1. package/dist/artifact/index.d.ts +1 -2
  2. package/dist/artifact/index.js +1 -2
  3. package/dist/artifact/ref.d.ts +2 -1
  4. package/dist/artifact/ref.js +4 -4
  5. package/dist/codecs/codec.d.ts +0 -1
  6. package/dist/codecs/codec.js +0 -1
  7. package/dist/codecs/index.d.ts +1 -3
  8. package/dist/codecs/index.js +1 -3
  9. package/dist/codecs/json.d.ts +0 -1
  10. package/dist/codecs/json.js +0 -1
  11. package/dist/codecs/media-types.d.ts +0 -2
  12. package/dist/codecs/media-types.js +0 -2
  13. package/dist/errors/codes.d.ts +0 -1
  14. package/dist/errors/codes.js +0 -1
  15. package/dist/errors/http-status.d.ts +0 -1
  16. package/dist/errors/http-status.js +0 -1
  17. package/dist/errors/index.d.ts +1 -1
  18. package/dist/errors/index.js +1 -1
  19. package/dist/errors/payload.d.ts +0 -1
  20. package/dist/errors/payload.js +3 -3
  21. package/dist/errors/protocol-error.d.ts +0 -1
  22. package/dist/errors/protocol-error.js +4 -3
  23. package/dist/errors/reason.d.ts +0 -1
  24. package/dist/errors/reason.js +0 -1
  25. package/dist/errors/retry.d.ts +23 -0
  26. package/dist/errors/retry.js +44 -0
  27. package/dist/index.d.ts +3 -2
  28. package/dist/index.js +3 -2
  29. package/dist/invocation/admission.d.ts +2 -3
  30. package/dist/invocation/admission.js +7 -11
  31. package/dist/invocation/binary.d.ts +1 -1
  32. package/dist/invocation/binary.js +21 -5
  33. package/dist/invocation/binding-codecs.d.ts +1 -2
  34. package/dist/invocation/binding-codecs.js +1 -7
  35. package/dist/invocation/cancellation.d.ts +0 -1
  36. package/dist/invocation/cancellation.js +0 -1
  37. package/dist/invocation/correlation.d.ts +0 -1
  38. package/dist/invocation/correlation.js +0 -1
  39. package/dist/invocation/delegate.d.ts +1 -11
  40. package/dist/invocation/delegate.js +4 -19
  41. package/dist/invocation/http/binary.d.ts +3 -2
  42. package/dist/invocation/http/binary.js +6 -2
  43. package/dist/invocation/http/index.d.ts +2 -2
  44. package/dist/invocation/http/index.js +2 -2
  45. package/dist/invocation/http/negotiation.d.ts +0 -1
  46. package/dist/invocation/http/negotiation.js +3 -11
  47. package/dist/invocation/http/request.d.ts +9 -0
  48. package/dist/invocation/http/request.js +61 -0
  49. package/dist/invocation/http/stream.d.ts +0 -1
  50. package/dist/invocation/http/stream.js +0 -1
  51. package/dist/invocation/http/trace.d.ts +0 -1
  52. package/dist/invocation/http/trace.js +0 -1
  53. package/dist/invocation/idempotency.d.ts +0 -1
  54. package/dist/invocation/idempotency.js +0 -1
  55. package/dist/invocation/identity.d.ts +0 -1
  56. package/dist/invocation/identity.js +0 -1
  57. package/dist/invocation/index.d.ts +6 -4
  58. package/dist/invocation/index.js +5 -4
  59. package/dist/invocation/legacy/index.d.ts +29 -0
  60. package/dist/invocation/legacy/index.js +28 -0
  61. package/dist/invocation/legacy/route.d.ts +14 -0
  62. package/dist/invocation/legacy/route.js +25 -0
  63. package/dist/invocation/legacy/via.d.ts +30 -0
  64. package/dist/invocation/legacy/via.js +15 -0
  65. package/dist/invocation/miss.d.ts +0 -1
  66. package/dist/invocation/miss.js +0 -1
  67. package/dist/invocation/redirect.d.ts +15 -13
  68. package/dist/invocation/redirect.js +9 -22
  69. package/dist/invocation/request.d.ts +0 -1
  70. package/dist/invocation/request.js +2 -3
  71. package/dist/invocation/response.d.ts +0 -1
  72. package/dist/invocation/response.js +0 -1
  73. package/dist/invocation/routing.d.ts +19 -6
  74. package/dist/invocation/routing.js +50 -21
  75. package/dist/invocation/schema.d.ts +6 -5
  76. package/dist/invocation/schema.js +5 -12
  77. package/dist/invocation/service-reason.d.ts +21 -17
  78. package/dist/invocation/service-reason.js +27 -20
  79. package/dist/invocation/stale-route.d.ts +1 -2
  80. package/dist/invocation/stale-route.js +0 -1
  81. package/dist/invocation/stream.d.ts +0 -1
  82. package/dist/invocation/stream.js +0 -1
  83. package/dist/invocation/target.d.ts +5 -3
  84. package/dist/invocation/target.js +25 -4
  85. package/dist/invocation/trace.d.ts +0 -1
  86. package/dist/invocation/trace.js +0 -1
  87. package/dist/invocation/version.d.ts +0 -1
  88. package/dist/invocation/version.js +0 -1
  89. package/dist/invocation/websocket/binary.d.ts +0 -1
  90. package/dist/invocation/websocket/binary.js +1 -1
  91. package/dist/invocation/websocket/index.d.ts +1 -2
  92. package/dist/invocation/websocket/index.js +1 -2
  93. package/dist/invocation/websocket/subprotocol.d.ts +1 -3
  94. package/dist/invocation/websocket/subprotocol.js +3 -5
  95. package/dist/issuer/claims.d.ts +7 -0
  96. package/dist/issuer/claims.js +7 -0
  97. package/dist/issuer/configuration.d.ts +0 -1
  98. package/dist/issuer/configuration.js +0 -1
  99. package/dist/issuer/error.d.ts +0 -1
  100. package/dist/issuer/error.js +0 -1
  101. package/dist/issuer/exchange.d.ts +0 -1
  102. package/dist/issuer/exchange.js +0 -1
  103. package/dist/issuer/hosted.d.ts +0 -1
  104. package/dist/issuer/hosted.js +0 -1
  105. package/dist/issuer/index.d.ts +2 -1
  106. package/dist/issuer/index.js +2 -1
  107. package/dist/issuer/key-set.d.ts +0 -1
  108. package/dist/issuer/key-set.js +0 -1
  109. package/dist/issuer/paths.d.ts +2 -1
  110. package/dist/issuer/paths.js +1 -1
  111. package/dist/issuer/url.d.ts +0 -1
  112. package/dist/issuer/url.js +0 -1
  113. package/dist/issuer/workflow-engine.d.ts +18 -0
  114. package/dist/issuer/workflow-engine.js +59 -0
  115. package/dist/{publication → release}/bindings/callable.d.ts +0 -1
  116. package/dist/release/bindings/callable.js +34 -0
  117. package/dist/{publication → release}/bindings/index.d.ts +1 -2
  118. package/dist/{publication → release}/bindings/index.js +0 -1
  119. package/dist/{publication → release}/bindings/invocation.d.ts +0 -1
  120. package/dist/release/bindings/invocation.js +13 -0
  121. package/dist/release/bindings/view.d.ts +16 -0
  122. package/dist/release/bindings/view.js +148 -0
  123. package/dist/release/build.d.ts +6 -0
  124. package/dist/release/build.js +7 -0
  125. package/dist/release/bundle-admission.d.ts +21 -0
  126. package/dist/release/bundle-admission.js +66 -0
  127. package/dist/{publication → release}/bundle-descriptor.d.ts +0 -1
  128. package/dist/release/bundle-descriptor.js +19 -0
  129. package/dist/release/bundle-evidence.d.ts +3 -0
  130. package/dist/release/bundle-evidence.js +13 -0
  131. package/dist/release/bundle.d.ts +12 -0
  132. package/dist/{publication → release}/bundle.js +16 -11
  133. package/dist/{publication → release}/declaration.d.ts +0 -1
  134. package/dist/release/declaration.js +1 -0
  135. package/dist/{publication → release}/delivery/attestation.d.ts +1 -1
  136. package/dist/{publication → release}/delivery/attestation.js +0 -1
  137. package/dist/release/delivery/claims.d.ts +21 -0
  138. package/dist/release/delivery/claims.js +68 -0
  139. package/dist/release/delivery/delivery.d.ts +11 -0
  140. package/dist/release/delivery/delivery.js +24 -0
  141. package/dist/{publication → release}/delivery/error.d.ts +2 -1
  142. package/dist/{publication → release}/delivery/error.js +1 -1
  143. package/dist/{publication → release}/delivery/index.d.ts +6 -2
  144. package/dist/{publication → release}/delivery/index.js +5 -1
  145. package/dist/{publication → release}/delivery/limits.d.ts +2 -2
  146. package/dist/release/delivery/limits.js +5 -0
  147. package/dist/release/delivery/request.d.ts +21 -0
  148. package/dist/release/delivery/request.js +60 -0
  149. package/dist/{publication → release}/delivery-declaration.d.ts +0 -1
  150. package/dist/{publication → release}/delivery-declaration.js +4 -5
  151. package/dist/{publication → release}/delivery-endpoint.d.ts +0 -1
  152. package/dist/release/delivery-endpoint.js +22 -0
  153. package/dist/release/digest.d.ts +13 -0
  154. package/dist/{publication/etag.js → release/digest.js} +1 -7
  155. package/dist/release/error.d.ts +7 -0
  156. package/dist/release/error.js +11 -0
  157. package/dist/release/index.d.ts +21 -0
  158. package/dist/release/index.js +14 -0
  159. package/dist/release/issuer.d.ts +5 -0
  160. package/dist/release/issuer.js +34 -0
  161. package/dist/release/legacy/bindings.d.ts +14 -0
  162. package/dist/release/legacy/bindings.js +11 -0
  163. package/dist/release/legacy/bundle-admission.d.ts +6 -0
  164. package/dist/release/legacy/bundle-admission.js +10 -0
  165. package/dist/release/legacy/bundle-evidence.d.ts +8 -0
  166. package/dist/release/legacy/bundle-evidence.js +11 -0
  167. package/dist/release/legacy/bundle.d.ts +24 -0
  168. package/dist/release/legacy/bundle.js +31 -0
  169. package/dist/release/legacy/delivery/attestation.d.ts +6 -0
  170. package/dist/release/legacy/delivery/attestation.js +1 -0
  171. package/dist/{publication → release/legacy}/delivery/claims.d.ts +10 -2
  172. package/dist/{publication → release/legacy}/delivery/claims.js +7 -3
  173. package/dist/release/legacy/delivery/delivery.d.ts +18 -0
  174. package/dist/{publication → release/legacy}/delivery/delivery.js +6 -3
  175. package/dist/release/legacy/delivery/error.d.ts +16 -0
  176. package/dist/release/legacy/delivery/error.js +6 -0
  177. package/dist/release/legacy/delivery/index.d.ts +13 -0
  178. package/dist/release/legacy/delivery/index.js +13 -0
  179. package/dist/release/legacy/delivery/limits.d.ts +21 -0
  180. package/dist/release/legacy/delivery/limits.js +22 -0
  181. package/dist/release/legacy/delivery/request.d.ts +26 -0
  182. package/dist/{publication → release/legacy}/delivery/request.js +8 -4
  183. package/dist/release/legacy/delivery-declaration.d.ts +9 -0
  184. package/dist/release/legacy/delivery-declaration.js +11 -0
  185. package/dist/release/legacy/error.d.ts +26 -0
  186. package/dist/release/legacy/error.js +114 -0
  187. package/dist/release/legacy/etag.d.ts +12 -0
  188. package/dist/release/legacy/etag.js +14 -0
  189. package/dist/release/legacy/index.d.ts +75 -0
  190. package/dist/release/legacy/index.js +15 -0
  191. package/dist/release/legacy/profiles.d.ts +23 -0
  192. package/dist/release/legacy/profiles.js +36 -0
  193. package/dist/release/legacy/projection.d.ts +13 -0
  194. package/dist/release/legacy/projection.js +25 -0
  195. package/dist/release/legacy/publication.d.ts +90 -0
  196. package/dist/release/legacy/publication.js +124 -0
  197. package/dist/release/legacy/reference.d.ts +47 -0
  198. package/dist/{publication → release/legacy}/reference.js +27 -4
  199. package/dist/release/legacy/requirements.d.ts +30 -0
  200. package/dist/release/legacy/requirements.js +20 -0
  201. package/dist/{publication → release}/manifest.d.ts +2 -3
  202. package/dist/release/manifest.js +30 -0
  203. package/dist/release/reference.d.ts +26 -0
  204. package/dist/release/reference.js +70 -0
  205. package/dist/release/release.d.ts +60 -0
  206. package/dist/release/release.js +123 -0
  207. package/dist/release/requirements.d.ts +41 -0
  208. package/dist/release/requirements.js +306 -0
  209. package/dist/{publication → release}/route.d.ts +0 -1
  210. package/dist/{publication → release}/route.js +24 -25
  211. package/dist/{publication → release}/schema.d.ts +1 -2
  212. package/dist/{publication → release}/schema.js +4 -5
  213. package/dist/release/served.d.ts +26 -0
  214. package/dist/release/served.js +65 -0
  215. package/dist/release/shape.d.ts +8 -0
  216. package/dist/{publication/content.js → release/shape.js} +0 -1
  217. package/dist/routes/admission.d.ts +1 -2
  218. package/dist/routes/admission.js +7 -86
  219. package/dist/routes/binding.d.ts +4 -5
  220. package/dist/routes/binding.js +11 -22
  221. package/dist/routes/collision.d.ts +0 -1
  222. package/dist/routes/collision.js +0 -1
  223. package/dist/routes/compiler.d.ts +4 -5
  224. package/dist/routes/compiler.js +20 -13
  225. package/dist/routes/credential.d.ts +12 -2
  226. package/dist/routes/credential.js +11 -4
  227. package/dist/routes/decode.d.ts +6 -4
  228. package/dist/routes/decode.js +32 -30
  229. package/dist/routes/deployment-retired.d.ts +30 -0
  230. package/dist/routes/deployment-retired.js +96 -0
  231. package/dist/routes/encode.d.ts +2 -3
  232. package/dist/routes/encode.js +22 -20
  233. package/dist/routes/entries.d.ts +23 -0
  234. package/dist/routes/entries.js +150 -0
  235. package/dist/routes/error-response.d.ts +0 -1
  236. package/dist/routes/error-response.js +0 -1
  237. package/dist/routes/error.d.ts +0 -1
  238. package/dist/routes/error.js +0 -1
  239. package/dist/routes/evidence.d.ts +4 -5
  240. package/dist/routes/evidence.js +8 -34
  241. package/dist/routes/header.d.ts +9 -0
  242. package/dist/routes/header.js +34 -0
  243. package/dist/routes/index.d.ts +5 -3
  244. package/dist/routes/index.js +5 -3
  245. package/dist/routes/legacy/index.d.ts +29 -0
  246. package/dist/routes/legacy/index.js +29 -0
  247. package/dist/routes/legacy/routing.d.ts +24 -0
  248. package/dist/routes/legacy/routing.js +45 -0
  249. package/dist/routes/legacy/table.d.ts +34 -0
  250. package/dist/routes/legacy/table.js +50 -0
  251. package/dist/routes/mapping.d.ts +1 -2
  252. package/dist/routes/mapping.js +4 -5
  253. package/dist/routes/match.d.ts +1 -2
  254. package/dist/routes/match.js +0 -1
  255. package/dist/routes/placement.d.ts +2 -3
  256. package/dist/routes/placement.js +1 -2
  257. package/dist/routes/plan.d.ts +6 -6
  258. package/dist/routes/plan.js +0 -1
  259. package/dist/routes/request.d.ts +5 -4
  260. package/dist/routes/request.js +0 -1
  261. package/dist/routes/reservation.d.ts +4 -3
  262. package/dist/routes/reservation.js +10 -4
  263. package/dist/routes/routing.d.ts +30 -7
  264. package/dist/routes/routing.js +34 -50
  265. package/dist/routes/scalar.d.ts +3 -4
  266. package/dist/routes/scalar.js +5 -6
  267. package/dist/routes/select.d.ts +1 -2
  268. package/dist/routes/select.js +0 -1
  269. package/dist/routes/stream.d.ts +0 -1
  270. package/dist/routes/stream.js +0 -1
  271. package/dist/routes/table.d.ts +3 -3
  272. package/dist/routes/table.js +0 -1
  273. package/dist/routes/target.d.ts +5 -1
  274. package/dist/routes/target.js +16 -1
  275. package/dist/routes/template.d.ts +0 -1
  276. package/dist/routes/template.js +0 -1
  277. package/dist/runtime/artifact.d.ts +8 -7
  278. package/dist/runtime/artifact.js +23 -11
  279. package/dist/runtime/index.d.ts +1 -2
  280. package/dist/runtime/index.js +1 -2
  281. package/dist/schema/index.d.ts +0 -1
  282. package/dist/schema/index.js +0 -1
  283. package/dist/schema/installation/codec.d.ts +9 -0
  284. package/dist/schema/installation/codec.js +74 -0
  285. package/dist/schema/installation/index.d.ts +2 -1
  286. package/dist/schema/installation/index.js +1 -1
  287. package/dist/schema/installation/introspection/codec.d.ts +14 -3
  288. package/dist/schema/installation/introspection/codec.js +323 -194
  289. package/dist/schema/installation/introspection/index.d.ts +2 -3
  290. package/dist/schema/installation/introspection/index.js +1 -2
  291. package/dist/schema/installation/introspection/result.d.ts +96 -23
  292. package/dist/schema/installation/introspection/result.js +0 -1
  293. package/dist/schema/installation/legacy/index.d.ts +39 -0
  294. package/dist/schema/installation/legacy/index.js +39 -0
  295. package/dist/schema/installation/legacy/installation.d.ts +9 -0
  296. package/dist/schema/installation/legacy/installation.js +28 -0
  297. package/dist/schema/installation/legacy/introspection.d.ts +10 -0
  298. package/dist/schema/installation/legacy/introspection.js +70 -0
  299. package/dist/schema/installation/legacy/msgpack.d.ts +1 -0
  300. package/dist/schema/installation/legacy/msgpack.js +143 -0
  301. package/dist/schema/installation/result.d.ts +9 -0
  302. package/dist/schema/installation/result.js +1 -0
  303. package/package.json +78 -37
  304. package/dist/artifact/index.d.ts.map +0 -1
  305. package/dist/artifact/index.js.map +0 -1
  306. package/dist/artifact/ref.d.ts.map +0 -1
  307. package/dist/artifact/ref.js.map +0 -1
  308. package/dist/codecs/codec.d.ts.map +0 -1
  309. package/dist/codecs/codec.js.map +0 -1
  310. package/dist/codecs/index.d.ts.map +0 -1
  311. package/dist/codecs/index.js.map +0 -1
  312. package/dist/codecs/json.d.ts.map +0 -1
  313. package/dist/codecs/json.js.map +0 -1
  314. package/dist/codecs/media-types.d.ts.map +0 -1
  315. package/dist/codecs/media-types.js.map +0 -1
  316. package/dist/codecs/msgpack.d.ts +0 -5
  317. package/dist/codecs/msgpack.d.ts.map +0 -1
  318. package/dist/codecs/msgpack.js +0 -51
  319. package/dist/codecs/msgpack.js.map +0 -1
  320. package/dist/errors/codes.d.ts.map +0 -1
  321. package/dist/errors/codes.js.map +0 -1
  322. package/dist/errors/http-status.d.ts.map +0 -1
  323. package/dist/errors/http-status.js.map +0 -1
  324. package/dist/errors/index.d.ts.map +0 -1
  325. package/dist/errors/index.js.map +0 -1
  326. package/dist/errors/payload.d.ts.map +0 -1
  327. package/dist/errors/payload.js.map +0 -1
  328. package/dist/errors/protocol-error.d.ts.map +0 -1
  329. package/dist/errors/protocol-error.js.map +0 -1
  330. package/dist/errors/reason.d.ts.map +0 -1
  331. package/dist/errors/reason.js.map +0 -1
  332. package/dist/index.d.ts.map +0 -1
  333. package/dist/index.js.map +0 -1
  334. package/dist/invocation/admission.d.ts.map +0 -1
  335. package/dist/invocation/admission.js.map +0 -1
  336. package/dist/invocation/binary.d.ts.map +0 -1
  337. package/dist/invocation/binary.js.map +0 -1
  338. package/dist/invocation/binding-codecs.d.ts.map +0 -1
  339. package/dist/invocation/binding-codecs.js.map +0 -1
  340. package/dist/invocation/cancellation.d.ts.map +0 -1
  341. package/dist/invocation/cancellation.js.map +0 -1
  342. package/dist/invocation/correlation.d.ts.map +0 -1
  343. package/dist/invocation/correlation.js.map +0 -1
  344. package/dist/invocation/delegate.d.ts.map +0 -1
  345. package/dist/invocation/delegate.js.map +0 -1
  346. package/dist/invocation/http/binary.d.ts.map +0 -1
  347. package/dist/invocation/http/binary.js.map +0 -1
  348. package/dist/invocation/http/index.d.ts.map +0 -1
  349. package/dist/invocation/http/index.js.map +0 -1
  350. package/dist/invocation/http/negotiation.d.ts.map +0 -1
  351. package/dist/invocation/http/negotiation.js.map +0 -1
  352. package/dist/invocation/http/stream.d.ts.map +0 -1
  353. package/dist/invocation/http/stream.js.map +0 -1
  354. package/dist/invocation/http/trace.d.ts.map +0 -1
  355. package/dist/invocation/http/trace.js.map +0 -1
  356. package/dist/invocation/idempotency.d.ts.map +0 -1
  357. package/dist/invocation/idempotency.js.map +0 -1
  358. package/dist/invocation/identity.d.ts.map +0 -1
  359. package/dist/invocation/identity.js.map +0 -1
  360. package/dist/invocation/index.d.ts.map +0 -1
  361. package/dist/invocation/index.js.map +0 -1
  362. package/dist/invocation/miss.d.ts.map +0 -1
  363. package/dist/invocation/miss.js.map +0 -1
  364. package/dist/invocation/redirect.d.ts.map +0 -1
  365. package/dist/invocation/redirect.js.map +0 -1
  366. package/dist/invocation/request.d.ts.map +0 -1
  367. package/dist/invocation/request.js.map +0 -1
  368. package/dist/invocation/response.d.ts.map +0 -1
  369. package/dist/invocation/response.js.map +0 -1
  370. package/dist/invocation/routing.d.ts.map +0 -1
  371. package/dist/invocation/routing.js.map +0 -1
  372. package/dist/invocation/schema.d.ts.map +0 -1
  373. package/dist/invocation/schema.js.map +0 -1
  374. package/dist/invocation/service-reason.d.ts.map +0 -1
  375. package/dist/invocation/service-reason.js.map +0 -1
  376. package/dist/invocation/stale-route.d.ts.map +0 -1
  377. package/dist/invocation/stale-route.js.map +0 -1
  378. package/dist/invocation/stream.d.ts.map +0 -1
  379. package/dist/invocation/stream.js.map +0 -1
  380. package/dist/invocation/target.d.ts.map +0 -1
  381. package/dist/invocation/target.js.map +0 -1
  382. package/dist/invocation/trace.d.ts.map +0 -1
  383. package/dist/invocation/trace.js.map +0 -1
  384. package/dist/invocation/version.d.ts.map +0 -1
  385. package/dist/invocation/version.js.map +0 -1
  386. package/dist/invocation/websocket/binary.d.ts.map +0 -1
  387. package/dist/invocation/websocket/binary.js.map +0 -1
  388. package/dist/invocation/websocket/index.d.ts.map +0 -1
  389. package/dist/invocation/websocket/index.js.map +0 -1
  390. package/dist/invocation/websocket/subprotocol.d.ts.map +0 -1
  391. package/dist/invocation/websocket/subprotocol.js.map +0 -1
  392. package/dist/issuer/configuration.d.ts.map +0 -1
  393. package/dist/issuer/configuration.js.map +0 -1
  394. package/dist/issuer/error.d.ts.map +0 -1
  395. package/dist/issuer/error.js.map +0 -1
  396. package/dist/issuer/exchange.d.ts.map +0 -1
  397. package/dist/issuer/exchange.js.map +0 -1
  398. package/dist/issuer/hosted.d.ts.map +0 -1
  399. package/dist/issuer/hosted.js.map +0 -1
  400. package/dist/issuer/index.d.ts.map +0 -1
  401. package/dist/issuer/index.js.map +0 -1
  402. package/dist/issuer/key-set.d.ts.map +0 -1
  403. package/dist/issuer/key-set.js.map +0 -1
  404. package/dist/issuer/paths.d.ts.map +0 -1
  405. package/dist/issuer/paths.js.map +0 -1
  406. package/dist/issuer/url.d.ts.map +0 -1
  407. package/dist/issuer/url.js.map +0 -1
  408. package/dist/publication/bindings/callable.d.ts.map +0 -1
  409. package/dist/publication/bindings/callable.js +0 -32
  410. package/dist/publication/bindings/callable.js.map +0 -1
  411. package/dist/publication/bindings/index.d.ts.map +0 -1
  412. package/dist/publication/bindings/index.js.map +0 -1
  413. package/dist/publication/bindings/invocation.d.ts.map +0 -1
  414. package/dist/publication/bindings/invocation.js +0 -14
  415. package/dist/publication/bindings/invocation.js.map +0 -1
  416. package/dist/publication/bindings/view.d.ts +0 -8
  417. package/dist/publication/bindings/view.d.ts.map +0 -1
  418. package/dist/publication/bindings/view.js +0 -29
  419. package/dist/publication/bindings/view.js.map +0 -1
  420. package/dist/publication/bundle-admission.d.ts +0 -5
  421. package/dist/publication/bundle-admission.d.ts.map +0 -1
  422. package/dist/publication/bundle-admission.js +0 -66
  423. package/dist/publication/bundle-admission.js.map +0 -1
  424. package/dist/publication/bundle-descriptor.d.ts.map +0 -1
  425. package/dist/publication/bundle-descriptor.js +0 -20
  426. package/dist/publication/bundle-descriptor.js.map +0 -1
  427. package/dist/publication/bundle-evidence.d.ts +0 -4
  428. package/dist/publication/bundle-evidence.d.ts.map +0 -1
  429. package/dist/publication/bundle-evidence.js +0 -14
  430. package/dist/publication/bundle-evidence.js.map +0 -1
  431. package/dist/publication/bundle.d.ts +0 -10
  432. package/dist/publication/bundle.d.ts.map +0 -1
  433. package/dist/publication/bundle.js.map +0 -1
  434. package/dist/publication/content.d.ts +0 -11
  435. package/dist/publication/content.d.ts.map +0 -1
  436. package/dist/publication/content.js.map +0 -1
  437. package/dist/publication/declaration.d.ts.map +0 -1
  438. package/dist/publication/declaration.js +0 -2
  439. package/dist/publication/declaration.js.map +0 -1
  440. package/dist/publication/delivery/attestation.d.ts.map +0 -1
  441. package/dist/publication/delivery/attestation.js.map +0 -1
  442. package/dist/publication/delivery/claims.d.ts.map +0 -1
  443. package/dist/publication/delivery/claims.js.map +0 -1
  444. package/dist/publication/delivery/delivery.d.ts +0 -10
  445. package/dist/publication/delivery/delivery.d.ts.map +0 -1
  446. package/dist/publication/delivery/delivery.js.map +0 -1
  447. package/dist/publication/delivery/error.d.ts.map +0 -1
  448. package/dist/publication/delivery/error.js.map +0 -1
  449. package/dist/publication/delivery/index.d.ts.map +0 -1
  450. package/dist/publication/delivery/index.js.map +0 -1
  451. package/dist/publication/delivery/limits.d.ts.map +0 -1
  452. package/dist/publication/delivery/limits.js +0 -5
  453. package/dist/publication/delivery/limits.js.map +0 -1
  454. package/dist/publication/delivery/request.d.ts +0 -16
  455. package/dist/publication/delivery/request.d.ts.map +0 -1
  456. package/dist/publication/delivery/request.js.map +0 -1
  457. package/dist/publication/delivery-declaration.d.ts.map +0 -1
  458. package/dist/publication/delivery-declaration.js.map +0 -1
  459. package/dist/publication/delivery-endpoint.d.ts.map +0 -1
  460. package/dist/publication/delivery-endpoint.js +0 -23
  461. package/dist/publication/delivery-endpoint.js.map +0 -1
  462. package/dist/publication/error.d.ts +0 -8
  463. package/dist/publication/error.d.ts.map +0 -1
  464. package/dist/publication/error.js +0 -12
  465. package/dist/publication/error.js.map +0 -1
  466. package/dist/publication/etag.d.ts +0 -7
  467. package/dist/publication/etag.d.ts.map +0 -1
  468. package/dist/publication/etag.js.map +0 -1
  469. package/dist/publication/index.d.ts +0 -18
  470. package/dist/publication/index.d.ts.map +0 -1
  471. package/dist/publication/index.js +0 -11
  472. package/dist/publication/index.js.map +0 -1
  473. package/dist/publication/manifest.d.ts.map +0 -1
  474. package/dist/publication/manifest.js +0 -26
  475. package/dist/publication/manifest.js.map +0 -1
  476. package/dist/publication/publication.d.ts +0 -37
  477. package/dist/publication/publication.d.ts.map +0 -1
  478. package/dist/publication/publication.js +0 -131
  479. package/dist/publication/publication.js.map +0 -1
  480. package/dist/publication/reference.d.ts +0 -18
  481. package/dist/publication/reference.d.ts.map +0 -1
  482. package/dist/publication/reference.js.map +0 -1
  483. package/dist/publication/requirements.d.ts +0 -27
  484. package/dist/publication/requirements.d.ts.map +0 -1
  485. package/dist/publication/requirements.js +0 -185
  486. package/dist/publication/requirements.js.map +0 -1
  487. package/dist/publication/route.d.ts.map +0 -1
  488. package/dist/publication/route.js.map +0 -1
  489. package/dist/publication/schema.d.ts.map +0 -1
  490. package/dist/publication/schema.js.map +0 -1
  491. package/dist/routes/admission.d.ts.map +0 -1
  492. package/dist/routes/admission.js.map +0 -1
  493. package/dist/routes/binding.d.ts.map +0 -1
  494. package/dist/routes/binding.js.map +0 -1
  495. package/dist/routes/collision.d.ts.map +0 -1
  496. package/dist/routes/collision.js.map +0 -1
  497. package/dist/routes/compiler.d.ts.map +0 -1
  498. package/dist/routes/compiler.js.map +0 -1
  499. package/dist/routes/credential.d.ts.map +0 -1
  500. package/dist/routes/credential.js.map +0 -1
  501. package/dist/routes/decode.d.ts.map +0 -1
  502. package/dist/routes/decode.js.map +0 -1
  503. package/dist/routes/encode.d.ts.map +0 -1
  504. package/dist/routes/encode.js.map +0 -1
  505. package/dist/routes/error-response.d.ts.map +0 -1
  506. package/dist/routes/error-response.js.map +0 -1
  507. package/dist/routes/error.d.ts.map +0 -1
  508. package/dist/routes/error.js.map +0 -1
  509. package/dist/routes/evidence.d.ts.map +0 -1
  510. package/dist/routes/evidence.js.map +0 -1
  511. package/dist/routes/index.d.ts.map +0 -1
  512. package/dist/routes/index.js.map +0 -1
  513. package/dist/routes/mapping.d.ts.map +0 -1
  514. package/dist/routes/mapping.js.map +0 -1
  515. package/dist/routes/match.d.ts.map +0 -1
  516. package/dist/routes/match.js.map +0 -1
  517. package/dist/routes/placement.d.ts.map +0 -1
  518. package/dist/routes/placement.js.map +0 -1
  519. package/dist/routes/plan.d.ts.map +0 -1
  520. package/dist/routes/plan.js.map +0 -1
  521. package/dist/routes/release-unavailable.d.ts +0 -9
  522. package/dist/routes/release-unavailable.d.ts.map +0 -1
  523. package/dist/routes/release-unavailable.js +0 -33
  524. package/dist/routes/release-unavailable.js.map +0 -1
  525. package/dist/routes/request.d.ts.map +0 -1
  526. package/dist/routes/request.js.map +0 -1
  527. package/dist/routes/reservation.d.ts.map +0 -1
  528. package/dist/routes/reservation.js.map +0 -1
  529. package/dist/routes/routing.d.ts.map +0 -1
  530. package/dist/routes/routing.js.map +0 -1
  531. package/dist/routes/scalar.d.ts.map +0 -1
  532. package/dist/routes/scalar.js.map +0 -1
  533. package/dist/routes/select.d.ts.map +0 -1
  534. package/dist/routes/select.js.map +0 -1
  535. package/dist/routes/stream.d.ts.map +0 -1
  536. package/dist/routes/stream.js.map +0 -1
  537. package/dist/routes/table.d.ts.map +0 -1
  538. package/dist/routes/table.js.map +0 -1
  539. package/dist/routes/target.d.ts.map +0 -1
  540. package/dist/routes/target.js.map +0 -1
  541. package/dist/routes/template.d.ts.map +0 -1
  542. package/dist/routes/template.js.map +0 -1
  543. package/dist/runtime/artifact.d.ts.map +0 -1
  544. package/dist/runtime/artifact.js.map +0 -1
  545. package/dist/runtime/index.d.ts.map +0 -1
  546. package/dist/runtime/index.js.map +0 -1
  547. package/dist/schema/index.d.ts.map +0 -1
  548. package/dist/schema/index.js.map +0 -1
  549. package/dist/schema/installation/index.d.ts.map +0 -1
  550. package/dist/schema/installation/index.js.map +0 -1
  551. package/dist/schema/installation/introspection/codec.d.ts.map +0 -1
  552. package/dist/schema/installation/introspection/codec.js.map +0 -1
  553. package/dist/schema/installation/introspection/index.d.ts.map +0 -1
  554. package/dist/schema/installation/introspection/index.js.map +0 -1
  555. package/dist/schema/installation/introspection/result.d.ts.map +0 -1
  556. package/dist/schema/installation/introspection/result.js.map +0 -1
@@ -0,0 +1,59 @@
1
+ import { fail } from './error.js';
2
+ import { acceptIssuer } from './url.js';
3
+ /** Restate's `publickeyv1_` id: base58btc of a raw Ed25519 public key. */
4
+ const IDENTITY_KEY = /^publickeyv1_[1-9A-HJ-NP-Za-km-z]{32,64}$/u;
5
+ const BASE58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
6
+ const MAXIMUM_IDENTITY_KEYS = 8;
7
+ /** Admit one Restate request identity key without imposing a key-set policy. */
8
+ export function acceptWorkflowEngineIdentityKey(input) {
9
+ if (typeof input !== 'string' || !IDENTITY_KEY.test(input) || decodedKeyBytes(input) !== 32) {
10
+ fail('ISSUER_DISCOVERY_INVALID', 'Workflow engine identity keys are invalid.');
11
+ }
12
+ return input;
13
+ }
14
+ export function workflowEngine(issuer, identityKeys) {
15
+ return Object.freeze({
16
+ issuer: acceptIssuer(issuer),
17
+ identity_keys: acceptIdentityKeys(identityKeys),
18
+ });
19
+ }
20
+ /**
21
+ * Admit a discovered engine for the expected issuer. Unlike issuer configuration, unknown fields are
22
+ * ignored: the Kernel may add some without breaking deployed Domains.
23
+ */
24
+ export function acceptWorkflowEngine(input, expectedIssuer) {
25
+ if (input === null || typeof input !== 'object' || Array.isArray(input)) {
26
+ fail('ISSUER_DISCOVERY_INVALID', 'Workflow engine discovery is invalid.');
27
+ }
28
+ const value = input;
29
+ const admitted = acceptIssuer(value.issuer);
30
+ if (expectedIssuer !== undefined && admitted !== acceptIssuer(expectedIssuer)) {
31
+ fail('ISSUER_DISCOVERY_MISMATCH', 'Workflow engine discovery does not match the issuer.');
32
+ }
33
+ return Object.freeze({ issuer: admitted, identity_keys: acceptIdentityKeys(value.identity_keys) });
34
+ }
35
+ function acceptIdentityKeys(input) {
36
+ if (!Array.isArray(input) ||
37
+ input.length === 0 ||
38
+ input.length > MAXIMUM_IDENTITY_KEYS ||
39
+ new Set(input).size !== input.length) {
40
+ fail('ISSUER_DISCOVERY_INVALID', 'Workflow engine identity keys are invalid.');
41
+ }
42
+ return Object.freeze(Array.from(input, acceptWorkflowEngineIdentityKey));
43
+ }
44
+ /** Base58 leading '1' digits represent zero bytes omitted by the integer value. */
45
+ function decodedKeyBytes(key) {
46
+ const encoded = key.slice('publickeyv1_'.length);
47
+ let value = 0n;
48
+ for (const digit of encoded)
49
+ value = value * 58n + BigInt(BASE58.indexOf(digit));
50
+ let bytes = 0;
51
+ for (; value > 0n; value >>= 8n)
52
+ bytes++;
53
+ for (const digit of encoded) {
54
+ if (digit !== '1')
55
+ break;
56
+ bytes++;
57
+ }
58
+ return bytes;
59
+ }
@@ -6,4 +6,3 @@ export interface CallableBinding {
6
6
  }
7
7
  export declare function admitCallableBinding(input: unknown, origin: string): CallableBinding;
8
8
  export declare function admitCallableKey(input: unknown, origin: string): Key.Callable;
9
- //# sourceMappingURL=callable.d.ts.map
@@ -0,0 +1,34 @@
1
+ import { callableAddress, Key } from '@astrale-os/kernel-dsl/v1/addressing';
2
+ import { fail } from '../error.js';
3
+ import { exact, record } from '../shape.js';
4
+ import { acceptInvocationEndpoints } from './invocation.js';
5
+ export function admitCallableBinding(input, origin) {
6
+ const value = record(input, 'RELEASE_BINDING_INVALID', 'Callable binding is invalid.');
7
+ exact(value, ['callable', 'endpoint'], 'RELEASE_BINDING_INVALID');
8
+ return Object.freeze({
9
+ callable: admitCallableKey(value.callable, origin),
10
+ endpoint: acceptInvocationEndpoints(value.endpoint),
11
+ });
12
+ }
13
+ export function admitCallableKey(input, origin) {
14
+ let callable;
15
+ try {
16
+ callable = Key(String(input));
17
+ }
18
+ catch (cause) {
19
+ if (cause instanceof TypeError) {
20
+ return fail('RELEASE_BINDING_INVALID', 'Callable key is invalid.', cause);
21
+ }
22
+ throw cause;
23
+ }
24
+ if (Key.origin(callable) !== origin) {
25
+ fail('RELEASE_BINDING_INVALID', 'Binding must name one callable owned by the root Domain.');
26
+ }
27
+ try {
28
+ callableAddress(callable);
29
+ }
30
+ catch (cause) {
31
+ return fail('RELEASE_BINDING_INVALID', 'Binding must name one callable owned by the root Domain.', cause);
32
+ }
33
+ return callable;
34
+ }
@@ -1,4 +1,3 @@
1
1
  export { admitCallableBinding, admitCallableKey, type CallableBinding } from './callable.js';
2
2
  export { acceptInvocationEndpoints, type InvocationEndpoints } from './invocation.js';
3
- export { admitViewBinding, type ViewBinding } from './view.js';
4
- //# sourceMappingURL=index.d.ts.map
3
+ export { admitViewBinding, type IframeRequirements, type ViewBinding } from './view.js';
@@ -1,4 +1,3 @@
1
1
  export { admitCallableBinding, admitCallableKey } from './callable.js';
2
2
  export { acceptInvocationEndpoints } from './invocation.js';
3
3
  export { admitViewBinding } from './view.js';
4
- //# sourceMappingURL=index.js.map
@@ -3,4 +3,3 @@ export interface InvocationEndpoints {
3
3
  readonly websocket?: string;
4
4
  }
5
5
  export declare function acceptInvocationEndpoints(input: unknown): InvocationEndpoints;
6
- //# sourceMappingURL=invocation.d.ts.map
@@ -0,0 +1,13 @@
1
+ import { absoluteHttpUrl, absoluteUrl, exact, record } from '../shape.js';
2
+ export function acceptInvocationEndpoints(input) {
3
+ const value = record(input, 'RELEASE_BINDING_INVALID', 'Invocation endpoints are invalid.');
4
+ exact(value, ['http', 'websocket'], 'RELEASE_BINDING_INVALID');
5
+ const http = absoluteHttpUrl(value.http, true, 'RELEASE_BINDING_INVALID');
6
+ const websocket = value.websocket === undefined
7
+ ? undefined
8
+ : absoluteUrl(value.websocket, ['ws:', 'wss:'], true, 'RELEASE_BINDING_INVALID');
9
+ return Object.freeze({
10
+ http,
11
+ ...(websocket === undefined ? {} : { websocket }),
12
+ });
13
+ }
@@ -0,0 +1,16 @@
1
+ import { type ViewHostRequirements } from '@astrale-os/kernel-core/schema/kernel/syscalls/view-resolution';
2
+ import { Key } from '@astrale-os/kernel-dsl/v1/addressing';
3
+ export interface ViewBinding {
4
+ readonly view: Key.View;
5
+ readonly href: string;
6
+ readonly handshake: 'shell' | 'none';
7
+ readonly iframe?: IframeRequirements;
8
+ readonly host?: ViewHostRequirements;
9
+ }
10
+ export interface IframeRequirements {
11
+ readonly sandbox?: readonly string[];
12
+ readonly allow?: readonly string[];
13
+ }
14
+ export declare function admitViewBinding(input: unknown, origin: string): ViewBinding;
15
+ /** Authoring-only normalization used before a release document is sealed. */
16
+ export declare function canonicalizeViewBinding(input: unknown, origin: string): ViewBinding;
@@ -0,0 +1,148 @@
1
+ import { acceptViewHostRequirements, } from '@astrale-os/kernel-core/schema/kernel/syscalls/view-resolution';
2
+ import { Key } from '@astrale-os/kernel-dsl/v1/addressing';
3
+ import { fail } from '../error.js';
4
+ import { absoluteHttpUrl, exact, record } from '../shape.js';
5
+ const TOKEN = /^[a-z][a-z0-9-]*$/u;
6
+ export function admitViewBinding(input, origin) {
7
+ return readViewBinding(input, origin, false);
8
+ }
9
+ /** Authoring-only normalization used before a release document is sealed. */
10
+ export function canonicalizeViewBinding(input, origin) {
11
+ return readViewBinding(input, origin, true);
12
+ }
13
+ function readViewBinding(input, origin, canonicalize) {
14
+ const value = record(input, 'RELEASE_VIEW_INVALID', 'Release View binding is invalid.');
15
+ exact(value, ['view', 'href', 'handshake', 'iframe', 'host'], 'RELEASE_VIEW_INVALID');
16
+ let view;
17
+ try {
18
+ view = Key(String(value.view));
19
+ }
20
+ catch (cause) {
21
+ if (cause instanceof TypeError) {
22
+ return fail('RELEASE_VIEW_INVALID', 'View key is invalid.', cause);
23
+ }
24
+ throw cause;
25
+ }
26
+ if (Key.origin(view) !== origin || !view.slice(view.indexOf(':') + 1).startsWith('view.')) {
27
+ fail('RELEASE_VIEW_INVALID', 'View binding must name a root View.');
28
+ }
29
+ if (value.handshake !== 'shell' && value.handshake !== 'none') {
30
+ fail('RELEASE_VIEW_INVALID', 'View handshake is invalid.');
31
+ }
32
+ const iframe = admitIframeRequirements(dataValue(value, 'iframe'), value.handshake, canonicalize);
33
+ let host;
34
+ try {
35
+ host = acceptViewHostRequirements(dataValue(value, 'host'), value.handshake, canonicalize);
36
+ }
37
+ catch (cause) {
38
+ if (cause instanceof TypeError)
39
+ return fail('RELEASE_VIEW_INVALID', 'View host requirements are invalid.', cause);
40
+ throw cause;
41
+ }
42
+ return Object.freeze({
43
+ view,
44
+ href: absoluteHttpUrl(value.href, true, 'RELEASE_VIEW_INVALID'),
45
+ handshake: value.handshake,
46
+ ...(iframe === undefined ? {} : { iframe }),
47
+ ...(host === undefined ? {} : { host }),
48
+ });
49
+ }
50
+ function admitIframeRequirements(input, handshake, canonicalize) {
51
+ if (input === undefined)
52
+ return undefined;
53
+ const value = plainRecord(input);
54
+ exactOwnKeys(value, ['sandbox', 'allow']);
55
+ if (!canonicalize && (!Object.hasOwn(value, 'sandbox') || !Object.hasOwn(value, 'allow'))) {
56
+ invalid();
57
+ }
58
+ const sandbox = tokens(dataValue(value, 'sandbox'), canonicalize);
59
+ const allow = tokens(dataValue(value, 'allow'), canonicalize);
60
+ assertRelationships(sandbox);
61
+ const baselineSandbox = handshake === 'shell' ? ['allow-same-origin', 'allow-scripts'] : ['allow-scripts'];
62
+ const baselineAllow = handshake === 'shell' ? ['clipboard-write'] : [];
63
+ if (!canonicalize &&
64
+ (sandbox.some((token) => baselineSandbox.includes(token)) ||
65
+ allow.some((feature) => baselineAllow.includes(feature)))) {
66
+ invalid();
67
+ }
68
+ const canonicalSandbox = canonicalize
69
+ ? sandbox.filter((token) => !baselineSandbox.includes(token))
70
+ : sandbox;
71
+ const canonicalAllow = canonicalize
72
+ ? allow.filter((feature) => !baselineAllow.includes(feature))
73
+ : allow;
74
+ if (!canonicalize && canonicalSandbox.length === 0 && canonicalAllow.length === 0)
75
+ invalid();
76
+ if (canonicalSandbox.length === 0 && canonicalAllow.length === 0)
77
+ return undefined;
78
+ return Object.freeze({
79
+ sandbox: Object.freeze(canonicalSandbox),
80
+ allow: Object.freeze(canonicalAllow),
81
+ });
82
+ }
83
+ function plainRecord(input) {
84
+ if (input === null || typeof input !== 'object' || Array.isArray(input))
85
+ invalid();
86
+ const prototype = Object.getPrototypeOf(input);
87
+ if (prototype !== Object.prototype && prototype !== null)
88
+ invalid();
89
+ return input;
90
+ }
91
+ function exactOwnKeys(input, allowed) {
92
+ const keys = new Set(allowed);
93
+ if (Reflect.ownKeys(input).some((key) => typeof key !== 'string' || !keys.has(key)))
94
+ invalid();
95
+ }
96
+ function dataValue(input, key) {
97
+ const descriptor = Object.getOwnPropertyDescriptor(input, key);
98
+ if (descriptor === undefined)
99
+ return undefined;
100
+ if (!('value' in descriptor))
101
+ invalid();
102
+ return descriptor.value;
103
+ }
104
+ function tokens(input, canonicalize) {
105
+ if (input === undefined)
106
+ return [];
107
+ if (!Array.isArray(input))
108
+ invalid();
109
+ const descriptors = Object.getOwnPropertyDescriptors(input);
110
+ const values = [];
111
+ for (let index = 0; index < input.length; index += 1) {
112
+ const descriptor = descriptors[String(index)];
113
+ if (descriptor === undefined || !('value' in descriptor))
114
+ invalid();
115
+ if (typeof descriptor.value !== 'string' || !TOKEN.test(descriptor.value))
116
+ invalid();
117
+ values.push(descriptor.value);
118
+ }
119
+ for (const key of Reflect.ownKeys(descriptors)) {
120
+ if (key === 'length')
121
+ continue;
122
+ if (typeof key !== 'string' || !/^(0|[1-9][0-9]*)$/u.test(key) || Number(key) >= input.length) {
123
+ invalid();
124
+ }
125
+ }
126
+ if (canonicalize)
127
+ return [...new Set(values)].sort();
128
+ for (let index = 1; index < values.length; index += 1) {
129
+ if (values[index - 1] >= values[index])
130
+ invalid();
131
+ }
132
+ return values;
133
+ }
134
+ function assertRelationships(sandbox) {
135
+ const tokens = new Set(sandbox);
136
+ if (tokens.has('allow-popups-to-escape-sandbox') && !tokens.has('allow-popups'))
137
+ invalid();
138
+ if (tokens.has('allow-top-navigation') && tokens.has('allow-top-navigation-by-user-activation')) {
139
+ invalid();
140
+ }
141
+ if (tokens.has('allow-top-navigation-to-custom-protocols') &&
142
+ (tokens.has('allow-top-navigation') || tokens.has('allow-popups'))) {
143
+ invalid();
144
+ }
145
+ }
146
+ function invalid() {
147
+ return fail('RELEASE_VIEW_INVALID', 'View iframe requirements are invalid.');
148
+ }
@@ -0,0 +1,6 @@
1
+ import type { BuildDigest } from './digest.js';
2
+ /** Identity of the code a release runs: the digest of the bytes its build produced. */
3
+ export interface Build {
4
+ readonly digest: BuildDigest;
5
+ }
6
+ export declare function admitBuild(input: unknown): Build;
@@ -0,0 +1,7 @@
1
+ import { admitDigest } from './digest.js';
2
+ import { exact, record } from './shape.js';
3
+ export function admitBuild(input) {
4
+ const value = record(input, 'RELEASE_INVALID', 'Release build is invalid.');
5
+ exact(value, ['digest'], 'RELEASE_INVALID');
6
+ return Object.freeze({ digest: admitDigest(value.digest) });
7
+ }
@@ -0,0 +1,21 @@
1
+ import { Key } from '@astrale-os/kernel-dsl/v1/addressing';
2
+ import * as dslBundle from '@astrale-os/kernel-dsl/v1/bundle';
3
+ import type { CallableBinding, ViewBinding } from './bindings/index.js';
4
+ import type { Manifest } from './manifest.js';
5
+ import type { Requirements } from './requirements.js';
6
+ import type { HttpRoute } from './route.js';
7
+ import type { Schema } from './schema.js';
8
+ /** The served release content one external Schema Bundle must exactly match. */
9
+ export interface ServedRelease {
10
+ readonly origin: Key.Origin;
11
+ readonly schema: Schema;
12
+ readonly requirements: Requirements;
13
+ readonly manifest?: Manifest;
14
+ readonly bindings: {
15
+ readonly callables: readonly CallableBinding[];
16
+ readonly views: readonly ViewBinding[];
17
+ };
18
+ readonly routes: readonly HttpRoute[];
19
+ }
20
+ export declare function acceptBundle(input: ServedRelease, artifact: unknown): dslBundle.Bundle;
21
+ export declare function decodeBundle(input: ServedRelease, bytes: Uint8Array): dslBundle.Bundle;
@@ -0,0 +1,66 @@
1
+ import { Key, MethodKey } from '@astrale-os/kernel-dsl/v1/addressing';
2
+ import * as dslBundle from '@astrale-os/kernel-dsl/v1/bundle';
3
+ import { isMethodExecutable } from '@astrale-os/kernel-dsl/v1/language';
4
+ import { revision } from '@astrale-os/kernel-dsl/v1/schema/revision';
5
+ import { acceptBundleValue, decodeBundleValue, verifyBundleBytes } from './bundle.js';
6
+ import { fail } from './error.js';
7
+ import { validateRequirements } from './requirements.js';
8
+ export function acceptBundle(input, artifact) {
9
+ const accepted = acceptBundleValue(artifact);
10
+ verifyBundleBytes(input, dslBundle.encode(accepted));
11
+ validateInventory(input, accepted);
12
+ return accepted;
13
+ }
14
+ export function decodeBundle(input, bytes) {
15
+ const decoded = decodeBundleValue(input, bytes);
16
+ validateInventory(input, decoded);
17
+ return decoded;
18
+ }
19
+ function validateInventory(release, bundle) {
20
+ const root = bundle.root;
21
+ if (root.origin !== release.origin || revision(root) !== release.schema.revision) {
22
+ fail('RELEASE_INVALID', 'Bundle root does not match the release schema.');
23
+ }
24
+ validateRequirements(root, bundle.closure, release.requirements);
25
+ const callables = concreteCallables(root);
26
+ const boundCallables = new Set(release.bindings.callables.map(({ callable }) => callable));
27
+ if (boundCallables.size !== callables.size ||
28
+ [...callables].some((key) => !boundCallables.has(key))) {
29
+ fail('RELEASE_BINDING_INVALID', 'Callable bindings must exhaust the root Domain.');
30
+ }
31
+ const views = new Set(Object.keys(root.views).map((name) => Key.of({ origin: root.origin, kind: 'view', name })));
32
+ const boundViews = new Set(release.bindings.views.map(({ view }) => view));
33
+ if (boundViews.size !== views.size || [...views].some((key) => !boundViews.has(key))) {
34
+ fail('RELEASE_VIEW_INVALID', 'View bindings must exhaust the root Domain.');
35
+ }
36
+ if (release.manifest?.entrypoint !== undefined &&
37
+ (release.manifest.entrypoint.origin !== root.origin ||
38
+ release.manifest.entrypoint.kind !== 'view' ||
39
+ root.views[release.manifest.entrypoint.name] === undefined)) {
40
+ fail('RELEASE_INVALID', 'Manifest entrypoint does not exist in the root schema.');
41
+ }
42
+ for (const route of release.routes) {
43
+ if (!callables.has(route.callable)) {
44
+ fail('RELEASE_ROUTE_INVALID', `Route ${route.name} names an unknown callable.`);
45
+ }
46
+ }
47
+ }
48
+ function concreteCallables(root) {
49
+ const result = new Set();
50
+ for (const name of Object.keys(root.functions)) {
51
+ result.add(Key.of({ origin: root.origin, kind: 'function', name }));
52
+ }
53
+ addClassMethods(result, root.origin, root.classes);
54
+ return result;
55
+ }
56
+ function addClassMethods(result, origin, definitions) {
57
+ for (const [owner, declaration] of Object.entries(definitions)) {
58
+ if (declaration.kind !== 'node')
59
+ continue;
60
+ for (const [name, method] of Object.entries(declaration.methods)) {
61
+ if (!isMethodExecutable(declaration, method))
62
+ continue;
63
+ result.add(MethodKey.of({ origin, kind: 'class', name: owner }, name));
64
+ }
65
+ }
66
+ }
@@ -7,4 +7,3 @@ export interface BundleDescriptor {
7
7
  };
8
8
  }
9
9
  export declare function admitBundleDescriptor(input: unknown): BundleDescriptor;
10
- //# sourceMappingURL=bundle-descriptor.d.ts.map
@@ -0,0 +1,19 @@
1
+ import * as artifact from '../artifact/index.js';
2
+ import { fail } from './error.js';
3
+ import { absoluteHttpUrl, exact, record } from './shape.js';
4
+ export const BUNDLE_MEDIA_TYPE = 'application/vnd.astrale.domain-bundle+json;v=1';
5
+ export function admitBundleDescriptor(input) {
6
+ const value = record(input, 'RELEASE_INVALID', 'Bundle descriptor is invalid.');
7
+ exact(value, ['href', 'ref'], 'RELEASE_INVALID');
8
+ const ref = artifact.accept(value.ref);
9
+ if (ref.mediaType !== BUNDLE_MEDIA_TYPE) {
10
+ fail('RELEASE_INVALID', 'Bundle media type is unsupported.');
11
+ }
12
+ if (ref.size < 1) {
13
+ fail('RELEASE_INVALID', 'Bundle size is invalid.');
14
+ }
15
+ return Object.freeze({
16
+ href: absoluteHttpUrl(value.href, true, 'RELEASE_INVALID'),
17
+ ref: Object.freeze({ ...ref, mediaType: BUNDLE_MEDIA_TYPE }),
18
+ });
19
+ }
@@ -0,0 +1,3 @@
1
+ import type { ServedRelease } from './bundle-admission.js';
2
+ /** Verify exact artifact bytes without decoding an authored Schema Bundle. */
3
+ export declare function verifyBundleBytes(release: Pick<ServedRelease, 'schema'>, bytes: Uint8Array): void;
@@ -0,0 +1,13 @@
1
+ import { sha256Hex } from './digest.js';
2
+ import { fail } from './error.js';
3
+ /** Verify exact artifact bytes without decoding an authored Schema Bundle. */
4
+ export function verifyBundleBytes(release, bytes) {
5
+ if (!(bytes instanceof Uint8Array)) {
6
+ fail('RELEASE_INVALID', 'Bundle artifact bytes are invalid.');
7
+ }
8
+ const descriptor = release.schema.bundle;
9
+ if (bytes.byteLength !== descriptor.ref.size ||
10
+ `sha256:${sha256Hex(bytes)}` !== descriptor.ref.digest) {
11
+ fail('RELEASE_INVALID', 'Bundle artifact does not match its descriptor.');
12
+ }
13
+ }
@@ -0,0 +1,12 @@
1
+ import * as bundle from '@astrale-os/kernel-dsl/v1/bundle/transport';
2
+ import type { ServedRelease } from './bundle-admission.js';
3
+ import type { BundleDescriptor } from './bundle-descriptor.js';
4
+ import * as artifact from '../artifact/index.js';
5
+ import { verifyBundleBytes } from './bundle-evidence.js';
6
+ /** Resolve immutable bundle bytes beneath the exact serving issuer. */
7
+ export declare function bundleUrl(issuer: string, ref: artifact.Ref): string;
8
+ export declare function describeBundle(input: bundle.Bundle, href: string): BundleDescriptor;
9
+ export declare function acceptBundleValue(input: unknown): bundle.Bundle;
10
+ export declare function decodeBundleValue(release: Pick<ServedRelease, 'schema'>, bytes: Uint8Array): bundle.Bundle;
11
+ export { verifyBundleBytes };
12
+ export { admitBundleDescriptor, BUNDLE_MEDIA_TYPE, type BundleDescriptor, } from './bundle-descriptor.js';
@@ -1,13 +1,19 @@
1
- import { bundle, schema } from '@astrale-os/kernel-dsl/v1';
1
+ import * as bundle from '@astrale-os/kernel-dsl/v1/bundle/transport';
2
2
  import * as artifact from '../artifact/index.js';
3
3
  import { BUNDLE_MEDIA_TYPE } from './bundle-descriptor.js';
4
4
  import { verifyBundleBytes } from './bundle-evidence.js';
5
- import { absoluteHttpUrl } from './content.js';
6
5
  import { fail } from './error.js';
6
+ import { servedUrl } from './issuer.js';
7
+ import { absoluteHttpUrl } from './shape.js';
8
+ /** Resolve immutable bundle bytes beneath the exact serving issuer. */
9
+ export function bundleUrl(issuer, ref) {
10
+ const digest = ref.digest.slice('sha256:'.length);
11
+ return servedUrl(issuer, `/.well-known/astrale/bundles/sha256/${digest}.json`);
12
+ }
7
13
  export function describeBundle(input, href) {
8
14
  const bytes = bundle.encode(input);
9
15
  return Object.freeze({
10
- href: absoluteHttpUrl(href, true, 'PUBLICATION_INVALID'),
16
+ href: absoluteHttpUrl(href, true, 'RELEASE_INVALID'),
11
17
  ref: Object.freeze({
12
18
  ...artifact.identify(bytes, BUNDLE_MEDIA_TYPE),
13
19
  mediaType: BUNDLE_MEDIA_TYPE,
@@ -19,27 +25,26 @@ export function acceptBundleValue(input) {
19
25
  return bundle.accept(input);
20
26
  }
21
27
  catch (cause) {
22
- if (cause instanceof schema.Error) {
23
- return fail('PUBLICATION_INVALID', 'Publication bundle is invalid.', cause);
28
+ if (cause instanceof bundle.Error) {
29
+ return fail('RELEASE_INVALID', 'Release bundle is invalid.', cause);
24
30
  }
25
31
  throw cause;
26
32
  }
27
33
  }
28
- export function decodeBundleValue(publication, bytes) {
34
+ export function decodeBundleValue(release, bytes) {
29
35
  if (!(bytes instanceof Uint8Array)) {
30
- fail('PUBLICATION_INVALID', 'Bundle artifact bytes are invalid.');
36
+ fail('RELEASE_INVALID', 'Bundle artifact bytes are invalid.');
31
37
  }
32
- verifyBundleBytes(publication, bytes);
38
+ verifyBundleBytes(release, bytes);
33
39
  try {
34
40
  return bundle.decode(bytes);
35
41
  }
36
42
  catch (cause) {
37
- if (cause instanceof schema.Error) {
38
- return fail('PUBLICATION_INVALID', 'Bundle artifact cannot be decoded.', cause);
43
+ if (cause instanceof bundle.Error) {
44
+ return fail('RELEASE_INVALID', 'Bundle artifact cannot be decoded.', cause);
39
45
  }
40
46
  throw cause;
41
47
  }
42
48
  }
43
49
  export { verifyBundleBytes };
44
50
  export { admitBundleDescriptor, BUNDLE_MEDIA_TYPE, } from './bundle-descriptor.js';
45
- //# sourceMappingURL=bundle.js.map
@@ -9,4 +9,3 @@ export interface Declaration {
9
9
  readonly routes: readonly HttpRouteDeclaration[];
10
10
  readonly delivery?: DeliveryDeclaration;
11
11
  }
12
- //# sourceMappingURL=declaration.d.ts.map
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,7 @@
1
1
  declare const ATTESTATION: unique symbol;
2
+ /** Opaque, bounded attestation text a Delivery carries; Core Auth verifies it. */
2
3
  export type Attestation = string & {
3
4
  readonly [ATTESTATION]: true;
4
5
  };
5
6
  export declare function acceptAttestation(input: unknown): Attestation;
6
7
  export {};
7
- //# sourceMappingURL=attestation.d.ts.map
@@ -8,4 +8,3 @@ export function acceptAttestation(input) {
8
8
  }
9
9
  return input;
10
10
  }
11
- //# sourceMappingURL=attestation.js.map
@@ -0,0 +1,21 @@
1
+ import type { Subject } from '@astrale-os/kernel-core/auth/identity';
2
+ import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
3
+ import { type IssuerId } from '@astrale-os/kernel-core/auth/issuer';
4
+ import type { ReleaseDigest } from '../digest.js';
5
+ import { PURPOSE } from './limits.js';
6
+ /**
7
+ * What a verified Delivery v2 attestation asserts: the serving Domain identity delivers the release
8
+ * with this digest and schema revision to the requesting Kernel, for its challenge nonce.
9
+ */
10
+ export interface Claims {
11
+ readonly purpose: typeof PURPOSE;
12
+ readonly iss: IssuerId;
13
+ readonly sub: Subject;
14
+ readonly aud: IssuerId;
15
+ readonly nonce: string;
16
+ readonly release: ReleaseDigest;
17
+ readonly schemaRevision: Revision;
18
+ readonly exp: number;
19
+ }
20
+ /** Admit the claims of an attestation Core Auth already verified. */
21
+ export declare function acceptClaims(input: unknown): Claims;
@@ -0,0 +1,68 @@
1
+ import { AuthValueError } from '@astrale-os/kernel-core/auth/error';
2
+ import { accept as acceptIssuerId } from '@astrale-os/kernel-core/auth/issuer';
3
+ import { patterns } from '@astrale-os/kernel-dsl/v1/addressing';
4
+ import { deepFreeze } from '../shape.js';
5
+ import { fail } from './error.js';
6
+ import { NONCE_MAX_LENGTH, NONCE_MIN_LENGTH, PURPOSE } from './limits.js';
7
+ const FIELDS = [
8
+ 'purpose',
9
+ 'iss',
10
+ 'sub',
11
+ 'aud',
12
+ 'nonce',
13
+ 'release',
14
+ 'schemaRevision',
15
+ 'exp',
16
+ ];
17
+ /** Admit the claims of an attestation Core Auth already verified. */
18
+ export function acceptClaims(input) {
19
+ if (input === null || typeof input !== 'object' || Array.isArray(input)) {
20
+ fail('DELIVERY_CLAIMS_INVALID', 'Expected delivery claims.');
21
+ }
22
+ const value = input;
23
+ if (Object.keys(value).some((field) => !FIELDS.includes(field))) {
24
+ fail('DELIVERY_CLAIMS_INVALID', 'Delivery claims contain unknown fields.');
25
+ }
26
+ if (value.purpose !== PURPOSE ||
27
+ typeof value.sub !== 'string' ||
28
+ value.sub.length === 0 ||
29
+ typeof value.nonce !== 'string' ||
30
+ value.nonce.length < NONCE_MIN_LENGTH ||
31
+ value.nonce.length > NONCE_MAX_LENGTH ||
32
+ typeof value.exp !== 'number' ||
33
+ !Number.isSafeInteger(value.exp)) {
34
+ fail('DELIVERY_CLAIMS_INVALID', 'Delivery claims are invalid.');
35
+ }
36
+ const iss = acceptIssuer(value.iss);
37
+ const aud = acceptIssuer(value.aud);
38
+ if (typeof value.release !== 'string' || !/^sha256:[0-9a-f]{64}$/u.test(value.release)) {
39
+ fail('DELIVERY_CLAIMS_INVALID', 'Delivery claims release digest is invalid.');
40
+ }
41
+ if (typeof value.schemaRevision !== 'string' || !patterns.revision.test(value.schemaRevision)) {
42
+ fail('DELIVERY_CLAIMS_INVALID', 'Schema revision is invalid.');
43
+ }
44
+ return deepFreeze({
45
+ purpose: PURPOSE,
46
+ iss,
47
+ sub: value.sub,
48
+ aud,
49
+ nonce: value.nonce,
50
+ release: value.release,
51
+ schemaRevision: value.schemaRevision,
52
+ exp: value.exp,
53
+ });
54
+ }
55
+ function acceptIssuer(input) {
56
+ if (typeof input !== 'string') {
57
+ fail('DELIVERY_CLAIMS_INVALID', 'Delivery claims issuer is invalid.');
58
+ }
59
+ try {
60
+ return acceptIssuerId(input);
61
+ }
62
+ catch (cause) {
63
+ if (cause instanceof AuthValueError) {
64
+ return fail('DELIVERY_CLAIMS_INVALID', 'Delivery claims issuer is invalid.', cause);
65
+ }
66
+ throw cause;
67
+ }
68
+ }
@@ -0,0 +1,11 @@
1
+ import type { DomainRelease } from '../release.js';
2
+ import type { Attestation } from './attestation.js';
3
+ /** The challenge-bound envelope carrying the exact `DomainRelease` a Kernel asked for. */
4
+ export interface Delivery {
5
+ readonly format: 'astrale.domain.delivery';
6
+ readonly version: 2;
7
+ readonly release: DomainRelease;
8
+ readonly attestation: Attestation;
9
+ }
10
+ /** Admit one Delivery v2 envelope: its release is admitted whole, its attestation stays opaque. */
11
+ export declare function accept(input: unknown): Delivery;