@astrale-os/kernel-protocol 0.5.0-beta.8 → 1.0.0-beta.1

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 (494) 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 +0 -1
  21. package/dist/errors/protocol-error.d.ts +0 -1
  22. package/dist/errors/protocol-error.js +0 -1
  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 +1 -2
  28. package/dist/index.js +1 -2
  29. package/dist/invocation/admission.d.ts +2 -3
  30. package/dist/invocation/admission.js +5 -6
  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 +3 -3
  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 +0 -21
  40. package/dist/invocation/delegate.js +2 -35
  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 +11 -0
  48. package/dist/invocation/http/request.js +69 -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 +3 -4
  58. package/dist/invocation/index.js +3 -4
  59. package/dist/invocation/miss.d.ts +0 -1
  60. package/dist/invocation/miss.js +0 -1
  61. package/dist/invocation/redirect.d.ts +10 -13
  62. package/dist/invocation/redirect.js +10 -23
  63. package/dist/invocation/request.d.ts +0 -1
  64. package/dist/invocation/request.js +2 -3
  65. package/dist/invocation/response.d.ts +0 -1
  66. package/dist/invocation/response.js +0 -1
  67. package/dist/invocation/routing.d.ts +14 -5
  68. package/dist/invocation/routing.js +35 -21
  69. package/dist/invocation/schema.d.ts +6 -5
  70. package/dist/invocation/schema.js +5 -12
  71. package/dist/invocation/service-reason.d.ts +20 -16
  72. package/dist/invocation/service-reason.js +27 -20
  73. package/dist/invocation/stale-route.d.ts +3 -4
  74. package/dist/invocation/stale-route.js +0 -1
  75. package/dist/invocation/stream.d.ts +0 -1
  76. package/dist/invocation/stream.js +0 -1
  77. package/dist/invocation/target.d.ts +5 -3
  78. package/dist/invocation/target.js +25 -4
  79. package/dist/invocation/trace.d.ts +0 -1
  80. package/dist/invocation/trace.js +0 -1
  81. package/dist/invocation/version.d.ts +0 -1
  82. package/dist/invocation/version.js +0 -1
  83. package/dist/invocation/websocket/binary.d.ts +0 -1
  84. package/dist/invocation/websocket/binary.js +1 -1
  85. package/dist/invocation/websocket/index.d.ts +1 -2
  86. package/dist/invocation/websocket/index.js +1 -2
  87. package/dist/invocation/websocket/subprotocol.d.ts +1 -3
  88. package/dist/invocation/websocket/subprotocol.js +3 -5
  89. package/dist/issuer/claims.d.ts +7 -0
  90. package/dist/issuer/claims.js +7 -0
  91. package/dist/issuer/configuration.d.ts +0 -1
  92. package/dist/issuer/configuration.js +0 -1
  93. package/dist/issuer/error.d.ts +0 -1
  94. package/dist/issuer/error.js +0 -1
  95. package/dist/issuer/exchange.d.ts +0 -1
  96. package/dist/issuer/exchange.js +0 -1
  97. package/dist/issuer/hosted.d.ts +0 -1
  98. package/dist/issuer/hosted.js +0 -1
  99. package/dist/issuer/index.d.ts +2 -1
  100. package/dist/issuer/index.js +2 -1
  101. package/dist/issuer/key-set.d.ts +0 -1
  102. package/dist/issuer/key-set.js +0 -1
  103. package/dist/issuer/paths.d.ts +2 -1
  104. package/dist/issuer/paths.js +1 -1
  105. package/dist/issuer/url.d.ts +0 -1
  106. package/dist/issuer/url.js +0 -1
  107. package/dist/issuer/workflow-engine.d.ts +18 -0
  108. package/dist/issuer/workflow-engine.js +59 -0
  109. package/dist/{publication → release}/bindings/callable.d.ts +0 -1
  110. package/dist/{publication → release}/bindings/callable.js +6 -7
  111. package/dist/{publication → release}/bindings/index.d.ts +0 -1
  112. package/dist/{publication → release}/bindings/index.js +0 -1
  113. package/dist/{publication → release}/bindings/invocation.d.ts +0 -1
  114. package/dist/release/bindings/invocation.js +13 -0
  115. package/dist/release/bindings/view.d.ts +11 -0
  116. package/dist/release/bindings/view.js +54 -0
  117. package/dist/release/build.d.ts +6 -0
  118. package/dist/release/build.js +7 -0
  119. package/dist/release/bundle-admission.d.ts +21 -0
  120. package/dist/{publication → release}/bundle-admission.js +15 -21
  121. package/dist/{publication → release}/bundle-descriptor.d.ts +0 -1
  122. package/dist/release/bundle-descriptor.js +19 -0
  123. package/dist/release/bundle-evidence.d.ts +3 -0
  124. package/dist/release/bundle-evidence.js +13 -0
  125. package/dist/{publication → release}/bundle.d.ts +5 -3
  126. package/dist/{publication → release}/bundle.js +13 -8
  127. package/dist/{publication → release}/declaration.d.ts +0 -1
  128. package/dist/release/declaration.js +1 -0
  129. package/dist/{publication → release}/delivery/attestation.d.ts +1 -1
  130. package/dist/{publication → release}/delivery/attestation.js +0 -1
  131. package/dist/{publication → release}/delivery/claims.d.ts +7 -3
  132. package/dist/{publication → release}/delivery/claims.js +20 -14
  133. package/dist/release/delivery/delivery.d.ts +11 -0
  134. package/dist/{publication → release}/delivery/delivery.js +7 -13
  135. package/dist/{publication → release}/delivery/error.d.ts +2 -1
  136. package/dist/{publication → release}/delivery/error.js +1 -1
  137. package/dist/{publication → release}/delivery/index.d.ts +5 -2
  138. package/dist/{publication → release}/delivery/index.js +4 -1
  139. package/dist/{publication → release}/delivery/limits.d.ts +2 -2
  140. package/dist/release/delivery/limits.js +5 -0
  141. package/dist/{publication → release}/delivery/request.d.ts +10 -10
  142. package/dist/{publication → release}/delivery/request.js +9 -11
  143. package/dist/{publication → release}/delivery-declaration.d.ts +0 -1
  144. package/dist/{publication → release}/delivery-declaration.js +4 -5
  145. package/dist/{publication → release}/delivery-endpoint.d.ts +0 -1
  146. package/dist/release/delivery-endpoint.js +22 -0
  147. package/dist/release/digest.d.ts +13 -0
  148. package/dist/{publication/etag.js → release/digest.js} +1 -7
  149. package/dist/release/error.d.ts +7 -0
  150. package/dist/release/error.js +11 -0
  151. package/dist/release/index.d.ts +17 -0
  152. package/dist/release/index.js +10 -0
  153. package/dist/release/issuer.d.ts +5 -0
  154. package/dist/release/issuer.js +34 -0
  155. package/dist/release/manifest.d.ts +6 -0
  156. package/dist/release/manifest.js +22 -0
  157. package/dist/release/reference.d.ts +26 -0
  158. package/dist/release/reference.js +70 -0
  159. package/dist/release/release.d.ts +60 -0
  160. package/dist/release/release.js +125 -0
  161. package/dist/release/requirements.d.ts +41 -0
  162. package/dist/release/requirements.js +306 -0
  163. package/dist/{publication → release}/route.d.ts +0 -1
  164. package/dist/{publication → release}/route.js +24 -25
  165. package/dist/{publication → release}/schema.d.ts +0 -1
  166. package/dist/{publication → release}/schema.js +4 -5
  167. package/dist/release/served.d.ts +27 -0
  168. package/dist/release/served.js +56 -0
  169. package/dist/release/shape.d.ts +8 -0
  170. package/dist/{publication/content.js → release/shape.js} +0 -1
  171. package/dist/routes/admission.d.ts +1 -2
  172. package/dist/routes/admission.js +7 -86
  173. package/dist/routes/binding.d.ts +3 -4
  174. package/dist/routes/binding.js +11 -22
  175. package/dist/routes/collision.d.ts +0 -1
  176. package/dist/routes/collision.js +0 -1
  177. package/dist/routes/compiler.d.ts +2 -3
  178. package/dist/routes/compiler.js +7 -4
  179. package/dist/routes/credential.d.ts +12 -3
  180. package/dist/routes/credential.js +9 -5
  181. package/dist/routes/decode.d.ts +5 -3
  182. package/dist/routes/decode.js +24 -18
  183. package/dist/routes/deployment-retired.d.ts +30 -0
  184. package/dist/routes/deployment-retired.js +96 -0
  185. package/dist/routes/encode.d.ts +0 -1
  186. package/dist/routes/encode.js +12 -6
  187. package/dist/routes/entries.d.ts +23 -0
  188. package/dist/routes/entries.js +150 -0
  189. package/dist/routes/error-response.d.ts +0 -1
  190. package/dist/routes/error-response.js +0 -1
  191. package/dist/routes/error.d.ts +0 -1
  192. package/dist/routes/error.js +0 -1
  193. package/dist/routes/evidence.d.ts +3 -4
  194. package/dist/routes/evidence.js +7 -34
  195. package/dist/routes/header.d.ts +9 -0
  196. package/dist/routes/header.js +34 -0
  197. package/dist/routes/index.d.ts +2 -3
  198. package/dist/routes/index.js +2 -3
  199. package/dist/routes/mapping.d.ts +1 -2
  200. package/dist/routes/mapping.js +4 -5
  201. package/dist/routes/match.d.ts +1 -2
  202. package/dist/routes/match.js +0 -1
  203. package/dist/routes/placement.d.ts +2 -3
  204. package/dist/routes/placement.js +0 -1
  205. package/dist/routes/plan.d.ts +1 -2
  206. package/dist/routes/plan.js +0 -1
  207. package/dist/routes/request.d.ts +3 -2
  208. package/dist/routes/request.js +0 -1
  209. package/dist/routes/reservation.d.ts +4 -3
  210. package/dist/routes/reservation.js +14 -9
  211. package/dist/routes/routing.d.ts +18 -7
  212. package/dist/routes/routing.js +28 -50
  213. package/dist/routes/scalar.d.ts +0 -1
  214. package/dist/routes/scalar.js +0 -1
  215. package/dist/routes/select.d.ts +1 -2
  216. package/dist/routes/select.js +0 -1
  217. package/dist/routes/stream.d.ts +0 -1
  218. package/dist/routes/stream.js +0 -1
  219. package/dist/routes/table.d.ts +3 -3
  220. package/dist/routes/table.js +0 -1
  221. package/dist/routes/target.d.ts +5 -1
  222. package/dist/routes/target.js +16 -1
  223. package/dist/routes/template.d.ts +0 -2
  224. package/dist/routes/template.js +0 -4
  225. package/dist/runtime/artifact.d.ts +5 -5
  226. package/dist/runtime/artifact.js +7 -5
  227. package/dist/runtime/index.d.ts +1 -2
  228. package/dist/runtime/index.js +1 -2
  229. package/dist/schema/index.d.ts +0 -1
  230. package/dist/schema/index.js +0 -1
  231. package/dist/schema/installation/codec.d.ts +4 -0
  232. package/dist/schema/installation/codec.js +70 -0
  233. package/dist/schema/installation/index.d.ts +2 -1
  234. package/dist/schema/installation/index.js +1 -1
  235. package/dist/schema/installation/introspection/codec.d.ts +5 -3
  236. package/dist/schema/installation/introspection/codec.js +307 -196
  237. package/dist/schema/installation/introspection/index.d.ts +2 -3
  238. package/dist/schema/installation/introspection/index.js +1 -2
  239. package/dist/schema/installation/introspection/result.d.ts +72 -26
  240. package/dist/schema/installation/introspection/result.js +0 -1
  241. package/dist/schema/installation/result.d.ts +9 -0
  242. package/dist/schema/installation/result.js +1 -0
  243. package/package.json +23 -78
  244. package/dist/artifact/index.d.ts.map +0 -1
  245. package/dist/artifact/index.js.map +0 -1
  246. package/dist/artifact/ref.d.ts.map +0 -1
  247. package/dist/artifact/ref.js.map +0 -1
  248. package/dist/codecs/codec.d.ts.map +0 -1
  249. package/dist/codecs/codec.js.map +0 -1
  250. package/dist/codecs/index.d.ts.map +0 -1
  251. package/dist/codecs/index.js.map +0 -1
  252. package/dist/codecs/json.d.ts.map +0 -1
  253. package/dist/codecs/json.js.map +0 -1
  254. package/dist/codecs/media-types.d.ts.map +0 -1
  255. package/dist/codecs/media-types.js.map +0 -1
  256. package/dist/codecs/msgpack.d.ts +0 -5
  257. package/dist/codecs/msgpack.d.ts.map +0 -1
  258. package/dist/codecs/msgpack.js +0 -51
  259. package/dist/codecs/msgpack.js.map +0 -1
  260. package/dist/errors/codes.d.ts.map +0 -1
  261. package/dist/errors/codes.js.map +0 -1
  262. package/dist/errors/http-status.d.ts.map +0 -1
  263. package/dist/errors/http-status.js.map +0 -1
  264. package/dist/errors/index.d.ts.map +0 -1
  265. package/dist/errors/index.js.map +0 -1
  266. package/dist/errors/payload.d.ts.map +0 -1
  267. package/dist/errors/payload.js.map +0 -1
  268. package/dist/errors/protocol-error.d.ts.map +0 -1
  269. package/dist/errors/protocol-error.js.map +0 -1
  270. package/dist/errors/reason.d.ts.map +0 -1
  271. package/dist/errors/reason.js.map +0 -1
  272. package/dist/index.d.ts.map +0 -1
  273. package/dist/index.js.map +0 -1
  274. package/dist/invocation/admission.d.ts.map +0 -1
  275. package/dist/invocation/admission.js.map +0 -1
  276. package/dist/invocation/binary.d.ts.map +0 -1
  277. package/dist/invocation/binary.js.map +0 -1
  278. package/dist/invocation/binding-codecs.d.ts.map +0 -1
  279. package/dist/invocation/binding-codecs.js.map +0 -1
  280. package/dist/invocation/cancellation.d.ts.map +0 -1
  281. package/dist/invocation/cancellation.js.map +0 -1
  282. package/dist/invocation/correlation.d.ts.map +0 -1
  283. package/dist/invocation/correlation.js.map +0 -1
  284. package/dist/invocation/delegate.d.ts.map +0 -1
  285. package/dist/invocation/delegate.js.map +0 -1
  286. package/dist/invocation/http/binary.d.ts.map +0 -1
  287. package/dist/invocation/http/binary.js.map +0 -1
  288. package/dist/invocation/http/index.d.ts.map +0 -1
  289. package/dist/invocation/http/index.js.map +0 -1
  290. package/dist/invocation/http/negotiation.d.ts.map +0 -1
  291. package/dist/invocation/http/negotiation.js.map +0 -1
  292. package/dist/invocation/http/stream.d.ts.map +0 -1
  293. package/dist/invocation/http/stream.js.map +0 -1
  294. package/dist/invocation/http/trace.d.ts.map +0 -1
  295. package/dist/invocation/http/trace.js.map +0 -1
  296. package/dist/invocation/idempotency.d.ts.map +0 -1
  297. package/dist/invocation/idempotency.js.map +0 -1
  298. package/dist/invocation/identity.d.ts.map +0 -1
  299. package/dist/invocation/identity.js.map +0 -1
  300. package/dist/invocation/index.d.ts.map +0 -1
  301. package/dist/invocation/index.js.map +0 -1
  302. package/dist/invocation/miss.d.ts.map +0 -1
  303. package/dist/invocation/miss.js.map +0 -1
  304. package/dist/invocation/redirect.d.ts.map +0 -1
  305. package/dist/invocation/redirect.js.map +0 -1
  306. package/dist/invocation/request.d.ts.map +0 -1
  307. package/dist/invocation/request.js.map +0 -1
  308. package/dist/invocation/response.d.ts.map +0 -1
  309. package/dist/invocation/response.js.map +0 -1
  310. package/dist/invocation/routing.d.ts.map +0 -1
  311. package/dist/invocation/routing.js.map +0 -1
  312. package/dist/invocation/schema.d.ts.map +0 -1
  313. package/dist/invocation/schema.js.map +0 -1
  314. package/dist/invocation/service-reason.d.ts.map +0 -1
  315. package/dist/invocation/service-reason.js.map +0 -1
  316. package/dist/invocation/stale-route.d.ts.map +0 -1
  317. package/dist/invocation/stale-route.js.map +0 -1
  318. package/dist/invocation/stream.d.ts.map +0 -1
  319. package/dist/invocation/stream.js.map +0 -1
  320. package/dist/invocation/target.d.ts.map +0 -1
  321. package/dist/invocation/target.js.map +0 -1
  322. package/dist/invocation/trace.d.ts.map +0 -1
  323. package/dist/invocation/trace.js.map +0 -1
  324. package/dist/invocation/version.d.ts.map +0 -1
  325. package/dist/invocation/version.js.map +0 -1
  326. package/dist/invocation/websocket/binary.d.ts.map +0 -1
  327. package/dist/invocation/websocket/binary.js.map +0 -1
  328. package/dist/invocation/websocket/index.d.ts.map +0 -1
  329. package/dist/invocation/websocket/index.js.map +0 -1
  330. package/dist/invocation/websocket/subprotocol.d.ts.map +0 -1
  331. package/dist/invocation/websocket/subprotocol.js.map +0 -1
  332. package/dist/issuer/configuration.d.ts.map +0 -1
  333. package/dist/issuer/configuration.js.map +0 -1
  334. package/dist/issuer/error.d.ts.map +0 -1
  335. package/dist/issuer/error.js.map +0 -1
  336. package/dist/issuer/exchange.d.ts.map +0 -1
  337. package/dist/issuer/exchange.js.map +0 -1
  338. package/dist/issuer/hosted.d.ts.map +0 -1
  339. package/dist/issuer/hosted.js.map +0 -1
  340. package/dist/issuer/index.d.ts.map +0 -1
  341. package/dist/issuer/index.js.map +0 -1
  342. package/dist/issuer/key-set.d.ts.map +0 -1
  343. package/dist/issuer/key-set.js.map +0 -1
  344. package/dist/issuer/paths.d.ts.map +0 -1
  345. package/dist/issuer/paths.js.map +0 -1
  346. package/dist/issuer/url.d.ts.map +0 -1
  347. package/dist/issuer/url.js.map +0 -1
  348. package/dist/publication/bindings/callable.d.ts.map +0 -1
  349. package/dist/publication/bindings/callable.js.map +0 -1
  350. package/dist/publication/bindings/index.d.ts.map +0 -1
  351. package/dist/publication/bindings/index.js.map +0 -1
  352. package/dist/publication/bindings/invocation.d.ts.map +0 -1
  353. package/dist/publication/bindings/invocation.js +0 -14
  354. package/dist/publication/bindings/invocation.js.map +0 -1
  355. package/dist/publication/bindings/view.d.ts +0 -8
  356. package/dist/publication/bindings/view.d.ts.map +0 -1
  357. package/dist/publication/bindings/view.js +0 -29
  358. package/dist/publication/bindings/view.js.map +0 -1
  359. package/dist/publication/bundle-admission.d.ts +0 -5
  360. package/dist/publication/bundle-admission.d.ts.map +0 -1
  361. package/dist/publication/bundle-admission.js.map +0 -1
  362. package/dist/publication/bundle-descriptor.d.ts.map +0 -1
  363. package/dist/publication/bundle-descriptor.js +0 -20
  364. package/dist/publication/bundle-descriptor.js.map +0 -1
  365. package/dist/publication/bundle-evidence.d.ts +0 -4
  366. package/dist/publication/bundle-evidence.d.ts.map +0 -1
  367. package/dist/publication/bundle-evidence.js +0 -14
  368. package/dist/publication/bundle-evidence.js.map +0 -1
  369. package/dist/publication/bundle.d.ts.map +0 -1
  370. package/dist/publication/bundle.js.map +0 -1
  371. package/dist/publication/content.d.ts +0 -11
  372. package/dist/publication/content.d.ts.map +0 -1
  373. package/dist/publication/content.js.map +0 -1
  374. package/dist/publication/declaration.d.ts.map +0 -1
  375. package/dist/publication/declaration.js +0 -2
  376. package/dist/publication/declaration.js.map +0 -1
  377. package/dist/publication/delivery/attestation.d.ts.map +0 -1
  378. package/dist/publication/delivery/attestation.js.map +0 -1
  379. package/dist/publication/delivery/claims.d.ts.map +0 -1
  380. package/dist/publication/delivery/claims.js.map +0 -1
  381. package/dist/publication/delivery/delivery.d.ts +0 -10
  382. package/dist/publication/delivery/delivery.d.ts.map +0 -1
  383. package/dist/publication/delivery/delivery.js.map +0 -1
  384. package/dist/publication/delivery/error.d.ts.map +0 -1
  385. package/dist/publication/delivery/error.js.map +0 -1
  386. package/dist/publication/delivery/index.d.ts.map +0 -1
  387. package/dist/publication/delivery/index.js.map +0 -1
  388. package/dist/publication/delivery/limits.d.ts.map +0 -1
  389. package/dist/publication/delivery/limits.js +0 -5
  390. package/dist/publication/delivery/limits.js.map +0 -1
  391. package/dist/publication/delivery/request.d.ts.map +0 -1
  392. package/dist/publication/delivery/request.js.map +0 -1
  393. package/dist/publication/delivery-declaration.d.ts.map +0 -1
  394. package/dist/publication/delivery-declaration.js.map +0 -1
  395. package/dist/publication/delivery-endpoint.d.ts.map +0 -1
  396. package/dist/publication/delivery-endpoint.js +0 -23
  397. package/dist/publication/delivery-endpoint.js.map +0 -1
  398. package/dist/publication/error.d.ts +0 -8
  399. package/dist/publication/error.d.ts.map +0 -1
  400. package/dist/publication/error.js +0 -12
  401. package/dist/publication/error.js.map +0 -1
  402. package/dist/publication/etag.d.ts +0 -7
  403. package/dist/publication/etag.d.ts.map +0 -1
  404. package/dist/publication/etag.js.map +0 -1
  405. package/dist/publication/index.d.ts +0 -18
  406. package/dist/publication/index.d.ts.map +0 -1
  407. package/dist/publication/index.js +0 -11
  408. package/dist/publication/index.js.map +0 -1
  409. package/dist/publication/manifest.d.ts +0 -7
  410. package/dist/publication/manifest.d.ts.map +0 -1
  411. package/dist/publication/manifest.js +0 -31
  412. package/dist/publication/manifest.js.map +0 -1
  413. package/dist/publication/publication.d.ts +0 -37
  414. package/dist/publication/publication.d.ts.map +0 -1
  415. package/dist/publication/publication.js +0 -134
  416. package/dist/publication/publication.js.map +0 -1
  417. package/dist/publication/reference.d.ts +0 -18
  418. package/dist/publication/reference.d.ts.map +0 -1
  419. package/dist/publication/reference.js +0 -69
  420. package/dist/publication/reference.js.map +0 -1
  421. package/dist/publication/requirements.d.ts +0 -27
  422. package/dist/publication/requirements.d.ts.map +0 -1
  423. package/dist/publication/requirements.js +0 -181
  424. package/dist/publication/requirements.js.map +0 -1
  425. package/dist/publication/route.d.ts.map +0 -1
  426. package/dist/publication/route.js.map +0 -1
  427. package/dist/publication/schema.d.ts.map +0 -1
  428. package/dist/publication/schema.js.map +0 -1
  429. package/dist/routes/admission.d.ts.map +0 -1
  430. package/dist/routes/admission.js.map +0 -1
  431. package/dist/routes/binding.d.ts.map +0 -1
  432. package/dist/routes/binding.js.map +0 -1
  433. package/dist/routes/collision.d.ts.map +0 -1
  434. package/dist/routes/collision.js.map +0 -1
  435. package/dist/routes/compiler.d.ts.map +0 -1
  436. package/dist/routes/compiler.js.map +0 -1
  437. package/dist/routes/credential.d.ts.map +0 -1
  438. package/dist/routes/credential.js.map +0 -1
  439. package/dist/routes/decode.d.ts.map +0 -1
  440. package/dist/routes/decode.js.map +0 -1
  441. package/dist/routes/encode.d.ts.map +0 -1
  442. package/dist/routes/encode.js.map +0 -1
  443. package/dist/routes/error-response.d.ts.map +0 -1
  444. package/dist/routes/error-response.js.map +0 -1
  445. package/dist/routes/error.d.ts.map +0 -1
  446. package/dist/routes/error.js.map +0 -1
  447. package/dist/routes/evidence.d.ts.map +0 -1
  448. package/dist/routes/evidence.js.map +0 -1
  449. package/dist/routes/index.d.ts.map +0 -1
  450. package/dist/routes/index.js.map +0 -1
  451. package/dist/routes/mapping.d.ts.map +0 -1
  452. package/dist/routes/mapping.js.map +0 -1
  453. package/dist/routes/match.d.ts.map +0 -1
  454. package/dist/routes/match.js.map +0 -1
  455. package/dist/routes/placement.d.ts.map +0 -1
  456. package/dist/routes/placement.js.map +0 -1
  457. package/dist/routes/plan.d.ts.map +0 -1
  458. package/dist/routes/plan.js.map +0 -1
  459. package/dist/routes/release-unavailable.d.ts +0 -9
  460. package/dist/routes/release-unavailable.d.ts.map +0 -1
  461. package/dist/routes/release-unavailable.js +0 -33
  462. package/dist/routes/release-unavailable.js.map +0 -1
  463. package/dist/routes/request.d.ts.map +0 -1
  464. package/dist/routes/request.js.map +0 -1
  465. package/dist/routes/reservation.d.ts.map +0 -1
  466. package/dist/routes/reservation.js.map +0 -1
  467. package/dist/routes/routing.d.ts.map +0 -1
  468. package/dist/routes/routing.js.map +0 -1
  469. package/dist/routes/scalar.d.ts.map +0 -1
  470. package/dist/routes/scalar.js.map +0 -1
  471. package/dist/routes/select.d.ts.map +0 -1
  472. package/dist/routes/select.js.map +0 -1
  473. package/dist/routes/stream.d.ts.map +0 -1
  474. package/dist/routes/stream.js.map +0 -1
  475. package/dist/routes/table.d.ts.map +0 -1
  476. package/dist/routes/table.js.map +0 -1
  477. package/dist/routes/target.d.ts.map +0 -1
  478. package/dist/routes/target.js.map +0 -1
  479. package/dist/routes/template.d.ts.map +0 -1
  480. package/dist/routes/template.js.map +0 -1
  481. package/dist/runtime/artifact.d.ts.map +0 -1
  482. package/dist/runtime/artifact.js.map +0 -1
  483. package/dist/runtime/index.d.ts.map +0 -1
  484. package/dist/runtime/index.js.map +0 -1
  485. package/dist/schema/index.d.ts.map +0 -1
  486. package/dist/schema/index.js.map +0 -1
  487. package/dist/schema/installation/index.d.ts.map +0 -1
  488. package/dist/schema/installation/index.js.map +0 -1
  489. package/dist/schema/installation/introspection/codec.d.ts.map +0 -1
  490. package/dist/schema/installation/introspection/codec.js.map +0 -1
  491. package/dist/schema/installation/introspection/index.d.ts.map +0 -1
  492. package/dist/schema/installation/introspection/index.js.map +0 -1
  493. package/dist/schema/installation/introspection/result.d.ts.map +0 -1
  494. package/dist/schema/installation/introspection/result.js.map +0 -1
@@ -0,0 +1,150 @@
1
+ import { accept as acceptPortable, json } from '@astrale-os/kernel-dsl/value';
2
+ import { admitRoute } from '../release/route.js';
3
+ import { fail } from './error.js';
4
+ import { place } from './placement.js';
5
+ const AUTH = new Set(['anonymous', 'authenticated', 'authorized']);
6
+ const OUTPUT = new Set(['value', 'stream', 'binary']);
7
+ /**
8
+ * The coordinate in which a served document differs from one Plan placed at `publicUrl`: its
9
+ * origin or schema revision (`identity`), or its route wire (`routes`). Each Table words its own
10
+ * refusal after the document it binds.
11
+ */
12
+ export function placementMismatch(plan, deployed, domain, publicUrl) {
13
+ if (plan.origin !== deployed.origin ||
14
+ plan.origin !== domain.origin ||
15
+ plan.revision !== deployed.schema.revision ||
16
+ plan.revision !== domain.revision) {
17
+ return 'identity';
18
+ }
19
+ return json.serialize(place(plan, publicUrl)) ===
20
+ json.serialize(deployed.routes)
21
+ ? undefined
22
+ : 'routes';
23
+ }
24
+ /** The entries of one placed Plan at the hrefs its served document publishes. */
25
+ export function placedEntries(plan, deployed) {
26
+ return Object.freeze(plan.entries.map((entry, index) => {
27
+ const { path: _path, ...portable } = entry;
28
+ return Object.freeze({ ...portable, href: deployed.routes[index].href });
29
+ }));
30
+ }
31
+ /** Whether entries carry exactly the route wire and Domain identity of one served document. */
32
+ export function sameServedWire(entries, deployed, domain) {
33
+ return (domain.origin === deployed.origin &&
34
+ domain.revision === deployed.schema.revision &&
35
+ json.serialize(entries.map(wireRoute)) === json.serialize(deployed.routes));
36
+ }
37
+ /** Refuse an entry whose target, auth or output differs from the Domain's callable meaning. */
38
+ export function verifyMeaning(entries, domain) {
39
+ for (const entry of entries) {
40
+ const meaning = domain.callable(entry.callable);
41
+ const targetMatches = meaning !== undefined &&
42
+ ((entry.target.kind === 'function' && !isMethod(meaning)) ||
43
+ (entry.target.kind === 'method' &&
44
+ isMethod(meaning) &&
45
+ meaning.executable &&
46
+ entry.target.dispatch === (meaning.static ? 'static' : 'instance')));
47
+ if (!targetMatches || meaning.auth !== entry.auth || meaning.output.mode !== entry.output) {
48
+ fail('NATIVE_ROUTE_BINDING_INVALID', `Route ${entry.name} differs from Domain meaning.`);
49
+ }
50
+ }
51
+ }
52
+ /** Admit one portable Table object holding exactly `fields`. */
53
+ export function tableObject(input, fields) {
54
+ const value = object(acceptPortable(input), 'Route Table');
55
+ exact(value, fields, 'Route Table');
56
+ return value;
57
+ }
58
+ /** Admit the entries of one Table bound to `origin`; an invalid route wire is a `ReleaseError`. */
59
+ export function acceptEntries(input, origin) {
60
+ if (!Array.isArray(input))
61
+ invalid('Route Table entries');
62
+ const entries = input.map((entry) => acceptRoute(entry, origin));
63
+ if (new Set(entries.map(({ name }) => name)).size !== entries.length) {
64
+ fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Table names must be unique.');
65
+ }
66
+ return Object.freeze(entries);
67
+ }
68
+ function acceptRoute(input, origin) {
69
+ const value = object(input, 'Route Table entry');
70
+ exact(value, ['name', 'callable', 'target', 'auth', 'output', 'href', 'method', 'default'], 'Route Table entry', ['requestMethod', 'query', 'headers', 'body', 'credential']);
71
+ if (typeof value.default !== 'boolean')
72
+ invalid('Route Table default');
73
+ if (typeof value.auth !== 'string' || !AUTH.has(value.auth)) {
74
+ invalid('Route Table auth');
75
+ }
76
+ if (typeof value.output !== 'string' || !OUTPUT.has(value.output))
77
+ invalid('Route Table output');
78
+ const wire = admitRoute({
79
+ name: value.name,
80
+ callable: value.callable,
81
+ href: value.href,
82
+ method: value.method,
83
+ ...(value.default === true ? { default: true } : {}),
84
+ ...(value.requestMethod === undefined ? {} : { requestMethod: value.requestMethod }),
85
+ ...(value.query === undefined ? {} : { query: value.query }),
86
+ ...(value.headers === undefined ? {} : { headers: value.headers }),
87
+ ...(value.body === undefined ? {} : { body: value.body }),
88
+ ...(value.credential === undefined ? {} : { credential: value.credential }),
89
+ ...receiver(value.target),
90
+ }, origin);
91
+ const { default: _default, receiver: _receiver, ...common } = wire;
92
+ return Object.freeze({
93
+ ...common,
94
+ target: target(value.target),
95
+ auth: value.auth,
96
+ output: value.output,
97
+ default: value.default,
98
+ });
99
+ }
100
+ function target(input) {
101
+ const value = object(input, 'Route target');
102
+ if (value.kind === 'function') {
103
+ exact(value, ['kind'], 'Route Function target');
104
+ return Object.freeze({ kind: 'function' });
105
+ }
106
+ if (value.kind !== 'method' || (value.dispatch !== 'static' && value.dispatch !== 'instance')) {
107
+ invalid('Route Method target');
108
+ }
109
+ if (value.dispatch === 'static') {
110
+ exact(value, ['kind', 'dispatch'], 'Route static Method target');
111
+ return Object.freeze({ kind: 'method', dispatch: 'static' });
112
+ }
113
+ exact(value, ['kind', 'dispatch', 'receiver'], 'Route instance Method target');
114
+ if (typeof value.receiver !== 'string')
115
+ invalid('Route receiver');
116
+ return Object.freeze({ kind: 'method', dispatch: 'instance', receiver: value.receiver });
117
+ }
118
+ function receiver(input) {
119
+ const admitted = target(input);
120
+ return admitted.kind === 'method' && admitted.dispatch === 'instance'
121
+ ? { receiver: admitted.receiver }
122
+ : {};
123
+ }
124
+ function isMethod(meaning) {
125
+ return 'owner' in meaning;
126
+ }
127
+ function wireRoute(entry) {
128
+ const { target, auth: _auth, output: _output, default: isDefault, ...wire } = entry;
129
+ return {
130
+ ...wire,
131
+ ...(isDefault ? { default: true } : {}),
132
+ ...(target.kind === 'method' && target.dispatch === 'instance'
133
+ ? { receiver: target.receiver }
134
+ : {}),
135
+ };
136
+ }
137
+ function object(input, label) {
138
+ if (input === null || typeof input !== 'object' || Array.isArray(input))
139
+ invalid(label);
140
+ return input;
141
+ }
142
+ function exact(value, required, label, optional = []) {
143
+ const allowed = new Set([...required, ...optional]);
144
+ if (Object.keys(value).some((key) => !allowed.has(key)) ||
145
+ required.some((key) => !Object.hasOwn(value, key)))
146
+ invalid(label);
147
+ }
148
+ function invalid(label) {
149
+ return fail('NATIVE_ROUTE_BINDING_INVALID', `${label} is invalid.`);
150
+ }
@@ -3,4 +3,3 @@ export interface ErrorResponse {
3
3
  readonly error: ErrorPayload;
4
4
  }
5
5
  export declare function decodeErrorResponse(input: unknown): ErrorResponse;
6
- //# sourceMappingURL=error-response.d.ts.map
@@ -29,4 +29,3 @@ function isValueObject(value) {
29
29
  function invalid(cause) {
30
30
  return fail('NATIVE_ROUTE_RESPONSE_INVALID', 'Native route error response is invalid.', cause);
31
31
  }
32
- //# sourceMappingURL=error-response.js.map
@@ -6,4 +6,3 @@ export declare class RouteError extends Error {
6
6
  }
7
7
  export declare function fail(code: ErrorCode, message: string, cause?: unknown): never;
8
8
  export declare function invalidRequest(message: string): never;
9
- //# sourceMappingURL=error.d.ts.map
@@ -12,4 +12,3 @@ export function fail(code, message, cause) {
12
12
  export function invalidRequest(message) {
13
13
  return fail('NATIVE_ROUTE_REQUEST_INVALID', message);
14
14
  }
15
- //# sourceMappingURL=error.js.map
@@ -1,6 +1,5 @@
1
1
  import type { Domain } from '@astrale-os/kernel-dsl/v1';
2
- import type { Publication } from '../publication/publication.js';
2
+ import type { DomainRelease } from '../release/release.js';
3
3
  import type { Table } from './table.js';
4
- /** Verify that an admitted Table carries the exact published wire and Domain meaning. */
5
- export declare function verifyTable(table: Table, deployed: Publication, domain: Pick<Domain, 'origin' | 'revision' | 'callable'>): Table;
6
- //# sourceMappingURL=evidence.d.ts.map
4
+ /** Verify that an admitted Table carries the exact released wire and Domain meaning. */
5
+ export declare function verifyTable(table: Table, deployed: DomainRelease, domain: Pick<Domain, 'origin' | 'revision' | 'callable'>): Table;
@@ -1,39 +1,12 @@
1
- import { json } from '@astrale-os/kernel-dsl/value';
2
- import { compareReferences, reference } from '../publication/reference.js';
1
+ import { compareReferences, reference } from '../release/reference.js';
2
+ import { sameServedWire, verifyMeaning } from './entries.js';
3
3
  import { fail } from './error.js';
4
- /** Verify that an admitted Table carries the exact published wire and Domain meaning. */
4
+ /** Verify that an admitted Table carries the exact released wire and Domain meaning. */
5
5
  export function verifyTable(table, deployed, domain) {
6
- if (compareReferences(table.publication, reference(deployed)) !== 'exact' ||
7
- domain.origin !== deployed.origin ||
8
- domain.revision !== deployed.schema.revision ||
9
- json.serialize(table.entries.map(wireRoute)) !==
10
- json.serialize(deployed.routes)) {
11
- fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Table evidence differs from its Publication.');
12
- }
13
- for (const entry of table.entries) {
14
- const meaning = domain.callable(entry.callable);
15
- const targetMatches = meaning !== undefined &&
16
- ((entry.target.kind === 'function' && !isMethod(meaning)) ||
17
- (entry.target.kind === 'method' &&
18
- isMethod(meaning) &&
19
- entry.target.dispatch === (meaning.static ? 'static' : 'instance')));
20
- if (!targetMatches || meaning.auth !== entry.auth || meaning.output.mode !== entry.output) {
21
- fail('NATIVE_ROUTE_BINDING_INVALID', `Route ${entry.name} differs from Domain meaning.`);
22
- }
6
+ if (compareReferences(table.release, reference(deployed)) !== 'exact' ||
7
+ !sameServedWire(table.entries, deployed, domain)) {
8
+ fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Table evidence differs from its Release.');
23
9
  }
10
+ verifyMeaning(table.entries, domain);
24
11
  return table;
25
12
  }
26
- function isMethod(meaning) {
27
- return 'owner' in meaning;
28
- }
29
- function wireRoute(entry) {
30
- const { target, auth: _auth, output: _output, default: isDefault, ...wire } = entry;
31
- return {
32
- ...wire,
33
- ...(isDefault ? { default: true } : {}),
34
- ...(target.kind === 'method' && target.dispatch === 'instance'
35
- ? { receiver: target.receiver }
36
- : {}),
37
- };
38
- }
39
- //# sourceMappingURL=evidence.js.map
@@ -0,0 +1,9 @@
1
+ import * as auth from '@astrale-os/kernel-core/auth';
2
+ import type { Sha256Digest } from '../release/digest.js';
3
+ import type { HttpRequest } from './request.js';
4
+ /** The digest one header value names as exactly one strong quoted digest, else undefined. */
5
+ export declare function strongDigest(input: string): Sha256Digest | undefined;
6
+ /** Read one reserved header, which occurs at most once in any spelling. */
7
+ export declare function reservedHeader(input: HttpRequest['headers'], name: string): string | undefined;
8
+ /** Admit the routing Kernel issuer one native route request names in header `name`. */
9
+ export declare function acceptIssuerHeader(encoded: string, name: string): auth.IssuerId;
@@ -0,0 +1,34 @@
1
+ import * as auth from '@astrale-os/kernel-core/auth';
2
+ import { fail } from './error.js';
3
+ const STRONG_DIGEST = /^"(sha256:[0-9a-f]{64})"$/u;
4
+ /** The digest one header value names as exactly one strong quoted digest, else undefined. */
5
+ export function strongDigest(input) {
6
+ return STRONG_DIGEST.exec(input)?.[1];
7
+ }
8
+ /** Read one reserved header, which occurs at most once in any spelling. */
9
+ export function reservedHeader(input, name) {
10
+ if (input instanceof Headers)
11
+ return input.get(name) ?? undefined;
12
+ let found;
13
+ for (const [candidate, value] of Object.entries(input ?? {})) {
14
+ if (candidate.toLowerCase() !== name || value === undefined)
15
+ continue;
16
+ if (found !== undefined || (Array.isArray(value) && value.length !== 1)) {
17
+ fail('NATIVE_ROUTE_ROUTING_INVALID', `Header ${name} must occur at most once.`);
18
+ }
19
+ found = typeof value === 'string' ? value : value[0];
20
+ }
21
+ return found;
22
+ }
23
+ /** Admit the routing Kernel issuer one native route request names in header `name`. */
24
+ export function acceptIssuerHeader(encoded, name) {
25
+ try {
26
+ return auth.issuer.accept(encoded);
27
+ }
28
+ catch (cause) {
29
+ if (cause instanceof auth.AuthValueError) {
30
+ return fail('NATIVE_ROUTE_ROUTING_INVALID', `${name} is invalid.`, cause);
31
+ }
32
+ throw cause;
33
+ }
34
+ }
@@ -12,9 +12,8 @@ export type { Plan, PlanEntry } from './plan.js';
12
12
  export type { Route, Table } from './table.js';
13
13
  export type { RouteTarget } from './target.js';
14
14
  export { place } from './placement.js';
15
- export { decodeReleaseUnavailable, HTTP_ROUTE_RELEASE_UNAVAILABLE, HTTP_ROUTE_RELEASE_UNAVAILABLE_STATUS, releaseUnavailableHeaders, type ReleaseUnavailable, } from './release-unavailable.js';
16
- export { decodeRouting, decodeMiss, decodeStale, HTTP_ROUTE_PUBLICATION, HTTP_ROUTE_ISSUER, HTTP_ROUTE_MISS, HTTP_ROUTE_MISS_STATUS, HTTP_ROUTE_STALE, HTTP_ROUTE_STALE_STATUS, missHeaders, staleHeaders, type MissControl, type StaleControl, } from './routing.js';
15
+ export { decodeDeploymentRetired, deploymentRetiredBody, deploymentRetiredHeaders, HTTP_DEPLOYMENT_RETIRED, HTTP_DEPLOYMENT_RETIRED_STATUS, type DeploymentRetired, } from './deployment-retired.js';
16
+ export { decodeRouting, decodeMiss, decodeStale, HTTP_ROUTE_DIGEST, HTTP_ROUTE_ISSUER, HTTP_ROUTE_MISS, HTTP_ROUTE_MISS_STATUS, HTTP_ROUTE_STALE, HTTP_ROUTE_STALE_STATUS, missHeaders, staleHeaders, type MissControl, type ServedReferences, type StaleControl, } from './routing.js';
17
17
  export { select } from './select.js';
18
18
  export { decodeStreamFrame, encodeStreamFrame, STREAM_MEDIA_TYPE, type StreamFrame, } from './stream.js';
19
19
  export { templatesOverlap } from './template.js';
20
- //# sourceMappingURL=index.d.ts.map
@@ -9,9 +9,8 @@ export { RouteError } from './error.js';
9
9
  export { match } from './match.js';
10
10
  export {} from './request.js';
11
11
  export { place } from './placement.js';
12
- export { decodeReleaseUnavailable, HTTP_ROUTE_RELEASE_UNAVAILABLE, HTTP_ROUTE_RELEASE_UNAVAILABLE_STATUS, releaseUnavailableHeaders, } from './release-unavailable.js';
13
- export { decodeRouting, decodeMiss, decodeStale, HTTP_ROUTE_PUBLICATION, HTTP_ROUTE_ISSUER, HTTP_ROUTE_MISS, HTTP_ROUTE_MISS_STATUS, HTTP_ROUTE_STALE, HTTP_ROUTE_STALE_STATUS, missHeaders, staleHeaders, } from './routing.js';
12
+ export { decodeDeploymentRetired, deploymentRetiredBody, deploymentRetiredHeaders, HTTP_DEPLOYMENT_RETIRED, HTTP_DEPLOYMENT_RETIRED_STATUS, } from './deployment-retired.js';
13
+ export { decodeRouting, decodeMiss, decodeStale, HTTP_ROUTE_DIGEST, HTTP_ROUTE_ISSUER, HTTP_ROUTE_MISS, HTTP_ROUTE_MISS_STATUS, HTTP_ROUTE_STALE, HTTP_ROUTE_STALE_STATUS, missHeaders, staleHeaders, } from './routing.js';
14
14
  export { select } from './select.js';
15
15
  export { decodeStreamFrame, encodeStreamFrame, STREAM_MEDIA_TYPE, } from './stream.js';
16
16
  export { templatesOverlap } from './template.js';
17
- //# sourceMappingURL=index.js.map
@@ -1,6 +1,5 @@
1
- import type { HttpRoute } from '../publication/index.js';
1
+ import type { HttpRoute } from '../release/route.js';
2
2
  export declare function validateMapping(route: HttpRoute, fields: readonly string[] | undefined, instanceMethod: boolean): void;
3
3
  export declare function validateWireMapping(route: HttpRoute): void;
4
4
  export declare function validateCredentialMapping(route: HttpRoute): void;
5
5
  export declare function isReservedHeader(input: string): boolean;
6
- //# sourceMappingURL=mapping.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import { HTTP_IDEMPOTENCY_KEY } from '../invocation/index.js';
2
2
  import { credentialSources } from './credential.js';
3
+ import { HTTP_DEPLOYMENT_RETIRED } from './deployment-retired.js';
3
4
  import { fail } from './error.js';
4
- import { HTTP_ROUTE_RELEASE_UNAVAILABLE } from './release-unavailable.js';
5
- import { HTTP_ROUTE_ISSUER, HTTP_ROUTE_MISS, HTTP_ROUTE_PUBLICATION, HTTP_ROUTE_STALE, } from './routing.js';
5
+ import { HTTP_ROUTE_DIGEST, HTTP_ROUTE_ISSUER, HTTP_ROUTE_MISS, HTTP_ROUTE_STALE, } from './routing.js';
6
6
  import { PLACEHOLDER } from './template.js';
7
7
  export function validateMapping(route, fields, instanceMethod) {
8
8
  if (fields === undefined) {
@@ -110,10 +110,10 @@ export function validateCredentialMapping(route) {
110
110
  }
111
111
  const RESERVED_HEADERS = new Set([
112
112
  HTTP_IDEMPOTENCY_KEY,
113
+ HTTP_DEPLOYMENT_RETIRED,
114
+ HTTP_ROUTE_DIGEST,
113
115
  HTTP_ROUTE_ISSUER,
114
116
  HTTP_ROUTE_MISS,
115
- HTTP_ROUTE_PUBLICATION,
116
- HTTP_ROUTE_RELEASE_UNAVAILABLE,
117
117
  HTTP_ROUTE_STALE,
118
118
  ]);
119
119
  export function isReservedHeader(input) {
@@ -124,4 +124,3 @@ function uniqueWires(route, kind, wires) {
124
124
  fail('NATIVE_ROUTE_MAPPING_AMBIGUOUS', `Route ${route.name} maps one ${kind} wire source more than once.`);
125
125
  }
126
126
  }
127
- //# sourceMappingURL=mapping.js.map
@@ -1,5 +1,4 @@
1
1
  import type { HttpRequest } from './request.js';
2
2
  import type { Route, Table } from './table.js';
3
- export declare function match(table: Table, request: Pick<HttpRequest, 'url' | 'method'>): Route | undefined;
3
+ export declare function match(table: Pick<Table, 'entries'>, request: Pick<HttpRequest, 'url' | 'method'>): Route | undefined;
4
4
  export declare function methodMatches(entry: Route, method: string): boolean;
5
- //# sourceMappingURL=match.d.ts.map
@@ -5,4 +5,3 @@ export function match(table, request) {
5
5
  export function methodMatches(entry, method) {
6
6
  return entry.method === '*' || entry.method === method.toUpperCase();
7
7
  }
8
- //# sourceMappingURL=match.js.map
@@ -1,6 +1,5 @@
1
- import type * as publication from '../publication/index.js';
1
+ import type { HttpRoute } from '../release/route.js';
2
2
  import type { Plan } from './plan.js';
3
3
  /** Resolve a provider-neutral Plan beneath one exact serving issuer. */
4
- export declare function place(plan: Plan, issuer: string): readonly publication.HttpRoute[];
4
+ export declare function place(plan: Plan, issuer: string): readonly HttpRoute[];
5
5
  export declare function placePath(path: string, issuer: string): string;
6
- //# sourceMappingURL=placement.d.ts.map
@@ -16,4 +16,3 @@ export function placePath(path, issuer) {
16
16
  const base = new URL(issuer);
17
17
  return `${base.origin}${path}`;
18
18
  }
19
- //# sourceMappingURL=placement.js.map
@@ -1,6 +1,6 @@
1
1
  import type { FunctionAuth, Key, Revision } from '@astrale-os/kernel-dsl/v1';
2
2
  import type { OutputMode } from '@astrale-os/kernel-dsl/v1/language';
3
- import type { CredentialSource, HttpMethod, RouteBody, RouteHeaders } from '../publication/index.js';
3
+ import type { CredentialSource, HttpMethod, RouteBody, RouteHeaders } from '../release/route.js';
4
4
  import type { RouteTarget } from './target.js';
5
5
  export interface PlanEntry {
6
6
  readonly name: string;
@@ -22,4 +22,3 @@ export interface Plan {
22
22
  readonly revision: Revision;
23
23
  readonly entries: readonly PlanEntry[];
24
24
  }
25
- //# sourceMappingURL=plan.d.ts.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=plan.js.map
@@ -1,10 +1,12 @@
1
1
  import type { Value } from '@astrale-os/kernel-dsl/value';
2
2
  import type { Call, Via } from '../invocation/index.js';
3
- import type { HttpMethod } from '../publication/index.js';
3
+ import type { HttpMethod } from '../release/route.js';
4
4
  /** Canonical invocation values presented to or returned from a native route mapping. */
5
5
  export interface Invocation {
6
6
  readonly call: Call;
7
7
  readonly credential?: string;
8
+ /** The request channel that carried `credential`; `cookie` is ambient (CSRF-exposed). */
9
+ readonly credentialIn?: 'header' | 'cookie' | 'query';
8
10
  readonly routing?: Via;
9
11
  readonly method?: Exclude<HttpMethod, '*'>;
10
12
  }
@@ -24,4 +26,3 @@ export interface HttpRequest {
24
26
  export declare function bodyText(body: HttpRequest['body']): string;
25
27
  export declare function parseJsonObject(body: HttpRequest['body']): Record<string, Value>;
26
28
  export declare function normalizeHeaders(input: HttpRequest['headers']): Record<string, string>;
27
- //# sourceMappingURL=request.d.ts.map
@@ -51,4 +51,3 @@ export function normalizeHeaders(input) {
51
51
  }
52
52
  return output;
53
53
  }
54
- //# sourceMappingURL=request.js.map
@@ -1,4 +1,5 @@
1
- import type { Publication } from '../publication/publication.js';
1
+ import type { DomainRelease } from '../release/release.js';
2
2
  import type { Route } from './table.js';
3
- export declare function rejectReserved(publication: Publication, entries: readonly Route[]): void;
4
- //# sourceMappingURL=reservation.d.ts.map
3
+ /** The canonical Release fields read by route reservation admission. */
4
+ export type Placed = Pick<DomainRelease, 'origin' | 'identity' | 'schema' | 'bindings' | 'routes' | 'delivery'>;
5
+ export declare function rejectReserved(release: Placed, entries: readonly Route[]): void;
@@ -1,21 +1,27 @@
1
1
  import * as issuer from '../issuer/index.js';
2
- import { PATH as PUBLICATION_PATH } from '../publication/publication.js';
2
+ import { bundleUrl } from '../release/bundle.js';
3
+ import { PATH as RELEASE_PATH } from '../release/release.js';
3
4
  import { fail } from './error.js';
4
5
  import { templateUrl, templatesOverlap } from './template.js';
5
- const STATIC_RESERVED_PATHS = new Set([PUBLICATION_PATH]);
6
- export function rejectReserved(publication, entries) {
7
- const discovery = issuer.paths(publication.identity.issuer);
6
+ const STATIC_RESERVED_PATHS = new Set([RELEASE_PATH]);
7
+ export function rejectReserved(release, entries) {
8
+ const discovery = issuer.paths(release.identity.issuer);
8
9
  const reservedPaths = new Set([...STATIC_RESERVED_PATHS, discovery.configuration, discovery.keys]);
9
10
  const reservedUrls = [
10
- publication.schema.bundle.href,
11
- ...(publication.delivery === undefined ? [] : [publication.delivery.href]),
12
- ...publication.bindings.callables.flatMap(({ endpoint }) => [
11
+ release.schema.bundle.href,
12
+ ...(release.delivery === undefined ? [] : [release.delivery.href]),
13
+ ...release.bindings.callables.flatMap(({ endpoint }) => [
13
14
  endpoint.http,
14
15
  ...(endpoint.websocket === undefined ? [] : [httpUrlForWebSocket(endpoint.websocket)]),
15
16
  ]),
16
17
  ];
18
+ const addressed = bundleUrl(release.identity.issuer, release.schema.bundle.ref);
19
+ const bundlePattern = release.schema.bundle.href === addressed
20
+ ? `${addressed.slice(0, addressed.lastIndexOf('/') + 1)}{artifact}`
21
+ : undefined;
17
22
  for (const entry of entries) {
18
- const claimed = [...reservedPaths].some((path) => templateClaimsPath(entry.href, path)) ||
23
+ const claimed = (bundlePattern !== undefined && templatesOverlap(entry.href, bundlePattern)) ||
24
+ [...reservedPaths].some((path) => templateClaimsPath(entry.href, path)) ||
19
25
  reservedUrls.some((reserved) => templatesOverlap(entry.href, routeLocation(reserved)));
20
26
  if (claimed) {
21
27
  fail('NATIVE_ROUTE_RESERVED', `Route ${entry.name} claims reserved URL ${templateUrl(entry.href).href}.`);
@@ -35,4 +41,3 @@ function templateClaimsPath(template, path) {
35
41
  const url = templateUrl(template);
36
42
  return templatesOverlap(template, `${url.origin}${path}`);
37
43
  }
38
- //# sourceMappingURL=reservation.js.map
@@ -1,23 +1,34 @@
1
1
  import type * as invocation from '../invocation/index.js';
2
- import type { Etag, PublicationRef } from '../publication/index.js';
2
+ import type { Sha256Digest } from '../release/digest.js';
3
+ import type { ReleaseRef } from '../release/reference.js';
3
4
  import type { HttpRequest } from './request.js';
4
5
  export interface StaleControl {
5
6
  readonly kind: 'stale';
6
- readonly current: Etag;
7
+ /** Current release digest. */
8
+ readonly current: Sha256Digest;
7
9
  }
8
10
  export interface MissControl {
9
11
  readonly kind: 'miss';
10
12
  }
11
- export declare const HTTP_ROUTE_PUBLICATION: 'if-match';
13
+ /** The references one release-backed destination answers native routes for. */
14
+ export interface ServedReferences {
15
+ readonly release: ReleaseRef;
16
+ }
17
+ /** If-Match carries the routed digest of a native route request (`invocation.routedDigest`). */
18
+ export declare const HTTP_ROUTE_DIGEST: 'if-match';
12
19
  export declare const HTTP_ROUTE_ISSUER: 'x-astrale-issuer';
13
20
  export declare const HTTP_ROUTE_STALE: 'x-astrale-route-stale';
14
21
  export declare const HTTP_ROUTE_STALE_STATUS: 412;
15
22
  export declare const HTTP_ROUTE_MISS: 'x-astrale-route-miss';
16
23
  export declare const HTTP_ROUTE_MISS_STATUS: 421;
17
- export declare function decodeRouting(input: Pick<HttpRequest, 'headers'>, publication: PublicationRef): invocation.Via | undefined;
18
- export declare function staleHeaders(current: Etag): Readonly<Record<string, string>>;
24
+ /**
25
+ * Decode a native route witness against the served release. A different strong digest is stale
26
+ * before issuer admission; otherwise the digest and issuer must occur together.
27
+ */
28
+ export declare function decodeRouting(input: Pick<HttpRequest, 'headers'>, served: ServedReferences): invocation.Via | StaleControl | undefined;
29
+ /** Emit the reserved stale header naming `current` (see `StaleControl.current`). */
30
+ export declare function staleHeaders(current: Sha256Digest): Readonly<Record<string, string>>;
19
31
  export declare function decodeStale(status: number, headers: HttpRequest['headers']): StaleControl | undefined;
20
32
  export declare function missHeaders(): Readonly<Record<string, string>>;
21
33
  export declare function decodeMiss(status: number, headers: HttpRequest['headers']): MissControl | undefined;
22
- export declare function encodeStrongEtag(input: Etag): string;
23
- //# sourceMappingURL=routing.d.ts.map
34
+ export declare function encodeStrongEtag(input: Sha256Digest): string;
@@ -1,36 +1,35 @@
1
- import * as auth from '@astrale-os/kernel-core/auth';
2
1
  import { fail } from './error.js';
3
- export const HTTP_ROUTE_PUBLICATION = 'if-match';
2
+ import { acceptIssuerHeader, reservedHeader, strongDigest } from './header.js';
3
+ /** If-Match carries the routed digest of a native route request (`invocation.routedDigest`). */
4
+ export const HTTP_ROUTE_DIGEST = 'if-match';
4
5
  export const HTTP_ROUTE_ISSUER = 'x-astrale-issuer';
5
6
  export const HTTP_ROUTE_STALE = 'x-astrale-route-stale';
6
7
  export const HTTP_ROUTE_STALE_STATUS = 412;
7
8
  export const HTTP_ROUTE_MISS = 'x-astrale-route-miss';
8
9
  export const HTTP_ROUTE_MISS_STATUS = 421;
9
- const STRONG_ETAG = /^"(sha256:[0-9a-f]{64})"$/u;
10
- export function decodeRouting(input, publication) {
11
- const encodedEtag = routingHeader(input.headers, HTTP_ROUTE_PUBLICATION);
12
- const encodedIssuer = routingHeader(input.headers, HTTP_ROUTE_ISSUER);
13
- if (encodedEtag === undefined && encodedIssuer === undefined)
10
+ /**
11
+ * Decode a native route witness against the served release. A different strong digest is stale
12
+ * before issuer admission; otherwise the digest and issuer must occur together.
13
+ */
14
+ export function decodeRouting(input, served) {
15
+ const encodedDigest = reservedHeader(input.headers, HTTP_ROUTE_DIGEST);
16
+ const encodedIssuer = reservedHeader(input.headers, HTTP_ROUTE_ISSUER);
17
+ if (encodedDigest === undefined && encodedIssuer === undefined)
14
18
  return undefined;
15
- if (encodedEtag === undefined || encodedIssuer === undefined) {
16
- fail('NATIVE_ROUTE_ROUTING_INVALID', `${HTTP_ROUTE_PUBLICATION} and ${HTTP_ROUTE_ISSUER} must occur together.`);
19
+ const named = encodedDigest === undefined ? undefined : strongDigest(encodedDigest);
20
+ if (named !== undefined && named !== served.release.digest) {
21
+ return Object.freeze({ kind: 'stale', current: served.release.digest });
17
22
  }
18
- const etag = decodeStrongEtag(encodedEtag, 'If-Match');
19
- if (etag !== publication.etag) {
20
- fail('NATIVE_ROUTE_ROUTING_INVALID', 'If-Match does not name the compiled Publication.');
23
+ if (encodedDigest === undefined || encodedIssuer === undefined) {
24
+ fail('NATIVE_ROUTE_ROUTING_INVALID', `${HTTP_ROUTE_DIGEST} and ${HTTP_ROUTE_ISSUER} must occur together.`);
21
25
  }
22
- let issuer;
23
- try {
24
- issuer = auth.issuer.accept(encodedIssuer);
26
+ if (named === undefined) {
27
+ fail('NATIVE_ROUTE_ROUTING_INVALID', 'If-Match must contain exactly one strong quoted digest.');
25
28
  }
26
- catch (cause) {
27
- if (cause instanceof auth.AuthValueError) {
28
- return fail('NATIVE_ROUTE_ROUTING_INVALID', `${HTTP_ROUTE_ISSUER} is invalid.`, cause);
29
- }
30
- throw cause;
31
- }
32
- return Object.freeze({ kind: 'via', publication, issuer });
29
+ const issuer = acceptIssuerHeader(encodedIssuer, HTTP_ROUTE_ISSUER);
30
+ return Object.freeze({ kind: 'via', release: served.release, issuer });
33
31
  }
32
+ /** Emit the reserved stale header naming `current` (see `StaleControl.current`). */
34
33
  export function staleHeaders(current) {
35
34
  return Object.freeze({
36
35
  [HTTP_ROUTE_STALE]: encodeStrongEtag(current),
@@ -38,22 +37,23 @@ export function staleHeaders(current) {
38
37
  });
39
38
  }
40
39
  export function decodeStale(status, headers) {
41
- const encoded = routingHeader(headers, HTTP_ROUTE_STALE);
40
+ const encoded = reservedHeader(headers, HTTP_ROUTE_STALE);
42
41
  if (encoded === undefined)
43
42
  return undefined;
44
43
  if (status !== HTTP_ROUTE_STALE_STATUS) {
45
44
  fail('NATIVE_ROUTE_ROUTING_INVALID', `Header ${HTTP_ROUTE_STALE} is reserved for status ${HTTP_ROUTE_STALE_STATUS}.`);
46
45
  }
47
- return Object.freeze({
48
- kind: 'stale',
49
- current: decodeStrongEtag(encoded, HTTP_ROUTE_STALE),
50
- });
46
+ const current = strongDigest(encoded);
47
+ if (current === undefined) {
48
+ fail('NATIVE_ROUTE_ROUTING_INVALID', `${HTTP_ROUTE_STALE} must contain exactly one strong quoted digest.`);
49
+ }
50
+ return Object.freeze({ kind: 'stale', current });
51
51
  }
52
52
  export function missHeaders() {
53
53
  return Object.freeze({ [HTTP_ROUTE_MISS]: '1', 'cache-control': 'no-store' });
54
54
  }
55
55
  export function decodeMiss(status, headers) {
56
- const encoded = routingHeader(headers, HTTP_ROUTE_MISS);
56
+ const encoded = reservedHeader(headers, HTTP_ROUTE_MISS);
57
57
  if (encoded === undefined)
58
58
  return undefined;
59
59
  if (status !== HTTP_ROUTE_MISS_STATUS || encoded !== '1') {
@@ -64,25 +64,3 @@ export function decodeMiss(status, headers) {
64
64
  export function encodeStrongEtag(input) {
65
65
  return `"${input}"`;
66
66
  }
67
- function decodeStrongEtag(input, label) {
68
- const matched = STRONG_ETAG.exec(input);
69
- if (matched === null) {
70
- fail('NATIVE_ROUTE_ROUTING_INVALID', `${label} must contain exactly one strong quoted Publication ETag.`);
71
- }
72
- return matched[1];
73
- }
74
- function routingHeader(input, name) {
75
- if (input instanceof Headers)
76
- return input.get(name) ?? undefined;
77
- let found;
78
- for (const [candidate, value] of Object.entries(input ?? {})) {
79
- if (candidate.toLowerCase() !== name || value === undefined)
80
- continue;
81
- if (found !== undefined || (Array.isArray(value) && value.length !== 1)) {
82
- fail('NATIVE_ROUTE_ROUTING_INVALID', `Header ${name} must occur at most once.`);
83
- }
84
- found = typeof value === 'string' ? value : value[0];
85
- }
86
- return found;
87
- }
88
- //# sourceMappingURL=routing.js.map
@@ -5,4 +5,3 @@ export declare function encodeScalar(entry: Route, name: string, value: unknown,
5
5
  export declare function decodeScalar(entry: Route, name: string, encoded: string, domain: Domain): portable.Value;
6
6
  export declare function scalar(value: unknown): string;
7
7
  export declare function asObject(value: unknown): Record<string, portable.Value>;
8
- //# sourceMappingURL=scalar.d.ts.map