@astrale-os/kernel-core 0.9.0-beta.9 → 1.0.0-beta.2

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 (378) hide show
  1. package/dist/auth/authority/accept.js +4 -0
  2. package/dist/auth/authority/admission/admission.d.ts +4 -1
  3. package/dist/auth/authority/admission/admission.js +46 -147
  4. package/dist/auth/authority/admission/index.d.ts +1 -1
  5. package/dist/auth/authority/admission/index.js +1 -1
  6. package/dist/auth/authority/admission/references.d.ts +13 -0
  7. package/dist/auth/authority/admission/references.js +38 -0
  8. package/dist/auth/authority/admission/term.d.ts +6 -0
  9. package/dist/auth/authority/admission/term.js +60 -0
  10. package/dist/auth/authority/admission/wire.d.ts +8 -0
  11. package/dist/auth/authority/admission/wire.js +33 -0
  12. package/dist/auth/authority/canonical.d.ts +2 -0
  13. package/dist/auth/authority/canonical.js +15 -0
  14. package/dist/auth/authority/index.d.ts +9 -2
  15. package/dist/auth/authority/index.js +6 -1
  16. package/dist/auth/authority/language/index.d.ts +3 -1
  17. package/dist/auth/authority/language/index.js +1 -0
  18. package/dist/auth/authority/language/predicate.d.ts +31 -16
  19. package/dist/auth/authority/language/predicate.js +1 -1
  20. package/dist/auth/authority/language/program.d.ts +21 -0
  21. package/dist/auth/authority/language/program.js +2 -0
  22. package/dist/auth/authority/normalization/index.d.ts +1 -1
  23. package/dist/auth/authority/normalization/index.js +1 -1
  24. package/dist/auth/authority/normalization/normalize.d.ts +2 -0
  25. package/dist/auth/authority/normalization/normalize.js +38 -16
  26. package/dist/auth/authority/ownership.optimization.d.ts +8 -0
  27. package/dist/auth/authority/ownership.optimization.js +83 -0
  28. package/dist/auth/authority/prepare-binder-body.d.ts +4 -0
  29. package/dist/auth/authority/prepare-binder-body.js +31 -0
  30. package/dist/auth/authority/program.d.ts +28 -0
  31. package/dist/auth/authority/program.js +191 -0
  32. package/dist/auth/authority/semantics/class-authority.d.ts +8 -0
  33. package/dist/auth/authority/semantics/class-authority.js +26 -0
  34. package/dist/auth/authority/semantics/composition.d.ts +39 -0
  35. package/dist/auth/authority/semantics/composition.js +112 -0
  36. package/dist/auth/authority/semantics/failure.d.ts +21 -0
  37. package/dist/auth/authority/semantics/failure.js +10 -0
  38. package/dist/auth/authority/semantics/index.d.ts +11 -0
  39. package/dist/auth/authority/semantics/index.js +5 -0
  40. package/dist/auth/authority/semantics/interpret.d.ts +41 -0
  41. package/dist/auth/authority/semantics/interpret.js +388 -0
  42. package/dist/auth/authority/semantics/snapshot.d.ts +40 -0
  43. package/dist/auth/authority/semantics/terms.d.ts +20 -0
  44. package/dist/auth/authority/semantics/terms.js +96 -0
  45. package/dist/auth/authority/semantics/vocabulary.d.ts +19 -0
  46. package/dist/auth/context/context.d.ts +4 -3
  47. package/dist/auth/expression/authoring/builder.d.ts +2 -11
  48. package/dist/auth/expression/authoring/builder.js +1 -45
  49. package/dist/auth/expression/authoring/index.d.ts +1 -1
  50. package/dist/auth/expression/authoring/index.js +1 -1
  51. package/dist/auth/expression/index.d.ts +1 -2
  52. package/dist/auth/expression/index.js +1 -2
  53. package/dist/auth/expression/language/identity-expression.d.ts +2 -22
  54. package/dist/auth/grant/index.d.ts +1 -1
  55. package/dist/auth/grant/index.js +1 -1
  56. package/dist/auth/grant/resolved/admission.d.ts +4 -3
  57. package/dist/auth/grant/resolved/admission.js +23 -13
  58. package/dist/auth/grant/resolved/grant.d.ts +1 -1
  59. package/dist/auth/grant/resolved/index.d.ts +1 -1
  60. package/dist/auth/grant/resolved/index.js +1 -1
  61. package/dist/auth/grant/unresolved/admission.d.ts +4 -1
  62. package/dist/auth/grant/unresolved/admission.js +27 -67
  63. package/dist/auth/grant/unresolved/limits.d.ts +2 -4
  64. package/dist/auth/grant/unresolved/limits.js +1 -5
  65. package/dist/auth/identity/admission.js +11 -3
  66. package/dist/auth/identity/identity.d.ts +15 -3
  67. package/dist/auth/identity/index.d.ts +1 -1
  68. package/dist/auth/index.d.ts +4 -4
  69. package/dist/auth/index.js +1 -1
  70. package/dist/auth/jwk/index.d.ts +1 -1
  71. package/dist/auth/jwk/index.js +1 -1
  72. package/dist/auth/jwk/thumbprint.d.ts +2 -0
  73. package/dist/auth/jwk/thumbprint.js +12 -6
  74. package/dist/auth/register/fingerprint/fingerprint.d.ts +25 -0
  75. package/dist/auth/register/fingerprint/fingerprint.js +31 -0
  76. package/dist/auth/register/fingerprint/index.d.ts +2 -0
  77. package/dist/auth/register/index.d.ts +5 -0
  78. package/dist/auth/register/request/admission.d.ts +3 -0
  79. package/dist/auth/register/request/admission.js +103 -0
  80. package/dist/auth/register/request/index.d.ts +3 -0
  81. package/dist/auth/register/request/limits.d.ts +6 -0
  82. package/dist/auth/register/request/limits.js +6 -0
  83. package/dist/auth/register/request/request.d.ts +19 -0
  84. package/dist/auth/{provision → register}/request/self-issuer.d.ts +1 -1
  85. package/dist/auth/{provision → register}/request/self-issuer.js +1 -1
  86. package/dist/auth/register/result/index.d.ts +1 -0
  87. package/dist/auth/register/result/result.d.ts +10 -0
  88. package/dist/auth/register/result/result.js +1 -0
  89. package/dist/callable/contract/body.d.ts +10 -0
  90. package/dist/callable/contract/body.js +7 -0
  91. package/dist/callable/contract/index.d.ts +2 -1
  92. package/dist/callable/contract/index.js +1 -1
  93. package/dist/callable/contract/output.d.ts +18 -2
  94. package/dist/callable/index.d.ts +3 -2
  95. package/dist/callable/index.js +2 -1
  96. package/dist/callable/invocation/call.d.ts +16 -2
  97. package/dist/callable/invocation/call.js +41 -1
  98. package/dist/callable/invocation/index.d.ts +1 -1
  99. package/dist/callable/invocation/index.js +1 -1
  100. package/dist/callable/invocation/result.d.ts +2 -2
  101. package/dist/dns-label.d.ts +1 -2
  102. package/dist/dns-label.js +2 -3
  103. package/dist/graph/graph/graph.d.ts +1 -5
  104. package/dist/graph/graph/graph.js +3 -27
  105. package/dist/graph/graph/index.d.ts +2 -4
  106. package/dist/graph/graph/index.js +2 -3
  107. package/dist/graph/graph/model/codec.js +4 -4
  108. package/dist/graph/graph/model/index.d.ts +1 -1
  109. package/dist/graph/graph/model/index.js +1 -1
  110. package/dist/graph/graph/model/model.d.ts +7 -7
  111. package/dist/graph/graph/model/model.js +6 -6
  112. package/dist/graph/graph/model/wire.d.ts +58 -78
  113. package/dist/graph/graph/model/wire.js +18 -19
  114. package/dist/graph/mutate/authoring/builder.d.ts +2 -2
  115. package/dist/graph/mutate/authoring/builder.js +2 -2
  116. package/dist/graph/mutate/authoring/create.js +13 -5
  117. package/dist/graph/mutate/index.d.ts +1 -1
  118. package/dist/graph/mutate/language/codec.js +3 -3
  119. package/dist/graph/mutate/language/model.d.ts +4 -4
  120. package/dist/graph/mutate/language/wire.d.ts +226 -215
  121. package/dist/graph/mutate/language/wire.js +42 -47
  122. package/dist/graph/mutate/result/index.d.ts +4 -3
  123. package/dist/graph/mutate/result/index.js +8 -6
  124. package/dist/graph/mutate/result/wire.d.ts +4 -4
  125. package/dist/graph/mutate/result/wire.js +7 -4
  126. package/dist/graph/node/identity/id.d.ts +0 -4
  127. package/dist/graph/node/identity/id.js +0 -5
  128. package/dist/graph/node/identity/order.js +20 -0
  129. package/dist/graph/path/authoring/path.d.ts +8 -5
  130. package/dist/graph/path/authoring/path.js +21 -3
  131. package/dist/graph/path/language/model.d.ts +8 -3
  132. package/dist/graph/path/language/syntax.js +23 -8
  133. package/dist/graph/query/authoring/builder.js +37 -5
  134. package/dist/graph/query/authoring/model.d.ts +20 -1
  135. package/dist/graph/query/index.d.ts +4 -2
  136. package/dist/graph/query/index.js +1 -0
  137. package/dist/graph/query/language/codec.js +18 -3
  138. package/dist/graph/query/language/fingerprint.js +8 -0
  139. package/dist/graph/query/language/model.d.ts +22 -4
  140. package/dist/graph/query/language/wire.d.ts +124 -114
  141. package/dist/graph/query/language/wire.js +54 -47
  142. package/dist/graph/query/order/index.d.ts +53 -0
  143. package/dist/graph/query/order/index.js +79 -0
  144. package/dist/graph/query/reference/evaluate.d.ts +1 -0
  145. package/dist/graph/query/reference/evaluate.js +39 -52
  146. package/dist/graph/query/result/index.js +1 -1
  147. package/dist/graph/query/result/wire.d.ts +93 -94
  148. package/dist/graph/query/result/wire.js +20 -20
  149. package/dist/graph/reconcile/condition/model.d.ts +2 -2
  150. package/dist/graph/reconcile/condition/references.d.ts +0 -1
  151. package/dist/graph/reconcile/condition/references.js +4 -4
  152. package/dist/graph/reconcile/correspondence.d.ts +9 -8
  153. package/dist/graph/reconcile/evidence.d.ts +2 -2
  154. package/dist/graph/reconcile/mutation/assess.d.ts +2 -1
  155. package/dist/graph/reconcile/observation.d.ts +4 -3
  156. package/dist/graph/reconcile/planning/canonical.d.ts +6 -0
  157. package/dist/graph/reconcile/planning/canonical.js +28 -0
  158. package/dist/graph/reconcile/planning/context.d.ts +3 -3
  159. package/dist/graph/reconcile/planning/model.d.ts +8 -4
  160. package/dist/graph/reconcile/planning/plan.js +2 -1
  161. package/dist/schema/authority/authority-relation.js +3 -0
  162. package/dist/schema/authority/claims.d.ts +24 -25
  163. package/dist/schema/authority/claims.js +8 -8
  164. package/dist/schema/authority/governed-by.d.ts +16 -91
  165. package/dist/schema/authority/governed-by.js +1 -1
  166. package/dist/schema/authority/operation-node.d.ts +27 -13
  167. package/dist/schema/authority/operations.d.ts +8 -168
  168. package/dist/schema/authority/policy.d.ts +27 -15
  169. package/dist/schema/authority/vocabulary.d.ts +3 -0
  170. package/dist/schema/authority/vocabulary.js +25 -0
  171. package/dist/schema/callables/entrypoint.d.ts +32 -0
  172. package/dist/schema/callables/entrypoint.js +12 -0
  173. package/dist/schema/callables/execution.d.ts +269 -0
  174. package/dist/schema/callables/execution.js +32 -0
  175. package/dist/schema/callables/function.d.ts +3400 -55
  176. package/dist/schema/callables/function.js +4 -3
  177. package/dist/schema/callables/index.d.ts +2 -1
  178. package/dist/schema/callables/index.js +2 -1
  179. package/dist/schema/callables/method-of.d.ts +18 -143
  180. package/dist/schema/callables/method-of.js +2 -2
  181. package/dist/schema/callables/view.d.ts +83 -51
  182. package/dist/schema/definitions/class.d.ts +45 -33
  183. package/dist/schema/definitions/extends.d.ts +16 -110
  184. package/dist/schema/definitions/instance-of.d.ts +17 -69
  185. package/dist/schema/domain/domain.d.ts +3343 -148
  186. package/dist/schema/domain/domain.js +6 -3
  187. package/dist/schema/domain/of-domain.d.ts +18 -192
  188. package/dist/schema/domain/of-domain.js +1 -1
  189. package/dist/schema/identity/composition.d.ts +5 -0
  190. package/dist/schema/identity/composition.js +5 -0
  191. package/dist/schema/identity/identity.d.ts +225 -122
  192. package/dist/schema/identity/identity.js +3 -4
  193. package/dist/schema/index.d.ts +1 -0
  194. package/dist/schema/index.js +1 -0
  195. package/dist/schema/installation/operation-id.d.ts +1 -2
  196. package/dist/schema/installation/operation-id.js +2 -4
  197. package/dist/schema/introspection/index.d.ts +1 -1
  198. package/dist/schema/introspection/language.d.ts +12 -28
  199. package/dist/schema/kernel/projection/callables.js +2 -3
  200. package/dist/schema/kernel/projection/core.d.ts +7 -0
  201. package/dist/schema/kernel/projection/core.js +51 -0
  202. package/dist/schema/kernel/projection/definitions.d.ts +13 -0
  203. package/dist/schema/kernel/projection/definitions.js +71 -0
  204. package/dist/schema/kernel/projection/index.d.ts +3 -3
  205. package/dist/schema/kernel/projection/index.js +2 -2
  206. package/dist/schema/kernel/projection/methods.d.ts +5 -0
  207. package/dist/schema/kernel/projection/methods.js +41 -0
  208. package/dist/schema/kernel/projection/part.d.ts +34 -0
  209. package/dist/schema/kernel/projection/part.js +42 -0
  210. package/dist/schema/kernel/projection/paths.d.ts +6 -0
  211. package/dist/schema/kernel/projection/{keys.js → paths.js} +12 -14
  212. package/dist/schema/kernel/projection/project.d.ts +4 -2
  213. package/dist/schema/kernel/projection/project.js +33 -258
  214. package/dist/schema/kernel/projection/properties.d.ts +11 -0
  215. package/dist/schema/kernel/projection/properties.js +36 -0
  216. package/dist/schema/kernel/projection/relations.d.ts +7 -0
  217. package/dist/schema/kernel/projection/relations.js +61 -0
  218. package/dist/schema/kernel/projection/types.d.ts +28 -2
  219. package/dist/schema/kernel/schema.d.ts +8737 -5086
  220. package/dist/schema/kernel/schema.js +12 -8
  221. package/dist/schema/kernel/syscalls/contracts/admit.d.ts +15 -12
  222. package/dist/schema/kernel/syscalls/contracts/admit.js +16 -9
  223. package/dist/schema/kernel/syscalls/contracts/blob.d.ts +31 -0
  224. package/dist/schema/kernel/syscalls/contracts/blob.js +24 -0
  225. package/dist/schema/kernel/syscalls/contracts/can.d.ts +19 -8
  226. package/dist/schema/kernel/syscalls/contracts/can.js +12 -4
  227. package/dist/schema/kernel/syscalls/contracts/delegate.d.ts +6 -7
  228. package/dist/schema/kernel/syscalls/contracts/delegate.js +5 -5
  229. package/dist/schema/kernel/syscalls/contracts/execution.d.ts +60 -0
  230. package/dist/schema/kernel/syscalls/contracts/execution.js +46 -0
  231. package/dist/schema/kernel/syscalls/contracts/expected.d.ts +5 -0
  232. package/dist/schema/kernel/syscalls/contracts/expected.js +9 -0
  233. package/dist/schema/kernel/syscalls/contracts/identity.d.ts +18 -19
  234. package/dist/schema/kernel/syscalls/contracts/identity.js +6 -7
  235. package/dist/schema/kernel/syscalls/contracts/impersonate.d.ts +6 -0
  236. package/dist/schema/kernel/syscalls/contracts/impersonate.js +4 -0
  237. package/dist/schema/kernel/syscalls/contracts/index.d.ts +6 -3
  238. package/dist/schema/kernel/syscalls/contracts/index.js +6 -3
  239. package/dist/schema/kernel/syscalls/contracts/install.d.ts +149 -217
  240. package/dist/schema/kernel/syscalls/contracts/install.js +22 -26
  241. package/dist/schema/kernel/syscalls/contracts/installation.d.ts +65 -351
  242. package/dist/schema/kernel/syscalls/contracts/installation.js +29 -67
  243. package/dist/schema/kernel/syscalls/contracts/introspect.d.ts +11 -15
  244. package/dist/schema/kernel/syscalls/contracts/introspect.js +8 -15
  245. package/dist/schema/kernel/syscalls/contracts/journal.d.ts +26 -27
  246. package/dist/schema/kernel/syscalls/contracts/journal.js +15 -15
  247. package/dist/schema/kernel/syscalls/contracts/mint.d.ts +5 -7
  248. package/dist/schema/kernel/syscalls/contracts/mint.js +4 -5
  249. package/dist/schema/kernel/syscalls/contracts/mutate.d.ts +243 -224
  250. package/dist/schema/kernel/syscalls/contracts/mutate.js +7 -1
  251. package/dist/schema/kernel/syscalls/contracts/query.d.ts +232 -222
  252. package/dist/schema/kernel/syscalls/contracts/query.js +10 -15
  253. package/dist/schema/kernel/syscalls/contracts/register.d.ts +20 -0
  254. package/dist/schema/kernel/syscalls/contracts/register.js +24 -0
  255. package/dist/schema/kernel/syscalls/contracts/uninstall.d.ts +54 -148
  256. package/dist/schema/kernel/syscalls/contracts/uninstall.js +6 -5
  257. package/dist/schema/kernel/syscalls/contracts/view-host-requirements.d.ts +17 -0
  258. package/dist/schema/kernel/syscalls/contracts/view-host-requirements.js +40 -0
  259. package/dist/schema/kernel/syscalls/contracts/view-resolve.d.ts +27 -28
  260. package/dist/schema/kernel/syscalls/contracts/view-resolve.js +16 -24
  261. package/dist/schema/kernel/syscalls/contracts/whoami.d.ts +19 -20
  262. package/dist/schema/kernel/syscalls/contracts/whoami.js +2 -2
  263. package/dist/schema/kernel/syscalls/contracts/whois.d.ts +22 -23
  264. package/dist/schema/kernel/syscalls/contracts/whois.js +3 -3
  265. package/dist/schema/kernel/syscalls/declarations/admit.d.ts +18 -18
  266. package/dist/schema/kernel/syscalls/declarations/admit.js +3 -3
  267. package/dist/schema/kernel/syscalls/declarations/can.d.ts +19 -14
  268. package/dist/schema/kernel/syscalls/declarations/can.js +4 -4
  269. package/dist/schema/kernel/syscalls/declarations/delegate.d.ts +9 -12
  270. package/dist/schema/kernel/syscalls/declarations/delegate.js +4 -4
  271. package/dist/schema/kernel/syscalls/declarations/download.d.ts +12 -0
  272. package/dist/schema/kernel/syscalls/declarations/download.js +10 -0
  273. package/dist/schema/kernel/syscalls/declarations/execution.d.ts +105 -0
  274. package/dist/schema/kernel/syscalls/declarations/execution.js +52 -0
  275. package/dist/schema/kernel/syscalls/declarations/impersonate.d.ts +9 -0
  276. package/dist/schema/kernel/syscalls/declarations/impersonate.js +12 -0
  277. package/dist/schema/kernel/syscalls/declarations/index.d.ts +870 -1323
  278. package/dist/schema/kernel/syscalls/declarations/index.js +18 -2
  279. package/dist/schema/kernel/syscalls/declarations/install.d.ts +29 -172
  280. package/dist/schema/kernel/syscalls/declarations/install.js +7 -5
  281. package/dist/schema/kernel/syscalls/declarations/introspect.d.ts +8 -19
  282. package/dist/schema/kernel/syscalls/declarations/introspect.js +3 -4
  283. package/dist/schema/kernel/syscalls/declarations/journal.d.ts +29 -31
  284. package/dist/schema/kernel/syscalls/declarations/journal.js +4 -2
  285. package/dist/schema/kernel/syscalls/declarations/mint.d.ts +8 -13
  286. package/dist/schema/kernel/syscalls/declarations/mint.js +5 -5
  287. package/dist/schema/kernel/syscalls/declarations/mutate.d.ts +239 -256
  288. package/dist/schema/kernel/syscalls/declarations/mutate.js +4 -2
  289. package/dist/schema/kernel/syscalls/declarations/query.d.ts +235 -260
  290. package/dist/schema/kernel/syscalls/declarations/query.js +4 -2
  291. package/dist/schema/kernel/syscalls/declarations/register.d.ts +23 -0
  292. package/dist/schema/kernel/syscalls/declarations/register.js +10 -0
  293. package/dist/schema/kernel/syscalls/declarations/uninstall.d.ts +49 -153
  294. package/dist/schema/kernel/syscalls/declarations/uninstall.js +4 -2
  295. package/dist/schema/kernel/syscalls/declarations/upload.d.ts +15 -0
  296. package/dist/schema/kernel/syscalls/declarations/upload.js +10 -0
  297. package/dist/schema/kernel/syscalls/declarations/use-policy.d.ts +4 -0
  298. package/dist/schema/kernel/syscalls/declarations/use-policy.js +9 -0
  299. package/dist/schema/kernel/syscalls/declarations/view-resolve.d.ts +30 -37
  300. package/dist/schema/kernel/syscalls/declarations/view-resolve.js +5 -3
  301. package/dist/schema/kernel/syscalls/declarations/whoami.d.ts +22 -26
  302. package/dist/schema/kernel/syscalls/declarations/whoami.js +3 -3
  303. package/dist/schema/kernel/syscalls/declarations/whois.d.ts +25 -29
  304. package/dist/schema/kernel/syscalls/declarations/whois.js +5 -3
  305. package/dist/schema/kernel/syscalls/descriptors/execution.d.ts +153 -0
  306. package/dist/schema/kernel/syscalls/descriptors/execution.js +11 -0
  307. package/dist/schema/kernel/syscalls/descriptors/function.d.ts +8 -2
  308. package/dist/schema/kernel/syscalls/descriptors/functions.d.ts +3 -1
  309. package/dist/schema/kernel/syscalls/descriptors/functions.js +3 -1
  310. package/dist/schema/kernel/syscalls/descriptors/identity.d.ts +47 -13
  311. package/dist/schema/kernel/syscalls/descriptors/identity.js +2 -1
  312. package/dist/schema/kernel/syscalls/descriptors/index.d.ts +2 -1
  313. package/dist/schema/kernel/syscalls/descriptors/index.js +2 -1
  314. package/dist/schema/kernel/syscalls/descriptors/results/view-resolution.d.ts +5 -2
  315. package/dist/schema/kernel/syscalls/descriptors/results/view-resolution.js +8 -38
  316. package/dist/schema/kernel/syscalls/descriptors/view.d.ts +11 -9
  317. package/dist/schema/kernel/syscalls/index.d.ts +2 -2
  318. package/dist/schema/kernel/syscalls/index.js +2 -2
  319. package/dist/schema/kernel/syscalls/references/execution.d.ts +55 -0
  320. package/dist/schema/kernel/syscalls/references/execution.js +13 -0
  321. package/dist/schema/kernel/syscalls/references/functions.d.ts +12 -2
  322. package/dist/schema/kernel/syscalls/references/functions.js +3 -1
  323. package/dist/schema/kernel/syscalls/references/identity.d.ts +9 -0
  324. package/dist/schema/kernel/syscalls/references/identity.js +1 -0
  325. package/dist/schema/kernel/syscalls/references/index.d.ts +2 -1
  326. package/dist/schema/kernel/syscalls/references/index.js +2 -1
  327. package/dist/schema/meta/created-by.d.ts +32 -0
  328. package/dist/schema/meta/created-by.js +17 -0
  329. package/dist/schema/meta/descriptable.d.ts +13 -11
  330. package/dist/schema/meta/edge.d.ts +5 -9
  331. package/dist/schema/meta/iconable.d.ts +13 -11
  332. package/dist/schema/meta/index.d.ts +1 -0
  333. package/dist/schema/meta/index.js +1 -0
  334. package/dist/schema/meta/named.d.ts +13 -9
  335. package/dist/schema/meta/node.d.ts +9 -1
  336. package/dist/schema/meta/remotable.d.ts +15 -22
  337. package/dist/schema/meta/statused.d.ts +13 -7
  338. package/dist/schema/meta/timestamped.d.ts +14 -12
  339. package/package.json +9 -7
  340. package/dist/auth/expression/normalization/canonicalize.d.ts +0 -7
  341. package/dist/auth/expression/normalization/canonicalize.js +0 -102
  342. package/dist/auth/expression/normalization/index.d.ts +0 -2
  343. package/dist/auth/expression/normalization/index.js +0 -2
  344. package/dist/auth/expression/normalization/raise-denials.d.ts +0 -3
  345. package/dist/auth/expression/normalization/raise-denials.js +0 -59
  346. package/dist/auth/provision/fingerprint/fingerprint.d.ts +0 -9
  347. package/dist/auth/provision/fingerprint/fingerprint.js +0 -33
  348. package/dist/auth/provision/fingerprint/index.d.ts +0 -2
  349. package/dist/auth/provision/index.d.ts +0 -5
  350. package/dist/auth/provision/request/admission.d.ts +0 -3
  351. package/dist/auth/provision/request/admission.js +0 -125
  352. package/dist/auth/provision/request/index.d.ts +0 -3
  353. package/dist/auth/provision/request/request.d.ts +0 -29
  354. package/dist/auth/provision/result/index.d.ts +0 -1
  355. package/dist/auth/provision/result/result.d.ts +0 -12
  356. package/dist/graph/graph/navigation/error.d.ts +0 -12
  357. package/dist/graph/graph/navigation/error.js +0 -20
  358. package/dist/graph/graph/navigation/index.d.ts +0 -2
  359. package/dist/graph/graph/navigation/index.js +0 -1
  360. package/dist/graph/graph/navigation/model.d.ts +0 -15
  361. package/dist/schema/callables/view-for.d.ts +0 -296
  362. package/dist/schema/callables/view-for.js +0 -12
  363. package/dist/schema/kernel/projection/keys.d.ts +0 -3
  364. package/dist/schema/kernel/projection/path.d.ts +0 -2
  365. package/dist/schema/kernel/projection/path.js +0 -140
  366. package/dist/schema/kernel/syscalls/contracts/provision.d.ts +0 -292
  367. package/dist/schema/kernel/syscalls/contracts/provision.js +0 -19
  368. package/dist/schema/kernel/syscalls/declarations/define.d.ts +0 -5
  369. package/dist/schema/kernel/syscalls/declarations/define.js +0 -7
  370. package/dist/schema/kernel/syscalls/declarations/provision.d.ts +0 -296
  371. package/dist/schema/kernel/syscalls/declarations/provision.js +0 -8
  372. /package/dist/auth/{provision/request/request.js → authority/semantics/snapshot.js} +0 -0
  373. /package/dist/auth/{provision/result/index.js → authority/semantics/vocabulary.js} +0 -0
  374. /package/dist/auth/{provision → register}/fingerprint/index.js +0 -0
  375. /package/dist/auth/{provision → register}/index.js +0 -0
  376. /package/dist/auth/{provision → register}/request/index.js +0 -0
  377. /package/dist/auth/{provision/result/result.js → register/request/request.js} +0 -0
  378. /package/dist/{graph/graph/navigation/model.js → auth/register/result/index.js} +0 -0
@@ -1,18 +1,20 @@
1
1
  import { type builder } from '@astrale-os/kernel-dsl/v1';
2
2
  export declare const Iconable: builder.NodeClass<{
3
+ readonly depth: 1;
3
4
  readonly abstract: true;
4
- readonly extends: readonly [builder.NodeClass<{
5
+ readonly extends: readonly [builder.ClassReferenceProjection<"node", {
5
6
  readonly abstract: true;
6
- readonly description: "The abstract universal kernel Node Class extended by every Kernel Node Class.";
7
- }>];
8
- readonly description: "Optional bounded presentation icon metadata.";
7
+ readonly depth: 0;
8
+ readonly properties: never;
9
+ readonly methods: Readonly<Record<never, never>>;
10
+ }, never, never, never>];
9
11
  readonly properties: {
10
- icon: builder.Property<Readonly<{
11
- readonly type: 'string';
12
- readonly minLength: 1;
13
- readonly maxLength: 8000;
14
- }>, {
15
- readonly required: false;
16
- }>;
12
+ readonly icon: builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, false, "icon", "self", never>;
17
13
  };
14
+ readonly methods: Readonly<Record<never, never>>;
15
+ readonly effectiveProperties: builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, false, "icon", "self", never>;
16
+ readonly abstractInstanceMethods: never;
17
+ readonly abstractStaticMethods: never;
18
+ readonly effectiveInstanceMethods: never;
19
+ readonly effectiveStaticMethods: never;
18
20
  }>;
@@ -1,3 +1,4 @@
1
+ export { CreatedBy } from './created-by.js';
1
2
  export { Descriptable } from './descriptable.js';
2
3
  export { Edge } from './edge.js';
3
4
  export { Iconable } from './iconable.js';
@@ -1,3 +1,4 @@
1
+ export { CreatedBy } from './created-by.js';
1
2
  export { Descriptable } from './descriptable.js';
2
3
  export { Edge } from './edge.js';
3
4
  export { Iconable } from './iconable.js';
@@ -1,16 +1,20 @@
1
1
  import { type builder } from '@astrale-os/kernel-dsl/v1';
2
2
  export declare const Named: builder.NodeClass<{
3
+ readonly depth: 1;
3
4
  readonly abstract: true;
4
- readonly extends: readonly [builder.NodeClass<{
5
+ readonly extends: readonly [builder.ClassReferenceProjection<"node", {
5
6
  readonly abstract: true;
6
- readonly description: "The abstract universal kernel Node Class extended by every Kernel Node Class.";
7
- }>];
8
- readonly description: "Stable human-facing name metadata that never acts as a locator.";
7
+ readonly depth: 0;
8
+ readonly properties: never;
9
+ readonly methods: Readonly<Record<never, never>>;
10
+ }, never, never, never>];
9
11
  readonly properties: {
10
- readonly name: {
11
- readonly type: "string";
12
- readonly minLength: 1;
13
- readonly maxLength: 100;
14
- };
12
+ readonly name: builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, true, "name", "self", undefined>;
15
13
  };
14
+ readonly methods: Readonly<Record<never, never>>;
15
+ readonly effectiveProperties: builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, true, "name", "self", undefined>;
16
+ readonly abstractInstanceMethods: never;
17
+ readonly abstractStaticMethods: never;
18
+ readonly effectiveInstanceMethods: never;
19
+ readonly effectiveStaticMethods: never;
16
20
  }>;
@@ -1,5 +1,13 @@
1
1
  import { type builder } from '@astrale-os/kernel-dsl/v1';
2
2
  export declare const Node: builder.NodeClass<{
3
+ readonly depth: 0;
3
4
  readonly abstract: true;
4
- readonly description: "The abstract universal kernel Node Class extended by every Kernel Node Class.";
5
+ readonly extends: readonly [];
6
+ readonly properties: never;
7
+ readonly methods: Readonly<Record<never, never>>;
8
+ readonly effectiveProperties: never;
9
+ readonly abstractInstanceMethods: never;
10
+ readonly abstractStaticMethods: never;
11
+ readonly effectiveInstanceMethods: never;
12
+ readonly effectiveStaticMethods: never;
5
13
  }>;
@@ -1,29 +1,22 @@
1
1
  import { type builder } from '@astrale-os/kernel-dsl/v1';
2
2
  export declare const Remotable: builder.NodeClass<{
3
+ readonly depth: 1;
3
4
  readonly abstract: true;
4
- readonly extends: readonly [builder.NodeClass<{
5
+ readonly extends: readonly [builder.ClassReferenceProjection<"node", {
5
6
  readonly abstract: true;
6
- readonly description: "The abstract universal kernel Node Class extended by every Kernel Node Class.";
7
- }>];
8
- readonly description: "Optional synchronization metadata for a value originating outside the local kernel.";
7
+ readonly depth: 0;
8
+ readonly properties: never;
9
+ readonly methods: Readonly<Record<never, never>>;
10
+ }, never, never, never>];
9
11
  readonly properties: {
10
- externalId: builder.Property<{
11
- readonly type: "string";
12
- readonly minLength: 1;
13
- readonly maxLength: 512;
14
- }, {
15
- readonly required: false;
16
- }>;
17
- onConflict: builder.Property<{
18
- readonly enum: readonly ["defaults", "error", "merge", "replace", "skip"];
19
- }, {
20
- readonly required: false;
21
- }>;
22
- updatedAt: builder.Property<Readonly<{
23
- readonly type: 'string';
24
- readonly 'x-astrale-value-kind': 'instant';
25
- }>, {
26
- readonly required: false;
27
- }>;
12
+ readonly externalId: builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, false, "externalId", "self", never>;
13
+ readonly onConflict: builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, false, "onConflict", "self", never>;
14
+ readonly updatedAt: builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, false, "updatedAt", "self", never>;
28
15
  };
16
+ readonly methods: Readonly<Record<never, never>>;
17
+ readonly effectiveProperties: builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, false, "externalId", "self", never> | builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, false, "onConflict", "self", never> | builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, false, "updatedAt", "self", never>;
18
+ readonly abstractInstanceMethods: never;
19
+ readonly abstractStaticMethods: never;
20
+ readonly effectiveInstanceMethods: never;
21
+ readonly effectiveStaticMethods: never;
29
22
  }>;
@@ -1,14 +1,20 @@
1
1
  import { type builder } from '@astrale-os/kernel-dsl/v1';
2
2
  export declare const Statused: builder.NodeClass<{
3
+ readonly depth: 1;
3
4
  readonly abstract: true;
4
- readonly extends: readonly [builder.NodeClass<{
5
+ readonly extends: readonly [builder.ClassReferenceProjection<"node", {
5
6
  readonly abstract: true;
6
- readonly description: "The abstract universal kernel Node Class extended by every Kernel Node Class.";
7
- }>];
8
- readonly description: "Explicit lifecycle-state metadata for values whose contract declares such a state.";
7
+ readonly depth: 0;
8
+ readonly properties: never;
9
+ readonly methods: Readonly<Record<never, never>>;
10
+ }, never, never, never>];
9
11
  readonly properties: {
10
- readonly status: {
11
- readonly enum: readonly ["active", "creating", "deleting", "error", "updating"];
12
- };
12
+ readonly status: builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, true, "status", "self", undefined>;
13
13
  };
14
+ readonly methods: Readonly<Record<never, never>>;
15
+ readonly effectiveProperties: builder.AuthoredPropertyProjection<import("@astrale-os/kernel-dsl/value").Value, import("@astrale-os/kernel-dsl/value").Value, true, "status", "self", undefined>;
16
+ readonly abstractInstanceMethods: never;
17
+ readonly abstractStaticMethods: never;
18
+ readonly effectiveInstanceMethods: never;
19
+ readonly effectiveStaticMethods: never;
14
20
  }>;
@@ -1,19 +1,21 @@
1
1
  import { type builder } from '@astrale-os/kernel-dsl/v1';
2
2
  export declare const Timestamped: builder.NodeClass<{
3
+ readonly depth: 1;
3
4
  readonly abstract: true;
4
- readonly extends: readonly [builder.NodeClass<{
5
+ readonly extends: readonly [builder.ClassReferenceProjection<"node", {
5
6
  readonly abstract: true;
6
- readonly description: "The abstract universal kernel Node Class extended by every Kernel Node Class.";
7
- }>];
8
- readonly description: "Explicit creation and update timestamp metadata.";
7
+ readonly depth: 0;
8
+ readonly properties: never;
9
+ readonly methods: Readonly<Record<never, never>>;
10
+ }, never, never, never>];
9
11
  readonly properties: {
10
- createdAt: builder.AutoProperty<builder.Property<Readonly<{
11
- readonly type: 'string';
12
- readonly 'x-astrale-value-kind': 'instant';
13
- }>, builder.PropertyOptions>>;
14
- updatedAt: builder.AutoProperty<builder.Property<Readonly<{
15
- readonly type: 'string';
16
- readonly 'x-astrale-value-kind': 'instant';
17
- }>, builder.PropertyOptions>>;
12
+ readonly createdAt: builder.AuthoredPropertyProjection<never, import("@astrale-os/kernel-dsl/value").Value, true, "createdAt", "self", undefined>;
13
+ readonly updatedAt: builder.AuthoredPropertyProjection<never, import("@astrale-os/kernel-dsl/value").Value, true, "updatedAt", "self", undefined>;
18
14
  };
15
+ readonly methods: Readonly<Record<never, never>>;
16
+ readonly effectiveProperties: builder.AuthoredPropertyProjection<never, import("@astrale-os/kernel-dsl/value").Value, true, "createdAt", "self", undefined> | builder.AuthoredPropertyProjection<never, import("@astrale-os/kernel-dsl/value").Value, true, "updatedAt", "self", undefined>;
17
+ readonly abstractInstanceMethods: never;
18
+ readonly abstractStaticMethods: never;
19
+ readonly effectiveInstanceMethods: never;
20
+ readonly effectiveStaticMethods: never;
19
21
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrale-os/kernel-core",
3
- "version": "0.9.0-beta.9",
3
+ "version": "1.0.0-beta.2",
4
4
  "description": "Astrale Kernel Core - Types, Invariants, and Pure Logic",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -160,18 +160,21 @@
160
160
  "access": "public"
161
161
  },
162
162
  "dependencies": {
163
- "@astrale-os/kernel-dsl": ">=0.2.0-beta.7 <1.0.0",
163
+ "@astrale-os/kernel-dsl": "1.0.0-beta.2",
164
164
  "@noble/hashes": "2.3.0",
165
165
  "@types/json-schema": "^7.0.15",
166
- "dequal": "2.0.3",
167
- "zod": "^4.3.6"
166
+ "dequal": "2.0.3"
168
167
  },
169
168
  "devDependencies": {
170
169
  "@astrale/typescript-config": "npm:@jsr/astrale__typescript-config@~1.1.0",
171
170
  "@types/node": "^25.2.3",
172
171
  "tsx": "4.23.12",
173
172
  "typescript": "7.0.2",
174
- "vitest": "^4.1.10"
173
+ "vitest": "^5.0.1",
174
+ "zod": "4.4.3"
175
+ },
176
+ "peerDependencies": {
177
+ "zod": "^4.4.3"
175
178
  },
176
179
  "scripts": {
177
180
  "build": "tsc",
@@ -183,7 +186,6 @@
183
186
  "test": "vitest run",
184
187
  "test:file": "vitest run",
185
188
  "test:watch": "vitest",
186
- "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.types.json && tsc --noEmit -p schema/.module/tsconfig.json",
187
- "preinstall": "node -e \"try{require('./.check-workspace.cjs')}catch{}\""
189
+ "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.types.json && tsc --noEmit -p schema/.module/tsconfig.json && tsc -p tsconfig.workers.json"
188
190
  }
189
191
  }
@@ -1,7 +0,0 @@
1
- import * as portable from '@astrale-os/kernel-dsl/value';
2
- import type { IdentityExpr } from '../language/index.js';
3
- export declare const EXPRESSION_DEPTH_LIMIT = 32;
4
- export declare const EXPRESSION_OPERAND_LIMIT = 64;
5
- /** Validate and canonicalize a resolved expression. */
6
- export declare function canonicalize(expr: IdentityExpr): IdentityExpr;
7
- export declare function admitResolvedExpression(input: portable.Value, path: string, depth: number): IdentityExpr;
@@ -1,102 +0,0 @@
1
- import * as portable from '@astrale-os/kernel-dsl/value';
2
- import { NodeId } from '../../../graph/node/index.js';
3
- import { AuthValueError } from '../../error.js';
4
- export const EXPRESSION_DEPTH_LIMIT = 32;
5
- export const EXPRESSION_OPERAND_LIMIT = 64;
6
- /** Validate and canonicalize a resolved expression. */
7
- export function canonicalize(expr) {
8
- try {
9
- return admit(portable.accept(expr), '', 0);
10
- }
11
- catch (cause) {
12
- if (cause instanceof AuthValueError)
13
- throw cause;
14
- throw new AuthValueError('AUTH_GRANT_INVALID', 'Expected a resolved Identity expression', '', {
15
- cause,
16
- });
17
- }
18
- }
19
- export function admitResolvedExpression(input, path, depth) {
20
- return admit(input, path, depth);
21
- }
22
- function admit(input, path, depth) {
23
- if (depth > EXPRESSION_DEPTH_LIMIT)
24
- invalid(path, 'Identity expression exceeds its depth limit');
25
- const value = record(input, path);
26
- switch (value.kind) {
27
- case 'identity':
28
- exact(value, ['id', 'kind'], path);
29
- if (typeof value.id !== 'string')
30
- invalid(`${path}/id`, 'Expected a NodeId');
31
- return Object.freeze({ kind: 'identity', id: NodeId(value.id) });
32
- case 'union':
33
- case 'intersect': {
34
- exact(value, ['kind', 'operands'], path);
35
- const source = list(value.operands, `${path}/operands`, 2);
36
- const kind = value.kind;
37
- const operands = unique(source
38
- .map((operand, index) => admit(operand, `${path}/operands/${index}`, depth + 1))
39
- .flatMap((operand) => (operand.kind === kind ? operand.operands : [operand])));
40
- if (operands.length > EXPRESSION_OPERAND_LIMIT) {
41
- invalid(`${path}/operands`, `Expected 2-${EXPRESSION_OPERAND_LIMIT} operands`);
42
- }
43
- return operands.length === 1
44
- ? operands[0]
45
- : Object.freeze({ kind, operands: Object.freeze(operands) });
46
- }
47
- case 'exclude': {
48
- exact(value, ['base', 'excluded', 'kind'], path);
49
- const excluded = unique(list(value.excluded, `${path}/excluded`, 1)
50
- .map((operand, index) => admit(operand, `${path}/excluded/${index}`, depth + 1))
51
- .flatMap((operand) => (operand.kind === 'union' ? operand.operands : [operand])));
52
- if (excluded.length > EXPRESSION_OPERAND_LIMIT) {
53
- invalid(`${path}/excluded`, `Expected 1-${EXPRESSION_OPERAND_LIMIT} operands`);
54
- }
55
- return Object.freeze({
56
- kind: 'exclude',
57
- base: admit(required(value.base, `${path}/base`), `${path}/base`, depth + 1),
58
- excluded: Object.freeze(excluded),
59
- });
60
- }
61
- default:
62
- invalid(`${path}/kind`, 'Expected identity, union, intersect, or exclude');
63
- }
64
- }
65
- function unique(input) {
66
- const keyed = input
67
- .map((expr) => ({ expr, key: portable.json.serialize(expr) }))
68
- .sort((left, right) => compare(left.key, right.key));
69
- return keyed
70
- .filter((entry, index) => index === 0 || entry.key !== keyed[index - 1].key)
71
- .map((entry) => entry.expr);
72
- }
73
- function record(input, path) {
74
- if (input === null || Array.isArray(input) || typeof input !== 'object') {
75
- invalid(path, 'Expected an object');
76
- }
77
- return input;
78
- }
79
- function list(input, path, minimum) {
80
- if (!Array.isArray(input) || input.length < minimum || input.length > EXPRESSION_OPERAND_LIMIT) {
81
- invalid(path, `Expected ${minimum}-${EXPRESSION_OPERAND_LIMIT} operands`);
82
- }
83
- return input;
84
- }
85
- function required(input, path) {
86
- if (input === undefined)
87
- invalid(path, 'Expected a value');
88
- return input;
89
- }
90
- function exact(value, expected, path) {
91
- const actual = Object.keys(value).sort(compare);
92
- const wanted = [...expected].sort(compare);
93
- if (actual.length !== wanted.length || actual.some((key, index) => key !== wanted[index])) {
94
- invalid(path, `Expected exactly ${expected.join(', ')}`);
95
- }
96
- }
97
- function compare(left, right) {
98
- return left < right ? -1 : left > right ? 1 : 0;
99
- }
100
- function invalid(path, message) {
101
- throw new AuthValueError('AUTH_GRANT_INVALID', message, path);
102
- }
@@ -1,2 +0,0 @@
1
- export { admitResolvedExpression, canonicalize, EXPRESSION_DEPTH_LIMIT, EXPRESSION_OPERAND_LIMIT, } from './canonicalize.js';
2
- export { raiseDenials } from './raise-denials.js';
@@ -1,2 +0,0 @@
1
- export { admitResolvedExpression, canonicalize, EXPRESSION_DEPTH_LIMIT, EXPRESSION_OPERAND_LIMIT, } from './canonicalize.js';
2
- export { raiseDenials } from './raise-denials.js';
@@ -1,3 +0,0 @@
1
- import type { IdentityExpr } from '../language/index.js';
2
- /** Raise every positive-position exclusion into one Grant-wide veto. */
3
- export declare function raiseDenials(expr: IdentityExpr): IdentityExpr;
@@ -1,59 +0,0 @@
1
- /** Raise every positive-position exclusion into one Grant-wide veto. */
2
- export function raiseDenials(expr) {
3
- const denials = [...collectDenials(expr, new WeakMap())];
4
- if (denials.length === 0)
5
- return expr;
6
- return Object.freeze({
7
- kind: 'exclude',
8
- base: stripExcludes(expr, new WeakMap()),
9
- excluded: Object.freeze(denials),
10
- });
11
- }
12
- function stripExcludes(expr, memo) {
13
- const cached = memo.get(expr);
14
- if (cached !== undefined)
15
- return cached;
16
- let stripped;
17
- switch (expr.kind) {
18
- case 'identity':
19
- stripped = expr;
20
- break;
21
- case 'union':
22
- case 'intersect':
23
- stripped = Object.freeze({
24
- kind: expr.kind,
25
- operands: Object.freeze(expr.operands.map((operand) => stripExcludes(operand, memo))),
26
- });
27
- break;
28
- case 'exclude':
29
- stripped = stripExcludes(expr.base, memo);
30
- break;
31
- }
32
- memo.set(expr, stripped);
33
- return stripped;
34
- }
35
- function collectDenials(expr, memo) {
36
- const cached = memo.get(expr);
37
- if (cached !== undefined)
38
- return cached;
39
- const denials = new Set();
40
- switch (expr.kind) {
41
- case 'identity':
42
- break;
43
- case 'union':
44
- case 'intersect':
45
- for (const operand of expr.operands) {
46
- for (const denial of collectDenials(operand, memo))
47
- denials.add(denial);
48
- }
49
- break;
50
- case 'exclude':
51
- for (const excluded of expr.excluded)
52
- denials.add(excluded);
53
- for (const denial of collectDenials(expr.base, memo))
54
- denials.add(denial);
55
- break;
56
- }
57
- memo.set(expr, denials);
58
- return denials;
59
- }
@@ -1,9 +0,0 @@
1
- import type { ProvisionRequest } from '../index.js';
2
- declare const PROVISION_FINGERPRINT: unique symbol;
3
- /** Digest of the semantic request. Self-proof bytes are deliberately excluded. */
4
- export type ProvisionFingerprint = `sha256:${string}` & {
5
- readonly [PROVISION_FINGERPRINT]: true;
6
- };
7
- /** Compute a deterministic semantic request digest without retaining bearer proof bytes. */
8
- export declare function fingerprint(request: ProvisionRequest): Promise<ProvisionFingerprint>;
9
- export {};
@@ -1,33 +0,0 @@
1
- import * as portable from '@astrale-os/kernel-dsl/value';
2
- import { MutationAST } from '../../../graph/mutate/index.js';
3
- /** Compute a deterministic semantic request digest without retaining bearer proof bytes. */
4
- export async function fingerprint(request) {
5
- const identities = Object.fromEntries(Object.entries(request.identities)
6
- .sort(([left], [right]) => compare(left, right))
7
- .map(([binding, input]) => [
8
- binding,
9
- input.credentials !== undefined
10
- ? {
11
- credentials: { publicKey: input.credentials.publicKey },
12
- requiredClaims: input.requiredClaims ?? [],
13
- }
14
- : {
15
- issuer: input.issuer,
16
- subject: input.subject,
17
- requiredClaims: input.requiredClaims ?? [],
18
- },
19
- ]));
20
- const basis = portable.json.encode(portable.accept({
21
- idempotencyKey: request.idempotencyKey,
22
- mutation: MutationAST.encode(request.mutation),
23
- identities,
24
- }));
25
- const digest = await crypto.subtle.digest('SHA-256', Uint8Array.from(basis).buffer);
26
- return `sha256:${hex(new Uint8Array(digest))}`;
27
- }
28
- function compare(left, right) {
29
- return left < right ? -1 : left > right ? 1 : 0;
30
- }
31
- function hex(input) {
32
- return [...input].map((value) => value.toString(16).padStart(2, '0')).join('');
33
- }
@@ -1,2 +0,0 @@
1
- export { fingerprint } from './fingerprint.js';
2
- export type { ProvisionFingerprint } from './fingerprint.js';
@@ -1,5 +0,0 @@
1
- export { fingerprint } from './fingerprint/index.js';
2
- export type { ProvisionFingerprint } from './fingerprint/index.js';
3
- export { accept, isSelfIssuer, selfIssuer } from './request/index.js';
4
- export type { AssertedIdentityProvision, IdentityProvisionInput, ProvisionRequest, RequiredClaims, SelfIdentityProvision, } from './request/index.js';
5
- export type { ProvisionedIdentity, ProvisionResult } from './result/index.js';
@@ -1,3 +0,0 @@
1
- import type { ProvisionRequest } from './request.js';
2
- /** Admit unknown input into the exact immutable Provision request language. */
3
- export declare function accept(input: unknown): ProvisionRequest;
@@ -1,125 +0,0 @@
1
- import * as portable from '@astrale-os/kernel-dsl/value';
2
- import { isLocalBinding } from '../../../graph/graph/index.js';
3
- import { MutationAST } from '../../../graph/mutate/index.js';
4
- import { admitConstraint, MAX_REQUIRED_CLAIMS } from '../../claims/admission/index.js';
5
- import { AuthValueError } from '../../error.js';
6
- import { accept as acceptIssuer } from '../../issuer/index.js';
7
- import { acceptPublic } from '../../jwk/index.js';
8
- const PROOF_BYTES_LIMIT = 64 * 1024;
9
- const textEncoder = new TextEncoder();
10
- /** Admit unknown input into the exact immutable Provision request language. */
11
- export function accept(input) {
12
- if (!isRecord(input))
13
- invalid('', 'Expected a Provision request object');
14
- exact(input, ['idempotencyKey', 'identities', 'mutation'], '');
15
- if (typeof input.idempotencyKey !== 'string' || input.idempotencyKey.length === 0) {
16
- invalid('/idempotencyKey', 'Expected a non-empty idempotency key');
17
- }
18
- const mutation = MutationAST.decode(input.mutation);
19
- if (!isRecord(input.identities))
20
- invalid('/identities', 'Expected an Identity binding map');
21
- const identities = {};
22
- for (const binding of Object.keys(input.identities).sort(compare)) {
23
- if (!isLocalBinding(binding))
24
- invalid(`/identities/${pointer(binding)}`, 'Invalid LocalBinding');
25
- identities[binding] = identityInput(input.identities[binding], `/identities/${pointer(binding)}`);
26
- }
27
- return Object.freeze({
28
- idempotencyKey: input.idempotencyKey,
29
- mutation,
30
- identities: Object.freeze(identities),
31
- });
32
- }
33
- function identityInput(input, path) {
34
- if (!isRecord(input))
35
- invalid(path, 'Expected an Identity provision object');
36
- const requiredClaims = constraints(input.requiredClaims, `${path}/requiredClaims`);
37
- if (Object.hasOwn(input, 'credentials')) {
38
- exact(input, input.requiredClaims === undefined ? ['credentials'] : ['credentials', 'requiredClaims'], path);
39
- if (!isRecord(input.credentials))
40
- invalid(`${path}/credentials`, 'Expected credentials');
41
- exact(input.credentials, ['proof', 'publicKey'], `${path}/credentials`);
42
- return Object.freeze({
43
- credentials: Object.freeze({
44
- publicKey: publicJwk(input.credentials.publicKey, `${path}/credentials/publicKey`),
45
- proof: credentialProof(input.credentials.proof, `${path}/credentials/proof`),
46
- }),
47
- ...(requiredClaims.length === 0 ? {} : { requiredClaims }),
48
- });
49
- }
50
- exact(input, input.requiredClaims === undefined
51
- ? ['issuer', 'subject']
52
- : ['issuer', 'requiredClaims', 'subject'], path);
53
- if (typeof input.issuer !== 'string')
54
- invalid(`${path}/issuer`, 'Expected an issuer');
55
- let issuer;
56
- try {
57
- issuer = acceptIssuer(input.issuer);
58
- }
59
- catch (cause) {
60
- invalid(`${path}/issuer`, 'Expected a canonical issuer', cause);
61
- }
62
- if (typeof input.subject !== 'string' || input.subject.length === 0)
63
- invalid(`${path}/subject`, 'Expected a non-empty subject');
64
- return Object.freeze({
65
- issuer,
66
- subject: input.subject,
67
- ...(requiredClaims.length === 0 ? {} : { requiredClaims }),
68
- });
69
- }
70
- function credentialProof(input, path) {
71
- if (typeof input === 'string') {
72
- const bytes = textEncoder.encode(input).byteLength;
73
- if (bytes === 0 || bytes > PROOF_BYTES_LIMIT)
74
- invalid(path, `Credential proof must contain 1-${PROOF_BYTES_LIMIT} bytes`);
75
- return input;
76
- }
77
- if (!(input instanceof Uint8Array) ||
78
- input.byteLength === 0 ||
79
- input.byteLength > PROOF_BYTES_LIMIT) {
80
- invalid(path, `Credential proof must contain 1-${PROOF_BYTES_LIMIT} bytes`);
81
- }
82
- return input.slice();
83
- }
84
- function publicJwk(input, path) {
85
- try {
86
- return acceptPublic(input);
87
- }
88
- catch (cause) {
89
- invalid(path, 'Expected a thumbprintable public JWK', cause);
90
- }
91
- }
92
- function constraints(input, path) {
93
- if (input === undefined)
94
- return Object.freeze([]);
95
- if (!Array.isArray(input) || input.length > MAX_REQUIRED_CLAIMS)
96
- invalid(path, `Expected at most ${MAX_REQUIRED_CLAIMS} required-claim constraints`);
97
- return Object.freeze(input.map((item, index) => {
98
- let admitted;
99
- try {
100
- admitted = portable.accept(item);
101
- }
102
- catch (cause) {
103
- invalid(`${path}/${index}`, 'Expected a portable claim constraint', cause);
104
- }
105
- return admitConstraint(admitted, `${path}/${index}`, invalid);
106
- }));
107
- }
108
- function isRecord(input) {
109
- return input !== null && typeof input === 'object' && !Array.isArray(input);
110
- }
111
- function exact(input, expected, path) {
112
- const actual = Object.keys(input).sort(compare);
113
- const wanted = [...expected].sort(compare);
114
- if (actual.length !== wanted.length || actual.some((key, index) => key !== wanted[index]))
115
- invalid(path, `Expected exactly ${expected.join(', ')}`);
116
- }
117
- function pointer(input) {
118
- return input.replaceAll('~', '~0').replaceAll('/', '~1');
119
- }
120
- function compare(left, right) {
121
- return left < right ? -1 : left > right ? 1 : 0;
122
- }
123
- function invalid(path, message, cause) {
124
- throw new AuthValueError('AUTH_PROVISION_REQUEST_INVALID', message, path, cause === undefined ? undefined : { cause });
125
- }
@@ -1,3 +0,0 @@
1
- export { accept } from './admission.js';
2
- export { isSelfIssuer, selfIssuer } from './self-issuer.js';
3
- export type { AssertedIdentityProvision, IdentityProvisionInput, ProvisionRequest, RequiredClaims, SelfIdentityProvision, } from './request.js';