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

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 +683 -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 +13 -6
  151. package/dist/publication/publication.js +50 -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 +15 -7
  155. package/dist/publication/requirements.js +137 -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
@@ -4,19 +4,19 @@ export function credentialSources(route) {
4
4
  return Array.isArray(source) ? source : [source];
5
5
  }
6
6
  export function firstCredentialIsAmbient(entry) {
7
- return credentialSources(entry.route)[0].in === 'cookie';
7
+ return credentialSources(entry)[0].in === 'cookie';
8
8
  }
9
9
  export function specificHeaderWires(entry) {
10
- return new Set(Object.values(entry.route.headers ?? {})
10
+ return new Set(Object.values(entry.headers ?? {})
11
11
  .filter((wire) => wire !== '*')
12
12
  .map((wire) => wire.toLowerCase()));
13
13
  }
14
14
  export function putCredential(entry, url, headers, credential) {
15
- if (entry.route.credential === undefined) {
15
+ if (entry.credential === undefined) {
16
16
  headers.authorization = `Bearer ${credential}`;
17
17
  return;
18
18
  }
19
- const source = credentialSources(entry.route)[0];
19
+ const source = credentialSources(entry)[0];
20
20
  if (source.in === 'header') {
21
21
  headers[(source.name ?? 'authorization').toLowerCase()] = credential;
22
22
  }
@@ -36,7 +36,7 @@ export function withoutCredentialHeaders(entry, input) {
36
36
  }
37
37
  output[canonical] = value;
38
38
  }
39
- for (const source of credentialSources(entry.route)) {
39
+ for (const source of credentialSources(entry)) {
40
40
  if (source.in === 'header') {
41
41
  delete output[(source.name ?? 'authorization').toLowerCase()];
42
42
  continue;
@@ -53,7 +53,7 @@ export function withoutCredentialHeaders(entry, input) {
53
53
  }
54
54
  export function readCredential(entry, url, headers) {
55
55
  const found = [];
56
- if (entry.route.credential === undefined) {
56
+ if (entry.credential === undefined) {
57
57
  const authorization = headers.authorization;
58
58
  if (authorization === undefined)
59
59
  return undefined;
@@ -62,7 +62,7 @@ export function readCredential(entry, url, headers) {
62
62
  invalidRequest('Authorization must contain one Bearer credential.');
63
63
  return matched[1];
64
64
  }
65
- for (const source of credentialSources(entry.route)) {
65
+ for (const source of credentialSources(entry)) {
66
66
  let value;
67
67
  if (source.in === 'header') {
68
68
  value = headers[(source.name ?? 'authorization').toLowerCase()];
@@ -116,4 +116,3 @@ function withoutCookie(header, name) {
116
116
  .join('; ');
117
117
  return value.length === 0 ? undefined : value;
118
118
  }
119
- //# sourceMappingURL=credential.js.map
@@ -1,4 +1,5 @@
1
+ import type { Domain } from '@astrale-os/kernel-dsl/v1';
2
+ import type { PublicationRef } from '../publication/index.js';
1
3
  import type { HttpRequest, Invocation } from './request.js';
2
- import type { CompiledRoute } from './route.js';
3
- export declare function decode(entry: CompiledRoute, request: HttpRequest): Invocation;
4
- //# sourceMappingURL=decode.d.ts.map
4
+ import type { Route } from './table.js';
5
+ export declare function decode(entry: Route, request: HttpRequest, domain: Domain, served: PublicationRef): Invocation;
@@ -1,27 +1,27 @@
1
1
  import { NodePath, Path } from '@astrale-os/kernel-core/path';
2
- import { Key, Ref } from '@astrale-os/kernel-dsl/v1';
2
+ import { callableAddress } from '@astrale-os/kernel-dsl/v1/addressing';
3
3
  import * as portable from '@astrale-os/kernel-dsl/value';
4
4
  import { readCredential, specificHeaderWires, withoutCredentialHeaders } from './credential.js';
5
5
  import { fail, invalidRequest } from './error.js';
6
6
  import { isReservedHeader } from './mapping.js';
7
7
  import { methodMatches } from './match.js';
8
8
  import { bodyText, normalizeHeaders, parseJsonObject } from './request.js';
9
- import { requiresReceiver } from './route.js';
10
9
  import { decodeRouting } from './routing.js';
11
- import { asObject, decodeScalar } from './scalar.js';
10
+ import { decodeScalar } from './scalar.js';
11
+ import { requiresReceiver } from './target.js';
12
12
  import { matchTemplate, PLACEHOLDER } from './template.js';
13
- export function decode(entry, request) {
13
+ export function decode(entry, request, domain, served) {
14
14
  if (!methodMatches(entry, request.method))
15
15
  invalidRequest('HTTP method does not match the route.');
16
- const matched = matchTemplate(entry.route.href, request.url);
16
+ const matched = matchTemplate(entry.href, request.url);
17
17
  if (matched === undefined)
18
18
  invalidRequest('URL does not match the route template.');
19
19
  const values = {};
20
20
  for (const [name, value] of Object.entries(matched)) {
21
- values[name] = decodeScalar(entry, name, value);
21
+ values[name] = decodeScalar(entry, name, value, domain);
22
22
  }
23
- if (entry.route.requestMethod !== undefined) {
24
- values[entry.route.requestMethod] = decodeScalar(entry, entry.route.requestMethod, request.method.toUpperCase());
23
+ if (entry.requestMethod !== undefined) {
24
+ values[entry.requestMethod] = decodeScalar(entry, entry.requestMethod, request.method.toUpperCase(), domain);
25
25
  }
26
26
  let url;
27
27
  try {
@@ -35,32 +35,32 @@ export function decode(entry, request) {
35
35
  }
36
36
  const headers = normalizeHeaders(request.headers);
37
37
  const credential = readCredential(entry, url, headers);
38
- const routing = decodeRouting(request, entry.publication);
38
+ const routing = decodeRouting(request, served);
39
39
  const applicationHeaders = withoutCredentialHeaders(entry, headers);
40
- for (const [name, wire] of Object.entries(entry.route.query ?? {})) {
40
+ for (const [name, wire] of Object.entries(entry.query ?? {})) {
41
41
  const found = url.searchParams.getAll(wire);
42
42
  if (found.length !== 1)
43
43
  invalidRequest(`Query parameter ${wire} must occur exactly once.`);
44
- values[name] = decodeScalar(entry, name, found[0]);
44
+ values[name] = decodeScalar(entry, name, found[0], domain);
45
45
  }
46
- for (const [name, pick] of Object.entries(entry.route.headers ?? {})) {
46
+ for (const [name, pick] of Object.entries(entry.headers ?? {})) {
47
47
  if (pick === '*') {
48
48
  const explicit = specificHeaderWires(entry);
49
49
  values[name] = Object.fromEntries(Object.entries(applicationHeaders).filter(([header]) => !explicit.has(header) &&
50
50
  header !== 'accept' &&
51
51
  !isReservedHeader(header) &&
52
- (entry.route.body === undefined || header !== 'content-type')));
52
+ (entry.body === undefined || header !== 'content-type')));
53
53
  }
54
54
  else {
55
55
  const value = headers[pick.toLowerCase()];
56
56
  if (value === undefined)
57
57
  invalidRequest(`Missing header ${pick}.`);
58
- values[name] = decodeScalar(entry, name, value);
58
+ values[name] = decodeScalar(entry, name, value, domain);
59
59
  }
60
60
  }
61
- if (entry.route.body === '*') {
61
+ if (entry.body === '*') {
62
62
  const body = parseJsonObject(request.body);
63
- const allowed = remainderFields(entry);
63
+ const allowed = remainderFields(entry, domain);
64
64
  for (const name of Object.keys(body)) {
65
65
  if (!allowed.has(name)) {
66
66
  invalidRequest(`JSON body field ${name} is not owned by the route remainder mapping.`);
@@ -68,10 +68,10 @@ export function decode(entry, request) {
68
68
  }
69
69
  Object.assign(values, body);
70
70
  }
71
- else if (entry.route.body !== undefined) {
72
- const needsText = Object.values(entry.route.body).some((pick) => typeof pick !== 'string');
71
+ else if (entry.body !== undefined) {
72
+ const needsText = Object.values(entry.body).some((pick) => typeof pick !== 'string');
73
73
  const body = needsText ? bodyText(request.body) : parseJsonObject(request.body);
74
- for (const [name, pick] of Object.entries(entry.route.body)) {
74
+ for (const [name, pick] of Object.entries(entry.body)) {
75
75
  if (typeof pick !== 'string') {
76
76
  values[name] = body;
77
77
  }
@@ -85,7 +85,10 @@ export function decode(entry, request) {
85
85
  }
86
86
  let receiver;
87
87
  if (requiresReceiver(entry)) {
88
- const encodedReceiver = entry.route.receiver === undefined ? undefined : values[entry.route.receiver];
88
+ const receiverName = entry.target.kind === 'method' && entry.target.dispatch === 'instance'
89
+ ? entry.target.receiver
90
+ : undefined;
91
+ const encodedReceiver = receiverName === undefined ? undefined : values[receiverName];
89
92
  if (typeof encodedReceiver !== 'string')
90
93
  invalidRequest('Instance route receiver is missing.');
91
94
  try {
@@ -97,7 +100,7 @@ export function decode(entry, request) {
97
100
  }
98
101
  throw cause;
99
102
  }
100
- delete values[entry.route.receiver];
103
+ delete values[receiverName];
101
104
  }
102
105
  let input;
103
106
  try {
@@ -109,19 +112,15 @@ export function decode(entry, request) {
109
112
  }
110
113
  throw cause;
111
114
  }
112
- const ref = Key.ref(entry.callable);
113
- const target = Ref.isMethod(ref)
115
+ const coordinate = callableAddress(entry.callable);
116
+ const target = coordinate.kind === 'method'
114
117
  ? receiver === undefined
115
- ? Path.staticMethod(Path.project({
116
- origin: Key.origin(entry.callable),
117
- kind: Ref.namespace(ref),
118
- name: Ref.member(ref),
119
- }), Ref.child(ref)).raw
120
- : Path.instanceMethod(Path.from(receiver), Ref.child(ref)).raw
118
+ ? Path.staticMethod(Path.project(coordinate.owner), coordinate.name).raw
119
+ : Path.instanceMethod(Path.from(receiver), coordinate.name).raw
121
120
  : Path.project({
122
- origin: Key.origin(entry.callable),
121
+ origin: coordinate.origin,
123
122
  kind: 'function',
124
- name: Ref.member(ref),
123
+ name: coordinate.name,
125
124
  }).raw;
126
125
  return Object.freeze({
127
126
  call: Object.freeze({ target, input }),
@@ -129,19 +128,20 @@ export function decode(entry, request) {
129
128
  ...(routing === undefined ? {} : { routing }),
130
129
  });
131
130
  }
132
- function remainderFields(entry) {
131
+ function remainderFields(entry, domain) {
133
132
  const claimed = new Set([
134
- ...[...entry.route.href.matchAll(PLACEHOLDER)].map((item) => item[1]),
135
- ...(entry.route.requestMethod === undefined ? [] : [entry.route.requestMethod]),
136
- ...Object.keys(entry.route.query ?? {}),
137
- ...Object.keys(entry.route.headers ?? {}),
133
+ ...[...entry.href.matchAll(PLACEHOLDER)].map((item) => item[1]),
134
+ ...(entry.requestMethod === undefined ? [] : [entry.requestMethod]),
135
+ ...Object.keys(entry.query ?? {}),
136
+ ...Object.keys(entry.headers ?? {}),
138
137
  ]);
139
- const input = asObject(entry.declaration.input);
140
- const properties = asObject(input.properties);
141
- const allowed = new Set(Object.keys(properties).filter((name) => !claimed.has(name)));
142
- if (entry.route.receiver !== undefined && !claimed.has(entry.route.receiver)) {
143
- allowed.add(entry.route.receiver);
138
+ const fields = domain.callable(entry.callable)?.inputFields ?? [];
139
+ const allowed = new Set(fields.filter((name) => !claimed.has(name)));
140
+ const receiver = entry.target.kind === 'method' && entry.target.dispatch === 'instance'
141
+ ? entry.target.receiver
142
+ : undefined;
143
+ if (receiver !== undefined && !claimed.has(receiver)) {
144
+ allowed.add(receiver);
144
145
  }
145
146
  return allowed;
146
147
  }
147
- //# sourceMappingURL=decode.js.map
@@ -1,4 +1,4 @@
1
+ import type { Domain } from '@astrale-os/kernel-dsl/v1';
1
2
  import type { Invocation, Request } from './request.js';
2
- import type { CompiledRoute } from './route.js';
3
- export declare function encode(entry: CompiledRoute, invocation: Invocation): Request;
4
- //# sourceMappingURL=encode.d.ts.map
3
+ import type { Route } from './table.js';
4
+ export declare function encode(entry: Route, invocation: Invocation, domain: Domain): Request;
@@ -1,50 +1,49 @@
1
1
  import { Path } from '@astrale-os/kernel-core/path';
2
- import { Key, Ref } from '@astrale-os/kernel-dsl/v1';
2
+ import { callableAddress } from '@astrale-os/kernel-dsl/v1/addressing';
3
3
  import * as portable from '@astrale-os/kernel-dsl/value';
4
4
  import { firstCredentialIsAmbient, putCredential, specificHeaderWires, withoutCredentialHeaders, } from './credential.js';
5
5
  import { fail, invalidRequest } from './error.js';
6
6
  import { isReservedHeader } from './mapping.js';
7
- import { requiresReceiver } from './route.js';
8
7
  import { encodeStrongEtag, HTTP_ROUTE_ISSUER, HTTP_ROUTE_PUBLICATION } from './routing.js';
9
8
  import { asObject, encodeScalar, scalar } from './scalar.js';
9
+ import { requiresReceiver } from './target.js';
10
10
  import { authorityEnd, encodeTemplate, PLACEHOLDER } from './template.js';
11
- export function encode(entry, invocation) {
11
+ export function encode(entry, invocation, domain) {
12
12
  const input = asObject(invocation.call.input);
13
13
  const target = Path.from(invocation.call.target);
14
14
  const needsReceiver = requiresReceiver(entry);
15
- const ref = Key.ref(entry.callable);
16
- const methodName = Ref.isMethod(ref) ? Ref.child(ref) : undefined;
15
+ const coordinate = callableAddress(entry.callable);
16
+ const methodName = coordinate.kind === 'method' ? coordinate.name : undefined;
17
17
  const receiver = needsReceiver ? instanceSource(target, methodName) : undefined;
18
18
  const source = receiver?.raw;
19
19
  const expected = needsReceiver
20
20
  ? Path.instanceMethod(receiver, methodName).raw
21
- : Ref.isMethod(ref)
22
- ? Path.staticMethod(Path.project({
23
- origin: Key.origin(entry.callable),
24
- kind: Ref.namespace(ref),
25
- name: Ref.member(ref),
26
- }), methodName).raw
21
+ : coordinate.kind === 'method'
22
+ ? Path.staticMethod(Path.project(coordinate.owner), methodName).raw
27
23
  : Path.project({
28
- origin: Key.origin(entry.callable),
24
+ origin: coordinate.origin,
29
25
  kind: 'function',
30
- name: Ref.member(ref),
26
+ name: coordinate.name,
31
27
  }).raw;
32
28
  if (target.raw !== expected)
33
29
  invalidRequest('Invocation Path does not match the selected route.');
34
- const field = (name) => (name === entry.route.receiver ? source : input[name]);
35
- const wireField = (name) => encodeScalar(entry, name, field(name));
36
- const hostEnd = authorityEnd(entry.route.href);
37
- let url = entry.route.href.replaceAll(PLACEHOLDER, (_whole, name, catchall, offset) => encodeTemplate(wireField(name), catchall, offset < hostEnd));
30
+ const receiverName = entry.target.kind === 'method' && entry.target.dispatch === 'instance'
31
+ ? entry.target.receiver
32
+ : undefined;
33
+ const field = (name) => (name === receiverName ? source : input[name]);
34
+ const wireField = (name) => encodeScalar(entry, name, field(name), domain);
35
+ const hostEnd = authorityEnd(entry.href);
36
+ let url = entry.href.replaceAll(PLACEHOLDER, (_whole, name, catchall, offset) => encodeTemplate(wireField(name), catchall, offset < hostEnd));
38
37
  const parsed = new URL(url);
39
- for (const [name, wire] of Object.entries(entry.route.query ?? {})) {
38
+ for (const [name, wire] of Object.entries(entry.query ?? {})) {
40
39
  parsed.searchParams.append(wire, wireField(name));
41
40
  }
42
41
  let headers = {};
43
- for (const [name, pick] of Object.entries(entry.route.headers ?? {})) {
42
+ for (const [name, pick] of Object.entries(entry.headers ?? {})) {
44
43
  if (pick !== '*')
45
44
  headers[pick] = wireField(name);
46
45
  }
47
- const headerRemainder = Object.entries(entry.route.headers ?? {}).find(([, pick]) => pick === '*');
46
+ const headerRemainder = Object.entries(entry.headers ?? {}).find(([, pick]) => pick === '*');
48
47
  if (headerRemainder !== undefined) {
49
48
  const explicit = specificHeaderWires(entry);
50
49
  for (const [header, headerValue] of Object.entries(asObject(field(headerRemainder[0])))) {
@@ -56,27 +55,27 @@ export function encode(entry, invocation) {
56
55
  }
57
56
  }
58
57
  let body;
59
- if (entry.route.body === '*') {
58
+ if (entry.body === '*') {
60
59
  const claimed = new Set([
61
- ...[...entry.route.href.matchAll(PLACEHOLDER)].map((item) => item[1]),
62
- ...(entry.route.requestMethod === undefined ? [] : [entry.route.requestMethod]),
63
- ...Object.keys(entry.route.query ?? {}),
64
- ...Object.keys(entry.route.headers ?? {}),
60
+ ...[...entry.href.matchAll(PLACEHOLDER)].map((item) => item[1]),
61
+ ...(entry.requestMethod === undefined ? [] : [entry.requestMethod]),
62
+ ...Object.keys(entry.query ?? {}),
63
+ ...Object.keys(entry.headers ?? {}),
65
64
  ]);
66
65
  const output = {};
67
66
  for (const [name, value] of Object.entries(input)) {
68
67
  if (!claimed.has(name))
69
68
  output[name] = value;
70
69
  }
71
- if (entry.route.receiver !== undefined && !claimed.has(entry.route.receiver)) {
72
- output[entry.route.receiver] = source;
70
+ if (receiverName !== undefined && !claimed.has(receiverName)) {
71
+ output[receiverName] = source;
73
72
  }
74
73
  body = portable.json.serialize(output);
75
74
  headers['content-type'] = 'application/json';
76
75
  }
77
- else if (entry.route.body !== undefined) {
76
+ else if (entry.body !== undefined) {
78
77
  const output = {};
79
- for (const [name, pick] of Object.entries(entry.route.body)) {
78
+ for (const [name, pick] of Object.entries(entry.body)) {
80
79
  if (typeof pick !== 'string')
81
80
  body = scalar(field(name));
82
81
  else
@@ -108,16 +107,16 @@ export function encode(entry, invocation) {
108
107
  headers[HTTP_ROUTE_ISSUER] = invocation.routing.issuer;
109
108
  }
110
109
  url = parsed.toString();
111
- const mappedMethod = entry.route.requestMethod === undefined
110
+ const mappedMethod = entry.requestMethod === undefined
112
111
  ? undefined
113
- : encodeScalar(entry, entry.route.requestMethod, input[entry.route.requestMethod]).toUpperCase();
112
+ : encodeScalar(entry, entry.requestMethod, input[entry.requestMethod], domain).toUpperCase();
114
113
  const requestedMethod = invocation.method?.toUpperCase();
115
114
  if (mappedMethod !== undefined &&
116
115
  requestedMethod !== undefined &&
117
116
  mappedMethod !== requestedMethod) {
118
117
  invalidRequest('Native route request method differs from its mapped input field.');
119
118
  }
120
- const methodCandidate = entry.route.method === '*' ? (requestedMethod ?? mappedMethod) : entry.route.method;
119
+ const methodCandidate = entry.method === '*' ? (requestedMethod ?? mappedMethod) : entry.method;
121
120
  if (methodCandidate === undefined) {
122
121
  fail('NATIVE_ROUTE_REQUEST_INVALID', 'Wildcard route invocation requires an HTTP method.');
123
122
  }
@@ -144,4 +143,3 @@ function instanceSource(target, name) {
144
143
  }
145
144
  return Path.fromAST({ anchor: target.ast.anchor, steps: steps.slice(0, -1) });
146
145
  }
147
- //# sourceMappingURL=encode.js.map
@@ -3,4 +3,3 @@ export interface ErrorResponse {
3
3
  readonly error: ErrorPayload;
4
4
  }
5
5
  export declare function decodeErrorResponse(input: unknown): ErrorResponse;
6
- //# sourceMappingURL=error-response.d.ts.map
@@ -29,4 +29,3 @@ function isValueObject(value) {
29
29
  function invalid(cause) {
30
30
  return fail('NATIVE_ROUTE_RESPONSE_INVALID', 'Native route error response is invalid.', cause);
31
31
  }
32
- //# sourceMappingURL=error-response.js.map
@@ -6,4 +6,3 @@ export declare class RouteError extends Error {
6
6
  }
7
7
  export declare function fail(code: ErrorCode, message: string, cause?: unknown): never;
8
8
  export declare function invalidRequest(message: string): never;
9
- //# sourceMappingURL=error.d.ts.map
@@ -12,4 +12,3 @@ export function fail(code, message, cause) {
12
12
  export function invalidRequest(message) {
13
13
  return fail('NATIVE_ROUTE_REQUEST_INVALID', message);
14
14
  }
15
- //# sourceMappingURL=error.js.map
@@ -0,0 +1,5 @@
1
+ import type { Domain } from '@astrale-os/kernel-dsl/v1';
2
+ import type { Publication } from '../publication/publication.js';
3
+ import type { Table } from './table.js';
4
+ /** Verify that an admitted Table carries the exact published wire and Domain meaning. */
5
+ export declare function verifyTable(table: Table, deployed: Publication, domain: Pick<Domain, 'origin' | 'revision' | 'callable'>): Table;
@@ -0,0 +1,38 @@
1
+ import { json } from '@astrale-os/kernel-dsl/value';
2
+ import { compareReferences, reference } from '../publication/reference.js';
3
+ import { fail } from './error.js';
4
+ /** Verify that an admitted Table carries the exact published wire and Domain meaning. */
5
+ export function verifyTable(table, deployed, domain) {
6
+ if (compareReferences(table.publication, reference(deployed)) !== 'exact' ||
7
+ domain.origin !== deployed.origin ||
8
+ domain.revision !== deployed.schema.revision ||
9
+ json.serialize(table.entries.map(wireRoute)) !==
10
+ json.serialize(deployed.routes)) {
11
+ fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Table evidence differs from its Publication.');
12
+ }
13
+ for (const entry of table.entries) {
14
+ const meaning = domain.callable(entry.callable);
15
+ const targetMatches = meaning !== undefined &&
16
+ ((entry.target.kind === 'function' && !isMethod(meaning)) ||
17
+ (entry.target.kind === 'method' &&
18
+ isMethod(meaning) &&
19
+ entry.target.dispatch === (meaning.static ? 'static' : 'instance')));
20
+ if (!targetMatches || meaning.auth !== entry.auth || meaning.output.mode !== entry.output) {
21
+ fail('NATIVE_ROUTE_BINDING_INVALID', `Route ${entry.name} differs from Domain meaning.`);
22
+ }
23
+ }
24
+ return table;
25
+ }
26
+ function isMethod(meaning) {
27
+ return 'owner' in meaning;
28
+ }
29
+ function wireRoute(entry) {
30
+ const { target, auth: _auth, output: _output, default: isDefault, ...wire } = entry;
31
+ return {
32
+ ...wire,
33
+ ...(isDefault ? { default: true } : {}),
34
+ ...(target.kind === 'method' && target.dispatch === 'instance'
35
+ ? { receiver: target.receiver }
36
+ : {}),
37
+ };
38
+ }
@@ -1,13 +1,19 @@
1
- export { compile } from './compile.js';
1
+ export { bind } from './binding.js';
2
+ export { acceptTable } from './admission.js';
3
+ export { compile, type CompileInput } from './compiler.js';
2
4
  export { decode } from './decode.js';
3
5
  export { decodeErrorResponse, type ErrorResponse } from './error-response.js';
4
6
  export { encode } from './encode.js';
7
+ export { verifyTable } from './evidence.js';
5
8
  export { type ErrorCode, RouteError } from './error.js';
6
9
  export { match } from './match.js';
7
10
  export { type HttpRequest, type Invocation, type Request } from './request.js';
8
- export { type CompiledRoute } from './route.js';
11
+ export type { Plan, PlanEntry } from './plan.js';
12
+ export type { Route, Table } from './table.js';
13
+ export type { RouteTarget } from './target.js';
14
+ export { place } from './placement.js';
15
+ export { decodeReleaseUnavailable, HTTP_ROUTE_RELEASE_UNAVAILABLE, HTTP_ROUTE_RELEASE_UNAVAILABLE_STATUS, releaseUnavailableHeaders, type ReleaseUnavailable, } from './release-unavailable.js';
9
16
  export { decodeRouting, decodeMiss, decodeStale, HTTP_ROUTE_PUBLICATION, HTTP_ROUTE_ISSUER, HTTP_ROUTE_MISS, HTTP_ROUTE_MISS_STATUS, HTTP_ROUTE_STALE, HTTP_ROUTE_STALE_STATUS, missHeaders, staleHeaders, type MissControl, type StaleControl, } from './routing.js';
10
17
  export { select } from './select.js';
11
18
  export { decodeStreamFrame, encodeStreamFrame, STREAM_MEDIA_TYPE, type StreamFrame, } from './stream.js';
12
19
  export { templatesOverlap } from './template.js';
13
- //# sourceMappingURL=index.d.ts.map
@@ -1,13 +1,16 @@
1
- export { compile } from './compile.js';
1
+ export { bind } from './binding.js';
2
+ export { acceptTable } from './admission.js';
3
+ export { compile } from './compiler.js';
2
4
  export { decode } from './decode.js';
3
5
  export { decodeErrorResponse } from './error-response.js';
4
6
  export { encode } from './encode.js';
7
+ export { verifyTable } from './evidence.js';
5
8
  export { RouteError } from './error.js';
6
9
  export { match } from './match.js';
7
10
  export {} from './request.js';
8
- export {} from './route.js';
11
+ export { place } from './placement.js';
12
+ export { decodeReleaseUnavailable, HTTP_ROUTE_RELEASE_UNAVAILABLE, HTTP_ROUTE_RELEASE_UNAVAILABLE_STATUS, releaseUnavailableHeaders, } from './release-unavailable.js';
9
13
  export { decodeRouting, decodeMiss, decodeStale, HTTP_ROUTE_PUBLICATION, HTTP_ROUTE_ISSUER, HTTP_ROUTE_MISS, HTTP_ROUTE_MISS_STATUS, HTTP_ROUTE_STALE, HTTP_ROUTE_STALE_STATUS, missHeaders, staleHeaders, } from './routing.js';
10
14
  export { select } from './select.js';
11
15
  export { decodeStreamFrame, encodeStreamFrame, STREAM_MEDIA_TYPE, } from './stream.js';
12
16
  export { templatesOverlap } from './template.js';
13
- //# sourceMappingURL=index.js.map
@@ -1,6 +1,5 @@
1
1
  import type { HttpRoute } from '../publication/index.js';
2
- export declare function validateMapping(route: HttpRoute, input: unknown, instanceMethod: boolean): void;
2
+ export declare function validateMapping(route: HttpRoute, fields: readonly string[] | undefined, instanceMethod: boolean): void;
3
3
  export declare function validateWireMapping(route: HttpRoute): void;
4
4
  export declare function validateCredentialMapping(route: HttpRoute): void;
5
5
  export declare function isReservedHeader(input: string): boolean;
6
- //# sourceMappingURL=mapping.d.ts.map
@@ -1,17 +1,13 @@
1
1
  import { HTTP_IDEMPOTENCY_KEY } from '../invocation/index.js';
2
2
  import { credentialSources } from './credential.js';
3
3
  import { fail } from './error.js';
4
+ import { HTTP_ROUTE_RELEASE_UNAVAILABLE } from './release-unavailable.js';
4
5
  import { HTTP_ROUTE_ISSUER, HTTP_ROUTE_MISS, HTTP_ROUTE_PUBLICATION, HTTP_ROUTE_STALE, } from './routing.js';
5
6
  import { PLACEHOLDER } from './template.js';
6
- export function validateMapping(route, input, instanceMethod) {
7
- const contract = asRecord(input);
8
- const properties = asRecord(contract?.properties);
9
- if (contract?.type !== 'object' ||
10
- properties === undefined ||
11
- contract.additionalProperties !== false) {
7
+ export function validateMapping(route, fields, instanceMethod) {
8
+ if (fields === undefined) {
12
9
  fail('NATIVE_ROUTE_DECLARATION_INVALID', `Route ${route.name} requires a closed object input schema.`);
13
10
  }
14
- const fields = Object.keys(properties);
15
11
  if (route.receiver !== undefined && fields.includes(route.receiver)) {
16
12
  fail('NATIVE_ROUTE_MAPPING_AMBIGUOUS', `Route ${route.name} receiver cannot also be a callable input field.`);
17
13
  }
@@ -117,6 +113,7 @@ const RESERVED_HEADERS = new Set([
117
113
  HTTP_ROUTE_ISSUER,
118
114
  HTTP_ROUTE_MISS,
119
115
  HTTP_ROUTE_PUBLICATION,
116
+ HTTP_ROUTE_RELEASE_UNAVAILABLE,
120
117
  HTTP_ROUTE_STALE,
121
118
  ]);
122
119
  export function isReservedHeader(input) {
@@ -127,9 +124,3 @@ function uniqueWires(route, kind, wires) {
127
124
  fail('NATIVE_ROUTE_MAPPING_AMBIGUOUS', `Route ${route.name} maps one ${kind} wire source more than once.`);
128
125
  }
129
126
  }
130
- function asRecord(value) {
131
- return value !== null && typeof value === 'object' && !Array.isArray(value)
132
- ? value
133
- : undefined;
134
- }
135
- //# sourceMappingURL=mapping.js.map
@@ -1,5 +1,4 @@
1
1
  import type { HttpRequest } from './request.js';
2
- import type { CompiledRoute } from './route.js';
3
- export declare function match(entries: readonly CompiledRoute[], request: Pick<HttpRequest, 'url' | 'method'>): CompiledRoute | undefined;
4
- export declare function methodMatches(entry: CompiledRoute, method: string): boolean;
5
- //# sourceMappingURL=match.d.ts.map
2
+ import type { Route, Table } from './table.js';
3
+ export declare function match(table: Table, request: Pick<HttpRequest, 'url' | 'method'>): Route | undefined;
4
+ export declare function methodMatches(entry: Route, method: string): boolean;
@@ -1,9 +1,7 @@
1
1
  import { matchTemplate } from './template.js';
2
- export function match(entries, request) {
3
- return entries.find((entry) => methodMatches(entry, request.method) &&
4
- matchTemplate(entry.route.href, request.url) !== undefined);
2
+ export function match(table, request) {
3
+ return table.entries.find((entry) => methodMatches(entry, request.method) && matchTemplate(entry.href, request.url) !== undefined);
5
4
  }
6
5
  export function methodMatches(entry, method) {
7
- return entry.route.method === '*' || entry.route.method === method.toUpperCase();
6
+ return entry.method === '*' || entry.method === method.toUpperCase();
8
7
  }
9
- //# sourceMappingURL=match.js.map
@@ -0,0 +1,5 @@
1
+ import type * as publication from '../publication/index.js';
2
+ import type { Plan } from './plan.js';
3
+ /** Resolve a provider-neutral Plan beneath one exact serving issuer. */
4
+ export declare function place(plan: Plan, issuer: string): readonly publication.HttpRoute[];
5
+ export declare function placePath(path: string, issuer: string): string;
@@ -0,0 +1,18 @@
1
+ /** Resolve a provider-neutral Plan beneath one exact serving issuer. */
2
+ export function place(plan, issuer) {
3
+ return Object.freeze(plan.entries.map((entry) => {
4
+ const { path, target, auth: _auth, output: _output, default: isDefault, ...wire } = entry;
5
+ return Object.freeze({
6
+ ...wire,
7
+ href: placePath(path, issuer),
8
+ ...(isDefault ? { default: true } : {}),
9
+ ...(target.kind === 'method' && target.dispatch === 'instance'
10
+ ? { receiver: target.receiver }
11
+ : {}),
12
+ });
13
+ }));
14
+ }
15
+ export function placePath(path, issuer) {
16
+ const base = new URL(issuer);
17
+ return `${base.origin}${path}`;
18
+ }
@@ -0,0 +1,24 @@
1
+ import type { FunctionAuth, Key, Revision } from '@astrale-os/kernel-dsl/v1';
2
+ import type { OutputMode } from '@astrale-os/kernel-dsl/v1/language';
3
+ import type { CredentialSource, HttpMethod, RouteBody, RouteHeaders } from '../publication/index.js';
4
+ import type { RouteTarget } from './target.js';
5
+ export interface PlanEntry {
6
+ readonly name: string;
7
+ readonly callable: Key.Callable;
8
+ readonly target: RouteTarget;
9
+ readonly auth: FunctionAuth;
10
+ readonly output: OutputMode;
11
+ readonly path: string;
12
+ readonly method: HttpMethod;
13
+ readonly requestMethod?: string;
14
+ readonly default: boolean;
15
+ readonly query?: Readonly<Record<string, string>>;
16
+ readonly headers?: RouteHeaders;
17
+ readonly body?: RouteBody;
18
+ readonly credential?: CredentialSource;
19
+ }
20
+ export interface Plan {
21
+ readonly origin: Key.Origin;
22
+ readonly revision: Revision;
23
+ readonly entries: readonly PlanEntry[];
24
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { HttpRequest } from './request.js';
2
+ export interface ReleaseUnavailable {
3
+ readonly kind: 'release-unavailable';
4
+ }
5
+ export declare const HTTP_ROUTE_RELEASE_UNAVAILABLE: 'x-astrale-release-unavailable';
6
+ export declare const HTTP_ROUTE_RELEASE_UNAVAILABLE_STATUS: 410;
7
+ export declare function releaseUnavailableHeaders(): Readonly<Record<string, string>>;
8
+ export declare function decodeReleaseUnavailable(status: number, headers: HttpRequest['headers']): ReleaseUnavailable | undefined;