@astrale-os/kernel-protocol 0.5.0-beta.3 → 0.5.0-beta.30

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 (428) hide show
  1. package/CHANGELOG.md +663 -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 +2 -3
  31. package/dist/invocation/admission.js +5 -8
  32. package/dist/invocation/binary.d.ts +1 -1
  33. package/dist/invocation/binary.js +14 -2
  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 +0 -1
  37. package/dist/invocation/cancellation.js +0 -1
  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 +3 -2
  43. package/dist/invocation/http/binary.js +4 -2
  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 +0 -1
  55. package/dist/invocation/identity.js +0 -1
  56. package/dist/invocation/index.d.ts +1 -2
  57. package/dist/invocation/index.js +1 -2
  58. package/dist/invocation/miss.d.ts +0 -1
  59. package/dist/invocation/miss.js +0 -1
  60. package/dist/invocation/redirect.d.ts +9 -8
  61. package/dist/invocation/redirect.js +6 -5
  62. package/dist/invocation/request.d.ts +0 -1
  63. package/dist/invocation/request.js +0 -1
  64. package/dist/invocation/response.d.ts +0 -1
  65. package/dist/invocation/response.js +0 -1
  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 +0 -1
  73. package/dist/invocation/stale-route.js +0 -1
  74. package/dist/invocation/stream.d.ts +0 -1
  75. package/dist/invocation/stream.js +0 -1
  76. package/dist/invocation/target.d.ts +2 -3
  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 +2 -2
  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 +1 -2
  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 +8 -2
  111. package/dist/publication/bindings/view.js +112 -4
  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 +8 -5
  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 +16 -71
  152. package/dist/publication/reference.d.ts +3 -3
  153. package/dist/publication/reference.js +7 -7
  154. package/dist/publication/requirements.d.ts +7 -6
  155. package/dist/publication/requirements.js +49 -47
  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/identity.d.ts.map +0 -1
  282. package/dist/invocation/identity.js.map +0 -1
  283. package/dist/invocation/index.d.ts.map +0 -1
  284. package/dist/invocation/index.js.map +0 -1
  285. package/dist/invocation/miss.d.ts.map +0 -1
  286. package/dist/invocation/miss.js.map +0 -1
  287. package/dist/invocation/redirect.d.ts.map +0 -1
  288. package/dist/invocation/redirect.js.map +0 -1
  289. package/dist/invocation/request.d.ts.map +0 -1
  290. package/dist/invocation/request.js.map +0 -1
  291. package/dist/invocation/response.d.ts.map +0 -1
  292. package/dist/invocation/response.js.map +0 -1
  293. package/dist/invocation/routing.d.ts.map +0 -1
  294. package/dist/invocation/routing.js.map +0 -1
  295. package/dist/invocation/schema.d.ts.map +0 -1
  296. package/dist/invocation/schema.js.map +0 -1
  297. package/dist/invocation/service-reason.d.ts.map +0 -1
  298. package/dist/invocation/service-reason.js.map +0 -1
  299. package/dist/invocation/stale-route.d.ts.map +0 -1
  300. package/dist/invocation/stale-route.js.map +0 -1
  301. package/dist/invocation/stream.d.ts.map +0 -1
  302. package/dist/invocation/stream.js.map +0 -1
  303. package/dist/invocation/target.d.ts.map +0 -1
  304. package/dist/invocation/target.js.map +0 -1
  305. package/dist/invocation/trace.d.ts.map +0 -1
  306. package/dist/invocation/trace.js.map +0 -1
  307. package/dist/invocation/version.d.ts.map +0 -1
  308. package/dist/invocation/version.js.map +0 -1
  309. package/dist/invocation/websocket/binary.d.ts.map +0 -1
  310. package/dist/invocation/websocket/binary.js.map +0 -1
  311. package/dist/invocation/websocket/index.d.ts.map +0 -1
  312. package/dist/invocation/websocket/index.js.map +0 -1
  313. package/dist/invocation/websocket/subprotocol.d.ts.map +0 -1
  314. package/dist/invocation/websocket/subprotocol.js.map +0 -1
  315. package/dist/issuer/configuration.d.ts.map +0 -1
  316. package/dist/issuer/configuration.js.map +0 -1
  317. package/dist/issuer/error.d.ts.map +0 -1
  318. package/dist/issuer/error.js.map +0 -1
  319. package/dist/issuer/exchange.d.ts.map +0 -1
  320. package/dist/issuer/exchange.js.map +0 -1
  321. package/dist/issuer/hosted.d.ts.map +0 -1
  322. package/dist/issuer/hosted.js.map +0 -1
  323. package/dist/issuer/index.d.ts.map +0 -1
  324. package/dist/issuer/index.js.map +0 -1
  325. package/dist/issuer/key-set.d.ts.map +0 -1
  326. package/dist/issuer/key-set.js.map +0 -1
  327. package/dist/issuer/paths.d.ts.map +0 -1
  328. package/dist/issuer/paths.js.map +0 -1
  329. package/dist/issuer/url.d.ts.map +0 -1
  330. package/dist/issuer/url.js.map +0 -1
  331. package/dist/publication/bindings/callable.d.ts.map +0 -1
  332. package/dist/publication/bindings/callable.js.map +0 -1
  333. package/dist/publication/bindings/index.d.ts.map +0 -1
  334. package/dist/publication/bindings/index.js.map +0 -1
  335. package/dist/publication/bindings/invocation.d.ts.map +0 -1
  336. package/dist/publication/bindings/invocation.js.map +0 -1
  337. package/dist/publication/bindings/view.d.ts.map +0 -1
  338. package/dist/publication/bindings/view.js.map +0 -1
  339. package/dist/publication/bundle.d.ts.map +0 -1
  340. package/dist/publication/bundle.js.map +0 -1
  341. package/dist/publication/content.d.ts.map +0 -1
  342. package/dist/publication/content.js.map +0 -1
  343. package/dist/publication/delivery/attestation.d.ts.map +0 -1
  344. package/dist/publication/delivery/attestation.js.map +0 -1
  345. package/dist/publication/delivery/claims.d.ts.map +0 -1
  346. package/dist/publication/delivery/claims.js.map +0 -1
  347. package/dist/publication/delivery/delivery.d.ts.map +0 -1
  348. package/dist/publication/delivery/delivery.js.map +0 -1
  349. package/dist/publication/delivery/error.d.ts.map +0 -1
  350. package/dist/publication/delivery/error.js.map +0 -1
  351. package/dist/publication/delivery/index.d.ts.map +0 -1
  352. package/dist/publication/delivery/index.js.map +0 -1
  353. package/dist/publication/delivery/limits.d.ts.map +0 -1
  354. package/dist/publication/delivery/limits.js.map +0 -1
  355. package/dist/publication/delivery/request.d.ts.map +0 -1
  356. package/dist/publication/delivery/request.js.map +0 -1
  357. package/dist/publication/delivery-endpoint.d.ts.map +0 -1
  358. package/dist/publication/delivery-endpoint.js.map +0 -1
  359. package/dist/publication/error.d.ts.map +0 -1
  360. package/dist/publication/error.js.map +0 -1
  361. package/dist/publication/etag.d.ts.map +0 -1
  362. package/dist/publication/etag.js.map +0 -1
  363. package/dist/publication/index.d.ts.map +0 -1
  364. package/dist/publication/index.js.map +0 -1
  365. package/dist/publication/manifest.d.ts.map +0 -1
  366. package/dist/publication/manifest.js.map +0 -1
  367. package/dist/publication/publication.d.ts.map +0 -1
  368. package/dist/publication/publication.js.map +0 -1
  369. package/dist/publication/reference.d.ts.map +0 -1
  370. package/dist/publication/reference.js.map +0 -1
  371. package/dist/publication/requirements.d.ts.map +0 -1
  372. package/dist/publication/requirements.js.map +0 -1
  373. package/dist/publication/route.d.ts.map +0 -1
  374. package/dist/publication/route.js.map +0 -1
  375. package/dist/publication/schema.d.ts.map +0 -1
  376. package/dist/publication/schema.js.map +0 -1
  377. package/dist/routes/compile.d.ts +0 -5
  378. package/dist/routes/compile.d.ts.map +0 -1
  379. package/dist/routes/compile.js +0 -69
  380. package/dist/routes/compile.js.map +0 -1
  381. package/dist/routes/credential.d.ts.map +0 -1
  382. package/dist/routes/credential.js.map +0 -1
  383. package/dist/routes/decode.d.ts.map +0 -1
  384. package/dist/routes/decode.js.map +0 -1
  385. package/dist/routes/encode.d.ts.map +0 -1
  386. package/dist/routes/encode.js.map +0 -1
  387. package/dist/routes/error-response.d.ts.map +0 -1
  388. package/dist/routes/error-response.js.map +0 -1
  389. package/dist/routes/error.d.ts.map +0 -1
  390. package/dist/routes/error.js.map +0 -1
  391. package/dist/routes/index.d.ts.map +0 -1
  392. package/dist/routes/index.js.map +0 -1
  393. package/dist/routes/mapping.d.ts.map +0 -1
  394. package/dist/routes/mapping.js.map +0 -1
  395. package/dist/routes/match.d.ts.map +0 -1
  396. package/dist/routes/match.js.map +0 -1
  397. package/dist/routes/request.d.ts.map +0 -1
  398. package/dist/routes/request.js.map +0 -1
  399. package/dist/routes/reservation.d.ts.map +0 -1
  400. package/dist/routes/reservation.js.map +0 -1
  401. package/dist/routes/route.d.ts +0 -13
  402. package/dist/routes/route.d.ts.map +0 -1
  403. package/dist/routes/route.js +0 -6
  404. package/dist/routes/route.js.map +0 -1
  405. package/dist/routes/routing.d.ts.map +0 -1
  406. package/dist/routes/routing.js.map +0 -1
  407. package/dist/routes/scalar.d.ts.map +0 -1
  408. package/dist/routes/scalar.js.map +0 -1
  409. package/dist/routes/select.d.ts.map +0 -1
  410. package/dist/routes/select.js.map +0 -1
  411. package/dist/routes/stream.d.ts.map +0 -1
  412. package/dist/routes/stream.js.map +0 -1
  413. package/dist/routes/template.d.ts.map +0 -1
  414. package/dist/routes/template.js.map +0 -1
  415. package/dist/runtime/artifact.d.ts.map +0 -1
  416. package/dist/runtime/artifact.js.map +0 -1
  417. package/dist/runtime/index.d.ts.map +0 -1
  418. package/dist/runtime/index.js.map +0 -1
  419. package/dist/schema/index.d.ts.map +0 -1
  420. package/dist/schema/index.js.map +0 -1
  421. package/dist/schema/installation/index.d.ts.map +0 -1
  422. package/dist/schema/installation/index.js.map +0 -1
  423. package/dist/schema/installation/introspection/codec.d.ts.map +0 -1
  424. package/dist/schema/installation/introspection/codec.js.map +0 -1
  425. package/dist/schema/installation/introspection/index.d.ts.map +0 -1
  426. package/dist/schema/installation/introspection/index.js.map +0 -1
  427. package/dist/schema/installation/introspection/result.d.ts.map +0 -1
  428. package/dist/schema/installation/introspection/result.js.map +0 -1
@@ -1,14 +1,17 @@
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';
7
11
  export type { Authentication as DeliveryAuthentication, Endpoint as DeliveryEndpoint, } from './delivery-endpoint.js';
8
12
  export type { Manifest } from './manifest.js';
9
- export { ClassOperationOrder, admitRequirements, validateRequirements, type CapabilityAdminRequirements, type CapabilityRequirements, type ClassCapabilityRequirement, type ClassOperation, type NonEmpty, type PublicationRequirements, } from './requirements.js';
13
+ export { ClassOperationOrder, admitRequirements, validateRequirements, type CapabilityAuthorityRequirements, 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
- export { acceptInvocationEndpoints, type CallableBinding, type InvocationEndpoints, type ViewBinding, } from './bindings/index.js';
14
- //# sourceMappingURL=index.d.ts.map
17
+ export { acceptInvocationEndpoints, type CallableBinding, type IframeRequirements, type InvocationEndpoints, type ViewBinding, } from './bindings/index.js';
@@ -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,15 @@
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
+ import { canonicalizeViewBinding } from './bindings/view.js';
6
7
  import { array, deepFreeze, exact, record, unique } from './content.js';
7
8
  import { admitEndpoint as admitDeliveryEndpoint } from './delivery-endpoint.js';
8
9
  import { fail } from './error.js';
9
10
  import { admitDigest, computeEtag } from './etag.js';
10
11
  import { admitManifest } from './manifest.js';
11
- import { admitRequirements, validateRequirements } from './requirements.js';
12
+ import { admitRequirements } from './requirements.js';
12
13
  import { admitRoute } from './route.js';
13
14
  import { admitSchema } from './schema.js';
14
15
  export const PATH = '/.well-known/astrale/domain.json';
@@ -33,7 +34,8 @@ export function url(input) {
33
34
  return `${admitted.replace(/\/+$/u, '')}${PATH}`;
34
35
  }
35
36
  export function seal(input) {
36
- return acceptPublication({ ...input, etag: computeEtag(input) }, false);
37
+ const canonical = withoutEtag(acceptPublication({ ...input, etag: 'canonicalizing' }, false, true));
38
+ return acceptPublication({ ...canonical, etag: computeEtag(canonical) }, false);
37
39
  }
38
40
  export function accept(input) {
39
41
  const publication = acceptPublication(input, true);
@@ -45,18 +47,7 @@ export function accept(input) {
45
47
  export function encode(input) {
46
48
  return portable.json.encode(input);
47
49
  }
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
- function acceptPublication(input, requireEtag) {
50
+ function acceptPublication(input, requireEtag, canonicalizeViews = false) {
60
51
  const value = record(input, 'PUBLICATION_INVALID', 'Expected a Publication object.');
61
52
  exact(value, [
62
53
  'format',
@@ -74,7 +65,7 @@ function acceptPublication(input, requireEtag) {
74
65
  if (value.format !== 'astrale.domain.publication' || value.version !== 2) {
75
66
  fail('PUBLICATION_INVALID', 'Unsupported Publication format or version.');
76
67
  }
77
- if (typeof value.origin !== 'string' || !dslSchema.patterns.origin.test(value.origin)) {
68
+ if (typeof value.origin !== 'string' || !patterns.origin.test(value.origin)) {
78
69
  fail('PUBLICATION_INVALID', 'Publication origin is invalid.');
79
70
  }
80
71
  const origin = value.origin;
@@ -91,7 +82,7 @@ function acceptPublication(input, requireEtag) {
91
82
  exact(bindingSet, ['callables', 'views'], 'PUBLICATION_BINDING_INVALID');
92
83
  const callables = array(bindingSet.callables, 'PUBLICATION_BINDING_INVALID').map((entry) => admitCallableBinding(entry, origin));
93
84
  unique(callables.map(({ callable }) => callable), 'PUBLICATION_BINDING_INVALID', 'callable binding');
94
- const views = array(bindingSet.views, 'PUBLICATION_VIEW_INVALID').map((entry) => admitViewBinding(entry, origin));
85
+ const views = array(bindingSet.views, 'PUBLICATION_VIEW_INVALID').map((entry) => canonicalizeViews ? canonicalizeViewBinding(entry, origin) : admitViewBinding(entry, origin));
95
86
  unique(views.map(({ view }) => view), 'PUBLICATION_VIEW_INVALID', 'View binding');
96
87
  const routes = array(value.routes, 'PUBLICATION_ROUTE_INVALID').map((entry) => admitRoute(entry, origin));
97
88
  unique(routes.map(({ name }) => name), 'PUBLICATION_ROUTE_INVALID', 'route name');
@@ -101,7 +92,10 @@ function acceptPublication(input, requireEtag) {
101
92
  }
102
93
  }
103
94
  if (manifest?.entrypoint !== undefined) {
104
- const key = Key.of(origin, manifest.entrypoint);
95
+ if (manifest.entrypoint.origin !== origin) {
96
+ fail('PUBLICATION_VIEW_INVALID', 'Manifest entrypoint must belong to the root origin.');
97
+ }
98
+ const key = Key.of(manifest.entrypoint);
105
99
  if (!views.some(({ view }) => view === key)) {
106
100
  fail('PUBLICATION_VIEW_INVALID', 'Manifest entrypoint must have a published View binding.');
107
101
  }
@@ -124,60 +118,12 @@ function acceptPublication(input, requireEtag) {
124
118
  ...(delivery === undefined ? {} : { delivery }),
125
119
  });
126
120
  }
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
121
  function admitIssuer(input) {
176
122
  try {
177
- return auth.issuer.accept(String(input));
123
+ return acceptIssuerId(String(input));
178
124
  }
179
125
  catch (cause) {
180
- if (cause instanceof auth.AuthValueError) {
126
+ if (cause instanceof AuthValueError) {
181
127
  return fail('PUBLICATION_INVALID', 'Publication issuer is invalid.', cause);
182
128
  }
183
129
  throw cause;
@@ -187,4 +133,3 @@ function withoutEtag(input) {
187
133
  const { etag: _etag, ...content } = input;
188
134
  return content;
189
135
  }
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,20 +1,22 @@
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
- export interface CapabilityAdminRequirements {
11
+ export interface CapabilityAuthorityRequirements {
11
12
  readonly grant?: NonEmpty<AuthorityOperation>;
12
13
  readonly revoke?: NonEmpty<AuthorityOperation>;
13
14
  }
14
15
  export interface CapabilityRequirements {
15
16
  readonly functions?: NonEmpty<SemanticKey.Callable>;
16
17
  readonly classes?: NonEmpty<ClassCapabilityRequirement>;
17
- readonly admin?: CapabilityAdminRequirements;
18
+ readonly authority?: CapabilityAuthorityRequirements;
19
+ readonly admin?: never;
18
20
  }
19
21
  export interface PublicationRequirements {
20
22
  readonly capabilities: CapabilityRequirements;
@@ -23,4 +25,3 @@ export interface PublicationRequirements {
23
25
  export declare function admitRequirements(input: unknown): PublicationRequirements;
24
26
  /** Bind explicit capability targets to exact functional dependencies in the bundle closure. */
25
27
  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([
@@ -14,7 +15,7 @@ export function admitRequirements(input) {
14
15
  const requirements = record(input, 'PUBLICATION_INVALID', 'Publication requirements are invalid.');
15
16
  exact(requirements, ['capabilities'], 'PUBLICATION_INVALID');
16
17
  const capabilities = record(requirements.capabilities, 'PUBLICATION_INVALID', 'Publication capability requirements are invalid.');
17
- exact(capabilities, ['admin', 'classes', 'functions'], 'PUBLICATION_INVALID');
18
+ exact(capabilities, ['authority', 'classes', 'functions'], 'PUBLICATION_INVALID');
18
19
  const functions = capabilities.functions === undefined
19
20
  ? undefined
20
21
  : nonEmpty(capabilities.functions, 'Function capability requirements').map(admitCallable);
@@ -29,7 +30,9 @@ export function admitRequirements(input) {
29
30
  unique(classes.map((entry) => classKey(entry.class)), 'PUBLICATION_INVALID', 'Class capability requirement');
30
31
  canonical(classes, (left, right) => compare(classKey(left.class), classKey(right.class)), 'Class capability requirements');
31
32
  }
32
- const admin = capabilities.admin === undefined ? undefined : admitAdminRequirements(capabilities.admin);
33
+ const authority = capabilities.authority === undefined
34
+ ? undefined
35
+ : admitAuthorityRequirements(capabilities.authority);
33
36
  return deepFreeze({
34
37
  capabilities: {
35
38
  ...(functions === undefined
@@ -38,7 +41,7 @@ export function admitRequirements(input) {
38
41
  ...(classes === undefined
39
42
  ? {}
40
43
  : { classes: Object.freeze(classes) }),
41
- ...(admin === undefined ? {} : { admin }),
44
+ ...(authority === undefined ? {} : { authority }),
42
45
  },
43
46
  });
44
47
  }
@@ -46,17 +49,15 @@ export function admitRequirements(input) {
46
49
  export function validateRequirements(root, closure, requirements) {
47
50
  const dependencies = exactDependencyClosure(root, closure);
48
51
  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)) {
52
+ const dependency = capabilityOwner(root, dependencies, callable, 'Function');
53
+ if (!hasCallable(dependency, callable)) {
53
54
  fail('PUBLICATION_INVALID', 'Function capability requirement names an unknown dependency callable.');
54
55
  }
55
56
  }
56
57
  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) {
58
+ const key = Key.of(requirement.class);
59
+ const dependency = capabilityOwner(root, dependencies, key, 'Class');
60
+ if (dependency.classes[requirement.class.name] === undefined) {
60
61
  fail('PUBLICATION_INVALID', 'Class capability requirement names an unknown dependency Class.');
61
62
  }
62
63
  }
@@ -65,9 +66,9 @@ function exactDependencyClosure(root, closure) {
65
66
  const supplied = new Map(closure.map((dependency) => [dependency.origin, dependency]));
66
67
  const reachable = new Map();
67
68
  const visit = (owner) => {
68
- for (const coordinate of owner.dependencies) {
69
+ for (const coordinate of Object.values(owner.dependencies)) {
69
70
  const dependency = supplied.get(coordinate.origin);
70
- if (dependency === undefined || dslSchema.revision(dependency) !== coordinate.revision) {
71
+ if (dependency === undefined || revision(dependency) !== coordinate.revision) {
71
72
  fail('PUBLICATION_INVALID', 'Publication Bundle omits an exact dependency.');
72
73
  }
73
74
  if (reachable.has(dependency.origin))
@@ -83,8 +84,10 @@ function admitCallable(input) {
83
84
  if (typeof input !== 'string' || !Key.is(input)) {
84
85
  return fail('PUBLICATION_INVALID', 'Function capability reference is invalid.');
85
86
  }
86
- const reference = Key.ref(input);
87
- if (!reference.startsWith('function.') && !Ref.isMethod(reference)) {
87
+ try {
88
+ callableAddress(input);
89
+ }
90
+ catch {
88
91
  return fail('PUBLICATION_INVALID', 'Function capability reference must name a Function or Method.');
89
92
  }
90
93
  return input;
@@ -100,14 +103,14 @@ function admitClassRequirement(input) {
100
103
  operations: Object.freeze(operations),
101
104
  });
102
105
  }
103
- function admitAdminRequirements(input) {
104
- const admin = record(input, 'PUBLICATION_INVALID', 'Administrative capability requirements are invalid.');
105
- exact(admin, ['grant', 'revoke'], 'PUBLICATION_INVALID');
106
- if (admin.grant === undefined && admin.revoke === undefined) {
107
- fail('PUBLICATION_INVALID', 'Administrative capability requirements cannot be empty.');
106
+ function admitAuthorityRequirements(input) {
107
+ const authority = record(input, 'PUBLICATION_INVALID', 'Authority capability requirements are invalid.');
108
+ exact(authority, ['grant', 'revoke'], 'PUBLICATION_INVALID');
109
+ if (authority.grant === undefined && authority.revoke === undefined) {
110
+ fail('PUBLICATION_INVALID', 'Authority capability requirements cannot be empty.');
108
111
  }
109
- const grant = admitAuthorityOperations(admin.grant, 'grant');
110
- const revoke = admitAuthorityOperations(admin.revoke, 'revoke');
112
+ const grant = admitAuthorityOperations(authority.grant, 'grant');
113
+ const revoke = admitAuthorityOperations(authority.revoke, 'revoke');
111
114
  return Object.freeze({
112
115
  ...(grant === undefined ? {} : { grant }),
113
116
  ...(revoke === undefined ? {} : { revoke }),
@@ -116,22 +119,22 @@ function admitAdminRequirements(input) {
116
119
  function admitAuthorityOperations(input, kind) {
117
120
  if (input === undefined)
118
121
  return undefined;
119
- const values = nonEmpty(input, `Administrative ${kind} operations`).map((entry) => admitOperation(entry, AuthorityOperationOrder, `Administrative ${kind} operation`));
120
- unique(values, 'PUBLICATION_INVALID', `administrative ${kind} operation`);
121
- canonical(values, ordered(AuthorityOperationOrder), `Administrative ${kind} operations`);
122
+ const values = nonEmpty(input, `Authority ${kind} operations`).map((entry) => admitOperation(entry, AuthorityOperationOrder, `Authority ${kind} operation`));
123
+ unique(values, 'PUBLICATION_INVALID', `authority ${kind} operation`);
124
+ canonical(values, ordered(AuthorityOperationOrder), `Authority ${kind} operations`);
122
125
  return Object.freeze(values);
123
126
  }
124
127
  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)) {
128
+ let value;
129
+ try {
130
+ value = acceptDefinitionRef(input);
131
+ }
132
+ catch {
132
133
  fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
133
134
  }
134
- return Object.freeze({ origin: value.origin, kind: 'class', name: value.name });
135
+ if (value.kind !== 'class')
136
+ fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
137
+ return value;
135
138
  }
136
139
  function nonEmpty(input, label) {
137
140
  const values = [...array(input, 'PUBLICATION_INVALID')];
@@ -157,24 +160,23 @@ function compare(left, right) {
157
160
  return left < right ? -1 : left > right ? 1 : 0;
158
161
  }
159
162
  function classKey(input) {
160
- return String(Key.fromSchema(input));
163
+ return String(Key.of(input));
161
164
  }
162
- function validateForeignTarget(root, dependencies, key, label) {
165
+ function capabilityOwner(root, dependencies, key, label) {
163
166
  const origin = Key.origin(key);
164
167
  if (origin === root.origin)
165
168
  fail('PUBLICATION_INVALID', `${label} capability target cannot be local.`);
166
- if (!dependencies.has(origin)) {
169
+ const dependency = dependencies.get(origin);
170
+ if (dependency === undefined) {
167
171
  fail('PUBLICATION_INVALID', `${label} capability target must belong to the exact dependency closure.`);
168
172
  }
173
+ return dependency;
169
174
  }
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;
175
+ function hasCallable(dependency, callable) {
176
+ const coordinate = callableAddress(callable);
177
+ if (coordinate.kind === 'function')
178
+ return dependency.functions[coordinate.name] !== undefined;
179
+ const declaration = dependency.classes[coordinate.owner.name];
180
+ const method = declaration?.kind === 'node' ? declaration.methods[coordinate.name] : undefined;
181
+ return method !== undefined && method.inheritance !== 'abstract';
179
182
  }
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