@astrale-os/kernel-protocol 0.5.0-beta.2 → 0.5.0-beta.21

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 (426) hide show
  1. package/CHANGELOG.md +476 -0
  2. package/dist/artifact/index.d.ts +0 -1
  3. package/dist/artifact/index.js +0 -1
  4. package/dist/artifact/ref.d.ts +0 -1
  5. package/dist/artifact/ref.js +0 -1
  6. package/dist/codecs/codec.d.ts +0 -1
  7. package/dist/codecs/codec.js +0 -1
  8. package/dist/codecs/index.d.ts +0 -1
  9. package/dist/codecs/index.js +0 -1
  10. package/dist/codecs/json.d.ts +0 -1
  11. package/dist/codecs/json.js +0 -1
  12. package/dist/codecs/media-types.d.ts +0 -1
  13. package/dist/codecs/media-types.js +0 -1
  14. package/dist/codecs/msgpack.d.ts +0 -1
  15. package/dist/codecs/msgpack.js +1 -5
  16. package/dist/errors/codes.d.ts +0 -1
  17. package/dist/errors/codes.js +0 -1
  18. package/dist/errors/http-status.d.ts +0 -1
  19. package/dist/errors/http-status.js +0 -1
  20. package/dist/errors/index.d.ts +0 -1
  21. package/dist/errors/index.js +0 -1
  22. package/dist/errors/payload.d.ts +0 -1
  23. package/dist/errors/payload.js +3 -3
  24. package/dist/errors/protocol-error.d.ts +0 -1
  25. package/dist/errors/protocol-error.js +4 -3
  26. package/dist/errors/reason.d.ts +0 -1
  27. package/dist/errors/reason.js +0 -1
  28. package/dist/index.d.ts +0 -1
  29. package/dist/index.js +0 -1
  30. package/dist/invocation/admission.d.ts +4 -3
  31. package/dist/invocation/admission.js +16 -8
  32. package/dist/invocation/binary.d.ts +4 -2
  33. package/dist/invocation/binary.js +18 -5
  34. package/dist/invocation/binding-codecs.d.ts +0 -1
  35. package/dist/invocation/binding-codecs.js +0 -1
  36. package/dist/invocation/cancellation.d.ts +1 -2
  37. package/dist/invocation/cancellation.js +3 -4
  38. package/dist/invocation/correlation.d.ts +0 -1
  39. package/dist/invocation/correlation.js +0 -1
  40. package/dist/invocation/delegate.d.ts +0 -1
  41. package/dist/invocation/delegate.js +0 -1
  42. package/dist/invocation/http/binary.d.ts +9 -1
  43. package/dist/invocation/http/binary.js +49 -3
  44. package/dist/invocation/http/index.d.ts +1 -2
  45. package/dist/invocation/http/index.js +1 -2
  46. package/dist/invocation/http/negotiation.d.ts +0 -1
  47. package/dist/invocation/http/negotiation.js +0 -1
  48. package/dist/invocation/http/stream.d.ts +0 -1
  49. package/dist/invocation/http/stream.js +0 -1
  50. package/dist/invocation/http/trace.d.ts +0 -1
  51. package/dist/invocation/http/trace.js +0 -1
  52. package/dist/invocation/idempotency.d.ts +0 -1
  53. package/dist/invocation/idempotency.js +0 -1
  54. package/dist/invocation/identity.d.ts +16 -0
  55. package/dist/invocation/identity.js +55 -0
  56. package/dist/invocation/index.d.ts +4 -4
  57. package/dist/invocation/index.js +3 -3
  58. package/dist/invocation/miss.d.ts +4 -3
  59. package/dist/invocation/miss.js +10 -7
  60. package/dist/invocation/redirect.d.ts +19 -12
  61. package/dist/invocation/redirect.js +30 -17
  62. package/dist/invocation/request.d.ts +1 -2
  63. package/dist/invocation/request.js +3 -4
  64. package/dist/invocation/response.d.ts +9 -7
  65. package/dist/invocation/response.js +14 -10
  66. package/dist/invocation/routing.d.ts +3 -3
  67. package/dist/invocation/routing.js +4 -4
  68. package/dist/invocation/schema.d.ts +2 -3
  69. package/dist/invocation/schema.js +2 -3
  70. package/dist/invocation/service-reason.d.ts +13 -13
  71. package/dist/invocation/service-reason.js +14 -14
  72. package/dist/invocation/stale-route.d.ts +4 -3
  73. package/dist/invocation/stale-route.js +7 -7
  74. package/dist/invocation/stream.d.ts +6 -5
  75. package/dist/invocation/stream.js +17 -14
  76. package/dist/invocation/target.d.ts +2 -8
  77. package/dist/invocation/target.js +0 -1
  78. package/dist/invocation/trace.d.ts +0 -1
  79. package/dist/invocation/trace.js +0 -1
  80. package/dist/invocation/version.d.ts +0 -1
  81. package/dist/invocation/version.js +0 -1
  82. package/dist/invocation/websocket/binary.d.ts +0 -1
  83. package/dist/invocation/websocket/binary.js +4 -3
  84. package/dist/invocation/websocket/index.d.ts +0 -1
  85. package/dist/invocation/websocket/index.js +0 -1
  86. package/dist/invocation/websocket/subprotocol.d.ts +0 -1
  87. package/dist/invocation/websocket/subprotocol.js +0 -1
  88. package/dist/issuer/configuration.d.ts +1 -2
  89. package/dist/issuer/configuration.js +0 -1
  90. package/dist/issuer/error.d.ts +0 -1
  91. package/dist/issuer/error.js +0 -1
  92. package/dist/issuer/exchange.d.ts +0 -1
  93. package/dist/issuer/exchange.js +0 -1
  94. package/dist/issuer/hosted.d.ts +1 -2
  95. package/dist/issuer/hosted.js +0 -1
  96. package/dist/issuer/index.d.ts +0 -1
  97. package/dist/issuer/index.js +0 -1
  98. package/dist/issuer/key-set.d.ts +1 -2
  99. package/dist/issuer/key-set.js +3 -3
  100. package/dist/issuer/paths.d.ts +0 -1
  101. package/dist/issuer/paths.js +0 -1
  102. package/dist/issuer/url.d.ts +1 -2
  103. package/dist/issuer/url.js +3 -3
  104. package/dist/publication/bindings/callable.d.ts +1 -2
  105. package/dist/publication/bindings/callable.js +8 -6
  106. package/dist/publication/bindings/index.d.ts +0 -1
  107. package/dist/publication/bindings/index.js +0 -1
  108. package/dist/publication/bindings/invocation.d.ts +0 -1
  109. package/dist/publication/bindings/invocation.js +0 -1
  110. package/dist/publication/bindings/view.d.ts +1 -2
  111. package/dist/publication/bindings/view.js +2 -3
  112. package/dist/publication/bundle-admission.d.ts +4 -0
  113. package/dist/publication/bundle-admission.js +65 -0
  114. package/dist/publication/bundle-descriptor.d.ts +9 -0
  115. package/dist/publication/bundle-descriptor.js +19 -0
  116. package/dist/publication/bundle-evidence.d.ts +3 -0
  117. package/dist/publication/bundle-evidence.js +13 -0
  118. package/dist/publication/bundle.d.ts +5 -12
  119. package/dist/publication/bundle.js +8 -29
  120. package/dist/publication/content.d.ts +0 -1
  121. package/dist/publication/content.js +0 -1
  122. package/dist/publication/declaration.d.ts +11 -0
  123. package/dist/publication/declaration.js +1 -0
  124. package/dist/publication/delivery/attestation.d.ts +0 -1
  125. package/dist/publication/delivery/attestation.js +0 -1
  126. package/dist/publication/delivery/claims.d.ts +8 -8
  127. package/dist/publication/delivery/claims.js +6 -7
  128. package/dist/publication/delivery/delivery.d.ts +1 -2
  129. package/dist/publication/delivery/delivery.js +1 -2
  130. package/dist/publication/delivery/error.d.ts +0 -1
  131. package/dist/publication/delivery/error.js +0 -1
  132. package/dist/publication/delivery/index.d.ts +0 -1
  133. package/dist/publication/delivery/index.js +0 -1
  134. package/dist/publication/delivery/limits.d.ts +0 -1
  135. package/dist/publication/delivery/limits.js +0 -1
  136. package/dist/publication/delivery/request.d.ts +3 -4
  137. package/dist/publication/delivery/request.js +4 -4
  138. package/dist/publication/delivery-declaration.d.ts +4 -0
  139. package/dist/publication/delivery-declaration.js +25 -0
  140. package/dist/publication/delivery-endpoint.d.ts +0 -1
  141. package/dist/publication/delivery-endpoint.js +0 -1
  142. package/dist/publication/error.d.ts +0 -1
  143. package/dist/publication/error.js +0 -1
  144. package/dist/publication/etag.d.ts +0 -1
  145. package/dist/publication/etag.js +0 -1
  146. package/dist/publication/index.d.ts +6 -3
  147. package/dist/publication/index.js +4 -2
  148. package/dist/publication/manifest.d.ts +2 -3
  149. package/dist/publication/manifest.js +10 -6
  150. package/dist/publication/publication.d.ts +3 -6
  151. package/dist/publication/publication.js +11 -68
  152. package/dist/publication/reference.d.ts +3 -3
  153. package/dist/publication/reference.js +7 -7
  154. package/dist/publication/requirements.d.ts +4 -4
  155. package/dist/publication/requirements.js +34 -34
  156. package/dist/publication/route.d.ts +6 -2
  157. package/dist/publication/route.js +31 -9
  158. package/dist/publication/schema.d.ts +3 -4
  159. package/dist/publication/schema.js +3 -4
  160. package/dist/routes/admission.d.ts +3 -0
  161. package/dist/routes/admission.js +89 -0
  162. package/dist/routes/binding.d.ts +6 -0
  163. package/dist/routes/binding.js +27 -0
  164. package/dist/routes/collision.d.ts +2 -0
  165. package/dist/routes/collision.js +16 -0
  166. package/dist/routes/compiler.d.ts +8 -0
  167. package/dist/routes/compiler.js +50 -0
  168. package/dist/routes/credential.d.ts +7 -8
  169. package/dist/routes/credential.js +7 -8
  170. package/dist/routes/decode.d.ts +4 -3
  171. package/dist/routes/decode.js +42 -42
  172. package/dist/routes/encode.d.ts +3 -3
  173. package/dist/routes/encode.js +31 -33
  174. package/dist/routes/error-response.d.ts +0 -1
  175. package/dist/routes/error-response.js +0 -1
  176. package/dist/routes/error.d.ts +0 -1
  177. package/dist/routes/error.js +0 -1
  178. package/dist/routes/evidence.d.ts +5 -0
  179. package/dist/routes/evidence.js +38 -0
  180. package/dist/routes/index.d.ts +9 -3
  181. package/dist/routes/index.js +6 -3
  182. package/dist/routes/mapping.d.ts +1 -2
  183. package/dist/routes/mapping.js +4 -13
  184. package/dist/routes/match.d.ts +3 -4
  185. package/dist/routes/match.js +3 -5
  186. package/dist/routes/placement.d.ts +5 -0
  187. package/dist/routes/placement.js +18 -0
  188. package/dist/routes/plan.d.ts +24 -0
  189. package/dist/routes/plan.js +1 -0
  190. package/dist/routes/release-unavailable.d.ts +8 -0
  191. package/dist/routes/release-unavailable.js +32 -0
  192. package/dist/routes/request.d.ts +0 -1
  193. package/dist/routes/request.js +3 -2
  194. package/dist/routes/reservation.d.ts +3 -4
  195. package/dist/routes/reservation.js +8 -5
  196. package/dist/routes/routing.d.ts +0 -1
  197. package/dist/routes/routing.js +0 -1
  198. package/dist/routes/scalar.d.ts +4 -4
  199. package/dist/routes/scalar.js +14 -11
  200. package/dist/routes/select.d.ts +2 -3
  201. package/dist/routes/select.js +2 -3
  202. package/dist/routes/stream.d.ts +0 -1
  203. package/dist/routes/stream.js +0 -1
  204. package/dist/routes/table.d.ts +9 -0
  205. package/dist/routes/table.js +1 -0
  206. package/dist/routes/target.d.ts +13 -0
  207. package/dist/routes/target.js +3 -0
  208. package/dist/routes/template.d.ts +0 -1
  209. package/dist/routes/template.js +0 -1
  210. package/dist/runtime/artifact.d.ts +3 -4
  211. package/dist/runtime/artifact.js +5 -6
  212. package/dist/runtime/index.d.ts +0 -1
  213. package/dist/runtime/index.js +0 -1
  214. package/dist/schema/index.d.ts +0 -1
  215. package/dist/schema/index.js +0 -1
  216. package/dist/schema/installation/codec.d.ts +4 -0
  217. package/dist/schema/installation/codec.js +70 -0
  218. package/dist/schema/installation/index.d.ts +2 -1
  219. package/dist/schema/installation/index.js +1 -1
  220. package/dist/schema/installation/introspection/codec.d.ts +3 -3
  221. package/dist/schema/installation/introspection/codec.js +144 -204
  222. package/dist/schema/installation/introspection/index.d.ts +2 -3
  223. package/dist/schema/installation/introspection/index.js +1 -2
  224. package/dist/schema/installation/introspection/result.d.ts +18 -23
  225. package/dist/schema/installation/introspection/result.js +0 -1
  226. package/dist/schema/installation/result.d.ts +9 -0
  227. package/dist/schema/installation/result.js +1 -0
  228. package/package.json +116 -13
  229. package/dist/artifact/index.d.ts.map +0 -1
  230. package/dist/artifact/index.js.map +0 -1
  231. package/dist/artifact/ref.d.ts.map +0 -1
  232. package/dist/artifact/ref.js.map +0 -1
  233. package/dist/codecs/codec.d.ts.map +0 -1
  234. package/dist/codecs/codec.js.map +0 -1
  235. package/dist/codecs/index.d.ts.map +0 -1
  236. package/dist/codecs/index.js.map +0 -1
  237. package/dist/codecs/json.d.ts.map +0 -1
  238. package/dist/codecs/json.js.map +0 -1
  239. package/dist/codecs/media-types.d.ts.map +0 -1
  240. package/dist/codecs/media-types.js.map +0 -1
  241. package/dist/codecs/msgpack.d.ts.map +0 -1
  242. package/dist/codecs/msgpack.js.map +0 -1
  243. package/dist/errors/codes.d.ts.map +0 -1
  244. package/dist/errors/codes.js.map +0 -1
  245. package/dist/errors/http-status.d.ts.map +0 -1
  246. package/dist/errors/http-status.js.map +0 -1
  247. package/dist/errors/index.d.ts.map +0 -1
  248. package/dist/errors/index.js.map +0 -1
  249. package/dist/errors/payload.d.ts.map +0 -1
  250. package/dist/errors/payload.js.map +0 -1
  251. package/dist/errors/protocol-error.d.ts.map +0 -1
  252. package/dist/errors/protocol-error.js.map +0 -1
  253. package/dist/errors/reason.d.ts.map +0 -1
  254. package/dist/errors/reason.js.map +0 -1
  255. package/dist/index.d.ts.map +0 -1
  256. package/dist/index.js.map +0 -1
  257. package/dist/invocation/admission.d.ts.map +0 -1
  258. package/dist/invocation/admission.js.map +0 -1
  259. package/dist/invocation/binary.d.ts.map +0 -1
  260. package/dist/invocation/binary.js.map +0 -1
  261. package/dist/invocation/binding-codecs.d.ts.map +0 -1
  262. package/dist/invocation/binding-codecs.js.map +0 -1
  263. package/dist/invocation/cancellation.d.ts.map +0 -1
  264. package/dist/invocation/cancellation.js.map +0 -1
  265. package/dist/invocation/correlation.d.ts.map +0 -1
  266. package/dist/invocation/correlation.js.map +0 -1
  267. package/dist/invocation/delegate.d.ts.map +0 -1
  268. package/dist/invocation/delegate.js.map +0 -1
  269. package/dist/invocation/http/binary.d.ts.map +0 -1
  270. package/dist/invocation/http/binary.js.map +0 -1
  271. package/dist/invocation/http/index.d.ts.map +0 -1
  272. package/dist/invocation/http/index.js.map +0 -1
  273. package/dist/invocation/http/negotiation.d.ts.map +0 -1
  274. package/dist/invocation/http/negotiation.js.map +0 -1
  275. package/dist/invocation/http/stream.d.ts.map +0 -1
  276. package/dist/invocation/http/stream.js.map +0 -1
  277. package/dist/invocation/http/trace.d.ts.map +0 -1
  278. package/dist/invocation/http/trace.js.map +0 -1
  279. package/dist/invocation/idempotency.d.ts.map +0 -1
  280. package/dist/invocation/idempotency.js.map +0 -1
  281. package/dist/invocation/index.d.ts.map +0 -1
  282. package/dist/invocation/index.js.map +0 -1
  283. package/dist/invocation/miss.d.ts.map +0 -1
  284. package/dist/invocation/miss.js.map +0 -1
  285. package/dist/invocation/redirect.d.ts.map +0 -1
  286. package/dist/invocation/redirect.js.map +0 -1
  287. package/dist/invocation/request.d.ts.map +0 -1
  288. package/dist/invocation/request.js.map +0 -1
  289. package/dist/invocation/response.d.ts.map +0 -1
  290. package/dist/invocation/response.js.map +0 -1
  291. package/dist/invocation/routing.d.ts.map +0 -1
  292. package/dist/invocation/routing.js.map +0 -1
  293. package/dist/invocation/schema.d.ts.map +0 -1
  294. package/dist/invocation/schema.js.map +0 -1
  295. package/dist/invocation/service-reason.d.ts.map +0 -1
  296. package/dist/invocation/service-reason.js.map +0 -1
  297. package/dist/invocation/stale-route.d.ts.map +0 -1
  298. package/dist/invocation/stale-route.js.map +0 -1
  299. package/dist/invocation/stream.d.ts.map +0 -1
  300. package/dist/invocation/stream.js.map +0 -1
  301. package/dist/invocation/target.d.ts.map +0 -1
  302. package/dist/invocation/target.js.map +0 -1
  303. package/dist/invocation/trace.d.ts.map +0 -1
  304. package/dist/invocation/trace.js.map +0 -1
  305. package/dist/invocation/version.d.ts.map +0 -1
  306. package/dist/invocation/version.js.map +0 -1
  307. package/dist/invocation/websocket/binary.d.ts.map +0 -1
  308. package/dist/invocation/websocket/binary.js.map +0 -1
  309. package/dist/invocation/websocket/index.d.ts.map +0 -1
  310. package/dist/invocation/websocket/index.js.map +0 -1
  311. package/dist/invocation/websocket/subprotocol.d.ts.map +0 -1
  312. package/dist/invocation/websocket/subprotocol.js.map +0 -1
  313. package/dist/issuer/configuration.d.ts.map +0 -1
  314. package/dist/issuer/configuration.js.map +0 -1
  315. package/dist/issuer/error.d.ts.map +0 -1
  316. package/dist/issuer/error.js.map +0 -1
  317. package/dist/issuer/exchange.d.ts.map +0 -1
  318. package/dist/issuer/exchange.js.map +0 -1
  319. package/dist/issuer/hosted.d.ts.map +0 -1
  320. package/dist/issuer/hosted.js.map +0 -1
  321. package/dist/issuer/index.d.ts.map +0 -1
  322. package/dist/issuer/index.js.map +0 -1
  323. package/dist/issuer/key-set.d.ts.map +0 -1
  324. package/dist/issuer/key-set.js.map +0 -1
  325. package/dist/issuer/paths.d.ts.map +0 -1
  326. package/dist/issuer/paths.js.map +0 -1
  327. package/dist/issuer/url.d.ts.map +0 -1
  328. package/dist/issuer/url.js.map +0 -1
  329. package/dist/publication/bindings/callable.d.ts.map +0 -1
  330. package/dist/publication/bindings/callable.js.map +0 -1
  331. package/dist/publication/bindings/index.d.ts.map +0 -1
  332. package/dist/publication/bindings/index.js.map +0 -1
  333. package/dist/publication/bindings/invocation.d.ts.map +0 -1
  334. package/dist/publication/bindings/invocation.js.map +0 -1
  335. package/dist/publication/bindings/view.d.ts.map +0 -1
  336. package/dist/publication/bindings/view.js.map +0 -1
  337. package/dist/publication/bundle.d.ts.map +0 -1
  338. package/dist/publication/bundle.js.map +0 -1
  339. package/dist/publication/content.d.ts.map +0 -1
  340. package/dist/publication/content.js.map +0 -1
  341. package/dist/publication/delivery/attestation.d.ts.map +0 -1
  342. package/dist/publication/delivery/attestation.js.map +0 -1
  343. package/dist/publication/delivery/claims.d.ts.map +0 -1
  344. package/dist/publication/delivery/claims.js.map +0 -1
  345. package/dist/publication/delivery/delivery.d.ts.map +0 -1
  346. package/dist/publication/delivery/delivery.js.map +0 -1
  347. package/dist/publication/delivery/error.d.ts.map +0 -1
  348. package/dist/publication/delivery/error.js.map +0 -1
  349. package/dist/publication/delivery/index.d.ts.map +0 -1
  350. package/dist/publication/delivery/index.js.map +0 -1
  351. package/dist/publication/delivery/limits.d.ts.map +0 -1
  352. package/dist/publication/delivery/limits.js.map +0 -1
  353. package/dist/publication/delivery/request.d.ts.map +0 -1
  354. package/dist/publication/delivery/request.js.map +0 -1
  355. package/dist/publication/delivery-endpoint.d.ts.map +0 -1
  356. package/dist/publication/delivery-endpoint.js.map +0 -1
  357. package/dist/publication/error.d.ts.map +0 -1
  358. package/dist/publication/error.js.map +0 -1
  359. package/dist/publication/etag.d.ts.map +0 -1
  360. package/dist/publication/etag.js.map +0 -1
  361. package/dist/publication/index.d.ts.map +0 -1
  362. package/dist/publication/index.js.map +0 -1
  363. package/dist/publication/manifest.d.ts.map +0 -1
  364. package/dist/publication/manifest.js.map +0 -1
  365. package/dist/publication/publication.d.ts.map +0 -1
  366. package/dist/publication/publication.js.map +0 -1
  367. package/dist/publication/reference.d.ts.map +0 -1
  368. package/dist/publication/reference.js.map +0 -1
  369. package/dist/publication/requirements.d.ts.map +0 -1
  370. package/dist/publication/requirements.js.map +0 -1
  371. package/dist/publication/route.d.ts.map +0 -1
  372. package/dist/publication/route.js.map +0 -1
  373. package/dist/publication/schema.d.ts.map +0 -1
  374. package/dist/publication/schema.js.map +0 -1
  375. package/dist/routes/compile.d.ts +0 -5
  376. package/dist/routes/compile.d.ts.map +0 -1
  377. package/dist/routes/compile.js +0 -69
  378. package/dist/routes/compile.js.map +0 -1
  379. package/dist/routes/credential.d.ts.map +0 -1
  380. package/dist/routes/credential.js.map +0 -1
  381. package/dist/routes/decode.d.ts.map +0 -1
  382. package/dist/routes/decode.js.map +0 -1
  383. package/dist/routes/encode.d.ts.map +0 -1
  384. package/dist/routes/encode.js.map +0 -1
  385. package/dist/routes/error-response.d.ts.map +0 -1
  386. package/dist/routes/error-response.js.map +0 -1
  387. package/dist/routes/error.d.ts.map +0 -1
  388. package/dist/routes/error.js.map +0 -1
  389. package/dist/routes/index.d.ts.map +0 -1
  390. package/dist/routes/index.js.map +0 -1
  391. package/dist/routes/mapping.d.ts.map +0 -1
  392. package/dist/routes/mapping.js.map +0 -1
  393. package/dist/routes/match.d.ts.map +0 -1
  394. package/dist/routes/match.js.map +0 -1
  395. package/dist/routes/request.d.ts.map +0 -1
  396. package/dist/routes/request.js.map +0 -1
  397. package/dist/routes/reservation.d.ts.map +0 -1
  398. package/dist/routes/reservation.js.map +0 -1
  399. package/dist/routes/route.d.ts +0 -13
  400. package/dist/routes/route.d.ts.map +0 -1
  401. package/dist/routes/route.js +0 -6
  402. package/dist/routes/route.js.map +0 -1
  403. package/dist/routes/routing.d.ts.map +0 -1
  404. package/dist/routes/routing.js.map +0 -1
  405. package/dist/routes/scalar.d.ts.map +0 -1
  406. package/dist/routes/scalar.js.map +0 -1
  407. package/dist/routes/select.d.ts.map +0 -1
  408. package/dist/routes/select.js.map +0 -1
  409. package/dist/routes/stream.d.ts.map +0 -1
  410. package/dist/routes/stream.js.map +0 -1
  411. package/dist/routes/template.d.ts.map +0 -1
  412. package/dist/routes/template.js.map +0 -1
  413. package/dist/runtime/artifact.d.ts.map +0 -1
  414. package/dist/runtime/artifact.js.map +0 -1
  415. package/dist/runtime/index.d.ts.map +0 -1
  416. package/dist/runtime/index.js.map +0 -1
  417. package/dist/schema/index.d.ts.map +0 -1
  418. package/dist/schema/index.js.map +0 -1
  419. package/dist/schema/installation/index.d.ts.map +0 -1
  420. package/dist/schema/installation/index.js.map +0 -1
  421. package/dist/schema/installation/introspection/codec.d.ts.map +0 -1
  422. package/dist/schema/installation/introspection/codec.js.map +0 -1
  423. package/dist/schema/installation/introspection/index.d.ts.map +0 -1
  424. package/dist/schema/installation/introspection/index.js.map +0 -1
  425. package/dist/schema/installation/introspection/result.d.ts.map +0 -1
  426. package/dist/schema/installation/introspection/result.js.map +0 -1
@@ -1,4 +1,5 @@
1
- import * as auth from '@astrale-os/kernel-core/auth';
1
+ import { AuthValueError } from '@astrale-os/kernel-core/auth/error';
2
+ import { accept as acceptIssuer } from '@astrale-os/kernel-core/auth/issuer';
2
3
  import { fail } from './error.js';
3
4
  import { NONCE_MAX_LENGTH, NONCE_MIN_LENGTH } from './limits.js';
4
5
  /** Admit the exact request representation accepted by a Delivery transport boundary. */
@@ -34,10 +35,10 @@ export function acceptRequest(input) {
34
35
  }
35
36
  let kernel;
36
37
  try {
37
- kernel = auth.issuer.accept(value.kernel);
38
+ kernel = acceptIssuer(value.kernel);
38
39
  }
39
40
  catch (cause) {
40
- if (cause instanceof auth.AuthValueError) {
41
+ if (cause instanceof AuthValueError) {
41
42
  return fail('DELIVERY_REQUEST_INVALID', 'Delivery request issuer is invalid.', cause);
42
43
  }
43
44
  throw cause;
@@ -49,4 +50,3 @@ export function acceptRequest(input) {
49
50
  etag: value.etag,
50
51
  });
51
52
  }
52
- //# sourceMappingURL=request.js.map
@@ -0,0 +1,4 @@
1
+ import type { DeliveryDeclaration } from './declaration.js';
2
+ import type { Endpoint } from './delivery-endpoint.js';
3
+ /** Place one provider-neutral Delivery declaration beneath an exact serving issuer. */
4
+ export declare function placeDelivery(input: DeliveryDeclaration, issuer: string, bundleHref: string): Endpoint;
@@ -0,0 +1,25 @@
1
+ import { admitEndpoint } from './delivery-endpoint.js';
2
+ import { fail } from './error.js';
3
+ /** Place one provider-neutral Delivery declaration beneath an exact serving issuer. */
4
+ export function placeDelivery(input, issuer, bundleHref) {
5
+ if (input === null || typeof input !== 'object' || Array.isArray(input)) {
6
+ fail('PUBLICATION_INVALID', 'Delivery declaration is invalid.');
7
+ }
8
+ if (Reflect.ownKeys(input).some((key) => key !== 'path' && key !== 'authentication') ||
9
+ typeof input.path !== 'string' ||
10
+ !input.path.startsWith('/')) {
11
+ fail('PUBLICATION_INVALID', 'Delivery declaration is invalid.');
12
+ }
13
+ let href;
14
+ try {
15
+ const url = new URL(input.path, issuer);
16
+ if (url.origin !== new URL(issuer).origin || url.search !== '' || url.hash !== '') {
17
+ fail('PUBLICATION_INVALID', 'Delivery declaration must be one relative path.');
18
+ }
19
+ href = url.href;
20
+ }
21
+ catch (cause) {
22
+ return fail('PUBLICATION_INVALID', 'Delivery declaration path is invalid.', cause);
23
+ }
24
+ return admitEndpoint({ href, method: 'POST', authentication: input.authentication }, bundleHref);
25
+ }
@@ -9,4 +9,3 @@ export interface Endpoint {
9
9
  readonly authentication: Authentication;
10
10
  }
11
11
  export declare function admitEndpoint(input: unknown, publicUrl: string): Endpoint | undefined;
12
- //# sourceMappingURL=delivery-endpoint.d.ts.map
@@ -20,4 +20,3 @@ export function admitEndpoint(input, publicUrl) {
20
20
  authentication: Object.freeze({ kind: authentication.kind }),
21
21
  });
22
22
  }
23
- //# sourceMappingURL=delivery-endpoint.js.map
@@ -5,4 +5,3 @@ export declare class PublicationError extends Error {
5
5
  constructor(code: PublicationErrorCode, message: string, options?: ErrorOptions);
6
6
  }
7
7
  export declare function fail(code: PublicationErrorCode, message: string, cause?: unknown): never;
8
- //# sourceMappingURL=error.d.ts.map
@@ -9,4 +9,3 @@ export class PublicationError extends Error {
9
9
  export function fail(code, message, cause) {
10
10
  throw new PublicationError(code, message, cause === undefined ? undefined : { cause });
11
11
  }
12
- //# sourceMappingURL=error.js.map
@@ -4,4 +4,3 @@ export type Etag = Sha256Digest;
4
4
  export declare function admitDigest(input: unknown): Sha256Digest;
5
5
  export declare function computeEtag(input: Content): Etag;
6
6
  export declare function sha256Hex(input: Uint8Array): string;
7
- //# sourceMappingURL=etag.d.ts.map
@@ -77,4 +77,3 @@ const ROUND = new Uint32Array([
77
77
  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
78
78
  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
79
79
  ]);
80
- //# sourceMappingURL=etag.js.map
@@ -1,6 +1,10 @@
1
- export { MEDIA_TYPE, PATH, url, seal, accept, encode, acceptBundle, decodeBundle, type Publication, } from './publication.js';
1
+ export { MEDIA_TYPE, PATH, url, seal, accept, encode, type Publication } from './publication.js';
2
+ export { acceptBundle, decodeBundle } from './bundle-admission.js';
2
3
  export { BUNDLE_MEDIA_TYPE, describeBundle, type BundleDescriptor } from './bundle.js';
4
+ export { verifyBundleBytes } from './bundle-evidence.js';
3
5
  export type { Content } from './content.js';
6
+ export type { Declaration, DeliveryDeclaration } from './declaration.js';
7
+ export { placeDelivery } from './delivery-declaration.js';
4
8
  export type { Etag, Sha256Digest } from './etag.js';
5
9
  export { PublicationError, type PublicationErrorCode } from './error.js';
6
10
  export * as delivery from './delivery/index.js';
@@ -8,7 +12,6 @@ export type { Authentication as DeliveryAuthentication, Endpoint as DeliveryEndp
8
12
  export type { Manifest } from './manifest.js';
9
13
  export { ClassOperationOrder, admitRequirements, validateRequirements, type CapabilityAdminRequirements, type CapabilityRequirements, type ClassCapabilityRequirement, type ClassOperation, type NonEmpty, type PublicationRequirements, } from './requirements.js';
10
14
  export { acceptReference, compareReference, compareReferences, matchesReference, reference, type PublicationRef, type PublicationReferenceRelation, } from './reference.js';
11
- export type { BodyPick, CredentialSource, HttpMethod, HttpRoute, RouteBody, RouteHeaders, SingleCredentialSource, } from './route.js';
15
+ export type { BodyPick, CredentialSource, HttpMethod, HttpRoute, HttpRouteDeclaration, RouteBody, RouteHeaders, SingleCredentialSource, } from './route.js';
12
16
  export type { Schema } from './schema.js';
13
17
  export { acceptInvocationEndpoints, type CallableBinding, type InvocationEndpoints, type ViewBinding, } from './bindings/index.js';
14
- //# sourceMappingURL=index.d.ts.map
@@ -1,8 +1,10 @@
1
- export { MEDIA_TYPE, PATH, url, seal, accept, encode, acceptBundle, decodeBundle, } from './publication.js';
1
+ export { MEDIA_TYPE, PATH, url, seal, accept, encode } from './publication.js';
2
+ export { acceptBundle, decodeBundle } from './bundle-admission.js';
2
3
  export { BUNDLE_MEDIA_TYPE, describeBundle } from './bundle.js';
4
+ export { verifyBundleBytes } from './bundle-evidence.js';
5
+ export { placeDelivery } from './delivery-declaration.js';
3
6
  export { PublicationError } from './error.js';
4
7
  export * as delivery from './delivery/index.js';
5
8
  export { ClassOperationOrder, admitRequirements, validateRequirements, } from './requirements.js';
6
9
  export { acceptReference, compareReference, compareReferences, matchesReference, reference, } from './reference.js';
7
10
  export { acceptInvocationEndpoints, } from './bindings/index.js';
8
- //# sourceMappingURL=index.js.map
@@ -1,7 +1,6 @@
1
- import { Ref } from '@astrale-os/kernel-dsl/v1';
1
+ import { type ViewRef } from '@astrale-os/kernel-dsl/v1/addressing';
2
2
  export interface Manifest {
3
3
  readonly logo?: string;
4
- readonly entrypoint?: Ref.View;
4
+ readonly entrypoint?: ViewRef;
5
5
  }
6
6
  export declare function admitManifest(input: unknown): Manifest | undefined;
7
- //# sourceMappingURL=manifest.d.ts.map
@@ -1,4 +1,4 @@
1
- import { Ref } from '@astrale-os/kernel-dsl/v1';
1
+ import { acceptDefinitionRef } from '@astrale-os/kernel-dsl/v1/addressing';
2
2
  import { exact, record } from './content.js';
3
3
  import { fail } from './error.js';
4
4
  export function admitManifest(input) {
@@ -11,16 +11,20 @@ export function admitManifest(input) {
11
11
  }
12
12
  let entrypoint;
13
13
  if (value.entrypoint !== undefined) {
14
- if (typeof value.entrypoint !== 'string' ||
15
- !Ref.isDefinition(value.entrypoint) ||
16
- !value.entrypoint.startsWith('view.')) {
14
+ let ref;
15
+ try {
16
+ ref = acceptDefinitionRef(value.entrypoint);
17
+ }
18
+ catch (cause) {
19
+ return fail('PUBLICATION_INVALID', 'Manifest entrypoint must be a root View reference.', cause);
20
+ }
21
+ if (ref.kind !== 'view') {
17
22
  fail('PUBLICATION_INVALID', 'Manifest entrypoint must be a root View reference.');
18
23
  }
19
- entrypoint = value.entrypoint;
24
+ entrypoint = ref;
20
25
  }
21
26
  return Object.freeze({
22
27
  ...(value.logo === undefined ? {} : { logo: value.logo }),
23
28
  ...(entrypoint === undefined ? {} : { entrypoint }),
24
29
  });
25
30
  }
26
- //# sourceMappingURL=manifest.js.map
@@ -1,5 +1,5 @@
1
- import * as auth from '@astrale-os/kernel-core/auth';
2
- import { Key, bundle as dslBundle } from '@astrale-os/kernel-dsl/v1';
1
+ import { type IssuerId } from '@astrale-os/kernel-core/auth/issuer';
2
+ import { Key } from '@astrale-os/kernel-dsl/v1/addressing';
3
3
  import type { CallableBinding, ViewBinding } from './bindings/index.js';
4
4
  import type { Content } from './content.js';
5
5
  import type { Endpoint as DeliveryEndpoint } from './delivery-endpoint.js';
@@ -17,7 +17,7 @@ export interface Publication {
17
17
  readonly version: 2;
18
18
  readonly origin: Key.Origin;
19
19
  readonly identity: {
20
- readonly issuer: auth.IssuerId;
20
+ readonly issuer: IssuerId;
21
21
  readonly subject: string;
22
22
  };
23
23
  readonly etag: Etag;
@@ -34,6 +34,3 @@ export interface Publication {
34
34
  export declare function seal(input: Content): Publication;
35
35
  export declare function accept(input: unknown): Publication;
36
36
  export declare function encode(input: Publication): Uint8Array;
37
- export declare function acceptBundle(input: Publication, artifact: unknown): dslBundle.Bundle;
38
- export declare function decodeBundle(input: Publication, bytes: Uint8Array): dslBundle.Bundle;
39
- //# sourceMappingURL=publication.d.ts.map
@@ -1,14 +1,14 @@
1
- import * as auth from '@astrale-os/kernel-core/auth';
2
- import { Key, Ref, bundle as dslBundle, schema as dslSchema, } from '@astrale-os/kernel-dsl/v1';
1
+ import { AuthValueError } from '@astrale-os/kernel-core/auth/error';
2
+ import { accept as acceptIssuerId } from '@astrale-os/kernel-core/auth/issuer';
3
+ import { Key, patterns } from '@astrale-os/kernel-dsl/v1/addressing';
3
4
  import * as portable from '@astrale-os/kernel-dsl/value';
4
5
  import { admitCallableBinding, admitViewBinding } from './bindings/index.js';
5
- import { acceptBundleValue, decodeBundleValue, verifyBundleBytes } from './bundle.js';
6
6
  import { array, deepFreeze, exact, record, unique } from './content.js';
7
7
  import { admitEndpoint as admitDeliveryEndpoint } from './delivery-endpoint.js';
8
8
  import { fail } from './error.js';
9
9
  import { admitDigest, computeEtag } from './etag.js';
10
10
  import { admitManifest } from './manifest.js';
11
- import { admitRequirements, validateRequirements } from './requirements.js';
11
+ import { admitRequirements } from './requirements.js';
12
12
  import { admitRoute } from './route.js';
13
13
  import { admitSchema } from './schema.js';
14
14
  export const PATH = '/.well-known/astrale/domain.json';
@@ -45,17 +45,6 @@ export function accept(input) {
45
45
  export function encode(input) {
46
46
  return portable.json.encode(input);
47
47
  }
48
- export function acceptBundle(input, artifact) {
49
- const accepted = acceptBundleValue(artifact);
50
- verifyBundleBytes(input, dslBundle.encode(accepted));
51
- validateBundleInventory(input, accepted);
52
- return accepted;
53
- }
54
- export function decodeBundle(input, bytes) {
55
- const decoded = decodeBundleValue(input, bytes);
56
- validateBundleInventory(input, decoded);
57
- return decoded;
58
- }
59
48
  function acceptPublication(input, requireEtag) {
60
49
  const value = record(input, 'PUBLICATION_INVALID', 'Expected a Publication object.');
61
50
  exact(value, [
@@ -74,7 +63,7 @@ function acceptPublication(input, requireEtag) {
74
63
  if (value.format !== 'astrale.domain.publication' || value.version !== 2) {
75
64
  fail('PUBLICATION_INVALID', 'Unsupported Publication format or version.');
76
65
  }
77
- if (typeof value.origin !== 'string' || !dslSchema.patterns.origin.test(value.origin)) {
66
+ if (typeof value.origin !== 'string' || !patterns.origin.test(value.origin)) {
78
67
  fail('PUBLICATION_INVALID', 'Publication origin is invalid.');
79
68
  }
80
69
  const origin = value.origin;
@@ -101,7 +90,10 @@ function acceptPublication(input, requireEtag) {
101
90
  }
102
91
  }
103
92
  if (manifest?.entrypoint !== undefined) {
104
- const key = Key.of(origin, manifest.entrypoint);
93
+ if (manifest.entrypoint.origin !== origin) {
94
+ fail('PUBLICATION_VIEW_INVALID', 'Manifest entrypoint must belong to the root origin.');
95
+ }
96
+ const key = Key.of(manifest.entrypoint);
105
97
  if (!views.some(({ view }) => view === key)) {
106
98
  fail('PUBLICATION_VIEW_INVALID', 'Manifest entrypoint must have a published View binding.');
107
99
  }
@@ -124,60 +116,12 @@ function acceptPublication(input, requireEtag) {
124
116
  ...(delivery === undefined ? {} : { delivery }),
125
117
  });
126
118
  }
127
- function validateBundleInventory(publication, bundle) {
128
- const root = bundle.root;
129
- if (root.origin !== publication.origin ||
130
- dslSchema.revision(root) !== publication.schema.revision) {
131
- fail('PUBLICATION_INVALID', 'Bundle root does not match the Publication schema.');
132
- }
133
- validateRequirements(root, bundle.closure, publication.requirements);
134
- const callables = concreteCallables(root);
135
- const publishedCallables = new Set(publication.bindings.callables.map(({ callable }) => callable));
136
- if (publishedCallables.size !== callables.size ||
137
- [...callables].some((key) => !publishedCallables.has(key))) {
138
- fail('PUBLICATION_BINDING_INVALID', 'Callable bindings must exhaust the root Domain.');
139
- }
140
- const views = new Set(Object.keys(root.views).map((name) => Key.of(root.origin, Ref.definition('view', name))));
141
- const publishedViews = new Set(publication.bindings.views.map(({ view }) => view));
142
- if (publishedViews.size !== views.size || [...views].some((key) => !publishedViews.has(key))) {
143
- fail('PUBLICATION_VIEW_INVALID', 'View bindings must exhaust the root Domain.');
144
- }
145
- if (publication.manifest?.entrypoint !== undefined &&
146
- root.views[Ref.member(publication.manifest.entrypoint)] === undefined) {
147
- fail('PUBLICATION_INVALID', 'Manifest entrypoint does not exist in the root schema.');
148
- }
149
- for (const route of publication.routes) {
150
- if (!callables.has(route.callable)) {
151
- fail('PUBLICATION_ROUTE_INVALID', `Route ${route.name} names an unknown callable.`);
152
- }
153
- }
154
- }
155
- function concreteCallables(root) {
156
- const result = new Set();
157
- for (const name of Object.keys(root.functions)) {
158
- result.add(Key.of(root.origin, Ref.definition('function', name)));
159
- }
160
- addConcreteMethods(result, root.origin, 'class', root.classes);
161
- addConcreteMethods(result, root.origin, 'interface', root.interfaces);
162
- return result;
163
- }
164
- function addConcreteMethods(result, origin, kind, definitions) {
165
- for (const [owner, declaration] of Object.entries(definitions)) {
166
- if (declaration.family !== 'node')
167
- continue;
168
- for (const [name, method] of Object.entries(declaration.methods)) {
169
- if (method.inheritance === 'abstract')
170
- continue;
171
- result.add(Key.of(origin, Ref.method(Ref.definition(kind, owner), name)));
172
- }
173
- }
174
- }
175
119
  function admitIssuer(input) {
176
120
  try {
177
- return auth.issuer.accept(String(input));
121
+ return acceptIssuerId(String(input));
178
122
  }
179
123
  catch (cause) {
180
- if (cause instanceof auth.AuthValueError) {
124
+ if (cause instanceof AuthValueError) {
181
125
  return fail('PUBLICATION_INVALID', 'Publication issuer is invalid.', cause);
182
126
  }
183
127
  throw cause;
@@ -187,4 +131,3 @@ function withoutEtag(input) {
187
131
  const { etag: _etag, ...content } = input;
188
132
  return content;
189
133
  }
190
- //# sourceMappingURL=publication.js.map
@@ -1,11 +1,12 @@
1
- import { schema as dslSchema, type Key } from '@astrale-os/kernel-dsl/v1';
1
+ import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
2
+ import { type Key } from '@astrale-os/kernel-dsl/v1/addressing';
2
3
  import type { Etag } from './etag.js';
3
4
  import type { Publication } from './publication.js';
4
5
  /** Compact untrusted projection that witnesses one exact Publication. */
5
6
  export interface PublicationRef {
6
7
  readonly origin: Key.Origin;
7
8
  readonly identity: Publication['identity'];
8
- readonly revision: dslSchema.Revision;
9
+ readonly revision: Revision;
9
10
  readonly etag: Etag;
10
11
  }
11
12
  export type PublicationReferenceRelation = 'exact' | 'same-schema' | 'schema-drift' | 'identity-drift' | 'origin-drift';
@@ -14,4 +15,3 @@ export declare function acceptReference(input: unknown): PublicationRef;
14
15
  export declare function compareReferences(input: PublicationRef, expected: PublicationRef): PublicationReferenceRelation;
15
16
  export declare function compareReference(input: Publication, expected: PublicationRef): PublicationReferenceRelation;
16
17
  export declare function matchesReference(input: Publication, expected: PublicationRef): boolean;
17
- //# sourceMappingURL=reference.d.ts.map
@@ -1,5 +1,6 @@
1
- import * as auth from '@astrale-os/kernel-core/auth';
2
- import { schema as dslSchema } from '@astrale-os/kernel-dsl/v1';
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';
3
4
  import { deepFreeze, exact, record } from './content.js';
4
5
  import { fail } from './error.js';
5
6
  import { admitDigest } from './etag.js';
@@ -14,7 +15,7 @@ export function reference(input) {
14
15
  export function acceptReference(input) {
15
16
  const value = record(input, 'PUBLICATION_INVALID', 'Publication reference is invalid.');
16
17
  exact(value, ['origin', 'identity', 'revision', 'etag'], 'PUBLICATION_INVALID');
17
- if (typeof value.origin !== 'string' || !dslSchema.patterns.origin.test(value.origin)) {
18
+ if (typeof value.origin !== 'string' || !patterns.origin.test(value.origin)) {
18
19
  fail('PUBLICATION_INVALID', 'Publication reference origin is invalid.');
19
20
  }
20
21
  const origin = value.origin;
@@ -24,7 +25,7 @@ export function acceptReference(input) {
24
25
  if (identity.subject !== origin) {
25
26
  fail('PUBLICATION_INVALID', 'Publication reference subject must equal its root origin.');
26
27
  }
27
- if (typeof value.revision !== 'string' || !dslSchema.patterns.revision.test(value.revision)) {
28
+ if (typeof value.revision !== 'string' || !patterns.revision.test(value.revision)) {
28
29
  fail('PUBLICATION_INVALID', 'Publication reference revision is invalid.');
29
30
  }
30
31
  return deepFreeze({
@@ -56,13 +57,12 @@ function acceptIssuer(input) {
56
57
  fail('PUBLICATION_INVALID', 'Publication reference issuer is invalid.');
57
58
  }
58
59
  try {
59
- return auth.issuer.accept(input);
60
+ return acceptIssuerId(input);
60
61
  }
61
62
  catch (cause) {
62
- if (cause instanceof auth.AuthValueError) {
63
+ if (cause instanceof AuthValueError) {
63
64
  return fail('PUBLICATION_INVALID', 'Publication reference issuer is invalid.', cause);
64
65
  }
65
66
  throw cause;
66
67
  }
67
68
  }
68
- //# sourceMappingURL=reference.js.map
@@ -1,10 +1,11 @@
1
- import type { AuthorityOperation } from '@astrale-os/kernel-core/schema';
2
- import type { Key as SemanticKey, schema } from '@astrale-os/kernel-dsl/v1';
1
+ import type { AuthorityOperation } from '@astrale-os/kernel-core/schema/authority/operation';
2
+ import type { schema } from '@astrale-os/kernel-dsl/v1';
3
+ import type { ClassRef, Key as SemanticKey } from '@astrale-os/kernel-dsl/v1/addressing';
3
4
  export type NonEmpty<Value> = readonly [Value, ...Value[]];
4
5
  export declare const ClassOperationOrder: readonly ["create", "read", "traverse", "update", "delete"];
5
6
  export type ClassOperation = (typeof ClassOperationOrder)[number];
6
7
  export interface ClassCapabilityRequirement {
7
- readonly class: schema.ClassRef;
8
+ readonly class: ClassRef;
8
9
  readonly operations: NonEmpty<ClassOperation>;
9
10
  }
10
11
  export interface CapabilityAdminRequirements {
@@ -23,4 +24,3 @@ export interface PublicationRequirements {
23
24
  export declare function admitRequirements(input: unknown): PublicationRequirements;
24
25
  /** Bind explicit capability targets to exact functional dependencies in the bundle closure. */
25
26
  export declare function validateRequirements(root: schema.DomainSchema, closure: readonly schema.DomainSchema[], requirements: PublicationRequirements): void;
26
- //# sourceMappingURL=requirements.d.ts.map
@@ -1,5 +1,6 @@
1
- import { AuthorityOperationOrder } from '@astrale-os/kernel-core/schema';
2
- import { Key, Ref, schema as dslSchema } from '@astrale-os/kernel-dsl/v1';
1
+ import { AuthorityOperationOrder } from '@astrale-os/kernel-core/schema/authority/operation';
2
+ import { acceptDefinitionRef, callableAddress, Key } from '@astrale-os/kernel-dsl/v1/addressing';
3
+ import { revision } from '@astrale-os/kernel-dsl/v1/schema/revision';
3
4
  import { array, deepFreeze, exact, record, unique } from './content.js';
4
5
  import { fail } from './error.js';
5
6
  export const ClassOperationOrder = Object.freeze([
@@ -46,17 +47,15 @@ export function admitRequirements(input) {
46
47
  export function validateRequirements(root, closure, requirements) {
47
48
  const dependencies = exactDependencyClosure(root, closure);
48
49
  for (const callable of requirements.capabilities.functions ?? []) {
49
- validateForeignTarget(root, dependencies, callable, 'Function');
50
- const dependency = dependencies.get(Key.origin(callable));
51
- const reference = Key.ref(callable);
52
- if (!hasCallable(dependency, reference)) {
50
+ const dependency = capabilityOwner(root, dependencies, callable, 'Function');
51
+ if (!hasCallable(dependency, callable)) {
53
52
  fail('PUBLICATION_INVALID', 'Function capability requirement names an unknown dependency callable.');
54
53
  }
55
54
  }
56
55
  for (const requirement of requirements.capabilities.classes ?? []) {
57
- const key = Key.fromSchema(requirement.class);
58
- validateForeignTarget(root, dependencies, key, 'Class');
59
- if (dependencies.get(requirement.class.origin).classes[requirement.class.name] === undefined) {
56
+ const key = Key.of(requirement.class);
57
+ const dependency = capabilityOwner(root, dependencies, key, 'Class');
58
+ if (dependency.classes[requirement.class.name] === undefined) {
60
59
  fail('PUBLICATION_INVALID', 'Class capability requirement names an unknown dependency Class.');
61
60
  }
62
61
  }
@@ -65,9 +64,9 @@ function exactDependencyClosure(root, closure) {
65
64
  const supplied = new Map(closure.map((dependency) => [dependency.origin, dependency]));
66
65
  const reachable = new Map();
67
66
  const visit = (owner) => {
68
- for (const coordinate of owner.dependencies) {
67
+ for (const coordinate of Object.values(owner.dependencies)) {
69
68
  const dependency = supplied.get(coordinate.origin);
70
- if (dependency === undefined || dslSchema.revision(dependency) !== coordinate.revision) {
69
+ if (dependency === undefined || revision(dependency) !== coordinate.revision) {
71
70
  fail('PUBLICATION_INVALID', 'Publication Bundle omits an exact dependency.');
72
71
  }
73
72
  if (reachable.has(dependency.origin))
@@ -83,8 +82,10 @@ function admitCallable(input) {
83
82
  if (typeof input !== 'string' || !Key.is(input)) {
84
83
  return fail('PUBLICATION_INVALID', 'Function capability reference is invalid.');
85
84
  }
86
- const reference = Key.ref(input);
87
- if (!reference.startsWith('function.') && !Ref.isMethod(reference)) {
85
+ try {
86
+ callableAddress(input);
87
+ }
88
+ catch {
88
89
  return fail('PUBLICATION_INVALID', 'Function capability reference must name a Function or Method.');
89
90
  }
90
91
  return input;
@@ -122,16 +123,16 @@ function admitAuthorityOperations(input, kind) {
122
123
  return Object.freeze(values);
123
124
  }
124
125
  function admitClassRef(input) {
125
- const value = record(input, 'PUBLICATION_INVALID', 'Class capability reference is invalid.');
126
- exact(value, ['kind', 'name', 'origin'], 'PUBLICATION_INVALID');
127
- if (value.kind !== 'class' ||
128
- typeof value.origin !== 'string' ||
129
- !dslSchema.patterns.origin.test(value.origin) ||
130
- typeof value.name !== 'string' ||
131
- !dslSchema.patterns.memberName.test(value.name)) {
126
+ let value;
127
+ try {
128
+ value = acceptDefinitionRef(input);
129
+ }
130
+ catch {
132
131
  fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
133
132
  }
134
- return Object.freeze({ origin: value.origin, kind: 'class', name: value.name });
133
+ if (value.kind !== 'class')
134
+ fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
135
+ return value;
135
136
  }
136
137
  function nonEmpty(input, label) {
137
138
  const values = [...array(input, 'PUBLICATION_INVALID')];
@@ -157,24 +158,23 @@ function compare(left, right) {
157
158
  return left < right ? -1 : left > right ? 1 : 0;
158
159
  }
159
160
  function classKey(input) {
160
- return String(Key.fromSchema(input));
161
+ return String(Key.of(input));
161
162
  }
162
- function validateForeignTarget(root, dependencies, key, label) {
163
+ function capabilityOwner(root, dependencies, key, label) {
163
164
  const origin = Key.origin(key);
164
165
  if (origin === root.origin)
165
166
  fail('PUBLICATION_INVALID', `${label} capability target cannot be local.`);
166
- if (!dependencies.has(origin)) {
167
+ const dependency = dependencies.get(origin);
168
+ if (dependency === undefined) {
167
169
  fail('PUBLICATION_INVALID', `${label} capability target must belong to the exact dependency closure.`);
168
170
  }
171
+ return dependency;
169
172
  }
170
- function hasCallable(dependency, reference) {
171
- if (reference.startsWith('function.')) {
172
- return dependency.functions[Ref.member(reference)] !== undefined;
173
- }
174
- const ownerKind = Ref.namespace(reference);
175
- const owner = Ref.member(reference);
176
- const method = Ref.child(reference);
177
- const declaration = ownerKind === 'class' ? dependency.classes[owner] : dependency.interfaces[owner];
178
- return declaration?.family === 'node' && declaration.methods[method] !== undefined;
173
+ function hasCallable(dependency, callable) {
174
+ const coordinate = callableAddress(callable);
175
+ if (coordinate.kind === 'function')
176
+ return dependency.functions[coordinate.name] !== undefined;
177
+ const declaration = dependency.classes[coordinate.owner.name];
178
+ const method = declaration?.kind === 'node' ? declaration.methods[coordinate.name] : undefined;
179
+ return method !== undefined && method.inheritance !== 'abstract';
179
180
  }
180
- //# sourceMappingURL=requirements.js.map
@@ -1,4 +1,4 @@
1
- import { type Key } from '@astrale-os/kernel-dsl/v1';
1
+ import { type Key } from '@astrale-os/kernel-dsl/v1/addressing';
2
2
  export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | '*';
3
3
  export type SingleCredentialSource = {
4
4
  readonly in: 'header';
@@ -29,5 +29,9 @@ export interface HttpRoute {
29
29
  readonly body?: RouteBody;
30
30
  readonly credential?: CredentialSource;
31
31
  }
32
+ /** Provider-neutral build input; placement replaces path with the canonical absolute href. */
33
+ export interface HttpRouteDeclaration extends Omit<HttpRoute, 'href'> {
34
+ readonly path: string;
35
+ }
32
36
  export declare function admitRoute(input: unknown, origin: string): HttpRoute;
33
- //# sourceMappingURL=route.d.ts.map
37
+ export declare function admitRouteDeclaration(input: unknown, origin: string): HttpRouteDeclaration;
@@ -1,14 +1,39 @@
1
- import { schema as dslSchema } from '@astrale-os/kernel-dsl/v1';
1
+ import { patterns } from '@astrale-os/kernel-dsl/v1/addressing';
2
2
  import { admitCallableKey } from './bindings/callable.js';
3
3
  import { absoluteHttpUrl, deepFreeze, exact, record } from './content.js';
4
4
  import { fail } from './error.js';
5
5
  const ROUTE_NAME = /^[A-Za-z][A-Za-z0-9_-]{0,63}$/u;
6
6
  export function admitRoute(input, origin) {
7
7
  const value = record(input, 'PUBLICATION_ROUTE_INVALID', 'Published HTTP route is invalid.');
8
+ const common = admitRouteCommon(value, origin, 'href');
9
+ return deepFreeze({
10
+ ...common,
11
+ href: absoluteHttpUrl(value.href, false, 'PUBLICATION_ROUTE_INVALID', true),
12
+ });
13
+ }
14
+ export function admitRouteDeclaration(input, origin) {
15
+ const value = record(input, 'PUBLICATION_ROUTE_INVALID', 'HTTP route declaration is invalid.');
16
+ const common = admitRouteCommon(value, origin, 'path');
17
+ if (typeof value.path !== 'string' || !value.path.startsWith('/')) {
18
+ fail('PUBLICATION_ROUTE_INVALID', 'Route declaration path must be relative to one issuer.');
19
+ }
20
+ let parsed;
21
+ try {
22
+ parsed = new URL(value.path, 'https://placement.invalid');
23
+ }
24
+ catch (cause) {
25
+ return fail('PUBLICATION_ROUTE_INVALID', 'Route declaration path is invalid.', cause);
26
+ }
27
+ if (parsed.origin !== 'https://placement.invalid' || parsed.search !== '' || parsed.hash !== '') {
28
+ fail('PUBLICATION_ROUTE_INVALID', 'Route declaration path cannot select an origin, query, or fragment.');
29
+ }
30
+ return deepFreeze({ ...common, path: value.path });
31
+ }
32
+ function admitRouteCommon(value, origin, location) {
8
33
  exact(value, [
9
34
  'name',
10
35
  'callable',
11
- 'href',
36
+ location,
12
37
  'method',
13
38
  'requestMethod',
14
39
  'default',
@@ -29,22 +54,20 @@ export function admitRoute(input, origin) {
29
54
  fail('PUBLICATION_ROUTE_INVALID', 'Route default may only be true.');
30
55
  }
31
56
  if (value.requestMethod !== undefined &&
32
- (typeof value.requestMethod !== 'string' ||
33
- !dslSchema.patterns.memberName.test(value.requestMethod))) {
57
+ (typeof value.requestMethod !== 'string' || !patterns.memberName.test(value.requestMethod))) {
34
58
  fail('PUBLICATION_ROUTE_INVALID', 'Route request-method mapping is invalid.');
35
59
  }
36
60
  if (value.receiver !== undefined &&
37
- (typeof value.receiver !== 'string' || !dslSchema.patterns.memberName.test(value.receiver))) {
61
+ (typeof value.receiver !== 'string' || !patterns.memberName.test(value.receiver))) {
38
62
  fail('PUBLICATION_ROUTE_INVALID', 'Route receiver is invalid.');
39
63
  }
40
64
  const query = stringRecord(value.query);
41
65
  const headers = headerRecord(value.headers);
42
66
  const body = admitBody(value.body);
43
67
  const credential = admitCredential(value.credential);
44
- return deepFreeze({
68
+ return {
45
69
  name: value.name,
46
70
  callable,
47
- href: absoluteHttpUrl(value.href, false, 'PUBLICATION_ROUTE_INVALID', true),
48
71
  method: value.method,
49
72
  ...(value.requestMethod === undefined ? {} : { requestMethod: value.requestMethod }),
50
73
  ...(value.default === true ? { default: true } : {}),
@@ -53,7 +76,7 @@ export function admitRoute(input, origin) {
53
76
  ...(headers === undefined ? {} : { headers }),
54
77
  ...(body === undefined ? {} : { body }),
55
78
  ...(credential === undefined ? {} : { credential }),
56
- });
79
+ };
57
80
  }
58
81
  function admitCredential(input) {
59
82
  if (input === undefined)
@@ -129,4 +152,3 @@ function stringRecord(input) {
129
152
  }
130
153
  return Object.freeze(output);
131
154
  }
132
- //# sourceMappingURL=route.js.map
@@ -1,8 +1,7 @@
1
- import { schema as dslSchema } from '@astrale-os/kernel-dsl/v1';
2
- import type { BundleDescriptor } from './bundle.js';
1
+ import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
2
+ import type { BundleDescriptor } from './bundle-descriptor.js';
3
3
  export interface Schema {
4
- readonly revision: dslSchema.Revision;
4
+ readonly revision: Revision;
5
5
  readonly bundle: BundleDescriptor;
6
6
  }
7
7
  export declare function admitSchema(input: unknown): Schema;
8
- //# sourceMappingURL=schema.d.ts.map