@astrale-os/kernel-protocol 0.5.0-beta.6 → 0.5.0-beta.61

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 (453) hide show
  1. package/dist/artifact/index.d.ts +1 -2
  2. package/dist/artifact/index.js +1 -2
  3. package/dist/artifact/ref.d.ts +2 -1
  4. package/dist/artifact/ref.js +4 -4
  5. package/dist/codecs/codec.d.ts +0 -1
  6. package/dist/codecs/codec.js +0 -1
  7. package/dist/codecs/index.d.ts +0 -1
  8. package/dist/codecs/index.js +0 -1
  9. package/dist/codecs/json.d.ts +0 -1
  10. package/dist/codecs/json.js +0 -1
  11. package/dist/codecs/media-types.d.ts +0 -1
  12. package/dist/codecs/media-types.js +0 -1
  13. package/dist/codecs/msgpack.d.ts +0 -1
  14. package/dist/codecs/msgpack.js +4 -2
  15. package/dist/errors/codes.d.ts +0 -1
  16. package/dist/errors/codes.js +0 -1
  17. package/dist/errors/http-status.d.ts +0 -1
  18. package/dist/errors/http-status.js +0 -1
  19. package/dist/errors/index.d.ts +0 -1
  20. package/dist/errors/index.js +0 -1
  21. package/dist/errors/payload.d.ts +0 -1
  22. package/dist/errors/payload.js +3 -3
  23. package/dist/errors/protocol-error.d.ts +0 -1
  24. package/dist/errors/protocol-error.js +4 -3
  25. package/dist/errors/reason.d.ts +0 -1
  26. package/dist/errors/reason.js +0 -1
  27. package/dist/index.d.ts +0 -1
  28. package/dist/index.js +0 -1
  29. package/dist/invocation/admission.d.ts +0 -1
  30. package/dist/invocation/admission.js +2 -6
  31. package/dist/invocation/binary.d.ts +1 -1
  32. package/dist/invocation/binary.js +21 -5
  33. package/dist/invocation/binding-codecs.d.ts +0 -1
  34. package/dist/invocation/binding-codecs.js +0 -1
  35. package/dist/invocation/cancellation.d.ts +0 -1
  36. package/dist/invocation/cancellation.js +0 -1
  37. package/dist/invocation/correlation.d.ts +0 -1
  38. package/dist/invocation/correlation.js +0 -1
  39. package/dist/invocation/delegate.d.ts +0 -1
  40. package/dist/invocation/delegate.js +0 -1
  41. package/dist/invocation/http/binary.d.ts +3 -2
  42. package/dist/invocation/http/binary.js +4 -2
  43. package/dist/invocation/http/index.d.ts +2 -2
  44. package/dist/invocation/http/index.js +2 -2
  45. package/dist/invocation/http/negotiation.d.ts +0 -1
  46. package/dist/invocation/http/negotiation.js +0 -1
  47. package/dist/invocation/http/request.d.ts +9 -0
  48. package/dist/invocation/http/request.js +61 -0
  49. package/dist/invocation/http/stream.d.ts +0 -1
  50. package/dist/invocation/http/stream.js +0 -1
  51. package/dist/invocation/http/trace.d.ts +0 -1
  52. package/dist/invocation/http/trace.js +0 -1
  53. package/dist/invocation/idempotency.d.ts +0 -1
  54. package/dist/invocation/idempotency.js +0 -1
  55. package/dist/invocation/identity.d.ts +0 -1
  56. package/dist/invocation/identity.js +0 -1
  57. package/dist/invocation/index.d.ts +2 -3
  58. package/dist/invocation/index.js +2 -3
  59. package/dist/invocation/miss.d.ts +0 -1
  60. package/dist/invocation/miss.js +0 -1
  61. package/dist/invocation/redirect.d.ts +0 -1
  62. package/dist/invocation/redirect.js +0 -1
  63. package/dist/invocation/request.d.ts +0 -1
  64. package/dist/invocation/request.js +0 -1
  65. package/dist/invocation/response.d.ts +0 -1
  66. package/dist/invocation/response.js +0 -1
  67. package/dist/invocation/routing.d.ts +0 -1
  68. package/dist/invocation/routing.js +0 -1
  69. package/dist/invocation/schema.d.ts +10 -4
  70. package/dist/invocation/schema.js +7 -7
  71. package/dist/invocation/service-reason.d.ts +16 -12
  72. package/dist/invocation/service-reason.js +15 -9
  73. package/dist/invocation/stale-route.d.ts +0 -1
  74. package/dist/invocation/stale-route.js +0 -1
  75. package/dist/invocation/stream.d.ts +0 -1
  76. package/dist/invocation/stream.js +0 -1
  77. package/dist/invocation/target.d.ts +2 -3
  78. package/dist/invocation/target.js +17 -3
  79. package/dist/invocation/trace.d.ts +0 -1
  80. package/dist/invocation/trace.js +0 -1
  81. package/dist/invocation/version.d.ts +0 -1
  82. package/dist/invocation/version.js +0 -1
  83. package/dist/invocation/websocket/binary.d.ts +0 -1
  84. package/dist/invocation/websocket/binary.js +2 -2
  85. package/dist/invocation/websocket/index.d.ts +0 -1
  86. package/dist/invocation/websocket/index.js +0 -1
  87. package/dist/invocation/websocket/subprotocol.d.ts +0 -1
  88. package/dist/invocation/websocket/subprotocol.js +0 -1
  89. package/dist/issuer/configuration.d.ts +0 -1
  90. package/dist/issuer/configuration.js +0 -1
  91. package/dist/issuer/error.d.ts +0 -1
  92. package/dist/issuer/error.js +0 -1
  93. package/dist/issuer/exchange.d.ts +0 -1
  94. package/dist/issuer/exchange.js +0 -1
  95. package/dist/issuer/hosted.d.ts +0 -1
  96. package/dist/issuer/hosted.js +0 -1
  97. package/dist/issuer/index.d.ts +0 -1
  98. package/dist/issuer/index.js +0 -1
  99. package/dist/issuer/key-set.d.ts +0 -1
  100. package/dist/issuer/key-set.js +0 -1
  101. package/dist/issuer/paths.d.ts +0 -1
  102. package/dist/issuer/paths.js +0 -1
  103. package/dist/issuer/url.d.ts +0 -1
  104. package/dist/issuer/url.js +0 -1
  105. package/dist/publication/bindings/callable.d.ts +0 -1
  106. package/dist/publication/bindings/callable.js +8 -6
  107. package/dist/publication/bindings/index.d.ts +1 -2
  108. package/dist/publication/bindings/index.js +0 -1
  109. package/dist/publication/bindings/invocation.d.ts +0 -1
  110. package/dist/publication/bindings/invocation.js +0 -1
  111. package/dist/publication/bindings/view.d.ts +9 -1
  112. package/dist/publication/bindings/view.js +122 -3
  113. package/dist/publication/bundle-admission.d.ts +0 -1
  114. package/dist/publication/bundle-admission.js +14 -14
  115. package/dist/publication/bundle-descriptor.d.ts +0 -1
  116. package/dist/publication/bundle-descriptor.js +0 -1
  117. package/dist/publication/bundle-evidence.d.ts +0 -1
  118. package/dist/publication/bundle-evidence.js +0 -1
  119. package/dist/publication/bundle.d.ts +4 -2
  120. package/dist/publication/bundle.js +9 -4
  121. package/dist/publication/content.d.ts +0 -1
  122. package/dist/publication/content.js +0 -1
  123. package/dist/publication/declaration.d.ts +0 -1
  124. package/dist/publication/declaration.js +0 -1
  125. package/dist/publication/delivery/attestation.d.ts +0 -1
  126. package/dist/publication/delivery/attestation.js +0 -1
  127. package/dist/publication/delivery/claims.d.ts +1 -2
  128. package/dist/publication/delivery/claims.js +0 -1
  129. package/dist/publication/delivery/delivery.d.ts +0 -1
  130. package/dist/publication/delivery/delivery.js +0 -1
  131. package/dist/publication/delivery/error.d.ts +0 -1
  132. package/dist/publication/delivery/error.js +0 -1
  133. package/dist/publication/delivery/index.d.ts +0 -1
  134. package/dist/publication/delivery/index.js +0 -1
  135. package/dist/publication/delivery/limits.d.ts +0 -1
  136. package/dist/publication/delivery/limits.js +0 -1
  137. package/dist/publication/delivery/request.d.ts +0 -1
  138. package/dist/publication/delivery/request.js +0 -1
  139. package/dist/publication/delivery-declaration.d.ts +0 -1
  140. package/dist/publication/delivery-declaration.js +0 -1
  141. package/dist/publication/delivery-endpoint.d.ts +0 -1
  142. package/dist/publication/delivery-endpoint.js +0 -1
  143. package/dist/publication/error.d.ts +0 -1
  144. package/dist/publication/error.js +0 -1
  145. package/dist/publication/etag.d.ts +0 -1
  146. package/dist/publication/etag.js +5 -2
  147. package/dist/publication/index.d.ts +4 -5
  148. package/dist/publication/index.js +2 -3
  149. package/dist/publication/legacy-requirements.d.ts +12 -0
  150. package/dist/publication/legacy-requirements.js +23 -0
  151. package/dist/publication/manifest.d.ts +2 -3
  152. package/dist/publication/manifest.js +10 -6
  153. package/dist/publication/publication.d.ts +4 -3
  154. package/dist/publication/publication.js +27 -12
  155. package/dist/publication/reference.d.ts +1 -2
  156. package/dist/publication/reference.js +0 -1
  157. package/dist/publication/requirements.d.ts +15 -8
  158. package/dist/publication/requirements.js +147 -45
  159. package/dist/publication/route.d.ts +0 -1
  160. package/dist/publication/route.js +0 -1
  161. package/dist/publication/schema.d.ts +1 -2
  162. package/dist/publication/schema.js +0 -1
  163. package/dist/routes/admission.d.ts +0 -1
  164. package/dist/routes/admission.js +5 -6
  165. package/dist/routes/binding.d.ts +3 -4
  166. package/dist/routes/binding.js +6 -8
  167. package/dist/routes/collision.d.ts +0 -1
  168. package/dist/routes/collision.js +0 -1
  169. package/dist/routes/compiler.d.ts +2 -3
  170. package/dist/routes/compiler.js +18 -12
  171. package/dist/routes/credential.d.ts +0 -1
  172. package/dist/routes/credential.js +0 -1
  173. package/dist/routes/decode.d.ts +2 -3
  174. package/dist/routes/decode.js +14 -25
  175. package/dist/routes/encode.d.ts +2 -3
  176. package/dist/routes/encode.js +18 -17
  177. package/dist/routes/error-response.d.ts +0 -1
  178. package/dist/routes/error-response.js +0 -1
  179. package/dist/routes/error.d.ts +0 -1
  180. package/dist/routes/error.js +0 -1
  181. package/dist/routes/evidence.d.ts +3 -4
  182. package/dist/routes/evidence.js +15 -14
  183. package/dist/routes/index.d.ts +0 -1
  184. package/dist/routes/index.js +0 -1
  185. package/dist/routes/mapping.d.ts +0 -1
  186. package/dist/routes/mapping.js +0 -1
  187. package/dist/routes/match.d.ts +0 -1
  188. package/dist/routes/match.js +0 -1
  189. package/dist/routes/placement.d.ts +0 -1
  190. package/dist/routes/placement.js +1 -2
  191. package/dist/routes/plan.d.ts +5 -5
  192. package/dist/routes/plan.js +0 -1
  193. package/dist/routes/release-unavailable.d.ts +0 -1
  194. package/dist/routes/release-unavailable.js +0 -1
  195. package/dist/routes/request.d.ts +0 -1
  196. package/dist/routes/request.js +3 -2
  197. package/dist/routes/reservation.d.ts +0 -1
  198. package/dist/routes/reservation.js +7 -2
  199. package/dist/routes/routing.d.ts +0 -1
  200. package/dist/routes/routing.js +0 -1
  201. package/dist/routes/scalar.d.ts +3 -4
  202. package/dist/routes/scalar.js +5 -6
  203. package/dist/routes/select.d.ts +0 -1
  204. package/dist/routes/select.js +0 -1
  205. package/dist/routes/stream.d.ts +0 -1
  206. package/dist/routes/stream.js +0 -1
  207. package/dist/routes/table.d.ts +0 -1
  208. package/dist/routes/table.js +0 -1
  209. package/dist/routes/target.d.ts +0 -1
  210. package/dist/routes/target.js +0 -1
  211. package/dist/routes/template.d.ts +0 -1
  212. package/dist/routes/template.js +0 -1
  213. package/dist/runtime/artifact.d.ts +6 -5
  214. package/dist/runtime/artifact.js +22 -10
  215. package/dist/runtime/index.d.ts +1 -2
  216. package/dist/runtime/index.js +1 -2
  217. package/dist/schema/index.d.ts +0 -1
  218. package/dist/schema/index.js +0 -1
  219. package/dist/schema/installation/codec.d.ts +4 -0
  220. package/dist/schema/installation/codec.js +71 -0
  221. package/dist/schema/installation/index.d.ts +2 -1
  222. package/dist/schema/installation/index.js +1 -1
  223. package/dist/schema/installation/introspection/codec.d.ts +5 -3
  224. package/dist/schema/installation/introspection/codec.js +184 -192
  225. package/dist/schema/installation/introspection/index.d.ts +2 -3
  226. package/dist/schema/installation/introspection/index.js +1 -2
  227. package/dist/schema/installation/introspection/result.d.ts +36 -23
  228. package/dist/schema/installation/introspection/result.js +0 -1
  229. package/dist/schema/installation/result.d.ts +9 -0
  230. package/dist/schema/installation/result.js +1 -0
  231. package/package.json +27 -13
  232. package/dist/artifact/index.d.ts.map +0 -1
  233. package/dist/artifact/index.js.map +0 -1
  234. package/dist/artifact/ref.d.ts.map +0 -1
  235. package/dist/artifact/ref.js.map +0 -1
  236. package/dist/codecs/codec.d.ts.map +0 -1
  237. package/dist/codecs/codec.js.map +0 -1
  238. package/dist/codecs/index.d.ts.map +0 -1
  239. package/dist/codecs/index.js.map +0 -1
  240. package/dist/codecs/json.d.ts.map +0 -1
  241. package/dist/codecs/json.js.map +0 -1
  242. package/dist/codecs/media-types.d.ts.map +0 -1
  243. package/dist/codecs/media-types.js.map +0 -1
  244. package/dist/codecs/msgpack.d.ts.map +0 -1
  245. package/dist/codecs/msgpack.js.map +0 -1
  246. package/dist/errors/codes.d.ts.map +0 -1
  247. package/dist/errors/codes.js.map +0 -1
  248. package/dist/errors/http-status.d.ts.map +0 -1
  249. package/dist/errors/http-status.js.map +0 -1
  250. package/dist/errors/index.d.ts.map +0 -1
  251. package/dist/errors/index.js.map +0 -1
  252. package/dist/errors/payload.d.ts.map +0 -1
  253. package/dist/errors/payload.js.map +0 -1
  254. package/dist/errors/protocol-error.d.ts.map +0 -1
  255. package/dist/errors/protocol-error.js.map +0 -1
  256. package/dist/errors/reason.d.ts.map +0 -1
  257. package/dist/errors/reason.js.map +0 -1
  258. package/dist/index.d.ts.map +0 -1
  259. package/dist/index.js.map +0 -1
  260. package/dist/invocation/admission.d.ts.map +0 -1
  261. package/dist/invocation/admission.js.map +0 -1
  262. package/dist/invocation/binary.d.ts.map +0 -1
  263. package/dist/invocation/binary.js.map +0 -1
  264. package/dist/invocation/binding-codecs.d.ts.map +0 -1
  265. package/dist/invocation/binding-codecs.js.map +0 -1
  266. package/dist/invocation/cancellation.d.ts.map +0 -1
  267. package/dist/invocation/cancellation.js.map +0 -1
  268. package/dist/invocation/correlation.d.ts.map +0 -1
  269. package/dist/invocation/correlation.js.map +0 -1
  270. package/dist/invocation/delegate.d.ts.map +0 -1
  271. package/dist/invocation/delegate.js.map +0 -1
  272. package/dist/invocation/http/binary.d.ts.map +0 -1
  273. package/dist/invocation/http/binary.js.map +0 -1
  274. package/dist/invocation/http/index.d.ts.map +0 -1
  275. package/dist/invocation/http/index.js.map +0 -1
  276. package/dist/invocation/http/negotiation.d.ts.map +0 -1
  277. package/dist/invocation/http/negotiation.js.map +0 -1
  278. package/dist/invocation/http/stream.d.ts.map +0 -1
  279. package/dist/invocation/http/stream.js.map +0 -1
  280. package/dist/invocation/http/trace.d.ts.map +0 -1
  281. package/dist/invocation/http/trace.js.map +0 -1
  282. package/dist/invocation/idempotency.d.ts.map +0 -1
  283. package/dist/invocation/idempotency.js.map +0 -1
  284. package/dist/invocation/identity.d.ts.map +0 -1
  285. package/dist/invocation/identity.js.map +0 -1
  286. package/dist/invocation/index.d.ts.map +0 -1
  287. package/dist/invocation/index.js.map +0 -1
  288. package/dist/invocation/miss.d.ts.map +0 -1
  289. package/dist/invocation/miss.js.map +0 -1
  290. package/dist/invocation/redirect.d.ts.map +0 -1
  291. package/dist/invocation/redirect.js.map +0 -1
  292. package/dist/invocation/request.d.ts.map +0 -1
  293. package/dist/invocation/request.js.map +0 -1
  294. package/dist/invocation/response.d.ts.map +0 -1
  295. package/dist/invocation/response.js.map +0 -1
  296. package/dist/invocation/routing.d.ts.map +0 -1
  297. package/dist/invocation/routing.js.map +0 -1
  298. package/dist/invocation/schema.d.ts.map +0 -1
  299. package/dist/invocation/schema.js.map +0 -1
  300. package/dist/invocation/service-reason.d.ts.map +0 -1
  301. package/dist/invocation/service-reason.js.map +0 -1
  302. package/dist/invocation/stale-route.d.ts.map +0 -1
  303. package/dist/invocation/stale-route.js.map +0 -1
  304. package/dist/invocation/stream.d.ts.map +0 -1
  305. package/dist/invocation/stream.js.map +0 -1
  306. package/dist/invocation/target.d.ts.map +0 -1
  307. package/dist/invocation/target.js.map +0 -1
  308. package/dist/invocation/trace.d.ts.map +0 -1
  309. package/dist/invocation/trace.js.map +0 -1
  310. package/dist/invocation/version.d.ts.map +0 -1
  311. package/dist/invocation/version.js.map +0 -1
  312. package/dist/invocation/websocket/binary.d.ts.map +0 -1
  313. package/dist/invocation/websocket/binary.js.map +0 -1
  314. package/dist/invocation/websocket/index.d.ts.map +0 -1
  315. package/dist/invocation/websocket/index.js.map +0 -1
  316. package/dist/invocation/websocket/subprotocol.d.ts.map +0 -1
  317. package/dist/invocation/websocket/subprotocol.js.map +0 -1
  318. package/dist/issuer/configuration.d.ts.map +0 -1
  319. package/dist/issuer/configuration.js.map +0 -1
  320. package/dist/issuer/error.d.ts.map +0 -1
  321. package/dist/issuer/error.js.map +0 -1
  322. package/dist/issuer/exchange.d.ts.map +0 -1
  323. package/dist/issuer/exchange.js.map +0 -1
  324. package/dist/issuer/hosted.d.ts.map +0 -1
  325. package/dist/issuer/hosted.js.map +0 -1
  326. package/dist/issuer/index.d.ts.map +0 -1
  327. package/dist/issuer/index.js.map +0 -1
  328. package/dist/issuer/key-set.d.ts.map +0 -1
  329. package/dist/issuer/key-set.js.map +0 -1
  330. package/dist/issuer/paths.d.ts.map +0 -1
  331. package/dist/issuer/paths.js.map +0 -1
  332. package/dist/issuer/url.d.ts.map +0 -1
  333. package/dist/issuer/url.js.map +0 -1
  334. package/dist/publication/bindings/callable.d.ts.map +0 -1
  335. package/dist/publication/bindings/callable.js.map +0 -1
  336. package/dist/publication/bindings/index.d.ts.map +0 -1
  337. package/dist/publication/bindings/index.js.map +0 -1
  338. package/dist/publication/bindings/invocation.d.ts.map +0 -1
  339. package/dist/publication/bindings/invocation.js.map +0 -1
  340. package/dist/publication/bindings/view.d.ts.map +0 -1
  341. package/dist/publication/bindings/view.js.map +0 -1
  342. package/dist/publication/bundle-admission.d.ts.map +0 -1
  343. package/dist/publication/bundle-admission.js.map +0 -1
  344. package/dist/publication/bundle-descriptor.d.ts.map +0 -1
  345. package/dist/publication/bundle-descriptor.js.map +0 -1
  346. package/dist/publication/bundle-evidence.d.ts.map +0 -1
  347. package/dist/publication/bundle-evidence.js.map +0 -1
  348. package/dist/publication/bundle.d.ts.map +0 -1
  349. package/dist/publication/bundle.js.map +0 -1
  350. package/dist/publication/content.d.ts.map +0 -1
  351. package/dist/publication/content.js.map +0 -1
  352. package/dist/publication/declaration.d.ts.map +0 -1
  353. package/dist/publication/declaration.js.map +0 -1
  354. package/dist/publication/delivery/attestation.d.ts.map +0 -1
  355. package/dist/publication/delivery/attestation.js.map +0 -1
  356. package/dist/publication/delivery/claims.d.ts.map +0 -1
  357. package/dist/publication/delivery/claims.js.map +0 -1
  358. package/dist/publication/delivery/delivery.d.ts.map +0 -1
  359. package/dist/publication/delivery/delivery.js.map +0 -1
  360. package/dist/publication/delivery/error.d.ts.map +0 -1
  361. package/dist/publication/delivery/error.js.map +0 -1
  362. package/dist/publication/delivery/index.d.ts.map +0 -1
  363. package/dist/publication/delivery/index.js.map +0 -1
  364. package/dist/publication/delivery/limits.d.ts.map +0 -1
  365. package/dist/publication/delivery/limits.js.map +0 -1
  366. package/dist/publication/delivery/request.d.ts.map +0 -1
  367. package/dist/publication/delivery/request.js.map +0 -1
  368. package/dist/publication/delivery-declaration.d.ts.map +0 -1
  369. package/dist/publication/delivery-declaration.js.map +0 -1
  370. package/dist/publication/delivery-endpoint.d.ts.map +0 -1
  371. package/dist/publication/delivery-endpoint.js.map +0 -1
  372. package/dist/publication/error.d.ts.map +0 -1
  373. package/dist/publication/error.js.map +0 -1
  374. package/dist/publication/etag.d.ts.map +0 -1
  375. package/dist/publication/etag.js.map +0 -1
  376. package/dist/publication/index.d.ts.map +0 -1
  377. package/dist/publication/index.js.map +0 -1
  378. package/dist/publication/manifest.d.ts.map +0 -1
  379. package/dist/publication/manifest.js.map +0 -1
  380. package/dist/publication/publication.d.ts.map +0 -1
  381. package/dist/publication/publication.js.map +0 -1
  382. package/dist/publication/reference.d.ts.map +0 -1
  383. package/dist/publication/reference.js.map +0 -1
  384. package/dist/publication/requirements.d.ts.map +0 -1
  385. package/dist/publication/requirements.js.map +0 -1
  386. package/dist/publication/route.d.ts.map +0 -1
  387. package/dist/publication/route.js.map +0 -1
  388. package/dist/publication/schema.d.ts.map +0 -1
  389. package/dist/publication/schema.js.map +0 -1
  390. package/dist/routes/admission.d.ts.map +0 -1
  391. package/dist/routes/admission.js.map +0 -1
  392. package/dist/routes/binding.d.ts.map +0 -1
  393. package/dist/routes/binding.js.map +0 -1
  394. package/dist/routes/collision.d.ts.map +0 -1
  395. package/dist/routes/collision.js.map +0 -1
  396. package/dist/routes/compiler.d.ts.map +0 -1
  397. package/dist/routes/compiler.js.map +0 -1
  398. package/dist/routes/credential.d.ts.map +0 -1
  399. package/dist/routes/credential.js.map +0 -1
  400. package/dist/routes/decode.d.ts.map +0 -1
  401. package/dist/routes/decode.js.map +0 -1
  402. package/dist/routes/encode.d.ts.map +0 -1
  403. package/dist/routes/encode.js.map +0 -1
  404. package/dist/routes/error-response.d.ts.map +0 -1
  405. package/dist/routes/error-response.js.map +0 -1
  406. package/dist/routes/error.d.ts.map +0 -1
  407. package/dist/routes/error.js.map +0 -1
  408. package/dist/routes/evidence.d.ts.map +0 -1
  409. package/dist/routes/evidence.js.map +0 -1
  410. package/dist/routes/index.d.ts.map +0 -1
  411. package/dist/routes/index.js.map +0 -1
  412. package/dist/routes/mapping.d.ts.map +0 -1
  413. package/dist/routes/mapping.js.map +0 -1
  414. package/dist/routes/match.d.ts.map +0 -1
  415. package/dist/routes/match.js.map +0 -1
  416. package/dist/routes/placement.d.ts.map +0 -1
  417. package/dist/routes/placement.js.map +0 -1
  418. package/dist/routes/plan.d.ts.map +0 -1
  419. package/dist/routes/plan.js.map +0 -1
  420. package/dist/routes/release-unavailable.d.ts.map +0 -1
  421. package/dist/routes/release-unavailable.js.map +0 -1
  422. package/dist/routes/request.d.ts.map +0 -1
  423. package/dist/routes/request.js.map +0 -1
  424. package/dist/routes/reservation.d.ts.map +0 -1
  425. package/dist/routes/reservation.js.map +0 -1
  426. package/dist/routes/routing.d.ts.map +0 -1
  427. package/dist/routes/routing.js.map +0 -1
  428. package/dist/routes/scalar.d.ts.map +0 -1
  429. package/dist/routes/scalar.js.map +0 -1
  430. package/dist/routes/select.d.ts.map +0 -1
  431. package/dist/routes/select.js.map +0 -1
  432. package/dist/routes/stream.d.ts.map +0 -1
  433. package/dist/routes/stream.js.map +0 -1
  434. package/dist/routes/table.d.ts.map +0 -1
  435. package/dist/routes/table.js.map +0 -1
  436. package/dist/routes/target.d.ts.map +0 -1
  437. package/dist/routes/target.js.map +0 -1
  438. package/dist/routes/template.d.ts.map +0 -1
  439. package/dist/routes/template.js.map +0 -1
  440. package/dist/runtime/artifact.d.ts.map +0 -1
  441. package/dist/runtime/artifact.js.map +0 -1
  442. package/dist/runtime/index.d.ts.map +0 -1
  443. package/dist/runtime/index.js.map +0 -1
  444. package/dist/schema/index.d.ts.map +0 -1
  445. package/dist/schema/index.js.map +0 -1
  446. package/dist/schema/installation/index.d.ts.map +0 -1
  447. package/dist/schema/installation/index.js.map +0 -1
  448. package/dist/schema/installation/introspection/codec.d.ts.map +0 -1
  449. package/dist/schema/installation/introspection/codec.js.map +0 -1
  450. package/dist/schema/installation/introspection/index.d.ts.map +0 -1
  451. package/dist/schema/installation/introspection/index.js.map +0 -1
  452. package/dist/schema/installation/introspection/result.d.ts.map +0 -1
  453. package/dist/schema/installation/introspection/result.js.map +0 -1
@@ -3,16 +3,22 @@ import { accept as acceptIssuerId } from '@astrale-os/kernel-core/auth/issuer';
3
3
  import { Key, patterns } from '@astrale-os/kernel-dsl/v1/addressing';
4
4
  import * as portable from '@astrale-os/kernel-dsl/value';
5
5
  import { admitCallableBinding, admitViewBinding } from './bindings/index.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';
11
+ import { decodeLegacyRequirements, encodeLegacyRequirements } from './legacy-requirements.js';
10
12
  import { admitManifest } from './manifest.js';
11
13
  import { admitRequirements } from './requirements.js';
12
14
  import { admitRoute } from './route.js';
13
15
  import { admitSchema } from './schema.js';
14
16
  export const PATH = '/.well-known/astrale/domain.json';
15
- export const MEDIA_TYPE = 'application/vnd.astrale.domain-publication+json;v=2';
17
+ export const MEDIA_TYPE = 'application/vnd.astrale.domain-publication+json;v=3';
18
+ export const LEGACY_MEDIA_TYPE = 'application/vnd.astrale.domain-publication+json;v=2';
19
+ export function mediaType(input) {
20
+ return input.version === 2 ? LEGACY_MEDIA_TYPE : MEDIA_TYPE;
21
+ }
16
22
  /** Resolve the canonical Publication URL beneath one exact HTTP(S) serving issuer. */
17
23
  export function url(input) {
18
24
  const admitted = admitIssuer(input);
@@ -33,19 +39,23 @@ export function url(input) {
33
39
  return `${admitted.replace(/\/+$/u, '')}${PATH}`;
34
40
  }
35
41
  export function seal(input) {
36
- return acceptPublication({ ...input, etag: computeEtag(input) }, false);
42
+ const canonical = withoutEtag(acceptPublication({ ...input, etag: 'canonicalizing' }, 'seal'));
43
+ return acceptPublication({ ...canonical, etag: computeEtag(canonical) }, 'canonical');
37
44
  }
38
45
  export function accept(input) {
39
- const publication = acceptPublication(input, true);
46
+ const publication = acceptPublication(input, 'wire');
40
47
  if (publication.etag !== computeEtag(withoutEtag(publication))) {
41
48
  fail('PUBLICATION_ETAG_MISMATCH', 'Publication ETag does not match its canonical content.');
42
49
  }
43
50
  return publication;
44
51
  }
45
52
  export function encode(input) {
46
- return portable.json.encode(input);
53
+ const wire = input.version === 2
54
+ ? { ...input, requirements: encodeLegacyRequirements(input.requirements) }
55
+ : input;
56
+ return portable.json.encode(wire);
47
57
  }
48
- function acceptPublication(input, requireEtag) {
58
+ function acceptPublication(input, mode) {
49
59
  const value = record(input, 'PUBLICATION_INVALID', 'Expected a Publication object.');
50
60
  exact(value, [
51
61
  'format',
@@ -60,7 +70,8 @@ function acceptPublication(input, requireEtag) {
60
70
  'routes',
61
71
  'delivery',
62
72
  ], 'PUBLICATION_INVALID');
63
- if (value.format !== 'astrale.domain.publication' || value.version !== 2) {
73
+ if (value.format !== 'astrale.domain.publication' ||
74
+ (value.version !== 2 && value.version !== 3)) {
64
75
  fail('PUBLICATION_INVALID', 'Unsupported Publication format or version.');
65
76
  }
66
77
  if (typeof value.origin !== 'string' || !patterns.origin.test(value.origin)) {
@@ -74,13 +85,15 @@ function acceptPublication(input, requireEtag) {
74
85
  fail('PUBLICATION_INVALID', 'Publication identity subject must equal its root origin.');
75
86
  }
76
87
  const publishedSchema = admitSchema(value.schema);
77
- const requirements = admitRequirements(value.requirements);
88
+ const requirements = value.version === 2 && mode === 'wire'
89
+ ? decodeLegacyRequirements(value.requirements)
90
+ : admitRequirements(value.requirements);
78
91
  const manifest = admitManifest(value.manifest);
79
92
  const bindingSet = record(value.bindings, 'PUBLICATION_BINDING_INVALID', 'Publication bindings are invalid.');
80
93
  exact(bindingSet, ['callables', 'views'], 'PUBLICATION_BINDING_INVALID');
81
94
  const callables = array(bindingSet.callables, 'PUBLICATION_BINDING_INVALID').map((entry) => admitCallableBinding(entry, origin));
82
95
  unique(callables.map(({ callable }) => callable), 'PUBLICATION_BINDING_INVALID', 'callable binding');
83
- const views = array(bindingSet.views, 'PUBLICATION_VIEW_INVALID').map((entry) => admitViewBinding(entry, origin));
96
+ const views = array(bindingSet.views, 'PUBLICATION_VIEW_INVALID').map((entry) => mode === 'seal' ? canonicalizeViewBinding(entry, origin) : admitViewBinding(entry, origin));
84
97
  unique(views.map(({ view }) => view), 'PUBLICATION_VIEW_INVALID', 'View binding');
85
98
  const routes = array(value.routes, 'PUBLICATION_ROUTE_INVALID').map((entry) => admitRoute(entry, origin));
86
99
  unique(routes.map(({ name }) => name), 'PUBLICATION_ROUTE_INVALID', 'route name');
@@ -90,18 +103,21 @@ function acceptPublication(input, requireEtag) {
90
103
  }
91
104
  }
92
105
  if (manifest?.entrypoint !== undefined) {
93
- const key = Key.of(origin, manifest.entrypoint);
106
+ if (manifest.entrypoint.origin !== origin) {
107
+ fail('PUBLICATION_VIEW_INVALID', 'Manifest entrypoint must belong to the root origin.');
108
+ }
109
+ const key = Key.of(manifest.entrypoint);
94
110
  if (!views.some(({ view }) => view === key)) {
95
111
  fail('PUBLICATION_VIEW_INVALID', 'Manifest entrypoint must have a published View binding.');
96
112
  }
97
113
  }
98
114
  const delivery = admitDeliveryEndpoint(value.delivery, publishedSchema.bundle.href);
99
- const admittedEtag = requireEtag ? admitDigest(value.etag) : value.etag;
115
+ const admittedEtag = mode === 'wire' ? admitDigest(value.etag) : value.etag;
100
116
  if (typeof admittedEtag !== 'string')
101
117
  fail('PUBLICATION_INVALID', 'Publication ETag is missing.');
102
118
  return deepFreeze({
103
119
  format: 'astrale.domain.publication',
104
- version: 2,
120
+ version: value.version,
105
121
  origin,
106
122
  identity: { issuer, subject: origin },
107
123
  etag: admittedEtag,
@@ -128,4 +144,3 @@ function withoutEtag(input) {
128
144
  const { etag: _etag, ...content } = input;
129
145
  return content;
130
146
  }
131
- //# sourceMappingURL=publication.js.map
@@ -1,4 +1,4 @@
1
- import type { Revision } from '@astrale-os/kernel-dsl/v1/schema';
1
+ import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
2
2
  import { type Key } from '@astrale-os/kernel-dsl/v1/addressing';
3
3
  import type { Etag } from './etag.js';
4
4
  import type { Publication } from './publication.js';
@@ -15,4 +15,3 @@ export declare function acceptReference(input: unknown): PublicationRef;
15
15
  export declare function compareReferences(input: PublicationRef, expected: PublicationRef): PublicationReferenceRelation;
16
16
  export declare function compareReference(input: Publication, expected: PublicationRef): PublicationReferenceRelation;
17
17
  export declare function matchesReference(input: Publication, expected: PublicationRef): boolean;
18
- //# sourceMappingURL=reference.d.ts.map
@@ -66,4 +66,3 @@ function acceptIssuer(input) {
66
66
  throw cause;
67
67
  }
68
68
  }
69
- //# sourceMappingURL=reference.js.map
@@ -1,27 +1,34 @@
1
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 { Key as SemanticKey } from '@astrale-os/kernel-dsl/v1/addressing';
2
+ import type { schema as schemaLanguage } from '@astrale-os/kernel-dsl/v1';
3
+ import type { ClassRef, CoreRef, Key as SemanticKey } from '@astrale-os/kernel-dsl/v1/addressing';
4
4
  export type NonEmpty<Value> = readonly [Value, ...Value[]];
5
5
  export declare const ClassOperationOrder: readonly ["create", "read", "traverse", "update", "delete"];
6
6
  export type ClassOperation = (typeof ClassOperationOrder)[number];
7
7
  export interface ClassCapabilityRequirement {
8
- readonly class: schema.ClassRef;
8
+ readonly class: ClassRef;
9
9
  readonly operations: NonEmpty<ClassOperation>;
10
10
  }
11
- export interface CapabilityAdminRequirements {
11
+ export interface CapabilityAuthorityRequirements {
12
12
  readonly grant?: NonEmpty<AuthorityOperation>;
13
13
  readonly revoke?: NonEmpty<AuthorityOperation>;
14
14
  }
15
15
  export interface CapabilityRequirements {
16
16
  readonly functions?: NonEmpty<SemanticKey.Callable>;
17
17
  readonly classes?: NonEmpty<ClassCapabilityRequirement>;
18
- readonly admin?: CapabilityAdminRequirements;
18
+ readonly authority?: CapabilityAuthorityRequirements;
19
+ readonly core?: NonEmpty<CoreCapabilityRequirement>;
20
+ }
21
+ /** Installation-owned authority materialized onto one local Core Identity. */
22
+ export interface CoreCapabilityRequirement {
23
+ readonly subject: CoreRef;
24
+ readonly functions?: NonEmpty<SemanticKey.Callable>;
25
+ readonly classes?: NonEmpty<ClassCapabilityRequirement>;
26
+ readonly authority?: CapabilityAuthorityRequirements;
19
27
  }
20
28
  export interface PublicationRequirements {
21
29
  readonly capabilities: CapabilityRequirements;
22
30
  }
23
- /** Admit the exact closed Publication v2 requirements object. */
31
+ /** Admit the exact closed canonical requirements object used by Publication v3. */
24
32
  export declare function admitRequirements(input: unknown): PublicationRequirements;
25
33
  /** Bind explicit capability targets to exact functional dependencies in the bundle closure. */
26
- export declare function validateRequirements(root: schema.DomainSchema, closure: readonly schema.DomainSchema[], requirements: PublicationRequirements): void;
27
- //# sourceMappingURL=requirements.d.ts.map
34
+ export declare function validateRequirements(root: schemaLanguage.DomainSchema, closure: readonly schemaLanguage.DomainSchema[], requirements: PublicationRequirements): void;
@@ -1,9 +1,14 @@
1
- import { KernelSchema } from '@astrale-os/kernel-core/schema';
2
1
  import { AuthorityOperationOrder } from '@astrale-os/kernel-core/schema/authority/operation';
3
- import { Key, patterns, Ref } from '@astrale-os/kernel-dsl/v1/addressing';
4
- import { revisionOfDomainSchema } from '@astrale-os/kernel-dsl/v1/schema/revision';
2
+ import { acceptDefinitionRef, callableAddress, Key } from '@astrale-os/kernel-dsl/v1/addressing';
3
+ import { isMethodExecutable } from '@astrale-os/kernel-dsl/v1/language';
4
+ import { revision } from '@astrale-os/kernel-dsl/v1/schema/revision';
5
5
  import { array, deepFreeze, exact, record, unique } from './content.js';
6
6
  import { fail } from './error.js';
7
+ const KernelIdentityClass = Object.freeze({
8
+ origin: 'kernel.astrale.ai',
9
+ kind: 'class',
10
+ name: 'Identity',
11
+ });
7
12
  export const ClassOperationOrder = Object.freeze([
8
13
  'create',
9
14
  'read',
@@ -11,12 +16,12 @@ export const ClassOperationOrder = Object.freeze([
11
16
  'update',
12
17
  'delete',
13
18
  ]);
14
- /** Admit the exact closed Publication v2 requirements object. */
19
+ /** Admit the exact closed canonical requirements object used by Publication v3. */
15
20
  export function admitRequirements(input) {
16
21
  const requirements = record(input, 'PUBLICATION_INVALID', 'Publication requirements are invalid.');
17
22
  exact(requirements, ['capabilities'], 'PUBLICATION_INVALID');
18
23
  const capabilities = record(requirements.capabilities, 'PUBLICATION_INVALID', 'Publication capability requirements are invalid.');
19
- exact(capabilities, ['admin', 'classes', 'functions'], 'PUBLICATION_INVALID');
24
+ exact(capabilities, ['authority', 'classes', 'functions', 'core'], 'PUBLICATION_INVALID');
20
25
  const functions = capabilities.functions === undefined
21
26
  ? undefined
22
27
  : nonEmpty(capabilities.functions, 'Function capability requirements').map(admitCallable);
@@ -31,7 +36,16 @@ export function admitRequirements(input) {
31
36
  unique(classes.map((entry) => classKey(entry.class)), 'PUBLICATION_INVALID', 'Class capability requirement');
32
37
  canonical(classes, (left, right) => compare(classKey(left.class), classKey(right.class)), 'Class capability requirements');
33
38
  }
34
- const admin = capabilities.admin === undefined ? undefined : admitAdminRequirements(capabilities.admin);
39
+ const authority = capabilities.authority === undefined
40
+ ? undefined
41
+ : admitAuthorityRequirements(capabilities.authority);
42
+ const core = capabilities.core === undefined
43
+ ? undefined
44
+ : nonEmpty(capabilities.core, 'Core capability requirements').map(admitCoreCapabilityRequirement);
45
+ if (core !== undefined) {
46
+ unique(core.map(({ subject }) => Key.of(subject)), 'PUBLICATION_INVALID', 'Core capability subject');
47
+ canonical(core, (left, right) => compare(Key.of(left.subject), Key.of(right.subject)), 'Core capability requirements');
48
+ }
35
49
  return deepFreeze({
36
50
  capabilities: {
37
51
  ...(functions === undefined
@@ -40,35 +54,113 @@ export function admitRequirements(input) {
40
54
  ...(classes === undefined
41
55
  ? {}
42
56
  : { classes: Object.freeze(classes) }),
43
- ...(admin === undefined ? {} : { admin }),
57
+ ...(authority === undefined ? {} : { authority }),
58
+ ...(core === undefined
59
+ ? {}
60
+ : { core: Object.freeze(core) }),
44
61
  },
45
62
  });
46
63
  }
64
+ function admitCoreCapabilityRequirement(input) {
65
+ const requirement = record(input, 'PUBLICATION_INVALID', 'Core capability requirement is invalid.');
66
+ exact(requirement, ['authority', 'classes', 'functions', 'subject'], 'PUBLICATION_INVALID');
67
+ const subject = admitCoreRef(requirement.subject);
68
+ const functions = requirement.functions === undefined
69
+ ? undefined
70
+ : nonEmpty(requirement.functions, 'Core capability Function requirements').map(admitCallable);
71
+ if (functions !== undefined) {
72
+ unique(functions, 'PUBLICATION_INVALID', 'Core capability Function requirement');
73
+ canonical(functions, compare, 'Core capability Function requirements');
74
+ }
75
+ const classes = requirement.classes === undefined
76
+ ? undefined
77
+ : nonEmpty(requirement.classes, 'Core capability Class requirements').map(admitClassRequirement);
78
+ if (classes !== undefined) {
79
+ unique(classes.map((entry) => classKey(entry.class)), 'PUBLICATION_INVALID', 'Core capability Class requirement');
80
+ canonical(classes, (left, right) => compare(classKey(left.class), classKey(right.class)), 'Core capability Class requirements');
81
+ }
82
+ const authority = requirement.authority === undefined
83
+ ? undefined
84
+ : admitAuthorityRequirements(requirement.authority);
85
+ if (functions === undefined && classes === undefined && authority === undefined) {
86
+ fail('PUBLICATION_INVALID', 'Core capability requirements cannot be empty.');
87
+ }
88
+ return Object.freeze({
89
+ subject,
90
+ ...(functions === undefined
91
+ ? {}
92
+ : { functions: Object.freeze(functions) }),
93
+ ...(classes === undefined
94
+ ? {}
95
+ : { classes: Object.freeze(classes) }),
96
+ ...(authority === undefined ? {} : { authority }),
97
+ });
98
+ }
47
99
  /** Bind explicit capability targets to exact functional dependencies in the bundle closure. */
48
100
  export function validateRequirements(root, closure, requirements) {
49
101
  const dependencies = exactDependencyClosure(root, closure);
50
102
  for (const callable of requirements.capabilities.functions ?? []) {
51
103
  const dependency = capabilityOwner(root, dependencies, callable, 'Function');
52
- const reference = Key.ref(callable);
53
- if (!hasCallable(dependency, reference)) {
104
+ if (!hasCallable(dependency, callable)) {
54
105
  fail('PUBLICATION_INVALID', 'Function capability requirement names an unknown dependency callable.');
55
106
  }
56
107
  }
57
108
  for (const requirement of requirements.capabilities.classes ?? []) {
58
- const key = Key.fromSchema(requirement.class);
109
+ const key = Key.of(requirement.class);
59
110
  const dependency = capabilityOwner(root, dependencies, key, 'Class');
60
111
  if (dependency.classes[requirement.class.name] === undefined) {
61
112
  fail('PUBLICATION_INVALID', 'Class capability requirement names an unknown dependency Class.');
62
113
  }
63
114
  }
115
+ for (const requirement of requirements.capabilities.core ?? []) {
116
+ const subject = root.core.nodes[requirement.subject.name];
117
+ if (requirement.subject.origin !== root.origin ||
118
+ subject === undefined ||
119
+ !classSatisfies(root, dependencies, subject.class, KernelIdentityClass)) {
120
+ fail('PUBLICATION_INVALID', 'Core capability subject must name one local Core Identity.');
121
+ }
122
+ for (const callable of requirement.functions ?? []) {
123
+ const owner = Key.origin(callable) === root.origin
124
+ ? root
125
+ : capabilityOwner(root, dependencies, callable, 'Function');
126
+ if (!hasCallable(owner, callable)) {
127
+ fail('PUBLICATION_INVALID', 'Core capability Function requirement names an unknown or non-executable callable.');
128
+ }
129
+ }
130
+ for (const classRequirement of requirement.classes ?? []) {
131
+ const key = Key.of(classRequirement.class);
132
+ const owner = classRequirement.class.origin === root.origin
133
+ ? root
134
+ : capabilityOwner(root, dependencies, key, 'Class');
135
+ if (owner.classes[classRequirement.class.name] === undefined) {
136
+ fail('PUBLICATION_INVALID', 'Core capability Class requirement names an unknown dependency Class.');
137
+ }
138
+ }
139
+ }
140
+ }
141
+ function classSatisfies(root, dependencies, candidate, expected) {
142
+ const expectedKey = Key.of(expected);
143
+ const visited = new Set();
144
+ const visit = (reference) => {
145
+ const key = Key.of(reference);
146
+ if (key === expectedKey)
147
+ return true;
148
+ if (visited.has(key))
149
+ return false;
150
+ visited.add(key);
151
+ const owner = reference.origin === root.origin ? root : dependencies.get(reference.origin);
152
+ const definition = owner?.classes[reference.name];
153
+ return definition?.kind === 'node' && definition.extends.some(visit);
154
+ };
155
+ return visit(candidate);
64
156
  }
65
157
  function exactDependencyClosure(root, closure) {
66
158
  const supplied = new Map(closure.map((dependency) => [dependency.origin, dependency]));
67
159
  const reachable = new Map();
68
160
  const visit = (owner) => {
69
- for (const coordinate of owner.dependencies) {
161
+ for (const coordinate of Object.values(owner.dependencies)) {
70
162
  const dependency = supplied.get(coordinate.origin);
71
- if (dependency === undefined || revisionOfDomainSchema(dependency) !== coordinate.revision) {
163
+ if (dependency === undefined || revision(dependency) !== coordinate.revision) {
72
164
  fail('PUBLICATION_INVALID', 'Publication Bundle omits an exact dependency.');
73
165
  }
74
166
  if (reachable.has(dependency.origin))
@@ -84,8 +176,10 @@ function admitCallable(input) {
84
176
  if (typeof input !== 'string' || !Key.is(input)) {
85
177
  return fail('PUBLICATION_INVALID', 'Function capability reference is invalid.');
86
178
  }
87
- const reference = Key.ref(input);
88
- if (!reference.startsWith('function.') && !Ref.isMethod(reference)) {
179
+ try {
180
+ callableAddress(input);
181
+ }
182
+ catch {
89
183
  return fail('PUBLICATION_INVALID', 'Function capability reference must name a Function or Method.');
90
184
  }
91
185
  return input;
@@ -101,14 +195,14 @@ function admitClassRequirement(input) {
101
195
  operations: Object.freeze(operations),
102
196
  });
103
197
  }
104
- function admitAdminRequirements(input) {
105
- const admin = record(input, 'PUBLICATION_INVALID', 'Administrative capability requirements are invalid.');
106
- exact(admin, ['grant', 'revoke'], 'PUBLICATION_INVALID');
107
- if (admin.grant === undefined && admin.revoke === undefined) {
108
- fail('PUBLICATION_INVALID', 'Administrative capability requirements cannot be empty.');
198
+ function admitAuthorityRequirements(input) {
199
+ const authority = record(input, 'PUBLICATION_INVALID', 'Authority capability requirements are invalid.');
200
+ exact(authority, ['grant', 'revoke'], 'PUBLICATION_INVALID');
201
+ if (authority.grant === undefined && authority.revoke === undefined) {
202
+ fail('PUBLICATION_INVALID', 'Authority capability requirements cannot be empty.');
109
203
  }
110
- const grant = admitAuthorityOperations(admin.grant, 'grant');
111
- const revoke = admitAuthorityOperations(admin.revoke, 'revoke');
204
+ const grant = admitAuthorityOperations(authority.grant, 'grant');
205
+ const revoke = admitAuthorityOperations(authority.revoke, 'revoke');
112
206
  return Object.freeze({
113
207
  ...(grant === undefined ? {} : { grant }),
114
208
  ...(revoke === undefined ? {} : { revoke }),
@@ -117,22 +211,35 @@ function admitAdminRequirements(input) {
117
211
  function admitAuthorityOperations(input, kind) {
118
212
  if (input === undefined)
119
213
  return undefined;
120
- const values = nonEmpty(input, `Administrative ${kind} operations`).map((entry) => admitOperation(entry, AuthorityOperationOrder, `Administrative ${kind} operation`));
121
- unique(values, 'PUBLICATION_INVALID', `administrative ${kind} operation`);
122
- canonical(values, ordered(AuthorityOperationOrder), `Administrative ${kind} operations`);
214
+ const values = nonEmpty(input, `Authority ${kind} operations`).map((entry) => admitOperation(entry, AuthorityOperationOrder, `Authority ${kind} operation`));
215
+ unique(values, 'PUBLICATION_INVALID', `authority ${kind} operation`);
216
+ canonical(values, ordered(AuthorityOperationOrder), `Authority ${kind} operations`);
123
217
  return Object.freeze(values);
124
218
  }
125
219
  function admitClassRef(input) {
126
- const value = record(input, 'PUBLICATION_INVALID', 'Class capability reference is invalid.');
127
- exact(value, ['kind', 'name', 'origin'], 'PUBLICATION_INVALID');
128
- if (value.kind !== 'class' ||
129
- typeof value.origin !== 'string' ||
130
- !patterns.origin.test(value.origin) ||
131
- typeof value.name !== 'string' ||
132
- !patterns.memberName.test(value.name)) {
220
+ let value;
221
+ try {
222
+ value = acceptDefinitionRef(input);
223
+ }
224
+ catch {
133
225
  fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
134
226
  }
135
- return Object.freeze({ origin: value.origin, kind: 'class', name: value.name });
227
+ if (value.kind !== 'class')
228
+ fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
229
+ return value;
230
+ }
231
+ function admitCoreRef(input) {
232
+ let value;
233
+ try {
234
+ value = acceptDefinitionRef(input);
235
+ }
236
+ catch {
237
+ fail('PUBLICATION_INVALID', 'Core capability subject is invalid.');
238
+ }
239
+ if (value.kind !== 'core') {
240
+ fail('PUBLICATION_INVALID', 'Core capability subject must be one local Core reference.');
241
+ }
242
+ return value;
136
243
  }
137
244
  function nonEmpty(input, label) {
138
245
  const values = [...array(input, 'PUBLICATION_INVALID')];
@@ -158,28 +265,23 @@ function compare(left, right) {
158
265
  return left < right ? -1 : left > right ? 1 : 0;
159
266
  }
160
267
  function classKey(input) {
161
- return String(Key.fromSchema(input));
268
+ return String(Key.of(input));
162
269
  }
163
270
  function capabilityOwner(root, dependencies, key, label) {
164
271
  const origin = Key.origin(key);
165
272
  if (origin === root.origin)
166
273
  fail('PUBLICATION_INVALID', `${label} capability target cannot be local.`);
167
- if (origin === KernelSchema.origin)
168
- return KernelSchema;
169
274
  const dependency = dependencies.get(origin);
170
275
  if (dependency === undefined) {
171
276
  fail('PUBLICATION_INVALID', `${label} capability target must belong to the exact dependency closure.`);
172
277
  }
173
278
  return dependency;
174
279
  }
175
- function hasCallable(dependency, reference) {
176
- if (reference.startsWith('function.')) {
177
- return dependency.functions[Ref.member(reference)] !== undefined;
178
- }
179
- const ownerKind = Ref.namespace(reference);
180
- const owner = Ref.member(reference);
181
- const method = Ref.child(reference);
182
- const declaration = ownerKind === 'class' ? dependency.classes[owner] : dependency.interfaces[owner];
183
- return declaration?.family === 'node' && declaration.methods[method] !== undefined;
280
+ function hasCallable(dependency, callable) {
281
+ const coordinate = callableAddress(callable);
282
+ if (coordinate.kind === 'function')
283
+ return dependency.functions[coordinate.name] !== undefined;
284
+ const declaration = dependency.classes[coordinate.owner.name];
285
+ const method = declaration?.kind === 'node' ? declaration.methods[coordinate.name] : undefined;
286
+ return method !== undefined && isMethodExecutable(declaration, method);
184
287
  }
185
- //# sourceMappingURL=requirements.js.map
@@ -35,4 +35,3 @@ export interface HttpRouteDeclaration extends Omit<HttpRoute, 'href'> {
35
35
  }
36
36
  export declare function admitRoute(input: unknown, origin: string): HttpRoute;
37
37
  export declare function admitRouteDeclaration(input: unknown, origin: string): HttpRouteDeclaration;
38
- //# sourceMappingURL=route.d.ts.map
@@ -152,4 +152,3 @@ function stringRecord(input) {
152
152
  }
153
153
  return Object.freeze(output);
154
154
  }
155
- //# sourceMappingURL=route.js.map
@@ -1,8 +1,7 @@
1
- import type { Revision } from '@astrale-os/kernel-dsl/v1/schema';
1
+ import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
2
2
  import type { BundleDescriptor } from './bundle-descriptor.js';
3
3
  export interface Schema {
4
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
@@ -13,4 +13,3 @@ export function admitSchema(input) {
13
13
  bundle: admitBundleDescriptor(value.bundle),
14
14
  });
15
15
  }
16
- //# sourceMappingURL=schema.js.map
@@ -1,4 +1,3 @@
1
1
  import type { Table } from './table.js';
2
2
  /** Admit one emitted portable Table before Server composition. */
3
3
  export declare function acceptTable(input: unknown): Table;
4
- //# sourceMappingURL=admission.d.ts.map
@@ -2,7 +2,7 @@ import { accept as acceptPortable } from '@astrale-os/kernel-dsl/value';
2
2
  import { acceptReference } from '../publication/reference.js';
3
3
  import { admitRoute } from '../publication/route.js';
4
4
  import { fail } from './error.js';
5
- const AUTHENTICATION = new Set(['anonymous', 'authenticated', 'authorized']);
5
+ const AUTH = new Set(['anonymous', 'authenticated', 'authorized']);
6
6
  const OUTPUT = new Set(['value', 'stream', 'binary']);
7
7
  /** Admit one emitted portable Table before Server composition. */
8
8
  export function acceptTable(input) {
@@ -19,11 +19,11 @@ export function acceptTable(input) {
19
19
  }
20
20
  function acceptRoute(input, origin) {
21
21
  const value = object(input, 'Route Table entry');
22
- exact(value, ['name', 'callable', 'target', 'authentication', 'output', 'href', 'method', 'default'], 'Route Table entry', ['requestMethod', 'query', 'headers', 'body', 'credential']);
22
+ exact(value, ['name', 'callable', 'target', 'auth', 'output', 'href', 'method', 'default'], 'Route Table entry', ['requestMethod', 'query', 'headers', 'body', 'credential']);
23
23
  if (typeof value.default !== 'boolean')
24
24
  invalid('Route Table default');
25
- if (typeof value.authentication !== 'string' || !AUTHENTICATION.has(value.authentication)) {
26
- invalid('Route Table authentication');
25
+ if (typeof value.auth !== 'string' || !AUTH.has(value.auth)) {
26
+ invalid('Route Table auth');
27
27
  }
28
28
  if (typeof value.output !== 'string' || !OUTPUT.has(value.output))
29
29
  invalid('Route Table output');
@@ -44,7 +44,7 @@ function acceptRoute(input, origin) {
44
44
  return Object.freeze({
45
45
  ...common,
46
46
  target: target(value.target),
47
- authentication: value.authentication,
47
+ auth: value.auth,
48
48
  output: value.output,
49
49
  default: value.default,
50
50
  });
@@ -87,4 +87,3 @@ function exact(value, required, label, optional = []) {
87
87
  function invalid(label) {
88
88
  return fail('NATIVE_ROUTE_BINDING_INVALID', `${label} is invalid.`);
89
89
  }
90
- //# sourceMappingURL=admission.js.map
@@ -1,7 +1,6 @@
1
- import type { schema } from '@astrale-os/kernel-dsl/v1';
1
+ import type { Domain } from '@astrale-os/kernel-dsl/v1';
2
2
  import type { Publication } from '../publication/publication.js';
3
3
  import type { Plan } from './plan.js';
4
4
  import type { Table } from './table.js';
5
- /** Bind one Plan to an exact placed Publication and matching Validator. */
6
- export declare function bind(plan: Plan, deployed: Publication, validator: schema.Validator): Table;
7
- //# sourceMappingURL=binding.d.ts.map
5
+ /** Bind one Plan to an exact placed Publication and matching resolved Domain. */
6
+ export declare function bind(plan: Plan, deployed: Publication, domain: Domain, publicUrl?: string): Table;
@@ -3,16 +3,15 @@ import { reference } from '../publication/reference.js';
3
3
  import { fail } from './error.js';
4
4
  import { place } from './placement.js';
5
5
  import { rejectReserved } from './reservation.js';
6
- /** Bind one Plan to an exact placed Publication and matching Validator. */
7
- export function bind(plan, deployed, validator) {
6
+ /** Bind one Plan to an exact placed Publication and matching resolved Domain. */
7
+ export function bind(plan, deployed, domain, publicUrl = deployed.identity.issuer) {
8
8
  if (plan.origin !== deployed.origin ||
9
- plan.origin !== validator.origin ||
9
+ plan.origin !== domain.origin ||
10
10
  plan.revision !== deployed.schema.revision ||
11
- plan.revision !== validator.revision) {
12
- fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Plan, Publication, and Validator identity differ.');
11
+ plan.revision !== domain.revision) {
12
+ fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Plan, Publication, and Domain identity differ.');
13
13
  }
14
- if (json.serialize(place(plan, deployed.identity.issuer)) !==
15
- json.serialize(deployed.routes)) {
14
+ if (json.serialize(place(plan, publicUrl)) !== json.serialize(deployed.routes)) {
16
15
  fail('NATIVE_ROUTE_BINDING_INVALID', 'Publication routes differ from the placed Route Plan.');
17
16
  }
18
17
  const entries = plan.entries.map((entry, index) => {
@@ -25,4 +24,3 @@ export function bind(plan, deployed, validator) {
25
24
  entries: Object.freeze(entries),
26
25
  });
27
26
  }
28
- //# sourceMappingURL=binding.js.map
@@ -1,3 +1,2 @@
1
1
  import type { Route } from './table.js';
2
2
  export declare function rejectCollisions(entries: readonly Route[]): void;
3
- //# sourceMappingURL=collision.d.ts.map
@@ -14,4 +14,3 @@ export function rejectCollisions(entries) {
14
14
  function overlap(left, right) {
15
15
  return left === '*' || right === '*' || left === right;
16
16
  }
17
- //# sourceMappingURL=collision.js.map
@@ -1,9 +1,8 @@
1
- import type { schema } from '@astrale-os/kernel-dsl/v1';
1
+ import type { Domain } from '@astrale-os/kernel-dsl/v1';
2
2
  import type * as publication from '../publication/index.js';
3
3
  import type { Plan } from './plan.js';
4
4
  export interface CompileInput {
5
5
  readonly routes: readonly publication.HttpRouteDeclaration[];
6
- readonly validator: schema.Validator;
6
+ readonly domain: Domain;
7
7
  }
8
8
  export declare function compile(input: CompileInput): Plan;
9
- //# sourceMappingURL=compiler.d.ts.map